1<!DOCTYPE html> 2<html lang="en" class="scroll-smooth"> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta name="csrf-token" content="gNZ0shq2eJoak8DxYpxRf9YUt6ZCS8GvSQ01ovSJ"> 7 8
8<script>
vendor: 343 bytes, lines 8-12
8(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 9 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 10 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 11 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 12 })(window,document,'script','dataLayer','
12GTM-54R9GTG5
vendor: 3 bytes, line 12
12');
12</script>
12 13 14 15 <title>See SmartComm.ai in action · Book a Demo</title> 16 17 <link rel="icon" href="https://smartcomm.ai/images/logo/logo.svg" type="image/svg+xml"> 18 19 <link rel="preconnect" href="https://fonts.googleapis.com"> 20 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 21 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap" rel="stylesheet"> 22 <link rel="preload" as="style" href="https://smartcomm.ai/build/assets/site-BfAVz1s-.css" /><link rel="modulepreload" as="script" href="https://smartcomm.ai/build/assets/app-DnElPafO.js" /><link rel="stylesheet" href="https://smartcomm.ai/build/assets/site-BfAVz1s-.css" />
22<script type="module" src="https://smartcomm.ai/build/assets/app-DnElPafO.js"></script>
22</head> 23<body class="min-h-screen bg-background text-foreground antialiased">
vendor: 72 bytes, lines 23-24
23 24 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
24GTM-54R9GTG5
vendor: 101 bytes, lines 24-28
24" 25 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 26 27 28
28<div aria-hidden class="pointer-events-none fixed inset-x-0 top-0 -z-10 h-[600px] bg-gradient-soft"></div> 29 <div aria-hidden class="pointer-events-none fixed left-1/2 top-24 -z-10 h-72 w-[700px] -translate-x-1/2 rounded-full bg-gradient-brand opacity-10 blur-3xl"></div> 30 31 <div class="mx-auto max-w-[1180px] px-4 sm:px-6 py-10 sm:py-14" 32 x-data="bookingForm({ 33 minDate: '2026-10-05', 34 oldDate: null, 35 oldTime: null, 36 defaultDial: '+880', 37 oldDial: null, 38 })"> 39 40 41 <div class="flex justify-center"> 42 <div class="inline-flex items-center gap-2 rounded-full border border-border/60 bg-card/60 px-4 py-2 text-[11px] font-semibold tracking-wide text-muted-foreground backdrop-blur"> 43 <svg class="h-4 w-4 text-brand" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2 4 5v6c0 5 3.4 9.7 8 11 4.6-1.3 8-6 8-11V5l-8-3Zm-1 13-3-3 1.4-1.4L11 12.2l4.6-4.6L17 9l-6 6Z"/></svg> 44 TRUSTED BY 320+ BUSINESSES WORLDWIDE 45 </div> 46 </div> 47 48 49 50 <div class="mt-8 text-center"> 51 <h1 class="font-display text-4xl sm:text-5xl font-extrabold tracking-tight text-foreground"> 52 See <span class="text-gradient-brand">SmartComm.ai</span> in action. 53 <span class="text-brand">â¦</span> 54 </h1> 55 <p class="mx-auto mt-4 max-w-xl text-[15px] leading-relaxed text-muted-foreground"> 56 Get a personalized demo of SmartComm.ai and see how we can help you automate, engage and grow your business. 57 </p> 58 <p class="mt-3 text-sm text-muted-foreground"> 59 <span class="text-muted-foreground/70">â</span> Ready to get started? 60 <span class="font-medium text-brand">Book your free demo</span> today. 61 <span class="text-muted-foreground/70">â</span> 62 </p> 63 </div> 64 65 66 <form method="POST" action="https://smartcomm.ai/book" 67 @submit="handleSubmit($event)" 68 class="mt-9 rounded-3xl border border-border bg-card p-5 sm:p-8 shadow-soft"> 69 <input type="hidden" name="_token" value="gNZ0shq2eJoak8DxYpxRf9YUt6ZCS8GvSQ01ovSJ" autocomplete="off"> <input type="hidden" name="date" :value="selectedDate"> 70 <input type="hidden" name="time" :value="selectedTime"> 71 <input type="hidden" name="dial_code" :value="dialCode"> 72 73 74 <div class="flex items-center justify-between gap-2 px-1 sm:px-6"> 75 <div class="flex items-center gap-3"> 76 <div class="flex h-8 w-8 items-center justify-center rounded-full text-sm font-semibold bg-gradient-brand text-white shadow-glow">1</div> 77 <span class="hidden sm:block text-sm font-medium text-brand">Your Information</span> 78 </div> 79 <div class="h-px flex-1 bg-brand/50"></div> 80 <div class="flex items-center gap-3"> 81 <div class="flex h-8 w-8 items-center justify-center rounded-full text-sm font-semibold border border-border bg-card text-muted-foreground">2</div> 82 <span class="hidden sm:block text-sm font-medium text-muted-foreground">Select Date & Time</span> 83 </div> 84 <div class="h-px flex-1 bg-border"></div> 85 <div class="flex items-center gap-3"> 86 <div class="flex h-8 w-8 items-center justify-center rounded-full text-sm font-semibold border border-border bg-card text-muted-foreground">3</div> 87 <span class="hidden sm:block text-sm font-medium text-muted-foreground">Confirmation</span> 88 </div> 89 </div> 90 91 92 <div class="mt-8 grid grid-cols-1 lg:grid-cols-3 gap-6 transition-opacity" 93 :class="submitting && 'pointer-events-none select-none opacity-60'"> 94 95 <div class="lg:col-span-2 space-y-5"> 96 <div class="flex items-center gap-3"> 97 <div class="flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-brand text-white shadow-glow"> 98 <svg class="h-5 w-5" viewBox="0 0 24 24" fill="currentColor"><path d="M12 12a5 5 0 1 0-5-5 5 5 0 0 0 5 5Zm0 2c-4 0-8 2-8 5v1h16v-1c0-3-4-5-8-5Z"/></svg> 99 </div> 100 <div> 101 <h2 class="text-lg font-bold text-foreground">1. Your Information</h2> 102 <p class="text-xs text-muted-foreground">Please fill in your details to schedule your demo.</p> 103 </div> 104 </div> 105 106 <div class="grid grid-cols-1 sm:grid-cols-2 gap-4"> 107 108 <div> 109 <label class="mb-1.5 block text-xs font-medium text-foreground">Company Name <span class="text-red-500">*</span></label> 110 <div class="relative">
111 <span class="pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"> 112 <svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M3 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16H3Zm14 0V9h2a2 2 0 0 1 2 2v10h-4ZM6 7h2v2H6V7Zm4 0h2v2h-2V7ZM6 11h2v2H6v-2Zm4 0h2v2h-2v-2Z"/></svg> 113 </span> 114 <input name="company_name" value="" placeholder="Your Company Name" required 115 class="w-full rounded-xl border border-border bg-card py-2.5 pl-9 pr-3 text-sm text-foreground placeholder:text-muted-foreground focus:border-brand focus:outline-none focus:ring-2 focus:ring-brand/30"> 116 </div> 117 </div> 118 119 <div> 120 <label class="mb-1.5 block text-xs font-medium text-foreground">Your Name <span class="text-red-500">*</span></label> 121 <div class="relative"> 122 <span class="pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"> 123 <svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M12 12a5 5 0 1 0-5-5 5 5 0 0 0 5 5Zm0 2c-4 0-8 2-8 5v1h16v-1c0-3-4-5-8-5Z"/></svg> 124 </span> 125 <input name="contact_name" value="" placeholder="Your Full Name" required 126 class="w-full rounded-xl border border-border bg-card py-2.5 pl-9 pr-3 text-sm text-foreground placeholder:text-muted-foreground focus:border-brand focus:outline-none focus:ring-2 focus:ring-brand/30"> 127 </div> 128 </div> 129 130 131 <div> 132 <label class="mb-1.5 block text-xs font-medium text-foreground">WhatsApp Phone Number <span class="text-red-500">*</span></label> 133 <div class="flex items-stretch gap-2"> 134 <div class="relative" @click.outside="dialOpen = false"> 135 <button type="button" @click="dialOpen = !dialOpen" 136 class="flex h-full items-center gap-1.5 rounded-xl border border-border bg-card px-3 text-sm text-foreground"> 137 <span x-text="dialFlag"></span> 138 <span x-text="dialCode"></span> 139 <svg class="h-3.5 w-3.5 text-muted-foreground" viewBox="0 0 20 20" fill="currentColor"><path d="M5 8l5 5 5-5H5Z"/></svg> 140 </button> 141 <div x-show="dialOpen" x-cloak x-transition 142 class="absolute z-20 mt-2 w-40 overflow-hidden rounded-xl border border-border bg-card shadow-soft"> 143 <button type="button" @click="dialCode='+880'; dialFlag='ð§ð©'; dialOpen=false" 144 class="flex w-full items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-brand-soft"> 145 <span>ð§ð©</span><span>BD</span><span class="ml-auto text-muted-foreground">+880</span> 146 </button> 147 <button type="button" @click="dialCode='+91'; dialFlag='ð®ð³'; dialOpen=false" 148 class="flex w-full items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-brand-soft"> 149 <span>ð®ð³</span><span>IN</span><span class="ml-auto text-muted-foreground">+91</span> 150 </button> 151 <button type="button" @click="dialCode='+1'; dialFlag='ðºð¸'; dialOpen=false" 152 class="flex w-full items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-brand-soft">
153 <span>ðºð¸</span><span>US</span><span class="ml-auto text-muted-foreground">+1</span> 154 </button> 155 <button type="button" @click="dialCode='+44'; dialFlag='ð¬ð§'; dialOpen=false" 156 class="flex w-full items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-brand-soft"> 157 <span>ð¬ð§</span><span>UK</span><span class="ml-auto text-muted-foreground">+44</span> 158 </button> 159 <button type="button" @click="dialCode='+971'; dialFlag='ð¦ðª'; dialOpen=false" 160 class="flex w-full items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-brand-soft"> 161 <span>ð¦ðª</span><span>AE</span><span class="ml-auto text-muted-foreground">+971</span> 162 </button> 163 <button type="button" @click="dialCode='+92'; dialFlag='ðµð°'; dialOpen=false" 164 class="flex w-full items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-brand-soft"> 165 <span>ðµð°</span><span>PK</span><span class="ml-auto text-muted-foreground">+92</span> 166 </button> 167 <button type="button" @click="dialCode='+61'; dialFlag='ð¦ðº'; dialOpen=false" 168 class="flex w-full items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-brand-soft"> 169 <span>ð¦ðº</span><span>AU</span><span class="ml-auto text-muted-foreground">+61</span> 170 </button> 171 <button type="button" @click="dialCode='+65'; dialFlag='ð¸ð¬'; dialOpen=false" 172 class="flex w-full items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-brand-soft"> 173 <span>ð¸ð¬</span><span>SG</span><span class="ml-auto text-muted-foreground">+65</span> 174 </button> 175 </div> 176 </div> 177 <div class="relative flex-1"> 178 <input name="whatsapp_number" value="" placeholder="1712 345678" required 179 class="w-full rounded-xl border border-border bg-card py-2.5 pl-3 pr-9 text-sm text-foreground placeholder:text-muted-foreground focus:border-brand focus:outline-none focus:ring-2 focus:ring-brand/30"> 180 <span class="pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-emerald-600"> 181 <svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2a10 10 0 0 0-8.6 15l-1.4 5 5.1-1.3A10 10 0 1 0 12 2Zm5.3 14.1c-.2.6-1.3 1.2-1.8 1.2s-1 .2-3.3-.7-3.8-3.2-3.9-3.4-1-1.3-1-2.5.6-1.7.9-2 .6-.3.8-.3h.6c.2 0 .4 0 .6.5l.8 1.9c.1.2.1.4 0 .6l-.4.6c-.2.2-.3.4-.1.7s.7 1.1 1.5 1.8c1 .9 1.8 1.1 2 .9l.6-.7c.2-.3.4-.2.7-.1l1.8.9c.3.1.5.2.5.4s0 .9-.3 1.3Z"/></svg> 182 </span> 183 </div> 184 </div> 185 </div> 186 187 <div> 188 <label class="mb-1.5 block text-xs font-medium text-foreground">Work Email <span class="text-red-500">*</span></label> 189 <div class="relative"> 190 <span class="pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"> 191 <svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M2 5h20v14H2V5Zm10 7L4 7v1l8 5 8-5V7l-8 5Z"/></svg> 192 </span> 193 <input name="work_email" type="email" value="" placeholder="[email protected]" required 194 class="w-full rounded-xl border border-border bg-card py-2.5 pl-9 pr-3 text-sm text-foreground placeholder:text-muted-foreground focus:border-brand focus:outline-none focus:ring-2 focus:ring-brand/30"> 195 </div> 196 </div> 197 198 199 <div> 200 <label class="mb-1.5 block text-xs font-medium text-foreground">Number of Agents <span class="text-red-500">*</span></label> 201 <div class="relative">
202 <span class="pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"> 203 <svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M16 11a4 4 0 1 0-4-4 4 4 0 0 0 4 4Zm-8 0a4 4 0 1 0-4-4 4 4 0 0 0 4 4Zm0 2c-2.7 0-8 1.3-8 4v3h9v-3c0-1 .4-1.9 1-2.6A14 14 0 0 0 8 13Zm8 0c-.5 0-1 0-1.6.1A5.3 5.3 0 0 1 16 17v3h8v-3c0-2.7-5.3-4-8-4Z"/></svg> 204 </span> 205 <input name="number_of_agents" value="" placeholder="e.g. 5" required 206 class="w-full rounded-xl border border-border bg-card py-2.5 pl-9 pr-3 text-sm text-foreground placeholder:text-muted-foreground focus:border-brand focus:outline-none focus:ring-2 focus:ring-brand/30"> 207 </div> 208 </div> 209 210 <div> 211 <label class="mb-1.5 block text-xs font-medium text-foreground">Website / Facebook Page URL <span class="text-muted-foreground">(Optional)</span></label> 212 <div class="relative"> 213 <span class="pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground"> 214 <svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M3.9 12a3.1 3.1 0 0 1 3.1-3.1h4V7h-4a5 5 0 0 0 0 10h4v-1.9h-4A3.1 3.1 0 0 1 3.9 12Zm5.1 1h6v-2H9v2Zm8-6h-4v1.9h4a3.1 3.1 0 0 1 0 6.2h-4V17h4a5 5 0 0 0 0-10Z"/></svg> 215 </span> 216 <input name="website_url" value="" placeholder="https://yourbusiness.com" 217 class="w-full rounded-xl border border-border bg-card py-2.5 pl-9 pr-3 text-sm text-foreground placeholder:text-muted-foreground focus:border-brand focus:outline-none focus:ring-2 focus:ring-brand/30"> 218 </div> 219 </div> 220 </div> 221 222 223 <div> 224 <label class="mb-1.5 block text-xs font-medium text-foreground">What do you need? (Optional)</label> 225 <textarea name="requirements" rows="3" placeholder="Tell us a little about your requirements..." 226 class="w-full rounded-xl border border-border bg-card px-3 py-2.5 text-sm text-foreground placeholder:text-muted-foreground focus:border-brand focus:outline-none focus:ring-2 focus:ring-brand/30"></textarea> 227 </div> 228 </div> 229 230 231 <aside class="lg:col-span-1"> 232 <div class="rounded-2xl border border-border/60 bg-muted/40 p-5"> 233 <div class="flex items-center gap-2"> 234 <div class="flex h-8 w-8 items-center justify-center rounded-lg bg-brand-soft text-brand"> 235 <svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M3 4h18v12H3V4Zm0 14h18v2H3v-2Z"/></svg> 236 </div> 237 <h3 class="text-sm font-bold text-foreground">Why book a demo?</h3> 238 </div> 239 <div class="mt-4 space-y-4"> 240 <div class="flex gap-3"> 241 <div class="mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-brand-soft text-brand"> 242 <svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2Z"/></svg> 243 </div> 244 <div> 245 <p class="text-sm font-semibold text-foreground">Personalized Walkthrough</p> 246 <p class="text-xs leading-relaxed text-muted-foreground">See how SmartComm.ai fits your business needs.</p> 247 </div> 248 </div> 249 <div class="flex gap-3"> 250 <div class="mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-brand-soft text-brand"> 251 <svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2Z"/></svg> 252 </div> 253 <div> 254 <p class="text-sm font-semibold text-foreground">All-in-One Platform</p> 255 <p class="text-xs leading-relaxed text-muted-foreground">Explore CRM, Automation, AI Chatbot & more.</p> 256 </div> 257 </div> 258 <div class="flex gap-3"> 259 <div class="mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-brand-soft text-brand"> 260 <svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2Z"/></svg> 261 </div> 262 <div> 263 <p class="text-sm font-semibold text-foreground">Expert Guidance</p> 264 <p class="text-xs leading-relaxed text-muted-foreground">Get all your questions answered live.</p> 265 </div> 266 </div> 267 <div class="flex gap-3"> 268 <div class="mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-brand-soft text-brand"> 269 <svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2Z"/></svg> 270 </div> 271 <div> 272 <p class="text-sm font-semibold text-foreground">No Commitment</p> 273 <p class="text-xs leading-relaxed text-muted-foreground">It's 100% free with no obligations.</p> 274 </div> 275 </div> 276 </div> 277 </div> 278 </aside> 279 </div> 280 281 282 <div x-ref="dateSection" 283 class="mt-8 rounded-2xl border bg-muted/40 p-5 sm:p-6 transition-opacity" 284 :class="[submitting && 'pointer-events-none select-none opacity-60', dateError && !canSubmit ? 'border-red-300 ring-2 ring-red-200' : 'border-border/60']"> 285 <div class="flex items-center gap-3"> 286 <div class="flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-brand text-white shadow-glow"> 287 <svg class="h-5 w-5" viewBox="0 0 24 24" fill="currentColor"><path d="M7 2v2H5a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-2V2h-2v2H9V2H7Zm12 7v10H5V9h14Z"/></svg> 288 </div> 289 <div> 290 <h2 class="text-lg font-bold text-foreground">2. Select Date & Time <span class="text-red-500">*</span></h2> 291 <p class="text-xs text-muted-foreground">Choose a convenient date and time for your demo.</p> 292 </div> 293 </div> 294 <p x-show="dateError && !canSubmit" x-cloak class="mt-3 flex items-center gap-1.5 rounded-lg bg-red-50 px-3 py-2 text-xs font-semibold text-red-600">
295 <svg class="h-4 w-4 shrink-0" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2 1 21h22L12 2Zm1 15h-2v-2h2v2Zm0-4h-2V9h2v4Z"/></svg> 296 <span x-show="!selectedDate">Please select a date for your demo.</span> 297 <span x-show="selectedDate && !selectedTime">Please select a time slot for your demo.</span> 298 </p> 299 300 <div class="mt-5 grid grid-cols-1 lg:grid-cols-2 gap-6"> 301 302 <div class="rounded-2xl border border-border bg-card p-4"> 303 <div class="flex items-center justify-between px-1"> 304 <button type="button" @click="prevMonth()" class="flex h-8 w-8 items-center justify-center rounded-lg border border-border text-muted-foreground hover:bg-brand-soft"> 305 <svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M15 6l-6 6 6 6V6Z"/></svg> 306 </button> 307 <p class="text-sm font-semibold text-foreground" x-text="monthLabel"></p> 308 <button type="button" @click="nextMonth()" class="flex h-8 w-8 items-center justify-center rounded-lg border border-border text-muted-foreground hover:bg-brand-soft"> 309 <svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M9 6l6 6-6 6V6Z"/></svg> 310 </button> 311 </div> 312 <div class="mt-4 grid grid-cols-7 gap-1 text-center text-[11px] font-semibold text-muted-foreground"> 313 <template x-for="d in weekdays" :key="d"><div x-text="d"></div></template> 314 </div> 315 <div class="mt-2 grid grid-cols-7 gap-1"> 316 <template x-for="(cell, idx) in days" :key="idx"> 317 <button type="button" 318 @click="! cell.disabled && selectDate(cell.date)" 319 :disabled="cell.disabled" 320 :class="{ 321 'text-muted-foreground/40 cursor-not-allowed': cell.disabled, 322 'text-muted-foreground': !cell.inMonth && !cell.disabled, 323 'text-foreground hover:bg-brand-soft': cell.inMonth && !cell.disabled && !cell.isSelected, 324 'bg-gradient-brand text-white font-bold shadow-glow': cell.isSelected, 325 }" 326 class="aspect-square rounded-full text-sm transition"> 327 <span x-text="cell.day"></span> 328 </button> 329 </template> 330 </div> 331 </div> 332 333 334 <div> 335 <div class="mb-3 flex items-center gap-2"> 336 <p class="text-sm font-semibold text-foreground">Available Time Slots</p> 337 <span class="text-[11px] text-brand">(GMT +06:00) Asia/Dhaka</span> 338 </div> 339 <div class="grid grid-cols-3 gap-2.5"> 340 <button type="button" @click="selectTime('09:30')" 341 :class="selectedTime === '09:30' 342 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 343 : 'border-border bg-card text-foreground hover:border-brand/40'" 344 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 345 09:30 AM 346 </button> 347 <button type="button" @click="selectTime('10:00')" 348 :class="selectedTime === '10:00' 349 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 350 : 'border-border bg-card text-foreground hover:border-brand/40'" 351 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 352 10:00 AM 353 </button> 354 <button type="button" @click="selectTime('10:30')" 355 :class="selectedTime === '10:30' 356 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 357 : 'border-border bg-card text-foreground hover:border-brand/40'" 358 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 359 10:30 AM 360 </button> 361 <button type="button" @click="selectTime('11:00')" 362 :class="selectedTime === '11:00' 363 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 364 : 'border-border bg-card text-foreground hover:border-brand/40'" 365 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 366 11:00 AM 367 </button> 368 <button type="button" @click="selectTime('11:30')" 369 :class="selectedTime === '11:30' 370 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 371 : 'border-border bg-card text-foreground hover:border-brand/40'" 372 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 373 11:30 AM 374 </button> 375 <button type="button" @click="selectTime('12:00')" 376 :class="selectedTime === '12:00' 377 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 378 : 'border-border bg-card text-foreground hover:border-brand/40'" 379 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 380 12:00 PM 381 </button> 382 <button type="button" @click="selectTime('12:30')" 383 :class="selectedTime === '12:30' 384 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 385 : 'border-border bg-card text-foreground hover:border-brand/40'" 386 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 387 12:30 PM 388 </button> 389 <button type="button" @click="selectTime('13:00')" 390 :class="selectedTime === '13:00' 391 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 392 : 'border-border bg-card text-foreground hover:border-brand/40'" 393 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 394 01:00 PM 395 </button> 396 <button type="button" @click="selectTime('13:30')" 397 :class="selectedTime === '13:30' 398 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 399 : 'border-border bg-card text-foreground hover:border-brand/40'" 400 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 401 01:30 PM 402 </button> 403 <button type="button" @click="selectTime('14:00')" 404 :class="selectedTime === '14:00' 405 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 406 : 'border-border bg-card text-foreground hover:border-brand/40'" 407 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 408 02:00 PM 409 </button> 410 <button type="button" @click="selectTime('14:30')" 411 :class="selectedTime === '14:30' 412 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 413 : 'border-border bg-card text-foreground hover:border-brand/40'" 414 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 415 02:30 PM 416 </button> 417 <button type="button" @click="selectTime('15:00')" 418 :class="selectedTime === '15:00' 419 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 420 : 'border-border bg-card text-foreground hover:border-brand/40'" 421 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 422 03:00 PM 423 </button> 424 <button type="button" @click="selectTime('15:30')" 425 :class="selectedTime === '15:30' 426 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 427 : 'border-border bg-card text-foreground hover:border-brand/40'" 428 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 429 03:30 PM 430 </button> 431 <button type="button" @click="selectTime('16:00')" 432 :class="selectedTime === '16:00' 433 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 434 : 'border-border bg-card text-foreground hover:border-brand/40'" 435 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 436 04:00 PM 437 </button> 438 <button type="button" @click="selectTime('16:30')" 439 :class="selectedTime === '16:30' 440 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 441 : 'border-border bg-card text-foreground hover:border-brand/40'" 442 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 443 04:30 PM 444 </button> 445 <button type="button" @click="selectTime('17:00')" 446 :class="selectedTime === '17:00' 447 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 448 : 'border-border bg-card text-foreground hover:border-brand/40'" 449 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 450 05:00 PM 451 </button> 452 <button type="button" @click="selectTime('17:30')" 453 :class="selectedTime === '17:30' 454 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 455 : 'border-border bg-card text-foreground hover:border-brand/40'" 456 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 457 05:30 PM 458 </button> 459 <button type="button" @click="selectTime('18:00')" 460 :class="selectedTime === '18:00' 461 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 462 : 'border-border bg-card text-foreground hover:border-brand/40'" 463 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 464 06:00 PM 465 </button> 466 <button type="button" @click="selectTime('18:30')" 467 :class="selectedTime === '18:30' 468 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 469 : 'border-border bg-card text-foreground hover:border-brand/40'" 470 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 471 06:30 PM 472 </button> 473 <button type="button" @click="selectTime('19:00')" 474 :class="selectedTime === '19:00' 475 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 476 : 'border-border bg-card text-foreground hover:border-brand/40'" 477 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 478 07:00 PM 479 </button> 480 <button type="button" @click="selectTime('19:30')" 481 :class="selectedTime === '19:30' 482 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 483 : 'border-border bg-card text-foreground hover:border-brand/40'" 484 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 485 07:30 PM 486 </button> 487 <button type="button" @click="selectTime('20:00')" 488 :class="selectedTime === '20:00' 489 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 490 : 'border-border bg-card text-foreground hover:border-brand/40'" 491 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 492 08:00 PM 493 </button> 494 <button type="button" @click="selectTime('20:30')" 495 :class="selectedTime === '20:30' 496 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 497 : 'border-border bg-card text-foreground hover:border-brand/40'" 498
498 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 499 08:30 PM 500 </button> 501 <button type="button" @click="selectTime('21:00')" 502 :class="selectedTime === '21:00' 503 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 504 : 'border-border bg-card text-foreground hover:border-brand/40'" 505 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 506 09:00 PM 507 </button> 508 <button type="button" @click="selectTime('21:30')" 509 :class="selectedTime === '21:30' 510 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 511 : 'border-border bg-card text-foreground hover:border-brand/40'" 512 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 513 09:30 PM 514 </button> 515 <button type="button" @click="selectTime('22:00')" 516 :class="selectedTime === '22:00' 517 ? 'bg-gradient-brand border-transparent text-white shadow-glow' 518 : 'border-border bg-card text-foreground hover:border-brand/40'" 519 class="rounded-xl border px-2 py-2.5 text-center text-[13px] font-medium transition"> 520 10:00 PM 521 </button> 522 </div> 523 <p x-show="selectedDate && selectedTime" x-cloak class="mt-3 text-xs text-brand"> 524 Selected: <span x-text="prettySelection"></span> 525 </p> 526 </div> 527 </div> 528 </div> 529 530 531 <div class="mt-7 flex flex-col sm:flex-row items-center justify-between gap-4"> 532 <p class="flex items-center gap-2 text-xs text-muted-foreground"> 533 <svg class="h-4 w-4 text-emerald-600" viewBox="0 0 24 24" fill="currentColor"><path d="M12 1 4 5v6c0 5 3.4 9.7 8 11 4.6-1.3 8-6 8-11V5l-8-4Z"/></svg> 534 We respect your privacy. No spam, ever. 535 </p> 536 <button type="submit" 537 class="group inline-flex w-full sm:w-auto items-center justify-center gap-2 rounded-xl bg-gradient-brand px-7 py-3 text-sm font-bold text-white shadow-glow transition hover:opacity-95 disabled:cursor-not-allowed disabled:opacity-60" 538 :class="{ 'opacity-60': !canSubmit }" 539 :disabled="submitting"> 540 541 <span x-show="!submitting" class="inline-flex items-center gap-2"> 542 Schedule My Demo 543 <svg class="h-4 w-4 transition group-hover:translate-x-0.5" viewBox="0 0 24 24" fill="currentColor"><path d="M4 11h12.2l-3.6-3.6L14 6l6 6-6 6-1.4-1.4 3.6-3.6H4v-2Z"/></svg> 544 </span> 545 546 <span x-show="submitting" x-cloak class="inline-flex items-center gap-2"> 547 <svg class="h-4 w-4 animate-spin" viewBox="0 0 24 24" fill="none"> 548 <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> 549 <path class="opacity-90" fill="currentColor" d="M4 12a8 8 0 0 1 8-8V0C5.4 0 0 5.4 0 12h4Z"></path> 550 </svg> 551 Scheduling⦠552 </span> 553 </button> 554 </div> 555 </form> 556 557 <p class="mt-6 text-center text-xs text-muted-foreground"> 558 Already a team member? <a href="https://smartcomm.ai/login" class="font-medium text-brand hover:underline">Admin login</a> 559 </p> 560</div> 561
562<script> 563 function bookingForm(config) { 564 const dialMeta = JSON.parse('{\u0022+880\u0022:{\u0022code\u0022:\u0022+880\u0022,\u0022label\u0022:\u0022BD\u0022,\u0022flag\u0022:\u0022\\ud83c\\udde7\\ud83c\\udde9\u0022},\u0022+91\u0022:{\u0022code\u0022:\u0022+91\u0022,\u0022label\u0022:\u0022IN\u0022,\u0022flag\u0022:\u0022\\ud83c\\uddee\\ud83c\\uddf3\u0022},\u0022+1\u0022:{\u0022code\u0022:\u0022+1\u0022,\u0022label\u0022:\u0022US\u0022,\u0022flag\u0022:\u0022\\ud83c\\uddfa\\ud83c\\uddf8\u0022},\u0022+44\u0022:{\u0022code\u0022:\u0022+44\u0022,\u0022label\u0022:\u0022UK\u0022,\u0022flag\u0022:\u0022\\ud83c\\uddec\\ud83c\\udde7\u0022},\u0022+971\u0022:{\u0022code\u0022:\u0022+971\u0022,\u0022label\u0022:\u0022AE\u0022,\u0022flag\u0022:\u0022\\ud83c\\udde6\\ud83c\\uddea\u0022},\u0022+92\u0022:{\u0022code\u0022:\u0022+92\u0022,\u0022label\u0022:\u0022PK\u0022,\u0022flag\u0022:\u0022\\ud83c\\uddf5\\ud83c\\uddf0\u0022},\u0022+61\u0022:{\u0022code\u0022:\u0022+61\u0022,\u0022label\u0022:\u0022AU\u0022,\u0022flag\u0022:\u0022\\ud83c\\udde6\\ud83c\\uddfa\u0022},\u0022+65\u0022:{\u0022code\u0022:\u0022+65\u0022,\u0022label\u0022:\u0022SG\u0022,\u0022flag\u0022:\u0022\\ud83c\\uddf8\\ud83c\\uddec\u0022}}'); 565 return { 566 minDate: config.minDate, 567 weekdays: ['SUN','MON','TUE','WED','THU','FRI','SAT'], 568 monthNames: ['January','February','March','April','May','June','July','August','September','October','November','December'], 569 viewYear: 0, viewMonth: 0, 570 // Nothing is pre-selected â the user must pick a date AND a time. 571 selectedDate: config.oldDate || null, 572 selectedTime: config.oldTime || null, 573 dialOpen: false, 574 dialCode: config.oldDial || config.defaultDial, 575 dialFlag: 'ð³ï¸', 576 submitting: false, 577 dateError: false, 578 579 init() { 580 // Anchor the calendar on the restored date, else the first bookable day. 581 const base = this.parse(config.oldDate || this.minDate); 582 this.viewYear = base.getFullYear(); 583 this.viewMonth = base.getMonth(); 584 const meta = dialMeta[this.dialCode]; 585 if (meta) this.dialFlag = meta.flag; 586 587 // Prefill from the AI advisor / shared store (only fields old() left empty). 588 try { 589 const c = (this.$store.sc && this.$store.sc.company) || {}; 590 const setIfEmpty = (name, val) => { 591 if (!val) return; 592 const el = this.$root.querySelector(`[name="${name}"]`); 593 if (el && !el.value) el.value = val; 594 }; 595 setIfEmpty('company_name', c.company); 596 setIfEmpty('contact_name', c.name); 597 setIfEmpty('work_email', c.email); 598 setIfEmpty('website_url', c.website); 599 const phone = (c.phone || c.whatsapp || '').toString(); 600 if (phone) { 601 const codes = Object.keys(dialMeta).sort((a, b) => b.length - a.length); 602 const match = codes.find((code) => phone.startsWith(code)); 603 if (match) { 604 this.dialCode = match; 605 if (dialMeta[match]) this.dialFlag = dialMeta[match].flag; 606 setIfEmpty('whatsapp_number', phone.slice(match.length)); 607 } else { 608 setIfEmpty('whatsapp_number', phone.replace(/[^0-9]/g, '')); 609 } 610 } 611 } catch (e) {} 612 }, 613 parse(str) { const [y,m,d] = str.split('-').map(Number); return new Date(y, m-1, d); }, 614 fmt(y, m, d) { return `${y}-${String(m+1).padStart(2,'0')}-${String(d).padStart(2,'0')}`; }, 615 616 get monthLabel() { return `${this.monthNames[this.viewMonth]} ${this.viewYear}`; }, 617 618 get days() { 619 const first = new Date(this.viewYear, this.viewMonth, 1); 620 const startDow = first.getDay(); 621 const daysInMonth = new Date(this.viewYear, this.viewMonth + 1, 0).getDate(); 622 const prevDays = new Date(this.viewYear, this.viewMonth, 0).getDate(); 623 const cells = []; 624 for (let i = startDow - 1; i >= 0; i--) { 625 const day = prevDays - i; 626 const date = this.fmt(this.viewMonth === 0 ? this.viewYear - 1 : this.viewYear, (this.viewMonth + 11) % 12, day); 627 cells.push(this.cell(day, date, false)); 628 } 629 for (let day = 1; day <= daysInMonth; day++) { 630 cells.push(this.cell(day, this.fmt(this.viewYear, this.viewMonth, day), true)); 631 } 632 let nextDay = 1; 633 while (cells.length % 7 !== 0 || cells.length < 42) { 634 const date = this.fmt(this.viewMonth === 11 ? this.viewYear + 1 : this.viewYear, (this.viewMonth + 1) % 12, nextDay); 635 cells.push(this.cell(nextDay, date, false)); 636 nextDay++; 637 if (cells.length >= 42) break; 638 } 639 return cells; 640 }, 641 cell(day, date, inMonth) { 642 return { day, date, inMonth, disabled: date < this.minDate, isSelected: date === this.selectedDate }; 643 }, 644 645 prevMonth() { 646 if (this.viewMonth === 0) { this.viewMonth = 11; this.viewYear--; } else { this.viewMonth--; } 647 }, 648 nextMonth() { 649 if (this.viewMonth === 11) { this.viewMonth = 0; this.viewYear++; } else { this.viewMonth++; } 650 }, 651 selectDate(date) { this.selectedDate = date; this.dateError = false; }, 652 selectTime(time) { this.selectedTime = time; this.dateError = false; }, 653 654 get canSubmit() { return !!(this.selectedDate && this.selectedTime); }, 655 656 // Lock the form on the first valid submit so it can't be double-fired. 657 // We don't disable the inputs (disabled controls drop out of the POST 658 // body) â the overlay just blocks pointer input; the guard blocks re-entry. 659 handleSubmit(e) { 660 if (this.submitting) { e.preventDefault(); return; } 661 // Date + time are required and start empty â surface a clear error 662 // instead of a silently disabled button if the user tries to submit. 663 if (! this.canSubmit) { 664 e.preventDefault(); 665 this.dateError = true; 666 this.$refs.dateSection?.scrollIntoView({ behavior: 'smooth', block: 'center' }); 667 return; 668 } 669 this.submitting = true; 670 }, 671 672 get prettySelection() { 673 if (!this.selectedDate || !this.selectedTime) return ''; 674 const d = this.parse(this.selectedDate); 675 const opts = { weekday: 'short', month: 'short', day: 'numeric', year: 'numeric' }; 676 return `${d.toLocaleDateString('en-US', opts)} · ${this.label(this.selectedTime)}`; 677 }, 678 label(t) { 679 const [h, m] = t.split(':').map(Number); 680 const am = h < 12 ? 'AM' : 'PM';
681 const hh = ((h + 11) % 12) + 1; 682 return `${hh}:${String(m).padStart(2,'0')} ${am}`; 683 }, 684 }; 685 } 686</script>
686 687 688 <style>[x-cloak]{display:none!important;}</style> 689</body> 690</html>
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.