1import{j as e,m as p}from"./vendor-motion-i3VZ6rIW.js";import{r,c as A}from"./vendor-react-DPq4nRXU.js";import{z as O,N as K,h as U,O as o,L as W,y as $,B as P,A as I,s as F}from"./index-uu5Ind1I.js";import{V as q,a as G,W as J,I as Y}from"./ImageLightbox-BFWyfUFP.js";import{GoogleReviewsSection as X}from"./GoogleReviewsSection-Uht-Vfr2.js";import{P as Q}from"./play-CqIXT19m.js";import"./vendor-query-2yB9p-Rm.js";import"./vendor-supabase-CXidNrjy.js";import"./chevron-left-CWQNO-nq.js";import"./link-B7hx60JN.js";import"./useSiteSettings-BRIuPpdI.js";const Z={EN:{title:"Vika Krol Reviews",subtitle:"The most rated proposal planner in Paris",ctaHeading:'Ready to Say "Yes" in Paris?',ctaText:"Explore our all-inclusive proposal experiences and find the one that matches your love story.",ctaButton:"Discover Our Experiences",stickyLabel:"⦠The Most Rated Proposal Planner in Paris",stickySubtext:"All-inclusive. Cinematic. Unforgettable.",stickyButton:"Discover our experiences",stickyButtonMobile:"Discover our all-inclusive experiences",emptyMsg:"The reviews page is being built. Come back soon!"},IT:{title:"Recensioni Vika Krol",subtitle:"La wedding planner più apprezzata di Parigi",ctaHeading:'Pronta a dire "Sì" a Parigi?',ctaText:"Esplora le nostre esperienze di proposta all-inclusive e trova quella perfetta per la vostra storia d'amore.",ctaButton:"Scopri le Nostre Esperienze",stickyLabel:"⦠La Wedding Planner Più Apprezzata di Parigi",stickySubtext:"All-inclusive. Cinematografico. Indimenticabile.",stickyButton:"Scopri le esperienze",stickyButtonMobile:"Scopri le nostre esperienze all-inclusive",emptyMsg:"La pagina recensioni è in fase di creazione. Torna presto!"},DE:{title:"Vika Krol Bewertungen",subtitle:"Die bestbewertete Heiratsantrag-Planerin in Paris",ctaHeading:'Bereit, in Paris "Ja" zu sagen?',ctaText:"Entdecken Sie unsere All-inclusive Heiratsantrag-Erlebnisse und finden Sie das perfekte für Ihre Liebesgeschichte.",ctaButton:"Unsere Erlebnisse entdecken",stickyLabel:"⦠Die Bestbewertete Heiratsantrag-Planerin in Paris",stickySubtext:"All-inclusive. Filmreif. Unvergesslich.",stickyButton:"Erlebnisse entdecken",stickyButtonMobile:"Unsere All-inclusive Erlebnisse entdecken",emptyMsg:"Die Bewertungsseite wird gerade erstellt. Kommen Sie bald wieder!"},ES:{title:"Reseñas Vika Krol",subtitle:"La organizadora de propuestas mejor valorada de ParÃs",ctaHeading:'¿Lista para decir "SÃ" en ParÃs?',ctaText:"Explora nuestras experiencias de propuesta todo incluido y encuentra la que mejor se adapte a vuestra historia de amor.",ctaButton:"Descubre Nuestras Experiencias",stickyLabel:"⦠La Organizadora de Propuestas Mejor Valorada de ParÃs",stickySubtext:"Todo incluido. Cinematográfico. Inolvidable.",stickyButton:"Descubre las experiencias",stickyButtonMobile:"Descubre nuestras experiencias todo incluido",emptyMsg:"La página de reseñas está en construcción. ¡Vuelve pronto!"},RU:{title:"ÐÑзÑÐ²Ñ Ð¾ Vika Krol",subtitle:"СамÑй ÑейÑинговÑй оÑганизаÑÐ¾Ñ Ð¿Ñедложений в ÐаÑиже",ctaHeading:"ÐоÑÐ¾Ð²Ñ ÑказаÑÑ Â«Ðа» в ÐаÑиже?",ctaText:"ÐÑкÑойÑе Ð´Ð»Ñ ÑÐµÐ±Ñ Ð½Ð°Ñи ÑкÑклÑзивнÑе пакеÑÑ Ð¿Ñедложений и найдиÑе ÑоÑ, коÑоÑÑй идеалÑно подÑ
Ð¾Ð´Ð¸Ñ Ð´Ð»Ñ Ð²Ð°Ñей иÑÑоÑии лÑбви.",ctaButton:"ÐÑкÑойÑе наÑи пакеÑÑ",stickyLabel:"⦠СамÑй ÑейÑинговÑй оÑганизаÑÐ¾Ñ Ð¿Ñедложений в ÐаÑиже",stickySubtext:"ÐÑÑ Ð²ÐºÐ»ÑÑено. ÐинемаÑогÑаÑиÑно. ÐезабÑваемо.",stickyButton:"ÐÑкÑойÑе наÑи пакеÑÑ",stickyButtonMobile:"ÐÑкÑойÑе наÑи пакеÑÑ",emptyMsg:"СÑÑаниÑа оÑзÑвов ÑоздаÑÑÑÑ. ÐозвÑаÑайÑеÑÑ ÑкоÑо!"}},ee="d01b321d-0b79-42ac-9dc0-7fa6c092a5bc";function pe(){const[c,L]=r.useState([]),[b,S]=r.useState(!0),{data:d}=O(),h=K(),i=Z[h],[E,w]=r.useState(!1),[B,k]=r.useState(0),[u,f]=r.useState(null),[j,N]=r.useState(!0),m=r.useRef(new Map),M=r.useRef(null),_=A(),R=U();r.useEffect(()=>{async function t(){const{data:a}=await F.from("media_items").select("id, url, type, title, thumbnail_url, show_watermark, reviews_order, package_id, package:packages(title, slug, city_id, visible)").eq("show_in_reviews",!0).order("reviews_order",{ascending:!0});if(a){const l=a.filter(s=>{var g,x;return s.package_id?((g=s.package)==null?void 0:g.city_id)===ee&&((x=s.package)==null?void 0:x.visible):!0}).map(s=>{var g,x;return{id:s.id,url:s.url,type:s.type,title:s.title,thumbnail_url:s.thumbnail_url,show_watermark:s.show_watermark,reviews_order:s.reviews_order,package_title:((g=s.package)==null?void 0:g.title)||"Portfolio",package_slug:((x=s.package)==null?void 0:x.slug)||"portfolio"}});L(l)}S(!1)}t()},[]),r.useEffect(()=>{if(!b&&c.length>0){const t=c.find(a=>a.type==="video");if(t){const a=m.current.get(t.id);a&&(a.play().catch(()=>{}),f(t.id))}}},[b,c]);const z=r.useCallback(t=>{var l;const a=m.current.get(t);
1a&&(u===t?(a.pause(),f(null)):(u&&((l=m.current.get(u))==null||l.pause()),a.play().catch(()=>{}),f(t),N(!1),a.muted=!1))},[u]),C=r.useCallback(t=>{t.stopPropagation(),N(a=>{const l=!a;return m.current.forEach(s=>{s.muted=l}),l})},[]),V=t=>{w(!0),k(t)},T=c.map(t=>({id:t.id,url:t.url,type:t.type,title:t.title,show_watermark:t.show_watermark,thumbnail_url:t.thumbnail_url,show_title:!1,order:t.reviews_order,category_id:null,package_id:null,file_size:null})),y="hsl(30, 50%, 58%)",n="https://vika-krol.com",v=n+o("reviews",h),D=[{lang:"en",href:n+o("reviews","EN")},{lang:"it",href:n+o("reviews","IT")},{lang:"de",href:n+o("reviews","DE")},{lang:"es",href:n+o("reviews","ES")},{lang:"ru",href:n+o("reviews","RU")},{lang:"x-default",href:n+o("reviews","EN")}],H=[{"@context":"https://schema.org","@type":"CollectionPage",name:i.title,description:i.subtitle,url:v},{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:n+o("home",h)},{"@type":"ListItem",position:2,name:"Paris Proposal",item:n+o("proposal",h)},{"@type":"ListItem",position:3,name:i.title,item:v}]}];return e.jsxs(W,{children:[e.jsx($,{title:(d==null?void 0:d.seo_reviews_title)||"Paris Proposal Reviews & Real Couples | Vika Krol",description:(d==null?void 0:d.seo_reviews_description)||"Read real reviews and see photos & videos from couples who planned their Paris proposal with Vika Krol. 300+ five-star Google reviews. The most rated proposal planner in Paris.",canonical:v,ogImage:"https://vika-krol.com/images/og-proposal-paris.jpg",jsonLd:H,hreflang:D}),e.jsx("section",{className:"relative py-20 md:py-32 px-4 overflow-hidden bg-gradient-to-b from-black via-[hsl(0,0%,5%)] to-background",children:e.jsxs("div",{className:"container relative z-10 flex flex-col items-center text-center",children:[e.jsx(p.div,{initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{duration:.8,ease:"easeOut"},className:"relative w-48 h-48 md:w-64 md:h-64 rounded-full overflow-hidden mb-10 shadow-[0_0_60px_hsla(28,65%,58%,0.25)]",style:{border:`3px solid ${y}`},children:e.jsx("video",{ref:M,src:"/videos/portfolio-hero.mp4",autoPlay:!0,muted:!0,loop:!0,playsInline:!0,className:"w-full h-full object-cover"})}),e.jsxs(p.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.6,delay:.3},className:"flex items-center gap-4 w-full max-w-4xl justify-center",children:[e.jsx("div",{className:"hidden md:block flex-1 h-px max-w-24",style:{background:`linear-gradient(to right, transparent, ${y})`}}),e.jsx("h1",{className:"font-heading text-3xl md:text-5xl lg:text-6xl italic",style:{background:"linear-gradient(135deg, hsl(25, 50%, 38%), hsl(20, 60%, 45%), hsl(30, 55%, 42%))",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",backgroundClip:"text"},children:i.title}),e.jsx("div",{className:"hidden md:block flex-1 h-px max-w-24",style:{background:`linear-gradient(to left, transparent, ${y})`}})]}),e.jsx(p.p,{initial:{opacity:0}
1,animate:{opacity:1},transition:{delay:.5},className:"mt-5 text-foreground text-sm md:text-base uppercase tracking-widest font-light",children:i.subtitle})]})}),e.jsx("section",{className:"pb-16 md:pb-24 px-4",children:e.jsx("div",{className:"container",children:b?e.jsx("div",{className:"flex items-center justify-center py-32",children:e.jsx("div",{className:"w-8 h-8 border-2 border-primary border-t-transparent rounded-full animate-spin"})}):c.length===0?e.jsx("p",{className:"text-center text-muted-foreground py-20",children:i.emptyMsg}):e.jsx("div",{className:`grid gap-3 md:gap-4 ${R?"grid-cols-2":"grid-cols-3 lg:grid-cols-4"}`,children:c.map((t,a)=>e.jsxs(p.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-40px"},transition:{delay:Math.min(a*.06,.5)},className:`group relative rounded-xl overflow-hidden cursor-pointer bg-card ${t.type==="video"?"aspect-[9/16]":"aspect-[3/4]"}`,onClick:()=>t.type==="video"?z(t.id):V(a),children:[t.type==="video"?e.jsxs(e.Fragment,{children:[e.jsx("video",{ref:l=>{l&&m.current.set(t.id,l)},src:t.url,poster:t.thumbnail_url||void 0,muted:j,loop:!0,playsInline:!0,preload:"metadata",className:"absolute inset-0 w-full h-full object-cover"}),u!==t.id&&e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsx("div",{className:"w-14 h-14 rounded-full bg-primary/80 flex items-center justify-center",children:e.jsx(Q,{className:"w-6 h-6 text-primary-foreground fill-primary-foreground ml-0.5"})})}),u===t.id&&e.jsx("button",{onClick:C,className:"absolute bottom-3 right-3 w-8 h-8 rounded-full bg-background/60 backdrop-blur-sm flex items-center justify-center z-10",children:j?e.jsx(q,{className:"w-4 h-4"}):e.jsx(G,{className:"w-4 h-4"})})]}):e.jsx(e.Fragment,{children:t.show_watermark?e.jsx(J,{src:t.url,alt:t.package_title,className:"absolute inset-0 w-full h-full object-cover transition-transform duration-700 group-hover:scale-105"}):e.jsx("img",{src:t.url,alt:t.package_title,loading:"lazy",className:"absolute inset-0 w-full h-full object-cover transition-transform duration-700 group-hover:scale-105"})}),e.jsx("div",{className:"absolute bottom-0 left-0 right-0 p-3 bg-gradient-to-t from-black/60 to-transparent opacity-0 group-hover:opacity-100 transition-opacity",children:e.jsx("span",{className:"text-white text-xs font-medium tracking-wide uppercase",children:t.package_title})})]},t.id))})})}),e.jsx(X,{citySlug:"paris"}),e.jsx("section",{className:"py-16 md:py-24 px-4 border-t border-border/20",children:e.jsx("div",{className:"container max-w-3xl text-center",children:e.jsxs(p.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},children:[e.jsx("p",{className:"font-heading text-2xl md:text-4xl mb-4",children:i.ctaHeading}),e.jsx("p",{className:"text-muted-foreground mb-8 max-w-xl mx-auto",children:i.ctaText}),e.jsxs(P,{size:"lg",onClick:()=>_("/experiences-paris#all"),className:"gradient-cta text-white px-8 py-6 text-base rounded-full",children:[i.ctaButton,e.jsx(I,{className:"w-4 h-4 ml-2"})]})]})})}),e.jsx(p.div,{initial:{y:100,opacity:0},animate:{y:0,opacity:1},transition:{delay:1,type:"spring",stiffness:200,damping:25},className:"fixed bottom-0 left-0 right-0 z-40 bg-background/95 backdrop-blur-xl border-t border-border/50 safe-area-bottom",children:e.jsxs("div",{className:"container px-3 md:px-4 py-2.5 md:py-3 flex flex-row items-center justify-center gap-3 max-w-xl mx-auto",children:[e.jsxs("div",{className:"min-w-0 text-center sm:text-left flex-1 hidden sm:block",children:[e.jsx("p",{className:"font-heading sm:text-base leading-snug",children:e.jsx("span",{className:"text-gradient",children:i.stickyLabel})}),e.jsx("p",{className:"text-xs text-muted-foreground leading-tight",children:i.stickySubtext})]}),e.jsxs(P,{variant:"cta",size:"sm",className:"shrink-0 text-xs md:text-sm px-3 md:px-4 sm:w-auto",onClick:()=>_("/experiences-paris"),children:[e.jsx("span",{className:"sm:hidden",children:i.stickyButtonMobile}),e.jsx("span",{className:"hidden sm:inline",children:i.stickyButton}),e.jsx(I,{className:"w-4 h-4"})]})]})}),e.jsx("div",{className:"h-28"}),e.jsx(Y,{images:T,isOpen:E,currentIndex:B,onClose:()=>w(!1),onNavigate:k})]})}export{pe 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.