Cezarxil commited on
Commit
52a63ef
·
verified ·
1 Parent(s): df6506c

Make me a small simple app for keeping track of clients for a beauty salon. The salon is for laser hair removal services. Make it friendly, minimal and to have a drop-down button that can open a calendar but still remain on the same page. - Initial Deployment

Browse files
Files changed (2) hide show
  1. README.md +7 -5
  2. index.html +421 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Client App
3
- emoji: 👁
4
- colorFrom: blue
5
- colorTo: indigo
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: client-app
3
+ emoji: 🐳
4
+ colorFrom: red
5
+ colorTo: red
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,421 @@
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">
6
+ <title>Luminous Laser - Client Management</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ /* Custom scrollbar */
11
+ ::-webkit-scrollbar {
12
+ width: 8px;
13
+ }
14
+ ::-webkit-scrollbar-track {
15
+ background: #f8fafc;
16
+ }
17
+ ::-webkit-scrollbar-thumb {
18
+ background: #cbd5e1;
19
+ border-radius: 4px;
20
+ }
21
+ ::-webkit-scrollbar-thumb:hover {
22
+ background: #94a3b8;
23
+ }
24
+
25
+ /* Calendar animation */
26
+ @keyframes fadeIn {
27
+ from { opacity: 0; transform: translateY(-10px); }
28
+ to { opacity: 1; transform: translateY(0); }
29
+ }
30
+
31
+ .calendar-dropdown {
32
+ animation: fadeIn 0.2s ease-out;
33
+ }
34
+
35
+ /* Pulse animation for active treatments */
36
+ @keyframes pulse {
37
+ 0% { box-shadow: 0 0 0 0 rgba(168, 85, 247, 0.4); }
38
+ 70% { box-shadow: 0 0 0 10px rgba(168, 85, 247, 0); }
39
+ 100% { box-shadow: 0 0 0 0 rgba(168, 85, 247, 0); }
40
+ }
41
+
42
+ .active-treatment {
43
+ animation: pulse 2s infinite;
44
+ }
45
+ </style>
46
+ </head>
47
+ <body class="bg-rose-50 font-sans">
48
+ <div class="min-h-screen flex flex-col">
49
+ <!-- Header -->
50
+ <header class="bg-gradient-to-r from-purple-600 to-pink-500 text-white shadow-lg">
51
+ <div class="container mx-auto px-4 py-6">
52
+ <div class="flex justify-between items-center">
53
+ <div class="flex items-center space-x-3">
54
+ <i class="fas fa-bolt text-2xl"></i>
55
+ <h1 class="text-2xl font-bold">Luminous Laser</h1>
56
+ </div>
57
+ <div class="flex items-center space-x-4">
58
+ <button class="bg-white text-purple-600 px-4 py-2 rounded-full font-medium hover:bg-purple-50 transition">
59
+ <i class="fas fa-plus mr-2"></i>New Client
60
+ </button>
61
+ <div class="w-10 h-10 rounded-full bg-white flex items-center justify-center text-purple-600 font-bold">
62
+ <i class="fas fa-user"></i>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ </div>
67
+ </header>
68
+
69
+ <!-- Main Content -->
70
+ <main class="flex-grow container mx-auto px-4 py-8">
71
+ <div class="grid grid-cols-1 lg:grid-cols-4 gap-6">
72
+ <!-- Sidebar -->
73
+ <div class="lg:col-span-1 bg-white rounded-xl shadow-md p-6 h-fit">
74
+ <div class="mb-6">
75
+ <h2 class="text-xl font-semibold text-gray-800 mb-4">Quick Stats</h2>
76
+ <div class="space-y-4">
77
+ <div class="bg-purple-50 p-4 rounded-lg">
78
+ <p class="text-sm text-purple-600">Total Clients</p>
79
+ <p class="text-2xl font-bold text-purple-800">142</p>
80
+ </div>
81
+ <div class="bg-pink-50 p-4 rounded-lg">
82
+ <p class="text-sm text-pink-600">Appointments Today</p>
83
+ <p class="text-2xl font-bold text-pink-800">8</p>
84
+ </div>
85
+ <div class="bg-rose-50 p-4 rounded-lg">
86
+ <p class="text-sm text-rose-600">Follow-ups Needed</p>
87
+ <p class="text-2xl font-bold text-rose-800">12</p>
88
+ </div>
89
+ </div>
90
+ </div>
91
+
92
+ <div>
93
+ <h2 class="text-xl font-semibold text-gray-800 mb-4">Quick Actions</h2>
94
+ <div class="space-y-3">
95
+ <button class="w-full flex items-center space-x-3 bg-gray-100 hover:bg-gray-200 p-3 rounded-lg transition">
96
+ <i class="fas fa-calendar-check text-purple-600"></i>
97
+ <span>Schedule Appointment</span>
98
+ </button>
99
+ <button class="w-full flex items-center space-x-3 bg-gray-100 hover:bg-gray-200 p-3 rounded-lg transition">
100
+ <i class="fas fa-bell text-pink-600"></i>
101
+ <span>Send Reminders</span>
102
+ </button>
103
+ <button class="w-full flex items-center space-x-3 bg-gray-100 hover:bg-gray-200 p-3 rounded-lg transition">
104
+ <i class="fas fa-chart-line text-rose-600"></i>
105
+ <span>View Reports</span>
106
+ </button>
107
+ </div>
108
+ </div>
109
+ </div>
110
+
111
+ <!-- Main Panel -->
112
+ <div class="lg:col-span-3 space-y-6">
113
+ <!-- Search and Filter -->
114
+ <div class="bg-white rounded-xl shadow-md p-6">
115
+ <div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4">
116
+ <div class="relative flex-grow">
117
+ <i class="fas fa-search absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400"></i>
118
+ <input type="text" placeholder="Search clients..." class="w-full pl-10 pr-4 py-2 border border-gray-200 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-transparent">
119
+ </div>
120
+ <div class="flex space-x-3">
121
+ <div class="relative">
122
+ <button id="dateDropdownButton" class="flex items-center space-x-2 bg-gray-100 hover:bg-gray-200 px-4 py-2 rounded-lg transition">
123
+ <i class="fas fa-calendar-alt text-purple-600"></i>
124
+ <span>Select Date</span>
125
+ <i class="fas fa-chevron-down text-xs"></i>
126
+ </button>
127
+ <div id="dateDropdown" class="hidden absolute right-0 mt-2 w-72 bg-white rounded-lg shadow-xl z-10 calendar-dropdown p-4 border border-gray-200">
128
+ <div class="flex justify-between items-center mb-4">
129
+ <button class="text-gray-500 hover:text-gray-700">
130
+ <i class="fas fa-chevron-left"></i>
131
+ </button>
132
+ <h3 class="font-medium">June 2023</h3>
133
+ <button class="text-gray-500 hover:text-gray-700">
134
+ <i class="fas fa-chevron-right"></i>
135
+ </button>
136
+ </div>
137
+ <div class="grid grid-cols-7 gap-1 text-center">
138
+ <div class="text-sm font-medium text-gray-500 py-1">Sun</div>
139
+ <div class="text-sm font-medium text-gray-500 py-1">Mon</div>
140
+ <div class="text-sm font-medium text-gray-500 py-1">Tue</div>
141
+ <div class="text-sm font-medium text-gray-500 py-1">Wed</div>
142
+ <div class="text-sm font-medium text-gray-500 py-1">Thu</div>
143
+ <div class="text-sm font-medium text-gray-500 py-1">Fri</div>
144
+ <div class="text-sm font-medium text-gray-500 py-1">Sat</div>
145
+
146
+ <!-- Calendar days -->
147
+ <div class="py-1 text-gray-400">28</div>
148
+ <div class="py-1 text-gray-400">29</div>
149
+ <div class="py-1 text-gray-400">30</div>
150
+ <div class="py-1 text-gray-400">31</div>
151
+ <div class="py-1">1</div>
152
+ <div class="py-1">2</div>
153
+ <div class="py-1">3</div>
154
+
155
+ <div class="py-1">4</div>
156
+ <div class="py-1">5</div>
157
+ <div class="py-1">6</div>
158
+ <div class="py-1">7</div>
159
+ <div class="py-1">8</div>
160
+ <div class="py-1">9</div>
161
+ <div class="py-1">10</div>
162
+
163
+ <div class="py-1">11</div>
164
+ <div class="py-1">12</div>
165
+ <div class="py-1">13</div>
166
+ <div class="py-1">14</div>
167
+ <div class="py-1">15</div>
168
+ <div class="py-1">16</div>
169
+ <div class="py-1">17</div>
170
+
171
+ <div class="py-1">18</div>
172
+ <div class="py-1">19</div>
173
+ <div class="py-1">20</div>
174
+ <div class="py-1">21</div>
175
+ <div class="py-1">22</div>
176
+ <div class="py-1">23</div>
177
+ <div class="py-1">24</div>
178
+
179
+ <div class="py-1">25</div>
180
+ <div class="py-1">26</div>
181
+ <div class="py-1">27</div>
182
+ <div class="py-1">28</div>
183
+ <div class="py-1">29</div>
184
+ <div class="py-1">30</div>
185
+ <div class="py-1 text-gray-400">1</div>
186
+ </div>
187
+ <div class="mt-4 flex justify-between">
188
+ <button class="text-sm text-gray-500 hover:text-gray-700">Today</button>
189
+ <button class="text-sm text-purple-600 hover:text-purple-800 font-medium">Apply</button>
190
+ </div>
191
+ </div>
192
+ </div>
193
+ <button class="flex items-center space-x-2 bg-purple-600 hover:bg-purple-700 text-white px-4 py-2 rounded-lg transition">
194
+ <i class="fas fa-filter"></i>
195
+ <span>Filter</span>
196
+ </button>
197
+ </div>
198
+ </div>
199
+ </div>
200
+
201
+ <!-- Client List -->
202
+ <div class="bg-white rounded-xl shadow-md overflow-hidden">
203
+ <div class="p-6 border-b border-gray-200">
204
+ <h2 class="text-xl font-semibold text-gray-800">Recent Clients</h2>
205
+ </div>
206
+
207
+ <div class="divide-y divide-gray-200 max-h-[500px] overflow-y-auto">
208
+ <!-- Client Card 1 -->
209
+ <div class="p-6 hover:bg-purple-50 transition cursor-pointer">
210
+ <div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4">
211
+ <div class="flex items-center space-x-4">
212
+ <div class="w-12 h-12 rounded-full bg-purple-100 flex items-center justify-center text-purple-600 font-bold">
213
+ <i class="fas fa-user"></i>
214
+ </div>
215
+ <div>
216
+ <h3 class="font-medium text-gray-800">Sarah Johnson</h3>
217
+ <p class="text-sm text-gray-500">Last visit: 2 days ago</p>
218
+ </div>
219
+ </div>
220
+ <div class="flex items-center space-x-4">
221
+ <div class="hidden md:block">
222
+ <p class="text-sm text-gray-500">Treatment Area</p>
223
+ <p class="font-medium">Underarms</p>
224
+ </div>
225
+ <div class="hidden md:block">
226
+ <p class="text-sm text-gray-500">Sessions</p>
227
+ <p class="font-medium">3/6</p>
228
+ </div>
229
+ <div class="bg-purple-100 text-purple-800 px-3 py-1 rounded-full text-sm font-medium">
230
+ Active
231
+ </div>
232
+ <button class="text-gray-400 hover:text-purple-600">
233
+ <i class="fas fa-ellipsis-v"></i>
234
+ </button>
235
+ </div>
236
+ </div>
237
+ </div>
238
+
239
+ <!-- Client Card 2 -->
240
+ <div class="p-6 hover:bg-purple-50 transition cursor-pointer">
241
+ <div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4">
242
+ <div class="flex items-center space-x-4">
243
+ <div class="w-12 h-12 rounded-full bg-pink-100 flex items-center justify-center text-pink-600 font-bold">
244
+ <i class="fas fa-user"></i>
245
+ </div>
246
+ <div>
247
+ <h3 class="font-medium text-gray-800">Michael Chen</h3>
248
+ <p class="text-sm text-gray-500">Last visit: 1 week ago</p>
249
+ </div>
250
+ </div>
251
+ <div class="flex items-center space-x-4">
252
+ <div class="hidden md:block">
253
+ <p class="text-sm text-gray-500">Treatment Area</p>
254
+ <p class="font-medium">Full Legs</p>
255
+ </div>
256
+ <div class="hidden md:block">
257
+ <p class="text-sm text-gray-500">Sessions</p>
258
+ <p class="font-medium">5/8</p>
259
+ </div>
260
+ <div class="bg-pink-100 text-pink-800 px-3 py-1 rounded-full text-sm font-medium">
261
+ Follow-up
262
+ </div>
263
+ <button class="text-gray-400 hover:text-pink-600">
264
+ <i class="fas fa-ellipsis-v"></i>
265
+ </button>
266
+ </div>
267
+ </div>
268
+ </div>
269
+
270
+ <!-- Client Card 3 -->
271
+ <div class="p-6 hover:bg-purple-50 transition cursor-pointer active-treatment">
272
+ <div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4">
273
+ <div class="flex items-center space-x-4">
274
+ <div class="w-12 h-12 rounded-full bg-rose-100 flex items-center justify-center text-rose-600 font-bold">
275
+ <i class="fas fa-user"></i>
276
+ </div>
277
+ <div>
278
+ <h3 class="font-medium text-gray-800">Emily Rodriguez</h3>
279
+ <p class="text-sm text-gray-500">Appointment today</p>
280
+ </div>
281
+ </div>
282
+ <div class="flex items-center space-x-4">
283
+ <div class="hidden md:block">
284
+ <p class="text-sm text-gray-500">Treatment Area</p>
285
+ <p class="font-medium">Brazilian</p>
286
+ </div>
287
+ <div class="hidden md:block">
288
+ <p class="text-sm text-gray-500">Sessions</p>
289
+ <p class="font-medium">2/6</p>
290
+ </div>
291
+ <div class="bg-rose-100 text-rose-800 px-3 py-1 rounded-full text-sm font-medium">
292
+ Today
293
+ </div>
294
+ <button class="text-gray-400 hover:text-rose-600">
295
+ <i class="fas fa-ellipsis-v"></i>
296
+ </button>
297
+ </div>
298
+ </div>
299
+ </div>
300
+
301
+ <!-- Client Card 4 -->
302
+ <div class="p-6 hover:bg-purple-50 transition cursor-pointer">
303
+ <div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4">
304
+ <div class="flex items-center space-x-4">
305
+ <div class="w-12 h-12 rounded-full bg-indigo-100 flex items-center justify-center text-indigo-600 font-bold">
306
+ <i class="fas fa-user"></i>
307
+ </div>
308
+ <div>
309
+ <h3 class="font-medium text-gray-800">David Wilson</h3>
310
+ <p class="text-sm text-gray-500">Last visit: 3 weeks ago</p>
311
+ </div>
312
+ </div>
313
+ <div class="flex items-center space-x-4">
314
+ <div class="hidden md:block">
315
+ <p class="text-sm text-gray-500">Treatment Area</p>
316
+ <p class="font-medium">Back</p>
317
+ </div>
318
+ <div class="hidden md:block">
319
+ <p class="text-sm text-gray-500">Sessions</p>
320
+ <p class="font-medium">6/6</p>
321
+ </div>
322
+ <div class="bg-indigo-100 text-indigo-800 px-3 py-1 rounded-full text-sm font-medium">
323
+ Completed
324
+ </div>
325
+ <button class="text-gray-400 hover:text-indigo-600">
326
+ <i class="fas fa-ellipsis-v"></i>
327
+ </button>
328
+ </div>
329
+ </div>
330
+ </div>
331
+
332
+ <!-- Client Card 5 -->
333
+ <div class="p-6 hover:bg-purple-50 transition cursor-pointer">
334
+ <div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4">
335
+ <div class="flex items-center space-x-4">
336
+ <div class="w-12 h-12 rounded-full bg-amber-100 flex items-center justify-center text-amber-600 font-bold">
337
+ <i class="fas fa-user"></i>
338
+ </div>
339
+ <div>
340
+ <h3 class="font-medium text-gray-800">Jennifer Lee</h3>
341
+ <p class="text-sm text-gray-500">Last visit: 1 month ago</p>
342
+ </div>
343
+ </div>
344
+ <div class="flex items-center space-x-4">
345
+ <div class="hidden md:block">
346
+ <p class="text-sm text-gray-500">Treatment Area</p>
347
+ <p class="font-medium">Face</p>
348
+ </div>
349
+ <div class="hidden md:block">
350
+ <p class="text-sm text-gray-500">Sessions</p>
351
+ <p class="font-medium">4/8</p>
352
+ </div>
353
+ <div class="bg-amber-100 text-amber-800 px-3 py-1 rounded-full text-sm font-medium">
354
+ Paused
355
+ </div>
356
+ <button class="text-gray-400 hover:text-amber-600">
357
+ <i class="fas fa-ellipsis-v"></i>
358
+ </button>
359
+ </div>
360
+ </div>
361
+ </div>
362
+ </div>
363
+ </div>
364
+ </div>
365
+ </div>
366
+ </main>
367
+
368
+ <!-- Footer -->
369
+ <footer class="bg-white border-t border-gray-200 py-6">
370
+ <div class="container mx-auto px-4">
371
+ <div class="flex flex-col md:flex-row justify-between items-center">
372
+ <div class="flex items-center space-x-2 mb-4 md:mb-0">
373
+ <i class="fas fa-bolt text-purple-600"></i>
374
+ <span class="font-medium">Luminous Laser</span>
375
+ </div>
376
+ <div class="flex space-x-6">
377
+ <a href="#" class="text-gray-500 hover:text-purple-600 transition">Privacy</a>
378
+ <a href="#" class="text-gray-500 hover:text-purple-600 transition">Terms</a>
379
+ <a href="#" class="text-gray-500 hover:text-purple-600 transition">Help</a>
380
+ </div>
381
+ <div class="mt-4 md:mt-0 text-sm text-gray-500">
382
+ © 2023 Luminous Laser. All rights reserved.
383
+ </div>
384
+ </div>
385
+ </div>
386
+ </footer>
387
+ </div>
388
+
389
+ <script>
390
+ // Toggle calendar dropdown
391
+ const dateDropdownButton = document.getElementById('dateDropdownButton');
392
+ const dateDropdown = document.getElementById('dateDropdown');
393
+
394
+ dateDropdownButton.addEventListener('click', function() {
395
+ dateDropdown.classList.toggle('hidden');
396
+ });
397
+
398
+ // Close dropdown when clicking outside
399
+ document.addEventListener('click', function(event) {
400
+ if (!dateDropdownButton.contains(event.target) && !dateDropdown.contains(event.target)) {
401
+ dateDropdown.classList.add('hidden');
402
+ }
403
+ });
404
+
405
+ // Sample client data (would normally come from a database)
406
+ const clients = [
407
+ { name: "Sarah Johnson", lastVisit: "2 days ago", area: "Underarms", sessions: "3/6", status: "Active" },
408
+ { name: "Michael Chen", lastVisit: "1 week ago", area: "Full Legs", sessions: "5/8", status: "Follow-up" },
409
+ { name: "Emily Rodriguez", lastVisit: "Appointment today", area: "Brazilian", sessions: "2/6", status: "Today" },
410
+ { name: "David Wilson", lastVisit: "3 weeks ago", area: "Back", sessions: "6/6", status: "Completed" },
411
+ { name: "Jennifer Lee", lastVisit: "1 month ago", area: "Face", sessions: "4/8", status: "Paused" }
412
+ ];
413
+
414
+ // You would typically have more JavaScript here to:
415
+ // 1. Fetch client data from an API
416
+ // 2. Handle form submissions
417
+ // 3. Manage the calendar functionality
418
+ // 4. Implement search/filter functionality
419
+ </script>
420
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Cezarxil/client-app" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
421
+ </html>