-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathos.html
More file actions
599 lines (523 loc) · 38.9 KB
/
os.html
File metadata and controls
599 lines (523 loc) · 38.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GTS Alpha - IoT OS & Connectivity</title>
<!-- Tailwind CSS CDN -->
<script src="https://cdn.tailwindcss.com"></script>
<!-- Lucide Icons -->
<script src="https://unpkg.com/lucide@latest"></script>
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Sarabun:wght@300;400;500;700&display=swap" rel="stylesheet">
<!-- Custom Styles & Animations -->
<style>
body {
font-family: 'Sarabun', sans-serif;
background-color: #f3f4f6; /* bg-gray-100 */
}
/* Custom Animations */
@keyframes slide-up {
from { transform: translateY(100%); opacity: 0; }
to { transform: translateY(0); opacity: 1; }
}
@keyframes slide-down {
from { transform: translateY(-20px); opacity: 0; }
to { transform: translateY(0); opacity: 1; }
}
@keyframes fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes float {
0%, 100% { transform: translateY(0) translateX(-50%); }
50% { transform: translateY(-10px) translateX(-50%); }
}
@keyframes pulse-slow {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
.animate-slide-up { animation: slide-up 0.5s ease-out forwards; }
.animate-slide-down { animation: slide-down 0.3s ease-out forwards; }
.animate-fade-in { animation: fade-in 0.5s ease-out forwards; }
.animate-float { animation: float 3s ease-in-out infinite; }
.animate-pulse-slow { animation: pulse-slow 3s ease-in-out infinite; }
/* Utilities */
.pb-safe { padding-bottom: env(safe-area-inset-bottom); }
/* Hide scrollbar for clean UI */
.no-scrollbar::-webkit-scrollbar {
display: none;
}
.no-scrollbar {
-ms-overflow-style: none;
scrollbar-width: none;
}
</style>
</head>
<body class="text-gray-800">
<div id="app-container" class="min-h-screen max-w-md mx-auto bg-gray-100 relative shadow-2xl overflow-hidden">
<!-- ==================== 1. LOGIN SCREEN ==================== -->
<div id="screen-login" class="absolute inset-0 z-50 bg-white flex flex-col items-center px-6 pt-20 pb-10 overflow-hidden transition-opacity duration-500">
<!-- Background Blobs -->
<div class="absolute top-[-10%] right-[-20%] w-64 h-64 bg-blue-100 rounded-full blur-3xl opacity-60"></div>
<div class="absolute bottom-[-10%] left-[-20%] w-64 h-64 bg-green-50 rounded-full blur-3xl opacity-60"></div>
<div class="z-10 w-full max-w-sm flex flex-col items-center text-center mt-10">
<div class="w-24 h-24 bg-gradient-to-tr from-blue-600 to-blue-400 rounded-3xl flex items-center justify-center shadow-lg shadow-blue-200 mb-8 transform rotate-3">
<i data-lucide="wifi" class="text-white w-12 h-12"></i>
</div>
<h1 class="text-3xl font-extrabold text-gray-900 mb-2">GTS Alpha</h1>
<p class="text-gray-500 mb-12">IoT OS & Connectivity</p>
<button onclick="handleLogin()" id="btn-login" class="w-full py-4 rounded-2xl text-white font-bold text-lg flex items-center justify-center gap-3 shadow-lg transition-all active:scale-95 bg-[#06C755] hover:bg-[#05b34c]">
เข้าสู่ระบบด้วย LINE
</button>
</div>
</div>
<!-- ==================== 2. IMPORT SCREEN ==================== -->
<div id="screen-import" class="absolute inset-0 z-40 bg-gray-50 flex flex-col justify-center items-center px-6 hidden transition-opacity duration-500">
<div class="w-full max-w-sm bg-white p-6 rounded-3xl shadow-xl border border-gray-100 text-center">
<div id="import-content">
<div class="mb-6 flex items-center justify-center gap-3 text-gray-800">
<i data-lucide="link" class="text-blue-600"></i>
<h2 class="text-xl font-bold">Connect Source</h2>
</div>
<div class="mb-6 text-left">
<label class="block text-xs font-bold text-gray-500 mb-2 ml-1">SOURCE URL</label>
<input type="text" value="https://www.1nce.com/th-th/1nce-connect" class="w-full p-4 bg-gray-50 rounded-xl border border-gray-200 text-sm text-gray-600 focus:outline-none focus:ring-2 focus:ring-blue-500 break-all">
</div>
<button onclick="handleImport()" class="w-full py-4 bg-blue-600 text-white font-bold rounded-xl shadow-lg flex items-center justify-center gap-2 hover:bg-blue-700 active:scale-95 transition-transform">
<i data-lucide="download" size="20"></i> Sync & Build App
</button>
</div>
<!-- Loading State (Hidden by default) -->
<div id="import-loading" class="py-10 hidden">
<i data-lucide="activity" class="mx-auto text-blue-600 animate-pulse mb-4 w-12 h-12"></i>
<h3 class="text-lg font-bold text-gray-800">Installing OS...</h3>
</div>
</div>
</div>
<!-- ==================== 3. MAIN APP SCREEN ==================== -->
<div id="screen-app" class="hidden min-h-screen bg-gray-100 pb-24 animate-fade-in relative">
<!-- Header -->
<header class="bg-white px-4 py-3 flex justify-between items-center sticky top-0 z-40 shadow-sm">
<div class="flex items-center gap-2">
<div class="bg-blue-600 text-white p-1.5 rounded-lg"><i data-lucide="globe" class="w-5 h-5"></i></div>
<span class="font-bold text-lg text-gray-900 tracking-tight">GTS Alpha <span class="text-blue-600 text-xs uppercase bg-blue-50 px-1 rounded">OS</span></span>
</div>
<div class="flex items-center gap-3">
<div class="relative p-2 cursor-pointer" onclick="toggleCart(true)">
<i data-lucide="shopping-cart" class="text-gray-600 w-6 h-6"></i>
<span id="cart-badge" class="absolute top-0 right-0 bg-red-500 text-white text-[10px] font-bold w-4 h-4 flex items-center justify-center rounded-full hidden">0</span>
</div>
<button onclick="toggleMenu(true)"><i data-lucide="menu" class="text-gray-600 w-6 h-6"></i></button>
</div>
</header>
<!-- TABS CONTENT AREA -->
<div id="content-area" class="pb-8">
<!-- TAB 1: SHOP VIEW -->
<div id="tab-shop" class="animate-slide-up block">
<div class="bg-white p-6 pt-8 pb-10 rounded-b-3xl shadow-sm mb-4">
<h1 class="text-3xl font-extrabold text-gray-900 leading-tight mb-2">IoT Connectivity<br /><span class="text-blue-600">แบบ Flat Rate</span></h1>
<p class="text-gray-500 mb-8 text-sm">เชื่อมต่อทั่วโลก 10 ปี จ่ายครั้งเดียวจบ (Imported from 1NCE)</p>
<!-- SIM Card Graphic -->
<div class="flex justify-center mb-10">
<div class="relative w-72 h-44 bg-gradient-to-br from-gray-100 to-white rounded-xl shadow-2xl border border-gray-200 overflow-hidden transform rotate-1 hover:rotate-0 transition-all duration-500">
<div class="absolute inset-0 opacity-50 bg-[radial-gradient(#e5e7eb_1px,transparent_1px)]" style="background-size: 8px 8px;"></div>
<!-- Chip -->
<div class="absolute top-1/2 left-10 transform -translate-y-1/2 w-14 h-20 bg-gradient-to-br from-[#FFD700] via-[#FDB931] to-[#D4AF37] rounded-md shadow-md border border-[#C5A028] flex flex-col justify-between p-[2px]">
<div class="h-[30%] w-full border-b border-[#B8860B]/40"></div>
<div class="h-[30%] w-full border-t border-[#B8860B]/40"></div>
<div class="absolute top-0 left-1/2 w-[1px] h-full bg-[#B8860B]/40 transform -translate-x-1/2"></div>
<div class="absolute top-1/2 left-0 w-full h-[1px] bg-[#B8860B]/40 transform -translate-y-1/2"></div>
</div>
<!-- Logo -->
<div class="absolute top-5 right-6 text-right z-10">
<div class="flex items-center justify-end gap-1 mb-1">
<i data-lucide="wifi" class="text-blue-600 w-4 h-4"></i>
<span class="font-extrabold text-gray-800 italic text-lg tracking-tighter">GTS <span class="text-blue-600">Alpha</span></span>
</div>
<div class="text-[9px] text-gray-400 tracking-[0.2em] font-mono font-bold uppercase">IoT Global Sim</div>
</div>
<!-- Info -->
<div class="absolute bottom-5 left-10 right-6 flex justify-between items-end">
<div class="font-mono text-[10px] text-gray-500 tracking-wider font-medium">8988 2806 6600 1234</div>
<div class="flex gap-1">
<div class="px-1.5 py-0.5 rounded bg-gray-200 text-[8px] font-bold text-gray-600">4G</div>
<div class="px-1.5 py-0.5 rounded bg-blue-100 text-[8px] font-bold text-blue-600">NB-IoT</div>
</div>
</div>
<div class="absolute -bottom-6 -right-6 w-12 h-12 bg-white transform rotate-45 border-l border-gray-200"></div>
</div>
</div>
<!-- Grid Info -->
<div class="grid grid-cols-2 gap-3 mb-6">
<div class="bg-blue-50 p-3 rounded-xl flex flex-col items-center text-center gap-2">
<div class="bg-white p-2 rounded-full shadow-sm"><i data-lucide="globe" class="text-blue-600 w-5 h-5"></i></div>
<div><div class="font-bold text-gray-800 text-sm">173 ประเทศ</div><div class="text-xs text-gray-500">Coverage (1NCE)</div></div>
</div>
<div class="bg-green-50 p-3 rounded-xl flex flex-col items-center text-center gap-2">
<div class="bg-white p-2 rounded-full shadow-sm"><i data-lucide="zap" class="text-green-600 w-5 h-5"></i></div>
<div><div class="font-bold text-gray-800 text-sm">10 ปี</div><div class="text-xs text-gray-500">Validity</div></div>
</div>
</div>
</div>
<div class="px-6 pb-4">
<button onclick="addToCart()" class="w-full bg-blue-600 text-white font-bold py-4 rounded-xl shadow-lg shadow-blue-200 active:bg-blue-700 transition-all flex items-center justify-center gap-2">
ซื้อเลย ฿1,000 <i data-lucide="chevron-right" class="w-5 h-5"></i>
</button>
</div>
</div>
<!-- TAB 2: OS VIEW -->
<div id="tab-os" class="animate-slide-up hidden">
<!-- Hero Banner -->
<div class="relative bg-gray-900 text-white p-8 pt-12 pb-16 overflow-hidden rounded-b-[3rem] shadow-2xl mb-6">
<div class="absolute top-0 right-0 w-64 h-64 bg-blue-500 rounded-full blur-[80px] opacity-20"></div>
<div class="absolute bottom-0 left-0 w-48 h-48 bg-purple-500 rounded-full blur-[60px] opacity-20"></div>
<div class="relative z-10 text-center">
<div class="inline-flex items-center gap-2 bg-white/10 backdrop-blur-md px-4 py-1.5 rounded-full text-xs font-bold text-blue-300 mb-6 border border-white/10">
<i data-lucide="zap" class="text-yellow-400 fill-yellow-400 w-3 h-3"></i>
POWERED BY 1NCE
</div>
<h1 class="text-4xl font-extrabold mb-4 leading-tight tracking-tight">
GTS Alpha <span class="text-transparent bg-clip-text bg-gradient-to-r from-blue-400 to-cyan-300">OS</span>
</h1>
<p class="text-xl text-gray-300 font-light mb-8">
"อัพเกรดอุปกรณ์ธรรมดา<br/>ให้กลายเป็นอัจฉริยะ"
</p>
<!-- 3D Layer Visual -->
<div class="relative w-48 h-48 mx-auto perspective-1000 group">
<div class="absolute top-0 left-0 w-full h-full bg-blue-600/20 rounded-2xl transform rotate-45 scale-75 animate-pulse-slow"></div>
<!-- Cloud -->
<div class="absolute top-[-20px] left-1/2 transform -translate-x-1/2 bg-white p-4 rounded-xl shadow-xl w-32 flex flex-col items-center gap-2 animate-float z-30">
<i data-lucide="activity" class="text-blue-600 w-6 h-6"></i>
<div class="h-1 w-12 bg-gray-200 rounded"></div>
</div>
<!-- OS -->
<div class="absolute top-[40px] left-1/2 transform -translate-x-1/2 bg-gray-800 p-4 rounded-xl shadow-xl w-32 flex flex-col items-center gap-2 animate-float z-20 border border-gray-700" style="animation-delay: 0.1s;">
<i data-lucide="cpu" class="text-cyan-400 w-6 h-6"></i>
<div class="h-1 w-12 bg-gray-600 rounded"></div>
</div>
<!-- Sim -->
<div class="absolute top-[100px] left-1/2 transform -translate-x-1/2 bg-yellow-400 p-4 rounded-xl shadow-xl w-32 flex flex-col items-center gap-2 animate-float z-10" style="animation-delay: 0.2s;">
<i data-lucide="wifi" class="text-yellow-900 w-6 h-6"></i>
<div class="h-1 w-12 bg-yellow-600/50 rounded"></div>
</div>
</div>
</div>
</div>
<!-- Selling Points -->
<div class="px-6 space-y-6 pb-8">
<div class="bg-white p-5 rounded-2xl shadow-sm border border-gray-100 flex gap-4 items-start">
<div class="bg-blue-100 p-3 rounded-xl text-blue-600 shrink-0"><i data-lucide="layers" class="w-6 h-6"></i></div>
<div>
<h3 class="font-bold text-gray-900 text-lg mb-1">Plug & Play</h3>
<p class="text-gray-500 text-sm leading-relaxed">แค่เสียบซิม ระบบ OS จะเชื่อมต่อและตั้งค่าให้อัตโนมัติ ไม่ต้องเขียนโค้ดเพิ่ม</p>
</div>
</div>
<div class="bg-white p-5 rounded-2xl shadow-sm border border-gray-100 flex gap-4 items-start">
<div class="bg-purple-100 p-3 rounded-xl text-purple-600 shrink-0"><i data-lucide="box" class="w-6 h-6"></i></div>
<div>
<h3 class="font-bold text-gray-900 text-lg mb-1">Protocol Translation</h3>
<p class="text-gray-500 text-sm leading-relaxed">เปลี่ยนภาษาอุปกรณ์ (UDP/CoAP) เป็นภาษาเว็บ (HTTP/AWS) ได้ทันที</p>
</div>
</div>
<div class="bg-gradient-to-r from-blue-600 to-blue-500 p-6 rounded-2xl shadow-lg text-white text-center">
<h3 class="font-bold text-xl mb-2">มาพร้อมสิ่งนี้...ฟรี!</h3>
<p class="text-blue-100 text-sm mb-4">เมื่อซื้อ GTS Alpha IoT SIM วันนี้<br/>รับสิทธิ์ใช้งาน OS และ Inspector ตลอดชีพ</p>
<button onclick="scrollToUseCases()" class="bg-white text-blue-600 px-6 py-2 rounded-full font-bold text-sm hover:bg-blue-50 transition-colors shadow-sm cursor-pointer active:scale-95 transform">
ดูรายละเอียด
</button>
</div>
</div>
<!-- Use Cases -->
<div id="use-cases-section" class="px-6 pb-20 space-y-4 bg-gray-50 pt-8 rounded-t-3xl">
<h3 class="font-bold text-xl text-gray-900 mb-2 flex items-center gap-2">
<i data-lucide="zap" class="text-yellow-500 w-6 h-6"></i> ตัวอย่างการใช้งานจริง
</h3>
<p class="text-sm text-gray-500 mb-4">เริ่มต้นใช้งานบริการใหม่ได้ง่ายขึ้นด้วย Use Cases เหล่านี้</p>
<div class="bg-white p-4 rounded-xl shadow-sm border border-gray-100">
<div class="flex items-center gap-3 mb-2">
<div class="bg-orange-100 p-2 rounded-lg text-orange-600"><i data-lucide="router" class="w-5 h-5"></i></div>
<h4 class="font-bold text-gray-800">ฮาร์ดแวร์และโมเด็ม</h4>
</div>
<p class="text-xs text-gray-600 leading-relaxed">รองรับโมเด็ม, GPS Tracker, และ IoT Router ส่วนใหญ่ เริ่มต้นเชื่อมต่อกับ GTS Alpha ได้ทันที</p>
</div>
<div class="bg-white p-4 rounded-xl shadow-sm border border-gray-100">
<div class="flex items-center gap-3 mb-2">
<div class="bg-green-100 p-2 rounded-lg text-green-600"><i data-lucide="message-square" class="w-5 h-5"></i></div>
<h4 class="font-bold text-gray-800">บริการ SMS & Forwarding</h4>
</div>
<p class="text-xs text-gray-600 leading-relaxed">ส่งและรับข้อความ (MO/MT-SMS) หรือตั้งค่า Webhook เพื่อส่งต่อ SMS ไปยังเซิร์ฟเวอร์</p>
</div>
<div class="bg-white p-4 rounded-xl shadow-sm border border-gray-100">
<div class="flex items-center gap-3 mb-2">
<div class="bg-blue-100 p-2 rounded-lg text-blue-600"><i data-lucide="database" class="w-5 h-5"></i></div>
<h4 class="font-bold text-gray-800">Data Streamer</h4>
</div>
<p class="text-xs text-gray-600 leading-relaxed">เชื่อมต่อข้อมูลไปยัง AWS, Keen.io, DataDog หรือ Webhook เพื่อวิเคราะห์ข้อมูล Event ได้ทันที</p>
</div>
<div class="bg-white p-4 rounded-xl shadow-sm border border-gray-100">
<div class="flex items-center gap-3 mb-2">
<div class="bg-gray-100 p-2 rounded-lg text-gray-600"><i data-lucide="lock" class="w-5 h-5"></i></div>
<h4 class="font-bold text-gray-800">VPN Integration</h4>
</div>
<p class="text-xs text-gray-600 leading-relaxed">สร้างการเชื่อมต่อแบบสองทิศทาง (Bidirectional) ที่ปลอดภัยสูงสุดด้วยบริการ VPN ของเรา</p>
</div>
</div>
</div>
<!-- TAB 3: INSPECTOR VIEW -->
<div id="tab-inspector" class="animate-slide-up hidden p-4 space-y-4">
<div class="bg-gradient-to-br from-gray-900 to-gray-800 rounded-2xl p-5 text-white shadow-xl">
<div class="flex justify-between items-start mb-4">
<div>
<h2 class="text-lg font-bold flex items-center gap-2"><i data-lucide="shield" class="text-green-400 w-4 h-4"></i> Device Inspector</h2>
<p class="text-xs text-gray-400">SIM-as-an-Identity Engine</p>
</div>
<div class="bg-green-500/20 text-green-400 px-2 py-1 rounded text-[10px] font-bold flex items-center gap-1">
<div class="w-1.5 h-1.5 bg-green-400 rounded-full animate-pulse"></div>SYSTEM ONLINE
</div>
</div>
<div class="grid grid-cols-3 gap-4 text-center">
<div class="bg-white/10 rounded-xl p-3 backdrop-blur-sm"><div class="text-2xl font-bold">128</div><div class="text-[10px] text-gray-300">Total SIMs</div></div>
<div class="bg-white/10 rounded-xl p-3 backdrop-blur-sm border border-green-500/30"><div class="text-2xl font-bold text-green-400">124</div><div className="text-[10px] text-gray-300">Active</div></div>
<div class="bg-white/10 rounded-xl p-3 backdrop-blur-sm"><div class="text-2xl font-bold text-yellow-400">4</div><div class="text-[10px] text-gray-300">Warnings</div></div>
</div>
</div>
<div class="bg-white rounded-2xl p-5 shadow-sm border border-gray-100">
<h3 class="font-bold text-gray-800 mb-4 flex items-center gap-2"><i data-lucide="smartphone" class="text-blue-600 w-4 h-4"></i> สถานะดิจิทัล</h3>
<div class="relative h-40 bg-gray-50 rounded-xl border border-dashed border-gray-300 flex items-center justify-center mb-4 overflow-hidden group">
<div class="absolute inset-0 bg-[radial-gradient(#3b82f6_1px,transparent_1px)]" style="background-size:16px 16px; opacity: 0.2;"></div>
<div class="absolute w-full h-[1px] bg-blue-200 top-1/2"></div>
<div class="absolute w-[1px] h-full bg-blue-200 left-1/2"></div>
<div class="w-4 h-4 bg-blue-500 rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 shadow-[0_0_15px_rgba(59,130,246,0.5)] animate-ping"></div>
<div class="w-3 h-3 bg-white rounded-full absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 z-10 border-2 border-blue-600"></div>
<div class="absolute top-4 left-4 text-xs font-mono text-gray-500">ID: <span class="text-gray-900 font-bold">898828066600...</span></div>
<div class="absolute bottom-4 right-4 text-xs bg-blue-100 text-blue-700 px-2 py-0.5 rounded font-bold">4G LTE-M</div>
</div>
</div>
</div>
</div>
<!-- BOTTOM NAVIGATION -->
<div class="fixed bottom-0 left-0 w-full bg-white border-t border-gray-200 pb-safe z-50 max-w-md mx-auto right-0 flex justify-around items-center h-20 shadow-[0_-4px_6px_-1px_rgba(0,0,0,0.05)]">
<button onclick="switchTab('shop')" class="flex flex-col items-center gap-1 w-full h-full justify-center text-gray-400" id="nav-btn-shop">
<i data-lucide="shopping-cart" class="w-6 h-6"></i>
<span class="text-[10px] font-bold">Store</span>
</button>
<div class="relative -top-6">
<button onclick="switchTab('os')" id="nav-btn-os" class="w-16 h-16 bg-gradient-to-br from-gray-800 to-gray-700 rounded-full shadow-lg shadow-blue-200/50 flex items-center justify-center text-white border-4 border-gray-100 transition-all duration-300">
<i data-lucide="cpu" class="w-7 h-7"></i>
</button>
</div>
<button onclick="switchTab('inspector')" class="flex flex-col items-center gap-1 w-full h-full justify-center text-gray-400" id="nav-btn-inspector">
<i data-lucide="activity" class="w-6 h-6"></i>
<span class="text-[10px] font-bold">Inspector</span>
</button>
</div>
<!-- CART DRAWER -->
<div id="modal-cart" class="fixed inset-0 z-[60] flex flex-col justify-end hidden">
<div class="absolute inset-0 bg-black/50 backdrop-blur-sm" onclick="toggleCart(false)"></div>
<div class="bg-white rounded-t-3xl p-6 relative z-10 animate-slide-up max-h-[80vh] overflow-auto max-w-md mx-auto w-full">
<div class="flex justify-between items-center mb-6">
<h2 class="text-xl font-bold">ตะกร้าสินค้า</h2>
<button onclick="toggleCart(false)"><i data-lucide="x" class="w-6 h-6"></i></button>
</div>
<div id="cart-item-container" class="hidden flex gap-4 p-3 border border-gray-100 rounded-xl bg-gray-50 mb-4">
<div class="w-16 h-16 bg-white rounded-lg flex items-center justify-center border border-gray-200"><i data-lucide="wifi" class="text-blue-600"></i></div>
<div class="flex-1">
<div class="font-bold text-gray-900">GTS Alpha IoT SIM</div>
<div class="font-bold text-blue-600">฿1,000 x <span id="cart-item-count">0</span></div>
</div>
</div>
<div id="cart-empty-msg" class="text-center text-gray-400 py-10">ตะกร้าว่างเปล่า</div>
<button onclick="togglePayment(true)" class="w-full bg-blue-600 text-white font-bold py-4 rounded-xl mt-4">ชำระเงิน</button>
</div>
</div>
<!-- PAYMENT MODAL (UPDATED) -->
<div id="modal-payment" class="fixed inset-0 z-[70] flex flex-col items-center justify-center hidden">
<div class="absolute inset-0 bg-black/60 backdrop-blur-sm" onclick="togglePayment(false)"></div>
<div class="bg-white p-6 rounded-3xl relative z-10 w-[90%] max-w-sm text-center animate-fade-in shadow-2xl max-h-[90vh] overflow-y-auto">
<button onclick="togglePayment(false)" class="absolute top-4 right-4 text-gray-400 hover:text-gray-600">
<i data-lucide="x" class="w-6 h-6"></i>
</button>
<h3 class="text-xl font-bold mb-4 text-blue-900">ยืนยันการชำระเงิน</h3>
<!-- Order Summary -->
<div class="bg-blue-50 p-4 rounded-xl mb-4 text-left border border-blue-100">
<h4 class="font-bold text-gray-800 mb-2 flex items-center gap-2">
<i data-lucide="shopping-bag" class="w-4 h-4 text-blue-600"></i> สรุปคำสั่งซื้อ
</h4>
<div class="flex justify-between text-sm mb-1">
<span class="text-gray-600">GTS Alpha IoT SIM</span>
<span class="font-bold text-gray-900">฿1,000</span>
</div>
<div class="border-t border-blue-200 my-2"></div>
<div class="flex justify-between text-base font-bold text-blue-700">
<span>ยอดชำระรวม</span>
<span>฿1,000</span>
</div>
</div>
<!-- Customer Details Form -->
<div class="mb-6 text-left space-y-3">
<div>
<label class="block text-xs font-bold text-gray-500 mb-1">ชื่อ-นามสกุล (ผู้ติดต่อ) <span class="text-red-500">*</span></label>
<input type="text" id="input-name" class="w-full p-3 bg-gray-50 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all" placeholder="ระบุชื่อของคุณ">
</div>
<div>
<label class="block text-xs font-bold text-gray-500 mb-1">เบอร์โทรศัพท์ <span class="text-red-500">*</span></label>
<input type="tel" id="input-phone" class="w-full p-3 bg-gray-50 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all" placeholder="08x-xxx-xxxx">
</div>
</div>
<!-- QR Code Section -->
<div class="bg-white border-2 border-dashed border-gray-200 rounded-xl p-4 mb-4 relative">
<div class="absolute top-0 left-1/2 transform -translate-x-1/2 -translate-y-1/2 bg-white px-2 text-xs font-bold text-gray-400">สแกนจ่ายด้วยพร้อมเพย์</div>
<img src="https://promptpay.io/0956519254.png" alt="PromptPay QR" class="w-40 h-40 mx-auto mix-blend-multiply">
<p class="text-lg font-bold text-blue-600 mt-2 tracking-wider">095-651-9254</p>
</div>
<button onclick="handlePaymentSuccess()" class="w-full bg-[#06C755] text-white font-bold py-3.5 rounded-xl shadow-lg shadow-green-200 active:scale-95 transition-transform flex items-center justify-center gap-2">
<i data-lucide="check-circle" class="w-5 h-5"></i> แจ้งโอนเงิน
</button>
</div>
</div>
<!-- MOBILE MENU -->
<div id="modal-menu" class="absolute top-14 left-0 w-full bg-white shadow-lg z-30 py-4 px-6 border-b border-gray-100 animate-slide-down hidden">
<div class="space-y-4 font-medium text-gray-600">
<div class="py-2 border-b border-gray-50">สินค้า</div>
<div class="py-2 border-b border-gray-50">ช่วยเหลือ</div>
<div class="py-2 text-red-500 cursor-pointer" onclick="toggleMenu(false)">ปิดเมนู</div>
</div>
</div>
</div> <!-- End Screen App -->
</div>
<!-- JAVASCRIPT LOGIC -->
<script>
// State
let cartCount = 0;
let activeTab = 'shop'; // Changed default to 'shop'
// --- Init ---
document.addEventListener('DOMContentLoaded', () => {
lucide.createIcons();
// Start at Login Screen -> then switch to 'shop'
// We set the initial state in the switchTab function
});
// --- Functions ---
function handleLogin() {
const btn = document.getElementById('btn-login');
btn.innerHTML = `<div class="w-6 h-6 border-2 border-white border-t-transparent rounded-full animate-spin"></div>`;
btn.classList.add('bg-gray-400', 'cursor-not-allowed');
setTimeout(() => {
document.getElementById('screen-login').classList.add('hidden');
document.getElementById('screen-import').classList.remove('hidden');
document.getElementById('screen-import').classList.add('flex'); // Add flex back for centering
}, 1000);
}
function handleImport() {
const content = document.getElementById('import-content');
const loading = document.getElementById('import-loading');
content.classList.add('hidden');
loading.classList.remove('hidden');
setTimeout(() => {
document.getElementById('screen-import').classList.add('hidden');
document.getElementById('screen-import').classList.remove('flex');
document.getElementById('screen-app').classList.remove('hidden');
lucide.createIcons(); // Refresh icons for new visible area
switchTab('shop'); // Ensure we land on shop
}, 2000);
}
function switchTab(tabName) {
activeTab = tabName;
// Hide all tabs
document.getElementById('tab-shop').classList.add('hidden');
document.getElementById('tab-os').classList.add('hidden');
document.getElementById('tab-inspector').classList.add('hidden');
// Show active tab
document.getElementById(`tab-${tabName}`).classList.remove('hidden');
// Update Bottom Nav Styles
const btnShop = document.getElementById('nav-btn-shop');
const btnOs = document.getElementById('nav-btn-os');
const btnInspector = document.getElementById('nav-btn-inspector');
// Reset styles
btnShop.className = "flex flex-col items-center gap-1 w-full h-full justify-center text-gray-400";
btnInspector.className = "flex flex-col items-center gap-1 w-full h-full justify-center text-gray-400";
btnOs.className = "w-16 h-16 bg-gradient-to-br from-gray-800 to-gray-700 rounded-full shadow-lg shadow-blue-200/50 flex items-center justify-center text-white border-4 border-gray-100 transition-all duration-300";
// Remove pulse from OS icon if exists
btnOs.querySelector('svg').classList.remove('animate-pulse');
if (tabName === 'shop') {
btnShop.className = "flex flex-col items-center gap-1 w-full h-full justify-center text-blue-600";
} else if (tabName === 'inspector') {
btnInspector.className = "flex flex-col items-center gap-1 w-full h-full justify-center text-blue-600";
} else if (tabName === 'os') {
btnOs.className = "w-16 h-16 bg-gradient-to-br from-blue-600 to-blue-500 scale-110 rounded-full shadow-lg shadow-blue-200/50 flex items-center justify-center text-white border-4 border-gray-100 transition-all duration-300";
btnOs.querySelector('svg').classList.add('animate-pulse');
}
}
function addToCart() {
cartCount++;
updateCartUI();
toggleCart(true);
}
function updateCartUI() {
const badge = document.getElementById('cart-badge');
const itemCount = document.getElementById('cart-item-count');
const itemContainer = document.getElementById('cart-item-container');
const emptyMsg = document.getElementById('cart-empty-msg');
if (cartCount > 0) {
badge.innerText = cartCount;
badge.classList.remove('hidden');
itemCount.innerText = cartCount;
itemContainer.classList.remove('hidden');
itemContainer.classList.add('flex');
emptyMsg.classList.add('hidden');
} else {
badge.classList.add('hidden');
itemContainer.classList.add('hidden');
itemContainer.classList.remove('flex');
emptyMsg.classList.remove('hidden');
}
}
function toggleCart(show) {
const modal = document.getElementById('modal-cart');
if (show) {
modal.classList.remove('hidden');
updateCartUI();
} else {
modal.classList.add('hidden');
}
}
function togglePayment(show) {
// Close cart first if opening payment
if (show) toggleCart(false);
const modal = document.getElementById('modal-payment');
if (show) {
modal.classList.remove('hidden');
lucide.createIcons(); // ensure icons render in new modal
} else {
modal.classList.add('hidden');
}
}
function handlePaymentSuccess() {
const name = document.getElementById('input-name').value;
const phone = document.getElementById('input-phone').value;
if (!name || !phone) {
alert("กรุณากรอกชื่อและเบอร์โทรศัพท์ให้ครบถ้วน");
return;
}
togglePayment(false);
alert(`ขอบคุณคุณ ${name}! \nเราได้รับข้อมูลการชำระเงินแล้ว ระบบจะติดต่อกลับไปที่เบอร์ ${phone} โดยเร็วที่สุด`);
cartCount = 0;
updateCartUI();
// Clear inputs
document.getElementById('input-name').value = '';
document.getElementById('input-phone').value = '';
}
function toggleMenu(show) {
const menu = document.getElementById('modal-menu');
if (show) {
menu.classList.remove('hidden');
} else {
menu.classList.add('hidden');
}
}
function scrollToUseCases() {
document.getElementById('use-cases-section').scrollIntoView({ behavior: 'smooth' });
}
</script>
</body>
</html>