Обновление UI: Theme Engine & Стекломорфизм
Я успешно завершил работу по внедрению системы тем и редизайну компонентов! 🎉
Что было сделано
1. Архитектура тем (Tailwind CSS v4)
- Мы отказались от жестко прописанных цветов (
bg-slate-900,text-slate-100) во всем приложении. - В app.css добавлены CSS-переменные для трех базовых тем:
- Dark Theme (улучшенная текущая)
- Light Theme (светлая версия)
- Dracula (яркая высококонтрастная тема с фиолетовыми и розовыми акцентами)
- Настроен блок
@themeв Tailwind, который маппит наши переменные на классы (например,bg-surface,border-border,text-content).
2. Сохранение состояния
- Создан стейт-менеджер themeStore.svelte.ts.
- Он автоматически определяет системную тему при первом заходе, сохраняет выбор пользователя в
localStorageи реактивно переключаетdata-themeатрибут у тега<html>. - В index.html добавлен inline-скрипт в
<head>, чтобы избежать неприятного мерцания нестилизованного контента (FOUC) при загрузке.
3. Редизайн компонентов
- Главная навигация: В правом верхнем углу теперь есть выпадающий список для мгновенного переключения тем.
- Глубина и Фон: На главную страницу добавлены легкие радиальные градиенты на фоне (эффект свечения за контентом).
- GameCard (Карточки):
- Внедрен эффект “матового стекла”: полупрозрачный фон (
bg-surface/60) с легким размытием заднего плана (backdrop-blur-md). - Добавлены микро-анимации: при наведении карточка плавно приподнимается вверх и получает свечение в цвет акцента текущей темы.
- Улучшена типографика рейтинга: теперь он находится в аккуратной полупрозрачной плашке.
- Внедрен эффект “матового стекла”: полупрозрачный фон (
Как проверить?
Запустите сервер разработки в терминале:
npm run dev
# или
mise run devОткройте приложение в браузере. В правом верхнем углу кликните по выпадающему меню и попробуйте переключать темы на лету. Наведите курсор на карточки игр, чтобы увидеть новые эффекты наведения.
> Добавление новых тем
Благодаря новой архитектуре добавить любую новую тему (например, Nord, Solarized) занимает ровно 2 минуты — достаточно просто скопировать 10 CSS-переменных в конец файла
app.css.