1import{i as e,n as t,t as n}from"./jsx-runtime-BnxRlLMJ.js";import{n as r,t as i}from"./createServerFn-Cs8RU5R2.js";import{l as a,n as o,o as s,t as c,u as l}from"./XMarkIcon-CA5s101z.js";import{B as u,H as d,L as f,R as p,U as m,g as h,h as ee,i as te,s as ne,t as g,z as _}from"./utils-B4uSKpuq.js";import{T as re,a as ie,l as v,s as y,u as ae}from"./DialogStore-DADO6L7C.js";import{n as oe,t as se,u as ce}from"./useBaseUiId-D8iiGtjc.js";import{t as b}from"./CheckIcon-DjCtLBL-.js";import{n as x,r as S}from"./middleware-DPkKdtSy.js";import{n as C,t as le}from"./DialogTitle-DEUnYj8n.js";import{t as ue}from"./useValueChanged-DqPjVIT_.js";import{t as de}from"./DialogRoot-DQtkSKRn.js";import{t as w}from"./button-Dxz6Q0-H.js";import{a as fe,c as pe,i as me,n as he,o as ge,s as T,t as _e}from"./input-Cb1vogHA.js";import{t as E}from"./spinner-38WoB7-W.js";import{t as ve}from"./useAriaLabelledBy-CvlH6B17.js";var D=e(t()),O=D.createContext({disabled:!1});function ye(){return D.useContext(O)}var be=D.createContext(void 0);function xe(e=!0){let t=D.useContext(be);if(t===void 0&&!e)throw Error(d(3));return t}var k={basic:{domains:1,templates:1},pro:{domains:3,templates:3},max:{domains:6,templates:6}},A=[{name:`basic`,displayName:`Basic`,monthlyPrice:9,annualPrice:90,description:`Perfect for personal projects`,limits:k.basic,popular:!1},{name:`pro`,displayName:`Pro`,monthlyPrice:19,annualPrice:190,description:`For growing websites and businesses`,limits:k.pro,popular:!0},{name:`max`,displayName:`Max`,monthlyPrice:29,annualPrice:290,description:`For agencies and power users`,limits:k.max,popular:!1}],j=[{section:`Services`,rows:[{name:`/og`,description:`Custom OG screenshots via templates`,useCase:`Generate the link preview image when your URL is shared on social media`,values:[!0,!0,!0]},{name:`/preview`,description:`Screenshot any URL, no template required`,useCase:`Show a thumbnail preview of any link before a user visits it`,values:[!0,!0,!0]},{name:`/shot`,description:`Generic screenshot API`,useCase:`Private, authenticated server-side screenshots â safe to call from your backend without exposing credentials`,values:[!0,!0,!0],status:`planned`},{name:`/imagen`,description:`Dynamic parameterized image API`,useCase:`WYSIWYG template editor â pass variables to customize text, colors, and layout at request time`,values:[!0,!0,!0],status:`planned`}]},{section:`Limits`,rows:[{name:`Domains`,values:[`1`,`3`,`6`]},{name:`Templates`,values:[`1`,`3`,`6`]},{name:`URL Paths`,values:[`Unlimited`,`Unlimited`,`Unlimited`]},{name:`Image generations`,values:[`Unlimited`,`Unlimited`,`Unlimited`]}]},{section:`Features`,rows:[{name:`TailwindCSS injection (/og)`,values:[!0,!0,!0]},{name:`Popup & cookie banner blocking`,description:`Removes cookie banners, overlays, and scroll locks before capture. Works on most sites â no blocker is perfect.`,values:[!0,!0,!0]}]}],M=function(e){return e.checked=`data-checked`,e.unchecked=`data-unchecked`,e.indeterminate=`data-indeterminate`,e.disabled=`data-disabled`,e.readonly=`data-readonly`,e.required=`data-required`,e.valid=`data-valid`,e.invalid=`data-invalid`,e.touched=`data-touched`,e.dirty=`data-dirty`,e.filled=`data-filled`,e.focused=`data-focused`,e}({});function N(e){return D.useMemo(()=>({checked(t){return e.indeterminate?{}:t?{[M.checked]:``}:{[M.unchecked]:``}},...T}),[e.indeterminate])}var Se=D.createContext(void 0);function Ce(){let e=D.useContext(Se);if(e===void 0)throw Error(d(14));return e}var P=n(),we=`data-parent`,Te=D.forwardRef(function(e,t){let{checked:n,className:r,defaultChecked:i=!1,"aria-labelledby":o,disabled:s=!1,id:c,indeterminate:d=!1,inputRef:g,name:re,onCheckedChange:ie,parent:v=!1,readOnly:y=!1,render:ae,required:b=!1,uncheckedValue:x,value:S,nativeButton:C=!1,...le}=e,{clearErrors:de}=fe(),{disabled:w,name:T,setDirty:_e,setFilled:E,setFocused:O,setTouched:be,state:k,validationMode:A,validityData:j,shouldValidateOnChange:M,validation:Ce}=ge(),Te=ye(),{labelId:Ee,controlId:De,registerControlId:F,getDescriptionProps:I}=me(),L=xe(),R=L?.parent,z=R&&L.allValues,B=w||Te.disabled||L?.disabled||s,V=T??re,H=S??V,Oe=se(),ke=se(),U=De;z?U=v?ke:`${R.id}-${H}`:c&&(U=c);let W={};z&&(v?W=L.parent.getParentProps():H&&(W=L.parent.getChildProps(H)));let Ae=u(ie),{checked:je=n,indeterminate:G=d,onCheckedChange:Me,...Ne}=W,K=L?.value,Pe=L?.setValue,Fe=L?.defaultValue,q=D.useRef(null),J=m(()=>Symbol(`checkbox-control`)),Y=D.useRef(!1),{getButtonProps:Ie,buttonRef:Le}=te({disabled:B,native:C}),X=L?.validation??Ce,[Z,Re]=pe({controlled:H&&K&&!v?K.includes(H):je,default:H&&Fe&&!v?Fe.includes(H):i,name:`Checkbox`,state:`checked`});_(()=>
1{F!==p&&(Y.current=!0,F(J.current,U))},[U,L,F,v,J]),D.useEffect(()=>{let e=J.current;return()=>{!Y.current||F===p||(Y.current=!1,F(e,void 0))}},[F,J]),he({enabled:!L,id:Oe,commit:X.commit,value:Z,controlRef:q,name:V,getValue:()=>Z});let Q=D.useRef(null),ze=h(g,Q,X.inputRef),Be=ve(o,Ee,Q,!C,U??void 0);_(()=>{Q.current&&(Q.current.indeterminate=G,Z&&E(!0))},[Z,G,E]),ue(Z,()=>{L&&!v||(de(V),E(Z),_e(Z!==j.initialValue),M()?X.commit(Z):X.commit(Z,!0))});let Ve=ee({checked:Z,disabled:B,name:v?void 0:V,id:C?void 0:U??void 0,required:b,ref:ze,style:V?l:a,tabIndex:-1,type:`checkbox`,"aria-hidden":!0,onChange(e){if(e.nativeEvent.defaultPrevented)return;let t=e.target.checked,n=oe(ce,e.nativeEvent);Me?.(t,n),Ae(t,n),!n.isCanceled&&(Re(t),H&&K&&Pe&&!v&&Pe(t?[...K,H]:K.filter(e=>e!==H),n))},onFocus(){q.current?.focus()}},S===void 0?f:{value:(L?Z&&S:S)||``},I,L?X.getValidationProps:X.getInputValidationProps),He=z?!!je:Z,Ue=z&&G||d;D.useEffect(()=>{if(!R||!H)return;let e=R.disabledStatesRef.current;return e.set(H,B),()=>{e.delete(H)}},[R,B,H]);let $=D.useMemo(()=>({...k,checked:He,disabled:B,readOnly:y,required:b,indeterminate:Ue}),[k,He,B,y,b,Ue]),We=N($),Ge=ne(`span`,e,{state:$,ref:[Le,q,t,L?.registerControlRef],props:[{id:C?U??void 0:Oe,role:`checkbox`,"aria-checked":G?`mixed`:Z,"aria-readonly":y||void 0,"aria-required":b||void 0,"aria-labelledby":Be,[we]:v?``:void 0,onFocus(){O(!0)},onBlur(){let e=Q.current;e&&(be(!0),O(!1),A===`onBlur`&&X.commit(L?K:e.checked))},onClick(e){y||B||(e.preventDefault(),Q.current?.dispatchEvent(new PointerEvent(`click`,{bubbles:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey})))}},I,X.getValidationProps,le,Ne,Ie],stateAttributesMapping:We});return(0,P.jsxs)(Se.Provider,{value:$,children:[Ge,!Z&&!L&&V&&!v&&x!==void 0&&(0,P.jsx)(`input`,{type:`hidden`,name:V,value:x}),(0,P.jsx)(`input`,{...Ve})]})}),Ee=D.forwardRef(function(e,t){let{render:n,className:r,keepMounted:i=!1,...a}=e,c=Ce(),l=c.checked||c.indeterminate,{mounted:u,transitionStatus:d,setMounted:f}=re(l),p=D.useRef(null),m={...c,transitionStatus:d};o({open:l,ref:p,onComplete(){l||f(!1)}});let h=N(c),ee=D.useMemo(()=>({...h,...s,...T}),[h]),te=i||u,g=ne(`span`,e,{ref:[t,p],state:m,stateAttributesMapping:ee,props:a});return te?g:null});function De({className:e,...t}){return(0,P.jsx)(Te,{className:g(`peer border-border bg-background size-4 shrink-0 rounded-sm border`,`focus-visible:ring-ring/50 focus-visible:ring-3 focus-visible:outline-none`,`disabled:cursor-not-allowed disabled:opacity-50`,`data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary`,e),...t,children:(0,P.jsx)(Ee,{className:`flex items-center justify-center text-current`,children:(0,P.jsx)(b,{className:`size-3.5`})})})}var F=i({method:`POST`}).middleware([S]).handler(r(`61943a96580bb161e3dc45e875ce8262010892714dd15e7ead8345530d0a624c`)),I=i({method:`POST`}).middleware([x]).handler(r(`bd883ca90e9394beba0e1c724b30e8c3ae09f7b4e427d969c6b107f4f5c19bbd`)),L={shot:{name:`/shot`,description:`Generic screenshot API â private, authenticated, safe for server-side use`},imagen:{name:`/imagen`,description:`Dynamic parameterized images â WYSIWYG templates with variable substitution`}};function R({open:e,onOpenChange:t,initialService:n,requireEmail:r=!1,onJoined:i}){let[a,o]=(0,D.useState)(``),[s,l]=(0,D.useState)(new Set([n])),[u,d]=(0,D.useState)(!1),[f,p]=(0,D.useState)(!1);(0,D.useEffect)(()=>{e&&(l(new Set([n])),o(``),p(!1))},[e,n]);let m=e=>{l(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};return(0,P.jsx)(de,{open:e,onOpenChange:t,children:(0,P.jsxs)(ie,{children:[(0,P.jsx)(ae,{className:`data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/20 backdrop-blur-xs duration-150`}),(0,P.jsxs)(y,{className:g(`bg-background ring-foreground/10 fixed top-1/2 left-1/2 z-50 w-full max-w-md -translate-x-1/2 -translate-y-1/2 rounded-xl p-6 ring-1 outline-none`,`data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 duration-150`),children:[!f&&(0,P.jsxs)(`div`,{className:`mb-5 flex items-start justify-between gap-4`,children:[(0,P.jsxs)(`div`,{children:[(0,P.jsx)(le,{className:`text-base font-semibold`,children:`Register your interest`}),(0,P.jsx)(C,{className:`text-muted-foreground mt-1 text-sm`,children:`We'll notify you when these services launch.`})]}),(0,P.jsx)(v,{className:`text-muted-foreground hover:text-foreground -mt-0.5 -mr-1 cursor-pointer rounded-md p-1 transition-colors`,children:(0,P.jsx)(c,{className:`size-4`})})]}),f?(0,P.jsxs)(`div`,{className:`relative py-6 text-center`,children:[(0,P.jsx)(v,{className:`text-muted-foreground hover:text-foreground absolute top-0 right-0 cursor-pointer rounded-md p-1 transition-colors`,children:(0,P.jsx)(c,{className:`size-4`})}),(0,P.jsx)(`p`,{className:`font-medium`,children:`You're on the list!`}),(0,P.jsxs)(`p`,{className:`text-muted-foreground mt-1 text-sm`,children:[`We'll reach out as soon as`,` `,Array.from(s).map(e=>L[e].name).join(` and `),` `,s.size===1?`is`:`are`,` ready.`]}),(0,P.jsx)(w,{className:`mt-4`,variant:`outline`,size:`sm`,onClick:()=>t(!1),children:`Close`})]}):(0,P.jsxs)(`form`,{onSubmit:async e=>{if(e.preventDefault(),s.size!==0){d(!0);try{let e=Array.from(s);r?await Promise.all(e.map(e=>F({data:{email:a,service:e}}))):await Promise.all(e.map(e=>I({data:{service:e}}))),i?.(e),p(!0)}finally{d(!1)}}},className:`space-y-5`,children:[(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(`p`,{className:`text-sm font-medium`,children:`Services`}),(0,P.jsx)(`div`,{className:`space-y-2`,children:Object.keys(L).map(e=>(0,P.jsxs)(`label`,{className:g(`flex cursor-pointer items-start gap-3 rounded-lg border p-3 transition-colors`,s.has(e)?`border-foreground
1/20 bg-foreground/[0.03]`:`border-border hover:bg-muted/40`),children:[(0,P.jsx)(De,{tabIndex:-1,checked:s.has(e),onCheckedChange:()=>m(e),className:`mt-0.5`}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`p`,{className:`font-mono text-sm font-medium`,children:L[e].name}),(0,P.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:L[e].description})]})]},e))})]}),r&&(0,P.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,P.jsx)(`label`,{htmlFor:`waitlist-email`,className:`text-sm font-medium`,children:`Email`}),(0,P.jsx)(_e,{id:`waitlist-email`,type:`email`,placeholder:`[email protected]`,required:!0,value:a,onChange:e=>o(e.target.value)})]}),(0,P.jsxs)(w,{type:`submit`,className:`w-full`,disabled:u||s.size===0,children:[u&&(0,P.jsx)(E,{}),`Notify me`]})]})]})]})})}var z=A;function B({isAnnual:e=!1,renderCta:t,renderPlanBadge:n,renderPlanNameSuffix:r,requireEmail:i=!1}){let[a,o]=(0,D.useState)(new Set),[s,c]=(0,D.useState)(!1),[l,u]=(0,D.useState)(`shot`),d=e=>{u(e),c(!0)},f=t=>e?t.annualPrice:t.monthlyPrice,p=e?`/yr`:`/mo`;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`div`,{className:`flex flex-col gap-6 md:hidden`,children:z.map(e=>{let i=e.popular,o=n?.(e);return(0,P.jsxs)(`div`,{className:`relative rounded-2xl p-6 ${i?`bg-brand/8 border-brand/20 border-2`:`border border-black/8 bg-white/60`}`,children:[i&&!o&&(0,P.jsx)(`span`,{className:`bg-primary text-primary-foreground absolute -top-3 left-1/2 -translate-x-1/2 rounded-full px-2.5 py-0.5 text-xs font-semibold whitespace-nowrap`,children:`Recommended`}),o,(0,P.jsxs)(`p`,{className:`text-lg font-semibold`,children:[e.displayName,r?.(e)]}),(0,P.jsx)(`p`,{className:`text-muted-foreground mt-1 text-sm`,children:e.description}),(0,P.jsxs)(`p`,{className:`mt-3`,children:[(0,P.jsxs)(`span`,{className:`text-3xl font-bold ${i?`text-brand`:``}`,children:[`$`,f(e)]}),(0,P.jsx)(`span`,{className:`text-muted-foreground text-sm`,children:p})]}),(0,P.jsx)(`div`,{className:`mt-4`,children:t(e)}),(0,P.jsx)(`div`,{className:`mt-6 space-y-4`,children:j.map(t=>(0,P.jsx)(`div`,{children:(0,P.jsx)(`div`,{className:`space-y-2`,children:t.rows.map(t=>{let n=z.indexOf(e),r=t.values[n];return(0,P.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,P.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,P.jsx)(`span`,{className:`text-sm`,children:`description`in t?(0,P.jsxs)(`span`,{className:t.name.startsWith(`/`)?`font-mono font-medium`:``,children:[t.name,`status`in t&&t.status===`planned`&&(0,P.jsx)(`span`,{className:`text-muted-foreground ml-1.5 rounded-full border border-black/15 px-1.5 py-0.5 align-middle text-[10px] font-normal`,children:`Planned`})]}):t.name}),`description`in t&&(0,P.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:t.description}),`status`in t&&t.status===`planned`&&(0,P.jsx)(`span`,{className:`mt-0.5 block`,children:a.has(t.name.slice(1))?(0,P.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:`Interest registered!`}):(0,P.jsx)(`button`,{onClick:()=>d(t.name.slice(1)),className:`text-muted-foreground hover:text-foreground cursor-pointer text-xs underline`,children:`Register Interest`})})]}),(0,P.jsx)(`span`,{className:`shrink-0 text-sm ${i?`text-brand font-medium`:`text-muted-foreground`}`,children:r===!0?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(b,{"aria-hidden":`true`,className:`size-4 ${i?`text-brand`:`text-muted-foreground`}`}),(0,P.jsx)(`span`,{className:`sr-only`,children:`Included`})]}):r})]},t.name)})})},t.section))})]},e.name)})}),(0,P.jsxs)(`div`,{className:`hidden md:block`,role:`table`,"aria-label":`Plan comparison`,children:[(0,P.jsxs)(`div`,{className:`mb-1 grid grid-cols-[1fr_repeat(3,minmax(140px,1fr))] gap-px pt-4`,role:`row`,children:[(0,P.jsx)(`div`,{role:`columnheader`}),z.map(e=>{let i=e.popular,a=n?.(e);return(0,P.jsxs)(`div`,{role:`columnheader`,className:`relative rounded-t-xl px-4 pt-5 pb-4 text-center ${i?`bg-brand/8 border-brand/20 border border-b-0`:`border border-b-0 border-black/6 bg-white/60`}`,children:[i&&!a&&(0,P.jsx)(`span`,{className:`bg-primary text-primary-foreground absolute -top-3 left-1/2 -translate-x-1/2 roun
1ded-full px-2.5 py-0.5 text-xs font-semibold whitespace-nowrap`,children:`Recommended`}),a,(0,P.jsxs)(`p`,{className:`font-semibold`,children:[e.displayName,r?.(e)]}),(0,P.jsxs)(`p`,{className:`mt-0.5`,children:[(0,P.jsxs)(`span`,{className:`text-2xl font-bold ${i?`text-brand`:``}`,children:[`$`,f(e)]}),(0,P.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:p})]}),(0,P.jsx)(`div`,{className:`mt-3`,children:t(e)})]},e.name)})]}),j.map((e,t)=>(0,P.jsx)(`div`,{children:e.rows.map((n,r)=>{let i=t===j.length-1&&r===e.rows.length-1;return(0,P.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[1fr_repeat(3,minmax(140px,1fr))] gap-px`,children:[(0,P.jsx)(`div`,{role:`rowheader`,className:`flex flex-col justify-center border-x border-black/5 px-4 py-4 ${i?`rounded-bl-xl border-b`:``}`,children:`description`in n?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`span`,{className:`text-sm ${n.name.startsWith(`/`)?`font-mono font-medium`:``}`,children:[n.name,`status`in n&&n.status===`planned`&&(0,P.jsx)(`span`,{className:`text-muted-foreground ml-2 roun
1ded-full border border-black/15 px-1.5 py-0.5 align-middle text-[10px] font-normal`,children:`Planned`})]}),(0,P.jsx)(`span`,{className:`text-muted-foreground mt-1 text-xs`,children:n.description}),`useCase`in n&&(0,P.jsx)(`span`,{className:`text-muted-foreground mt-1.5 text-xs italic`,children:n.useCase}),`status`in n&&n.status===`planned`&&(0,P.jsx)(`span`,{className:`mt-0.5`,children:a.has(n.name.slice(1))?(0,P.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:`Interest registered!`}):(0,P.jsx)(`button`,{onClick:()=>d(n.name.slice(1)),className:`text-muted-foreground hover:text-foreground cursor-pointer text-xs underline`,children:`Register Interest`})})]}):(0,P.jsx)(`span`,{className:`text-sm`,children:n.name})}),z.map(e=>{let t=z.indexOf(e),r=n.values[t],a=e.popular;return(0,P.jsx)(`div`,{role:`cell`,className:`flex items-center justify-center px-4 py-4 text-sm ${a?`bg-brand/5 border-brand/20 border-x ${i?`rounded-br-none border-b`:``}`:`border-x border-black/5 bg-white/30 ${i?`border-b last:rounded-br-xl`:``}`}`,children:r===!0?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(b,{"aria-hidden":`true`,className:`size-4 ${a?`text-brand`:`text-muted-foreground`}`}),(0,P.jsx)(`span`,{className:`sr-only`,children:`Included`})]}):(0,P.jsx)(`span`,{className:a?`text-brand font-medium`:`text-muted-foreground`,children:r})},e.name)})]},n.name)})},e.section))]}),(0,P.jsx)(`p`,{className:`text-muted-foreground mt-8 text-center text-xs`,children:`All plans include unlimited screenshot requests, subject to fair usage. Sustained high-volume automated usage may be rate-limited.`}),(0,P.jsx)(`p`,{className:`text-muted-foreground mt-2 text-center text-xs`,children:`Prices are in USD. Any applicable VAT/GST is calculated at checkout based on your location; EU businesses with a valid VAT ID pay 0% (reverse charge).`}),(0,P.jsx)(R,{open:s,onOpenChange:c,initialService:l,requireEmail:i,onJoined:e=>o(t=>new Set([...t,...e]))})]})}export{B as t};
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.