# Direction

A provider component that sets the text direction for your application.

## Installation

```bash
npx shadcn@latest add https://reactdocs.canceydejean.dev/r/direction.json
```

[Registry JSON](https://reactdocs.canceydejean.dev/r/direction.json)

## Preview

```tsx
import { useState } from "react";

import { Button } from "@/components/ui/button";

import { DirectionProvider, useDirection, type TextDirection } from "@/components/ui/direction/direction";

function DirectionReadout() {
  const direction = useDirection();

  return (
    <div
      dir={direction}
      className="w-full max-w-sm rounded-lg border bg-card p-4 text-card-foreground shadow-sm"
    >
      <p className="text-sm font-medium">{direction === "rtl" ? "مرحباً" : "Hello"}</p>
      <p className="mt-1 text-sm text-muted-foreground">
        Current direction: <span className="font-mono">{direction}</span>
      </p>
    </div>
  );
}

export function Preview() {
  const [direction, setDirection] = useState<TextDirection>("ltr");

  return (
    <div className="flex flex-col items-start gap-3">
      <Button
        variant="outline"
        size="sm"
        onClick={() => setDirection((current) => (current === "ltr" ? "rtl" : "ltr"))}
      >
        Toggle {direction === "ltr" ? "RTL" : "LTR"}
      </Button>
      <DirectionProvider direction={direction}>
        <DirectionReadout />
      </DirectionProvider>
    </div>
  );
}
```


## Source

### direction.tsx

```tsx
"use client";

export {
  DirectionProvider,
  useDirection,
  type DirectionProviderProps,
  type TextDirection,
} from "@base-ui/react/direction-provider";
```



## Usage

Sets text direction (`ltr` or `rtl`) for Base UI components. Essential for right-to-left languages
such as Arabic, Hebrew, and Persian. Built on
[Base UI Direction Provider](https://base-ui.com/react/utils/direction-provider). Also set
`dir` on the document root for browser layout.

```tsx
import { DirectionProvider } from "@/components/direction/direction";

<html dir="rtl">
  <body>
    <DirectionProvider direction="rtl">
      {/* Your app content */}
    </DirectionProvider>
  </body>
</html>;
```

### useDirection

```tsx
import { useDirection } from "@/components/ui/direction";

export function Example() {
  return <div>Current direction: {useDirection()}</div>;
}
```

