5.4 KiB
Frontend UI Guide
Статус: нормативная карта frontend UI-системы проекта.
Этот раздел фиксирует целевое состояние интерфейса и служит точкой входа для всех решений по стилям, геометрии, карточкам, формам, модалкам и shared UI primitives. Это не одна заметка, а карта правил, по которой нужно проектировать новые экраны и проводить рефакторинг старых.
Как читать этот раздел
Порядок чтения:
- 01-OVERVIEW.md
Что это за guide, где проходят границы и как устроен frontend по слоям. - 02-FOUNDATION.md
Базовые токены, поверхности, action/form primitives и источники истины. - 03-GEOMETRY.md
Целевая шкала радиусов, таксономия карточек и допустимые исключения. - 04-PATTERNS.md
Формы, dropdown-like UX, модалки, App Shell и target-pattern registry. - 05-MIGRATION.md
Что считать legacy, как двигать рефакторинг и по каким зонам идти. - 06-COMPONENT-INVENTORY.md
Какие shared и feature-shared компоненты уже есть и когда какой использовать. - 07-DEVELOPER-WORKFLOW.md
Как проектировать новый экран, форму, карточку, модалку и когда выносить код в shared. - 08-UI-REVIEW-CHECKLIST.md
Короткий checklist для PR review и самопроверки перед merge. - 09-FRONTEND-AUDIT-MAP.md
Карта текущих зон frontend: что уже близко к standard, а что требует рефакторинга.
Для чего этот guide
Guide обязателен для:
- новых экранов в
frontend/src/app - новых shared-компонентов в
frontend/src/components - переработки существующих карточек, форм, модалок и dropdown-паттернов
- code review, где нужно определить, является ли локальное UI-решение допустимым
Guide не предназначен для:
- описания API-контрактов
- описания state management конкретной фичи
- feature-specific UX-спеков
Главная проблема системы
Сейчас frontend уже достаточно зрелый, чтобы его нормализовать системно.
Что уже в хорошем состоянии:
- палитра
- surface hierarchy
- акцентные состояния
- базовые
app-*primitives
Что расползлось:
- геометрия
- шкала радиусов
- affordance dropdown-полей
- повторяющиеся card patterns
- разные form contracts для похожих сценариев
Именно поэтому этот раздел фиксирует target state заранее, даже если кодовая база ещё не полностью к нему приведена.
Источники истины
Ключевые frontend primitives, на которые опирается весь guide:
frontend/src/app/globals.cssfrontend/src/components/ui/Modal.tsxfrontend/src/components/shared/SearchableSelect.tsxfrontend/src/components/AppShell.tsxfrontend/src/components/requests/RequestComposeModal.tsxкак текущий reference для compose-like participant form
Быстрый контракт
Если нужно принять быстрое решение без чтения всего guide:
- controls:
rounded-lg - secondary cards:
rounded-xl - primary panels и modal shells:
rounded-2xl - pills, avatar, search capsules:
rounded-full rounded-mdиrounded-[...]: legacy или редкое исключение с отдельным обоснованием- dropdown UX с поиском, multi-select или chip-представлением должен идти через shared select-паттерн, а не через локальный ad-hoc
select
Навигация по рефакторингу
С этого раздела должен начинаться будущий глобальный refactor pass:
- нормализация карточек
- сокращение custom radii
- выравнивание shared affordance
- только потом индивидуальный разбор форм по паттернам
Что уже покрыто
Этот раздел теперь выполняет две функции:
- нормативная база по visual contract
- прикладной handbook для ежедневной разработки и review
Если вопрос про то, "как должно быть", смотреть документы 01-05.
Если вопрос про то, "как это делать в коде", смотреть документы 06-09.