Теперь использование компонентов стало проще! Мы движемся к полной изоляции компонентов, что позволит вам легко подключать и использовать их.
css-tokens.css, css-tokens-light.css, css-tokens-dark.css для использования глобальных значений дизайн-системы, например, цветов, размеров и параметров шрифтов.kbq-light к элементу <body> вашего HTML-документа для использования светлой темы и kbq-dark для темной темы.@use '@koobiq/components/prebuilt-themes/theme.css';
Так выглядит тег body в index.html после добавления необходимых классов:
<body class="kbq-app-background kbq-light"> <app></app> </body>
Класс kbq-app-background используется для применения базовых стилей темы к приложению - цвет фона и текста.
Для переключения темы достаточно изменить соответствующий селектор, чтобы перейти от темной к светлой теме (или наоборот). Например, с kbq-dark на kbq-light.
Цветовые значения будут автоматически адаптированы под выбранную тему.
Для переключения тем используйте ThemeService. Вот пример:
import { ThemeService } from '@koobiq/components/core'; import { Component } from '@angular/core'; @Component() class AppComponent { constructor(private themeService: ThemeService) { /* светлая тема станет активной, к тегу `body` добавится класс `kbq-light` */ this.themeService.setTheme(0); } }
Вот таблица доступных селекторов для темной и светлой тем:
| Тема | Селекторы |
|---|---|
| Темная | .kbq-dark, .theme-dark, .kbq-theme-dark |
| Светлая | .kbq-light, .theme-light, .kbq-theme-light |
Мы рекомендуем использовать те селекторы, которые указаны в сервисе ThemeService (kbq-dark для темной и kbq-light для светлой).
Данный механизм возможно реализовать с помощью window.matchMedia;
Для реализации переключения темы в зависимости от операционной системы необходимы выполнить 3 условия:
colorAutomaticTheme = window.matchMedia('(prefers-color-scheme: light)');
ThemeService при инициализации приложения. В данной теме свойство className будет устанавливаться по условию{ name: 'Как в системе', className: this.colorAutomaticTheme.matches ? Themes.Default : Themes.Dark, selected: false },
this.colorAutomaticTheme.addEventListener('change', this.setAutoTheme);
Пример реализации переключения тем в документации Koobiq тут.
Изменить цвета, размеры и шрифты можно задав соответствующие значения CSS-переменным компонента. Например:
.kbq-dark .kbq-alert { --kbq-alert-default-contrast-container-background: var(--kbq-foreground-contrast-secondary); --kbq-alert-default-contrast-container-title: var(--kbq-background-contrast-fade); }
Работает стабильно с @koobiq/design-tokens@3.5.1.
Если уже используются CSS-переменные из пакета @koobiq/design-tokens, необходимо удалить CSS-переменные для всех включенных в дизайн систему компонентов.
В них используется значение по умолчанию, они вам больше не нужны.
В каких файлы необходимо внести изменения:
Токены дизайн-системы – это набор значений, которые определяют визуальный стиль наших компонентов. Они хранятся в пакете @koobiq/design-tokens и позволяют нам легко управлять стилем и обеспечивать его согласованность во всех компонентах.
Компонентные CSS-переменные – это набор значений, которые используются в стилях наших компонентов. Они задаются на основе токенов и хранятся в репозитории @koobiq/components.
Это позволяет нам легко использовать токены в стилях компонентов и ускоряет разработку, в том числе проведение дизайн-ревью.
На данный момент компонентные токены в пакете @koobiq/design-tokens больше не обновляются.
@koobiq/design-tokens в версии 4.0.0.@koobiq/components.