1import{r as l,n as le,j as e,q as R,ai as oe,a7 as S,v as C,aC as L,a1 as E,f as _,am as ce,Z as P}from"./index-DxW1teFX.js";import{u as de}from"./embla-carousel-react.esm-EFq0cTW4.js";import{S as g}from"./skeleton-D6h-Q1-i.js";import{C as ue}from"./chevron-left-aOTJgm9-.js";import{C as me}from"./chevron-right-CrRYQKZJ.js";var z={exports:{}},T={};/** 2 * @license React 3 * use-sync-external-store-shim.production.js 4 * 5 * Copyright (c) Meta Platforms, Inc. and affiliates. 6 * 7 * This source code is licensed under the MIT license found in the 8 * LICENSE file in the root directory of this source tree. 9 */var v=l;function fe(t,n){return t===n&&(t!==0||1/t===1/n)||t!==t&&n!==n}var xe=typeof Object.is=="function"?Object.is:fe,he=v.useState,ge=v.useEffect,pe=v.useLayoutEffect,ve=v.useDebugValue;function we(t,n){var s=n(),i=he({inst:{value:s,getSnapshot:n}}),o=i[0].inst,a=i[1];return pe(function(){o.value=s,o.getSnapshot=n,y(o)&&a({inst:o})},[t,s,n]),ge(function(){return y(o)&&a({inst:o}),t(function(){y(o)&&a({inst:o})})},[t]),ve(s),s}function y(t){var n=t.getSnapshot;t=t.value;try{var s=n();return!xe(t,s)}catch{return!0}}function be(t,n){return n()}var Ne=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?be:we;T.useSyncExternalStore=v.useSyncExternalStore!==void 0?v.useSyncExternalStore:Ne;z.exports=T;var je=z.exports;function ye(){return je.useSyncExternalStore(Se,()=>!0,()=>!1)}function Se(){return()=>{}}var k="Avatar",[Ee,Te]=le(k),[Re,G]=Ee(k),F=l.forwardRef((t,n)=>{const{__scopeAvatar:s,...i}=t,[o,a]=l.useState("idle");return e.jsx(Re,{scope:s,imageLoadingStatus:o,onImageLoadingStatusChange:a,children:e.jsx(R.span,{...i,ref:n})})});F.displayName=k;var $="AvatarImage",B=l.forwardRef((t,n)=>{const{__scopeAvatar:s,src:i,onLoadingStatusChange:o=()=>{},...a}=t,x=G($,s),m=Ce(i,a),u=oe(f=>{o(f),x.onImageLoadingStatusChange(f)});return S(()=>{m!=="idle"&&u(m)},[m,u]),m==="loaded"?e.jsx(R.img,{...a,ref:n,src:i}):null});B.displayName=$;var J="AvatarFallback",K=l.forwardRef((t,n)=>{const{__scopeAvatar:s,delayMs:i,...o}=t,a=G(J,s),[x,m]=l.useState(i===void 0);return l.useEffect(()=>{if(i!==void 0){const u=window.setTimeout(()=>m(!0),i);return()=>window.clearTimeout(u)}},[i]),x&&a.imageLoadingStatus!=="loaded"?e.jsx(R.span,{...o,ref:n}):null});K.displayName=J;function q(t,n){return t?n?(t.src!==n&&(t.src=n),t.complete&&t.naturalWidth>0?"loaded":"loading"):"error":"idle"}function Ce(t,{referrerPolicy:n,crossOrigin:s}){const i=ye(),o=l.useRef(null),a=i?(o.current||(o.current=new window.Image),o.current):null,[x,m]=l.useState(()=>q(a,t));return S(()=>{m(q(a,t))},[a,t]),S(()=>{const u=N=>()=>{m(N)};if(!a)return;const f=u("loaded"),p=u("error");return a.addEventListener("load",f),a.addEventListener("error",p),n&&(a.referrerPolicy=n),typeof s=="string"&&(a.crossOrigin=s),()=>{a.removeEventListener("load",f),a.removeEventListener("error",p)}},[a,s,n]),x}var U=F,W=B,V=K;const D=l.forwardRef(({className:t,...n},s)=>e.jsx(U,{ref:s,className:C("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",t),...n}));D.displayName=U.displayName;const Y=l.forwardRef(({className:t,...n},s)=>e.jsx(W,{ref:s,className:C("aspect-square h-full w-full",t),...n}));Y.displayName=W.displayName;const Z=l.forwardRef(({className:t,...n},s)=>e.jsx(V,{ref:s,className:C("flex h-full w-full items-center justify-center rounded-full bg-muted",t),...n}));Z.displayName=V.displayName;const b={ChIJlRmEaEEs_CERnt4y6kM2H28:"https://www.google.com/maps/search/?api=1&query=HypoNext%20GmbH%20L%C3%BCneburg&query_place_id=ChIJlRmEaEEs_CERnt4y6kM2H28",ChIJzfvbkDqPsUcRq3CeHNMJG7M:"https://www.google.com/maps/search/?api=1&query=HypoNext%20GmbH%20Hamburg&query_place_id=ChIJzfvbkDqPsUcRq3CeHNMJG7M"},H="ChIJlRmEaEEs_CERnt4y6kM2H28",ke=t=>b[t||H]||b[H],Ie=[{name:"Sarah & Thomas M.",initials:"ST",rating:5,quote:"Dank HypoNext konnten wir unser Traumhaus finanzieren. Die Beratung war persönlich, ehrlich und hat uns durch den gesamten Prozess begleitet.",source:"static"},{name:"Markus B.",initials:"MB",rating:5,quote:"Innerhalb von 48 Stunden hatten wir drei Top-Angebote auf dem Tisch. So einfach habe ich mir Baufinanzierung nicht vorgestellt!",source:"static"},{name:"Familie Schneider",initials:"FS",rating:5,quote:"Wir haben über 15.000 ⬠an Zinsen gespart im Vergleich zu unserem Hausbank-Angebot. Absolute Empfehlung für jeden Immobilienkäufer.",source:"static"},{name:"Julia K.",initials:"JK",rating:5,quote:"Kompetent, schnell und transparent â so wünscht man sich eine Finanzierungsberatung. Wir würden jederzeit wieder zu HypoNext gehen.",source:"static"},{name:"Andreas & Petra W.",initials:"AW",rating:5,quote:"Als Erstfinanzierer hatten wir viele Fragen. Das Team hat sich unglaublich viel Zeit genommen und alles verständlich erklärt.",source:"static"},{name:"Dr. Michael R.",initials:"MR",rating:5,quote:"Professionelle Abwicklung und erstklassige Konditionen. HypoNext hat den Unterschied gemacht bei unserer Anschlussfinanzierung.",source:"static"}],M=t=>t.split(" ").filter(n=>n.length>1).map(n=>n[0]).join("").substring(0,2).toUpperCase(),Ae=async()=>{const{data:t,error:n}=await P.functions.invoke("google-reviews");if(n)throw n;return t},Le=async()=>{const{data:t,error:n}=await P.functions.invoke("provenexpert-reviews");if(n)throw n;return t},_e=({review:t,linkHref:n})=>{var m;const[s,i]=l.useState(!1),o=l.useRef(null),[a,x]=l.useState(!1);return l.useEffect(()=>{const u=o.current;if(u){const f=parseFloat(getComputedStyle(u).lineHeight)||20;x(u.scrollHeight>f*8+4)}},[t.quote]),e.jsxs("div",{className:"bg-card rounded-xl p-7 shadow-lg hover:shadow-xl hover:-translate-y-1 transition-all duration-300 h-full flex flex-col group",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("div",{className:"flex gap-1",children:Array.from({length:t.rating}).map((u,f)=>e.jsx(E,{className:"w-5 h-5 fill-amber-400 text-amber-400"},f))}),t.source!=="static"&&e.jsx("span",{className:"text-[10px] font-medium text-muted-foreground bg-muted px-2 py-0.5 rounded-full",children:t.source==="google"?"Google":"Proven Expert"})]}),e.jsxs("div",{className:"flex-1 mb-4 relative overflow-hidden",children:[e.jsx("div",{className:"transition-[max-height] duration-500 ease-in-out overflow-hidden",style:{maxHeight:s?`${((m=o.current)==null?void 0:m.scrollHeight)||500}px`:"12.5em"},children:e.jsxs("p",{ref:o,className:"text-muted-foreground text-sm leading-relaxed",children:["â",t.quote,'"']})}),!s&&a&&e.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-10 bg-gradient-to-t from-card to-transparent pointer-events-none"}),a&&e.jsxs("button",{onClick:u=>{u.preventDefault(),i(!s)},className:"relative z-10 flex items-center gap-1 text-xs font-semibold text-primary mt-3 hover:underline",children:[s?"Weniger":"Mehr lesen",e.jsx(ce,{className:`w-3 h-3 transition-transform duration-300 ${s?"rotate-180":""}`,"aria-hidden":"true"})]})]}),e.jsxs("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 mt-auto",children:[e.jsxs(D,{className:"w-10 h-10",children:[t.photoUri?e.jsx(Y,{src:t.photoUri,alt:t.name}):null,e.jsx(Z,{className:"bg-primary/10 text-primary font-bold text-xs",children:t.initials})]}),e.jsxs("div",{children:[e.jsx("p",{className:"font-heading font-semibold text-card-foreground text-sm",children:t.name}),t.relativeTime&&e.jsx("p",{className:"text-muted-foreground text-xs",children:t.relativeTime})]})]})]})},Ge=()=>{const[t,n]=l.useState(!1),s=l.useRef(null),{data:i,isLoading:o}=L({queryKey:["google-reviews"],queryFn:Ae,staleTime:1e3*60*60,retry:1}),{data:a,isLoading:x}=L({queryKey:["provenexpert-reviews"],queryFn:Le,staleTime:1e3*60*60,retry:1}),m=o||x,u=((i==null?void 0:i.reviews)||[]).filter(r=>r.text&&r.rating>=4).map(r=>({name:r.name,initials:M(r.name),photoUri:r.photoUri,rating:r.rating,quote:r.text,relativeTime:r.relativeTime,source:"google",placeId:r.placeId,city:r.city})),f=((a==null?void 0:a.reviews)||[]).map(r=>({name:r.name,initials:M(r.name),rating:r.rating,quote:r.text,source:"provenexpert"})),p=r=>{const d=[...r];for(let h=d.length-1;h>0;h--){const w=Math.floor(Math.random()*(h+1));[d[h],d[w]]=[d[w],d[h]]}return d},N=u.length>0||f.length>0,O=l.useMemo(()=>p(N?[...u,...f]:Ie),[i,a]);i!=null&&i.averageRating;const I=(i==null?void 0:i.totalRatings)||0,A=(a==null?void 0:a.averageRating)||0;a!=null&&a.totalRatings;const[Q,c]=de({align:"start",loop:!0,slidesToScroll:1}),[X,ee]=l.useState(!1),[te,ne]=l.useState(!0),[ae,se]=l.useState(0),[re,ie]=l.useState([]),j=l.useCallback(()=>{c&&(ee(c.canScrollPrev()),ne(c.canScrollNext()),se(c.selectedScrollSnap()))},[c]);return l.useEffect(()=>{if(!c)return;const r=setInterval(()=>{c.scrollNext()},5e3);return()=>clearInterval(r)},[c]),l.useEffect(()=>{c&&(c.on("select",j),ie(c.scrollSnapList()),j())},[c,j]),l.useEffect(()=>{if(!s.current)return;
9const r=new IntersectionObserver(([d])=>{d.isIntersecting&&n(!0)},{threshold:.15});return r.observe(s.current),()=>r.disconnect()},[]),e.jsx("section",{id:"testimonials",className:"py-20 md:py-28 px-6 bg-card",ref:s,children:e.jsxs("div",{className:"container max-w-7xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-16 transition-all duration-500",style:{opacity:t?1:0,transform:t?"translateY(0)":"translateY(24px)"},children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-3 mb-5",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 bg-card border border-border rounded-full px-4 py-2 shadow-sm",children:[e.jsx("div",{className:"flex gap-0.5",children:Array.from({length:5}).map((r,d)=>e.jsx(E,{className:"w-4 h-4 fill-amber-400 text-amber-400"},d))}),e.jsxs("span",{className:"font-heading font-bold text-foreground text-sm",children:[(i==null?void 0:i.averageRating)||4.9,"/5"]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:I>0?`${I} Google`:"Google"})]}),e.jsxs("div",{className:"inline-flex items-center gap-2 bg-card border border-border rounded-full px-4 py-2 shadow-sm",children:[e.jsx("div",{className:"flex gap-0.5",children:Array.from({length:5}).map((r,d)=>e.jsx(E,{className:"w-4 h-4 fill-amber-400 text-amber-400"},d))}),e.jsx("span",{className:"font-heading font-bold text-foreground text-sm",children:A>0?`${A}/5`:"5/5"}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Proven Expert"})]})]}),e.jsx("p",{className:"text-sm font-semibold text-primary mb-3 tracking-wide uppercase",children:"Kundenstimmen"}),e.jsxs("h2",{className:"text-3xl md:text-5xl font-heading font-extrabold mb-4",children:["Was unsere ",e.jsx("span",{className:"font-serif font-semibold italic text-gradient-slogan",children:"Kunden sagen"})]}),e.jsx("p",{className:"text-muted-foreground text-base md:text-lg max-w-2xl mx-auto italic mb-2",children:'âWenn es um eine Immobilienfinanzierung geht, zählen nicht nur Konditionen. Es zählt auch das Gefühl, gut begleitet zu sein."'})]}),e.jsx("div",{className:"relative transition-all duration-700",style:{opacity:t?1:0,transform:t?"translateY(0)":"translateY(24px)",transitionDelay:"0.2s"},children:m?e.jsx("div",{className:"flex gap-6",children:Array.from({length:3}).map((r,d)=>e.jsx("div",{className:"flex-1 min-w-0",children:e.jsxs("div",{className:"bg-card rounded-xl p-7 shadow-lg h-full flex flex-col gap-4",children:[e.jsx("div",{className:"flex gap-1",children:Array.from({length:5}).map((h,w)=>e.jsx(g,{className:"w-5 h-5 rounded"},w))}),e.jsx(g,{className:"h-4 w-full"}),e.jsx(g,{className:"h-4 w-3/4"}),e.jsx(g,{className:"h-4 w-1/2"}),e.jsxs("div",{className:"flex items-center gap-3 mt-auto",children:[e.jsx(g,{className:"w-10 h-10 rounded-full"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(g,{className:"h-3 w-24"}),e.jsx(g,{className:"h-3 w-16"})]})]})]})},d))}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"overflow-hidden px-4 -mx-4 pb-8",ref:Q,children:e.jsx("div",{className:"flex -ml-6",children:O.map((r,d)=>{const h=r.source==="provenexpert"?"https://www.provenexpert.com/hyponext-gmbh/":ke(r.placeId);return e.jsx("div",{className:"flex-[0_0_100%] min-w-0 pl-6 pb-4 sm:flex-[0_0_50%] lg:flex-[0_0_33.333%]",children:e.jsx(_e,{review:r,linkHref:h})},`${r.name}-${d}`)})})}),e.jsxs("div",{className:"flex items-center justify-center gap-4 mt-8",children:[e.jsx(_,{variant:"outline",size:"icon",className:"rounded-full",onClick:()=>c==null?void 0:c.scrollPrev(),disabled:!X,children:e.jsx(ue,{className:"h-5 w-5"})}),e.jsx("div",{className:"flex gap-2",children:re.map((r,d)=>e.jsx("button",{className:`w-2 h-2 rounded-full transition-all duration-300 ${d===ae?"bg-primary w-6":"bg-muted-foreground/30 hover:bg-muted-foreground/50"}`,onClick:()=>c==null?void 0:c.scrollTo(d)},d))}),e.jsx(_,{variant:"outline",size:"icon",className:"rounded-full",onClick:()=>c==null?void 0:c.scrollNext(),disabled:!te,children:e.jsx(me,{className:"h-5 w-5"})})]})]})}),e.jsxs("div",{className:"mt-10 text-center space-y-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsx("a",{href:b.Ch
9IJlRmEaEEs_CERnt4y6kM2H28,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-sm font-semibold text-primary hover:underline",children:"Google-Bewertungen Lüneburg â"}),e.jsx("a",{href:b.ChIJzfvbkDqPsUcRq3CeHNMJG7M,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-sm font-semibold text-primary hover:underline",children:"Google-Bewertungen Hamburg â"}),e.jsx("a",{href:"https://www.provenexpert.com/hyponext-gmbh/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-sm font-semibold text-primary hover:underline",children:"Alle Proven Expert-Bewertungen ansehen â"})]}),e.jsx("p",{className:"text-xs text-muted-foreground max-w-2xl mx-auto leading-relaxed",children:"Hinweis zur Echtheit von Bewertungen: Die hier veröffentlichten Bewertungen stammen von Personen, die unsere Dienstleistungen auf Portalen von Dritten bewertet haben. Eine Prüfung der Echtheit kann derzeit nicht sichergestellt werden, da die bewertenden Personen teilweise unter Synonymen diese auf den Seiten von Dritten hinterlassen."})]})]})})};export{Ge 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.