/* Alchemy — VIRTUAL TOUR funnel. One destination for every "Virtual Tour" button on the site (home page location cards and all three location pages). Visitor picks a location, watches its walkthrough inline, then converts to an in-person tour. Each location's `tourUrl` is the embeddable walkthrough (Matterport, YouTube, etc). Until a real URL is supplied the viewer shows a labelled placeholder rather than a broken frame. */ const { Button, Tag, SectionHeading } = window.DS; const vtWrap = { maxWidth: 'var(--container-wide)', margin: '0 auto', padding: '0 var(--gutter)' }; const vtGoMain = (hash) => { window.location.href = window.alcUrl ? window.alcUrl('home', hash) : 'index.html' + (hash ? '#' + hash : ''); }; /* Walkthrough URLs come from the shared registry (virtualTours.jsx) so the funnel and every location page agree on whether a tour exists yet. */ const VT_LOCATIONS = [ { key: 'dtg', name: 'Downtown Gastonia', tag: 'Our flagship', addr: '121 W. Main Ave, Gastonia, NC 28052', blurb: 'A historic Main Street building, The Wandering Cup coffee shop, and the community that started it all.', thumb: '../../assets/dtg-09.webp', route: 'dtg', }, { key: 'clt', name: 'Charlotte', tag: 'Room to scale', addr: '2459 Wilkinson Blvd, Charlotte, NC 28208', blurb: 'The Launch Pad event space, a podcast studio, bookable rooms, and free direct-access parking.', thumb: '../../assets/event-space.webp', route: 'clt', }, { key: 'lry', name: 'Loray Gastonia', tag: 'Historic Loray Mill', addr: '300 S Firestone St, Suite 200 H, Gastonia, NC 28052', blurb: 'Exposed brick, massive windows, and an on-site gym inside one of the most storied buildings in the Carolinas.', thumb: '../../assets/lry/lry-lounge-2.jpg', route: 'lry', }, ]; const vtUrlFor = (key) => (window.VIRTUAL_TOURS && window.VIRTUAL_TOURS[key]) || ''; function VTHeader() { const [scrolled, setScrolled] = React.useState(false); React.useEffect(() => { const el = document.getElementById('kit-scroll'); const h = () => setScrolled((el ? el.scrollTop : window.scrollY) > 12); h(); (el || window).addEventListener('scroll', h); return () => (el || window).removeEventListener('scroll', h); }, []); const light = !scrolled; return (
Alchemy Co-Working Virtual Tour
); } function VTHero({ active, onPick }) { return (
Look around before you visit

Take a virtual tour

Walk all three Alchemy locations from wherever you are. Pick a location to start, then book an in-person tour when you're ready.

{VT_LOCATIONS.map((l) => { const on = active === l.key; return ( ); })}
); } function VTViewer({ loc, onPick }) { const tourUrl = vtUrlFor(loc.key); return (
{loc.tag}

{loc.name}

{loc.blurb}

{loc.addr}
{tourUrl ? ( ) : (
Walkthrough coming soon

The {loc.name} walkthrough is being produced. Book an in-person tour in the meantime and we'll show you around ourselves.

{onPick && (
{VT_LOCATIONS.filter((l) => l.key !== loc.key).map((l) => ( ))}
)}
)}
); } function VTPicker({ active, onPick }) { return (
{VT_LOCATIONS.map((l) => { const on = active === l.key; return ( ); })}
); } function VTConvert() { return (
{[['Call', '(704) 753-8722'], ['Email', 'team@alchemycowork.com']].map(([k, v]) => (
{k} {v}
))}
); } function VirtualTourApp() { const initial = (() => { const h = (window.location.hash || '').replace('#', '').toLowerCase(); return VT_LOCATIONS.some((l) => l.key === h) ? h : 'dtg'; })(); const [active, setActive] = React.useState(initial); const loc = VT_LOCATIONS.find((l) => l.key === active) || VT_LOCATIONS[0]; return (
vtGoMain()} />
); } Object.assign(window, { VirtualTourApp, VT_LOCATIONS });