Accessibility

Принципы доступности компонентов SDDS.

Доступность (accessibility, a11y) — это практика создания продуктов, которыми могут пользоваться все люди, независимо от их физических, когнитивных или технических возможностей.

Целевой уровень: WCAG 2.1 AA.

См. также: sizes.md — размерная шкала, theming.md — система тематизации на токенах.

1. Основные принципы

SDDS следует четырём основным принципам WCAG — POUR.

1.1 Perceivable (Воспринимаемость)

Вся информация и компоненты интерфейса должны быть представлены таким образом, чтобы пользователи могли их воспринять.

Правильно Неправильно
Изображения имеют текстовые альтернативыИконки без подписей или aria-label
Контент не зависит только от цветаТолько цветовая индикация ошибки
Текст можно увеличить до 200% без потери функциональностиАудиоконтент без возможности транскрипции
Видео содержит субтитры

1.2 Operable (Управляемость)

Компоненты интерфейса и навигация должны быть управляемы.

Правильно Неправильно
Весь функционал доступен с клавиатурыДействия, доступные только через мышь
У пользователей достаточно времени для взаимодействияТаймауты без возможности продления
Нет контента, вызывающего эпилептические припадкиМигающий контент >3 раз в секунду

1.3 Understandable (Понятность)

Информация и работа интерфейса должны быть понятны.

Правильно Неправильно
Предсказуемое поведение элементовНеожиданные изменения контента
Подсказки при ошибках вводаНестандартное поведение элементов интерфейса
Навигация предсказуема и последовательнаНепоследовательные метки для одинаковых действий

1.4 Robust (Надёжность)

Контент должен быть достаточно надёжным для интерпретации широким кругом вспомогательных технологий.

Правильно Неправильно
Валидная HTML-разметкаКастомные элементы без ARIA-ролей
Полное использование ARIA-атрибутовНестандартное использование HTML-тегов
Статус элементов программно определяемСостояния только через визуальные стили

2. Стандарты и соответствие

2.1 Целевой уровень соответствия

ПлатформаСтандартУровень
WebWCAG 2.1AA
Web (критические продукты)WCAG 2.2AA
Mobile iOSWCAG 2.1 + Apple HIGAA
Mobile AndroidWCAG 2.1 + Material GuidelinesAA
TV/SmartTVWCAG 2.1 (адаптировано)A+

2.2 Приоритизация критериев

  • Уровень A — обязателен. Минимальные требования. Несоответствие делает контент недоступным для определённых групп пользователей.
  • Уровень AA — целевой уровень для всех продуктов SDDS. Устраняет наиболее значимые барьеры.
  • Уровень AAA — расширенный стандарт. Применяется там, где это технически и контекстуально возможно.

3. Цвет и контраст

Токены SDDS и их использование в компонентах отвечают требованиям стандартов.

Коэффициент контраста — это математическое соотношение яркости цвета текста и цвета фона. Вычисляется по формуле WCAG:

Контраст = (L1 + 0.05) / (L2 + 0.05)

где L1 — относительная яркость более светлого цвета, L2 — относительная яркость более тёмного цвета.

Диапазон значений:

  • 1:1 — нет контраста (текст сливается с фоном)
  • 21:1 — максимальный контраст (чёрный на белом)

3.1 Требования к контрасту

Текст:

ЭлементМинимальный контраст (AA)Рекомендуемый (AAA)
Основной текст (шрифт до 18px normal, до 14px bold)4.5:17:1
Крупный текст (шрифт от 18px normal, от 14px bold)3:14.5:1
Текст на изображении4.5:17:1
UI-компоненты и иконки3:1—
Декоративные элементыне требуется—

3.2 Дополнительная индикация

Цвет — не единственный индикатор: рекомендуется использовать дополнительные визуальные маркеры.

Пример: паттерны для состояния ошибки TextField

Правильно Неправильно
Цвет фона SurfaceTransparentNegativeЦвет фона SurfaceTransparentNegative (только цвет)
Иконка индикации ошибки
Подсказка к полю ввода

4. Типографика

