// chrome.jsx — Header, Footer, shared bits
const NAV_ITEMS = [
{ id: 'home', label: 'Home' },
{ id: 'services', label: 'Services' },
{ id: 'work', label: 'Work' },
{ id: 'about', label: 'About' },
{ id: 'contact', label: 'Contact' },
{ id: 'book', label: 'Book a Call' },
];
const PAGE_HREFS = {
home: '/',
services: '/services',
work: '/work',
about: '/about',
contact: '/contact',
book: '/book',
privacy: '/privacy',
disclaimer: '/disclaimer',
};
function Arrow({ size = 12, style }) {
return (
);
}
function SunMoon({ dark }) {
return dark ? (
) : (
);
}
function MenuIcon({ open }) {
return open ? (
) : (
);
}
function Header({ route, setRoute, dark, setDark }) {
const [scrolled, setScrolled] = React.useState(false);
const [menuOpen, setMenuOpen] = React.useState(false);
React.useEffect(() => {
const on = () => setScrolled(window.scrollY > 12);
on();
window.addEventListener('scroll', on, { passive: true });
return () => window.removeEventListener('scroll', on);
}, []);
const go = (id) => {
setRoute(id);
setMenuOpen(false);
window.scrollTo({ top: 0, behavior: 'smooth' });
};
return (
<>