* fix: meet WCAG AA contrast and name controls for screen readers Storybook's axe addon reported violations in 69 stories, mostly text below 4.5:1, and the story test ignored its reports. Every story now passes axe in both themes and the test fails on any violation. Contrast comes from the theme tokens. The dark accent fill takes the light theme's #2563eb so white text reads on it; accent-colored text moves to primary and solid focus rings to panel-focus, which keep the lighter blue. Dark component, slot, and error colors are lighter; light muted, primary, and issue-warning are darker. The follow bar picks black or white for the followed person's color through a new readableForeground, which canvas labels now share. Listbox names move to the element with role="listbox", the layer and page rename fields get labels, and disabled picker options and checkbox cards expose aria-disabled, which Reka's ListboxItem leaves out. Axe exemptions stay narrow and explained: vue-stream-markdown's code-block landmarks, Reka's toast focus guards, drag placeholders, reverted replies, Design Check's sample of the document's own failing colors, and the Behaviour demo that shows several sections at once. * chore(storybook): title stories by the folders that own them Design System stories follow the families under src/components/ui (Actions, Inputs, Selection, Feedback, Overlays, Layout, Lists, Navigation, Paint), app stories sit under App/<area>, and titles use Title Case. Editor navigation leaves Design System, and the sidebar order drops entries for stories that no longer exist. * fix: keep dimmed rows and reverted replies readable Fading a selected hidden layer's row faded its blue highlight with the white name, down to 2.76:1 on the light panel, so selected rows dim only their icon. A reverted reply dims its text to the muted color instead of fading to half opacity, so it reads at 4.5:1 and stays in the axe scan, including the tool-call disclosure inside it. The Markdown landmark exemption now covers only the stories that render code blocks. |
||
|---|---|---|
| .. | ||
| scripts | ||
| src | ||
| tests | ||
| AGENTS.md | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| tsconfig.test.json | ||
| tsdown.config.ts | ||
@open-pencil/scene-graph
Shared OpenPencil design document model.
This package owns SceneGraph, SceneNode, paint/effect/layout/variable types, graph mutation helpers, source metadata, and model-level utilities, including component slots and behaviours: the contracts after Reka UI's primitives, the behaviour stored in plugin data, and specs that name properties and slots. It does not own editor state, UI, file format policy, rendering, or app document I/O.