4.7 KiB
4.7 KiB
Phase 7: UI Polish & Ambient Backgrounds
Status: ⬜ Not Started Parent plan: PLAN.md Domain: frontend
Objective
Polish the entire UI: implement the root layout with sidebar and header, dark/light/system theme with HSL customization, ambient animated backgrounds, page transitions, animations, skeleton loading states, and responsive design.
Tasks
- Task 1: Create
src/lib/components/layout/MainLayout.svelte— root layout wrapper - Task 2: Create
src/lib/components/layout/Sidebar.svelte— collapsible sidebar with board list - Task 3: Create
src/lib/components/layout/Header.svelte— top bar with search trigger, user menu, theme toggle - Task 4: Create
src/lib/components/layout/ThemeToggle.svelte— dark/light/system toggle - Task 5: Create
src/lib/stores/theme.svelte.ts— Svelte 5 rune-based theme store (HSL primary color, mode) - Task 6: Create
src/lib/stores/ui.svelte.ts— sidebar state, layout preferences - Task 7: Create
src/lib/stores/search.svelte.ts— search dialog state - Task 8: Update
src/app.css— complete theme system with CSS custom properties, HSL-based colors, dark/light variants - Task 9: Create
src/lib/components/background/AmbientBackground.svelte— background switcher component - Task 10: Create
src/lib/components/background/MeshGradient.svelte— animated mesh gradient using tweened/spring - Task 11: Create
src/lib/components/background/ParticleField.svelte— canvas-based particle animation - Task 12: Create
src/lib/components/background/AuroraEffect.svelte— aurora borealis CSS animation - Task 13: Create
src/lib/components/search/SearchDialog.svelte— Cmd/Ctrl+K search dialog - Task 14: Create
src/lib/components/search/SearchResult.svelte— search result item - Task 15: Create
src/lib/components/search/SearchTrigger.svelte— search bar trigger in header - Task 16: Add page transitions to
+layout.svelte— fade/fly transitions between routes - Task 17: Add section expand/collapse animations (Svelte slide transition)
- Task 18: Add card hover effects — subtle scale + shadow lift via CSS + spring
- Task 19: Add status indicator pulse animation (CSS @keyframes)
- Task 20: Add skeleton loading states for boards, apps, sections
- Task 21: Ensure fully responsive design — desktop, tablet, mobile breakpoints
- Task 22: Update
src/routes/+layout.svelte— integrate MainLayout, AmbientBackground, theme system - Task 23: Polish login and register pages with consistent styling
- Task 24: Polish all existing pages (apps, boards, admin) with consistent component styling
Files to Modify/Create
src/lib/components/layout/MainLayout.sveltesrc/lib/components/layout/Sidebar.sveltesrc/lib/components/layout/Header.sveltesrc/lib/components/layout/ThemeToggle.sveltesrc/lib/stores/theme.svelte.tssrc/lib/stores/ui.svelte.tssrc/lib/stores/search.svelte.tssrc/app.css— updatesrc/lib/components/background/AmbientBackground.sveltesrc/lib/components/background/MeshGradient.sveltesrc/lib/components/background/ParticleField.sveltesrc/lib/components/background/AuroraEffect.sveltesrc/lib/components/search/SearchDialog.sveltesrc/lib/components/search/SearchResult.sveltesrc/lib/components/search/SearchTrigger.sveltesrc/routes/+layout.svelte— update- Various existing component files — add animations, polish styling
Acceptance Criteria
- Dark/Light/System theme works with smooth CSS transitions
- HSL-based primary color customization works
- At least one ambient background (mesh gradient) animates smoothly
- Sidebar is collapsible and shows board list
- Header has search trigger, user menu, theme toggle
- Cmd/Ctrl+K opens search dialog
- Page transitions are smooth
- Section collapse is animated
- Card hover has scale + shadow effect
- Status dots pulse when online
- Skeleton loaders appear during data fetches
- Layout is responsive at desktop (>1024px), tablet (768-1024px), mobile (<768px)
Notes
- Use Svelte 5 runes for stores, NOT legacy
writable/readable - Use
svelte/motion(tweened, spring) for ambient animations - AmbientBackground should be configurable and toggleable
- Search dialog uses the
/api/searchendpoint from Phase 6 - Keep animations performant — prefer CSS transforms/opacity over layout-triggering properties
- Use Tailwind utility classes as primary styling approach
Review Checklist
- All tasks completed
- Code follows project conventions
- No unintended side effects
- Build passes
- Tests pass (new + existing)