Commit graph

4 commits

Author SHA1 Message Date
Danila Poyarkov 1717d8d19d
fix: meet WCAG AA contrast and name controls for screen readers (#952)
* 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.
2026-10-07 17:51:24 +00:00
Danila Poyarkov b64d1b593c fix(settings): refresh select labels and unify controls
Render selected labels from reactive options rather than cached menu text. Refine action-row hover and cursor states, add a connection-test icon, simplify media credentials, and share semantic external links across Settings. Cover locale switching and link destinations with focused regressions and Storybook states.
2026-09-15 19:20:30 +03:00
Danila Poyarkov b0dfde74f5 fix(settings): standardize save feedback and deletion guards
Share persistent alerts, distinguish partial persistence from validation errors, preserve model identity on retries, and apply the store's deletion eligibility before clearing credentials. Document toast, field-error, alert, and Storybook ownership.
2026-09-15 17:53:30 +03:00
Danila Poyarkov ea4b8e4b97 feat(settings): unify preferences and integration editors
Unify Settings navigation, credential drafts, translated form validation, and appearance controls. Add explicit WebMCP access modes and searchable MCP tool permissions while preserving execution and credential safeguards.
2026-09-15 16:34:05 +03:00