Resources
Known gaps
Where Zetta v1.6 is genuinely silent, build from the foundation tokens and the guardrails, and state your assumptions — don't invent a new token system. This is the consolidated, honest list of what the spec leaves open.
Genuinely unspecified
State assumptions and build conservatively from the foundation.
- A high-contrast light variant — the Accessibility theme is pure-black only. There is no light-background high-contrast option.
- Dyslexia-friendly and cognitive-accessibility options — no alternate typeface, line-spacing, or reading-mode provision.
- Localization and RTL — a language switcher component exists, but it is UI only: no mirroring rules, no bidirectional layout, no locale-specific type or number handling.
- Theme-transition animation — a theme switcher exists, but no transition between themes is specified. Swap instantly rather than inventing one.
- Motion application —
motiontokens (durations / easings) exist, but per-component mapping is incomplete, and the motion foundation and component files disagree in places. - Data-viz standards — chart colours exist (
chart-1…5+ greyscale in Accessibility), but chart-type / axis / tooltip / legend / empty-state specs do not. Use the ramp plus non-colour separation (pattern, dash, label) in Accessibility. - Page-level states — empty / loading / error states; form-validation UX; focus-trap (specified behaviourally for dialog / drawer, but not as component code).
- Governance documentation — review checklists and the contribution / versioning policy are out of scope for the spec itself.
Known issues carried into v1.6
Internal inconsistencies the spec ships with, each awaiting a design decision. These are not licence to improvise — work around them as described.
- The brand shade ramp is non-monotonic —
brand-600(#b6d600) is lighter thanbrand-500(#84cc16). Never walk the ramp programmatically; it is a supporting reference, not a perceptually uniform progression.{colors.brand}is the source of truth. status-icon-*holds two incompatible types — hex in Light and Dark, but Material Symbol glyph names in Accessibility. Any typed token pipeline breaks on theme switch, so never type this family uniformly across themes.- Retired roles still ship in the Accessibility theme — it still specifies
SecondaryandQuaternarybutton variants that v1.5 deleted. They are not built here. - Brand is still used for interactive state in a few component specs (
badge-primary,banner-announcement,icon-tile-brand,button-brand), which sits awkwardly beside guardrail 1.badge-primary's brand fill is correct — the token name is what will change. - Four untokenised
rgba()values remain in the badge, progress-indicator and table specs. - Source-of-truth conflicts — the motion Animation Library and the component motion map disagree (skeleton 400ms vs 1.5s), as do sidebar padding and the 1440px breakpoint across documents. Where v1.6 contradicts itself, the
zetta-design-mdskill carries the designer's rulings; build to the ruling.
Out of core by design
Product-specific concerns deliberately live in the consuming product's own token layer, never in Zetta core — so the system stays small and every project can extend it without forking.
- Business / domain colours — lifecycle states, incident / category types, report / section accents.
- Product compositions — card header / footer / action areas, session cards.
Intentional contrast trade-offs
Documented on purpose — don't "fix" these.
border-strongon canvas is intentionally below WCAG SC 1.4.11 (3:1) in the standard themes (Light ≈1.45:1, Dark ≈2.80:1) — chosen for visual density. The Accessibility theme overrides it to white for full compliance.- A few Dark semantic
-text-on--bgpairs are "moderate" (e.g.danger-text≈5.89:1) — accepted; AAA is enforced only in the Accessibility theme. - WCAG AAA is enforced exclusively in the Accessibility theme — Light / Dark contrast figures are informational.
Per-component gaps are also called out in each component's Known gaps section (see, for example, Chart and Calendar).