- Accordion
- Alert
- Alert Dialog
- Aspect Ratio
- Avatar
- Badge
- Breadcrumb
- Button
- Button Group
- Calendar
- Card
- Carousel
- Chart
- Checkbox
- Collapsible
- Combobox
- Command
- Context Menu
- Data Table
- Date Picker
- Dialog
- Direction
- Drawer
- Dropdown Menu
- Empty
- Field
- Hover Card
- Input
- Input Group
- Input OTP
- Item
- Kbd
- Label
- Menubar
- Native Select
- Navigation Menu
- Pagination
- Popover
- Progress
- Radio Group
- Resizable
- Scroll Area
- Select
- Separator
- Sheet
- Sidebar
- Skeleton
- Slider
- Sonner
- Spinner
- Switch
- Table
- Tabs
- Textarea
- Toast
- Toggle
- Toggle Group
- Tooltip
- Typography
init
Use the init command to initialize configuration and dependencies for a new project.
The init command installs dependencies, adds the cn util and configures CSS variables for the project.
pnpm dlx shadcn@latest init
Options
Usage: shadcn init [options] [components...]
initialize your project and install dependencies
Arguments:
components name, url or local path to component
Options:
-t, --template <template> the template to use. (next, next-monorepo)
-b, --base-color <base-color> the base color to use. (neutral, gray, zinc, stone, slate)
-y, --yes skip confirmation prompt. (default: true)
-f, --force force overwrite of existing configuration. (default: false)
-c, --cwd <cwd> the working directory. defaults to the current directory.
-s, --silent mute output. (default: false)
--src-dir use the src directory when creating a new project. (default: false)
--no-src-dir do not use the src directory when creating a new project.
--css-variables use css variables for theming. (default: true)
--no-css-variables do not use css variables for theming.
--no-base-style do not install the base shadcn style
-h, --help display help for commandadd
Use the add command to add components and dependencies to your project.
pnpm dlx shadcn@latest add [component]
Options
Usage: shadcn add [options] [components...]
add a component to your project
Arguments:
components name, url or local path to component
Options:
-y, --yes skip confirmation prompt. (default: false)
-o, --overwrite overwrite existing files. (default: false)
-c, --cwd <cwd> the working directory. defaults to the current directory.
-a, --all add all available components (default: false)
-p, --path <path> the path to add the component to.
-s, --silent mute output. (default: false)
--src-dir use the src directory when creating a new project. (default: false)
--no-src-dir do not use the src directory when creating a new project.
--css-variables use css variables for theming. (default: true)
--no-css-variables do not use css variables for theming.
-h, --help display help for commandview
Use the view command to view items from the registry before installing them.
pnpm dlx shadcn@latest view [item]
You can view multiple items at once:
pnpm dlx shadcn@latest view button card dialog
Or view items from namespaced registries:
pnpm dlx shadcn@latest view @acme/auth @v0/dashboard
Options
Usage: shadcn view [options] <items...>
view items from the registry
Arguments:
items the item names or URLs to view
Options:
-c, --cwd <cwd> the working directory. defaults to the current directory.
-h, --help display help for commandsearch
Use the search command to search for items from registries.
pnpm dlx shadcn@latest search [registry]
You can search with a query:
pnpm dlx shadcn@latest search @shadcn -q "button"
Or search multiple registries at once:
pnpm dlx shadcn@latest search @shadcn @v0 @acme
The list command is an alias for search:
pnpm dlx shadcn@latest list @acme
Options
Usage: shadcn search|list [options] <registries...>
search items from registries
Arguments:
registries the registry names or urls to search items from. Names
must be prefixed with @.
Options:
-c, --cwd <cwd> the working directory. defaults to the current directory.
-q, --query <query> query string
-l, --limit <number> maximum number of items to display per registry (default: "100")
-o, --offset <number> number of items to skip (default: "0")
-h, --help display help for commandlist
Use the list command to list all items from a registry.
pnpm dlx shadcn@latest list @acme
Options
Usage: shadcn list [options] <registries...>
list items from registries
Arguments:
registries the registry names or urls to list items from. Names
must be prefixed with @.Options
Usage: shadcn list [options] <registries...>
list items from registries
Arguments:
registries the registry names or urls to list items from. Names
must be prefixed with @.build
Use the build command to generate the registry JSON files.
pnpm dlx shadcn@latest build
This command reads the registry.json file and generates the registry JSON files in the public/r directory.
Options
Usage: shadcn build [options] [registry]
build components for a shadcn registry
Arguments:
registry path to registry.json file (default: "./registry.json")
Options:
-o, --output <path> destination directory for json files (default: "./public/r")
-c, --cwd <cwd> the working directory. defaults to the current directory.
-h, --help display help for commandTo customize the output directory, use the --output option.
pnpm dlx shadcn@latest build --output ./public/registry
migrate
Use the migrate command to run migrations on your project.
pnpm dlx shadcn@latest migrate [migration]
Available Migrations
| Migration | Description |
|---|---|
icons | Migrate your UI components to a different icon library. |
radix | Migrate to radix-ui. |
rtl | Migrate your components to support RTL (right-to-left). |
Options
Usage: shadcn migrate [options] [migration] [path]
run a migration.
Arguments:
migration the migration to run.
path optional path or glob pattern to migrate.
Options:
-c, --cwd <cwd> the working directory. defaults to the current directory.
-l, --list list all migrations. (default: false)
-y, --yes skip confirmation prompt. (default: false)
-h, --help display help for commandmigrate rtl
The rtl migration transforms your components to support RTL (right-to-left) languages.
pnpm dlx shadcn@latest migrate rtl
This will:
- Update
components.jsonto setrtl: true - Transform physical CSS properties to logical equivalents (e.g.,
ml-4→ms-4,text-left→text-start) - Add
rtl:variants where needed (e.g.,space-x-4→space-x-4 rtl:space-x-reverse)
Migrate specific files
You can migrate specific files or use glob patterns:
# Migrate a specific file
npx shadcn@latest migrate rtl src/components/ui/button.tsx
# Migrate files matching a glob pattern
npx shadcn@latest migrate rtl "src/components/ui/**"If no path is provided, the migration will transform all files in your ui directory (from components.json).
migrate radix
The radix migration updates your imports from individual @radix-ui/react-* packages to the unified radix-ui package.
pnpm dlx shadcn@latest migrate radix
This will:
- Transform imports from
@radix-ui/react-*toradix-ui - Add the
radix-uipackage to yourpackage.json
Before
import * as DialogPrimitive from "@radix-ui/react-dialog"
import * as SelectPrimitive from "@radix-ui/react-select"After
import { Dialog as DialogPrimitive, Select as SelectPrimitive } from "radix-ui"Migrate specific files
You can migrate specific files or use glob patterns:
# Migrate a specific file.
npx shadcn@latest migrate radix src/components/ui/dialog.tsx
# Migrate files matching a glob pattern.
npx shadcn@latest migrate radix "src/components/ui/**"If no path is provided, the migration will transform all files in your ui directory (from components.json).
Once complete, you can remove any unused @radix-ui/react-* packages from your package.json.