We use cookies to understand how the site is used and to display ads. Analytics and advertising only run after you accept. You can change your choice anytime. Privacy policy

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

Init· Setup Tailwind and CSS variables.
npx shadcn@latest init

Core Components

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

Data Display

Table· Tabular 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>
Badge· Status label.
<Badge>New</Badge>
<Badge variant="secondary">Draft</Badge>
<Badge variant="destructive">Deleted</Badge>

Overlay Components

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

Customization

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