@vasf/ragnar-web 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/animated-counter.d.ts +98 -0
- package/dist/components/announcement-bar.d.ts +66 -0
- package/dist/components/app-download.d.ts +41 -0
- package/dist/components/bento-grid.d.ts +32 -0
- package/dist/components/blog-card.d.ts +38 -0
- package/dist/components/comparison-table.d.ts +37 -0
- package/dist/components/contact-form.d.ts +43 -0
- package/dist/components/content-spot.d.ts +17 -0
- package/dist/components/cookie-banner.d.ts +58 -0
- package/dist/components/cta-section.d.ts +21 -0
- package/dist/components/email-form.d.ts +18 -0
- package/dist/components/faq-accordion.d.ts +36 -0
- package/dist/components/feature-spot.d.ts +31 -0
- package/dist/components/footer.d.ts +23 -0
- package/dist/components/gradient-text.d.ts +45 -0
- package/dist/components/header-navigation.d.ts +18 -0
- package/dist/components/hero.d.ts +18 -0
- package/dist/components/logo-cloud.d.ts +19 -0
- package/dist/components/map-embed.d.ts +109 -0
- package/dist/components/marquee.d.ts +51 -0
- package/dist/components/newsletter.d.ts +21 -0
- package/dist/components/pricing-options.d.ts +29 -0
- package/dist/components/pricing-table.d.ts +23 -0
- package/dist/components/quote.d.ts +22 -0
- package/dist/components/shaders/index.d.ts +8 -0
- package/dist/components/shaders/shader-canvas-ogl.d.ts +18 -0
- package/dist/components/shaders/shader-canvas-r3f.d.ts +23 -0
- package/dist/components/shaders/shader-presets.d.ts +79 -0
- package/dist/components/shaders/types.d.ts +46 -0
- package/dist/components/social-proof.d.ts +64 -0
- package/dist/components/stats-section.d.ts +30 -0
- package/dist/components/team-section.d.ts +36 -0
- package/dist/components/testimonial.d.ts +31 -0
- package/dist/components/video-player.d.ts +83 -0
- package/dist/index.cjs +321 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +5659 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/styles.css +76 -0
- package/dist/test/setup.d.ts +1 -0
- package/package.json +80 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),es=require("react"),v=require("class-variance-authority"),ts=require("clsx"),as=require("tailwind-merge"),J=require("lucide-react"),y=require("@vasf/ragnar-core");function rs(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const s=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(e,a,s.get?s:{enumerable:!0,get:()=>t[a]})}}return e.default=t,Object.freeze(e)}const o=rs(es);function n(...t){return as.twMerge(ts.clsx(t))}const os=v.cva("relative flex flex-col items-center justify-center overflow-hidden",{variants:{size:{sm:"min-h-[40vh] py-16",default:"min-h-[60vh] py-20",lg:"min-h-[80vh] py-24",full:"min-h-screen py-24"},align:{left:"items-start text-left",center:"items-center text-center",right:"items-end text-right"}},defaultVariants:{size:"default",align:"center"}}),Ae=o.forwardRef(({className:t,size:e,align:a,backgroundImage:s,backgroundOverlay:l=!0,overlayOpacity:i=.5,children:c,style:d,...m},u)=>r.jsxs("section",{ref:u,className:n(os({size:e,align:a}),t),style:{...d,backgroundImage:s?`url(${s})`:void 0,backgroundSize:"cover",backgroundPosition:"center"},...m,children:[s&&l&&r.jsx("div",{className:"absolute inset-0 bg-background",style:{opacity:i}}),r.jsx("div",{className:n("container relative z-10 mx-auto px-4",a==="center"&&"flex flex-col items-center"),children:c})]}));Ae.displayName="Hero";const Be=o.forwardRef(({className:t,...e},a)=>r.jsx("span",{ref:a,className:n("mb-4 inline-flex items-center rounded-full border bg-muted px-4 py-1.5 text-sm font-medium text-muted-foreground",t),...e}));Be.displayName="HeroBadge";const Fe=o.forwardRef(({className:t,...e},a)=>r.jsx("h1",{ref:a,className:n("max-w-4xl font-heading text-4xl font-bold tracking-tight text-foreground sm:text-5xl md:text-6xl lg:text-7xl",t),...e}));Fe.displayName="HeroTitle";const Me=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mt-6 max-w-2xl text-lg text-muted-foreground sm:text-xl md:text-2xl",t),...e}));Me.displayName="HeroSubtitle";const Le=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mt-8 flex flex-wrap items-center justify-center gap-4",t),...e}));Le.displayName="HeroActions";const Ie=o.forwardRef(({className:t,children:e,...a},s)=>r.jsx("div",{ref:s,className:n("mt-12 w-full max-w-5xl",t),...a,children:e}));Ie.displayName="HeroImage";const ss=v.cva("flex flex-col gap-6 py-12 md:py-16 lg:py-20",{variants:{layout:{default:"items-center text-center",left:"items-start text-left",right:"items-end text-right"},size:{sm:"max-w-xl",default:"max-w-2xl",lg:"max-w-3xl",xl:"max-w-4xl",full:"max-w-full"}},defaultVariants:{layout:"default",size:"default"}}),Ee=o.forwardRef(({className:t,layout:e,size:a,container:s=!0,children:l,...i},c)=>r.jsx("section",{ref:c,className:n(s&&"container mx-auto px-4",t),...i,children:r.jsx("div",{className:n(ss({layout:e,size:a}),e==="default"&&"mx-auto"),children:l})}));Ee.displayName="ContentSpot";const Ve=o.forwardRef(({className:t,...e},a)=>r.jsx("span",{ref:a,className:n("text-sm font-semibold uppercase tracking-wider text-primary",t),...e}));Ve.displayName="ContentSpotEyebrow";const Pe=o.forwardRef(({className:t,as:e="h2",...a},s)=>r.jsx(e,{ref:s,className:n("font-heading text-3xl font-bold tracking-tight text-foreground sm:text-4xl lg:text-5xl",t),...a}));Pe.displayName="ContentSpotTitle";const De=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("text-lg text-muted-foreground sm:text-xl",t),...e}));De.displayName="ContentSpotDescription";const ze=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex flex-wrap items-center gap-4",t),...e}));ze.displayName="ContentSpotActions";const ns=v.cva("py-12 md:py-16 lg:py-20",{variants:{layout:{grid:"",imageLeft:"",imageRight:""}},defaultVariants:{layout:"grid"}}),He=o.forwardRef(({className:t,layout:e,container:a=!0,children:s,...l},i)=>r.jsx("section",{ref:i,className:n(ns({layout:e}),a&&"container mx-auto px-4",t),...l,children:s}));He.displayName="FeatureSpot";const Ge=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mx-auto mb-12 max-w-2xl text-center",t),...e}));Ge.displayName="FeatureSpotHeader";const _e=o.forwardRef(({className:t,as:e="h2",...a},s)=>r.jsx(e,{ref:s,className:n("font-heading text-3xl font-bold tracking-tight text-foreground sm:text-4xl",t),...a}));_e.displayName="FeatureSpotTitle";const Qe=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mt-4 text-lg text-muted-foreground",t),...e}));Qe.displayName="FeatureSpotDescription";const qe=o.forwardRef(({className:t,columns:e=3,...a},s)=>{const l={2:"grid-cols-1 md:grid-cols-2",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4"};return r.jsx("div",{ref:s,className:n("grid gap-8",l[e],t),...a})});qe.displayName="FeatureSpotGrid";const $e=o.forwardRef(({className:t,icon:e,children:a,...s},l)=>r.jsxs("div",{ref:l,className:n("flex flex-col gap-4",t),...s,children:[e&&r.jsx("div",{className:"flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10 text-primary",children:e}),a]}));$e.displayName="FeatureSpotItem";const Oe=o.forwardRef(({className:t,...e},a)=>r.jsx("h3",{ref:a,className:n("font-heading text-lg font-semibold text-foreground",t),...e}));Oe.displayName="FeatureSpotItemTitle";const Ue=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("text-muted-foreground",t),...e}));Ue.displayName="FeatureSpotItemDescription";const We=o.forwardRef(({className:t,reverse:e=!1,...a},s)=>r.jsx("div",{ref:s,className:n("grid items-center gap-8 md:grid-cols-2 md:gap-12 lg:gap-16",e&&"md:[&>*:first-child]:order-2",t),...a}));We.displayName="FeatureSpotSplit";const Xe=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex flex-col gap-6",t),...e}));Xe.displayName="FeatureSpotContent";const Ye=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("relative overflow-hidden rounded-xl",t),...e}));Ye.displayName="FeatureSpotMedia";const ls=v.cva("w-full",{variants:{variant:{default:"bg-background",muted:"bg-muted/50",primary:"bg-primary text-primary-foreground",gradient:"bg-gradient-to-r from-primary to-primary/80 text-primary-foreground",dark:"bg-zinc-900 text-white",bordered:"border-y bg-background"},size:{sm:"py-12",default:"py-16",lg:"py-24"}},defaultVariants:{variant:"default",size:"default"}}),Je=o.forwardRef(({className:t,variant:e,size:a,children:s,...l},i)=>r.jsx("section",{ref:i,className:n(ls({variant:e,size:a}),t),...l,children:r.jsx("div",{className:"container mx-auto px-4",children:s})}));Je.displayName="CTASection";const is=v.cva("mx-auto",{variants:{align:{left:"text-left",center:"text-center",split:"flex flex-col items-center justify-between gap-8 text-center md:flex-row md:text-left"},maxWidth:{sm:"max-w-xl",md:"max-w-2xl",lg:"max-w-4xl",full:"max-w-none"}},defaultVariants:{align:"center",maxWidth:"lg"}}),Ke=o.forwardRef(({className:t,align:e,maxWidth:a,...s},l)=>r.jsx("div",{ref:l,className:n(is({align:e,maxWidth:a}),t),...s}));Ke.displayName="CTAContent";const Ze=o.forwardRef(({className:t,...e},a)=>r.jsx("h2",{ref:a,className:n("font-heading text-3xl font-bold tracking-tight sm:text-4xl",t),...e}));Ze.displayName="CTATitle";const et=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mt-4 text-lg opacity-90",t),...e}));et.displayName="CTADescription";const tt=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mt-8 flex flex-wrap items-center gap-4",t),...e}));tt.displayName="CTAActions";const at=o.forwardRef(({className:t,children:e,...a},s)=>r.jsx("div",{ref:s,className:n("rounded-2xl bg-card p-8 shadow-lg md:p-12",t),...a,children:e}));at.displayName="CTACard";const ds=v.cva("w-full",{variants:{variant:{default:"bg-background",muted:"bg-muted/50",primary:"bg-primary text-primary-foreground",dark:"bg-zinc-900 text-white"},size:{sm:"py-12",default:"py-16",lg:"py-24"}},defaultVariants:{variant:"default",size:"default"}}),rt=o.forwardRef(({className:t,variant:e,size:a,children:s,...l},i)=>r.jsx("section",{ref:i,className:n(ds({variant:e,size:a}),t),...l,children:r.jsx("div",{className:"container mx-auto px-4",children:s})}));rt.displayName="StatsSection";const ot=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mb-12 text-center",t),...e}));ot.displayName="StatsHeader";const st=o.forwardRef(({className:t,...e},a)=>r.jsx("h2",{ref:a,className:n("font-heading text-3xl font-bold tracking-tight sm:text-4xl",t),...e}));st.displayName="StatsTitle";const nt=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mx-auto mt-4 max-w-2xl text-lg opacity-80",t),...e}));nt.displayName="StatsDescription";const cs=v.cva("grid gap-8",{variants:{columns:{2:"md:grid-cols-2",3:"md:grid-cols-3",4:"md:grid-cols-2 lg:grid-cols-4"}},defaultVariants:{columns:4}}),lt=o.forwardRef(({className:t,columns:e,...a},s)=>r.jsx("div",{ref:s,className:n(cs({columns:e}),t),...a}));lt.displayName="StatsGrid";const ms=v.cva("text-center",{variants:{variant:{default:"",bordered:"border-l first:border-l-0 pl-8 first:pl-0",card:"rounded-lg border bg-card p-6 shadow-sm"}},defaultVariants:{variant:"default"}}),it=o.forwardRef(({className:t,variant:e,...a},s)=>r.jsx("div",{ref:s,className:n(ms({variant:e}),t),...a}));it.displayName="StatItem";const dt=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("font-heading text-4xl font-bold tracking-tight lg:text-5xl",t),...e}));dt.displayName="StatValue";const ct=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mt-2 text-sm font-medium opacity-80",t),...e}));ct.displayName="StatLabel";const mt=o.forwardRef(({className:t,direction:e="neutral",...a},s)=>r.jsx("div",{ref:s,className:n("mt-1 text-sm font-medium",e==="up"&&"text-green-500",e==="down"&&"text-red-500",e==="neutral"&&"opacity-60",t),...a}));mt.displayName="StatTrend";const fs=v.cva("w-full",{variants:{size:{sm:"py-12",default:"py-16",lg:"py-24"}},defaultVariants:{size:"default"}}),ft=o.forwardRef(({className:t,size:e,children:a,...s},l)=>r.jsx("section",{ref:l,className:n(fs({size:e}),t),...s,children:r.jsx("div",{className:"container mx-auto px-4",children:a})}));ft.displayName="TeamSection";const ut=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mb-12 text-center",t),...e}));ut.displayName="TeamHeader";const xt=o.forwardRef(({className:t,...e},a)=>r.jsx("h2",{ref:a,className:n("font-heading text-3xl font-bold tracking-tight text-foreground sm:text-4xl",t),...e}));xt.displayName="TeamTitle";const pt=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mx-auto mt-4 max-w-2xl text-lg text-muted-foreground",t),...e}));pt.displayName="TeamDescription";const us=v.cva("grid gap-8",{variants:{columns:{2:"md:grid-cols-2",3:"md:grid-cols-2 lg:grid-cols-3",4:"md:grid-cols-2 lg:grid-cols-4"}},defaultVariants:{columns:4}}),gt=o.forwardRef(({className:t,columns:e,...a},s)=>r.jsx("div",{ref:s,className:n(us({columns:e}),t),...a}));gt.displayName="TeamGrid";const xs=v.cva("group text-center",{variants:{variant:{default:"",card:"rounded-lg border bg-card p-6 shadow-sm transition-shadow hover:shadow-md"}},defaultVariants:{variant:"default"}}),ht=o.forwardRef(({className:t,variant:e,...a},s)=>r.jsx("div",{ref:s,className:n(xs({variant:e}),t),...a}));ht.displayName="TeamMember";const vt=o.forwardRef(({className:t,alt:e,fallback:a,...s},l)=>r.jsx("div",{className:"relative mx-auto mb-4 h-32 w-32 overflow-hidden rounded-full bg-muted",children:s.src?r.jsx("img",{ref:l,alt:e,className:n("h-full w-full object-cover transition-transform group-hover:scale-105",t),...s}):r.jsx("div",{className:"flex h-full w-full items-center justify-center text-4xl font-medium text-muted-foreground",children:a||(e==null?void 0:e.charAt(0).toUpperCase())})}));vt.displayName="TeamMemberImage";const Nt=o.forwardRef(({className:t,...e},a)=>r.jsx("h3",{ref:a,className:n("font-heading text-lg font-semibold text-foreground",t),...e}));Nt.displayName="TeamMemberName";const wt=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("text-sm text-muted-foreground",t),...e}));wt.displayName="TeamMemberRole";const yt=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mt-2 text-sm text-muted-foreground",t),...e}));yt.displayName="TeamMemberBio";const bt=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mt-4 flex justify-center gap-3",t),...e}));bt.displayName="TeamMemberLinks";const jt=o.forwardRef(({className:t,label:e,children:a,...s},l)=>r.jsx("a",{ref:l,"aria-label":e,className:n("text-muted-foreground transition-colors hover:text-foreground",t),...s,children:a}));jt.displayName="TeamMemberLink";const ps=v.cva("w-full",{variants:{variant:{default:"bg-background",muted:"bg-muted/50",bordered:"border-y bg-background"},size:{sm:"py-8",default:"py-12",lg:"py-16"}},defaultVariants:{variant:"default",size:"default"}}),Ct=o.forwardRef(({className:t,variant:e,size:a,title:s,children:l,...i},c)=>r.jsx("section",{ref:c,className:n(ps({variant:e,size:a}),t),...i,children:r.jsxs("div",{className:"container mx-auto px-4",children:[s&&r.jsx("p",{className:"mb-8 text-center text-sm font-medium text-muted-foreground",children:s}),r.jsx("div",{className:"flex flex-wrap items-center justify-center gap-8 md:gap-12 lg:gap-16",children:l})]})}));Ct.displayName="LogoCloud";const gs=v.cva("flex items-center justify-center transition-opacity",{variants:{grayscale:{true:"opacity-60 grayscale hover:opacity-100 hover:grayscale-0",false:"opacity-100"}},defaultVariants:{grayscale:!0}}),Rt=o.forwardRef(({className:t,grayscale:e,href:a,name:s,children:l,...i},c)=>{const d=r.jsx("div",{ref:c,className:n(gs({grayscale:e}),t),...i,children:l});return a?r.jsx("a",{href:a,target:"_blank",rel:"noopener noreferrer","aria-label":s,className:"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:d}):d});Rt.displayName="LogoCloudItem";v.cva("",{variants:{variant:{default:"",card:"",minimal:"",featured:""}},defaultVariants:{variant:"default"}});const ue=o.forwardRef(({className:t,variant:e,author:a,rating:s,showQuoteIcon:l=!0,children:i,...c},d)=>{const m=r.jsxs(r.Fragment,{children:[l&&e!=="minimal"&&r.jsx(J.Quote,{className:"mb-4 h-8 w-8 text-primary/20"}),r.jsx("div",{className:"mb-6 text-lg text-foreground",children:i}),s!==void 0&&r.jsx("div",{className:"mb-4 flex gap-1",children:Array.from({length:5}).map((u,g)=>r.jsx(J.Star,{className:n("h-5 w-5",g<s?"fill-yellow-400 text-yellow-400":"text-muted-foreground/30")},g))}),r.jsxs("div",{className:"flex items-center gap-4",children:[r.jsxs(y.Avatar,{children:[a.avatar&&r.jsx(y.AvatarImage,{src:a.avatar,alt:a.name}),r.jsx(y.AvatarFallback,{children:a.name.split(" ").map(u=>u[0]).join("").toUpperCase().slice(0,2)})]}),r.jsxs("div",{className:"flex flex-col",children:[r.jsx("span",{className:"font-semibold text-foreground",children:a.name}),(a.title||a.company)&&r.jsxs("span",{className:"text-sm text-muted-foreground",children:[a.title,a.title&&a.company&&" at ",a.company]})]})]})]});return e==="card"?r.jsx(y.Card,{ref:d,className:n("",t),...c,children:r.jsx(y.CardContent,{className:"pt-6",children:m})}):e==="featured"?r.jsx("div",{ref:d,className:n("relative rounded-2xl bg-gradient-to-br from-primary/5 to-primary/10 p-8 md:p-12",t),...c,children:m}):r.jsx("div",{ref:d,className:n("",t),...c,children:m})});ue.displayName="Testimonial";const St=o.forwardRef(({className:t,columns:e=3,...a},s)=>{const l={1:"grid-cols-1",2:"grid-cols-1 md:grid-cols-2",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3"};return r.jsx("div",{ref:s,className:n("grid gap-6",l[e],t),...a})});St.displayName="TestimonialGrid";const kt=o.forwardRef(({className:t,testimonials:e,autoPlay:a=!0,interval:s=5e3,...l},i)=>{const[c,d]=o.useState(0);return o.useEffect(()=>{if(!a)return;const m=setInterval(()=>{d(u=>(u+1)%e.length)},s);return()=>clearInterval(m)},[a,s,e.length]),r.jsxs("div",{ref:i,className:n("relative overflow-hidden",t),...l,children:[r.jsx("div",{className:"flex transition-transform duration-500 ease-out",style:{transform:`translateX(-${c*100}%)`},children:e.map((m,u)=>r.jsx("div",{className:"w-full shrink-0 px-4",children:r.jsx(ue,{author:m.author,rating:m.rating,variant:"featured",className:"mx-auto max-w-3xl",children:m.content})},u))}),r.jsx("div",{className:"mt-6 flex justify-center gap-2",children:e.map((m,u)=>r.jsx("button",{onClick:()=>d(u),className:n("h-2 w-2 rounded-full transition-colors",u===c?"bg-primary":"bg-muted-foreground/30 hover:bg-muted-foreground/50"),"aria-label":`Go to testimonial ${u+1}`},u))})]})});kt.displayName="TestimonialCarousel";const hs=v.cva("relative",{variants:{variant:{default:"border-l-4 border-primary pl-6",centered:"text-center",card:"rounded-lg border bg-card p-6 shadow-sm",minimal:""},size:{sm:"",default:"",lg:""}},defaultVariants:{variant:"default",size:"default"}}),vs={sm:"text-base sm:text-lg",default:"text-lg sm:text-xl md:text-2xl",lg:"text-xl sm:text-2xl md:text-3xl"},Tt=o.forwardRef(({className:t,variant:e,size:a,showIcon:s=!1,children:l,...i},c)=>r.jsxs("blockquote",{ref:c,className:n(hs({variant:e,size:a}),t),...i,children:[s&&e==="centered"&&r.jsx(J.Quote,{className:"mx-auto mb-4 h-8 w-8 text-muted-foreground/30"}),l]}));Tt.displayName="Quote";const At=o.forwardRef(({className:t,size:e="default",...a},s)=>r.jsx("p",{ref:s,className:n("font-medium italic text-foreground leading-relaxed",vs[e],t),...a}));At.displayName="QuoteText";const Bt=o.forwardRef(({className:t,...e},a)=>r.jsx("footer",{ref:a,className:n("mt-4 flex items-center gap-4",t),...e}));Bt.displayName="QuoteAuthor";const Ft=o.forwardRef(({className:t,src:e,alt:a,...s},l)=>r.jsx("div",{ref:l,className:n("h-12 w-12 shrink-0 overflow-hidden rounded-full bg-muted",t),...s,children:e&&r.jsx("img",{src:e,alt:a??"",className:"h-full w-full object-cover"})}));Ft.displayName="QuoteAuthorAvatar";const Mt=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex flex-col",t),...e}));Mt.displayName="QuoteAuthorInfo";const Lt=o.forwardRef(({className:t,...e},a)=>r.jsx("span",{ref:a,className:n("font-semibold text-foreground",t),...e}));Lt.displayName="QuoteAuthorName";const It=o.forwardRef(({className:t,...e},a)=>r.jsx("span",{ref:a,className:n("text-sm text-muted-foreground",t),...e}));It.displayName="QuoteAuthorTitle";const Ns=v.cva("w-full",{variants:{size:{sm:"py-12",default:"py-16",lg:"py-24"}},defaultVariants:{size:"default"}}),Et=o.forwardRef(({className:t,size:e,children:a,...s},l)=>r.jsx("section",{ref:l,className:n(Ns({size:e}),t),...s,children:r.jsx("div",{className:"container mx-auto px-4",children:a})}));Et.displayName="FAQSection";const Vt=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mb-12 text-center",t),...e}));Vt.displayName="FAQHeader";const Pt=o.forwardRef(({className:t,...e},a)=>r.jsx("h2",{ref:a,className:n("font-heading text-3xl font-bold tracking-tight text-foreground sm:text-4xl",t),...e}));Pt.displayName="FAQTitle";const Dt=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mx-auto mt-4 max-w-2xl text-lg text-muted-foreground",t),...e}));Dt.displayName="FAQDescription";const ws=v.cva("mx-auto",{variants:{variant:{default:"divide-y divide-border",separated:"space-y-4",cards:"space-y-4"},maxWidth:{sm:"max-w-xl",md:"max-w-2xl",lg:"max-w-3xl",full:"max-w-none"}},defaultVariants:{variant:"default",maxWidth:"lg"}}),zt=o.forwardRef(({className:t,variant:e,maxWidth:a,...s},l)=>r.jsx("div",{ref:l,className:n(ws({variant:e,maxWidth:a}),t),...s}));zt.displayName="FAQList";const Ht=o.forwardRef(({className:t,defaultOpen:e=!1,children:a,...s},l)=>{const[i,c]=o.useState(e);return r.jsx("div",{ref:l,className:n("py-4",t),...s,children:o.Children.map(a,d=>{if(o.isValidElement(d)){if(d.type===ne)return o.cloneElement(d,{isOpen:i,onToggle:()=>c(!i)});if(d.type===le)return o.cloneElement(d,{isOpen:i})}return d})})});Ht.displayName="FAQItem";const Gt=o.forwardRef(({className:t,defaultOpen:e=!1,children:a,...s},l)=>{const[i,c]=o.useState(e);return r.jsx("div",{ref:l,className:n("rounded-lg border bg-card p-4 transition-shadow hover:shadow-sm",t),...s,children:o.Children.map(a,d=>{if(o.isValidElement(d)){if(d.type===ne)return o.cloneElement(d,{isOpen:i,onToggle:()=>c(!i)});if(d.type===le)return o.cloneElement(d,{isOpen:i})}return d})})});Gt.displayName="FAQItemCard";const ne=o.forwardRef(({className:t,isOpen:e,onToggle:a,children:s,...l},i)=>r.jsxs("button",{ref:i,type:"button",onClick:a,className:n("flex w-full items-center justify-between text-left font-medium text-foreground transition-colors hover:text-foreground/80",t),"aria-expanded":e,...l,children:[r.jsx("span",{className:"pr-4",children:s}),r.jsx("svg",{className:n("h-5 w-5 shrink-0 text-muted-foreground transition-transform duration-200",e&&"rotate-180"),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]}));ne.displayName="FAQQuestion";const le=o.forwardRef(({className:t,isOpen:e,children:a,...s},l)=>r.jsx("div",{ref:l,className:n("grid transition-all duration-200",e?"grid-rows-[1fr] opacity-100":"grid-rows-[0fr] opacity-0"),...s,children:r.jsx("div",{className:"overflow-hidden",children:r.jsx("div",{className:n("pt-4 text-muted-foreground",t),children:a})})}));le.displayName="FAQAnswer";const _t=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mt-12 text-center",t),...e}));_t.displayName="FAQContact";const ys=v.cva("w-full",{variants:{size:{sm:"py-12",default:"py-16",lg:"py-24"}},defaultVariants:{size:"default"}}),Qt=o.forwardRef(({className:t,size:e,children:a,...s},l)=>r.jsx("section",{ref:l,className:n(ys({size:e}),t),...s,children:r.jsx("div",{className:"container mx-auto px-4",children:a})}));Qt.displayName="ComparisonSection";const qt=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mb-12 text-center",t),...e}));qt.displayName="ComparisonHeader";const $t=o.forwardRef(({className:t,...e},a)=>r.jsx("h2",{ref:a,className:n("font-heading text-3xl font-bold tracking-tight text-foreground sm:text-4xl",t),...e}));$t.displayName="ComparisonTitle";const Ot=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mx-auto mt-4 max-w-2xl text-lg text-muted-foreground",t),...e}));Ot.displayName="ComparisonDescription";const Ut=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("overflow-x-auto",t),...e}));Ut.displayName="ComparisonTable";const Wt=o.forwardRef(({className:t,...e},a)=>r.jsx("table",{ref:a,className:n("w-full border-collapse text-left",t),...e}));Wt.displayName="ComparisonTableInner";const Xt=o.forwardRef(({className:t,...e},a)=>r.jsx("thead",{ref:a,className:n("",t),...e}));Xt.displayName="ComparisonTableHead";const Yt=o.forwardRef(({className:t,...e},a)=>r.jsx("tbody",{ref:a,className:n("divide-y divide-border",t),...e}));Yt.displayName="ComparisonTableBody";const Jt=o.forwardRef(({className:t,...e},a)=>r.jsx("tr",{ref:a,className:n("",t),...e}));Jt.displayName="ComparisonTableRow";const bs=v.cva("px-4 py-4 text-sm font-semibold",{variants:{highlight:{true:"bg-primary/5",false:""}},defaultVariants:{highlight:!1}}),Kt=o.forwardRef(({className:t,highlight:e,...a},s)=>r.jsx("th",{ref:s,className:n(bs({highlight:e}),t),...a}));Kt.displayName="ComparisonHeaderCell";const js=v.cva("px-4 py-4 text-sm",{variants:{highlight:{true:"bg-primary/5",false:""}},defaultVariants:{highlight:!1}}),Zt=o.forwardRef(({className:t,highlight:e,...a},s)=>r.jsx("td",{ref:s,className:n(js({highlight:e}),t),...a}));Zt.displayName="ComparisonCell";const ea=o.forwardRef(({className:t,...e},a)=>r.jsx("td",{ref:a,className:n("px-4 py-4 text-sm font-medium text-foreground",t),...e}));ea.displayName="ComparisonFeatureCell";const ta=o.forwardRef(({className:t,...e},a)=>r.jsx("svg",{ref:a,className:n("mx-auto h-5 w-5 text-green-500",t),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,...e,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}));ta.displayName="ComparisonCheck";const aa=o.forwardRef(({className:t,...e},a)=>r.jsx("svg",{ref:a,className:n("mx-auto h-5 w-5 text-muted-foreground/40",t),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,...e,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})}));aa.displayName="ComparisonX";const ra=o.forwardRef(({className:t,...e},a)=>r.jsx("svg",{ref:a,className:n("mx-auto h-5 w-5 text-muted-foreground/40",t),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,...e,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M20 12H4"})}));ra.displayName="ComparisonMinus";const oa=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("text-center",t),...e}));oa.displayName="ComparisonPlanHeader";const sa=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("font-heading font-semibold text-foreground",t),...e}));sa.displayName="ComparisonPlanName";const na=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mt-1 font-heading text-2xl font-bold text-foreground",t),...e}));na.displayName="ComparisonPlanPrice";const la=o.forwardRef(({className:t,children:e,...a},s)=>r.jsx("tr",{ref:s,className:n("bg-muted/50",t),...a,children:r.jsx("td",{colSpan:100,className:"px-4 py-3 text-sm font-semibold text-foreground",children:e})}));la.displayName="ComparisonCategory";const Te=v.cva("flex w-full gap-2",{variants:{layout:{inline:"flex-row items-center",stacked:"flex-col"},size:{sm:"max-w-sm",default:"max-w-md",lg:"max-w-lg",full:"max-w-full"}},defaultVariants:{layout:"inline",size:"default"}}),ia=o.forwardRef(({className:t,layout:e,size:a,onSubmit:s,placeholder:l="Enter your email",buttonText:i="Subscribe",loading:c=!1,disabled:d=!1,helperText:m,successMessage:u,errorMessage:g,...h},p)=>{const[x,N]=o.useState(""),[b,j]=o.useState("idle"),R=async T=>{if(T.preventDefault(),!(!x||!s)){j("loading");try{await s(x),j("success"),N("")}catch{j("error")}}},F=c||b==="loading",M=d||F;return r.jsxs("div",{className:n("w-full",a!=="full"&&Te({size:a})),children:[r.jsxs("form",{ref:p,onSubmit:R,className:n(Te({layout:e,size:"full"}),t),...h,children:[r.jsx(y.Input,{type:"email",value:x,onChange:T=>N(T.target.value),placeholder:l,disabled:M,required:!0,className:n(e==="inline"&&"flex-1")}),r.jsx(y.Button,{type:"submit",disabled:M,className:n(e==="stacked"&&"w-full"),children:F?r.jsxs("span",{className:"flex items-center gap-2",children:[r.jsxs("svg",{className:"h-4 w-4 animate-spin",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[r.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),r.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"Loading..."]}):i})]}),m&&b==="idle"&&r.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:m}),b==="success"&&u&&r.jsx("p",{className:"mt-2 text-sm text-green-600 dark:text-green-400",children:u}),b==="error"&&g&&r.jsx("p",{className:"mt-2 text-sm text-destructive",children:g})]})});ia.displayName="EmailForm";const Cs=v.cva("w-full",{variants:{variant:{default:"bg-background",muted:"bg-muted/50",primary:"bg-primary text-primary-foreground",gradient:"bg-gradient-to-r from-primary to-primary/80 text-primary-foreground",dark:"bg-zinc-900 text-white",card:"bg-background"},size:{sm:"py-12",default:"py-16",lg:"py-24"}},defaultVariants:{variant:"default",size:"default"}}),da=o.forwardRef(({className:t,variant:e,size:a,children:s,...l},i)=>{const c=e==="card";return r.jsx("section",{ref:i,className:n(Cs({variant:e,size:a}),t),...l,children:r.jsx("div",{className:"container mx-auto px-4",children:c?r.jsx("div",{className:"mx-auto max-w-2xl rounded-2xl border bg-card p-8 shadow-sm md:p-12",children:s}):r.jsx("div",{className:"mx-auto max-w-2xl text-center",children:s})})})});da.displayName="Newsletter";const ca=o.forwardRef(({className:t,children:e,...a},s)=>r.jsx("div",{ref:s,className:n("mb-4 inline-flex h-12 w-12 items-center justify-center rounded-full bg-primary/10 text-primary",t),...a,children:e||r.jsx("svg",{className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})})}));ca.displayName="NewsletterIcon";const ma=o.forwardRef(({className:t,...e},a)=>r.jsx("h2",{ref:a,className:n("font-heading text-2xl font-bold tracking-tight sm:text-3xl",t),...e}));ma.displayName="NewsletterTitle";const fa=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mt-4 text-lg opacity-90",t),...e}));fa.displayName="NewsletterDescription";const ua=o.forwardRef(({className:t,...e},a)=>r.jsx("form",{ref:a,className:n("mt-8 flex flex-col gap-3 sm:flex-row sm:gap-4",t),...e}));ua.displayName="NewsletterForm";const xa=o.forwardRef(({className:t,...e},a)=>r.jsx("input",{ref:a,type:"email",className:n("flex-1 rounded-lg border border-input bg-background px-4 py-3 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring",t),...e}));xa.displayName="NewsletterInput";const pa=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mt-4 text-xs opacity-70",t),...e}));pa.displayName="NewsletterDisclaimer";const ga=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mt-8 flex items-center justify-center gap-2 text-green-500",t),...e}));ga.displayName="NewsletterSuccess";const Rs=v.cva("w-full",{variants:{size:{sm:"py-12",default:"py-16",lg:"py-24"}},defaultVariants:{size:"default"}}),ha=o.forwardRef(({className:t,size:e,children:a,...s},l)=>r.jsx("section",{ref:l,className:n(Rs({size:e}),t),...s,children:r.jsx("div",{className:"container mx-auto px-4",children:a})}));ha.displayName="ContactSection";const va=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("grid gap-12 lg:grid-cols-2",t),...e}));va.displayName="ContactContent";const Na=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("space-y-8",t),...e}));Na.displayName="ContactInfo";const wa=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("space-y-4",t),...e}));wa.displayName="ContactHeader";const ya=o.forwardRef(({className:t,...e},a)=>r.jsx("h2",{ref:a,className:n("text-3xl font-bold tracking-tight text-foreground sm:text-4xl",t),...e}));ya.displayName="ContactTitle";const ba=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("text-lg text-muted-foreground",t),...e}));ba.displayName="ContactDescription";const ja=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("space-y-4",t),...e}));ja.displayName="ContactDetails";const Ca=o.forwardRef(({className:t,icon:e,label:a,value:s,href:l,...i},c)=>r.jsxs("div",{ref:c,className:n("flex items-start gap-4",t),...i,children:[e&&r.jsx("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary",children:e}),r.jsxs("div",{children:[r.jsx("p",{className:"text-sm font-medium text-muted-foreground",children:a}),l?r.jsx("a",{href:l,className:"text-foreground hover:text-primary hover:underline",children:s}):r.jsx("p",{className:"text-foreground",children:s})]})]}));Ca.displayName="ContactDetailItem";const Ra=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex gap-4",t),...e}));Ra.displayName="ContactSocials";const Sa=o.forwardRef(({className:t,label:e,children:a,...s},l)=>r.jsx("a",{ref:l,"aria-label":e,className:n("flex h-10 w-10 items-center justify-center rounded-full bg-muted text-muted-foreground transition-colors hover:bg-primary hover:text-primary-foreground",t),...s,children:a}));Sa.displayName="ContactSocialLink";const Ss=v.cva("space-y-6",{variants:{variant:{default:"",card:"rounded-xl border bg-card p-6 shadow-sm md:p-8"}},defaultVariants:{variant:"default"}}),ka=o.forwardRef(({className:t,variant:e,...a},s)=>r.jsx("form",{ref:s,className:n(Ss({variant:e}),t),...a}));ka.displayName="ContactForm";const Ta=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("grid gap-4 sm:grid-cols-2",t),...e}));Ta.displayName="ContactFormRow";const Aa=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("space-y-2",t),...e}));Aa.displayName="ContactFormField";const Ba=o.forwardRef(({className:t,required:e,children:a,...s},l)=>r.jsxs("label",{ref:l,className:n("text-sm font-medium text-foreground",t),...s,children:[a,e&&r.jsx("span",{className:"ml-1 text-red-500",children:"*"})]}));Ba.displayName="ContactFormLabel";const Fa=o.forwardRef(({className:t,...e},a)=>r.jsx("input",{ref:a,className:n("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",t),...e}));Fa.displayName="ContactFormInput";const Ma=o.forwardRef(({className:t,...e},a)=>r.jsx("textarea",{ref:a,className:n("flex min-h-[120px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",t),...e}));Ma.displayName="ContactFormTextarea";const La=o.forwardRef(({className:t,...e},a)=>r.jsx("select",{ref:a,className:n("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",t),...e}));La.displayName="ContactFormSelect";const Ia=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("text-sm text-red-500",t),...e}));Ia.displayName="ContactFormError";const Ea=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex items-center gap-2 rounded-lg bg-green-50 p-4 text-green-700",t),...e}));Ea.displayName="ContactFormSuccess";const Va=o.forwardRef(({className:t,logo:e,items:a=[],actions:s,sticky:l=!1,transparent:i=!1,mobileBreakpoint:c="md",...d},m)=>{const[u,g]=o.useState(!1),h={sm:{desktop:"hidden sm:flex",mobile:"sm:hidden"},md:{desktop:"hidden md:flex",mobile:"md:hidden"},lg:{desktop:"hidden lg:flex",mobile:"lg:hidden"}},p=(x,N=!1)=>{const b=N?"block w-full px-4 py-2 text-base font-medium text-foreground hover:bg-accent hover:text-accent-foreground rounded-md transition-colors":"text-sm font-medium text-muted-foreground hover:text-foreground transition-colors";return x.href?r.jsx("a",{href:x.href,className:n(b,x.active&&(N?"bg-accent":"text-foreground")),onClick:()=>N&&g(!1),children:x.label},x.label):r.jsx("button",{onClick:()=>{var j;(j=x.onClick)==null||j.call(x),N&&g(!1)},className:n(b,"cursor-pointer text-left",x.active&&(N?"bg-accent":"text-foreground")),children:x.label},x.label)};return r.jsx("header",{ref:m,className:n("w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",l&&"sticky top-0 z-50",i&&"border-transparent bg-transparent",t),...d,children:r.jsxs("div",{className:"container mx-auto flex h-16 items-center justify-between px-4",children:[r.jsx("div",{className:"flex items-center",children:e}),r.jsx("nav",{className:n("items-center gap-6",h[c].desktop),children:a.map(x=>p(x))}),r.jsx("div",{className:n("items-center gap-4",h[c].desktop),children:s}),r.jsx("div",{className:h[c].mobile,children:r.jsxs(y.Sheet,{open:u,onOpenChange:g,children:[r.jsx(y.SheetTrigger,{asChild:!0,children:r.jsxs(y.Button,{variant:"ghost",size:"icon",children:[r.jsx(J.Menu,{className:"h-5 w-5"}),r.jsx("span",{className:"sr-only",children:"Toggle menu"})]})}),r.jsx(y.SheetContent,{side:"right",className:"w-[300px] sm:w-[400px]",children:r.jsxs("div",{className:"flex flex-col gap-6 pt-6",children:[r.jsx("nav",{className:"flex flex-col gap-2",children:a.map(x=>p(x,!0))}),s&&r.jsx("div",{className:"flex flex-col gap-2 border-t pt-6",children:s})]})})]})})]})})});Va.displayName="HeaderNavigation";const ks=v.cva("w-full border-t bg-background",{variants:{size:{sm:"py-8",default:"py-12",lg:"py-16"}},defaultVariants:{size:"default"}}),Pa=o.forwardRef(({className:t,size:e,children:a,...s},l)=>r.jsx("footer",{ref:l,className:n(ks({size:e}),t),...s,children:r.jsx("div",{className:"container mx-auto px-4",children:a})}));Pa.displayName="Footer";const Da=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("grid gap-8 md:grid-cols-2 lg:grid-cols-4",t),...e}));Da.displayName="FooterContent";const za=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("space-y-4",t),...e}));za.displayName="FooterSection";const Ha=o.forwardRef(({className:t,...e},a)=>r.jsx("h3",{ref:a,className:n("font-heading text-sm font-semibold uppercase tracking-wider text-foreground",t),...e}));Ha.displayName="FooterTitle";const Ga=o.forwardRef(({className:t,...e},a)=>r.jsx("ul",{ref:a,className:n("space-y-2",t),...e}));Ga.displayName="FooterLinks";const _a=o.forwardRef(({className:t,...e},a)=>r.jsx("li",{children:r.jsx("a",{ref:a,className:n("text-sm text-muted-foreground transition-colors hover:text-foreground",t),...e})}));_a.displayName="FooterLink";const Qa=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mt-8 flex flex-col items-center justify-between gap-4 border-t pt-8 md:flex-row",t),...e}));Qa.displayName="FooterBottom";const qa=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("text-sm text-muted-foreground",t),...e}));qa.displayName="FooterCopyright";const $a=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex items-center gap-4",t),...e}));$a.displayName="FooterSocial";const Oa=o.forwardRef(({className:t,label:e,children:a,...s},l)=>r.jsx("a",{ref:l,"aria-label":e,className:n("text-muted-foreground transition-colors hover:text-foreground",t),...s,children:a}));Oa.displayName="FooterSocialLink";const Ts=v.cva("relative w-full px-4 py-2 text-center text-sm font-medium",{variants:{variant:{default:"bg-primary text-primary-foreground",secondary:"bg-secondary text-secondary-foreground",muted:"bg-muted text-muted-foreground",success:"bg-green-500 text-white",warning:"bg-yellow-500 text-black",error:"bg-red-500 text-white",gradient:"bg-gradient-to-r from-primary via-purple-500 to-pink-500 text-white",dark:"bg-zinc-900 text-white"},size:{sm:"py-1.5 text-xs",default:"py-2 text-sm",lg:"py-3 text-base"}},defaultVariants:{variant:"default",size:"default"}}),ie=o.forwardRef(({className:t,variant:e,size:a,dismissible:s=!0,onDismiss:l,isVisible:i=!0,href:c,icon:d,children:m,...u},g)=>{const[h,p]=o.useState(i);if(o.useEffect(()=>{p(i)},[i]),!h)return null;const x=()=>{p(!1),l==null||l()},N=r.jsxs(r.Fragment,{children:[d&&r.jsx("span",{className:"mr-2 inline-flex",children:d}),m]});return r.jsx("div",{ref:g,className:n(Ts({variant:e,size:a}),t),role:"banner",...u,children:r.jsxs("div",{className:"container mx-auto flex items-center justify-center",children:[c?r.jsxs("a",{href:c,className:"flex items-center hover:underline",children:[N,r.jsx("svg",{className:"ml-2 h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]}):r.jsx("span",{className:"flex items-center",children:N}),s&&r.jsx("button",{onClick:x,className:"absolute right-4 top-1/2 -translate-y-1/2 rounded-full p-1 opacity-70 transition-opacity hover:opacity-100","aria-label":"Dismiss announcement",children:r.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]})})});ie.displayName="AnnouncementBar";const Ua=o.forwardRef(({messages:t,interval:e=5e3,className:a,variant:s,size:l,dismissible:i,onDismiss:c,icon:d,...m},u)=>{const[g,h]=o.useState(0);o.useEffect(()=>{if(t.length<=1)return;const x=setInterval(()=>{h(N=>(N+1)%t.length)},e);return()=>clearInterval(x)},[t.length,e]);const p=t[g];return r.jsx(ie,{ref:u,className:a,variant:s,size:l,dismissible:i,onDismiss:c,href:p==null?void 0:p.href,icon:d,...m,children:r.jsx("span",{className:"animate-fade-in",children:p==null?void 0:p.text})})});Ua.displayName="RotatingAnnouncementBar";const Wa=o.forwardRef(({targetDate:t,prefix:e="Sale ends in",suffix:a,onComplete:s,className:l,variant:i,size:c,dismissible:d,onDismiss:m,href:u,icon:g,...h},p)=>{const[x,N]=o.useState("");return o.useEffect(()=>{const b=()=>{const R=t.getTime()-new Date().getTime();if(R<=0)return s==null||s(),"00:00:00";const F=Math.floor(R/(1e3*60*60)),M=Math.floor(R/(1e3*60)%60),T=Math.floor(R/1e3%60);return`${String(F).padStart(2,"0")}:${String(M).padStart(2,"0")}:${String(T).padStart(2,"0")}`};N(b());const j=setInterval(()=>{N(b())},1e3);return()=>clearInterval(j)},[t,s]),r.jsxs(ie,{ref:p,className:l,variant:i,size:c,dismissible:d,onDismiss:m,href:u,icon:g,...h,children:[e," ",r.jsx("span",{className:"mx-2 font-mono font-bold",children:x}),a]})});Wa.displayName="CountdownAnnouncementBar";const As=v.cva("grid gap-6",{variants:{columns:{2:"grid-cols-1 md:grid-cols-2",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4"}},defaultVariants:{columns:3}}),Xa=o.forwardRef(({className:t,columns:e,options:a,...s},l)=>r.jsx("div",{ref:l,className:n(As({columns:e}),t),...s,children:a.map(i=>r.jsx(xe,{option:i},i.id))}));Xa.displayName="PricingOptions";const xe=o.forwardRef(({option:t},e)=>r.jsxs(y.Card,{ref:e,className:n("relative flex flex-col",t.highlighted&&"border-primary shadow-lg scale-105"),children:[t.highlighted&&t.highlightLabel&&r.jsx(y.Badge,{className:"absolute -top-3 left-1/2 -translate-x-1/2",variant:"default",children:t.highlightLabel}),r.jsxs(y.CardHeader,{className:"text-center",children:[r.jsx(y.CardTitle,{className:"text-xl",children:t.name}),t.description&&r.jsx(y.CardDescription,{children:t.description}),r.jsxs("div",{className:"mt-4",children:[t.originalPrice&&r.jsx("span",{className:"mr-2 text-lg text-muted-foreground line-through",children:typeof t.originalPrice=="number"?`$${t.originalPrice}`:t.originalPrice}),r.jsx("span",{className:"font-heading text-4xl font-bold",children:typeof t.price=="number"?`$${t.price}`:t.price}),t.period&&r.jsxs("span",{className:"text-muted-foreground",children:["/",t.period]})]})]}),r.jsx(y.CardContent,{className:"flex-1",children:r.jsx("ul",{className:"space-y-3",children:t.features.map((a,s)=>r.jsxs("li",{className:"flex items-start gap-3",children:[r.jsx(J.Check,{className:"h-5 w-5 shrink-0 text-primary"}),r.jsx("span",{className:"text-sm text-muted-foreground",children:a})]},s))})}),r.jsx(y.CardFooter,{children:r.jsx(y.Button,{className:"w-full",variant:t.buttonVariant??(t.highlighted?"default":"outline"),disabled:t.disabled,onClick:t.onSelect,children:t.buttonText??"Get Started"})})]}));xe.displayName="PricingCard";const Ya=o.forwardRef(({className:t,plans:e,features:a,featureGroupTitle:s="Features",...l},i)=>{const c=d=>typeof d=="boolean"?d?r.jsx(J.Check,{className:"mx-auto h-5 w-5 text-green-500"}):r.jsx(J.X,{className:"mx-auto h-5 w-5 text-muted-foreground/40"}):r.jsx("span",{className:"text-sm",children:d});return r.jsx("div",{ref:i,className:n("w-full overflow-auto",t),...l,children:r.jsxs(y.Table,{children:[r.jsx(y.TableHeader,{children:r.jsxs(y.TableRow,{children:[r.jsx(y.TableHead,{className:"w-[200px]",children:s}),e.map(d=>r.jsx(y.TableHead,{className:n("text-center",d.highlighted&&"bg-primary/5"),children:r.jsxs("div",{className:"flex flex-col gap-1",children:[d.highlighted&&r.jsx("span",{className:"text-xs font-medium text-primary",children:"Most Popular"}),r.jsx("span",{className:"font-heading text-lg font-semibold text-foreground",children:d.name}),r.jsxs("div",{className:"font-heading text-2xl font-bold text-foreground",children:[typeof d.price=="number"?`$${d.price}`:d.price,d.period&&r.jsxs("span",{className:"text-sm font-normal text-muted-foreground",children:["/",d.period]})]}),d.description&&r.jsx("span",{className:"text-xs text-muted-foreground",children:d.description})]})},d.id))]})}),r.jsx(y.TableBody,{children:a.map((d,m)=>r.jsxs(y.TableRow,{children:[r.jsx(y.TableCell,{className:"font-medium",children:d.name}),e.map(u=>r.jsx(y.TableCell,{className:n("text-center",u.highlighted&&"bg-primary/5"),children:c(d.values[u.id]??!1)},u.id))]},m))})]})})});Ya.displayName="PricingTable";const Bs=v.cva("grid gap-8",{variants:{columns:{1:"grid-cols-1",2:"grid-cols-1 md:grid-cols-2",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 md:grid-cols-2 lg:grid-cols-4"}},defaultVariants:{columns:3}}),Ja=o.forwardRef(({className:t,columns:e,...a},s)=>r.jsx("div",{ref:s,className:n(Bs({columns:e}),t),...a}));Ja.displayName="BlogGrid";const Fs=v.cva("group flex flex-col overflow-hidden rounded-lg transition-shadow",{variants:{variant:{default:"bg-card",bordered:"border bg-card hover:shadow-md",elevated:"bg-card shadow-sm hover:shadow-lg",minimal:"bg-transparent"}},defaultVariants:{variant:"bordered"}}),Ka=o.forwardRef(({className:t,variant:e,href:a,children:s,...l},i)=>{const c=a?"a":"article";return r.jsx(c,{ref:i,href:a,className:n(Fs({variant:e}),t),...l,children:s})});Ka.displayName="BlogCard";const Za=o.forwardRef(({className:t,aspectRatio:e="video",alt:a,...s},l)=>r.jsx("div",{ref:l,className:n("relative overflow-hidden bg-muted",e==="video"&&"aspect-video",e==="square"&&"aspect-square",e==="wide"&&"aspect-[2/1]",t),children:s.src&&r.jsx("img",{alt:a,className:"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105",...s})}));Za.displayName="BlogCardImage";const er=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex flex-1 flex-col p-4 md:p-6",t),...e}));er.displayName="BlogCardContent";const tr=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mb-3 flex flex-wrap items-center gap-2 text-xs text-muted-foreground",t),...e}));tr.displayName="BlogCardMeta";const ar=o.forwardRef(({className:t,...e},a)=>r.jsx("span",{ref:a,className:n("inline-flex items-center rounded-full bg-primary/10 px-2.5 py-0.5 text-xs font-medium text-primary",t),...e}));ar.displayName="BlogCardCategory";const rr=o.forwardRef(({className:t,...e},a)=>r.jsx("time",{ref:a,className:n("text-muted-foreground",t),...e}));rr.displayName="BlogCardDate";const or=o.forwardRef(({className:t,...e},a)=>r.jsx("span",{ref:a,className:n("text-muted-foreground",t),...e}));or.displayName="BlogCardReadTime";const sr=o.forwardRef(({className:t,...e},a)=>r.jsx("h3",{ref:a,className:n("font-heading text-lg font-semibold leading-tight text-foreground transition-colors group-hover:text-primary",t),...e}));sr.displayName="BlogCardTitle";const nr=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mt-2 line-clamp-2 text-sm text-muted-foreground",t),...e}));nr.displayName="BlogCardExcerpt";const lr=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mt-auto flex items-center gap-3 pt-4",t),...e}));lr.displayName="BlogCardFooter";const ir=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex items-center gap-3",t),...e}));ir.displayName="BlogCardAuthor";const dr=o.forwardRef(({className:t,alt:e,fallback:a,...s},l)=>r.jsx("div",{ref:l,className:n("h-8 w-8 overflow-hidden rounded-full bg-muted",t),children:s.src?r.jsx("img",{alt:e,className:"h-full w-full object-cover",...s}):r.jsx("div",{className:"flex h-full w-full items-center justify-center text-sm font-medium text-muted-foreground",children:a||(e==null?void 0:e.charAt(0).toUpperCase())})}));dr.displayName="BlogCardAuthorAvatar";const cr=o.forwardRef(({className:t,...e},a)=>r.jsx("span",{ref:a,className:n("text-sm font-medium text-foreground",t),...e}));cr.displayName="BlogCardAuthorName";const mr=o.forwardRef(({className:t,children:e,...a},s)=>r.jsxs("span",{ref:s,className:n("ml-auto inline-flex items-center gap-1 text-sm font-medium text-primary transition-colors group-hover:underline",t),...a,children:[e||"Read more",r.jsx("svg",{className:"h-4 w-4 transition-transform group-hover:translate-x-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]}));mr.displayName="BlogCardLink";const fr=o.forwardRef(({className:t,href:e,children:a,...s},l)=>{const i=e?"a":"article";return r.jsx(i,{ref:l,href:e,className:n("group grid overflow-hidden rounded-lg border bg-card md:grid-cols-2",t),...s,children:a})});fr.displayName="BlogCardFeatured";const Ms=v.cva("grid gap-4",{variants:{columns:{2:"grid-cols-2",3:"grid-cols-3",4:"grid-cols-4",auto:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3"}},defaultVariants:{columns:"auto"}}),ur=o.forwardRef(({className:t,columns:e,...a},s)=>r.jsx("div",{ref:s,className:n(Ms({columns:e}),t),...a}));ur.displayName="BentoGrid";const Ls=v.cva("group relative overflow-hidden rounded-xl border bg-card p-6 transition-all",{variants:{variant:{default:"hover:shadow-lg",ghost:"border-transparent bg-muted/50 hover:bg-muted",gradient:"border-transparent bg-gradient-to-br from-primary/10 to-primary/5"},size:{default:"",lg:"p-8"},span:{1:"col-span-1",2:"col-span-1 md:col-span-2",3:"col-span-1 md:col-span-2 lg:col-span-3",full:"col-span-full"},rowSpan:{1:"row-span-1",2:"row-span-1 md:row-span-2"}},defaultVariants:{variant:"default",size:"default",span:1,rowSpan:1}}),xr=o.forwardRef(({className:t,variant:e,size:a,span:s,rowSpan:l,href:i,children:c,...d},m)=>{const u=r.jsx("div",{ref:m,className:n(Ls({variant:e,size:a,span:s,rowSpan:l}),t),...d,children:c});return i?r.jsx("a",{href:i,className:"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:u}):u});xr.displayName="BentoCard";const pr=o.forwardRef(({className:t,children:e,...a},s)=>r.jsx("div",{ref:s,className:n("mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10 text-primary",t),...a,children:e}));pr.displayName="BentoCardIcon";const gr=o.forwardRef(({className:t,...e},a)=>r.jsx("h3",{ref:a,className:n("font-heading text-lg font-semibold text-foreground transition-colors group-hover:text-primary",t),...e}));gr.displayName="BentoCardTitle";const hr=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mt-2 text-sm text-muted-foreground",t),...e}));hr.displayName="BentoCardDescription";const vr=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mt-4",t),...e}));vr.displayName="BentoCardContent";const Nr=o.forwardRef(({className:t,src:e,alt:a,children:s,...l},i)=>r.jsx("div",{ref:i,className:n("absolute inset-0 -z-10 opacity-10 transition-opacity group-hover:opacity-20",t),...l,children:e?r.jsx("img",{src:e,alt:a||"",className:"h-full w-full object-cover"}):s}));Nr.displayName="BentoCardImage";const wr=o.forwardRef(({className:t,...e},a)=>r.jsx("span",{ref:a,className:n("absolute right-4 top-4 inline-flex items-center rounded-full bg-primary px-2.5 py-0.5 text-xs font-medium text-primary-foreground",t),...e}));wr.displayName="BentoCardBadge";const yr=o.forwardRef(({className:t,children:e,...a},s)=>r.jsxs("div",{ref:s,className:n("mt-4 inline-flex items-center gap-1 text-sm font-medium text-primary transition-colors",t),...a,children:[e||"Learn more",r.jsx("svg",{className:"h-4 w-4 transition-transform group-hover:translate-x-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]}));yr.displayName="BentoCardLink";const br=o.forwardRef(({className:t,layout:e="default",...a},s)=>{const l={default:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3",asymmetric:"grid-cols-1 md:grid-cols-3 lg:grid-cols-4",featured:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 auto-rows-[minmax(200px,1fr)]"};return r.jsx("div",{ref:s,className:n("grid gap-4",l[e],t),...a})});br.displayName="BentoGridPreset";const Is=v.cva("flex items-center gap-3",{variants:{size:{sm:"text-sm",default:"text-base",lg:"text-lg"}},defaultVariants:{size:"default"}}),jr=o.forwardRef(({className:t,size:e,...a},s)=>r.jsx("div",{ref:s,className:n(Is({size:e}),t),...a}));jr.displayName="SocialProof";const Cr=o.forwardRef(({className:t,max:e=5,total:a,size:s="default",children:l,...i},c)=>{const d={sm:"h-6 w-6 -ml-2 first:ml-0",default:"h-8 w-8 -ml-3 first:ml-0",lg:"h-10 w-10 -ml-4 first:ml-0"},m=o.Children.toArray(l),u=m.slice(0,e),g=a?a-e:m.length-e;return r.jsxs("div",{ref:c,className:n("flex items-center",t),...i,children:[u.map((h,p)=>r.jsx("div",{className:n("relative inline-block overflow-hidden rounded-full border-2 border-background bg-muted",d[s]),style:{zIndex:e-p},children:h},p)),g>0&&r.jsxs("div",{className:n("relative inline-flex items-center justify-center rounded-full border-2 border-background bg-muted text-xs font-medium text-muted-foreground",d[s]),children:["+",g]})]})});Cr.displayName="AvatarStack";const Rr=o.forwardRef(({className:t,rating:e,reviewCount:a,size:s="default",showValue:l=!0,...i},c)=>{const d={sm:"h-3 w-3",default:"h-4 w-4",lg:"h-5 w-5"},m=Math.floor(e),u=e%1>=.5,g=5-m-(u?1:0);return r.jsxs("div",{ref:c,className:n("flex items-center gap-1",t),...i,children:[r.jsxs("div",{className:"flex gap-0.5",children:[Array.from({length:m}).map((h,p)=>r.jsx("svg",{className:n(d[s],"text-yellow-400"),fill:"currentColor",viewBox:"0 0 24 24",children:r.jsx("path",{d:"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"})},`full-${p}`)),u&&r.jsxs("svg",{className:n(d[s],"text-yellow-400"),fill:"currentColor",viewBox:"0 0 24 24",children:[r.jsx("defs",{children:r.jsxs("linearGradient",{id:"half-star",children:[r.jsx("stop",{offset:"50%",stopColor:"currentColor"}),r.jsx("stop",{offset:"50%",stopColor:"#e5e7eb"})]})}),r.jsx("path",{fill:"url(#half-star)",d:"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"})]}),Array.from({length:g}).map((h,p)=>r.jsx("svg",{className:n(d[s],"text-gray-200"),fill:"currentColor",viewBox:"0 0 24 24",children:r.jsx("path",{d:"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"})},`empty-${p}`))]}),l&&r.jsx("span",{className:"font-medium",children:e.toFixed(1)}),a!==void 0&&r.jsxs("span",{className:"text-muted-foreground",children:["(",a.toLocaleString()," reviews)"]})]})});Rr.displayName="StarRating";const Sr=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex flex-wrap items-center gap-4",t),...e}));Sr.displayName="TrustBadges";const kr=o.forwardRef(({className:t,icon:e,label:a,...s},l)=>r.jsxs("div",{ref:l,className:n("flex items-center gap-2 text-sm text-muted-foreground",t),...s,children:[e||r.jsx("svg",{className:"h-4 w-4 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"})}),r.jsx("span",{children:a})]}));kr.displayName="TrustBadge";const Tr=o.forwardRef(({className:t,count:e,label:a="happy customers",size:s="default",...l},i)=>{const c={sm:"text-sm",default:"text-base",lg:"text-lg"};return r.jsxs("div",{ref:i,className:n("flex items-center gap-2",c[s],t),...l,children:[r.jsxs("span",{className:"font-bold",children:[e.toLocaleString(),"+"]}),r.jsx("span",{className:"text-muted-foreground",children:a})]})});Tr.displayName="CustomerCount";const Ar=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex flex-wrap items-center justify-center gap-6 border-y bg-muted/50 py-4 md:gap-12",t),...e}));Ar.displayName="SocialProofBanner";const Br=o.forwardRef(({className:t,title:e="Featured in",children:a,...s},l)=>r.jsxs("div",{ref:l,className:n("text-center",t),...s,children:[r.jsx("p",{className:"mb-6 text-sm font-medium uppercase tracking-wider text-muted-foreground",children:e}),r.jsx("div",{className:"flex flex-wrap items-center justify-center gap-8 opacity-60 grayscale",children:a})]}));Br.displayName="FeaturedIn";const pe=v.cva("relative overflow-hidden bg-black",{variants:{rounded:{none:"",sm:"rounded-sm",md:"rounded-md",lg:"rounded-lg",xl:"rounded-xl","2xl":"rounded-2xl"},aspectRatio:{video:"aspect-video",square:"aspect-square","4/3":"aspect-[4/3]","21/9":"aspect-[21/9]",auto:""}},defaultVariants:{rounded:"lg",aspectRatio:"video"}}),ge=o.forwardRef(({className:t,containerClassName:e,rounded:a,aspectRatio:s,src:l,poster:i,showControls:c=!0,showPlayButton:d=!0,autoPlay:m=!1,muted:u=!1,loop:g=!1,playsInline:h=!0,...p},x)=>{const N=o.useRef(null),[b,j]=o.useState(m),[R,F]=o.useState(!m),M=o.useCallback(B=>{N.current=B,typeof x=="function"?x(B):x&&(x.current=B)},[x]),T=()=>{N.current&&(N.current.play(),j(!0),F(!1))},G=()=>{N.current&&(N.current.pause(),j(!1))},A=()=>{b?G():T()};return r.jsxs("div",{className:n(pe({rounded:a,aspectRatio:s}),e),children:[r.jsx("video",{ref:M,src:l,poster:i,autoPlay:m,muted:u,loop:g,playsInline:h,controls:c&&b,onClick:A,onEnded:()=>j(!1),className:n("h-full w-full object-cover",t),...p}),d&&R&&r.jsx("button",{onClick:T,className:"absolute inset-0 flex items-center justify-center bg-black/30 transition-opacity hover:bg-black/40","aria-label":"Play video",children:r.jsx("div",{className:"flex h-16 w-16 items-center justify-center rounded-full bg-white/90 text-black shadow-lg transition-transform hover:scale-110 md:h-20 md:w-20",children:r.jsx("svg",{className:"ml-1 h-8 w-8 md:h-10 md:w-10",fill:"currentColor",viewBox:"0 0 24 24",children:r.jsx("path",{d:"M8 5v14l11-7z"})})})})]})});ge.displayName="VideoPlayer";const Fr=o.forwardRef(({className:t,containerClassName:e,rounded:a,aspectRatio:s,videoId:l,autoPlay:i=!1,title:c="YouTube video",...d},m)=>{const[u,g]=o.useState(!1);return r.jsxs("div",{className:n(pe({rounded:a,aspectRatio:s}),e),children:[!u&&r.jsx("button",{onClick:()=>g(!0),className:"absolute inset-0 flex items-center justify-center",style:{backgroundImage:`url(https://img.youtube.com/vi/${l}/maxresdefault.jpg)`,backgroundSize:"cover",backgroundPosition:"center"},"aria-label":"Play YouTube video",children:r.jsx("div",{className:"flex h-16 w-16 items-center justify-center rounded-full bg-red-600 text-white shadow-lg transition-transform hover:scale-110 md:h-20 md:w-20",children:r.jsx("svg",{className:"ml-1 h-8 w-8 md:h-10 md:w-10",fill:"currentColor",viewBox:"0 0 24 24",children:r.jsx("path",{d:"M8 5v14l11-7z"})})})}),u&&r.jsx("iframe",{ref:m,src:`https://www.youtube.com/embed/${l}?autoplay=${i?1:0}&rel=0`,title:c,allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,className:n("h-full w-full",t),...d})]})});Fr.displayName="YouTubeEmbed";const Mr=o.forwardRef(({className:t,containerClassName:e,rounded:a,aspectRatio:s,videoId:l,autoPlay:i=!1,title:c="Vimeo video",...d},m)=>r.jsx("div",{className:n(pe({rounded:a,aspectRatio:s}),e),children:r.jsx("iframe",{ref:m,src:`https://player.vimeo.com/video/${l}?autoplay=${i?1:0}`,title:c,allow:"autoplay; fullscreen; picture-in-picture",allowFullScreen:!0,className:n("h-full w-full",t),...d})}));Mr.displayName="VimeoEmbed";const Lr=o.forwardRef(({src:t,isOpen:e,onClose:a,title:s="Video"},l)=>(o.useEffect(()=>{const i=c=>{c.key==="Escape"&&a()};return e&&(document.addEventListener("keydown",i),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",i),document.body.style.overflow=""}},[e,a]),e?r.jsx("div",{ref:l,className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4",onClick:a,children:r.jsxs("div",{className:"relative w-full max-w-4xl",onClick:i=>i.stopPropagation(),children:[r.jsx("button",{onClick:a,className:"absolute -top-12 right-0 text-white hover:text-gray-300","aria-label":"Close video",children:r.jsx("svg",{className:"h-8 w-8",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})}),r.jsx(ge,{src:t,autoPlay:!0,showPlayButton:!1,className:"w-full"})]})}):null));Lr.displayName="VideoModal";const he=v.cva("relative overflow-hidden bg-muted",{variants:{rounded:{none:"",sm:"rounded-sm",md:"rounded-md",lg:"rounded-lg",xl:"rounded-xl","2xl":"rounded-2xl"},aspectRatio:{auto:"",video:"aspect-video",square:"aspect-square","4/3":"aspect-[4/3]","3/2":"aspect-[3/2]"}},defaultVariants:{rounded:"lg",aspectRatio:"video"}}),Ir=o.forwardRef(({className:t,containerClassName:e,rounded:a,aspectRatio:s,apiKey:l,query:i,zoom:c=15,mapType:d="roadmap",title:m="Google Map",...u},g)=>{const h=encodeURIComponent(i),p=l?`https://www.google.com/maps/embed/v1/place?key=${l}&q=${h}&zoom=${c}&maptype=${d}`:`https://maps.google.com/maps?q=${h}&t=&z=${c}&ie=UTF8&iwloc=&output=embed`;return r.jsx("div",{className:n(he({rounded:a,aspectRatio:s}),e),children:r.jsx("iframe",{ref:g,src:p,title:m,allowFullScreen:!0,loading:"lazy",referrerPolicy:"no-referrer-when-downgrade",className:n("h-full w-full border-0",t),...u})})});Ir.displayName="GoogleMapEmbed";const Er=o.forwardRef(({className:t,containerClassName:e,rounded:a,aspectRatio:s,lat:l,lng:i,zoom:c=15,marker:d,title:m="OpenStreetMap",...u},g)=>{const h=Es(l,i,c),p=d?`&marker=${l}%2C${i}`:"",x=`https://www.openstreetmap.org/export/embed.html?bbox=${h.west}%2C${h.south}%2C${h.east}%2C${h.north}&layer=mapnik${p}`;return r.jsx("div",{className:n(he({rounded:a,aspectRatio:s}),e),children:r.jsx("iframe",{ref:g,src:x,title:m,loading:"lazy",className:n("h-full w-full border-0",t),...u})})});Er.displayName="OpenStreetMapEmbed";function Es(t,e,a){const s=.01*(20-a);return{west:e-s,east:e+s,north:t+s,south:t-s}}const Vr=o.forwardRef(({className:t,containerClassName:e,rounded:a,aspectRatio:s,lat:l,lng:i,zoom:c=15,width:d=600,height:m=400,alt:u="Map",...g},h)=>{const p=Math.floor((i+180)/360*Math.pow(2,c)),x=Math.floor((1-Math.log(Math.tan(l*Math.PI/180)+1/Math.cos(l*Math.PI/180))/Math.PI)/2*Math.pow(2,c)),N=`https://tile.openstreetmap.org/${c}/${p}/${x}.png`;return r.jsx("div",{className:n(he({rounded:a,aspectRatio:s}),e),children:r.jsx("img",{ref:h,src:N,alt:u,className:n("h-full w-full object-cover",t),...g})})});Vr.displayName="StaticMap";const Pr=o.forwardRef(({className:t,address:e,phone:a,email:s,hours:l,directionsUrl:i,children:c,...d},m)=>r.jsxs("div",{ref:m,className:n("relative",t),...d,children:[c,r.jsx("div",{className:"absolute bottom-4 left-4 right-4 rounded-lg border bg-card p-4 shadow-lg sm:left-auto sm:right-4 sm:max-w-xs",children:r.jsxs("div",{className:"space-y-3",children:[r.jsxs("div",{className:"flex items-start gap-3",children:[r.jsxs("svg",{className:"mt-0.5 h-5 w-5 shrink-0 text-muted-foreground",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:[r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"}),r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"})]}),r.jsx("p",{className:"text-sm text-foreground",children:e})]}),a&&r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx("svg",{className:"h-5 w-5 shrink-0 text-muted-foreground",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z"})}),r.jsx("a",{href:`tel:${a}`,className:"text-sm text-foreground hover:underline",children:a})]}),s&&r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx("svg",{className:"h-5 w-5 shrink-0 text-muted-foreground",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})}),r.jsx("a",{href:`mailto:${s}`,className:"text-sm text-foreground hover:underline",children:s})]}),l&&r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx("svg",{className:"h-5 w-5 shrink-0 text-muted-foreground",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})}),r.jsx("p",{className:"text-sm text-muted-foreground",children:l})]}),i&&r.jsxs("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:"mt-2 inline-flex w-full items-center justify-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90",children:["Get Directions",r.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})})]}));Pr.displayName="MapWithInfo";const Vs=v.cva("w-full",{variants:{variant:{default:"bg-background",muted:"bg-muted/50",dark:"bg-zinc-900 text-white",gradient:"bg-gradient-to-r from-primary to-primary/80 text-primary-foreground"},size:{sm:"py-12",default:"py-16",lg:"py-24"}},defaultVariants:{variant:"default",size:"default"}}),Dr=o.forwardRef(({className:t,variant:e,size:a,children:s,...l},i)=>r.jsx("section",{ref:i,className:n(Vs({variant:e,size:a}),t),...l,children:r.jsx("div",{className:"container mx-auto px-4",children:s})}));Dr.displayName="AppDownloadSection";const zr=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("grid items-center gap-8 md:grid-cols-2 md:gap-12",t),...e}));zr.displayName="AppDownloadContent";const Hr=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("space-y-6",t),...e}));Hr.displayName="AppDownloadInfo";const Gr=o.forwardRef(({className:t,...e},a)=>r.jsx("h2",{ref:a,className:n("font-heading text-3xl font-bold tracking-tight sm:text-4xl",t),...e}));Gr.displayName="AppDownloadTitle";const _r=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("text-lg opacity-90",t),...e}));_r.displayName="AppDownloadDescription";const Qr=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex flex-wrap gap-4",t),...e}));Qr.displayName="AppDownloadButtons";const qr=v.cva("inline-flex items-center gap-3 rounded-lg px-4 py-3 transition-transform hover:scale-105",{variants:{variant:{apple:"bg-black text-white",google:"bg-black text-white",custom:""}},defaultVariants:{variant:"apple"}}),$r=o.forwardRef(({className:t,variant:e,href:a,...s},l)=>r.jsxs("a",{ref:l,href:a,target:"_blank",rel:"noopener noreferrer",className:n(qr({variant:e}),t),...s,children:[r.jsx("svg",{className:"h-8 w-8",viewBox:"0 0 24 24",fill:"currentColor",children:r.jsx("path",{d:"M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.81-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z"})}),r.jsxs("div",{className:"text-left",children:[r.jsx("div",{className:"text-xs opacity-80",children:"Download on the"}),r.jsx("div",{className:"text-lg font-semibold leading-tight",children:"App Store"})]})]}));$r.displayName="AppStoreBadge";const Or=o.forwardRef(({className:t,href:e,...a},s)=>r.jsxs("a",{ref:s,href:e,target:"_blank",rel:"noopener noreferrer",className:n(qr({variant:"google"}),t),...a,children:[r.jsx("svg",{className:"h-8 w-8",viewBox:"0 0 24 24",fill:"currentColor",children:r.jsx("path",{d:"M3 20.5v-17c0-.59.34-1.11.84-1.35L13.69 12l-9.85 9.85c-.5-.25-.84-.76-.84-1.35m13.81-5.38L6.05 21.34l8.49-8.49 2.27 2.27m3.35-4.31c.34.27.59.69.59 1.19s-.22.9-.57 1.18l-2.29 1.32-2.5-2.5 2.5-2.5 2.27 1.31M6.05 2.66l10.76 6.22-2.27 2.27-8.49-8.49z"})}),r.jsxs("div",{className:"text-left",children:[r.jsx("div",{className:"text-xs opacity-80",children:"Get it on"}),r.jsx("div",{className:"text-lg font-semibold leading-tight",children:"Google Play"})]})]}));Or.displayName="GooglePlayBadge";const Ur=o.forwardRef(({className:t,children:e,...a},s)=>r.jsx("div",{ref:s,className:n("flex justify-center",t),...a,children:e}));Ur.displayName="AppDownloadMockup";const Wr=o.forwardRef(({className:t,screenshot:e,alt:a="App screenshot",children:s,...l},i)=>r.jsxs("div",{ref:i,className:n("relative mx-auto h-[500px] w-[250px] rounded-[2.5rem] border-[8px] border-gray-800 bg-gray-800 shadow-xl",t),...l,children:[r.jsx("div",{className:"absolute left-1/2 top-0 z-10 h-6 w-24 -translate-x-1/2 rounded-b-xl bg-gray-800"}),r.jsx("div",{className:"h-full w-full overflow-hidden rounded-[2rem] bg-white",children:e?r.jsx("img",{src:e,alt:a,className:"h-full w-full object-cover"}):s}),r.jsx("div",{className:"absolute -left-[10px] top-24 h-8 w-1 rounded-l bg-gray-800"}),r.jsx("div",{className:"absolute -left-[10px] top-36 h-14 w-1 rounded-l bg-gray-800"}),r.jsx("div",{className:"absolute -left-[10px] top-52 h-14 w-1 rounded-l bg-gray-800"}),r.jsx("div",{className:"absolute -right-[10px] top-32 h-16 w-1 rounded-r bg-gray-800"})]}));Wr.displayName="PhoneMockup";const Xr=o.forwardRef(({className:t,label:e="Scan to download",children:a,...s},l)=>r.jsxs("div",{ref:l,className:n("text-center",t),...s,children:[r.jsx("div",{className:"mx-auto mb-2 h-32 w-32 rounded-lg border bg-white p-2",children:a}),r.jsx("p",{className:"text-sm text-muted-foreground",children:e})]}));Xr.displayName="AppQRCode";const Ps=v.cva("inline-block bg-clip-text text-transparent",{variants:{gradient:{primary:"bg-gradient-to-r from-primary to-primary/60",secondary:"bg-gradient-to-r from-secondary to-secondary/60",rainbow:"bg-gradient-to-r from-red-500 via-yellow-500 via-green-500 via-blue-500 to-purple-500",sunset:"bg-gradient-to-r from-orange-500 via-pink-500 to-purple-500",ocean:"bg-gradient-to-r from-cyan-500 via-blue-500 to-indigo-500",forest:"bg-gradient-to-r from-green-500 via-emerald-500 to-teal-500",fire:"bg-gradient-to-r from-yellow-500 via-orange-500 to-red-500",aurora:"bg-gradient-to-r from-green-400 via-cyan-500 to-purple-500",neon:"bg-gradient-to-r from-pink-500 via-purple-500 to-cyan-500",gold:"bg-gradient-to-r from-yellow-400 via-amber-500 to-orange-500",silver:"bg-gradient-to-r from-slate-300 via-slate-400 to-slate-500",custom:""},animate:{none:"",shimmer:"animate-gradient-shimmer bg-[length:200%_auto]",pulse:"animate-pulse"}},defaultVariants:{gradient:"primary",animate:"none"}});function ve({className:t,gradient:e,animate:a,customGradient:s,as:l="span",...i}){return r.jsx(l,{className:n(Ps({gradient:e,animate:a}),e==="custom"&&s&&`bg-gradient-to-r ${s}`,t),...i})}ve.displayName="GradientText";function Yr({className:t,level:e=1,...a}){const s={1:"font-heading text-4xl font-bold tracking-tight sm:text-5xl md:text-6xl",2:"font-heading text-3xl font-bold tracking-tight sm:text-4xl",3:"font-heading text-2xl font-bold tracking-tight sm:text-3xl",4:"font-heading text-xl font-bold tracking-tight sm:text-2xl",5:"font-heading text-lg font-bold tracking-tight",6:"font-heading text-base font-bold tracking-tight"},l=`h${e}`;return r.jsx(ve,{as:l,className:n(s[e],t),...a})}Yr.displayName="GradientHeading";const Jr=o.forwardRef(({className:t,gradient:e="from-primary via-purple-500 to-pink-500",borderWidth:a=2,children:s,...l},i)=>r.jsx("div",{ref:i,className:n("relative rounded-lg p-[2px]",`bg-gradient-to-r ${e}`,t),style:{padding:`${a}px`},...l,children:r.jsx("div",{className:"h-full w-full rounded-[calc(0.5rem-2px)] bg-background",children:s})}));Jr.displayName="GradientBorder";const Kr=o.forwardRef(({className:t,gradient:e="from-primary/20 via-purple-500/20 to-pink-500/20",animate:a=!0,...s},l)=>r.jsx("div",{ref:l,className:n("absolute inset-0 -z-10",`bg-gradient-to-r ${e}`,a&&"animate-gradient-shift bg-[length:200%_200%]",t),...s}));Kr.displayName="GradientBackground";const Zr=o.forwardRef(({className:t,gradient:e="from-transparent via-primary to-transparent",...a},s)=>r.jsx("div",{ref:s,className:n("h-px w-full",`bg-gradient-to-r ${e}`,t),...a}));Zr.displayName="GradientDivider";const eo=o.forwardRef(({className:t,color:e="bg-primary/30",size:a="lg",blur:s="xl",...l},i)=>{const c={sm:"h-32 w-32",md:"h-64 w-64",lg:"h-96 w-96",xl:"h-[32rem] w-[32rem]"},d={sm:"blur-2xl",md:"blur-3xl",lg:"blur-[100px]",xl:"blur-[200px]"};return r.jsx("div",{ref:i,className:n("absolute rounded-full",c[a],d[s],e,t),...l})});eo.displayName="GradientBlob";const Ds=v.cva("w-full overflow-hidden",{variants:{variant:{default:"",fade:"[mask-image:linear-gradient(to_right,transparent,black_10%,black_90%,transparent)]"}},defaultVariants:{variant:"fade"}}),to=o.forwardRef(({className:t,variant:e,duration:a=40,direction:s="left",pauseOnHover:l=!0,gap:i=16,children:c,...d},m)=>r.jsx("div",{ref:m,className:n(Ds({variant:e}),t),...d,children:r.jsxs("div",{className:n("flex w-max animate-marquee",l&&"hover:[animation-play-state:paused]"),style:{gap:`${i}px`,animationDuration:`${a}s`,animationDirection:s==="right"?"reverse":"normal"},children:[c,r.jsx("div",{className:"flex",style:{gap:`${i}px`},"aria-hidden":!0,children:c})]})}));to.displayName="Marquee";const ao=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex shrink-0 items-center",t),...e}));ao.displayName="MarqueeItem";const zs=v.cva("h-full overflow-hidden",{variants:{variant:{default:"",fade:"[mask-image:linear-gradient(to_bottom,transparent,black_10%,black_90%,transparent)]"}},defaultVariants:{variant:"fade"}}),ro=o.forwardRef(({className:t,variant:e,duration:a=40,direction:s="up",pauseOnHover:l=!0,gap:i=16,children:c,...d},m)=>r.jsx("div",{ref:m,className:n(zs({variant:e}),t),...d,children:r.jsxs("div",{className:n("flex h-max flex-col animate-marquee-vertical",l&&"hover:[animation-play-state:paused]"),style:{gap:`${i}px`,animationDuration:`${a}s`,animationDirection:s==="down"?"reverse":"normal"},children:[c,r.jsx("div",{className:"flex flex-col",style:{gap:`${i}px`},"aria-hidden":!0,children:c})]})}));ro.displayName="VerticalMarquee";const oo=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("w-80 shrink-0 rounded-xl border bg-card p-6 shadow-sm",t),...e}));oo.displayName="MarqueeTestimonial";const so=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("text-sm text-muted-foreground",t),...e}));so.displayName="MarqueeTestimonialContent";const no=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mt-4 flex items-center gap-3",t),...e}));no.displayName="MarqueeTestimonialAuthor";const lo=o.forwardRef(({className:t,src:e,alt:a,fallback:s,...l},i)=>r.jsx("div",{ref:i,className:n("h-10 w-10 overflow-hidden rounded-full bg-muted",t),...l,children:e?r.jsx("img",{src:e,alt:a||"",className:"h-full w-full object-cover"}):r.jsx("div",{className:"flex h-full w-full items-center justify-center text-sm font-medium text-muted-foreground",children:s||(a==null?void 0:a.charAt(0).toUpperCase())})}));lo.displayName="MarqueeTestimonialAvatar";const io=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("",t),...e}));io.displayName="MarqueeTestimonialInfo";const co=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("text-sm font-medium text-foreground",t),...e}));co.displayName="MarqueeTestimonialName";const mo=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("text-xs text-muted-foreground",t),...e}));mo.displayName="MarqueeTestimonialRole";const Hs=v.cva("tabular-nums",{variants:{size:{sm:"text-2xl font-bold",default:"text-4xl font-bold",lg:"text-5xl font-bold",xl:"text-6xl font-bold"}},defaultVariants:{size:"default"}}),Gs={linear:t=>t,easeOut:t=>1-Math.pow(1-t,3),easeInOut:t=>t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2};function _s(t,e,a,s){const l=t.toFixed(e),[i,c]=l.split("."),d=i.replace(/\B(?=(\d{3})+(?!\d))/g,a);return c?`${d}${s}${c}`:d}const Ne=o.forwardRef(({className:t,size:e,value:a,from:s=0,duration:l=2e3,prefix:i="",suffix:c="",decimals:d=0,separator:m=",",decimalSeparator:u=".",easing:g="easeOut",delay:h=0,triggerOnView:p=!0,onComplete:x,...N},b)=>{const[j,R]=o.useState(s),[F,M]=o.useState(!1),T=o.useRef(null),G=o.useCallback(B=>{T.current=B,typeof b=="function"?b(B):b&&(b.current=B)},[b]),A=o.useCallback(()=>{if(F)return;const B=performance.now(),D=Gs[g],V=K=>{const Z=K-B,_=Math.min(Z/l,1),te=D(_),L=s+(a-s)*te;R(L),_<1?requestAnimationFrame(V):(R(a),M(!0),x==null||x())};setTimeout(()=>{requestAnimationFrame(V)},h)},[a,s,l,g,h,F,x]);return o.useEffect(()=>{if(!p){A();return}const B=T.current;if(!B)return;const D=new IntersectionObserver(V=>{V[0].isIntersecting&&!F&&A()},{threshold:.1});return D.observe(B),()=>D.disconnect()},[A,p,F]),o.useEffect(()=>{M(!1),R(s)},[a,s]),r.jsxs("span",{ref:G,className:n(Hs({size:e}),t),...N,children:[i,_s(j,d,m,u),c]})});Ne.displayName="AnimatedCounter";const fo=o.forwardRef(({label:t,labelClassName:e,className:a,...s},l)=>r.jsxs("div",{ref:l,className:n("text-center",a),children:[r.jsx(Ne,{...s}),r.jsx("p",{className:n("mt-2 text-sm text-muted-foreground",e),children:t})]}));fo.displayName="CounterWithLabel";const uo=o.forwardRef(({className:t,columns:e=4,...a},s)=>{const l={2:"grid-cols-2",3:"grid-cols-2 lg:grid-cols-3",4:"grid-cols-2 lg:grid-cols-4"};return r.jsx("div",{ref:s,className:n("grid gap-8",l[e],t),...a})});uo.displayName="CounterGrid";const xo=o.forwardRef(({className:t,targetDate:e,onComplete:a,labels:s={days:"Days",hours:"Hours",minutes:"Minutes",seconds:"Seconds"},size:l="default",...i},c)=>{const[d,m]=o.useState({days:0,hours:0,minutes:0,seconds:0});o.useEffect(()=>{const g=()=>{const p=e.getTime()-new Date().getTime();return p<=0?(a==null||a(),{days:0,hours:0,minutes:0,seconds:0}):{days:Math.floor(p/864e5),hours:Math.floor(p/36e5%24),minutes:Math.floor(p/1e3/60%60),seconds:Math.floor(p/1e3%60)}};m(g());const h=setInterval(()=>{m(g())},1e3);return()=>clearInterval(h)},[e,a]);const u={sm:{value:"text-2xl font-bold",label:"text-xs"},default:{value:"text-4xl font-bold",label:"text-sm"},lg:{value:"text-5xl font-bold",label:"text-base"}};return r.jsx("div",{ref:c,className:n("flex gap-4 md:gap-8",t),...i,children:Object.entries(d).map(([g,h])=>r.jsxs("div",{className:"text-center",children:[r.jsx("div",{className:n("tabular-nums",u[l].value),children:String(h).padStart(2,"0")}),r.jsx("div",{className:n("text-muted-foreground",u[l].label),children:s[g]})]},g))})});xo.displayName="CountdownTimer";const Qs=v.cva("fixed z-50 w-full p-4 shadow-lg transition-transform duration-300",{variants:{position:{bottom:"bottom-0 left-0",top:"top-0 left-0","bottom-left":"bottom-4 left-4 max-w-md rounded-lg","bottom-right":"bottom-4 right-4 max-w-md rounded-lg"},variant:{default:"border-t bg-background",dark:"bg-zinc-900 text-white",card:"border bg-card"}},defaultVariants:{position:"bottom",variant:"default"}}),po=o.forwardRef(({className:t,position:e,variant:a,isVisible:s=!0,children:l,...i},c)=>s?r.jsx("div",{ref:c,className:n(Qs({position:e,variant:a}),t),role:"dialog","aria-label":"Cookie consent",...i,children:r.jsx("div",{className:"container mx-auto",children:l})}):null);po.displayName="CookieBanner";const go=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex flex-col gap-4 md:flex-row md:items-center md:justify-between",t),...e}));go.displayName="CookieBannerContent";const ho=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex-1",t),...e}));ho.displayName="CookieBannerText";const vo=o.forwardRef(({className:t,...e},a)=>r.jsx("h3",{ref:a,className:n("font-heading text-lg font-semibold",t),...e}));vo.displayName="CookieBannerTitle";const No=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mt-1 text-sm text-muted-foreground",t),...e}));No.displayName="CookieBannerDescription";const wo=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("flex flex-wrap items-center gap-2",t),...e}));wo.displayName="CookieBannerActions";const yo=o.forwardRef(({className:t,...e},a)=>r.jsx("a",{ref:a,className:n("text-sm text-primary underline-offset-4 hover:underline",t),...e}));yo.displayName="CookieBannerLink";const bo=o.forwardRef(({className:t,isOpen:e,onClose:a,onSave:s,children:l,...i},c)=>(o.useEffect(()=>{const d=m=>{m.key==="Escape"&&a()};return e&&(document.addEventListener("keydown",d),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",d),document.body.style.overflow=""}},[e,a]),e?r.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",onClick:a,children:r.jsx("div",{ref:c,className:n("w-full max-w-lg rounded-lg bg-background p-6 shadow-xl",t),onClick:d=>d.stopPropagation(),role:"dialog","aria-label":"Cookie preferences",...i,children:l})}):null));bo.displayName="CookiePreferences";const jo=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mb-6",t),...e}));jo.displayName="CookiePreferencesHeader";const Co=o.forwardRef(({className:t,...e},a)=>r.jsx("h2",{ref:a,className:n("font-heading text-xl font-semibold",t),...e}));Co.displayName="CookiePreferencesTitle";const Ro=o.forwardRef(({className:t,...e},a)=>r.jsx("p",{ref:a,className:n("mt-2 text-sm text-muted-foreground",t),...e}));Ro.displayName="CookiePreferencesDescription";const So=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("space-y-4",t),...e}));So.displayName="CookiePreferencesList";const ko=o.forwardRef(({className:t,name:e,description:a,required:s=!1,checked:l=!1,onChange:i,...c},d)=>{const m=o.useId();return r.jsxs("div",{ref:d,className:n("flex items-start justify-between gap-4 rounded-lg border p-4",t),...c,children:[r.jsxs("div",{className:"flex-1",children:[r.jsxs("label",{htmlFor:m,className:"font-medium",children:[e,s&&r.jsx("span",{className:"ml-2 text-xs text-muted-foreground",children:"(Required)"})]}),r.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:a})]}),r.jsx("div",{className:"shrink-0",children:r.jsx("button",{id:m,type:"button",role:"switch","aria-checked":s||l,disabled:s,onClick:()=>i==null?void 0:i(!l),className:n("relative inline-flex h-6 w-11 items-center rounded-full transition-colors",s||l?"bg-primary":"bg-muted",s&&"cursor-not-allowed opacity-50"),children:r.jsx("span",{className:n("inline-block h-4 w-4 transform rounded-full bg-white transition-transform",s||l?"translate-x-6":"translate-x-1")})})})]})});ko.displayName="CookiePreferenceItem";const To=o.forwardRef(({className:t,...e},a)=>r.jsx("div",{ref:a,className:n("mt-6 flex justify-end gap-2",t),...e}));To.displayName="CookiePreferencesFooter";const Ao=`
|
|
2
|
+
attribute vec2 uv;
|
|
3
|
+
attribute vec2 position;
|
|
4
|
+
varying vec2 vUv;
|
|
5
|
+
void main() {
|
|
6
|
+
vUv = uv;
|
|
7
|
+
gl_Position = vec4(position, 0, 1);
|
|
8
|
+
}
|
|
9
|
+
`,Bo=`
|
|
10
|
+
precision highp float;
|
|
11
|
+
|
|
12
|
+
uniform float uTime;
|
|
13
|
+
uniform vec2 uResolution;
|
|
14
|
+
uniform vec2 uMouse;
|
|
15
|
+
uniform float uIntensity;
|
|
16
|
+
uniform vec3 uColor1;
|
|
17
|
+
uniform vec3 uColor2;
|
|
18
|
+
uniform vec3 uColor3;
|
|
19
|
+
|
|
20
|
+
varying vec2 vUv;
|
|
21
|
+
|
|
22
|
+
void main() {
|
|
23
|
+
vec2 uv = vUv;
|
|
24
|
+
|
|
25
|
+
// Animated gradient
|
|
26
|
+
float t = uTime * 0.3;
|
|
27
|
+
float noise = sin(uv.x * 3.0 + t) * sin(uv.y * 3.0 + t) * 0.5 + 0.5;
|
|
28
|
+
|
|
29
|
+
vec3 color = mix(uColor1, uColor2, uv.x + sin(t) * 0.2);
|
|
30
|
+
color = mix(color, uColor3, uv.y + cos(t) * 0.2);
|
|
31
|
+
color = mix(color, uColor1, noise * uIntensity);
|
|
32
|
+
|
|
33
|
+
gl_FragColor = vec4(color, 1.0);
|
|
34
|
+
}
|
|
35
|
+
`,Fo=`
|
|
36
|
+
precision highp float;
|
|
37
|
+
|
|
38
|
+
uniform float uTime;
|
|
39
|
+
uniform vec2 uResolution;
|
|
40
|
+
uniform vec2 uMouse;
|
|
41
|
+
uniform float uIntensity;
|
|
42
|
+
uniform vec3 uColor1;
|
|
43
|
+
uniform vec3 uColor2;
|
|
44
|
+
uniform vec3 uColor3;
|
|
45
|
+
|
|
46
|
+
varying vec2 vUv;
|
|
47
|
+
|
|
48
|
+
// Simplex noise function
|
|
49
|
+
vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
|
|
50
|
+
vec2 mod289(vec2 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
|
|
51
|
+
vec3 permute(vec3 x) { return mod289(((x*34.0)+1.0)*x); }
|
|
52
|
+
|
|
53
|
+
float snoise(vec2 v) {
|
|
54
|
+
const vec4 C = vec4(0.211324865405187, 0.366025403784439, -0.577350269189626, 0.024390243902439);
|
|
55
|
+
vec2 i = floor(v + dot(v, C.yy));
|
|
56
|
+
vec2 x0 = v - i + dot(i, C.xx);
|
|
57
|
+
vec2 i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
|
|
58
|
+
vec4 x12 = x0.xyxy + C.xxzz;
|
|
59
|
+
x12.xy -= i1;
|
|
60
|
+
i = mod289(i);
|
|
61
|
+
vec3 p = permute(permute(i.y + vec3(0.0, i1.y, 1.0)) + i.x + vec3(0.0, i1.x, 1.0));
|
|
62
|
+
vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);
|
|
63
|
+
m = m*m;
|
|
64
|
+
m = m*m;
|
|
65
|
+
vec3 x = 2.0 * fract(p * C.www) - 1.0;
|
|
66
|
+
vec3 h = abs(x) - 0.5;
|
|
67
|
+
vec3 ox = floor(x + 0.5);
|
|
68
|
+
vec3 a0 = x - ox;
|
|
69
|
+
m *= 1.79284291400159 - 0.85373472095314 * (a0*a0 + h*h);
|
|
70
|
+
vec3 g;
|
|
71
|
+
g.x = a0.x * x0.x + h.x * x0.y;
|
|
72
|
+
g.yz = a0.yz * x12.xz + h.yz * x12.yw;
|
|
73
|
+
return 130.0 * dot(m, g);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
void main() {
|
|
77
|
+
vec2 uv = vUv;
|
|
78
|
+
float t = uTime * 0.2;
|
|
79
|
+
|
|
80
|
+
// Multiple layers of noise for aurora effect
|
|
81
|
+
float n1 = snoise(vec2(uv.x * 2.0, uv.y * 0.5 + t));
|
|
82
|
+
float n2 = snoise(vec2(uv.x * 4.0 + t * 0.5, uv.y * 1.0));
|
|
83
|
+
float n3 = snoise(vec2(uv.x * 1.0, uv.y * 2.0 - t * 0.3));
|
|
84
|
+
|
|
85
|
+
float aurora = (n1 + n2 * 0.5 + n3 * 0.25) * 0.5 + 0.5;
|
|
86
|
+
aurora = pow(aurora, 2.0) * uIntensity;
|
|
87
|
+
|
|
88
|
+
// Vertical fade
|
|
89
|
+
float fade = smoothstep(0.0, 0.6, uv.y) * smoothstep(1.0, 0.4, uv.y);
|
|
90
|
+
aurora *= fade;
|
|
91
|
+
|
|
92
|
+
// Color mixing
|
|
93
|
+
vec3 color = mix(uColor1, uColor2, aurora);
|
|
94
|
+
color = mix(color, uColor3, pow(aurora, 2.0));
|
|
95
|
+
|
|
96
|
+
// Add glow
|
|
97
|
+
color += uColor2 * aurora * 0.5;
|
|
98
|
+
|
|
99
|
+
gl_FragColor = vec4(color, aurora * 0.8 + 0.2);
|
|
100
|
+
}
|
|
101
|
+
`,Mo=`
|
|
102
|
+
precision highp float;
|
|
103
|
+
|
|
104
|
+
uniform float uTime;
|
|
105
|
+
uniform vec2 uResolution;
|
|
106
|
+
uniform vec2 uMouse;
|
|
107
|
+
uniform float uIntensity;
|
|
108
|
+
uniform vec3 uColor1;
|
|
109
|
+
uniform vec3 uColor2;
|
|
110
|
+
uniform vec3 uColor3;
|
|
111
|
+
|
|
112
|
+
varying vec2 vUv;
|
|
113
|
+
|
|
114
|
+
float sdCircle(vec2 p, float r) {
|
|
115
|
+
return length(p) - r;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
void main() {
|
|
119
|
+
vec2 uv = vUv * 2.0 - 1.0;
|
|
120
|
+
uv.x *= uResolution.x / uResolution.y;
|
|
121
|
+
|
|
122
|
+
float t = uTime * 0.5;
|
|
123
|
+
|
|
124
|
+
// Morphing blob
|
|
125
|
+
float blob = 0.0;
|
|
126
|
+
for (int i = 0; i < 5; i++) {
|
|
127
|
+
float fi = float(i);
|
|
128
|
+
vec2 offset = vec2(
|
|
129
|
+
sin(t + fi * 1.2) * 0.3,
|
|
130
|
+
cos(t + fi * 0.8) * 0.3
|
|
131
|
+
);
|
|
132
|
+
float size = 0.3 + sin(t + fi) * 0.1;
|
|
133
|
+
blob += smoothstep(size, size - 0.1, length(uv - offset));
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
blob = clamp(blob, 0.0, 1.0) * uIntensity;
|
|
137
|
+
|
|
138
|
+
// Color gradient
|
|
139
|
+
vec3 color = mix(uColor1, uColor2, blob);
|
|
140
|
+
color = mix(color, uColor3, pow(blob, 2.0));
|
|
141
|
+
|
|
142
|
+
gl_FragColor = vec4(color, blob);
|
|
143
|
+
}
|
|
144
|
+
`,Lo=`
|
|
145
|
+
precision highp float;
|
|
146
|
+
|
|
147
|
+
uniform float uTime;
|
|
148
|
+
uniform vec2 uResolution;
|
|
149
|
+
uniform float uIntensity;
|
|
150
|
+
uniform vec3 uColor1;
|
|
151
|
+
|
|
152
|
+
varying vec2 vUv;
|
|
153
|
+
|
|
154
|
+
float random(vec2 st) {
|
|
155
|
+
return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
void main() {
|
|
159
|
+
vec2 uv = vUv;
|
|
160
|
+
|
|
161
|
+
// Animated noise
|
|
162
|
+
float noise = random(uv + uTime * 0.1);
|
|
163
|
+
noise = mix(0.5, noise, uIntensity);
|
|
164
|
+
|
|
165
|
+
vec3 color = uColor1 * noise;
|
|
166
|
+
|
|
167
|
+
gl_FragColor = vec4(color, uIntensity * 0.5);
|
|
168
|
+
}
|
|
169
|
+
`,Io=`
|
|
170
|
+
precision highp float;
|
|
171
|
+
|
|
172
|
+
uniform float uTime;
|
|
173
|
+
uniform vec2 uResolution;
|
|
174
|
+
uniform vec2 uMouse;
|
|
175
|
+
uniform float uIntensity;
|
|
176
|
+
uniform vec3 uColor1;
|
|
177
|
+
uniform vec3 uColor2;
|
|
178
|
+
|
|
179
|
+
varying vec2 vUv;
|
|
180
|
+
|
|
181
|
+
void main() {
|
|
182
|
+
vec2 uv = vUv;
|
|
183
|
+
float t = uTime * 0.5;
|
|
184
|
+
|
|
185
|
+
// Wave distortion
|
|
186
|
+
float wave1 = sin(uv.x * 10.0 + t) * 0.1;
|
|
187
|
+
float wave2 = sin(uv.x * 5.0 - t * 0.5) * 0.15;
|
|
188
|
+
float wave3 = cos(uv.x * 15.0 + t * 0.7) * 0.05;
|
|
189
|
+
|
|
190
|
+
float y = uv.y + (wave1 + wave2 + wave3) * uIntensity;
|
|
191
|
+
|
|
192
|
+
// Gradient with waves
|
|
193
|
+
vec3 color = mix(uColor1, uColor2, smoothstep(0.3, 0.7, y));
|
|
194
|
+
|
|
195
|
+
gl_FragColor = vec4(color, 1.0);
|
|
196
|
+
}
|
|
197
|
+
`,Eo=`
|
|
198
|
+
precision highp float;
|
|
199
|
+
|
|
200
|
+
uniform float uTime;
|
|
201
|
+
uniform vec2 uResolution;
|
|
202
|
+
uniform vec2 uMouse;
|
|
203
|
+
uniform float uIntensity;
|
|
204
|
+
uniform vec3 uColor1;
|
|
205
|
+
uniform vec3 uColor2;
|
|
206
|
+
uniform vec3 uColor3;
|
|
207
|
+
uniform vec3 uColor4;
|
|
208
|
+
|
|
209
|
+
varying vec2 vUv;
|
|
210
|
+
|
|
211
|
+
// Simplex noise
|
|
212
|
+
vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
|
|
213
|
+
vec2 mod289(vec2 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
|
|
214
|
+
vec3 permute(vec3 x) { return mod289(((x*34.0)+1.0)*x); }
|
|
215
|
+
|
|
216
|
+
float snoise(vec2 v) {
|
|
217
|
+
const vec4 C = vec4(0.211324865405187, 0.366025403784439, -0.577350269189626, 0.024390243902439);
|
|
218
|
+
vec2 i = floor(v + dot(v, C.yy));
|
|
219
|
+
vec2 x0 = v - i + dot(i, C.xx);
|
|
220
|
+
vec2 i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
|
|
221
|
+
vec4 x12 = x0.xyxy + C.xxzz;
|
|
222
|
+
x12.xy -= i1;
|
|
223
|
+
i = mod289(i);
|
|
224
|
+
vec3 p = permute(permute(i.y + vec3(0.0, i1.y, 1.0)) + i.x + vec3(0.0, i1.x, 1.0));
|
|
225
|
+
vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x12.xy,x12.xy), dot(x12.zw,x12.zw)), 0.0);
|
|
226
|
+
m = m*m;
|
|
227
|
+
m = m*m;
|
|
228
|
+
vec3 x = 2.0 * fract(p * C.www) - 1.0;
|
|
229
|
+
vec3 h = abs(x) - 0.5;
|
|
230
|
+
vec3 ox = floor(x + 0.5);
|
|
231
|
+
vec3 a0 = x - ox;
|
|
232
|
+
m *= 1.79284291400159 - 0.85373472095314 * (a0*a0 + h*h);
|
|
233
|
+
vec3 g;
|
|
234
|
+
g.x = a0.x * x0.x + h.x * x0.y;
|
|
235
|
+
g.yz = a0.yz * x12.xz + h.yz * x12.yw;
|
|
236
|
+
return 130.0 * dot(m, g);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
void main() {
|
|
240
|
+
vec2 uv = vUv;
|
|
241
|
+
float t = uTime * 0.15;
|
|
242
|
+
|
|
243
|
+
// Animated mesh gradient using noise
|
|
244
|
+
float n1 = snoise(uv * 2.0 + t) * 0.5 + 0.5;
|
|
245
|
+
float n2 = snoise(uv * 3.0 - t * 0.5) * 0.5 + 0.5;
|
|
246
|
+
float n3 = snoise(uv * 1.5 + vec2(t, -t)) * 0.5 + 0.5;
|
|
247
|
+
|
|
248
|
+
// Four-corner gradient with noise displacement
|
|
249
|
+
vec3 tl = uColor1;
|
|
250
|
+
vec3 tr = uColor2;
|
|
251
|
+
vec3 bl = uColor3;
|
|
252
|
+
vec3 br = uColor4;
|
|
253
|
+
|
|
254
|
+
vec2 nuv = uv + vec2(n1 - 0.5, n2 - 0.5) * 0.2 * uIntensity;
|
|
255
|
+
nuv = clamp(nuv, 0.0, 1.0);
|
|
256
|
+
|
|
257
|
+
vec3 top = mix(tl, tr, nuv.x);
|
|
258
|
+
vec3 bottom = mix(bl, br, nuv.x);
|
|
259
|
+
vec3 color = mix(bottom, top, nuv.y);
|
|
260
|
+
|
|
261
|
+
// Add subtle glow
|
|
262
|
+
color += (uColor1 + uColor2) * 0.1 * n3 * uIntensity;
|
|
263
|
+
|
|
264
|
+
gl_FragColor = vec4(color, 1.0);
|
|
265
|
+
}
|
|
266
|
+
`,Vo=`
|
|
267
|
+
precision highp float;
|
|
268
|
+
|
|
269
|
+
uniform float uTime;
|
|
270
|
+
uniform vec2 uResolution;
|
|
271
|
+
uniform float uIntensity;
|
|
272
|
+
uniform vec3 uColor1;
|
|
273
|
+
uniform vec3 uColor2;
|
|
274
|
+
|
|
275
|
+
varying vec2 vUv;
|
|
276
|
+
|
|
277
|
+
float random(vec2 st) {
|
|
278
|
+
return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
void main() {
|
|
282
|
+
vec2 uv = vUv;
|
|
283
|
+
float t = uTime * 0.2;
|
|
284
|
+
|
|
285
|
+
vec3 color = vec3(0.0);
|
|
286
|
+
|
|
287
|
+
// Multiple particle layers
|
|
288
|
+
for (int i = 0; i < 3; i++) {
|
|
289
|
+
float fi = float(i);
|
|
290
|
+
vec2 grid = uv * (20.0 + fi * 10.0);
|
|
291
|
+
vec2 id = floor(grid);
|
|
292
|
+
vec2 gv = fract(grid) - 0.5;
|
|
293
|
+
|
|
294
|
+
float n = random(id + fi);
|
|
295
|
+
float size = n * 0.3 + 0.1;
|
|
296
|
+
|
|
297
|
+
// Animated position
|
|
298
|
+
vec2 offset = vec2(
|
|
299
|
+
sin(t + n * 6.28) * 0.2,
|
|
300
|
+
cos(t * 0.7 + n * 6.28) * 0.3 - t * 0.5
|
|
301
|
+
);
|
|
302
|
+
offset.y = mod(offset.y, 1.0) - 0.5;
|
|
303
|
+
|
|
304
|
+
float d = length(gv - offset);
|
|
305
|
+
float particle = smoothstep(size, size - 0.05, d);
|
|
306
|
+
|
|
307
|
+
vec3 pColor = mix(uColor1, uColor2, n);
|
|
308
|
+
color += pColor * particle * (1.0 - fi * 0.2);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
color *= uIntensity;
|
|
312
|
+
|
|
313
|
+
gl_FragColor = vec4(color, length(color) * 0.5);
|
|
314
|
+
}
|
|
315
|
+
`;function q(t){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?[parseInt(e[1],16)/255,parseInt(e[2],16)/255,parseInt(e[3],16)/255]:[1,1,1]}const we={gradient:Bo,aurora:Fo,blob:Mo,noise:Lo,wave:Io,mesh:Eo,particles:Vo},ye={gradient:["#ff0080","#7928ca","#0070f3"],aurora:["#00ff87","#60efff","#7b2dff"],blob:["#ff6b6b","#feca57","#48dbfb"],noise:["#ffffff"],wave:["#667eea","#764ba2"],mesh:["#f093fb","#f5576c","#4facfe","#00f2fe"],particles:["#ffffff","#60efff"]},P=o.forwardRef(({className:t,preset:e="gradient",fragmentShader:a,vertexShader:s,speed:l=1,interactive:i=!0,intensity:c=.8,colors:d,color4:m,paused:u=!1,pixelRatio:g,quality:h="medium",onReady:p,onFrame:x,...N},b)=>{const j=o.useRef(null),R=o.useRef(null),F=o.useRef(null),M=o.useRef(0),T=o.useRef({x:.5,y:.5}),G=o.useRef(0),A=d||ye[e],B=q(A[0]||"#ffffff"),D=q(A[1]||A[0]||"#ffffff"),V=q(A[2]||A[0]||"#ffffff"),K=q(m||A[3]||A[0]||"#ffffff"),Z=a||we[e],_=s||Ao,te=h==="low"?.5:h==="high"?1:.75,L=(g||(typeof window<"u"?window.devicePixelRatio:1))*te;return o.useEffect(()=>{const E=j.current,z=R.current;if(!E||!z)return;let f=null,S=null,U=null,W=null;const de=()=>{if(f=z.getContext("webgl",{alpha:!0,antialias:!1,premultipliedAlpha:!1}),!f){console.warn("WebGL not supported");return}const k=f.createShader(f.VERTEX_SHADER);if(f.shaderSource(k,_),f.compileShader(k),!f.getShaderParameter(k,f.COMPILE_STATUS)){console.error("Vertex shader error:",f.getShaderInfoLog(k));return}const w=f.createShader(f.FRAGMENT_SHADER);if(f.shaderSource(w,Z),f.compileShader(w),!f.getShaderParameter(w,f.COMPILE_STATUS)){console.error("Fragment shader error:",f.getShaderInfoLog(w));return}if(S=f.createProgram(),f.attachShader(S,k),f.attachShader(S,w),f.linkProgram(S),!f.getProgramParameter(S,f.LINK_STATUS)){console.error("Program link error:",f.getProgramInfoLog(S));return}f.useProgram(S);const X=new Float32Array([-1,-1,1,-1,-1,1,1,1]),C=new Float32Array([0,0,1,0,0,1,1,1]);U=f.createBuffer(),f.bindBuffer(f.ARRAY_BUFFER,U),f.bufferData(f.ARRAY_BUFFER,X,f.STATIC_DRAW);const H=f.getAttribLocation(S,"position");f.enableVertexAttribArray(H),f.vertexAttribPointer(H,2,f.FLOAT,!1,0,0),W=f.createBuffer(),f.bindBuffer(f.ARRAY_BUFFER,W),f.bufferData(f.ARRAY_BUFFER,C,f.STATIC_DRAW);const oe=f.getAttribLocation(S,"uv");f.enableVertexAttribArray(oe),f.vertexAttribPointer(oe,2,f.FLOAT,!1,0,0),f.enable(f.BLEND),f.blendFunc(f.SRC_ALPHA,f.ONE_MINUS_SRC_ALPHA),F.current={gl:f,program:S},p==null||p()},$=()=>{if(!z||!f)return;const k=E.getBoundingClientRect(),w=Math.floor(k.width*L),X=Math.floor(k.height*L);z.width=w,z.height=X,f.viewport(0,0,w,X)},I=k=>{if(!f||!S||u){M.current=requestAnimationFrame(I);return}G.current=k*.001*l,x==null||x(G.current),f.useProgram(S);const w=(X,C)=>{const H=f.getUniformLocation(S,X);H&&(Array.isArray(C)?C.length===2?f.uniform2f(H,C[0],C[1]):C.length===3?f.uniform3f(H,C[0],C[1],C[2]):C.length===4&&f.uniform4f(H,C[0],C[1],C[2],C[3]):f.uniform1f(H,C))};w("uTime",G.current),w("uResolution",[z.width,z.height]),w("uMouse",[T.current.x,T.current.y]),w("uIntensity",c),w("uColor1",B),w("uColor2",D),w("uColor3",V),w("uColor4",K),f.drawArrays(f.TRIANGLE_STRIP,0,4),M.current=requestAnimationFrame(I)},ae=k=>{if(!i)return;const w=E.getBoundingClientRect();T.current={x:(k.clientX-w.left)/w.width,y:1-(k.clientY-w.top)/w.height}};return de(),$(),M.current=requestAnimationFrame(I),window.addEventListener("resize",$),i&&E.addEventListener("mousemove",ae),()=>{cancelAnimationFrame(M.current),window.removeEventListener("resize",$),i&&E.removeEventListener("mousemove",ae),f&&(U&&f.deleteBuffer(U),W&&f.deleteBuffer(W),S&&f.deleteProgram(S))}},[Z,_,l,i,c,u,L,B,D,V,K,p,x]),r.jsx("div",{ref:E=>{j.current=E,typeof b=="function"?b(E):b&&(b.current=E)},className:n("relative h-full w-full overflow-hidden",t),...N,children:r.jsx("canvas",{ref:R,className:"absolute inset-0 h-full w-full",style:{display:"block"}})})});P.displayName="ShaderCanvasOGL";const qs=`
|
|
316
|
+
varying vec2 vUv;
|
|
317
|
+
void main() {
|
|
318
|
+
vUv = uv;
|
|
319
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
320
|
+
}
|
|
321
|
+
`,Po=o.forwardRef(({className:t,preset:e="gradient",fragmentShader:a,vertexShader:s,speed:l=1,interactive:i=!0,intensity:c=.8,colors:d,color4:m,paused:u=!1,pixelRatio:g,quality:h="medium",mode3D:p=!1,onReady:x,onFrame:N,...b},j)=>{const R=o.useRef(null),F=o.useRef(null),M=o.useRef(null),T=o.useRef(null),G=o.useRef(null),A=o.useRef(null),B=o.useRef(null),D=o.useRef(0),V=o.useRef({x:.5,y:.5}),[K,Z]=o.useState(!1),[_,te]=o.useState(null),L=d||ye[e],E=q(L[0]||"#ffffff"),z=q(L[1]||L[0]||"#ffffff"),f=q(L[2]||L[0]||"#ffffff"),S=q(m||L[3]||L[0]||"#ffffff"),U=a||we[e],W=s||qs,de=h==="low"?.5:h==="high"?1:.75,$=(g||(typeof window<"u"?window.devicePixelRatio:1))*de;return o.useEffect(()=>{const I=R.current,ae=F.current;if(!I||!ae)return;let k=null,w=!0;return(async()=>{let C;try{C=await import("three")}catch{w&&te("three.js not installed. Install with: npm install three");return}if(!w)return;const{WebGLRenderer:H,Scene:oe,OrthographicCamera:Uo,PerspectiveCamera:Wo,PlaneGeometry:Xo,Mesh:Yo,ShaderMaterial:Jo,Vector2:je,Vector3:se,Clock:Ko}=C,re=new H({canvas:ae,alpha:!0,antialias:!1,premultipliedAlpha:!1});re.setPixelRatio($),M.current=re;const ce=new oe;T.current=ce;const ee=p?new Wo(75,1,.1,100):new Uo(-1,1,1,-1,.1,100);ee.position.z=1,G.current=ee;const Y=new Jo({vertexShader:W,fragmentShader:U,uniforms:{uTime:{value:0},uResolution:{value:new je(1,1)},uMouse:{value:new je(.5,.5)},uIntensity:{value:c},uColor1:{value:new se(...E)},uColor2:{value:new se(...z)},uColor3:{value:new se(...f)},uColor4:{value:new se(...S)}},transparent:!0});A.current=Y;const Ce=new Xo(2,2),Zo=new Yo(Ce,Y);ce.add(Zo);const Re=new Ko;B.current=Re;const me=()=>{if(!w)return;const Q=I.getBoundingClientRect(),O=Q.width,fe=Q.height;re.setSize(O,fe),Y.uniforms.uResolution.value.set(O*$,fe*$),p&&ee.isPerspectiveCamera&&(ee.aspect=O/fe,ee.updateProjectionMatrix())},Se=()=>{if(w){if(!u){const Q=Re.getElapsedTime()*l;N==null||N(Q),Y.uniforms.uTime.value=Q,Y.uniforms.uIntensity.value=c,i&&Y.uniforms.uMouse.value.set(V.current.x,V.current.y),re.render(ce,ee)}D.current=requestAnimationFrame(Se)}},ke=Q=>{if(!i||!w)return;const O=I.getBoundingClientRect();V.current={x:(Q.clientX-O.left)/O.width,y:1-(Q.clientY-O.top)/O.height}};me(),Se(),Z(!0),x==null||x(),window.addEventListener("resize",me),i&&I.addEventListener("mousemove",ke),k=()=>{cancelAnimationFrame(D.current),window.removeEventListener("resize",me),i&&I.removeEventListener("mousemove",ke),re.dispose(),Ce.dispose(),Y.dispose()}})(),()=>{w=!1,k==null||k()}},[U,W,l,i,c,u,$,p,E,z,f,S,x,N]),o.useEffect(()=>{A.current&&(A.current.uniforms.uIntensity.value=c)},[c]),_?r.jsx("div",{ref:j,className:n("relative flex h-full w-full items-center justify-center bg-muted text-muted-foreground",t),...b,children:r.jsx("p",{className:"text-sm",children:_})}):r.jsxs("div",{ref:I=>{R.current=I,typeof j=="function"?j(I):j&&(j.current=I)},className:n("relative h-full w-full overflow-hidden",t),...b,children:[r.jsx("canvas",{ref:F,className:"absolute inset-0 h-full w-full",style:{display:"block"}}),!K&&!_&&r.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-muted",children:r.jsx("div",{className:"h-6 w-6 animate-spin rounded-full border-2 border-primary border-t-transparent"})})]})});Po.displayName="ShaderCanvasR3F";const be=o.forwardRef(({className:t,shader:e,children:a,overlay:s=0,overlayColor:l="black",fixed:i=!1,...c},d)=>r.jsxs("div",{ref:d,className:n("relative",i?"fixed inset-0":"h-full w-full",t),children:[r.jsx(P,{preset:e,className:"absolute inset-0 -z-10",...c}),s>0&&r.jsx("div",{className:"absolute inset-0 -z-10",style:{backgroundColor:l,opacity:s}}),a&&r.jsx("div",{className:"relative z-10 h-full w-full",children:a})]}));be.displayName="ShaderBackground";const Do=o.forwardRef(({className:t,colors:e=["#ff0080","#7928ca","#0070f3"],...a},s)=>r.jsx(P,{ref:s,preset:"gradient",colors:e,className:t,...a}));Do.displayName="ShaderGradient";const zo=o.forwardRef(({className:t,colors:e=["#00ff87","#60efff","#7b2dff"],...a},s)=>r.jsx(P,{ref:s,preset:"aurora",colors:e,className:t,...a}));zo.displayName="ShaderAurora";const Ho=o.forwardRef(({className:t,colors:e=["#ff6b6b","#feca57","#48dbfb"],...a},s)=>r.jsx(P,{ref:s,preset:"blob",colors:e,className:t,...a}));Ho.displayName="ShaderBlob";const Go=o.forwardRef(({className:t,color:e="#ffffff",intensity:a=.15,...s},l)=>r.jsx(P,{ref:l,preset:"noise",colors:[e],intensity:a,className:t,...s}));Go.displayName="ShaderNoise";const _o=o.forwardRef(({className:t,colors:e=["#667eea","#764ba2"],...a},s)=>r.jsx(P,{ref:s,preset:"wave",colors:e,className:t,...a}));_o.displayName="ShaderWave";const Qo=o.forwardRef(({className:t,colors:e=["#f093fb","#f5576c","#4facfe","#00f2fe"],...a},s)=>r.jsx(P,{ref:s,preset:"mesh",colors:e.slice(0,3),color4:e[3],className:t,...a}));Qo.displayName="ShaderMesh";const qo=o.forwardRef(({className:t,colors:e=["#ffffff","#60efff"],...a},s)=>r.jsx(P,{ref:s,preset:"particles",colors:e,className:t,...a}));qo.displayName="ShaderParticles";const $o=o.forwardRef(({className:t,shader:e="gradient",title:a,subtitle:s,size:l="default",align:i="center",children:c,overlay:d=.3,...m},u)=>{const g={sm:"min-h-[40vh] py-16",default:"min-h-[60vh] py-20",lg:"min-h-[80vh] py-24",full:"min-h-screen py-24"},h={left:"items-start text-left",center:"items-center text-center",right:"items-end text-right"};return r.jsx(be,{ref:u,shader:e,overlay:d,className:n("flex flex-col justify-center",g[l],h[i],t),...m,children:r.jsxs("div",{className:n("container mx-auto px-4",i==="center"&&"flex flex-col items-center"),children:[a&&r.jsx("h1",{className:"max-w-4xl text-4xl font-bold tracking-tight text-white sm:text-5xl md:text-6xl lg:text-7xl",children:a}),s&&r.jsx("p",{className:"mt-6 max-w-2xl text-lg text-white/80 sm:text-xl md:text-2xl",children:s}),c]})})});$o.displayName="ShaderHero";const Oo=o.forwardRef(({className:t,shader:e="mesh",children:a,padding:s="default",rounded:l="xl",overlay:i=.5,intensity:c=.6,speed:d=.5,...m},u)=>{const g={sm:"p-4",default:"p-6",lg:"p-8"},h={sm:"rounded-sm",default:"rounded",lg:"rounded-lg",xl:"rounded-xl","2xl":"rounded-2xl",full:"rounded-full"};return r.jsxs("div",{ref:u,className:n("relative overflow-hidden",h[l],t),children:[r.jsx(P,{preset:e,intensity:c,speed:d,className:"absolute inset-0",...m}),i>0&&r.jsx("div",{className:"absolute inset-0",style:{backgroundColor:"black",opacity:i}}),r.jsx("div",{className:n("relative z-10",g[s]),children:a})]})});Oo.displayName="ShaderCard";exports.AnimatedCounter=Ne;exports.AnnouncementBar=ie;exports.AppDownloadButtons=Qr;exports.AppDownloadContent=zr;exports.AppDownloadDescription=_r;exports.AppDownloadInfo=Hr;exports.AppDownloadMockup=Ur;exports.AppDownloadSection=Dr;exports.AppDownloadTitle=Gr;exports.AppQRCode=Xr;exports.AppStoreBadge=$r;exports.AvatarStack=Cr;exports.BentoCard=xr;exports.BentoCardBadge=wr;exports.BentoCardContent=vr;exports.BentoCardDescription=hr;exports.BentoCardIcon=pr;exports.BentoCardImage=Nr;exports.BentoCardLink=yr;exports.BentoCardTitle=gr;exports.BentoGrid=ur;exports.BentoGridPreset=br;exports.BlogCard=Ka;exports.BlogCardAuthor=ir;exports.BlogCardAuthorAvatar=dr;exports.BlogCardAuthorName=cr;exports.BlogCardCategory=ar;exports.BlogCardContent=er;exports.BlogCardDate=rr;exports.BlogCardExcerpt=nr;exports.BlogCardFeatured=fr;exports.BlogCardFooter=lr;exports.BlogCardImage=Za;exports.BlogCardLink=mr;exports.BlogCardMeta=tr;exports.BlogCardReadTime=or;exports.BlogCardTitle=sr;exports.BlogGrid=Ja;exports.CTAActions=tt;exports.CTACard=at;exports.CTAContent=Ke;exports.CTADescription=et;exports.CTASection=Je;exports.CTATitle=Ze;exports.ComparisonCategory=la;exports.ComparisonCell=Zt;exports.ComparisonCheck=ta;exports.ComparisonDescription=Ot;exports.ComparisonFeatureCell=ea;exports.ComparisonHeader=qt;exports.ComparisonHeaderCell=Kt;exports.ComparisonMinus=ra;exports.ComparisonPlanHeader=oa;exports.ComparisonPlanName=sa;exports.ComparisonPlanPrice=na;exports.ComparisonSection=Qt;exports.ComparisonTable=Ut;exports.ComparisonTableBody=Yt;exports.ComparisonTableHead=Xt;exports.ComparisonTableInner=Wt;exports.ComparisonTableRow=Jt;exports.ComparisonTitle=$t;exports.ComparisonX=aa;exports.ContactContent=va;exports.ContactDescription=ba;exports.ContactDetailItem=Ca;exports.ContactDetails=ja;exports.ContactForm=ka;exports.ContactFormError=Ia;exports.ContactFormField=Aa;exports.ContactFormInput=Fa;exports.ContactFormLabel=Ba;exports.ContactFormRow=Ta;exports.ContactFormSelect=La;exports.ContactFormSuccess=Ea;exports.ContactFormTextarea=Ma;exports.ContactHeader=wa;exports.ContactInfo=Na;exports.ContactSection=ha;exports.ContactSocialLink=Sa;exports.ContactSocials=Ra;exports.ContactTitle=ya;exports.ContentSpot=Ee;exports.ContentSpotActions=ze;exports.ContentSpotDescription=De;exports.ContentSpotEyebrow=Ve;exports.ContentSpotTitle=Pe;exports.CookieBanner=po;exports.CookieBannerActions=wo;exports.CookieBannerContent=go;exports.CookieBannerDescription=No;exports.CookieBannerLink=yo;exports.CookieBannerText=ho;exports.CookieBannerTitle=vo;exports.CookiePreferenceItem=ko;exports.CookiePreferences=bo;exports.CookiePreferencesDescription=Ro;exports.CookiePreferencesFooter=To;exports.CookiePreferencesHeader=jo;exports.CookiePreferencesList=So;exports.CookiePreferencesTitle=Co;exports.CountdownAnnouncementBar=Wa;exports.CountdownTimer=xo;exports.CounterGrid=uo;exports.CounterWithLabel=fo;exports.CustomerCount=Tr;exports.EmailForm=ia;exports.FAQAnswer=le;exports.FAQContact=_t;exports.FAQDescription=Dt;exports.FAQHeader=Vt;exports.FAQItem=Ht;exports.FAQItemCard=Gt;exports.FAQList=zt;exports.FAQQuestion=ne;exports.FAQSection=Et;exports.FAQTitle=Pt;exports.FRAGMENT_SHADER_AURORA=Fo;exports.FRAGMENT_SHADER_BLOB=Mo;exports.FRAGMENT_SHADER_GRADIENT=Bo;exports.FRAGMENT_SHADER_MESH_GRADIENT=Eo;exports.FRAGMENT_SHADER_NOISE=Lo;exports.FRAGMENT_SHADER_PARTICLES=Vo;exports.FRAGMENT_SHADER_WAVE=Io;exports.FeatureSpot=He;exports.FeatureSpotContent=Xe;exports.FeatureSpotDescription=Qe;exports.FeatureSpotGrid=qe;exports.FeatureSpotHeader=Ge;exports.FeatureSpotItem=$e;exports.FeatureSpotItemDescription=Ue;exports.FeatureSpotItemTitle=Oe;exports.FeatureSpotMedia=Ye;exports.FeatureSpotSplit=We;exports.FeatureSpotTitle=_e;exports.FeaturedIn=Br;exports.Footer=Pa;exports.FooterBottom=Qa;exports.FooterContent=Da;exports.FooterCopyright=qa;exports.FooterLink=_a;exports.FooterLinks=Ga;exports.FooterSection=za;exports.FooterSocial=$a;exports.FooterSocialLink=Oa;exports.FooterTitle=Ha;exports.GoogleMapEmbed=Ir;exports.GooglePlayBadge=Or;exports.GradientBackground=Kr;exports.GradientBlob=eo;exports.GradientBorder=Jr;exports.GradientDivider=Zr;exports.GradientHeading=Yr;exports.GradientText=ve;exports.HeaderNavigation=Va;exports.Hero=Ae;exports.HeroActions=Le;exports.HeroBadge=Be;exports.HeroImage=Ie;exports.HeroSubtitle=Me;exports.HeroTitle=Fe;exports.LogoCloud=Ct;exports.LogoCloudItem=Rt;exports.MapWithInfo=Pr;exports.Marquee=to;exports.MarqueeItem=ao;exports.MarqueeTestimonial=oo;exports.MarqueeTestimonialAuthor=no;exports.MarqueeTestimonialAvatar=lo;exports.MarqueeTestimonialContent=so;exports.MarqueeTestimonialInfo=io;exports.MarqueeTestimonialName=co;exports.MarqueeTestimonialRole=mo;exports.Newsletter=da;exports.NewsletterDescription=fa;exports.NewsletterDisclaimer=pa;exports.NewsletterForm=ua;exports.NewsletterIcon=ca;exports.NewsletterInput=xa;exports.NewsletterSuccess=ga;exports.NewsletterTitle=ma;exports.OpenStreetMapEmbed=Er;exports.PRESET_COLORS=ye;exports.PhoneMockup=Wr;exports.PricingCard=xe;exports.PricingOptions=Xa;exports.PricingTable=Ya;exports.Quote=Tt;exports.QuoteAuthor=Bt;exports.QuoteAuthorAvatar=Ft;exports.QuoteAuthorInfo=Mt;exports.QuoteAuthorName=Lt;exports.QuoteAuthorTitle=It;exports.QuoteText=At;exports.RotatingAnnouncementBar=Ua;exports.SHADER_PRESETS=we;exports.ShaderAurora=zo;exports.ShaderBackground=be;exports.ShaderBlob=Ho;exports.ShaderCanvasOGL=P;exports.ShaderCanvasR3F=Po;exports.ShaderCard=Oo;exports.ShaderGradient=Do;exports.ShaderHero=$o;exports.ShaderMesh=Qo;exports.ShaderNoise=Go;exports.ShaderParticles=qo;exports.ShaderWave=_o;exports.SocialProof=jr;exports.SocialProofBanner=Ar;exports.StarRating=Rr;exports.StatItem=it;exports.StatLabel=ct;exports.StatTrend=mt;exports.StatValue=dt;exports.StaticMap=Vr;exports.StatsDescription=nt;exports.StatsGrid=lt;exports.StatsHeader=ot;exports.StatsSection=rt;exports.StatsTitle=st;exports.TeamDescription=pt;exports.TeamGrid=gt;exports.TeamHeader=ut;exports.TeamMember=ht;exports.TeamMemberBio=yt;exports.TeamMemberImage=vt;exports.TeamMemberLink=jt;exports.TeamMemberLinks=bt;exports.TeamMemberName=Nt;exports.TeamMemberRole=wt;exports.TeamSection=ft;exports.TeamTitle=xt;exports.Testimonial=ue;exports.TestimonialCarousel=kt;exports.TestimonialGrid=St;exports.TrustBadge=kr;exports.TrustBadges=Sr;exports.VERTEX_SHADER_DEFAULT=Ao;exports.VerticalMarquee=ro;exports.VideoModal=Lr;exports.VideoPlayer=ge;exports.VimeoEmbed=Mr;exports.YouTubeEmbed=Fr;exports.cn=n;exports.hexToVec3=q;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export * from "./components/hero";
|
|
2
|
+
export * from "./components/content-spot";
|
|
3
|
+
export * from "./components/feature-spot";
|
|
4
|
+
export * from "./components/cta-section";
|
|
5
|
+
export * from "./components/stats-section";
|
|
6
|
+
export * from "./components/team-section";
|
|
7
|
+
export * from "./components/logo-cloud";
|
|
8
|
+
export * from "./components/testimonial";
|
|
9
|
+
export * from "./components/quote";
|
|
10
|
+
export * from "./components/faq-accordion";
|
|
11
|
+
export * from "./components/comparison-table";
|
|
12
|
+
export * from "./components/email-form";
|
|
13
|
+
export * from "./components/newsletter";
|
|
14
|
+
export * from "./components/contact-form";
|
|
15
|
+
export * from "./components/header-navigation";
|
|
16
|
+
export * from "./components/footer";
|
|
17
|
+
export * from "./components/announcement-bar";
|
|
18
|
+
export * from "./components/pricing-options";
|
|
19
|
+
export * from "./components/pricing-table";
|
|
20
|
+
export * from "./components/blog-card";
|
|
21
|
+
export * from "./components/bento-grid";
|
|
22
|
+
export * from "./components/social-proof";
|
|
23
|
+
export * from "./components/video-player";
|
|
24
|
+
export * from "./components/map-embed";
|
|
25
|
+
export * from "./components/app-download";
|
|
26
|
+
export * from "./components/gradient-text";
|
|
27
|
+
export * from "./components/marquee";
|
|
28
|
+
export * from "./components/animated-counter";
|
|
29
|
+
export * from "./components/cookie-banner";
|
|
30
|
+
export * from "./components/shaders";
|
|
31
|
+
export { cn } from "./lib/utils";
|