Для интеграции Carbon Design System в проект на SvelteKit первым шагом является установка необходимых пакетов. Carbon предоставляет несколько модулей: основной CSS-фреймворк, набор компонентов React, а также иконки и вспомогательные утилиты. Для SvelteKit оптимальным вариантом будет использование CSS и SVG иконок, так как полноценная React-версия компонентов требует адаптации через обёртки.
npm install carbon-components carbon-components-svelte carbon-icons-svelte
После установки необходимо подключить глобальные стили Carbon в src/app.css или src/app.postcss (если используется PostCSS):
@import 'carbon-components/css/carbon-components.min.css';
В SvelteKit глобальные стили подключаются через +layout.svelte:
Это гарантирует, что все компоненты Carbon будут корректно отображаться и использовать стили.
Библиотека carbon-components-svelte предоставляет полностью адаптированные Svelte-компоненты, что позволяет интегрировать Carbon без использования React.
Простейший пример использования кнопки Carbon:
Ключевые параметры:
primary, secondary,
danger).sm, md,
lg).Carbon предлагает широкий набор элементов: TextInput,
Select, Checkbox, RadioButton и
Toggle.
Пример текстового поля с валидацией:
Особенности:
Использование иконок осуществляется через
carbon-icons-svelte:
Каждая иконка доступна в нескольких размерах (16, 20, 32, 64 px), что позволяет адаптировать интерфейс под различные контексты.
Carbon поддерживает кастомизацию цветов и темы через CSS-переменные. В SvelteKit это удобно использовать в глобальных стилях:
:root {
--cds-font-family: 'IBM Plex Sans', sans-serif;
--cds-ui-background: #f4f4f4;
--cds-ui-01: #ffffff;
--cds-ui-02: #e0e0e0;
--cds-ui-03: #8d8d8d;
--cds-brand-01: #0f62fe;
--cds-support-error: #da1e28;
}
Важные переменные:
--cds-ui-background — фон приложения.--cds-ui-01, --cds-ui-02,
--cds-ui-03 — слои пользовательского интерфейса.--cds-brand-01 — основной брендовый цвет.--cds-support-error — цвет ошибок и
предупреждений.Изменение переменных позволяет создавать уникальный визуальный стиль без модификации исходного CSS Carbon.
Для удобства интеграции рекомендуется создать отдельную директорию для Carbon-компонентов:
src/lib/carbon/
├── buttons.svelte
├── inputs.svelte
├── layouts.svelte
Пример переиспользуемого компонента кнопки:
Такой подход облегчает поддержку и унификацию стиля во всём проекте.
Carbon-компоненты полностью интегрированы с системой реактивности Svelte. Пример передачи события из компонента:
Принимаю условия
Состояние: {checked ? 'Включено' : 'Выключено'}
Использование bind: обеспечивает автоматическое
обновление состояния и повторный рендер без дополнительных
обработчиков.
Carbon предоставляет компоненты DataTable и
Modal:
Имя
Возраст
{#each rows as row}
{row.name}
{row.age}
{/each}
Modal позволяет создавать всплывающие окна с кнопками действия и обратной связью без дополнительной логики.
Такое разделение обеспечивает чистоту кода, легкую поддержку и масштабируемость интерфейса.