@northlight/ui 2.41.1 → 2.42.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.
@@ -1,180 +1,563 @@
1
+ /* Design System Variables */
2
+ :root {
3
+ --sandbox-bg: #faf9f7;
4
+ --sandbox-card: #f5f4f0;
5
+ --sandbox-secondary: #edebe5;
6
+ --sandbox-border: #e5e0d5;
7
+ --sandbox-input: #eae5dc;
8
+ --sandbox-accent: #f97316;
9
+ --sandbox-accent-hover: #ea580c;
10
+ --sandbox-accent-light: rgba(249, 115, 22, 0.1);
11
+ --sandbox-text: #1c1917;
12
+ --sandbox-text-muted: #766f65;
13
+ --sandbox-text-secondary: #a8a29e;
14
+ --sandbox-destructive: #dc2626;
15
+ --sandbox-destructive-light: #fef2f2;
16
+ --sandbox-radius-lg: 12px;
17
+ --sandbox-radius-md: 10px;
18
+ --sandbox-radius-sm: 8px;
19
+ }
20
+
1
21
  * {
2
22
  box-sizing: border-box;
3
23
  }
4
24
 
5
25
  body {
6
26
  margin: 0;
7
- background: #f8fafc;
27
+ background: var(--sandbox-bg);
28
+ font-family: Arial, Helvetica, sans-serif;
8
29
  }
9
30
 
31
+ /* Main Layout */
10
32
  .sandbox-viewer {
11
33
  display: flex;
12
34
  height: 100vh;
13
- font-family:
14
- -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
15
- color: #1e293b;
35
+ font-family: Arial, Helvetica, sans-serif;
36
+ color: var(--sandbox-text);
16
37
  }
17
38
 
39
+ /* Sidebar */
18
40
  .sandbox-sidebar {
19
- width: 220px;
20
- background: #ffffff;
21
- border-right: 1px solid #e2e8f0;
22
- padding: 20px 0;
23
- overflow-y: auto;
41
+ width: 256px;
42
+ background: var(--sandbox-bg);
43
+ border-right: 1px solid var(--sandbox-border);
44
+ display: flex;
45
+ flex-direction: column;
24
46
  flex-shrink: 0;
47
+ overflow: hidden;
48
+ }
49
+
50
+ .sandbox-logo {
51
+ display: flex;
52
+ align-items: center;
53
+ gap: 8px;
54
+ padding: 16px;
55
+ border-bottom: 1px solid var(--sandbox-border);
56
+ }
57
+
58
+ .sandbox-logo-icon {
59
+ width: 28px;
60
+ height: 28px;
61
+ border-radius: var(--sandbox-radius-sm);
62
+ background: var(--sandbox-text);
63
+ color: var(--sandbox-bg);
64
+ display: flex;
65
+ align-items: center;
66
+ justify-content: center;
67
+ font-size: 14px;
68
+ font-weight: bold;
69
+ }
70
+
71
+ .sandbox-logo-text {
72
+ font-weight: 600;
73
+ font-size: 15px;
74
+ color: var(--sandbox-text);
75
+ letter-spacing: -0.01em;
25
76
  }
26
77
 
