Пример использования:
https://x.ozma.org/views/admin/color_variants_table
После перехода по ссылке слева вверху можно нажать на бургер и выбрать тему светлую или темную.
Цветовые варианты — способ задания цветов для компонентов системы. Они похожи на варианты в Bootstrap, но отличаются возможностью редактирования, добавления дополнительных вариантов и генерации их динамически.
Варианты хранятся в таблице funapp.color_variants
. При создании инстанса в ней уже скорее всего будут варинаты, повторяющие варианты из Bootstrap, и поддержка тёмной темы.
Цветовой вариант задаётся названием, темой, цветом фона (background), цветом текста (foreground) и цветом рамки (border), но можно задать только цвет фона, остальные цвета подберутся автоматически.
Цвета задаются примерно как в CSS, поддерживаются hex-коды (#aaa
, #112233
), rgb/rgba (rgb(100, 100, 100)
, rgba(100, 100, 100, 0.5)
), hsl/hsla (в отличии от CSS, s
и l
задаются от 0
до 1
, а не от 0%
до 100%
) и стандартные названия html-цветов (red
, black
).
Существуют "магические" названия магических вариантов, которые применяются по умолчанию к различным элементам:
default
— применяется ко всем элементам, фону и прочему
table
input
form
tableCell
kanban
kanbanCard
interface
— верхняя и нижняя панели интерфейса
reference
— значения в мультиселектах
button
Можно задавать вариант не всем одинаковым элементам, а отдельно каждой ячейке таблицы, кнопке, инпуту и так далее, названия атрибутов для этого см. funapp. Эти атрибуты принимают либо название варианта, например, cell_variant = "primary"
, либо объект для динамического создания, например, cell_variant = { background: '#112233' }
. Возможные ключи в объекте: background
, foreground
и border
, где только первый является обязательным. Цвета задаются строками, поддерживаются те же значения, что и в таблице.
Список возможных тем хранится в таблице funapp.color_themes
.
Пользователь может выбрать тему в бургер-меню (три горизонтальные полосы слева сверху).
От выбранной темы зависит, какой набор вариантов будет использоваться.
Темы light
и dark
являются "магическими". light
является темой по умолчанию и варианты из неё будут выбраны, если в теме, которую использует пользователь, нет нужного варианта (например, при таблице вариантов со скришота выше, если у пользователя установлена тема dark
, а где-то используется вариант success
, то он будет взят из темы light
). dark
установится сама, если в настройках браузера/ОС пользователя указано, что он предпочитает тёмную тему.