// SHOT — Main app screens (Map, Feed, Bar, Events, Profile) (function(){ const { useState, useEffect } = React; const { StatusBar, TopNav, BottomNav, Icon, AmbianceDot, vibeLabel } = window.SHOT_SCREENS_1; const { BARS: B, STORIES: S, FRIENDS: F, SUGGESTED: SU, EVENTS: E, REVIEWS: R, INTERESTS: II, avatarColor: avC } = window.SHOT_DATA; /* ════════════════════════════════════════════════════ MAP SCREEN ════════════════════════════════════════════════════ */ const MapStreets = () => ( <>
); const MapScreen = ({ goBar, goSearch, goFilter, filter = 'all' }) => { const filtered = filter === 'all' ? B : B.filter(b => b.vibe === filter || (filter==='events' && false)); return (
{/* Pins */} {B.map(b => (
goBar(b.id)}>🍺
))}
goBar('b3')}>🎉
Rechercher un bar, une vibe…
Tout · 6
Blindé
Chaud
Animé
🎉 BDE
📍 Ouvert
{/* Bottom sheet */}
12 bars autour de toi
5e arrondissement · Live à 21h47
{B.slice(0,4).map(b => (
goBar(b.id)}>
{b.live} live
{b.name}
{b.dist}{vibeLabel(b.vibe)}
))}
); }; /* ════════════════════════════════════════════════════ FEED SCREEN ════════════════════════════════════════════════════ */ const FeedScreen = ({ goBar, goStory, goNotif }) => ( <>
SHOT.
{/* Stories strip */}
{S.map(s => (
!s.isAdd && goStory(s.id)}>
{s.isAdd ? '+' : s.initials}
{s.name}
))}
🔥 Ça bouge ce soir
Voir tout
{B.slice(0,2).map(b => (
goBar(b.id)}>
{b.live} en live
{b.name}
{b.addr}{b.dist} {vibeLabel(b.vibe)}
★ {b.rating} · {b.reviews} avis
{b.tags.slice(0,2).map(t => {t})}
{b.id === 'b1' && (
LM
TD
+1
Léa, Théo et 1 autre y sont
)}
))}
🎉 Soirées à venir
Tout voir
{E.slice(0,2).map(e => (
{e.day}
{e.month}
{e.title}
{e.bar}{e.time}
{e.attendees.slice(0,3).map((a,i) => (
))}
{e.rsvp} · {e.capacity}
{e.tag==='bde'?'BDE':'Promo'}
))}
⭐ Pour toi
Voir tout
{B.slice(3,5).map(b => (
goBar(b.id)}>
{b.name}
{vibeLabel(b.vibe)}{b.live} live
))}
); /* ════════════════════════════════════════════════════ BAR DETAIL SCREEN ════════════════════════════════════════════════════ */ const BarDetailScreen = ({ barId, onBack, goCheckin, goStory }) => { const b = B.find(x => x.id === barId) || B[0]; return ( <>
{b.live} en live
{b.tags.map(t => {t})}
{b.name}
{b.addr}{b.dist} {vibeLabel(b.vibe)}
{/* Quick CTAs */}
{/* Friends here */}
LM
TD
+1
Léa M., Théo D. et 1 autre sont actuellement au bar
{/* Stories */}
Stories du bar
{[1,2,3,4].map((_,i) => (
goStory('s3')}>
il y a {2+i*3} h
))}
{/* Vibe meter */}
Ambiance live · mise à jour il y a 4 min
Ambiance
{b.scores.ambiance}
Affluence
{b.scores.foule}
Musique
{b.scores.musique}
Rapport prix
{b.scores.prix}
{/* Infos */}
Infos

{b.desc}

Ouvert · {b.hours}
{b.addr}
{/* Reviews */}
Avis · {b.reviews} Tout voir
{R.slice(0,2).map(rev => (
{rev.initials}
{rev.name}
{rev.date}
{[1,2,3,4,5].map(i => rev.stars?' off':'')}>)}
{rev.text}
{rev.reply && (
Réponse du bar
{rev.reply}
)}
))}
); }; window.SHOT_SCREENS_2 = { MapScreen, FeedScreen, BarDetailScreen }; })();