PageSourceSearch

https://www.localcan.com/_next/static/chunks/0f4wi1cu08g5t.js

js localcan.com collected 2026-09-25 21:16:20 UTC 71,194 bytes, 3 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,49025,80848,e=>{"use strict";var t=e.i(18050),n=e.i(71645),r=e.i(61950);function i({name:e,nameConfirm:a,...s}){let[l,o]=(0,n.useState)(e);return(0,t.jsx)(r.Icon,{name:l,onClick:()=>void(l!=a&&(o(a),setTimeout(()=>{o(e)},1e3))),...s})}function a(e,t){try{t.isTrusted&&window.umami.track(e)}catch{console.log("No umami")}}e.i(60840),e.s(["track",0,a],80848),e.s(["Brew",0,function(){return(0,t.jsxs)("div",{className:"relative px-7 py-[5px] pl-2.5 font-mono text-sm leading-[17px] rounded-lg font-normal no-underline border border-cloud text-faint -mt-4 mb-10 whitespace-nowrap opacity-70 transition-opacity duration-200 [&_em]:bg-accent [&_em]:text-surface [&_em]:not-italic [&_em]:px-[5px] [&_em]:py-0.5 [&_em]:rounded [&_em]:mr-[3px] max-sm:text-[13px] max-sm:leading-[15px] max-sm:hidden max-sm:mb-0",children:[(0,t.jsx)("span",{children:"brew"})," ",(0,t.jsx)("span",{children:"install"})," ",(0,t.jsx)("span",{style:{color:"var(--color-brew-word3)"},children:"localcan"}),(0,t.jsx)("div",{className:"opacity-40 transition-opacity duration-200 cursor-pointer flex items-center justify-center w-4 h-4 pr-1 shrink-0 hover:opacity-100 absolute right-1 top-1.5 max-sm:top-[5px] z-9",onClick:e=>{navigator.clipboard.writeText("brew install localcan"),a("brew click",e)},children:(0,t.jsx)(i,{name:"Copy",nameConfirm:"Check",size:12})})]})}],49025)},88143,(e,t,n)=>{"use strict";function r({widthInt:e,heightInt:t,blurWidth:n,blurHeight:i,blurDataURL:a,objectFit:s}){let l=n?40*n:e,o=i?40*i:t,c=l&&o?`viewBox='0 0 ${l} ${o}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${c}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${c?"none":"contain"===s?"xMidYMid":"cover"===s?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${a}'/%3E%3C/svg%3E`}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"getImageBlurSvg",{enumerable:!0,get:function(){return r}})},87690,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={VALID_LOADERS:function(){return a},imageConfigDefault:function(){return s}};for(var i in r)Object.defineProperty(n,i,{enumerable:!0,get:r[i]});let a=["default","imgix","cloudinary","akamai","custom"],s={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},8927,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"getImgProps",{enumerable:!0,get:function(){return c}}),e.r(33525);let r=e.r(43369),i=e.r(88143),a=e.r(87690),s=["-moz-initial","fill","none","scale-down",void 0];function l(e){return void 0!==e.default}function o(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function c({src:e,sizes:t,unoptimized:n=!1,priority:d=!1,preload:u=!1,loading:A,className:m,quality:h,width:p,height:f,fill:g=!1,style:x,overrideSrc:b,onLoad:y,onLoadingComplete:w,placeholder:v="empty",blurDataURL:j,fetchPriority:N,decoding:C="async",layout:I,objectFit:k,objectPosition:R,lazyBoundary:P,lazyRoot:S,...E},O){var T;let B,_,M,{imgConf:D,showAltText:L,blurComplete:U,defaultLoader:Q}=O,z=D||a.imageConfigDefault;if("allSizes"in z)B=z;else{let e=[...z.deviceSizes,...z.imageSizes].sort((e,t)=>
1e-t),t=z.deviceSizes.sort((e,t)=>e-t),n=z.qualities?.sort((e,t)=>e-t);B={...z,allSizes:e,deviceSizes:t,qualities:n}}if(void 0===Q)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let W=E.loader||Q;delete E.loader,delete E.srcSet;let Y="__next_img_default"in W;if(Y){if("custom"===B.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
2Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=W;W=t=>{let{config:n,...r}=t;return e(r)}}if(I){"fill"===I&&(g=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[I];e&&(x={...x,...e});let n={responsive:"100vw",fill:"100vw"}[I];n&&!t&&(t=n)}let F="",H=o(p),$=o(f);if((T=e)&&"object"==typeof T&&(l(T)||void 0!==T.src)){let t=l(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(_=t.blurWidth,M=t.blurHeight,j=j||t.blurDataURL,F=t.src,!g)if(H||$){if(H&&!$){let e=H/t.width;$=Math.round(t.height*e)}else if(!H&&$){let e=$/t.height;H=Math.round(t.width*e)}}else H=t.width,$=t.height}let V=!d&&!u&&("lazy"===A||void 0===A);(!(e="string"==typeof e?e:F)||e.startsWith("data:")||e.startsWith("blob:"))&&(n=!0,V=!1),B.unoptimized&&(n=!0),Y&&!B.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(n=!0);let G=o(h),J=Object.assign(g?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:k,objectPosition:R}:{},L?{}:{color:"transparent"},x),q=U||"empty"===v?null:"blur"===v?`url("data:image/svg+xml;charset=utf-8,${(0,i.getImageBlurSvg)({widthInt:H,heightInt:$,blurWidth:_,blurHeight:M,blurDataURL:j||"",objectFit:J.objectFit})}")`:`url("${v}")`,X=s.includes(J.objectFit)?"fill"===J.objectFit?"100% 100%":"cover":J.objectFit,Z=q?{backgroundSize:X,backgroundPosition:J.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:q}:{},K=function({config:e,src:t,unoptimized:n,width:i,quality:a,sizes:s,loader:l}){if(n){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,r.getDeploymentId)();if(e){let n=t.indexOf("?");if(-1!==n){let r=new URLSearchParams(t.slice(n+1));r.get("dpl")||(r.append("dpl",e),t=t.slice(0,n)+"?"+r.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:o,kind:c}=function({deviceSizes:e,allSizes:t},n,r){if(r){let n=/(^|\s)(1?\d?\d)vw/g,i=[];for(let e;e=n.exec(r);)i.push(parseInt(e[2]));if(i.length){let n=.01*Math.min(...i);return{widths:t.filter(t=>t>=e[0]*n),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof n?{widths:e,kind:"w"}:{widths:[...new Set([n,2*n].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,i,s),d=o.length-1;return{sizes:s||"w"!==c?s:"100vw",srcSet:o.map((n,r)=>`${l({config:e,src:t,quality:a,width:n})} ${"w"===c?n:r+1}${c}`).join(", "),src:l({config:e,src:t,quality:a,width:o[d]})}}({config:B,src:e,unoptimized:n,width:H,quality:G,sizes:t,loader:W}),ee=V?"lazy":A;return{props:{...E,loading:ee,fetchPriority:N,width:H,height:$,decoding:C,className:m,style:{...J,...Z},sizes:K.sizes,srcSet:K.srcSet,src:b||K.src},meta:{unoptimized:n,preload:u||d,placeholder:v,fill:g}}}},98879,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return l}});let r=e.r(71645),i="u"<typeof window,a=i?()=>{}:r.useLayoutEffect,s=i?()=>{}:r.useEffect;function l(e){let{headManager:t,reduceComponentsToState:n}=e;function l(){if(t&&t.mountedInstances){let e=r.Children.toArray(Array.from(t.mountedInstances).filter(
2Boolean));t.updateHead(n(e))}}return i&&(t?.mountedInstances?.add(e.children),l()),a(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),a(()=>(t&&(t._pendingUpdate=l),()=>{t&&(t._pendingUpdate=l)})),s(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},25633,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={default:function(){return p},defaultHead:function(){return u}};for(var i in r)Object.defineProperty(n,i,{enumerable:!0,get:r[i]});let a=e.r(55682),s=e.r(90809),l=e.r(18050),o=s._(e.r(71645)),c=a._(e.r(98879)),d=e.r(42732);function u(){return[(0,l.jsx)("meta",{charSet:"utf-8"},"charset"),(0,l.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function A(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===o.default.Fragment?e.concat(o.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(33525);let m=["name","httpEquiv","charSet","itemProp"];function h(e){let t,n,r,i;return e.reduce(A,[]).reverse().concat(u().reverse()).filter((t=new Set,n=new Set,r=new Set,i={},e=>{let a=!0,s=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){s=!0;let n=e.key.slice(e.key.indexOf("$")+1);t.has(n)?a=!1:t.add(n)}switch(e.type){case"title":case"base":n.has(e.type)?a=!1:n.add(e.type);break;case"meta":for(let t=0,n=m.length;t<n;t++){let n=m[t];if(e.props.hasOwnProperty(n))if("charSet"===n)r.has(n)?a=!1:r.add(n);else{let t=e.props[n],r=i[n]||new Set;("name"!==n||!s)&&r.has(t)?a=!1:(r.add(t),i[n]=r)}}}return a})).reverse().map((e,t)=>{let n=e.key||t;return o.default.cloneElement(e,{key:n})})}let p=function({children:e}){let t=(0,o.useContext)(d.HeadManagerContext);return(0,l.jsx)(c.default,{reduceComponentsToState:h,headManager:t,children:e})};("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},18556,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"ImageConfigContext",{enumerable:!0,get:function(){return a}});let r=e.r(55682)._(e.r(71645)),i=e.r(87690),a=r.default.createContext(i.imageConfigDefault)},65856,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"RouterContext",{enumerable:!0,get:function(){return r}});let r=e.r(55682)._(e.r(71645)).default.createContext(null)},70965,(e,t,n)=>{"use strict";function r(e,t){let n=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-n)<Math.abs(e-n)?t:e,t.qualities[0]):n}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"findClosestQuality",{enumerable:!0,get:function(){return r}})},1948,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return s}});let r=e.r(70965),i=e.r(43369);function a({config:e,src:t,width:n,quality:s}){let l=(0,i.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//")){let e=t.indexOf("?");if(-1!==e){let n=new URLSearchParams(t.slice(e+1)),r=n.get("dpl");if(r){l=r,n.delete("dpl");let i=n.toString();t=t.slice(0,e)+(i?"?"+i:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
3Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let o=(0,r.findClosestQuality)(s,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${n}&q=${o}${t.startsWith("/")&&l?`&dpl=${l}`:""}`}a.__next_img_default=!0;let s=a},5500,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"Image",{enumerable:!0,get:function(){return y}});let r=e.r(55682),i=e.r(90809),a=e.r(18050),s=i._(e.r(71645)),l=r._(e.r(74080)),o=r._(e.r(25633)),c=e.r(8927),d=e.r(87690),u=e.r(18556);e.r(33525);let A=e.r(65856),m=r._(e.r(1948)),h=e.r(18581),p={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qual
3ities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function f(e,t,n,r,i,a,s){let l=e?.src;e&&e["data-loaded-src"]!==l&&(e["data-loaded-src"]=l,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&i(!0),n?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let r=!1,i=!1;n.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>r,isPropagationStopped:()=>i,persist:()=>{},preventDefault:()=>{r=!0,t.preventDefault()},stopPropagation:()=>{i=!0,t.stopPropagation()}})}r?.current&&r.current(e)}}))}function g(e){return s.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let x=(0,s.forwardRef)(({src:e,srcSet:t,sizes:n,height:r,width:i,decoding:l,className:o,style:c,fetchPriority:d,placeholder:u,loading:A,unoptimized:m,fill:p,onLoadRef:x,onLoadingCompleteRef:b,setBlurComplete:y,setShowAltText:w,sizesInput:v,onLoad:j,onError:N,...C},I)=>{let k=(0,s.useCallback)(e=>{e&&(N&&(e.src=e.src),e.complete&&f(e,u,x,b,y,m,v))},[e,u,x,b,y,N,m,v]),R=(0,h.useMergedRef)(I,k);return(0,a.jsx)("img",{...C,...g(d),loading:A,width:i,height:r,decoding:l,"data-nimg":p?"fill":"1",className:o,style:c,sizes:n,srcSet:t,src:e,ref:R,onLoad:e=>
3{f(e.currentTarget,u,x,b,y,m,v)},onError:e=>{w(!0),"empty"!==u&&y(!0),N&&N(e)}})});function b({isAppRouter:e,imgAttributes:t}){let n={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...g(t.fetchPriority)};return e&&l.default.preload?(l.default.preload(t.src,n),null):(0,a.jsx)(o.default,{children:(0,a.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...n},"__nimg-"+t.src+t.srcSet+t.sizes)})}let y=(0,s.forwardRef)((e,t)=>{let n=(0,s.useContext)(A.RouterContext),r=(0,s.useContext)(u.ImageConfigContext),i=(0,s.useMemo)(()=>{let e=p||r||d.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),n=e.deviceSizes.sort((e,t)=>e-t),i=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:n,qualities:i,localPatterns:"u"<typeof window?r?.localPatterns:e.localPatterns}},[r]),{onLoad:l,onLoadingComplete:o}=e,h=(0,s.useRef)(l);(0,s.useEffect)(()=>{h.current=l},[l]);let f=(0,s.useRef)(o);(0,s.useEffect)(()=>{f.current=o},[o]);let[g,y]=(0,s.use
3State)(!1),[w,v]=(0,s.useState)(!1),{props:j,meta:N}=(0,c.getImgProps)(e,{defaultLoader:m.default,imgConf:i,blurComplete:g,showAltText:w});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(x,{...j,unoptimized:N.unoptimized,placeholder:N.placeholder,fill:N.fill,onLoadRef:h,onLoadingCompleteRef:f,setBlurComplete:y,setShowAltText:v,sizesInput:e.sizes,ref:t}),N.preload?(0,a.jsx)(b,{isAppRouter:!n,imgAttributes:j}):null]})});("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},94909,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={default:function(){return d},getImageProps:function(){return c}};for(var i in r)Object.defineProperty(n,i,{enumerable:!0,get:r[i]});let a=e.r(55682),s=e.r(8927),l=e.r(5500),o=a._(e.r(1948));function c(e){let{props:t}=(0,s.getImgProps)(e,{defaultLoader:o.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,n]of Object.entries(t))void 0===n&&delete t[e];return{props:t}}let d=l.Image},57688,(e,t,n)=>{t.exports=e.r(94909)},74013,e=>{"use strict";var t=e.i(18050),n=e.i(71645),r=e.i(57688);let i={src:e.i(53432).default,width:1896,height:1180,blurWidth:8,blurHeight:5,blurDataURL:"data:image/webp;base64,UklGRrwAAABXRUJQVlA4TK8AAAAvBwABEM1VICICHghaDQQAAIDoGgAAAACAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGj67y8AAMAD2cgBAAAAOP90AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPzOAyEnAAAAADj/WwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADiI3+70WpMsMOMyCn7KM4P5X1AQ+BlgZpAYLA36ndiTYgAAA=="},a={src:e.i(4441).default,width:1896,height:1180,blurWidth:8,blurHeight:5,blurDataURL:"data:image/webp;base64,UklGRrwAAABXRUJQVlA4TLAAAAAvBwABEM1VICICHghGDgMAAIBLbmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAACgax8AAOCBbOQAAAAAnH86AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/ngWzkAAAAAJx/bgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8Grm8V+oDwiVUzcOZPZt/nf+RdwGI0EZoxcC4nOKbTAm3AQ=="};e.s(["Screenshot",0,function(){let e=(0,n.useRef)(null);return(0,n.useEffect)(()=>{let t=new IntersectionObserver(([t])=>{e.current&&(t.isIntersecting?e.current.style.transform="scale(1.03)":e.current.style.transform="scale(1)")},{rootMargin:"-50% 0px -50% 0px"});e.current&&t.observe(e.current)},[]),(0,t.jsxs)("picture",{children:[(0,t.jsx)("source",{srcSet:i.src,media:"(prefers-color-scheme: dark)"}),(0,t.jsx)(r.default,{className:"max-w-full h-auto transition-transform duration-300",style:{boxShadow:"0px 80px 80px rgba(0, 0, 0, 0.03)"},ref:e,src:a,priority:!0,width:948,height:590,alt:"LocalCan app",unoptimized:!0})]})}],74013)},21107,e=>{"use strict";var t=e.i(71645);function n(){let e=document.getElementById("tag-orange-inner");e&&window.scrollY<400&&(e.style.transform=`translateX(${-window.scrollY/2}px) scale(${1+window.scrollY/400})`,e.style.filter=`blur(${window.scrollY/50}px)`);let t=document.getElementById("tag-orange-outer");t&&(window.scrollY>400?t.style.opacity="0":(t.style.opacity="1",t.style.transform=`rotate(${5+window.scrollY/10}deg)`));let n=document.getElementById("tag-green-inner");n&&window.scrollY<400&&(n.style.transform=`translateX(${+window.scrollY}px) scale(${1+window.scrollY/200})`,n.style.filter=`blur(${window.scrollY/50}px)`);let r=document.getElementById("tag-green-outer");r&&(window.scrollY>400?r.style.opacity="0":(r.style.opacity="1",r.style.transform=`rotate(${-10+window.scrollY/20}deg)`));let i=document.getElementById("tag-purple-inner");i&&window.scrollY<400&&(i.style.transform=`translateX(${-window.scrollY}px) scale(${1+window.scrollY/200})`,i.style.filter=`blur(${window.scrollY/50}px)`);let a=document.getElementById("tag-purple-outer");a&&(window.scrollY>400?a.style.opacity="0":(a.style.opacity="1",a.style.transform=`rotate(${-8-window.scrollY/20}deg)`));let s=document.getElementById("tag-blue-inner");s&&window.scrollY<400&&(s.style.transform=`translateX(${window.scrollY/2}px) scale(${1+window.scrollY/300})`,s.style.filter=`blur(${window.scrollY/50}px)`);
3let l=document.getElementById("tag-blue-outer");l&&(window.scrollY>400?l.style.opacity="0":(l.style.opacity="1",l.style.transform=`rotate(${20+window.scrollY/20}deg)`))}e.s(["HeroScrollEffect",0,function(){return(0,t.useEffect)(()=>(addEventListener("scroll",n),n(),()=>{removeEventListener("scroll",n)}),[]),null}],21107)},67660,e=>{"use strict";var t=e.i(71645),n=e.i(18050);function r(e,i=[]){let a=[],s=()=>{let n=a.map(e=>t.createContext(e));return function(r){let i=r?.[e]||n;return t.useMemo(()=>({[`__scope${e}`]:{...r,[e]:i}}),[r,i])}};return s.scopeName=e,[function(r,i){let s=t.createContext(i),l=a.length;a=[...a,i];let o=r=>{let{scope:i,children:a,...o}=r,c=i?.[e]?.[l]||s,d=t.useMemo(()=>o,Object.values(o));return(0,n.jsx)(c.Provider,{value:d,children:a})};return o.displayName=r+"Provider",[o,function(n,a){let o=a?.[e]?.[l]||s,c=t.useContext(o);if(c)return c;if(void 0!==i)return i;throw Error(`\`${n}\` must be used within \`${r}\``)}]},function(...e){let n=e[0];if(1===e.length)return n;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let i=r.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return t.useMemo(()=>({[`__scope${n.scopeName}`]:i}),[i])}};return r.scopeName=n.scopeName,r}(s,...i)]}function i(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function a(...e){return t=>{let n=!1,r=e.map(e=>{let r=i(e,t);return n||"function"!=typeof r||(n=!0),r});if(n)return()=>{for(let t=0;t<r.length;t++){let n=r[t];"function"==typeof n?n():i(e[t],null)}}}}function s(...e){return t.useCallback(a(...e),e)}function l(e){var r;let i,s=(r=e,(i=t.forwardRef((e,n)=>{let{children:r,...i}=e;if(t.isValidElement(r)){var s;let e,l,o=(s=r,(l=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(l=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),c=function(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):"style"===r?n[r]={...i,...a}:"className"===r&&(n[r]=[i,a].filter(Boolean).join(" "))}return{...e,...n}}(i,r.props);return r.type!==t.Fragment&&(c.ref=n?a(n,o):o),t.cloneElement(r,c)}return t.Children.count(r)>1?t.Children.only(null):null})).displayName=`${r}.SlotClone`,i),l=t.forwardRef((e,r)=>{let{children:i,...a}=e,l=t.Children.toArray(i),o=l.find(c);if(o){let e=o.props.children,i=l.map(n=>n!==o?n:t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null);return(0,n.jsx)(s,{...a,ref:r,children:t.isValidElement(e)?t.cloneElement(e,void 0,i):null})}return(0,n.jsx)(s,{...a,ref:r,children:i})});return l.displayName=`${e}.Slot`,l}var o=Symbol("radix.slottable");function c(e){return t.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===o}var d=new WeakMap;function u(e,t){var n,r;let i,a,s;if("at"in Array.prototype)return Array.prototype.at.call(e,t);let l=(n=e,r=t,i=n.length,(s=(a=A(r))>=0?a:i+a)<0||s>=i?-1:s);return -1===l?void 0:e[l]}function A(e){return e!=e||0===e?0:Math.trunc(e)}function m(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),!1===n||!r.defaultPrevented)return t?.(r)}}(class e extends Map{#e;constructor(e){super(e),this.#e=[...super.keys()],d.set(this,!0)}set(e,t){return d.get(this)&&(this.has(e)?this.#e[this.#e.indexOf(e)]=e:this.#e.push(e)),super.set(e,t),this}insert(e,t,n){let r,i=this.has(t),a=this.#e.length,s=A(e),l=s>=0?s:a+s,o=l<0||l>=a?-1:l;if(o===this.size||i&&o===this.size-1||-1===o)return this.set(t,n),this;let c=this.size+ +!i;s<0&&l++;let d=[...this.#e],u=!1;for(let e=l;e<c;e++)if(l===e){let a=d[e];d[e]===t&&(a=d[e+1]),i&&this.delete(t),r=this.get(a),this.set(t,n)}else{u||d[e-1]!==t||(u=!0);let n=d[u?e:e-1],i=r;r=this.get(n),this.delete(n),this.set(n,i)}return this}with(t,n,r){let i=new e(this);return i.insert(t,n,r),i}before(e){let t=this.#e.indexOf(e)-1;if(!(t<0))return this.entryAt(t)}setBefore(e,t,n){let r=this.#e.indexOf(e);return -1===r?this:this.insert(r,t,n)}after(e){let t=this.#e.indexOf(e);if(-1!==(t=-1===t||t===this.size-1?-1:t+1))return this.entryAt(t)}setAfter(e,t,n){let r=this.#e.indexOf(e);return -1===r?this:this.insert(r+1,t,n)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#e=[],super.clear()}delete(e){let t=super.delete(e);return t&&this.#e.splice(this.#e.indexOf(e),1),t}deleteAt(e){let t=this.keyAt(e);return void 0!==t&&this.delete(t)}at(e){let t=u(this.#e,e);if(void 0!==t)return this.get(t)}entryAt(e){let t=u(this.#e,e);if(void 0!==t)return[t,this.get(t)]}indexOf(e){return this.#e.indexOf(e)}keyAt(e){return u(this.#e,e)}from(e,t){let n=this.indexOf(e);if(-1===n)return;let r=n+t;return r<0&&(r=0),r>=this.size&&(r=this.size-1),this.at(r)}keyFrom(e,t){let n=this.indexOf(e);if(-1===n)return;let r=n+t;return r<0&&(r=0),r>=this.size&&(r=this.size-1),this.keyAt(r)}find(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return r;n++}
3}findIndex(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return n;n++}return -1}filter(t,n){let r=[],i=0;for(let e of this)Reflect.apply(t,n,[e,i,this])&&r.push(e),i++;return new e(r)}map(t,n){let r=[],i=0;for(let e of this)r.push([e[0],Reflect.apply(t,n,[e,i,this])]),i++;return new e(r)}reduce(...e){let[t,n]=e,r=0,i=n??this.at(0);for(let n of this)i=0===r&&1===e.length?n:Reflect.apply(t,this,[i,n,r,this]),r++;return i}reduceRight(...e){let[t,n]=e,r=n??this.at(-1);for(let n=this.size-1;n>=0;n--){let i=this.at(n);r=n===this.size-1&&1===e.length?i:Reflect.apply(t,this,[r,i,n,this])}return r}toSorted(t){return new e([...this.entries()].sort(t))}toReversed(){let t=new e;for(let e=this.size-1;e>=0;e--){let n=this.keyAt(e),r=this.get(n);t.set(n,r)}return t}toSpliced(...t){let n=[...this.entries()];return n.splice(...t),new e(n)}slice(t,n){let r=new e,i=this.size-1;if(void 0===t)return r;t<0&&(t+=this.size),void 0!==n&&n>0&&(i=n-1);for(let e=t;e<=i;e++){let t=this.keyAt(e),n=this.get(t);r.set(t,n)}return r}every(e,t){let n=0;for(let r of this){if(!Reflect.apply(e,t,[r,n,this]))return!1;n++}return!0}some(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return!0;n++}return!1}}),"u">typeof window&&window.document&&window.document.createElement;var h=globalThis?.document?t.useLayoutEffect:()=>{};t[" useEffectEvent ".trim().toString()],t[" useInsertionEffect ".trim().toString()];var p=t[" useInsertionEffect ".trim().toString()]||h;function f({prop:e,defaultProp:n,onChange:r=()=>{},caller:i}){let[a,s,l]=function({defaultProp:e,onChange:n}){let[r,i]=t.useState(e),a=t.useRef(r),s=t.useRef(n);return p(()=>{s.current=n},[n]),t.useEffect(()=>{a.current!==r&&(s.current?.(r),a.current=r)},[r,a]),[r,i,s]}({defaultProp:n,onChange:r}),o=void 0!==e,c=o?e:a;{let n=t.useRef(void 0!==e);t.useEffect(()=>{let e=n.current;if(e!==o){let t=o?"controlled":"uncontrolled";console.warn(`${i} is changing from ${e?"controlled":"uncontrolled"} to ${t}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}n.current=o},[o,i])}return[c,t.useCallback(t=>{if(o){let n="function"==typeof t?t(e):t;n!==e&&l.current?.(n)}else s(t)},[o,e,s,l])]}Symbol("RADIX:SYNC_STATE"),e.i(74080);var g=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,r)=>{let i=l(`Primitive.${r}`),a=t.forwardRef((e,t)=>{let{asChild:a,...s}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,n.jsx)(a?i:r,{...s,ref:t})});return a.displayName=`Primitive.${r}`,{...e,[r]:a}},{}),x=e=>{var n;let r,i,{present:a,children:l}=e,o=function(e){var n,r;let[i,a]=t.useState(),s=t.useRef(null),l=t.useRef(e),o=t.useRef("none"),[c,d]=(n=e?"mounted":"unmounted",r={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},t.useReducer((e,t)=>r[e][t]??e,n));return t.useEffect(()=>{let e=b(s.current);o.current="mounted"===c?e:"none"},[c]),h(()=>{let t=s.current,n=l.current;if(n!==e){let r=o.current,i=b(t);e?d("MOUNT"):"none"===i||t?.display==="none"?d("UNMOUNT"):n&&r!==i?d("ANIMATION_OUT"):d("UNMOUNT"),l.current=e}},[e,d]),h(()=>{if(i){let e,t=i.ownerDocument.defaultView??window,n=n=>{let r=b(s.current).includes(CSS.escape(n.animationName));if(n.target===i&&r&&(d("ANIMATION_END"),!l.current)){let n=i.style.animationFillMode;i.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===i.style.animationFillMode&&(i.style.animationFillMode=n)})}},r=e=>{e.target===i&&(o.current=b(s.current))};return i.addEventListener("animationstart",r),i.addEventListener("animationcancel",n),i.addEventListener("animationend",n),()=>{t.clearTimeout(e),i.removeEventListener("animationstart",r),i.removeEventListener("animationcancel",n),i.removeEventListener("animationend",n)}}d("ANIMATION_END")},[i,d]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:t.useCallback(e=>{s.current=e?getComputedStyle(e):null,a(e)},[])}}(a),c="function"==typeof l?l({present:o.isPresent}):t.Children.only(l),d=s(o.ref,(n=c,(i=(r=Object.getOwnPropertyDescriptor(n.props,"ref")?.get)&&"isReactWarning"in r&&r.isReactWarning)?n.ref:(i=(r=Object.getOwnPropertyDescriptor(n,"ref")?.get)&&"isReactWarning"in r&&r.isReactWarning)?n.props.ref:n.props.ref||n.ref));return"function"==typeof l||o.isPresent?t.cloneElement(c,{ref:d}):null};function b(e){return e?.animationName||"none"}x.displayName="Presence";var y=t[" useId ".trim().toString()]||(()=>void 0),w=0;function v(e){let[n,r]=t.useState(y());return h(()=>{e||r(e=>e??String(w++))},[e]),e||(n?`radix-${n}`:"")}var j="Collapsible",[N,C]=r(j),[I,k]=N(j),R=t.forwardRef((e,r)=>{let{__scopeCollapsible:i,open:a,defaultOpen:s,disabled:l,onOpenChange:o,...c}=e,[d,u]=f({prop:a,defaultProp:s??!1,onChange:o,caller:j});return(0,n.jsx)(I,{scope:i,disabled:l,contentId:v(),open:d,onOpenToggle:t.useCallback(()=>u(e=>!e),[u]),children:(0,n.jsx)(g.div,{"data-state":B(d),"data-disabled":l?"":void 0,...c,ref:r})})});R.displayName=j;var P="CollapsibleTrigger",S=t.forwardRef((e,t)=>
3{let{__scopeCollapsible:r,...i}=e,a=k(P,r);return(0,n.jsx)(g.button,{type:"button","aria-controls":a.contentId,"aria-expanded":a.open||!1,"data-state":B(a.open),"data-disabled":a.disabled?"":void 0,disabled:a.disabled,...i,ref:t,onClick:m(e.onClick,a.onOpenToggle)})});S.displayName=P;var E="CollapsibleContent",O=t.forwardRef((e,t)=>{let{forceMount:r,...i}=e,a=k(E,e.__scopeCollapsible);return(0,n.jsx)(x,{present:r||a.open,children:({present:e})=>(0,n.jsx)(T,{...i,ref:t,present:e})})});O.displayName=E;var T=t.forwardRef((e,r)=>{let{__scopeCollapsible:i,present:a,children:l,...o}=e,c=k(E,i),[d,u]=t.useState(a),A=t.useRef(null),m=s(r,A),p=t.useRef(0),f=p.current,x=t.useRef(0),b=x.current,y=c.open||d,w=t.useRef(y),v=t.useRef(void 0);return t.useEffect(()=>{let e=requestAnimationFrame(()=>w.current=!1);return()=>cancelAnimationFrame(e)},[]),h(()=>{let e=A.current;if(e){v.current=v.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let t=e.getBoundingClientRect();p.current=t.height,x.current=t.width,w.current||(e.style.transitionDuration=v.current.transitionDuration,e.style.animationName=v.current.animationName),u(a)}},[c.open,a]),(0,n.jsx)(g.div,{"data-state":B(c.open),"data-disabled":c.disabled?"":void 0,id:c.contentId,hidden:!y,...o,ref:m,style:{"--radix-collapsible-content-height":f?`${f}px`:void 0,"--radix-collapsible-content-width":b?`${b}px`:void 0,...e.style},children:y&&l})});function B(e){return e?"open":"closed"}var _=t.createContext(void 0),M="Accordion",D=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[L,U,Q]=function(e){let i=e+"CollectionProvider",[a,o]=r(i),[c,d]=a(i,{collectionRef:{current:null},itemMap:new Map}),u=e=>{let{scope:r,children:i}=e,a=t.default.useRef(null),s=t.default.useRef(new Map).current;return(0,n.jsx)(c,{scope:r,itemMap:s,collectionRef:a,children:i})};u.displayName=i;let A=e+"CollectionSlot",m=l(A),h=t.default.forwardRef((e,t)=>{let{scope:r,children:i}=e,a=s(t,d(A,r).collectionRef);return(0,n.jsx)(m,{ref:a,children:i})});h.displayName=A;let p=e+"CollectionItemSlot",f="data-radix-collection-item",g=l(p),x=t.default.forwardRef((e,r)=>{let{scope:i,children:a,...l}=e,o=t.default.useRef(null),c=s(r,o),u=d(p,i);return t.default.useEffect(()=>(u.itemMap.set(o,{ref:o,...l}),()=>void u.itemMap.delete(o))),(0,n.jsx)(g,{...{[f]:""},ref:c,children:a})});return x.displayName=p,[{Provider:u,Slot:h,ItemSlot:x},function(n){let r=d(e+"CollectionConsumer",n);return t.default.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${f}]`));return Array.from(r.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[r.collectionRef,r.itemMap])},o]}(M),[z,W]=r(M,[Q,C]),Y=C(),F=t.default.forwardRef((e,t)=>{let{type:r,...i}=e;return(0,n.jsx)(L.Provider,{scope:e.__scopeAccordion,children:"multiple"===r?(0,n.jsx)(q,{...i,ref:t}):(0,n.jsx)(J,{...i,ref:t})})});F.displayName=M;var[H,$]=z(M),[V,G]=z(M,{collapsible:!1}),J=t.default.forwardRef((e,r)=>{let{value:i,defaultValue:a,onValueChange:s=()=>{},collapsible:l=!1,...o}=e,[c,d]=f({prop:i,defaultProp:a??"",onChange:s,caller:M});return(0,n.jsx)(H,{scope:e.__scopeAccordion,value:t.default.useMemo(()=>c?[c]:[],[c]),onItemOpen:d,onItemClose:t.default.useCallback(()=>l&&d(""),[l,d]),children:(0,n.jsx)(V,{scope:e.__scopeAccordion,collapsible:l,children:(0,n.jsx)(K,{...o,ref:r})})})}),q=t.default.forwardRef((e,r)=>{let{value:i,defaultValue:a,onValueChange:s=()=>{},...l}=e,[o,c]=f({prop:i,defaultProp:a??[],onChange:s,caller:M}),d=t.default.useCallback(e=>c((t=[])=>[...t,e]),[c]),u=t.default.useCallback(e=>c((t=[])=>t.filter(t=>t!==e)),[c]);return(0,n.jsx)(H,{scope:e.__scopeAccordion,value:o,onItemOpen:d,onItemClose:u,children:(0,n.jsx)(V,{scope:e.__scopeAccordion,collapsible:!0,children:(0,n.jsx)(K,{...l,ref:r})})})}),[X,Z]=z(M),K=t.default.forwardRef((e,r)=>{let i,{__scopeAccordion:a,disabled:l,dir:o,orientation:c="vertical",...d}=e,u=s(t.default.useRef(null),r),A=U(a),h="ltr"===(i=t.useContext(_),o||i||"ltr"),p=m(e.onKeyDown,e=>
3{if(!D.includes(e.key))return;let t=e.target,n=A().filter(e=>!e.ref.current?.disabled),r=n.findIndex(e=>e.ref.current===t),i=n.length;if(-1===r)return;e.preventDefault();let a=r,s=i-1,l=()=>{(a=r+1)>s&&(a=0)},o=()=>{(a=r-1)<0&&(a=s)};switch(e.key){case"Home":a=0;break;case"End":a=s;break;case"ArrowRight":"horizontal"===c&&(h?l():o());break;case"ArrowDown":"vertical"===c&&l();break;case"ArrowLeft":"horizontal"===c&&(h?o():l());break;case"ArrowUp":"vertical"===c&&o()}let d=a%i;n[d].ref.current?.focus()});return(0,n.jsx)(X,{scope:a,disabled:l,direction:o,orientation:c,children:(0,n.jsx)(L.Slot,{scope:a,children:(0,n.jsx)(g.div,{...d,"data-orientation":c,ref:u,onKeyDown:l?void 0:p})})})}),ee="AccordionItem",[et,en]=z(ee),er=t.default.forwardRef((e,t)=>{let{__scopeAccordion:r,value:i,...a}=e,s=Z(ee,r),l=$(ee,r),o=Y(r),c=v(),d=i&&l.value.includes(i)||!1,u=s.disabled||e.disabled;return(0,n.jsx)(et,{scope:r,open:d,disabled:u,triggerId:c,children:(0,n.jsx)(R,{"data-orientation":s.orientation,"data-state":ed(d),...o,...a,ref:t,disabled:u,open:d,onOpenChange:e=>{e?l.onItemOpen(i):l.onItemClose(i)}})})});er.displayName=ee;var ei="AccordionHeader",ea=t.default.forwardRef((e,t)=>{let{__scopeAccordion:r,...i}=e,a=Z(M,r),s=en(ei,r);return(0,n.jsx)(g.h3,{"data-orientation":a.orientation,"data-state":ed(s.open),"data-disabled":s.disabled?"":void 0,...i,ref:t})});ea.displayName=ei;var es="AccordionTrigger",el=t.default.forwardRef((e,t)=>{let{__scopeAccordion:r,...i}=e,a=Z(M,r),s=en(es,r),l=G(es,r),o=Y(r);return(0,n.jsx)(L.ItemSlot,{scope:r,children:(0,n.jsx)(S,{"aria-disabled":s.open&&!l.collapsible||void 0,"data-orientation":a.orientation,id:s.triggerId,...o,...i,ref:t})})});el.displayName=es;var eo="AccordionContent",ec=t.default.forwardRef((e,t)=>{let{__scopeAccordion:r,...i}=e,a=Z(M,r),s=en(eo,r),l=Y(r);return(0,n.jsx)(O,{role:"region","aria-labelledby":s.triggerId,"data-orientation":a.orientation,...l,...i,ref:t,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});function ed(e){return e?"open":"closed"}ec.displayName=eo,e.s(["Accordion",0,F,"AccordionContent",0,ec,"AccordionHeader",0,ea,"AccordionItem",0,er,"AccordionTrigger",0,el,"Content",0,ec,"Header",0,ea,"Item",0,er,"Root",0,F,"Trigger",0,el,"createAccordionScope",0,W],67660)},36648,e=>{"use strict";let t=[{slug:"solo-monthly",name:"solo",displayName:"Solo",billingInterval:"month",unitAmount:1e3,sandboxPriceId:"price_1TWHC47TSJOOeW4pYVUZmTTL",livePriceId:"price_1TWgYa4brUnvLvap6WZawt2Y"},{slug:"solo-yearly",name:"solo",displayName:"Solo",billingInterval:"year",unitAmount:9600,sandboxPriceId:"price_1TWHDt7TSJOOeW4pcQMAxFFl",livePriceId:"price_1TWgYa4brUnvLvapvTI3FsFI"},{slug:"pro-monthly",name:"pro",displayName:"Pro",billingInterval:"month",unitAmount:1600,sandboxPriceId:"price_1TWYzl7TSJOOeW4p6cN3r0au",livePriceId:"price_1TWgYh4brUnvLvapBzdjJrmD"},{slug:"pro-yearly",name:"pro",displayName:"Pro",billingInterval:"year",unitAmount:14400,sandboxPriceId:"price_1TWZ0H7TSJOOeW4pZ3jcZJwY",livePriceId:"price_1TWgYg4brUnvLvapEJ5YKLWx"},{slug:"teams-monthly",name:"teams",displayName:"Teams",billingInterval:"month",unitAmount:1500,sandboxPriceId:"price_1SUTOd7TSJOOeW4pCr1vMHMf",livePriceId:"price_1SoMza4brUnvLvapR2ZcQhU4"}];e.s(["SEAT_OPTIONS",0,[3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,35,40,45,50,60,80,100],"findPlan",0,(e,n)=>{let r=t.find(t=>t.name===e&&t.billingInterval===n)??t.find(t=>t.name===e);if(!r)throw Error(`No plan found for ${e}`);return r}])},68884,e=>{"use strict";var t=e.i(18050),n=e.i(71645),r=e.i(61950),i=e.i(67660);function a(){return(0,t.jsx)("section",{className:"items-stretch mt-10 max-w-[1024px] w-full flex flex-col justify-center px-12 box-border max-sm:mt-4 max-sm:px-0",children:(0,t.jsxs)(i.Root,{type:"multiple",children:[(0,t.jsxs)(i.Item,{className:"accordion-item",value:"acc-pricing-01",children:[(0,t.jsx)(i.Header,{className:"accordion-header",children:(0,t.jsxs)(i.Trigger,{className:"accordion-trigger","data-umami-event":"How does my subscription work?",children:[(0,t.jsx)("span",{className:"grow",children:"How does my subscription work?"}),(0,t.jsx)(r.Icon,{name:"Chevron",type:"down",size:16,className:"accordion-chevron"})]})}),(0,t.jsxs)(i.Content,{className:"accordion-content",children:[(0,t.jsxs)("p",{children:["Every plan includes a ",(0,t.jsx)("strong",{children:"14-day free trial"}),", no credit card required. Add a payment method before the trial ends to keep your plan. If you don't, the trial cancels automatically and your team drops to unlicensed use, no charge. After conversion, your subscription is billed monthly or yearly depending on the plan you chose. You can cancel anytime from the dashboard, and 
3your plan stays active until the end of your current billing period."]}),(0,t.jsx)("p",{children:"Each plan includes a number of license keys you can activate on your devices. License keys can be moved between devices. Just deactivate on the current device before activating on a new one."})]})]}),(0,t.jsxs)(i.Item,{className:"accordion-item",value:"acc-pricing-02",children:[(0,t.jsx)(i.Header,{className:"accordion-header",children:(0,t.jsxs)(i.Trigger,{className:"accordion-trigger","data-umami-event":"How many devices can I use LocalCan on?",children:[(0,t.jsx)("span",{className:"grow",children:"How many devices can I use LocalCan on?"}),(0,t.jsx)(r.Icon,{name:"Chevron",type:"down",size:16,className:"accordion-chevron"})]})}),(0,t.jsxs)(i.Content,{className:"accordion-content",children:[(0,t.jsx)("p",{children:"Each license key activates LocalCan on one device:"}),(0,t.jsxs)("ul",{children:[(0,t.jsxs)("li",{children:[(0,t.jsx)("strong",{children:"Solo"}),": 1 license key (1 device)"]}),(0,t.jsxs)("li",{children:[(0,t.jsx)("strong",{children:"Pro"}),": 2 license keys (2 devices)"]}),(0,t.jsxs)("li",{children:[(0,t.jsx)("strong",{children:"Teams"}),": 1 license key per seat (3 to 200 seats)"]})]}),(0,t.jsxs)("p",{children:["Move a key to a different device anytime. Deactivate it on the old device first, then activate on the new one. There's no limit to how many other devices can"," ",(0,t.jsx)("em",{children:"access"}),'".local" domains over your local network.']})]})]}),(0,t.jsxs)(i.Item,{className:"accordion-item",value:"acc-pricing-03",children:[(0,t.jsx)(i.Header,{className:"accordion-header",children:(0,t.jsxs)(i.Trigger,{className:"accordion-trigger","data-umami-event":"Limits on Public URLs, custom domains, local domains?",children:[(0,t.jsx)("span",{className:"grow",children:"Are there limits on Public URLs, custom domains, or local domains?"}),(0,t.jsx)(r.Icon,{name:"Chevron",type:"down",size:16,className:"accordion-chevron"})]})}),(0,t.jsxs)(i.Content,{className:"accordion-content",children:[(0,t.jsxs)("p",{children:["All plans include ",(0,t.jsx)("strong",{children:'unlimited local-network ".local" domains'}),"."]}),(0,t.jsx)("p",{children:"Public URLs and custom domains are limited by plan:"}),(0,t.jsxs)("ul",{children:[(0,t.jsxs)("li",{children:[(0,t.jsx)("strong",{children:"Free"}),": 1 Public URL at a time (HTTP), 60-minute sessions, 1 GB per calendar month"]}),(0,t.jsxs)("li",{children:[(0,t.jsx)("strong",{children:"Solo"}),": 5 Public URLs, 2 custom domains"]}),(0,t.jsxs)("li",{children:[(0,t.jsx)("strong",{children:"Pro"}),": 10 Public URLs, 4 custom domains"]}),(0,t.jsxs)("li",{children:[(0,t.jsx)("strong",{children:"Teams"}),": unlimited"]})]}),(0,t.jsxs)("p",{children:["On the paid plans, Public URLs on ",(0,t.jsx)("strong",{children:"*.localcan.dev"})," are reserved for up to 7 days after you pause them or stop using them, and Public URLs on your"," ",(0,t.jsx)("strong",{children:"custom domain"})," never expire. Free sessions get a fresh random URL on"," ",(0,t.jsx)("strong",{children:"*.trylocalcan.com"})," each time."]})]})]}),(0,t.jsxs)(i.Item,{className:"accordion-item",value:"acc-pricing-04",children:[(0,t.jsx)(i.Header,{className:"accordion-header",children:(0,t.jsxs)(i.Trigger,{className:"accordion-trigger","data-umami-event":"Can I switch plans?",children:[(0,t.jsx)("span",{className:"grow",children:"Can I switch plans?"}),(0,t.jsx)(r.Icon,{name:"Chevron",type:"down",size:16,className:"accordion-chevron"})]})}),(0,t.jsxs)(i.Content,{className:"accordion-content",children:[(0,t.jsx)("p",{children:"Yes, anytime from the dashboard."}),(0,t.jsxs)("ul",{children:[(0,t.jsxs)("li",{children:[(0,t.jsx)("strong",{children:"Upgrades"}),"(Solo to Pro, Pro to Teams, monthly to yearly) take effect immediately. You're charged the prorated difference. If you've prepaid yearly time, the unused value becomes account credit applied to upcoming invoices."]}),(0,t.jsxs)("li",{children:[(0,t.jsx)("strong",{children:"Downgrades"})," (Pro to Solo, yearly to monthly) take effect at the end of your current billing period. You keep your current plan until renewal."]}),(0,t.jsx)("li",{children:"Switching from Solo or Pro to Teams is self-serve. Switching from Teams to Solo or Pro is support-handled. Contact us if you need to make that change."})]})]})]}),(0,t.jsxs)(i.Item,{className:"accordion-item",value:"acc-pricing-05",children:[(0,t.jsx)(i.Header,{className:"accordion-header",children:(0,t.jsxs)(i.Trigger,{className:"accordion-trigger","data-umami-event":"What happens after the trial ends?",children:[(0,t.jsx)("span",{className:"grow",children:"What happens after the trial ends?"}),(0,t.jsx)(r.Icon,{name:"Chevron",type:"down",size:16,className:"accordion-chevron"})]})}),(0,t.jsx)(i.Content,{className:"accordion-content",children:(0,t.jsx)("p",{children:"If you've added a payment method during the trial, it's charged automatically when the 14 days end and your subscription becomes active. If you haven't, the trial cancels automatically, nothing is charged, and 
3your team drops to unlicensed use. You can cancel anytime during the trial from the dashboard."})})]}),(0,t.jsxs)(i.Item,{className:"accordion-item",value:"acc-pricing-06",children:[(0,t.jsx)(i.Header,{className:"accordion-header",children:(0,t.jsxs)(i.Trigger,{className:"accordion-trigger","data-umami-event":"What happens if I cancel my subscription?",children:[(0,t.jsx)("span",{className:"grow",children:"What happens if I cancel my subscription?"}),(0,t.jsx)(r.Icon,{name:"Chevron",type:"down",size:16,className:"accordion-chevron"})]})}),(0,t.jsx)(i.Content,{className:"accordion-content",children:(0,t.jsxs)("p",{children:["Cancellation takes effect at the ",(0,t.jsx)("strong",{children:"end of your current billing period"}),'. You keep full access until then, and nothing more is charged. After that, LocalCan drops to unlicensed use, where you can keep using unlimited local ".local" domains. You can also sign up for the Free plan to keep one live Public URL at a time; custom domains and multiple concurrent URLs require a paid plan. You can resume the subscription anytime before the cancellation date, or start a new one from the dashboard later.']})})]}),(0,t.jsxs)(i.Item,{className:"accordion-item",value:"acc-pricing-07",children:[(0,t.jsx)(i.Header,{className:"accordion-header",children:(0,t.jsxs)(i.Trigger,{className:"accordion-trigger","data-umami-event":"Can I get a refund?",children:[(0,t.jsx)("span",{className:"grow",children:"Can I get a refund?"}),(0,t.jsx)(r.Icon,{name:"Chevron",type:"down",size:16,className:"accordion-chevron"})]})}),(0,t.jsxs)(i.Content,{className:"accordion-content",children:[(0,t.jsx)("p",{children:"Every subscription starts with a 14-day free trial, no credit card required, so you can try any plan risk-free. After the trial, you can cancel anytime from the dashboard. Your plan stays active until the end of the current billing period and isn't charged again. We don't refund subscription periods that have already started."}),(0,t.jsxs)("p",{children:["Email"," ",(0,t.jsx)("a",{href:"mailto:[email protected]?subject=Refund request",children:"[email protected]"}),". I'd love to hear your feedback too."]})]})]}),(0,t.jsxs)(i.Item,{className:"accordion-item",value:"acc-pricing-08",children:[(0,t.jsx)(i.Header,{className:"accordion-header",children:(0,t.jsxs)(i.Trigger,{className:"accordion-trigger","data-umami-event":"Can I use LocalCan without a subscription?",children:[(0,t.jsx)("span",{className:"grow",children:"Can I use LocalCan without a subscription?"}),(0,t.jsx)(r.Icon,{name:"Chevron",type:"down",size:16,className:"accordion-chevron"})]})}),(0,t.jsx)(i.Content,{className:"accordion-content",children:(0,t.jsx)("p",{children:'Yes, two ways. Without an account, LocalCan publishes unlimited local-network ".local" domains. Sign up for the Free plan — email only, no card — and you also get one live Public URL at a time, in 60-minute HTTP sessions, with 1 GB of traffic per calendar month. TCP tunnels and custom domains require a paid plan.'})})]})]})})}var s=e.i(36648);e.i(60840);var l=e.i(60216);e.s(["Pricing",0,function(){let[e,i]=(0,n.useState)("year"),[o,c]=(0,n.useState)(3),[d,u]=(0,n.use
3State)(!1),[A,m]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let e=setTimeout(()=>u(!0),5e3);return()=>clearTimeout(e)},[]);let h=(0,l.isDev)()?"https://www.localcan.local":"https://www.localcan.com",p=`${h}/dashboard/signup`;async function f(){if(!A){m(!0);try{let e=JSON.parse(localStorage.getItem("utmParams")||"{}"),t=await fetch(`${h}/dashboard/api/v1/checkout/purchase/personal-license`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({utmParams:e})});if(!t.ok)throw Error(await t.text());let{url:n}=await t.json();if(n)window.location.href=n;else throw Error("No checkout URL in response")}catch(e){console.error("Lifetime checkout failed:",e),m(!1)}}}let g=(0,s.findPlan)("solo",e),x=(0,s.findPlan)("pro",e),b=(0,s.findPlan)("teams","month"),y="year"===e?Math.round(g.unitAmount/12/100):g.unitAmount/100,w="year"===e?Math.round(x.unitAmount/12/100):x.unitAmount/100,v=b.unitAmount/100*o;return(0,t.jsxs)("section",{className:"section-1 my-[140px] max-sm:my-20 max-w-[1280px] scroll-m-20",id:"pricing",children:[(0,t.jsx)("h1",{className:"heading-1 bg-(image:--gradient-h1-blue) max-w-[32ch] text-balance pb-4",children:"Pricing"}),(0,t.jsx)("h2",{className:"subheading text-subtle -mt-4",children:"That works for developers, SaaS owners and agencies."}),(0,t.jsxs)("div",{role:"radiogroup","aria-label":"Billing interval",className:"inline-flex items-center bg-whisper rounded-full p-1 mt-6 text-base",children:[(0,t.jsx)("button",{role:"radio",type:"button","aria-checked":"month"===e,onClick:()=>i("month"),"data-umami-event":"Pricing Toggle Monthly",className:`px-5 py-2 rounded-full transition-colors cursor-pointer border-0 font-medium ${"month"===e?"bg-white dark:bg-neutral-700 text-main shadow-soft":"bg-transparent text-faint hover:text-subtle"}`,children:"Pay monthly"}),(0,t.jsxs)("button",{role:"radio",type:"button","aria-checked":"year"===e,onClick:()=>i("year"),"data-umami-event":"Pricing Toggle Yearly",className:`px-5 py-2 rounded-full transition-colors cursor-pointer border-0 font-medium ${"year"===e?"bg-white dark:bg-neutral-700 text-main shadow-soft":"bg-transparent text-faint hover:text-subtle"}`,children:["Pay yearly ",(0,t.jsx)("span",{className:"text-accent ml-1 text-sm",children:"Save up to 25%"})]})]}),(0,t.jsxs)("div",{className:"mt-2 w-full rounded-3xl shadow-soft p-8 pb-4 grid grid-cols-4 gap-x-12 gap-y-10 max-lg:grid-cols-2 max-sm:grid-cols-1 max-sm:gap-y-8 max-sm:divide-y max-sm:divide-line-light bg-neutral-50 dark:bg-neutral-900",children:[(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("h3",{className:"text-2xl font-semibold leading-7 tracking-tight text-muted",children:"Free"}),(0,t.jsx)("div",{className:"flex items-baseline gap-1 mt-2",children:(0,t.jsx)("span",{className:"text-[2rem] font-bold leading-none tracking-tight text-main",children:"$0"})}),(0,t.jsx)("p",{className:"text-muted text-[15px] leading-snug mt-2 min-h-[2.5rem]",children:"For ephemeral Public URLs and local development"}),(0,t.jsx)("a",{href:`${h}/dashboard/get-started?plan=free`,className:"btn-secondary mt-3 self-start h-12 px-6","data-umami-event":"Pricing Free Signup",children:"Sign Up Free"}),(0,t.jsxs)("ul",{className:"pricing-features text-base leading-6 mt-6",children:[(0,t.jsxs)("li",{children:["Desktop app + CLI",(0,t.jsx)("sub",{className:"block text-sm pb-1 leading-4 text-muted",children:"Mac / Windows / Linux"})]}),(0,t.jsxs)("li",{children:["1 live Public URL",(0,t.jsx)("sub",{className:"block text-sm pb-1 leading-4 text-muted",children:"60-min sessions, 1 GB/month"})]}),(0,t.jsxs)("li",{children:["MCP server for AI agents",(0,t.jsx)("sub",{className:"block text-sm pb-1 leading-4 text-muted",children:"Claude Code / Codex / Cursor"})]}),(0,t.jsx)("li",{children:"Unlimited .local domains"}),(0,t.jsx)("li",{children:"Automatic HTTPS"}),(0,t.jsx)("li",{children:"Inspect traffic"}),(0,t.jsx)("li",{children:"Replay requests"})]})]}),(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("h3",{className:"text-2xl font-semibold leading-7 tracking-tight text-main",children:"Solo"}),(0,t.jsxs)("div",{className:"flex items-baseline gap-1 mt-2",children:[(0,t.jsxs)("span",{className:"text-[2rem] font-bold leading-none tracking-tight text-main",children:["$",y]}),(0,t.jsx)("span",{className:"text-muted text-base tracking-tight",children:"/month"})]}),(0,t.jsx)("p",{className:"text-muted text-[15px] leading-snug mt-2 min-h-[2.5rem]",children:"For solo developers with one device"}),(0,t.jsx)("a",{href:p,"data-umami-event":`Pricing Solo ${"year"===e?"Yearly":"Monthly"}`,className:"btn-outlined-action mt-3 self-start h-12",children:"Start Free Trial"}),(0,t.jsx)("p",{className:"text-main font-semibold mt-6 mb-1 text-base",children:"Everything in Free, plus:"}),(0,t.jsxs)("ul",{className:"pricing-features text-base leading-6",children:[(0,t.jsxs)("li",{children:["1 user, 1 device",(0,t.jsx)("sub",{className:"block text-sm pb-1 leading-4 text-muted",children:"Mac / Windows / Linux"})]}),(0,t.jsxs)("li",{children:["5 live Public URLs",(0,t.jsx)("sub",{className:"block text-sm pb-1 leading-4 text-muted",children:"HTTPS / TCP"})]}),(0,t.jsxs)("li",{children:["2 Snapshots",(0,t.jsx)("sub",{className:"block text-sm pb-1 leading-4 text-muted",children:"Always-on Public URL"})]}),(0,t.jsxs)("li",{children:["Access control",(0,t.jsx)("sub",{className:"block text-sm pb-1 leading-4 text-muted",children:"Password, secret link, IP rules"})]}),(0,t.jsx)("li",{children:"2 custom domains"}),(0,t.jsx)("li",{children:"48h email support"})]})]}),(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsxs)("div",{className:"flex items-center gap-4 flex-wrap",children:[(0,t.jsx)("h3",{className:"text-2xl font-semibold leading-7 tracking-tight bg-clip-text text-transparent bg-(image:--gradient-pricing-personal) bg-[length:400%_100%] bg-center",children:"Pro"}),(0,t.jsx)("span",{className:"px-1.5 py-1 text-sm leading-[14px] rounded-lg border border-accent/50 text-accent font-medium whitespace-nowrap",children:"Most Popular"})]}),(0,t.jsxs)("div",{className:"flex items-baseline gap-1 mt-2",children:[(0,t.jsxs)("span",{className:"text-[2rem] font-bold leading-none tracking-tight text-main",children:["$",w]}),(0,t.jsx)("span",{className:"text-muted text-base tracking-tight",children:"/month"})]}),(0,t.jsx)("p",{className:"text-muted text-[15px] leading-snug mt-2 min-h-[2.5rem]",children:"For developers with multiple projects and devices"}),(0,t.jsx)("a",{href:p,"data-umami-event":`Pricing Pro ${"year"===e?"Yearly":"Monthly"}`,className:"btn-primary-action bg-(image:--gradient-cta) mt-3 self-start  h-12",children:"Start Free Trial"}),(0,t.jsx)("p",{className:"text-main font-semibold mt-6 mb-1 text-base",children:"Everything in Free, plus:"}),(0,t.jsxs)("ul",{className:"pricing-features text-base leading-6",children:[(0,t.jsxs)("li",{children:["1 user, 2 devices",(0,t.jsx)("sub",{className:"block text-sm pb-1 leading-4 text-muted",children:"Mac / Windows / Linux"})]}),(0,t.jsxs)("li",{children:["10 live Public URLs",(0,t.jsx)("sub",{className:"block text-sm pb-1 leading-4 text-muted",children:"HTTPS / TCP"})]}),(0,t.jsxs)("li",{children:["4 Snapshots",(0,t.jsx)("sub",{className:"block text-sm pb-1 leading-4 text-muted",children:"Always-on Public URL"})]}),(0,t.jsxs)("li",{children:["Access control",(0,t.jsx)("sub",{className:"block text-sm pb-1 leading-4 text-muted",children:"Password, secret link, IP rules"})]}),(0,t.jsx)("li",{children:"4 custom domains"}),(0,t.jsx)("li",{children:"24h email support"})]})]}),(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("h3",{className:"text-2xl font-semibold leading-7 tracking-tight bg-clip-text text-transparent bg-(image:--gradient-pricing-teams)",children:"Teams"}),(0,t.jsxs)("div",{className:"flex items-baseline gap-1 mt-2",children:[(0,t.jsxs)("span",{className:"text-[2rem] font-bold leading-none tracking-tight text-main",children:["$",v]}),(0,t.jsx)("span",{className:"text-muted text-base tracking-tight",children:"/month"})]}),(0,t.jsx)("p",{className:"text-muted text-[15px] leading-snug mt-2 min-h-[2.5rem]",children:"For teams of any size"}),(0,t.jsx)("a",{href:p,"data-umami-event":"Pricing Teams",className:"btn-outlined-action mt-3 self-start h-12",children:"Start Free Trial"}),(0,t.jsx)("p",{className:"text-main font-semibold mt-6 mb-1 text-base",children:"Everything in Pro, plus:"}),(0,t.jsxs)("ul",{className:"pricing-features text-base leading-6",children:[(0,t.jsxs)("li",{children:[(0,t.jsxs)("span",{className:"relative inline-flex items-center gap-0 align-baseline",children:[(0,t.jsxs)("span",{className:"text-main underline decoration-faint underline-offset-4",children:[o," seats"]}),(0,t.jsx)(r.Icon,{name:"Chevron",type:"down",size:16,className:"mt-0.5"}),(0,t.jsx)("select",{value:o,onChange:e=>c(Number(e.target.value)),"aria-label":"Seats included","data-umami-event":"Pricing Teams Seats",className:"absolute inset-0 opacity-0 cursor-pointer",children:s.SEAT_OPTIONS.map(e=>(0,t.jsxs)("option",{value:e,children:[e," seats"]},e))})]})," ","included",(0,t.jsx)("sub",{className:"block text-sm pb-1 leading-4 text-muted",children:"$15/seat/month"})]}),(0,t.jsx)("li",{children:"Team-level custom domains"}),(0,t.jsx)("li",{children:"Unlimited team members"}),(0,t.jsx)("li",{children:"Unlimited custom domains"}),(0,t.jsx)("li",{children:"Unlimited Public URLs"}),(0,t.jsx)("li",{children:"Unlimited Snapshots"}),(0,t.jsxs)("li",{children:["Team access policies",(0,t.jsx)("sub",{className:"block text-sm pb-1 leading-4 text-muted",children:"One policy shared across many URLs"})]}),(0,t.jsx)("li",{children:"RBAC and user roles"}),(0,t.jsx)("li",{children:"Okta SSO + SCIM provisioning"}),(0,t.jsx)("li",{children:"Priority Zoom & email support"})]})]})]}),(0,t.jsxs)("div",{className:"mt-2 w-full rounded-3xl shadow-soft bg-neutral-50 dark:bg-neutral-900 px-8 py-6 flex items-center justify-between gap-6 max-sm:flex-col max-sm:items-start max-sm:gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex flex-wrap-reverse items-center gap-3",children:[(0,t.jsx)("h3",{className:"text-2xl font-semibold leading-7 tracking-tight text-main",children:"Lifetime License"}),(0,t.jsx)("span",{className:"px-1.5 py-1 text-sm leading-[14px] rounded-lg border border-accent/50 text-accent font-medium whitespace-nowrap",children:"Limited offer"})]}),(0,t.jsxs)("p",{className:"text-muted text-[15px] leading-snug mt-2",children:[(0,t.jsx)("span",{className:"font-bold",children:"No subscription"}),","," ",(0,t.jsx)("span",{className:"whitespace-nowrap",children:"2 devices"}),","," ",(0,t.jsx)("span",{className:"whitespace-nowrap",children:"10 Public URLs"}),","," ",(0,t.jsx)("span",{className:"whitespace-nowrap",children:"4 custom domains"}),","," ",(0,t.jsx)("span",{className:"whitespace-nowrap",children:"1 year"})," of free app updates."]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-6 max-sm:w-full max-sm:justify-between",children:[(0,t.jsxs)("div",{className:"flex items-baseline gap-1",children:[(0,t.jsx)("span",{className:"text-[2rem] font-bold leading-none tracking-tight text-main",children:"$189"}),(0,t.jsx)("span",{className:"text-muted text-base tracking-tight",children:"/once"})]}),(0,t.jsx)("button",{type:"button",onClick:f,disabled:A,"data-umami-event":"Pricing Lifetime Buy",className:"btn-primary-action w-35 bg-(image:--gradient-cta) h-12 disabled:opacity-60",children:A?"Opening…":"Buy License"})]})]}),(0,t.jsxs)("p",{className:"font-normal text-base leading-6 max-w-[60ch] text-center tracking-[-0.03em] text-main opacity-60 py-8 max-sm:text-sm max-sm:leading-[21px] max-sm:py-4 [&_a]:text-main",children:[(0,t.jsx)("strong",{children:"No credit card required."}
3)," Prices in USD. VAT may apply.",(0,t.jsx)("br",{}),"Have questions? "," ",d?(0,t.jsx)("a",{href:"mailto:[email protected]",children:"Contact us"}):"Contact us"]}),(0,t.jsx)(a,{})]})}],68884)},41519,50433,e=>{"use strict";e.s([],41519);var t=e.i(18050);e.i(61950),e.i(49025),e.i(22016),e.i(47053),e.i(74013),e.i(21107),e.i(60840);var n=e.i(60216);(0,n.isDev)(),e.i(57688),e.i(41273).default,e.i(6096).default,e.i(68884),e.i(67660),(0,n.isDev)();let r={src:e.i(44078).default,width:96,height:96,blurWidth:8,blurHeight:8,blurDataURL:"data:image/webp;base64,UklGRiABAABXRUJQVlA4TBQBAAAvB8ABAM1VICICHgiADQIAAIA/V9FffgQC0kEIchwIgAAAAAAAAAAAAAAAAEAQAgCB4OEUAoFygeINAADAAwGwQQAAADj/vaqc10lOBAQAwAEAAICAAgAAAAAAAAAAAAAAIAAABIASuNMfl/7r80DQchAAAADO//3dNDQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgIJSy7e4iyyGfKlLnmg7N5ust3E7sa7cbVUp+RPI2qOh/EANhSluEN85hHQvT9rab8mPSqCagxsnbRcpkdY0LCxAM5DeHkjWby+ICP1N4IiBEOSTmrPfh6rsu3xdAcDymxTP51s1nXF+Pwz8NAeM87LrodFfyUuLpT6SpCAE="},i={src:e.i(7226).default,width:96,height:96,blurWidth:8,blurHeight:8,blurDataURL:"data:image/webp;base64,UklGRiQBAABXRUJQVlA4TBcBAAAvB8ABAM1VICICHgiADQIAAAAnkntEBCJXggAkAhAAgAAAAAAAAAAAAAoIAAmAADigimAcOHPB4ZoAAAA8EIAcBAAAgPPPzb5qtZKEFAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDQRDKrWt/mgQDYIAAAAJz/arY66KgUQQQAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAK9CpM2xY5xd3/YbPuRxaQVBaW/lCmV6CiaVbb0o1rtQIv7la83jjBQ7mbZFyear5xZANCV+q2bzWUyrISmjqGweQ65f0QSe4blRQsR17AR56IttAzvhIcn30EOAzjnard0/klvZ9oD2cuHlzA4eTDNxcTIQhGrtYbbQaVJR+MogIA"},a={src:e.i(86877).default,width:96,height:96,blurWidth:8,blurHeight:8,blurDataURL:"data:image/webp;base64,UklGRjABAABXRUJQVlA4TCQBAAAvB8ABAM1VICICHgiADQIAAIBRlXcKIIACiaASAAAQgADAAQAgAEASAABAgkQgCECCBEGggoRIOpgDAADwQABsEAAAAM5/FP8fBIAQCgEARAAAEAIAAAAQgABAAAAEABCgAkEhwqEiqgKUeP058kAAbBAAAADOf3fq8MgEAQBBBAFQAQABEgChIIgDAEASIAAAAAIQOIBEAAQAKyEE/sg0IwCg50tK8uo92ZfNT7qoAQBV/kG+RUyGuDytzm80SxUAWMfldCdSwU1Y3awJe3s6AIBTeTkRIvYQI2F+ePFveOZFxv24m5blLX5720xXRMSXxTVLhm/m++OCMMpr42pF3VnWtOBjiWYNQvoJUfhzW9SBysk0afnLcRyCasRhwV5Vbd8C"},s={src:e.i(70927).default,width:96,height:96,blurWidth:8,blurHeight:8,blurDataURL:"data:image/webp;base64,UklGRvQAAABXRUJQVlA4TOcAAAAvB8ABAM1VICICHggIDgIAAIBbGAAECAAAAAAAAAAAAAAAAAAAAAAAAAQAAAASJjAiwtQG2DZb+yIAADwQtBQGAACA838nAgEATIYGQwAAAAAAAAAAAAAAAAAAAAAAAAAGYAADQCwAyVZ9D4QABwEAAOD8bwYqIAMAgAAQAgAAAAAAAAAAAAAAAAAAAAAAAACAkGJWkACZj5wB/igKEdUbwOfnv7VmvvsYX1eAN4TXp+s827Wf1QLIY/L2jPmYjl3Hmn0HgqQ+VactzKxWAtLharnLnP5hf5ZhZCARto/Lva7XZt8SSAAA"},l={src:e.i(33621).default,width:96,height:96,blurWidth:8,blurHeight:8,blurDataURL:"data:image/webp;base64,UklGRiIBAABXRUJQVlA4TBUBAAAvB8ABAM1VICICHggADiIAAIBlbEqkmoAEQCVACAAC+AcAgAAAAAAAAAAAAIAABBgkNEBiSEWGM0JbAQAA8ECAclABAADOv+uuoAhaBRAlCAAAAAAAAAAAAAAAAAAAAAAAAAgCACB+AIQuw9b6veaBAOQgAAAAnP/u7n+rPRIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAgYJVvi+yH2z+X+RdK0yHYCFCjD6Z5E1OTZT1hO+zDwjIWuuz6SsHY22DEKwJB0b+9CDsGTeI8iXlIO0QmDp+TE0a6e7Lfd0Matt5VQYiVLZluqq6GLF7HOmXCYaR7lrmP0u0/9b96G7zjWkiPPtdFOWqw0OPjuHw8kQ1PAA=="},o={src:e.i(26659).default,width:96,height:96,blurWidth:8,blurHeight:8,blurDataURL:"data:image/webp;base64,UklGRhwBAABXRUJQVlA4TBABAAAvB8ABAM1VICICHggADiIAAABGbJo1rZAAgAAAAIAAAAAAAAAAABAAAAAAgAAAABQJ8DGZWLXcZNnPAQAAeCAAOQgAAADn/3/7/y0pIQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJSsrG3tPRDYHFQAAIDz//6n9ZpVQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCSra67IsemwfwlcVfL1jcafMoMniuCREhFQCj6i5AwmgMrgmd7YAow7QBInjONXqyDjaHJ58HmZIz/U5l6d7QqeArTtGD1Z5Ak4jyrK9vaV3wLjQRxF7q2ZnP53VWlLPaXSNxlzmth/q/nk3cj9b5yHNfyfcdSdw=="},c={src:e.i(30885).default,width:96,height:96,blurWidth:8,blurHeight:8,blurDataURL:"data:image/webp;base64,UklGRiQBAABXRUJQVlA4TBgBAAAvB8ABAM1VICICHggACAIAAID/b9jzTJgB3myMAQAwAAAABgAAAAAAAAAAAAAwezbDbM8Qods/7hYAAIAHApSDCgAAcP5PN9lKd1PbFgwAAIAAAAAAAAAAAAAAAAAAAAAAAAAE8YFPCAEgRkhrHghADgIAAMD51//VNmIhKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAJLW+v+LLNbrjEVRiBs+AwihJdW/eDuxwTRGkqK0Fmq3XvtIsCTIAwhfLda55pkuQwRIOCMr5njz+a2SNYHMiAEGQqdvPnmG362ucYe65c8joqtOKfSaYvcjUqCEsczRwt/X9d6OAnyVea93zqDq8tv77RzOYzrW7b+wPPGapLYC"},d={src:e.i(48028).default,width:96,height:96,blurWidth:8,blurHeight:8,blurDataURL:"data:image/webp;base64,UklGRngAAABXRUJQVlA4TGwAAAAvB8ABAM1VICICHgiADQIAAIDsnaIIPIUohBAQAAAAQACcAAAUAAAACIAAAAQIQAISwUkgACLKK70XAAAgIjKfEcNM+atm3CfQ1e0LY2LTzPdcI40koUWAhazLbugT5zp5u4j14C8gy9SeGwE="},u={src:e.i(48456).default,width:96,height:96,blurWidth:8,blurHeight:8,blurDataURL:"data:image/webp;base64,UklGRjABAABXRUJQVlA4TCMBAAAvB8ABAM1VICICHgiADQIAAAAOTwIJEAQACAEQAAAAAAAAAAAAAAAAAIEAchBBARIHx9UV/59+pjIHAADwQABwEAEAAM7fiJZhokIDJEESCAAAABAgAQgAAADgGQAAAAAAkACAWpQCggqERTt/GB4IgA0CAADA+V/9V86PThGBpCN44ggJCkcAJBCAAAACAgAAhAAAAAAEAgAAAAAQnGiRC+zR+SH6dMzPMhe53oX5XYYfNQlMqertJEfc9ketLiToCbEu4LJF4ssVm/AGzXSW5xMEQurl1GUeUIYcSmre6rg/IzZl57X22read/s2XPNLGA4lX4x6Yjmn9o4UZAyWMVvTjRR/RxgFoBEJ4aGrW14Nd5AIORrZH60KTeV/nes0cAEA"},A=[{src:r,userName:"@dannypostmaa",fullName:"Danny Postma",showOnMobile:!0,text:(0,t.jsxs)("p",{style:{fontSize:"1.4rem"},children:["LocalCan is amazing"," ",(0,t.jsx)("span",{style:{fontFamily:"'Apple Color Emoji', 'Segoe UI Emoji'"},children:"❤️"})]})},{src:u,userName:"@tdinh_me",fullName:"Tony Dinh 🎯",showOnMobile:!0,text:(0,t.jsxs)("p",{style:{fontSize:"1.2rem"},children:[(0,t.jsx)("em",{children:"@LocalCanApp"})," is so cool!"]})},{src:c,userName:"@JessetheSibley",fullName:"Jesse Sibley",showOnMobile:!0,text:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{children:"This tool is a must for any SaaS developer ✨"}),(0,t.jsx)("p",{children:"Replaces ngrok and now makes testing webhooks locally an absolute delight."})]})},{src:a,userName:"@WebIsBae",fullName:"Web Bae",showOnMobile:!0,text:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{children:"For my @webflow folks who have never heard of ngrok…"}),(0,t.jsxs)("p",{children:["Been loving ",(0,t.jsx)("em",{children:"@LocalCanApp"})," as an easy way to serve local code to my dev websites. Works with all browsers (no CORS or https errors) and you can assign a Public URL in one button click which makes it super easy to test your dev code on mobile devices."]})]})},{src:i,userName:"@goenning",fullName:"Guilherme",showOnMobile:!0,text:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("p",{children:["Best purchase I made this week ",(0,t.jsx)("em",{children:"@LocalCanApp"})]}),(0,t.jsx)("p",{children:"I tried so many alternatives and this is has been the best by far!"}),(0,t.jsx)("p",{children:"Working with webhooks instantly goes from 🤬 to 🤩"}),(0,t.jsx)("p",{children:"(not affiliated, just an amazing app!)"})]})},{src:l,userName:"@fayazara",fullName:"Fayaz Ahmed",showOnMobile:!1,text:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("p",{children:["Okay, ",(0,t.jsx)("em",{children:"@LocalCanApp"})," is my new favourite developer tool."]}),(0,t.jsx)("p",{children:"I am working on a realtime feature with web app and phones, where it was mandatory for me to have https and the .local urls work so perfectly.🤌"})]})},{src:o,userName:"@mhenrixon",fullName:"Mikael Henriksson",showOnMobile:!1,text:(0,t.jsxs)("p",{children:["I was super impressed with the ease of ",(0,t.jsx)("em",{children:"@LocalCanApp"})," It made me want to give them money rather than fiddle with configuration. And because it fits my existing use of .local domains in my etc. hosts for each project."]})},{src:s,userName:"@inthepacket",fullName:"RJ",showOnMobile:!0,text:(0,t.jsxs)("p",{children:["Do yourself a favour, stop messing with ngrok and just use ",(0,t.jsx)("em",{children:"@LocalCanApp"}),". I’ve been using it to test some internal webhooks and it’s wonderful"]})},{src:d,userName:"@StatescuRazvan",fullName:"Razvan Statescu",showOnMobile:!1,text:(0,t.jsxs)("p",{children:["I just started using ",(0,t.jsx)("em",{children:"@LocalCanApp"}),", and it works perfectly as an ngrok alternative. Congrats!"]})}];e.s(["data",0,A],50433),e.i(6629).default,e.i(33386).default,e.i(71439).default,e.i(93074).default,e.i(30278).default,e.i(49730).default,e.i(5440).default,e.i(811).default,e.i(4752).default,e.i(17942).default,e.i(4905).default,e.i(46488).default,e.i(31854).default,e.i(40729).default,e.i(78128).default,e.i(70439).default,e.i(12165
3).default,e.i(95056).default,e.i(86265).default},31160,70467,e=>{"use strict";var t=e.i(18050),n=e.i(71645);e.s(["BlackFriday",0,function(){let e=(0,n.useRef)();return(0,n.useEffect)(()=>(e.current=setInterval(function(){var e=document.getElementById("flashButton25");setTimeout(()=>{e&&(e.style.opacity="0.7")},50),setTimeout(()=>{e&&(e.style.opacity="1")},100),setTimeout(()=>{e&&(e.style.opacity="0.6")},150),setTimeout(()=>{e&&(e.style.opacity="1")},200),setTimeout(()=>{e&&(e.style.opacity="0.8")},250),setTimeout(()=>{e&&(e.style.opacity="1")},450)},9e3),()=>{clearInterval(e.current),e.current=null}),[]),(0,t.jsxs)("div",{className:"block bg-gradient-to-r from-[#7370ff_-14%] via-[#e291ff_49%] to-[#ffd954_115%] px-2.5 py-5 text-black text-center text-base font-bold leading-7 tracking-[-0.48px] text-balance max-sm:p-2 max-sm:-mb-8 max-sm:text-sm max-sm:rounded-xl max-sm:mx-6 max-sm:mt-[58px]",children:[(0,t.jsx)("strong",{children:"Black Friday!"})," Less than 50",(0,t.jsxs)("span",{className:"inline-flex flex-row gap-0.5 px-1.5 translate-y-0.5",children:[(0,t.jsx)("span",{className:"bg-[rgb(231,56,56)] h-4 w-1 rounded"}),(0,t.jsx)("span",{className:"bg-[rgb(255,92,59,0.57)] h-4 w-1 rounded"}),(0,t.jsx)("span",{className:"bg-[rgb(0,0,0,0.14)] h-4 w-1 rounded"}),(0,t.jsx)("span",{className:"bg-[rgb(0,0,0,0.14)] h-4 w-1 rounded"}),(0,t.jsx)("span",{className:"bg-[rgb(0,0,0,0.14)] h-4 w-1 rounded"}),(0,t.jsx)("span",{className:"bg-[rgb(0,0,0,0.14)] h-4 w-1 rounded"})]}),"coupons",(0,t.jsxs)("button",{id:"flashButton25",className:"rounded-[7px] bg-black inline-flex gap-1 items-center cursor-pointer border-0 px-2 py-[5px] mx-1.5 text-white font-bold text-sm leading-[14px] tracking-[-0.48px] transition-transform duration-200 hover:translate-y-[-1px] hover:rotate-1 [&_small]:text-white [&_small]:text-xs [&_small]:font-medium [&_small]:leading-[14px] [&_small]:tracking-[-0.36px] [&_small]:opacity-80 hover:[&_small]:opacity-100","data-umami-event":"Copy code: BF20",onClick:()=>{navigator.clipboard.writeText("BF20")},children:["BF20 ",(0,t.jsx)("small",{children:"Copy"})]}),"with 20% OFF."]})}],70467),e.s([],31160)},47053,e=>{"use strict";e.s([]),e.i(41519),e.i(61950),e.i(85492),e.i(31160)},85492,e=>{"use strict";e.s(["TopNav",()=>c],85492);var t=e.i(18050);e.i(47053);var n=e.i(61950),r=e.i(22016);function i({section:e}){return(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsxs)(r.default,{href:"/",className:"flex items-center rounded-md no-underline focus-visible:outline-2 focus-visible:outline-offset-2",children:[(0,t.jsx)("div",{className:"h-8 w-8 mr-0.5 [&_svg]:scale-[0.4] [&_svg]:origin-top-left",children:(0,t.jsx)(n.Icon,{name:"Logo"})}),(0,t.jsxs)("span",{className:"relative text-lg font-bold tracking-tighter text-main ml-1 mr-[7px]",children:["LocalCan",(0,t.jsx)("span",{className:"absolute font-medium text-[6.8px] leading-2 -right-[7px] tracking-normal text-main",children:"TM"})]})]}),e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"text-lg tracking-tight pl-1.5 text-muted",children:"/"}),(0,t.jsx)(r.default,{href:e.href,className:"text-lg tracking-tight pl-1.5 no-underline text-muted",children:e.label})]})]})}e.i(60840);let a=(0,e.i(60216).isDev)()?"https://www.localcan.local":"https://www.localcan.com",s=`${a}/dashboard/login`,l=`${a}/dashboard/signup`;function o(){return(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsxs)("div",{className:"px-4 py-2 rounded-2xl flex gap-6 max-sm:gap-4 font-medium text-sm leading-5 items-center [&>*]:no-underline max-sm:bg-transparent [&_a]:text-main",children:[(0,t.jsx)(r.default,{href:"/docs",className:"max-sm:hidden",children:"Docs"}),(0,t.jsx)(r.default,{href:"/changelog",className:"max-sm:hidden",children:"Changelog"}),(0,t.jsx)(r.default,{href:"/#pricing",className:"max-sm:hidden",children:"Pricing"}),(0,t.jsx)("a",{href:s,className:"max-sm:hidden","data-umami-event":"Login Nav",children:"Log in"})]}),(0,t.jsx)("a",{href:l,"data-umami-event":"Start Trial Nav",className:"bg-(image:--gradient-cta) text-surface font-semibold text-sm px-4 py-2 rounded-full no-underline whitespace-nowrap",children:"Start Building"})]})}function c({section:e}){return(0,t.jsx)("nav",{className:"sticky top-0 z-100 w-full bg-surface/80 backdrop-blur-xl border-b border-cloud",children:(0,t.jsxs)("div",{className:"max-w-360 mx-auto px-4 py-3 box-border flex justify-between items-center text-sm [&>*]:no-underline",children:[(0,t.jsx)(i,{section:e}),(0,t.jsx)(o,{})]})})}},60581,e=>{"use strict";e.i(31160);var t=e.i(70467);e.s(["BlackFriday",()=>t.BlackFriday])}]);

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.