crypto-swap 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,707 @@
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>Order Details - LightningEX</title>
7
+ <meta name="description" content="View your LightningEX exchange order details and track status.">
8
+ <link rel="preconnect" href="https://fonts.googleapis.com">
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
11
+ <link rel="stylesheet" href="./css/base.css">
12
+ <link rel="stylesheet" href="./css/layout.css">
13
+ <link rel="stylesheet" href="./css/components.css">
14
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script>
15
+ <style>
16
+ /* Top Logo Bar */
17
+ .top-logo-bar {
18
+ position: fixed;
19
+ top: 0;
20
+ left: 0;
21
+ right: 0;
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ padding: 20px;
26
+ z-index: 100;
27
+ }
28
+
29
+ .top-logo-link {
30
+ display: flex;
31
+ align-items: center;
32
+ gap: 12px;
33
+ text-decoration: none;
34
+ transition: opacity 0.3s ease;
35
+ }
36
+
37
+ .top-logo-link:hover {
38
+ opacity: 0.8;
39
+ }
40
+
41
+ .top-logo-icon {
42
+ width: 36px;
43
+ height: 36px;
44
+ background: linear-gradient(135deg, #00f5ff 0%, #b829dd 100%);
45
+ border-radius: 8px;
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ font-size: 1.2rem;
50
+ box-shadow: 0 0 15px rgba(0, 245, 255, 0.3);
51
+ }
52
+
53
+ .top-logo-text {
54
+ font-size: 1.5rem;
55
+ font-weight: 800;
56
+ background: linear-gradient(90deg, #00f5ff 0%, #b829dd 100%);
57
+ -webkit-background-clip: text;
58
+ -webkit-text-fill-color: transparent;
59
+ background-clip: text;
60
+ }
61
+
62
+ .top-logo-highlight {
63
+ background: linear-gradient(90deg, #ffd700 0%, #ffaa00 50%, #ff6b00 100%);
64
+ -webkit-background-clip: text;
65
+ -webkit-text-fill-color: transparent;
66
+ background-clip: text;
67
+ }
68
+
69
+ * {
70
+ box-sizing: border-box;
71
+ }
72
+
73
+ html, body {
74
+ min-height: 100vh;
75
+ padding: 80px 20px 60px 20px;
76
+ overflow-x: hidden;
77
+ max-width: 100vw;
78
+ }
79
+
80
+ .page-header {
81
+ padding: 40px 0;
82
+ text-align: center;
83
+ }
84
+
85
+ .page-title {
86
+ font-size: 2rem;
87
+ margin-bottom: 8px;
88
+ }
89
+
90
+ .order-id-display {
91
+ color: var(--text-secondary);
92
+ font-size: 0.9rem;
93
+ font-family: var(--font-mono);
94
+ display: flex;
95
+ align-items: center;
96
+ justify-content: center;
97
+ gap: 8px;
98
+ }
99
+
100
+ .copy-icon {
101
+ width: 16px;
102
+ height: 16px;
103
+ cursor: pointer;
104
+ opacity: 0.6;
105
+ transition: opacity 0.2s;
106
+ }
107
+
108
+ .copy-icon:hover {
109
+ opacity: 1;
110
+ color: var(--neon-cyan);
111
+ }
112
+
113
+ .order-content {
114
+ padding: var(--space-xl) 0;
115
+ }
116
+
117
+ .order-container {
118
+ max-width: 900px;
119
+ margin: 0 auto;
120
+ }
121
+
122
+ .progress-card {
123
+ background: var(--bg-card);
124
+ border: 1px solid rgba(0, 245, 255, 0.1);
125
+ border-radius: var(--radius-lg);
126
+ padding: var(--space-2xl);
127
+ margin-bottom: var(--space-xl);
128
+ }
129
+
130
+ .steps {
131
+ display: flex;
132
+ justify-content: space-between;
133
+ position: relative;
134
+ margin-bottom: var(--space-2xl);
135
+ }
136
+
137
+ .steps::before {
138
+ content: '';
139
+ position: absolute;
140
+ top: 20px;
141
+ left: 10%;
142
+ right: 10%;
143
+ height: 2px;
144
+ background: rgba(255, 255, 255, 0.1);
145
+ z-index: 0;
146
+ }
147
+
148
+ .step {
149
+ display: flex;
150
+ flex-direction: column;
151
+ align-items: center;
152
+ position: relative;
153
+ z-index: 1;
154
+ flex: 1;
155
+ }
156
+
157
+ .step-circle {
158
+ width: 40px;
159
+ height: 40px;
160
+ border-radius: 50%;
161
+ background: rgba(255, 255, 255, 0.1);
162
+ border: 2px solid rgba(255, 255, 255, 0.2);
163
+ display: flex;
164
+ align-items: center;
165
+ justify-content: center;
166
+ font-weight: 600;
167
+ font-size: 14px;
168
+ transition: all 0.3s;
169
+ color: var(--text-secondary);
170
+ }
171
+
172
+ .step-label {
173
+ margin-top: 8px;
174
+ font-size: 11px;
175
+ color: var(--text-muted);
176
+ text-align: center;
177
+ max-width: 80px;
178
+ }
179
+
180
+ .step.active .step-circle {
181
+ background: var(--neon-cyan);
182
+ border-color: var(--neon-cyan);
183
+ color: var(--bg-primary);
184
+ box-shadow: 0 0 20px rgba(0, 245, 255, 0.5);
185
+ }
186
+
187
+ .step.active .step-label {
188
+ color: var(--neon-cyan);
189
+ }
190
+
191
+ .step.completed .step-circle {
192
+ background: var(--neon-green);
193
+ border-color: var(--neon-green);
194
+ color: var(--bg-primary);
195
+ }
196
+
197
+ .step.completed .step-label {
198
+ color: var(--neon-green);
199
+ }
200
+
201
+ .status-content {
202
+ background: rgba(0, 0, 0, 0.3);
203
+ border-radius: var(--radius-lg);
204
+ padding: var(--space-xl);
205
+ }
206
+
207
+ .status-header {
208
+ display: flex;
209
+ align-items: center;
210
+ gap: var(--space-md);
211
+ margin-bottom: var(--space-lg);
212
+ }
213
+
214
+ .status-badge {
215
+ padding: 8px 16px;
216
+ border-radius: 20px;
217
+ font-weight: 600;
218
+ font-size: 14px;
219
+ text-transform: uppercase;
220
+ }
221
+
222
+ .status-badge.awaiting {
223
+ background: rgba(255, 221, 0, 0.2);
224
+ border: 1px solid var(--neon-yellow);
225
+ color: var(--neon-yellow);
226
+ }
227
+
228
+ .status-badge.confirming {
229
+ background: rgba(0, 245, 255, 0.2);
230
+ border: 1px solid var(--neon-cyan);
231
+ color: var(--neon-cyan);
232
+ }
233
+
234
+ .status-badge.exchanging {
235
+ background: rgba(184, 41, 221, 0.2);
236
+ border: 1px solid var(--neon-purple);
237
+ color: var(--neon-purple);
238
+ }
239
+
240
+ .status-badge.sending {
241
+ background: rgba(255, 0, 255, 0.2);
242
+ border: 1px solid var(--neon-pink);
243
+ color: var(--neon-pink);
244
+ }
245
+
246
+ .status-badge.complete {
247
+ background: rgba(0, 255, 136, 0.2);
248
+ border: 1px solid var(--neon-green);
249
+ color: var(--neon-green);
250
+ }
251
+
252
+ .status-badge.failed,
253
+ .status-badge.refund,
254
+ .status-badge.action-request,
255
+ .status-badge.request-overdue {
256
+ background: rgba(255, 68, 68, 0.2);
257
+ border: 1px solid #ff4444;
258
+ color: #ff4444;
259
+ }
260
+
261
+ .status-highlight {
262
+ color: var(--neon-cyan);
263
+ font-weight: 600;
264
+ background: rgba(0, 245, 255, 0.1);
265
+ padding: 2px 8px;
266
+ border-radius: 4px;
267
+ }
268
+
269
+ .status-message-box {
270
+ background: rgba(0, 245, 255, 0.05);
271
+ border-left: 3px solid var(--neon-cyan);
272
+ padding: 16px 20px;
273
+ margin-bottom: var(--space-lg);
274
+ border-radius: 0 var(--radius-md) var(--radius-md) 0;
275
+ width: 100%;
276
+ box-sizing: border-box;
277
+ }
278
+
279
+ .status-message-box p {
280
+ color: var(--text-secondary);
281
+ line-height: 1.6;
282
+ margin: 0;
283
+ }
284
+
285
+ .deposit-section {
286
+ display: grid;
287
+ grid-template-columns: auto 1fr;
288
+ gap: var(--space-xl);
289
+ align-items: start;
290
+ }
291
+
292
+ .qr-container {
293
+ background: white;
294
+ padding: 16px;
295
+ border-radius: var(--radius-md);
296
+ width: 180px;
297
+ height: 180px;
298
+ display: flex;
299
+ align-items: center;
300
+ justify-content: center;
301
+ }
302
+
303
+ .deposit-info {
304
+ display: flex;
305
+ flex-direction: column;
306
+ gap: var(--space-md);
307
+ }
308
+
309
+ .info-row {
310
+ display: flex;
311
+ flex-direction: column;
312
+ gap: 4px;
313
+ }
314
+
315
+ .info-label {
316
+ color: var(--text-muted);
317
+ font-size: 12px;
318
+ text-transform: uppercase;
319
+ }
320
+
321
+ .info-value {
322
+ font-family: var(--font-mono);
323
+ font-size: 14px;
324
+ background: rgba(0, 0, 0, 0.5);
325
+ padding: 12px 16px;
326
+ border-radius: var(--radius-md);
327
+ border: 1px solid rgba(0, 245, 255, 0.2);
328
+ display: flex;
329
+ justify-content: space-between;
330
+ align-items: center;
331
+ gap: 12px;
332
+ }
333
+
334
+ .address-value {
335
+ word-break: break-all;
336
+ overflow-wrap: break-word;
337
+ }
338
+
339
+ .copy-btn {
340
+ background: rgba(0, 245, 255, 0.1);
341
+ border: 1px solid var(--neon-cyan);
342
+ color: var(--neon-cyan);
343
+ padding: 6px 12px;
344
+ border-radius: var(--radius-sm);
345
+ cursor: pointer;
346
+ font-size: 12px;
347
+ transition: var(--transition-fast);
348
+ white-space: nowrap;
349
+ }
350
+
351
+ .copy-btn:hover {
352
+ background: var(--neon-cyan);
353
+ color: var(--bg-primary);
354
+ }
355
+
356
+ .warning-box {
357
+ background: rgba(255, 136, 0, 0.1);
358
+ border: 1px solid var(--neon-orange);
359
+ border-radius: var(--radius-md);
360
+ padding: 12px 16px;
361
+ color: var(--neon-orange);
362
+ font-size: 13px;
363
+ }
364
+
365
+ .details-card {
366
+ background: var(--bg-card);
367
+ border: 1px solid rgba(0, 245, 255, 0.1);
368
+ border-radius: var(--radius-lg);
369
+ padding: var(--space-xl);
370
+ margin-bottom: var(--space-xl);
371
+ }
372
+
373
+ .details-card h3 {
374
+ margin-bottom: var(--space-lg);
375
+ color: var(--neon-cyan);
376
+ }
377
+
378
+ .details-grid {
379
+ display: grid;
380
+ grid-template-columns: repeat(2, 1fr);
381
+ gap: var(--space-lg);
382
+ }
383
+
384
+ .detail-card {
385
+ background: rgba(0, 0, 0, 0.3);
386
+ border-radius: var(--radius-md);
387
+ padding: var(--space-lg);
388
+ }
389
+
390
+ .detail-card h4 {
391
+ font-size: 12px;
392
+ color: var(--text-muted);
393
+ text-transform: uppercase;
394
+ margin-bottom: var(--space-sm);
395
+ font-weight: 500;
396
+ }
397
+
398
+ .detail-amount {
399
+ font-family: var(--font-mono);
400
+ font-size: 24px;
401
+ color: var(--neon-cyan);
402
+ }
403
+
404
+ .detail-currency {
405
+ font-size: 14px;
406
+ color: var(--text-secondary);
407
+ }
408
+
409
+ .tx-links {
410
+ margin-top: var(--space-lg);
411
+ padding-top: var(--space-lg);
412
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
413
+ }
414
+
415
+ .tx-link {
416
+ display: flex;
417
+ justify-content: space-between;
418
+ align-items: center;
419
+ padding: 12px 0;
420
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
421
+ }
422
+
423
+ .tx-link:last-child {
424
+ border-bottom: none;
425
+ }
426
+
427
+ .tx-link a {
428
+ color: var(--neon-cyan);
429
+ text-decoration: none;
430
+ font-size: 13px;
431
+ }
432
+
433
+ .tx-link a:hover {
434
+ text-decoration: underline;
435
+ }
436
+
437
+ .loading-container {
438
+ text-align: center;
439
+ padding: 60px;
440
+ }
441
+
442
+ .loading-spinner {
443
+ width: 50px;
444
+ height: 50px;
445
+ border: 3px solid rgba(0, 245, 255, 0.2);
446
+ border-top-color: var(--neon-cyan);
447
+ border-radius: 50%;
448
+ animation: spin 1s linear infinite;
449
+ margin: 0 auto 20px;
450
+ }
451
+
452
+ @keyframes spin {
453
+ to { transform: rotate(360deg); }
454
+ }
455
+
456
+ .error-container {
457
+ text-align: center;
458
+ padding: 60px;
459
+ background: var(--bg-card);
460
+ border-radius: var(--radius-lg);
461
+ border: 1px solid rgba(255, 68, 68, 0.3);
462
+ }
463
+
464
+ .error-icon {
465
+ font-size: 48px;
466
+ margin-bottom: 20px;
467
+ }
468
+
469
+ .processing-container {
470
+ text-align: center;
471
+ padding: var(--space-xl);
472
+ }
473
+
474
+ .processing-container .loading-spinner {
475
+ width: 40px;
476
+ height: 40px;
477
+ margin: 0 auto var(--space-md);
478
+ }
479
+
480
+ .complete-container {
481
+ text-align: center;
482
+ padding: var(--space-xl);
483
+ }
484
+
485
+ .complete-icon {
486
+ font-size: 48px;
487
+ margin-bottom: var(--space-md);
488
+ }
489
+
490
+ .failed-container {
491
+ text-align: center;
492
+ padding: var(--space-xl);
493
+ }
494
+
495
+ .failed-icon {
496
+ font-size: 48px;
497
+ margin-bottom: var(--space-md);
498
+ }
499
+
500
+ .detail-list {
501
+ margin-top: var(--space-lg);
502
+ }
503
+
504
+ .detail-item {
505
+ display: flex;
506
+ justify-content: space-between;
507
+ padding: 12px 0;
508
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
509
+ }
510
+
511
+ .detail-item:last-child {
512
+ border-bottom: none;
513
+ }
514
+
515
+ .detail-item-label {
516
+ color: var(--text-muted);
517
+ font-size: 14px;
518
+ }
519
+
520
+ .detail-item-value {
521
+ color: var(--text-primary);
522
+ font-family: var(--font-mono);
523
+ font-size: 14px;
524
+ text-align: right;
525
+ word-break: break-all;
526
+ overflow-wrap: break-word;
527
+ }
528
+
529
+ @media (max-width: 768px) {
530
+ html, body {
531
+ padding: 80px 12px 60px 12px;
532
+ overflow-x: hidden;
533
+ }
534
+
535
+ .container {
536
+ padding: 0;
537
+ width: 100%;
538
+ }
539
+
540
+ .order-container {
541
+ width: 100%;
542
+ max-width: 100%;
543
+ }
544
+
545
+ .progress-card {
546
+ padding: var(--space-md);
547
+ }
548
+
549
+ .status-message-box {
550
+ padding: 12px;
551
+ margin-bottom: var(--space-md);
552
+ }
553
+
554
+ .status-content {
555
+ padding: var(--space-md);
556
+ }
557
+
558
+ .steps::before {
559
+ left: 20px;
560
+ right: 20px;
561
+ }
562
+
563
+ .step-label {
564
+ font-size: 9px;
565
+ max-width: 50px;
566
+ }
567
+
568
+ .deposit-section {
569
+ grid-template-columns: 1fr;
570
+ justify-items: center;
571
+ }
572
+
573
+ .details-grid {
574
+ grid-template-columns: 1fr;
575
+ }
576
+
577
+ .details-card {
578
+ padding: var(--space-md);
579
+ }
580
+
581
+ .info-value {
582
+ font-size: 11px;
583
+ padding: 10px 12px;
584
+ gap: 8px;
585
+ }
586
+
587
+ .detail-item-value {
588
+ font-size: 12px;
589
+ word-break: break-all;
590
+ max-width: 60%;
591
+ }
592
+
593
+ .tx-link {
594
+ flex-direction: column;
595
+ align-items: flex-start;
596
+ gap: 4px;
597
+ }
598
+ }
599
+ </style>
600
+ </head>
601
+ <body>
602
+ <!-- Top Logo Bar -->
603
+ <div class="top-logo-bar">
604
+ <a href="https://www.lightningex.io" target="_blank" class="top-logo-link">
605
+ <div class="top-logo-icon">⚡</div>
606
+ <span class="top-logo-text">Lightning<span class="top-logo-highlight">EX</span></span>
607
+ </a>
608
+ </div>
609
+
610
+ <section class="page-header">
611
+ <div class="container">
612
+ <h1 class="page-title">Exchange Order</h1>
613
+ <div class="order-id-display">
614
+ Order ID: <span id="displayOrderId">-</span>
615
+ <svg class="copy-icon" onclick="copyOrderId()" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
616
+ <rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect>
617
+ <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path>
618
+ </svg>
619
+ </div>
620
+ </div>
621
+ </section>
622
+
623
+ <section class="order-content">
624
+ <div class="container order-container">
625
+ <div id="loadingState" class="loading-container">
626
+ <div class="loading-spinner"></div>
627
+ <p style="color: var(--text-secondary);">Loading order details...</p>
628
+ </div>
629
+
630
+ <div id="errorState" class="error-container hidden">
631
+ <div class="error-icon">⚠️</div>
632
+ <h2 style="color: var(--text-primary); margin-bottom: 12px;">Order Not Found</h2>
633
+ <p style="color: var(--text-secondary);">The order ID is invalid or has expired.</p>
634
+ <a href="./index.html" class="btn btn-primary" style="margin-top: 24px;">Start New Exchange</a>
635
+ </div>
636
+
637
+ <div id="orderContent" class="hidden">
638
+ <div class="progress-card">
639
+ <div class="steps" id="progressSteps">
640
+ <div class="step" data-status="Awaiting Deposit">
641
+ <div class="step-circle">1</div>
642
+ <div class="step-label">Awaiting Deposit</div>
643
+ </div>
644
+ <div class="step" data-status="Confirming Deposit">
645
+ <div class="step-circle">2</div>
646
+ <div class="step-label">Confirming</div>
647
+ </div>
648
+ <div class="step" data-status="Exchanging">
649
+ <div class="step-circle">3</div>
650
+ <div class="step-label">Exchanging</div>
651
+ </div>
652
+ <div class="step" data-status="Sending">
653
+ <div class="step-circle">4</div>
654
+ <div class="step-label">Sending</div>
655
+ </div>
656
+ <div class="step" data-status="Complete">
657
+ <div class="step-circle">5</div>
658
+ <div class="step-label">Complete</div>
659
+ </div>
660
+ </div>
661
+
662
+ <div class="status-content" id="statusContent">
663
+ </div>
664
+ </div>
665
+
666
+ <div class="details-card">
667
+ <h3>Transaction Details</h3>
668
+ <div class="details-grid">
669
+ <div class="detail-card">
670
+ <h4>You Send</h4>
671
+ <div class="detail-amount" id="sendAmount">-</div>
672
+ <div class="detail-currency" id="sendCurrency">-</div>
673
+ </div>
674
+ <div class="detail-card">
675
+ <h4>You Receive</h4>
676
+ <div class="detail-amount" id="receiveAmount">-</div>
677
+ <div class="detail-currency" id="receiveCurrency">-</div>
678
+ </div>
679
+ </div>
680
+
681
+ <div class="detail-list" id="detailList">
682
+ </div>
683
+
684
+ <div class="tx-links" id="txLinks"></div>
685
+ </div>
686
+
687
+ <div class="details-card" style="background: rgba(0, 245, 255, 0.05);">
688
+ <h3 style="font-size: 16px; margin-bottom: 12px;">📌 Save this page</h3>
689
+ <p style="color: var(--text-secondary); font-size: 14px; margin-bottom: 16px;">
690
+ Bookmark this page or save the URL to track your order status. You can return anytime to check the progress.
691
+ </p>
692
+ <button class="btn btn-secondary" onclick="copyOrderUrl()" id="copyUrlBtn">
693
+ Copy Order URL
694
+ </button>
695
+ </div>
696
+ </div>
697
+ </div>
698
+ </section>
699
+
700
+ <!-- Footer -->
701
+ <footer style="position: fixed; bottom: 0; left: 0; right: 0; text-align: center; padding: 16px; font-size: 0.85rem; color: var(--text-muted); background: rgba(10, 10, 15, 0.8); backdrop-filter: blur(10px); border-top: 1px solid rgba(0, 245, 255, 0.1); z-index: 100;">
702
+ Supported by <a href="https://www.lightningex.io" target="_blank" style="color: var(--neon-cyan); text-decoration: none;">LightningEX</a>
703
+ </footer>
704
+
705
+ <script src="./js/order.js"></script>
706
+ </body>
707
+ </html>