Yön
Bileşenleri soldan sağa (LTR) ve sağdan sola (RTL) yön arasında değiştiren bir bağlam sağlayıcı; böylece menüler, kaydırma çubukları ve sekmeler Arapça, İbranice ve Farsça dillerinde doğru şekilde yansıtılır.
DirectionProvider bileşeni, uygulamanızın metin yönünü (ltr veya rtl) ayarlamak için kullanılır. Bu, Arapça, İbranice ve Farsça gibi sağdan sola yazılan dilleri desteklemek için gereklidir.
İşte bileşenin RTL modundaki bir önizlemesi. Dili değiştirmek için dil seçiciyi kullanın. Daha fazla örnek görmek için bileşen sayfalarındaki RTL bölümüne bakın.
Uygulama ağacınızı bir kez bu bileşenle sarın; yön bilgisine duyarlı her bileşen — açılır menüler, kaydırıcılar, sekmeler, ipuçları — yönü DOM'u yoklamak yerine React context'inden okur. Base UI Direction Provider yardımcı aracı üzerine kuruludur; kendisi hiçbir şey işlemez ve kendine ait bir stille gelmez — neobrütalist kenarlıklar ve gölgeler, yönlendirdiği bileşenlerdedir.
Şu durumlarda tercih edin:
- Arapça, İbranice veya Farsça uygulamalar — ok tuşlarıyla gezinme, açılır pencere hizalaması ve kaydırıcı davranışı okuma yönüyle birlikte tersine döner.
- Dil değiştirici — kullanıcı dili değiştirdiğinde sağlayıcının
directiondeğerini<html>üzerindekidirözniteliğiyle birlikte güncelleyin. - Karışık yönlü sayfalar — soldan sağa (LTR) bir uygulamanın içindeki sağdan sola (RTL) bir bloğu (gömülü bir form, alıntılanan içerik) ayrı bir sağlayıcıyla sarın.
Kurulum#
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
Aşağıdaki bağımlılıkları yükleyin:
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
Aşağıdaki kodu kopyalayıp projenize yapıştırın.
"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 }
İçe aktarma yollarını proje kurulumunuza uyacak şekilde güncelleyin.
Kullanım#
import { DirectionProvider } from "@/components/ui/direction"<html dir="rtl">
<body>
<DirectionProvider direction="rtl">
{/* Your app content */}
</DirectionProvider>
</body>
</html>useDirection#
useDirection hook'u, uygulamanın geçerli yönünü almak için kullanılır.
import { useDirection } from "@/components/ui/direction"
function MyComponent() {
const direction = useDirection()
return <div>Current direction: {direction}</div>
}Erişilebilirlik#
DirectionProvider yalnızca bileşen mantığını yönlendirir — dir özniteliğini hiçbir zaman ayarlamaz. dir özniteliğini her zaman <html> (veya sarmalayan öğe) üzerinde de ayarlayın: tarayıcılar, ekran okuyucular ve CSS mantıksal özellikleri yönü React context'inden değil, DOM özniteliğinden çözümler. Bir RTL sayfasının hem doğru görüntülenmesini hem de doğru okunmasını sağlayan şey, bu ikisinin eşzamanlı tutulmasıdır.