Skip to content

UI overhaul: Notion-inspired design, animations, Phosphor icons#6

Merged
Dandiggas merged 33 commits into
mainfrom
ui-overhaul-2026-04-08
Apr 9, 2026
Merged

UI overhaul: Notion-inspired design, animations, Phosphor icons#6
Dandiggas merged 33 commits into
mainfrom
ui-overhaul-2026-04-08

Conversation

@Dandiggas
Copy link
Copy Markdown
Owner

Summary

Full UI overhaul driven by /design-taste-frontend, /high-end-visual-design, /animate, /colorize, and /polish skills.

  • Font: Plus Jakarta Sans → Geist Sans + Geist Mono
  • Icons: Lucide → Phosphor Icons (16 files migrated)
  • Palette: Notion-inspired warm neutrals, teal primary (#0D9488), amber/emerald semantic colors
  • Dark mode: Warm gray #191919 (not OLED black), better contrast throughout
  • Motion: Framer Motion spring physics, stagger reveals on all pages, AnimatePresence crossfades on practice timer mode switches, breathing pulse indicators, in-tune celebrations on tuner
  • Layout: Asymmetric bento grids on dashboard, single-column tool-like layout on recommendations and profile
  • Cards: Simplified from double-bezel to clean Notion-style flat cards with barely-there borders
  • Profile page: Redesigned from dashboard template to compact tool — one-line header, inline session rows, chip filters
  • Recommendations page: Redesigned from two-panel marketing layout to single-column tool with chip presets
  • Auth pages: Split-panel with form-first on mobile, matching marketing panels on both login and register
  • Grain texture overlay for physical feel
  • prefers-reduced-motion respected globally
  • Touch targets: 44px minimum on all buttons
  • Tests: All 22 passing (mocked framer-motion for jsdom)
  • TODO roadmap at docs/TODO.md covering email, visual identity ideas, accessibility, testing gaps

Test plan

  • npx next build — clean, 14 static pages
  • npm test — 22/22 passing
  • Manual QA: login, register, dashboard, practice timer, recommendations, profile
  • Responsive check: mobile (375px), tablet (768px), desktop (1440px)
  • Dark mode toggle works correctly
  • All animations respect prefers-reduced-motion

🤖 Generated with Claude Code

Dandiggas and others added 30 commits April 8, 2026 12:23
Foundation swap approach: rose/coral accent, Geist font, Phosphor icons,
Framer Motion spring physics, asymmetric bento layouts across all pages.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
14 tasks covering foundation swap (colors, font, shadows), icon migration
(14 files), motion system, and per-page layout + animation overhauls.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replaced lucide-react with @phosphor-icons/react across all 16 files.
Updated icon names (e.g. Music2->MusicNote, Mic->Microphone, LogOut->SignOut),
added size/weight props, removed className-based sizing, and updated
LucideIcon type references to React.ComponentType<IconProps>.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…er reveals

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…pring beats

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace min-h-screen with min-h-[100dvh] in layout.tsx and page.tsx
- Migrate chart palettes from hardcoded purple/green hex values to
  design-system tokens (rose/stone scale: chart-1…chart-5, primary)
- CalendarHeatmap CSS-in-JS colors + legend swatches now use CSS vars
- InstrumentBreakdown COLORS array now references CSS custom properties
- PracticeChart bar colors replaced with rose/stone RGBA equivalents

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Double-bezel (Doppelrand) card architecture: outer shell + inner core
- Button-in-button CTA pattern with trailing icon circles
- Pill-shaped buttons with active:scale press physics
- Custom cubic-bezier transitions (0.32, 0.72, 0, 1)
- Deeper dark mode (#050505 bg, #111110 cards)
- Sky blue accent palette (#0ea5e9 light, #7dd3fc dark)
- Subtle grain texture overlay via noise.svg
- Radial glow ambient light in backgrounds
- Eyebrow tags with uppercase tracking
- Macro-whitespace (larger section padding)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- AnimatePresence crossfade between setup and active session modes
- Breathing pulse dot on "Session Active" indicator
- Timer dims to 50% opacity when paused
- Paused badge animates in/out with scale
- Error messages slide in/out smoothly
- All transitions use premium cubic-bezier (0.32, 0.72, 0, 1)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Default theme: light (warm off-white #f8f8f6 bg)
- Register page: full split-panel layout matching login quality
- Login mobile: form shows first, marketing below (order swap)
- Button touch targets: bumped to 44px minimum (h-11)
- Added prefers-reduced-motion media query
- Grain overlay z-index: 50 → 30 (won't block modals)
- Register: double-bezel card, button-in-button CTA, feature cards

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…harts

- New color tokens: warm (amber #f59e0b) and success (emerald #10b981)
- Chart palette: blue, amber, emerald, violet, rose (was monochrome)
- Login/Register feature cards: each icon gets its own color tint
- Dashboard instruments: Guitar=blue, Bass=amber, Drums=red, Keys=green
- Streak flame icon: amber (warmth/fire) instead of blue
- Stats clock icon: blue (time) instead of gray

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Palette: warm white #ffffff bg, soft charcoal #37352f text, muted cyan
  #2eaadc primary (Notion's exact blue), barely-there #e9e9e7 borders
- Cards: simple flat surfaces with subtle borders, no double-bezel
- Buttons: rounded-lg (not pill), simpler 200ms transitions, no translate-y
- Typography: softer hierarchy, less aggressive tracking
- Login/Register: cleaner layout, feature cards as hover-highlighted rows
- Dark mode: warm gray #191919 (not OLED black), #202020 cards
- Radius: 0.625rem base (softer than before)
- Overall: paper-like, calm, the UI disappears and content leads

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Killed the two-panel layout. Single column, max-w-2xl, centered.
- Compact header: icon + title inline, one line of description.
- Goal presets: chip/pill buttons instead of full-width bordered rows.
  Active preset highlights in primary/10.
- Form: instrument + level side-by-side on desktop. Inputs match
  Notion-style (bg-background, barely-there borders, 200ms transitions).
- Removed Card wrapper nesting. Flat structure, no cards-in-cards.
- Result card: clean, minimal, "Your plan" header with cached badge.
- Removed all marketing copy. This is a tool, not a sales pitch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Card bg #202020 → #252525 (more separation from #191919 bg)
- Foreground #e3e2e0 → #ededec (brighter text)
- Muted-foreground #9b9a97 → #ababab (more readable)
- Primary dark: #14B8A6 → #2dd4bf (teal-300, brighter on dark bg)
- Borders: 8% → 12% opacity (more visible)
- Icon backgrounds: boosted to 15% opacity in dark mode
- Removed console.log from RegisterPage
- Fixed unused variable warning

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Killed the giant "Welcome back" hero + marketing copy
- Header: just "username." + session count + last instrument inline
- Latest session: compact card, not a full panel with nested boxes
- Removed redundant Logout button (already in header nav)
- Heatmap/charts: simple section headers, no Card wrappers with CardTitle
- Charts side by side with minimal chrome
- Session archive: compact row layout (not 4-column grid cards)
  Each session is one line: #id · instrument · description · date · duration
- Filters: chip buttons + inline date/search (not stacked labeled inputs)
- Empty states: centered text with CTA, not bordered dashed boxes
- Removed shadow-lg from everything (too heavy, all same weight)
- Overall: reads like a tool you use daily, not a dashboard you demo

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dandiggas and others added 3 commits April 8, 2026 22:40
- Mock framer-motion and motion-wrapper in practice-timer tests
  (AnimatePresence doesn't render children in jsdom)
- All 22 tests passing
- Add docs/TODO.md with deferred work: email, visual identity,
  design review findings, performance, testing, accessibility

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove .claude/, .gstack/, .superpowers/, .next/ from git tracking.
These are local-only AI tooling files that should never be in the repo.
Updated .gitignore to prevent future commits.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Dandiggas Dandiggas merged commit fc5d1f6 into main Apr 9, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant