docs-site: one visual system, richer pages and automatic dark theme - #38
Merged
Merged
Conversation
…Heading, ChipNav, NumberedSteps, StatTile, Sources, Section) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Design system: semantic tokens (surface, band, link, accent, focus, text scale, pill radius, card shadow) and shared primitives (Button, Card, SectionHeading, Section, ChipNav, NumberedSteps, StatTile/FactStat, Sources, StageJourney, HeaderGlow). Every page module migrated; four button systems and about twenty card variants replaced; duplicate CSS deleted. PageHeader gains align, compact variant, breadcrumbs, hue and a static gradient backdrop shown by default. Pages: centred Home hero with journey strip, icon tiles with collapsed caveats, persona cards, capability stack with posture dots and text alternatives, four column footer; steppers for every quickstart; comparison table with stage columns and a card view on phones; FAQ chips and cards; project pages with stat tiles, card lists, stretched-link cards, workshop track x module matrix and a policies-at-a-glance grid; posture heat-map keeping icon and text per cell; Blueprint planes and governed flows as HTML diagrams; diagram lightbox on every figure and the workshop LLM Gateway diagram added; doc pages with a compact dark header, CSS-only reading progress bar and back-to-top link; 404 on the same header and buttons. Dark theme: color-scheme light dark and a prefers-color-scheme remap of the semantic tokens only; no toggle, nothing stored; color-scheme and theme-color metas checked by validate_static.py. Guardrails: design lint over every CSS module (npm test), structure spec (one dark header and h1 per route, icon plus text per posture cell, capability stack text alternatives, doc progress bar), desktop-dark and mobile-dark Playwright projects, opt-in screenshot spec. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… an LCP; dark screenshot projects Chrome never reports content first painted at opacity 0 as a Largest Contentful Paint candidate, so pages whose hero filled the mobile viewport had no LCP and a Lighthouse performance score of 0 since the PR #36 entrance animation. The entrance now only translates. The opt-in screenshot spec also runs in the dark Playwright projects. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Gives the GitHub Pages site (
docs-site/) one visual system and a richer look, in the spirit of the animated, card-based reference the team liked: shared primitives replace four button systems and about twenty card variants; every page, including the 19 rendered README and doc pages and the 404 page, now opens with the same dark header; Home gets a centred hero with a four-stage journey strip, persona cards, an HTML capability stack and a four-column footer; the data-heavy pages gain a posture heat-map, a comparison table with stage columns, a workshop track matrix, steppers, a policy summary and a diagram lightbox; and the site follows the operating system's dark mode automatically. Nothing outsidedocs-site/changed.The contract from PR #34 still holds: no backend, no runtime network requests, no external assets or fonts, no analytics, no storage, no raw HTML. WCAG 2.2 AA is checked by axe on every route in light and dark,
prefers-reduced-motionis respected everywhere, and layout shift stays at 0.What changed
Design system (foundation)
tokens.css(--color-surface,--color-band,--color-link,--color-accent,--color-focus, text scale,--radius-pill,--shadow-card). The raw palette is used only insidetokens.css.Button,Card,SectionHeading,Section,ChipNav,NumberedSteps,StatTileandFactStat,Sources,StageJourney,HeaderGlow. Every page module was migrated onto them and the duplicate CSS was deleted.PageHeadergainedalign,variant="compact",breadcrumbs,hueand a static gradient backdrop that every header now shows by default.Pages
<dialog>) on every figure; the Workshop LLM Gateway diagram added to the Architecture page with its source; glossary letters and support-envelope jumps as chip navs; limitation cards with stage accents.Dark theme
color-scheme: light darkand aprefers-color-scheme: darkremap of the semantic tokens only. No toggle, nothing stored.index.htmlcarriescolor-schemeand twotheme-colormetas;validate_static.pychecks the meta on every page.Guardrails
designLint.test.tsscans every CSS module for hex literals,white,rgba(,999px, raw palette backgrounds and button-like classes.structure.spec.ts: one dark header with the single h1 on every route, icon plus text in every posture cell, the capability stack's dots and text alternatives, the journey strip order, the doc-page progress bar.desktop-darkandmobile-darkPlaywright projects run the axe sweep, reflow, structure and motion checks with the OS preference set to dark.screenshots.spec.ts(opt-in) captures a curated route list in every project for review.Verification
npm run typecheck,npm run lint(zero warnings),npm test(984 tests, design lint included),npm run build(37 pages prerendered),npm run validate:static(now also checks the colour-scheme meta),npm run audit(0 vulnerabilities).npm run test:browser: 421 passed, 0 failed, across four projects (desktop, mobile, desktop-dark, mobile-dark): axe sweep of every route in both colour schemes, structure, motion, reflow at 320/390/1100/1440, behaviour and content specs. The 34 skips are the opt-in screenshot spec and viewport-conditional cases.One measurement fix outside the plan: the header entrance animation from PR #36 started at opacity 0, and Chrome never reports content first painted at opacity 0 as a Largest Contentful Paint candidate (the compositor-driven fade triggers no new paint record). On pages whose hero fills the mobile viewport Lighthouse therefore reported no LCP and a performance score of 0. The entrance is now a rise without a fade, and every page reports an LCP again.
🤖 Generated with Claude Code