Developer preview. Vela, Facet, and Quire are pre-release and in active development — syntax, APIs, and availability may change, and they are not yet generally available.
SStretch Dev Docs
Facet

RTL and Internationalization

Author layout with logical properties so direction changes do not require separate utility sets.

Facet's source docs describe RTL support as "logical-property-only" authoring. The utility families ps and pe map to logical padding start and end, so they flip under dir="rtl".

Logical spacing utilities

The source HTML example includes:

<div class="ps-inset-lg pe-inset-sm fg-ink-muted">Logical padding (start/end) -- flips automatically in RTL.</div>

Use logical utilities for direction-sensitive spacing:

  • ps-*: padding inline start
  • pe-*: padding inline end
  • px-*: padding inline
  • py-*: padding block

The spec states that physical left and right usage is a lint error in Facet's logical-property model.

Direction switching

Direction is standard HTML. The source mode-toggle sketch uses:

document.documentElement.dir = document.documentElement.dir === "rtl" ? "ltr" : "rtl";

No separate RTL token graph is shown in the sources. Direction-sensitive behavior comes from logical CSS properties and linting, not from duplicated ltr and rtl modes.

Lint guardrail

The design notes map RTL enforcement to:

  • fir.mjs for logical ps and pe families
  • lint.mjs for logical-property-only linting
  • facet check for authored-code lint

Run:

facet check tokens/app.resolver.json

Internationalization scope

The sources support RTL layout direction. They do not describe locale formatting, message catalogs, translation extraction, bidirectional text isolation helpers, plural rules, or date/number formatting APIs. Keep those responsibilities in your application i18n layer unless future Facet sources add them.