What it governs
Where things sit on the page and how that changes with viewport width. Two mechanisms — breakpoints and a 12-column grid — and no tokens of its own.Vocabulary
Sourced from Invoca’s design-token naming specification, confirmed by its owner as the
baseline the design language is being built on. This is the vocabulary of record — not
inferred from token names.
Breakpoints
Breakpoints are min-width: a rule atmd applies at 900px and above. Titan is a
desktop-first internal product, so in practice most surfaces live at lg and xl, and
xs/sm are rarely exercised. The values are in
Token reference below — see
Open issues for how they
were arrived at and how they relate to the naming specification.
The grid
A 12-column flexbox grid, driven by per-breakpoint span props.Choosing a layout approach
Token reference
Titan defines no grid specification — no columns-per-breakpoint table, no gutter scale, no page margin scale. See TITAN-DIV-08.There are no layout tokens. Breakpoints are not part of the token surface, so they are
not reachable via
$token, theme.vars.tokens[…], or var(--titan-tokens-…). Nothing
about layout is currently expressible as a token.Constraints
Accessibility
- Reflow to 320px without horizontal scrolling is the binding requirement (WCAG 2.2 AA). It is equivalent to a desktop page at 400% zoom, which is how low-vision users actually read — not on a phone. A desktop-only product still has to meet it.
- Visual order must match DOM order. CSS
order,row-reverse, and grid placement can reorder content visually while leaving keyboard and screen-reader order unchanged. The result is a focus ring that jumps around the screen. If the visual order is right, fix the DOM. - Do not hide content at small viewports.
display: noneatxsremoves it for everyone, including the zoomed desktop user who is not on a phone. - Text must survive 200% zoom without clipping. Fixed-height containers around wrapping text are the usual failure.
- Container queries do not change any of the above — they change which layout applies, not whether it must reflow.
Known issues
Layout & grid: open issues
Divergences, open decisions, and undocumented gaps for Layout & grid.
Related
A generated map of which components consume which foundation does not exist yet.Why it works this way
Titan does not decide page layout, and that is a real position — though currently an undocumented one. The system supplies components and the space between them; where regions sit belongs to the View tier. That separation is what lets a Button work identically in a wizard and a dashboard. The cost is that until Views is written, the most consequential layer of any screen has no documentation at all. An agent asked to build a settings page makes a View-level decision first and a Component-level decision last, and today only the second has an answer. Breakpoints are inherited because Titan is desktop-first internal software. Most surfaces render atlg and xl on a monitor the user cannot resize much. Spending the
maintenance budget on validating phone breakpoints for a product used at a desk would buy
very little — but that reasoning is inferred from usage, not recorded anywhere.