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

Тег

Тег относит что-то к категории. Ещё его можно удалить, выбрать или открыть как ссылку. В некоторых системах его называют чипом.

Стабильный Figma
ОбзорИспользованиеAPIДоступность
Research Hiking Design
<tk-tag color="purple">Research</tk-tag>
<tk-tag color="teal">Hiking</tk-tag>
<tk-tag color="blue">Design</tk-tag>

Анатомия

Часть Что это
tk-tag плашка высотой 24px
слот по умолчанию подпись из 1–3 слов; она называет всё, что делает тег
слот leading иконка или аватар, по желанию; скрыты от скринридеров
кнопка удаления ✕ у удаляемого тега
значок состояния + или ✓ у выбираемого тега

Виды

Static Status: open Hiking design
<tk-tag color="blue">Static</tk-tag>
<tk-tag color="blue" removable>Status: open</tk-tag>
<tk-tag color="teal" selectable selected>Hiking</tk-tag>
<tk-tag color="pink" href="/tags/design">design</tk-tag>

У каждого тега одна задача. Если задать несколько видов, removable важнее selectable, а selectable важнее href.

  • Статичный (по умолчанию): просто подпись. Фокус не получает.
  • removable: кнопка ✕, которая вызывает tk-remove. Тег не удаляет себя сам: его удаляет ваш обработчик и он же переводит фокус.
  • selectable: весь тег — переключатель, выключенный показывает +, включённый ✓. Подходит для панелей фильтров и списков выбора. change срабатывает, когда тег переключает пользователь, а не когда ваш код задаёт selected.
  • href: весь тег — ссылка с подчёркнутой подписью. Используйте там, где теги обычно ссылки, например «все записи с этим тегом», но не для основной навигации. target="_blank" добавляет rel="noreferrer noopener".

Цвета

Red Orange Green Indigo Gray
<tk-tag color="red">Red</tk-tag>
<tk-tag color="orange">Orange</tk-tag>
<tk-tag color="green">Green</tk-tag>
<tk-tag color="indigo">Indigo</tk-tag>
<tk-tag>Gray</tk-tag>

color принимает 13 названий: red, orange, yellow, green, mint, teal, cyan, blue, indigo, purple, pink, brown и gray (по умолчанию).

  • Один цвет на категорию, одинаковый везде, где она встречается.
  • Соседним категориям — разные цвета.
  • gray — для людей и для подписей без категории.

Цвета для подписей, которые создают пользователи

Чтобы раскрасить теги, которые вводят люди, получайте цвет из хеша подписи по 12 цветам кроме серого. Одна и та же подпись всегда получает один цвет; у двух подписей цвет может совпасть. Введённые подписи перед хешированием обрежьте по краям и приведите к нижнему регистру.

const CHROMATIC = ['red', 'orange', 'yellow', 'green', 'mint', 'teal',
  'cyan', 'blue', 'indigo', 'purple', 'pink', 'brown'];

function tagColor(label) {
  let h = 5381;
  for (const ch of label) h = ((h * 33) ^ ch.codePointAt(0)) >>> 0;
  return CHROMATIC[h % 12];
}

Иконка или аватар в начале

Featured Mira Petrova
<tk-tag color="green"><tk-icon slot="leading" name="star"></tk-icon>Featured</tk-tag>
<tk-tag removable><tk-avatar slot="leading" shape="circle" size="20" name="Mira Petrova"></tk-avatar>Mira Petrova</tk-tag>
  • Иконка рисуется размером 16px цветом тега.
  • Человек — tk-avatar размера 20 в leading и имя в подписи. Действует правило формы аватара: круг для людей, квадрат для команд и организаций.
  • Имя пишите всегда. Точку присутствия не добавляйте: ей нет места.
  • Теги людей оставляйте gray, если цвет не обозначает категорию.

Длинные подписи и группы

  • Подпись не переносится. Ограничьте ширину тега, и подпись закончится многоточием; ✕ или ✓ останется. Скринридер всё равно прочитает подпись целиком.
  • Держите подписи короче 20 символов. Полный текст показывайте в Tooltip.
  • Теги идут и переносятся, как слова. В одной группе — один вид тегов.
  • Тегов слишком много? Покажите первые несколько и добавьте тег «+N» с именем «N more tags». Группу вы собираете сами.