جهت
یک ارائهدهندهٔ زمینه که اجزا را بین راستبهچپ و چپبهراست جابهجا میکند تا منوها، اسلایدرها و تبها در زبانهای عربی، عبری و فارسی بهدرستی آینهوار نمایش داده شوند.
کامپوننت DirectionProvider برای تنظیم جهت متن (ltr یا rtl) برنامهٔ شما استفاده میشود. این برای پشتیبانی از زبانهای راستبهچپ مانند عربی، عبری و فارسی ضروری است.
در اینجا یک پیشنمایش از کامپوننت در حالت RTL آمده است. برای تغییر زبان از انتخابگر زبان استفاده کنید. برای دیدن نمونههای بیشتر، به دنبال بخش RTL در صفحههای کامپوننتها بگردید.
یکبار دور درختتان بپیچیدش تا هر کامپوننت جهتآگاه — منوی dropdown، slider، tab، tooltip — جهت را از React context بخواند نه از بوییدن DOM. بر پایهٔ utilityِ Base UI Direction Provider؛ چیزی رندر نمیکند و استایل خودش ندارد — حاشیهها و سایههای نئوبروتالیستی در کامپوننتهایی هستند که هدایت میکند.
برای این موارد از آن استفاده کنید:
- اپهای عربی، عبری یا فارسی — ناوبری کلید جهت، تراز پاپآپ و رفتار slider با جهت خواندن برمیگردند.
- تعویضگر locale — وقتی کاربر زبان را عوض میکند،
directionprovider را همراه باdirروی<html>عوض کنید. - صفحات mixed-direction — یک provider دور بلوک RTL (فرم جاسازیشده، نقلقول) داخل اپ عمدتاً LTR تو در تو کنید.
نصب#
pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/direction.jsonnpx shadcn@latest add https://neobrutalism.com/r/base/direction.jsonyarn dlx shadcn@latest add https://neobrutalism.com/r/base/direction.jsonbunx --bun shadcn@latest add https://neobrutalism.com/r/base/direction.json
وابستگیهای زیر را نصب کنید:
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
کد زیر را کپی کرده و در پروژهٔ خود جایگذاری کنید.
"use client"
import * as React from "react"
import { Direction } from "radix-ui"
function DirectionProvider({
dir,
direction,
children,
}: React.ComponentProps<typeof Direction.DirectionProvider> & {
direction?: React.ComponentProps<typeof Direction.DirectionProvider>["dir"]
}) {
return (
<Direction.DirectionProvider dir={direction ?? dir}>
{children}
</Direction.DirectionProvider>
)
}
const useDirection = Direction.useDirection
export { DirectionProvider, useDirection }
مسیرهای import را مطابق با پیکربندی پروژهٔ خود بهروزرسانی کنید.
استفاده#
import { DirectionProvider } from "@/components/ui/direction"<html dir="rtl">
<body>
<DirectionProvider direction="rtl">
{/* Your app content */}
</DirectionProvider>
</body>
</html>useDirection#
هوک useDirection برای دریافت جهت فعلی برنامه استفاده میشود.
import { useDirection } from "@/components/ui/direction"
function MyComponent() {
const direction = useDirection()
return <div>Current direction: {direction}</div>
}دسترسیپذیری#
DirectionProvider فقط منطق کامپوننت را هدایت میکند — هرگز ویژگی dir را تنظیم نمیکند. همیشه dir را روی <html> (یا عنصر wrapper) هم بگذارید: مرورگرها، صفحهخوانها و ویژگیهای منطقی CSS جهت را از attributeِ DOM میگیرند نه از React context. همگام نگه داشتن این دو است که صفحهٔ RTL هم درست رندر شود هم درست خوانده شود.