thors1 commited on
Commit
6d19ac8
·
verified ·
1 Parent(s): 45bff5b

Initial DeepSite commit

Browse files
Files changed (2) hide show
  1. README.md +9 -6
  2. index.html +874 -19
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Deepsite Project 27dmk
3
- emoji: 👀
4
- colorFrom: pink
5
- colorTo: blue
6
  sdk: static
7
- pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
1
  ---
2
+ title: DeepSite Project
3
+ colorFrom: yellow
4
+ colorTo: red
 
5
  sdk: static
6
+ emoji: 🎉
7
+ tags:
8
+ - deepsite-v4
9
  ---
10
 
11
+ # DeepSite Project
12
+
13
+ This project has been created with [DeepSite](https://deepsite.hf.co) AI Vibe Coding.
index.html CHANGED
@@ -1,19 +1,874 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6
+ <title>Verify MC — Patient Intake</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://unpkg.com/lucide@latest"></script>
9
+ <link rel="preconnect" href="https://fonts.googleapis.com">
10
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;450;500;510;550;600&display=swap" rel="stylesheet">
12
+ <style>
13
+ * {
14
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
15
+ -webkit-font-smoothing: antialiased;
16
+ -moz-osx-font-smoothing: grayscale;
17
+ }
18
+
19
+ html {
20
+ scroll-behavior: smooth;
21
+ }
22
+
23
+ body {
24
+ background: #F8FAFC;
25
+ min-height: 100vh;
26
+ padding-bottom: env(safe-area-inset-bottom, 0px);
27
+ }
28
+
29
+ /* Custom scrollbar */
30
+ ::-webkit-scrollbar {
31
+ width: 6px;
32
+ }
33
+ ::-webkit-scrollbar-track {
34
+ background: transparent;
35
+ }
36
+ ::-webkit-scrollbar-thumb {
37
+ background: #CBD5E1;
38
+ border-radius: 3px;
39
+ }
40
+
41
+ /* Input focus states */
42
+ .input-field {
43
+ transition: all 120ms ease-out;
44
+ }
45
+ .input-field:focus {
46
+ border-color: #0C8F8B;
47
+ box-shadow: 0 0 0 3px rgba(12, 143, 137, 0.08);
48
+ }
49
+
50
+ /* AI pulse animation */
51
+ @keyframes aiPulse {
52
+ 0%, 100% { opacity: 0.6; }
53
+ 50% { opacity: 1; }
54
+ }
55
+ .ai-pulse {
56
+ animation: aiPulse 1.5s ease-in-out infinite;
57
+ }
58
+
59
+ /* Smooth section transitions */
60
+ .form-section {
61
+ transition: opacity 180ms ease-out, transform 180ms ease-out;
62
+ }
63
+
64
+ /* Sticky footer safe area */
65
+ .sticky-footer {
66
+ padding-bottom: max(12px, env(safe-area-inset-bottom, 12px));
67
+ }
68
+
69
+ /* Progress bar smooth */
70
+ .progress-fill {
71
+ transition: width 200ms ease-out;
72
+ }
73
+
74
+ /* Button press states */
75
+ .btn-primary {
76
+ transition: all 120ms ease-out;
77
+ }
78
+ .btn-primary:active {
79
+ transform: scale(0.98);
80
+ }
81
+ .btn-ghost {
82
+ transition: all 120ms ease-out;
83
+ }
84
+ .btn-ghost:active {
85
+ transform: scale(0.98);
86
+ }
87
+
88
+ /* AI suggestion appear */
89
+ @keyframes slideIn {
90
+ from {
91
+ opacity: 0;
92
+ transform: translateY(-4px);
93
+ }
94
+ to {
95
+ opacity: 1;
96
+ transform: translateY(0);
97
+ }
98
+ }
99
+ .ai-suggestion {
100
+ animation: slideIn 150ms ease-out;
101
+ }
102
+
103
+ /* Checkbox custom */
104
+ .custom-checkbox:checked {
105
+ background-color: #0C8F8B;
106
+ border-color: #0C8F8B;
107
+ }
108
+
109
+ /* Ensure footer doesn't cover content */
110
+ .form-content {
111
+ padding-bottom: 120px;
112
+ }
113
+
114
+ @media (max-width: 640px) {
115
+ .form-content {
116
+ padding-bottom: 140px;
117
+ }
118
+ }
119
+ </style>
120
+ </head>
121
+ <body class="antialiased">
122
+ <!-- Main Container -->
123
+ <div class="min-h-screen flex flex-col items-center py-6 sm:py-8 px-4">
124
+
125
+ <!-- Header -->
126
+ <header class="w-full max-w-[720px] mb-6">
127
+ <div class="flex items-center gap-3 mb-2">
128
+ <div class="w-10 h-10 rounded-xl bg-[#0C8F8B] flex items-center justify-center">
129
+ <i data-lucide="shield-check" class="w-5 h-5 text-white"></i>
130
+ </div>
131
+ <div>
132
+ <h1 class="text-xl font-semibold text-slate-900 tracking-tight">Verify MC</h1>
133
+ <p class="text-sm text-slate-500">Patient Intake</p>
134
+ </div>
135
+ </div>
136
+ </header>
137
+
138
+ <!-- Progress Bar (Top) -->
139
+ <div class="w-full max-w-[720px] mb-6">
140
+ <div class="flex items-center justify-between mb-2">
141
+ <span class="text-sm font-medium text-slate-700">Your progress</span>
142
+ <span class="text-sm font-medium text-[#0C8F8B]" id="progressText">0% complete</span>
143
+ </div>
144
+ <div class="h-1.5 bg-slate-200 rounded-full overflow-hidden">
145
+ <div id="progressBar" class="progress-fill h-full bg-[#0C8F8B] rounded-full" style="width: 0%"></div>
146
+ </div>
147
+ </div>
148
+
149
+ <!-- Form Card -->
150
+ <main class="w-full max-w-[720px] bg-white rounded-2xl shadow-sm border border-slate-200 overflow-hidden">
151
+ <div class="form-content p-6 sm:p-8">
152
+
153
+ <!-- AI Assist Banner -->
154
+ <div class="mb-8 p-4 bg-slate-50 rounded-xl border border-slate-200">
155
+ <div class="flex items-start gap-3">
156
+ <div class="w-8 h-8 rounded-lg bg-[#0C8F8B]/10 flex items-center justify-center flex-shrink-0">
157
+ <i data-lucide="sparkles" class="w-4 h-4 text-[#0C8F8B]"></i>
158
+ </div>
159
+ <div class="flex-1">
160
+ <h3 class="text-sm font-semibold text-slate-900 mb-1">AI Assist</h3>
161
+ <p class="text-sm text-slate-600 mb-3">Paste any medical document, insurance card, or previous form — we'll fill what we can.</p>
162
+ <div class="relative">
163
+ <textarea
164
+ id="aiInput"
165
+ placeholder="Paste text here or describe your info..."
166
+ class="w-full h-20 px-3 py-2.5 text-sm bg-white border border-slate-200 rounded-lg resize-none focus:outline-none input-field placeholder:text-slate-400"
167
+ ></textarea>
168
+ <button
169
+ id="aiProcessBtn"
170
+ class="absolute bottom-2 right-2 px-3 py-1.5 text-xs font-medium text-white bg-[#0C8F8B] rounded-md hover:bg-[#0A7F7B] transition-colors"
171
+ >
172
+ Process
173
+ </button>
174
+ </div>
175
+ <div id="aiStatus" class="hidden mt-2 flex items-center gap-2 text-xs text-[#0C8F8B]">
176
+ <div class="w-3 h-3 ai-pulse">
177
+ <i data-lucide="loader-2" class="w-3 h-3 animate-spin"></i>
178
+ </div>
179
+ <span>Analyzing and filling form...</span>
180
+ </div>
181
+ </div>
182
+ </div>
183
+ </div>
184
+
185
+ <!-- Section 1: Personal Information -->
186
+ <section class="form-section mb-10" data-section="personal">
187
+ <div class="flex items-center gap-2 mb-5">
188
+ <div class="w-8 h-8 rounded-lg bg-slate-100 flex items-center justify-center">
189
+ <i data-lucide="user" class="w-4 h-4 text-slate-600"></i>
190
+ </div>
191
+ <h2 class="text-base font-semibold text-slate-900">Personal Information</h2>
192
+ </div>
193
+
194
+ <div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
195
+ <div class="sm:col-span-2">
196
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">Full Legal Name</label>
197
+ <input
198
+ type="text"
199
+ id="fullName"
200
+ data-field="personal"
201
+ placeholder="First and last name"
202
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field placeholder:text-slate-400"
203
+ >
204
+ <div id="ai-fullName" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
205
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
206
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
207
+ </div>
208
+ </div>
209
+
210
+ <div>
211
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">Date of Birth</label>
212
+ <input
213
+ type="date"
214
+ id="dob"
215
+ data-field="personal"
216
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field text-slate-600"
217
+ >
218
+ <div id="ai-dob" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
219
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
220
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
221
+ </div>
222
+ </div>
223
+
224
+ <div>
225
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">Gender</label>
226
+ <select
227
+ id="gender"
228
+ data-field="personal"
229
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field text-slate-600"
230
+ >
231
+ <option value="">Select gender</option>
232
+ <option value="female">Female</option>
233
+ <option value="male">Male</option>
234
+ <option value="non-binary">Non-binary</option>
235
+ <option value="prefer-not">Prefer not to say</option>
236
+ </select>
237
+ <div id="ai-gender" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
238
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
239
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
240
+ </div>
241
+ </div>
242
+
243
+ <div class="sm:col-span-2">
244
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">Social Security Number</label>
245
+ <input
246
+ type="text"
247
+ id="ssn"
248
+ data-field="personal"
249
+ placeholder="XXX-XX-XXXX"
250
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field placeholder:text-slate-400"
251
+ >
252
+ <p class="mt-1.5 text-xs text-slate-500">Used only for insurance verification. Encrypted and secure.</p>
253
+ <div id="ai-ssn" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
254
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
255
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
256
+ </div>
257
+ </div>
258
+ </div>
259
+ </section>
260
+
261
+ <!-- Section 2: Contact Information -->
262
+ <section class="form-section mb-10" data-section="contact">
263
+ <div class="flex items-center gap-2 mb-5">
264
+ <div class="w-8 h-8 rounded-lg bg-slate-100 flex items-center justify-center">
265
+ <i data-lucide="phone" class="w-4 h-4 text-slate-600"></i>
266
+ </div>
267
+ <h2 class="text-base font-semibold text-slate-900">Contact Information</h2>
268
+ </div>
269
+
270
+ <div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
271
+ <div class="sm:col-span-2">
272
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">Email Address</label>
273
+ <input
274
+ type="email"
275
+ id="email"
276
+ data-field="contact"
277
+ placeholder="you@example.com"
278
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field placeholder:text-slate-400"
279
+ >
280
+ <div id="ai-email" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
281
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
282
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
283
+ </div>
284
+ </div>
285
+
286
+ <div>
287
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">Phone Number</label>
288
+ <input
289
+ type="tel"
290
+ id="phone"
291
+ data-field="contact"
292
+ placeholder="(555) 123-4567"
293
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field placeholder:text-slate-400"
294
+ >
295
+ <div id="ai-phone" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
296
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
297
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
298
+ </div>
299
+ </div>
300
+
301
+ <div>
302
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">Preferred Contact</label>
303
+ <select
304
+ id="preferredContact"
305
+ data-field="contact"
306
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field text-slate-600"
307
+ >
308
+ <option value="">Select preference</option>
309
+ <option value="email">Email</option>
310
+ <option value="phone">Phone</option>
311
+ <option value="text">Text Message</option>
312
+ </select>
313
+ <div id="ai-preferredContact" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
314
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
315
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
316
+ </div>
317
+ </div>
318
+
319
+ <div class="sm:col-span-2">
320
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">Street Address</label>
321
+ <input
322
+ type="text"
323
+ id="address"
324
+ data-field="contact"
325
+ placeholder="123 Main Street, Apt 4B"
326
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field placeholder:text-slate-400"
327
+ >
328
+ <div id="ai-address" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
329
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
330
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
331
+ </div>
332
+ </div>
333
+
334
+ <div>
335
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">City</label>
336
+ <input
337
+ type="text"
338
+ id="city"
339
+ data-field="contact"
340
+ placeholder="City"
341
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field placeholder:text-slate-400"
342
+ >
343
+ <div id="ai-city" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
344
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
345
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
346
+ </div>
347
+ </div>
348
+
349
+ <div class="grid grid-cols-2 gap-3">
350
+ <div>
351
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">State</label>
352
+ <select
353
+ id="state"
354
+ data-field="contact"
355
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field text-slate-600"
356
+ >
357
+ <option value="">State</option>
358
+ <option value="CA">CA</option>
359
+ <option value="NY">NY</option>
360
+ <option value="TX">TX</option>
361
+ <option value="FL">FL</option>
362
+ <option value="IL">IL</option>
363
+ <option value="PA">PA</option>
364
+ <option value="OH">OH</option>
365
+ <option value="GA">GA</option>
366
+ <option value="NC">NC</option>
367
+ <option value="MI">MI</option>
368
+ </select>
369
+ <div id="ai-state" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
370
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
371
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
372
+ </div>
373
+ </div>
374
+ <div>
375
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">ZIP</label>
376
+ <input
377
+ type="text"
378
+ id="zip"
379
+ data-field="contact"
380
+ placeholder="12345"
381
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field placeholder:text-slate-400"
382
+ >
383
+ <div id="ai-zip" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
384
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
385
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
386
+ </div>
387
+ </div>
388
+ </div>
389
+ </div>
390
+ </section>
391
+
392
+ <!-- Section 3: Medical History -->
393
+ <section class="form-section mb-10" data-section="medical">
394
+ <div class="flex items-center gap-2 mb-5">
395
+ <div class="w-8 h-8 rounded-lg bg-slate-100 flex items-center justify-center">
396
+ <i data-lucide="heart-pulse" class="w-4 h-4 text-slate-600"></i>
397
+ </div>
398
+ <h2 class="text-base font-semibold text-slate-900">Medical History</h2>
399
+ </div>
400
+
401
+ <div class="space-y-5">
402
+ <div>
403
+ <label class="block text-sm font-medium text-slate-700 mb-3">Current Medications</label>
404
+ <textarea
405
+ id="medications"
406
+ data-field="medical"
407
+ placeholder="List any medications you currently take (or write 'None')"
408
+ class="w-full h-20 px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg resize-none focus:outline-none input-field placeholder:text-slate-400"
409
+ ></textarea>
410
+ <div id="ai-medications" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
411
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
412
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
413
+ </div>
414
+ </div>
415
+
416
+ <div>
417
+ <label class="block text-sm font-medium text-slate-700 mb-3">Allergies</label>
418
+ <textarea
419
+ id="allergies"
420
+ data-field="medical"
421
+ placeholder="Medication allergies, food allergies, etc. (or write 'None known')"
422
+ class="w-full h-20 px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg resize-none focus:outline-none input-field placeholder:text-slate-400"
423
+ ></textarea>
424
+ <div id="ai-allergies" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
425
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
426
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
427
+ </div>
428
+ </div>
429
+
430
+ <div>
431
+ <label class="block text-sm font-medium text-slate-700 mb-3">Previous Surgeries or Hospitalizations</label>
432
+ <textarea
433
+ id="surgeries"
434
+ data-field="medical"
435
+ placeholder="Brief description and dates (or write 'None')"
436
+ class="w-full h-20 px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg resize-none focus:outline-none input-field placeholder:text-slate-400"
437
+ ></textarea>
438
+ <div id="ai-surgeries" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
439
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
440
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
441
+ </div>
442
+ </div>
443
+
444
+ <div>
445
+ <label class="block text-sm font-medium text-slate-700 mb-3">Family Medical History</label>
446
+ <textarea
447
+ id="familyHistory"
448
+ data-field="medical"
449
+ placeholder="Relevant conditions in immediate family (or write 'No significant history')"
450
+ class="w-full h-20 px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg resize-none focus:outline-none input-field placeholder:text-slate-400"
451
+ ></textarea>
452
+ <div id="ai-familyHistory" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
453
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
454
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
455
+ </div>
456
+ </div>
457
+ </div>
458
+ </section>
459
+
460
+ <!-- Section 4: Visit Details -->
461
+ <section class="form-section mb-6" data-section="visit">
462
+ <div class="flex items-center gap-2 mb-5">
463
+ <div class="w-8 h-8 rounded-lg bg-slate-100 flex items-center justify-center">
464
+ <i data-lucide="calendar" class="w-4 h-4 text-slate-600"></i>
465
+ </div>
466
+ <h2 class="text-base font-semibold text-slate-900">Visit Details</h2>
467
+ </div>
468
+
469
+ <div class="space-y-5">
470
+ <div>
471
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">Primary Reason for Visit</label>
472
+ <select
473
+ id="visitReason"
474
+ data-field="visit"
475
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field text-slate-600"
476
+ >
477
+ <option value="">Select reason</option>
478
+ <option value="annual">Annual Physical / Wellness Check</option>
479
+ <option value="follow-up">Follow-up Visit</option>
480
+ <option value="new-concern">New Health Concern</option>
481
+ <option value="chronic">Chronic Condition Management</option>
482
+ <option value="referral">Specialist Referral</option>
483
+ <option value="other">Other</option>
484
+ </select>
485
+ <div id="ai-visitReason" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
486
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
487
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
488
+ </div>
489
+ </div>
490
+
491
+ <div>
492
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">Preferred Appointment Date</label>
493
+ <input
494
+ type="date"
495
+ id="preferredDate"
496
+ data-field="visit"
497
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field text-slate-600"
498
+ >
499
+ <div id="ai-preferredDate" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
500
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
501
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
502
+ </div>
503
+ </div>
504
+
505
+ <div>
506
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">Preferred Time</label>
507
+ <select
508
+ id="preferredTime"
509
+ data-field="visit"
510
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field text-slate-600"
511
+ >
512
+ <option value="">Select time range</option>
513
+ <option value="morning">Morning (8am - 12pm)</option>
514
+ <option value="afternoon">Afternoon (12pm - 5pm)</option>
515
+ <option value="evening">Evening (5pm - 8pm)</option>
516
+ </select>
517
+ <div id="ai-preferredTime" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
518
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
519
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
520
+ </div>
521
+ </div>
522
+
523
+ <div>
524
+ <label class="block text-sm font-medium text-slate-700 mb-1.5">Additional Notes for Provider</label>
525
+ <textarea
526
+ id="providerNotes"
527
+ data-field="visit"
528
+ placeholder="Anything else we should know before your visit..."
529
+ class="w-full h-24 px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg resize-none focus:outline-none input-field placeholder:text-slate-400"
530
+ ></textarea>
531
+ <div id="ai-providerNotes" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
532
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
533
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
534
+ </div>
535
+ </div>
536
+
537
+ <!-- Insurance -->
538
+ <div class="pt-4 border-t border-slate-100">
539
+ <label class="block text-sm font-medium text-slate-700 mb-3">Insurance Information</label>
540
+ <div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
541
+ <div class="sm:col-span-2">
542
+ <input
543
+ type="text"
544
+ id="insuranceProvider"
545
+ data-field="visit"
546
+ placeholder="Insurance provider name"
547
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field placeholder:text-slate-400"
548
+ >
549
+ <div id="ai-insuranceProvider" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
550
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
551
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
552
+ </div>
553
+ </div>
554
+ <div>
555
+ <input
556
+ type="text"
557
+ id="policyNumber"
558
+ data-field="visit"
559
+ placeholder="Policy number"
560
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field placeholder:text-slate-400"
561
+ >
562
+ <div id="ai-policyNumber" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
563
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
564
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
565
+ </div>
566
+ </div>
567
+ <div>
568
+ <input
569
+ type="text"
570
+ id="groupNumber"
571
+ data-field="visit"
572
+ placeholder="Group number (if applicable)"
573
+ class="w-full px-3.5 py-2.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none input-field placeholder:text-slate-400"
574
+ >
575
+ <div id="ai-groupNumber" class="hidden ai-suggestion mt-1.5 flex items-center gap-2 text-xs text-[#0C8F8B] cursor-pointer hover:underline">
576
+ <i data-lucide="sparkles" class="w-3 h-3"></i>
577
+ <span>AI suggestion: <span class="ai-value font-medium"></span></span>
578
+ </div>
579
+ </div>
580
+ </div>
581
+ </div>
582
+ </div>
583
+ </section>
584
+
585
+ <!-- Consent -->
586
+ <div class="pt-6 border-t border-slate-100">
587
+ <label class="flex items-start gap-3 cursor-pointer">
588
+ <input
589
+ type="checkbox"
590
+ id="consent"
591
+ class="custom-checkbox w-5 h-5 mt-0.5 rounded border-slate-300 text-[#0C8F8B] focus:ring-[#0C8F8B] focus:ring-offset-0"
592
+ >
593
+ <span class="text-sm text-slate-600 leading-relaxed">
594
+ I consent to the collection and use of my health information for treatment purposes.
595
+ I understand my data is protected under HIPAA.
596
+ </span>
597
+ </label>
598
+ </div>
599
+
600
+ </div>
601
+ </main>
602
+
603
+ <!-- Sticky Footer -->
604
+ <footer class="sticky-footer fixed bottom-0 left-0 right-0 bg-white/95 backdrop-blur-sm border-t border-slate-200 z-50">
605
+ <div class="max-w-[720px] mx-auto px-4 sm:px-6 py-3 sm:py-4">
606
+ <div class="flex items-center justify-between gap-4">
607
+ <!-- Left: Save & Progress -->
608
+ <div class="flex items-center gap-4">
609
+ <button
610
+ id="saveLaterBtn"
611
+ class="btn-ghost hidden sm:flex items-center gap-2 px-4 py-2.5 text-sm font-medium text-slate-600 hover:text-slate-900 hover:bg-slate-100 rounded-lg transition-colors"
612
+ >
613
+ <i data-lucide="save" class="w-4 h-4"></i>
614
+ <span>Save and finish later</span>
615
+ </button>
616
+ <button
617
+ id="saveLaterBtnMobile"
618
+ class="btn-ghost sm:hidden flex items-center justify-center w-10 h-10 text-slate-600 hover:text-slate-900 hover:bg-slate-100 rounded-lg transition-colors"
619
+ aria-label="Save progress"
620
+ >
621
+ <i data-lucide="save" class="w-5 h-5"></i>
622
+ </button>
623
+ <div class="hidden sm:block h-6 w-px bg-slate-200"></div>
624
+ <div class="flex items-center gap-2 text-sm">
625
+ <div class="w-2 h-2 rounded-full bg-[#0C8F8B]" id="progressDot"></div>
626
+ <span class="text-slate-600" id="footerProgress">0% complete</span>
627
+ </div>
628
+ </div>
629
+
630
+ <!-- Right: CTA -->
631
+ <button
632
+ id="submitBtn"
633
+ class="btn-primary flex items-center gap-2 px-6 sm:px-8 py-2.5 sm:py-3 bg-[#0C8F8B] hover:bg-[#0A7F7B] text-white text-sm font-medium rounded-xl shadow-sm shadow-[#0C8F8B]/20"
634
+ >
635
+ <span id="ctaText">Continue</span>
636
+ <i data-lucide="arrow-right" class="w-4 h-4"></i>
637
+ </button>
638
+ </div>
639
+ </div>
640
+ </footer>
641
+
642
+ <!-- Success Modal -->
643
+ <div id="successModal" class="fixed inset-0 bg-black/40 backdrop-blur-sm z-50 hidden items-center justify-center p-4">
644
+ <div class="bg-white rounded-2xl p-8 max-w-md w-full text-center shadow-2xl">
645
+ <div class="w-16 h-16 mx-auto mb-4 rounded-full bg-[#0C8F8B]/10 flex items-center justify-center">
646
+ <i data-lucide="check-circle" class="w-8 h-8 text-[#0C8F8B]"></i>
647
+ </div>
648
+ <h3 class="text-xl font-semibold text-slate-900 mb-2">Intake Submitted</h3>
649
+ <p class="text-slate-600 mb-6">Your information has been securely transmitted. We'll contact you within 24 hours to confirm your appointment.</p>
650
+ <button
651
+ onclick="location.reload()"
652
+ class="w-full py-3 bg-[#0C8F8B] hover:bg-[#0A7F7B] text-white font-medium rounded-xl transition-colors"
653
+ >
654
+ Start New Intake
655
+ </button>
656
+ </div>
657
+ </div>
658
+
659
+ <!-- Save Later Modal -->
660
+ <div id="saveModal" class="fixed inset-0 bg-black/40 backdrop-blur-sm z-50 hidden items-center justify-center p-4">
661
+ <div class="bg-white rounded-2xl p-6 max-w-sm w-full shadow-2xl">
662
+ <h3 class="text-lg font-semibold text-slate-900 mb-2">Progress Saved</h3>
663
+ <p class="text-sm text-slate-600 mb-4">We've saved your progress. A secure link has been sent to your email to continue later.</p>
664
+ <button
665
+ onclick="document.getElementById('saveModal').classList.add('hidden'); document.getElementById('saveModal').classList.remove('flex');"
666
+ class="w-full py-2.5 bg-slate-100 hover:bg-slate-200 text-slate-900 font-medium rounded-lg transition-colors"
667
+ >
668
+ Got it
669
+ </button>
670
+ </div>
671
+ </div>
672
+
673
+ </div>
674
+
675
+ <script>
676
+ // Initialize Lucide icons
677
+ lucide.createIcons();
678
+
679
+ // Form state
680
+ const formState = {
681
+ personal: ['fullName', 'dob', 'gender', 'ssn'],
682
+ contact: ['email', 'phone', 'preferredContact', 'address', 'city', 'state', 'zip'],
683
+ medical: ['medications', 'allergies', 'surgeries', 'familyHistory'],
684
+ visit: ['visitReason', 'preferredDate', 'preferredTime', 'providerNotes', 'insuranceProvider', 'policyNumber', 'groupNumber']
685
+ };
686
+
687
+ const allFields = Object.values(formState).flat();
688
+ let filledFields = new Set();
689
+
690
+ // AI parsing simulation
691
+ const aiPatterns = {
692
+ fullName: /([A-Z][a-z]+ [A-Z][a-z]+)/,
693
+ dob: /(\d{1,2}\/\d{1,2}\/\d{4}|\d{4}-\d{2}-\d{2})/,
694
+ email: /([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/,
695
+ phone: /(\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4})/,
696
+ ssn: /(\d{3}-?\d{2}-?\d{4})/,
697
+ address: /(\d+\s+[A-Za-z\s]+(?:Street|St|Avenue|Ave|Road|Rd|Boulevard|Blvd|Drive|Dr|Lane|Ln|Way)\.?)/i,
698
+ city: /([A-Za-z\s]+),\s*[A-Z]{2}/,
699
+ state: /,\s*([A-Z]{2})\s*\d{5}/,
700
+ zip: /(\d{5}(?:-\d{4})?)/,
701
+ medications: /(?:medication|medications|meds?):?\s*([^.]+)/i,
702
+ allergies: /(?:allerg(?:y|ies)|allergic to):?\s*([^.]+)/i
703
+ };
704
+
705
+ // Update progress
706
+ function updateProgress() {
707
+ const totalFields = allFields.length;
708
+ const filled = allFields.filter(id => {
709
+ const el = document.getElementById(id);
710
+ return el && el.value.trim().length > 0;
711
+ }).length;
712
+
713
+ const percentage = Math.round((filled / totalFields) * 100);
714
+
715
+ document.getElementById('progressBar').style.width = `${percentage}%`;
716
+ document.getElementById('progressText').textContent = `${percentage}% complete`;
717
+ document.getElementById('footerProgress').textContent = `${percentage}% complete`;
718
+
719
+ // Update CTA text based on progress
720
+ const ctaText = document.getElementById('ctaText');
721
+ if (percentage === 100) {
722
+ ctaText.textContent = 'Submit Intake';
723
+ } else if (percentage > 50) {
724
+ ctaText.textContent = 'Continue';
725
+ } else {
726
+ ctaText.textContent = 'Continue';
727
+ }
728
+
729
+ // Update progress dot color
730
+ const dot = document.getElementById('progressDot');
731
+ if (percentage === 100) {
732
+ dot.className = 'w-2 h-2 rounded-full bg-green-500';
733
+ } else if (percentage > 50) {
734
+ dot.className = 'w-2 h-2 rounded-full bg-[#0C8F8B]';
735
+ } else {
736
+ dot.className = 'w-2 h-2 rounded-full bg-amber-400';
737
+ }
738
+ }
739
+
740
+ // Attach listeners to all fields
741
+ allFields.forEach(fieldId => {
742
+ const el = document.getElementById(fieldId);
743
+ if (el) {
744
+ el.addEventListener('input', updateProgress);
745
+ el.addEventListener('change', updateProgress);
746
+ }
747
+ });
748
+
749
+ // AI Process button
750
+ document.getElementById('aiProcessBtn').addEventListener('click', async () => {
751
+ const input = document.getElementById('aiInput').value.trim();
752
+ if (!input) return;
753
+
754
+ const status = document.getElementById('aiStatus');
755
+ status.classList.remove('hidden');
756
+
757
+ // Simulate AI processing delay
758
+ await new Promise(r => setTimeout(r, 1500));
759
+
760
+ // Parse and suggest
761
+ const suggestions = {};
762
+
763
+ if (input.includes('Sarah') || input.includes('sarah')) {
764
+ suggestions.fullName = 'Sarah Johnson';
765
+ } else if (input.includes('Michael') || input.includes('michael')) {
766
+ suggestions.fullName = 'Michael Chen';
767
+ } else if (input.includes('Emma') || input.includes('emma')) {
768
+ suggestions.fullName = 'Emma Rodriguez';
769
+ }
770
+
771
+ if (input.match(/\d{1,2}\/\d{1,2}\/1985/) || input.includes('1985')) {
772
+ suggestions.dob = '1985-03-15';
773
+ } else if (input.match(/\d{1,2}\/\d{1,2}\/1990/) || input.includes('1990')) {
774
+ suggestions.dob = '1990-07-22';
775
+ }
776
+
777
+ if (input.includes('@')) {
778
+ const emailMatch = input.match(aiPatterns.email);
779
+ if (emailMatch) suggestions.email = emailMatch[1];
780
+ }
781
+
782
+ if (input.match(/\d{3}[-.]?\d{3}[-.]?\d{4}/)) {
783
+ const phoneMatch = input.match(aiPatterns.phone);
784
+ if (phoneMatch) suggestions.phone = phoneMatch[1].replace(/\D/g, '').replace(/(\d{3})(\d{3})(\d{4})/, '($1) $2-$3');
785
+ }
786
+
787
+ if (input.includes('123 Main') || input.includes('main street')) {
788
+ suggestions.address = '123 Main Street';
789
+ suggestions.city = 'San Francisco';
790
+ suggestions.state = 'CA';
791
+ suggestions.zip = '94102';
792
+ }
793
+
794
+ if (input.toLowerCase().includes('female') || input.includes('woman')) {
795
+ suggestions.gender = 'female';
796
+ } else if (input.toLowerCase().includes('male') || input.includes('man')) {
797
+ suggestions.gender = 'male';
798
+ }
799
+
800
+ if (input.includes('Blue Cross') || input.includes('BCBS')) {
801
+ suggestions.insuranceProvider = 'Blue Cross Blue Shield';
802
+ suggestions.policyNumber = 'BCB123456789';
803
+ }
804
+
805
+ // Show suggestions
806
+ Object.entries(suggestions).forEach(([field, value]) => {
807
+ const suggestionEl = document.getElementById(`ai-${field}`);
808
+ if (suggestionEl && !document.getElementById(field).value) {
809
+ suggestionEl.querySelector('.ai-value').textContent = value;
810
+ suggestionEl.classList.remove('hidden');
811
+ suggestionEl.onclick = () => {
812
+ document.getElementById(field).value = value;
813
+ suggestionEl.classList.add('hidden');
814
+ updateProgress();
815
+ // Trigger input event for any listeners
816
+ document.getElementById(field).dispatchEvent(new Event('input'));
817
+ };
818
+ }
819
+ });
820
+
821
+ status.classList.add('hidden');
822
+
823
+ // Clear input
824
+ document.getElementById('aiInput').value = '';
825
+ });
826
+
827
+ // Save later buttons
828
+ function showSaveModal() {
829
+ const modal = document.getElementById('saveModal');
830
+ modal.classList.remove('hidden');
831
+ modal.classList.add('flex');
832
+ }
833
+
834
+ document.getElementById('saveLaterBtn').addEventListener('click', showSaveModal);
835
+ document.getElementById('saveLaterBtnMobile').addEventListener('click', showSaveModal);
836
+
837
+ // Submit button
838
+ document.getElementById('submitBtn').addEventListener('click', () => {
839
+ const modal = document.getElementById('successModal');
840
+ modal.classList.remove('hidden');
841
+ modal.classList.add('flex');
842
+ });
843
+
844
+ // Close modals on backdrop click
845
+ document.getElementById('successModal').addEventListener('click', (e) => {
846
+ if (e.target === e.currentTarget) {
847
+ e.target.classList.add('hidden');
848
+ e.target.classList.remove('flex');
849
+ }
850
+ });
851
+
852
+ // Initialize progress
853
+ updateProgress();
854
+
855
+ // Handle input focus to ensure visibility above sticky footer
856
+ const inputs = document.querySelectorAll('input, textarea, select');
857
+ inputs.forEach(input => {
858
+ input.addEventListener('focus', () => {
859
+ setTimeout(() => {
860
+ const rect = input.getBoundingClientRect();
861
+ const footerHeight = 80;
862
+ const viewportHeight = window.innerHeight;
863
+
864
+ if (rect.bottom > viewportHeight - footerHeight) {
865
+ const scrollAmount = rect.bottom - (viewportHeight - footerHeight) + 20;
866
+ window.scrollBy({ top: scrollAmount, behavior: 'smooth' });
867
+ }
868
+ }, 100);
869
+ });
870
+ });
871
+ </script>
872
+ <script src="https://deepsite.hf.co/deepsite-badge.js"></script>
873
+ </body>
874
+ </html>