What's New
What's New
Version history for the Zetta spec and this showcase. Each release tags its token and component changes as new, changed, or resolved.
Accessibility remediation and a token-integrity pass
A correctness release with one real accessibility fix at its centre: white on the dark danger button measured 2.77:1 and failed AA outright. No new components. Every factual claim in the system was audited against its own token sources — contrast figures recomputed, undefined token references resolved, and provenance repaired.
- Changed Dark danger button remediation. White on
danger-solidmeasured 2.77:1 — failing AA, AA-large and the 3:1 non-text floor.on-dangerbecomes#450a0aand the dark ramp now lightens under interaction (#f87171→#fca5a5→#fecaca), so contrast improves as you interact: 5.84 / 8.51 / 11.16. See Button. - Changed The Light danger ramp shifts to
#dc2626→#b91c1c→#991b1b(white on the old#ef4444was AA-large only).dangerstays#ef4444and now deliberately differs fromdanger-solidin Light — the first is the icon token, the second the button fill. - Resolved About 30 incorrect contrast figures corrected across the themes and components.
inkoncanvaswas documented as both 21.0:1 and 20.4:1 — it is 18.92:1.brand-600on white was published as "5.12:1 (AA large)"; it is 1.67:1 and fails everything. - Resolved Seven undefined token references removed. A parallel z-index stack invented in the blanket spec is gone — the canonical scale is
navigation 200 · popup 400 · blanket 500 · modal 510 · flag 600 · tooltip 800, and there is no dedicated drawer layer: side drawers sharez-index.modalwith dialogs.duration-enter/duration-exitnever existed and are purged. - New Every table now requires a composition-settings control — column visibility, default sort, default page size, persisted per user. This applies to tables already shipped, not just new ones.
- Changed Inline edit gains a
triggerprop (buttonorhover); hover must also reveal on focus-visible and touch, never hover-only. - Note Carried forward unresolved: the brand shade ramp is non-monotonic (
brand-600is lighter thanbrand-500) so it must never be walked programmatically;status-icon-*holds hex in Light/Dark but Material Symbol names in Accessibility, so it cannot be typed uniformly. See Known gaps.
The palette collapses to three roles — BREAKING
The breaking release. Five palette roles become three: Secondary and Quaternary are deleted outright and Tertiary is renamed AI. Light Primary moves hue, both chart ramps are retuned and severed from the palette, and scrollbars become themed. Never distributed on its own — v1.6 is cumulative over it, so a v1.4 project upgrades straight to v1.6.
- Changed The palette collapses from five roles to three.
secondary(cyan) andquaternary(orange) are deleted;tertiaryis renamedaiwith its hex preserved and its purpose narrowed to AI, automation and premium. See Color. - Changed Repoint deleted roles by job, not by hue: informational contexts →
info; urgency and deadlines →warning; links →primary; a neutral button surface →surface-muted.surface-secondaryis a neutral and survives — it is not the deleted role. - Changed Light
primarydesaturates#4f46e5→#5155C6, andprimary-activemoves from .70 to .92 alpha. - Changed Charts are severed from the palette. Series 1–5 previously mapped to primary / secondary / tertiary / quaternary / chart-5; they now map to
chart-1…chart-5directly, and both ramps were fully retuned. This is a rewrite of the series assignment, not a re-hex. See Chart. - New A scrollbar foundation — three tokens per theme plus the cross-browser recipe, so scrollbars follow the theme instead of the OS. Guardrails grow 16 → 17.
- New Two new components: theme switcher and language switcher (77 total). Both are UI only — no i18n runtime, no theme-transition animation.
- Changed Buttons are 8px narrower —
paddingX20px → 16px on every variant; height stays 32px. Deleted alongside the roles:accent-foreground,logo.primary-color, thegray-*ramp andwhite. - Note The upstream release shipped no migration guidance — no rename table, no deprecation window. The
zetta-design-mdskill carries a designer-approved v1.4 → v1.6 guide; that is the authority for the upgrade path.
Full atomization — one file per component
A non-breaking expansion. The component library splits into one spec file per component (75 total), adds accordion, tabs, dropdown and the overlay / feedback / form families as standalone components, introduces tab surface tokens and a full 50–950 colour ramp, and gives the Accessibility theme a global keyboard and selected-state model.
- New The component library is fully atomized — 75 components, one per file, adding accordion, tabs, dropdown, and the overlay family (popover, hover-card, command-palette, context-menu) as standalone specs.
- New The form family splits into standalone specs — text / textarea / number inputs, combobox, multi-select, checkbox, radio, slider and OTP input, plus label and field wrappers.
- New New tab surface tokens (
surface-tab-bg/surface-tab-active) back the tab list and active tab. See Tabs. - New The colour foundation gains a full 50–950 shade spectrum for every palette role. See Color.
- New The Accessibility theme gains a global keyboard model and a selected-state visible-border rule across every interactive component.
- Changed Lozenge radius moves from a full pill to
rounded.base(8px) per spec review. - Note Non-breaking: no token-value or CTA changes. The five old combined files (form / control / navigation / overlay / feedback) were removed — every component is now standalone.
Off-white canvas + a first-class Accessibility theme
A non-breaking refinement. The Light theme moves to an off-white canvas, and the Accessibility theme graduates from a colour collapse to a fully specified high-contrast system — borders, fills, and icons now carry every cue that colour used to.
- Changed Light canvas shifts
#ffffff→#f8fafc(off-white) so white cards read as raised surfaces. Cards, headers and popovers stay#ffffff. See Color. - New Accessibility theme: a universal 1px white component border separates every bounded element from the black canvas (buttons, inputs, cards, badges, banners, lozenges, tabs, tables).
- New Fill-based button differentiation — where hues collapse to white/black, Primary keeps a white fill while Secondary / Outline / Danger take a black fill + white border; Danger prefixes an
erroricon. - New White selected / active border-highlights (
selected-border-*) replace fill changes — selected table row, active sidebar item, and active tab are marked by a 2px white accent. - New A status-icon + legend system (
status-icon-success/warning/danger/info/neutral) — every semantic component pairs an icon with its label, and a per-view legend block explains each icon in plain language. See it on Badge. - Note Non-breaking: no CTA, token-name, or component-API changes. The long tail of component a11y overrides (pickers, range, stepper, menus) is tracked for a follow-up pass.
Five-role palette — Brand steps back, Indigo leads
The major reskin. Lime Brand becomes identity-only; Indigo Primary is every CTA and interactive state. A new elevation system, 16 guardrails, and an expanded, Atlassian-style component set.
- Changed Brand Lime is now identity-only (logo, focus ring, spinner). Indigo
primary(#4f46e5) is every CTA, hover, active state, badge and in-chrome link. - New A five-role palette — Primary (indigo), Secondary (cyan), Tertiary (purple), Quaternary (orange) alongside Brand (lime). See Brand & principles.
- Changed A new elevation system replaces the flat shadow scale — surface tokens +
shadow-raised/shadow-overlay+ az-indexscale. Cards may now carryshadow-raised; Accessibility has no shadows. - Changed Guardrails grew 13 → 16 (Brand=identity, Primary=interaction, five-role hierarchy, motion respects
prefers-reduced-motion). See the guardrails. - New An expanded spec set with Atlassian-style names. The showcase adopts the new taxonomy — Modal (was Dialog), Menu (was Dropdown), Date picker (was Calendar) — with redirects from the old routes.
- Changed New tokens: spacing
2xs/md-lg/2xl, two new type roles, a responsive grid, and a motion keyframe library. - Note Still open: per-component motion mapping, chart structure, page-level empty / loading states, and RTL. See Known gaps.
Foundation locked, showcase launched
The documented baseline. Three themes share one foundation; ~70 components are specified across 13 files; this showcase makes all of it browsable.
- New This documentation & showcase site — 43 component reference pages, each with a live 3-theme preview, resolved spec, and a build-with-the-skill recipe.
- New The header component — top / horizontal navigation, previously a known gap.
- Changed
border-strongis now a neutral grey structural border (it was lime in ≤v0.5). Onlyborder-focusis lime. - Changed The
-softcolour aliases were folded back into*-bg/brand-bgin the themes. - Resolved Focus states and convention standardization for dropdown-item, sidebar-nav-item, pagination-item, accordion-trigger, toggle and table-row are present in the component files (the theme files’ "Deferred" prose is stale).
- Resolved The
controlconsolidation (toggle + switch) shipped. - Note Still open: per-component motion mapping, chart structure, page-level empty/loading states, z-index, and RTL. See Known gaps.