2026-05-12 01:04:17 -05:00
|
|
|
import { useState, useEffect } from 'react'
|
|
|
|
|
import { SheetTrigger } from '@/components/ui/Sheet'
|
|
|
|
|
|
|
|
|
|
const Header = () => {
|
|
|
|
|
const [isScrolled, setIsScrolled] = useState(false)
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
const handleScroll = () => {
|
|
|
|
|
setIsScrolled(window.scrollY > 10)
|
|
|
|
|
}
|
|
|
|
|
window.addEventListener('scroll', handleScroll)
|
|
|
|
|
return () => window.removeEventListener('scroll', handleScroll)
|
|
|
|
|
}, [])
|
|
|
|
|
|
|
|
|
|
const navLinks = [
|
|
|
|
|
{ name: 'Home', href: '/' },
|
|
|
|
|
{ name: 'Services', href: '/services' },
|
|
|
|
|
{ name: 'Industries', href: '/industries' },
|
|
|
|
|
{ name: '8x8', href: '/8x8' },
|
|
|
|
|
{ name: 'About', href: '/about' },
|
|
|
|
|
{ name: 'Contact', href: '/contact' },
|
|
|
|
|
{ name: 'Support', href: '/support' },
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<>
|
2026-05-12 02:39:35 -05:00
|
|
|
<header className={`sticky top-0 z-40 w-full transition-all duration-300 ${isScrolled ? 'bg-primary-navy shadow-md' : 'bg-primary-navy/95'}`}>
|
2026-05-12 01:04:17 -05:00
|
|
|
<div className="container mx-auto px-4">
|
|
|
|
|
<div className="flex h-16 items-center justify-between">
|
|
|
|
|
{/* Logo */}
|
2026-05-12 02:39:35 -05:00
|
|
|
<div className="flex items-center gap-3">
|
2026-05-12 01:04:17 -05:00
|
|
|
<img
|
|
|
|
|
src="/logo.svg"
|
|
|
|
|
alt="Queue North Technologies"
|
2026-05-12 02:39:35 -05:00
|
|
|
className="h-8 w-auto flex-shrink-0"
|
2026-05-12 01:04:17 -05:00
|
|
|
/>
|
2026-05-12 02:39:35 -05:00
|
|
|
<span className="font-bold text-xl text-white hidden sm:block tracking-tight">Queue North</span>
|
2026-05-12 01:04:17 -05:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{/* Desktop Nav */}
|
|
|
|
|
<nav className="hidden md:flex items-center gap-6">
|
|
|
|
|
{navLinks.map((link) => (
|
|
|
|
|
<a
|
|
|
|
|
key={link.name}
|
|
|
|
|
href={link.href}
|
2026-05-12 02:39:35 -05:00
|
|
|
className="text-sm font-medium text-navy-light hover:text-white transition-colors"
|
2026-05-12 01:04:17 -05:00
|
|
|
>
|
|
|
|
|
{link.name}
|
|
|
|
|
</a>
|
|
|
|
|
))}
|
|
|
|
|
</nav>
|
|
|
|
|
|
|
|
|
|
{/* CTA Button */}
|
2026-05-12 02:39:35 -05:00
|
|
|
<div className="hidden md:block">
|
|
|
|
|
<a href="/contact" className="inline-flex items-center justify-center rounded-md text-sm font-medium h-9 px-3 bg-primary-navy text-white hover:bg-primary-navy-dark transition-colors">
|
2026-05-12 01:04:17 -05:00
|
|
|
Request Consultation
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{/* Mobile Menu Toggle */}
|
|
|
|
|
<SheetTrigger asChild>
|
2026-05-12 02:39:35 -05:00
|
|
|
<button className="md:hidden p-2 text-white hover:text-cyan transition-colors focus:outline-none focus:ring-2 focus:ring-cyan rounded-md">
|
2026-05-12 01:04:17 -05:00
|
|
|
<span className="sr-only">Open menu</span>
|
|
|
|
|
<svg
|
|
|
|
|
className="h-6 w-6"
|
|
|
|
|
fill="none"
|
|
|
|
|
stroke="currentColor"
|
|
|
|
|
viewBox="0 0 24 24"
|
|
|
|
|
>
|
|
|
|
|
<path
|
|
|
|
|
strokeLinecap="round"
|
|
|
|
|
strokeLinejoin="round"
|
|
|
|
|
strokeWidth="2"
|
|
|
|
|
d="M4 6h16M4 12h16M4 18h16"
|
|
|
|
|
/>
|
|
|
|
|
</svg>
|
|
|
|
|
</button>
|
|
|
|
|
</SheetTrigger>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</header>
|
|
|
|
|
</>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default Header
|