[CL-MOBILE-A11Y] fix(cabinet): sidebar mobile tap-targets 44px (WCAG 2.5.5 AAA) #975

Merged
andrei merged 1 commit from feature/claude-mobile-a11y-sidebar-20260702 into master 2026-07-02 17:42:02 +00:00
Owner

Что сделано

CabinetSidebar.tsx — mobile tap-targets nav-items подняты до 44px (WCAG 2.5.5 AAA): min-h-[40px]min-h-[44px] lg:min-h-[40px] (осн. nav), min-h-[36px]min-h-[44px] lg:min-h-[36px] (суб-nav). Плюс новый contract-тест CabinetSidebar.a11y.test.tsx и итоговый codebase-review docs/vault/reviews/codebase-2026-07-02.md (8.4/10).

Зачем

Review High #3 (mega-audit): на мобайле sidebar — off-canvas touch-drawer, но nav-items были 36–40px — проходят WCAG AA (≥24px), но не AAA (44px). На lg+ sidebar = persistent mouse-rail, где компактность уместна → responsive lg: сохраняет desktop-вид, мобайл получает 44px touch-target.

План тестирования

  • TDD: contract-тест RED (44px отсутствует) → правка → GREEN 2/2.
  • tsc --noEmit 0, eslint 0 (CabinetSidebar + тест).
  • Serena impact: CabinetSidebar рендерится только в CabinetLayout — изолировано, CSS-only, zero logic.

Где могу ошибаться

  • Изменение только min-height (мобайл): items чуть выше на <lg → больше вертикального скролла в длинном sidebar. Приемлемо для touch-a11y. Desktop не затронут (lg: override).
  • Severity низкая (AA уже выполнялось) — это AAA-polish, не defect.
## Что сделано `CabinetSidebar.tsx` — mobile tap-targets nav-items подняты до **44px** (WCAG 2.5.5 AAA): `min-h-[40px]`→`min-h-[44px] lg:min-h-[40px]` (осн. nav), `min-h-[36px]`→`min-h-[44px] lg:min-h-[36px]` (суб-nav). Плюс новый contract-тест `CabinetSidebar.a11y.test.tsx` и итоговый codebase-review `docs/vault/reviews/codebase-2026-07-02.md` (8.4/10). ## Зачем Review High #3 (mega-audit): на мобайле sidebar — off-canvas touch-drawer, но nav-items были 36–40px — проходят WCAG **AA** (≥24px), но не **AAA** (44px). На lg+ sidebar = persistent mouse-rail, где компактность уместна → responsive `lg:` сохраняет desktop-вид, мобайл получает 44px touch-target. ## План тестирования - TDD: contract-тест RED (44px отсутствует) → правка → GREEN 2/2. - `tsc --noEmit` 0, `eslint` 0 (CabinetSidebar + тест). - Serena impact: CabinetSidebar рендерится только в CabinetLayout — изолировано, CSS-only, zero logic. ## Где могу ошибаться - Изменение только min-height (мобайл): items чуть выше на <lg → больше вертикального скролла в длинном sidebar. Приемлемо для touch-a11y. Desktop не затронут (`lg:` override). - Severity низкая (AA уже выполнялось) — это AAA-polish, не defect.
[CL-MOBILE-A11Y] fix(cabinet): sidebar mobile tap-targets 44px (WCAG 2.5.5 AAA)
Some checks failed
CI / API (pull_request) Has been cancelled
CI / App (pull_request) Has been cancelled
CI / Prisma Migrate Gate (pull_request) Has been cancelled
React Doctor / React Doctor / App (pull_request) Has been cancelled
PR Janitor / janitor (pull_request) Has been cancelled
CI / Python SDK (pull_request) Has been cancelled
CI / Secrets Scan (pull_request) Has been cancelled
CI / Contracts (pull_request) Has been cancelled
CI / Telegram Mini App (pull_request) Has been cancelled
6f782bc374
Review High #3 (mega-audit 2026-07-02): на мобайле sidebar = off-canvas touch-drawer,
но nav-items были min-h-[40px] (осн.) / min-h-[36px] (суб) — проходят WCAG AA (>=24px),
но не AAA target-size (44px). Поднято до min-h-[44px] на мобайле; lg: сохраняет
компактность desktop-rail (persistent mouse-nav): min-h-[44px] lg:min-h-[40px|36px].

TDD: RED (contract-тест на 44px tap-target) -> правка -> GREEN 2/2. tsc 0, eslint 0.
Serena impact: CabinetSidebar рендерится только в CabinetLayout (изолировано).
Также добавлен итоговый codebase-review (docs/vault/reviews/codebase-2026-07-02.md, 8.4/10).
andrei merged commit 162ee6e0eb into master 2026-07-02 17:42:02 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/europatech!975
No description provided.