PageSourceSearch

https://app.innboss.net/assets/pricing-DX77bI2k.js

js innboss.net collected 2026-10-09 22:02:27 UTC 27,180 bytes, 1 lines download raw bytes

1import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{t as n}from"./jsx-runtime-BdxMnOeJ.js";import{n as r}from"./client-l-osclBb.js";import{t as i}from"./useQuery-D-WIDwEp.js";import{t as a}from"./arrow-right-DnKa9jEu.js";import{t as o}from"./check-Dcd_A2fQ.js";import{i as s,n as c,o as l,s as u,t as d}from"./select-BTpWdNdj.js";import{t as f}from"./circle-check-big-yyVzq6vT.js";import{t as p}from"./coins-CDpxV1Y4.js";import{t as m}from"./copy-3LfZYDs7.js";import{t as h}from"./file-text-BWyM-xw9.js";import{t as g}from"./globe-Cc6zJlpe.js";import{t as _}from"./handshake-BCC5koeQ.js";import{t as v}from"./loader-circle-BFE5eiYn.js";import{t as y}from"./map-pin-CilSHM6B.js";import{t as b}from"./megaphone-Do3KDnQ2.js";import{t as x}from"./pen-line-C7eiPQhS.js";import{t as S}from"./send-DEbfNtnH.js";import{t as C}from"./shopping-bag-eWANxBOz.js";import{t as w}from"./tag-CY0QOJ6F.js";import{t as T}from"./ticket-CL55dbJV.js";import{t as E}from"./utensils-crossed-DnYEO4M5.js";import{n as D}from"./dist-DpwmrPhW.js";import{n as O}from"./useAuth-CMLkao5P.js";import{$ as k,I as A,V as ee,et as j,i as M,lt as N}from"./index-DZSBFnQF.js";import{a as P,n as F,o as I,r as L,s as R,t as z}from"./dialog-C_HwhGoE.js";import{t as B}from"./input-BbxYcMC9.js";import{a as V,i as H}from"./types-meP9fhJK.js";import{t as U}from"./proxy-CxppNCNE.js";import{t as W}from"./textarea-J0Co5zOH.js";import{t as G}from"./innboss-logo-dark-DlAFi-yy.js";import{t as K}from"./skeleton-Dl18A41O.js";import{a as q,i as J,o as te}from"./billingCatalog-ZUaNDD5T.js";import{n as ne,t as re}from"./EmbeddedCheckoutDialog-guLyFPyN.js";var Y=e(t(),1),X=n();function ie({onApply:e,appliedCode:t,className:n}){let[i,a]=(0,Y.useState)(!!t),[s,c]=(0,Y.useState)(t??``),[l,u]=(0,Y.useState)(!1),d=async()=>{let t=s.trim();if(t){u(!0);try{let{data:{session:n}}=await r.auth.getSession();if(!n){D.success(`${t} applied — we'll check it at checkout`),e(t);return}let{data:i,error:a}=await r.rpc(`redeem_coupon`,{_code:t}),o=i;if(a||!o?.valid){D.error(o?.reason??`That code isn't valid.`);return}D.success(o.name?`${t} applied — ${o.name}`:`${t} applied`),e(t)}finally{u(!1)}}};return t?(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-xs ${n??``}`,children:[(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full bg-primary/10 text-primary px-2.5 py-1 font-medium`,children:[(0,X.jsx)(o,{className:`h-3 w-3`}),` `,t]}),(0,X.jsx)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground`,onClick:()=>{c(``),e(null)},"aria-label":`Remove promo code`,children:(0,X.jsx)(j,{className:`h-3.5 w-3.5`})})]}):i?(0,X.jsxs)(`div`,{className:`flex items-center gap-2 ${n??``}`,children:[(0,X.jsx)(B,{autoFocus:!0,value:s,onChange:e=>c(e.target.value.toUpperCase()),placeholder:`Promo code`,className:`h-8 text-xs w-32`,onKeyDown:e=>{e.key===`Enter`&&s.trim()&&d()}}),(0,X.jsx)(M,{type:`button`,size:`sm`,variant:`secondary`,className:`h-8`,disabled:!s.trim()||l,onClick:()=>void d(),children:l?(0,X.jsx)(v,{className:`h-3.5 w-3.5 animate-spin`}):`Apply`})]}):(0,X.jsxs)(`button`,{type:`button`,onClick:()=>a(!0),className:`inline-flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground underline-offset-4 hover:underline ${n??``}`,children:[(0,X.jsx)(w,{className:`h-3 w-3`}),` Have a promo code?`]})}var Z=H({name:V().trim().min(1,`Required`).max(120),business_name:V().trim().max(150).optional(),email:V().trim().email(`Invalid email`).max(255),phone:V().trim().max(40).optional(),country:V().trim().max(80).optional(),message:V().trim().min(5,`Tell us a bit more`).max(2e3)});function Q(e){return`INQ-${e.slice(0,8).toUpperCase()}`}function ae({trigger:e}){let[t,n]=(0,Y.useState)(!1),[i,a]=(0,Y.useState)(!1),[o,s]=(0,Y.useState)(!1),[c,l]=(0,Y.useState)(``),[u,d]=(0,Y.useState)(!1),[p,h]=(0,Y.useState)({name:``,business_name:``,email:``,phone:``,country:``,message:``}),[g,_]=(0,Y.useState)({}),y=(e,t)=>{h(n=>({...n,[e]:t})),g[e]&&_(t=>({...t,[e]:void 0}))},b=()=>{n(!1),s(!1),l(``),d(!1),h({name:``,business_name:``,email:``,phone:``,country:``,message:``}),_({})};return(0,X.jsxs)(z,{open:t,onOpenChange:e=>{e?n(!0):b()},children:[(0,X.jsx)(R,{asChild:!0,children:e}),(0,X.jsxs)(F,{className:`sm:max-w-lg`,children:[(0,X.jsxs)(P,{children:[(0,X.jsx)(I,{className:`font-serif text-2xl`,children:o?`Inquiry sent`:`Talk to sales`}),(0,X.jsx)(L,{children:o?`We've received your details and will be in touch shortly.`:`Premium is custom-built. Tell us about your business and we'll be in touch.`})]}),o?(0,X.jsxs)(`div`,{className:`space-y-6`,children:[(0,X.jsxs)(`div`,{className:`flex flex-col items-center text-center space-y-3`,children:[(0,X.jsx)(`div`,{className:`w-12 h-12 rounded-full bg-emerald-100 text-emerald-600 flex items-center justify-center`,children:(0,X.jsx)(f,{className:`h-6 w-6`})}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Your reference number`}),(0,X.jsxs)(`button`,{onClick:()=>{c&&navigator.clipboard.writeText(c).then(()=>{d(!0),setTimeout(()=>d(!1),2e3)})},className:`mt-1 inline-flex items-center gap-2 text-2xl font-semibold tracking-tight font-mono hover:text-primary transition-colors`,title:`Click to copy`,children:[c||`---`,(0,X.jsx)(m,{className:`h-4 w-4 transition-colors ${u?`text-emerald-500`:`text-muted-foreground`}`})]}),u&&(0,X.jsx)(`p`,{className:`text-xs text-emerald-600 mt-1`,children:`Copied to clipboard`})]})]}),(0,X.jsxs)(`div`,{className:`rounded-xl bg-muted/50 p-4 space-y-3`,children:[(0,X.jsx)(`p`,{className:`text-sm font-medium`,children:`What happens next`}),(0,X.jsxs)(`ol`,{className:`space-y-2 text-sm text-muted-foreground list-decimal list-inside`,children:[(0,X.jsxs)(`li`,{children:[`A member of our team reviews your requirements within `,(0,X.jsx)(`strong`,{className:`text-foreground`,children:`1 business day`}),`.`]}),(0,X.jsx)(`li`,{children:`We'll reach out via email to schedule a brief discovery call.`}),(0,X.jsx)(`li`,{children:`After the call, you'll receive a tailored proposal and timeline.`})]})]}),(0,X.jsx)(M,{onClick:b,className:`w-full rounded-full h-11 font-semibold`,children:`Done`})]}):(0,X.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault();let t=Z.safeParse(p);if(!t.success){let e=t.error.flatten().fieldErrors,n={};Object.keys(e).forEach(t=>{n[t]=e[t]?.[0]}),_(n);return}a(!0);try{let{data:e,error:n}=await r.functions.invoke(`submit-sales-inquiry`,{body:t.data});if(n)throw n;if(e?.error)throw Error(typeof e.error==`string`?e.error:`Submission failed`);let i=e?.inquiry_id;l(i?Q(i):``),s(!0)}catch(e){console.error(e),D.error(e?.message||`Could not send. Please try again or email [email protected].`)}finally{a(!1)}},className:`space-y-3`,children:[(0,X.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(B,{placeholder:`Your name *`,value:p.name,onChange:e=>y(`name`,e.target.value),"aria-invalid":!!g.name,"aria-label":`Your name`}),g.name&&(0,X.jsx)(`p`,{className:`text-xs text-destructive mt-1`,children:g.name})]}),(0,X.jsx)(`div`,{children:(0,X.jsx)(B,{placeholder:`Business name`,value:p.business_name,onChange:e=>y(`business_name`,e.target.value),"aria-label":`Business name`})})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(B,{type:`email`,placeholder:`Email *`,value:p.email,onChange:e=>y(`email`,e.target.value),"aria-invalid":!!g.email,"aria-label":`Email`}),g.email&&(0,X.jsx)(`p`,{className:`text-xs text-destructive mt-1`,children:g.email})]}),(0,X.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:[(0,X.jsx)(B,{type:`tel`,placeholder:`Phone (optional)`,value:p.phone,onChange:e=>y(`phone`,e.target.value),"aria-label":`Phone`}),(0,X.jsx)(B,{placeholder:`Country (optional)`,value:p.country,onChange:e=>y(`country`,e.target.value),"aria-label":`Country`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(W,{placeholder:`What are you trying to build? *`,rows:4,value:p.message,onChange:e=>y(`message`,e.target.value),"aria-invalid":!!g.message,"aria-label":`Message`}),g.message&&(0,X.jsx)(`p`,{className:`text-xs text-destructive mt-1`,children:g.message})]}),(0,X.jsx)(M,{type:`submit`,disabled:i,className:`w-full rounded-full h-11 font-semibold`,children:i?(0,X.jsx)(v,{className:`h-4 w-4 animate-spin`}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(S,{className:`h-4 w-4 mr-2`}),`Send inquiry`]})}),(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground text-center`,children:`We'll reply within 1 business day.`})]})]})]})}var oe={website:g,store:C,events:T,content:x,boost:b},se={dine_in:E,multi_location:y},ce=[{q:`Do I have to pay anything to get started?`,a:`No. The Starter plan lists you, keeps you bookable and never asks for a card. You only pay a share of the bookings we send you, and the first few every month are free.`},{q:`What counts as a booking InnBoss sent me?`,a:`One that arrived through an InnBoss surface — a hub or partner site, the trip planner, the AI concierge, your own InnBoss booking page or your InnBoss website. Walk-ins, phone calls, bookings your staff enter and anything from an OTA are always free.`},{q:`What happens if a guest cancels or never shows?`,a:`The fee comes straight back off. If the month has already been invoiced it appears as a credit on the next one, and your free allowance is handed back too.`},{q:`How does a paid plan save me money?`,a:`Each plan cuts the booking fee — Standard takes 30% off, Pro 60%, and Max removes booking fees altogether. Every plan below Max also caps what you can pay in fees in a single month.`},{q:`Which currency am I billed in?`,a:`Pay by card in USD (no VAT), or locally in BBD by bank transfer, Fygaro or BiMPay (17.5% VAT added). Prices are set in Barbados dollars before VAT; USD is shown at the fixed 2:1 peg.`},{q:`Can I change or cancel a plan?`,a:`Yes, at any time. Plans and modules run month to month unless you choose annual, and n
1othing you have already published stops working when you move down.`}],le=[`Everything on your plan, included`,`Resell other businesses' tours and services`,`Build multi-supplier packages in the Offer Builder`,`Set your own margin on every package you sell`,`Revenue split automatically between every party on a booking`,`Partner earnings ledger with monthly statements`,`Hub agreements — join or run a destination hub`,`Assemble service teams and send RFQs from the trades directory`,`Named account manager and onboarding session`];function $(){let{user:e,loading:t}=O(),n=ee(),f=ne(),{data:m,isLoading:y}=te(),[b,x]=(0,Y.useState)(null),[S,C]=(0,Y.useState)(`BBD`),[w,T]=(0,Y.useState)(`monthly`),[j,P]=(0,Y.useState)(null),{data:F,isFetched:I}=i({queryKey:[`pricing-my-businesses`,e?.id],enabled:!!e,staleTime:6e4,queryFn:async()=>{let{data:t,error:n}=await r.from(`properties`).select(`id, name`).eq(`user_id`,e.id).order(`created_at`,{ascending:!0});if(n)throw n;return t??[]}}),[L,R]=(0,Y.useState)(null);(0,Y.useEffect)(()=>{if(!F?.length||L)return;let e=null;try{e=localStorage.getItem(`ihb.currentPropertyId`)}catch{}let t=F.find(t=>t.id===e);R(t?.id??F[0].id)},[F,L]);let[z,B]=(0,Y.useState)(null),V=(0,Y.useRef)(!1),H=m?.settings.usd_peg??2,W=m?.settings.vat_percent??17.5,Z=e=>J(e,S,H),Q=(0,Y.useMemo)(()=>(m?.modules??[]).reduce((e,t)=>e+Number(t.monthly_bbd),0),[m]),$=async(t,r)=>{if(Number(t.monthly_bbd)===0){n(`/join`);return}if(!e){n(`/join?next=${encodeURIComponent(`/pricing?plan=${t.key}&period=${r}`)}`);return}let i=r===`annual`?t.stripe_price_annual:t.stripe_price_monthly;if(!i){D.error(`This plan can't be bought online yet — please contact us.`);return}if(!L){D.error(`Set up your business first — a plan is always bought for a specific business.`),n(`/join`);return}P(t.key);try{await f.start({priceId:i,promotionCode:b??void 0,propertyId:L,returnPath:`/settings?tab=plan`,title:`Subscribe to ${t.name}`})}catch(e){D.error(e instanceof Error?e.message:`Checkout could not be started.`)}finally{P(null)}};return(0,Y.useEffect)(()=>{if(!m)return;let n=new URLSearchParams(window.location.search),r=n.get(`period`),i=r===`annual`||r===`yearly`?`annual`:r===`monthly`?`monthly`:w;r&&T(i);let a=n.get(`plan`)?.toLowerCase()??null;if(!a)return;let o=m.plans.find(e=>e.key===a);if(!o||(B(o.key),t)||!e||!I||F&&F.length>0&&!L||V.current)return;V.current=!0;let s=new URL(window.location.href);s.searchParams.delete(`plan`),s.searchParams.delete(`period`),window.history.replaceState({},``,`${s.pathname}${s.search}${s.hash}`),$(o,i)},[m,e,t,I,L,F]),(0,X.jsxs)(`div`,{className:`min-h-screen bg-background`,children:[(0,X.jsx)(re,{session:f.session,onClose:f.close}),(0,X.jsxs)(N,{children:[(0,X.jsx)(`title`,{children:`Pricing | InnBoss — Free to list, plans that cut your fees`}),(0,X.jsx)(`meta`,{name:`description`,content:`List free and stay bookable with no card. Choose a plan to cut the fee on every booking we send you, and add the website, store, events, content and boost modules you need.`}),(0,X.jsx)(`link`,{rel:`canonical`,href:`https://app.innboss.net/pricing`})]}),(0,X.jsxs)(`header`,{className:`container mx-auto px-4 py-6 flex items-center justify-between`,children:[(0,X.jsx)(A,{to:`/`,className:`flex items-center gap-2`,children:(0,X.jsx)(`img`,{src:G,alt:`InnBoss`,className:`h-8 dark:invert`})}),(0,X.jsxs)(`nav`,{className:`flex items-center gap-6 text-sm`,children:[(0,X.jsx)(A,{to:`/pricing`,className:`font-medium text-foreground`,children:`Pricing`}),(0,X.jsx)(M,{asChild:!0,size:`sm`,className:`rounded-full`,children:(0,X.jsx)(A,{to:`/join`,children:`Join free`})})]})]}),(0,X.jsxs)(`section`,{className:`container mx-auto px-4 pt-12 pb-8 text-center`,children:[(0,X.jsx)(`span`,{className:`inline-block bg-foreground text-background text-xs font-bold uppercase tracking-[0.2em] px-3 py-1 rounded-full mb-5`,children:`Pricing`}),(0,X.jsxs)(`h1`,{className:`font-serif text-4xl md:text-6xl font-normal tracking-tight mb-4 max-w-3xl mx-auto leading-[1.05]`,children:[`Free to list.`,(0,X.jsx)(`br`,{}),(0,X.jsx)(`span`,{className:`font-bold`,children:`Pay less as you grow.`})]}),(0,X.jsx)(`p`,{className:`text-lg md:text-xl text-muted-foreground max-w-xl mx-auto`,children:`Start free and stay bookable. Move up a plan and every booking we send you costs less.`}),(0,X.jsxs)(`div`,{className:`mt-8 flex flex-col items-center gap-3`,children:[(0,X.jsx)(`div`,{role:`group`,"aria-label":`Billing period`,className:`inline-flex items-center gap-1 rounded-full border border-border bg-muted/50 p-1`,children:[[`monthly`,`Monthly`],[`annual`,`Annual · 2 months free`]].map(([e,t])=>(0,X.jsx)(`button`,{type:`button`,onClick:()=>T(e),"aria-pressed":w===e,className:k(`rounded-full px-4 py-1.5 text-xs font-semibold transition-colors`,w===e?`bg-background text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground`),children:t},e))}),(0,X.jsxs)(`div`,{role:`group`,"aria-label":`Display currency`,className:`inline-flex items-center gap-1 rounded-full border border-border bg-muted/50 p-1`,children:[(0,X.jsx)(p,{className:`ml-2 h-3.5 w-3.5 text-muted-foreground`,"aria-hidden":!0}),[`BBD`,`USD`].map(e=>(0,X.jsx)(`button`,{type:`button`,onClick:()=>C(e),"aria-pressed":S===e,className:k(`rounded-full px-3 py-1 text-xs font-semibold transition-colors`,S===e?`bg-background text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground`),children:e},e))]})]})]}),e&&(F?.length??0)>1&&(0,X.jsxs)(`section`,{className:`container mx-auto px-4 pb-6 max-w-md`,children:[(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground mb-1.5 text-center`,children:`Which business is this plan for?`}),(0,X.jsxs)(d,{value:L??void 0,onValueChange:R,children:[(0,X.jsx)(l,{"aria-label":`Business this plan applies to`,children:(0,X.jsx)(u,{placeholder:`Choose a business`})}),(0,X.jsx)(c,{children:(F??[]).map(e=>(0,X.jsx)(s,{value:e.id,children:e.name},e.id))})]})]}),(0,X.jsxs)(`section`,{className:`container mx-auto px-4 pb-16`,children:[y||!m?(0,X.jsx)(`div`,{className:`grid gap-5 md:grid-cols-2 xl:grid-cols-4 max-w-6xl mx-auto`,children:[0,1,2,3].map(e=>(0,X.jsx)(K,{className:`h-[520px] rounded-3xl`},e))}):(0,X.jsx)(`div`,{className:`grid gap-5 md:grid-cols-2 xl:grid-cols-4 max-w-6xl mx-auto items-stretch`,children:m.plans.map((e,t)=>{let n=Number(e.monthly_bbd)===0,r=z===e.key,i=z?r:e.key===`pro`,s=m.planModules[e.key]??[],c=Number(w===`annual`?e.annual_bbd:e.monthly_bbd);return(0,X.jsxs)(U.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.45,delay:t*.06},className:k(`relative overflow-hidden bg-card text-card-foreground rounded-3xl p-6 flex flex-col border`,i?`border-primary shadow-lg ring-2 ring-primary/30`:`border-border/60`),children:[(0,X.jsx)(`div`,{"aria-hidden":!0,
1className:k(`pointer-events-none absolute inset-0 bg-gradient-to-br`,i?`from-[hsl(45,100%,55%)]/20 via-primary/10 to-transparent`:`from-sky-500/12 via-emerald-400/5 to-transparent`)}),(r||!z&&e.key===`pro`)&&(0,X.jsx)(`div`,{className:`absolute top-5 right-5 bg-primary text-primary-foreground text-[10px] font-bold uppercase tracking-[0.2em] px-3 py-1 rounded-full`,children:r?`Your choice`:`Most chosen`}),n&&!r&&(0,X.jsx)(`div`,{className:`absolute top-5 right-5 bg-secondary text-secondary-foreground text-[10px] font-bold uppercase tracking-[0.2em] px-3 py-1 rounded-full`,children:`No card`}),(0,X.jsxs)(`div`,{className:`relative mb-5`,children:[(0,X.jsx)(`h2`,{className:`font-serif font-semibold text-2xl mb-2`,children:e.name}),(0,X.jsxs)(`span`,{className:`font-serif font-semibold text-4xl tracking-tight leading-none block`,children:[n?`Free`:Z(c),!n&&(0,X.jsx)(`span`,{className:`text-sm font-medium text-muted-foreground ml-1.5`,children:w===`annual`?`a year`:`a month`})]}),(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground mt-2`,children:n?`Forever. No card required.`:w===`annual`?`or ${Z(Number(e.monthly_bbd))} a month`:`or ${Z(Number(e.annual_bbd))} a year — 2 months free`}),e.tagline&&(0,X.jsx)(`p`,{className:`text-sm font-medium text-muted-foreground mt-3`,children:e.tagline})]}),(0,X.jsxs)(`div`,{className:`relative mb-6 flex-1 space-y-4`,children:[(0,X.jsxs)(`div`,{className:`rounded-2xl border border-border/60 bg-muted/40 px-4 py-3`,children:[(0,X.jsx)(`p`,{className:`text-sm font-semibold`,children:q(e)}),Number(e.fee_multiplier)===0&&(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:`Nothing is taken from the bookings we send you.`})]}),s.length>0&&(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-wide text-muted-foreground mb-2`,children:`Modules included`}),(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:s.map(e=>{let t=m.modules.find(t=>t.key===e);return t?(0,X.jsx)(`span`,{className:`rounded-full bg-primary/10 text-primary text-[11px] font-medium px-2.5 py-1`,children:t.name},e):null})})]}),(0,X.jsx)(`ul`,{className:`space-y-2`,children:(e.extras??[]).map(e=>(0,X.jsxs)(`li`,{className:`flex items-start gap-3 text-sm`,children:[(0,X.jsx)(`span`,{className:`mt-0.5 flex-shrink-0 w-5 h-5 rounded-full bg-primary/15 text-primary flex items-center justify-center`,children:(0,X.jsx)(o,{className:`h-3 w-3`,strokeWidth:3})}),(0,X.jsx)(`span`,{className:`leading-snug`,children:e})]},e))}),e.support&&(0,X.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Support: `,e.support]})]}),(0,X.jsx)(M,{size:`lg`,disabled:j===e.key,onClick:()=>$(e,w),className:k(`relative rounded-full h-12 w-full font-semibold`,!i&&`bg-secondary text-secondary-foreground hover:bg-secondary/80`),children:j===e.key?(0,X.jsx)(v,{className:`h-4 w-4 animate-spin`}):(0,X.jsxs)(X.Fragment,{children:[n?`Get listed free — no card needed`:`Choose ${e.name}`,(0,X.jsx)(a,{className:`ml-1 h-4 w-4`})]})})]},e.key)})}),(0,X.jsx)(`div`,{className:`mt-6 flex justify-center`,children:(0,X.jsx)(ie,{appliedCode:b,onApply:x})})]}),m&&m.modules.length>0&&(0,X.jsxs)(`section`,{className:`container mx-auto px-4 pb-20 max-w-6xl`,children:[(0,X.jsx)(`h2`,{className:`font-serif text-2xl font-semibold text-center mb-2`,children:`Add what you need, when you need it`}),(0,X.jsxs)(`p`,{className:`text-sm text-muted-foreground text-center mb-8 max-w-2xl mx-auto`,children:[`Each module works on its own, on any plan.`,Q>0&&` All five together cost the same as Pro.`]}),(0,X.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-5`,children:m.modules.map(e=>{let t=oe[e.key]??g;return(0,X.jsxs)(`div`,{className:`relative overflow-hidden rounded-2xl border border-border/60 bg-card p-5 flex flex-col`,children:[(0,X.jsx)(`span`,{className:`mb-3 inline-flex h-10 w-10 items-center justify-center rounded-2xl bg-primary/12 text-primary`,children:(0,X.jsx)(t,{className:`h-5 w-5`})}),(0,X.jsx)(`h3`,{className:`font-serif font-semibold text-base leading-tight`,children:e.name}),(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1.5 flex-1`,children:e.blurb}),(0,X.jsxs)(`p`,{className:`font-serif font-semibold text-lg mt-3`,children:[Z(Number(e.monthly_bbd)),(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground font-normal`,children:`/mo`})]}),(0,X.jsxs)(`p`,{className:`text-[11px] text-muted-foreground`,children:[`or `,Z(Number(e.annual_bbd)),` a year`]})]},e.key)})})]}),m&&m.opsAddons.length>0&&(0,X.jsxs)(`section`,{className:`container mx-auto px-4 pb-20 max-w-4xl`,children:[(0,X.jsx)(`h2`,{className:`font-serif text-2xl font-semibold text-center mb-2`,children:`Tools your staff run the day on`}),(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground text-center mb-8 max-w-2xl mx-auto`,children:`If a trial ends, your profile, menu, availability and bookings keep working — only the staff screens lock.`}),(0,X.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:m.opsAddons.map(e=>{let t=se[e.key]??E;return(0,X.jsxs)(`div`,{className:`relative overflow-hidden rounded-2xl border-2 border-border/60 bg-card p-6 flex flex-col`,children:[(0,X.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,X.jsx)(`span`,{className:`inline-flex h-12 w-12 items-center justify-center rounded-2xl bg-primary/12 text-primary`,children:(0,X.jsx)(t,{className:`h-6 w-6`})}),(0,X.jsx)(`div`,{className:`text-right`,children:Number(e.quarterly_bbd??0)>0&&Number(e.monthly_bbd)===0?(0,X.jsxs)(`div`,{className:`font-serif font-semibold text-xl leading-none`,children:[Z(Number(e.quarterly_bbd)),(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground font-normal`,children:`/quarter`})]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`font-serif font-semibold text-xl leading-none`,children:[Z(Number(e.monthly_bbd)),(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground font-normal`,children:`/mo`})]}),Number(e.annual_bbd)>0&&(0,X.jsxs)(`div`,{className:`text-[11px] text-muted-foreground mt-1`,children:[`or `,Z(Number(e.annual_bbd)),` a year`]})]})})]}),(0,X.jsx)(`h3`,{className:`font-serif font-semibold text-lg mt-4`,children:e.name}),(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1.5`,children:e.blurb}),e.trial_days?(0,X.jsxs)(`p`,{className:`text-xs font-medium mt
1-3 text-[hsl(40,90%,30%)]`,children:[e.trial_days,`-day free trial`]}):null]},e.key)})})]}),m&&(0,X.jsx)(`section`,{className:`container mx-auto px-4 pb-20 max-w-3xl`,children:(0,X.jsxs)(`div`,{className:`rounded-3xl border border-border/60 bg-card p-7`,children:[(0,X.jsx)(`h2`,{className:`font-serif text-2xl font-semibold mb-2`,children:`How we earn on the Starter plan`}),(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`We take a share only of the bookings we send you — never of the ones you win yourself, and never of anything your staff enter or an OTA sends. Every business type has its own free allowance each month before anything is charged, and the share is cut on every paid plan.`}),(0,X.jsx)(`ul`,{className:`mt-5 space-y-2 text-sm`,children:[`Nothing is charged until the guest actually turns up`,`Cancellations, no-shows and refunds hand the fee and the allowance back`,`Walk-ins, phone bookings, staff-entered bookings and OTA bookings are always free`].map(e=>(0,X.jsxs)(`li`,{className:`flex items-start gap-3`,children:[(0,X.jsx)(`span`,{className:`mt-0.5 flex-shrink-0 w-5 h-5 rounded-full bg-primary/15 text-primary flex items-center justify-center`,children:(0,X.jsx)(o,{className:`h-3 w-3`,strokeWidth:3})}),(0,X.jsx)(`span`,{className:`leading-snug`,children:e})]},e))}),m.settings.guide_url&&(0,X.jsx)(M,{asChild:!0,variant:`outline`,className:`mt-6 rounded-full`,children:(0,X.jsxs)(`a`,{href:m.settings.guide_url,target:`_blank`,rel:`noreferrer`,children:[(0,X.jsx)(h,{className:`mr-1.5 h-4 w-4`}),`See the full price guide`]})})]})}),(0,X.jsx)(`section`,{className:`container mx-auto px-4 pb-20 max-w-3xl`,children:(0,X.jsxs)(`div`,{className:`relative overflow-hidden rounded-3xl border-2 border-primary/40 bg-card p-7 shadow-xl shadow-primary/10`,children:[(0,X.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-0 bg-gradient-to-br from-primary/12 via-primary/5 to-transparent`}),(0,X.jsxs)(`div`,{className:`relative`,children:[(0,X.jsx)(`span`,{className:`mb-4 inline-flex h-12 w-12 items-center justify-center rounded-2xl bg-primary/15 text-primary`,children:(0,X.jsx)(_,{className:`h-6 w-6`})}),(0,X.jsx)(`h2`,{className:`font-serif font-semibold text-2xl mb-1`,children:`Resellers & project teams`}),(0,X.jsx)(`p`,{className:`text-sm text-muted-foreground mb-5`,children:`For operators who sell other businesses' offerings, or who build teams of service providers to deliver a job. Priced per partnership.`}),(0,X.jsx)(`ul`,{className:`grid gap-2 sm:grid-cols-2 mb-6`,children:le.map(e=>(0,X.jsxs)(`li`,{className:`flex items-start gap-3 text-sm`,children:[(0,X.jsx)(`span`,{className:`mt-0.5 flex-shrink-0 w-5 h-5 rounded-full bg-primary/15 text-primary flex items-center justify-center`,children:(0,X.jsx)(o,{className:`h-3 w-3`,strokeWidth:3})}),(0,X.jsx)(`span`,{className:`leading-snug`,children:e})]},e))}),(0,X.jsx)(ae,{trigger:(0,X.jsxs)(M,{size:`lg`,className:`rounded-full h-12 font-semibold`,children:[`Contact us for details`,(0,X.jsx)(a,{className:`ml-1 h-4 w-4`})]})})]})]})}),(0,X.jsxs)(`section`,{className:`container mx-auto px-4 pb-16 max-w-3xl`,children:[(0,X.jsx)(`h2`,{className:`font-serif text-2xl font-semibold text-center mb-8`,children:`Questions owners actually ask`}),(0,X.jsx)(`dl`,{className:`space-y-5`,children:ce.map(e=>(0,X.jsxs)(`div`,{className:`rounded-2xl border border-border/60 bg-card p-5`,children:[(0,X.jsx)(`dt`,{className:`font-medium mb-1.5`,children:e.q}),(0,X.jsx)(`dd`,{className:`text-sm text-muted-foreground leading-relaxed`,children:e.a})]},e.q))})]}),(0,X.jsx)(`footer`,{className:`container mx-auto px-4 pb-20 max-w-3xl`,children:(0,X.jsxs)(`p`,{className:`text-center text-xs text-muted-foreground`,children:[`All prices are in BBD before VAT; USD is shown at the fixed `,H,`:1 peg. Pay by card in USD through CrossMedia LLC (no VAT), or locally in BBD by bank transfer, Fygaro or BiMPay through CrossMedia Inc. (Barbados VAT of `,W,`% added).`]})})]})}function ue(){return(0,X.jsx)($,{})}export{ue as component};

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.