/* Alchemy website — top navigation (shared) */ const { Button } = window.DS; // "Ways to Join" groups the membership tiers. Meeting Rooms + Day Passes are their own top-level tabs. const SPACES_ITEMS = [ { route: 'join', label: 'Business Club', desc: 'Come and go, from $149/mo' }, { route: 'desks', label: 'Dedicated Desks', desc: 'A desk to call your own' }, { route: 'offices', label: 'Private Offices', desc: 'Your turn-key HQ' }, ]; const NAV_LINKS = [ ['meeting', 'Meeting Rooms'], ['daypass', 'Day Passes'], ]; function SpacesMenu({ light, current, onNavigate }) { const [open, setOpen] = React.useState(false); const ref = React.useRef(null); React.useEffect(() => { function outside(e) { if (ref.current && !ref.current.contains(e.target)) setOpen(false); } document.addEventListener('mousedown', outside); return () => document.removeEventListener('mousedown', outside); }, []); const active = SPACES_ITEMS.some((s) => s.route === current); const trigger = { all: 'unset', cursor: 'pointer', display: 'inline-flex', alignItems: 'center', gap: 6, fontFamily: 'var(--font-label)', fontWeight: 600, fontSize: '0.84rem', letterSpacing: '0.04em', textTransform: 'uppercase', padding: '0.5rem 0.85rem', color: light ? ((open || active) ? '#fff' : 'rgba(255,255,255,0.8)') : ((open || active) ? 'var(--navy-700)' : 'var(--stone-600)'), borderBottom: active ? '2px solid var(--slate-500)' : '2px solid transparent', }; return (
{open && (
{SPACES_ITEMS.map((s) => ( ))}
)}
); } function Nav({ current, onNavigate, overDark = false }) { const [scrolled, setScrolled] = React.useState(false); React.useEffect(() => { const root = document.getElementById('kit-scroll') || window; const el = document.getElementById('kit-scroll'); const handler = () => setScrolled((el ? el.scrollTop : window.scrollY) > 12); handler(); root.addEventListener('scroll', handler); return () => root.removeEventListener('scroll', handler); }, []); // Light (knockout) treatment only when sitting over a dark hero and not scrolled. const light = overDark && !scrolled; /* Header CTA destinations come from the shared registry (links.jsx). Blank values keep the in-app navigation fallback. */ const loginUrl = window.alcLink ? window.alcLink(null, 'partnerLogin') : ''; const tourUrl = window.alcLink ? window.alcLink(null, 'scheduleTour') : ''; return (
onNavigate('home')} style={{ cursor: 'pointer', display: 'flex', flex: 'none', alignItems: 'center' }}> Alchemy Co-Working
{loginUrl ? ( Partner Login ) : ( )} {tourUrl ? : }
); } window.Nav = Nav;