From 41cf96ae66824b5558bce2c42db79990b2c0dc36 Mon Sep 17 00:00:00 2001 From: Arthur Belleville Date: Sat, 16 May 2026 21:43:44 +0200 Subject: [PATCH] docs(15-02): complete AppLayout CSS foundation + sidebar components plan --- .../15-dashboard-tablos/15-02-SUMMARY.md | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 .planning/phases/15-dashboard-tablos/15-02-SUMMARY.md diff --git a/.planning/phases/15-dashboard-tablos/15-02-SUMMARY.md b/.planning/phases/15-dashboard-tablos/15-02-SUMMARY.md new file mode 100644 index 0000000..f47596d --- /dev/null +++ b/.planning/phases/15-dashboard-tablos/15-02-SUMMARY.md @@ -0,0 +1,87 @@ +--- +phase: 15-dashboard-tablos +plan: "02" +subsystem: backend/web/templates/css +tags: [css, templ, sidebar, dashboard, wave-1] +dependency_graph: + requires: [15-01] + provides: [AppLayout, DashboardSidebar, SidebarProjectsSection, SidebarOrganizationFooter, app.css] + affects: + - backend/internal/web/ui/app.css + - backend/tailwind.input.css + - backend/templates/app_layout.templ + - backend/templates/app_layout_helpers.go +tech_stack: + added: [] + patterns: [templ component composition, CSS design token usage, sidebar nav active state] +key_files: + created: + - backend/internal/web/ui/app.css + - backend/templates/app_layout.templ + - backend/templates/app_layout_helpers.go + modified: + - backend/tailwind.input.css +decisions: + - "SidebarNavIcon implemented inline in app_layout.templ (not extending UIIcon) to avoid cross-package coupling for sidebar-only icons" + - "Tasks/Chat/Files nav items render as non-interactive divs (no href) per D-N02 — visual-only in Phase 15" + - "SidebarOrganizationFooter shows user email as both avatar initial and name; no separate org concept in Phase 15" + - "app.css imports 18 CSS sections ported verbatim from go-backend with all var(--...) tokens preserved" +metrics: + duration: ~15min + completed: "2026-05-16" + tasks_completed: 2 + files_modified: 4 +--- + +# Phase 15 Plan 02: AppLayout CSS Foundation + Templ Components Summary + +Dashboard shell CSS (sidebar, project-card) ported verbatim from go-backend, plus AppLayout + DashboardSidebar + SidebarProjectsSection + SidebarOrganizationFooter templ components with isActivePath and sidebarPrimaryNavItems helpers — all compile cleanly. + +## Tasks Completed + +| Task | Name | Commit | Files | +|------|------|--------|-------| +| 1 | Port sidebar + project-card CSS into app.css and register in tailwind | f533d53 | backend/internal/web/ui/app.css, backend/tailwind.input.css | +| 2 | Create app_layout_helpers.go and app_layout.templ with all sidebar sub-components | 9b0d335 | backend/templates/app_layout.templ, backend/templates/app_layout_helpers.go | + +## Acceptance Criteria Verification + +### Task 1 +- `backend/internal/web/ui/app.css` exists with `.dashboard-shell`: PASSED (1 match) +- File contains `.project-card`: PASSED (7 matches) +- File contains `.sidebar-organization`: PASSED (1 match) +- No hard-coded hex colors: PASSED (0 matches) +- `backend/tailwind.input.css` imports app.css: PASSED (1 match) +- `go build ./...` exits 0: PASSED + +### Task 2 +- `templ generate ./...` exits 0: PASSED +- `go build ./...` exits 0: PASSED +- `app_layout.templ` contains `templ AppLayout(`: PASSED (1 match) +- `app_layout.templ` contains `templ DashboardSidebar(`: PASSED (1 match) +- `app_layout.templ` contains `templ SidebarProjectsSection(`: PASSED (1 match) +- `app_layout.templ` contains `templ SidebarOrganizationFooter(`: PASSED (1 match) +- `app_layout_helpers.go` contains `func isActivePath`: PASSED (1 match) +- `app_layout_helpers.go` contains `func sidebarPrimaryNavItems`: PASSED (1 match) +- `go test ./... -count=1` exits 0 (all existing tests pass): PASSED + +## Deviations from Plan + +None — plan executed exactly as written. + +## Known Stubs + +None — this plan delivers CSS and templ components only. No data wiring; AppLayout is ready to be called by handlers in Plan 03. + +## Threat Flags + +None — CSS and templ component changes only. No new network endpoints or auth paths introduced. + +## Self-Check: PASSED + +- File exists: backend/internal/web/ui/app.css — FOUND +- File exists: backend/templates/app_layout.templ — FOUND +- File exists: backend/templates/app_layout_helpers.go — FOUND +- Commit f533d53 exists — FOUND +- Commit 9b0d335 exists — FOUND +- templ generate + go build + go test all exit 0 — VERIFIED