- Accordion
- Alert
- Alert Dialog
- Aspect Ratio
- Avatar
- Badge
- Breadcrumb
- Button
- Button Group
- Calendar
- Card
- Carousel
- Chart
- Checkbox
- Collapsible
- Combobox
- Command
- Context Menu
- Data Table
- Date Picker
- Dialog
- Direction
- Drawer
- Dropdown Menu
- Empty
- Field
- Hover Card
- Input
- Input Group
- Input OTP
- Item
- Kbd
- Label
- Menubar
- Native Select
- Navigation Menu
- Pagination
- Popover
- Progress
- Radio Group
- Resizable
- Scroll Area
- Select
- Separator
- Sheet
- Sidebar
- Skeleton
- Slider
- Sonner
- Spinner
- Switch
- Table
- Tabs
- Textarea
- Toast
- Toggle
- Toggle Group
- Tooltip
- Typography
January 2026 - RTL Support
The shadcn CLI now supports RTL (right-to-left) layouts by automatically converting physical CSS classes to logical equivalents.
shadcn/ui now has first-class support for right-to-left (RTL) layouts. Your components automatically adapt for languages like Arabic, Hebrew, and Persian.
This works with the shadcn/ui components as well as any component distributed on the shadcn registry.
"use client"
import * as React from "react"Our approach to RTL
Traditionally, component libraries that support RTL ship with logical classes baked in. This means everyone has to work with classes like ms-4 and start-2, even if they're only building for LTR layouts.
We took a different approach. The shadcn CLI transforms classes at install time, so you only see logical classes when you actually need them. If you're not building for RTL, you work with familiar classes like ml-4 and left-2. When you enable RTL, the CLI handles the conversion for you.
You don't have to learn RTL until you need it.
How it works
When you add components with rtl: true set in your components.json, the CLI automatically converts physical CSS classes like ml-4 and text-left to their logical equivalents like ms-4 and text-start.
- Physical positioning classes like
left-*andright-*becomestart-*andend-*. - Margin and padding classes like
ml-*andpr-*becomems-*andpe-*. - Text alignment classes like
text-leftbecometext-start. - Directional props are updated to use logical values.
- Supported icons are automatically flipped using
rtl:rotate-180. - Animations like
slide-in-from-leftbecomeslide-in-from-start.
RTL examples for every component
We've added RTL examples for every component. You'll find live previews and code on each component page.
"use client"
import * as React from "react"CLI updates
New projects: Use the --rtl flag with init or create to enable RTL from the start.
pnpm dlx shadcn@latest init --rtl
pnpm dlx shadcn@latest create --rtl
Existing projects: Migrate your components with the migrate rtl command.
pnpm dlx shadcn@latest migrate rtl
This transforms all components in your ui directory to use logical classes. You can also pass a specific path or glob pattern.
Try it out
Click the link below to open a Next.js project with RTL support in v0.