27
- .sandbox-search {
28
- padding: 0 12px 16px;
78
+ /* Sidebar Search */
79
+ .sandbox-sidebar-search {
80
+ padding: 12px;
29
81
  }
30
82
 
31
- .sandbox-search-input {
83
+ .sandbox-sidebar-search-input {
32
84
  width: 100%;
33
- padding: 8px 12px;
85
+ padding: 10px 12px;
34
86
  font-size: 13px;
35
- border: 1px solid #e2e8f0;
36
- border-radius: 6px;
37
- background: #f8fafc;
38
- color: #1e293b;
87
+ border: 1px solid var(--sandbox-border);
88
+ border-radius: var(--sandbox-radius-md);
89
+ background: var(--sandbox-bg);
90
+ color: var(--sandbox-text);
39
91
  outline: none;
40
92
  transition: all 0.15s ease;
41
93
  }
42
94
 
43
- .sandbox-search-input::placeholder {
44
- color: #94a3b8;
95
+ .sandbox-sidebar-search-input::placeholder {
96
+ color: var(--sandbox-text-secondary);
45
97
  }
46
98
 
47
- .sandbox-search-input:focus {
48
- border-color: #7c3aed;
49
- background: #ffffff;
50
- box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.1);
99
+ .sandbox-sidebar-search-input:focus {
100
+ border-color: var(--sandbox-accent);
101
+ box-shadow: 0 0 0 3px var(--sandbox-accent-light);
51
102
  }
52
103
 
53
- .sandbox-title {
54
- font-size: 11px;
104
+ /* Sidebar Navigation */
105
+ .sandbox-nav {
106
+ flex: 1;
107
+ overflow-y: auto;
108
+ padding: 0 12px;
109
+ }
110
+
111
+ .sandbox-nav-section {
112
+ margin-bottom: 16px;
113
+ }
114
+
115
+ .sandbox-nav-title {
116
+ font-size: 10px;
55
117
  font-weight: 600;
56
118
  text-transform: uppercase;
57
- color: #94a3b8;
58
- padding: 0 20px 16px;
119
+ color: var(--sandbox-text-secondary);
120
+ padding: 8px 12px;
59
121
  letter-spacing: 0.08em;
60
122
  }
61
123
 
62
- .sandbox-component {
63
- display: block;
124
+ .sandbox-nav-item {
125
+ display: flex;
126
+ align-items: center;
127
+ gap: 12px;
64
128
  width: 100%;
65
- padding: 10px 20px;
129
+ padding: 10px 12px;
66
130
  background: none;
67
131
  border: none;
132
+ border-radius: var(--sandbox-radius-md);
68
133
  text-align: left;
69
134
  cursor: pointer;
70
135
  font-size: 14px;
71
- color: #475569;
136
+ color: var(--sandbox-text-muted);
72
137
  transition: all 0.15s ease;
73
138
  }
74
139
 
75
- .sandbox-component:hover {
76
- background: #f1f5f9;
77
- color: #1e293b;
140
+ .sandbox-nav-item:hover {
141
+ background: var(--sandbox-secondary);
142
+ color: var(--sandbox-text);
78
143
  }
79
144
 
80
- .sandbox-component.selected {
81
- background: linear-gradient(to right, #ede9fe, #f1f5f9);
82
- color: #6d28d9;
145
+ .sandbox-nav-item.selected {
146
+ background: var(--sandbox-secondary);
147
+ color: var(--sandbox-text);
83
148
  font-weight: 500;
84
- border-left: 3px solid #7c3aed;
85
- padding-left: 17px;
86
149
  }
87
150
 
88
- .sandbox-main {
151
+ .sandbox-nav-item-icon {
152
+ width: 16px;
153
+ height: 16px;
154
+ display: flex;
155
+ align-items: center;
156
+ justify-content: center;
157
+ font-size: 12px;
158
+ border: 1px dashed var(--sandbox-text-secondary);
159
+ border-radius: 4px;
160
+ color: var(--sandbox-text-secondary);
161
+ }
162
+
163
+ /* Content Area */
164
+ .sandbox-content {
89
165
  flex: 1;
90
166
  display: flex;
91
167
  flex-direction: column;
168
+ min-width: 0;
92
169
  overflow: hidden;
93
- background: #f8fafc;
94
170
  }
95
171
 
96
- .sandbox-tabs {
172
+ /* Main Content */
173
+ .sandbox-main {
174
+ flex: 1;
175
+ overflow-y: auto;
176
+ background: var(--sandbox-bg);
177
+ }
178
+
179
+ /* Hero Section */
180
+ .sandbox-hero {
181
+ padding: 48px 32px;
182
+ text-align: center;
183
+ border-bottom: 1px solid var(--sandbox-border);
184
+ background: linear-gradient(to bottom, var(--sandbox-secondary), transparent);
185
+ }
186
+
187
+ .sandbox-hero-title {
188
+ font-size: 32px;
189
+ font-weight: 700;
190
+ color: var(--sandbox-text);
191
+ letter-spacing: -0.02em;
192
+ margin: 0 0 12px;
193
+ }
194
+
195
+ .sandbox-hero-description {
196
+ font-size: 18px;
197
+ color: var(--sandbox-text-muted);
198
+ margin: 0 auto;
199
+ max-width: 600px;
200
+ }
201
+
202
+ .sandbox-hero-stats {
97
203
  display: flex;
98
204
  align-items: center;
99
- gap: 4px;
100
- padding: 0 24px;
101
- background: #ffffff;
102
- border-bottom: 1px solid #e2e8f0;
103
- min-height: 52px;
104
- overflow-x: auto;
105
- flex-wrap: wrap;
205
+ justify-content: center;
206
+ gap: 32px;
207
+ margin-top: 32px;
106
208
  }
107
209
 
108
- .sandbox-tab {
109
- padding: 14px 16px;
110
- min-width: 100px;
210
+ .sandbox-hero-stat {
111
211
  text-align: center;
112
- background: none;
113
- border: none;
114
- border-bottom: 2px solid transparent;
212
+ }
213
+
214
+ .sandbox-hero-stat-value {
215
+ font-size: 24px;
216
+ font-weight: 700;
217
+ color: var(--sandbox-text);
218
+ }
219
+
220
+ .sandbox-hero-stat-label {
221
+ font-size: 14px;
222
+ color: var(--sandbox-text-muted);
223
+ }
224
+
225
+ .sandbox-hero-divider {
226
+ width: 1px;
227
+ height: 32px;
228
+ background: var(--sandbox-border);
229
+ }
230
+
231
+ /* Component Grid */
232
+ .sandbox-grid {
233
+ display: grid;
234
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
235
+ gap: 24px;
236
+ padding: 32px;
237
+ max-width: 1200px;
238
+ margin: 0 auto;
239
+ }
240
+
241
+ /* Component Card */
242
+ .sandbox-card {
243
+ position: relative;
244
+ border-radius: var(--sandbox-radius-lg);
245
+ border: 1px solid var(--sandbox-border);
246
+ background: var(--sandbox-card);
247
+ overflow: hidden;
115
248
  cursor: pointer;
116
- font-size: 13px;
249
+ transition: all 0.3s ease;
250
+ }
251
+
252
+ .sandbox-card:hover {
253
+ border-color: rgba(249, 115, 22, 0.5);
254
+ box-shadow: 0 8px 24px rgba(249, 115, 22, 0.08);
255
+ }
256
+
257
+ .sandbox-card-preview {
258
+ aspect-ratio: 4 / 3;
259
+ padding: 24px;
260
+ display: flex;
261
+ align-items: center;
262
+ justify-content: center;
263
+ background: #ffffff;
264
+ position: relative;
265
+ }
266
+
267
+ .sandbox-card-actions {
268
+ position: absolute;
269
+ inset: 0;
270
+ background: rgba(28, 25, 23, 0.05);
271
+ backdrop-filter: blur(2px);
272
+ display: flex;
273
+ align-items: center;
274
+ justify-content: center;
275
+ gap: 8px;
276
+ opacity: 0;
277
+ pointer-events: none;
278
+ transition: opacity 0.2s ease;
279
+ }
280
+
281
+ .sandbox-card:hover .sandbox-card-actions {
282
+ opacity: 1;
283
+ pointer-events: auto;
284
+ }
285
+
286
+ .sandbox-card-btn {
287
+ display: flex;
288
+ align-items: center;
289
+ gap: 8px;
290
+ padding: 8px 16px;
291
+ border-radius: var(--sandbox-radius-md);
292
+ font-size: 14px;
117
293
  font-weight: 500;
118
- color: #64748b;
119
- margin-bottom: -1px;
294
+ cursor: pointer;
120
295
  transition: all 0.15s ease;
121
- border-radius: 6px 6px 0 0;
122
296
  }
123
297
 
124
- .sandbox-tab:hover {
125
- color: #475569;
126
- background: #f8fafc;
298
+ .sandbox-card-btn-secondary {
299
+ background: rgba(250, 249, 247, 0.95);
300
+ border: 1px solid var(--sandbox-border);
301
+ color: var(--sandbox-text);
127
302
  }
128
303
 
129
- .sandbox-tab.selected {
130
- color: #7c3aed;
131
- border-bottom-color: #7c3aed;
132
- background: none;
304
+ .sandbox-card-btn-secondary:hover {
305
+ background: var(--sandbox-bg);
133
306
  }
134
307
 
135
- .sandbox-play {
136
- margin-left: auto;
137
- padding: 8px 16px;
138
- background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%);
308
+ .sandbox-card-btn-primary {
309
+ background: var(--sandbox-accent);
310
+ border: none;
139
311
  color: white;
312
+ }
313
+
314
+ .sandbox-card-btn-primary:hover {
315
+ background: var(--sandbox-accent-hover);
316
+ }
317
+
318
+ .sandbox-card-info {
319
+ padding: 16px;
320
+ border-top: 1px solid var(--sandbox-border);
321
+ }
322
+
323
+ .sandbox-card-title {
324
+ font-weight: 500;
325
+ color: var(--sandbox-text);
326
+ margin: 0;
327
+ }
328
+
329
+ .sandbox-card-description {
330
+ font-size: 14px;
331
+ color: var(--sandbox-text-muted);
332
+ margin: 4px 0 0;
333
+ overflow: hidden;
334
+ text-overflow: ellipsis;
335
+ white-space: nowrap;
336
+ }
337
+
338
+ /* Component Detail View */
339
+ .sandbox-detail {
340
+ padding: 32px;
341
+ max-width: 900px;
342
+ margin: 0 auto;
343
+ }
344
+
345
+ .sandbox-detail-back {
346
+ display: inline-flex;
347
+ align-items: center;
348
+ gap: 8px;
349
+ padding: 0;
350
+ background: none;
351
+ border: none;
352
+ font-size: 14px;
353
+ color: var(--sandbox-text-muted);
354
+ cursor: pointer;
355
+ margin-bottom: 24px;
356
+ transition: color 0.15s ease;
357
+ }
358
+
359
+ .sandbox-detail-back:hover {
360
+ color: var(--sandbox-text);
361
+ }
362
+
363
+ .sandbox-detail-header {
364
+ display: flex;
365
+ align-items: flex-start;
366
+ justify-content: space-between;
367
+ margin-bottom: 32px;
368
+ }
369
+
370
+ .sandbox-detail-title-row {
371
+ display: flex;
372
+ align-items: center;
373
+ gap: 12px;
374
+ margin-bottom: 8px;
375
+ }
376
+
377
+ .sandbox-detail-title {
378
+ font-size: 28px;
379
+ font-weight: 700;
380
+ color: var(--sandbox-text);
381
+ letter-spacing: -0.02em;
382
+ margin: 0;
383
+ }
384
+
385
+ .sandbox-detail-badge {
386
+ display: inline-flex;
387
+ align-items: center;
388
+ padding: 4px 10px;
389
+ font-size: 12px;
390
+ font-weight: 500;
391
+ color: var(--sandbox-text-muted);
392
+ background: var(--sandbox-secondary);
393
+ border-radius: 9999px;
394
+ }
395
+
396
+ .sandbox-detail-description {
397
+ font-size: 18px;
398
+ color: var(--sandbox-text-muted);
399
+ margin: 0;
400
+ }
401
+
402
+ .sandbox-detail-favorite {
403
+ width: 40px;
404
+ height: 40px;
405
+ display: flex;
406
+ align-items: center;
407
+ justify-content: center;
408
+ background: none;
140
409
  border: none;
141
- border-radius: 6px;
410
+ border-radius: var(--sandbox-radius-md);
411
+ color: var(--sandbox-text-muted);
142
412
  cursor: pointer;
413
+ transition: all 0.15s ease;
414
+ }
415
+
416
+ .sandbox-detail-favorite:hover {
417
+ background: var(--sandbox-secondary);
418
+ color: var(--sandbox-text);
419
+ }
420
+
421
+ .sandbox-detail-favorite.active {
422
+ color: var(--sandbox-accent);
423
+ background: var(--sandbox-accent-light);
424
+ }
425
+
426
+ /* Scenario Cards */
427
+ .sandbox-scenarios {
428
+ display: flex;
429
+ flex-direction: column;
430
+ gap: 24px;
431
+ }
432
+
433
+ .sandbox-scenario-card {
434
+ border-radius: var(--sandbox-radius-lg);
435
+ border: 1px solid var(--sandbox-border);
436
+ background: var(--sandbox-card);
437
+ }
438
+
439
+ .sandbox-scenario-header {
440
+ display: flex;
441
+ align-items: center;
442
+ justify-content: space-between;
443
+ padding: 12px 20px;
444
+ border-bottom: 1px solid var(--sandbox-border);
445
+ background: rgba(237, 235, 229, 0.3);
446
+ }
447
+
448
+ .sandbox-scenario-info h3 {
449
+ font-size: 15px;
450
+ font-weight: 500;
451
+ color: var(--sandbox-text);
452
+ margin: 0;
453
+ }
454
+
455
+ .sandbox-scenario-info p {
456
+ font-size: 13px;
457
+ color: var(--sandbox-text-muted);
458
+ margin: 4px 0 0;
459
+ }
460
+
461
+ .sandbox-scenario-actions {
462
+ display: flex;
463
+ align-items: center;
464
+ gap: 8px;
465
+ }
466
+
467
+ .sandbox-scenario-btn {
468
+ display: inline-flex;
469
+ align-items: center;
470
+ gap: 6px;
471
+ padding: 6px 12px;
472
+ border-radius: var(--sandbox-radius-sm);
143
473
  font-size: 13px;
144
474
  font-weight: 500;
475
+ cursor: pointer;
145
476
  transition: all 0.15s ease;
146
- box-shadow: 0 1px 2px rgba(124, 58, 237, 0.2);
147
477
  }
148
478
 
149
- .sandbox-play:hover {
150
- background: linear-gradient(135deg, #6d28d9 0%, #5b21b6 100%);
151
- box-shadow: 0 2px 4px rgba(124, 58, 237, 0.3);
152
- transform: translateY(-1px);
479
+ .sandbox-scenario-btn-toggle {
480
+ background: var(--sandbox-secondary);
481
+ border: none;
482
+ color: var(--sandbox-text);
153
483
  }
154
484
 
155
- .sandbox-play:disabled {
156
- background: #cbd5e1;
485
+ .sandbox-scenario-btn-toggle:hover {
486
+ background: var(--sandbox-border);
487
+ }
488
+
489
+ .sandbox-scenario-btn-toggle.active {
490
+ background: var(--sandbox-text);
491
+ color: var(--sandbox-bg);
492
+ }
493
+
494
+ .sandbox-scenario-btn-copy {
495
+ background: var(--sandbox-accent);
496
+ border: none;
497
+ color: white;
498
+ }
499
+
500
+ .sandbox-scenario-btn-copy:hover {
501
+ background: var(--sandbox-accent-hover);
502
+ }
503
+
504
+ .sandbox-scenario-btn-play {
505
+ background: var(--sandbox-accent);
506
+ border: none;
507
+ color: white;
508
+ }
509
+
510
+ .sandbox-scenario-btn-play:hover {
511
+ background: var(--sandbox-accent-hover);
512
+ }
513
+
514
+ .sandbox-scenario-btn-play:disabled {
515
+ background: var(--sandbox-border);
516
+ color: var(--sandbox-text-muted);
157
517
  cursor: not-allowed;
158
- box-shadow: none;
159
- transform: none;
160
518
  }
161
519
 
162
- .sandbox-preview {
163
- flex: 1;
520
+ .sandbox-scenario-btn-play.error {
521
+ background: var(--sandbox-destructive);
522
+ }
523
+
524
+ .sandbox-scenario-content {
525
+ padding: 24px;
526
+ }
527
+
528
+ .sandbox-scenario-preview {
164
529
  padding: 32px;
165
- overflow: auto;
530
+ background: #ffffff;
531
+ border-radius: var(--sandbox-radius-md);
532
+ border: 1px solid var(--sandbox-border);
533
+ }
534
+
535
+ .sandbox-scenario-code {
536
+ background: rgba(28, 25, 23, 0.03);
537
+ border-radius: var(--sandbox-radius-md);
538
+ padding: 16px;
539
+ overflow-x: auto;
540
+ }
541
+
542
+ .sandbox-scenario-code pre {
543
+ margin: 0;
544
+ font-family: ui-monospace, monospace;
545
+ font-size: 13px;
546
+ color: rgba(28, 25, 23, 0.8);
547
+ white-space: pre-wrap;
548
+ word-break: break-word;
166
549
  }
167
550
 
551
+ /* Error States */
168
552
  .sandbox-error {
169
- background: #fef2f2;
553
+ background: var(--sandbox-destructive-light);
170
554
  border: 1px solid #fecaca;
171
- border-radius: 8px;
555
+ border-radius: var(--sandbox-radius-md);
172
556
  padding: 20px;
173
- font-family: system-ui, -apple-system, sans-serif;
174
557
  }
175
558
 
176
559
  .sandbox-error-title {
177
- color: #dc2626;
560
+ color: var(--sandbox-destructive);
178
561
  font-weight: 600;
179
562
  font-size: 14px;
180
563
  margin-bottom: 12px;
@@ -186,7 +569,7 @@ body {
186
569
  font-size: 13px;
187
570
  margin: 0 0 12px;
188
571
  padding: 12px;
189
- background: #fff;
572
+ background: white;
190
573
  border-radius: 4px;
191
574
  border: 1px solid #fecaca;
192
575
  white-space: pre-wrap;
@@ -199,15 +582,61 @@ body {
199
582
  font-size: 11px;
200
583
  margin: 0;
201
584
  padding: 12px;
202
- background: #fff;
585
+ background: white;
203
586
  border-radius: 4px;
204
- border: 1px solid #e5e7eb;
587
+ border: 1px solid var(--sandbox-border);
205
588
  white-space: pre-wrap;
206
589
  word-break: break-word;
207
590
  max-height: 300px;
208
591
  overflow: auto;
209
592
  }
210
593
 
594
+ .sandbox-play-error {
595
+ margin-top: 16px;
596
+ background: var(--sandbox-destructive-light);
597
+ border: 1px solid #fecaca;
598
+ border-radius: var(--sandbox-radius-md);
599
+ padding: 16px;
600
+ }
601
+
602
+ .sandbox-play-error-title {
603
+ color: var(--sandbox-destructive);
604
+ font-weight: 600;
605
+ font-size: 13px;
606
+ margin-bottom: 8px;
607
+ display: flex;
608
+ align-items: center;
609
+ gap: 6px;
610
+ }
611
+
612
+ .sandbox-play-error-title::before {
613
+ content: "✕";
614
+ display: inline-flex;
615
+ align-items: center;
616
+ justify-content: center;
617
+ width: 18px;
618
+ height: 18px;
619
+ background: var(--sandbox-destructive);
620
+ color: white;
621
+ border-radius: 50%;
622
+ font-size: 10px;
623
+ font-weight: bold;
624
+ }
625
+
626
+ .sandbox-play-error-message {
627
+ color: #b91c1c;
628
+ font-family: ui-monospace, monospace;
629
+ font-size: 12px;
630
+ margin: 0;
631
+ padding: 10px;
632
+ background: white;
633
+ border-radius: 4px;
634
+ border: 1px solid #fecaca;
635
+ white-space: pre-wrap;
636
+ word-break: break-word;
637
+ }
638
+
639
+ /* Legacy support for inline scenarios */
211
640
  .sandbox-inline {
212
641
  flex: 1;
213
642
  padding: 24px;
@@ -226,7 +655,7 @@ body {
226
655
  .sandbox-inline-label {
227
656
  font-size: 12px;
228
657
  font-weight: 500;
229
- color: #64748b;
658
+ color: var(--sandbox-text-muted);
230
659
  text-transform: uppercase;
231
660
  letter-spacing: 0.05em;
232
661
  width: 100px;
@@ -235,10 +664,10 @@ body {
235
664
 
236
665
  .sandbox-inline-preview {
237
666
  flex: 1;
238
- background: #ffffff;
239
- border-radius: 8px;
667
+ background: var(--sandbox-card);
668
+ border-radius: var(--sandbox-radius-md);
240
669
  padding: 16px;
241
- border: 1px solid #e2e8f0;
670
+ border: 1px solid var(--sandbox-border);
242
671
  }
243
672
 
244
673
  .sandbox-play-slot {
@@ -250,79 +679,276 @@ body {
250
679
  width: 32px;
251
680
  height: 32px;
252
681
  padding: 0;
253
- background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%);
682
+ background: var(--sandbox-accent);
254
683
  color: white;
255
684
  border: none;
256
- border-radius: 6px;
685
+ border-radius: var(--sandbox-radius-sm);
257
686
  cursor: pointer;
258
687
  font-size: 12px;
259
688
  transition: all 0.15s ease;
260
689
  }
261
690
 
262
691
  .sandbox-play-inline:hover {
263
- background: linear-gradient(135deg, #6d28d9 0%, #5b21b6 100%);
692
+ background: var(--sandbox-accent-hover);
264
693
  transform: translateY(-1px);
265
694
  }
266
695
 
267
696
  .sandbox-play-inline:disabled {
268
- background: #cbd5e1;
697
+ background: var(--sandbox-border);
698
+ color: var(--sandbox-text-muted);
269
699
  cursor: not-allowed;
270
700
  transform: none;
271
701
  }
272
702
 
273
703
  .sandbox-play-inline.error {
274
- background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
704
+ background: var(--sandbox-destructive);
705
+ }
706
+
707
+ /* Legacy Tabs (for backwards compatibility) */
708
+ .sandbox-tabs {
709
+ display: flex;
710
+ align-items: center;
711
+ gap: 4px;
712
+ padding: 0 24px;
713
+ background: var(--sandbox-card);
714
+ border-bottom: 1px solid var(--sandbox-border);
715
+ min-height: 52px;
716
+ overflow-x: auto;
717
+ flex-wrap: wrap;
718
+ }
719
+
720
+ .sandbox-tab {
721
+ padding: 14px 16px;
722
+ min-width: 100px;
723
+ text-align: center;
724
+ background: none;
725
+ border: none;
726
+ border-bottom: 2px solid transparent;
727
+ cursor: pointer;
728
+ font-size: 13px;
729
+ font-weight: 500;
730
+ color: var(--sandbox-text-muted);
731
+ margin-bottom: -1px;
732
+ transition: all 0.15s ease;
733
+ border-radius: var(--sandbox-radius-sm) var(--sandbox-radius-sm) 0 0;
734
+ }
735
+
736
+ .sandbox-tab:hover {
737
+ color: var(--sandbox-text);
738
+ background: var(--sandbox-bg);
739
+ }
740
+
741
+ .sandbox-tab.selected {
742
+ color: var(--sandbox-accent);
743
+ border-bottom-color: var(--sandbox-accent);
744
+ background: none;
745
+ }
746
+
747
+ .sandbox-play {
748
+ margin-left: auto;
749
+ padding: 8px 16px;
750
+ background: var(--sandbox-accent);
751
+ color: white;
752
+ border: none;
753
+ border-radius: var(--sandbox-radius-sm);
754
+ cursor: pointer;
755
+ font-size: 13px;
756
+ font-weight: 500;
757
+ transition: all 0.15s ease;
758
+ }
759
+
760
+ .sandbox-play:hover {
761
+ background: var(--sandbox-accent-hover);
762
+ transform: translateY(-1px);
763
+ }
764
+
765
+ .sandbox-play:disabled {
766
+ background: var(--sandbox-border);
767
+ color: var(--sandbox-text-muted);
768
+ cursor: not-allowed;
769
+ transform: none;
275
770
  }
276
771
 
277
772
  .sandbox-play.error {
278
- background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
773
+ background: var(--sandbox-destructive);
279
774
  }
280
775
 
281
776
  .sandbox-play.error:hover {
282
- background: linear-gradient(135deg, #b91c1c 0%, #991b1b 100%);
777
+ background: #b91c1c;
283
778
  }
284
779
 
285
- .sandbox-play-error {
286
- margin-top: 16px;
287
- background: #fef2f2;
288
- border: 1px solid #fecaca;
289
- border-radius: 8px;
290
- padding: 16px;
780
+ .sandbox-preview {
781
+ flex: 1;
782
+ padding: 32px;
783
+ overflow: auto;
291
784
  }
292
785
 
293
- .sandbox-play-error-title {
294
- color: #dc2626;
295
- font-weight: 600;
296
- font-size: 13px;
297
- margin-bottom: 8px;
786
+ /* Tabbed Layout */
787
+ .sandbox-detail-tabbed {
788
+ padding: 32px;
789
+ width: 100%;
790
+ }
791
+
792
+ .sandbox-detail-tabbed .sandbox-detail-back {
793
+ margin-bottom: 24px;
794
+ }
795
+
796
+ .sandbox-detail-tabbed .sandbox-detail-header {
797
+ margin-bottom: 24px;
798
+ }
799
+
800
+ .sandbox-tabbed-card {
801
+ border-radius: var(--sandbox-radius-lg);
802
+ border: 1px solid var(--sandbox-border);
803
+ background: var(--sandbox-card);
804
+ overflow: hidden;
805
+ }
806
+
807
+ .sandbox-tabs-bar {
298
808
  display: flex;
299
809
  align-items: center;
300
- gap: 6px;
810
+ justify-content: space-between;
811
+ border-bottom: 1px solid var(--sandbox-border);
812
+ background: rgba(237, 235, 229, 0.3);
301
813
  }
302
814
 
303
- .sandbox-play-error-title::before {
304
- content: "✕";
305
- display: inline-flex;
815
+ .sandbox-tabs-list {
816
+ display: flex;
306
817
  align-items: center;
307
- justify-content: center;
308
- width: 18px;
309
- height: 18px;
310
- background: #dc2626;
311
- color: white;
312
- border-radius: 50%;
313
- font-size: 10px;
314
- font-weight: bold;
818
+ overflow-x: auto;
315
819
  }
316
820
 
317
- .sandbox-play-error-message {
318
- color: #b91c1c;
319
- font-family: ui-monospace, monospace;
320
- font-size: 12px;
821
+ .sandbox-tab-item {
822
+ padding: 14px 20px;
823
+ font-size: 14px;
824
+ font-weight: 500;
825
+ color: var(--sandbox-text-muted);
826
+ background: none;
827
+ border: none;
828
+ cursor: pointer;
829
+ position: relative;
830
+ white-space: nowrap;
831
+ transition: color 0.15s ease;
832
+ }
833
+
834
+ .sandbox-tab-item:hover {
835
+ color: var(--sandbox-text);
836
+ }
837
+
838
+ .sandbox-tab-item.active {
839
+ color: var(--sandbox-text);
840
+ }
841
+
842
+ .sandbox-tab-item.active::after {
843
+ content: '';
844
+ position: absolute;
845
+ bottom: 0;
846
+ left: 0;
847
+ right: 0;
848
+ height: 2px;
849
+ background: var(--sandbox-accent);
850
+ }
851
+
852
+ .sandbox-tabs-actions {
853
+ display: flex;
854
+ align-items: center;
855
+ gap: 8px;
856
+ padding: 0 16px;
857
+ }
858
+
859
+ .sandbox-tab-description {
860
+ padding: 12px 24px;
861
+ border-bottom: 1px solid rgba(229, 224, 213, 0.5);
862
+ background: rgba(237, 235, 229, 0.1);
863
+ }
864
+
865
+ .sandbox-tab-description p {
866
+ font-size: 14px;
867
+ color: var(--sandbox-text-muted);
321
868
  margin: 0;
322
- padding: 10px;
323
- background: #fff;
324
- border-radius: 4px;
325
- border: 1px solid #fecaca;
869
+ }
870
+
871
+ .sandbox-tab-content {
872
+ padding: 32px;
873
+ }
874
+
875
+ .sandbox-tab-preview {
876
+ min-height: 300px;
877
+ padding: 32px;
878
+ background: #ffffff;
879
+ border-radius: var(--sandbox-radius-md);
880
+ border: 1px solid var(--sandbox-border);
881
+ }
882
+
883
+ .sandbox-tab-code {
884
+ background: rgba(28, 25, 23, 0.03);
885
+ border-radius: var(--sandbox-radius-md);
886
+ padding: 24px;
887
+ overflow-x: auto;
888
+ }
889
+
890
+ .sandbox-tab-code pre {
891
+ margin: 0;
892
+ font-family: ui-monospace, monospace;
893
+ font-size: 13px;
894
+ color: rgba(28, 25, 23, 0.8);
326
895
  white-space: pre-wrap;
327
896
  word-break: break-word;
328
897
  }
898
+
899
+ .sandbox-nav-dots {
900
+ display: flex;
901
+ align-items: center;
902
+ justify-content: center;
903
+ gap: 8px;
904
+ margin-top: 24px;
905
+ }
906
+
907
+ .sandbox-nav-dot {
908
+ height: 8px;
909
+ border-radius: 9999px;
910
+ border: none;
911
+ cursor: pointer;
912
+ transition: all 0.2s ease;
913
+ padding: 0;
914
+ }
915
+
916
+ .sandbox-nav-dot.inactive {
917
+ width: 8px;
918
+ background: var(--sandbox-border);
919
+ }
920
+
921
+ .sandbox-nav-dot.inactive:hover {
922
+ background: var(--sandbox-text-muted);
923
+ }
924
+
925
+ .sandbox-nav-dot.active {
926
+ width: 24px;
927
+ background: var(--sandbox-accent);
928
+ }
929
+
930
+ /* Advanced badge */
931
+ .sandbox-badge-advanced {
932
+ display: inline-flex;
933
+ align-items: center;
934
+ padding: 4px 10px;
935
+ font-size: 12px;
936
+ font-weight: 500;
937
+ color: var(--sandbox-accent);
938
+ background: var(--sandbox-accent-light);
939
+ border: 1px solid rgba(249, 115, 22, 0.2);
940
+ border-radius: 9999px;
941
+ }
942
+
943
+ /* Utility classes */
944
+ .sr-only {
945
+ position: absolute;
946
+ width: 1px;
947
+ height: 1px;
948
+ padding: 0;
949
+ margin: -1px;
950
+ overflow: hidden;
951
+ clip: rect(0, 0, 0, 0);
952
+ white-space: nowrap;
953
+ border: 0;
954
+ }