Заголовок страницы
Блок в начале страницы: хлебные крошки, заголовок, описание, действия и вкладки. Отдельного компонента для него нет: он собирается из четырёх компонентов и двух токенов отступов.
<header style="display: flex; flex-direction: column; gap: var(--space-16); inline-size: 100%">
<tk-breadcrumb>
<tk-breadcrumb-item href="/projects">Projects</tk-breadcrumb-item>
<tk-breadcrumb-item>Aurora</tk-breadcrumb-item>
</tk-breadcrumb>
<div style="display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-16)">
<div style="display: flex; flex-direction: column; gap: var(--space-4)">
<tk-text as="h2" variant="title-lg">Aurora</tk-text>
<tk-text color="secondary">A shared workspace for the design team.</tk-text>
</div>
<tk-button-group spaced label="Project actions">
<tk-button>Duplicate</tk-button>
<tk-button variant="primary">Share</tk-button>
</tk-button-group>
</div>
<tk-tab-bar label="Project views" value="overview">
<tk-tab value="overview">Overview</tk-tab>
<tk-tab value="files">Files</tk-tab>
<tk-tab value="activity">Activity</tk-tab>
</tk-tab-bar>
</header>Из чего состоит
| Часть | Для чего | Обязательна |
|---|---|---|
| где находится страница | нет, на странице верхнего уровня уберите её | |
заголовок и описание с color="secondary" |
заголовок — да | |
spaced |
действия страницы | нет |
| представления одной и той же страницы | нет |
Тот же макет на классах:
.page-header { display: flex; flex-direction: column; gap: var(--space-16); }
.page-header__title-row { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-16); }
.page-header__text { display: flex; flex-direction: column; gap: var(--space-4); }Как отделить от страницы
- Если заголовок заканчивается панелью вкладок, ничего не добавляйте. Tab bar уже рисует тонкую линию под вкладками.
- Иначе дайте заголовку нижнюю рамку:
border-block-end: 1px solid var(--border-subtle). Не используйте для этогоDivider : он разделяет фрагменты содержимого.
Можно / нельзя
| ✅ Можно | ❌ Нельзя |
|---|---|
h1, h2 или h3 по структуре страницы |
h1 в каждом заголовке страницы |
spaced у группы действий |
Действия страницы, склеенные в один блок |
Вкладки или фильтры в <div> |
<footer> внутри <header> |
<header> без подписи |
aria-label на <header> |
| Линия Tab bar как граница заголовка | Вторая линия над панелью вкладок |
Связанные
Breadcrumb : путь и его сворачивание.Text :asзадаёт уровень заголовка,variant— размер.Button group : группа действий.Tab bar : переключение представлений.Отступы : шкала--space-*.
Доступность
- Уровень заголовка выбирайте по структуре страницы.
as="h1"— в самом начале страницы,as="h2"и ниже — внутри области, у которой уже есть заголовок. Не пропускайте уровни, напримерh2, а сразу за нимh4. В примере стоитh2, потому что он находится внутри этой страницы. - Не давайте
<header>подпись. Внутри<main>он не ориентир (landmark), так чтоaria-labelна нём ничего не даёт. Обычный<div>подойдёт не хуже. - Не кладите
<footer>внутрь<header>. HTML этого не разрешает. Полосу с вкладками или фильтрами оберните в<div>. - Не пишите «navigation» в
labelхлебных крошек. Скринридер и так называет роль. Если на странице есть ещё и навигационное меню, дайте им разные подписи.