Getting Started
Components52
- Accordion
- Alert
- Alert Dialog
- Attachment
- Badge
- Breadcrumb
- Bubble
- Button
- Button Group
- Calendar
- Card
- Checkbox
- Collapsible
- Command
- Context Menu
- Data Table
- Dialog
- Drawer
- Dropdown Menu
- Empty
- Field
- Hover Card
- Input
- Input Group
- Item
- Kbd
- Label
- Marker
- Menubar
- Message
- Message Scroller
- Pagination
- Popover
- Progress
- Questionnaire
- Radio Group
- Scroll Area
- Select
- Separator
- Sheet
- Sidebar
- Skeleton
- Slider
- Sonner
- Spinner
- Switch
- Table
- Tabs
- Textarea
- Toggle
- Toggle Group
- Tooltip
Every component is a registry item: a JSON file with the component's source, its npm dependencies and the other items it needs. The shadcn CLI downloads the item and writes the files into your project.
Items#
Items are served from /r:
| Item | URL |
|---|---|
| Style | https://ui.ikramhasan.com/r/style.json |
| A component | https://ui.ikramhasan.com/r/{name}.json |
| The registry | https://ui.ikramhasan.com/r/registry.json |
The {name} of a component is its file name, the same as in shadcn/ui: button, dropdown-menu, input-group.
Dependencies#
An item lists two kinds of dependencies:
- npm packages (
dependencies), like@base-ui/reactandcn. The CLI installs them with your package manager. - Other items (
registryDependencies), like the Button a Dialog uses. They point at this registry by URL, so the CLI installs our Button, not shadcn's.
Namespace#
Register the registry in components.json to add items by name:
{
"registries": {
"@ui": "https://ui.ikramhasan.com/r/{name}.json"
}
}pnpm dlx shadcn@latest add @ui/dialog
You can also view an item before installing it:
pnpm dlx shadcn@latest view @ui/dialog
Inspect an item#
Every item is plain JSON. Open one to see exactly what the CLI will write: button.json.