Иконки
Один набор линейных иконок на сетке 16px: он поставляется шрифтом и ставится через tk-icon. Иконки берут цвет окружения и молчат для скринридеров, пока вы их не назовёте.
Как поставить иконку
<tk-button><tk-icon slot="icon-start" name="plus"></tk-icon>Add member</tk-button> <tk-icon-button label="Search"><tk-icon name="search"></tk-icon></tk-icon-button> <tk-icon name="calendar" size="20"></tk-icon>
- Ничего подключать не нужно.
thykes.jsсам добавляет шрифт иконок на страницу. - В слоте компонента, например в
icon-startкнопки, размер и цвет иконке задаёт компонент. - Отдельно выберите
sizeи при необходимостиtone. API — на страницеIcon . - Иконки появляются, когда загрузится шрифт. До этого, и если загрузка не удалась, их не видно, заглушки нет. Поэтому иконка никогда не несёт смысл одна: рядом нужен текст или доступное имя.
Все иконки
Глифов: 43. Подпись под иконкой и есть значение атрибута name.
arrow-down arrow-right arrow-up arrow-up-right bookmark bookmark-filled calendar check check-circle chevron-down chevron-left chevron-right chevron-up clock close copy download edit error external-link figma filter github image info link mail menu minus monitor moon more-horizontal plus search settings share sort star sun trash user warning x-circle
Размер
Размер выбирают по тексту рядом с иконкой. size принимает ступень шкалы icon-size-*, и
никакое другое число.
<tk-icon name="star" size="12"></tk-icon> <tk-icon name="star"></tk-icon> <tk-icon name="star" size="20"></tk-icon> <tk-icon name="star" size="24"></tk-icon> <tk-icon name="star" size="32"></tk-icon> <tk-icon name="star" size="48"></tk-icon>
size |
Для чего |
|---|---|
12 |
плотные места и статусы, рядом с мелким текстом |
16 (по умолчанию) |
рядом с основным текстом, в меню и контролах |
20 |
рядом с более крупным текстом, в баннерах и сообщениях |
24 |
отдельно, навигация |
32 |
заметное место |
48 |
крупно, отдельно |
size="inherit" делает иконку размером 1em, и она следует за текстом. Обводка растёт
вместе с иконкой: 1.5px при 16, 3px при 32, 4.5px при 48.
Цвет
У иконки один цвет, и своего цвета у неё нет.
<tk-icon name="check-circle" tone="success" label="Done"></tk-icon> <tk-icon name="warning" tone="warning" label="Warning"></tk-icon> <tk-icon name="error" tone="error" label="Error"></tk-icon> <tk-icon name="info" tone="info" label="Info"></tk-icon>
- По умолчанию иконка берёт цвет текста родителя (
currentColor). Внутри компонента её красят состояния компонента. toneвыбирает рольicon/*, когда иконка стоит отдельно:default,secondary,tertiary,disabled,inverse,on-fill,accent,success,warning,error,info. Значения по темам — вColor .- Состояние — у контейнера. Выбранная вкладка красит свою иконку; «выбранной» иконки нет.
- Ни двух цветов, ни многоцветных. Иконки статусов различаются и формой, а не только цветом, так что смысл не держится на одном цвете.
Доступность
- По умолчанию иконка декоративная. Если рядом текст говорит то же самое, иконка скрыта от скринридеров.
- Назовите её, если она стоит одна: с
labelиконка становится изображением с этим именем. - Кликабельная иконка — это кнопка. Берите
Icon button и называйте кнопку; иконка внутри остаётся декоративной.tk-iconфокус не принимает. - Контраст: не меньше 3:1 к фону.
- Размер цели: увеличивайте контрол, а не глиф: иконка 16px в кнопке 32px.
- Принудительные цвета: иконки берут системный цвет текста.
Имена
- Строчными, через дефис, по смыслу:
search,close,chevron-down. По действию, если оно есть (edit, а неpencil), иначе по предмету (calendar,mail). - У семейства общий префикс:
chevron-…,arrow-…. - Вариант — суффиксом:
-filledдля залитого двойника (bookmark-filled),-circleдля формы в круге (check-circle). - Имена постоянны. Имя сохраняет смысл и никогда не переиспользуется.
- По неизвестному имени ничего не рисуется, в консоли появляется предупреждение.
Свои иконки
- Сначала поищите в наборе. Понятие может быть под именем по действию. И слово часто понятнее иконки.
- Разовая форма: положите свой
<svg>в слот иконки компонента. Чтобы он совпал с набором, рисуйте на сетке 16×16 обводкой 1.5px со скруглёнными концами и стыками иstroke="currentColor". - Форма, нужная многим продуктам: попросите добавить глиф в набор.
Чего не умеет шрифт
- Один цвет на глиф: ни двух цветов, ни многоцветных.
- Нет переключения контур/заливка: залитая форма — отдельный глиф.
- Обводка растёт с размером, поэтому крупные иконки выглядят тяжелее.
- Окно загрузки: пока шрифт не пришёл, иконок не видно.
Шесть квадратных размеров иконок, названных в пикселях. Одинаковы во всех темах.
| Токен | CSS-переменная | Значение | Для чего |
|---|---|---|---|
icon-size-12 |
--icon-size-12 |
12px | плотные места и статусы, рядом с мелким текстом |
icon-size-16 |
--icon-size-16 |
16px | по умолчанию: рядом с основным текстом, в меню и контролах |
icon-size-20 |
--icon-size-20 |
20px | рядом с более крупным текстом |
icon-size-24 |
--icon-size-24 |
24px | отдельно, навигация |
icon-size-32 |
--icon-size-32 |
32px | заметное место |
icon-size-48 |
--icon-size-48 |
48px | крупно, отдельно |
size у tk-icon принимает число (size="20"). Для своих слотов иконок размер выбирают
сами компоненты. Подробнее — в