Skip to main content

Build your next UI with beautifully crafted components

A collection of modern, accessible and customizable components that you can copy and paste into your apps.

MIT Licensed
TypeScript Ready

# Using npm
npm install @shadcn/ui

# Using pnpm
pnpm add @shadcn/ui

# Using yarn
yarn add @shadcn/ui
                        

Features that make development easier

Everything you need to build modern applications

Style Agnostic

Components are styled using Tailwind CSS and are fully customizable to match your brand

Fast Development

Copy and paste components directly into your projects without any setup required

Customizable

Every component is fully customizable and themeable to match your design needs

Accessible

All components follow WAI-ARIA patterns and are keyboard accessible

TypeScript Ready

Built with TypeScript and includes type definitions out of the box

Auto Updates

Regular updates and new components added based on community feedback

Beautiful Components

Ready-to-use components for your next project

Buttons

Cards

Form Inputs

Toggle

Toggle me

Dropdown

Alerts

This is an alert message

Badges

Badge Info Success

Progress

66%

Tooltip

Tooltip text

Example Applications

See how components work together in real applications

Dashboard Template

Admin dashboard with analytics, charts, and data tables

Authentication Flow

Complete authentication with login, signup, and password reset

Marketing Site

Landing page with features and pricing

E-commerce Store

Product listings and cart functionality

Blog Platform

Content management and articles

Documentation

Everything you need to get started

Quick Start Guide

Install dependencies

npm install @shadcn/ui

Import component

import { Button } from "@shadcn/ui/button";

Use in your project

export default function App() {
  return 
}

Component Customization

const theme = {
  button: {
    variants: {
      primary: "bg-blue-500 hover:bg-blue-600",
      secondary: "bg-gray-500 hover:bg-gray-600"
    }
  }
}

TypeScript Usage

interface ButtonProps {
  variant?: 'primary' | 'secondary';
  size?: 'sm' | 'md' | 'lg';
  children: React.ReactNode;
}

Interactive Playground

Experiment with components in real-time

Editor.tsx
import { Button } from "@shadcn/ui"

export default function Demo() {
  return (
    
) }
Preview

Properties

Styles

Actions

Join Our Community

Connect with developers and contribute to the ecosystem

GitHub

20k+ Stars

View Repository

Discord

5k+ Members

Join Server

Twitter

15k+ Followers

Follow Us

Top Contributors

@contributor1

@contributor2

@contributor3

@contributor4

@contributor5

@contributor6