Blog Customizer - проект на React, в котором реализована кастомизация страницы статьи через боковую панель настроек. Панель открывается по клику, позволяет менять параметры отображения, а применение изменений происходит только после подтверждения.
Проект фокусируется на работе с состоянием, обработчиками событий, композицией готовых UI-компонентов и применением настроек через CSS-переменные.
- React
- TypeScript (если подключён в проекте)
- CSS Variables (настройки темы)
- Storybook (документация части UI-kit)
- ESLint, Prettier
- Stylelint
- Открывается по клику на кнопку со стрелкой
- Закрывается:
- повторным кликом на кнопку
- кликом вне панели
- Изменения в форме не применяются сразу
- Настройки накапливаются во внутреннем состоянии формы до подтверждения
- Кнопка «Применить» применяет выбранные настройки к статье
- Кнопка «Сбросить»:
- возвращает значения формы к начальному состоянию (на момент открытия страницы)
- сразу применяет эти значения к статье
- Настройки задаются через CSS-переменные
- Значения по умолчанию уже определены в стилях и установлены в коде приложения
- Панель открывается по клику и закрывается по повторному клику или по клику вне
- Изменения в форме не влияют на статью до нажатия «Применить»
- «Сбросить» возвращает значения к изначальным и применяет их
- Все параметры применяются через CSS Variables на уровне приложения
Ключевой компонент проекта:
ArticleParamsForm- форма редактирования параметров статьи- хранит состояние формы
- управляет применением и сбросом
- использует готовые компоненты из UI-kit
Инфраструктура проекта:
- Storybook для просмотра и документации компонентов UI-kit:
- помогает собирать форму из готовых элементов
- упрощает тестирование в изоляции
npm run storybooknpm run lintnpm run stylelintnpm run format- Пользователь открывает панель настроек
- Меняет параметры в форме (эти изменения живут только в состоянии формы)
- Нажимает «Применить»
- Приложение обновляет набор CSS-переменных на уровне
App, и стили статьи меняются - «Сбросить» возвращает значения к начальному состоянию и применяет их
- Проект специально построен так, чтобы отработать разделение:
- состояние формы
- состояние страницы
- момент применения изменений (commit по кнопке)
- Ivan Murzin (AlliumPro)
- Telegram: https://t.me/alliumpro