- Accordion
- Alert
- Alert Dialog
- Aspect Ratio
- Attachment
- Avatar
- Badge
- Breadcrumb
- Bubble
- 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
- Marker
- Menubar
- Message
- Message Scroller
- Native Select
- Navigation Menu
- Pagination
- Popover
- Progress
- Questionnaire
- Radio Group
- Resizable
- Scroll Area
- Select
- Separator
- Sheet
- Sidebar
- Skeleton
- Slider
- 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 変換は、新しいスタイル (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 プロパティをポータル要素に渡してください。
<Popover>
<PopoverTrigger>開く</PopoverTrigger>
<PopoverContent dir="rtl">
<div>コンテンツ</div>
</PopoverContent>
</Popover><Tooltip>
<TooltipTrigger>開く</TooltipTrigger>
<TooltipContent dir="rtl">
<div>コンテンツ</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" />Direction コンポーネントを追加する#
方向コンポーネントをプロジェクトに追加します。
pnpm dlx shadcn@latest add direction
DirectionProvider の追加#
DirectionProvider コンポーネントをプロジェクトに追加する方法の詳細については、フレームワークのドキュメントに従ってください。
プロジェクトに DirectionProvider コンポーネントを追加する方法については、始めるを参照してください。