1import{j as e}from"./data-DN-eP4ae.js";import{L as y,r as L}from"./react-BUOzgyp0.js";import{S as M,a as D,b as N,z as n,w as I,j as Y,k as H,T as W,c as R,D as z,C as g,e as Q}from"./SiteSections-B3DZWhus.js";import{u as F}from"./usePageContext-Cam8cm1F.js";import{jO as u,gh as p,gs as x,gw as J,jP as K,jQ as S,jR as X,gz as V,go as o,gF as b,B as w,$ as Z,C as U,c as d,j as ee,A as se}from"./index-6GUxm5Tl.js";import{C as _,a as E}from"./card-Bpoa90g8.js";import{A as te,a as C,b as k,c as P}from"./accordion-CiQ_C7FI.js";import{t as A}from"./events-NcBcdIsf.js";import"./BrandLogo-DSytlRZz.js";import"./arrow-up-right-DbUg8U10.js";import"./download-D8rVLK2a.js";import"./book-open-C5m3GX53.js";import"./wallet-hX8y-nkf.js";import"./workflow-BQhqW2ze.js";import"./inbox-IpoGX3gq.js";import"./app-primitives-C7oGnmBt.js";import"./smartphone-Bv32NG3H.js";import"./message-circle-BaAVvJru.js";import"./contact-round-DkH2kPb5.js";import"./chevron-left-BO8s0r98.js";import"./power-acJGjCtP.js";import"./documents-Bju1cS7G.js";import"./charts-BjVT6r80.js";const ae={free:`${x.free}.`,starter:`${x.starter}.`,growth:`${x.growth}.`,business:`${x.business}.`,enterprise:`${x.enterprise}.`};function ie(s){return X(s)}const q=u.map(s=>({tier:s,name:p[s].label,decisionLine:ae[s],priceMonthly:p[s].monthly,priceYearly:p[s].yearly,quoteOnly:s==="enterprise",highlights:ie(s),outcomes:J.map(t=>({group:t,items:K(s)[t]})).filter(t=>t.items.length>0),common:s==="growth"})),re="â¦";function le(s){return`${re}${s.toLocaleString()}`}const m=(s,t)=>b(o[s].limits[t]),ne=[{group:"Your workspace",rows:[{label:"Team members",read:s=>m(s,"crm.members.limit")},{label:"Customers",read:s=>m(s,"crm.contacts.limit")},{label:"Pipelines",read:s=>m(s,"crm.deals.pipelines.limit")},{label:"File storage",read:s=>V(o[s].storageMb)}]},{group:"Selling and reporting",rows:[{label:"Reports",read:s=>S[o[s].reports]},{label:"Team access control",read:s=>S[o[s].permissions]}]},{group:"Communication",rows:[{label:"Campaigns",read:s=>S[o[s].campaigns]},{label:"Running automations",read:s=>m(s,"crm.automations.active.limit")},{label:"Published forms",read:s=>m(s,"crm.forms.limit")},{label:"Connected accounts",read:s=>m(s,"crm.communication_accounts.limit")}]},{group:"Intelligence",rows:[{label:"AI credits a month",read:s=>{const t=o[s];return t.aiPerSeat?`${t.aiCreditsPerSeat.toLocaleString()} per paid user`:`${t.aiCreditsPerSeat.toLocaleString()} for the business`}}]}],O=ne.map(s=>({group:s.group,rows:s.rows.map(t=>({label:t.label,values:Object.fromEntries(u.map(a=>[a,t.read(a)]))}))})),$=[{id:"team",question:"How many people will use DuceCRM?",options:[{value:"1",label:"Just me"},{value:"3",label:"2 to 3"},{value:"10",label:"4 to 10"},{value:"25",label:"11 to 25"},{value:"60",label:"More than 25"}]},{id:"customers",question:"How many customers do you keep records for?",options:[{value:"100",label:"Under 100"},{value:"1000",label:"Hundreds"},{value:"100000",label:"Thousands"}]},{id:"automation",question:"Do you want DuceCRM to follow up automatically?",options:[{value:"no",label:"No, I will do it myself"},{value:"yes",label:"Yes, keep customers followed up"}]},{id:"intelligence",question:"Do you want AI help writing and researching?",options:[{value:"no",label:"Not for now"},{value:"yes",label:"Yes, help me write and research"}]},{id:"governance",question:"Do you need single sign-on or formal approvals?",options:[{value:"no",label:"No"},{value:"yes",label:"Yes, we have IT or compliance requirements"}]}];function oe(s){const t=[],a=Number(s.team??1),f=Number(s.customers??100),h=s.automation==="yes",c=s.intelligence==="yes",i=s.governance==="yes",r=u.find(B=>{const j=o[B],v=(T,G)=>T===null||T>=G;return!(!v(j.limits["crm.members.limit"],a)||!v(j.limits["crm.contacts.limit"],f)||h&&!v(j.limits["crm.automations.active.limit"],5)||i&&j.permissions!=="advanced")})??"enterprise",l=o[r];return t.push(`Supports ${b(l.limits["crm.members.limit"])} team members`),t.push(`Room for ${b(l.limits["crm.contacts.limit"])}
1 customers`),c&&t.push(l.aiPerSeat?`Includes ${l.aiCreditsPerSeat.toLocaleString()} AI credits a month per paid user`:`Includes ${l.aiCreditsPerSeat.toLocaleString()} AI credits a month for the business`),h&&t.push(`Runs up to ${b(l.limits["crm.automations.active.limit"])} automations at once`),i&&t.push("Includes teams, work profiles and approvals"),{tier:r,name:p[r].label,reasons:t}}function ce({tier:s}){const t=p[s];return s==="enterprise"?e.jsx("p",{className:"text-2xl font-bold",children:"Custom"}):t.monthly===0?e.jsx("p",{className:"text-2xl font-bold",children:"Free"}):e.jsxs("p",{className:"text-2xl font-bold",children:[le(t.monthly),e.jsx("span",{className:"ml-1 text-sm font-normal text-muted-foreground",children:"per user / month"})]})}function Le(){return F(void 0,"pricing_viewed"),e.jsxs(M,{seo:H("/pricing"),children:[e.jsx(D,{eyebrow:"Pricing",title:"Start free. Pay when DuceCRM is earning its place.",body:"Five plans, one product. Choose by what your business is doing now, not by a feature list.",origin:{kind:"pricing",key:"overview"},trustLine:W,secondary:{label:n.comparePlans,href:"/compare"},visual:"payment"}),e.jsxs(N,{rhythm:"tight",children:[e.jsx(R,{title:"Which stage are you at?"}),e.jsx("div",{className:d("grid md:grid-cols-2 lg:grid-cols-3",g["heading-to-content"],g.grid),children:q.map(s=>e.jsx(_,{className:d("flex flex-col",s.common&&"border-primary shadow-sm"),children:e.jsxs(E,{className:"flex flex-1 flex-col gap-4 p-5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx("p",{className:"font-semibold",children:s.name}),s.common&&e.jsx(Z,{children:"Most businesses"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s.decisionLine}),e.jsx(ce,{tier:s.tier}),e.jsx("ul",{className:"flex-1 space-y-2",children:s.highlights.map(t=>e.jsxs("li",{className:"flex items-start gap-2 text-sm",children:[e.jsx(U,{"aria-hidden":!0,className:"mt-0.5 h-4 w-4 shrink-0 text-primary"}),e.jsx("span",{children:t})]},t))}),e.jsxs("details",{className:"text-sm",children:[e.jsx("summary",{className:"min-h-11 cursor-pointer py-2 font-medium text-primary",children:"See all features"}),e.jsx("div",{className:"space-y-3 pt-1",children:s.outcomes.map(t=>e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:t.group}),e.jsx("ul",{className:"mt-1 space-y-1",children:t.items.map(a=>e.jsx("li",{children:a},a))})]},t.group))})]}),e.jsx(w,{asChild:!0,variant:s.common?"default":"outline",className:"min-h-11 w-full",children:s.tier==="enterprise"?e.jsx(y,{to:z,onClick:()=>A("site_cta_clicked",{cta:n.talkToSales,plan:s.tier}),children:n.talkToSales}):e.jsx(y,{to:I({kind:"pricing",key:s.tier},{plan:s.tier,source:"pricing"}),onClick:()=>A("site_cta_clicked",{cta:n.getStarted,plan:s.tier}),children:n.getStarted})})]})},s.tier))}),e.jsx("p",{className:d(g["heading-to-content"],Q.small),children:"Prices are per user per month, billed in Naira. Yearly billing is available on paid plans."})]}),e.jsx(me,{}),e.jsxs(N,{rhythm:"tight",children:[e.jsx(R,{title:"Common questions"}),e.jsxs(te,{type:"single",collapsible:!0,className:d("max-w-3xl",g["heading-to-content"]),children:[e.jsxs(C,{value:"switch",children:[e.jsx(k,{children:"Can I change plan later?"}),e.jsx(P,{children:"Yes. You can move up or down at any time. Nothing is deleted when you move down - features that need a higher plan are simply switched off until you upgrade again."})]}),e.jsxs(C,{value:"free",children:[e.jsx(k,{children:"Is the free plan really free?"}),e.jsx(P,{children:"Yes. No card is needed. It is limited in size rather than crippled in function, so you can judge DuceCRM on real work."})]}),e.jsxs(C,{value:"ai",children:[e.jsx(k,{children:"How does AI billing work?"}),e.jsx(P,{children:"Each plan includes a monthly AI credit allowance. Approved automation and stored answers run without spending credits - only genuine AI work does, and the cost is shown before you confirm it."})]})]})]}),e.jsx(Y,{title:"Start on the free plan and decide later.",origin:{kind:"pricing",key:"overview"}})]})}function me(){const[s,t]=L.useState({}),[a,f]=L.useState(!1),h=$.every(i=>s[i.id]),c=a?oe(s):null;return e.jsxs(N,{muted:!0,rhythm:"tight",children:[e.jsx(R,{eyebrow:"Plan finder",title:"Not sure which plan fits you?",body:"Five short questions. The answer comes from what each plan actually allows."}),e.jsx("div",{className:d("space-y-5",g["heading-to-content"]),children:$.map(i=>e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:i.question}),e.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:i.options.map(r=>e.jsx("button",{type:"button",onClick:()=>{t(l=>({...l,[i.id]:r.value})),f(!1)},className:d("min-h-11 rounded-full border px-4 py-2.5 text-sm transition-colors",s[i.id]===r.value?"border-primary bg-primary/10 text-foreground":"bg-card hover:border-primary/40"),children:r.label},r.value))})]},i.id))}),e.jsxs("div",{className:"mt-6 flex flex-col gap-3 sm:flex-row sm:items-center",children:[e.jsxs(w,{className:"min-h-11 w-full sm:w-auto",disabled:!h,onClick:()=>{f(!0),A("plan_compared",{intent:"plan_finder",...s})}
1,children:[e.jsx(ee,{"aria-hidden":!0,className:"mr-2 h-4 w-4"}),"Recommend a plan"]}),!h&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"Answer all five to see a recommendation."})]}),c&&e.jsx(_,{className:"mt-6 border-primary/40",children:e.jsxs(E,{className:"p-5",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Based on your answers"}),e.jsx("p",{className:"mt-1 text-xl font-semibold",children:c.name}),e.jsx("ul",{className:"mt-3 space-y-2",children:c.reasons.map(i=>e.jsxs("li",{className:"flex items-start gap-2 text-sm",children:[e.jsx(U,{"aria-hidden":!0,className:"mt-0.5 h-4 w-4 shrink-0 text-primary"}),e.jsx("span",{children:i})]},i))}),e.jsx(w,{asChild:!0,className:"mt-4 min-h-11 w-full sm:w-auto",children:e.jsxs(y,{to:I({kind:"pricing",key:c.tier},{plan:c.tier,source:"plan_finder"}),children:[n.getStarted,e.jsx(se,{"aria-hidden":!0,className:"ml-2 h-4 w-4"})]})})]})})]})}function Oe(){return F(void 0,"plan_compared",{view:"full_table"}),e.jsxs(M,{seo:H("/compare"),children:[e.jsx(D,{eyebrow:"Compare plans",title:"What each plan actually includes.",body:"The full detail, in one place. If you only want the decision, the pricing page is enough.",origin:{kind:"pricing",key:"compare"},secondary:{label:"Back to pricing",href:"/pricing"},visual:"invoice"}),e.jsxs(N,{width:"wide",children:[e.jsx("div",{className:"space-y-6 lg:hidden",children:q.map(s=>e.jsx(_,{children:e.jsxs(E,{className:"p-5",children:[e.jsx("p",{className:"font-semibold",children:s.name}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:s.decisionLine}),e.jsx("div",{className:"mt-4 space-y-4",children:O.map(t=>e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:t.group}),e.jsx("dl",{className:"mt-2 space-y-1.5",children:t.rows.map(a=>e.jsxs("div",{className:"flex items-start justify-between gap-3 text-sm",children:[e.jsx("dt",{className:"text-muted-foreground",children:a.label}),e.jsx("dd",{className:"text-right font-medium",children:a.values[s.tier]})]},a.label))})]},t.group))}),e.jsx(w,{asChild:!0,className:"mt-4 min-h-11 w-full",children:e.jsx(y,{to:I({kind:"pricing",key:s.tier},{plan:s.tier}),children:s.tier==="enterprise"?n.talkToSales:n.getStarted})})]})},s.tier))}),e.jsx("div",{className:"hidden lg:block",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[880px] border-collapse text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",className:"w-56 py-3 text-left font-semibold",children:"Plan"}),u.map(s=>e.jsx("th",{scope:"col",className:"py-3 text-left font-semibold",children:p[s].label},s))]})}),e.jsx("tbody",{children:O.map(s=>e.jsxs(e.Fragment,{children:[e.jsx("tr",{className:"bg-muted/40",children:e.jsx("th",{scope:"colgroup",colSpan:u.length+1,className:"py-2 text-left font-semibold",children:s.group})},s.group),s.rows.map(t=>e.jsxs("tr",{className:"border-b",children:[e.jsx("th",{scope:"row",className:"py-3 text-left font-normal text-muted-foreground",children:t.label}),u.map(a=>e.jsx("td",{className:"py-3",children:t.values[a]},a))]},`${s.group}-${t.label}`))]}))})]})})})]}),e.jsx(Y,{title:"Start free, then choose with real usage in front of you.",origin:{kind:"pricing",key:"compare"}})]})}export{Oe as ComparePlans,Le as SitePricing};
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.