PageSourceSearch

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

js molin.ai collected 2026-10-02 05:49:28 UTC 48,690 bytes, 571 lines download raw bytes

1import"../chunks/chunk-4UX56YN3.js";import"../chunks/chunk-RCG2WYKO.js";import"../chunks/chunk-FBKAFIOQ.js";import"../chunks/chunk-2HRQXN35.js";import"../chunks/chunk-3QKVH4QL.js";import"../chunks/chunk-LXKXC67R.js";import{B as H,c as h,d as J,e as P,i as U,m as z,q as w,r as y,t as F,v as m,z as l}from"../chunks/chunk-M4N6QQSU.js";import{d as u}from"../chunks/chunk-7DL4Q2JM.js";import"../chunks/chunk-QYQ6ZZK5.js";import"../chunks/chunk-ZS2QSHIZ.js";import"../chunks/chunk-R4FUF3MS.js";import"../chunks/chunk-CHPTDZKO.js";import"../chunks/chunk-QALEDCZV.js";import{a as v}from"../chunks/chunk-GQKEPIF5.js";import{a as _}from"../chunks/chunk-D7QO6UN2.js";import{a as b}from"../chunks/chunk-C2VMHKYJ.js";import"../chunks/chunk-GISLPSNJ.js";import"../chunks/chunk-ZN5HWET2.js";import"../chunks/chunk-K56IVQIL.js";import"../chunks/chunk-CJUF73MG.js";import{a as B}from"../chunks/chunk-QEJSU3QE.js";import{e as r,f as p,g}from"../chunks/chunk-62WDJPYY.js";import"../chunks/chunk-5IISKCOI.js";import"../chunks/chunk-PROI4LIG.js";import"../chunks/chunk-QAP7BNIX.js";import{c as o,d}from"../chunks/chunk-UCBVZH4Q.js";import{a as s}from"../chunks/chunk-ZGDIUCJP.js";import"../chunks/chunk-DCANE7XH.js";var k=class extends o{static lightDom=!0;static properties={featuredCustomerCards:{type:Array,attribute:"featured-customer-cards"}};constructor(){super(),this.featuredCustomerCards=[]}#s=v(this);#i=!1;#e=!1;#a=!1;#l=0;#c=0;#d=()=>{this.#a=!0,this.#r()};#m=()=>{this.#a=!1,this.#n()};#p=t=>{if(console.log("Start dragging",{type:t instanceof PointerEvent?"pointer":"unknown",pageX:t.pageX,button:t instanceof PointerEvent?t.button:"unknown"}),!(t instanceof PointerEvent&&t.button!==0))try{this.#e=!0,this.#l=t.pageX,this.#c=this.#t?.scrollLeft??0,this.#t&&(this.#t.style.cursor="grabbing",this.#t.style.userSelect="none",this.#t.setPointerCapture(t.pointerId)),this.#r()}catch(e){console.error("Error in handleStartDragging:",e)}};#o=t=>{console.log("Stop dragging",{isDragging:this.#e,type:t instanceof PointerEvent?"pointer":"unknown"});let e=this.#e;this.#e=!1;try{this.#t&&(this.#t.style.cursor="grab",this.#t.style.userSelect="",t instanceof PointerEvent&&this.#t.hasPointerCapture(t.pointerId)&&this.#t.releasePointerCapture(t.pointerId))}catch(a){console.error("Error in handleStopDragging:",a)}e&&!this.#a&&this.#n()};#g=t=>{if(!(!this.#e||!this.#t)){console.log("Dragging",{isDragging:this.#e,type:t instanceof PointerEvent?"pointer":"unknown",pageX:t.pageX});try{t.preventDefault();let a=(t.pageX-this.#l)*1.5;this.#t.scrollLeft=this.#c-a}catch(e){console.error("Error in handleDrag:",e)}}};connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.#h()}disconnectedCallback(){super.disconnectedCallback(),this.renderRoot&&(this.#r(),this.#f())}firstUpdated(){this.#h()}render(){return s`
2      <div part="w-customer-slider-container" class="flex cursor-grab [scrollbar-width:none] gap-5 overflow-x-auto [overscroll-behavior-x:contain] scroll-smooth px-12 md:gap-7" tabindex="0">
3        ${B(this.featuredCustomerCards,t=>t.src,t=>s`
4            <div
5              class="group aspect-[241/400] h-[400px] w-[248px] shrink-0 overflow-hidden rounded-3xl border-[0.5px] border-[#32353B] bg-cover bg-center transition-all duration-300 md:cursor-default">
6              <div class="relative aspect-[241/400] h-full w-full overflow-hidden rounded-3xl border-[2.5px] border-[#32353B33] transition-all duration-300">
7                
8                <img
9                  src="https://molin.ai/cdn-cgi/image/h=400,fit=scale-down,format=auto,quality=75,dpr=1/${t.src}"
10                  srcset="
11                    https://molin.ai/cdn-cgi/image/h=400,fit=scale-down,format=auto,quality=75,dpr=1/${t.src} 1x,
12                    https://molin.ai/cdn-cgi/image/h=400,fit=scale-down,format=auto,quality=75,dpr=2/${t.src} 2x
13                  "
14                  alt="${t.alt}"
15                  loading="lazy"
16                  class="aspect-[241/400] h-full w-full object-cover duration-300 ease-[cubic-bezier(0.33,1,0.68,1)] will-change-transform group-hover:scale-110" />
17
18                <div class="absolute inset-0 bg-gradient-to-b from-transparent to-black/70"></div>
19
20                <div class="absolute bottom-5 left-5 md:pointer-events-none">
21                  <p class="mb-[2.5px] font-sans text-base font-semibold tracking-tight text-white sm:mb-2 sm:text-lg">${t.title}</p>
22                  <p class="w-3/4 font-sans text-base text-gray-300 sm:w-full sm:pr-3 sm:text-lg">${t.text}</p>
23                </div>
24              </div>
25            </div>
26          `)}
27      </div>
28    `}get#t(){return this.renderRoot.querySelector("[part='w-customer-slider-container']")}#h(){this.#n(),this.#u()}#n(){this.#i||(this.#i=!0,this.#s.setInterval(()=>{let t=this.#t;if(!t||this.#e)return;let e=t.firstElementChild;if(!e||!(e instanceof HTMLElement))return;let a=e.offsetWidth,n=parseInt(window.getComputedStyle(t).gap,10),c=a+n,x=Math.floor(t.scrollLeft/c)+1,Z=x*c;x>=t.children.length?(t.style.scrollBehavior="auto",t.scrollTo({left:0}),t.offsetHeight,t.style.scrollBehavior="smooth"):t.scrollTo({left:Z,behavior:"smooth"})},3e3))}#r(){this.#i&&(this.#s.clearIntervals(),this.#i=!1)}#u(){let t=this.#t;if(t){t.addEventListener("mouseenter",this.#d),t.addEventListener("mouseleave",this.#m);try{t.addEventListener("pointerdown",this.#p),t.addEventListener("pointermove",this.#g),t.addEventListener("pointerup",this.#o),t.addEventListener("pointerleave",this.#o),console.log("Pointer events bound successfully")}catch(e){console.error("Failed to setup drag scroll:",e)}}}#f(){this.#e=!1,this.#a=!1;let t=this.#t;if(t){t.style.cursor="grab",t.style.userSelect="";try{t.removeEventListener("pointerdown",this.#p),t.removeEventListener("pointermove",this.#g),t.removeEventListener("pointerup",this.#o),t.removeEventListener("pointerleave",this.#o),console.log("Pointer events cleanup successful")}catch(e){console.error("Failed to cleanup drag scroll:",e)}t.removeEventListener("mouseenter",this.#d),t.removeEventListener("mouseleave",this.#m)}}};customElements.define("w-customer-slider",k);var S=class extends o{static lightDom=!0;static properties={data:{type:Object}};constructor(){super(),this.data={title:"",description:"",featuredCustomerCards:[]}}render(){return d(this.data.title,"title is required"),d(this.data.featuredCustomerCards.length>0,"featuredCustomerCards is required"),s`
29      <div
30        part="w-customer-section"
31        class="section-spacing customerSection -mt-16 block bg-[#101010] px-4 py-32 before:absolute before:bottom-0 before:left-0 before:w-full before:rotate-180 before:bg-cover before:bg-bottom before:bg-no-repeat sm:py-[90px] lg:py-52">
32        <div class="mb-12 flex flex-col items-center justify-center text-center">
33          <h2 part="w-customer-gradient-purple" class="font-display relative mb-4 bg-clip-text text-4xl leading-tight font-bold tracking-tight text-transparent sm:mb-5 sm:text-5xl sm:leading-tight">
34            ${this.data.title}
35          </h2>
36          <p class="w-4/5 max-w-screen-sm font-sans text-base leading-snug font-light text-[#9098A0] sm:w-3/4 sm:text-lg md:w-3/4 lg:w-2/5">${this.data.description}</p>
37        </div>
38        <div class="-mx-4">
39          <w-customer-slider featured-customer-cards="${JSON.stringify(this.data.featuredCustomerCards)}"></w-customer-slider>
40        </div>
41        <div class="relative mx-auto max-w-fit pt-14 sm:pt-16 md:pt-20">
42          <a href="/featured">
43            <w-link variant="transparent-hover">Featured Chatbots</w-link>
44          </a>
45        </div>
46      </div>
47    `}};customElements.define("w-customer",S);var $="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/858e133c-76f8-40a3-1b99-0051ddef8200/w=572,h=231,q=75",E="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/cf927878-d42e-4a11-b840-47e334fee600/w=1050,h=690,q=75",Q=Object.freeze([320,480,572]),tt=Object.freeze([480,640,768,960,1050]),I=class extends o{static lightDom=!0;_handleManualWorkCardClick(t){t.preventDefault(),t.stopPropagation(),b({message:"I want to sign up for my free AI consultation.",autoSend:!0})}render(){let t=g({source:$,widths:Q,fit:"scale-down",format:"auto",quality:75}),e=g({source:E,widths:tt,fit:"scale-down",format:"auto",quality:75}),a=p({source:$,width:480,fit:"scale-down",format:"auto",quality:75})??$,n=p({source:E,width:640,fit:"scale-down",format:"auto",quality:75})??E;return s`
48      <div class="section-spacing -mt-8 overflow-hidden rounded-[33px] bg-white pt-32 sm:pt-[90px] lg:pt-52">
49        <w-container class="lg:mx-4">
50          <div class="relative">
51            <div class="relative lg:max-w-2xl">
52              <h2 class="font-display mb-5 text-4xl leading-tight font-bold tracking-tight sm:mb-6 sm:text-5xl sm:leading-tight">Fully autonomous AI Agent for ecommerce businesses</h2>
53              <p class="font-sans text-base text-gray-500 sm:text-lg">In the AI age, chatbots should think, reason and execute.</p>
54            </div>
55            <div class="sm: relative grid gap-[35px] pt-14 pb-0 sm:-mx-[37px] sm:grid-cols-2 sm:px-[37px] sm:pt-16 lg:gap-[30px]">
56              <div class="relative">
57                <a href="/app" rel="nofollow">
58                  <w-bento-card
59                    heading="Generate leads on autopilot"
60                    description="Collect emails and phone numbers from potential clients."
61                    image="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/75ba2109-17cd-4d71-9ac3-80b4a265e800/w=1200,h=650,q=75"
62                    image-alt="Integration and auto-sync illustration"
63                    link-text="Start generating leads">
64                  </w-bento-card>
65                </a>
66              </div>
67              <div class="relative">
68                <a href="/app" rel="nofollow">
69                  <w-bento-card
70                    heading="Update, refund or return orders automatically"
71                    description="Connect your store and let Molin handle returns, refunds and updates on autopilot."
72                    image="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/d9c58b3c-a38d-43c7-5fcb-781db50d3a00/w=1200,h=650,q=75"
73                    image-alt="Generate leads"
74                    link-text="Connect you shop"></w-bento-card>
75                </a>
76              </div>
77              <div class="h-full sm:col-span-full lg:order-4 lg:col-span-1">
78                <m-attio-card
79                  class="h-full cursor-pointer shadow-lg duration-300 ease-[cubic-bezier(0.33,1,0.68,1)] will-change-transform lg:shadow-none lg:hover:shadow-lg"
80                  @click="${this._handleManualWorkCardClick}">
81                  <div class="group relative flex h-full items-center justify-center overflow-hidden p-6">
82                    <div class="text-center">
83                      <p
84                        part="w-home-bento-gradient-purple"
85                        class="font-display bg-clip-text text-3xl font-semibold tracking-tight text-transparent duration-300 sm:text-[36px] sm:leading-[44px] lg:text-[48px] lg:leading-16">
86                        Click here to get a free AI consultation!
87                      </p>
88                    </div>
89                  </div>
90                </m-attio-card>
91              </div>
92              <div class="relative lg:order-3">
93                <a href="/app" rel="nofollow">
94                  <w-bento-card
95                    heading="Talk to customers in 90+ languages"
96                    description="Molin automatically detects a customer's language and resolves issues in 90+ languages. It c
96an switch mid-conversation."
97                    image="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/3e205cd2-2370-42c0-2533-3e4039e49b00/w=1200,h=650,q=75"
98                    image-alt="Map showing global language support"
99                    link-text="Start for free">
100                  </w-bento-card>
101                </a>
102              </div>
103              <div class="relative lg:order-5 lg:col-span-full">
104                <a href="/integrations">
105                  <m-attio-card
106                    class="col-span-1 h-full cursor-pointer shadow-lg duration-300 ease-[cubic-bezier(0.33,1,0.68,1)] will-change-transform lg:col-span-2 lg:shadow-none lg:hover:shadow-lg">
107                    <div class="group relative flex h-full flex-col-reverse overflow-hidden p-6 lg:flex-row lg:items-center lg:p-[120px]">
108                      <div
109                        class="content relative w-full pt-[5px] duration-300 ease-[cubic-bezier(0.33,1,0.68,1)] will-change-[transform,opacity] sm:pt-0 lg:translate-y-0 lg:group-hover:-translate-y-7">
110                        <p part="w-home-bento-gradient-text" class="mb-3 bg-clip-text font-sans text-base font-semibold tracking-tight text-black text-transparent sm:text-lg lg:mb-2">
111                          Connect to any e-commerce shop
112                        </p>
113
114                        <p class="tracing-tight font-sans text-base text-gray-500 lg:text-lg">
115                          We partnered with the biggest e-commerce providers in the world so you can enjoy AI in every part of your business.
116                        </p>
117
118                        <div class="bottom-0 mt-3 inline-flex duration-300 will-change-[transform,opacity] lg:mt-5 lg:opacity-0 lg:group-hover:opacity-100">
119                          <span class="relative flex items-center justify-center gap-3 font-sans text-sm font-semibold whitespace-nowrap text-[#8D00FF] lg:text-black lg:group-hover:text-[#8D00FF]">
120                            View integrations
121                            <w-hover-arrow class="[--w-hover-arrow--hovered:1] lg:[--w-hover-arrow--hovered:0] lg:group-hover:[--w-hover-arrow--hovered:1]"></w-hover-arrow>
122                          </span>
123                        </div>
124                      </div>
125                      <div class="image -mt-3 w-full lg:-my-[30px] lg:-mt-[30px] lg:-mr-[30px]">
126                        <img
127                          src="${a}"
128                          srcset="${t}"
129                          sizes="auto, 100vw"
130                          width="572"
131                          height="231"
132                          alt="E-commerce platform integrations"
133                          loading="lazy"
134                          decoding="async"
135                          class="lg:hidden" />
136                        <img
137                          src="${n}"
138                          srcset="${e}"
139                          sizes="auto, 100vw"
140                          width="1050"
141                          height="690"
142                          alt="E-commerce platform integrations"
143                          loading="lazy"
144                          decoding="async"
145                          class="hidden lg:block" />
146                      </div>
147                    </div>
148                  </m-attio-card>
149                </a>
150              </div>
151            </div>
152          </div>
153        </w-container>
154      </div>
155    `}};customElements.define("w-home-bento",I);var C=class extends o{static lightDom=!0;static properties={text:{type:String},url:{type:String},content:{attribute:!1}};constructor(){super(),this.text="",this.url="",this.content=null}render(){let t=s`
156      <span
157        class="${this.url?"cursor-pointer":"cursor-default"} relative inline-block rounded-full border border-white/20 bg-transparent px-2 py-[1px] duration-200 ease-[cubic-bezier(0.33,1,0.68,1)] hover:opacity-90 md:border-black/20">
158        <span class="font-display flex items-center justify-center rounded-full bg-transparent px-4 py-2 text-sm font-normal text-white md:text-black"> ${this.text?this.text:this.content} </span>
159      </span>
160    `;return this.url?s`<a href="${this.url}">${t}</a>`:t}};customElements.define("w-announcement-bannerpill",C);var N="en",et=w({title:l(m(),h(200)),subtitle:y(l(m(),h(300))),ctaText:l(m(),h(50))}),It=w({enabled:z(),ctaUrl:y(l(m(),U())),locales:l(F(l(m(),P(1),h(10)),et),J(1))});function W(i,t){let e=i.locales;if(t&&e[t])return{locale:t,content:e[t]};let a=t?.split(/[-_]/)[0];if(a&&a!==t&&e[a])return{locale:a,content:e[a]};let n=e[N];if(n)return{locale:N,content:n};let[c,f]=Object.entries(e)[0];return{locale:c,content:f}}
160function G(i,t=globalThis){if(i)return i;let e=t.document?.documentElement?.lang;if(e)return e;let a=new URLSearchParams(t.location?.search??"");return a.has("lang")?a.get("lang"):t.navigator?.language??null}var O=class extends o{static lightDom=!0;static properties={config:{type:String},preferredLocale:{type:String,attribute:"preferred-locale"},previewLocale:{type:String,attribute:"preview-locale"}};constructor(){super(),this.config="",this.preferredLocale="",this.previewLocale=""}get#s(){if(!this.config)return null;try{return JSON.parse(this.config)}catch{return null}}render(){let t=this.#s;if(!t?.enabled)return null;let{content:e}=W(t,G(this.previewLocale||this.preferredLocale));return e.ctaText?s`
161      <w-announcement-bannerpill
162        .content="${s`
163          <span>
164            ${e.title}
165            ${t.ctaUrl?s`<a href="${t.ctaUrl}" target="_blank" rel="noopener" class="text-white underline hover:opacity-80 md:text-black">${e.ctaText}</a>`:s`<span>${e.ctaText}</span>`}
166          </span>
167        `}"></w-announcement-bannerpill>
168    `:t.ctaUrl?s`<w-announcement-bannerpill text="${e.title}" url="${t.ctaUrl}"></w-announcement-bannerpill>`:s`<w-announcement-bannerpill text="${e.title}"></w-announcement-bannerpill>`}};customElements.define("m-pill-promo",O);var st="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/9b9db68a-0150-4bcb-8432-763f1064f900/format=auto,h=573,q=75,w=393",it="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/992ac6b1-d7da-4a76-f57c-1bb131c8ab00/format=auto,h=553,q=75,w=1440",L=class extends o{static lightDom=!0;static properties={data:{type:Object},bannerConfig:{type:String,attribute:"banner-config"},preferredLocale:{type:String,attribute:"preferred-locale"}};constructor(){super(),this.data={title:"AI Customer support for e-commerce",description:"Molin is an AI-powered customer support system that helps you save time and money by automating customer support."},this.bannerConfig="",this.preferredLocale=""}_handleBookDemoClick(t){t.preventDefault(),t.stopPropagation(),b({message:"I want to book a demo before I try your AI solution. Please book me in.",autoSend:!0,fullscreen:!0})}render(){return d(this.data.title,"title is required"),d(this.data.description,"description is required"),s`
169      <div class="relative flex items-center justify-center overflow-hidden px-[25px] pt-32 pb-20 text-sm sm:px-[37px] sm:pb-4 lg:px-0 lg:pt-0 lg:pb-0">
170        <picture aria-hidden="true" class="absolute inset-0 block h-full w-full">
171          <source media="(min-width: 640px)" srcset="${r(it)}" width="1440" height="553" />
172          <img
173            data-testid="w-home-hero-artwork"
174            src="${r(st)}"
175            alt=""
176            width="393"
177            height="573"
178            fetchpriority="high"
179            loading="eager"
180            decoding="async"
181            class="h-full w-full object-cover object-bottom" />
182        </picture>
183
184        <w-container class="relative z-10 lg:mx-4 lg:mt-48">
185          <div class="flex w-full flex-col space-x-4 sm:flex-row">
186            <div>
187              
188              <div class="animate-fade-in-down mb-4">
189                <m-pill-promo config="${this.bannerConfig}" preferred-locale="${this.preferredLocale}"></m-pill-promo>
190              </div>
191
192              <h1 class="animate-fade-in-down font-display mb-3 text-[52px] leading-snug font-bold tracking-[-0.035em] text-black sm:mb-4 sm:text-[84px] lg:leading-tight" style="text-wrap: balance;">
193                ${this.data.title}
194              </h1>
195
196              <p class="animate-fade-in-down mb-8 font-sans text-lg font-normal tracking-tight text-black [animation-delay:0.3s] sm:mb-9 sm:text-xl">${this.data.description}</p>
197
198              <div class="animate-fade-in-down mb-8 flex flex-col gap-4 [animation-delay:0.6s] sm:flex-row sm:items-center sm:gap-[25px] lg:mb-5 lg:gap-[50px]">
199                <a href="/shop-ai/setup" rel="nofollow">
200                  <w-link variant="primary" class="w-full">Create your free AI</w-link>
201                </a>
202
203                <button @click="${this._handleBookDemoClick}" class="w-full sm:hidden">
204                  <w-button variant="transparent" class="w-full">Book a demo</w-button>
205                </button>
206
207                <button @click="${this._handleBookDemoClick}" class="hidden sm:block">
208                  <w-button variant="link">Book a demo</w-button>
209                </button>
210              </div>
211
212              
213              <div class="animate-fade-in-down mb-5 [animation-delay:0.75s]">
214                <w-trust-strip></w-trust-strip>
215              </div>
216
217              <div class="animate-fade-in-down flex items-center gap-3 [animation-delay:0.9s]">
218                <span class="font-display text-sm font-bold whitespace-nowrap text-gray-500">★ ★ ★ ★ ★</span>
219                <p class="font-display text-sm font-normal text-gray-500"><b>4.7</b>/5 based on 100+ reviews</p>
220              </div>
221            </div>
222
223            <vidstack-video
224              media-title="AI chatbot interface"
225              class="animate-fade-in-down ml-auto hidden aspect-[730/1368] h-auto w-[365px] shrink-0 overflow-hidden [--vidstack-video--border-radius:33px] [animation-delay:0.5s] md:block lg:-mt-16"
226              src="https://customer-0pp2zwh5ow6jrwzz.cloudflarestream.com/d115f0965d8a54b46f7d282a8d525de8/manifest/video.m3u8"
227              poster="https://customer-0pp2zwh5ow6jrwzz.cloudflarestream.com/d115f0965d8a54b46f7d282a8d525de8/thumbnails/thumbnail.jpg?time=0s&width=730"
228              load="eager"
229              loop
230              autoplay
231              muted
232              playsinline>
233            </vidstack-video>
234          </div>
235        </w-container>
236      </div>
237    `}};customElements.define("w-home-hero",L);var D="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/fece9da2-b529-4f0e-550f-c74d9bb1f400/fit=scale-down,format=auto,q=70",K=Object.freeze([320,480,640,768,1080,1440,1920]),X="(min-width: 1272px) 1080px, (min-width: 1024px) calc(100vw - 192px), (min-width: 640px) calc(100vw - 72px), calc(100vw - 50px)";function T(i){return p({source:D,width:i,fit:"scale-down",format:"auto",quality:70})??r(`${D},w=${i}`)}function Y(){return g({source:D,widths:K,fit:"scale-down",format:"auto",quality:70})??K.map(i=>`${T(i)} ${i}w`).join(", ")}var j=class extends o{static lightDom=!0;constructor(){super(),this.isPlaying=!1}playVideo(){this.isPlaying=!0,this.requestUpdate()}render(){return s`
238      <div class="section-spacing bg-white">
239        <w-container class="lg:mx-4">
240          <div class="relative max-h-[600px]">
241            <div part="w-home-video-bg" class="aspect-[1920/1080] h-full w-full overflow-hidden rounded-2xl bg-cover bg-no-repeat blur-md"></div>
242
243            <div class="absolute inset-1 overflow-hidden rounded-2xl bg-white">
244              ${this.isPlaying?s`
245                      <vidstack-video
246                        media-title="Demo"
247                        class="relative aspect-[1920/1080] [--vidstack-video--border-radius:15px]"
248                        src="https://customer-0pp2zwh5ow6jrwzz.cloudflarestream.com/ead9124bec7aa448467cc23d4d363554/manifest/video.m3u8"
249                        load="visible"
250                        loop
251                        autoplay
252                        has-controls
253                        has-scrubber
254                        playsinline>
255                      </vidstack-video>
256                    `:s`
257                      <img
258                        srcset="${Y()}"
259                        sizes="${X}"
260                        src="${T(640)}"
261                        alt="onboarding video"
262                        width="1920"
263                        height="1080"
264                        loading="lazy"
265                        class="aspect-[1920/1080] h-auto w-full rounded-2xl object-cover" />
266
267                      <div class="group absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 lg:-translate-y-[65%] lg:scale-125">
268                        <w-play-button label="Play onboarding video" @click="${this.playVideo}"></w-play-button>
269                      </div>
270                    `}
271            </div>
272          </div>
273        </w-container>
274      </div>
275    `}};customElements.define("w-home-video",j);var M=class extends o{static lightDom=!0;render(){return s`
276      <div class="flex justify-center px-[25px] pb-10 sm:px-[37px] sm:pb-[45px] lg:pb-[104px]">
277        <w-container class="lg:mx-4">
278          
279          <span part="w-partners-gradient-line" class="animate-fade-in-down block h-[1.2px] [animation-delay:1.2s]"></span>
280          <div class="flex flex-col sm:flex-row sm:justify-center sm:gap-[50px] lg:gap-[113px]">
281            <div class="animate-fade-in-down flex items-center justify-around ga
281p-3 py-12 [animation-delay:1.5s] sm:justify-start sm:gap-[50px] sm:py-[34px] lg:gap-[113px] lg:py-14">
282              <img src="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/68debed8-9cd0-49e5-cc0f-e781003dd300/h=29,q=75" alt="Shopify logo" />
283              <img src="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/fb1ec2b2-1afa-42ae-0e3c-236e51055900/h=29,q=75" alt="WooCommerce logo" />
284            </div>
285            <span part="w-partners-gradient-line" class="animate-fade-in-down block h-[1.2px] [animation-delay:1.8s] sm:hidden"></span>
286            <div class="animate-fade-in-down flex items-center justify-around gap-3 py-12 [animation-delay:1.8s] sm:justify-start sm:gap-[50px] sm:py-[34px] lg:gap-[113px] lg:py-14">
287              <img src="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/cee0f851-545c-419d-23df-38255b549b00/h=29,q=75" alt="Shoprenter logo" />
288              <img src="https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/248e6490-90f3-477b-5011-af6ea8687700/h=29,q=75" alt="UNAS logo" />
289            </div>
290            <span part="w-partners-gradient-line" class="animate-fade-in-down block h-[1.2px] [animation-delay:1.8s] sm:hidden"></span>
291          </div>
292          <span part="w-partners-gradient-line" class="animate-fade-in-down hidden h-[1.2px] [animation-delay:1.8s] sm:block"></span>
293        </w-container>
294      </div>
295    `}};customElements.define("w-partners",M);var A=class extends o{static lightDom=!0;static properties={monthlyVisitors:{type:Number},isEditing:{type:Boolean},hourlyRate:{type:Number}};constructor(){super(),this.monthlyVisitors=5e3,this.isEditing=!1,this.hourlyRate=20,this.hasAnimated=!1}#s=v(this);#i=_(this);#e=!1;#a=H(this,{duration:2e3,initial:{startValue:0,targetValue:0},easing:t=>1-Math.pow(1-t,3),onFrame:(t,{startValue:e,targetValue:a})=>{let n=Math.round(e+(a-e)*t);this.monthlyVisitors=Math.round(n/1e3)*1e3,this.updateSlider()},onComplete:()=>{this.#e=!0}});updateMonthlyVisitors(t){let e=parseInt(t.currentTarget.value,10);Number.isNaN(e)||(e=Math.round(e/1e3)*1e3,e=Math.max(5e3,Math.min(1e7,e)),this.monthlyVisitors=e,this.updateSlider())}updateSlider(){let t=this.renderRoot.querySelector('input[type="range"]');t&&(t.value=String(this.monthlyVisitors))}toggleEdit(){this.isEditing=!this.isEditing,this.isEditing||this.updateSlider()}handleKeyDown(t){t.key==="Enter"&&this.toggleEdit()}firstUpdated(){this.setupIntersectionObserver()}connectedCallback(){super.connectedCallback(),this.hasUpdated&&!this.#e&&this.setupIntersectionObserver()}disconnectedCallback(){super.disconnectedCallback(),this.#e||(this.hasAnimated=!1)}setupIntersectionObserver(){let t=new IntersectionObserver(e=>{e.forEach(a=>{a.isIntersecting&&!this.hasAnimated&&(this.hasAnimated=!0,this.#s.setTimeout(()=>{this.animateToValue(3e6)},500),t.disconnect())})},{threshold:.3,rootMargin:"0px 0px -50px 0px"});t.observe(this),this.#i.deferCleanup(()=>t.disconnect())}animateToValue(t){this.#a.start({startValue:this.monthlyVisitors,targetValue:t})}formatVisitors(t){return t>=1e6?`${(t/1e6).toLocaleString("en-US")}M`:`${(t/1e3).toLocaleString("en-US")}K`}calculateEmployeeCount(){let t=this.calculateAIConversations();return Math.max(1,Math.ceil(t/400))}updateHourlyRate(t){this.hourlyRate=Math.max(1,this.hourlyRate+t)}calculateTotalSpend(){return this.calculateEmployeeCount()*this.hourlyRate*160}calculateAIConversations(){return Math.round(this.monthlyVisitors*.0115)}calculateAdditionalSales(){let t=this.calculateAIConversations();return Math.round(t*.01*12)}calculateTimeSaved(){return Math.round(this.calculateEmployeeCount()*160*.7)}calculateMoneySaved(){return Math.round(this.calculateTotalSpend()*.7)}calculateTotalMoneySaved(){return this.calculateMoneySaved()+this.calculateAdditionalSales()}calculateTimeSavedPerEmployee(){return Math.round(160*.7)}render(){let t=(this.monthlyVisitors-5e3)/9995e3*100;return s`
296      <div class="section-spacing z-20 rounded-[33px] bg-white">
297        <w-container class="lg:mx-4">
298          <div class="relative mb-12 lg:max-w-2xl">
299            <h2 class="font-display mb-6 text-4xl leading-tight font-bold tracking-tight sm:text-5xl sm:leading-tight">Calculate how much money you can save with Molin</h2>
300            <p class="mb-14 font-sans text-base text-gray-600 sm:mb-[65px] sm:text-lg lg:mb-16">Just enter your details and we'll show you how much time and money you can save with Molin.</p>
301          </div>
302          <m-attio-card>
303            <div class="overflow-hidden px-3 pt-6 pb-3 sm:p-6">
304              <div class="flex flex-col items-center gap-8 lg:flex-row">
305                <div class="lg:w-3/5">
306                  
307                  <div class="flex h-full flex-col rounded-lg bg-white sm:pr-8">
308                    <h2 class="mb-6 font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">
309                      How many unique monthly visitors do you have?
310                    </h2>
311                    <div class="mb-8">
312                      <div class="relative mb-2">
313                        <div class="pointer-events-none right-0 bottom-8 left-0 flex justify-between">
314                          <span class="font-sans text-sm text-gray-600">5K</span>
315                          <span class="font-sans text-sm text-gray-600">2.5M</span>
316                          <span class="font-sans text-sm text-gray-600">5M</span>
317                          <span class="font-sans text-sm text-gray-600">7.5M</span>
318                          <span class="font-sans text-sm text-gray-600">10M</span>
319                        </div>
320
321                        <label for="cost-calculator-range-slider" class="sr-only">Monthly visitors</label>
322                        <input
323                          id="cost-calculator-range-slider"
324                          type="range"
325                          min="5000"
326                          max="10000000"
327                          step="1000"
328                          value="${this.monthlyVisitors}"
329                          @input="${this.updateMonthlyVisitors}"
330                          style="--track-pct: ${t}%"
331                          class="w-full" />
332                      </div>
333                    </div>
334                    <div class="text-center">
335                      ${this.isEditing?s`
336                              <input
337                                type="number"
338                                value="${this.monthlyVisitors}"
339                                @input="${this.updateMonthlyVisitors}"
340                                @blur="${this.toggleEdit}"
341                                @keydown="${this.handleKeyDown}"
342                                class="font-display w-full rounded-2xl border-2 border-[#601feb] px-4 py-2 text-center text-3xl leading-tight font-semibold tracking-tight text-black focus:ring-2 focus:ring-[#601feb]/50 focus:outline-none sm:text-4xl sm:leading-tight"
343                                min="5000"
344                                max="10000000"
345                                step="1000"
346                                autofocus />
347                            `:s`
348                              <span
349                                @click="${this.toggleEdit}"
350                                class="font-display cursor-pointer text-3xl leading-tight font-semibold tracking-tight text-black transition-all hover:text-black/70 sm:text-4xl sm:leading-tight"
351                                >${this.formatVisitors(this.monthlyVisitors)}</span
352                              >
353                            `}
354                      <p class="mt-2 mb-6 font-sans text-xs font-light text-black">Monthly visitors</p>
355                    </div>
356
357                    
358                    <div class="flex-grow">
359                      <h2 class="mb-6 font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">Support team details</h2>
360
361                      <div class="flex flex-col">
362                        
363                        <div class="flex flex-col justify-center gap-4 sm:flex-row sm:gap-8">
364                          
365                          <div class="flex flex-col items-center sm:w-1/2">
366                            <p class="sm:text-md mb-2 font-sans text-base text-gray-600">Estimated employees needed</p>
367                            <div class="flex h-8 w-14 items-center justify-center">
368                              <span class="font-display text-2xl font-semibold text-gray-800">${this.calculateEmployeeCount()}</span>
369                            </div>
370                          </div>
371
372                          
373                          <div class="flex flex-col items-center sm:w-1/2">
374                            <p class="sm:text-md mb-2 font-sans text-base text-gray-600">Average hourly rate in USD</p>
375                            <div class="inline-flex items-center overflow-hidden rounded-xl border border-gray-300">
376                              <button @click="${()=>this.updateHourlyRate(-1)}" class="flex h-8 w-8 items-center justify-center font-sans text-gray-500 hover:bg-[#F3F4F6]">-</button>
377                              <div class="flex h-8 w-14 items-center justify-center">
378                                <span class="font-sans">${this.hourlyRate}</span>
379                              </div>
380                              <button @click="${()=>this.updateHourlyRate(1)}" class="flex h-8 w-8 items-center justify-center font-sans text-gray-500 hover:bg-[#F3F4F6]">+</button>
381                            </div>
382                          </div>
383                        </div>
384
385                        
386                        <div class="mt-8 text-center">
387                          <span class="font-display text-3xl leading-tight font-semibold tracking-tight text-black sm:text-4xl sm:leading-tight"
388                            >${u(this.calculateTotalSpend(),{maximumFractionDigits:0})}</span
389                          >
390                          <p class="mt-2 font-sans text-xs font-light text-black">Total monthly spend</p>
391                        </div>
392                      </div>
393                    </div>
394                  </div>
395                </div>
396                <div class="lg:w-2/5 lg:self-center">
397                  
398                  <m-attio-card>
399                    <div class="overflow-hidden px-3 py-6 sm:pt-6">
400                      <h3 class="mb-8 font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">Monthly ROI</h3>
401
402                      <div class="mb-8 grid grid-cols-2 gap-6">
403                        <div>
404                          <p class="mb-1 font-sans text-xs text-gray-500">Estimated AI conversations</p>
405                          <span class="font-display text-2xl leading-tight font-bold tracking-tight text-gray-800 sm:text-3xl sm:leading-tight"
406                            >${this.calculateAIConversations().toLocaleString("en-US")}</span
407                          >
408                        </div>
409                        <div>
410                          <p class="mb-1 font-sans text-xs text-gray-600">Time saved per employee</p>
411                          <div class="flex items-center">
412                            <span class="font-display text-2xl leading-tight font-bold tracking-tight text-gray-800 sm:text-3xl sm:leading-tight"
413                              >${this.calculateTimeSavedPerEmployee().toLocaleString("en-US")}</span
414                            >
415                            <span class="font-display ml-1 text-lg leading-tight font-medium tracking-tight text-gray-800 sm:text-xl sm:leading-tight">hrs</span>
416                          </div>
417                        </div>
418                        <div>
419                          <p class="mb-1 font-sans text-xs text-gray-600">Money saved</p>
420                          <span class="font-display text-2xl leading-tight font-bold tracking-tight text-gray-800 sm:text-3xl sm:leading-tight"
421                            >${u(this.calculateMoneySaved(),{maximumFractionDigits:0})}</span
422                          >
423                        </div>
424                        <div>
425                          <p class="mb-1 font-sans text-xs text-gray-600">Expected additional sales</p>
426                          <span class="font-display text-2xl leading-tight font-bold tracking-tight text-gray-800 sm:text-3xl sm:leading-tight"
427                            >${u(this.calculateAdditionalSales(),{maximumFractionDigits:0})}</span
428                          >
429                        </div>
430                      </div>
431
432                      <div class="-mx-3 mt-0 -mb-6 rounded-b-[20px] bg-[#f3f4f6] p-6">
433                        <h3 class="mb-2 font-sans text-base leading-tight font-semibold tracking-tight text-gray-800 sm:text-lg sm:leading-snug sm:tracking-tight">Total</h3>
434
435                        <div class="mt-6">
436                          <div class="grid grid-cols-2 gap-6">
437                            <div>
438                              <p class="mb-1 font-sans text-xs text-gray-600">Time saved</p>
439                              <div class="flex items-center">
440                                <span class="font-display text-2xl leading-tight font-bold tracking-tight text-gray-800 sm:text-3xl sm:leading-tight"
441                                  >
441${this.calculateTimeSaved().toLocaleString("en-US")}</span
442                                >
443                                <span class="font-display ml-1 text-lg leading-tight font-medium tracking-tight text-gray-800 sm:text-xl sm:leading-tight">hrs</span>
444                              </div>
445                            </div>
446                            <div>
447                              <p class="mb-1 font-sans text-xs text-gray-600">Profit</p>
448                              <span class="font-display text-2xl leading-tight font-bold tracking-tight text-gray-800 sm:text-3xl sm:leading-tight"
449                                >${u(this.calculateTotalMoneySaved(),{maximumFractionDigits:0})}</span
450                              >
451                            </div>
452                          </div>
453                        </div>
454                      </div>
455                    </div>
456                  </m-attio-card>
457                </div>
458              </div>
459            </div>
460          </m-attio-card>
461
462          <p class="mt-4 font-sans text-sm font-light text-gray-600 italic">This is an estimation based on 400 tickets/month per support employee. Reach out for better estimates.</p>
463        </w-container>
464      </div>
465    `}};customElements.define("w-saving-calculator",A);var R=class extends o{static lightDom=!0;static properties={testimonial:{type:String},avatarSrc:{type:String},name:{type:String},position:{type:String},socialIcon:{type:String},date:{type:String}};constructor(){super(),this.testimonial="",this.avatarSrc="",this.name="",this.position="",this.socialIcon="",this.date="",this.socialIcons=[{key:"facebook",title:"Facebook",url:"https://www.facebook.com/groups/molinaiofficialen",icon:"https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/674cf09b-0a42-4937-76cf-e89434fbe300/w=48,h=49,q=75"},{key:"youtube",title:"Youtube",url:"https://www.youtube.com/@molinai",icon:"https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/f4ffc32c-3412-47b5-248b-b5970ca7db00/w=48,h=49,q=75"},{key:"linkedin",title:"Linkedin",url:"https://www.linkedin.com/company/molin-ai/",icon:"https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/267f3756-c192-443b-c7b2-f476d7efeb00/w=48,h=49,q=75"},{key:"tiktok",title:"TikTok",url:"https://www.tiktok.com/@molin_ai",icon:"https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/086c6811-93fd-4791-f18b-f572f33d1900/w=48,h=49,q=75"},{key:"instagram",title:"Instagram",url:"https://www.instagram.com/molin_app/",icon:"https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/c912b3c4-684b-49ef-1a54-fee2ca5b2a00/w=48,h=49,q=75"},{key:"twitter",title:"X",url:"https://x.com/molin_ai",icon:"https://imagedelivery.net/JWssb2diw2B-JHR2ojV3Ow/f05d5788-8507-4b2d-2d7c-cf2105ef8d00/w=48,h=49,q=75"}]}render(){return s`
466      <div class="min-h-[195px] w-[240px] rounded-3xl border-[0.5px] border-[#32353B] p-[2.5px] transition-all duration-300 hover:border-gray-500 sm:min-h-[215px] sm:w-[500px]">
467        <div class="content relative flex h-full min-h-[195px] flex-col justify-between rounded-[22px] border-[2.5px] border-[#32353B33] bg-[#26282D] p-5 sm:min-h-[215px] sm:p-6">
468          <div class="absolute top-0 right-0 left-0 flex items-start justify-between px-5 pt-4 sm:px-6">
469            ${this.date?s`<p class="font-sans text-xs text-gray-400">${at(new Date(this.date))}</p>`:s`<div></div>`}
470            ${this.socialIcon?s`<img
471                    src="${r(this.getSocialIcon(this.socialIcon))}"
472                    alt="${this.socialIcon} icon"
473                    width="20"
474                    height="20"
475                    loading="lazy"
476                    decoding="async"
477                    class="h-5 w-5 opacity-30" />`:s`<div></div>`}
478          </div>
479          <p class="mt-6 font-sans text-sm leading-6 font-light text-[#BCC3CE] sm:text-base">"${this.testimonial}"</p>
480          <div class="mt-6 flex items-center gap-3">
481            <div class="relative">
482              ${this.avatarSrc?s`
483                      <img
484                        src="https://molin.ai/cdn-cgi/image/h=40,fit=scale-down,format=auto,q=75,dpr=1/${this.avatarSrc}"
485                        srcset="
486                          https://molin.ai/cdn-cgi/image/h=40,fit=scale-down,format=auto,q=75,dpr=1/${this.avatarSrc} 1x,
487                          https://molin.ai/cdn-cgi/image/h=40,fit=scale-down,format=auto,q=75,dpr=2/${this.avatarSrc} 2x
488                        "
489                        alt="${this.name}"
490                        loading="lazy"
491                        class="h-full w-10 rounded-full object-cover lg:w-12" />
492                    `:s`<div class="h-full w-full rounded-full bg-gray-300"></div>`}
493            </div>
494            <div class="profile flex-grow">
495              <p class="font-display mb-[0.5px] text-sm text-[#eeeeee] sm:text-base">${this.name}</p>
496              <p class="font-sans text-xs text-[#99A2AF]">${this.position}</p>
497            </div>
498          </div>
499        </div>
500      </div>
501    `}getSocialLink(t){let e=this.socialIcons.find(a=>a.key.toLowerCase()===t.toLowerCase());return e?e.url:"#"}getSocialIcon(t){let e=this.socialIcons.find(a=>a.key.toLowerCase()===t.toLowerCase());return e?e.icon:""}};customElements.define("w-testimonials-card",R);function at(i){let t=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],e=i.getUTCHours(),a=e>=12?"PM":"AM";e=e%12,e=e||12;let n=i.getUTCMinutes().toString().padStart(2,"0"),c=t[i.getUTCMonth()],f=i.getUTCDate(),x=i.getUTCFullYear();return`${e}:${n} ${a} \xB7 ${c} ${f}, ${x}`}var V=class extends o{static lightDom=!0;static properties={testimonials:{type:Array}};constructor(){super(),this.testimonials=[]}render(){return s`
502      <div
503        part="w-testimonials-bg"
504        class="section-spacing customerSlider -mt-16 block bg-[#101010] px-4 py-32 before:absolute before:-top-[33px] before:left-0 before:h-[33px] before:w-full before:bg-[#101010] after:absolute after:bottom-0 after:left-0 after:w-full after:rotate-180 after:bg-cover after:bg-bottom after:bg-no-repeat sm:py-[90px] lg:py-52">
505        <div class="mb-12 flex flex-col items-center justify-center text-center">
506          <h2
507            part="w-testimonials-gradient-purple"
508            class="font-display relative mb-4 bg-clip-text text-4xl leading-tight font-bold tracking-tight text-transparent sm:mb-5 sm:text-5xl sm:leading-tight">
509            Truly loved by 1,000s of businesses
510          </h2>
511          <p class="w-4/5 max-w-screen-sm font-sans text-base leading-snug font-light text-[#9098A0] sm:w-3/4 sm:text-lg md:w-3/4 lg:w-2/5">
512            Molin is an AI agent designed for customer-centric and forward-looking online businesses.
513          </p>
514        </div>
515
516        <div class="relative -mx-4 flex flex-col justify-between gap-3 overflow-hidden sm:gap-4 lg:gap-6">
517          <div class="column column--left ml-0">
518            <div class="marquee-wrapper flex cursor-pointer flex-row flex-nowrap justify-start gap-3 sm:gap-4 lg:gap-6">${this.#s(this.testimonials.slice(0,5))}</div>
519          </div>
520
521          <div class="column column--middle ml-0">
522            <div class="marquee-wrapper flex cursor-pointer flex-row flex-nowrap justify-start gap-3 sm:gap-4 lg:gap-6">${this.#s(this.testimonials.slice(5,10))}</div>
523          </div>
524
525          <div class="column column--bottom ml-0">
526            <div class="marquee-wrapper flex cursor-pointer flex-row flex-nowrap justify-start gap-3 sm:gap-4 lg:gap-6">${this.#s(this.testimonials.slice(10,15))}</div>
527          </div>
528
529          <div class="column column--fourth ml-0">
530            <div class="marquee-wrapper flex cursor-pointer flex-row flex-nowrap justify-start gap-3 sm:gap-4 lg:gap-6">${this.#s(this.testimonials.slice(15,20))}</div>
531          </div>
532        </div>
533
534        
535      </div>
536    `}#s(t){return[...t,...t].map(e=>s`
537        <w-testimonials-card
538          testimonial="${e.testimonial}"
539          avatarSrc="${e.avatarSrc}"
540          name="${e.name}"
541          position="${e.position}"
542          socialIcon="${e.socialIcon}"
543          date="${e.date}"></w-testimonials-card>
544      `)}};customElements.define("w-testimonials",V);var q=class extends o{static lightDom=!0;static properties={data:{type:Object}};constructor(){super(),this.data={heroSection:{title:"",description:""},bannerConfig:"",preferredLocale:"",featuredSingleTestimonial:{testimonialText:"",avatarSrc:"",name:"",position:"",logoSrc:""},conversational:{title:"",description:"",cards:[]},singleTestimonial:{testimonialText:"",avatarSrc:"",name:"",position:"",logoSrc:""},featuredCustomerSection:{title:"",description:"",featuredCustomerCards:[]},customerTestimonials:[],aiSales:"$250K+",aiConversations:"1M+",savedSupportCost:"$500K+",checkoutEvents:"50K+",numbersTitle:"",numbersSubtitle:""}}render(){return s`
545      <main class="relative z-10 rounded-b-3xl bg-white">
546        <w-navbar></w-navbar>
547        <w-home-hero .data="${this.data.heroSection}" banner-config="${this.data.bannerConfig}" preferred-locale="${this.data.preferredLocale}"></w-home-hero>
548        <w-testimonials-logos></w-testimonials-logos>
549        
550        <w-numbers
551          heading="${this.data.numbersTitle}"
552          subheading="${this.data.numbersSubtitle}"
553          .numbers="${[{title:this.data.aiConversations,text:"AI conversations"},{title:this.data.savedSupportCost,text:"Saved in support costs"},{title:this.data.checkoutEvents,text:"Checkout events"},{title:this.data.aiSales,text:"Generated in AI sales"}]}"></w-numbers>
554        <w-home-video></w-home-video>
555        <w-testimonials-single .data="${this.data.featuredSingleTestimonial}"></w-testimonials-single>
556        <w-conversational .data="${this.data.conversational}"></w-conversational>
557        <w-saving-calculator></w-saving-calculator>
558        <w-customer .data="${this.data.featuredCustomerSection}"></w-customer>
559        <w-features></w-features>
560        <w-testimonials .testimonials="${this.data.customerTestimonials}"></w-testimonials>
561        <w-home-bento></w-home-bento>
562        <w-testimonials-single .data="${this.data.singleTestimonial}"></w-testimonials-single>
563        <w-tools></w-tools>
564        <w-cta></w-cta>
565        
566      </main>
567
568      <div class="sticky bottom-0 w-full">
569        <w-footer></w-footer>
570      </div>
571    `}};customElements.define("w-page-home",q);

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.