Files
EventHubSpec/design/front/UI-PARITY.md
T

152 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# UI parity: EventHubFront ↔ CalenTIQ board
План визуального выравнивания клиентского фронта с утверждённым бордом.
SoT: [`boards/calentiq-ui-board-final.png`](boards/calentiq-ui-board-final.png).
Эпик: [EventHubSpec#10](https://git.sabilin.com/EventHub/EventHubSpec/issues/10).
**Статус:** workstreams 15 закрыты в коде Front (Refs Front#25#29). Stage smoke — после batch push/deploy.
---
## Known deviations from board (Front#29)
Зафиксировано осознанно / пока не делаем:
| Зона | Борд | Сейчас |
|------|------|--------|
| Pixel-perfect calendar | denser board mock chrome | mood-токены + soft panels; не копия Figma 1:1 |
| Discover cards | иногда с фото/рейтинг-блоками как на макете | soft cards + CTA + rating; без фото-hero |
| CONTROL booking §E | отдельные mock-карточки «слот/специалист» | те же сущности в `EventActionCard` / specialists / bookings list |
| Favicon set | 3 отдельных favicon файла на борде | mood appicon через `applyMood` |
| Stage | полный smoke на stage | **после** batch push + deploy образа (локально — mock smoke) |
| Домены calentiq.* | — | DNS не куплен (B1 checklist) |
IA без sidebar / без Creator mood — совпадает с non-goals.
## Mood concept = product surface
Mood — не переименование `calm|energetic|business` и не смена primary hex.
Каждый mood — **отдельная атмосфера продукта** при той же IA:
| Mood | Ощущение | Chrome / surfaces | Discover / booking feel |
|------|----------|-------------------|-------------------------|
| **FLOW** (`calm`) | спокойствие, баланс | soft sage panels, light wash, soft chips | мягкие карточки, спокойный CTA |
| **MOMENTUM** (`energetic`) | энергия, скорость | ink `#111820`, coral `#FF6A3D`, denser chips | тёмный discover, яркий CTA |
| **CONTROL** (`business`) | бизнес, доступность | steel `#324A5F`, cool neutrals | коммерческие карточки слот/специалист/CTA |
Референс на борде: секции **B Mood Overview**, **C Mood Switcher**, **D Core Screens**, **NEW Discover**, **E Booking / Commercial**.
Switcher — **branded cards** (иконка + короткий tagline), не plain list/tabs:
- FLOW — *Find balance*
- MOMENTUM — *Get more done*
- CONTROL — *Grow the business*
Опционально: mood-aware favicon из [`boards/calentiq-icon-system-final.png`](boards/calentiq-icon-system-final.png) / `mood-icons/`.
Токены сейчас узкие ([`tokens/colors.json`](tokens/colors.json)); для parity нужны surfaces, gradients, chip/event styles, chrome — не только primary.
---
## Workstreams (mood-first)
Порядок важен: сначала атмосфера и токены, затем экраны поверх них.
### 1. Mood system / atmosphere — **P0 / first** ✅
CSS-токены и chrome на mood beyond primary hex: surfaces, gradients, event chip styles; switcher как branded cards (icon + tagline); опционально mood favicon.
**Acceptance**
- [x] Per-mood token set: surface / wash / chip / border / CTA (не только primary)
- [x] Mood switcher = 3 branded cards с иконкой и tagline с борда
- [x] Смена mood меняет атмосферу chrome (не только accent button)
- [x] API keys остаются `calm|energetic|business`
- [x] Опционально: favicon следует активному mood
**Design:** board §B, §C, §F; `mood-icons/`; `tokens/`
**Done:** EventHubFront#25`index.css` mood tokens + `MoodSwitcher` cards + favicon via `applyMood`.
### 2. Calendar mood-chrome — **P0** ✅
Та же сетка/IA; soft panels (FLOW), denser chips (MOMENTUM), mood-tinted cells (CONTROL) — как на борде §B / §D Calendar.
**Acceptance**
- [x] Month/week выглядят различно по mood при той же навигации
- [x] Event chips / cells тонированы mood-токенами
- [x] Нет sidebar / смены layout ради «красоты»
**Design:** board §B Mood Overview, §D Calendar
**Done:** EventHubFront#26`--cal-*` tokens + `.eh-cal` / `.eh-chip` в `CalendarWidget`; IA без изменений.
### 3. Discover mood variants — **P1** ✅
Визуальная дифференциация FLOW vs MOMENTUM vs CONTROL: soft cards + CTA; соответствие борду (NEW Discover / §D Discover), не as-is скринам.
**Acceptance**
- [x] Discover в трёх moods визуально различим (фон, карточки, CTA)
- [x] Soft card + CTA pattern с борда (не плоский as-is list-only)
- [x] IA и фильтры без смены модели; только presentation
**Design:** board NEW Discover, §D Discover; as-is refs: `eventhub-discover-{flow,momentum,control}.png`
**Done:** EventHubFront#27`--disc-*` + `.eh-discover-card` / `.eh-discover-cta`; list → card grid.
### 4. CONTROL booking surfaces — **P1** ✅
Коммерческие карточки: слот, специалист, CTA — только Control-specific (§E).
**Acceptance**
- [x] Slot card + specialist card + primary CTA в CONTROL
- [x] Specialists остаются внутри Control (не 4-й mood)
- [x] FLOW/MOMENTUM не получают Control commercial chrome
**Design:** board §E Booking / Commercial
**Done:** EventHubFront#28`.eh-book-slot` / `.eh-book-specialist` / `.eh-book-request`; steel chrome только под `data-mood=business`.
### 5. Polish + stage smoke — **P2** ✅
Мелкие расхождения с бордом, wordmark/lockup consistency, stage smoke трёх moods.
**Acceptance**
- [x] Mock smoke: calendar → discover → bookings в 3 moods (+ IA без sidebar)
- [x] Нет регрессий IA (top + bottom nav) — покрыто mock e2e
- [x] Известные отклонения от борда зафиксированы в UI-PARITY (Known deviations)
- [ ] Stage smoke на живом стенде — **после batch push/deploy**
**Done:** EventHubFront#29`e2e/tests/mood-parity-smoke.spec.ts`, brand meta, CONTROL tagline polish.
## Non-goals
- Left sidebar / смена IA
- 4-й Creator mood / AI-assistant home
- Rename API keys (`calm|energetic|business` остаются)
- Покупка доменов / DNS cutover
- Админский UI (`design/admin/`) — не трогать Front-бордами
- Полный pixel-perfect каждого пикселя борда (направление + mood atmosphere)
---
## Mapping → issues
| # | Workstream | Issue |
|---|------------|-------|
| — | Story (родитель) | [Spec#11](https://git.sabilin.com/EventHub/EventHubSpec/issues/11) |
| 1 | Mood system / atmosphere | [Front#25](https://git.sabilin.com/EventHub/EventHubFront/issues/25) |
| 2 | Calendar mood-chrome | [Front#26](https://git.sabilin.com/EventHub/EventHubFront/issues/26) |
| 3 | Discover mood variants | [Front#27](https://git.sabilin.com/EventHub/EventHubFront/issues/27) |
| 4 | CONTROL booking surfaces | [Front#28](https://git.sabilin.com/EventHub/EventHubFront/issues/28) |
| 5 | Polish + stage smoke | [Front#29](https://git.sabilin.com/EventHub/EventHubFront/issues/29) |
Эпик: [Spec#10](https://git.sabilin.com/EventHub/EventHubSpec/issues/10).
---
## Suggested start
Кодить с **Task 1 (Mood system / atmosphere)**: без токенов и switcher-as-cards остальные экраны будут «перекраской primary», а не mood product surface.