Основные правила доступности:

  • Читаемость — используйте рекомендованные размеры шрифтов и межстрочные интервалы из SDDS. Минимальный размер основного текста — 16px.
  • Иерархия — стройте чёткую визуальную иерархию с помощью заголовков H1–H6. Не пропускайте уровни (например, H3 не должен идти сразу после H1).

4.1 Минимальные размеры шрифта

Минимальные размеры шрифта обеспечивают читаемость интерфейса и соответствие стандартам доступности (WCAG).

Важно: текст меньше 12px не рекомендуется для смыслового контента.

КонтекстМинимальный размерРекомендуемый размер
Основной текст14px / 0.875rem16px / 1rem
Вспомогательный текст12px / 0.75rem14px / 0.875rem
Формы14px / 0.875rem16px / 1rem
Кнопки14px / 0.875rem16px / 1rem
Подсказки (tooltip)12px / 0.75rem14px / 0.875rem

4.2 Межбуквенный интервал и читаемость

Параметры, рекомендуемые WCAG 1.4.12 (Text Spacing):

ПараметрЗначение
Высота строки (line-height)≥ 1.5x от размера шрифта
Межбуквенный интервал (tracking)≥ 0.12x от размера шрифта
Межсловный интервал (word-spacing)≥ 0.16x от размера шрифта
Отступ между параграфами≥ 2x от размера шрифта

4.3 Выбор гарнитуры

Рекомендуемые характеристики:

  • Чёткое различие между символами (I, l, 1 / O, 0)
  • Достаточная x-height
  • Различимые строчные и прописные буквы
  • Поддержка кириллицы с одинаковым качеством

Шрифты SDDS:

  • SB Sans Display — для акцентных текстовых элементов крупным кеглем
  • SB Sans Text — для интерфейсного текста и заголовков
  • SB Sans Text Mono — CodeView внутри компонентов

Подробнее про типографику SDDS — в документации Typography.

5. Фокус и навигация с клавиатуры

Все интерактивные элементы должны быть доступны с клавиатуры. Пользователь должен иметь возможность выполнить любое действие без использования мыши или касания.

5.1 Стиль фокуса

Требования к индикатору фокуса:

  • Минимальный контраст 3:1 к соседним цветам
  • Должен быть видим на любом фоне
  • Не должен перекрываться другими элементами

Базовый фокус SDDS:

СвойствоЗначение
Outline width1px
Outline stylesolid
Outline colorSurfaceAccent
Outline offset2px
Border-radiusCR компонента + 2px

5.2 Порядок фокуса (Tab Order)

Порядок фокуса должен соответствовать визуальному порядку и логике контента.

  • Порядок Tab соответствует визуальному порядку: слева → направо, сверху → вниз
  • ✅ Используется tabindex="0" для кастомных интерактивных элементов
  • ✅ Используй tabindex="-1" для программного управления фокусом (модальные окна, dropdown)
  • Не убирай элементы из tab order без альтернативы
  • ❌ Не используй tabindex="0" на неинтерактивных элементах

5.3 Клавиатурные паттерны для компонентов

Keyboard Shortcuts (горячие клавиши):

КлавишаДействие
TabПереход к следующему интерактивному элементу
Shift + TabПереход к предыдущему интерактивному элементу
EnterАктивация элемента (кнопки, ссылки)
SpaceАктивация (чекбокс, кнопка) / прокрутка страницы
EscЗакрытие диалога, дропдауна, отмена действия
Arrow KeysНавигация внутри компонента (меню, список, слайдер)
Home / EndПервый / последний элемент
Page Up / DownПрокрутка, диапазонные компоненты

Примеры паттернов для составных компонентов:

КомпонентКлавиши и действие
DropdownMenu↓↑ — навигация, Enter — выбор, Esc — закрытие
Tabs←→ — переключение вкладок, Tab — переход в контент
Slider←→ — изменение значения, Home/End — мин/макс значения
CheckboxSpace — переключение выбора
Accordion↓↑ — навигация, Enter/Space — раскрытие или закрытие
Нашли расхождение документации и библиотеки — напишите команде.Сообщить о расхождении