Clean successor to V3 (forge: lilith/atlilith). Seeded from local Mac working tree at ~/Code/@projects/@cocottetech/. node_modules and build artifacts excluded via .gitignore. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7.5 KiB
Calendar drawer · screen
The weekly/monthly view over content_plans — every post Cocotte has drafted, scheduled, or run, across all surfaces. Pairs with brief B §B1 (drawer spec), brief A (chat-card swipe-approve semantics inherited here), brief R (tour pages render as plan tiles), brief F §F5 (24-surface color-coding inherits here — every tile borrows its surface's accent).
Voice register: working on tile bodies and conflict surfaces · hearth on the empty state.
Layout (iPhone, week view default)
┌────────────────────────────────────────┐
│ ← Calendar [W] [M] ⋯ │
├────────────────────────────────────────┤
│ May 11 – 17 · this week ◀ ▶ │
├────────────────────────────────────────┤
│ Mon 11 │
│ 09:00 ◉ OF "morning tease" ▸ │
│ 13:00 ◉ X cross-post of ↑ ▸ │
│ 21:00 ◉ OF PPV drop (drafted) ▸ │
│ Tue 12 │
│ 11:00 ◉ Tryst tour-tease Berlin ▸ │
│ 18:00 ◌ IG (draft, hold) ▸ │
│ Wed 13 — Berlin tour begins — │
│ ╭──────────────────────────────╮ │
│ │ R · tour leg · Berlin Oct 3–7│ │
│ │ 4 announcements simmering │ │
│ ╰──────────────────────────────╯ │
│ Thu 14 │
│ (no plans) │
│ Fri 15 │
│ 20:00 ◉ OF weekend drop ▸ │
│ Sat 16 · Sun 17 — vacation — │
│ ╳ auto-actions paused │
├────────────────────────────────────────┤
│ [ + plan ] strategist · draft week │
└────────────────────────────────────────┘
Month view collapses each day to a row of surface dots (one per planned tile, colored per F5). Tapping a day expands inline to the week-row treatment above.
Components
| Component | Source brief | Notes |
|---|---|---|
| Drawer chrome (back, title, ⋯ overflow) | B | SwiftUI full-height sheet, swipe-down dismiss, returns to chat scroll. |
Week/Month toggle [W][M] |
B §B1 | Segmented control; persists per-user. |
| Date-range header + chevrons | B §B1 | Tap to jump (month picker on long-press). |
| Day section header | B §B1 | Inline tour/vacation badges per R, H. |
| Plan tile (row) | A swipe-cards | Surface dot (F §F5 color), time, surface name, title, status glyph. |
| Tour-leg block | R | Spans Wed-Sun of leg; tap → tour-leg-detail screen. |
| Vacation strip | H §H1 | Greys the day, suppresses bump-policy tiles. |
+ plan / strategist-draft FABs |
B §B1, L strategist | Primary = new plan; secondary = "draft a week" prompt to strategist. |
| Conflict chip (on tile) | brief K + H | Renders ⚠ when tile collides with vacation or tour blackout. |
States to render
- Week view default — current week, mixed plan tiles + day headers.
- Month toggle — calendar grid, each day shows up to 5 surface dots; overflow indicator (
+3). - Empty — no plans in the window: hearth-register prompt to strategist.
- Drag-to-reschedule (web companion only — see G1) — tile lifts under cursor, drop targets highlight; mobile uses tap-to-edit.
- Plan-tile expanded — tap a tile inline-expands to show draft body, asset thumbnail, surface, scheduled-by, swipe-approve affordance.
- Conflict-with-vacation — tile shows ⚠ + working-register inline note; approval blocked until Quinn resolves.
- Locked-by-active-tour — tiles inside a live tour-leg get a 🔒 dot and "managed by tour producer" subline; edits route through R.
- Multi-plan-cluster — 3+ tiles within 15 minutes get visually collapsed into a single "cluster" row that expands on tap (prevents N1 surface stack overflow per H §H5).
- Cold-load skeleton — shimmered day rows; no chrome flicker.
- Offline — last-cached view rendered with thin banner: "showing what we had — last synced 12m ago"; approve-buttons disabled.
Gestures
- Swipe-right on plan tile: approve in place (same semantics as chat approval cards, brief A).
- Swipe-left on plan tile: set aside (hold draft; does not delete).
- Drag-to-reschedule (web companion only, per G1): pick-up + drop on a different day/timeslot; iOS uses tap-to-edit time sheet instead (touch-target pressure).
- Tap on plan tile: inline expand (state 5).
- Tap on expanded tile body: opens plan-edit drawer (drawer-on-drawer; B §B1 back-stack of one).
- Long-press on plan tile: enter multi-select; bulk actions = "approve all" / "set aside all" / "reschedule cluster".
- Pinch on week header: toggle to month view (alt path to
[M]).
In-the-wild copy
Empty state (hearth):
No plans yet. Want strategist to draft a week?
Plan-tile expanded body (working):
OnlyFans · 21:00 · PPV drop "weekend tease". Drafted by producer. Approve to schedule, edit before, or set aside.
Conflict-with-vacation tile (working, leans plain):
This drops Sat 16 — your vacation runs Sat-Sun. Move to Fri or hold until Mon?
Locked-by-active-tour tile (working):
Tour producer holds this one — Berlin leg, day 2. Edit in the tour drawer.
Edge cases
- Cross-midnight tile — a plan scheduled 23:50 Mon for a 00:10 Tue cross-post: renders on both day-headers with a thin link line; approval applies to the whole cluster.
- Surface paused mid-week — tiles for that surface grey out but stay visible (don't disappear); footer note: "Tryst is paused — tiles will run when you resume."
- Strategist-drafted week pending review — banner above day rows: "Strategist drafted 7 plans for next week — review batch." Tap → batch-approval sheet.
- Plan referencing an asset that was deleted — tile shows ⚠ "asset missing"; tap routes to asset-library drawer (B §B2).
- Timezone change mid-tour — day headers respect the tour leg's local tz; small subline notes shift ("Berlin local").
- Conflict with cooperative blocklist (per K, N) — a planned post on a surface currently coop-blocked: tile is 🔒, approval disabled; chip routes to coop-drawer.
Related
- brief B §B1 — source spec.
- brief A — swipe-approve semantics inherited on tile.
- brief R — tour pages render here as plan tiles; locked state routes back to tour-leg-detail.
- brief G §G1 — content-portal web companion (drag-to-reschedule lives there).
- brief T §T5 — tour ledger ties plan tiles to revenue rows.
- brief F §F5 — 24-surface color/icon source.
- brief H §H1 — vacation strip + bump-policy interaction.