Конфигурация

Trace CSS оформляет нативный HTML с помощью общего набора пользовательских свойств CSS. Чтобы изменить весь интерфейс, начните с токенов палитры и типографики. Токены компонентов позволяют настроить цвета, отступы и форму отдельных элементов.

#Палитра по умолчанию

Trace выводит по четыре оттенка для основного, дополнительного и нейтрального цветов. Формулы меняют светлоту в OKLCH, сохраняя цветовой тон и насыщенность. При смене базового цвета его оттенки обновляются автоматически.

Основной
  • Самый светлый
  • Светлый
  • Базовый
  • Тёмный
  • Самый тёмный
Дополнительный
  • Самый светлый
  • Светлый
  • Базовый
  • Тёмный
  • Самый тёмный
Нейтральный
  • Самый светлый
  • Светлый
  • Базовый
  • Тёмный
  • Самый тёмный
Состояние
  • Успех
  • Опасное действие
Светлая тема --trace-bg-light --trace-text-light
Тёмная тема --trace-bg-dark --trace-text-dark

Токены --trace-bg и --trace-text выбирают цвета фона и текста через light-dark(). Примеры с data-mode см. в статье Цветовые схемы.

#Переопределение токенов

Подключите свои стили после Trace CSS и задайте значения на :root. Если используете сборку с ограниченной областью, задайте значения на контейнере .trace-css.

:root {
  --trace-primary: oklch(48% 0.15 255deg);
  --trace-secondary: oklch(88% 0.14 90deg);
  --trace-radius-control: 0.5rem;
  --trace-font-family-sans: system-ui, sans-serif;
}

button.checkout {
  --trace-button-padding-inline: 1.5rem;
}

В обоих примерах используются одинаковые элементы управления. В настроенном варианте применены основной цвет, дополнительный цвет и радиус из примера выше.

По умолчанию
С настройками

#Справочник CSS-переменных

Здесь перечислены публичные свойства --trace-* из установленной полной сборки. Значения могут различаться в зависимости от селектора, варианта, состояния или размера области просмотра.

#Палитра и темы

ПеременнаяОбъявленные значения
--trace-bg
light-dark(var(--trace-bg-light), var(--trace-bg-dark))
--trace-bg-dark
oklch(19.7902% .0189863 235.357)
--trace-bg-light
oklch(96.2441% .00418752 236.497)
--trace-danger
oklch(52.3358% .198564 31.9584)
--trace-neutral
oklch(50% 0 0)
--trace-neutral-dark
oklch(from var(--trace-neutral) calc(l - .25) c h)
--trace-neutral-darker
oklch(from var(--trace-neutral) calc(l - .5) c h)
--trace-neutral-light
oklch(from var(--trace-neutral) calc(l + .25) c h)
--trace-neutral-lighter
oklch(from var(--trace-neutral) calc(l + .5) c h)
--trace-primary
oklch(37.662% .0682014 228.503)
--trace-primary-dark
oklch(from var(--trace-primary) calc(l * .7) c h)
--trace-primary-darker
oklch(from var(--trace-primary) calc(l * .4) c h)
--trace-primary-light
oklch(from var(--trace-primary) calc(l + (1 - l) * .3) c h)
--trace-primary-lighter
oklch(from var(--trace-primary) calc(l + (1 - l) * .6) c h)
--trace-secondary
oklch(87.9592% .170365 81.3235)
--trace-secondary-dark
oklch(from var(--trace-secondary) calc(l * .7) c h)
--trace-secondary-darker
oklch(from var(--trace-secondary) calc(l * .4) c h)
--trace-secondary-light
oklch(from var(--trace-secondary) calc(l + (1 - l) * .3) c h)
--trace-secondary-lighter
oklch(from var(--trace-secondary) calc(l + (1 - l) * .6) c h)
--trace-success
oklch(69.13% .14353 158.708)
--trace-text
light-dark(var(--trace-text-light), var(--trace-text-dark))
--trace-text-dark
oklch(92.494% 0 0)
--trace-text-light
oklch(9.44872% .0654731 264.052)

#Типографика

ПеременнаяОбъявленные значения
--trace-font-body
var(--trace-font-family-sans)
--trace-font-code
var(--trace-font-family-mono)
--trace-font-family-emoji
"Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji"
--trace-font-family-mono
ui-monospace, "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace, var(--trace-font-family-emoji)
--trace-font-family-sans
system-ui, sans-serif, var(--trace-font-family-emoji)
--trace-font-heading
var(--trace-font-body)
--trace-font-size-h1
3rem
2rem
--trace-font-size-h2
2.5rem
1.75rem
--trace-font-size-h3
2rem
1.5rem
--trace-font-size-h4
1.5rem
1.25rem
--trace-font-size-h5
1.25rem
1.125rem
--trace-font-size-h6
1rem
--trace-heading-line-height
1.25
--trace-heading-margin-block-end
1rem
--trace-paragraph-margin-block-end
1rem
--trace-typography-border
light-dark(var(--trace-neutral-light), var(--trace-neutral-dark))
--trace-typography-line-height
1.6

