Основы

Токены

Всё на этой странице читается прямо из токен-файлов @ilomee/aura-core — здесь нет ни одной копии значений. Поменяйте тему или акцент в шапке, и значения ниже пересчитаются: это те же CSS-переменные, что использовало бы ваше приложение.

Акценты

5 акцентов. Каждый — пара для градиента плюс сплошной --accent, свой на каждую тему. Выберите любой в шапке, и сайт перекрасится.

Свой цвет

Пять акцентов выше — пресеты, а не предел. Каждое производное от акцента значение в таблице стилей — градиент, все двенадцать ступеней шкалы, кольца фокуса, все ролевые алиасы — это <code>color-mix()</code> поверх трёх кастомных свойств, который считает сам браузер. Переопределите их — и палитра поедет следом: без пересборки, без нового селектора, без форка.

Свой градиент#FF6B00 · #FFC300
Один цвет, без градиента#E11D48
theme.tsx
import { accentVars } from '@ilomee/aura-core';
import { AuraProvider } from '@ilomee/aura-react';

// Свой градиент.
<AuraProvider vars={accentVars({ from: '#FF6B00', to: '#FFC300' })}>…</AuraProvider>

// Один цвет вместо градиента: обе точки несут его, поэтому --gradient отрисуется плоским.
<AuraProvider vars={accentVars('#E11D48')}>…</AuraProvider>

// Сплошной цвет может отличаться от градиента — им красятся рамки, кольца фокуса и текст.
<AuraProvider vars={accentVars({ from: '#FF6B00', to: '#FFC300', accent: '#F05A38' })}>…</AuraProvider>

Без библиотеки компонентов это три объявления — те самые, что за вас пишет хелпер.

brand.css
:root {
  --grad-a: #ff6b00;
  --grad-b: #ffc300;
  --accent: #ff6b00;
}

Поверхности и текст

Обе шкалы рядом. Переключатель темы решает, какая из них сейчас работает.

light
--canvas#F4F6F8
--surface#FFFFFF
--surface-2#EEF1F5
--surface-3#E1E6EE
--border#E5E8EE
--border-strong#D2D8E1
--text#13161C
--text-muted#5A616E
--text-faint#8A909C
dark
--canvas#0B0C10
--surface#15171E
--surface-2#1C1F28
--surface-3#262A35
--border#272B35
--border-strong#363B48
--text#ECEEF3
--text-muted#9BA2AF
--text-faint#697080

Цвет наведения

Наведение рисуют шесть правил — вторичная и призрачная кнопки, иконочная кнопка, крестик чипа, заголовок аккордеона и опция под курсором в списке. Все шесть читают --aura-hover-bg с откатом на --surface-2, поэтому смена цвета — одно объявление, а не шесть переопределений. Насколько далеко оно достанет, решает то, где вы его поставите. Намеренно узко: дорожка сегментированного контрола и выключенное поле — тоже --surface-2, и ни то, ни другое не наведение.

:root    { --aura-hover-bg: color-mix(in srgb, var(--accent) 10%, transparent); }
.sidebar { --aura-hover-bg: #1b1f2a; }

Семантика

success#1E9E6A
warning#D98A0B
danger#E5484D
info#2F8FF5

Форма и тени

скругления — управляются data-corner
r1
r2
r3
r4
высота
shadow-1
shadow-2
shadow-3

Отступы

gap со значением 4 на любом лэйаут-компоненте означает var(--space-4).

1 · 4px
2 · 8px
3 · 12px
4 · 16px
5 · 20px
6 · 24px
8 · 32px
10 · 40px

Два семейства

Каждый размер из шкалы выше — это одно из двух семейств. Ни одно не поставляется вместе с библиотекой: --font и --mono называют семейство и откатываются на системное, поэтому проект, не загрузивший ни одного, всё равно получает всю шкалу — системным шрифтом, в правильных размерах и начертаниях.

ИнтерфейсСъешь ещё этих мягких булок--font: 'Onest', system-ui, sans-serif
МоноширинныйСъешь ещё этих мягких булок--mono: 'DM Mono', monospace

Два объявления, там же, где переопределяется акцент. Загрузите шрифт так, как проект уже загружает шрифты — через @font-face, тег link или импорт сборщика, — и направьте токен на него: все компоненты читают токен, поэтому больше менять нечего.

brand.css
@font-face {
  font-family: 'Your Sans';
  src: url('/fonts/your-sans.woff2') format('woff2');
  font-display: swap;
}

:root {
  --font: 'Your Sans', system-ui, sans-serif;
  --mono: 'Your Mono', ui-monospace, monospace;
}

Типографика

display · clamp(1.75rem, 1.417rem + 1.667vw, 2.75rem)Съешь ещё этих мягких булок
h1 · clamp(1.5rem, 1.292rem + 1.042vw, 2.125rem)Съешь ещё этих мягких булок
h2 · 24pxСъешь ещё этих мягких булок
h3 · 18pxСъешь ещё этих мягких булок
bodyL · 16pxСъешь ещё этих мягких булок
body · 14pxСъешь ещё этих мягких булок
caption · 12pxСъешь ещё этих мягких булок
overline · 12pxСъешь ещё этих мягких булок
mono · 14pxСъешь ещё этих мягких булок

Как переключается всё сразу

Четыре атрибута на любом предке — обычно на <html> — пересчитывают все переменные под ним. Это и есть весь API темизации; JavaScript в нём не участвует.

АтрибутЗначенияПо умолчанию
data-themelight · darklight
data-accentaqua · sunset · iris · lime · roseaqua
data-cornerrounded · sharp · pillrounded
data-densitycomfortable · compactcomfortable