Иконка выводит символ шрифта Material Symbols по его имени и согласует
размер, начертание и форму со шкалами Framework. Берите её, чтобы подкрепить
подпись или узнаваемо обозначить действие; на цветной подложке её
выделяет акцентная иконка.
Минимальную разметку показывает пример выше:
<i class="sf-icon" aria-hidden="true">favorite</i> — элемент с классом
sf-icon и именем символа внутри.
Имя символа — из каталога Material Symbols, латиницей через _:
arrow_upward, check_circle.
Без класса размера иконка берёт ступень 3; внутри кнопок, полей и
других компонентов размер задаёт компонент.
Цвет иконка наследует от текста (currentColor); утилиты цвета на самой
иконке или на родителе меняют его.
Имена с одним дефисом (sf-icon-bold, sf-icon-filled, sf-icon-solid,
sf-icon-rounded, sf-icon-shape и другие) работают так же, как
модификаторы sf-icon--weight-bold, sf-icon--filled,
sf-icon--rounded и sf-icon--sharp; в разметке пишите модификаторы.
Класс sf-icon-loaded ставит загрузчик иконок Framework, когда шрифт
готов; до этого иконка не видна, и вместо символа не мелькает его имя.
Этот класс не пишите в разметке вручную.
Варианты
Семейство
Без класса иконка рисуется семейством Outlined. sf-icon--rounded берёт
Rounded со скруглёнными концами, sf-icon--sharp — Sharp с острыми углами.
Держите одно семейство во всём интерфейсе.
Толщину линии задают sf-icon--weight-thin, -extra-light, -light,
-regular (по умолчанию), -medium, -semi-bold и -bold. Берите
начертание, близкое к начертанию соседнего текста.
Иконку рядом с текстом скрывайте: aria-hidden="true".
Значимая иконка без подписи получает role="img" и короткий
aria-label; иконка внутри кнопки остаётся скрытой, а имя получает
кнопка.
Статус не передавайте только цветом иконки: нужен текст рядом или
доступное имя.
Стрелки направления на странице с письмом справа налево поворачивайте
классом поворота: шрифт сам их не зеркалит.
JavaScript
Иконки загружает Loader: он находит их на странице и запрашивает у сервиса
иконок шрифт только с нужными знаками. Каждый запрос возвращает один шрифт со
всеми иконками, найденными к этому моменту, поэтому иконка, которая появляется
позже вместе с данными — значок узла дерева, пункт меню с сервера, — стоит
второго запроса. Иконки, которые страница нарисует позже, объявляют заранее, и
они попадают в первый запрос:
Запись — имя иконки или объект {icon, weight, filled, grade, opticalSize, type}.
Компонент, который узнаёт иконки во время работы, передаёт такие же записи в
SF.Loader.preloadIcons([...]).
Пока шрифт загружается, у корня страницы стоит data-sf-icons="subset-pending"
и иконки не рисуются; этот атрибут и класс sf-icon-loaded — состояние Loader,
вручную их не ставят.
Классы и переменные собраны из CSS выпуска и обновляются вместе с ним.
Переменные
Компонент читает свои переменные, а модификаторы задают им значения; таблица показывает, из чего складывается вид. Переменные компонента — его внутренняя проводка, а не поверхность настройки: их имена и устройство могут меняться. Вид проекта меняют общие токены, а глубокий вид Smart-компонента — его шаблон (см. Переменные компонента). Значение по умолчанию — из базового правила блока (.sf-icon); переменную без него задают только модификаторы.
Переменная
По умолчанию
Задаёт
--sf-icon--fill
0
font-variation-settings
--sf-icon--font-family
не задана; задают модификаторы, например :root[data-sf-icons=subset-pending] .sf-icon: "Material Symbols Outlined Subset"
font-family
--sf-icon--font-size
не задана; задают модификаторы, например .sf-icon--size-1/4: var(--sf-icon-size-1/4)
font-size
--sf-icon--grade
0
font-variation-settings
--sf-icon--height
не задана; задают модификаторы, например .sf-icon--size-1/4: var(--sf-icon-size-1/4)
height
--sf-icon--line-height
1
line-height
--sf-icon--optical-size
24
font-variation-settings
--sf-icon--weight
var(--sf-weight--regular)
font-variation-settings, font-weight
--sf-icon--width
не задана; задают модификаторы, например .sf-icon--size-1/4: var(--sf-icon-size-1/4)