// Agora Product — 3 treatments switchable inline. const Product = ({ route, setRoute, watchlist, toggleWatch }) => { const data = window.AG_DATA; const item = data.byId[route.id] || data.items[0]; const seller = data.sellers[item.seller]; const [treatment, setTreatment] = useState('editorial'); // editorial | utility | cinematic return (
{/* Treatment switcher — non-final UI surface, scoped to this prototype */}
setRoute({ name:'home' })}>Agora setRoute({ name:'browse', cat: item.cat })}>{data.categories.find(c=>c.id===item.cat)?.label} setRoute({ name:'browse', cat:'all', brand: item.brand })}>{item.brand} {item.title.split('·')[0].trim()}
View · {[ { id:'editorial', label:'A · Editorial' }, { id:'utility', label:'B · Utility' }, { id:'cinematic', label:'C · Cinematic' }, ].map(t => ( setTreatment(t.id)} className="ag-label" style={{ cursor:'pointer', padding:'6px 10px', borderRadius: 2, background: treatment===t.id ? 'var(--ag-ink)' : 'transparent', color: treatment===t.id ? '#fff' : 'var(--ap-fg-muted)', fontSize: 10, }}>{t.label} ))}
{treatment === 'editorial' && toggleWatch(item.id)}/>} {treatment === 'utility' && toggleWatch(item.id)}/>} {treatment === 'cinematic' && toggleWatch(item.id)}/>}
); }; /* ========================================================================= TREATMENT A — EDITORIAL Huge image left, slim spec column right. Serif display. ========================================================================= */ const TreatmentEditorial = ({ item, seller, setRoute, watched, onToggleWatch }) => { return (
{/* LEFT — image stack */}
{item.new && New listing}
{[item.palette, item.palette, item.palette, item.palette].map((_, i) => (
))}
{/* RIGHT — editorial spec sheet */}
{item.brand} · {item.year} · Stamp Z

{item.title.split('·')[0].trim()}

{item.title.split('·').slice(1).join(' · ').trim()}
€{item.eur.toLocaleString()}
¥{item.jpy.toLocaleString()} listed
Duties & DDP shipping included to Berlin
{item.acceptOffers && ( )}
Authenticated 21 Apr · Berlin hub · {item.deliverDays} business days
{/* Numbered sections — editorial rhythm */}

{item.notes}

{item.materials}. Carried lightly by a single owner from {seller.city} who acquired it new from the {item.brand} {seller.city === 'Tokyo' ? 'Ginza' : 'flagship'} boutique.

{item.dim && (
{[ { l:'Width', v:`${item.dim.w} cm` }, { l:'Height', v:`${item.dim.h} cm` }, { l:'Depth', v:`${item.dim.d} cm` }, { l:'Weight', v:`${item.dim.wt} kg` }, ].map(s => (
{s.l}
{s.v}
))}
)}

Inspected by our Berlin hub on 21 April 2026. Seven physical checks passed; digital provenance verified against the seller's original purchase record.

{['Stitching','Hardware','Stamp','Grain','Weight','Provenance','Receipt'].map(c => ( {c} ))}
setRoute({ name:'seller', id: seller.id })} style={{ cursor:'pointer', padding:'18px', border:'1px solid var(--ap-border)', borderRadius: 4 }}>
{seller.name[0].toLowerCase()}
{seller.name}
{seller.city} · since {seller.since} · {seller.sales.toLocaleString()} sales
{seller.rating}

{seller.blurb}

Ships from
{item.shipFrom}
Arrives in
{item.deliverDays} business days
Returns
14-day window
{/* Related */}
More from {item.brand}

You might also long for

); }; const Sec = ({ n, title, children }) => (
{n} {title}
{children}
); const RelatedRow = ({ item, setRoute }) => { const data = window.AG_DATA; const related = data.items.filter(i => i.brand === item.brand && i.id !== item.id).slice(0, 4); const filler = data.items.filter(i => i.id !== item.id).slice(0, 4); const list = (related.length >= 4 ? related : [...related, ...filler]).slice(0, 4); return (
{list.map(it => (
setRoute({ name:'product', id: it.id })}>
{it.new && New}
{it.brand}
€{it.eur.toLocaleString()}
{it.title}
))}
); }; /* ========================================================================= TREATMENT B — UTILITY (Vestiaire / Grailed energy) Gallery + thumbnails on left, dense info stack with sticky buy panel on right. ========================================================================= */ const TreatmentUtility = ({ item, seller, setRoute, watched, onToggleWatch }) => { const [activeImg, setActiveImg] = useState(0); const [tab, setTab] = useState('details'); return (
{/* Thumbs */}
{[0,1,2,3,4].map(i => (
setActiveImg(i)} style={{ aspectRatio:'1/1', cursor:'pointer', border: activeImg===i ? '1px solid var(--ag-ink)':'1px solid var(--ap-border)', borderRadius: 2 }}>
))}
{/* Main image */}
{item.new && New listing · {item.listedAgo} ago}  Authenticated · 21 Apr
{item.watchers} watching
1 / 5
{/* Tabs */}
{[ { id:'details', l:'Details' }, { id:'cond', l:'Condition' }, { id:'auth', l:'Authentication' }, { id:'ship', l:'Shipping' }, { id:'returns', l:'Returns' }, { id:'seller', l:'Seller' }, ].map(t => ( setTab(t.id)} className="ag-label" style={{ cursor:'pointer', padding:'14px 0', color: tab===t.id ? 'var(--ag-ink)':'var(--ap-fg-muted)', borderBottom: tab===t.id ? '2px solid var(--ag-ink)':'2px solid transparent', marginBottom: -1 }}> {t.l} ))}
{tab === 'details' && (

{item.notes}

{[ ['Brand', item.brand], ['Model', item.title.split('·')[0].trim()], ['Materials', item.materials], ['Color', item.palette.label], ['Year', item.year], ['Condition', item.cond], item.dim && ['Dimensions', `${item.dim.w} × ${item.dim.h} × ${item.dim.d} cm`], item.dim && ['Weight', `${item.dim.wt} kg`], ].filter(Boolean).map(([l, v]) => (
{l} {v}
))}
)} {tab === 'cond' && (
{item.cond} Inspected at Berlin hub · 21 April 2026
{[ { l:'Corners', s:'Pristine, no scuffs' }, { l:'Hardware', s:'Original protective film intact' }, { l:'Interior', s:'Clean, no staining' }, { l:'Stitching', s:'All stitching tight; no breaks' }, { l:'Strap', s:'Even patina, no cracking' }, { l:'Glazing', s:'Original, intact at all seams' }, ].map(p => (
{p.l}
{p.s}
))}
)} {tab === 'auth' && (

This piece passed all seven physical checks at our Berlin authentication hub. Documentation is preserved in your order record and viewable post-purchase.

{['Stitching','Hardware','Stamp','Grain','Weight','Provenance','Receipt'].map((c, i) => (
0{i+1}
{c}
))}
)} {tab === 'ship' && (
Ships from
{item.shipFrom}
Arrives
{item.deliverDays} business days
Customs
Included · DDP
)} {tab === 'returns' && (

14-day window from delivery. Item must arrive at our Berlin hub in unworn condition with all original packaging. Authentication tag must remain attached. Return shipping is on the buyer; full refund issued on inspection.

)} {tab === 'seller' && (
{seller.name[0].toLowerCase()}
{seller.name}
{seller.handle} · {seller.city} · since {seller.since}

{seller.blurb}

)}
{/* STICKY BUY PANEL */}
{/* Related */}
More from {item.brand}

