fix(tradein/v2/a11y): немодальный SectionOverlay + контраст токенов + headings — a11y round 3 (#2264) #2279

Merged
lekss361 merged 1 commit from fix/tradein-v2-a11y-round3 into main 2026-07-03 07:47:09 +00:00
Owner

Summary

A11y round 3 по объединённому аудиту #2264 (code-review + живой клавиатурный проход, эпик #2262):

  • SectionOverlay → честный немодальный fullscreen-view (закрывает aria-modal-tradeoff #2193): снят aria-modal, focus-trap переписан — в Tab-цикл входят живые табы верхнего nav + контролы оверлея (inert-поддеревья исключены явно); Esc/возврат фокуса/начальный фокус сохранены. Паритет mouse/keyboard/SR восстановлен.
  • Контраст: 6 muted/disabled-токенов затемнены до ≥4.6:1 vs worst-case grid-фона #dce6f1 (остаток round-2 #2081); hue сохранён, таблица old→new в отчёте.
  • Headings: sr-only h1 + h2 на оверлее/панелях (визуал не меняется, UA-margin сброшен).
  • accent→accentDeep для мелкого текста (номер секции, счётчик «Мои отчёты»); «КОЭФ. ЛОКАЦИИ» теперь кнопка с клавиатурным доступом; фокус после submit переносится на результат-регион; focus-ring инпутов усилен до solid accentDeep; aria-live «N подсказок» в комбобоксе; aria-required на адрес/площадь; aria-hidden на 14 декоративных SVG.
  • Пункты «drawer без aria-hidden на первом маунте» и «preview без main/h1» оказались уже исправленными на HEAD — изменений не вносилось (проверено git diff).

Test plan

  • tsc --noEmit: exit 0
  • next build: exit 0 (13 страниц, /v2 40.3 kB)
  • pre-commit прошёл
  • post-merge: прод-QA под pilottest — keyboard-проход оверлеев (nav достижим Tab'ом), axe re-scan

Известный follow-up (вне scope): accent-текст в «02»/«03»/CV/headline-цене 40px (≈2.87:1) — визуально-тяжёлая правка, отдельным решением.

Refs #2264, #2262, #2193, #2081

## Summary A11y round 3 по объединённому аудиту #2264 (code-review + живой клавиатурный проход, эпик #2262): - **SectionOverlay → честный немодальный fullscreen-view** (закрывает aria-modal-tradeoff #2193): снят `aria-modal`, focus-trap переписан — в Tab-цикл входят живые табы верхнего nav + контролы оверлея (inert-поддеревья исключены явно); Esc/возврат фокуса/начальный фокус сохранены. Паритет mouse/keyboard/SR восстановлен. - **Контраст:** 6 muted/disabled-токенов затемнены до ≥4.6:1 vs worst-case grid-фона #dce6f1 (остаток round-2 #2081); hue сохранён, таблица old→new в отчёте. - **Headings:** sr-only h1 + h2 на оверлее/панелях (визуал не меняется, UA-margin сброшен). - accent→accentDeep для мелкого текста (номер секции, счётчик «Мои отчёты»); «КОЭФ. ЛОКАЦИИ» теперь кнопка с клавиатурным доступом; фокус после submit переносится на результат-регион; focus-ring инпутов усилен до solid accentDeep; aria-live «N подсказок» в комбобоксе; aria-required на адрес/площадь; aria-hidden на 14 декоративных SVG. - Пункты «drawer без aria-hidden на первом маунте» и «preview без main/h1» оказались уже исправленными на HEAD — изменений не вносилось (проверено git diff). ## Test plan - [x] tsc --noEmit: exit 0 - [x] next build: exit 0 (13 страниц, /v2 40.3 kB) - [x] pre-commit прошёл - [ ] post-merge: прод-QA под pilottest — keyboard-проход оверлеев (nav достижим Tab'ом), axe re-scan Известный follow-up (вне scope): accent-текст в «02»/«03»/CV/headline-цене 40px (≈2.87:1) — визуально-тяжёлая правка, отдельным решением. Refs #2264, #2262, #2193, #2081
lekss361 added 1 commit 2026-07-03 07:41:00 +00:00
fix(tradein/v2/a11y): немодальный SectionOverlay + контраст токенов + headings — a11y round 3 (#2264)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 16s
CI / changes (pull_request) Successful in 16s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 1m13s
a3cab9023f
- SectionOverlay: убран aria-modal (честный non-modal fullscreen-view); focus-trap
  теперь охватывает живой верхний nav + оверлей (query по артборду, фильтр [inert]),
  Tab из nav возвращается в оверлей, не в спрятанный main/footer.
- Контраст 6 muted/disabled токенов затемнён до >=4.6:1 vs worst-case #dce6f1
  (hue сохранён, lightness-only): muted2/3/4, hint, disabledValue/Label.
- accent -> accentDeep как мелкий текст: номер секции оверлея (15px), счётчик
  "Мои отчёты" (10px).
- Семантика заголовков: sr-only h1 «Мера — оценка квартиры» + h2 (оверлей,
  ResultPanel, ObjectSummary, placeholder-панели).
- HeroBar «КОЭФ. ЛОКАЦИИ»: role=button + tabIndex + Enter/Space + aria-label.
- Фокус после успешной оценки переносится на результат-регион (role=region,
  tabIndex=-1, aria-labelledby); live-region «Оценка готова» сохранён.
- Инпут focus-ring усилен (2px solid accentDeep).
- combobox адреса: aria-live анонс количества подсказок; aria-required на
  адрес + площадь; декоративные inline-SVG помечены aria-hidden.
lekss361 merged commit 703f6f60c0 into main 2026-07-03 07:47:09 +00:00
lekss361 deleted branch fix/tradein-v2-a11y-round3 2026-07-03 07:47:10 +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: lekss361/gendesign#2279
No description provided.