/* Event Detail + Booking + Tickets + Profile + AI assistant */ const { useState, useEffect } = React; // ─── EVENT DETAIL ───────────────────────────────────────────────── const DetailScreen = ({ tweaks, isMobile, nav, eventId }) => { const currency = tweaks.currency || "INR"; const ev = DATA.events.find(e => e.id === eventId) || DATA.events[0]; const [saved, setSaved] = useState(false); return (
{/* Hero image */}
{/* Bottom-overlay header for desktop */} {!isMobile && (
{ev.tag}

{ev.title}

)}
{/* Main column */}
{isMobile && ( <>
{ev.tag}

{ev.title}

)} {/* Quick facts */}
{[ { icon:"calendar", k:"When", v:`${ev.date} · ${ev.time}` }, { icon:"pin", k:"Venue", v:`${ev.venue}, ${ev.area}` }, { icon:"ticket", k:"Tickets", v:`From ${fmtPrice(ev.price, currency)}` }, { icon:"users", k:"Going", v:`${ev.friends} friends · ${300+(ev.id.charCodeAt(0)%500)} others` }, ].map(f => { const Icon = I[f.icon]; return (
{f.k}
{f.v}
); })}
{/* About */}

About

{ev.about || `Join us for an unforgettable evening of ${ev.tag.toLowerCase()} at ${ev.venue}. This is one of the most anticipated events in ${ev.area} this season — expect an electric atmosphere, top performers, and a crowd that knows how to show up.`}

{/* Lineup */} {ev.lineup && ( <>

Lineup

{ev.lineup.map(p => (
{p}
))}
)} {/* Friends going */} {ev.friends > 0 && ( <>

Friends going

{DATA.friends.slice(0, ev.friends).map((f,i) => (
{f.initial}
))}
{DATA.friends.slice(0, ev.friends).map(f=>f.name.split(" ")[0]).join(", ")} are going
Want to make a group plan?
)} {/* Venue */}

Venue

{ev.venue}
{ev.area}, {DATA.city} · 2.4 km away
{/* Reviews */}

What people say

{[ { n:"Priya M.", t:"Best gig of the year. Sound was crystal." }, { n:"Karan S.", t:"Got there early — totally worth it." }, ].map(r => (
★★★★★

"{r.t}"

— {r.n}
))}
{/* Booking sidebar (desktop) */} {!isMobile && ( )}
{/* Mobile sticky CTA */} {isMobile && (
FROM
{fmtPrice(ev.price, currency)}
)}
); }; // ─── BOOKING (seat select + checkout) ──────────────────────────── const BookingScreen = ({ tweaks, isMobile, nav, eventId }) => { const currency = tweaks.currency || "INR"; const ev = DATA.events.find(e => e.id === eventId) || DATA.events[0]; const [step, setStep] = useState(0); const [tier, setTier] = useState("standard"); const [qty, setQty] = useState(2); const [paid, setPaid] = useState(false); const tiers = [ { id:"early", label:"Early bird", price: ev.price, sold:true, sub:"Sold out" }, { id:"standard", label:"Standard", price: Math.round(ev.price * 1.2), sub:"42 left" }, { id:"premium", label:"Premium", price: Math.round(ev.price * 2), sub:"VIP entry, free drink" }, ]; const selectedTier = tiers.find(t => t.id === tier); const subtotal = selectedTier.price * qty; const fees = Math.round(subtotal * 0.06); const total = subtotal + fees; const Step = ({ n, label, active, done }) => (
{done?"✓":n}
{label}
); return (
Booking · {ev.title}
0} /> 1} />
{step === 0 && (

Choose your tier

{tiers.map(t => { const sel = tier === t.id; return ( ); })}

How many?

{qty}
{qty >= 2 && Group booking}
{qty} × {selectedTier.label}{fmtPrice(subtotal, currency)}
Booking fees{fmtPrice(fees, currency)}
Total{fmtPrice(total, currency)}
)} {step === 1 && (

Your details

{[{l:"Name",v:"Aarav K."},{l:"Email",v:"aarav.k@noesis.io"},{l:"Phone",v:"+91 98XXX 23492"}].map(f => (
{f.l}
))}
)} {step === 2 && !paid && (

Payment

{["UPI","Card","Wallet","Net banking"].map((m,i) => ( ))}
UPI ID
You'll pay{fmtPrice(total, currency)}
)} {step === 2 && paid && (

You're in.

{qty} ticket{qty>1?"s":""} for {ev.title}

)}
{/* Footer CTA */} {!paid && (
TOTAL
{fmtPrice(total, currency)}
)}
); }; window.DetailScreen = DetailScreen; window.BookingScreen = BookingScreen;