docs: sync workspace controls IA — lens in strip, schedule actions row

Document separated calendar chrome zones and lens labels (Обзор / На сегодня / Заявки).
This commit is contained in:
2026-07-29 19:28:11 +03:00
parent 89073c9e76
commit 9d79babac5
2 changed files with 18 additions and 12 deletions
+10 -7
View File
@@ -59,12 +59,14 @@ Deep-link на календарь, владельцем которого явл
`pending=0`; при `pending > 0` — badge со счётчиком (deep-link `/invites` работает). `pending=0`; при `pending > 0` — badge со счётчиком (deep-link `/invites` работает).
**Mood в Ещё нет** — chip в AppShell рядом с BrandWordmark (Front#40; ранее Front#39 **Mood в Ещё нет** — chip в AppShell рядом с BrandWordmark (Front#40; ранее Front#39
в chrome workspace). в chrome workspace).
- **Mood + Lens (Front#39/#40):** mood chip (FLOW/MOMENTUM/CONTROL → sheet picker) — - **Mood + Lens (Front#39/#40 + controls IA):** mood chip (FLOW/MOMENTUM/CONTROL → sheet picker) —
в **AppShell** рядом с логотипом (**не** в toolbar Month/Week/Day). Отдельно lens в **AppShell** рядом с логотипом (**не** в toolbar Month/Week/Day). Workspace chrome
«Обзор / Сегодня / Записи» (desktop segment / mobile sheet); над сеткой — разнесён по зонам: (1) селектор календаря; (2) период + вид Месяц/Неделя/День;
collapsible lens strip (Front-only derive из уже загруженных events/bookings). (3) owner schedule actions («+ Новое событие», «Заполнить расписание» — отдельный ряд);
Без flip календаря; без 4-го CREATOR. Strip по умолчанию раскрыт на desktop, (4) lens «Обзор / На сегодня / Заявки» — **в шапке** collapsible lens strip (underline/text
свёрнут на mobile. Нет на HTML-архиве месяца. 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 (без дубля заголовков - **Week view (Front#40):** одна строка day-headers (без дубля заголовков
`WeekDayColumn`); горизонтальный скролл через `.eh-cal-week-scroll` (mobile ~390). `WeekDayColumn`); горизонтальный скролл через `.eh-cal-week-scroll` (mobile ~390).
- Контекст виджета: свой календарь (селектор) или чужой (browse после поиска). Чужой `personal` - Контекст виджета: свой календарь (селектор) или чужой (browse после поиска). Чужой `personal`
@@ -115,7 +117,8 @@ Deep-link на календарь, владельцем которого явл
(**не** в `/more`, **не** в calendar toolbar Month/Week/Day). Desktop: logo + mood \| nav \| nickname + logout. (**не** в `/more`, **не** в calendar toolbar Month/Week/Day). Desktop: logo + mood \| nav \| nickname + logout.
**Lens** (отдельно от mood и от view month/week/day): `overview` / `today` / `bookings` **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, `eh.calendar.lens.pinned`); **не** поле профиля / Back API. Soft-default при смене mood,
если lens не pinned пользователем: FLOW→overview, MOMENTUM→today, CONTROL→bookings. если lens не pinned пользователем: FLOW→overview, MOMENTUM→today, CONTROL→bookings.
Strip над сеткой: free gaps сегодня / события сегодня / upcoming bookings (derive Strip над сеткой: free gaps сегодня / события сегодня / upcoming bookings (derive
+8 -5
View File
@@ -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 **остаётся** обязательным | | 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 | | 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 | | 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) | | Week view headers | — | **Front#40:** одна строка day-headers (без дубля `WeekDayColumn`); scroll `.eh-cal-week-scroll` (mobile ~390) |
| Favicon set | 3 отдельных favicon файла на борде | mood appicon через `applyMood` | | Favicon set | 3 отдельных favicon файла на борде | mood appicon через `applyMood` |
| Desktop nav | phone bottom tabs на борде | desktop: **одна строка** chrome — logo + mood \| nav (Календарь / Найти / Записи / Ещё) \| nickname + logout; bottom nav — mobile | | 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#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. **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` **Нет** в `/more`; **не** в toolbar Month/Week/Day. Persist: `preferences.mood`
через `PATCH /v1/user/me`. Без flip; без CREATOR. через `PATCH /v1/user/me`. Без flip; без CREATOR.
2. **Lens** = отдельный контентный режим (`overview` / `today` / `bookings`), не mood и не 2. **Lens** = отдельный контентный режим (`overview` / `today` / `bookings`), не mood и не
view month/week/day. Desktop — segment; mobile — chip → sheet. Soft-default при смене view month/week/day. UI: Обзор / На сегодня / Заявки. Переключатель — в шапке strip
mood, если lens не pinned: FLOW→overview, MOMENTUM→today, CONTROL→bookings. (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 / 3. **Strip** над сеткой (не на HTML-архиве месяца): Front-only derive — free gaps /
события сегодня / upcoming bookings. Desktop раскрыт по умолчанию; mobile свёрнут события сегодня / upcoming bookings. Desktop раскрыт по умолчанию; mobile свёрнут
(tap раскрывает). Сетка всегда видна. (tap раскрывает). Сетка всегда видна. Workspace toolbar: контекст (селектор) /
виджет (период + view) / owner schedule actions (отдельный ряд).
4. **Persistence:** mood → DB; language → `user.language`; lens → `localStorage` 4. **Persistence:** mood → DB; language → `user.language`; lens → `localStorage`
(`eh.calendar.lens` + pinned). Без нового Back API. (`eh.calendar.lens` + pinned). Без нового Back API.
5. **Week view (Front#40):** одна строка day-headers (без дубля `WeekDayColumn`); 5. **Week view (Front#40):** одна строка day-headers (без дубля `WeekDayColumn`);