Related pieces

); }; /* ========================================================================= TREATMENT C — CINEMATIC / PROVENANCE Dark hero, route map, auth filmstrip prominent, timeline. ========================================================================= */ const TreatmentCinematic = ({ item, seller, setRoute, watched, onToggleWatch }) => { return (
{/* Hero */}
Verified piece · {item.id.toUpperCase()} · Authenticated 21 Apr 26

{item.title.split('·')[0].trim()}

{item.brand} · {item.year} · {item.cond}
{item.notes}
€{item.eur.toLocaleString()}
DDP · all duties included
{item.acceptOffers && }
 Auth · 21 Apr
{/* Route map narrative */}
01 / The route

{item.city} → Berlin → You.

Picked up from {seller.name} on 18 April, authenticated at our Berlin hub on the 21st, ready to dispatch. Customs and duties are pre-cleared — you sign once, at your door.

{/* Auth filmstrip */}
02 / Authentication

The seven checks.

Inspected · Maya A. · Berlin · 21 Apr 26
{[ { l:'Stitching', det:'Twelve stitches per inch. Tight, even.' }, { l:'Hardware', det:'Palladium plating, original screws.' }, { l:'Stamp', det:'Z stamp · 2022 production year.' }, { l:'Grain', det:'Togo leather, natural pebble.' }, { l:'Weight', det:'1.05 kg ± 0.02. Matches spec.' }, { l:'Provenance',det:'Original boutique receipt logged.' }, { l:'Smell', det:'Leather. No solvents, no smoke.' }, ].map((c, i) => (
0{i+1}
{c.l}
{c.det}
))}
{/* Provenance timeline */}
03 / Provenance

Where it has been.

{[ { d:'2022', l:`Sold new at ${item.brand} Faubourg, Paris.`, det:'Original receipt retained.' }, { d:'2022–25', l:'Worn lightly by single owner.', det:'Stored in dust bag between uses.' }, { d:'Apr 26', l:`Consigned to ${seller.name}, ${seller.city}.`, det:'Verified ownership documents.' }, { d:'21 Apr 26', l:'Authenticated at Berlin hub.', det:'Seven physical checks · all passed.' }, { d:'Today', l:'Awaiting next chapter.', det:'You.' }, ].map((e, i, arr) => (
{e.d}
{e.l}
{e.det}
))}
); }; const Step = ({ n, l, v }) => (
{n}
{l}
{v}
); const CinematicRoute = ({ from }) => (
{[10,18,26].map(y=> )} {[10,20,30,40,50,60,70,80,90].map(x=> )} {/* From → Berlin → You arcs */} {/* Nodes */} {from} BERLIN · HUB YOU
Total distance
9,387 km
Lanes
2
Hands
4
Customs
Done
); window.Product = Product;