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 startpe-*: padding inline endpx-*: padding inlinepy-*: 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.mjsfor logicalpsandpefamilieslint.mjsfor logical-property-only lintingfacet checkfor 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.