#Общие стили элементов управления

ПеременнаяОбъявленные значения
--trace-control-bg
light-dark(var(--trace-neutral-lighter), var(--trace-bg-dark))
--trace-control-padding-block
.625rem
--trace-control-padding-inline
1rem
--trace-radius-control
var(--trace-radius-sm)
--trace-radius-full
50%
--trace-radius-none
0
--trace-radius-sm
4px
--trace-shadow
5px 5px 0 0 var(--trace-shadow-color)
--trace-shadow-color
light-dark(oklch(from var(--trace-neutral-darker) l c h / 25%), oklch(from var(--trace-neutral-lighter) l c h / 25%))

#Кнопки

ПеременнаяОбъявленные значения
--trace-button-bg
transparent
--trace-button-border
var(--trace-button-outline-color)
--trace-button-box-shadow
var(--trace-shadow)
--trace-button-color
light-dark(var(--trace-primary-darker), var(--trace-secondary))
var(--trace-primary-light)
var(--trace-danger)
--trace-button-contrast
light-dark(var(--trace-secondary), var(--trace-primary-dark))
var(--trace-secondary-lighter)
var(--trace-neutral-lighter)
--trace-button-font-size
1rem
.875rem
1.125rem
--trace-button-icon-gap
.5em
--trace-button-line-height
1.5rem
1.25rem
1.75rem
--trace-button-loader-color
var(--trace-button-contrast)
--trace-button-outline-color
var(--trace-button-color)
var(--trace-input-focus)
--trace-button-padding-block
.375rem
.25rem
.5rem
--trace-button-padding-inline
.75rem
.5rem
1rem
--trace-button-radius
var(--trace-radius-control)
--trace-button-text
var(--trace-button-outline-color)
var(--trace-button-contrast)

#Поля ввода

ПеременнаяОбъявленные значения
--trace-input-border
light-dark(var(--trace-primary), var(--trace-secondary))
--trace-input-error
var(--trace-danger)
--trace-input-focus
light-dark(var(--trace-primary-light), var(--trace-secondary-light))
--trace-input-font-size
1rem
.875rem
1.125rem
--trace-input-icon-size
1.25rem
1rem
1.5rem
--trace-input-line-height
1.5rem
1.25rem
1.75rem
--trace-input-padding-block
.375rem
.25rem
.5rem
--trace-input-padding-inline
.625rem
.5rem
.75rem
--trace-input-placeholder
light-dark(var(--trace-neutral), var(--trace-neutral-light))
--trace-input-radius
var(--trace-radius-control)
--trace-input-shadow
var(--trace-shadow)
--trace-input-text
var(--trace-text)

#Многострочные поля

ПеременнаяОбъявленные значения
--trace-textarea-border
light-dark(var(--trace-primary), var(--trace-secondary))
--trace-textarea-error
var(--trace-danger)
--trace-textarea-focus
light-dark(var(--trace-primary-light), var(--trace-secondary-light))
--trace-textarea-font-size
1rem
.875rem
1.125rem
--trace-textarea-line-height
1.5rem
1.25rem
1.75rem
--trace-textarea-padding-block
.375rem
.25rem
.5rem
--trace-textarea-padding-inline
.625rem
.5rem
.75rem
--trace-textarea-placeholder
light-dark(var(--trace-neutral), var(--trace-neutral-light))
--trace-textarea-radius
var(--trace-radius-control)
--trace-textarea-shadow
var(--trace-shadow)
--trace-textarea-text
var(--trace-text)

#Списки выбора

ПеременнаяОбъявленные значения
--trace-select-arrow
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23646b79' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")
--trace-select-arrow-offset
var(--trace-select-padding-inline)
--trace-select-arrow-size
1.25em
--trace-select-border
light-dark(var(--trace-primary), var(--trace-secondary))
--trace-select-error
var(--trace-danger)
--trace-select-focus
light-dark(var(--trace-primary-light), var(--trace-secondary-light))
--trace-select-font-size
1rem
.875rem
1.125rem
--trace-select-line-height
1.5rem
1.25rem
1.75rem
--trace-select-padding-block
.375rem
.25rem
.5rem
--trace-select-padding-inline
.625rem
.5rem
.75rem
--trace-select-radius
var(--trace-radius-control)
--trace-select-shadow
var(--trace-shadow)
--trace-select-text
var(--trace-text)

#Чекбоксы

ПеременнаяОбъявленные значения
--trace-checkbox-color
light-dark(var(--trace-primary), var(--trace-secondary))
var(--trace-danger)
--trace-checkbox-mark
light-dark(var(--trace-neutral-lighter), var(--trace-primary-dark))
var(--trace-neutral-lighter)
--trace-checkbox-radius
var(--trace-radius-control)
--trace-checkbox-size
1.25rem
1rem
1.5rem

