Warren UI

Changelog

Release history for Warren UI.

0.13.1 — 2026-08-23

Impeccable polish over the themed surfaces: shiki code blocks legible on dark canvases (per-[data-theme] dark span palettes), fumadocs chrome re-pinned square, pre-paint restore moved into <body> (kills the React console trio), custom-themes example isolated with target={null}, dead sun/moon toggle replaced by the real ThemeSelect in the sidebar footer and home header, cross-tab storage sync (+2 tests), jade success re-hued away from primary, grid-dot ink lifted on green-neon/dracula, copy chip solidified, Caps-Label scale codified in DESIGN.md.

0.13.0 — 2026-08-23

Theme support: dark, jade, green-neon, and dracula join the parchment light palette as token-for-token [data-theme] override blocks in warren-base (dot-grid ink is now the --grid-dot token). New @warren/theme-select component applies a theme with optional localStorage persistence; the docs site ships it in the demo header and nav with pre-paint restore, and the Text-Grade law is enforced per theme by a unit gate.

0.3.0 — 2026-08-20

Impeccable critique round: the mono/tabular sweep, the micro-feedback pass, and the completed soft-tone token set close the DESIGN.md conformance gaps surfaced by the first heuristic audit; the five core mission-console primitives ship (Tooltip, Popover, Toast, Dialog, Command); and the docs homepage now leads with a live montage instead of prose.

New primitives

  • Tooltip — hover/focus anchor popover for detail text.
  • PopoverPARAMS-style anchored panel with keyboard dismissal.
  • Toast — spike-style transient status announcement.
  • DialogSYSTEM modal with focus trap and Escape close.
  • Command — Ctrl+K palette for dense-keyboard navigation.
  • All five wired into the demo (Ctrl+K palette, SYSTEM dialog, PARAMS popover, spike toast) and documented on their own docs pages (41 pages total).

Design conformance (from the critique)

  • Mono sweepfont-mono added where consumers rendered sans: stat label, ledger item label + footer, table header.
  • Tabular sweeptabular-nums added to ledger counts, table cells, log-list timestamps, bar-chart tip values, stepper indices, badge base.
  • Micro-feedback pass — button active: press states, checkbox/switch/native-select hover borders, non-danger alerts role="status", field error aria-live="polite".
  • Token completion--primary-pale + per-tone *-soft fills codified in globals.css; the heatmap/sparkline inline color-mix hacks now reference tokens.
  • Switch — thumb slides via translate-x + transition-transform (toggle, not data).

QA & distribution

  • Smoke gate hardened to shadcn add -y -o — all 36 registry items install and the consumer build passes.
  • 374 tests green across 49 files; 41 docs pages.

0.2.0 — 2026-08-20

Registry: 16 shadcn primitives + the shared @warren/tone item shipped, and the docs migrated from Storybook to Fumadocs (Next.js 16).

Accessibility

  • Tabs — WAI-ARIA roving keyboard navigation: Arrow keys wrap between tabs with automatic activation, Home/End jump to the ends; only the active tab stays in the tab order.
  • CellGrid — interactive cells (onCellClick) render as real <button>s with aria-label/aria-pressed instead of aria-hidden spans.
  • Alertrole="alert" now applies only to the danger variant; other variants are plain static content.
  • ProgressRail — progress mode exposes role="progressbar" with aria-valuenow (0–1); dots are aria-hidden because the role carries the value.
  • Button — tone-variant hovers flatten to the neutral muted well (was sub-AA on success/warning/primary), keeping the text-grade label.

API additions

  • PanelheadingLevel?: 1 | 2 | 3 (default 2) for the title heading.
  • Tabslabel?: string accessible name for the tablist (default "tabs").
  • Progresslabel?: string accessible name (default "progress").
  • ProgressRaillabel?: string accessible name for the progress gauge.
  • NativeSelect — wrapper is w-full; the <select> fills it, so consumer w-full sizing works.
  • Tablebordered?: boolean adds the 2px ink outer frame.
  • Input / Textareacaps?: boolean (default true) controls the forced uppercase display; set false for case-sensitive data entry.
  • FielddescriptionId?: string wires the hint/error to a control's aria-describedby.

Docs & spec

  • Docs pages document every new API and the shared helpers (sparkline.points(), bar-chart.scale()), plus the CellStatus type table.
  • Added CHANGELOG.md (this page) and a Changelog entry to the docs nav.
  • DESIGN.md literals reconciled with the implementation: badge-live dot is 6px, the progress-rail gate is 10px.
  • Dark mode decision documented: single light token set by design; consumers override tokens.

288 tests passing.

On this page