# Table of Contents
- [Introduction - shadcn/ui](#introduction-shadcn-ui)
- [Installation - shadcn/ui](#installation-shadcn-ui)
- [Skills - shadcn/ui](#skills-shadcn-ui)
- [Components - shadcn/ui](#components-shadcn-ui)
- [RTL - shadcn/ui](#rtl-shadcn-ui)
- [Theming - shadcn/ui](#theming-shadcn-ui)
- [shadcn - shadcn/ui](#shadcn-shadcn-ui)
- [Introduction - shadcn/ui](#introduction-shadcn-ui)
- [Forms - shadcn/ui](#forms-shadcn-ui)
- [MCP Server - shadcn/ui](#mcp-server-shadcn-ui)
- [Registry Directory - shadcn/ui](#registry-directory-shadcn-ui)
- [Sidebar - shadcn/ui](#sidebar-shadcn-ui)
- [Skeleton - shadcn/ui](#skeleton-shadcn-ui)
- [Slider - shadcn/ui](#slider-shadcn-ui)
- [components.json - shadcn/ui](#components-json-shadcn-ui)
- [Figma - shadcn/ui](#figma-shadcn-ui)
- [JavaScript - shadcn/ui](#javascript-shadcn-ui)
- [Textarea - shadcn/ui](#textarea-shadcn-ui)
- [Legacy Docs - shadcn/ui](#legacy-docs-shadcn-ui)
- [Tooltip - shadcn/ui](#tooltip-shadcn-ui)
- [Sonner - shadcn/ui](#sonner-shadcn-ui)
- [Open in v0 - shadcn/ui](#open-in-v0-shadcn-ui)
- [Monorepo - shadcn/ui](#monorepo-shadcn-ui)
- [Switch - shadcn/ui](#switch-shadcn-ui)
- [Typography - shadcn/ui](#typography-shadcn-ui)
- [Tabs - shadcn/ui](#tabs-shadcn-ui)
- [MCP Server - shadcn/ui](#mcp-server-shadcn-ui)
- [Getting Started - shadcn/ui](#getting-started-shadcn-ui)
- [Add a Registry - shadcn/ui](#add-a-registry-shadcn-ui)
- [Open in v0 - shadcn/ui](#open-in-v0-shadcn-ui)
- [Spinner - shadcn/ui](#spinner-shadcn-ui)
- [Toggle - shadcn/ui](#toggle-shadcn-ui)
- [Toast - shadcn/ui](#toast-shadcn-ui)
- [registry.json - shadcn/ui](#registry-json-shadcn-ui)
- [Table - shadcn/ui](#table-shadcn-ui)
- [Authentication - shadcn/ui](#authentication-shadcn-ui)
- [Toggle Group - shadcn/ui](#toggle-group-shadcn-ui)
- [registry-item.json - shadcn/ui](#registry-item-json-shadcn-ui)
- [Dark Mode - shadcn/ui](#dark-mode-shadcn-ui)
---
# Introduction - shadcn/ui
Sections
* [Introduction](https://ui.shadcn.com/docs)
* [Components](https://ui.shadcn.com/docs/components)
* [Installation](https://ui.shadcn.com/docs/installation)
* [Theming](https://ui.shadcn.com/docs/theming)
* [CLI](https://ui.shadcn.com/docs/cli)
* [RTL](https://ui.shadcn.com/docs/rtl)
* [Skills](https://ui.shadcn.com/docs/skills)
* [MCP Server](https://ui.shadcn.com/docs/mcp)
* [Registry](https://ui.shadcn.com/docs/registry)
* [Forms](https://ui.shadcn.com/docs/forms)
* [Changelog](https://ui.shadcn.com/docs/changelog)
Components
* [Accordion](https://ui.shadcn.com/docs/components/radix/accordion)
* [Alert](https://ui.shadcn.com/docs/components/radix/alert)
* [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog)
* [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio)
* [Avatar](https://ui.shadcn.com/docs/components/radix/avatar)
* [Badge](https://ui.shadcn.com/docs/components/radix/badge)
* [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb)
* [Button](https://ui.shadcn.com/docs/components/radix/button)
* [Button Group](https://ui.shadcn.com/docs/components/radix/button-group)
* [Calendar](https://ui.shadcn.com/docs/components/radix/calendar)
* [Card](https://ui.shadcn.com/docs/components/radix/card)
* [Carousel](https://ui.shadcn.com/docs/components/radix/carousel)
* [Chart](https://ui.shadcn.com/docs/components/radix/chart)
* [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox)
* [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible)
* [Combobox](https://ui.shadcn.com/docs/components/radix/combobox)
* [Command](https://ui.shadcn.com/docs/components/radix/command)
* [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu)
* [Data Table](https://ui.shadcn.com/docs/components/radix/data-table)
* [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker)
* [Dialog](https://ui.shadcn.com/docs/components/radix/dialog)
* [Direction](https://ui.shadcn.com/docs/components/radix/direction)
* [Drawer](https://ui.shadcn.com/docs/components/radix/drawer)
* [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu)
* [Empty](https://ui.shadcn.com/docs/components/radix/empty)
* [Field](https://ui.shadcn.com/docs/components/radix/field)
* [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card)
* [Input](https://ui.shadcn.com/docs/components/radix/input)
* [Input Group](https://ui.shadcn.com/docs/components/radix/input-group)
* [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp)
* [Item](https://ui.shadcn.com/docs/components/radix/item)
* [Kbd](https://ui.shadcn.com/docs/components/radix/kbd)
* [Label](https://ui.shadcn.com/docs/components/radix/label)
* [Menubar](https://ui.shadcn.com/docs/components/radix/menubar)
* [Native Select](https://ui.shadcn.com/docs/components/radix/native-select)
* [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu)
* [Pagination](https://ui.shadcn.com/docs/components/radix/pagination)
* [Popover](https://ui.shadcn.com/docs/components/radix/popover)
* [Progress](https://ui.shadcn.com/docs/components/radix/progress)
* [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group)
* [Resizable](https://ui.shadcn.com/docs/components/radix/resizable)
* [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area)
* [Select](https://ui.shadcn.com/docs/components/radix/select)
* [Separator](https://ui.shadcn.com/docs/components/radix/separator)
* [Sheet](https://ui.shadcn.com/docs/components/radix/sheet)
* [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar)
* [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton)
* [Slider](https://ui.shadcn.com/docs/components/radix/slider)
* [Sonner](https://ui.shadcn.com/docs/components/radix/sonner)
* [Spinner](https://ui.shadcn.com/docs/components/radix/spinner)
* [Switch](https://ui.shadcn.com/docs/components/radix/switch)
* [Table](https://ui.shadcn.com/docs/components/radix/table)
* [Tabs](https://ui.shadcn.com/docs/components/radix/tabs)
* [Textarea](https://ui.shadcn.com/docs/components/radix/textarea)
* [Toast](https://ui.shadcn.com/docs/components/radix/toast)
* [Toggle](https://ui.shadcn.com/docs/components/radix/toggle)
* [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group)
* [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip)
* [Typography](https://ui.shadcn.com/docs/components/radix/typography)
Get Started
* [Installation](https://ui.shadcn.com/docs/installation)
* [components.json](https://ui.shadcn.com/docs/components-json)
* [Theming](https://ui.shadcn.com/docs/theming)
* [Dark Mode](https://ui.shadcn.com/docs/dark-mode)
* [CLI](https://ui.shadcn.com/docs/cli)
* [Monorepo](https://ui.shadcn.com/docs/monorepo)
* [Skills](https://ui.shadcn.com/docs/skills)
* [Open in v0](https://ui.shadcn.com/docs/v0)
* [JavaScript](https://ui.shadcn.com/docs/javascript)
* [Figma](https://ui.shadcn.com/docs/figma)
* [llms.txt](https://ui.shadcn.com/llms.txt)
* [Legacy Docs](https://ui.shadcn.com/docs/legacy)
Forms
* [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form)
* [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form)
Registry
* [Introduction](https://ui.shadcn.com/docs/registry)
* [Getting Started](https://ui.shadcn.com/docs/registry/getting-started)
* [Namespaces](https://ui.shadcn.com/docs/registry/namespace)
* [Authentication](https://ui.shadcn.com/docs/registry/authentication)
* [Examples](https://ui.shadcn.com/docs/registry/examples)
* [MCP Server](https://ui.shadcn.com/docs/registry/mcp)
* [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index)
* [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0)
* [registry.json](https://ui.shadcn.com/docs/registry/registry-json)
* [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json)
Introduction
============
Copy Page
[Previous](https://ui.shadcn.com/docs/components/radix/typography)
[Next](https://ui.shadcn.com/docs/installation)
shadcn/ui is a set of beautifully-designed, accessible components and a code distribution platform. Works with your favorite frameworks and AI models. Open Source. Open Code.
**This is not a component library. It is how you build your component library.**
You know how most traditional component libraries work: you install a package from NPM, import the components, and use them in your app.
This approach works well until you need to customize a component to fit your design system or require one that isn’t included in the library. **Often, you end up wrapping library components, writing workarounds to override styles, or mixing components from different libraries with incompatible APIs.**
This is what shadcn/ui aims to solve. It is built around the following principles:
* **Open Code:** The top layer of your component code is open for modification.
* **Composition:** Every component uses a common, composable interface, making them predictable.
* **Distribution:** A flat-file schema and command-line tool make it easy to distribute components.
* **Beautiful Defaults:** Carefully chosen default styles, so you get great design out-of-the-box.
* **AI-Ready:** Open code for LLMs to read, understand, and improve.
Open Code
---------
shadcn/ui hands you the actual component code. You have full control to customize and extend the components to your needs. This means:
* **Full Transparency:** You see exactly how each component is built.
* **Easy Customization:** Modify any part of a component to fit your design and functionality requirements.
* **AI Integration:** Access to the code makes it straightforward for LLMs to read, understand, and even improve your components.
_In a typical library, if you need to change a button’s behavior, you have to override styles or wrap the component. With shadcn/ui, you simply edit the button code directly._
###
How do I pull upstream updates in an Open Code approach?
Composition
-----------
Every component in shadcn/ui shares a common, composable interface. **If a component does not exist, we bring it in, make it composable, and adjust its style to match and work with the rest of the design system.**
_A shared, composable interface means it's predictable for both your team and LLMs. You are not learning different APIs for every new component. Even for third-party ones._
Distribution
------------
shadcn/ui is also a code distribution system. It defines a schema for components and a CLI to distribute them.
* **Schema:** A flat-file structure that defines the components, their dependencies, and properties.
* **CLI:** A command-line tool to distribute and install components across projects with cross-framework support.
_You can use the schema to distribute your components to other projects or have AI generate completely new components based on existing schema._
Beautiful Defaults
------------------
shadcn/ui comes with a large collection of components that have carefully chosen default styles. They are designed to look good on their own and to work well together as a consistent system:
* **Good Out-of-the-Box:** Your UI has a clean and minimal look without extra work.
* **Unified Design:** Components naturally fit with one another. Each component is built to match the others, keeping your UI consistent.
* **Easily Customizable:** If you want to change something, it's simple to override and extend the defaults.
AI-Ready
--------
The design of shadcn/ui makes it easy for AI tools to work with your code. Its open code and consistent API allow AI models to read, understand, and even generate new components.
_An AI model can learn how your components work and suggest improvements or even create new components that integrate with your existing design._
[Typography](https://ui.shadcn.com/docs/components/radix/typography)
[Installation](https://ui.shadcn.com/docs/installation)
On This Page
[Open Code](https://ui.shadcn.com/docs#open-code)
[Composition](https://ui.shadcn.com/docs#composition)
[Distribution](https://ui.shadcn.com/docs#distribution)
[Beautiful Defaults](https://ui.shadcn.com/docs#beautiful-defaults)
[AI-Ready](https://ui.shadcn.com/docs#ai-ready)
Deploy your shadcn/ui app on Vercel
Trusted by OpenAI, Sonos, Adobe, and more.
Vercel provides tools and infrastructure to deploy apps and features at scale.
Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout)
---
# Installation - shadcn/ui
Sections
* [Introduction](https://ui.shadcn.com/docs)
* [Components](https://ui.shadcn.com/docs/components)
* [Installation](https://ui.shadcn.com/docs/installation)
* [Theming](https://ui.shadcn.com/docs/theming)
* [CLI](https://ui.shadcn.com/docs/cli)
* [RTL](https://ui.shadcn.com/docs/rtl)
* [Skills](https://ui.shadcn.com/docs/skills)
* [MCP Server](https://ui.shadcn.com/docs/mcp)
* [Registry](https://ui.shadcn.com/docs/registry)
* [Forms](https://ui.shadcn.com/docs/forms)
* [Changelog](https://ui.shadcn.com/docs/changelog)
Components
* [Accordion](https://ui.shadcn.com/docs/components/radix/accordion)
* [Alert](https://ui.shadcn.com/docs/components/radix/alert)
* [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog)
* [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio)
* [Avatar](https://ui.shadcn.com/docs/components/radix/avatar)
* [Badge](https://ui.shadcn.com/docs/components/radix/badge)
* [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb)
* [Button](https://ui.shadcn.com/docs/components/radix/button)
* [Button Group](https://ui.shadcn.com/docs/components/radix/button-group)
* [Calendar](https://ui.shadcn.com/docs/components/radix/calendar)
* [Card](https://ui.shadcn.com/docs/components/radix/card)
* [Carousel](https://ui.shadcn.com/docs/components/radix/carousel)
* [Chart](https://ui.shadcn.com/docs/components/radix/chart)
* [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox)
* [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible)
* [Combobox](https://ui.shadcn.com/docs/components/radix/combobox)
* [Command](https://ui.shadcn.com/docs/components/radix/command)
* [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu)
* [Data Table](https://ui.shadcn.com/docs/components/radix/data-table)
* [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker)
* [Dialog](https://ui.shadcn.com/docs/components/radix/dialog)
* [Direction](https://ui.shadcn.com/docs/components/radix/direction)
* [Drawer](https://ui.shadcn.com/docs/components/radix/drawer)
* [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu)
* [Empty](https://ui.shadcn.com/docs/components/radix/empty)
* [Field](https://ui.shadcn.com/docs/components/radix/field)
* [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card)
* [Input](https://ui.shadcn.com/docs/components/radix/input)
* [Input Group](https://ui.shadcn.com/docs/components/radix/input-group)
* [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp)
* [Item](https://ui.shadcn.com/docs/components/radix/item)
* [Kbd](https://ui.shadcn.com/docs/components/radix/kbd)
* [Label](https://ui.shadcn.com/docs/components/radix/label)
* [Menubar](https://ui.shadcn.com/docs/components/radix/menubar)
* [Native Select](https://ui.shadcn.com/docs/components/radix/native-select)
* [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu)
* [Pagination](https://ui.shadcn.com/docs/components/radix/pagination)
* [Popover](https://ui.shadcn.com/docs/components/radix/popover)
* [Progress](https://ui.shadcn.com/docs/components/radix/progress)
* [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group)
* [Resizable](https://ui.shadcn.com/docs/components/radix/resizable)
* [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area)
* [Select](https://ui.shadcn.com/docs/components/radix/select)
* [Separator](https://ui.shadcn.com/docs/components/radix/separator)
* [Sheet](https://ui.shadcn.com/docs/components/radix/sheet)
* [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar)
* [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton)
* [Slider](https://ui.shadcn.com/docs/components/radix/slider)
* [Sonner](https://ui.shadcn.com/docs/components/radix/sonner)
* [Spinner](https://ui.shadcn.com/docs/components/radix/spinner)
* [Switch](https://ui.shadcn.com/docs/components/radix/switch)
* [Table](https://ui.shadcn.com/docs/components/radix/table)
* [Tabs](https://ui.shadcn.com/docs/components/radix/tabs)
* [Textarea](https://ui.shadcn.com/docs/components/radix/textarea)
* [Toast](https://ui.shadcn.com/docs/components/radix/toast)
* [Toggle](https://ui.shadcn.com/docs/components/radix/toggle)
* [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group)
* [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip)
* [Typography](https://ui.shadcn.com/docs/components/radix/typography)
Get Started
* [Installation](https://ui.shadcn.com/docs/installation)
* [components.json](https://ui.shadcn.com/docs/components-json)
* [Theming](https://ui.shadcn.com/docs/theming)
* [Dark Mode](https://ui.shadcn.com/docs/dark-mode)
* [CLI](https://ui.shadcn.com/docs/cli)
* [Monorepo](https://ui.shadcn.com/docs/monorepo)
* [Skills](https://ui.shadcn.com/docs/skills)
* [Open in v0](https://ui.shadcn.com/docs/v0)
* [JavaScript](https://ui.shadcn.com/docs/javascript)
* [Figma](https://ui.shadcn.com/docs/figma)
* [llms.txt](https://ui.shadcn.com/llms.txt)
* [Legacy Docs](https://ui.shadcn.com/docs/legacy)
Forms
* [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form)
* [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form)
Registry
* [Introduction](https://ui.shadcn.com/docs/registry)
* [Getting Started](https://ui.shadcn.com/docs/registry/getting-started)
* [Namespaces](https://ui.shadcn.com/docs/registry/namespace)
* [Authentication](https://ui.shadcn.com/docs/registry/authentication)
* [Examples](https://ui.shadcn.com/docs/registry/examples)
* [MCP Server](https://ui.shadcn.com/docs/registry/mcp)
* [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index)
* [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0)
* [registry.json](https://ui.shadcn.com/docs/registry/registry-json)
* [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json)
Installation
============
Copy Page
[Previous](https://ui.shadcn.com/docs)
[Next](https://ui.shadcn.com/docs/components-json)
How to install dependencies and structure your app.
**Starting a new project?** Use [shadcn/create](https://ui.shadcn.com/create)
to scaffold a complete app with custom themes, components, and presets. For Next.js, Vite, Laravel, React Router, Astro, and TanStack Start.
Quick Start
-----------
Run the following command to create a new project with shadcn/ui:
pnpmnpmyarnbun
pnpm dlx shadcn@latest init
Copy
This will guide you through the process of creating a new project with shadcn/ui with your preferred framework, icon library, and theme.
Pick Your Framework
-------------------
Start by selecting your framework of choice. Then follow the instructions to install the dependencies and structure your app. shadcn/ui is built to work with all React frameworks.
[Next.js\
\
Next.js](https://ui.shadcn.com/docs/installation/next)
[Vite\
\
Vite](https://ui.shadcn.com/docs/installation/vite)
[TanStack Start](https://ui.shadcn.com/docs/installation/tanstack)
[Laravel](https://ui.shadcn.com/docs/installation/laravel)
[React Router](https://ui.shadcn.com/docs/installation/react-router)
[Astro\
\
Astro](https://ui.shadcn.com/docs/installation/astro)
[React\
\
Manual](https://ui.shadcn.com/docs/installation/manual)
[Introduction](https://ui.shadcn.com/docs)
[components.json](https://ui.shadcn.com/docs/components-json)
On This Page
[Quick Start](https://ui.shadcn.com/docs/installation#quick-start)
[Pick Your Framework](https://ui.shadcn.com/docs/installation#pick-your-framework)
Deploy your shadcn/ui app on Vercel
Trusted by OpenAI, Sonos, Adobe, and more.
Vercel provides tools and infrastructure to deploy apps and features at scale.
Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout)
---
# Skills - shadcn/ui
Sections
* [Introduction](https://ui.shadcn.com/docs)
* [Components](https://ui.shadcn.com/docs/components)
* [Installation](https://ui.shadcn.com/docs/installation)
* [Theming](https://ui.shadcn.com/docs/theming)
* [CLI](https://ui.shadcn.com/docs/cli)
* [RTL](https://ui.shadcn.com/docs/rtl)
* [Skills](https://ui.shadcn.com/docs/skills)
* [MCP Server](https://ui.shadcn.com/docs/mcp)
* [Registry](https://ui.shadcn.com/docs/registry)
* [Forms](https://ui.shadcn.com/docs/forms)
* [Changelog](https://ui.shadcn.com/docs/changelog)
Components
* [Accordion](https://ui.shadcn.com/docs/components/radix/accordion)
* [Alert](https://ui.shadcn.com/docs/components/radix/alert)
* [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog)
* [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio)
* [Avatar](https://ui.shadcn.com/docs/components/radix/avatar)
* [Badge](https://ui.shadcn.com/docs/components/radix/badge)
* [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb)
* [Button](https://ui.shadcn.com/docs/components/radix/button)
* [Button Group](https://ui.shadcn.com/docs/components/radix/button-group)
* [Calendar](https://ui.shadcn.com/docs/components/radix/calendar)
* [Card](https://ui.shadcn.com/docs/components/radix/card)
* [Carousel](https://ui.shadcn.com/docs/components/radix/carousel)
* [Chart](https://ui.shadcn.com/docs/components/radix/chart)
* [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox)
* [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible)
* [Combobox](https://ui.shadcn.com/docs/components/radix/combobox)
* [Command](https://ui.shadcn.com/docs/components/radix/command)
* [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu)
* [Data Table](https://ui.shadcn.com/docs/components/radix/data-table)
* [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker)
* [Dialog](https://ui.shadcn.com/docs/components/radix/dialog)
* [Direction](https://ui.shadcn.com/docs/components/radix/direction)
* [Drawer](https://ui.shadcn.com/docs/components/radix/drawer)
* [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu)
* [Empty](https://ui.shadcn.com/docs/components/radix/empty)
* [Field](https://ui.shadcn.com/docs/components/radix/field)
* [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card)
* [Input](https://ui.shadcn.com/docs/components/radix/input)
* [Input Group](https://ui.shadcn.com/docs/components/radix/input-group)
* [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp)
* [Item](https://ui.shadcn.com/docs/components/radix/item)
* [Kbd](https://ui.shadcn.com/docs/components/radix/kbd)
* [Label](https://ui.shadcn.com/docs/components/radix/label)
* [Menubar](https://ui.shadcn.com/docs/components/radix/menubar)
* [Native Select](https://ui.shadcn.com/docs/components/radix/native-select)
* [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu)
* [Pagination](https://ui.shadcn.com/docs/components/radix/pagination)
* [Popover](https://ui.shadcn.com/docs/components/radix/popover)
* [Progress](https://ui.shadcn.com/docs/components/radix/progress)
* [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group)
* [Resizable](https://ui.shadcn.com/docs/components/radix/resizable)
* [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area)
* [Select](https://ui.shadcn.com/docs/components/radix/select)
* [Separator](https://ui.shadcn.com/docs/components/radix/separator)
* [Sheet](https://ui.shadcn.com/docs/components/radix/sheet)
* [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar)
* [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton)
* [Slider](https://ui.shadcn.com/docs/components/radix/slider)
* [Sonner](https://ui.shadcn.com/docs/components/radix/sonner)
* [Spinner](https://ui.shadcn.com/docs/components/radix/spinner)
* [Switch](https://ui.shadcn.com/docs/components/radix/switch)
* [Table](https://ui.shadcn.com/docs/components/radix/table)
* [Tabs](https://ui.shadcn.com/docs/components/radix/tabs)
* [Textarea](https://ui.shadcn.com/docs/components/radix/textarea)
* [Toast](https://ui.shadcn.com/docs/components/radix/toast)
* [Toggle](https://ui.shadcn.com/docs/components/radix/toggle)
* [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group)
* [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip)
* [Typography](https://ui.shadcn.com/docs/components/radix/typography)
Get Started
* [Installation](https://ui.shadcn.com/docs/installation)
* [components.json](https://ui.shadcn.com/docs/components-json)
* [Theming](https://ui.shadcn.com/docs/theming)
* [Dark Mode](https://ui.shadcn.com/docs/dark-mode)
* [CLI](https://ui.shadcn.com/docs/cli)
* [Monorepo](https://ui.shadcn.com/docs/monorepo)
* [Skills](https://ui.shadcn.com/docs/skills)
* [Open in v0](https://ui.shadcn.com/docs/v0)
* [JavaScript](https://ui.shadcn.com/docs/javascript)
* [Figma](https://ui.shadcn.com/docs/figma)
* [llms.txt](https://ui.shadcn.com/llms.txt)
* [Legacy Docs](https://ui.shadcn.com/docs/legacy)
Forms
* [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form)
* [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form)
Registry
* [Introduction](https://ui.shadcn.com/docs/registry)
* [Getting Started](https://ui.shadcn.com/docs/registry/getting-started)
* [Namespaces](https://ui.shadcn.com/docs/registry/namespace)
* [Authentication](https://ui.shadcn.com/docs/registry/authentication)
* [Examples](https://ui.shadcn.com/docs/registry/examples)
* [MCP Server](https://ui.shadcn.com/docs/registry/mcp)
* [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index)
* [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0)
* [registry.json](https://ui.shadcn.com/docs/registry/registry-json)
* [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json)
Skills
======
Copy Page
[Previous](https://ui.shadcn.com/docs/monorepo)
[Next](https://ui.shadcn.com/docs/v0)
Give your AI assistant deep knowledge of shadcn/ui components, patterns, and best practices.
Skills give AI assistants like Claude Code project-aware context about shadcn/ui. When installed, your AI assistant knows how to find, install, compose, and customize components using the correct APIs and patterns for your project.
For example, you can ask your AI assistant to:
* _"Add a login form with email and password fields."_
* _"Create a settings page with a form for updating profile information."_
* _"Build a dashboard with a sidebar, stats cards, and a data table."_
* _"Switch to --preset \[CODE\]"_
* _"Can you add a hero from @tailark?"_
The skill reads your project's `components.json` and provides the assistant with your framework, aliases, installed components, icon library, and base library so it can generate correct code on the first try.
* * *
Install
-------
pnpmnpmyarnbun
pnpm dlx skills add shadcn/ui
Copy
This installs the shadcn skill into your project. Once installed, your AI assistant automatically loads it when working with shadcn/ui components.
Learn more about skills at [skills.sh](https://skills.sh/)
.
* * *
What's Included
---------------
The skill provides your AI assistant with the following knowledge:
### Project Context
On every interaction, the skill runs `shadcn info --json` to get your project's configuration: framework, Tailwind version, aliases, base library (`radix` or `base`), icon library, installed components, and resolved file paths.
### CLI Commands
Full reference for all CLI commands: `init`, `add`, `search`, `view`, `docs`, `diff`, `info`, and `build`. Includes flags, dry-run mode, smart merge workflows, presets, and templates.
### Theming and Customization
How CSS variables, OKLCH colors, dark mode, custom colors, border radius, and component variants work. Includes guidance for both Tailwind v3 and v4.
### Registry Authoring
How to build and publish custom component registries: `registry.json` format, item types, file objects, dependencies, CSS variables, building, hosting, and user configuration.
### MCP Server
Setup and tools for the shadcn MCP server, which lets AI assistants search, browse, and install components from registries.
* * *
How It Works
------------
1. **Project detection** — The skill activates when it finds a `components.json` file in your project.
2. **Context injection** — It runs `shadcn info --json` to read your project configuration and injects the result into the assistant's context.
3. **Pattern enforcement** — The assistant follows shadcn/ui composition rules: using `FieldGroup` for forms, `ToggleGroup` for option sets, semantic colors, and correct base-specific APIs.
4. **Component discovery** — The assistant uses `shadcn docs`, `shadcn search`, or MCP tools to find components and their documentation before generating code.
Learn More
----------
* [CLI](https://ui.shadcn.com/docs/cli)
— Full CLI command reference
* [MCP Server](https://ui.shadcn.com/docs/mcp)
— Connect the MCP server for registry access
* [Theming](https://ui.shadcn.com/docs/theming)
— CSS variables and customization
* [Registry](https://ui.shadcn.com/docs/registry)
— Building and publishing custom registries
* [skills.sh](https://skills.sh/)
— Learn more about AI skills
[Monorepo](https://ui.shadcn.com/docs/monorepo)
[Open in v0](https://ui.shadcn.com/docs/v0)
On This Page
[Install](https://ui.shadcn.com/docs/skills#install)
[What's Included](https://ui.shadcn.com/docs/skills#whats-included)
[Project Context](https://ui.shadcn.com/docs/skills#project-context)
[CLI Commands](https://ui.shadcn.com/docs/skills#cli-commands)
[Theming and Customization](https://ui.shadcn.com/docs/skills#theming-and-customization)
[Registry Authoring](https://ui.shadcn.com/docs/skills#registry-authoring)
[MCP Server](https://ui.shadcn.com/docs/skills#mcp-server)
[How It Works](https://ui.shadcn.com/docs/skills#how-it-works)
[Learn More](https://ui.shadcn.com/docs/skills#learn-more)
Deploy your shadcn/ui app on Vercel
Trusted by OpenAI, Sonos, Adobe, and more.
Vercel provides tools and infrastructure to deploy apps and features at scale.
Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout)
---
# Components - shadcn/ui
Sections
* [Introduction](https://ui.shadcn.com/docs)
* [Components](https://ui.shadcn.com/docs/components)
* [Installation](https://ui.shadcn.com/docs/installation)
* [Theming](https://ui.shadcn.com/docs/theming)
* [CLI](https://ui.shadcn.com/docs/cli)
* [RTL](https://ui.shadcn.com/docs/rtl)
* [Skills](https://ui.shadcn.com/docs/skills)
* [MCP Server](https://ui.shadcn.com/docs/mcp)
* [Registry](https://ui.shadcn.com/docs/registry)
* [Forms](https://ui.shadcn.com/docs/forms)
* [Changelog](https://ui.shadcn.com/docs/changelog)
Components
* [Accordion](https://ui.shadcn.com/docs/components/radix/accordion)
* [Alert](https://ui.shadcn.com/docs/components/radix/alert)
* [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog)
* [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio)
* [Avatar](https://ui.shadcn.com/docs/components/radix/avatar)
* [Badge](https://ui.shadcn.com/docs/components/radix/badge)
* [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb)
* [Button](https://ui.shadcn.com/docs/components/radix/button)
* [Button Group](https://ui.shadcn.com/docs/components/radix/button-group)
* [Calendar](https://ui.shadcn.com/docs/components/radix/calendar)
* [Card](https://ui.shadcn.com/docs/components/radix/card)
* [Carousel](https://ui.shadcn.com/docs/components/radix/carousel)
* [Chart](https://ui.shadcn.com/docs/components/radix/chart)
* [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox)
* [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible)
* [Combobox](https://ui.shadcn.com/docs/components/radix/combobox)
* [Command](https://ui.shadcn.com/docs/components/radix/command)
* [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu)
* [Data Table](https://ui.shadcn.com/docs/components/radix/data-table)
* [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker)
* [Dialog](https://ui.shadcn.com/docs/components/radix/dialog)
* [Direction](https://ui.shadcn.com/docs/components/radix/direction)
* [Drawer](https://ui.shadcn.com/docs/components/radix/drawer)
* [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu)
* [Empty](https://ui.shadcn.com/docs/components/radix/empty)
* [Field](https://ui.shadcn.com/docs/components/radix/field)
* [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card)
* [Input](https://ui.shadcn.com/docs/components/radix/input)
* [Input Group](https://ui.shadcn.com/docs/components/radix/input-group)
* [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp)
* [Item](https://ui.shadcn.com/docs/components/radix/item)
* [Kbd](https://ui.shadcn.com/docs/components/radix/kbd)
* [Label](https://ui.shadcn.com/docs/components/radix/label)
* [Menubar](https://ui.shadcn.com/docs/components/radix/menubar)
* [Native Select](https://ui.shadcn.com/docs/components/radix/native-select)
* [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu)
* [Pagination](https://ui.shadcn.com/docs/components/radix/pagination)
* [Popover](https://ui.shadcn.com/docs/components/radix/popover)
* [Progress](https://ui.shadcn.com/docs/components/radix/progress)
* [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group)
* [Resizable](https://ui.shadcn.com/docs/components/radix/resizable)
* [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area)
* [Select](https://ui.shadcn.com/docs/components/radix/select)
* [Separator](https://ui.shadcn.com/docs/components/radix/separator)
* [Sheet](https://ui.shadcn.com/docs/components/radix/sheet)
* [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar)
* [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton)
* [Slider](https://ui.shadcn.com/docs/components/radix/slider)
* [Sonner](https://ui.shadcn.com/docs/components/radix/sonner)
* [Spinner](https://ui.shadcn.com/docs/components/radix/spinner)
* [Switch](https://ui.shadcn.com/docs/components/radix/switch)
* [Table](https://ui.shadcn.com/docs/components/radix/table)
* [Tabs](https://ui.shadcn.com/docs/components/radix/tabs)
* [Textarea](https://ui.shadcn.com/docs/components/radix/textarea)
* [Toast](https://ui.shadcn.com/docs/components/radix/toast)
* [Toggle](https://ui.shadcn.com/docs/components/radix/toggle)
* [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group)
* [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip)
* [Typography](https://ui.shadcn.com/docs/components/radix/typography)
Get Started
* [Installation](https://ui.shadcn.com/docs/installation)
* [components.json](https://ui.shadcn.com/docs/components-json)
* [Theming](https://ui.shadcn.com/docs/theming)
* [Dark Mode](https://ui.shadcn.com/docs/dark-mode)
* [CLI](https://ui.shadcn.com/docs/cli)
* [Monorepo](https://ui.shadcn.com/docs/monorepo)
* [Skills](https://ui.shadcn.com/docs/skills)
* [Open in v0](https://ui.shadcn.com/docs/v0)
* [JavaScript](https://ui.shadcn.com/docs/javascript)
* [Figma](https://ui.shadcn.com/docs/figma)
* [llms.txt](https://ui.shadcn.com/llms.txt)
* [Legacy Docs](https://ui.shadcn.com/docs/legacy)
Forms
* [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form)
* [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form)
Registry
* [Introduction](https://ui.shadcn.com/docs/registry)
* [Getting Started](https://ui.shadcn.com/docs/registry/getting-started)
* [Namespaces](https://ui.shadcn.com/docs/registry/namespace)
* [Authentication](https://ui.shadcn.com/docs/registry/authentication)
* [Examples](https://ui.shadcn.com/docs/registry/examples)
* [MCP Server](https://ui.shadcn.com/docs/registry/mcp)
* [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index)
* [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0)
* [registry.json](https://ui.shadcn.com/docs/registry/registry-json)
* [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json)
Components
==========
Copy Page
[Next](https://ui.shadcn.com/docs/components/base/accordion)
Here you can find all the components available in the library. We are working on adding more components.
[Accordion](https://ui.shadcn.com/docs/components/radix/accordion)
[Alert](https://ui.shadcn.com/docs/components/radix/alert)
[Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog)
[Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio)
[Avatar](https://ui.shadcn.com/docs/components/radix/avatar)
[Badge](https://ui.shadcn.com/docs/components/radix/badge)
[Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb)
[Button](https://ui.shadcn.com/docs/components/radix/button)
[Button Group](https://ui.shadcn.com/docs/components/radix/button-group)
[Calendar](https://ui.shadcn.com/docs/components/radix/calendar)
[Card](https://ui.shadcn.com/docs/components/radix/card)
[Carousel](https://ui.shadcn.com/docs/components/radix/carousel)
[Chart](https://ui.shadcn.com/docs/components/radix/chart)
[Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox)
[Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible)
[Combobox](https://ui.shadcn.com/docs/components/radix/combobox)
[Command](https://ui.shadcn.com/docs/components/radix/command)
[Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu)
[Data Table](https://ui.shadcn.com/docs/components/radix/data-table)
[Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker)
[Dialog](https://ui.shadcn.com/docs/components/radix/dialog)
[Direction](https://ui.shadcn.com/docs/components/radix/direction)
[Drawer](https://ui.shadcn.com/docs/components/radix/drawer)
[Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu)
[Empty](https://ui.shadcn.com/docs/components/radix/empty)
[Field](https://ui.shadcn.com/docs/components/radix/field)
[Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card)
[Input](https://ui.shadcn.com/docs/components/radix/input)
[Input Group](https://ui.shadcn.com/docs/components/radix/input-group)
[Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp)
[Item](https://ui.shadcn.com/docs/components/radix/item)
[Kbd](https://ui.shadcn.com/docs/components/radix/kbd)
[Label](https://ui.shadcn.com/docs/components/radix/label)
[Menubar](https://ui.shadcn.com/docs/components/radix/menubar)
[Native Select](https://ui.shadcn.com/docs/components/radix/native-select)
[Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu)
[Pagination](https://ui.shadcn.com/docs/components/radix/pagination)
[Popover](https://ui.shadcn.com/docs/components/radix/popover)
[Progress](https://ui.shadcn.com/docs/components/radix/progress)
[Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group)
[Resizable](https://ui.shadcn.com/docs/components/radix/resizable)
[Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area)
[Select](https://ui.shadcn.com/docs/components/radix/select)
[Separator](https://ui.shadcn.com/docs/components/radix/separator)
[Sheet](https://ui.shadcn.com/docs/components/radix/sheet)
[Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar)
[Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton)
[Slider](https://ui.shadcn.com/docs/components/radix/slider)
[Sonner](https://ui.shadcn.com/docs/components/radix/sonner)
[Spinner](https://ui.shadcn.com/docs/components/radix/spinner)
[Switch](https://ui.shadcn.com/docs/components/radix/switch)
[Table](https://ui.shadcn.com/docs/components/radix/table)
[Tabs](https://ui.shadcn.com/docs/components/radix/tabs)
[Textarea](https://ui.shadcn.com/docs/components/radix/textarea)
[Toast](https://ui.shadcn.com/docs/components/radix/toast)
[Toggle](https://ui.shadcn.com/docs/components/radix/toggle)
[Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group)
[Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip)
[Typography](https://ui.shadcn.com/docs/components/radix/typography)
* * *
Can't find what you need? Try the [registry directory](https://ui.shadcn.com/docs/directory)
for community-maintained components.
[Accordion](https://ui.shadcn.com/docs/components/base/accordion)
Deploy your shadcn/ui app on Vercel
Trusted by OpenAI, Sonos, Adobe, and more.
Vercel provides tools and infrastructure to deploy apps and features at scale.
Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout)
---
# RTL - shadcn/ui
Sections
* [Introduction](https://ui.shadcn.com/docs)
* [Components](https://ui.shadcn.com/docs/components)
* [Installation](https://ui.shadcn.com/docs/installation)
* [Theming](https://ui.shadcn.com/docs/theming)
* [CLI](https://ui.shadcn.com/docs/cli)
* [RTL](https://ui.shadcn.com/docs/rtl)
* [Skills](https://ui.shadcn.com/docs/skills)
* [MCP Server](https://ui.shadcn.com/docs/mcp)
* [Registry](https://ui.shadcn.com/docs/registry)
* [Forms](https://ui.shadcn.com/docs/forms)
* [Changelog](https://ui.shadcn.com/docs/changelog)
Components
* [Accordion](https://ui.shadcn.com/docs/components/radix/accordion)
* [Alert](https://ui.shadcn.com/docs/components/radix/alert)
* [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog)
* [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio)
* [Avatar](https://ui.shadcn.com/docs/components/radix/avatar)
* [Badge](https://ui.shadcn.com/docs/components/radix/badge)
* [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb)
* [Button](https://ui.shadcn.com/docs/components/radix/button)
* [Button Group](https://ui.shadcn.com/docs/components/radix/button-group)
* [Calendar](https://ui.shadcn.com/docs/components/radix/calendar)
* [Card](https://ui.shadcn.com/docs/components/radix/card)
* [Carousel](https://ui.shadcn.com/docs/components/radix/carousel)
* [Chart](https://ui.shadcn.com/docs/components/radix/chart)
* [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox)
* [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible)
* [Combobox](https://ui.shadcn.com/docs/components/radix/combobox)
* [Command](https://ui.shadcn.com/docs/components/radix/command)
* [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu)
* [Data Table](https://ui.shadcn.com/docs/components/radix/data-table)
* [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker)
* [Dialog](https://ui.shadcn.com/docs/components/radix/dialog)
* [Direction](https://ui.shadcn.com/docs/components/radix/direction)
* [Drawer](https://ui.shadcn.com/docs/components/radix/drawer)
* [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu)
* [Empty](https://ui.shadcn.com/docs/components/radix/empty)
* [Field](https://ui.shadcn.com/docs/components/radix/field)
* [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card)
* [Input](https://ui.shadcn.com/docs/components/radix/input)
* [Input Group](https://ui.shadcn.com/docs/components/radix/input-group)
* [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp)
* [Item](https://ui.shadcn.com/docs/components/radix/item)
* [Kbd](https://ui.shadcn.com/docs/components/radix/kbd)
* [Label](https://ui.shadcn.com/docs/components/radix/label)
* [Menubar](https://ui.shadcn.com/docs/components/radix/menubar)
* [Native Select](https://ui.shadcn.com/docs/components/radix/native-select)
* [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu)
* [Pagination](https://ui.shadcn.com/docs/components/radix/pagination)
* [Popover](https://ui.shadcn.com/docs/components/radix/popover)
* [Progress](https://ui.shadcn.com/docs/components/radix/progress)
* [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group)
* [Resizable](https://ui.shadcn.com/docs/components/radix/resizable)
* [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area)
* [Select](https://ui.shadcn.com/docs/components/radix/select)
* [Separator](https://ui.shadcn.com/docs/components/radix/separator)
* [Sheet](https://ui.shadcn.com/docs/components/radix/sheet)
* [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar)
* [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton)
* [Slider](https://ui.shadcn.com/docs/components/radix/slider)
* [Sonner](https://ui.shadcn.com/docs/components/radix/sonner)
* [Spinner](https://ui.shadcn.com/docs/components/radix/spinner)
* [Switch](https://ui.shadcn.com/docs/components/radix/switch)
* [Table](https://ui.shadcn.com/docs/components/radix/table)
* [Tabs](https://ui.shadcn.com/docs/components/radix/tabs)
* [Textarea](https://ui.shadcn.com/docs/components/radix/textarea)
* [Toast](https://ui.shadcn.com/docs/components/radix/toast)
* [Toggle](https://ui.shadcn.com/docs/components/radix/toggle)
* [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group)
* [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip)
* [Typography](https://ui.shadcn.com/docs/components/radix/typography)
Get Started
* [Installation](https://ui.shadcn.com/docs/installation)
* [components.json](https://ui.shadcn.com/docs/components-json)
* [Theming](https://ui.shadcn.com/docs/theming)
* [Dark Mode](https://ui.shadcn.com/docs/dark-mode)
* [CLI](https://ui.shadcn.com/docs/cli)
* [Monorepo](https://ui.shadcn.com/docs/monorepo)
* [Skills](https://ui.shadcn.com/docs/skills)
* [Open in v0](https://ui.shadcn.com/docs/v0)
* [JavaScript](https://ui.shadcn.com/docs/javascript)
* [Figma](https://ui.shadcn.com/docs/figma)
* [llms.txt](https://ui.shadcn.com/llms.txt)
* [Legacy Docs](https://ui.shadcn.com/docs/legacy)
Forms
* [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form)
* [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form)
Registry
* [Introduction](https://ui.shadcn.com/docs/registry)
* [Getting Started](https://ui.shadcn.com/docs/registry/getting-started)
* [Namespaces](https://ui.shadcn.com/docs/registry/namespace)
* [Authentication](https://ui.shadcn.com/docs/registry/authentication)
* [Examples](https://ui.shadcn.com/docs/registry/examples)
* [MCP Server](https://ui.shadcn.com/docs/registry/mcp)
* [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index)
* [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0)
* [registry.json](https://ui.shadcn.com/docs/registry/registry-json)
* [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json)
RTL
===
Copy Page
[Previous](https://ui.shadcn.com/docs/dark-mode)
[Next](https://ui.shadcn.com/docs/cli)
Right-to-left support for shadcn/ui components.
shadcn/ui components have first-class support for right-to-left (RTL) layouts. Text alignment, positioning, and directional styles automatically adapt for languages like Arabic, Hebrew, and Persian.
Arabic (العربية)▼Toggle
تسجيل الدخول إلى حسابك
أدخل بريدك الإلكتروني أدناه لتسجيل الدخول إلى حسابك
إنشاء حساب
البريد الإلكتروني
كلمة المرور[نسيت كلمة المرور؟](https://ui.shadcn.com/docs/rtl#)
تسجيل الدخولتسجيل الدخول باستخدام Google
A card component in RTL mode.
When you install components, the CLI automatically transforms physical positioning classes to logical equivalents, so your components work seamlessly in both LTR and RTL contexts.
Get Started
-----------
Select your framework to get started with RTL support.
[Next.js\
\
Next.js](https://ui.shadcn.com/docs/rtl/next)
[Vite\
\
Vite](https://ui.shadcn.com/docs/rtl/vite)
[TanStack Start](https://ui.shadcn.com/docs/rtl/start)
How it works
------------
When you add components with `rtl: true` set in your `components.json`, the shadcn CLI automatically transforms classes and props to be RTL compatible:
* Physical positioning classes like `left-*` and `right-*` are converted to logical equivalents like `start-*` and `end-*`.
* Directional props are updated to use logical values.
* Text alignment and spacing classes are adjusted accordingly.
* Supported icons are automatically flipped using `rtl:rotate-180`.
Try it out
----------
Click the link below to open a Next.js project with RTL support in v0.
[](https://v0.app/chat/api/open?url=https://github.com/shadcn-ui/next-template-rtl)
Supported Styles
----------------
Automatic RTL transformation via the CLI is only available for projects created using `shadcn create` with the new styles (`base-nova`, `radix-nova`, etc.).
For other styles, see the [Migration Guide](https://ui.shadcn.com/docs/rtl#migrating-existing-components)
.
Font Recommendations
--------------------
For the best RTL experience, we recommend using fonts that have proper support for your target language. [Noto](https://fonts.google.com/noto)
is a great font family for this and it pairs well with Inter and Geist.
See your framework's RTL guide under [Get Started](https://ui.shadcn.com/docs/rtl#get-started)
for details on installing and configuring RTL fonts.
Animations
----------
The CLI also handles animation classes, automatically transforming physical directional animations to their logical equivalents. For example, `slide-in-from-right` becomes `slide-in-from-end`.
This ensures animations like dropdowns, popovers, and tooltips animate in the correct direction based on the document's text direction.
**A note on tw-animate-css:**
There is a [known issue](https://github.com/Wombosvideo/tw-animate-css/issues/67)
with the `tw-animate-css` library where the logical slide utilities are not working as expected. For now, make sure you pass in the `dir` prop to portal elements.
Copy`
Add to library
View Code blockquote ---------- > "After all," he said, "everyone enjoys a good joke, so it's only fair that they should pay for the privilege." Copy export function TypographyBlockquote() { return (
View Code table ----- | King's Treasury | People's happiness | | --- | --- | | Empty | Overflowing | | Modest | Satisfied | | Full | Ecstatic | Copy export function TypographyTable() { return (View Code list ---- * 1st level of puns: 5 gold coins * 2nd level of jokes: 10 gold coins * 3rd level of one-liners : 20 gold coins Copy export function TypographyList() { return (View Code Inline code ----------- `@radix-ui/react-alert-dialog` Copy export function TypographyInlineCode() { return (
View Code Lead ---- A modal dialog that interrupts the user with important content and expects a response. Copy export function TypographyLead() { return (View Code Large ----- Are you absolutely sure? Copy export function TypographyLarge() { return
Are you absolutely sure?} View Code Small ----- Email address Copy export function TypographySmall() { return ( Email address View Code Muted ----- Enter your email address. Copy export function TypographyMuted() { return (Enter your email address.
View Code RTL --- To enable RTL support in shadcn/ui, see the [RTL configuration guide](https://ui.shadcn.com/docs/rtl) . Arabic (العربية)▼Toggle فرض الضرائب على الضحك: سجلات ضريبة النكتة ========================================= في قديم الزمان، في أرض بعيدة، كان هناك ملك كسول جداً يقضي يومه كله مستلقياً على عرشه. في أحد الأيام، جاءه مستشاروه بمشكلة: المملكة كانت تنفد من المال. خطة الملك --------- فكر الملك طويلاً وبجد، وأخيراً توصل إلى [خطة عبقرية](https://ui.shadcn.com/docs/components/radix/typography#) : سيفرض ضريبة على النكات في المملكة. > "في النهاية،" قال، "الجميع يستمتع بنكتة جيدة، لذا من العدل أن يدفعوا مقابل هذا الامتياز." ### ضريبة النكتة لم يكن رعايا الملك سعداء. تذمروا واشتكوا، لكن الملك كان حازماً: * المستوى الأول من التورية: 5 قطع ذهبية * المستوى الثاني من النكات: 10 قطع ذهبية * المستوى الثالث من النكات القصيرة: 20 قطعة ذهبية نتيجة لذلك، توقف الناس عن رواية النكات، وغرقت المملكة في الكآبة. لكن كان هناك شخص واحد رفض أن تحبطه حماقة الملك: مهرج البلاط المسمى المازح. ### ثورة المازح بدأ المازح يتسلل إلى القلعة في منتصف الليل ويترك النكات في كل مكان: تحت وسادة الملك، في حسائه، حتى في المرحاض الملكي. كان الملك غاضباً، لكنه لم يستطع إيقاف المازح. وبعد ذلك، في يوم من الأيام، اكتشف سكان المملكة أن النكات التي تركها المازح كانت مضحكة جداً لدرجة أنهم لم يستطيعوا منع أنفسهم من الضحك. وبمجرد أن بدأوا بالضحك، لم يستطيعوا التوقف. ### ثورة الشعب شعر سكان المملكة بالبهجة من الضحك، وبدأوا في رواية النكات والتورية مرة أخرى، وسرعان ما أصبحت المملكة بأكملها جزءاً من النكتة. | خزينة الملك | سعادة الشعب | | --- | --- | | فارغة | فائضة | | متواضعة | راضٍ | | ممتلئة | منتشٍ | الملك، عندما رأى مدى سعادة رعاياه، أدرك خطأ طرقه وألغى ضريبة النكتة. أُعلن المازح بطلاً، وعاشت المملكة في سعادة دائمة. مغزى القصة هو: لا تستهن أبداً بقوة الضحك الجيد وكن دائماً حذراً من الأفكار السيئة. Copy "use client" import * as React from "react" View Code [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) [Introduction](https://ui.shadcn.com/docs) On This Page [h1](https://ui.shadcn.com/docs/components/radix/typography#h1) [h2](https://ui.shadcn.com/docs/components/radix/typography#h2) [h3](https://ui.shadcn.com/docs/components/radix/typography#h3) [h4](https://ui.shadcn.com/docs/components/radix/typography#h4) [p](https://ui.shadcn.com/docs/components/radix/typography#p) [blockquote](https://ui.shadcn.com/docs/components/radix/typography#blockquote) [table](https://ui.shadcn.com/docs/components/radix/typography#table) [list](https://ui.shadcn.com/docs/components/radix/typography#list) [Inline code](https://ui.shadcn.com/docs/components/radix/typography#inline-code) [Lead](https://ui.shadcn.com/docs/components/radix/typography#lead) [Large](https://ui.shadcn.com/docs/components/radix/typography#large) [Small](https://ui.shadcn.com/docs/components/radix/typography#small) [Muted](https://ui.shadcn.com/docs/components/radix/typography#muted) [RTL](https://ui.shadcn.com/docs/components/radix/typography#rtl) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # Tabs - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) Tabs ==== Copy Page [Previous](https://ui.shadcn.com/docs/components/radix/table) [Next](https://ui.shadcn.com/docs/components/radix/textarea) A set of layered sections of content—known as tab panels—that are displayed one at a time. [Radix UI](https://ui.shadcn.com/docs/components/radix/tabs) [Base UI](https://ui.shadcn.com/docs/components/base/tabs) Radix UI OverviewAnalyticsReportsSettings Overview View your key metrics and recent project activity. Track progress across all your active projects. You have 12 active projects and 3 pending tasks. Copy import { Card, CardContent, View Code Installation ------------ CommandManual pnpmnpmyarnbun pnpm dlx shadcn@latest add tabs Copy Usage ----- Copy`import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"` Copy`` Examples -------- ### Line Use the `variant="line"` prop on `TabsList` for a line style. OverviewAnalyticsReports Copy import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs" export function TabsLine() { View Code ### Vertical Use `orientation="vertical"` for vertical tabs. AccountPasswordNotifications Copy import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs" export function TabsVertical() { View Code ### Disabled HomeDisabled Copy import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs" export function TabsDisabled() { View Code ### Icons PreviewCode Copy import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs" import { AppWindowIcon, CodeIcon } from "lucide-react" View Code RTL --- To enable RTL support in shadcn/ui, see the [RTL configuration guide](https://ui.shadcn.com/docs/rtl) . Arabic (العربية)▼Toggle نظرة عامةالتحليلاتالتقاريرالإعدادات نظرة عامة عرض مقاييسك الرئيسية وأنشطة المشروع الأخيرة. تتبع التقدم عبر جميع مشاريعك النشطة. لديك ١٢ مشروعًا نشطًا و٣ مهام معلقة. Copy "use client" import * as React from "react" View Code API Reference ------------- See the [Radix Tabs](https://www.radix-ui.com/docs/primitives/components/tabs#api-reference) documentation. [Table](https://ui.shadcn.com/docs/components/radix/table) [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) On This Page [Installation](https://ui.shadcn.com/docs/components/radix/tabs#installation) [Usage](https://ui.shadcn.com/docs/components/radix/tabs#usage) [Examples](https://ui.shadcn.com/docs/components/radix/tabs#examples) [Line](https://ui.shadcn.com/docs/components/radix/tabs#line) [Vertical](https://ui.shadcn.com/docs/components/radix/tabs#vertical) [Disabled](https://ui.shadcn.com/docs/components/radix/tabs#disabled) [Icons](https://ui.shadcn.com/docs/components/radix/tabs#icons) [RTL](https://ui.shadcn.com/docs/components/radix/tabs#rtl) [API Reference](https://ui.shadcn.com/docs/components/radix/tabs#api-reference) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # MCP Server - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) MCP Server ========== Copy Page [Previous](https://ui.shadcn.com/docs/registry/examples) [Next](https://ui.shadcn.com/docs/registry/registry-index) MCP support for registry developers The [shadcn MCP server](https://ui.shadcn.com/docs/mcp) works out of the box with any shadcn-compatible registry. You do not need to do anything special to enable MCP support for your registry. * * * Prerequisites ------------- The MCP server works by requesting your registry index. Make sure you have a registry item file at the root of your registry named `registry`. For example, if your registry is hosted at `https://acme.com/r/[name].json`, you should have a file at `https://acme.com/r/registry.json` or `https://acme.com/r/registry` if you're using a JSON file extension. This file must be a valid JSON file that conforms to the [registry schema](https://ui.shadcn.com/docs/registry/registry-json) . * * * Configuring MCP --------------- Ask your registry consumers to configure your registry in their `components.json` file and install the shadcn MCP server: Claude CodeCursorVS CodeCodexOpenCode **Configure your registry** in your `components.json` file: components.json Copy`{ "registries": { "@acme": "https://acme.com/r/{name}.json" } }` **Run the following command** in your project: pnpmnpmyarnbun pnpm dlx shadcn@latest mcp init --client claude Copy **Restart Claude Code** and try the following prompts: * Show me the components in the acme registry * Create a landing page using items from the acme registry **Note:** You can use `/mcp` command in Claude Code to debug the MCP server. You can read more about the MCP server in the [MCP documentation](https://ui.shadcn.com/docs/mcp) . * * * Best Practices -------------- Here are some best practices for MCP-compatible registries: 1. **Clear Descriptions**: Add concise, informative descriptions that help AI assistants understand what a registry item is for and how to use it. 2. **Proper Dependencies**: List all `dependencies` accurately so MCP can install them automatically. 3. **Registry Dependencies**: Use `registryDependencies` to indicate relationships between items. 4. **Consistent Naming**: Use kebab-case for component names and maintain consistency across your registry. [Examples](https://ui.shadcn.com/docs/registry/examples) [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) On This Page [Prerequisites](https://ui.shadcn.com/docs/registry/mcp#prerequisites) [Configuring MCP](https://ui.shadcn.com/docs/registry/mcp#configuring-mcp) [Best Practices](https://ui.shadcn.com/docs/registry/mcp#best-practices) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # Getting Started - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) Getting Started =============== Copy Page [Previous](https://ui.shadcn.com/docs/registry) [Next](https://ui.shadcn.com/docs/registry/namespace) Learn how to get setup and run your own component registry. This guide will walk you through the process of setting up your own component registry. It assumes you already have a project with components and would like to turn it into a registry. If you're starting a new registry project, you can use the [registry template](https://github.com/shadcn-ui/registry-template) as a starting point. We have already configured it for you. Requirements ------------ You are free to design and host your custom registry as you see fit. The only requirement is that your registry items must be valid JSON files that conform to the [registry-item schema specification](https://ui.shadcn.com/docs/registry/registry-item-json) . If you'd like to see an example of a registry, we have a [template project](https://github.com/shadcn-ui/registry-template) for you to use as a starting point. registry.json ------------- The `registry.json` is the entry point for the registry. It contains the registry's name, homepage, and defines all the items present in the registry. Your registry must have this file (or JSON payload) present at the root of the registry endpoint. The registry endpoint is the URL where your registry is hosted. The `shadcn` CLI will automatically generate this file for you when you run the `build` command. Add a registry.json file ------------------------ Create a `registry.json` file in the root of your project. Your project can be a Next.js, Vite, Vue, Svelte, PHP or any other framework as long as it supports serving JSON over HTTP. registry.json Copy`{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "acme", "homepage": "https://acme.com", "items": [ // ... ] }` This `registry.json` file must conform to the [registry schema specification](https://ui.shadcn.com/docs/registry/registry-json) . Add a registry item ------------------- ### Create your component Add your first component. Here's an example of a simple ` Account Password Make changes to your account here. Change your password here. ` component: registry/new-york/hello-world/hello-world.tsx Copy`import { Button } from "@/components/ui/button" export function HelloWorld() { return }` **Note:** This example places the component in the `registry/new-york` directory. You can place it anywhere in your project as long as you set the correct path in the `registry.json` file and you follow the `registry/[NAME]` directory structure. Copy`registry └── new-york └── hello-world └── hello-world.tsx` ### Add your component to the registry To add your component to the registry, you need to add your component definition to `registry.json`. registry.json Copy`{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "acme", "homepage": "https://acme.com", "items": [ { "name": "hello-world", "type": "registry:block", "title": "Hello World", "description": "A simple hello world component.", "files": [ { "path": "registry/new-york/hello-world/hello-world.tsx", "type": "registry:component" } ] } ] }` You define your registry item by adding a `name`, `type`, `title`, `description` and `files`. For every file you add, you must specify the `path` and `type` of the file. The `path` is the relative path to the file from the root of your project. The `type` is the type of the file. You can read more about the registry item schema and file types in the [registry item schema docs](https://ui.shadcn.com/docs/registry/registry-item-json) . Build your registry ------------------- ### Install the shadcn CLI pnpmnpmyarnbun pnpm add shadcn@latest Copy ### Add a build script Add a `registry:build` script to your `package.json` file. package.json Copy`{ "scripts": { "registry:build": "shadcn build" } }` ### Run the build script Run the build script to generate the registry JSON files. pnpmnpmyarnbun pnpm registry:build Copy **Note:** By default, the build script will generate the registry JSON files in `public/r` e.g `public/r/hello-world.json`. You can change the output directory by passing the `--output` option. See the [shadcn build command](https://ui.shadcn.com/docs/cli#build) for more information. Serve your registry ------------------- If you're running your registry on Next.js, you can now serve your registry by running the `next` server. The command might differ for other frameworks. pnpmnpmyarnbun pnpm dev Copy Your files will now be served at `http://localhost:3000/r/[NAME].json` eg. `http://localhost:3000/r/hello-world.json`. Publish your registry --------------------- To make your registry available to other developers, you can publish it by deploying your project to a public URL. Guidelines ---------- Here are some guidelines to follow when building components for a registry. * Place your registry item in the `registry/[STYLE]/[NAME]` directory. I'm using `new-york` as an example. It can be anything you want as long as it's nested under the `registry` directory. * The following properties are required for the block definition: `name`, `description`, `type` and `files`. * It is recommended to add a proper name and description to your registry item. This helps LLMs understand the component and its purpose. * Make sure to list all registry dependencies in `registryDependencies`. A registry dependency is the name of the component in the registry eg. `input`, `button`, `card`, etc or a URL to a registry item eg. `http://localhost:3000/r/editor.json`. * Make sure to list all dependencies in `dependencies`. A dependency is the name of the package in the registry eg. `zod`, `sonner`, etc. To set a version, you can use the `name@version` format eg. `zod@^3.20.0`. * **Imports should always use the `@/registry` path.** eg. `import { HelloWorld } from "@/registry/new-york/hello-world/hello-world"` * Ideally, place your files within a registry item in `components`, `hooks`, `lib` directories. Install using the CLI --------------------- To install a registry item using the `shadcn` CLI, use the `add` command followed by the URL of the registry item. pnpmnpmyarnbun pnpm dlx shadcn@latest add http://localhost:3000/r/hello-world.json Copy See the [Namespaced Registries](https://ui.shadcn.com/docs/registry/namespace) docs for more information on how to install registry items from a namespaced registry. [Introduction](https://ui.shadcn.com/docs/registry) [Namespaces](https://ui.shadcn.com/docs/registry/namespace) On This Page [Requirements](https://ui.shadcn.com/docs/registry/getting-started#requirements) [registry.json](https://ui.shadcn.com/docs/registry/getting-started#registryjson) [Add a registry.json file](https://ui.shadcn.com/docs/registry/getting-started#add-a-registryjson-file) [Add a registry item](https://ui.shadcn.com/docs/registry/getting-started#add-a-registry-item) [Create your component](https://ui.shadcn.com/docs/registry/getting-started#create-your-component) [Add your component to the registry](https://ui.shadcn.com/docs/registry/getting-started#add-your-component-to-the-registry) [Build your registry](https://ui.shadcn.com/docs/registry/getting-started#build-your-registry) [Install the shadcn CLI](https://ui.shadcn.com/docs/registry/getting-started#install-the-shadcn-cli) [Add a build script](https://ui.shadcn.com/docs/registry/getting-started#add-a-build-script) [Run the build script](https://ui.shadcn.com/docs/registry/getting-started#run-the-build-script) [Serve your registry](https://ui.shadcn.com/docs/registry/getting-started#serve-your-registry) [Publish your registry](https://ui.shadcn.com/docs/registry/getting-started#publish-your-registry) [Guidelines](https://ui.shadcn.com/docs/registry/getting-started#guidelines) [Install using the CLI](https://ui.shadcn.com/docs/registry/getting-started#install-using-the-cli) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # Add a Registry - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) Add a Registry ============== Copy Page [Previous](https://ui.shadcn.com/docs/registry/mcp) [Next](https://ui.shadcn.com/docs/registry/open-in-v0) Open Source Registry Index The open source registry index is a list of all the open source registries that are available to use out of the box. When you run `shadcn add` or `shadcn search`, the CLI will automatically check the registry index for the registry you are looking for and add it to your `components.json` file. You can see the full list at [https://ui.shadcn.com/r/registries.json](https://ui.shadcn.com/r/registries.json) . Adding a Registry ----------------- 1. Add your registry to [`apps/v4/registry/directory.json`](https://github.com/shadcn-ui/ui/blob/main/apps/v4/registry/directory.json) 2. Run `pnpm registry:build` to update `registries.json` file. 3. Create a pull request to [https://github.com/shadcn-ui/ui](https://github.com/shadcn-ui/ui) Once you have submitted your request, it will be validated and reviewed by the team. ### Requirements 1. The registry must be open source and publicly accessible. 2. The registry must be a valid JSON file that conforms to the [registry schema specification](https://ui.shadcn.com/docs/registry/registry-json) . 3. The registry is expected to be a flat registry with no nested items i.e `/registry.json` and `/component-name.json` files are expected to be in the root of the registry. 4. The `files` array, if present, must NOT include a `content` property. Here's an example of a valid registry: registry.json Copy`{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "acme", "homepage": "https://acme.com", "items": [ { "name": "login-form", "type": "registry:component", "title": "Login Form", "description": "A login form component.", "files": [ { "path": "registry/new-york/auth/login-form.tsx", "type": "registry:component" } ] }, { "name": "example-login-form", "type": "registry:component", "title": "Example Login Form", "description": "An example showing how to use the login form component.", "files": [ { "path": "registry/new-york/examples/example-login-form.tsx", "type": "registry:component" } ] } ] }` [MCP Server](https://ui.shadcn.com/docs/registry/mcp) [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) On This Page [Adding a Registry](https://ui.shadcn.com/docs/registry/registry-index#adding-a-registry) [Requirements](https://ui.shadcn.com/docs/registry/registry-index#requirements) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # Open in v0 - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) Open in v0 ========== Copy Page [Previous](https://ui.shadcn.com/docs/registry/registry-index) [Next](https://ui.shadcn.com/docs/registry/registry-json) Integrate your registry with Open in v0. If your registry is hosted and publicly accessible via a URL, you can open a registry item in v0 by using the `https://v0.dev/chat/api/open?url=[URL]` endpoint. eg. [https://v0.dev/chat/api/open?url=https://ui.shadcn.com/r/styles/new-york/login-01.json](https://v0.dev/chat/api/open?url=https://ui.shadcn.com/r/styles/new-york/login-01.json) **Important:** `Open in v0` does not support `cssVars`, `css`, `envVars`, namespaced registries, or advanced authentication methods. Button ------ See [Build your Open in v0 button](https://v0.dev/chat/button) for more information on how to build your own `Open in v0` button. Here's a simple example of how to add a `Open in v0` button to your site. Copy``import { Button } from "@/components/ui/button" export function OpenInV0Button({ url }: { url: string }) { return ( ) }`` Copy` ` Authentication -------------- Open in v0 only supports query parameter authentication. It does not support namespaced registries or advanced authentication methods like Bearer tokens or API keys in headers. ### Using Query Parameter Authentication To add authentication to your registry for Open in v0, use a `token` query parameter: https://registry.company.com/r/hello-world.json?token=your_secure_token_here When implementing this on your registry server: 1. Check for the `token` query parameter 2. Validate the token against your authentication system 3. Return a `401 Unauthorized` response if the token is invalid or missing 4. Both the shadcn CLI and Open in v0 will handle the 401 response and display an appropriate message to users ### Example Implementation Copy`// Next.js API route example export async function GET(request: NextRequest) { const token = request.nextUrl.searchParams.get("token") if (!isValidToken(token)) { return NextResponse.json( { error: "Unauthorized", message: "Invalid or missing token", }, { status: 401 } ) } // Return the registry item return NextResponse.json(registryItem) }` **Security Note:** Make sure to encrypt and expire tokens. Never expose production tokens in documentation or examples. [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) [registry.json](https://ui.shadcn.com/docs/registry/registry-json) On This Page [Button](https://ui.shadcn.com/docs/registry/open-in-v0#button) [Authentication](https://ui.shadcn.com/docs/registry/open-in-v0#authentication) [Using Query Parameter Authentication](https://ui.shadcn.com/docs/registry/open-in-v0#using-query-parameter-authentication) [Example Implementation](https://ui.shadcn.com/docs/registry/open-in-v0#example-implementation) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # Spinner - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) Spinner ======= Copy Page [Previous](https://ui.shadcn.com/docs/components/radix/sonner) [Next](https://ui.shadcn.com/docs/components/radix/switch) An indicator that can be used to show a loading state. [Radix UI](https://ui.shadcn.com/docs/components/radix/spinner) [Base UI](https://ui.shadcn.com/docs/components/base/spinner) Radix UI Processing payment... $100.00 Copy import { Item, ItemContent, View Code Installation ------------ CommandManual pnpmnpmyarnbun pnpm dlx shadcn@latest add spinner Copy Usage ----- Copy`import { Spinner } from "@/components/ui/spinner"` Copy` ` Customization ------------- You can replace the default spinner icon with any other icon by editing the `Spinner` component. Copy import { LoaderIcon } from "lucide-react" import { cn } from "@/lib/utils" View Code components/ui/spinner.tsx Copy`import { LoaderIcon } from "lucide-react" import { cn } from "@/lib/utils" function Spinner({ className, ...props }: React.ComponentProps<"svg">) { return ( ) } export { Spinner }` Examples -------- ### Size Use the `size-*` utility class to change the size of the spinner. Copy import { Spinner } from "@/components/ui/spinner" export function SpinnerSize() { View Code ### Button Add a spinner to a button to indicate a loading state. Place the ` ` before the label with `data-icon="inline-start"` for a start position, or after the label with `data-icon="inline-end"` for an end position. Loading...Please waitProcessing Copy import { Button } from "@/components/ui/button" import { Spinner } from "@/components/ui/spinner" View Code ### Badge Add a spinner to a badge to indicate a loading state. Place the ` ` before the label with `data-icon="inline-start"` for a start position, or after the label with `data-icon="inline-end"` for an end position. SyncingUpdatingProcessing Copy import { Badge } from "@/components/ui/badge" import { Spinner } from "@/components/ui/spinner" View Code ### Input Group Validating...Send Copy import { InputGroup, InputGroupAddon, View Code ### Empty Processing your request Please wait while we process your request. Do not refresh the page. Cancel Copy import { Button } from "@/components/ui/button" import { Empty, View Code RTL --- To enable RTL support in shadcn/ui, see the [RTL configuration guide](https://ui.shadcn.com/docs/rtl) . Arabic (العربية)▼Toggle جاري معالجة الدفع... ١٠٠.٠٠ دولار Copy "use client" import * as React from "react" View Code [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) [Switch](https://ui.shadcn.com/docs/components/radix/switch) On This Page [Installation](https://ui.shadcn.com/docs/components/radix/spinner#installation) [Usage](https://ui.shadcn.com/docs/components/radix/spinner#usage) [Customization](https://ui.shadcn.com/docs/components/radix/spinner#customization) [Examples](https://ui.shadcn.com/docs/components/radix/spinner#examples) [Size](https://ui.shadcn.com/docs/components/radix/spinner#size) [Button](https://ui.shadcn.com/docs/components/radix/spinner#button) [Badge](https://ui.shadcn.com/docs/components/radix/spinner#badge) [Input Group](https://ui.shadcn.com/docs/components/radix/spinner#input-group) [Empty](https://ui.shadcn.com/docs/components/radix/spinner#empty) [RTL](https://ui.shadcn.com/docs/components/radix/spinner#rtl) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # Toggle - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) Toggle ====== Copy Page [Previous](https://ui.shadcn.com/docs/components/radix/toast) [Next](https://ui.shadcn.com/docs/components/radix/toggle-group) A two-state button that can be either on or off. [Radix UI](https://ui.shadcn.com/docs/components/radix/toggle) [Base UI](https://ui.shadcn.com/docs/components/base/toggle) Radix UI Bookmark Copy import { Toggle } from "@/components/ui/toggle" import { BookmarkIcon } from "lucide-react" View Code Installation ------------ CommandManual pnpmnpmyarnbun pnpm dlx shadcn@latest add toggle Copy Usage ----- Copy`import { Toggle } from "@/components/ui/toggle"` Copy` Toggle ` Examples -------- ### Outline Use `variant="outline"` for an outline style. ItalicBold Copy import { Toggle } from "@/components/ui/toggle" import { BoldIcon, ItalicIcon } from "lucide-react" View Code ### With Text Italic Copy import { Toggle } from "@/components/ui/toggle" import { ItalicIcon } from "lucide-react" View Code ### Size Use the `size` prop to change the size of the toggle. SmallDefaultLarge Copy import { Toggle } from "@/components/ui/toggle" export function ToggleSizes() { View Code ### Disabled DisabledDisabled Copy import { Toggle } from "@/components/ui/toggle" export function ToggleDisabled() { View Code RTL --- To enable RTL support in shadcn/ui, see the [RTL configuration guide](https://ui.shadcn.com/docs/rtl) . Arabic (العربية)▼Toggle إشارة مرجعية Copy "use client" import * as React from "react" View Code API Reference ------------- See the [Radix Toggle](https://www.radix-ui.com/docs/primitives/components/toggle#api-reference) documentation. [Toast](https://ui.shadcn.com/docs/components/radix/toast) [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) On This Page [Installation](https://ui.shadcn.com/docs/components/radix/toggle#installation) [Usage](https://ui.shadcn.com/docs/components/radix/toggle#usage) [Examples](https://ui.shadcn.com/docs/components/radix/toggle#examples) [Outline](https://ui.shadcn.com/docs/components/radix/toggle#outline) [With Text](https://ui.shadcn.com/docs/components/radix/toggle#with-text) [Size](https://ui.shadcn.com/docs/components/radix/toggle#size) [Disabled](https://ui.shadcn.com/docs/components/radix/toggle#disabled) [RTL](https://ui.shadcn.com/docs/components/radix/toggle#rtl) [API Reference](https://ui.shadcn.com/docs/components/radix/toggle#api-reference) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # Toast - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) Toast ===== Copy Page [Previous](https://ui.shadcn.com/docs/components/radix/textarea) [Next](https://ui.shadcn.com/docs/components/radix/toggle) A succinct message that is displayed temporarily. [Radix UI](https://ui.shadcn.com/docs/components/radix/toast) [Base UI](https://ui.shadcn.com/docs/components/base/toast) Radix UI The toast component has been deprecated. Use the [sonner](https://ui.shadcn.com/docs/components/sonner) component instead. [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # registry.json - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) registry.json ============= Copy Page [Previous](https://ui.shadcn.com/docs/registry/open-in-v0) [Next](https://ui.shadcn.com/docs/registry/registry-item-json) Schema for running your own component registry. The `registry.json` schema is used to define your custom component registry. registry.json Copy`{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "shadcn", "homepage": "https://ui.shadcn.com", "items": [ { "name": "hello-world", "type": "registry:block", "title": "Hello World", "description": "A simple hello world component.", "registryDependencies": [ "button", "@acme/input-form", "https://example.com/r/foo" ], "dependencies": ["is-even@3.0.0", "motion"], "files": [ { "path": "registry/new-york/hello-world/hello-world.tsx", "type": "registry:component" } ] } ] }` Definitions ----------- You can see the JSON Schema for `registry.json` [here](https://ui.shadcn.com/schema/registry.json) . ### $schema The `$schema` property is used to specify the schema for the `registry.json` file. registry.json Copy`{ "$schema": "https://ui.shadcn.com/schema/registry.json" }` ### name The `name` property is used to specify the name of your registry. This is used for data attributes and other metadata. registry.json Copy`{ "name": "acme" }` ### homepage The homepage of your registry. This is used for data attributes and other metadata. registry.json Copy`{ "homepage": "https://acme.com" }` ### items The `items` in your registry. Each item must implement the [registry-item schema specification](https://ui.shadcn.com/schema/registry-item.json) . registry.json Copy`{ "items": [ { "name": "hello-world", "type": "registry:block", "title": "Hello World", "description": "A simple hello world component.", "registryDependencies": [ "button", "@acme/input-form", "https://example.com/r/foo" ], "dependencies": ["is-even@3.0.0", "motion"], "files": [ { "path": "registry/new-york/hello-world/hello-world.tsx", "type": "registry:component" } ] } ] }` See the [registry-item schema documentation](https://ui.shadcn.com/docs/registry/registry-item-json) for more information. [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) On This Page [Definitions](https://ui.shadcn.com/docs/registry/registry-json#definitions) [$schema](https://ui.shadcn.com/docs/registry/registry-json#schema) [name](https://ui.shadcn.com/docs/registry/registry-json#name) [homepage](https://ui.shadcn.com/docs/registry/registry-json#homepage) [items](https://ui.shadcn.com/docs/registry/registry-json#items) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # Table - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) Table ===== Copy Page [Previous](https://ui.shadcn.com/docs/components/radix/switch) [Next](https://ui.shadcn.com/docs/components/radix/tabs) A responsive table component. [Radix UI](https://ui.shadcn.com/docs/components/radix/table) [Base UI](https://ui.shadcn.com/docs/components/base/table) Radix UI | | | | | | --- | --- | --- | --- |A list of your recent invoices. | Invoice | Status | Method | Amount | | --- | --- | --- | --- | | INV001 | Paid | Credit Card | $250.00 | | INV002 | Pending | PayPal | $150.00 | | INV003 | Unpaid | Bank Transfer | $350.00 | | INV004 | Paid | Credit Card | $450.00 | | INV005 | Paid | PayPal | $550.00 | | INV006 | Pending | Bank Transfer | $200.00 | | INV007 | Unpaid | Credit Card | $300.00 | | Total | | | $2,500.00 | Copy import { Table, TableBody, View Code Installation ------------ CommandManual pnpmnpmyarnbun pnpm dlx shadcn@latest add table Copy Usage ----- Copy`import { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"` Copy`` Examples -------- Use the `
A list of your recent invoices. Invoice Status Method Amount INV001 Paid Credit Card $250.00 ` component to add a footer to the table. | | | | | | --- | --- | --- | --- |A list of your recent invoices. | Invoice | Status | Method | Amount | | --- | --- | --- | --- | | INV001 | Paid | Credit Card | $250.00 | | INV002 | Pending | PayPal | $150.00 | | INV003 | Unpaid | Bank Transfer | $350.00 | | Total | | | $2,500.00 | Copy import { Table, TableBody, View Code ### Actions A table showing actions for each row using a ` ` component. | Product | Price | Actions | | --- | --- | --- | | Wireless Mouse | $29.99 | Open menu | | Mechanical Keyboard | $129.99 | Open menu | | USB-C Hub | $49.99 | Open menu | Copy import { Button } from "@/components/ui/button" import { DropdownMenu, View Code Data Table ---------- You can use the ` ` component to build more complex data tables. Combine it with [@tanstack/react-table](https://tanstack.com/table/v8) to create tables with sorting, filtering and pagination. See the [Data Table](https://ui.shadcn.com/docs/components/data-table) documentation for more information. You can also see an example of a data table in the [Tasks](https://ui.shadcn.com/examples/tasks) demo. RTL --- To enable RTL support in shadcn/ui, see the [RTL configuration guide](https://ui.shadcn.com/docs/rtl) . Arabic (العربية)▼Toggle | | | | | | --- | --- | --- | --- |قائمة بفواتيرك الأخيرة. | الفاتورة | الحالة | الطريقة | المبلغ | | --- | --- | --- | --- | | INV001 | مدفوع | بطاقة ائتمانية | $250.00 | | INV002 | قيد الانتظار | PayPal | $150.00 | | INV003 | غير مدفوع | تحويل بنكي | $350.00 | | INV004 | مدفوع | بطاقة ائتمانية | $450.00 | | INV005 | مدفوع | PayPal | $550.00 | | INV006 | قيد الانتظار | تحويل بنكي | $200.00 | | INV007 | غير مدفوع | بطاقة ائتمانية | $300.00 | | المجموع | | | $2,500.00 | Copy "use client" import * as React from "react" View Code [Switch](https://ui.shadcn.com/docs/components/radix/switch) [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) On This Page [Installation](https://ui.shadcn.com/docs/components/radix/table#installation) [Usage](https://ui.shadcn.com/docs/components/radix/table#usage) [Examples](https://ui.shadcn.com/docs/components/radix/table#examples) [Footer](https://ui.shadcn.com/docs/components/radix/table#footer) [Actions](https://ui.shadcn.com/docs/components/radix/table#actions) [Data Table](https://ui.shadcn.com/docs/components/radix/table#data-table) [RTL](https://ui.shadcn.com/docs/components/radix/table#rtl) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # Authentication - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) Authentication ============== Copy Page [Previous](https://ui.shadcn.com/docs/registry/namespace) [Next](https://ui.shadcn.com/docs/registry/examples) Secure your registry with authentication for private and personalized components. Authentication lets you run private registries, control who can access your components, and give different teams or users different content. This guide shows common authentication patterns and how to set them up. Authentication enables these use cases: * **Private Components**: Keep your business logic and internal components secure * **Team-Specific Resources**: Give different teams different components * **Access Control**: Limit who can see sensitive or experimental components * **Usage Analytics**: See who's using which components in your organization * **Licensing**: Control who gets premium or licensed components Common Authentication Patterns ------------------------------ ### Token-Based Authentication The most common approach uses Bearer tokens or API keys: components.json Copy`{ "registries": { "@private": { "url": "https://registry.company.com/{name}.json", "headers": { "Authorization": "Bearer ${REGISTRY_TOKEN}" } } } }` Set your token in environment variables: .env.local Copy`REGISTRY_TOKEN=your_secret_token_here` ### API Key Authentication Some registries use API keys in headers: components.json Copy`{ "registries": { "@company": { "url": "https://api.company.com/registry/{name}.json", "headers": { "X-API-Key": "${API_KEY}", "X-Workspace-Id": "${WORKSPACE_ID}" } } } }` ### Query Parameter Authentication For simpler setups, use query parameters: components.json Copy`{ "registries": { "@internal": { "url": "https://registry.company.com/{name}.json", "params": { "token": "${ACCESS_TOKEN}" } } } }` This creates: `https://registry.company.com/button.json?token=your_token` Server-Side Implementation -------------------------- Here's how to add authentication to your registry server: ### Next.js API Route Example app/api/registry/\[name\]/route.ts Copy`import { NextRequest, NextResponse } from "next/server" export async function GET( request: NextRequest, { params }: { params: { name: string } } ) { // Get token from Authorization header. const authHeader = request.headers.get("authorization") const token = authHeader?.replace("Bearer ", "") // Or from query parameters. const queryToken = request.nextUrl.searchParams.get("token") // Check if token is valid. if (!isValidToken(token || queryToken)) { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) } // Check if token can access this component. if (!hasAccessToComponent(token, params.name)) { return NextResponse.json({ error: "Forbidden" }, { status: 403 }) } // Return the component. const component = await getComponent(params.name) return NextResponse.json(component) } function isValidToken(token: string | null) { // Add your token validation logic here. // Check against database, JWT validation, etc. return token === process.env.VALID_TOKEN } function hasAccessToComponent(token: string, componentName: string) { // Add role-based access control here. // Check if token can access specific component. return true // Your logic here. }` ### Express.js Example server.js Copy`app.get("/registry/:name.json", (req, res) => { const token = req.headers.authorization?.replace("Bearer ", "") if (!isValidToken(token)) { return res.status(401).json({ error: "Unauthorized" }) } const component = getComponent(req.params.name) if (!component) { return res.status(404).json({ error: "Component not found" }) } res.json(component) })` Advanced Authentication Patterns -------------------------------- ### Team-Based Access Give different teams different components: api/registry/route.ts Copy`async function GET(request: NextRequest) { const token = extractToken(request) const team = await getTeamFromToken(token) // Get components for this team. const components = await getComponentsForTeam(team) return NextResponse.json(components) }` ### User-Personalized Registries Give users components based on their preferences: Copy`async function GET(request: NextRequest) { const user = await authenticateUser(request) // Get user's style and framework preferences. const preferences = await getUserPreferences(user.id) // Get personalized component version. const component = await getPersonalizedComponent(params.name, preferences) return NextResponse.json(component) }` ### Temporary Access Tokens Use expiring tokens for better security: Copy`interface TemporaryToken { token: string expiresAt: Date scope: string[] } async function validateTemporaryToken(token: string) { const tokenData = await getTokenData(token) if (!tokenData) return false if (new Date() > tokenData.expiresAt) return false return true }` Multi-Registry Authentication ----------------------------- With [namespaced registries](https://ui.shadcn.com/docs/registry/namespace) , you can set up multiple registries with different authentication: components.json Copy`{ "registries": { "@public": "https://public.company.com/{name}.json", "@internal": { "url": "https://internal.company.com/{name}.json", "headers": { "Authorization": "Bearer ${INTERNAL_TOKEN}" } }, "@premium": { "url": "https://premium.company.com/{name}.json", "headers": { "X-License-Key": "${LICENSE_KEY}" } } } }` This lets you: * Mix public and private registries * Use different authentication per registry * Organize components by access level Security Best Practices ----------------------- ### Use Environment Variables Never commit tokens to version control. Always use environment variables: .env.local Copy`REGISTRY_TOKEN=your_secret_token_here API_KEY=your_api_key_here` Then reference them in `components.json`: Copy`{ "registries": { "@private": { "url": "https://registry.company.com/{name}.json", "headers": { "Authorization": "Bearer ${REGISTRY_TOKEN}" } } } }` ### Use HTTPS Always use HTTPS URLs for registries to protect your tokens in transit: Copy`{ "@secure": "https://registry.company.com/{name}.json" // ✅ "@insecure": "http://registry.company.com/{name}.json" // ❌ }` ### Add Rate Limiting Protect your registry from abuse: Copy`import rateLimit from "express-rate-limit" const limiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 minutes max: 100, // limit each IP to 100 requests per windowMs }) app.use("/registry", limiter)` ### Rotate Tokens Change access tokens regularly: Copy`// Create new token with expiration. function generateToken() { const token = crypto.randomBytes(32).toString("hex") const expiresAt = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000) // 30 days. return { token, expiresAt } }` ### Log Access Track registry access for security and analytics: Copy`async function logAccess(request: Request, component: string, userId: string) { await db.accessLog.create({ timestamp: new Date(), userId, component, ip: request.ip, userAgent: request.headers["user-agent"], }) }` Testing Authentication ---------------------- Test your authenticated registry locally: Copy`# Test with curl. curl -H "Authorization: Bearer your_token" \ https://registry.company.com/button.json # Test with the CLI. REGISTRY_TOKEN=your_token npx shadcn@latest add @private/button` Error Handling -------------- The shadcn CLI handles authentication errors gracefully: * **401 Unauthorized**: Token is invalid or missing * **403 Forbidden**: Token lacks permission for this resource * **429 Too Many Requests**: Rate limit exceeded ### Custom Error Messages Your registry server can return custom error messages in the response body, and the CLI will display them to users: Copy`// Registry server returns custom error return NextResponse.json( { error: "Unauthorized", message: "Your subscription has expired. Please renew at company.com/billing", }, { status: 403 } )` The user will see: Copy`Your subscription has expired. Please renew at company.com/billing` This helps provide context-specific guidance: Copy``// Different error messages for different scenarios if (!token) { return NextResponse.json( { error: "Unauthorized", message: "Authentication required. Set REGISTRY_TOKEN in your .env.local file", }, { status: 401 } ) } if (isExpiredToken(token)) { return NextResponse.json( { error: "Unauthorized", message: "Token expired. Request a new token at company.com/tokens", }, { status: 401 } ) } if (!hasTeamAccess(token, component)) { return NextResponse.json( { error: "Forbidden", message: `Component '${component}' is restricted to the Design team`, }, { status: 403 } ) }`` Next Steps ---------- To set up authentication with multiple registries and advanced patterns, see the [Namespaced Registries](https://ui.shadcn.com/docs/registry/namespace) documentation. It covers: * Setting up multiple authenticated registries * Using different authentication per namespace * Cross-registry dependency resolution * Advanced authentication patterns [Namespaces](https://ui.shadcn.com/docs/registry/namespace) [Examples](https://ui.shadcn.com/docs/registry/examples) On This Page [Common Authentication Patterns](https://ui.shadcn.com/docs/registry/authentication#common-authentication-patterns) [Token-Based Authentication](https://ui.shadcn.com/docs/registry/authentication#token-based-authentication) [API Key Authentication](https://ui.shadcn.com/docs/registry/authentication#api-key-authentication) [Query Parameter Authentication](https://ui.shadcn.com/docs/registry/authentication#query-parameter-authentication) [Server-Side Implementation](https://ui.shadcn.com/docs/registry/authentication#server-side-implementation) [Next.js API Route Example](https://ui.shadcn.com/docs/registry/authentication#nextjs-api-route-example) [Express.js Example](https://ui.shadcn.com/docs/registry/authentication#expressjs-example) [Advanced Authentication Patterns](https://ui.shadcn.com/docs/registry/authentication#advanced-authentication-patterns) [Team-Based Access](https://ui.shadcn.com/docs/registry/authentication#team-based-access) [User-Personalized Registries](https://ui.shadcn.com/docs/registry/authentication#user-personalized-registries) [Temporary Access Tokens](https://ui.shadcn.com/docs/registry/authentication#temporary-access-tokens) [Multi-Registry Authentication](https://ui.shadcn.com/docs/registry/authentication#multi-registry-authentication) [Security Best Practices](https://ui.shadcn.com/docs/registry/authentication#security-best-practices) [Use Environment Variables](https://ui.shadcn.com/docs/registry/authentication#use-environment-variables) [Use HTTPS](https://ui.shadcn.com/docs/registry/authentication#use-https) [Add Rate Limiting](https://ui.shadcn.com/docs/registry/authentication#add-rate-limiting) [Rotate Tokens](https://ui.shadcn.com/docs/registry/authentication#rotate-tokens) [Log Access](https://ui.shadcn.com/docs/registry/authentication#log-access) [Testing Authentication](https://ui.shadcn.com/docs/registry/authentication#testing-authentication) [Error Handling](https://ui.shadcn.com/docs/registry/authentication#error-handling) [Custom Error Messages](https://ui.shadcn.com/docs/registry/authentication#custom-error-messages) [Next Steps](https://ui.shadcn.com/docs/registry/authentication#next-steps) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # Toggle Group - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) Toggle Group ============ Copy Page [Previous](https://ui.shadcn.com/docs/components/radix/toggle) [Next](https://ui.shadcn.com/docs/components/radix/tooltip) A set of two-state buttons that can be toggled on or off. [Radix UI](https://ui.shadcn.com/docs/components/radix/toggle-group) [Base UI](https://ui.shadcn.com/docs/components/base/toggle-group) Radix UI Copy import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group" import { Bold, Italic, Underline } from "lucide-react" View Code Installation ------------ CommandManual pnpmnpmyarnbun pnpm dlx shadcn@latest add toggle-group Copy Usage ----- Copy`import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group"` Copy`
` Examples -------- ### Outline Use `variant="outline"` for an outline style. AllMissed Copy import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group" export function ToggleGroupOutline() { View Code ### Size Use the `size` prop to change the size of the toggle group. TopBottomLeftRight TopBottomLeftRight Copy import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group" export function ToggleGroupSizes() { View Code ### Spacing Use `spacing` to add spacing between toggle group items. TopBottomLeftRight Copy import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group" export function ToggleGroupSpacing() { View Code ### Vertical Use `orientation="vertical"` for vertical toggle groups. Copy import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group" import { BoldIcon, ItalicIcon, UnderlineIcon } from "lucide-react" View Code ### Disabled Copy import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group" import { Bold, Italic, Underline } from "lucide-react" View Code ### Custom A custom toggle group example. Font Weight AaLightAaNormalAaMediumAaBold Use `font-normal` to set the font weight. Copy "use client" import * as React from "react" View Code RTL --- To enable RTL support in shadcn/ui, see the [RTL configuration guide](https://ui.shadcn.com/docs/rtl) . Arabic (العربية)▼Toggle قائمةشبكةبطاقات Copy "use client" import { View Code API Reference ------------- See the [Radix Toggle Group](https://www.radix-ui.com/docs/primitives/components/toggle-group#api-reference) documentation. [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) On This Page [Installation](https://ui.shadcn.com/docs/components/radix/toggle-group#installation) [Usage](https://ui.shadcn.com/docs/components/radix/toggle-group#usage) [Examples](https://ui.shadcn.com/docs/components/radix/toggle-group#examples) [Outline](https://ui.shadcn.com/docs/components/radix/toggle-group#outline) [Size](https://ui.shadcn.com/docs/components/radix/toggle-group#size) [Spacing](https://ui.shadcn.com/docs/components/radix/toggle-group#spacing) [Vertical](https://ui.shadcn.com/docs/components/radix/toggle-group#vertical) [Disabled](https://ui.shadcn.com/docs/components/radix/toggle-group#disabled) [Custom](https://ui.shadcn.com/docs/components/radix/toggle-group#custom) [RTL](https://ui.shadcn.com/docs/components/radix/toggle-group#rtl) [API Reference](https://ui.shadcn.com/docs/components/radix/toggle-group#api-reference) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # registry-item.json - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) registry-item.json ================== Copy Page [Previous](https://ui.shadcn.com/docs/registry/registry-json) Specification for registry items. The `registry-item.json` schema is used to define your custom registry items. registry-item.json Copy`{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "hello-world", "type": "registry:block", "title": "Hello World", "description": "A simple hello world component.", "registryDependencies": [ "button", "@acme/input-form", "https://example.com/r/foo" ], "dependencies": ["is-even@3.0.0", "motion"], "devDependencies": ["tw-animate-css"], "files": [ { "path": "registry/new-york/hello-world/hello-world.tsx", "type": "registry:component" }, { "path": "registry/new-york/hello-world/use-hello-world.ts", "type": "registry:hook" } ], "cssVars": { "theme": { "font-heading": "Poppins, sans-serif" }, "light": { "brand": "oklch(0.205 0.015 18)" }, "dark": { "brand": "oklch(0.205 0.015 18)" } } }` [See more examples](https://ui.shadcn.com/docs/registry/examples) Definitions ----------- You can see the JSON Schema for `registry-item.json` [here](https://ui.shadcn.com/schema/registry-item.json) . ### $schema The `$schema` property is used to specify the schema for the `registry-item.json` file. registry-item.json Copy`{ "$schema": "https://ui.shadcn.com/schema/registry-item.json" }` ### name The name of the item. This is used to identify the item in the registry. It should be unique for your registry. registry-item.json Copy`{ "name": "hello-world" }` ### title A human-readable title for your registry item. Keep it short and descriptive. registry-item.json Copy`{ "title": "Hello World" }` ### description A description of your registry item. This can be longer and more detailed than the `title`. registry-item.json Copy`{ "description": "A simple hello world component." }` ### type The `type` property is used to specify the type of your registry item. This is used to determine the type and target path of the item when resolved for a project. registry-item.json Copy`{ "type": "registry:block" }` The following types are supported: | Type | Description | | --- | --- | | `registry:base` | Use for entire design systems. | | `registry:block` | Use for complex components with multiple files. | | `registry:component` | Use for simple components. | | `registry:font` | Use for fonts. | | `registry:lib` | Use for lib and utils. | | `registry:hook` | Use for hooks. | | `registry:ui` | Use for UI components and single-file primitives. | | `registry:page` | Use for page or file-based routes. | | `registry:file` | Use for miscellaneous files. | | `registry:style` | Use for registry styles. eg. `new-york`. | | `registry:theme` | Use for themes. | | `registry:item` | Use for universal registry items. | ### author The `author` property is used to specify the author of the registry item. It can be unique to the registry item or the same as the author of the registry. registry-item.json Copy`{ "author": "John Doe A B C " }` ### dependencies The `dependencies` property is used to specify the dependencies of your registry item. This is for `npm` packages. Use `@version` to specify the version of your registry item. registry-item.json Copy`{ "dependencies": [ "@radix-ui/react-accordion", "zod", "lucide-react", "name@1.0.2" ] }` ### devDependencies The `devDependencies` property is used to specify the dev dependencies of your registry item. These are `npm` packages that are only needed during development. Use `@version` to specify the version of the package. registry-item.json Copy`{ "devDependencies": ["tw-animate-css", "name@1.2.0"] }` ### registryDependencies Used for registry dependencies. Can be names, namespaced or URLs. * For `shadcn/ui` registry items such as `button`, `input`, `select`, etc use the name eg. `['button', 'input', 'select']`. * For namespaced registry items such as `@acme` use the name eg. `['@acme/input-form']`. * For custom registry items use the URL of the registry item eg. `['https://example.com/r/hello-world.json']`. registry-item.json Copy`{ "registryDependencies": [ "button", "@acme/input-form", "https://example.com/r/editor.json" ] }` Note: The CLI will automatically resolve remote registry dependencies. ### files The `files` property is used to specify the files of your registry item. Each file has a `path`, `type` and `target` (optional) property. **The `target` property is required for `registry:page` and `registry:file` types.** registry-item.json Copy`{ "files": [ { "path": "registry/new-york/hello-world/page.tsx", "type": "registry:page", "target": "app/hello/page.tsx" }, { "path": "registry/new-york/hello-world/hello-world.tsx", "type": "registry:component" }, { "path": "registry/new-york/hello-world/use-hello-world.ts", "type": "registry:hook" }, { "path": "registry/new-york/hello-world/.env", "type": "registry:file", "target": "~/.env" } ] }` #### path The `path` property is used to specify the path to the file in your registry. This path is used by the build script to parse, transform and build the registry JSON payload. #### type The `type` property is used to specify the type of the file. See the [type](https://ui.shadcn.com/docs/registry/registry-item-json#type) section for more information. #### target The `target` property is used to indicate where the file should be placed in a project. This is optional and only required for `registry:page` and `registry:file` types. By default, the `shadcn` cli will read a project's `components.json` file to determine the target path. For some files, such as routes or config you can specify the target path manually. Use `~` to refer to the root of the project e.g `~/foo.config.js`. ### tailwind **DEPRECATED:** Use `cssVars.theme` instead for Tailwind v4 projects. The `tailwind` property is used for tailwind configuration such as `theme`, `plugins` and `content`. You can use the `tailwind.config` property to add colors, animations and plugins to your registry item. registry-item.json Copy`{ "tailwind": { "config": { "theme": { "extend": { "colors": { "brand": "hsl(var(--brand))" }, "keyframes": { "wiggle": { "0%, 100%": { "transform": "rotate(-3deg)" }, "50%": { "transform": "rotate(3deg)" } } }, "animation": { "wiggle": "wiggle 1s ease-in-out infinite" } } } } } }` ### cssVars Use to define CSS variables for your registry item. registry-item.json Copy`{ "cssVars": { "theme": { "font-heading": "Poppins, sans-serif" }, "light": { "brand": "20 14.3% 4.1%", "radius": "0.5rem" }, "dark": { "brand": "20 14.3% 4.1%" } } }` ### css Use `css` to add new rules to the project's CSS file eg. `@layer base`, `@layer components`, `@utility`, `@keyframes`, `@plugin`, etc. registry-item.json Copy`{ "css": { "@plugin @tailwindcss/typography": {}, "@plugin foo": {}, "@layer base": { "body": { "font-size": "var(--text-base)", "line-height": "1.5" } }, "@layer components": { "button": { "background-color": "var(--color-primary)", "color": "var(--color-white)" } }, "@utility text-magic": { "font-size": "var(--text-base)", "line-height": "1.5" }, "@keyframes wiggle": { "0%, 100%": { "transform": "rotate(-3deg)" }, "50%": { "transform": "rotate(3deg)" } } } }` ### envVars Use `envVars` to add environment variables to your registry item. registry-item.json Copy`{ "envVars": { "NEXT_PUBLIC_APP_URL": "http://localhost:4000", "DATABASE_URL": "postgresql://postgres:postgres@localhost:5432/postgres", "OPENAI_API_KEY": "" } }` Environment variables are added to the `.env.local` or `.env` file. Existing variables are not overwritten. **IMPORTANT:** Use `envVars` to add development or example variables. Do NOT use it to add production variables. ### font The `font` property is required for `registry:font` items. It configures the font family, provider, import name, CSS variable, and the npm package to install for non-Next.js projects. registry-item.json Copy`{ "font": { "family": "'Inter Variable', sans-serif", "provider": "google", "import": "Inter", "variable": "--font-sans", "subsets": ["latin"], "dependency": "@fontsource-variable/inter" } }` | Property | Type | Required | Description | | --- | --- | --- | --- | | `family` | `string` | Yes | The CSS font-family value. | | `provider` | `string` | Yes | The font provider. Currently only `google` is supported. | | `import` | `string` | Yes | The import name for the font from `next/font/google`. | | `variable` | `string` | Yes | The CSS variable name for the font (e.g., `--font-sans`, `--font-mono`). | | `weight` | `string[]` | No | Array of font weights to include. | | `subsets` | `string[]` | No | Array of font subsets to include. | | `selector` | `string` | No | CSS selector to apply the font to. Defaults to `html`. | | `dependency` | `string` | No | The npm package to install for non-Next.js projects (e.g., `@fontsource-variable/inter`). | ### docs Use `docs` to show custom documentation or message when installing your registry item via the CLI. registry-item.json Copy`{ "docs": "To get an OPENAI_API_KEY, sign up for an account at https://platform.openai.com." }` ### categories Use `categories` to organize your registry item. registry-item.json Copy`{ "categories": ["sidebar", "dashboard"] }` ### meta Use `meta` to add additional metadata to your registry item. You can add any key/value pair that you want to be available to the registry item. registry-item.json Copy`{ "meta": { "foo": "bar" } }` [registry.json](https://ui.shadcn.com/docs/registry/registry-json) On This Page [Definitions](https://ui.shadcn.com/docs/registry/registry-item-json#definitions) [$schema](https://ui.shadcn.com/docs/registry/registry-item-json#schema) [name](https://ui.shadcn.com/docs/registry/registry-item-json#name) [title](https://ui.shadcn.com/docs/registry/registry-item-json#title) [description](https://ui.shadcn.com/docs/registry/registry-item-json#description) [type](https://ui.shadcn.com/docs/registry/registry-item-json#type) [author](https://ui.shadcn.com/docs/registry/registry-item-json#author) [dependencies](https://ui.shadcn.com/docs/registry/registry-item-json#dependencies) [devDependencies](https://ui.shadcn.com/docs/registry/registry-item-json#devdependencies) [registryDependencies](https://ui.shadcn.com/docs/registry/registry-item-json#registrydependencies) [files](https://ui.shadcn.com/docs/registry/registry-item-json#files) [path](https://ui.shadcn.com/docs/registry/registry-item-json#path) [type](https://ui.shadcn.com/docs/registry/registry-item-json#type-1) [target](https://ui.shadcn.com/docs/registry/registry-item-json#target) [tailwind](https://ui.shadcn.com/docs/registry/registry-item-json#tailwind) [cssVars](https://ui.shadcn.com/docs/registry/registry-item-json#cssvars) [css](https://ui.shadcn.com/docs/registry/registry-item-json#css) [envVars](https://ui.shadcn.com/docs/registry/registry-item-json#envvars) [font](https://ui.shadcn.com/docs/registry/registry-item-json#font) [docs](https://ui.shadcn.com/docs/registry/registry-item-json#docs) [categories](https://ui.shadcn.com/docs/registry/registry-item-json#categories) [meta](https://ui.shadcn.com/docs/registry/registry-item-json#meta) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) --- # Dark Mode - shadcn/ui Sections * [Introduction](https://ui.shadcn.com/docs) * [Components](https://ui.shadcn.com/docs/components) * [Installation](https://ui.shadcn.com/docs/installation) * [Theming](https://ui.shadcn.com/docs/theming) * [CLI](https://ui.shadcn.com/docs/cli) * [RTL](https://ui.shadcn.com/docs/rtl) * [Skills](https://ui.shadcn.com/docs/skills) * [MCP Server](https://ui.shadcn.com/docs/mcp) * [Registry](https://ui.shadcn.com/docs/registry) * [Forms](https://ui.shadcn.com/docs/forms) * [Changelog](https://ui.shadcn.com/docs/changelog) Components * [Accordion](https://ui.shadcn.com/docs/components/radix/accordion) * [Alert](https://ui.shadcn.com/docs/components/radix/alert) * [Alert Dialog](https://ui.shadcn.com/docs/components/radix/alert-dialog) * [Aspect Ratio](https://ui.shadcn.com/docs/components/radix/aspect-ratio) * [Avatar](https://ui.shadcn.com/docs/components/radix/avatar) * [Badge](https://ui.shadcn.com/docs/components/radix/badge) * [Breadcrumb](https://ui.shadcn.com/docs/components/radix/breadcrumb) * [Button](https://ui.shadcn.com/docs/components/radix/button) * [Button Group](https://ui.shadcn.com/docs/components/radix/button-group) * [Calendar](https://ui.shadcn.com/docs/components/radix/calendar) * [Card](https://ui.shadcn.com/docs/components/radix/card) * [Carousel](https://ui.shadcn.com/docs/components/radix/carousel) * [Chart](https://ui.shadcn.com/docs/components/radix/chart) * [Checkbox](https://ui.shadcn.com/docs/components/radix/checkbox) * [Collapsible](https://ui.shadcn.com/docs/components/radix/collapsible) * [Combobox](https://ui.shadcn.com/docs/components/radix/combobox) * [Command](https://ui.shadcn.com/docs/components/radix/command) * [Context Menu](https://ui.shadcn.com/docs/components/radix/context-menu) * [Data Table](https://ui.shadcn.com/docs/components/radix/data-table) * [Date Picker](https://ui.shadcn.com/docs/components/radix/date-picker) * [Dialog](https://ui.shadcn.com/docs/components/radix/dialog) * [Direction](https://ui.shadcn.com/docs/components/radix/direction) * [Drawer](https://ui.shadcn.com/docs/components/radix/drawer) * [Dropdown Menu](https://ui.shadcn.com/docs/components/radix/dropdown-menu) * [Empty](https://ui.shadcn.com/docs/components/radix/empty) * [Field](https://ui.shadcn.com/docs/components/radix/field) * [Hover Card](https://ui.shadcn.com/docs/components/radix/hover-card) * [Input](https://ui.shadcn.com/docs/components/radix/input) * [Input Group](https://ui.shadcn.com/docs/components/radix/input-group) * [Input OTP](https://ui.shadcn.com/docs/components/radix/input-otp) * [Item](https://ui.shadcn.com/docs/components/radix/item) * [Kbd](https://ui.shadcn.com/docs/components/radix/kbd) * [Label](https://ui.shadcn.com/docs/components/radix/label) * [Menubar](https://ui.shadcn.com/docs/components/radix/menubar) * [Native Select](https://ui.shadcn.com/docs/components/radix/native-select) * [Navigation Menu](https://ui.shadcn.com/docs/components/radix/navigation-menu) * [Pagination](https://ui.shadcn.com/docs/components/radix/pagination) * [Popover](https://ui.shadcn.com/docs/components/radix/popover) * [Progress](https://ui.shadcn.com/docs/components/radix/progress) * [Radio Group](https://ui.shadcn.com/docs/components/radix/radio-group) * [Resizable](https://ui.shadcn.com/docs/components/radix/resizable) * [Scroll Area](https://ui.shadcn.com/docs/components/radix/scroll-area) * [Select](https://ui.shadcn.com/docs/components/radix/select) * [Separator](https://ui.shadcn.com/docs/components/radix/separator) * [Sheet](https://ui.shadcn.com/docs/components/radix/sheet) * [Sidebar](https://ui.shadcn.com/docs/components/radix/sidebar) * [Skeleton](https://ui.shadcn.com/docs/components/radix/skeleton) * [Slider](https://ui.shadcn.com/docs/components/radix/slider) * [Sonner](https://ui.shadcn.com/docs/components/radix/sonner) * [Spinner](https://ui.shadcn.com/docs/components/radix/spinner) * [Switch](https://ui.shadcn.com/docs/components/radix/switch) * [Table](https://ui.shadcn.com/docs/components/radix/table) * [Tabs](https://ui.shadcn.com/docs/components/radix/tabs) * [Textarea](https://ui.shadcn.com/docs/components/radix/textarea) * [Toast](https://ui.shadcn.com/docs/components/radix/toast) * [Toggle](https://ui.shadcn.com/docs/components/radix/toggle) * [Toggle Group](https://ui.shadcn.com/docs/components/radix/toggle-group) * [Tooltip](https://ui.shadcn.com/docs/components/radix/tooltip) * [Typography](https://ui.shadcn.com/docs/components/radix/typography) Get Started * [Installation](https://ui.shadcn.com/docs/installation) * [components.json](https://ui.shadcn.com/docs/components-json) * [Theming](https://ui.shadcn.com/docs/theming) * [Dark Mode](https://ui.shadcn.com/docs/dark-mode) * [CLI](https://ui.shadcn.com/docs/cli) * [Monorepo](https://ui.shadcn.com/docs/monorepo) * [Skills](https://ui.shadcn.com/docs/skills) * [Open in v0](https://ui.shadcn.com/docs/v0) * [JavaScript](https://ui.shadcn.com/docs/javascript) * [Figma](https://ui.shadcn.com/docs/figma) * [llms.txt](https://ui.shadcn.com/llms.txt) * [Legacy Docs](https://ui.shadcn.com/docs/legacy) Forms * [React Hook Form](https://ui.shadcn.com/docs/forms/react-hook-form) * [TanStack Form](https://ui.shadcn.com/docs/forms/tanstack-form) Registry * [Introduction](https://ui.shadcn.com/docs/registry) * [Getting Started](https://ui.shadcn.com/docs/registry/getting-started) * [Namespaces](https://ui.shadcn.com/docs/registry/namespace) * [Authentication](https://ui.shadcn.com/docs/registry/authentication) * [Examples](https://ui.shadcn.com/docs/registry/examples) * [MCP Server](https://ui.shadcn.com/docs/registry/mcp) * [Add a Registry](https://ui.shadcn.com/docs/registry/registry-index) * [Open in v0](https://ui.shadcn.com/docs/registry/open-in-v0) * [registry.json](https://ui.shadcn.com/docs/registry/registry-json) * [registry-item.json](https://ui.shadcn.com/docs/registry/registry-item-json) Dark Mode ========= Copy Page [Previous](https://ui.shadcn.com/docs/theming) [Next](https://ui.shadcn.com/docs/rtl) Adding dark mode to your site. [Next.js\ \ Next.js](https://ui.shadcn.com/docs/dark-mode/next) [Vite\ \ Vite](https://ui.shadcn.com/docs/dark-mode/vite) [Astro](https://ui.shadcn.com/docs/dark-mode/astro) [Remix\ \ Remix](https://ui.shadcn.com/docs/dark-mode/remix) [Theming](https://ui.shadcn.com/docs/theming) [RTL](https://ui.shadcn.com/docs/rtl) Deploy your shadcn/ui app on Vercel Trusted by OpenAI, Sonos, Adobe, and more. Vercel provides tools and infrastructure to deploy apps and features at scale. Deploy Now[Deploy to Vercel](https://vercel.com/new?utm_source=shadcn_site&utm_medium=web&utm_campaign=docs_cta_deploy_now_callout) ---