Lane 0, first PR: the design system's foundation — tokens, theme, icons, the first components, /design (#364) #739
Loading…
Reference in a new issue
No description provided.
Delete branch "build/lane0-foundation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Lane 0 of the v4.5.0 build (
docs/design/v4.5.0-build-plan.md§3), first PR of the series. Nothing in the app uses the library yet; main is unchanged for a person.src/ui/tokens.css: Lapis Table's palette, light and dark, the type steps, the spacing, the radii and the faces, copied from the prototype's kit so the app and the drawings share one source. Table mode remaps the paper and ink tokens on its subtree.data-modeon<html>(theme.js), set before first paint bytheme-init.jsand byuseThemeonce React runs; the olddarkclass is kept in step until the last page written against it is rebuilt. Tailwind'sdarkvariant is defined against the attribute, and the tokens reach utilities through@theme inline(bg-paper-raised,text-ink-soft,font-display…).Icon: the sixty-seven icons as one component, frompaths.jsgenerated out of the prototype'sicons.js(two layers, rendered by the tokens; nodangerouslySetInnerHTML).Button(four weights;busy; a disabled control sayswhy),Banner(four kinds; D12's tier one is a quiet banner with Undo),Stop(D65),Busy(with the time so far),Modal(D12's tiers two and three on<dialog>),SectionBoundary(an error never destroys rendered content),Target(D36),useAsync,useLeaveGuard(D22). Each with its states and a test.README.mdcarries the conventions.base.cssis scoped to.qb, the class the new shell and/designput on their root, so the old pages keep their own look until replaced (the rollout rule)./design: every component in every state, collected fromsrc/ui/*/states.jsx, in both themes and Table mode; dev build only (the route is not mounted in production). Its test fails if any state throws.?mode=and?table=pick the starting state for a headless render check.Lint:
eslint-plugin-jsx-a11yat error on the library and the reference page, at warn on the pages not yet rebuilt (WCAG 2.2 AA, #367). Its ESLint peer range stops at 9; the flat config works on ESLint 10, so an npm override satisfies the peer with the project's ESLint.Render-checked at
/designin light, dark and Table mode; 937 tests pass; lint clean; build green.Next in the series: the form controls, the content pieces (cards, lists, tags, meter, the person disc),
SaveState,Menu,Tabs, then the shell components.🤖 Generated with Claude Code