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

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))