Skip to content
Components / Patterns

Auth layout

The sign-in page: brand, a card for the form, and an aside for the storm.

@fabrials/ui
Loading state
Fabrials

Sign in

One account for fabrials.com, ai.fabrials.com and the admin console.

Installation

  1. Import the control from @fabrials/ui, after setting the app up.

    TypeScript
    import { AuthLayout } from "@fabrials/ui";

API reference

Prop / exportTypeDescription
brand / title / descriptionReactNodeWhat the person signs in to.
actionsReactNodeA corner control (appearance and language). At the inline end of the top edge, after the card in the DOM, so the first tab stop is the sign-in action.
alignauto | start | centerauto follows DESIGN.md: with an aside the card anchors to the inline start of its column from 1024 px, without one it centres. start anchors it at every width.
asideReactNodeShown beside the card on wide screens; put a DitherScene variant="full" in it.
footerReactNodeWhat the session can and cannot do.
asmain | divThe element of the page's column. main (the default) makes the sign-in page its own landmark, with the card, the footer and the corner inside it and the aside beside it. Pass div where the host already renders a <main> around the layout: two are invalid.
id / aria-* / tabIndexmain propsEvery other prop goes to the column, the landmark: the id a skip link targets, an aria-label, tabIndex -1. className stays on the layout's root.

Behavior

The page is a main landmark by default (0.9); the aside is a positioning context whose surface the dither fades into.

Accessibility

Keyboard and contrast
Keep visible labels, keyboard focus and status announcements when customizing. These components inherit your theme; maintain sufficient contrast in both color modes. The preview is keyboard operable.