finlion-website/src/components/layout/Header.tsx
2024-11-27 10:17:51 -06:00

128 lines
4.5 KiB
TypeScript

'use client'
import { useState } from 'react';
import Image from 'next/image';
import Link from 'next/link';
import { Menu, X } from 'lucide-react';
const navigation = [
{ name: 'Home', href: '/' },
{ name: 'Services', href: '/services' },
{ name: 'About', href: '/about' },
{ name: 'Contact', href: '/contact' },
];
export default function Header() {
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
return (
<header className="fixed w-full bg-white/95 backdrop-blur-sm z-50 shadow-sm">
<nav className="mx-auto flex max-w-7xl items-center justify-between p-6 lg:px-8" aria-label="Global">
<div className="flex lg:flex-1">
<Link href="/" className="-m-1.5 p-1.5">
<span className="sr-only">FINLION</span>
<Image
className="h-12 w-auto"
src="/images/logo.jpg"
alt="FINLION Logo"
width={180}
height={48}
priority
/>
</Link>
</div>
{/* Mobile menu button */}
<div className="flex lg:hidden">
<button
type="button"
className="-m-2.5 inline-flex items-center justify-center rounded-md p-2.5 text-gray-700"
onClick={() => setMobileMenuOpen(true)}
>
<span className="sr-only">Open main menu</span>
<Menu className="h-6 w-6" aria-hidden="true" />
</button>
</div>
{/* Desktop navigation */}
<div className="hidden lg:flex lg:gap-x-12">
{navigation.map((item) => (
<Link
key={item.name}
href={item.href}
className="text-sm font-semibold leading-6 text-gray-900 hover:text-blue-800 transition-colors"
>
{item.name}
</Link>
))}
</div>
{/* CTA Button */}
<div className="hidden lg:flex lg:flex-1 lg:justify-end">
<Link
href="/contact"
className="rounded-md bg-blue-800 px-3.5 py-2.5 text-sm font-semibold text-white shadow-sm hover:bg-blue-700 transition-colors"
>
Get Started
</Link>
</div>
</nav>
{/* Mobile menu */}
{mobileMenuOpen && (
<div className="lg:hidden">
<div className="fixed inset-0 z-50">
<div className="fixed inset-y-0 right-0 z-50 w-full overflow-y-auto bg-white px-6 py-6 sm:max-w-sm sm:ring-1 sm:ring-gray-900/10">
<div className="flex items-center justify-between">
<Link href="/" className="-m-1.5 p-1.5">
<span className="sr-only">FINLION</span>
<Image
className="h-8 w-auto"
src="/images/logo.jpg"
alt="FINLION Logo"
width={120}
height={32}
priority
/>
</Link>
<button
type="button"
className="-m-2.5 rounded-md p-2.5 text-gray-700"
onClick={() => setMobileMenuOpen(false)}
>
<span className="sr-only">Close menu</span>
<X className="h-6 w-6" aria-hidden="true" />
</button>
</div>
<div className="mt-6 flow-root">
<div className="-my-6 divide-y divide-gray-500/10">
<div className="space-y-2 py-6">
{navigation.map((item) => (
<Link
key={item.name}
href={item.href}
className="-mx-3 block rounded-lg px-3 py-2 text-base font-semibold leading-7 text-gray-900 hover:bg-gray-50"
onClick={() => setMobileMenuOpen(false)}
>
{item.name}
</Link>
))}
</div>
<div className="py-6">
<Link
href="/contact"
className="-mx-3 block rounded-lg px-3 py-2.5 text-base font-semibold leading-7 text-white bg-blue-800 hover:bg-blue-700 text-center"
onClick={() => setMobileMenuOpen(false)}
>
Get Started
</Link>
</div>
</div>
</div>
</div>
</div>
</div>
)}
</header>
);
}