import { BsCart3, BsMoonFill, BsSunFill } from 'react-icons/bs';
import { FaBarsStaggered } from 'react-icons/fa6';
import { NavLink } from 'react-router-dom';
import NavLinks from './NavLinks';
import { useEffect, useState } from 'react';
const themes = {
winter: 'winter',
dracula: 'dracula',
};
const getThemeFromLocalStorage = () => {
return localStorage.getItem('theme') || themes.winter;
};
const Navbar = () => {
const [theme, setTheme] = useState(getThemeFromLocalStorage());
const handleTheme = () => {
const { winter, dracula } = themes;
const newTheme = theme === winter ? dracula : winter;
setTheme(newTheme);
};
useEffect(() => {
document.documentElement.setAttribute('data-theme', theme);
localStorage.setItem('theme', theme);
}, [theme]);
return (
<nav className='bg-base-200'>
<div className='navbar mx-auto max-w-7xl px-8 '>
<div className='navbar-start'>
{/* Title */}
<NavLink
to='/'
className='hidden lg:flex btn btn-primary text-3xl items-center '
>
C
</NavLink>
{/* DROPDOWN */}
<div className='dropdown'>
<label tabIndex={0} className='btn btn-ghost lg:hidden'>
<FaBarsStaggered className='h-6 w-6' />
</label>
<ul
tabIndex={0}
className='menu menu-sm dropdown-content mt-3 z-[1] p-2 shadow bg-base-100 rounded-box w-52'
>
<NavLinks />
</ul>
</div>
</div>
<div className='navbar-center hidden lg:flex'>
<ul className='menu menu-horizontal '>
<NavLinks />
</ul>
</div>
<div className='navbar-end'>
<label className='swap swap-rotate '>
{/* this hidden checkbox controls the state */}
<input type='checkbox' onChange={handleTheme} />
{/* sun icon */}
<BsSunFill className='swap-on h-4 w-4' />
{/* moon icon */}
<BsMoonFill className='swap-off h-4 w-4' />
</label>
<NavLink to='cart' className='btn btn-ghost btn-circle btn-md ml-4'>
<div className='indicator'>
<BsCart3 className='h-6 w-6' />
<span className='badge badge-sm badge-primary indicator-item'>
8
</span>
</div>
</NavLink>
</div>
</div>
</nav>
);
};
export default Navbar;Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|