mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2026-09-03 05:10:16 +03:00
## What Empties the light Storybook accessibility baseline — **1,058 grandfathered violations across 846 stories → 0** — so a new violation fails the gate instead of being silently absorbed. Also burns the dark baseline **812 → 56**; every entry left is one `main` already grandfathers. ## The defect, repeated everywhere A colour picked as a **fill**, chosen to carry a white label at 3:1, reused as **text**, where the floor is 4.5:1. It recurred through status accents, filled buttons, form labels, Mantine's light and outline variants, CSS declarations, inline styles and the generated accent ramp. Three systemic causes account for most of it: - **Mantine's semantic slots were never bound.** `-text`, `-outline`, `-light-color`, `-filled` and `-dimmed` all default to the hue's solid fill. Both resolvers now pin them to the accessible ink for the active scheme. - **The tint ladder was compressed.** `--color-<hue>-50/100/200` pointed at saturated 400-level primitives, so every "tint" background rendered as a fill. - **Text was faded with `opacity`**, pushing already-muted copy below the floor. Each site now recedes via ink or surface, which is what conveyed the state anyway. ## Dark mode The colour resolver's dark half was empty, so dark fell through to Mantine's stock palette — and fixing the naming violations unmasked the contrast sitting underneath them. Both schemes now share one slot map, since most slots are written in tokens that already flip. The dark-only fixes: `--c-text-subtle` (3.0:1, used in 478 places), the error and section-label inks, and the accent ramp's text step — which light reaches by mixing toward black and dark has to reach by mixing toward white. ## Also - New `--c-*-solid` tokens for fills that must carry a white label, distinct from the `--c-<tone>` values used for surfaces, borders and icons. - A `data-user-content-preview` opt-out for nodes rendering a facsimile of the user's own document — WCAG governs the interface, not content authored through it. ## Verification - `task frontend:check:all` — green. - Changed-set gate, both schemes, after the final rebase: **366 stories, 0 regressions**. - Full sweep at the prior base — light **1,447 stories / 0 violations**, dark **1,448 / 0 regressions**. The dark re-record was confirmed key-by-key to be a strict subset of `main`'s, so nothing new is grandfathered. Roughly 28% of what this clears is naming and structure (`button-name`, `label`, `aria-*`) and has no visual signature; the rest is contrast.
53 lines
1.1 KiB
Plaintext
53 lines
1.1 KiB
Plaintext
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
|
|
|
# dependencies
|
|
/node_modules
|
|
/.pnp
|
|
.pnp.js
|
|
|
|
# testing
|
|
/coverage
|
|
|
|
# production
|
|
/build
|
|
/dist
|
|
/dist-portal
|
|
/storybook-static
|
|
|
|
/editor/build
|
|
/editor/dist
|
|
|
|
# misc
|
|
.DS_Store
|
|
.env.local
|
|
.env.*.local
|
|
/editor/.env.local
|
|
/editor/.env.*.local
|
|
|
|
# Root .gitignore ignores all .env* - whitelist only our committed ones, anchored
|
|
# to their app so a stray top-level frontend/.env stays ignored (Storybook's SaaS
|
|
# mock env is injected via .storybook/main.ts, not a file).
|
|
!/editor/.env
|
|
!/editor/.env.proprietary
|
|
!/editor/.env.desktop
|
|
!/editor/.env.saas
|
|
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
|
|
playwright-report
|
|
test-results
|
|
|
|
# auto-generated files
|
|
/editor/src/assets/material-symbols-icons.json
|
|
/editor/src/assets/material-symbols-icons.d.ts
|
|
|
|
# dev update testing - keys, built bundles, screenshots, and generated config override
|
|
/scripts/dev-update-test/.keys/
|
|
/scripts/dev-update-test/.update-dist/
|
|
/scripts/dev-update-test/screenshots/
|
|
/editor/src-tauri/tauri.conf.dev-update.json
|
|
.a11y-scan/
|
|
.a11y-acc/
|