PageSourceSearch

https://rouen-bouge.fr/assets/SortiesRouenPage-BaOBMoMk.js

js rouen-bouge.fr collected 2026-10-02 19:53:50 UTC 11,107 bytes, 1 lines download raw bytes

1import{r as g,j as e,L as a}from"./index-DvwP-Zr8.js";import{M as v}from"./MegaMenu-Dt2dK0UC.js";import{F as N}from"./Footer-CijhGe1e.js";import{S as b}from"./SEOHead-Dm4SNY2w.js";import{B as w,I as y}from"./JsonLd-BzY3OV04.js";import{B as o}from"./button-4P_Nsplj.js";import{B as u}from"./badge-BOwisMDw.js";import{u as R,a as C}from"./useEvents-BVL4sO1f.js";import{R as E}from"./rouenNeighborhoods-CFcGVbEW.js";import{E as M}from"./eventThemes-B5AcXb5r.js";import{C as S}from"./calendar-BkghQrFe.js";import{P as z}from"./plus-CiGaDB5p.js";import{A as x}from"./arrow-right-CL6Y1W3k.js";import{M as p}from"./map-pin-CuyHwQBO.js";import{C as L}from"./clock-hYuswEgw.js";import{f}from"./format-DZYYZzof.js";import{i as A,a as k}from"./isTomorrow-k1T53jhN.js";import{f as j}from"./fr-TqZFd7oH.js";import"./useWordPress-DlXx1Nz_.js";import"./useQuery-BWnxGLDx.js";import"./wordpress-Bpx1AK2_.js";import"./useMenuItems-DVvUR5YS.js";import"./useMutation-DCabkvd2.js";import"./useSocialLinks-BjAfTEGS.js";import"./logo-rouen-bouge-B0IHZYcV.js";import"./index-B1P5DQK5.js";import"./index-aHyGAGLx.js";import"./menu-OnOzzZr4.js";import"./external-link-BU7gRpq7.js";import"./instagram-DvFPU6q3.js";import"./youtube-pzu4hhbA.js";import"./input-ZMJDqW4n.js";import"./usePages-D4vUOBma.js";import"./useCookieConsent-DjzCI6Tj.js";import"./isWithinInterval-CuZ4O5rV.js";import"./endOfDay-Dfi5VIs5.js";import"./constructNow-Dc6NDwVU.js";import"./isSameDay-BFwQWowk.js";const _=new Set(["de","du","des","le","la","les","sur","sous","en","lez","aux","au","d","l"]);function q(t){if(!t)return null;const i=t.match(/\b\d{5}\s+([^,;\d]+)/);if(!i)return null;const m=i[1].normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/\bcedex\b.*/g,"").replace(/['’\-_/]+/g," ").replace(/\s+/g," ").trim();return m?m.split(" ").map((l,c)=>c>0&&_.has(l)?l:l.charAt(0).toUpperCase()+l.slice(1)).join(" "):null}const B=t=>({musique:"🎵",concert:"🎸",theatre:"🎭",cinema:"🎬",exposition:"🖼️",art:"🎨",sport:"⚽",festival:"🎪",marche:"🛒",gastronomie:"🍽️",famille:"👨‍👩‍👧‍👦",enfants:"🧒",nature:"🌳",conference:"🎤",atelier:"✂️",danse:"💃",spectacle:"✨"})[t]||"📌",P=[{label:"☀️ Ce soir",to:"/evenements?date=today"},{label:"🎉 Ce week-end",to:"/evenements?date=weekend"},{label:"🆓 Gratuit",to:"/evenements?gratuit=1"},{label:"👨‍👩‍👧‍👦 En famille",to:"/evenements?famille=1"},{label:"🌳 En plein air",to:"/evenements?lieu=outdoor"},{label:"🗺️ Sur la carte",to:"/evenements?vue=carte"}];function O(t){return A(t)?"Aujourd'hui":k(t)?"Demain":f(t,"EEEE d MMMM",{locale:j})}function we(){const{data:t=[],isLoading:i}=R(),{data:m=[]}=C(),l=g.useMemo(()=>{const s=new Map;return t.forEach(r=>{const n=q(r.address);n&&s.set(n,(s.get(n)||0)+1)}),Array.from(s.entries()).sort((r,n)=>n[1]-r[1]).slice(0,16)},[t]),c=g.useMemo(()=>{const s=new Map;return t.forEach(r=>{var h;const n=(h=r.category)==null?void 0:h.slug;n&&s.set(n,(s.get(n)||0)+1)}),s},[t]),d=t.slice(0,6);return e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(b,{title:"Sorties à Rouen : agenda et événements 2026",description:"Que faire à Rouen ? Retrouvez les concerts, expos, spectacles et sorties en famille à Rouen et dans la métropole, classés par quartier et catégorie.",url:"https://rouen-bouge.fr/sorties-rouen",keywords:"sortir à Rouen, sorties Rouen, que faire à Rouen, agenda Rouen, événements métropole Rouen"}),e.jsx(w,{items:[{name:"Accueil",url:"https://rouen-bouge.fr"},{name:"Sorties à Rouen",url:"https://rouen-bouge.fr/sorties-rouen"}]}),d.length>0&&e.jsx(y,{items:d.map((s,r)=>({position:r+1,name:s.title,url:`https://rouen-bouge.fr/evenements/${s.slug}`}))}),e.jsx(v,{}),e.jsxs("main",{children:[e.jsx("section",{className:"bg-gradient-to-b from-primary/10 to-background border-b",children:e.jsxs("div",{className:"container mx-auto px-4 py-12 md:py-16 max-w-4xl text-center",children:[e.jsx(u,{className:"mb-4",children:"Rouen & métropole"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold tracking-tight mb-4",children:"Sortir à Rouen et dans l'agglomération"}),e.jsx("p",{className:"text-lg text-muted-foreground mb-8",children:"Concerts, expositions, festivals, spectacles, marchés, sorties en famille : retrouvez tout ce qui bouge à Rouen, Sotteville, Mont-Saint-Aignan, Le Petit-Quevilly, Bois-Guillaume et dans toute la métropole."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(o,{asChild:!0,size:"lg",children:e.jsxs(a,{to:"/evenements",children:[e.jsx(S,{className:"h-4 w-4 mr-2"}),"Voir l'agenda complet"]})}),e.jsx(o,{asChild:!0,size:"lg",variant:"outline",children:e.jsxs(a,{to:"/evenements/soumettre",children:[e.jsx(z,{className:"h-4 w-4 mr-2"}),"Ajouter mon événement"]})})]})]})}),e.jsxs("section",{className:"container mx-auto px-4 py-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Envie de sortir maintenant ?"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:P.map(s=>e.jsx(o,{asChild:!0,variant:"secondary",className:"rounded-full",children:e.jsx(a,{to:s.to,children:s.label})},s.to))})]}),e.jsxs("section",{className:"container mx-auto px-4 py-10 border-t",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Par envie"}),e.jsx("p",{className:"text-muted-foreground mb-5",children:"Choisissez une catégorie, l'agenda s'ouvre déjà filtré."}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx(o,{asChild:!0,variant:"outline",className:"rounded-full",children:e.jsxs(a,{to:`/evenements?categorie=${s.slug}`,children:[e.jsx("span",{className:"mr-1.5",children:B(s.slug)}),s.name,c.get(s.slug)?e.jsxs("span",{className:"ml-1.5 text-muted-foreground",children:["(",c.get(s.slug),")"]}):null]})},s.id))})]}),e.jsxs("section",{className:"container mx-auto px-4 py-10 border-t",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Nos sélections de sorties"}),e.jsx("p",{className:"text-muted-foreground mb-5",children:"Concerts, expos, théâtre, sorties gratuites ou en famille : accédez directement à ce qui vous intéresse."}),e.jsx("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:M.map(s=>e.jsxs(a,{to:`/agenda/${s.slug}`,className:"flex items-center justify-between border-b py-3 font-semibold hover:text-primary",children:[s.heading,e.jsx(x,{className:"h-4 w-4 shrink-0"})]},s.slug))})]}),e.jsxs("section",{className:"container mx-auto px-4 py-10 border-t",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Par quartier de Rouen"}),e.jsx("p",{className:"text-muted-foreground mb-5",children:"Centre-ville, rive droite ou rive gauche : découvrez les sorties près de chez vous."}),e.jsx("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:E.map(s=>e.jsxs(a,{to:`/sorties-rouen/quartier/${s.slug}`,className:"group flex items-center justify-between border-b py-3 font-semibold hover:text-primary",children:[e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx(p,{className:"h-4 w-4 text-primary"}),s.shortName]}),e.jsx(x,{className:"h-4 w-4 transition-transform group-hover:translate-x-1"})]},s.slug))})]}),e.jsxs("section",{className:"container mx-auto px-4 py-10 border-t",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Dans la métropole"}),e.jsx("p",{className:"text-muted-foreground mb-5",children:"Trouvez les événements dans votre commune."}),l.length===0?e.jsx("p",{className:"text-muted-foreground",children:"Les proch
1aines sorties arrivent bientôt."}):e.jsx("div",{className:"flex flex-wrap gap-2",children:l.map(([s,r])=>e.jsx(o,{asChild:!0,variant:"outline",className:"rounded-full",children:e.jsxs(a,{to:`/evenements?ville=${encodeURIComponent(s)}`,children:[e.jsx(p,{className:"h-3.5 w-3.5 mr-1.5"}),s,e.jsxs("span",{className:"ml-1.5 text-muted-foreground",children:["(",r,")"]})]})},s))})]}),e.jsxs("section",{className:"container mx-auto px-4 py-10 border-t",children:[e.jsxs("div",{className:"flex items-center justify-between mb-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Les prochaines sorties"}),e.jsx(o,{asChild:!0,variant:"ghost",children:e.jsxs(a,{to:"/evenements",children:["Tout l'agenda",e.jsx(x,{className:"h-4 w-4 ml-1.5"})]})})]}),i?e.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-5",children:Array.from({length:6}).map((s,r)=>e.jsx("div",{className:"rounded-2xl bg-muted animate-pulse h-64"},r))}):d.length===0?e.jsx("p",{className:"text-muted-foreground",children:"Aucune sortie programmée pour le moment."}):e.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-5",children:d.map(s=>{const r=new Date(s.event_date);return e.jsxs(a,{to:`/evenements/${s.slug}`,className:"group rounded-2xl overflow-hidden border bg-card hover:shadow-lg transition-shadow",children:[e.jsx("div",{className:"aspect-[4/3] bg-muted overflow-hidden",children:s.image_url?e.jsx("img",{src:s.image_url,alt:s.title,loading:"lazy",className:"w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"}):e.jsx("div",{className:"w-full h-full flex items-center justify-center text-4xl",children:"🎉"})}),e.jsxs("div",{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(u,{variant:"secondary",className:"capitalize",children:O(r)}),s.is_free&&e.jsx(u,{className:"bg-emerald-500 hover:bg-emerald-500",children:"Gratuit"})]}),e.jsx("h3",{className:"font-semibold leading-snug line-clamp-2 mb-2",children:s.title}),e.jsxs("p",{className:"text-sm text-muted-foreground flex items-center gap-1.5",children:[e.jsx(L,{className:"h-3.5 w-3.5"}),f(r,"HH'h'mm",{locale:j})]}),e.jsxs("p",{className:"text-sm text-muted-foreground flex items-center gap-1.5 line-clamp-1",children:[e.jsx(p,{className:"h-3.5 w-3.5"}),s.location_name]})]})]},s.id)})})]}),e.jsx("section",{className:"container mx-auto px-4 py-12 border-t",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-4 text-muted-foreground",children:[e.jsx("h2",{className:"text-2xl font-bold text-foreground",children:"Que faire à Rouen cette semaine ?"}),e.jsx("p",{children:"Rouen et sa métropole ne s'arrêtent jamais : concerts au 106 ou à l'Opéra, expositions dans les musées, brocantes et marchés le week-end, festivals l'été, spectacles et soirées toute l'année. Notre agenda est mis à jour en continu, avec les horaires, les adresses exactes, les prix et un plan pour s'y rendre."}),e.jsx("p",{children:"Vous organisez un événement à Rouen, Sotteville-lès-Rouen, Saint-Étienne-du-Rouvray, Mont-Saint-Aignan ou ailleurs dans l'agglomération ? La publication est gratuite et votre événement est visible par nos milliers de lecteurs chaque semaine."}),e.jsxs("div",{className:"flex flex-wrap gap-3 pt-2",children:[e.jsx(o,{asChild:!0,children:e.jsx(a,{to:"/evenements",children:"Explorer l'agenda"})}),e.jsx(o,{asChild:!0,variant:"outline",children:e.jsx(a,{to:"/evenements/soumettre",children:"Publier gratuitement"})})]})]})})]}),e.jsx(N,{})]})}export{we as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.