create-sbc-app 0.1.1

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,604 @@
1
+ /* Theme Variables */
2
+ :root[data-theme="light"] {
3
+ --bg-color: #f8fafc;
4
+ --text-color: #1a202c;
5
+ --text-secondary: #718096;
6
+ --card-bg: white;
7
+ --card-border: #e2e8f0;
8
+ --card-shadow: rgba(0, 0, 0, 0.1);
9
+ --input-bg: #f7fafc;
10
+ --input-border: #e2e8f0;
11
+ --input-text: #1a202c;
12
+ --button-bg: #f7fafc;
13
+ --button-border: #e2e8f0;
14
+ --button-text: #718096;
15
+ --primary-button-bg: #3182ce;
16
+ --primary-button-hover: #2c5282;
17
+ --primary-button-text: white;
18
+ --status-bg: #f7fafc;
19
+ --link-color: #3182ce;
20
+ --monospace-bg: #edf2f7;
21
+ --monospace-border: #e2e8f0;
22
+ --monospace-text: #4a5568;
23
+ --button-primary-bg: #3182ce;
24
+ --button-primary-hover: #2c5282;
25
+ --button-secondary-bg: #f7fafc;
26
+ --button-secondary-hover: #edf2f7;
27
+ --button-secondary-border: #e2e8f0;
28
+ --button-secondary-text: #4a5568;
29
+ --section-spacing: 32px;
30
+ --card-spacing: 24px;
31
+ --success-text: #2f855a;
32
+ --success-bg: #f0fff4;
33
+ --success-border: #c6f6d5;
34
+ --link-hover: #2c5282;
35
+ }
36
+
37
+ :root[data-theme="dark"] {
38
+ --bg-color: #1a202c;
39
+ --text-color: #e2e8f0;
40
+ --text-secondary: #a0aec0;
41
+ --card-bg: #2d3748;
42
+ --card-border: #4a5568;
43
+ --card-shadow: rgba(0, 0, 0, 0.2);
44
+ --input-bg: #4a5568;
45
+ --input-border: #718096;
46
+ --input-text: #e2e8f0;
47
+ --button-bg: #4a5568;
48
+ --button-border: #718096;
49
+ --button-text: #e2e8f0;
50
+ --primary-button-bg: #3182ce;
51
+ --primary-button-hover: #2c5282;
52
+ --primary-button-text: white;
53
+ --status-bg: #4a5568;
54
+ --link-color: #63b3ed;
55
+ --monospace-bg: #4a5568;
56
+ --monospace-border: #718096;
57
+ --monospace-text: #e2e8f0;
58
+ --button-primary-bg: #3182ce;
59
+ --button-primary-hover: #2c5282;
60
+ --button-secondary-bg: #2d3748;
61
+ --button-secondary-hover: #4a5568;
62
+ --button-secondary-border: #4a5568;
63
+ --button-secondary-text: #e2e8f0;
64
+ --section-spacing: 32px;
65
+ --card-spacing: 24px;
66
+ --success-text: #9ae6b4;
67
+ --success-bg: #276749;
68
+ --success-border: #2f855a;
69
+ --link-hover: #90cdf4;
70
+ }
71
+
72
+ /* Global Styles */
73
+ * {
74
+ box-sizing: border-box;
75
+ margin: 0;
76
+ padding: 0;
77
+ }
78
+
79
+ body {
80
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
81
+ 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
82
+ -webkit-font-smoothing: antialiased;
83
+ -moz-osx-font-smoothing: grayscale;
84
+ background: var(--bg-color);
85
+ min-height: 100vh;
86
+ color: var(--text-color);
87
+ line-height: 1.4;
88
+ transition: background-color 0.3s ease, color 0.3s ease;
89
+ }
90
+
91
+ /* App Layout */
92
+ .app {
93
+ min-height: 100vh;
94
+ background: var(--bg-color);
95
+ padding: 2rem 1rem;
96
+ display: flex;
97
+ flex-direction: column;
98
+ align-items: center;
99
+ }
100
+
101
+ .container {
102
+ width: 100%;
103
+ max-width: 560px;
104
+ margin: 0 auto;
105
+ display: flex;
106
+ flex-direction: column;
107
+ gap: var(--section-spacing);
108
+ }
109
+
110
+ /* Header */
111
+ .app-header {
112
+ text-align: center;
113
+ margin-bottom: calc(var(--section-spacing) * 1.5);
114
+ padding: var(--card-spacing) 0;
115
+ width: 100%;
116
+ }
117
+
118
+ .app-header h1 {
119
+ font-size: 2rem;
120
+ margin-bottom: 1rem;
121
+ font-weight: 700;
122
+ color: var(--text-color);
123
+ letter-spacing: -0.025em;
124
+ display: flex;
125
+ align-items: center;
126
+ justify-content: center;
127
+ gap: 12px;
128
+ }
129
+
130
+ .app-header h1 img {
131
+ width: 36px;
132
+ height: 36px;
133
+ }
134
+
135
+ .app-header p {
136
+ font-size: 1.1rem;
137
+ color: var(--text-secondary);
138
+ font-weight: 400;
139
+ margin-top: 0.5rem;
140
+ }
141
+
142
+ /* Connect Prompt */
143
+ .connect-prompt {
144
+ text-align: center;
145
+ margin-bottom: calc(var(--section-spacing) * 2);
146
+ }
147
+
148
+ .connect-prompt h3 {
149
+ font-size: 1.5rem;
150
+ font-weight: 700;
151
+ color: var(--text-color);
152
+ margin-bottom: 1rem;
153
+ display: flex;
154
+ align-items: center;
155
+ justify-content: center;
156
+ gap: 8px;
157
+ }
158
+
159
+ .connect-prompt p {
160
+ color: var(--text-secondary);
161
+ margin-bottom: calc(var(--card-spacing) * 1.25);
162
+ font-size: 1rem;
163
+ line-height: 1.5;
164
+ }
165
+
166
+ .space-y-2 {
167
+ display: flex;
168
+ justify-content: center;
169
+ margin-top: var(--card-spacing);
170
+ }
171
+
172
+ .wallet-connect-btn {
173
+ min-width: 160px !important;
174
+ background: var(--button-primary-bg);
175
+ color: var(--primary-button-text);
176
+ border: none;
177
+ font-weight: 600;
178
+ padding: 0.75rem 1.5rem;
179
+ border-radius: 12px;
180
+ font-size: 0.925rem;
181
+ cursor: pointer;
182
+ transition: all 0.2s ease;
183
+ }
184
+
185
+ .wallet-connect-btn:hover:not(:disabled) {
186
+ background: var(--button-primary-hover);
187
+ transform: translateY(-1px);
188
+ box-shadow: 0 4px 12px rgba(49, 130, 206, 0.3);
189
+ }
190
+
191
+ /* Card Styles */
192
+ .card {
193
+ background: var(--card-bg);
194
+ border: 1px solid var(--card-border);
195
+ border-radius: 16px;
196
+ padding: var(--card-spacing);
197
+ margin-bottom: var(--section-spacing);
198
+ box-shadow: 0 1px 3px var(--card-shadow);
199
+ }
200
+
201
+ .card h3 {
202
+ font-size: 1.25rem;
203
+ font-weight: 600;
204
+ color: var(--text-color);
205
+ margin-bottom: var(--card-spacing);
206
+ display: flex;
207
+ align-items: center;
208
+ justify-content: space-between;
209
+ gap: 8px;
210
+ }
211
+
212
+ .card h3 button {
213
+ font-size: 0.875rem;
214
+ padding: 0.5rem 1rem;
215
+ margin-left: auto;
216
+ }
217
+
218
+ /* Button Styles */
219
+ button {
220
+ padding: 0.75rem 1.5rem;
221
+ border-radius: 12px;
222
+ font-size: 0.925rem;
223
+ font-weight: 500;
224
+ cursor: pointer;
225
+ transition: all 0.2s ease;
226
+ display: inline-flex;
227
+ align-items: center;
228
+ justify-content: center;
229
+ gap: 8px;
230
+ }
231
+
232
+ /* Primary Button */
233
+ button.primary,
234
+ .wallet-connect-btn {
235
+ background: var(--button-primary-bg);
236
+ color: white;
237
+ border: none;
238
+ font-weight: 600;
239
+ }
240
+
241
+ button.primary:hover:not(:disabled),
242
+ .wallet-connect-btn:hover:not(:disabled) {
243
+ background: var(--button-primary-hover);
244
+ transform: translateY(-1px);
245
+ box-shadow: 0 4px 12px rgba(49, 130, 206, 0.3);
246
+ }
247
+
248
+ /* Secondary Button */
249
+ button:not(.primary):not(.wallet-connect-btn) {
250
+ background: var(--button-secondary-bg);
251
+ border: 1px solid var(--button-secondary-border);
252
+ color: var(--button-secondary-text);
253
+ }
254
+
255
+ button:not(.primary):not(.wallet-connect-btn):hover:not(:disabled) {
256
+ background: var(--button-secondary-hover);
257
+ border-color: var(--button-secondary-border);
258
+ }
259
+
260
+ /* Disabled Button State */
261
+ button:disabled {
262
+ opacity: 0.6;
263
+ cursor: not-allowed;
264
+ transform: none !important;
265
+ box-shadow: none !important;
266
+ }
267
+
268
+ /* Form Elements */
269
+ .form-group {
270
+ margin-bottom: var(--card-spacing);
271
+ }
272
+
273
+ .form-group label {
274
+ display: block;
275
+ margin-bottom: 8px;
276
+ font-weight: 500;
277
+ color: var(--text-color);
278
+ }
279
+
280
+ input {
281
+ width: 100%;
282
+ padding: 0.75rem 1rem;
283
+ border: 1px solid var(--input-border);
284
+ border-radius: 12px;
285
+ background: var(--input-bg);
286
+ color: var(--input-text);
287
+ font-size: 0.925rem;
288
+ transition: all 0.2s ease;
289
+ }
290
+
291
+ input:focus {
292
+ outline: none;
293
+ border-color: var(--button-primary-bg);
294
+ box-shadow: 0 0 0 3px rgba(49, 130, 206, 0.1);
295
+ }
296
+
297
+ /* Status Sections */
298
+ .status {
299
+ margin-top: var(--card-spacing);
300
+ padding: 12px 16px;
301
+ border-radius: 8px;
302
+ font-size: 0.925rem;
303
+ }
304
+
305
+ .status.loading {
306
+ background: #e3f2fd;
307
+ border: 1px solid #2196f3;
308
+ color: #1976d2;
309
+ }
310
+
311
+ .status.success {
312
+ background: var(--success-bg);
313
+ border: 1px solid var(--success-border);
314
+ color: var(--success-text);
315
+ }
316
+
317
+ .status.success a {
318
+ color: var(--link-color);
319
+ text-decoration: none;
320
+ font-weight: 600;
321
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
322
+ font-size: 0.875rem;
323
+ word-break: break-all;
324
+ }
325
+
326
+ .status.success a:hover {
327
+ color: var(--link-hover);
328
+ text-decoration: underline;
329
+ }
330
+
331
+ .status.error {
332
+ background: #ffebee;
333
+ border: 1px solid #f44336;
334
+ color: #c62828;
335
+ }
336
+
337
+ .status p {
338
+ margin-bottom: 8px;
339
+ }
340
+
341
+ .status p:last-child {
342
+ margin-bottom: 0;
343
+ }
344
+
345
+ .status strong {
346
+ font-weight: 600;
347
+ margin-right: 4px;
348
+ }
349
+
350
+ .status-header {
351
+ display: flex;
352
+ align-items: center;
353
+ justify-content: space-between;
354
+ margin-bottom: var(--card-spacing);
355
+ }
356
+
357
+ .status-header h3 {
358
+ margin-bottom: 0;
359
+ }
360
+
361
+ .status-header button {
362
+ margin-left: auto;
363
+ }
364
+
365
+ /* Address Display */
366
+ .address-display {
367
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
368
+ font-size: 0.875rem;
369
+ background: var(--monospace-bg);
370
+ padding: 0.75rem 1rem;
371
+ border-radius: 8px;
372
+ border: 1px solid var(--monospace-border);
373
+ color: var(--monospace-text);
374
+ word-break: break-all;
375
+ }
376
+
377
+ /* Footer */
378
+ .app-footer {
379
+ margin-top: calc(var(--section-spacing) * 1.5);
380
+ padding-top: var(--card-spacing);
381
+ border-top: 1px solid var(--card-border);
382
+ text-align: center;
383
+ color: var(--text-secondary);
384
+ }
385
+
386
+ .app-footer a {
387
+ color: var(--link-color);
388
+ text-decoration: none;
389
+ font-weight: 500;
390
+ }
391
+
392
+ .app-footer a:hover {
393
+ text-decoration: underline;
394
+ }
395
+
396
+ /* Info Rows */
397
+ .info-row {
398
+ display: flex;
399
+ justify-content: space-between;
400
+ align-items: center;
401
+ padding: 0.75rem 0;
402
+ border-bottom: 1px solid var(--card-border);
403
+ gap: var(--card-spacing);
404
+ }
405
+
406
+ .info-row:last-child {
407
+ border-bottom: none;
408
+ padding-bottom: 0.5rem;
409
+ margin-bottom: 1rem;
410
+ }
411
+
412
+ .info-row:first-child {
413
+ padding-top: 0;
414
+ }
415
+
416
+ .info-row label {
417
+ color: var(--text-secondary);
418
+ font-weight: 500;
419
+ font-size: 0.9em;
420
+ flex-shrink: 0;
421
+ }
422
+
423
+ .info-row .value {
424
+ color: var(--text-color);
425
+ font-weight: 500;
426
+ text-align: right;
427
+ word-break: break-all;
428
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
429
+ font-size: 0.875rem;
430
+ }
431
+
432
+ /* Theme Toggle */
433
+ .theme-toggle {
434
+ position: fixed;
435
+ left: 20px;
436
+ bottom: 20px;
437
+ width: 40px;
438
+ height: 40px;
439
+ border-radius: 50%;
440
+ background: var(--card-bg);
441
+ border: 1px solid var(--card-border);
442
+ box-shadow: 0 2px 8px var(--card-shadow);
443
+ display: flex;
444
+ align-items: center;
445
+ justify-content: center;
446
+ cursor: pointer;
447
+ transition: all 0.2s ease;
448
+ z-index: 100;
449
+ }
450
+
451
+ .theme-toggle:hover {
452
+ transform: translateY(-1px);
453
+ box-shadow: 0 4px 12px var(--card-shadow);
454
+ }
455
+
456
+ /* Utility classes */
457
+ .monospace {
458
+ font-family: monospace;
459
+ font-size: 0.9em;
460
+ background: var(--monospace-bg);
461
+ padding: 4px 8px;
462
+ border-radius: 4px;
463
+ border: 1px solid var(--monospace-border);
464
+ color: var(--monospace-text);
465
+ }
466
+
467
+ .error-text {
468
+ color: #e53e3e;
469
+ font-size: 0.9em;
470
+ margin-top: 4px;
471
+ }
472
+
473
+ /* Transaction Success */
474
+ .transaction-success {
475
+ margin-top: var(--card-spacing);
476
+ padding: 12px 16px;
477
+ background: var(--success-bg);
478
+ border: 1px solid var(--success-border);
479
+ border-radius: 8px;
480
+ color: var(--success-text);
481
+ font-weight: 500;
482
+ display: flex;
483
+ align-items: center;
484
+ gap: 8px;
485
+ }
486
+
487
+ .transaction-success a {
488
+ color: var(--link-color);
489
+ text-decoration: none;
490
+ font-weight: 600;
491
+ margin-left: 4px;
492
+ }
493
+
494
+ .transaction-success a:hover {
495
+ color: var(--link-hover);
496
+ text-decoration: underline;
497
+ }
498
+
499
+ /* Wallet Connection */
500
+ .wallet-connect {
501
+ text-align: center;
502
+ margin-bottom: var(--section-spacing);
503
+ padding: calc(var(--card-spacing) * 1.5) var(--card-spacing);
504
+ background: var(--card-bg);
505
+ border: 1px solid var(--card-border);
506
+ border-radius: 16px;
507
+ box-shadow: 0 1px 3px var(--card-shadow);
508
+ }
509
+
510
+ .wallet-connect h2 {
511
+ font-size: 1.5rem;
512
+ font-weight: 700;
513
+ color: var(--text-color);
514
+ margin-bottom: 1rem;
515
+ display: flex;
516
+ align-items: center;
517
+ justify-content: center;
518
+ gap: 8px;
519
+ }
520
+
521
+ .wallet-connect p {
522
+ color: var(--text-secondary);
523
+ margin-bottom: calc(var(--card-spacing) * 1.25);
524
+ font-size: 1rem;
525
+ line-height: 1.5;
526
+ }
527
+
528
+ .wallet-connect button {
529
+ width: 100%;
530
+ max-width: 280px;
531
+ margin: 0 auto;
532
+ }
533
+
534
+ /* Responsive Adjustments */
535
+ @media (max-width: 640px) {
536
+ :root {
537
+ --section-spacing: 24px;
538
+ --card-spacing: 20px;
539
+ }
540
+
541
+ .container {
542
+ padding: 0 16px;
543
+ }
544
+
545
+ .card {
546
+ padding: 20px;
547
+ }
548
+
549
+ button {
550
+ width: 100%;
551
+ }
552
+ }
553
+
554
+ /* Success and Error Messages */
555
+ .success-message,
556
+ .error-message {
557
+ margin-top: var(--card-spacing);
558
+ padding: 12px 16px;
559
+ border-radius: 8px;
560
+ font-size: 0.925rem;
561
+ word-break: break-word;
562
+ overflow-wrap: break-word;
563
+ }
564
+
565
+ .success-message {
566
+ background: var(--success-bg);
567
+ border: 1px solid var(--success-border);
568
+ color: var(--success-text);
569
+ }
570
+
571
+ .success-message p {
572
+ margin-bottom: 8px;
573
+ }
574
+
575
+ .success-message a {
576
+ color: var(--link-color);
577
+ text-decoration: none;
578
+ font-weight: 500;
579
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
580
+ font-size: 0.875rem;
581
+ display: block;
582
+ margin-top: 8px;
583
+ }
584
+
585
+ .success-message a:hover {
586
+ color: var(--link-hover);
587
+ text-decoration: underline;
588
+ }
589
+
590
+ .error-message {
591
+ background: #ffebee;
592
+ border: 1px solid #f44336;
593
+ color: #c62828;
594
+ }
595
+
596
+ .error-message p {
597
+ margin-bottom: 8px;
598
+ }
599
+
600
+ .error-message p:last-child {
601
+ margin-bottom: 0;
602
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
603
+ font-size: 0.875rem;
604
+ }