Skip to content
>_devvkit
$devvkit learn --librarie shadcn/ui-guide

shadcn/ui Guide

[react][ui][components]
JavaScript / TypeScript
Install
npx shadcn@latest init
npx shadcn@latest add button card dialog

Not a traditional component library — there is no npm package. CLI copies source into your project.

Built on Radix UI primitives with Tailwind CSS. Accessibility built-in.

Full ownership: modify any component and never worry about version compatibility.

Setup

InitSetup Tailwind and CSS variables.
npx shadcn@latest init

Core Components

Add buttonInstall button component.
npx shadcn@latest add button
Button variantsDifferent styles.
<Button>Default</Button>
<Button variant="secondary">Secondary</Button>
<Button variant="destructive">Delete</Button>
<Button variant="outline">Outline</Button>
<Button variant="ghost">Ghost</Button>
CardContained content.
<Card><CardHeader><CardTitle>Title</CardTitle></CardHeader><CardContent>Content</CardContent><CardFooter><Button>Action</Button></CardFooter></Card>

Data Display

TableTabular data.
<Table><TableHeader><TableRow><TableHead>Name</TableHead><TableHead>Email</TableHead></TableRow></TableHeader><TableBody><TableRow><TableCell>Alice</TableCell><TableCell>alice@example.com</TableCell></TableRow></TableBody></Table>
BadgeStatus label.
<Badge>New</Badge>
<Badge variant="secondary">Draft</Badge>
<Badge variant="destructive">Deleted</Badge>

Overlay Components

DialogModal with focus trapping.
<Dialog><DialogTrigger asChild><Button>Open</Button></DialogTrigger><DialogContent><DialogHeader><DialogTitle>Confirm</DialogTitle></DialogHeader></DialogContent></Dialog>
DropdownMenu with actions.
<DropdownMenu><DropdownMenuTrigger>Open</DropdownMenuTrigger><DropdownMenuContent><DropdownMenuItem>Profile</DropdownMenuItem><DropdownMenuSeparator /><DropdownMenuItem>Logout</DropdownMenuItem></DropdownMenuContent></DropdownMenu>

Customization

ThemeOverride CSS variables.
@layer base {
  :root {
    --primary: 0 85% 56%;
    --radius: 0.5rem;
  }
}