fix(ux): focus visibility, tap targets, form labels, surfaced errors
- S6: unlayered :focus-visible ring for form controls and links so keyboard focus is perceivable (was focus:outline-none + 1px border) - S5: >=44px touch targets at the named hotspots (dashboard actions, list-row buttons, ops pills/icons, customize number inputs); dense rows use a 44px hit area without growing row height - S8: 28 form fields associated via id/htmlFor; search inputs get aria-label - S7: claim/complete/delete/link handlers now surface result.error via toast and stop instead of failing silently
This commit is contained in:
@@ -125,3 +125,18 @@
|
||||
@apply bg-background text-foreground;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Keyboard focus visibility (WCAG 2.4.7). Many form controls and links use
|
||||
* `focus:outline-none` with only a 1px border color shift, which is not a
|
||||
* perceivable focus indicator. This rule is intentionally unlayered so it
|
||||
* wins over Tailwind's utilities layer without !important. Scoped to form
|
||||
* controls and links; buttons already get a focus-visible ring from
|
||||
* components/ui/button. :where() keeps specificity at 0 so a component can
|
||||
* still opt out with its own rule.
|
||||
*/
|
||||
:where(input, select, textarea, a[href]):focus-visible {
|
||||
outline: 2px solid var(--ring);
|
||||
outline-offset: 2px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user