НачалоОсновыКомпонентыТексты

Баннер

Баннер — полоса во всю ширину вверху приложения для сообщения обо всём приложении или аккаунте. Внутрь можно положить что угодно.

Стабильный Figma
ОбзорИспользованиеAPIДоступность
Your Team trial ends in 3 days. Upgrade
<tk-banner tone="warning" label="Trial ending">
  Your Team trial ends in 3 days.
  <tk-button slot="actions" size="small">Upgrade</tk-button>
</tk-banner>

Анатомия

Часть Что это
tk-banner сам элемент; во всю ширину
part banner полоса: фон и нижняя граница
part content строка по центру, шириной до --tk-banner-max-width
слот и part icon иконка смысла в начале; декоративная
слот по умолчанию (part body) ваше содержимое: текст, ссылка, обратный отсчёт, небольшая форма
слот и part actions действия в конце строки, по желанию
кнопка закрытия ✕, только с dismissible

Варианты

We've refreshed the dashboard. A new version is available. You're back online. Maintenance tonight at 22:00 UTC. Your payment failed. Update your card.
<tk-banner label="Announcement">We've refreshed the dashboard.</tk-banner>
<tk-banner tone="info" label="New version">A new version is available.</tk-banner>
<tk-banner tone="success" label="Connection">You're back online.</tk-banner>
<tk-banner tone="warning" label="Maintenance">Maintenance tonight at 22:00 UTC.</tk-banner>
<tk-banner tone="error" label="Billing">Your payment failed. Update your card.</tk-banner>
  • neutral (по умолчанию): обычное объявление.
  • info: сведения или совет.
  • success: хорошая новость для всего приложения.
  • warning: предупреждение, например о плановых работах или конце пробного периода.
  • error: проблема, которую нужно решить, например с оплатой или сетью.

У каждого тона своя форма иконки: треугольник у warning, круг у остальных. Назовите смысл и в тексте: одного цвета мало, его видят не все.

Оформление

treatment="loud" делает полосу инверсной: тёмной в светлой теме и светлой в тёмной. Цвет тона она не берёт, но иконку по-прежнему выбирает тон.

We use cookies to improve your experience. Privacy policy
<tk-banner treatment="loud" label="Cookie notice">
  We use cookies to improve your experience.
  <tk-link slot="actions" href="/privacy" color="inverse">Privacy policy</tk-link>
</tk-banner>

subtle (по умолчанию) — для обычных баннеров, loud — для сообщения, которое должно бросаться в глаза. Сплошной красной или жёлтой полосы нет.

Расположение

  • static (по умолчанию): баннер стоит в потоке страницы и сдвигает содержимое вниз.
  • sticky: баннер остаётся вверху при прокрутке и сохраняет своё место.

Полоса занимает всю ширину. Строка с содержимым стоит по центру и не шире 1200px; задайте --tk-banner-max-width по ширине колонки страницы, чтобы текст встал вровень с ней.

Ставьте баннер в начало DOM: так пользователи клавиатуры и скринридера встретят его первым, как и видят. Чтобы закрепить баннер поверх содержимого, оставьте под него место в вёрстке страницы.

Действия

Version 3.2 is ready. What's new Reload
<tk-banner tone="info" label="New version">
  Version 3.2 is ready.
  <tk-link slot="actions" href="/changelog" treatment="quiet">What's new</tk-link>
  <tk-button slot="actions" size="small">Reload</tk-button>
</tk-banner>
  • В slot="actions" кладите тихую tk-link или tk-button вида secondary или ghost.
  • Не больше одного главного и одного второстепенного действия. Если нужно больше, берите диалог или отдельную страницу.
  • На полосе loud используйте tk-link color="inverse". У кнопок нет инверсного вида, и на такой полосе им может не хватить контраста.

Закрытие

You're back online.
<tk-banner tone="success" label="Connection" dismissible>You're back online.</tk-banner>

dismissible добавляет ✕ с именем из dismiss-label. Нажатие запускает отменяемое событие tk-dismiss, и баннер прячется сам, если вы не вызвали preventDefault().

banner.addEventListener('tk-dismiss', (event) => {
  event.preventDefault();
  saveDismissed('maintenance');
  banner.remove();
});
  • Не давайте закрыть баннер, если пользователь обязан на него отреагировать, например при заблокированном аккаунте.
  • Если фокус был на баннере, после закрытия переведите его в разумное место.