1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5346],{25346:function(e,t,r){r.d(t,{h:function(){return b}});var s=r(85893),n=r(25675),a=r.n(n),o=r(41664),i=r.n(o),l=r(67294),c=r(62777),d=r(95770);let m={active:!0,percentage:15,title:"Website Launch + Black Friday",code:"LAUNCH15",startDate:new Date("2025-11-21T00:00:00-05:00"),endDate:new Date("2025-12-01T23:59:59-05:00")};function h(){if(!m.active)return!1;let e=new Date;return e>=m.startDate&&e<=m.endDate}function x(){let e=new Date,t=m.endDate.getTime()-e.getTime();if(t<=0)return"Expired";let r=Math.floor(t/864e5),s=Math.floor(t%864e5/36e5),n=Math.floor(t%36e5/6e4),a=Math.floor(t%6e4/1e3);return r>0?"".concat(r,"d ").concat(s,"h ").concat(n,"m ").concat(a,"s"):s>0?"".concat(s,"h ").concat(n,"m ").concat(a,"s"):n>0?"".concat(n,"m ").concat(a,"s"):"".concat(a,"s")}function u(){let[e,t]=(0,l.useState)(!1),[r,n]=(0,l.useState)(""),[a,o]=(0,l.useState)(!0);return((0,l.useEffect)(()=>{t(h()),n(x());let e=setInterval(()=>{let e=h();t(e),n(x()),e||o(!1)},1e3);return()=>clearInterval(e)},[]),e&&a)?(0,s.jsx)("div",{className:"bg-gradient-to-r from-theme-secondary to-theme-surface text-theme-text-inverse",children:(0,s.jsx)("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8 py-3",children:(0,s.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,s.jsx)("div",{className:"flex-1 flex items-center justify-center gap-3 text-center",children:(0,s.jsxs)("div",{className:"flex items-center gap-3 flex-wrap justify-center",children:[(0,s.jsx)("span",{className:"font-bold text-base sm:text-lg",children:m.title}),(0,s.jsxs)("span",{className:"text-sm sm:text-base",children:["\uD83C\uDF89 ",m.percentage,"% off all items"]}),(0,s.jsx)("span",{className:"px-3 py-1 bg-theme-text-inverse/20 rounded-full text-xs sm:text-sm font-semibold",children:r})]})}),(0,s.jsx)("button",{onClick:()=>o(!1),className:"text-theme-text-inverse/80 hover:text-theme-text-inverse transition-colors flex-shrink-0","aria-label":"Close banner",children:(0,s.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]})})}):null}var p=r(42809),f=r(60882),g=r(10246);let b=()=>{let[e,t]=(0,l.useState)(!1),[r,n]=(0,l.useState)(!1),[o,m]=(0,l.useState)(!1),[h,x]=(0,l.useState)(!1),[b,v]=(0,l.useState)(null),[j,w]=(0,l.useState)(null),[N,y]=(0,l.useState)("paid"),{user:k,loading:C,signOut:M}=(0,d.a)(),{totalItems:L,openCart:D}=(0,f.j)(),[W,S]=(0,l.useState)(!1);(0,l.useEffect)(()=>{if(!k){S(!1);return}let e="commercial-license-enlisted:".concat(k.uid);try{let t=sessionStorage.getItem(e);if(t){let e=JSON.parse(t);if(Date.now()-e.ts<3e5){S(e.enlisted);return}}}catch(e){}let t=!1;return(async()=>{try{if(!(null===g.I8||void 0===g.I8?void 0:g.I8.currentUser))return;let r=await g.I8.currentUser.getIdToken(),s=await fetch("/api/commercial-license/me",{headers:{Authorization:"Bearer ".concat(r)}});if(t)return;let n=s.ok;S(n);try{sessionStorage.setItem(e,JSON.stringify({enlisted:n,ts:Date.now()}))}catch(e){}}catch(e){}})(),()=>{t=!0}},[k]);let z=()=>{b&&(clearTimeout(b),v(null)),j&&(clearTimeout(j),w(null)),x(!1),m(!0)},B=()=>{v(setTimeout(()=>{m(!1)},300))},I=()=>{j&&(clearTimeout(j),w(null)),b&&(clearTimeout(b),v(null)),m(!1),x(!0)},E=()=>{w(setTimeout(()=>{x(!1)},300))},P=[{name:"Software",href:"/software",external:!1},{name:"Docs",href:"/docs",external:!1},{name:"Gallery",href:"/gallery",external:!1},{name:"Mods",href:"/mods",external:!1},{name:"News",href:"/news",external:!1},{name:"About",href:"/about",external:!1}],T="paid"===N?[{name:"Dune Weaver Pro",href:"/products/dwp",image:"/images/dune-weaver-pro.jpg",description:'75cm (29.5") premium sand table'},{name:"Dune Weaver Gold",href:"/products/dwg",image:"/images/dune-weaver-gold.jpg",description:'45cm (17") enclosed side table, quiet'},{name:"Dune Weaver Mini Pro",href:"/products/dwmp",image:"/images/dune-weaver-mini-pro.jpg",description:'25cm (10") compact desktop sand table'}]:[{name:"Dune Weaver OG",href:"https://makerworld.com/en/models/841332-dune-weaver-a-3d-printed-kinetic-sand-table#profileId-787553",image:"/images/dune-weaver-og.jpg",description:"Original open-source design"},{name:"Dune Weaver Mini",href:"https://makerworld.com/en/models/896314-mini-dune-weaver-not-your-typical-marble-run#profileId-854412",image:"/images/dune-weaver-mini.jpg",description:"Free beginner-friendly desktop table"}],_=[{name:"DWMP Enclosure Redesign",href:"/products/dwmp-enclosure",image:"/images/dwmp-enclosure.jpg",description:"3D printed enclosure with vinyl wrap for DWMP"},{name:"DWP Pulley Upgrade",href:"/products/dwp-pulley-upgrade",image:"/images/dwp-pulley-upgrade.jpg",description:"Pulley + Linear rail upgrade for quieter, smoother motion"},{name:"Dune Weaver Touch",href:"/products/dune-weaver-touch",image:"/images/dune-weaver-touch.jpg",description:"Touch-controlled kinetic sand table interface"},{name:"Desert Compass",href:"/products/desert-compass",image:"/images/desert-compass.jpg",description:"Consistent orientation for your patterns"},{name:"Ikea-style Enclosure",href:"/products/customize-dwp",image:"/images/customize-addon.jpg",description:"Custom enclosure for your sand table"}];return(0,s.jsx)(s.Fragment,{children:(0,s.jsxs)("header",{className:"fixed top-0 left-0 right-0 z-50 bg-theme-overlay-light backdrop-blur-sm shadow-sm",children:[(0,s.jsx)(u,{}),(0,s.jsxs)("nav",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[(0,s.jsxs)("div",{className:"flex justify-between items-center h-20",children:[(0,s.jsxs)(i(),{href:"/",className:"flex items-center space-x-3",children:[(0,s.jsx)(a(),{src:"/images/logo_alt.png",alt:"Dune Weaver",width:48,height:48,className:"my-2 flex-shrink-0 rounded-full"}),(0,s.jsx)("span",{className:"text-2xl font-bold text-theme-text-brand",children:"Dune Weaver"})]}),(0,s.jsxs)("div",{className:"hidden md:flex items-center space-x-8",children:[(0,s.jsx)("div",{onMouseEnter:z,onMouseLeave:B,children:(0,s.jsxs)("button",{className:"text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 font-medium flex items-center gap-1 relative",children:["Products",(0,s.jsx)("svg",{className:"w-4 h-4 transition-transform ".concat(o?"rotate-180":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})}),(0,s.jsx)("div",{onMouseEnter:I,onMouseLeave:E,children:(0,s.jsxs)("button",{className:"text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 font-medium flex items-center gap-1 relative",children:["Add-ons",(0,s.jsx)("svg",{className:"w-4 h-4 transition-transform ".concat(h?"rotate-180":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})}),P.map(e=>e.external?(0,s.jsx)("a",{href:e.href,target:"_blank",rel:"noopener noreferrer",className:"text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 font-medium",children:e.name},e.name):(0,s.jsx)(i(),{href:e.href,className:"text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 font-medium",children:e.name},e.name)),(0,s.jsx)(i(),{href:"/install",className:"bg-theme-secondary text-theme-text-inverse hover:bg-theme-secondary-dark transition-colors duration-200 font-semibold px-4 py-1.5 rounded-lg focus-visible:ring-2 focus-visible:ring-theme-focus focus:outline-none",children:"Install"})]}),(0,s.jsxs)("div",{className:"hidden md:flex items-center space-x-2",children:[(0,s.jsxs)("button",{onClick:D,className:"relative text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 p-2","aria-label":"Shopping cart",children:[(0,s.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M16 11V7a4 4 0 00-8 0v4M5 9h14l1 12H4L5 9z"})}),L>0&&(0,s.jsx)("span",{className:"absolute -top-0.5 -right-0.5 bg-theme-secondary text-white text-[10px] font-bold w-4.5 h-4.5 flex items-center justify-center rounded-full min-w-[18px] min-h-[18px]",children:L})]}),k?(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)("button",{onClick:()=>n(!r),className:"text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 p-2","aria-label":"User menu",children:(0,s.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})})}),r&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"fixed inset-0 z-10",onClick:()=>n(!1)}),(0,s.jsxs)("div",{className:"absolute right-0 mt-2 w-56 bg-theme-surface rounded-lg shadow-lg border border-theme-border z-20",children:[(0,s.jsxs)("div",{className:"px-4 py-3 border-b border-theme-border",children:[(0,s.jsx)("p",{className:"text-sm text-theme-text-muted",children:"Signed in as"}),(0,s.jsx)("p",{className:"text-sm font-medium text-theme-text-primary truncate",children:k.email})]}),(0,s.jsxs)("div",{className:"py-2",children:[k.email&&(0,p.vd)(k.email)&&(0,s.jsx)(i(),{href:"/admin",className:"block px-4 py-2 text-theme-text-primary hover:bg-theme-surface-alt transition-colors",onClick:()=>n(!1),children:"Admin Panel"}),(0,s.jsx)(i(),{href:"/account",className:"block px-4 py-2 text-theme-text-primary hover:bg-theme-surface-alt transition-colors",onClick:()=>n(!1),children:"My Downloads"}),W&&(0,s.jsx)(i(),{href:"/commercial-license",className:"block px-4 py-2 text-theme-text-primary hover:bg-theme-surface-alt transition-colors",onClick:()=>n(!1),children:"Commercial License"}),(0,s.jsx)("button",{onClick:async()=>{n(!1);try{await M(),window.location.href="/"}catch(e){console.error("Error signing out:",e)}},className:"w-full text-left px-4 py-2 text-theme-text-primary hover:bg-theme-surface-alt transition-colors",children:"Sign Out"})]})]})]})]}):(0,s.jsx)("button",{onClick:()=>window.location.href="/auth/signin",className:"text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 p-2","aria-label":"Sign in",children:(0,s.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})})})]}),(0,s.jsxs)("div",{className:"md:hidden flex items-center space-x-2",children:[(0,s.jsxs)("button",{onClick:D,className:"relative text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 p-2","aria-label":"Shopping cart",children:[(0,s.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M16 11V7a4 4 0 00-8 0v4M5 9h14l1 12H4L5 9z"})}),L>0&&(0,s.jsx)("span",{className:"absolute -top-0.5 -right-0.5 bg-theme-secondary text-white text-[10px] font-bold flex items-center justify-center rounded-full min-w-[18px] min-h-[18px]",children:L})]}),(0,s.jsx)("button",{onClick:()=>{k?window.location.href="/account":window.location.href="/auth/signin"},className:"text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 p-2","aria-label":k?"My account":"Sign in",children:(0,s.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})})}),(0,s.jsxs)("button",{onClick:()=>t(!e),className:"inline-flex items-center justify-center p-2 rounded-md text-theme-text-secondary hover:text-theme-text-brand hover:bg-theme-surface-hover focus:outline-none focus:ring-2 focus:ring-inset focus:ring-theme-text-brand","aria-expanded":"false",children:[(0,s.jsx)("span",{className:"sr-only",children:"Open main menu"}),e?(0,s.jsx)("svg",{className:"block h-6 w-6",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","aria-hidden":"true",children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})}):(0,s.jsx)("svg",{className:"block h-6 w-6",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","aria-hidden":"true",children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16M4 18h16"})})]})]})]}),e&&(0,s.jsx)("div",{className:"md:hidden py-4",children:(0,s.jsxs)("div",{className:"flex flex-col space-y-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("button",{onClick:()=>m(!o),className:"w-full flex items-center justify-between text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 font-medium px-3 py-2",children:[(0,s.jsx)("span",{className:"flex items-center gap-2",children:"Products"}),(0,s.jsx)("svg",{className:"w-4 h-4 transition-transform ".concat(o?"rotate-180":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),o&&(0,s.jsxs)("div",{className:"mt-2 ml-2",children:[(0,s.jsx)("div",{className:"flex mb-3",children:(0,s.jsxs)("div",{className:"inline-flex rounded-lg bg-theme-surface-alt p-1",children:[(0,s.jsx)("button",{onClick:()=>y("paid"),className:"px-4 py-1 rounded-md text-xs font-medium transition-all ".concat("paid"===N?"bg-theme-surface shadow-sm text-theme-text-primary":"text-theme-text-secondary"),children:"Paid"}),(0,s.jsx)("button",{onClick:()=>y("free"),className:"px-4 py-1 rounded-md text-xs font-medium transition-all ".concat("free"===N?"bg-theme-surface shadow-sm text-theme-text-primary":"text-theme-text-secondary"),children:"Free"})]})}),(0,s.jsx)("div",{className:"space-y-2",children:T.map(e=>(0,s.jsxs)(i(),{href:e.href,className:"flex items-center gap-3 p-2 hover:bg-theme-surface-alt rounded-lg transition-colors",onClick:()=>t(!1),target:e.href.startsWith("http")?"_blank":void 0,rel:e.href.startsWith("http")?"noopener noreferrer":void 0,children:[(0,s.jsxs)("div",{className:"relative w-12 h-12 flex-shrink-0",children:[(0,s.jsx)("img",{src:(0,c.K)(e.image),alt:e.name,className:"w-12 h-12 object-cover rounded"}),e.ribbon&&(0,s.jsx)("div",{className:"absolute -top-1 -right-1 bg-red-500 text-white text-[8px] font-bold px-1.5 py-0.5 rounded shadow",children:e.ribbon})]}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsx)("p",{className:"text-sm font-bold text-theme-text-primary",children:e.name}),(0,s.jsx)("p",{className:"text-xs text-theme-text-secondary",children:e.description})]})]},e.name))})]})]}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("button",{onClick:()=>x(!h),className:"w-full flex items-center justify-between text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 font-medium px-3 py-2",children:[(0,s.jsx)("span",{className:"flex items-center gap-2",children:"Add-ons"}),(0,s.jsx)("svg",{className:"w-4 h-4 transition-transform ".concat(h?"rotate-180":""),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),h&&(0,s.jsx)("div",{className:"mt-2 ml-2 space-y-2",children:_.map(e=>(0,s.jsxs)(i(),{href:e.href,className:"flex items-center gap-3 p-2 hover:bg-theme-surface-alt rounded-lg transition-colors",onClick:()=>t(!1),children:[(0,s.jsxs)("div",{className:"relative w-12 h-12 flex-shrink-0",children:[(0,s.jsx)("img",{src:(0,c.K)(e.image),alt:e.name,className:"w-12 h-12 object-cover rounded"}),"ribbon"in e&&e.ribbon&&(0,s.jsx)("div",{className:"absolute -top-1 -right-1 bg-red-500 text-white text-[8px] font-bold px-1.5 py-0.5 rounded shadow",children:e.ribbon})]}),
1(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsx)("p",{className:"text-sm font-bold text-theme-text-primary",children:e.name}),(0,s.jsx)("p",{className:"text-xs text-theme-text-secondary",children:e.description})]})]},e.name))})]}),P.map(e=>e.external?(0,s.jsx)("a",{href:e.href,target:"_blank",rel:"noopener noreferrer",className:"text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 font-medium px-3 py-2",onClick:()=>t(!1),children:e.name},e.name):(0,s.jsx)(i(),{href:e.href,className:"text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 font-medium px-3 py-2",onClick:()=>t(!1),children:e.name},e.name)),(0,s.jsx)(i(),{href:"/install",className:"bg-theme-secondary text-theme-text-inverse hover:bg-theme-secondary-dark transition-colors duration-200 font-semibold px-3 py-2 rounded-lg text-center mx-3 mt-1 focus-visible:ring-2 focus-visible:ring-theme-focus focus:outline-none",onClick:()=>t(!1),children:"Install"}),!C&&(k?(0,s.jsx)(s.Fragment,{children:(0,s.jsxs)("div",{className:"border-t border-theme-border pt-4 mt-2",children:[(0,s.jsx)("p",{className:"text-xs text-theme-text-muted px-2 mb-2",children:"Account"}),(0,s.jsx)("p",{className:"text-sm font-medium text-theme-text-primary px-2 mb-3 truncate",children:k.email}),k.email&&(0,p.vd)(k.email)&&(0,s.jsx)(i(),{href:"/admin",className:"block text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 font-medium px-3 py-2",onClick:()=>t(!1),children:"Admin Panel"}),(0,s.jsx)(i(),{href:"/account",className:"block text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 font-medium px-3 py-2",onClick:()=>t(!1),children:"My Downloads"}),W&&(0,s.jsx)(i(),{href:"/commercial-license",className:"block text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 font-medium px-3 py-2",onClick:()=>t(!1),children:"Commercial License"}),(0,s.jsx)("button",{onClick:async()=>{t(!1);try{await M(),window.location.href="/"}catch(e){console.error("Error signing out:",e)}},className:"block w-full text-left text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 font-medium px-3 py-2",children:"Sign Out"})]})}):(0,s.jsx)("div",{className:"border-t border-theme-border pt-4 mt-2",children:(0,s.jsx)(i(),{href:"/auth/signin",className:"block text-theme-text-secondary hover:text-theme-text-brand transition-colors duration-200 font-medium px-3 py-2",onClick:()=>t(!1),children:"Sign In"})}))]})})]}),o&&(0,s.jsx)("div",{className:"hidden md:block absolute left-0 right-0 bg-theme-surface border-t border-theme-border shadow-lg z-20",onMouseEnter:z,onMouseLeave:B,children:(0,s.jsxs)("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8 py-6",children:[(0,s.jsx)("div",{className:"flex justify-center mb-6",children:(0,s.jsxs)("div",{className:"inline-flex rounded-lg bg-theme-surface-alt p-1",children:[(0,s.jsx)("button",{onClick:()=>y("paid"),className:"px-5 py-1.5 rounded-md text-sm font-medium transition-all ".concat("paid"===N?"bg-theme-surface shadow-sm text-theme-text-primary":"text-theme-text-secondary hover:text-theme-text-primary"),children:"Paid"}),(0,s.jsx)("button",{onClick:()=>y("free"),className:"px-5 py-1.5 rounded-md text-sm font-medium transition-all ".concat("free"===N?"bg-theme-surface shadow-sm text-theme-text-primary":"text-theme-text-secondary hover:text-theme-text-primary"),children:"Free"})]})}),(0,s.jsx)("div",{className:"flex justify-center gap-8",children:T.map(e=>(0,s.jsxs)(i(),{href:e.href,className:"flex flex-col items-center gap-3 p-4 hover:bg-theme-surface-alt rounded-lg transition-colors group w-64",target:e.href.startsWith("http")?"_blank":void 0,rel:e.href.startsWith("http")?"noopener noreferrer":void 0,children:[(0,s.jsxs)("div",{className:"relative w-full aspect-square overflow-hidden rounded-lg",children:[(0,s.jsx)("img",{src:(0,c.K)(e.image),alt:e.name,className:"w-full h-full object-cover"}),e.ribbon&&(0,s.jsx)("div",{className:"absolute top-0 right-0 overflow-hidden w-24 h-24",children:(0,s.jsx)("div",{className:"absolute top-3 -right-6 bg-red-500 text-white text-xs font-bold py-1 w-28 text-center transform rotate-45 shadow-md",children:e.ribbon})})]}),(0,s.jsxs)("div",{className:"text-center",children:[(0,s.jsx)("h3",{className:"text-base font-bold text-theme-text-primary group-hover:text-theme-text-brand transition-colors mb-2",children:e.name}),(0,s.jsx)("p",{className:"text-sm text-theme-text-secondary",children:e.description})]})]},e.name))})]})}),h&&(0,s.jsx)("div",{className:"hidden md:block absolute left-0 right-0 bg-theme-surface border-t border-theme-border shadow-lg z-20",onMouseEnter:I,onMouseLeave:E,children:(0,s.jsx)("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8 py-8",children:(0,s.jsx)("div",{className:"flex justify-center gap-8",children:_.map(e=>(0,s.jsxs)(i(),{href:e.href,className:"flex flex-col items-center gap-3 p-4 hover:bg-theme-surface-alt rounded-lg transition-colors group w-64",children:[(0,s.jsxs)("div",{className:"relative w-full aspect-square overflow-hidden rounded-lg",children:[(0,s.jsx)("img",{src:(0,c.K)(e.image),alt:e.name,className:"w-full h-full object-cover"}),"ribbon"in e&&e.ribbon&&(0,s.jsx)("div",{className:"absolute top-0 right-0 overflow-hidden w-24 h-24",children:(0,s.jsx)("div",{className:"absolute top-3 -right-6 bg-red-500 text-white text-xs font-bold py-1 w-28 text-center transform rotate-45 shadow-md",children:e.ribbon})})]}),(0,s.jsxs)("div",{className:"text-center",children:[(0,s.jsx)("h3",{className:"text-base font-bold text-theme-text-primary group-hover:text-theme-text-brand transition-colors mb-2",children:e.name}),(0,s.jsx)("p",{className:"text-sm text-theme-text-secondary",children:e.description})]})]},e.name))})})})]})})}},42809:function(e,t,r){r.d(t,{vd:function(){return n}});
1let s=["[email protected]","[email protected]","[email protected]"];function n(e){return s.includes(e.toLowerCase())}},62777:function(e,t,r){r.d(t,{K:function(){return n}});var s=r(34155);function n(e){let t=s.env.NEXT_PUBLIC_BASE_PATH||"";return"".concat(t).concat(e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.