PageSourceSearch

https://smartcomm.ai/book-a-demo

html smartcomm.ai collected 2026-10-05 15:05:39 UTC 51,784 bytes, 690 lines download raw bytes

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 &amp; 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 &amp; 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&#039;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 &amp; 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.