Тактильная

  • Темы
  • light
  • dark

Кнопка как предмет: свет сверху, тень цвета тона снизу, подъём под указателем и пружина в отклике.

Значения — из пакета @feugene/granularity-tokens

На этой странице

Образец

РольСветлыйТёмный
--gr-bg#f8fafc#0f172a
--gr-card#ffffff#1e293b
--gr-fg#0f172a#f8fafc
--gr-muted-fg#556275#aab6c7
--gr-primary#4f46e5#9d8bfa
--gr-accent#eef2ff#1e1b4b
Одна разметка в острове каждого режима: разница только в паре на поддереве.

Для чего

Продукт и лендинги — экраны, где главное действие должно хотеться нажать. Объём, подъём под указателем и пружина в отклике делают кнопку предметом, а не надписью в рамке. Тема — наследник slate (extends): палитра, роли и все компоненты, кроме кнопки, — «Сланца», и его правки приходят в «Тактильную» на следующей сборке. Своё у темы — только язык кнопки.

Правила использования

  • Solid — главное действие экрана. Тень цвета тона тянет взгляд; две solid-кнопки рядом светятся друг на друга. Второе действие — secondary или outline.
  • Главная кнопка тона neutral — чернильная: цвет текста страницы, в тёмном режиме инвертируется.
  • Прозрачные веса откликаются подложкой, растущей из центра под указателем, а не сменой заливки: строка ghost-кнопок читается рядом предметов, а не ссылок.
  • Скругление растёт со ступенью — 8 / 8 / 10 / 12px. Капсула — ручка приложения --gr-button-radius: 999px, не тема.
  • Недоступная кнопка — штриховка и пунктирная рамка: состояние читается и без цвета.
  • С prefers-reduced-motion подъёма, масштаба и пружины нет — остаётся смена цвета.

Режимы

РежимНазначение
lightрежим по умолчанию: тень тона на 42 %, линия света по верхней кромке
darkтень тона плотнее — 62 %, свет тише, нижняя кромка темнее

Пары на корне

Имя режима хранится в выборе пользователя, а на корень ставится пара темы и режима. Пару не пишут руками: её отдаёт манифест сборки.

Идентификатор
tactile
Наследует
slate
РежимСхемаПара на корне
light · по умолчаниюlightdata-theme="tactile-light"
darkdarkdata-theme="tactile-dark"

Роли

Значения ролей в каждом режиме и контраст там, где он осмыслен.

Роли поверхностей

ТокенСветлаяТёмнаяКонтрастРоль
--gr-bg--gr-bg#f8fafc#0f172aБазовый фон приложения и крупных layout-поверхностей текущей темы.
--gr-fg--gr-fg#0f172a#f8fafc17.06 / 17.06против --gr-bgОсновной цвет текста и иконок поверх базового фона текущей темы.
--gr-card--gr-card#ffffff#1e293bФон карточек, панелей и других поднятых поверхностей.
--gr-card-fg--gr-card-fg#0f172a#f8fafc17.85 / 13.98против --gr-cardЦвет контента внутри карточек и raised surface-блоков.
--gr-popover--gr-popover#ffffff#1e293bФон popover-, dropdown- и overlay-поверхностей.
--gr-popover-fg--gr-popover-fg#0f172a#f8fafc17.85 / 13.98против --gr-popoverЦвет текста и иконок внутри popover-слоёв.
--gr-muted--gr-muted#f1f5f9#334155Приглушённая поверхность для вторичных блоков, плашек и заполнений.
--gr-muted-fg--gr-muted-fg#556275#aab6c75.65 / 5.04против --gr-mutedВторичный текстовый цвет для helper-копии и менее важных подписей.
--gr-secondary--gr-secondary#e2e8f0#334155Нейтральная secondary action/surface-подложка без сильного бренд-акцента.
--gr-secondary-fg--gr-secondary-fg#1e293b#f1f5f911.87 / 9.45против --gr-secondaryКонтрастный текст для secondary-кнопок и поверхностей.
--gr-overlay-bg--gr-overlay-bgrgb(15 23 42 / 0.45)rgb(2 6 23 / 0.65)Подложка модальных слоёв (модалка, drawer): затемняет страницу, оставляя её узнаваемой.
--gr-brd--gr-brd#e2e8f0#334155Базовый цвет бордеров и разделителей текущей темы.
--gr-brd-strong--gr-brd-strongvar(--gr-brd)var(--gr-brd)Граница плотнее разделителя: пунктир и точки GrDivider, черта невыбранной вкладки под указателем. Тема ставит её и в токены компонентов — рамку outline-сообщения, разделитель пути. Тема без второй ступени границы ставит сюда --gr-brd.
--gr-input--gr-input#e2e8f0#334155Рамка поля ввода в покое — у GrInput, GrTextarea, GrNumberInput, GrInputTag, GrAutocomplete, GrOtpInput и триггеров GrSelect, GrTreeSelect, GrColorPicker. Тема, у которой рамка поля темнее разделителя, разводит её с --gr-brd.
--gr-input-hover--gr-input-hovervar(--gr-input)var(--gr-input)Рамка поля ввода под указателем. Тема без отклика рамки ставит сюда --gr-input.
--gr-input-focus-brd--gr-input-focus-brdvar(--gr-input)var(--gr-input)Рамка поля в фокусе, вместе с кольцом --gr-ring. Тема без своего решения ставит --gr-input: рамка в фокусе не меняется.
--gr-input-readonly-bg--gr-input-readonly-bgvar(--gr-bg)var(--gr-bg)Подложка поля только для чтения. Тема, у которой такое поле читается текстом на поверхности, ставит transparent; без своего решения — --gr-bg, как у рабочего поля.
--gr-input-readonly-brd--gr-input-readonly-brdvar(--gr-input)var(--gr-input)Рамка поля только для чтения. Без своего решения — --gr-input, как у рабочего поля.
--gr-control-brd--gr-control-brd#64748b#94a3b8Граница переключаемого контрола в покое — коробки чекбокса, кружка радио, дорожки выключенного переключателя. Держит 3:1 к странице, карточке и --gr-muted (WCAG 1.4.11): у такого контрола граница — единственное, по чему его видно.
--gr-control-brd-hover--gr-control-brd-hovervar(--gr-control-brd)var(--gr-control-brd)Граница переключаемого контрола под указателем: коробка отметки, кружок радио. Тема без отклика ставит сюда --gr-control-brd.
--gr-ring--gr-ring#6366f1#818cf8Цвет focus-ring и акцентного outline для интерактивных компонентов.

Роли состояний

ТокенСветлаяТёмнаяКонтрастРоль
--gr-disabled-bg--gr-disabled-bg#f1f5f9#273548Фон недоступного контрола: гасит его поверхностью, а не прозрачностью — opacity разбавляет выверенные на AA токены текста.
--gr-disabled-fg--gr-disabled-fg#94a3b8#64748bЦвет текста и иконок недоступного контрола.
--gr-disabled-brd--gr-disabled-brd#e2e8f0#334155Цвет рамки недоступного контрола.
--gr-invalid-brd--gr-invalid-brdvar(--gr-danger)var(--gr-danger)Цвет рамки контрола, не прошедшего валидацию.
--gr-invalid-ring--gr-invalid-ringvar(--gr-danger)var(--gr-danger)Цвет focus-ring контрола, не прошедшего валидацию.
--gr-invalid-text--gr-invalid-textvar(--gr-danger-text)var(--gr-danger-text)7.94 / 9.41против --gr-bgЦвет текста ошибки и метки обязательного поля.

Роли действий

ТокенСветлаяТёмнаяКонтрастРоль
--gr-primary--gr-primary#4f46e5#9d8bfaГлавный brand/action цвет темы для primary CTA и ключевых акцентов.
--gr-primary-fg--gr-primary-fg#ffffff#0f172a6.29 / 6.38против --gr-primaryКонтрастный текст и иконки поверх primary-заливки.
--gr-accent--gr-accent#eef2ff#1e1b4bМягкая акцентная поверхность для selected/hovered областей и подсветок.
--gr-accent-fg--gr-accent-fg#3730a3#c7d2fe8.88 / 10.72против --gr-accentЦвет текста поверх accent-подложек.
--gr-selected--gr-selectedvar(--gr-primary)var(--gr-primary)Цвет выбранного: заливка и рамка отметки и радио, дорожка включённого переключателя, черта вкладки, заливка слайдера, текущая страница пагинации, кольцо выбранного цвета; подмесом — подсветка выбранной строки и узла дерева. Тема, где выбор — бренд, ставит сюда --gr-primary.
--gr-selected-fg--gr-selected-fgvar(--gr-primary-fg)var(--gr-primary-fg)6.29 / 6.38против --gr-selectedЗнак на заливке --gr-selected: галочка отметки, точка радио, номер текущей страницы.
--gr-selected-hover--gr-selected-hovervar(--gr-selected)var(--gr-selected)Выбранное под указателем: заливка отмеченной коробки и выбранного радио. Тема без отклика ставит сюда --gr-selected.

Роли статусов

