feat(web): MS15 Phase 1 — Design System & App Shell #451

Merged
jason.woltje merged 6 commits from feat/ms15-design-system into main 2026-02-22 20:57:06 +00:00
Owner

Summary

  • MS15-FE-001: Design token system overhaul — replaced RGB-triplet tokens with Mosaic hex-based CSS custom properties (dark-first, light via ), added Outfit + Fira Code fonts
  • MS15-FE-002: App shell grid layout — CSS Grid with sidebar + full-width header + main content area
  • MS15-FE-003: Full sidebar component — 4 nav groups (Overview, Workspace, Operations, System), collapsible with icon-only mode, user card footer with avatar/initials, SidebarContext for state management
  • MS15-FE-004: Full header/topbar — Mosaic logo, breadcrumb, search bar, system status indicator, terminal toggle, notification bell, theme toggle, user avatar dropdown with sign-out
  • MS15-FE-005: Responsive layout — mobile sidebar overlay with backdrop, hamburger button, matchMedia breakpoint detection (mobile < 768px, tablet 768-1023px, desktop >= 1024px)
  • MS15-FE-006: Mosaic logo loading spinner — site-wide MosaicLogo + MosaicSpinner components with rotation animation

QA Evidence

  • Lint: 0 errors, 0 warnings
  • TypeScript: 0 errors
  • Build: passes clean

Test plan

  • Verify dark theme renders correctly (default)
  • Verify light theme toggle works
  • Verify sidebar navigation links work
  • Verify sidebar collapse/expand toggle
  • Verify mobile hamburger opens sidebar overlay
  • Verify mobile backdrop click closes sidebar
  • Verify user avatar dropdown opens/closes
  • Verify sign out works from dropdown
  • Verify loading spinner shows on auth check

Closes #448

🤖 Generated with Claude Code

## Summary - **MS15-FE-001**: Design token system overhaul — replaced RGB-triplet tokens with Mosaic hex-based CSS custom properties (dark-first, light via ), added Outfit + Fira Code fonts - **MS15-FE-002**: App shell grid layout — CSS Grid with sidebar + full-width header + main content area - **MS15-FE-003**: Full sidebar component — 4 nav groups (Overview, Workspace, Operations, System), collapsible with icon-only mode, user card footer with avatar/initials, SidebarContext for state management - **MS15-FE-004**: Full header/topbar — Mosaic logo, breadcrumb, search bar, system status indicator, terminal toggle, notification bell, theme toggle, user avatar dropdown with sign-out - **MS15-FE-005**: Responsive layout — mobile sidebar overlay with backdrop, hamburger button, matchMedia breakpoint detection (mobile < 768px, tablet 768-1023px, desktop >= 1024px) - **MS15-FE-006**: Mosaic logo loading spinner — site-wide MosaicLogo + MosaicSpinner components with rotation animation ## QA Evidence - Lint: 0 errors, 0 warnings - TypeScript: 0 errors - Build: passes clean ## Test plan - [ ] Verify dark theme renders correctly (default) - [ ] Verify light theme toggle works - [ ] Verify sidebar navigation links work - [ ] Verify sidebar collapse/expand toggle - [ ] Verify mobile hamburger opens sidebar overlay - [ ] Verify mobile backdrop click closes sidebar - [ ] Verify user avatar dropdown opens/closes - [ ] Verify sign out works from dropdown - [ ] Verify loading spinner shows on auth check Closes #448 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jason.woltje added 6 commits 2026-02-22 20:56:43 +00:00
- Created PRD.md with full platform requirements and milestone plan
- Updated tasks.md with 18 tasks across 4 phases
- Created scratchpad for ms15 orchestration
- Issues #448, #449, #450 created in Gitea
- Milestone: MS15-DashboardShell (0.0.15)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat(web): add MosaicLogo and MosaicSpinner components (MS15-FE-006)
All checks were successful
ci/woodpecker/push/web Pipeline was successful
e615fa80a5
- Add MosaicLogo component with 5-element Mosaic brand icon (4 corner
  squares + center circle), using CSS custom properties for theme-aware
  colors and optional rotation animation
- Add MosaicSpinner wrapper that enables spinning and supports optional
  label and full-page overlay modes
- Replace generic CSS spinner in authenticated layout loading state with
  MosaicSpinner for consistent brand identity

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat(web): implement full sidebar and header components (MS15-FE-003, MS15-FE-004)
All checks were successful
ci/woodpecker/push/web Pipeline was successful
04f99183f9
Sidebar: collapsible with icon-only mode, 4 nav groups (Overview, Workspace,
Operations, System), SVG icons matching reference, badges, user card footer
with avatar/initials, SidebarContext for collapse state.

Header: search bar, system status indicator, terminal toggle, notification
bell with badge, user avatar dropdown with Profile/Settings/Sign Out,
breadcrumb navigation. Removes standalone LogoutButton.

Layout updated to wrap with SidebarProvider, dynamic --sidebar-w on collapse.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat(web): add responsive layout with mobile sidebar overlay (MS15-FE-005)
All checks were successful
ci/woodpecker/push/web Pipeline was successful
28620b2d70
Mobile (< 768px): sidebar hidden, hamburger button in header, sidebar
slides in as fixed overlay with backdrop.

Tablet (768-1023px): sidebar toggleable via hamburger, pushes content.

Desktop (>= 1024px): sidebar always visible, no hamburger button.

SidebarContext extended with mobileOpen state and isMobile detection
via matchMedia listener.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
jason.woltje merged commit a5ed260fbd into main 2026-02-22 20:57:06 +00:00
jason.woltje deleted branch feat/ms15-design-system 2026-02-22 20:57:07 +00:00
Sign in to join this conversation.