Skip to content

feat: add dark mode toggle#166

Open
yokuisiti wants to merge 1 commit into
sorosave-protocol:mainfrom
yokuisiti:feat/dark-mode
Open

feat: add dark mode toggle#166
yokuisiti wants to merge 1 commit into
sorosave-protocol:mainfrom
yokuisiti:feat/dark-mode

Conversation

@yokuisiti
Copy link
Copy Markdown

Summary

Closes #31

Implements a dark mode toggle with persistent user preference.

Changes

New file: src/components/ThemeToggle.tsx

  • Sun/moon icon button component
  • Reads saved preference from localStorage on mount
  • Falls back to system prefers-color-scheme for first-time visitors
  • Toggles .dark class on <html> element (Tailwind class-based dark mode)
  • Saves preference to localStorage on each toggle

Modified: src/components/Navbar.tsx

  • Added <ThemeToggle /> next to <ConnectWallet /> in the navbar

Modified: src/app/globals.css

  • Replaced @media (prefers-color-scheme: dark) with .dark class selector
  • Added 200ms smooth transition on background/color for a polished feel

Modified: src/app/layout.tsx

  • Added suppressHydrationWarning on <html> to avoid SSR mismatch
  • Added dark:bg-gray-950 on <body> for dark background

Acceptance Criteria

  • Toggle button visible in navbar
  • Switches between light and dark mode
  • Preference persists across page refreshes
  • Respects system preference on first visit

- Add ThemeToggle component with sun/moon icon button
- Persists preference to localStorage (sorosave-theme)
- Falls back to system prefers-color-scheme on first visit
- CSS class-based dark mode (.dark on <html>) for instant toggle
- Smooth 200ms transition on background/color change
- Integrated into Navbar next to ConnectWallet button

Closes sorosave-protocol#31
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.

Implement dark mode toggle

1 participant