ТокенСветлаяТёмнаяКонтрастРоль
--gr-success--gr-success#10b981#34d399Основной semantic success-цвет для статусов, бейджей и уведомлений.
--gr-success-light--gr-success-light#d1fae5#194536Облегчённая success-подложка для мягких статусов и подсветок.
--gr-success-fg--gr-success-fg#0f172a#0f172a7.04 / 9.29против --gr-successКонтрастный текст и иконки поверх success-заливки.
--gr-primary-text--gr-primary-text#3730a3#c7d2fe9.49 / 11.97против --gr-bgОсновной тон как ЦВЕТ ТЕКСТА на фоне страницы: насыщенный --gr-primary под текст не рассчитан и не проходит по контрасту.
--gr-success-text--gr-success-text#065f46#6ee7b77.34 / 11.71против --gr-bgТекстовый оттенок для success-сообщений на светлой подложке.
--gr-warning--gr-warning#f97316#fb923cОсновной semantic warning-цвет для предупреждений и промежуточных статусов.
--gr-warning-light--gr-warning-light#ffedd5#672e1cОблегчённая warning-подложка для мягких warning-состояний.
--gr-warning-fg--gr-warning-fg#0f172a#0f172a6.37 / 7.89против --gr-warningКонтрастный текст и иконки поверх warning-заливки.
--gr-warning-text--gr-warning-text#7c2d12#fdba748.96 / 10.59против --gr-bgТекстовый оттенок для warning-сообщений на мягкой warning-подложке.
--gr-danger--gr-danger#dc2626#f87171Semantic danger-цвет для ошибок, рисков и критических сообщений.
--gr-danger-light--gr-danger-light#fee2e2#6a2522Облегчённая danger-подложка для мягких error-состояний.
--gr-danger-fg--gr-danger-fg#ffffff#0f172a4.83 / 6.45против --gr-dangerКонтрастный текст и иконки поверх danger-заливки.
--gr-danger-text--gr-danger-text#991b1b#fca5a57.94 / 9.41против --gr-bgТекстовый оттенок для error-сообщений на мягкой danger-подложке.
--gr-info--gr-info#2563eb#60a5faSemantic info-цвет для нейтральных уведомлений и информационных акцентов.
--gr-info-light--gr-info-light#dbeafe#213771Облегчённая info-подложка для спокойных информационных блоков.
--gr-info-fg--gr-info-fg#ffffff#0f172a5.17 / 7.02против --gr-infoКонтрастный текст и иконки поверх info-заливки.
--gr-info-text--gr-info-text#1e40af#bfdbfe8.34 / 12.56против --gr-bgТекстовый оттенок для спокойных info-сообщений и подсказок.
--gr-slate--gr-slate#475569#94a3b8Нейтральный semantic slate-цвет для subdued индикаторов и secondary статусов.
--gr-slate-light--gr-slate-light#e2e8f0#313b4aОблегчённая slate-подложка для мягких нейтральных состояний.
--gr-slate-fg--gr-slate-fg#ffffff#0f172a7.58 / 6.96против --gr-slateКонтрастный текст и иконки поверх slate-заливки.
--gr-slate-text--gr-slate-text#334155#cbd5e19.90 / 12.02против --gr-bgТекстовый оттенок для нейтральных slate-сообщений и плашек.
--gr-azure--gr-azure#0077b6#38bdf8Semantic azure-цвет для информационных акцентов и вспомогательных статусов.
--gr-azure-light--gr-azure-light#e0f2fe#1b425cОблегчённая azure-подложка для мягких informational поверхностей.
--gr-azure-fg--gr-azure-fg#ffffff#0f172a4.87 / 8.33против --gr-azureКонтрастный текст и иконки поверх azure-заливки.
--gr-azure-text--gr-azure-text#075985#bae6fd7.23 / 13.45против --gr-bgТекстовый оттенок для azure-плашек и спокойных informational блоков.

Роли плотных заливок

