Теми
Компоненти 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, а інші каталоги документують той самий шаблон для своїх стеків.
Наступні кроки
- Допоміжні засоби налаштувань — той самий шаблон для мови, розміру тексту, поширення та введення дати/часу.
- Запропонуйте тему — кожна є однією автономною таблицею стилів, що націлена на клас-гачки; див. внесок.
Питання по дорозі? сторінка допомоги повна відповідей — а якщо якийсь крок може бути зрозумілішим, повідомте нам і ми із задоволенням покращимо посібник.