Skip to content

Commit

Permalink
chore: FRON-55 Theme toggler using local storage
Browse files Browse the repository at this point in the history
  • Loading branch information
Lombardoc4 committed Jun 10, 2024
1 parent 477fc6a commit b92f339
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
35 changes: 35 additions & 0 deletions src/components/ThemeToggler.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
'use client';

import { MoonIcon, SunIcon } from 'lucide-react';
import React, { useEffect, useState } from 'react';

export const ThemeSwitcher = () => {
const [darkMode, setDarkMode] = useState(false);
const [mounted, setMounted] = useState(false);

useEffect(() => {
const isDarkMode = localStorage.getItem('darkMode') === 'true';
setDarkMode(isDarkMode);
setMounted(true);
}, []);

useEffect(() => {
if (mounted) {
document.documentElement.classList.toggle('dark', darkMode);
localStorage.setItem('darkMode', darkMode.toString());
}
}, [mounted, darkMode]);

const toggleDarkMode = () => {
setDarkMode((prevMode) => !prevMode);
};

return (
<button
onClick={toggleDarkMode}
className='rounded-md bg-gray-800 px-4 py-2 text-white'
>
{darkMode ? <MoonIcon /> : <SunIcon />}
</button>
);
};
2 changes: 2 additions & 0 deletions src/components/TopNav/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import Link from 'next/link';

import { MainNav } from './MainNav';
import { ServerStatus } from './ServerStatus';
import { ThemeSwitcher } from '../ThemeToggler';

export * from './MainNav';
export * from './UserNav';
Expand All @@ -27,6 +28,7 @@ export const TopNav = () => {
{/* Sidelined for v2 */}
<div className='ml-auto flex items-center space-x-4'>
<ServerStatus />
<ThemeSwitcher />
{/* <UserNav /> */}
</div>
</div>
Expand Down

0 comments on commit b92f339

Please sign in to comment.