ТокенСветлаяТёмнаяКонтрастРоль
--gr-primary-solid--gr-primary-solidvar(--gr-primary)#595ce6Сплошная заливка кнопочного веса тона primary.
--gr-primary-solid-hover--gr-primary-solid-hovervar(--gr-primary-hover)#5053ddЗаливка --gr-primary-solid под курсором.
--gr-primary-solid-active--gr-primary-solid-activevar(--gr-primary-active)#474acfЗаливка --gr-primary-solid в момент нажатия.
--gr-primary-solid-fg--gr-primary-solid-fgvar(--gr-primary-fg)var(--gr-slate-0)6.29 / 5.12против --gr-primary-solidТекст и иконки на заливке --gr-primary-solid.
--gr-success-solid--gr-success-solid#047857#047857Сплошная заливка кнопочного веса тона success.
--gr-success-solid-hover--gr-success-solid-hover#036c4d#036c4dЗаливка --gr-success-solid под курсором.
--gr-success-solid-active--gr-success-solid-active#025f44#025f44Заливка --gr-success-solid в момент нажатия.
--gr-success-solid-fg--gr-success-solid-fgvar(--gr-slate-0)var(--gr-slate-50)5.48 / 5.24против --gr-success-solidТекст и иконки на заливке --gr-success-solid.
--gr-warning-solid--gr-warning-solid#c2410c#c2410cСплошная заливка кнопочного веса тона warning.
--gr-warning-solid-hover--gr-warning-solid-hover#b53b0a#b53b0aЗаливка --gr-warning-solid под курсором.
--gr-warning-solid-active--gr-warning-solid-active#9f3307#9f3307Заливка --gr-warning-solid в момент нажатия.
--gr-warning-solid-fg--gr-warning-solid-fgvar(--gr-slate-0)var(--gr-slate-50)5.18 / 4.95против --gr-warning-solidТекст и иконки на заливке --gr-warning-solid.
--gr-danger-solid--gr-danger-solidvar(--gr-danger)#b91c1cСплошная заливка кнопочного веса тона danger.
--gr-danger-solid-hover--gr-danger-solid-hovervar(--gr-danger-hover)#a91919Заливка --gr-danger-solid под курсором.
--gr-danger-solid-active--gr-danger-solid-activevar(--gr-danger-active)#931515Заливка --gr-danger-solid в момент нажатия.
--gr-danger-solid-fg--gr-danger-solid-fgvar(--gr-danger-fg)var(--gr-slate-50)4.83 / 6.18против --gr-danger-solidТекст и иконки на заливке --gr-danger-solid.
--gr-info-solid--gr-info-solidvar(--gr-info)#1d4ed8Сплошная заливка кнопочного веса тона info.
--gr-info-solid-hover--gr-info-solid-hovervar(--gr-info-hover)#1e40afЗаливка --gr-info-solid под курсором.
--gr-info-solid-active--gr-info-solid-activevar(--gr-info-active)#1e3a8aЗаливка --gr-info-solid в момент нажатия.
--gr-info-solid-fg--gr-info-solid-fgvar(--gr-info-fg)var(--gr-slate-50)5.17 / 6.41против --gr-info-solidТекст и иконки на заливке --gr-info-solid.
--gr-slate-solid--gr-slate-solidvar(--gr-slate)var(--gr-slate-600)Сплошная заливка кнопочного веса тона slate.
--gr-slate-solid-hover--gr-slate-solid-hovervar(--gr-slate-hover)var(--gr-slate-700)Заливка --gr-slate-solid под курсором.
--gr-slate-solid-active--gr-slate-solid-activevar(--gr-slate-active)var(--gr-slate-800)Заливка --gr-slate-solid в момент нажатия.
--gr-slate-solid-fg--gr-slate-solid-fgvar(--gr-slate-fg)var(--gr-slate-50)7.58 / 7.24против --gr-slate-solidТекст и иконки на заливке --gr-slate-solid.
--gr-azure-solid--gr-azure-solid#0369a1#0369a1Сплошная заливка кнопочного веса тона azure.
--gr-azure-solid-hover--gr-azure-solid-hover#075985#075985Заливка --gr-azure-solid под курсором.
--gr-azure-solid-active--gr-azure-solid-active#0c4a6e#0c4a6eЗаливка --gr-azure-solid в момент нажатия.
--gr-azure-solid-fg--gr-azure-solid-fgvar(--gr-slate-0)var(--gr-slate-50)5.93 / 5.67против --gr-azure-solidТекст и иконки на заливке --gr-azure-solid.

Роли визуализации данных

ТокенСветлаяТёмнаяРоль
--gr-chart-1--gr-chart-1#4f46e5#6366f1Первый цвет серии для графиков и data-visualization элементов.
--gr-chart-2--gr-chart-2#059669#34d399Второй цвет серии для графиков и data-visualization элементов.
--gr-chart-3--gr-chart-3#ea580c#fb923cТретий цвет серии для графиков и data-visualization элементов.
--gr-chart-4--gr-chart-4#0284c7#38bdf8Четвёртый цвет серии для графиков и data-visualization элементов.
--gr-chart-5--gr-chart-5#db2777#f472b6Пятый цвет серии для графиков и data-visualization элементов.

Тени

ТокенСветлаяТёмнаяРоль
--gr-shadow-1--gr-shadow-10 1px 2px rgba(15, 23, 42, 0.08)0 1px 2px rgba(0, 0, 0, 0.45)Уровень elevation 1. Синеватая полупрозрачная тень читается на светлом фоне мягче чёрной.
--gr-shadow-2--gr-shadow-20 8px 24px rgba(15, 23, 42, 0.14)0 8px 24px rgba(0, 0, 0, 0.55)Уровень elevation 2 для всплывающих слоёв.
--gr-shadow-3--gr-shadow-30 16px 48px rgba(15, 23, 42, 0.20)0 16px 48px rgba(0, 0, 0, 0.65)Уровень elevation 3 для модальных слоёв.