diff --git a/EventHubFrontSpec.md b/EventHubFrontSpec.md index f304895..d89351a 100644 --- a/EventHubFrontSpec.md +++ b/EventHubFrontSpec.md @@ -59,12 +59,14 @@ Deep-link на календарь, владельцем которого явл `pending=0`; при `pending > 0` — badge со счётчиком (deep-link `/invites` работает). **Mood в Ещё нет** — chip в AppShell рядом с BrandWordmark (Front#40; ранее Front#39 в chrome workspace). -- **Mood + Lens (Front#39/#40):** mood chip (FLOW/MOMENTUM/CONTROL → sheet picker) — - в **AppShell** рядом с логотипом (**не** в toolbar Month/Week/Day). Отдельно lens - «Обзор / Сегодня / Записи» (desktop segment / mobile sheet); над сеткой — - collapsible lens strip (Front-only derive из уже загруженных events/bookings). - Без flip календаря; без 4-го CREATOR. Strip по умолчанию раскрыт на desktop, - свёрнут на mobile. Нет на HTML-архиве месяца. +- **Mood + Lens (Front#39/#40 + controls IA):** mood chip (FLOW/MOMENTUM/CONTROL → sheet picker) — + в **AppShell** рядом с логотипом (**не** в toolbar Month/Week/Day). Workspace chrome + разнесён по зонам: (1) селектор календаря; (2) период + вид Месяц/Неделя/День; + (3) owner schedule actions («+ Новое событие», «Заполнить расписание» — отдельный ряд); + (4) lens «Обзор / На сегодня / Заявки» — **в шапке** collapsible lens strip (underline/text + tabs на desktop, sheet на mobile; **не** рядом с ViewMode chips). Strip — Front-only derive + из уже загруженных events/bookings. Без flip календаря; без 4-го CREATOR. Strip по умолчанию + раскрыт на desktop, свёрнут на mobile. Нет на HTML-архиве месяца. - **Week view (Front#40):** одна строка day-headers (без дубля заголовков `WeekDayColumn`); горизонтальный скролл через `.eh-cal-week-scroll` (mobile ~390). - Контекст виджета: свой календарь (селектор) или чужой (browse после поиска). Чужой `personal` — @@ -115,7 +117,8 @@ Deep-link на календарь, владельцем которого явл (**не** в `/more`, **не** в calendar toolbar Month/Week/Day). Desktop: logo + mood \| nav \| nickname + logout. **Lens** (отдельно от mood и от view month/week/day): `overview` / `today` / `bookings` -(UI: Обзор / Сегодня / Записи). Persist только `localStorage` (`eh.calendar.lens` + +(UI: Обзор / На сегодня / Заявки). Переключатель — в шапке lens strip (не в toolbar рядом +с Месяц/Неделя/День). Persist только `localStorage` (`eh.calendar.lens` + `eh.calendar.lens.pinned`); **не** поле профиля / Back API. Soft-default при смене mood, если lens не pinned пользователем: FLOW→overview, MOMENTUM→today, CONTROL→bookings. Strip над сеткой: free gaps сегодня / события сегодня / upcoming bookings (derive diff --git a/design/front/UI-PARITY.md b/design/front/UI-PARITY.md index 8cf0e9c..e389e76 100644 --- a/design/front/UI-PARITY.md +++ b/design/front/UI-PARITY.md @@ -20,7 +20,7 @@ SoT: [`boards/calentiq-ui-board-final.png`](boards/calentiq-ui-board-final.png). | Bookings list §D | список заявок с Confirm/Decline на `/bookings` | `/bookings` = **grouped inbox**: (A) К подтверждению — pending owner/specialist + Confirm/Decline; (B) Мои записи — participant upcoming/past + Cancel; empty groups hidden. Event card Confirm/Decline **остаётся** обязательным | | Login §D phone chrome | три phone frames + (на борде) Google CTA | brand-first hero + mood `--auth-*`; email/password only; compact mood на auth; taglines — в mood sheet AppShell (не в `/more`); **без** Google OAuth | | Mood placement | board §C switcher cards | **Front#40:** mood chip в AppShell рядом с BrandWordmark (+ compact auth); **не** в `/more`, **не** в toolbar Month/Week/Day; 3 moods, без flip / CREATOR | -| Lens + strip | board Today/Upcoming rail only | **Front#39:** отдельный lens Обзор/Сегодня/Записи + strip над сеткой (Front-derive); localStorage only; soft-default по mood | +| Lens + strip | board Today/Upcoming rail only | **Front#39 + controls IA:** lens Обзор/На сегодня/Заявки в **шапке strip** (underline tabs / mobile sheet); view Месяц/Неделя/День рядом с периодом; owner schedule actions отдельным рядом; localStorage only; soft-default по mood | | Week view headers | — | **Front#40:** одна строка day-headers (без дубля `WeekDayColumn`); scroll `.eh-cal-week-scroll` (mobile ~390) | | Favicon set | 3 отдельных favicon файла на борде | mood appicon через `applyMood` | | Desktop nav | phone bottom tabs на борде | desktop: **одна строка** chrome — logo + mood \| nav (Календарь / Найти / Записи / Ещё) \| nickname + logout; bottom nav — mobile | @@ -46,7 +46,7 @@ IA без sidebar / без Creator mood — совпадает с non-goals (п **Front#35 (2026-07-28, SHA `57cfcf3`):** D9 модель B (guest roster → schedule filter); confirmed foreign overlay на personal; SpecialistsPanel mobile density; F6 EventActionCard past+pending → expired / no Cancel, Book скрыт на past. -**Front#39 (2026-07-28, SHA `c2cb754` / `d38a927`):** Mood chip убран из Ещё; Lens Обзор/Сегодня/Записи + strip над сеткой во всех 3 moods; mobile sheets + strip collapsed; mood→DB, lens→localStorage; без flip / CREATOR. (Placement chip уточнён в Front#40.) +**Front#39 (2026-07-28, SHA `c2cb754` / `d38a927`):** Mood chip убран из Ещё; Lens Обзор/Сегодня/Записи + strip над сеткой во всех 3 moods; mobile sheets + strip collapsed; mood→DB, lens→localStorage; без flip / CREATOR. (Placement chip уточнён в Front#40.) **Controls IA (2026-07-29):** lens перенесён в шапку strip (labels: Обзор / На сегодня / Заявки); view рядом с периодом; owner schedule actions отдельным рядом. **Front#40 (2026-07-28, SHA mood `7c092d1` / week `db11c41`):** Mood chip в AppShell рядом с BrandWordmark (**не** в calendar toolbar Month/Week/Day); 3 moods; `PATCH preferences.mood`; без дубля в Ещё. Week view: одна строка day-headers + `.eh-cal-week-scroll` для mobile ~390. @@ -93,11 +93,14 @@ API: `GET /v1/user/booking-requests` (Back) + существующий `PUT /v1/ **Нет** в `/more`; **не** в toolbar Month/Week/Day. Persist: `preferences.mood` через `PATCH /v1/user/me`. Без flip; без CREATOR. 2. **Lens** = отдельный контентный режим (`overview` / `today` / `bookings`), не mood и не - view month/week/day. Desktop — segment; mobile — chip → sheet. Soft-default при смене - mood, если lens не pinned: FLOW→overview, MOMENTUM→today, CONTROL→bookings. + view month/week/day. UI: Обзор / На сегодня / Заявки. Переключатель — в шапке strip + (underline/text tabs на desktop; chip → sheet на mobile), **не** рядом с ViewMode. + Soft-default при смене mood, если lens не pinned: FLOW→overview, MOMENTUM→today, + CONTROL→bookings. 3. **Strip** над сеткой (не на HTML-архиве месяца): Front-only derive — free gaps / события сегодня / upcoming bookings. Desktop раскрыт по умолчанию; mobile свёрнут - (tap раскрывает). Сетка всегда видна. + (tap раскрывает). Сетка всегда видна. Workspace toolbar: контекст (селектор) / + виджет (период + view) / owner schedule actions (отдельный ряд). 4. **Persistence:** mood → DB; language → `user.language`; lens → `localStorage` (`eh.calendar.lens` + pinned). Без нового Back API. 5. **Week view (Front#40):** одна строка day-headers (без дубля `WeekDayColumn`);