extract hamburger to own file

This commit is contained in:
premiare
2023-08-18 00:18:25 +10:00
parent 6e62eb8d81
commit 45d0d3f7e8
2 changed files with 25 additions and 12 deletions

View File

@ -5,17 +5,20 @@ import { HTMLAttributes, useState } from 'react';
import Image from 'next/image';
import Link from 'next/link';
import { Menu, X } from 'lucide-react';
import { cn } from '@documenso/ui/lib/utils';
import { Button } from '@documenso/ui/primitives/button';
import { HamburgerMenu } from './mobile-hamburger';
import { MobileNavigation } from './mobile-navigation';
export type HeaderProps = HTMLAttributes<HTMLElement>;
export const Header = ({ className, ...props }: HeaderProps) => {
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState<boolean>(false);
const handleMenuToggle = () => {
setIsMobileMenuOpen(!isMobileMenuOpen);
};
return (
<header className={cn('flex items-center justify-between', className)} {...props}>
<Link href="/">
@ -40,15 +43,7 @@ export const Header = ({ className, ...props }: HeaderProps) => {
</Link>
</div>
<div className="flex md:hidden">
<Button
variant="default"
className="z-20 w-10 p-0"
onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}
>
{isMobileMenuOpen ? <X /> : <Menu />}
</Button>
</div>
<HamburgerMenu menuToggle={handleMenuToggle} isMenuOpen={isMobileMenuOpen} />
<MobileNavigation isMenuOpen={isMobileMenuOpen} />
</header>
);

View File

@ -0,0 +1,18 @@
import { Menu, X } from 'lucide-react';
import { Button } from '@documenso/ui/primitives/button';
export interface HamburgerMenuProps {
isMenuOpen: boolean;
menuToggle: () => void;
}
export const HamburgerMenu = ({ isMenuOpen, menuToggle }: HamburgerMenuProps) => {
return (
<div className="flex md:hidden">
<Button variant="default" className="z-20 w-10 p-0" onClick={menuToggle}>
{isMenuOpen ? <X /> : <Menu />}
</Button>
</div>
);
};