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.