PageSourceSearch

https://molin.ai/bundles/website/w-page-pricing.js?v=2753d11742a4

js molin.ai collected 2026-10-02 05:49:40 UTC 106,337 bytes, 904 lines download raw bytes

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"}&currency=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.