1import{r as l,j as e,u as S}from"./index-If4P5t44.js";import{N as T}from"./Navigation-DrdeEEuz.js";import{F as L}from"./Footer-rHfgxM9R.js";import{u as $,a as E,b as I,c as z}from"./animations-BfGy3KJb.js";import{B as x}from"./button-CO1UM39t.js";import{c as R,a as m}from"./utils-ClF6eiV5.js";import{S as B}from"./sparkles-Dd_pvkwh.js";import{A}from"./arrow-right-D_OPpRhi.js";import{U as H}from"./users-DUwn8v65.js";import{A as Y}from"./award-DqDgV9Jm.js";import{T as U}from"./trending-up-hNXAzlv6.js";import{C as X}from"./clock-D5Y8udAB.js";import{C as K}from"./card-BXtirX8f.js";import{B as g}from"./badge-C9MbUtMJ.js";import{E as F}from"./eye-BTPXd-EH.js";import{H as O}from"./heart-DCbC9S7E.js";import{S as q}from"./shopping-cart-B4OpVGoM.js";import{c as N}from"./campaignProducts-DaYF1mh1.js";import"./index-BHk7Wn1T.js";import"./index-IwD7A4tH.js";import"./index-BpFHpKBX.js";import"./index-CkcNIVng.js";import"./index-CIYSN-nV.js";import"./index-CpNrbBok.js";import"./Combination-DxhRFPMF.js";import"./tslib.es6-Ds0fHAFP.js";import"./layers-BEKutUkP.js";import"./wrench-D-C_bRoU.js";import"./shield-CuJiiC8S.js";import"./zap-CWk6dntQ.js";import"./circle-check-big-DuQQ51dT.js";import"./moon-mHDNWg3G.js";import"./sun-FUqrLHpd.js";import"./x-NPwXuPdH.js";/** 2 * @license lucide-react v0.462.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const G=R("Share2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),V=()=>{const[t,r]=l.useState(0);return l.useEffect(()=>{const s=()=>{const i=window.innerHeight,n=document.documentElement.scrollHeight-i,o=window.scrollY/n*100;r(o)};return window.addEventListener("scroll",s,{passive:!0}),s(),()=>window.removeEventListener("scroll",s)},[]),e.jsx("div",{className:"fixed top-0 left-0 right-0 z-50 h-1 bg-muted/20",children:e.jsx("div",{className:"h-full bg-gradient-to-r from-primary via-wood-amber to-wood-copper transition-all duration-150",style:{width:`${t}%`}})})},w=({children:t,className:r,onClick:s,variant:i="default",size:n="lg"})=>{const a=l.useRef(null),[o,d]=l.useState({x:0,y:0}),j=h=>{if(!a.current)return;const c=a.current.getBoundingClientRect(),p=c.left+c.width/2,y=c.top+c.height/2,u=(h.clientX-p)*.3,v=(h.clientY-y)*.3;d({x:u,y:v})},f=()=>{d({x:0,y:0})};return e.jsxs(x,{ref:a,variant:i,size:n,onClick:s,onMouseMove:j,onMouseLeave:f,className:m("transition-all duration-300 ease-out shadow-lg hover:shadow-2xl","relative overflow-hidden group",r),style:{transform:`translate(${o.x}px, ${o.y}px)`},children:[e.jsx("span",{className:"relative z-10",children:t}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-primary/0 via-primary/20 to-primary/0 translate-x-[-100%] group-hover:translate-x-[100%] transition-transform duration-700"})]})},k=t=>{const r=t.getTime()-new Date().getTime();if(r<=0)return{days:0,hours:0,minutes:0,seconds:0,total:0};const s=Math.floor(r/1e3%60),i=Math.floor(r/1e3/60%60),n=Math.floor(r/(1e3*60*60)%24);return{days:Math.floor(r/(1e3*60*60*24)),hours:n,minutes:i,seconds:s,total:r}},W=t=>t.toString().padStart(2,"0"),J=({endDate:t,className:r=""})=>{const[s,i]=l.useState(k(t));l.useEffect(()=>{const a=setInterval(()=>{i(k(t))},1e3);return()=>clearInterval(a)},[t]);const n=({value:a,label:o})=>e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"bg-background border border-primary/20 rounded-lg p-2 md:p-3 shadow-md backdrop-blur-sm min-w-[50px] md:min-w-[60px]",children:e.jsx("div",{className:"text-xl md:text-3xl font-bold text-primary tabular-nums",children:W(a)})}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-primary/10 to-transparent rounded-lg pointer-events-none"})]}),e.jsx("div",{className:"text-[10px] md:text-xs text-muted-foreground mt-1 font-medium uppercase tracking-wide",children:o})]});return s.total<=0?e.jsx("div",{className:`text-center ${r}`,children:e.jsx("div",{className:"text-2xl font-bold text-destructive animate-pulse",children:"Campaign Ended"})}):e.jsxs("div",{className:`flex flex-col items-start gap-2 ${r}`,children:[e.jsx("div",{className:"text-sm md:text-base font-semibold text-foreground animate-fade-in",children:"Tilbuddet udløber om:"}),e.jsxs("div",{className:"flex gap-2 md:gap-3",children:[e.jsx(n,{value:s.days,label:"Dage"}),e.jsx("div",{className:"text-xl md:text-3xl font-bold text-primary self-center animate-pulse",children:":"}),e.jsx(n,{value:s.hours,label:"Timer"}),e.jsx("div",{className:"text-xl md:text-3xl font-bold text-primary self-center animate-pulse",children:":"}),e.jsx(n,{value:s.minutes,label:"Min"}),e.jsx("div",{className:"text-xl md:text-3xl font-bold text-primary self-center animate-pulse",children:":"}),e.jsx(n,{value:s.seconds,label:"Sek"})]})]})},Q=()=>{const t=$(.3),r=S(),s=new Date;return s.setDate(s.getDate()+7),e.jsxs("section",{className:"relative min-h-screen flex items-center overflow-hidden bg-gradient-to-br from-background via-muted/30 to-background",children:[e.jsxs("div",{className:"absolute inset-0 z-0",style:{transform:`translateY(${t}px)`},children:[e.jsx("img",{src:"/images/hero-flooring-new.webp",alt:"Premium flooring",className:"w-full h-full object-cover"}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-background to-transparent"})]}),e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute top-1/4 left-1/4 w-64 h-64 bg-primary/5 rounded-full blur-3xl animate-float"}),e.jsx("div",{className:"absolute bottom-1/4 right-1/4 w-96 h-96 bg-wood-amber/5 rounded-full blur-3xl animate-float",style:{animationDelay:"1s"}})]}),e.jsx("div",{className:"container mx-auto px-4 md:px-8 lg:px-16 relative z-10",children:e.jsxs("div",{className:"max-w-4xl text-left space-y-4 animate-fade-in",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-primary/10 border border-primary/20 rounded-full text-xs font-medium text-primary animate-scale-in backdrop-blur-sm",children:[e.jsx(B,{className:"w-3 h-3 animate-pulse"}),"Black Friday Kampagne"]}),e.jsxs("h1",{className:"text-3xl md:text-5xl lg:text-6xl font-bold leading-tight",children:[e.jsx("span",{className:"block animate-fade-in bg-gradient-to-r from-primary via-wood-amber to-wood-copper bg-clip-text text-transparent animate-gradient-shift",children:"Premium Gulve"}),e.jsx("span",{className:"block mt-1 text-foreground animate-fade-in",style:{animationDelay:"0.2s"},children:"Til Ekstraordinære Priser"})]}),e.jsx("p",{className:"text-base md:text-lg text-muted-foreground max-w-2xl animate-fade-in",style:{animationDelay:"0.4s"},children:"Oplev skandinavisk design og håndværk med op til 40% rabat på udvalgte produkter"}),e.jsx("div",{className:"animate-fade-in",style:{animationDelay:"0.6s"},children:e.jsx(J,{endDate:s})}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 items-start animate-fade-in",style:{animationDelay:"0.8s"},children:[e.jsxs(w,{onClick:()=>{const i=document.getElementById("products");i==null||i.scrollIntoView({behavior:"smooth"})},size:"lg",className:"text-lg px-8 py-6 group inline-flex items-center",children:[e.jsx("span",{children:"Se Tilbud"}),e.jsx(A,{className:"ml-2 w-5 h-5 group-hover:translate-x-1 transition-transform inline-block"})]}),e.jsx(w,{variant:"outline",onClick:()=>r("/showroom"),size:"lg",className:"text-lg px-8 py-6",children:"Virtuelt Showroom"})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-8 max-w-2xl pt-12 animate-fade-in",style:{animationDelay:"1s"},children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-3xl font-bold text-primary",children:"15,000+"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Tilfredse kunder"})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-3xl font-bold text-primary",children:"20+"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"à rs erfaring"})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-3xl font-bold text-primary",children:"2-5"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Dages levering"})]})]})]})}),e.jsx("div",{className:"absolute bottom-8 left-1/2 -translate-x-1/2 animate-bounce",children:e.jsx("div",{className:"w-6 h-10 border-2 border-primary/30 rounded-full flex items-start justify-center p-2",children:e.jsx("div",{className:"w-1 h-3 bg-primary rounded-full animate-pulse"})})})]})},Z=[{id:1,end:15e3,suffix:"+",label:"Tilfredse kunder",icon:H,color:"text-blue-500"},{id:2,end:20,suffix:"+",label:"à rs erfaring",icon:Y,color:"text-amber-500"},{id:3,end:98,suffix:"%",label:"Tilfredshedsrate",icon:U,color:"text-green-500"},{id:4,end:5,suffix:" dage",label:"Leveringstid",icon:X,color:"text-purple-500"}],_=()=>{const[t,r]=E({threshold:.3});return e.jsxs("section",{ref:t,className:"py-24 bg-gradient-to-br from-muted/30 via-background to-muted/20 relative overflow-hidden",children:[e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute top-0 left-1/4 w-96 h-96 bg-primary/5 rounded-full blur-3xl animate-float"}),e.jsx("div",{className:"absolute bottom-0 right-1/4 w-96 h-96 bg-wood-amber/5 rounded-full blur-3xl animate-float",style:{animationDelay:"2s"}})]}),e.jsxs("div",{className:"container mx-auto px-4 relative z-10",children:[e.jsxs("div",{className:"text-center mb-16 space-y-4",children:[e.jsx("h2",{className:"text-4xl md:text-5xl font-bold text-foreground animate-fade-in",children:"Tal Der Taler For Sig Selv"}),e.jsx("p",{className:"text-xl text-muted-foreground max-w-2xl mx-auto",children:"Mere end to årtiers erfaring i at levere kvalitetsgulve til danske hjem"})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8",children:Z.map((s,i)=>e.jsx(ee,{stat:s,isVisible:r,delay:i*100},s.id))})]})]})},ee=({stat:t,isVisible:r,delay:s})=>{const i=I(t.end,2e3,r),n=t.icon;return e.jsx("div",{className:"relative group",style:{animation:r?`fade-in 0.6s ease-out ${s}ms both`:"none"},children:e.jsxs("div",{className:"bg-card border-2 border-border hover:border-primary/50 rounded-2xl p-8 text-center transition-all duration-300 hover:shadow-2xl hover:-translate-y-2",children:[e.jsx("div",{className:"mb-6 inline-flex items-center justify-center",children:e.jsx("div",{className:`p-4 rounded-2xl bg-gradient-to-br from-primary/10 to-primary/5 ${t.color} animate-float`,children:e.jsx(n,{className:"w-8 h-8"})})}),e.jsxs("div",{className:"text-5xl font-bold text-primary mb-2",children:[r?i.toLocaleStr
6ing("da-DK"):0,t.suffix]}),e.jsx("div",{className:"text-sm text-muted-foreground font-medium uppercase tracking-wider",children:t.label}),e.jsx("svg",{className:"absolute inset-0 w-full h-full -z-10 opacity-10",viewBox:"0 0 200 200",children:e.jsx("circle",{cx:"100",cy:"100",r:"90",fill:"none",stroke:"currentColor",strokeWidth:"2",className:t.color,strokeDasharray:`${r?i/t.end*565:0} 565`,strokeDashoffset:"0",style:{transition:"stroke-dasharray 2s ease-out",transform:"rotate(-90deg)",transformOrigin:"center"}})})]})})},te=({product:t,className:r})=>{const s=l.useRef(null),[i,n]=l.useState({x:0,y:0}),[a,o]=l.useState(!1),[d,j]=l.useState(!1),f=S(),h=v=>{if(!s.current)return;const b=s.current.getBoundingClientRect(),C=b.left+b.width/2,D=b.top+b.height/2,M=(v.clientY-D)/20,P=(C-v.clientX)/20;n({x:M,y:P})},c=()=>{n({x:0,y:0}),o(!1)},p=t.originalPrice-t.campaignPrice,y=Math.round(p/t.originalPrice*100),u=t.inStock??!0;return e.jsx("div",{ref:s,onMouseMove:h,onMouseEnter:()=>o(!0),onMouseLeave:c,className:m("perspective-1000",r),style:{transform:`rotateX(${i.x}deg) rotateY(${i.y}deg) ${a?"scale(1.05)":"scale(1)"}`,transition:"transform 0.3s ease-out"},children:e.jsxs(K,{className:"overflow-hidden bg-card border-2 hover:border-primary/50 transition-all duration-300 shadow-lg hover:shadow-2xl",children:[e.jsxs("div",{className:"relative aspect-square overflow-hidden bg-muted/20",children:[e.jsx("img",{src:t.image,alt:t.name,className:m("w-full h-full object-cover transition-transform duration-700",a&&"scale-110")}),e.jsxs("div",{className:m("absolute inset-0 bg-gradient-to-t from-background/90 via-background/50 to-transparent","flex items-end justify-center p-4 gap-2","transition-all duration-300",a?"opacity-100 translate-y-0":"opacity-0 translate-y-4"),children:[e.jsx(x,{size:"icon",variant:"secondary",onClick:()=>f(`/showroom/${t.id}`),className:"hover:scale-110 transition-transform",children:e.jsx(F,{className:"w-4 h-4"})}),e.jsx(x,{size:"icon",variant:"secondary",onClick:()=>j(!d),className:m("hover:scale-110 transition-all",d&&"text-red-500"),children:e.jsx(O,{className:m("w-4 h-4",d&&"fill-current")})}),e.jsx(x,{size:"icon",variant:"secondary",className:"hover:scale-110 transition-transform",children:e.jsx(G,{className:"w-4 h-4"})})]}),t.discount>0&&e.jsxs(g,{className:"absolute top-3 right-3 bg-destructive text-destructive-foreground text-lg font-bold px-3 py-1 animate-glow-pulse",children:["-",y,"%"]}),!u&&e.jsx(g,{className:"absolute top-3 left-3 bg-muted text-muted-foreground",children:"Udsolgt"})]}),e.jsxs("div",{className:"p-6 space-y-4",children:[e.jsxs("div",{children:[e.jsx(g,{variant:"secondary",className:"mb-2",children:t.category}),e.jsx("h3",{className:"font-semibold text-lg line-clamp-2 text-foreground mb-2",children:t.name}),t.specs&&e.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[t.specs.length&&t.specs.width&&e.jsxs(g,{variant:"outline",className:"text-xs",children:[t.specs.length," à ",t.specs.width]}),t.specs.thickness&&e.jsxs(g,{variant:"outline",className:"text-xs",children:[t.specs.thickness," tyk"]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsxs("span",{className:"text-2xl font-bold text-primary",children:[t.campaignPrice.toLocaleString("da-DK")," kr"]}),t.discount>0&&e.jsxs("span",{className:"text-sm text-muted-foreground line-through",children:[t.originalPrice.toLocaleString("da-DK")," kr"]})]}),t.discount>0&&e.jsxs("p",{className:"text-sm font-medium text-green-600",children:["Spar ",p.toLocaleString("da-DK")," kr"]})]}),e.jsxs(x,{className:"w-full group",disabled:!u,onClick:()=>f(`/product/${t.id}`),children:[e.jsx(q,{className:"w-4 h-4 mr-2 group-hover:scale-110 transition-transform"}),u?"Se Produkt":"Udsolgt"]})]})]})})},se=["Alle","vinyl","laminat","linoleum","akustikpanel"],ae=()=>{const[t,r]=l.useState("Alle"),s=(t==="Alle"?N:N.filter(a=>a.category===t)).map(a=>({...a,image:/^https?:\/\//.test(a.image)?a.image:`/images/products/${a.image}`})),{ref:i,visibleItems:n}=z(s.length,50);return e.jsx("section",{id:"products",ref:i,className:"py-24 bg-gradient-to-br from-muted/10 via-background to-muted/20",children:e.jsxs("div",{className:"container mx-auto px-4",children:[e.jsxs("div",{className:"text-center mb-12 space-y-4",children:[e.jsx("h2",{className:"text-4xl md:text-5xl font-bold text-foreground",children:"Premium Gulvløsninger"}),e.jsx("p",{className:"text-xl text-muted-foreground max-w-2xl mx-auto",children:"Udforsk vores udvalg af høj kvalitets gulve til særpriser"})]}),e.jsx("div",{className:"flex flex-wrap justify-center gap-3 mb-12",children:se.map(a=>e.jsx(x,{variant:t===a?"default":"outline",onClick:()=>r(a),className:"capitalize transition-all hover:scale-105",children:a},a))}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-8",children:s.map((a,o)=>e.jsx("div",{children:e.jsx(te,{product:a})},a.id))}),s.length===0&&e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"Ingen produkter fundet i denne kategori"})]})})},Ae=()=>e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(V,{}),e.jsx(T,{}),e.jsxs("main",{children:[e.jsx(Q,{}),e.jsx(_,{}),e.jsx(ae,{})]}),e.jsx(L,{})]});
6export{Ae 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.