- 手风琴 (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)
- OTP 输入框 (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)
shadcn/ui 组件对从右至左 (RTL) 布局提供了一流的支持。文本对齐、定位和方向样式会自动适配阿拉伯语、希伯来语和波斯语等语言。
当你安装组件时,CLI 会自动将物理定位类转换为逻辑等效类,因此你的组件可以在 LTR(从左至右)和 RTL 上下文中无缝工作。
开始使用
选择你的框架以开始使用 RTL 支持。
工作原理
当你在 components.json 中设置 rtl: true 并添加组件时,shadcn CLI 会自动转换类和属性,使其兼容 RTL。
- 像
left-*和right-*这样的物理定位类会被转换为逻辑等效类,例如start-*和end-*。 - 方向性 Props 会更新为使用逻辑值。
- 文本对齐和间距类也会相应进行调整。
- 支持的图标会使用
rtl:rotate-180自动翻转。
试一试
点击下方链接,在 v0 中打开一个支持 RTL 的 Next.js 项目。
支持的样式
通过 CLI 进行的自动 RTL 转换仅适用于使用 shadcn create 并结合新样式(base-nova、radix-nova 等)创建的项目。
对于其他样式,请参阅迁移指南。
字体建议
为了获得最佳的 RTL 体验,我们建议使用对目标语言有良好支持的字体。Noto 是一个非常棒的字体系列,它与 Inter 和 Geist 搭配得很好。
有关安装和配置 RTL 字体的详细信息,请参阅“入门”下的框架 RTL 指南。
动画
CLI 还能处理动画类,自动将物理方向动画转换为它们的逻辑等效项。例如,slide-in-from-right 会变为 slide-in-from-end。
这确保了下拉菜单、弹出窗口和工具提示等动画能根据文档的文本方向向正确的方向移动。
关于 tw-animate-css 的说明
tw-animate-css 库有一个已知问题,即逻辑滑动工具类无法按预期工作。目前,请确保将 dir 属性传递给 portal 元素。
<Popover>
<PopoverTrigger>Open</PopoverTrigger>
<PopoverContent dir="rtl">
<div>Content</div>
</PopoverContent>
</Popover><Tooltip>
<TooltipTrigger>Open</TooltipTrigger>
<TooltipContent dir="rtl">
<div>Content</div>
</TooltipContent>
</Tooltip>迁移现有组件
如果你在启用 RTL 之前安装了现有组件,可以通过 CLI 进行迁移,如下所示:
运行迁移命令
pnpm dlx shadcn@latest migrate rtl [path]
[path] 接受一个路径或 glob 模式进行迁移。如果不提供路径,它将迁移 ui 目录中的所有文件。
手动迁移(可选)
以下组件不会被 CLI 自动迁移。请遵循每个组件的 RTL 支持章节进行手动迁移。
迁移图标
某些图标(如 ArrowRightIcon 或 ChevronLeftIcon)可能需要 rtl:rotate-180 类才能正确翻转。将 rtl:rotate-180 类添加到图标组件即可正确翻转。
<ArrowRightIcon className="rtl:rotate-180" />添加方向组件
将方向组件添加到你的项目中。
pnpm dlx shadcn@latest add direction
添加 DirectionProvider
有关如何将 DirectionProvider 组件添加到你的项目的详细信息,请遵循你的框架文档。
请参阅入门部分,了解如何将 DirectionProvider 组件添加到你的项目中。