Стилизация
Архитектура
FishtVue - это библиотека, не зависящая от дизайна, поэтому, в отличие от некоторых других UI-библиотек, она не навязывает определенный стиль, такой как Material Design. Стилизация отделена от компонентов с помощью тем. Тема состоит из двух частей: базы и пресета. База - это стилевые правила с CSS-переменными в качестве заполнителей, тогда как пресет - это набор дизайн-токенов для заполнения базы, сопоставляя токены с CSS-переменными. База может быть настроена с разными пресетами.
Дизайн-токены
Основой архитектуры стилизованного режима является концепция, называемая дизайн-токеном. Пресет определяет конфигурацию токенов в трех уровнях: примитивные, семантические и компонентные.
Примитивные токены
Примитивные токены не имеют контекста. Цветовая палитра, такая как blue-50 до blue-900, является хорошим примером примитивного токена. Токен с именем blue-500 может использоваться как основной цвет или фон сообщения, но само по себе имя токена не указывает на контекст. Обычно они используются семантическими токенами.
Семантические токены
Семантические токены определяют контент, и их имена указывают, где они используются. Хорошо известным примером
семантического токена является primary.color. Семантические токены сопоставляются с примитивными токенами или другими
семантическими токенами. Группа токенов colorScheme - это специальная переменная для определения токенов на основе
активной цветовой схемы в приложении, позволяя использовать разные токены в зависимости от цветовой схемы, например,
темного режима.
Токены компонентов
Токены компонентов - это изолированные токены для каждого компонента, такие как inputtext.background или
button.color, которые сопоставляются с семантическими токенами. Например, токен компонента button.background
сопоставляется с семантическим токеном primary.color, который сопоставляется с примитивным токеном green.500.
Лучшие практики
- Используйте примитивные токены при определении основной цветовой палитры.
- Используйте семантические токены для указания общих элементов дизайна, таких как кольцо фокуса, основные цвета и поверхности.
- Используйте токены компонентов при настройке конкретного компонента.
Определяя свои собственные дизайн-токены как пользовательский пресет, вы сможете определить свой собственный стиль, не касаясь CSS. Переопределение компонентов FishtVue с помощью классов стилей не является лучшей практикой и должно быть последним средством; дизайн-токены - это рекомендуемый подход.
Опции темы
Свойство optionsTheme позволяет вам настроить глобальное поведение темизации в FishtVue. Оно поддерживает установку
имени темы, пользовательских префиксов CSS-переменных, селекторов темного/светлого режима и расширенных опций, таких как
CSS-слои и контроль минификации.
Базовое использование
nameTheme
Опция nameTheme позволяет вам выбрать, какой встроенный пресет темы использовать. Вы можете выбрать из "Aurora",
"Harmony" или "Sapphire", в зависимости от визуального стиля, который вы хотите для своего приложения. По умолчанию
используется "Aurora". Эта настройка особенно полезна, если вы планируете переключаться между разными дизайн-системами
или нуждаетесь в согласованной теме для нескольких проектов.
prefix
Опция prefix позволяет вам определить пользовательский префикс для всех CSS-переменных, сгенерированных темой. По
умолчанию он установлен на "fishtvue".
lightModeSelector
Опция lightModeSelector позволяет вам установить пользовательский CSS-селектор для управления тем, когда должны
применяться стили светлого режима. По умолчанию светлый режим всегда активен (поэтому значение - просто пустая строка).
Эта опция становится полезной, если вы вручную переключаетесь между светлым и темным режимами и хотите иметь больше
контроля над тем, как применяется светлый режим.
darkModeSelector
Опция darkModeSelector позволяет вам указать CSS-селектор, который будет активировать стили темного режима. Например,
вы можете использовать "html.dark" или ".dark-mode", если вы вручную переключаете темный режим в своем приложении.
Если вы ничего не установите, будет использоваться предпочтение системы по умолчанию. Вы также можете полностью
отключить темный режим, установив эту опцию в false.
Пример: Переключение темного режима
Чтобы полностью отключить поддержку темного режима:
layers
Опция layers позволяет вам обернуть сгенерированный CSS в
пользовательский CSS-каскадный слой. Это
помогает управлять приоритетом стилей и упрощает интеграцию с другими фреймворками. Вы можете использовать встроенный
слой "fishtvue" или определить свой собственный. По умолчанию слой не применяется, если вы явно не установите эту
опцию.
Или определите пользовательский порядок каскада:
isNotMinifyCSS
Опция isNotMinifyCSS контролирует, должен ли сгенерированный CSS быть минифицирован. По умолчанию она установлена в
false, что означает, что CSS будет минифицирован для лучшей производительности. Если вы установите ее в true,
минификация будет отключена, что может сделать вывод более удобным для чтения и отладки во время разработки.
Встроенные пресеты
FishtVue включает несколько пресетов тем, разработанных для различных философий дизайна:
- Aurora – Пресет по умолчанию, яркий и современный
- Harmony – Минималистичный и мягкий
- Sapphire – Дизайн, ориентированный на предприятие
Эти пресеты могут быть расширены или использованы в качестве справочников для создания вашей собственной пользовательской дизайн-системы.
Советы
- Сочетайте
prefixиlayersдля правильного пространства имен и организации вашего CSS. - Используйте
darkModeSelectorиlightModeSelectorдля поддержки тем, управляемых пользователем. - Отключите
isNotMinifyCSSв продакшене для оптимальной производительности.
Утилиты
usePreset
Полностью заменяет текущие пресеты. Распространенный случай использования - динамическое изменение пресета во время выполнения.
updatePreset
Объединяет предоставленные токены с текущим пресетом. Примером может быть динамическое изменение основной цветовой палитры.
updatePrimaryPalette
Обновляет основные цвета. Это сокращение для выполнения того же обновления с использованием updatePreset.
updateSurfacePalette
Обновляет цвета поверхности. Это сокращение для выполнения того же обновления с использованием updatePreset.
$dt
Функция $dt возвращает информацию о токене, такую как полный путь и значение. Это полезно, если вам нужно программно
получить доступ к токенам.
palette
Возвращает оттенки и тона заданного цвета от 50 до 950 в виде объекта.