Стилизация
Вся визуальная настройка — через CSS-переменные с префиксом --daterly-*. Никакого CSS-in-JS, никаких className-инъекций.
Готовые пресеты
Кликни по пресету слева — справа сразу видно превью и CSS-токены, которые нужно скопировать в свой :root.
Дата
css
:root {
--daterly-color-accent: #7c5cff;
--daterly-color-border-focus: #7c5cff;
--daterly-color-label-focus: #7c5cff;
--daterly-color-today-bg: rgba(124, 92, 255, 0.12);
--daterly-radius: 8px;
}Подключение
import 'daterly/styles'Этот импорт подгружает базовые переменные и стили react-day-picker. После этого переопределяй нужные токены через :root или scope-селектор.
Основные токены
:root {
/* Цвета */
--daterly-color-accent: #7c83ff;
--daterly-color-text: #1a1a1a;
--daterly-color-placeholder: #9e9e9e;
--daterly-bg: #ffffff;
/* Рамки */
--daterly-border-color: #e0e0e0;
--daterly-border-color-focus: var(--daterly-color-accent);
--daterly-border-color-failed: #ef4444;
--daterly-radius: 8px;
/* Типографика */
--daterly-font-family: inherit;
--daterly-font-size: 14px;
/* Календарь */
--daterly-day-bg-selected: var(--daterly-color-accent);
--daterly-day-bg-hover: rgba(124, 131, 255, 0.1);
--daterly-day-bg-range: rgba(124, 131, 255, 0.15);
}Состояния через data-*
Состояния не задаются классами — они выражены через data-* атрибуты на корневом элементе:
.daterly[data-focused] { /* в фокусе или попап открыт */ }
.daterly[data-filled] { /* в инпуте есть значение */ }
.daterly[data-failed] { /* состояние ошибки */ }
.daterly[data-disabled] { /* disabled или loading */ }Это позволяет стилизовать состояния без JS-классов и без aria-* костылей.
Скоуп
Если нужны разные темы для разных частей приложения — задавай переменные на конкретном предке:
.dark-section {
--daterly-bg: #1a1a1a;
--daterly-color-text: #e0e0e0;
--daterly-border-color: #333;
}Тёмная тема
Готовой [data-theme="dark"] темы в пакете нет — задаётся пользователем через переопределение переменных. Минимальный пример:
@media (prefers-color-scheme: dark) {
:root {
--daterly-bg: #0a0a0f;
--daterly-color-text: #e6e7ee;
--daterly-color-placeholder: #6a6e80;
--daterly-border-color: rgba(255, 255, 255, 0.1);
}
}