1import"../chunks/chunk-JNCSQRZE.js";import"../chunks/chunk-HTSUKP7L.js";import"../chunks/chunk-H762LMBD.js";import{c as V,e as E,g as Q}from"../chunks/chunk-P6RRCQ2T.js";import{c as Y}from"../chunks/chunk-7DL4Q2JM.js";import{a as K}from"../chunks/chunk-ZS2QSHIZ.js";import"../chunks/chunk-5A6SIB4G.js";import"../chunks/chunk-QHU62M36.js";import{a as z}from"../chunks/chunk-GEFMFV3B.js";import"../chunks/chunk-CHPTDZKO.js";import"../chunks/chunk-LBRVPRQB.js";import{a as w}from"../chunks/chunk-GQKEPIF5.js";import{a as G}from"../chunks/chunk-D7QO6UN2.js";import{a as k}from"../chunks/chunk-C2VMHKYJ.js";import"../chunks/chunk-GISLPSNJ.js";import{c as g,f as A}from"../chunks/chunk-ZN5HWET2.js";import{a as W}from"../chunks/chunk-K56IVQIL.js";import"../chunks/chunk-CJUF73MG.js";import{a as $}from"../chunks/chunk-QEJSU3QE.js";import"../chunks/chunk-62WDJPYY.js";import"../chunks/chunk-5IISKCOI.js";import"../chunks/chunk-PROI4LIG.js";import"../chunks/chunk-QAP7BNIX.js";import{c as o}from"../chunks/chunk-UCBVZH4Q.js";import{a as s}from"../chunks/chunk-ZGDIUCJP.js";import"../chunks/chunk-DCANE7XH.js";var oe=Object.freeze({ADMIN_ACTIVITY_READ:"admin.activity.read",ADMIN_JOBS_READ:"admin.jobs.read",ADMIN_JOBS_WRITE:"admin.jobs.write",ADMIN_MARKETING_READ:"admin.marketing.read",ADMIN_MARKETING_WRITE:"admin.marketing.write",ADMIN_TOOLS_READ:"admin.tools.read",ADMIN_TOOLS_WRITE:"admin.tools.write",BI_REVENUE_READ:"bi.revenue.read",BI_CONVERSIONS_READ:"bi.conversions.read",CONVERSATION_REPLY:"conversation.reply",FLAGSHIP_READ:"flagship.read",FLAGSHIP_WRITE:"flagship.write",GONG_READ:"gong.read",GONG_WRITE:"gong.write",GONG_CALL_READ_ALL:"gong.call.read-all",PHONE_KYC_READ:"phone.kyc.read",PHONE_KYC_WRITE:"phone.kyc.write",NINJA_USER_CREDIT_GRANT:"ninja-user.credit.grant",SALES_AUTO_READ:"sales-auto.read",SALES_AUTO_WRITE:"sales-auto.write",WIDGET_EMAIL_READ:"widget.email.read",WIDGET_EMAIL_WRITE:"widget.email.write",WIDGET_PRODUCT_SOURCE_READ:"widget.product-source.read",WIDGET_PRODUCT_SOURCE_WRITE:"widget.product-source.write",XERO_READ:"xero.read",XERO_CONNECTION_CONNECT:"xero.connection.connect",XERO_CONNECTION_DISCONNECT:"xero.connection.disconnect"}),X=Object.freeze({"admin.activity.read":"Activity","admin.jobs.read":"Hiring","admin.jobs.write":"editing the careers ads","admin.marketing.read":"Marketing","admin.marketing.write":"editing the marketing surfaces","admin.tools.read":"Tools","admin.tools.write":"acting in the internal tools","bi.conversions.read":"Conversions","bi.revenue.read":"company revenue","conversation.reply":"replying in a merchant conversation","flagship.read":"Flagship","flagship.write":"granting early access","gong.read":"the sales pipeline","gong.write":"editing the sales pipeline","gong.call.read-all":"every recorded call","ninja-user.credit.grant":"granting Ninja credit","phone.kyc.read":"a team\u2019s regulatory phone documents","phone.kyc.write":"replacing a team\u2019s regulatory phone documents","sales-auto.read":"Sales Auto","sales-auto.write":"submitting a Sales Auto batch","widget.email.read":"a widget\u2019s email channel","widget.email.write":"setting up a widget\u2019s email channel","widget.product-source.read":"a widget product source","widget.product-source.write":"changing a widget product source","xero.read":"Xero","xero.connection.connect":"connecting Xero","xero.connection.disconnect":"disconnecting Xero"});function J(t){return Object.hasOwn(X,t)?X[t]:null}var v=class{#t;delay;callback;constructor(e,i,a){this.delay=i,this.callback=a,e.addController(this)}hostConnected(){this.#t=setTimeout(()=>this.callback(),this.delay)}hostDisconnected(){clearTimeout(this.#t)}};var C=class extends o{static lightDom=!0;static properties={message:{type:String},duration:{type:Number},backgroundColor:{type:String},textColor:{type:String},icon:{type:String},name:{type:String},ondismiss:{type:Function,attribute:!1}};constructor(){super(),this.message="",this.duration=8e3,this.backgroundColor="white",this.textColor="gray-500",this.icon="",this.name="",this.ondismiss=void 0}#t;connectedCallback(){super.connectedCallback(),this.#t=new v(this,this.duration,this.#e)}#e=()=>{this.renderRoot.querySelector("#m-toast")?.classList.add("fade-out"),this.#t=new v(this,300,()=>{this.ondismiss?.(this.name),this.remove()})};closeNotification(){this.#e()}render(){return s` 2 3 <div 4 id="m-toast" 5 style="--m-toast-surface: var(--color-${this.#a}); --m-toast-surface-hover: var(--color-${this.#r}); --m-toast-text: var(--color-${this.#o})" 6 class="relative mb-4 flex w-80 transform items-center justify-between overflow-hidden rounded-lg bg-[var(--m-toast-surface)] p-3 text-[var(--m-toast-text)] shadow-lg transition-all duration-500 ease-in-out" 7 role="alert"> 8 ${this.icon?s` 9 10 <div class="${this.#n()} mr-3 inline-flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg">${this.#i()}</div> 11 `:null} 12 13 <div class="mr-3 text-sm font-normal">${this.message}</div> 14 15 <button 16 type="button" 17 @click="${this.closeNotification}" 18 class="-mx-1.5 -my-1.5 ml-auto inline-flex h-8 w-8 items-center justify-center rounded-lg bg-[var(--m-toast-surface)] p-1 text-gray-400 hover:bg-[var(--m-toast-surface-hover)]" 19 aria-label="Close"> 20 <svg class="h-3 w-3 fill-current text-[var(--m-toast-text)]" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 14 14"> 21 <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6" /> 22 </svg> 23 </button> 24 25 ${this.icon?s` 26 <div class="toast-progress"> 27 <div class="toast-progress-bar ${this.#s()}" style="animation-duration: ${this.duration}ms"></div> 28 </div> 29 `:null} 30 </div> 31 `}#i(){switch(this.icon){case"error":return s` 32 33 <svg class="h-5 w-5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20"> 34 <path 35 d="M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5Zm3.707 11.793a1 1 0 1 1-1.414 1.414L10 11.414l-2.293 2.293a1 1 0 0 1-1.414-1.414L8.586 10 6.293 7.707a1 1 0 0 1 1.414-1.414L10 8.586l2.293-2.293a1 1 0 0 1 1.414 1.414L11.414 10l2.293 2.293Z" /> 36 </svg> 37 `;case"success":return s` 38 39 <svg class="h-5 w-5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20"> 40 <path d="M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5Zm3.707 8.207-4 4a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L9 10.586l3.293-3.293a1 1 0 0 1 1.414 1.414Z" /> 41 </svg> 42 `;case"warning":return s` 43 44 <svg class="h-5 w-5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20"> 45 <path d="M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5ZM10 15a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm1-4a1 1 0 0 1-2 0V6a1 1 0 0 1 2 0v5Z" /> 46 </svg> 47 `;case"info":return s` 48 49 <svg class="h-5 w-5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20"> 50 <path d="M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5ZM9.5 4a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3ZM12 15H8a1 1 0 0 1 0-2h1v-3H8a1 1 0 0 1 0-2h2a1 1 0 0 1 1 1v4h1a1 1 0 0 1 0 2Z" /> 51 </svg> 52 `;default:return null}}get#a(){switch(this.backgroundColor){case"white":case"black":return this.backgroundColor;default:return`${this.backgroundColor}-500`}}get#r(){switch(this.backgroundColor){case"white":return"slate-100";case"black":return"gray-800";default:return`${this.backgroundColor}-700`}}#n(){switch(this.icon){case"error":return"bg-red-100 text-red-500";case"success":return"bg-lime-100 text-lime-500";case"warning":return"bg-orange-100 text-orange-500";case"info":return"bg-violet-100 text-violet-500";default:return""}}#s(){switch(this.icon){case"error":return"bg-red-500";case"success":return"bg-lime-500";case"warning":return"bg-orange-500";case"info":return"bg-violet-500";default:return""}}get#o(){return this.backgroundColor==="black"?"white":this.textColor}};customElements.define("m-toast",C);function re(t,e,{backgroundColor:i,textColor:a,duration:r,icon:n,position:d="top",name:f,onDismiss:b}={}){let c=t.createElement("m-toast");c.message=e,c.duration=r??8e3,c.backgroundColor=i??"white",c.textColor=a??"gray-500",c.icon=n||"",c.name=f||"",b&&(c.ondismiss=b);let u=t.getElementById(`toast-container-${d}`);return u||(u=t.createElement("div"),u.id=`toast-container-${d}`,u.classList.add("m-toast-container",d==="bottom"?"m-toast-container-bottom":"m-toast-container-top"),t.body.appendChild(u),u.popover="manual",u.showPopover()),u.appendChild(c),c}function I(t,e={}){return re(document,t,{icon:"error",...e})}var M=class{#t;#e=!1;constructor(e,{getBaseUrl:i}){this.#t=e,this.client=Q(i,{fetch:this.#i.bind(this)}),e.addController(this)}client;async#i(e,i){let a=await fetch(e,i);if(a.status===401&&!this.#e){this.#e=!0;let r=g("/login",{redirect:A(new URL(window.location.href))});window.location.href=g("/logout",{redirect:r})}return a.status===403&&I(ne(await a.clone().text())),a}hostDisconnected(){}};function ne(t){let e=J(t.trim());return e===null?"You don't have permission to do that":`You don't have access to ${e}. Ask our security officer (Alex) to give your account access.`}function Z(t){return new M(t,{getBaseUrl:()=>window.location.origin}).client}var P=class{#t;molinAPI;constructor(e){this.#t=e,this.molinAPI=Z(e),e.addController(this)}hostDisconnected(){}};
52function ee(t){return new P(t).molinAPI}var T=class extends o{static lightDom=!0;static properties={isModalOpen:{type:Boolean},scrollPosition:{type:Number},_loadingState:{type:String,state:!0}};#t=ee(this);constructor(){super(),this.isModalOpen=!1,this.scrollPosition=0,this._loadingState=""}_openModal(){this.scrollPosition=window.scrollY,this.isModalOpen=!0}_handleModalClose(){this.isModalOpen=!1}async#e(){await this.#a("professionalSetup")}async#i(){await this.#a("expertConsultation")}async#a(e){if(!this._loadingState)try{this._loadingState=e,this.requestUpdate();let i=A(new URL(window.location.href)),a=await this.#t["/app/billing/checkout"].POST({body:{serviceType:e,redirect:i}});if(a.redirectionURL)window.location.href=a.redirectionURL;else throw new Error("No checkout URL received")}catch(i){console.error("Checkout failed:",i),I("Unable to start checkout. Please try again or contact support."),window.Molin?.openChat?k({message:e==="professionalSetup"?"I'm interested in Professional AI Agent Setup. Can you help me get started?":"I'm interested in the Expert Consultation retainer. Can you tell me more about this service?",autoSend:!0}):this._openModal()}finally{this._loadingState="",this.requestUpdate()}}render(){return s` 53 <section> 54 <h2 class="font-display mb-2 text-3xl leading-tight font-semibold tracking-tight text-black sm:text-4xl sm:leading-tight">Expert Services</h2> 55 <p class="mb-14 max-w-2xl font-sans text-base text-gray-500 sm:text-lg">Get personalized help from our AI experts to maximize your success.</p> 56 57 <div class="mx-auto h-full max-w-5xl"> 58 <div class="grid grid-cols-1 items-stretch gap-6 *:h-full md:grid-cols-2"> 59 60 <m-attio-card> 61 <div class="flex h-full flex-col p-6"> 62 <div class="mb-6"> 63 <div class="mb-4"> 64 <h3 class="font-display mb-2 text-xl font-semibold text-black">Professional AI Agent Setup</h3> 65 <p class="font-sans text-sm leading-relaxed text-gray-600"> 66 Get your AI agent professionally configured by one of our Molin experts. We'll optimize your setup, train your AI on your specific products and business needs, and ensure maximum 67 performance from day one. 68 </p> 69 </div> 70 71 <div class="mb-6"> 72 <div class="flex items-center gap-2"> 73 <span class="font-sans text-4xl font-semibold text-[#0A2540]">$500</span> 74 </div> 75 <p class="mt-1 font-sans text-xs text-gray-500">One-time setup fee</p> 76 </div> 77 </div> 78 79 <div class="mb-6"> 80 <h4 class="mb-4 font-sans text-sm font-medium text-gray-900">What's included:</h4> 81 <ul class="space-y-3 font-sans"> 82 <li class="flex items-start gap-4 text-sm text-gray-600"> 83 <span class="inline-flex items-center rounded-lg bg-[#f5f5f599] p-[0.5px]"> 84 <svg width="15" height="15" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 85 <path d="M13.3337 4L6.00033 11.3333L2.66699 8" stroke="#6b7280" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" /> 86 </svg> 87 </span> 88 Up to 5 hours of hands-on work from our team 89 </li> 90 <li class="flex items-start gap-4 text-sm text-gray-600"> 91 <span class="inline-flex items-center rounded-lg bg-[#f5f5f599] p-[0.5px]"> 92 <svg width="15" height="15" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 93 <path d="M13.3337 4L6.00033 11.3333L2.66699 8" stroke="#6b7280" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" /> 94 </svg> 95 </span> 96 Personalized AI personality configuration 97 </li> 98 <li class="flex items-start gap-4 text-sm text-gray-600">
99 <span class="inline-flex items-center rounded-lg bg-[#f5f5f599] p-[0.5px]"> 100 <svg width="15" height="15" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 101 <path d="M13.3337 4L6.00033 11.3333L2.66699 8" stroke="#6b7280" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" /> 102 </svg> 103 </span> 104 Product catalog optimization and training 105 </li> 106 <li class="flex items-start gap-4 text-sm text-gray-600"> 107 <span class="inline-flex items-center rounded-lg bg-[#f5f5f599] p-[0.5px]"> 108 <svg width="15" height="15" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 109 <path d="M13.3337 4L6.00033 11.3333L2.66699 8" stroke="#6b7280" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" /> 110 </svg> 111 </span> 112 Custom FAQ and knowledge base setup 113 </li> 114 <li class="flex items-start gap-4 text-sm text-gray-600"> 115 <span class="inline-flex items-center rounded-lg bg-[#f5f5f599] p-[0.5px]"> 116 <svg width="15" height="15" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 117 <path d="M13.3337 4L6.00033 11.3333L2.66699 8" stroke="#6b7280" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" /> 118 </svg> 119 </span> 120 Integration guidance and best practices 121 </li> 122 <li class="flex items-start gap-4 text-sm text-gray-600"> 123 <span class="inline-flex items-center rounded-lg bg-[#f5f5f599] p-[0.5px]"> 124 <svg width="15" height="15" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 125 <path d="M13.3337 4L6.00033 11.3333L2.66699 8" stroke="#6b7280" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" /> 126 </svg> 127 </span> 128 30-day follow-up support 129 </li> 130 </ul> 131 </div> 132 133 <div class="mt-auto"> 134 <button @click="${this.#e}" class="w-full" ?disabled="${this._loadingState==="professionalSetup"}"> 135 <w-button class="w-full cursor-pointer" variant="primary" ?loading="${this._loadingState==="professionalSetup"}"> 136 ${this._loadingState==="professionalSetup"?"Starting checkout...":"Get Expert Setup"} 137 </w-button> 138 </button> 139 </div> 140 </div> 141 </m-attio-card> 142 143 144 <m-attio-card> 145 <div class="flex h-full flex-col p-6"> 146 <div class="mb-6"> 147 <div class="mb-4"> 148 <h3 class="font-display mb-2 text-xl font-semibold text-black">Expert Consultation Retainer</h3> 149 <p class="font-sans text-sm leading-relaxed text-gray-600"> 150 Monthly 2-hour sessions with our AI experts. Stay ahead of the curve with the latest AI tools, get exclusive updates about Molin features, and receive professional guidance on 151 advanced AI agent optimization. 152 </p> 153 </div> 154 155 <div class="mb-6"> 156 <div class="flex items-center gap-2"> 157 <span class="font-sans text-4xl font-semibold text-[#0A2540]">$200</span> 158 </div> 159 <p class="mt-1 font-sans text-xs text-gray-500">Per month for 2 hours</p> 160 </div> 161 </div> 162 163 <div class="mb-6"> 164 <h4 class="mb-4 font-sans text-sm font-medium text-gray-900">What you get:</h4> 165 <ul class="space-y-3 font-sans"> 166 <li class="flex items-start gap-4 text-sm text-gray-600">
167 <span class="inline-flex items-center rounded-lg bg-[#f5f5f599] p-[0.5px]"> 168 <svg width="15" height="15" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 169 <path d="M13.3337 4L6.00033 11.3333L2.66699 8" stroke="#6b7280" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" /> 170 </svg> 171 </span> 172 2 hours of expert consultation monthly 173 </li> 174 <li class="flex items-start gap-4 text-sm text-gray-600"> 175 <span class="inline-flex items-center rounded-lg bg-[#f5f5f599] p-[0.5px]"> 176 <svg width="15" height="15" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 177 <path d="M13.3337 4L6.00033 11.3333L2.66699 8" stroke="#6b7280" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" /> 178 </svg> 179 </span> 180 Latest AI tools and industry insights 181 </li> 182 <li class="flex items-start gap-4 text-sm text-gray-600"> 183 <span class="inline-flex items-center rounded-lg bg-[#f5f5f599] p-[0.5px]"> 184 <svg width="15" height="15" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 185 <path d="M13.3337 4L6.00033 11.3333L2.66699 8" stroke="#6b7280" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" /> 186 </svg> 187 </span> 188 Exclusive Molin platform updates and features 189 </li> 190 <li class="flex items-start gap-4 text-sm text-gray-600"> 191 <span class="inline-flex items-center rounded-lg bg-[#f5f5f599] p-[0.5px]"> 192 <svg width="15" height="15" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 193 <path d="M13.3337 4L6.00033 11.3333L2.66699 8" stroke="#6b7280" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" /> 194 </svg> 195 </span> 196 Professional AI agent fine-tuning guidance 197 </li> 198 <li class="flex items-start gap-4 text-sm text-gray-600"> 199 <span class="inline-flex items-center rounded-lg bg-[#f5f5f599] p-[0.5px]"> 200 <svg width="15" height="15" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 201 <path d="M13.3337 4L6.00033 11.3333L2.66699 8" stroke="#6b7280" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" /> 202 </svg> 203 </span> 204 Priority email support between sessions 205 </li> 206 </ul> 207 </div> 208 209 <div class="mt-auto"> 210 <button @click="${this.#i}" class="w-full" ?disabled="${this._loadingState==="expertConsultation"}"> 211 <w-button class="w-full cursor-pointer" variant="transparent" ?loading="${this._loadingState==="expertConsultation"}"> 212 ${this._loadingState==="expertConsultation"?"Starting checkout...":"Start Retainer"} 213 </w-button> 214 </button> 215 </div> 216 </div> 217 </m-attio-card> 218 </div> 219 </div> 220 </section> 221 `}};customElements.define("w-consult-card",T);var R;(function(t){t[t.Error=0]="Error",t[t.Warning=1]="Warning",t[t.Info=2]="Info",t[t.Debug=3]="Debug"})(R||(R={}));var _;(function(t){t.October24="2024-10",t.January25="2025-01",t.April25="2025-04",t.July25="2025-07",t.October25="2025-10",t.January26="2026-01",t.April26="2026-04",t.July26="2026-07",t.October26="2026-10",t.Unstable="unstable"})(_||(_={}));var F;(function(t){t.AccessToken="X-Shopify-Access-Token",t.ApiVersion="X-Shopify-API-Version",t.Domain="X-Shopify-Shop-Domain",t.Hmac="X-Shopify-Hmac-Sha256",t.Topic="X-Shopify-Topic",t.WebhookId="X-Shopify-Webhook-Id",t.Name="X-Shopify-Name",t.TriggeredAt="X-Shopify-Triggered-At",t.EventId="X-S
221hopify-Event-Id",t.StorefrontPrivateToken="Shopify-Storefront-Private-Token",t.StorefrontSDKVariant="X-SDK-Variant",t.StorefrontSDKVersion="X-SDK-Version"})(F||(F={}));var D;(function(t){t.Rest="rest",t.Graphql="graphql"})(D||(D={}));var m;(function(t){t.OneTime="ONE_TIME",t.Every30Days="EVERY_30_DAYS",t.Annual="ANNUAL",t.Usage="USAGE"})(m||(m={}));var p;(function(t){t.ApplyImmediately="APPLY_IMMEDIATELY",t.ApplyOnNextBillingCycle="APPLY_ON_NEXT_BILLING_CYCLE",t.Standard="STANDARD"})(p||(p={}));var O;(function(t){t[t.Continue=100]="Continue",t[t.SwitchingProtocols=101]="SwitchingProtocols",t[t.Ok=200]="Ok",t[t.Created=201]="Created",t[t.Accepted=202]="Accepted",t[t.NonAuthoritativeInformation=203]="NonAuthoritativeInformation",t[t.NoContent=204]="NoContent",t[t.ResetContent=205]="ResetContent",t[t.PartialContent=206]="PartialContent",t[t.MultipleChoices=300]="MultipleChoices",t[t.MovedPermanently=301]="MovedPermanently",t[t.Found=302]="Found",t[t.SeeOther=303]="SeeOther",t[t.NotModified=304]="NotModified",t[t.UseProxy=305]="UseProxy",t[t.TemporaryRedirect=307]="TemporaryRedirect",t[t.BadRequest=400]="BadRequest",t[t.Unauthorized=401]="Unauthorized",t[t.PaymentRequired=402]="PaymentRequired",t[t.Forbidden=403]="Forbidden",t[t.NotFound=404]="NotFound",t[t.MethodNotAllowed=405]="MethodNotAllowed",t[t.NotAcceptable=406]="NotAcceptable",t[t.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",t[t.RequestTimeout=408]="RequestTimeout",t[t.Conflict=409]="Conflict",t[t.Gone=410]="Gone",t[t.LengthRequired=411]="LengthRequired",t[t.PreconditionFailed=412]="PreconditionFailed",t[t.RequestEntityTooLarge=413]="RequestEntityTooLarge",t[t.RequestUriTooLong=414]="RequestUriTooLong",t[t.UnsupportedMediaType=415]="UnsupportedMediaType",t[t.RequestedRangeNotSatisfiable=416]="RequestedRangeNotSatisfiable",t[t.ExpectationFailed=417]="ExpectationFailed",t[t.ImATeapot=418]="ImATeapot",t[t.UnprocessableEntity=422]="UnprocessableEntity",t[t.TooManyRequests=429]="TooManyRequests",t[t.InternalServerError=500]="InternalServerError",t[t.NotImplemented=501]="NotImplemented",t[t.BadGateway=502]="BadGateway",t[t.ServiceUnavailable=503]="ServiceUnavailable",t[t.GatewayTimeout=504]="GatewayTimeout",t[t.HttpVersionNotSupported=505]="HttpVersionNotSupported"})(O||(O={}));var L;(function(t){t.Get="GET",t.Post="POST",t.Put="PUT",t.Patch="PATCH",t.Delete="DELETE",t.Head="HEAD",t.Options="OPTIONS",t.Connect="CONNECT"})(L||(L={}));var je=Object.freeze({stripe:"stripe",shopify:"shopify",shoprenter:"shoprenter",xero:"xero"}),y=Object.freeze({free:{id:"free",name:"Free",tagline:"Add Molin to your shop for free.",prices:{USD:{monthly:0,yearly:0},HUF:{monthly:0,yearly:0}},features:{liveChat:{name:"Transfer to human agent",available:!0},aiSidekick:{name:"Limited access to AI Sidekick",available:!0},conversationHistory:{name:"Limited conversation history",available:!0},analytics:{name:"Limited analytics",available:!0},language:{name:"Only 1 language",available:!0,hidden:!0},leadCollection:{name:"Lead collection",available:!1,upgradeTo:"startup"},support:{name:"Chat support",available:!1,upgradeTo:"startup"},fbMessengerIntegration:{name:"Facebook Messenger integration",available:!1,upgradeTo:"startup"},productAutoRefresh:{name:"Automatic product refresh",available:!1,upgradeTo:"startup",hidden:!0},documentAutoRefresh:{name:"Automatic document refresh",available:!1,upgradeTo:"startup",hidden:!0},multipleWidgets:{name:"Multiple widgets",available:!1,upgradeTo:"startup"},orderStatus:{name:"Order updates",available:!1,upgradeTo:"growth"},orderTracking:{name:"Tracking codes",available:!1,upgradeTo:"growth"},pdfUpload:{name:"PDF file upload",available:!1,upgradeTo:"growth",hidden:!0},premiumVoices:{name:"Premium voices",available:!0,hidden:!0},removePoweredBy:{name:'Remove "Powered by Molin AI" label',available:!1,upgradeTo:"scale"},orderCancel:{name:"Order cancellation",available:!1,upgradeTo:"scale"},orderModification:{name:"Order modification",available:!1,upgradeTo:"scale"},businessSidekick:{name:"Access to business Sidekick",available:!1,upgradeTo:"scale"},customActions:{name:"API access for custom actions",available:!1,upgradeTo:"scale",hidden:!0},customBubbleIcon:{name:"Custom bubble icon",available:!1,upgradeTo:"scale"},customDisclaimers:{name:"Custom legal notices",available:!1,upgradeTo:"scale",hidden:!0},unibox:{name:"Unibox",available:!1,upgradeTo:"enterprise",hidden:!0}},limits:{aiConversations:{name:"25 conversations",available:!0,limit:25}
221,maxProducts:{name:"Up to 500 products",available:!0,limit:500},serviceDocsChars:{name:"Up to 500K characters from documents",available:!0,limit:5e5},faqs:{name:"5 preset answers",available:!0,upgradeTo:"startup",limit:5,hidden:!0},teamMembers:{name:"1 team member",available:!0,limit:1,hidden:!0}},canDowngradeTo:[]},startup:{id:"startup",name:"Startup",tagline:"For individuals and small businesses.",prices:{USD:{monthly:23,yearly:19},HUF:{monthly:8900,yearly:7490}},features:{leadCollection:{name:"Collect potential leads",available:!0},fbMessengerIntegration:{name:"Social integrations",available:!0},productAutoRefresh:{name:"Automatic product refresh",available:!0,hidden:!1},documentAutoRefresh:{name:"Automatic document refresh",available:!0,hidden:!0},support:{name:"AI chatbot support",available:!0},analytics:{name:"Full analytics",available:!0},multipleWidgets:{name:"Multiple widgets",available:!0,hidden:!0},liveChat:{name:"Access to live chat",available:!0,hidden:!0},language:{name:"92+ languages",available:!0,hidden:!0},aiSidekick:{name:"Limited access to AI Sidekick",available:!0,hidden:!0},conversationHistory:{name:"Limited conversation history",available:!0,hidden:!0},pdfUpload:{name:"PDF file upload",available:!1,upgradeTo:"growth",hidden:!0},premiumVoices:{name:"Premium voices",available:!0,hidden:!0},orderStatus:{name:"Order updates",available:!1,upgradeTo:"growth"},orderTracking:{name:"Tracking codes",available:!1,upgradeTo:"growth"},removePoweredBy:{name:'Remove "Powered by Molin AI" label',available:!1,upgradeTo:"scale"},orderCancel:{name:"Order cancellation",available:!1,upgradeTo:"scale"},orderModification:{name:"Order modification",available:!1,upgradeTo:"scale"},businessSidekick:{name:"Access to business Sidekick",available:!1,upgradeTo:"scale"},customActions:{name:"API access for custom actions",available:!1,upgradeTo:"scale",hidden:!0},customBubbleIcon:{name:"Custom bubble icon",available:!1,upgradeTo:"scale"},customDisclaimers:{name:"Custom legal notices",available:!1,upgradeTo:"scale",hidden:!0},unibox:{name:"Unibox",available:!1,upgradeTo:"enterprise",hidden:!0}},limits:{aiConversations:{name:"125 conversations",available:!0,limit:125},maxProducts:{name:"Up to 2,000 products",available:!0,limit:2e3},faqs:{name:"20 preset answers",available:!0,upgradeTo:"growth",limit:20,hidden:!0},teamMembers:{name:"1 team member",available:!0,limit:1,hidden:!0},serviceDocsChars:{name:"Up to 1M characters from documents",available:!0,hidden:!0,limit:1e6}},canDowngradeTo:["free"]},growth:{id:"growth",name:"Growth",tagline:"For growing shops and teams.",prices:{USD:{monthly:65,yearly:55},HUF:{monthly:25490,yearly:21490}},features:{orderStatus:{name:"Order updates",available:!0},orderTracking:{name:"Tracking codes",available:!0},analytics:{name:"Limited analytics",available:!0},conversationHistory:{name:"Full conversation history",available:!0},support:{name:"Live chat support",available:!0},pdfUpload:{name:"PDF file upload",available:!0,hidden:!0},premiumVoices:{name:"Premium voices",available:!0,hidden:!0},language:{name:"92+ languages",available:!0,hidden:!0},aiSidekick:{name:"Limited access to AI Actions",available:!0,hidden:!0},leadCollection:{name:"Lead collection",available:!0,hidden:!0},liveChat:{name:"Access to live chat",available:!0,hidden:!0},fbMessengerIntegration:{name:"Facebook Messenger integration",available:!0,hidden:!0},productAutoRefresh:{name:"Automatic product refresh",available:!0,hidden:!0},documentAutoRefresh:{name:"Automatic document refresh",available:!0,hidden:!0},multipleWidgets:{name:"Multiple widgets",available:!0,hidden:!0},orderModification:{name:"Order modification",available:!1,upgradeTo:"scale"},orderCancel:{name:"Order cancellation",available:!1,upgradeTo:"scale"},removePoweredBy:{name:'Remove "Powered by Molin AI" label',available:!1,upgradeTo:"scale"},customActions:{name:"API access for custom actions",available:!1,upgradeTo:"scale",hidden:!0},businessSidekick:{name:"Access to business Sidekick",available:!1,upgradeTo:"scale"},customBubbleIcon:{name:"Custom bubble icon",available:!1,upgradeTo:"scale"},customDisclaimers:{name:"Custom legal notices",available:!1,upgradeTo:"scale",hidden:!0},unibox:{name:"Unibox",available:!1,upgradeTo:"enterprise",hidden:!0}},limits:{aiConversations:{name:"500 conversations",available:!0,limit:500}
221,maxProducts:{name:"Up to 10,000 products",available:!0,limit:1e4},faqs:{name:"50 preset answers",available:!0,upgradeTo:"scale",limit:50,hidden:!0},teamMembers:{name:"1 team member",available:!0,limit:1,hidden:!0},serviceDocsChars:{name:"Up to 5M characters from documents",available:!0,hidden:!0,limit:5e6}},canDowngradeTo:["free","startup"]},scale:{id:"scale",name:"Scale",tagline:"For big shops with lots of customers.",prices:{USD:{monthly:139,yearly:119},HUF:{monthly:54490,yearly:46490}},features:{orderModification:{name:"Order modification",available:!0},orderCancel:{name:"Order cancellation",available:!0},analytics:{name:"Full analytics",available:!0},customActions:{name:"Custom AI Actions",available:!0},support:{name:"Email support",available:!0},orderStatus:{name:"Order updates",available:!0,hidden:!0},orderTracking:{name:"Tracking codes",available:!0,hidden:!0},language:{name:"92+ languages",available:!0,hidden:!0},aiSidekick:{name:"Full access to AI Actions",available:!0,hidden:!0},leadCollection:{name:"Lead collection",available:!0,hidden:!0},conversationHistory:{name:"Full conversation history",available:!0,hidden:!0},removePoweredBy:{name:"Remove \u201CPowered by Molin AI\u201D label",available:!0,hidden:!0},pdfUpload:{name:"PDF file upload",available:!0,hidden:!0},premiumVoices:{name:"Premium voices",available:!0,hidden:!0},businessSidekick:{name:"Access to business Sidekick",available:!0,hidden:!0},liveChat:{name:"Access to live chat",available:!0,hidden:!0},fbMessengerIntegration:{name:"Facebook Messenger integration",available:!0,hidden:!0},productAutoRefresh:{name:"Automatic product refresh",available:!0,hidden:!0},documentAutoRefresh:{name:"Automatic document refresh",available:!0,hidden:!0},multipleWidgets:{name:"Multiple widgets",available:!0,hidden:!0},customBubbleIcon:{name:"Custom bubble icon",available:!0,hidden:!0},customDisclaimers:{name:"Custom legal notices",available:!0,hidden:!0},unibox:{name:"Unibox",available:!1,upgradeTo:"enterprise",hidden:!0}},limits:{aiConversations:{name:"1,250 conversations",available:!0,limit:1250},maxProducts:{name:"Up to 50,000 products",available:!0,limit:5e4},faqs:{name:"100 preset answers",available:!0,limit:100,hidden:!0},teamMembers:{name:"1 team member",available:!0,limit:1,hidden:!0},serviceDocsChars:{name:"Up to 10M characters from documents",available:!0,hidden:!0,limit:1e7}},canDowngradeTo:["free","startup","growth"]},enterprise:{id:"enterprise",name:"Enterprise",tagline:"For special needs",prices:{USD:{monthly:1/0,yearly:1/0},HUF:{monthly:1/0,yearly:1/0}},features:{customActions:{name:"Custom AI solutions",available:!0},customIntegration:{name:"Custom integrations",available:!0},orderModification:{name:"Order modification",available:!0,hidden:!0},orderCancel:{name:"Order cancellation",available:!0,hidden:!0},analytics:{name:"Full analytics",available:!0,hidden:!0},zapierIntegration:{name:"Zapier integration",available:!0,hidden:!0},orderStatus:{name:"Order updates",available:!0,hidden:!0},orderTracking:{name:"Tracking codes",available:!0,hidden:!0},language:{name:"92+ languages",available:!0,hidden:!0},aiSidekick:{name:"Full access to AI Actions",available:!0,hidden:!0},leadCollection:{name:"Lead collection",available:!0,hidden:!0},conversationHistory:{name:"Full conversation history",available:!0,hidden:!0},removePoweredBy:{name:"Remove \u201CPowered by Molin AI\u201D label",available:!0,hidden:!0},pdfUpload:{name:"PDF file upload",available:!0,hidden:!0},premiumVoices:{name:"Premium voices",available:!0,hidden:!0},businessSidekick:{name:"Access to business Sidekick",available:!0,hidden:!0},liveChat:{name:"Access to live chat",available:!0,hidden:!0},fbMessengerIntegration:{name:"Facebook Messenger integration",available:!0,hidden:!0},productAutoRefresh:{name:"Automatic product refresh",available:!0,hidden:!0},documentAutoRefresh:{name:"Automatic document refresh",available:!0,hidden:!0},multipleWidgets:{name:"Multiple widgets",available:!0,hidden:!0},customBubbleIcon:{name:"Custom bubble icon",available:!0,hidden:!0},customDisclaimers:{name:"Custom legal notices",available:!0,hidden:!0},unibox:{name:"Universal inbox",available:!0},support:{name:"Priority support",available:!0}},limits:{aiConversations:{name:"Unlimited conversations",available:!0,limit:1250}
221,maxProducts:{name:"Unlimited products",available:!0,limit:5e4},faqs:{name:"Unlimited preset answers",available:!0,limit:100,hidden:!0},teamMembers:{name:"Unlimited team members",available:!0,limit:1/0,hidden:!0},serviceDocsChars:{name:"Unlimited characters from documents",available:!0,hidden:!0,limit:1e7}},canDowngradeTo:["startup","growth","scale"]}});var He=Object.freeze({startup:{monthly:"price_1QQRZKH2qbqFcw1tdhtBLD9f",yearly:"price_1QQRbFH2qbqFcw1tf2azAl7E",plan:{slug:"startup",title:"Startup",limits:l("startup")}},growth:{monthly:"price_1QQRckH2qbqFcw1tQczrDFse",yearly:"price_1QQRcaH2qbqFcw1tGzvMXHSD",plan:{slug:"growth",title:"Growth",limits:l("growth")}},scale:{monthly:"price_1QQRdKH2qbqFcw1tZPSpGhmZ",yearly:"price_1QQRdbH2qbqFcw1tL2CaKzb4",plan:{slug:"scale",title:"Scale",limits:l("scale")}}}),We=Object.freeze({startup:{monthly:"price_1QQRepH2qbqFcw1t8aTidFUK",yearly:"price_1QQRezH2qbqFcw1tIoE88mBp",plan:{slug:"startup",title:"Startup",limits:l("startup")}},growth:{monthly:"price_1QQRiCH2qbqFcw1tPVJM6UQ5",yearly:"price_1QQRiNH2qbqFcw1tEz2VAUuo",plan:{slug:"growth",title:"Growth",limits:l("growth")}},scale:{monthly:"price_1QQRjCH2qbqFcw1t6sq2X4R5",yearly:"price_1QQRjRH2qbqFcw1tasg3bo0L",plan:{slug:"scale",title:"Scale",limits:l("scale")}}}),Ge=Object.freeze({additionalTeamSeat:{monthly:"price_1QACO4H2qbqFcw1tQO2YOmk9",yearly:"price_1QACO4H2qbqFcw1t0tSHSwwL"}}),ze=Object.freeze({additionalTeamSeat:{monthly:"price_1Q8iTgH2qbqFcw1tCyuY4M1C",yearly:"price_1QACLfH2qbqFcw1tnPL9oXR6"}}),Ve=Object.freeze({startup:"promo_1SNYSZH2qbqFcw1tSdsfVERw",growth:"promo_1RqW5yH2qbqFcw1tlhJA7A7A",scale:"promo_1RqW6cH2qbqFcw1thDjmhjU4"}),Qe=Object.freeze({startup:"promo_1RqVy2H2qbqFcw1tQrRwPCGa",growth:"promo_1RqVxVH2qbqFcw1tHNG53Jp0",scale:"promo_1RqVwZH2qbqFcw1tReE7jDXS"}),Ye=Object.freeze({additionalTeamSeat:{prices:{USD:{monthly:19,yearly:228}}}}),Ke=Object.freeze({startup:{monthly:496,yearly:503,plan:{slug:"startup",title:"Startup",limits:l("startup")}},growth:{monthly:499,yearly:505,plan:{slug:"growth",title:"Growth",limits:l("growth")}},scale:{monthly:498,yearly:504,plan:{slug:"scale",title:"Scale",limits:l("scale")}}}),Xe=Object.freeze({startup:{monthly:630,yearly:633,plan:{slug:"startup",title:"Startup",limits:l("startup")}},growth:{monthly:632,yearly:635,plan:{slug:"growth",title:"Growth",limits:l("growth")}},scale:{monthly:631,yearly:634,plan:{slug:"scale",title:"Scale",limits:l("scale")}}}),S=Object.freeze({slug:"free",title:"Free",limits:l("free"),status:"active",partner:"stripe",payload:null,period:"monthly"});function l(t){return y[t].limits}var Je=Object.freeze({startup:{planName:"Startup",monthly:{replacementBehavior:p.ApplyImmediately,lineItems:[{interval:m.Every30Days,amount:23,currencyCode:"USD"}]},yearly:{replacementBehavior:p.ApplyImmediately,lineItems:[{interval:m.Annual,amount:228,currencyCode:"USD"}]}},growth:{planName:"Growth",monthly:{replacementBehavior:p.ApplyImmediately,lineItems:[{interval:m.Every30Days,amount:65,currencyCode:"USD"}]},yearly:{replacementBehavior:p.ApplyImmediately,lineItems:[{interval:m.Annual,amount:660,currencyCode:"USD"}]}},scale:{planName:"Scale",monthly:{replacementBehavior:p.ApplyImmediately,lineItems:[{interval:m.Every30Days,amount:139,currencyCode:"USD"}]},yearly:{replacementBehavior:p.ApplyImmediately,lineItems:[{interval:m.Annual,amount:1428,currencyCode:"USD"}]}}}),Ze=Object.freeze({trialDays:14,discounts:{startup:{monthly:{durationLimitInIntervals:3,value:{amount:22}},yearly:{durationLimitInIntervals:1,value:{amount:22}}},growth:{monthly:{durationLimitInIntervals:3,value:{amount:64}},yearly:{durationLimitInIntervals:1,value:{amount:64}}},scale:{monthly:{durationLimitInIntervals:3,value:{amount:138}},yearly:{durationLimitInIntervals:1,value:{amount:138}}}}}),et=Object.freeze({professionalSetup:{priceId:"price_1Rqy4fH2qbqFcw1tOYRlDQej",name:"Professional AI Agent Setup"},expertConsultation:{priceId:"price_1RqxycH2qbqFcw1tym46vSjH",name:"Expert Consultation Retainer"}}),tt=Object.freeze({professionalSetup:{priceId:"price_1RuxjhH2qbqFcw1tSfAj5vPj",name:"Professional AI Agent Setup"},expertConsultation:{priceId:"price_1Ruxl3H2qbqFcw1tVeDLO5yb",name:"Expert Consultation Retainer"}});var q=class extends o{static lightDom=!0;static properties={isModalOpen:{type:Boolean},showError:{type:Boolean},formData:{type:Object},formErrors:{type:Object},isLoading:{type:Boolean},scrollPosition:{type:Number},isShowingFailMessage:{type:Boolean,state:!0},_modalMarginTop:{type:String,state:!0}};#t=w(this);#e=G(this);#i=E(this,()=>this.#a());constructor(){super(),this.isModalOpen=!0,this.showError=!1,this.formData={name:"",email:"",shopUrl:"",visitors:"",plan:"",reason:""}
221,this.formErrors={name:"",email:"",shopUrl:"",visitors:"",plan:"",reason:""},this.isLoading=!1,this.scrollPosition=0,this.isShowingFailMessage=!1,this._modalMarginTop="80px"}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.#i.request(),document.addEventListener("keydown",this._handleKeyDown,{signal:this.#e.signal})}firstUpdated(){this.#i.request()}#a(){this._modalMarginTop=window.innerWidth>=640?`max(80px, ${this.scrollPosition-window.scrollY+(window.innerHeight/2-400)}px)`:"80px"}_handleKeyDown=e=>{(e.metaKey||e.ctrlKey)&&e.key==="Enter"&&(e.preventDefault(),this._submitForm(e))};render(){return s`${this.isModalOpen?this._renderModal():""}`}_renderModal(){return s` 222 <div 223 class="fixed inset-0 z-30 flex items-start justify-center overflow-y-auto bg-black/10 p-4 sm:p-0" 224 @click=${e=>{e.target===e.currentTarget&&this._closeModal()}}> 225 <div class="relative max-h-[90vh] w-full max-w-xl overflow-y-auto" style="margin-top: ${this._modalMarginTop}"> 226 <form @submit=${this._submitForm} novalidate> 227 <m-attio-card> 228 <div class="group relative h-full overflow-hidden p-6"> 229 <div class="mb-6 flex items-center justify-between border-b border-gray-900/10 pb-4"> 230 <div class="flex items-center"> 231 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="mr-2 h-5 w-5"> 232 <path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" /> 233 </svg> 234 <h2 class="font-display text-base leading-7 font-semibold text-gray-900">Book a Demo</h2> 235 </div> 236 <button @click=${this._closeModal} type="button" aria-label="Close" class="text-gray-500 hover:text-gray-700"> 237 <svg class="h-4 w-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 238 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path> 239 </svg> 240 </button> 241 </div> 242 243 ${this.isShowingFailMessage?s` 244 <div class="py-6 text-center"> 245 <h3 class="font-display mb-3 text-lg font-semibold text-gray-900">We cannot offer a demo at this moment</h3> 246 <p class="mb-6 font-sans text-base text-gray-500"> 247 However, you can start using our AI chatbot right away! Create your free account and experience the power of AI-driven customer service. 248 </p> 249 <a href="/app" rel="nofollow"> 250 <w-link variant="primary">Create your free AI now</w-link> 251 </a> 252 </div> 253 `:s` 254 <div class="space-y-4"> 255 <div> 256 <label class="mb-1 block font-sans text-sm text-gray-500">Name *</label> 257 <input 258 aria-label="Name" 259 type="text" 260 name="name" 261 required 262 minlength="2" 263 @input=${this._handleInput} 264 class="${this.formErrors.name?"ring-red-500/50":"ring-gray-300/50"} block w-full rounded-xl border-0 px-3 py-2 font-sans text-sm text-gray-900 ring-1 ring-inset focus:ring-1 focus:ring-[#601feb]/50 focus-visible:outline-none" /> 265 ${this.formErrors.name?s`<p class="mt-1 font-sans text-xs text-red-500">${this.formErrors.name}</p>`:""} 266 </div> 267 268 <div> 269 <label class="mb-1 block font-sans text-sm text-gray-500">Email address *</label> 270 <input 271 aria-label="Email address" 272 type="email" 273 name="email" 274 required 275 pattern="[^@s]+@[^@s]+.[^@s]+"
276 @input=${this._handleInput} 277 class="${this.formErrors.email?"ring-red-500/50":"ring-gray-300/50"} block w-full rounded-xl border-0 px-3 py-2 font-sans text-sm text-gray-900 ring-1 ring-inset focus:ring-1 focus:ring-[#601feb]/50 focus-visible:outline-none" /> 278 ${this.formErrors.email?s`<p class="mt-1 font-sans text-xs text-red-500">${this.formErrors.email}</p>`:""} 279 </div> 280 281 <div> 282 <label class="mb-1 block font-sans text-sm text-gray-500">URL of your shop *</label> 283 <input 284 aria-label="Shop URL" 285 type="url" 286 name="shopUrl" 287 required 288 pattern="https?://.+" 289 @input=${this._handleInput} 290 placeholder="https://" 291 class="${this.formErrors.shopUrl?"ring-red-500/50":"ring-gray-300/50"} block w-full rounded-xl border-0 px-3 py-2 font-sans text-sm text-gray-900 placeholder-gray-500 ring-1 ring-inset focus:ring-1 focus:ring-[#601feb]/50 focus-visible:outline-none" /> 292 ${this.formErrors.shopUrl?s`<p class="mt-1 font-sans text-xs text-red-500">${this.formErrors.shopUrl}</p>`:""} 293 </div> 294 295 <div> 296 <label class="mb-1 block font-sans text-sm text-gray-500">Number of average monthly visitors *</label> 297 <input 298 aria-label="Average monthly visitors" 299 type="number" 300 name="visitors" 301 required 302 min="0" 303 placeholder="100,000" 304 @input=${this._handleInput} 305 class="${this.formErrors.visitors?"ring-red-500/50":"ring-gray-300/50"} block w-full rounded-xl border-0 px-3 py-2 font-sans text-sm text-gray-900 placeholder-gray-500 ring-1 ring-inset focus:ring-1 focus:ring-[#601feb]/50 focus-visible:outline-none" /> 306 ${this.formErrors.visitors?s`<p class="mt-1 font-sans text-xs text-red-500">${this.formErrors.visitors}</p>`:""} 307 </div> 308 309 <div> 310 <label class="mb-1 block font-sans text-sm text-gray-500">Which plan are you interested in? *</label> 311 <select 312 aria-label="Plan" 313 name="plan" 314 required 315 @change=${this._handleInput} 316 class="${this.formErrors.plan?"ring-red-500/50":"ring-gray-300/50"} block w-full rounded-xl border-0 px-3 py-2 font-sans text-sm text-gray-900 ring-1 ring-inset focus:ring-1 focus:ring-[#601feb]/50 focus-visible:outline-none"> 317 <option value="" class="text-gray-500">Select a plan</option> 318 <option value="startup">Startup</option> 319 <option value="growth">Growth</option> 320 <option value="scale">Scale</option> 321 <option value="enterprise">Enterprise</option> 322 </select> 323 ${this.formErrors.plan?s`<p class="mt-1 font-sans text-xs text-red-500">${this.formErrors.plan}</p>`:""} 324 </div> 325 326 <div> 327 <label class="mb-1 block font-sans text-sm text-gray-500">What's the reason why you want an AI chatbot? *</label> 328 <textarea 329 aria-label="Reason for wanting an AI chatbot" 330 name="reason" 331 required 332 minlength="10"
333 @input=${this._handleInput} 334 rows="3" 335 class="${this.formErrors.reason?"ring-red-500/50":"ring-gray-300/50"} block w-full rounded-xl border-0 px-3 py-2 font-sans text-sm text-gray-900 ring-1 ring-inset focus:ring-1 focus:ring-[#601feb]/50 focus-visible:outline-none"></textarea> 336 ${this.formErrors.reason?s`<p class="mt-1 font-sans text-xs text-red-500">${this.formErrors.reason}</p>`:""} 337 </div> 338 </div> 339 340 <div class="mt-6 flex items-center justify-end gap-x-6"> 341 <button type="button" @click="${this._closeModal}" class="font-sans text-sm text-gray-500">Cancel</button> 342 <button @click="${this._submitForm}" ?disabled=${this.isLoading}> 343 <w-button variant="primary">${this.isLoading?"Processing...":"Book"}</w-button> 344 </button> 345 </div> 346 `} 347 </div> 348 </m-attio-card> 349 </form> 350 </div> 351 </div> 352 `}_handleInput(e){let i=e.target instanceof HTMLElement?e.target:null;if(!i)return;let a="name"in i?String(i.name):"",r="value"in i?String(i.value):"";if(a){switch(a){case"name":case"email":case"shopUrl":case"visitors":case"plan":case"reason":break;default:return}this.formErrors[a]&&(this.formErrors={...this.formErrors,[a]:""}),this.formData={...this.formData,[a]:r}}}_validateField(e){let i=e.name,a="";return"required"in e&&e.required&&!e.value?a="This field is required":e.type==="email"&&!e.validity.valid?a="Please enter a valid email address":e.type==="url"&&!e.validity.valid?a="Please enter a valid URL starting with http:// or https://":"minLength"in e&&e.minLength&&e.value.length<e.minLength&&(a=`Must be at least ${e.minLength} characters`),this.formErrors={...this.formErrors,[i]:a},!a}_submitForm(e){e.preventDefault();let a=[...this.renderRoot.querySelector("form")?.elements??[]],r=!0;for(let n of a)n.name&&(this._validateField(n)||(r=!1));if(r){this.isLoading=!0;let n=parseInt(this.formData.visitors,10),d=this.formData.plan;(async()=>{try{if(!(await fetch("/api/v0/contact",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.formData)})).ok)throw new Error("Failed to submit form")}catch(f){console.error("Failed to submit contact form:",f),this.showError=!0,this.isLoading=!1;return}(d==="scale"||d==="enterprise")&&n>=1e5?window.location.href="https://calendar.app.google/rDmFn8pJMx6y7tj9A":this.#t.setTimeout(()=>{this._showFailMessage()},1e3),this.isLoading=!1})().catch(console.error)}else console.log("Form has errors:",this.formErrors)}_showFailMessage(){this.isShowingFailMessage=!0}_closeModal(){this.isModalOpen=!1,document.body.style.position="",document.body.style.top="",document.body.style.width="",window.scrollTo(0,this.scrollPosition),this.dispatchEvent(new CustomEvent("close"))}_openModal(){this.scrollPosition=window.pageYOffset,this.isModalOpen=!0,document.body.style.position="fixed",document.body.style.top=`-${this.scrollPosition}px`,document.body.style.width="100%"}};customElements.define("w-book-demo-modal",q);var x=Object.freeze({USD:"USD",HUF:"HUF"});function h(t,e){if(t===1/0)return"Custom";let i=Y(t);switch(e){case x.USD:return`$${i}`;case x.HUF:return`${i} Ft`;default:return`$${i}`}}var U=class extends o{static lightDom=!0;static properties={plan:{type:Object},period:{type:String},currency:{type:String},horizontal:{type:Boolean},planActionOutput:{type:Object,attribute:!1},disabled:{type:Boolean},isRecommended:{type:Boolean},additionalPrice:{type:Number},showContinueButton:{type:Boolean,attribute:"show-continue-button"},showCampaignBanner:{type:Boolean,attribute:"show-campaign-banner"}};constructor(){super(),this.plan=y.free,this.period="monthly",this.currency=x.USD,this.horizontal=!1,this.planActionOutput=void 0,this.disabled=!1,this.isRecommended=!1,this.additionalPrice=0,this.showContinueButton=!1,this.showCampaignBanner=!1}render(){return this.plan?.id?this.#t():null}#t(){let e=this.showCampaignBanner&&["Startup","Growth","Scale"].includes(this.plan.name)&&this.currency!==x.HUF,i=this.period==="yearly"?this.plan.prices[this.currency].yearly:this.plan.prices[this.currency].monthly,a=i===1/0?i:i+this.additionalPrice;return s` 353 <m-attio-card class="h-full"> 354 <div class="${this.isRecommended?"border-[#601feb]":"border-[#
354E4E5E9]"} group relative h-full overflow-hidden rounded-[20px] border p-6"> 355 ${e?s` 356 <div data-testid="campaign-slot" data-campaign="true" class="-mx-6 -mt-6 mb-4 rounded-t-[20px] bg-gray-800 px-6 pt-3 pb-2 text-center font-sans text-xs text-white"> 357 ${this.period==="yearly"?"1st month for $1":"$1/mo for 3 months!"} 358 </div> 359 `:""} 360 <div class="card-content flex flex-col rounded-[20px]"> 361 <div class="main-section"> 362 <div class="mb-2 flex items-center gap-2"> 363 <p data-testid="plan-name" class="font-display text-xl font-semibold">${this.plan.name}</p> 364 ${this.isRecommended?s`<span class="rounded-full bg-[#601feb]/10 px-1.5 py-1 font-sans text-xs font-medium text-[#601feb]">Recommended</span>`:null} 365 </div> 366 <div class="mb-8"> 367 <div class="min-w-[100px]"> 368 <div class="flex items-center gap-2" data-testid="price"> 369 ${e?s` 370 <div class="flex gap-2"> 371 <span class="strikeout font-sans text-4xl font-semibold text-[#0A2540]">${h(a,this.currency)}</span> 372 <div class="flex items-center gap-1"> 373 <span data-testid="campaign-price" class="font-sans text-2xl font-semibold text-green-700">${h(1,this.currency)}</span> 374 ${this.additionalPrice>0?s`<span class="font-sans text-lg font-semibold text-green-700">+ ${h(this.additionalPrice,this.currency)}</span>`:""} 375 </div> 376 </div> 377 `:this.additionalPrice>0&&i!==1/0?s` 378 <div class="flex gap-2"> 379 <span class="strikeout font-sans text-4xl font-semibold text-[#0A2540]">${h(i,this.currency)}</span> 380 <span class="font-sans text-3xl font-semibold text-[#0A2540]">${h(a,this.currency)}</span> 381 </div> 382 `:s`<span class="font-sans text-4xl font-semibold text-[#0A2540]">${h(a,this.currency)}</span>`} 383 </div> 384 <div data-testid="price-details" class="mt-1 font-sans text-xs text-gray-500"> 385 <p>${this.period==="yearly"?"Per month, billed annually":"Per month, billed monthly"}</p> 386 ${e?s` 387 <p data-testid="campaign-description" class="text-green-700">${this.period==="yearly"?"$1 for the 1st month!":"/mo for 3 months!"}</p> 388 ${this.additionalPrice>0?s`<p class="text-gray-500">+ ${h(this.additionalPrice,this.currency)} for additional seats</p>`:""} 389 `:this.additionalPrice>0?s`<p class="text-gray-500">Includes ${h(this.additionalPrice,this.currency)} for additional seats</p>`:""} 390 </div> 391 </div> 392 </div> 393 394 ${this.#e()} 395 </div> 396 397 <div class="limits-section"> 398 <ul class="space-y-3 font-sans"> 399 ${$(Object.values(this.plan.limits).filter(r=>!r.hidden&&r.available),r=>r.name,r=>s` 400 <li class="group flex items-start gap-4 text-sm text-gray-600"> 401 <span class="inline-flex items-center rounded-lg bg-[#f5f5f599] p-[0.5px]"> 402 <svg width="15" height="15" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 403 <path d="M13.3337 4L6.00033 11.3333L2.66699 8" stroke="#6b7280" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" /> 404 </svg> 405 </span> 406 ${r.name} 407 </li> 408 `)} 409 </ul> 410 </div> 411 412 <div class="divider my-6 border-t border-[#EEEDF173]"></div> 413 414 <div class="features-section"> 415 ${this.plan.id!==S.slug?s` 416 <p data-testid="features-heading" class="mb-4 font-sans text-sm font-medium text-gray-900"> 417 Everything in ${V(this.plan.canDowngradeTo[this.plan.canDowngradeTo.length-1])}, plus: 418 </p> 419 `:null} 420 <ul class="space-y-3 font-sans"> 421 ${$(Object.values(this.plan.features).filter(r=>!r.hidden&&r.available),r=>r.name,r=>s` 422 <li class="group flex items-start gap-4 text-sm text-gray-600">
423 <span class="inline-flex items-center rounded-lg bg-[#f5f5f599] p-[0.5px]"> 424 <svg width="15" height="15" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 425 <path d="M13.3337 4L6.00033 11.3333L2.66699 8" stroke="#6b7280" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" /> 426 </svg> 427 </span> 428 ${r.name} 429 </li> 430 `)} 431 </ul> 432 </div> 433 </div> 434 </div> 435 </m-attio-card> 436 `}#e(){let{onClick:e,isLoading:i,buttonLabel:a,notice:r,isActivePlan:n}=this.planActionOutput??{};return this.showContinueButton&&n?s` 437 <a href="/app/personality?complete=1" class="mb-8 block w-full"> 438 <w-link class="w-full cursor-pointer" variant="${"transparent"}" ?disabled="${this.disabled}">Continue</w-link> 439 </a> 440 `:a&&e||i?s` 441 ${r?s`<p class="my-4 text-center text-sm text-black italic">${r}</p>`:null} 442 443 <button @click="${e}" aria-label="${a||"Loading plan"}" class="mb-8 w-full" ?disabled="${this.disabled}"> 444 <w-button 445 class="flex w-full cursor-pointer items-center justify-center gap-2" 446 variant="${this.plan.id==="free"||this.plan.name==="Enterprise"?"transparent":"primary"}" 447 ?disabled="${this.disabled}"> 448 ${i?s`<m-icon class="block h-6 w-6 animate-spin text-white" name="lucide:loader-circle"></m-icon>`:s`<span>${a}</span>`}</w-button 449 > 450 </button> 451 `:r?s` 452 <div class="mb-8 flex h-12 items-center justify-center"> 453 <p class="text-center text-sm text-black italic">${r}</p> 454 </div> 455 `:s``}};customElements.define("w-plans-card",U);var N=class extends o{static lightDom=!0;static properties={isAnnual:{type:Boolean},monthlyVisitors:{type:Number},isAnimating:{type:Boolean},employeeCount:{type:Number},isModalOpen:{type:Boolean},scrollPosition:{type:Number}};constructor(){super(),this.isAnnual=!0,this.monthlyVisitors=0,this.isAnimating=!0,this.employeeCount=1,this.isModalOpen=!1,this.scrollPosition=0}#t=w(this);#e=z(this);#i=!1;#a=0;#r=!1;#n=E(this,()=>this.#s());#s(){let e=this.renderRoot.querySelector('input[type="range"]'),i=this.renderRoot.querySelector(".slider-label"),a=this.renderRoot.querySelector(".slider-thumb");if(!e||!i||!a)return;let r=parseInt(e.min,10),n=parseInt(e.max,10),d=Math.max(0,Math.min(1,(this.#a-r)/(n-r))),f=e.offsetWidth,b=a.offsetWidth,c=d*Math.max(0,f-b),u=c+b/2,se=Math.max(0,Math.min(f-i.offsetWidth,u-i.offsetWidth/2));a.style.transform=`translate3d(${c}px, -50%, 0)`,i.style.transform=`translate3d(${se}px, 0, 0)`,e.style.setProperty("--gradient-filled-percentage",`${d*100}%`)}#o=K(this,()=>this.#n.request());#c(e,i){if(this.#e.stopAll(),window.matchMedia("(prefers-reduced-motion: reduce)").matches){this.#a=e,i&&(this.monthlyVisitors=e,this.isAnimating=!1),this.#s();return}this.#e.animate({from:this.#a,to:e,type:"spring",stiffness:i?85:700,damping:i?20:55,mass:i?1:.8,restDelta:10,restSpeed:10,onUpdate:a=>{if(this.#a=a,i){let r=Math.round(a/1e3)*1e3;r!==this.monthlyVisitors&&(this.monthlyVisitors=r)}this.#s()},onComplete:()=>{this.#a=e,i&&(this.monthlyVisitors=e,this.isAnimating=!1),this.#s()}})}updateMonthlyVisitors(e){if(!(e.target instanceof HTMLInputElement))return;this.isAnimating&&(this.isAnimating=!1,this.#e.stopAll());let i=parseInt(e.target.value,10);Number.isNaN(i)||(i=Math.round(i/1e3)*1e3,i=Math.max(0,Math.min(1e5,i)),this.monthlyVisitors=i,this.#r?this.#c(i,!1):(this.#e.stopAll(),this.#a=i,this.#s()))}#u(){this.#r=!0}#l(){this.#r=!1}formatVisitors(e){return e>=1e5?"100K+":`${(e/1e3).toLocaleString("en-US")}K`}getRecommendedPlan(){let e=this.monthlyVisitors;return e<=0||e<=12500?"Startup":e<=5e4?"Growth":e<1e5?"Scale":"Enterprise"}updateEmployeeCount(e){if(typeof e=="number")this.employeeCount=Math.max(1,this.employeeCount+e);else{if(!(e.target instanceof HTMLInputElement))return;let i=parseInt(e.target.value,10);Number.isNaN(i)||(this.employeeCount=Math.max(1,i))}}calculateAdditionalPrice(e){return e.name==="Enterprise"?0:Math.max(0,this.employeeCount-1)*19}_openModal(){this.scrollPosition=window.scrollY,this.isModalOpen=!0}_handleModalClose(){this.isModalOpen=!1}render(){let e=this.getRecommendedPlan();return s` 456 <section class="section-spacing -mt-8 rounded-[33px] bg-white pt-32 sm:pt-[90px] lg:pt-52"> 457 <w-container class="lg:mx-4"> 458 459 <h1 class="font-display mb-2 text-3xl leading-tight font-semibold tracking-tight text-black sm:text-4xl sm:leading-tight">Everything shops need from GenAI</h1> 460 <p class="mb-14 max-w-2xl font-sans text-base text-gray-500 sm:text-lg">Try premium plans for free for 14 days.</p> 461 462 <div class="mb-8 flex flex-col items-center"> 463 <div class="mb-8 w-full rounded-2xl bg-[#f5f5f599] p-6"> 464 <div class="mb-8 flex items-center gap-2">
465 <span class="font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">I have</span> 466 <span class="number-badge font-display rounded-full bg-[#601feb]/10 px-4 py-1 text-sm leading-tight font-semibold tracking-tight sm:text-lg sm:leading-snug sm:tracking-tight"> 467 ${this.formatVisitors(this.monthlyVisitors)} 468 </span> 469 <span class="font-sans text-sm leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">average visitors per month</span> 470 </div> 471 472 <div class="relative"> 473 <div class="font-display mb-2 flex justify-between text-sm text-gray-500"> 474 <span>0</span> 475 <span>25K</span> 476 <span>50K</span> 477 <span>75K</span> 478 <span>100K+</span> 479 </div> 480 <div class="slider-container"> 481 <input 482 aria-label="Average monthly visitors" 483 type="range" 484 min="0" 485 max="100000" 486 step="1000" 487 value="${this.monthlyVisitors}" 488 @input="${this.updateMonthlyVisitors}" 489 @pointerdown="${this.#u}" 490 @pointerup="${this.#l}" 491 @pointercancel="${this.#l}" 492 @lostpointercapture="${this.#l}" 493 class="w-full" 494 style="--gradient-filled-percentage: ${Math.round(this.monthlyVisitors/1e5*100)}%" /> 495 <div data-testid="slider-thumb" class="slider-thumb" aria-hidden="true"></div> 496 <div class="slider-label font-display">${this.formatVisitors(this.monthlyVisitors)}</div> 497 </div> 498 </div> 499 </div> 500 </div> 501 502 <div class="mb-4 flex flex-col items-stretch justify-between gap-4 md:flex-row md:items-end"> 503 504 <div class="flex flex-col gap-2 md:hidden"> 505 506 <div class="mb-2 flex justify-end"> 507 <div class="rounded-lg bg-[#601feb]/10 px-3 py-1 font-sans text-xs font-medium text-[#601feb]">${this.isAnnual?"2 months free":"Save 2 months with annual"}</div> 508 </div> 509 510 511 <div class="mb-2 flex items-center justify-between"> 512 513 <div class="flex items-center gap-2"> 514 <span class="font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">Seats:</span> 515 <div class="inline-flex items-center overflow-hidden rounded-xl border border-gray-300"> 516 <button @click="${()=>this.updateEmployeeCount(-1)}" class="flex h-[32px] w-6 items-center justify-center font-sans text-gray-500 hover:bg-[#F3F4F6]">-</button> 517 <input 518 aria-label="Seats" 519 type="number" 520 value="${this.employeeCount}" 521 @input="${this.updateEmployeeCount}" 522 @blur="${this.updateEmployeeCount}" 523 min="1" 524 class="h-[32px] w-8 [appearance:textfield] text-center font-sans focus:outline-none [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none" /> 525 <button @click="${()=>this.updateEmployeeCount(1)}" class="flex h-[32px] w-6 items-center justify-center font-sans text-gray-500 hover:bg-[#F3F4F6]">+</button> 526 </div> 527 <div class="seats-info relative"> 528 <img src="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/033b197a-eedc-48d6-dc6a-e5a2ce693a00/w=24,h=24,q=75" alt="Info" class="info-icon" /> 529 <div class="info-tooltip">$19/month per seat</div> 530 </div> 531 </div> 532 533 534 <div class="toggle-container"> 535 <div data-testid="mobile-billing-toggle" class="relative inline-flex w-[180px] rounded-[32px] bg-[#F9F9FB] p-[4px]"> 536 <div 537 data-testid="mobile-billing-toggle-indicator" 538 class="${this.isAnnual?"translate-x-[86px]":"translate-x-0"} absolute top-[4px] bottom-[4px] w-[86px] rounded-[28px] bg-white shadow-sm transition-transform duration-300 ease-in-out"></div> 539 <button 540 @click=${()=>this.isAnnual=!1} 541 class="${this.isAnnual?"text-gray-500":"text-gray-900"} relative z-10 w-[86px] rounded-[28px] py-2 font-sans text-sm font-medium transition-colors duration-300 ease-in-out"> 542 Monthly 543 </button> 544 <button 545 @click=${()=>this.isAnnual=!0} 546 class="${this.isAnnual?"text-gray-900":"text-gray-500"} relative z-10 w-[86px] rounded-[28px] py-2 font-sans text-sm font-medium transition-colors duration-300 ease-in-out"> 547 Annual 548 </button> 549 </div> 550 </div> 551 </div> 552 553 554 <div class="w-full"> 555 <div class="px-3 py-2 text-center font-sans text-sm text-[#601feb]">Try our <a href="/app" class="font-medium underline">free plan here</a> with 25 convs/mo and 500 products.</div> 556 </div> 557 </div> 558 559
560 <div data-testid="desktop-seat-controls" class="hidden md:flex md:items-center md:gap-2"> 561 <span class="font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">Seats:</span> 562 <div class="inline-flex items-center overflow-hidden rounded-xl border border-gray-300"> 563 <button @click="${()=>this.updateEmployeeCount(-1)}" class="flex h-[32px] w-6 items-center justify-center font-sans text-gray-500 hover:bg-[#F3F4F6]">-</button> 564 <input 565 aria-label="Seats" 566 type="number" 567 value="${this.employeeCount}" 568 @input="${this.updateEmployeeCount}" 569 @blur="${this.updateEmployeeCount}" 570 min="1" 571 class="h-[32px] w-8 [appearance:textfield] text-center font-sans focus:outline-none [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none" /> 572 <button @click="${()=>this.updateEmployeeCount(1)}" class="flex h-[32px] w-6 items-center justify-center font-sans text-gray-500 hover:bg-[#F3F4F6]">+</button> 573 </div> 574 <div class="seats-info relative"> 575 <span class="seat-price font-sans text-xs text-gray-500">$19/month per seat</span> 576 <img src="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/033b197a-eedc-48d6-dc6a-e5a2ce693a00/w=24,h=24,q=75" alt="Info" class="info-icon sm:hidden" /> 577 <div class="info-tooltip sm:hidden">$19/month per seat</div> 578 </div> 579 </div> 580 581 <div class="hidden md:block"> 582 <div> 583 <div class="relative mb-2"> 584 <div class="absolute -top-6 right-0 rounded-lg bg-[#601feb]/10 px-3 py-1 font-sans text-xs font-medium text-[#601feb]"> 585 ${this.isAnnual?"2 months free":"Save 2 months with annual"} 586 </div> 587 </div> 588 589 <div class="flex items-center justify-center"> 590 <div class="toggle-container"> 591 <div data-testid="desktop-billing-toggle" class="relative inline-flex w-[180px] rounded-[32px] bg-[#F9F9FB] p-[4px]"> 592 <div 593 data-testid="desktop-billing-toggle-indicator" 594 class="${this.isAnnual?"translate-x-[86px]":"translate-x-0"} absolute top-[4px] bottom-[4px] w-[86px] rounded-[28px] bg-white shadow-sm transition-transform duration-300 ease-in-out"></div> 595 <button 596 data-testid="monthly-plan-toggle" 597 @click=${()=>this.isAnnual=!1} 598 aria-pressed=${!this.isAnnual} 599 class="${this.isAnnual?"text-gray-500":"text-gray-900"} relative z-10 w-[86px] rounded-[28px] py-2 font-sans text-sm font-medium transition-colors duration-300 ease-in-out focus:outline-none focus-visible:ring-2 focus-visible:ring-[#601feb]/30"> 600 Monthly 601 </button> 602 <button 603 data-testid="yearly-plan-toggle" 604 @click=${()=>this.isAnnual=!0} 605 aria-pressed=${this.isAnnual} 606 class="${this.isAnnual?"text-gray-900":"text-gray-500"} relative z-10 w-[86px] rounded-[28px] py-2 font-sans text-sm font-medium transition-colors duration-300 ease-in-out focus:outline-none focus-visible:ring-2 focus-visible:ring-[#601feb]/30"> 607 Annual 608 </button> 609 </div> 610 </div> 611 </div> 612 </div> 613 </div> 614 </div> 615 616 <div class="min-h-[600px] transition-opacity duration-200 ease-out"> 617 618 <div class="pricing-grid"> 619 ${Object.values(y).filter(i=>i.id!==S.slug).map(i=>s` 620 <w-plans-card 621 .plan=${i} 622 .period=${this.isAnnual?"yearly":"monthly"} 623 currency="USD" 624 show-campaign-banner 625 .isRecommended=${i.name===e} 626 .additionalPrice=${this.calculateAdditionalPrice(i)} 627 .planActionOutput="${{onClick:()=>this.#m(i)}}">
628 </w-plans-card> 629 `)} 630 </div> 631 632 633 <div class="mt-8 hidden md:flex md:justify-center"> 634 <div class="px-3 py-2 font-sans text-sm text-[#601feb]">Try our <a href="/app" class="font-medium underline">free plan here</a> with 25 convs/mo and 500 products.</div> 635 </div> 636 </div> 637 </w-container> 638 </section> 639 640 ${this.isModalOpen?s`<w-book-demo-modal .isModalOpen=${this.isModalOpen} .scrollPosition=${this.scrollPosition} @close=${this._handleModalClose}></w-book-demo-modal>`:""} 641 `}#m(e){if(e.name==="Enterprise"){if(k({message:"I'm interested in buying an Enterprise plan, can you help me?",autoSend:!0}))return;this._openModal()}else window.location.href=`/subscribe?plan=${e.id}&period=${this.isAnnual?"yearly":"monthly"}¤cy=USD`}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.#d()}disconnectedCallback(){super.disconnectedCallback(),this.#i=!1}firstUpdated(){this.#s(),this.#d()}#d(){!this.isAnimating||this.#i||this.#e.running||(this.#i=!0,this.#t.setTimeout(()=>{if(this.#i=!1,!this.isConnected||!this.isAnimating)return;let e=55e3;if(this.monthlyVisitors>=e){this.isAnimating=!1;return}this.#c(e,!0)},500))}};customElements.define("w-plans-cards",N);var B=class{#t;#e;get Rewardful(){return this.#e}constructor(e){this.#t=e,e.addController(this)}init=()=>{setTimeout(()=>{let e=window,i=e.rewardful;if(typeof i!="function"){console.warn("rewardful is not available");return}i("ready",()=>{let a=e.Rewardful;if(!a){console.warn("Rewardful is not available");return}this.#e=a,this.#t.requestUpdate()})},250)};hostConnected(){document.readyState==="loading"?document.addEventListener("DOMContentLoaded",this.init,{once:!0}):this.init()}hostDisconnected(){}};function te(t){return new B(t)}var ie=Object.freeze({Products:"Maximum number of products your AI can learn about. Example: Product descriptions, prices, variants.","Automatic product refresh":"Your product data automatically updates when changes occur in your store.","AI Personality":"Customize how your AI communicates. Example: Friendly, professional, or casual tone.","Preset answers":"Pre-defined responses for common questions. Example: Shipping policy, return process.","PDF uploads":"Allow customers to share images or documents. Example: Product photos or return forms.","Transfer to human agent":"AI can seamlessly hand over complex conversations to your support team.","Collect lead emails & mobile":"Capture customer contact information for follow-ups. Example: Newsletter signups.","Order updates":'Provide real-time order status information. Example: "Your order #123 is out for delivery."',"Custom actions & API":"Create custom AI responses and integrate with your tools. Example: Create tickets in your CRM.","Website chat":"Embed AI chat on your website. Customizable design and placement.","Facebook Messenger":"Connect your Facebook business page to respond to messages automatically.",Instagram:"Connect your Instagram professional account to handle DMs with AI support.",WhatsApp:"Handle WhatsApp business messages with AI support.","Full conversation history":"Access complete chat logs with advanced search and filtering.","Sales tracking":"Monitor revenue generated through AI conversations.","Response quality analysis":"AI evaluates response effectiveness and suggests improvements.","Conversation limit":"Monthly AI conversation capacity. Resets each billing cycle.","Team management":"Add and manage team members with different access levels.","Multiple chatbots":"Create different AI personalities for various use cases.","Shopify / Shopify Plus":"Connect your Shopify store to enable AI product recommendations and order management.",WooCommerce:"Integrate with WooCommerce to sync products and handle customer inquiries.","Google Shopping feed":"Import products directly from your Google Shopping feed for accurate product information.","Heureka feed":"Import products from your Heureka product feed for seamless integration with Central European marketplaces.",Unas:"Connect your Unas store for seamless product and order management.",Shoprenter:"Integrate with Shoprenter to enable AI-
641powered customer support.",Shoper:"Connect your Shoper store to provide AI assistance for your customers.","Custom feed integration":"Connect any product feed format with a tailored integration built for your specific data source and requirements.","Multi-stores":"Manage multiple stores from different platforms in a single dashboard.","Public web scraping":"AI can learn from publicly available web pages to enhance its knowledge. Example: Learning from your FAQ pages or blog posts.","Document limits":"Maximum characters from uploaded documents and scraped content that your AI can process and learn from. FAQs do not count towards this limit.","Custom bubble image":"Upload your own custom chat bubble icon to match your brand identity. Replaces the default Molin chat bubble with your logo or preferred image.","Order cancellation":"Allow customers to cancel their orders directly through AI chat conversations.","Custom AI actions":"Create custom automated responses and workflows tailored to your business needs.","Salesforce forms":"Connect your Salesforce instance to automatically push form submissions and customer data into your CRM.","Dynamic AI forms":"AI collects information from customers through natural conversation and sends it to the relevant destination automatically.","Mobile apps":"Native mobile applications for managing your chatbot and support conversations on the go.","Molin over Email":"Handle customer inquiries via email with AI-powered responses and support.","AI generated CSAT":"Automatically generate customer satisfaction scores using AI analysis of conversations.","Sentiment analysis":"AI analyzes the tone and sentiment of customer conversations to help you understand satisfaction trends and identify issues early.","Data exports":"Export conversation data, analytics, and reports in various formats for external analysis.","Team members":"Add additional team members to your workspace with different permission levels.",Support:"Access to customer support channels including chat, email, and priority assistance.","Remove Molin branding":"Remove Molin branding from the chat widget to maintain your brand consistency.","Floating bar":"A compact floating bar on your website that invites visitors to ask questions, increasing engagement without taking up screen space.","Dark mode":"Enable dark mode for the chat widget to match your website theme or user preferences.","Full inbox access":"View and manage all customer conversations from a single inbox page with message history, customer details, and conversation status.","Team-level management":"Invite team members as agents or admins and manage roles and permissions across your support team.",Filtering:"Filter conversations by status, channel, leads, assigned agent, and live chat activity to quickly find what needs attention.","AI ticket solving":"Use Ninja AI to analyze and draft responses for support tickets directly from the inbox sidebar.","Automatic ticket priority scoring":"AI automatically detects which conversations are high priority so your team can focus on the most urgent tickets first.","Live chat takeover":"Support agents can take over conversations from the AI in real time, with the agent profile shared with the customer.","Universal inbox":"Manage conversations from all your chatbots and stores in one unified view instead of switching between individual widgets.","Custom actions API":"Build custom API endpoints that the AI can call during conversations to fetch data or perform actions in your systems.","JavaScript SDK":"Control the chat widget programmatically from your website code. Open, close, show, hide, and pass user context.","Personalization API":"Pass customer data and custom AI instructions at runtime so the chatbot can personalize responses for each visitor.","Product Sync API":"Expose a Schema.org product feed endpoint on your site and Molin will automatically sync your product catalog."}),ae=Object.freeze({products:"Products",productRefresh:"Automatic product refresh",personality:"AI Personality",presetAnswers:"Preset answers",fileUploads:"PDF uploads",publicWebscraping:"Public web scraping",documentLimits:"Document limits"}),j=class extends o{static lightDom=!0;
641static properties={isAnnual:{type:Boolean},activeHoverCard:{type:String},hoverCardAbove:{type:Boolean},isModalOpen:{type:Boolean},scrollPosition:{type:Number}};constructor(){super(),this.isAnnual=!0,this.activeHoverCard="",this.hoverCardAbove=!1,this.isModalOpen=!1,this.scrollPosition=0}#t=te(this);#e(){return s` 642 <svg class="h-5 w-5 text-[#601feb]" viewBox="0 0 20 20" fill="currentColor"> 643 <path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd" /> 644 </svg> 645 `}#i(){return s` 646 <svg class="h-5 w-5 text-gray-300" viewBox="0 0 20 20" fill="currentColor"> 647 <path 648 fill-rule="evenodd" 649 d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" 650 clip-rule="evenodd" /> 651 </svg> 652 `}#a(e,i){return i.name==="Enterprise"||e==="Transfer to human agent"||e==="Collect lead emails & mobile"?!0:e==="Order updates"?i.name==="Growth"||i.name==="Scale":e==="Order cancellation"?i.name==="Scale":e==="Custom AI actions"?i.name==="Scale"||i.name==="Enterprise":e==="Salesforce forms"||e==="Dynamic AI forms"?i.name==="Enterprise":e==="Website chat"||e==="Molin over Email"?!0:e==="Facebook Messenger"||e==="Instagram"||e==="WhatsApp"?i.name!=="Free":e==="Full conversation history"?!0:e==="Sales tracking"?i.name==="Growth"||i.name==="Scale":e==="Response quality analysis"?i.name==="Scale":e==="AI generated CSAT"||e==="Data exports"?!1:e==="Full inbox access"||e==="Team-level management"||e==="Filtering"||e==="AI ticket solving"||e==="Automatic ticket priority scoring"||e==="Live chat takeover"?!0:e==="Universal inbox"?i.name==="Enterprise":e==="Shopify / Shopify Plus"||e==="Google Shopping feed"||e==="Heureka feed"||e==="Unas"||e==="Shoprenter"||e==="Shoper"?!0:e==="Custom feed integration"||e==="Multi-stores"?i.name==="Enterprise":e==="Custom bubble image"||e==="Remove Molin branding"?i.name==="Scale"||i.name==="Enterprise":e==="Team management"||e==="Multiple chatbots"||e==="Floating bar"||e==="Dark mode"||e==="JavaScript SDK"||e==="Product Sync API"?!0:e==="Custom actions API"||e==="Personalization API"?i.name==="Scale"||i.name==="Enterprise":!1}#r(e){return e==="WhatsApp"||e==="Molin over Email"||e==="Mobile apps"||e==="WooCommerce"||e==="Multi-stores"}#n(e){return s` 653 <div 654 data-testid="feature-tooltip" 655 role="tooltip" 656 class="${this.hoverCardAbove?"bottom-[calc(100%+8px)]":"top-[calc(100%+8px)]"} absolute left-0 z-50 w-64 rounded-2xl border border-[#eeeeee] bg-white p-4 shadow-xl"> 657 <p class="font-sans text-sm font-normal text-gray-500">${this.getHoverContent(e)}</p> 658 </div> 659 `}#s(e){let i=e in ie;return s` 660 <td class="${this.activeHoverCard===e?"relative z-20":"relative"} p-4"> 661 <span 662 @mouseenter=${i?a=>this.handleHover(e,!0,a.currentTarget):null} 663 @mouseleave=${i?()=>this.handleHover(e,!1):null} 664 class="${i?"hover:text-[#601feb] hover:underline transition-colors duration-200":""} relative inline-block font-sans text-sm font-semibold text-gray-500"> 665 ${e} ${i&&this.activeHoverCard===e?this.#n(e):""} 666 </span> 667 </td> 668 `}handleHover(e,i,a){if(this.activeHoverCard=i?e:"",i&&a){let n=(a.closest(".overflow-x-auto")??document.documentElement).getBoundingClientRect().bottom-a.getBoundingClientRect().bottom;this.hoverCardAbove=n<180}}getHoverContent(e){return ie[e]||"More information coming soon"}_openModal(e){e.preventDefault(),e.stopPropagation(),this.scrollPosition=window.scrollY,this.isModalOpen=!0}_handleModalClose(){this.isModalOpen=!1}render(){let e=this.#o,i=Object.keys(ae);return s` 669 <section class="section-spacing -mt-8 rounded-[33px] bg-white pt-32 sm:pt-[90px] lg:pt-52"> 670 <w-container class="lg:mx-4"> 671 <div class="w-full overflow-x-auto"> 672 <table class="w-full min-w-[800px]"> 673 <thead> 674 <tr> 675 <th class="w-1/5 p-4 text-left"> 676 <h3 class="font-display text-xl font-semibold opacity-0">Pricing</h3> 677 <div class="mt-2"> 678 <div class="font-sans text-xs font-normal text-gray-500 opacity-0">Placeholder</div> 679 </div> 680 </th> 681 ${e.map((a,r)=>
681s` 682 <th class="${r%2===1?"bg-[#F9F9FB] rounded-t-[20px]":""} p-4 text-left"> 683 <h3 class="font-display text-xl font-semibold">${a.name}</h3> 684 <div class="mt-2"> 685 <div class="font-sans text-xs font-normal text-gray-500">${a.description}</div> 686 </div> 687 </th> 688 `)} 689 </tr> 690 <tr> 691 <th class="w-1/5 p-4 text-left"> 692 <div class="flex items-center"> 693 <div class="relative inline-flex w-[180px] rounded-[32px] bg-[#F9F9FB] p-[4px]"> 694 <div 695 class="${this.isAnnual?"translate-x-[86px]":"translate-x-0"} absolute top-[4px] bottom-[4px] w-[86px] rounded-[28px] bg-white shadow-sm transition-transform duration-300 ease-in-out"></div> 696 <button 697 data-testid="monthly-plan-toggle" 698 @click=${()=>this.isAnnual=!1} 699 class="${this.isAnnual?"text-gray-500":"text-gray-900"} relative w-[86px] rounded-[28px] py-2 font-sans text-sm font-medium transition-colors duration-300 ease-in-out"> 700 Monthly 701 </button> 702 <button 703 data-testid="yearly-plan-toggle" 704 @click=${()=>this.isAnnual=!0} 705 class="${this.isAnnual?"text-gray-900":"text-gray-500"} relative w-[86px] rounded-[28px] py-2 font-sans text-sm font-medium transition-colors duration-300 ease-in-out"> 706 Annual 707 </button> 708 </div> 709 <div class="relative ml-2 h-5 overflow-hidden"> 710 ${this.isAnnual?s`<span class="absolute inset-0 translate-y-0 text-sm font-medium text-[#601feb] opacity-100 transition-all duration-300 ease-in-out">Save 20%</span>`:s`<span class="absolute inset-0 translate-y-full text-sm font-medium text-[#601feb] opacity-0 transition-all duration-300 ease-in-out">Save 20%</span>`} 711 </div> 712 </div> 713 </th> 714 ${e.map((a,r)=>s` 715 <td class="${r%2===1?"bg-[#F9F9FB]":""} p-4 text-center"> 716 <a href="${W(a.getCtaUrl?a.getCtaUrl(this.isAnnual):a.ctaUrl)}" rel="nofollow" @click=${a.name==="Enterprise"?this._openModal:null}> 717 <w-link data-testid="comparison-plan-cta" data-plan="${a.name}" variant="${a.name==="Enterprise"?"transparent":"gradient"}">${a.cta}</w-link> 718 </a> 719 </td> 720 `)} 721 </tr> 722 </thead> 723 <tbody> 724 <tr class="mt-6 border-t border-[#ECEDF0]"> 725 <td class="p-4 pt-14" colspan="5"> 726 <h3 class="font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">AI Knowledge</h3> 727 </td> 728 </tr> 729 ${i.map(a=>s` 730 <tr class="border-t border-[#ECEDF0] transition-colors duration-200 hover:bg-[#f5f5f599]"> 731 ${this.#s(ae[a])} 732 ${e.map((r,n)=>s` 733 <td class="${n%2===1?"bg-[#F9F9FB] hover:bg-[#f5f5f599]":""} p-4 text-center font-sans text-sm text-gray-500"> 734 ${typeof r.knowledge[a]=="boolean"?r.knowledge[a]?s`<div class="flex justify-center">${this.#e()}</div>`:s`<div class="flex justify-center">${this.#i()}</div>`:r.knowledge[a]} 735 </td> 736 `)} 737 </tr> 738 `)} 739 740 741 <tr class="mt-6 border-t border-[#ECEDF0]"> 742 <td class="p-4 pt-14" colspan="5"> 743 <h3 class="font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">AI Actions</h3> 744 </td> 745 </tr> 746 ${["Transfer to human agent","Collect lead emails & mobile","Order updates","Order cancellation","Custom AI actions","Salesforce forms","Dynamic AI forms"].map(a=>s`
747 <tr class="border-t border-[#ECEDF0] transition-colors duration-200 hover:bg-[#f5f5f599]"> 748 ${this.#s(a)} 749 ${e.map((r,n)=>s` 750 <td class="${n%2===1?"bg-[#F9F9FB] hover:bg-[#f5f5f599]":""} p-4 text-center font-sans text-sm text-gray-500"> 751 <div class="flex justify-center">${this.#a(a,r)?this.#e():this.#i()}</div> 752 </td> 753 `)} 754 </tr> 755 `)} 756 757 758 <tr class="mt-6 border-t border-[#ECEDF0]"> 759 <td class="p-4 pt-14" colspan="5"> 760 <h3 class="font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">Channels & integrations</h3> 761 </td> 762 </tr> 763 ${["Website chat","Facebook Messenger","Instagram","WhatsApp","Molin over Email","Mobile apps"].map(a=>s` 764 <tr class="border-t border-[#ECEDF0] transition-colors duration-200 hover:bg-[#f5f5f599]"> 765 ${this.#s(a)} 766 ${e.map((r,n)=>s` 767 <td class="${n%2===1?"bg-[#F9F9FB] hover:bg-[#f5f5f599]":""} p-4 text-center font-sans text-sm text-gray-500"> 768 ${this.#r(a)?s`<span class="text-xs text-gray-600 italic">Coming soon</span>`:s`<div class="flex justify-center">${this.#a(a,r)?this.#e():this.#i()}</div>`} 769 </td> 770 `)} 771 </tr> 772 `)} 773 774 775 <tr class="mt-6 border-t border-[#ECEDF0]"> 776 <td class="p-4 pt-14" colspan="5"> 777 <h3 class="font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">Insights</h3> 778 </td> 779 </tr> 780 ${["Full conversation history","Sales tracking","Response quality analysis","Sentiment analysis","AI generated CSAT","Data exports"].map(a=>s` 781 <tr class="border-t border-[#ECEDF0] transition-colors duration-200 hover:bg-[#f5f5f599]"> 782 ${this.#s(a)} 783 ${e.map((r,n)=>s` 784 <td class="${n%2===1?"bg-[#F9F9FB] hover:bg-[#f5f5f599]":""} p-4 text-center font-sans text-sm text-gray-500"> 785 ${a==="Sentiment analysis"?s`<span class="text-xs text-gray-600 italic">Contact us</span>`:s`<div class="flex justify-center">${this.#a(a,r)?this.#e():this.#i()}</div>`} 786 </td> 787 `)} 788 </tr> 789 `)} 790 791 792 <tr class="mt-6 border-t border-[#ECEDF0]"> 793 <td class="p-4 pt-14" colspan="5"> 794 <h3 class="font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">Connect your ecommerce store</h3> 795 </td> 796 </tr> 797 ${["Shopify / Shopify Plus","WooCommerce","Google Shopping feed","Heureka feed","Unas","Shoprenter","Shoper","Custom feed integration","Multi-stores"].map(a=>s` 798 <tr class="border-t border-[#ECEDF0] transition-colors duration-200 hover:bg-[#f5f5f599]"> 799 ${this.#s(a)} 800 ${e.map((r,n)=>s` 801 <td class="${n%2===1?"bg-[#F9F9FB] hover:bg-[#f5f5f599]":""} p-4 text-center font-sans text-sm text-gray-500"> 802 ${this.#r(a)?s`<span class="text-xs text-gray-600 italic">Coming soon</span>`:s`<div class="flex justify-center">${this.#a(a,r)?this.#e():this.#i()}</div>`} 803 </td> 804 `)} 805 </tr> 806 `)} 807 808 809 <tr class="mt-6 border-t border-[#ECEDF0]"> 810 <td class="p-4 pt-14" colspan="5"> 811 <h3 class="font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">Helpdesk</h3> 812 </td> 813 </tr> 814 ${["Full inbox access","Team-level management","Filtering","AI ticket solving","Automatic ticket priority scoring","Live chat takeover","Universal inbox"].map(a=>s`
815 <tr class="border-t border-[#ECEDF0] transition-colors duration-200 hover:bg-[#f5f5f599]"> 816 ${this.#s(a)} 817 ${e.map((r,n)=>s` 818 <td class="${n%2===1?"bg-[#F9F9FB] hover:bg-[#f5f5f599]":""} p-4 text-center font-sans text-sm text-gray-500"> 819 <div class="flex justify-center">${this.#a(a,r)?this.#e():this.#i()}</div> 820 </td> 821 `)} 822 </tr> 823 `)} 824 825 826 <tr class="mt-6 border-t border-[#ECEDF0]"> 827 <td class="p-4 pt-14" colspan="5"> 828 <h3 class="font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">Workspace</h3> 829 </td> 830 </tr> 831 ${["Conversation limit","Team members","Team management","Multiple chatbots","Floating bar","Dark mode","Support","Custom bubble image","Remove Molin branding"].map(a=>s` 832 <tr class="border-t border-[#ECEDF0] transition-colors duration-200 hover:bg-[#f5f5f599]"> 833 ${this.#s(a)} 834 ${e.map((r,n)=>s` 835 <td class="${n%2===1?"bg-[#F9F9FB] hover:bg-[#f5f5f599]":""} p-4 text-center font-sans text-sm text-gray-500"> 836 ${a==="Team members"?r.name==="Enterprise"?"Free":"$19/month/seat":a==="Conversation limit"?r.name==="Enterprise"?"Unlimited":r.name==="Startup"?"125":r.name==="Growth"?"500":"1,250 + $0.2/conv after":a==="Support"?r.name==="Enterprise"?"Priority support":r.name==="Scale"?"Email support":r.name==="Growth"?"Live chat support":"AI chatbot support":a==="Custom bubble image"||a==="Remove Molin branding"||a==="Team management"||a==="Multiple chatbots"?s`<div class="flex justify-center">${this.#a(a,r)?this.#e():this.#i()}</div>`:s`<div class="flex justify-center">${this.#e()}</div>`} 837 </td> 838 `)} 839 </tr> 840 `)} 841 842 843 <tr class="mt-6 border-t border-[#ECEDF0]"> 844 <td class="p-4 pt-14" colspan="5"> 845 <h3 class="font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">API</h3> 846 </td> 847 </tr> 848 ${["Product Sync API","JavaScript SDK","Personalization API","Custom actions API"].map((a,r)=>s` 849 <tr class="border-t border-[#ECEDF0] transition-colors duration-200 hover:bg-[#f5f5f599]"> 850 ${this.#s(a)} 851 ${e.map((n,d)=>s` 852 <td class="${d%2===1?`bg-[#F9F9FB] hover:bg-[#f5f5f599] ${r===3?"rounded-b-[20px]":""}`:""} p-4 text-center font-sans text-sm text-gray-500"> 853 <div class="flex justify-center">${this.#a(a,n)?this.#e():this.#i()}</div> 854 </td> 855 `)} 856 </tr> 857 `)} 858 </tbody> 859 </table> 860 </div> 861 </w-container> 862 </section> 863 864 ${this.isModalOpen?s`<w-book-demo-modal .isModalOpen=${this.isModalOpen} .scrollPosition=${this.scrollPosition} @close=${this._handleModalClose}></w-book-demo-modal>`:""} 865 `}get#o(){let{Rewardful:e}=this.#t;return[{name:"Startup",description:`${this.isAnnual?"$19":"$23"} per user/month, ${this.isAnnual?"billed annually":"billed monthly"}`,cta:"Start free trial",getCtaUrl(i){return g("https://molin.ai/subscribe",{plan:"startup",period:i?"yearly":"monthly",referral:e?.referral||null,coupon:e?.coupon?.id||null})},knowledge:{products:"2,000",productRefresh:!0,personality:!0,presetAnswers:"20",fileUploads:!1,publicWebscraping:!0,documentLimits:"1M characters"}},{name:"Growth",description:`${this.isAnnual?"$55":"$65"} per user/month, ${this.isAnnual?"billed annually":"billed monthly"}`,cta:"Start free trial",getCtaUrl(i){return g("https://molin.ai/subscribe",{plan:"growth",period:i?"yearly":"monthly",referral:e?.referral||null,coupon:e?.coupon?.id||null})},knowledge:{products:"10,000",productRefresh:!0,personality:!0,presetAnswers:"50",fileUploads:!0,publicWebscraping:!0,documentLimits:"5M characters"}},{name:"Scale",description:`${this.isAnnual?"$119":"$139"} per user/month, ${this.isAnnual?"billed annually":"billed monthly"}`,cta:"Start free trial",getCtaUrl(i){return g("https://molin.ai/subscribe",{plan:"scale",period:i?"yearly":"monthly",referral:e?.referral||null,coupon:e?.coupon?.id||null})},knowledge:{products:"50,000",productRefresh:!0,personality:!0,presetAnswers:"100",fileUploads:!0,publicWebscraping:!0,documentLimits:"10M characters"}},{name:"Enterprise",description:`Custom pricing, ${this.isAnnual?"billed annually":"billed monthly"}`,cta:"Talk to sales",ctaUrl:"#",knowledge:{products:"Unlimited",productRefresh:!0,personality:!0,presetAnswers:"Unlimited",fileUploads:!0,publicWebscraping:!0,documentLimits:"Unlimited"}}]}};customElements.define("w-plans-table",j);var H=class extends o{static lightDom=!0;
865static properties={isAnnual:{type:Boolean},faqData:{type:Array}};constructor(){super(),this.isAnnual=!0,this.faqData=[{question:"What is the right plan for me?",answer:`Our plans are designed to scale with your business needs: 866 867Free: Perfect for trying out AI customer service. Includes basic features like human handover, 500 products, and 25 conversations per month. Great for small stores just getting started with AI support. 868 869Startup ($19/month): Ideal for growing businesses, with 2,000 products, automatic product updates, and 100 monthly conversations. Includes additional features like Facebook Messenger and WhatsApp integration. 870 871Growth ($55/month): For scaling businesses needing more advanced features. Handles up to 10,000 products, includes file uploads, and 200-600 monthly conversations. Adds features like sales tracking and removes Molin branding. 872 873Scale ($119/month): Our comprehensive plan for larger operations. Supports 50,000 products, 800-1500 monthly conversations, and includes advanced features like response quality analysis, priority 24/7 support, and custom API actions. 874 875Enterprise (Custom pricing): For large-scale businesses with unique requirements. Includes everything in Scale, plus unlimited products, custom conversation limits, dedicated account management, custom AI model training, and advanced security features. Contact us for a tailored solution that fits your organization's specific needs. 876 877All plans include core features like AI personality customization and website chat integration. Higher tiers add more capabilities like multi-channel support, advanced analytics, and team management features. 878 879*Prices shown are for annual billing. Monthly billing available at slightly higher rates.`},{question:"Do you have a free plan available?",answer:"Yes, everyone can sign up for the unlimited free package. You'll receive 25 conversation credits, 1 chatbot, and the capability to manage up to 500 products in your store. Enjoy the convenience of Molin without any time constraints or financial commitments, and revel in the newfound freedom that comes with automating your support system. We are confident in the value Molin brings to you, which is why we provide a free plan equipped with top-tier features in the AI chatbot market. In addition, all our paid plans come with a 14 day long free trial."},{question:"What counts as 1 conversation?",answer:"One conversation is one user session with the same user at one time. So if the same user returns again later and starts a new conversation that counts as another conversation. However, if in one session the user decided to start a new chat, that still counts as the same conversation."},{question:"My shop has more than 50,000 products, can Molin handle that?",answer:"Yes, Molin can handle more than 50,000 products. If you want to add more products to your AI, then please reach out to us for custom pricing."},{question:"What is a preset answer?",answer:"You can train your AI on question-answer pairs on the FAQ page. These preset answers give extra context to your AI and will help it answer your customers' questions more accurately. Each plan includes a maximum number of preset FAQs."},{question:"Can I take over from Molin in the form of live chat?",answer:`Yes, we support live chat handover in all of our plans including the free one. Once you enable live chat, Molin can transfer your customers to a human agent and you or your support team can take over and answer the messages. 880 881If a user requests a live chat, Molin first collects the user's name, email address, and the reason why they would like to talk to your human support. Then, Molin will notify your support team and they can decide if they want to take over. If they don't want to talk to the person, then they can just decline and Molin will continue the conversation. 882 883Live chat handover is only active during your opening hours which you can set and modify in the Molin dashboard.`},{question:"What kind of social media integrations do you have?",answer:"We currently support Facebook Messenger and Instagram integrations. With these integrations, Molin can connect to your business pages and reply to your customers directly within Messenger and Instagram DMs. Both channels are available on Startup and higher plans. We'll be adding WhatsApp integration very soon."},{question:"What happens if I go over the limit in conversations?",answer:"Unless you are on the Scale plan, if you go over the limit then the AI chatbot automatically turns off. To continue using Molin in this case, you will need to upgrade your plan. If you are on the Scale plan, then we charge $0.20/conversation after the limit and we'll add this amount to your monthly invoice."},{question:"Do inactive and out of stock products count towards the plan limit?",answer:"Yes, they do. You can see all the products that Molin is tracking in the Molin dashboard."},{question:"Can I invite my colleagues to work together?",answer:"Absolutely! We encourage you to invite all your colleagues to join Molin. Each additional seat is priced at $19 per month or $228 per year, regardless of your current plan. If you're on the free plan, you can add an unlimited number of users to your team at no cost."},{question:"What is the $1 first 3 months promotion?",answer:"New customers can get their first chatbot for just $1 for the first 3 months on any paid plan. This promotion is exclusively available to new customers and applies only to their first chatbot. After the first 3 months, the regular plan price applies."},{question:"What's Ninja AI and how can I use it?",answer:'Ninja is a generalist web browser using AI agent designed and built by Molin. Ninja has many tools and its own web browser to automate manual tasks and workflows. You can try Ninja for free here: <a href="https://ninja.new" target="_blank" rel="noopener noreferrer" style="text-decoration: underline;">https://ninja.new</a>.'}]}render(){return s` 884 <div> 885 <w-navbar></w-navbar> 886 <w-plans-cards .isAnnual=${this.isAnnual}></w-plans-cards> 887 <w-testimonials-logos></w-testimonials-logos> 888 889 890 <div class="hidden sm:block"> 891 <w-plans-table .isAnnual=${this.isAnnual}></w-plans-table> 892 </div> 893 894 <div class="section-spacing"> 895 <w-container> 896 <w-consult-card></w-consult-card> 897 </w-container> 898 </div> 899 900 <w-faq-section .data=${this.faqData}></w-faq-section> 901 <w-cta></w-cta> 902 <w-footer></w-footer> 903 </div> 904 `}};customElements.define("w-page-pricing",H);
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.