Components
Component
productdevbook/ui

Stable in React

Direction Provider

Enables right-to-left behavior for the Base UI components inside it.

Direction Provider renders nothing to look at; its usage is in the code.

Hover a part or use it. The code follows. ·
4Tests passing in React · 0 failing
0.3 KiBSize
Not measured yetMemory
Not measured yetSpeed
productdevbook and 7 upstream authors6 commits · last

Install#

One package per framework. Direction Provider's parts come from it; the anatomy tab at the top shows how they nest.

bun add @▢▢▢▢/react

One part. The example uses one of them; the data does not say which are required.

  • DirectionProviderEnables RTL behavior for Base UI components.

Examples#

The demo at the top is the one example this component has so far.

Styling and accessibility#

The parts ship no styles. Style their states with these attributes; the CSS tab at the top has a sheet. The same CSS works in all five frameworks.

Direction Provider has no data attributes or CSS variables.

Keyboard

DirectionProvider adds no keys; it flips the arrow keys of the components inside, so ArrowLeft moves forward in a right-to-left slider or toolbar.

Set for you

  • no attribute; set dir="rtl" on an element yourselfthe browser lays out and reads text right to left, and the components move the same wayDirectionProvider

API reference#

2 props across 1 parts, in React syntax, and className, style, render once for every part. Open a row to try it.

DirectionProvider · all parts

Use it in React#

What differs from the React API. Switch the framework at the top of the page.

@▢▢▢▢/react is the React 19 package. Its parts, props, data attributes and error messages are upstream Base UI's, and upstream's own tests run against it.

  • Parts

    Each component is its own entry point and exports one namespace named after it.

    import { Switch } from '@base-ui-next/react/switch'
    
    export function Example() {
      return (
        <Switch.Root>
          <Switch.Thumb />
        </Switch.Root>
      )
    }

    A part renders the element its API reference names, such as a <span> for Switch.Root.

  • Props and events

    Props and callbacks have upstream's names and signatures: onCheckedChange(checked, details), onOpenChange(open, details), onValueChange(value, details). details carries reason, event, cancel() and allowPropagation(). Native handlers are React's (onClick, onKeyDown), and event.preventBaseUIHandler() stops a part's own handler.

  • Styling

    className takes a string or a function (state) => string; style takes an object or a function (state) => object. The state's data-* attributes are on the element for CSS.

  • render

    render takes an element (render={<a href="/docs" />}) or a function (props, state) => element that spreads props on what it returns.

  • Refs

    ref reaches the part's element. Imperative handles are ref props, as upstream: inputRef, and actionsRef ({ validate } on Field and Form, { unmount, close } on Dialog).

  • Binding

    A part is controlled when its value prop (checked, open, value) is set, and uncontrolled with the default form (defaultChecked, defaultOpen, defaultValue). React has no two-way binding: pair the value with its change callback.

  • From @base-ui/react
    Change the import from @base-ui/react/<component> to @▢▢▢▢/react/<component>.
  • From @base-ui/react
    Nothing else changes: props, parts, data attributes and errors are the same.