/settings overflows horizontally at 320px (WCAG 1.4.10 reflow) #301
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#301
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
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?
At a 320px viewport,
/settingsscrolls horizontally by roughly 23px.Observed on
mainas a side finding during other work; not yetreproduced in a dedicated session, so the exact figure and the offending
control still need confirming.
Why this matters beyond cosmetics
WCAG 2.1 SC 1.4.10 (Reflow) requires content to be usable without
two-dimensional scrolling down to 320px, which is also what 400% zoom on
a 1280px screen produces. A page-level horizontal scrollbar there is an
accessibility defect, not just an untidy edge — and the project treats
accessibility defects as functional defects.
Where it is probably not
The layout skeleton was already hardened for exactly this in #165 and
looks correct:
.settings-layout__contentcarriesmin-width: 0(
apps/web/src/styles/base.css:3946), so a wide child cannot inflatethe flex column.
align-items: stretch(
base.css:3998), with the comment recording why..settings-navbecomes full width withoverflow-x: auto(
base.css:4005), so the tab strip scrolls inside itself.That points at a single control inside one of the sections rather than
the frame around them.
How to find it
Bisect at a 320px viewport, e.g. in devtools or a Playwright page sized
to 320px, comparing
document.documentElement.scrollWidthagainstclientWidthwhile hiding sections one at a time. Likely suspects arecontrols with an intrinsic minimum width: text inputs with a
sizeattribute,
<pre>/code samples, wide<select>options, tables, or aflex row of buttons that does not wrap.
Fix the offending control — wrapping,
min-width: 0, or scrolling insideits own container — rather than adding
overflow-x: hiddenat pagelevel, which would only hide the symptom and clip the content.
Acceptance criteria
/settingsshows no page-level horizontal scrolling at a 320pxviewport, for a site admin (the widest variant of the page) and for
an ordinary user.
it now scrolls, it scrolls inside its own container and is
keyboard-reachable.
come back.
pnpm lint,pnpm typecheckand the a11y spec pass.