Цвет

Цвет — то место, где дизайн-систему чаще всего принимают за палитру. Здесь нет цветов, здесь роли: поверхность, текст на ней, заливка, текст на заливке. Одна и та же роль несёт в каждой теме своё значение, и оба стоят в таблице.

  • Насыщенный тон не бывает цветом текста. У каждого тона есть тема, где он проваливает AA на обычной подложке; парная роль -text держит порог везде. Правило стережётся двумя гейтами библиотеки, а не вычиткой.
  • Там, где коэффициент контраста осмыслен, он посчитан функцией contrast() самой библиотеки — той же, которой пользуются её гейты, а не второй реализацией.

Основа: нейтральная палитра

ТокенЗначениеРоль
--gr-slate-0--gr-slate-0#ffffffНейтральный оттенок slate 0 для базовой palette scale, поверхностей и бордеров.
--gr-slate-50--gr-slate-50#f8fafcНейтральный оттенок slate 50 для базовой palette scale, поверхностей и бордеров.
--gr-slate-100--gr-slate-100#f1f5f9Нейтральный оттенок slate 100 для базовой palette scale, поверхностей и бордеров.
--gr-slate-200--gr-slate-200#e2e8f0Нейтральный оттенок slate 200 для базовой palette scale, поверхностей и бордеров.
--gr-slate-300--gr-slate-300#cbd5e1Нейтральный оттенок slate 300 для базовой palette scale, поверхностей и бордеров.
--gr-slate-400--gr-slate-400#94a3b8Нейтральный оттенок slate 400 для базовой palette scale, поверхностей и бордеров.
--gr-slate-500--gr-slate-500#64748bНейтральный оттенок slate 500 для базовой palette scale, поверхностей и бордеров.
--gr-slate-600--gr-slate-600#475569Нейтральный оттенок slate 600 для базовой palette scale, поверхностей и бордеров.
--gr-slate-700--gr-slate-700#334155Нейтральный оттенок slate 700 для базовой palette scale, поверхностей и бордеров.
--gr-slate-800--gr-slate-800#1e293bНейтральный оттенок slate 800 для базовой palette scale, поверхностей и бордеров.
--gr-slate-900--gr-slate-900#0f172aНейтральный оттенок slate 900 для базовой palette scale, поверхностей и бордеров.

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

ТокенСветлаяТёмнаяКонтрастРоль
--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-input--gr-input#e2e8f0#334155Цвет рамки и фона input-like контролов в состоянии покоя.
--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-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)Текст и иконки на заливке --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)Текст и иконки на заливке --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)Текст и иконки на заливке --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)Текст и иконки на заливке --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)Текст и иконки на заливке --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)Текст и иконки на заливке --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)Текст и иконки на заливке --gr-azure-solid.

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

ТокенСветлаяТёмнаяРоль
--gr-chart-1--gr-chart-1#4f46e5#6366f1Первый цвет серии для графиков и data-visualization элементов.
--gr-chart-2--gr-chart-2#10b981#34d399Второй цвет серии для графиков и data-visualization элементов.
--gr-chart-3--gr-chart-3#f97316#fb923cТретий цвет серии для графиков и data-visualization элементов.
--gr-chart-4--gr-chart-4#6366f1#818cf8Четвёртый цвет серии для графиков и data-visualization элементов.
--gr-chart-5--gr-chart-5#8b5cf6#a78bfaПятый цвет серии для графиков и 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 для модальных слоёв.

Источник: @feugene/granularity 0.41.0, tokens/*.json