Темы
У компонентов Lily стабильные крючки классов и ноль CSS — поэтому тема — это просто таблица стилей. Это руководство идёт от «подключите один файл» до «позвольте пользователю менять тему во время выполнения, с сохранением».
Что вы построите
Приложение, весь внешний вид которого пользователь может менять — начиная с одной подключённой таблицы стилей и заканчивая сохраняемым переключателем тем во время выполнения — примерно за 15 минут.
Прежде чем начать
Сначала завершите руководство по фреймворку для вашего стека сначала, чтобы у вас была небольшая форма Lily для применения темы. Всё здесь работает во всех семи фреймворках; примеры кода показывают Svelte и обычный HTML.
Шаг 1 — Подключите готовую тему
themes/ каталог содержит 45 автономных таблиц стилей. Скопируйте их в статические ресурсы приложения и подключите одну:
<link rel="stylesheet" href="/assets/themes/united-kingdom-national-health-service-england-for-patients.css" />
Основные моменты набора:
-
Государственный сектор — NHS England / Scotland / Wales, каждая в вариантах для пациентов и для специалистов; GOV.UK (
united-kingdom-government-digital-service); USWDS (united-states-web-design-system). - Вдохновлённые вендорами —
adobe-spectrum,mozilla-protocol. -
Общего назначения —
light,dark,nord,dracula,wireframe,corporate,synthwave, и многие другие.
Проверьте свою работу: перезагрузите страницу. Та же разметка, что вы построили в руководстве по фреймворку, теперь полностью оформлена — кнопки, поля, метки, кольца фокуса. Это сделала одна строка HTML — каждый компонент остался точно таким, каким был.
Шаг 2 — Переопределите что угодно
Селекторы темы обёрнуты в :where(...)у которого нулевая специфичность — поэтому любое написанное вами правило побеждает, просто и ясно:
/* After the theme link: your brand button, everything else themed */
.button {
background: #7c3aed;
border-radius: 9999px;
}
Шаг 3 — Переключение во время выполнения с theme-picker
theme-picker помощник — это безголовая кнопка-значок + список, владеющая всем жизненным циклом темы: он загружает выбранную таблицу стилей, подменяя один управляемый <link>
(запрашивается только активная тема), устанавливает
data-theme="{slug}" на документе и, по желанию, сохраняет в localStorage. Здесь показан Svelte; порты для React, Vue, Angular, HTML, Nunjucks и Blazor соответствуют ему контракт за контрактом:
<script>
import ThemePicker from "@lilydesignsystem/svelte-theme-picker";
</script>
<ThemePicker
label="Theme"
themesUrl="/assets/themes/"
themes={["light", "dark", "nord", "wireframe"]}
storageKey="my-app-theme"
/>
Вот и вся интеграция. Поведение клавиатуры следует шаблону списка WAI-ARIA APG; сам элемент управления безголовый (крючок класса
.theme-picker), поэтому он подхватывает любую активную тему.
Проверено 2026-08-29: именно этот фрагмент был скомпилирован против опубликованного 0.1.1 пакета через
svelte/server.
Шаг 4 — Реагируйте на тему в собственном CSS
Поскольку помощник устанавливает data-theme в корне документа, ваши собственные стили могут ветвиться по нему:
[data-theme="dark"] .site-logo { filter: invert(1); }
Заметки по серверному рендерингу
Помощник выполняет все записи в DOM внутри жизненного цикла mount/effect фреймворка, поэтому по построению безопасен для SSR. Чтобы избежать вспышки при первой отрисовке, отрисуйте на сервере <link> и
data-theme начальной темы (например, из cookie) — репозиторий помощника Svelte включает исполняемый пример cookie для SvelteKit, а остальные каталоги документируют тот же шаблон для своих стеков.
Дальнейшие шаги
- Помощники настроек — тот же шаблон для языка, размера текста, «Поделиться» и ввода даты/времени.
- Внесите тему — каждая представляет собой одну автономную таблицу стилей, нацеленную на крючки классов; см. как внести вклад.
Есть вопросы по ходу дела? Страница справки полна ответов — а если какой-то шаг можно сделать яснее, сообщите нам и мы с радостью улучшим руководство.