juxscript 1.0.8 → 1.0.10

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,1131 +0,0 @@
1
- /**
2
- * Global Styles
3
- * Base + Components ONLY (NO layout styles)
4
- * Layout grid structures are in lib/layouts/{layout}.jux
5
- * Uses design tokens from tokens/{theme}.css
6
- */
7
-
8
- /* ===== BASE STYLES ===== */
9
-
10
-
11
- * {
12
- box-sizing: border-box;
13
- margin: 0;
14
- padding: 0;
15
- }
16
-
17
- body {
18
- font-family: var(--font-family-base);
19
- font-size: var(--font-size-base);
20
- line-height: var(--line-height-normal);
21
- color: var(--color-text-primary);
22
- background: var(--color-background);
23
- -webkit-font-smoothing: antialiased;
24
- -moz-osx-font-smoothing: grayscale;
25
- }
26
-
27
- a {
28
- color: var(--color-brand);
29
- text-decoration: none;
30
- transition: color var(--transition-fast);
31
- }
32
-
33
- a:hover {
34
- color: var(--color-brand-hover);
35
- text-decoration: underline;
36
- }
37
-
38
- button {
39
- font-family: inherit;
40
- font-size: inherit;
41
- cursor: pointer;
42
- border: none;
43
- background: none;
44
- }
45
-
46
- input, textarea, select {
47
- font-family: inherit;
48
- font-size: inherit;
49
- background: var(--color-surface-elevated);
50
- color: var(--color-text-primary);
51
- border: var(--border-width) solid var(--color-border);
52
- border-radius: var(--border-radius-md);
53
- padding: var(--space-sm) var(--space-md);
54
- }
55
-
56
- input:focus, textarea:focus, select:focus {
57
- outline: none;
58
- border-color: var(--color-border-focus);
59
- box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.1);
60
- }
61
-
62
- h1, h2, h3, h4, h5, h6 {
63
- font-weight: var(--font-weight-semibold);
64
- line-height: var(--line-height-tight);
65
- color: var(--color-text-primary);
66
- }
67
-
68
- h1 { font-size: var(--font-size-3xl); }
69
- h2 { font-size: var(--font-size-2xl); }
70
- h3 { font-size: var(--font-size-xl); }
71
- h4 { font-size: var(--font-size-lg); }
72
- h5 { font-size: var(--font-size-base); }
73
- h6 { font-size: var(--font-size-sm); }
74
-
75
- p {
76
- margin-bottom: var(--space-md);
77
- }
78
-
79
-
80
- /* ===== COMPONENT STYLES ===== */
81
-
82
- /* Header Component */
83
- .jux-header {
84
- display: flex;
85
- align-items: center;
86
- gap: var(--space-xl);
87
- padding: var(--space-md) var(--space-xl);
88
- height: 60px;
89
- }
90
-
91
- .jux-header-logo {
92
- display: flex;
93
- align-items: center;
94
- gap: var(--space-sm);
95
- color: var(--color-brand);
96
- font-weight: var(--font-weight-bold);
97
- font-size: var(--font-size-xl);
98
- }
99
-
100
- .jux-header-title {
101
- font-size: var(--font-size-2xl);
102
- font-weight: var(--font-weight-semibold);
103
- color: var(--color-text-primary);
104
- margin: 0;
105
- }
106
-
107
- .jux-header-nav {
108
- display: flex;
109
- gap: var(--space-lg);
110
- margin-left: auto;
111
- align-items: center;
112
- }
113
-
114
- .jux-header-nav-link {
115
- color: var(--color-text-secondary);
116
- text-decoration: none;
117
- transition: all var(--transition-fast);
118
- padding: var(--space-sm) var(--space-md);
119
- border-radius: var(--border-radius-md);
120
- font-weight: var(--font-weight-medium);
121
- }
122
-
123
- .jux-header-nav-link:hover {
124
- color: var(--color-brand);
125
- background: var(--color-surface-hover);
126
- text-decoration: none;
127
- }
128
-
129
- .jux-header-nav-link.active {
130
- color: var(--color-brand);
131
- background: rgba(10, 156, 165, 0.1);
132
- }
133
-
134
- /* Sidebar Component */
135
- .jux-sidebar {
136
- padding: var(--space-md);
137
- height: 100%;
138
- overflow-y: auto;
139
- }
140
-
141
- .jux-sidebar-toggle {
142
- background: var(--color-surface-elevated);
143
- border: var(--border-width) solid var(--color-border);
144
- font-size: var(--font-size-xl);
145
- cursor: pointer;
146
- padding: var(--space-sm);
147
- margin-bottom: var(--space-md);
148
- color: var(--color-text-primary);
149
- border-radius: var(--border-radius-md);
150
- transition: all var(--transition-base);
151
- width: 100%;
152
- display: block;
153
- font-weight: var(--font-weight-semibold);
154
- }
155
-
156
- .jux-sidebar-toggle:hover {
157
- background: var(--color-brand);
158
- color: var(--color-text-inverse);
159
- border-color: var(--color-brand);
160
- }
161
-
162
- .jux-sidebar-heading {
163
- font-size: var(--font-size-xs);
164
- text-transform: uppercase;
165
- color: var(--color-text-tertiary);
166
- margin: var(--space-lg) 0 var(--space-sm);
167
- font-weight: var(--font-weight-bold);
168
- letter-spacing: 0.05em;
169
- }
170
-
171
- .jux-sidebar-link {
172
- display: flex;
173
- align-items: center;
174
- gap: var(--space-md);
175
- padding: var(--space-md);
176
- color: var(--color-text-secondary);
177
- text-decoration: none;
178
- border-radius: var(--border-radius-md);
179
- transition: all var(--transition-base);
180
- margin-bottom: var(--space-xs);
181
- font-weight: var(--font-weight-medium);
182
- }
183
-
184
- .jux-sidebar-link:hover {
185
- background: var(--color-surface-elevated);
186
- color: var(--color-text-primary);
187
- transform: translateX(4px);
188
- text-decoration: none;
189
- }
190
-
191
- .jux-sidebar-link.active {
192
- background: var(--color-brand);
193
- color: var(--color-text-inverse);
194
- font-weight: var(--font-weight-semibold);
195
- }
196
-
197
- .jux-sidebar-icon {
198
- font-size: var(--font-size-xl);
199
- width: 1.5rem;
200
- text-align: center;
201
- flex-shrink: 0;
202
- }
203
-
204
- .jux-sidebar-divider {
205
- border: none;
206
- border-top: var(--border-width) solid var(--color-border);
207
- margin: var(--space-md) 0;
208
- }
209
-
210
- /* Footer Component */
211
- .jux-footer {
212
- display: flex;
213
- align-items: center;
214
- justify-content: center;
215
- padding: var(--space-lg) var(--space-xl);
216
- min-height: 60px;
217
- color: var(--color-text-secondary);
218
- font-size: var(--font-size-sm);
219
- }
220
-
221
- .jux-footer-content {
222
- text-align: center;
223
- }
224
-
225
- .jux-footer-left,
226
- .jux-footer-center,
227
- .jux-footer-right {
228
- display: flex;
229
- align-items: center;
230
- gap: var(--space-md);
231
- }
232
-
233
- .jux-footer-link {
234
- color: var(--color-text-secondary);
235
- text-decoration: none;
236
- transition: color var(--transition-fast);
237
- padding: var(--space-xs) var(--space-sm);
238
- border-radius: var(--border-radius-sm);
239
- }
240
-
241
- .jux-footer-link:hover {
242
- color: var(--color-brand);
243
- background: var(--color-surface-hover);
244
- }
245
-
246
- /* Hero Component */
247
- .jux-hero {
248
- text-align: left;
249
- padding: var(--space-2xl) var(--space-xl);
250
- background: var(--color-surface-elevated);
251
- border: var(--border-width) solid var(--color-border);
252
- border-radius: var(--border-radius-lg);
253
- margin-bottom: var(--space-2xl);
254
- transition: all var(--transition-base);
255
- }
256
-
257
- .jux-hero:hover {
258
- box-shadow: var(--shadow-sm);
259
- }
260
-
261
- .jux-hero-title {
262
- font-size: var(--font-size-2xl);
263
- font-weight: var(--font-weight-bold);
264
- margin-bottom: var(--space-sm);
265
- color: var(--color-text-primary);
266
- letter-spacing: -0.02em;
267
- }
268
-
269
- .jux-hero-subtitle {
270
- font-size: var(--font-size-sm);
271
- margin-bottom: var(--space-md);
272
- color: var(--color-text-tertiary);
273
- font-weight: var(--font-weight-medium);
274
- font-family: var(--font-family-mono);
275
- background: var(--color-surface-base);
276
- padding: var(--space-xs) var(--space-sm);
277
- border-radius: var(--border-radius-sm);
278
- display: inline-block;
279
- }
280
-
281
- .jux-hero-description {
282
- font-size: var(--font-size-base);
283
- color: var(--color-text-secondary);
284
- line-height: var(--line-height-relaxed);
285
- white-space: pre-line;
286
- font-family: var(--font-family-mono);
287
- background: var(--color-surface-base);
288
- padding: var(--space-md);
289
- border-radius: var(--border-radius-sm);
290
- border-left: 3px solid var(--color-brand);
291
- }
292
-
293
- /* Card Component */
294
- .jux-card {
295
- background: var(--color-surface-elevated);
296
- border: var(--border-width) solid var(--color-border);
297
- border-radius: var(--border-radius-xl);
298
- padding: var(--space-lg);
299
- box-shadow: var(--shadow-sm);
300
- transition: all var(--transition-base);
301
- }
302
-
303
- .jux-card:hover {
304
- box-shadow: var(--shadow-md);
305
- transform: translateY(-2px);
306
- }
307
-
308
- .jux-card-title {
309
- font-size: var(--font-size-xl);
310
- font-weight: var(--font-weight-semibold);
311
- margin: 0 0 var(--space-md) 0;
312
- color: var(--color-text-primary);
313
- }
314
-
315
- .jux-card-body {
316
- font-size: var(--font-size-base);
317
- color: var(--color-text-secondary);
318
- margin: 0 0 var(--space-md) 0;
319
- line-height: var(--line-height-relaxed);
320
- }
321
-
322
- .jux-card-actions {
323
- display: flex;
324
- gap: var(--space-md);
325
- align-items: center;
326
- flex-wrap: wrap;
327
- margin: var(--space-md) 0;
328
- }
329
-
330
- .jux-card-footer {
331
- font-size: var(--font-size-sm);
332
- color: var(--color-text-secondary);
333
- margin: 0;
334
- padding-top: var(--space-md);
335
- border-top: var(--border-width) solid var(--color-border);
336
- }
337
-
338
- /* Button Component */
339
- .jux-button {
340
- padding: var(--space-sm) var(--space-lg);
341
- border: var(--border-width) solid var(--color-border);
342
- border-radius: var(--border-radius-md);
343
- cursor: pointer;
344
- font-size: var(--font-size-base);
345
- background: var(--color-surface-elevated);
346
- color: var(--color-text-primary);
347
- font-weight: var(--font-weight-medium);
348
- transition: all var(--transition-fast);
349
- }
350
-
351
- .jux-button-primary {
352
- background: var(--color-brand);
353
- color: var(--color-text-inverse);
354
- border-color: var(--color-brand);
355
- }
356
-
357
- .jux-button:hover {
358
- transform: translateY(-2px);
359
- box-shadow: var(--shadow-md);
360
- }
361
-
362
- .jux-button-primary:hover {
363
- background: var(--color-brand-hover);
364
- }
365
-
366
- .jux-button:disabled {
367
- opacity: 0.5;
368
- cursor: not-allowed;
369
- transform: none;
370
- }
371
-
372
- /* Table Component */
373
- .jux-table {
374
- width: 100%;
375
- border-collapse: collapse;
376
- background: var(--color-surface-elevated);
377
- border-radius: var(--border-radius-lg);
378
- overflow: hidden;
379
- }
380
-
381
- .jux-table th {
382
- background: var(--color-surface-base);
383
- padding: var(--space-md);
384
- text-align: left;
385
- font-weight: var(--font-weight-semibold);
386
- border-bottom: var(--border-width-thick) solid var(--color-border);
387
- color: var(--color-text-primary);
388
- }
389
-
390
- .jux-table td {
391
- padding: var(--space-md);
392
- border-bottom: var(--border-width) solid var(--color-border);
393
- color: var(--color-text-secondary);
394
- }
395
-
396
- .jux-table tr:hover {
397
- background: var(--color-surface-hover);
398
- }
399
-
400
- .jux-table tr:last-child td {
401
- border-bottom: none;
402
- }
403
-
404
- /* Grid Utility */
405
- .jux-grid {
406
- display: grid;
407
- gap: var(--space-lg);
408
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
409
- }
410
-
411
- /* Stack Utility */
412
- .jux-stack {
413
- display: flex;
414
- flex-direction: column;
415
- gap: var(--space-md);
416
- }
417
-
418
- .jux-stack-horizontal {
419
- flex-direction: row;
420
- }
421
-
422
- /* Tabs Component */
423
- .jux-tabs-nav {
424
- display: flex;
425
- gap: var(--space-sm);
426
- border-bottom: var(--border-width-thick) solid var(--color-border);
427
- margin-bottom: var(--space-xl);
428
- }
429
-
430
- .jux-tabs-btn {
431
- padding: var(--space-md) var(--space-lg);
432
- background: none;
433
- border: none;
434
- color: var(--color-text-secondary);
435
- cursor: pointer;
436
- font-size: var(--font-size-base);
437
- border-bottom: var(--border-width-thick) solid transparent;
438
- margin-bottom: calc(var(--border-width-thick) * -1);
439
- transition: all var(--transition-fast);
440
- font-weight: var(--font-weight-medium);
441
- }
442
-
443
- .jux-tabs-btn:hover {
444
- color: var(--color-text-primary);
445
- }
446
-
447
- .jux-tabs-btn.active {
448
- color: var(--color-brand);
449
- border-bottom-color: var(--color-brand);
450
- }
451
-
452
- .jux-tabs-panel {
453
- display: none;
454
- }
455
-
456
- .jux-tabs-panel.active {
457
- display: block;
458
- }
459
-
460
- /* Modal Component */
461
- .jux-modal {
462
- position: fixed;
463
- top: 0;
464
- left: 0;
465
- right: 0;
466
- bottom: 0;
467
- z-index: 2000;
468
- display: flex;
469
- align-items: center;
470
- justify-content: center;
471
- }
472
-
473
- .jux-modal-hidden {
474
- display: none;
475
- }
476
-
477
- .jux-modal-overlay {
478
- position: absolute;
479
- top: 0;
480
- left: 0;
481
- right: 0;
482
- bottom: 0;
483
- background: rgba(0, 0, 0, 0.5);
484
- backdrop-filter: blur(4px);
485
- }
486
-
487
- .jux-modal-dialog {
488
- position: relative;
489
- background: var(--color-surface-elevated);
490
- border-radius: var(--border-radius-xl);
491
- box-shadow: var(--shadow-xl);
492
- max-width: 90vw;
493
- max-height: 90vh;
494
- overflow: auto;
495
- }
496
-
497
- .jux-modal-header {
498
- display: flex;
499
- align-items: center;
500
- justify-content: space-between;
501
- padding: var(--space-lg);
502
- border-bottom: var(--border-width) solid var(--color-border);
503
- }
504
-
505
- .jux-modal-title {
506
- font-size: var(--font-size-xl);
507
- font-weight: var(--font-weight-semibold);
508
- }
509
-
510
- .jux-modal-close {
511
- background: none;
512
- border: none;
513
- font-size: var(--font-size-2xl);
514
- cursor: pointer;
515
- color: var(--color-text-secondary);
516
- line-height: 1;
517
- }
518
-
519
- .jux-modal-body {
520
- padding: var(--space-lg);
521
- }
522
-
523
- .jux-modal-footer {
524
- display: flex;
525
- gap: var(--space-md);
526
- justify-content: flex-end;
527
- padding: var(--space-lg);
528
- border-top: var(--border-width) solid var(--color-border);
529
- }
530
-
531
- /* Utility States */
532
- .jux-loading {
533
- display: flex;
534
- align-items: center;
535
- justify-content: center;
536
- padding: var(--space-xl);
537
- color: var(--color-text-secondary);
538
- font-style: italic;
539
- }
540
-
541
- .jux-error {
542
- background: rgba(239, 68, 68, 0.1);
543
- border: var(--border-width) solid var(--color-danger);
544
- border-radius: var(--border-radius-md);
545
- padding: var(--space-md);
546
- color: var(--color-danger);
547
- margin: var(--space-md) 0;
548
- }
549
-
550
- /* List Component */
551
- .jux-list-header {
552
- font-size: var(--font-size-xl);
553
- font-weight: var(--font-weight-semibold);
554
- color: var(--color-text-primary);
555
- margin-bottom: var(--space-lg);
556
- padding-bottom: var(--space-sm);
557
- border-bottom: var(--border-width-thick) solid var(--color-border);
558
- }
559
-
560
- .jux-list {
561
- list-style: none;
562
- padding: 0;
563
- margin: 0;
564
- display: flex;
565
- flex-direction: column;
566
- gap: var(--space-sm);
567
- }
568
-
569
- .jux-list-item {
570
- display: flex;
571
- align-items: flex-start;
572
- gap: var(--space-md);
573
- padding: var(--space-md);
574
- background: var(--color-surface-elevated);
575
- border: var(--border-width) solid var(--color-border);
576
- border-radius: var(--border-radius-md);
577
- transition: all var(--transition-base);
578
- }
579
-
580
- .jux-list-item:hover {
581
- background: var(--color-surface-hover);
582
- transform: translateX(4px);
583
- box-shadow: var(--shadow-sm);
584
- }
585
-
586
- .jux-list-item-icon {
587
- font-size: var(--font-size-2xl);
588
- line-height: 1;
589
- flex-shrink: 0;
590
- width: 2rem;
591
- text-align: center;
592
- }
593
-
594
- .jux-list-item-content {
595
- flex: 1;
596
- min-width: 0;
597
- }
598
-
599
- .jux-list-item-title {
600
- font-size: var(--font-size-base);
601
- font-weight: var(--font-weight-semibold);
602
- color: var(--color-text-primary);
603
- margin-bottom: var(--space-xs);
604
- }
605
-
606
- .jux-list-item-body {
607
- font-size: var(--font-size-sm);
608
- color: var(--color-text-secondary);
609
- line-height: var(--line-height-normal);
610
- }
611
-
612
- .jux-list-item-metadata {
613
- font-size: var(--font-size-sm);
614
- color: var(--color-text-tertiary);
615
- font-weight: var(--font-weight-medium);
616
- white-space: nowrap;
617
- align-self: center;
618
- }
619
-
620
- /* List Item Type Variants */
621
- .jux-list-item-default {
622
- border-left: 4px solid var(--color-border);
623
- }
624
-
625
- .jux-list-item-success {
626
- border-left: 4px solid var(--color-success);
627
- background: rgba(34, 197, 94, 0.05);
628
- }
629
-
630
- .jux-list-item-success .jux-list-item-icon {
631
- color: var(--color-success);
632
- }
633
-
634
- .jux-list-item-warning {
635
- border-left: 4px solid var(--color-warning);
636
- background: rgba(251, 191, 36, 0.05);
637
- }
638
-
639
- .jux-list-item-warning .jux-list-item-icon {
640
- color: var(--color-warning);
641
- }
642
-
643
- .jux-list-item-error {
644
- border-left: 4px solid var(--color-danger);
645
- background: rgba(239, 68, 68, 0.05);
646
- }
647
-
648
- .jux-list-item-error .jux-list-item-icon {
649
- color: var(--color-danger);
650
- }
651
-
652
- .jux-list-item-info {
653
- border-left: 4px solid var(--color-info);
654
- background: rgba(59, 130, 246, 0.05);
655
- }
656
-
657
- .jux-list-item-info .jux-list-item-icon {
658
- color: var(--color-info);
659
- }
660
-
661
- .jux-list-item-selectable {
662
- cursor: pointer;
663
- }
664
-
665
- .jux-list-item-selectable:active {
666
- transform: scale(0.98);
667
- }
668
-
669
- .jux-list-item-selected {
670
- background: rgba(10, 156, 165, 0.15) !important;
671
- border-color: var(--color-brand) !important;
672
- box-shadow: 0 0 0 2px rgba(10, 156, 165, 0.2);
673
- }
674
-
675
- .jux-list-item-selected .jux-list-item-title {
676
- color: var(--color-brand);
677
- font-weight: var(--font-weight-bold);
678
- }
679
-
680
- /* Input Component */
681
- .jux-input-wrapper {
682
- display: flex;
683
- flex-direction: column;
684
- gap: var(--space-xs);
685
- margin-bottom: var(--space-lg);
686
- }
687
-
688
- .jux-input-label {
689
- font-size: var(--font-size-sm);
690
- font-weight: var(--font-weight-semibold);
691
- color: var(--color-text-primary);
692
- display: block;
693
- }
694
-
695
- .jux-input-required {
696
- color: var(--color-danger);
697
- }
698
-
699
- .jux-input {
700
- width: 100%;
701
- padding: var(--space-sm) var(--space-md);
702
- font-size: var(--font-size-base);
703
- background: var(--color-surface-elevated);
704
- border: var(--border-width) solid var(--color-border);
705
- border-radius: var(--border-radius-md);
706
- color: var(--color-text-primary);
707
- transition: all var(--transition-fast);
708
- }
709
-
710
- .jux-input:hover {
711
- border-color: var(--color-border-focus);
712
- }
713
-
714
- .jux-input:focus {
715
- outline: none;
716
- border-color: var(--color-brand);
717
- box-shadow: 0 0 0 3px rgba(10, 156, 165, 0.1);
718
- }
719
-
720
- .jux-input-focused .jux-input {
721
- border-color: var(--color-brand);
722
- box-shadow: 0 0 0 3px rgba(10, 156, 165, 0.1);
723
- }
724
-
725
- .jux-input-error .jux-input {
726
- border-color: var(--color-danger);
727
- }
728
-
729
- .jux-input-error .jux-input:focus {
730
- box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
731
- }
732
-
733
- .jux-input-disabled .jux-input {
734
- opacity: 0.6;
735
- cursor: not-allowed;
736
- background: var(--color-surface-base);
737
- }
738
-
739
- .jux-input-message {
740
- font-size: var(--font-size-sm);
741
- line-height: var(--line-height-tight);
742
- }
743
-
744
- .jux-input-message-helper {
745
- color: var(--color-text-tertiary);
746
- }
747
-
748
- .jux-input-message-error {
749
- color: var(--color-danger);
750
- font-weight: var(--font-weight-medium);
751
- }
752
-
753
- /* Menu Component */
754
- .jux-menu-dropdown {
755
- position: relative;
756
- background: var(--color-surface-elevated);
757
- border: var(--border-width) solid var(--color-border);
758
- border-radius: var(--border-radius-lg);
759
- box-shadow: var(--shadow-lg);
760
- min-width: 200px;
761
- z-index: 1000;
762
- }
763
-
764
- .jux-menu-hidden {
765
- display: none;
766
- }
767
-
768
- .jux-menu-list {
769
- list-style: none;
770
- padding: var(--space-xs);
771
- margin: 0;
772
- }
773
-
774
- .jux-menu-item {
775
- display: flex;
776
- align-items: center;
777
- gap: var(--space-md);
778
- padding: var(--space-sm) var(--space-md);
779
- cursor: pointer;
780
- border-radius: var(--border-radius-sm);
781
- transition: all var(--transition-fast);
782
- color: var(--color-text-primary);
783
- font-size: var(--font-size-base);
784
- position: relative;
785
- }
786
-
787
- .jux-menu-item:hover {
788
- background: var(--color-surface-hover);
789
- }
790
-
791
- .jux-menu-item-focused {
792
- background: var(--color-surface-hover);
793
- }
794
-
795
- .jux-menu-item-disabled {
796
- opacity: 0.5;
797
- cursor: not-allowed;
798
- }
799
-
800
- .jux-menu-item-disabled:hover {
801
- background: transparent;
802
- }
803
-
804
- .jux-menu-item-icon {
805
- font-size: var(--font-size-lg);
806
- width: 1.25rem;
807
- text-align: center;
808
- flex-shrink: 0;
809
- }
810
-
811
- .jux-menu-item-label {
812
- flex: 1;
813
- }
814
-
815
- .jux-menu-item-shortcut {
816
- font-size: var(--font-size-sm);
817
- color: var(--color-text-tertiary);
818
- font-family: var(--font-family-mono);
819
- margin-left: auto;
820
- }
821
-
822
- .jux-menu-item-arrow {
823
- font-size: var(--font-size-xs);
824
- color: var(--color-text-tertiary);
825
- margin-left: auto;
826
- }
827
-
828
- .jux-menu-divider {
829
- height: 1px;
830
- background: var(--color-border);
831
- margin: var(--space-xs) 0;
832
- }
833
-
834
- .jux-menu-submenu {
835
- position: absolute;
836
- left: 100%;
837
- top: 0;
838
- margin-left: var(--space-xs);
839
- background: var(--color-surface-elevated);
840
- border: var(--border-width) solid var(--color-border);
841
- border-radius: var(--border-radius-lg);
842
- box-shadow: var(--shadow-lg);
843
- min-width: 180px;
844
- }
845
-
846
- .jux-menu-submenu .jux-menu-list {
847
- padding: var(--space-xs);
848
- }
849
-
850
- /* Menu positioning variants */
851
- .jux-menu-bottom-left {
852
- top: 100%;
853
- left: 0;
854
- margin-top: var(--space-xs);
855
- }
856
-
857
- .jux-menu-bottom-right {
858
- top: 100%;
859
- right: 0;
860
- margin-top: var(--space-xs);
861
- }
862
-
863
- .jux-menu-top-left {
864
- bottom: 100%;
865
- left: 0;
866
- margin-bottom: var(--space-xs);
867
- }
868
-
869
- .jux-menu-top-right {
870
- bottom: 100%;
871
- right: 0;
872
- margin-bottom: var(--space-xs);
873
- }
874
-
875
- /* Nav Component */
876
- .jux-nav {
877
- display: flex;
878
- }
879
-
880
- .jux-nav-horizontal {
881
- flex-direction: row;
882
- }
883
-
884
- .jux-nav-vertical {
885
- flex-direction: column;
886
- }
887
-
888
- .jux-nav-list {
889
- list-style: none;
890
- padding: 0;
891
- margin: 0;
892
- display: flex;
893
- gap: var(--space-xs);
894
- }
895
-
896
- .jux-nav-horizontal .jux-nav-list {
897
- flex-direction: row;
898
- }
899
-
900
- .jux-nav-vertical .jux-nav-list {
901
- flex-direction: column;
902
- }
903
-
904
- .jux-nav-item {
905
- position: relative;
906
- }
907
-
908
- .jux-nav-link {
909
- display: flex;
910
- align-items: center;
911
- gap: var(--space-sm);
912
- padding: var(--space-sm) var(--space-md);
913
- color: var(--color-text-secondary);
914
- text-decoration: none;
915
- border-radius: var(--border-radius-md);
916
- transition: all var(--transition-fast);
917
- font-weight: var(--font-weight-medium);
918
- font-size: var(--font-size-base);
919
- cursor: pointer;
920
- background: none;
921
- border: none;
922
- width: 100%;
923
- text-align: left;
924
- }
925
-
926
- .jux-nav-link:hover {
927
- color: var(--color-text-primary);
928
- background: var(--color-surface-hover);
929
- text-decoration: none;
930
- }
931
-
932
- .jux-nav-item-active .jux-nav-link {
933
- color: var(--color-brand);
934
- background: rgba(10, 156, 165, 0.1);
935
- font-weight: var(--font-weight-semibold);
936
- }
937
-
938
- .jux-nav-icon {
939
- font-size: var(--font-size-lg);
940
- width: 1.25rem;
941
- text-align: center;
942
- flex-shrink: 0;
943
- }
944
-
945
- .jux-nav-label {
946
- flex: 1;
947
- }
948
-
949
- .jux-nav-badge {
950
- font-size: var(--font-size-xs);
951
- padding: var(--space-xs) var(--space-sm);
952
- background: var(--color-danger);
953
- color: var(--color-text-inverse);
954
- border-radius: var(--border-radius-full);
955
- font-weight: var(--font-weight-bold);
956
- line-height: 1;
957
- }
958
-
959
- .jux-nav-arrow {
960
- font-size: var(--font-size-xs);
961
- color: var(--color-text-tertiary);
962
- margin-left: auto;
963
- transition: transform var(--transition-fast);
964
- }
965
-
966
- .jux-nav-item-expanded .jux-nav-arrow {
967
- transform: rotate(90deg);
968
- }
969
-
970
- .jux-nav-divider {
971
- height: 1px;
972
- background: var(--color-border);
973
- margin: var(--space-sm) 0;
974
- }
975
-
976
- .jux-nav-horizontal .jux-nav-divider {
977
- width: 1px;
978
- height: auto;
979
- margin: 0 var(--space-sm);
980
- }
981
-
982
- .jux-nav-children {
983
- list-style: none;
984
- padding: var(--space-xs) 0 var(--space-xs) var(--space-lg);
985
- margin: 0;
986
- display: flex;
987
- flex-direction: column;
988
- gap: var(--space-xs);
989
- }
990
-
991
- .jux-nav-horizontal .jux-nav-children {
992
- position: absolute;
993
- top: 100%;
994
- left: 0;
995
- margin-top: var(--space-xs);
996
- padding: var(--space-xs);
997
- background: var(--color-surface-elevated);
998
- border: var(--border-width) solid var(--color-border);
999
- border-radius: var(--border-radius-lg);
1000
- box-shadow: var(--shadow-lg);
1001
- min-width: 200px;
1002
- }
1003
-
1004
-
1005
- /* Code Component */
1006
- .jux-code-container {
1007
- position: relative;
1008
- background: #1e1e1e;
1009
- border: var(--border-width) solid #333;
1010
- border-radius: var(--border-radius-md);
1011
- overflow: visible;
1012
- margin: var(--space-md) 0;
1013
- font-family: var(--font-family-mono);
1014
- }
1015
-
1016
- .jux-code-title-bar {
1017
- display: flex;
1018
- justify-content: space-between;
1019
- align-items: center;
1020
- padding: var(--space-xs) var(--space-md);
1021
- background: #2d2d2d;
1022
- border-bottom: var(--border-width) solid #333;
1023
- }
1024
-
1025
- .jux-code-title {
1026
- font-size: var(--font-size-xs);
1027
- font-weight: var(--font-weight-medium);
1028
- color: #d4d4d4;
1029
- font-family: var(--font-family-mono);
1030
- }
1031
-
1032
- .jux-code-language-badge {
1033
- font-size: var(--font-size-xs);
1034
- padding: 2px var(--space-sm);
1035
- background: #007acc;
1036
- color: #ffffff;
1037
- border-radius: var(--border-radius-sm);
1038
- text-transform: lowercase;
1039
- font-weight: var(--font-weight-medium);
1040
- font-family: var(--font-family-mono);
1041
- }
1042
-
1043
- .jux-code-wrapper {
1044
- overflow-x: auto;
1045
- overflow-y: visible;
1046
- background: #1e1e1e;
1047
- }
1048
-
1049
- .jux-code-pre {
1050
- margin: 0;
1051
- padding: var(--space-lg);
1052
- font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
1053
- font-size: 13px;
1054
- line-height: 1.6;
1055
- color: #d4d4d4;
1056
- background: transparent;
1057
- overflow-x: auto;
1058
- tab-size: 2;
1059
- -moz-tab-size: 2;
1060
- }
1061
-
1062
- .jux-code-wrap {
1063
- white-space: pre-wrap;
1064
- word-break: break-all;
1065
- overflow-wrap: break-word;
1066
- }
1067
-
1068
- .jux-code-block {
1069
- display: block;
1070
- color: #d4d4d4;
1071
- }
1072
-
1073
- .jux-code-numbered {
1074
- display: flex;
1075
- flex-direction: column;
1076
- }
1077
-
1078
- .jux-code-line {
1079
- display: flex;
1080
- min-height: 1.6em;
1081
- }
1082
-
1083
- .jux-code-line-highlighted {
1084
- background: rgba(255, 255, 255, 0.1);
1085
- border-left: 2px solid #007acc;
1086
- margin-left: -2px;
1087
- }
1088
-
1089
- .jux-code-line-number {
1090
- flex-shrink: 0;
1091
- width: 2.5em;
1092
- padding-right: var(--space-md);
1093
- text-align: right;
1094
- color: #858585;
1095
- user-select: none;
1096
- border-right: var(--border-width) solid #333;
1097
- margin-right: var(--space-md);
1098
- font-size: 12px;
1099
- }
1100
-
1101
- .jux-code-line-content {
1102
- flex: 1;
1103
- color: #d4d4d4;
1104
- }
1105
-
1106
- .jux-code-copy-btn {
1107
- position: absolute;
1108
- top: var(--space-xs);
1109
- right: var(--space-xs);
1110
- padding: 4px var(--space-sm);
1111
- font-size: var(--font-size-xs);
1112
- background: #2d2d2d;
1113
- color: #d4d4d4;
1114
- border: var(--border-width) solid #333;
1115
- border-radius: var(--border-radius-sm);
1116
- cursor: pointer;
1117
- transition: all var(--transition-fast);
1118
- font-family: var(--font-family-mono);
1119
- opacity: 0.7;
1120
- }
1121
-
1122
- .jux-code-copy-btn:hover {
1123
- background: #007acc;
1124
- color: #ffffff;
1125
- border-color: #007acc;
1126
- opacity: 1;
1127
- }
1128
-
1129
- .jux-code-container:hover .jux-code-copy-btn {
1130
- opacity: 1;
1131
- }