// ===== Data you can edit each week ===== const weeklyFlavors = [ { name: "Birthday Cake Martini (Caketini)", tags: ["Signature"], desc: "Vanilla confetti cake, whipped vodka‑vanilla buttercream, sprinkles." }, { name: "Peach Cobbler Old Fashioned", tags: ["Boozy"], desc: "Brown‑butter cake, peach compote, bourbon glaze, crumble." }, { name: "Cookies & Cream", tags: ["Classic"], desc: "Chocolate cake, Oreo crumble, whipped cream cheese frosting." }, { name: "Strawberry Rosé", tags: ["Boozy","Vegan option"], desc: "Rosé‑kissed strawberry buttercream on vanilla sponge." }, { name: "Lemon Blueberry Bliss", tags: ["Non‑Alcoholic"], desc: "Lemon zest cake, blueberry curd, lemon buttercream." }, { name: "Coconut Cream Pie Colada", tags: ["Boozy"], desc: "Coconut cake, pineapple curd, rum‑coconut cream." } ]; // Events / markets calendar const events = [ { date: "2025-08-21", time: "3:00–10:00 PM", title: "Dessert Lounge — Open Hours", type: "popup", venue: "1789 Cheshire Bridge Rd, Atlanta", cta: "#", ctaLabel: "Details" }, { date: "2025-08-22", time: "6:00–11:00 PM", title: "Parking Lot Social — Food Truck Park", type: "market", venue: "Midtown ATL", cta: "#", ctaLabel: "RSVP" }, { date: "2025-08-23", time: "3:00–late", title: "Saturday Market Pop‑Up", type: "market", venue: "Ponce City Market", cta: "#", ctaLabel: "Map" }, { date: "2025-08-29", time: "7:00–11:00 PM", title: "Glow Night Dessert Party", type: "popup", venue: "Knock Music House", cta: "#", ctaLabel: "Tickets" } ]; // Gallery placeholders const gallery = Array.from({ length: 8 }).map((_, i) => ({ alt: `Gallery item ${i+1}` })); // ===== Helpers ===== const qs = (s, el=document) => el.querySelector(s); const qsa = (s, el=document) => [...el.querySelectorAll(s)]; // Navbar toggle const toggle = qs('.nav-toggle'); const menu = qs('.menu'); if (toggle) { toggle.addEventListener('click', () => { const open = menu.classList.toggle('open'); toggle.setAttribute('aria-expanded', String(open)); }); } // Populate year qs('#year').textContent = new Date().getFullYear(); // Render flavors const flavorGrid = qs('#flavor-grid'); weeklyFlavors.forEach(f => { const card = document.createElement('article'); card.className = 'card'; card.innerHTML = `
${f.desc}
`; flavorGrid.appendChild(card); }); // Render events with filters function isThisWeek(iso) { const d = new Date(iso); const now = new Date(); const day = now.getDay(); // 0-6, sunday=0 const start = new Date(now); start.setDate(now.getDate() - day); start.setHours(0,0,0,0); const end = new Date(start); end.setDate(start.getDate() + 7); end.setHours(23,59,59,999); return d >= start && d <= end; } const list = qs('#event-list'); const ckbThisWeek = qs('#filter-this-week'); const ckbMarkets = qs('#filter-markets'); const ckbPopups = qs('#filter-popups'); function renderEvents() { list.innerHTML = ''; events .filter(ev => !ckbThisWeek.checked || isThisWeek(ev.date)) .filter(ev => !ckbMarkets.checked ? ev.type !== 'market' : true) .filter(ev => !ckbPopups.checked ? ev.type !== 'popup' : true) .sort((a,b) => a.date.localeCompare(b.date)) .forEach(ev => { const el = document.createElement('article'); el.className = 'event-item'; const date = new Date(ev.date); const friendly = date.toLocaleDateString(undefined, { weekday: 'short', month: 'short', day: 'numeric' }); el.innerHTML = `${f.desc}
`; flavorGrid.appendChild(card); }); // Render events with filters function isThisWeek(iso) { const d = new Date(iso); const now = new Date(); const day = now.getDay(); // 0-6, sunday=0 const start = new Date(now); start.setDate(now.getDate() - day); start.setHours(0,0,0,0); const end = new Date(start); end.setDate(start.getDate() + 7); end.setHours(23,59,59,999); return d >= start && d <= end; } const list = qs('#event-list'); const ckbThisWeek = qs('#filter-this-week'); const ckbMarkets = qs('#filter-markets'); const ckbPopups = qs('#filter-popups'); function renderEvents() { list.innerHTML = ''; events .filter(ev => !ckbThisWeek.checked || isThisWeek(ev.date)) .filter(ev => !ckbMarkets.checked ? ev.type !== 'market' : true) .filter(ev => !ckbPopups.checked ? ev.type !== 'popup' : true) .sort((a,b) => a.date.localeCompare(b.date)) .forEach(ev => { const el = document.createElement('article'); el.className = 'event-item'; const date = new Date(ev.date); const friendly = date.toLocaleDateString(undefined, { weekday: 'short', month: 'short', day: 'numeric' }); el.innerHTML = `