Каркас приложения
Каркас связывает header, nav, main и опциональный контекстный регион. Маршруты, права и бизнес-состав остаются в продукте.
Статус: experimental · в системе с 2026-07
Когда использовать
- Приложению нужна постоянная глобальная навигация между несколькими маршрутами.
- На узком экране навигация должна раскрываться управляемо и возвращать фокус.
Не использовать:
- Страница является автономным документом или коротким одностраничным сценарием.
- Композиция повторяет бизнес-виджет, а не глобальные регионы приложения.
Состав
| Юнит или компонент | Роль |
|---|
button | Открывает навигацию на узком экране и запускает глобальные действия. |
avatar | Опционально обозначает текущего пользователя без присвоения меню самому Avatar. |
divider | Разделяет устойчивые группы навигации только при реальной смысловой границе. |
Ограничения
- Обязательно: Выражать каркас семантическими регионами
header, nav и main; давать навигации доступное имя, если на странице она не одна. - Обязательно: Показывать текущий маршрут не одним цветом и размечать его через
aria-current=page. - Обязательно: На узком экране делать открытие навигации явным, поддерживать Escape и возвращать фокус на кнопку открытия после закрытия.
- Запрещено: Регистрировать Header или Sidebar как отдельные компоненты без собственного поведения и переносимого API.
- Запрещено: Закреплять в каноне названия маршрутов, продуктовые роли, права доступа и состав бизнес-действий.
- Рекомендуется: Держать глобальное действие в одном устойчивом регионе, не дублируя его одновременно в header, navigation и содержимом.
Логика отклика
- Ориентация Пользователь определяет продукт, текущий раздел и доступные глобальные действия. → Header задаёт контекст, navigation явно отмечает текущий маршрут, main получает фокус документа.
- Переход Пользователь выбирает другой глобальный раздел. → Маршрут меняется, активный пункт обновляет текстовый или форменный признак и
aria-current. - Узкий экран Пользователь открывает, использует или закрывает навигацию. → Фокус управляется предсказуемо; Escape закрывает область, после закрытия фокус возвращается на trigger.
Контекстный пример
Правильно
Связанные регионы с одним источником навигации
Header даёт контекст, navigation хранит маршруты и текущий пункт, main содержит задачу; мобильное раскрытие сохраняет фокус.
button avatar divider
Неправильно
Независимые контейнеры без общего поведения
Header и Sidebar дублируют действия, активность читается только цветом, а скрытая навигация оставляет фокус вне видимой области.
button
Скелет экрана
headerКонтекст продукта и ограниченный набор глобальных действий.navigationИменованная глобальная навигация и текущий маршрут.mainЕдинственное основное содержимое текущего маршрута.contextОпциональная локальная навигация или сведения, не дублирующие глобальную.