#Радиокнопки

ПеременнаяОбъявленные значения
--trace-radio-color
light-dark(var(--trace-primary), var(--trace-secondary))
var(--trace-danger)
--trace-radio-size
1.25rem
1rem
1.5rem

#Переключатели

ПеременнаяОбъявленные значения
--trace-switch-color
light-dark(var(--trace-primary), var(--trace-secondary))
var(--trace-danger)
--trace-switch-dot-active-size
.875rem
.625rem
1.125rem
--trace-switch-dot-size
.75rem
.5rem
1rem
--trace-switch-height
1.25rem
1rem
1.5rem
--trace-switch-icon-size
1rem
--trace-switch-padding
.125rem
--trace-switch-radius
var(--trace-radius-sm)
--trace-switch-width
2.125rem
1.75rem
2.625rem

#Ползунки

ПеременнаяОбъявленные значения
--trace-range-active-scale
1.15
--trace-range-color
light-dark(var(--trace-primary), var(--trace-secondary))
var(--trace-range-error)
ButtonText
--trace-range-duration
.15s
--trace-range-error
var(--trace-danger)
--trace-range-height
2rem
1.75rem
2.5rem
--trace-range-thumb-size
1.25rem
1rem
1.5rem
--trace-range-track-color
light-dark(var(--trace-primary-light), var(--trace-secondary-dark))
color-mix(in srgb, var(--trace-range-error), transparent 70%)
GrayText
--trace-range-track-size
.375rem
.25rem
.5rem

#Поля выбора файлов

ПеременнаяОбъявленные значения
--trace-file-button-bg
var(--trace-primary-light)
--trace-file-button-text
var(--trace-secondary-lighter)

#Таблицы

ПеременнаяОбъявленные значения
--trace-table-accent
light-dark(var(--trace-primary), var(--trace-secondary))
--trace-table-border
color-mix(in oklch, var(--trace-table-accent), transparent 78%)
--trace-table-font-size
1rem
.875rem
--trace-table-footer-bg
transparent
--trace-table-header-bg
transparent
--trace-table-header-text
var(--trace-table-accent)
--trace-table-hover-bg
light-dark(color-mix(in oklch, var(--trace-primary), transparent 93%), color-mix(in oklch, var(--trace-secondary), transparent 90%))
--trace-table-line-height
1.5
--trace-table-padding-block
.75rem
.375rem
--trace-table-padding-inline
.75rem
.625rem
--trace-table-radius
0
--trace-table-row-heading
var(--trace-table-text)
--trace-table-stripe-bg
color-mix(in oklch, var(--trace-table-accent), transparent 97%)
--trace-table-text
var(--trace-text)
ПеременнаяОбъявленные значения
--trace-link-active
light-dark(var(--trace-primary-dark), var(--trace-secondary-dark))
--trace-link-color
light-dark(var(--trace-primary), var(--trace-secondary))
--trace-link-focus
var(--trace-link-color)
--trace-link-hover
light-dark(var(--trace-primary-light), var(--trace-secondary-light))
--trace-link-underline-offset
.2em
--trace-link-underline-thickness
.08em
--trace-link-visited
var(--trace-link-color)

#Элементы контента

ПеременнаяОбъявленные значения
--trace-blockquote-bg
light-dark(color-mix(in oklch, var(--trace-bg-light), var(--trace-neutral-darker) 5%), color-mix(in oklch, var(--trace-bg-dark), var(--trace-neutral-lighter) 8%))
--trace-blockquote-border
light-dark(var(--trace-primary), var(--trace-secondary))
--trace-blockquote-margin-block
1.5rem
--trace-blockquote-padding-block
.75rem
--trace-blockquote-padding-inline
1.25rem
--trace-divider-margin-block
2rem
--trace-kbd-bg
light-dark(var(--trace-neutral-dark), var(--trace-neutral-lighter))
--trace-kbd-border
light-dark(var(--trace-neutral-darker), var(--trace-neutral-light))
--trace-kbd-shadow
1px 1px 0 0 oklch(from var(--trace-neutral-darker) l c h / 25%)
--trace-kbd-text
light-dark(var(--trace-text-dark), var(--trace-text-light))
--trace-mark-bg
var(--trace-secondary-lighter)
--trace-mark-text
var(--trace-neutral-darker)

#Иконки

ПеременнаяОбъявленные значения
--trace-icon-size
var(--trace-button-line-height)
var(--trace-switch-icon-size, .75rem)
var(--trace-input-icon-size)
1.25rem

#Другие переменные

ПеременнаяОбъявленные значения
--trace-code-bg
light-dark(oklch(from var(--trace-neutral-darker) l c h / 4%), oklch(from var(--trace-neutral-lighter) l c h / 7%))
--trace-code-border
light-dark(var(--trace-typography-border), var(--trace-neutral-light))