Carbon Components Svelte предоставляет гибкий механизм настройки цветовой палитры, позволяющий создавать интерфейсы, соответствующие корпоративному стилю и требованиям доступности. Цветовая палитра в Svelte-компонентах основана на системе переменных CSS, которые можно изменять глобально или на уровне отдельных компонентов.
В основе системы лежат CSS-переменные, определённые в
:root. Каждая переменная отвечает за конкретный элемент
интерфейса:
:root {
--cds-ui-01: #ffffff; /* фон интерфейса */
--cds-ui-02: #f4f4f4; /* вторичный фон */
--cds-text-01: #161616; /* основной текст */
--cds-text-02: #525252; /* второстепенный текст */
--cds-support-error: #da1e28; /* цвет ошибок */
--cds-support-warning: #f1c21b; /* цвет предупреждений */
}
Принцип работы: компоненты Svelte автоматически
подхватывают эти переменные при рендеринге. Изменение значения
переменной в :root мгновенно отражается во всём
приложении.
Для глобальной настройки создаётся отдельный CSS-файл или модуль Svelte, где переопределяются базовые переменные. Например:
/* custom-theme.css */
:root {
--cds-ui-01: #0f0f0f;
--cds-ui-02: #1a1a1a;
--cds-text-01: #ffffff;
--cds-text-02: #cccccc;
--cds-support-error: #ff4d4f;
}
Подключение в Svelte:
<script>
import './custom-theme.css';
</script>
Все компоненты Carbon автоматически применят новые цвета без необходимости менять их код.
Иногда требуется изменить цвет только у одного компонента. Для этого переменные CSS можно переопределить внутри блока компонента:
<style>
.custom-button {
--cds-ui-01: #ff5722; /* фон кнопки */
--cds-text-01: #ffffff; /* цвет текста */
}
</style>
<Button class="custom-button">Нажми меня</Button>
Этот подход позволяет создавать уникальные визуальные элементы без влияния на глобальные стили.
Carbon Components поддерживает переключение тем через CSS-переменные:
:root {
--cds-ui-01: #ffffff;
--cds-text-01: #161616;
}
[data-theme='dark'] {
--cds-ui-01: #161616;
--cds-text-01: #ffffff;
}
В Svelte переключение темы выполняется динамически:
<script>
let theme = 'light';
function toggleTheme() {
theme = theme === 'light' ? 'dark' : 'light';
document.documentElement.setAttribute('data-theme', theme);
}
</script>
<button on:click={toggleTheme}>Переключить тему</button>
Компоненты автоматически подхватывают новые значения переменных, обеспечивая консистентность интерфейса.
Для удобства можно создавать отдельные объекты с набором цветов и динамически их применять:
const palette = {
primary: '#0f62fe',
secondary: '#393939',
error: '#da1e28',
warning: '#f1c21b'
};
Object.entries(palette).forEach(([key, value]) => {
document.documentElement.style.setProperty(`--cds-${key}`, value);
});
Такой метод удобен для интеграции с системами управления темами или конфигурациями продукта.
Carbon Components Svelte учитывает принципы WCAG. Основные моменты:
Для проверки контрастности можно использовать встроенные инструменты
браузера или библиотеки вроде color-contrast-checker.
При использовании SCSS или PostCSS переменные Carbon можно импортировать и использовать напрямую:
@import 'carbon-components-svelte/css/variables.scss';
$custom-ui-01: #fafafa;
:root {
--cds-ui-01: #{$custom-ui-01};
}
Это позволяет создавать сложные динамические темы с миксинами и функциями цветов.
Для плавного перехода между темами можно использовать CSS-переходы:
:root {
transition: --cds-ui-01 0.3s ease, --cds-text-01 0.3s ease;
}
При переключении темы цвета будут менять значение с анимацией, улучшая пользовательский опыт.
Настройка цветовой палитры в Carbon Components Svelte строится на основе переменных CSS, гибко интегрируется с глобальными и локальными стилями, поддерживает темизацию и соблюдает принципы доступности. Использование динамических объектов для цветов и анимаций позволяет создавать современные, адаптивные интерфейсы с минимальными усилиями.