juxscript 1.0.57 → 1.0.59

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,6 +1,6 @@
1
1
  /**
2
2
  * Default Preset - Grid Layout System
3
- * Minimal, clean layout with proper spacing
3
+ * Comprehensive component styling
4
4
  */
5
5
 
6
6
  /* ============================================
@@ -29,18 +29,24 @@
29
29
  --color-surface-base: #f7f7f7;
30
30
  --color-surface-elevated: #ffffff;
31
31
  --color-surface-hover: #f1f1f1;
32
+ --color-surface-active: #e8e8e8;
32
33
 
33
34
  --color-border: #e8e8e8;
34
35
  --color-border-hover: #d1d1d1;
35
36
 
37
+ --color-brand: #0ea5e9;
38
+ --color-brand-hover: #0284c7;
39
+
36
40
  /* Borders & Radius */
37
41
  --border-width: 1px;
38
42
  --radius-sm: 3px;
39
43
  --radius-md: 6px;
40
44
  --radius-lg: 8px;
45
+ --radius-full: 9999px;
41
46
 
42
47
  /* Transitions */
43
48
  --transition-base: 150ms ease;
49
+ --transition-fast: 100ms ease;
44
50
  }
45
51
 
46
52
  /* ============================================
@@ -57,6 +63,8 @@ body {
57
63
  color: var(--color-text-primary);
58
64
  background: var(--color-background);
59
65
  -webkit-font-smoothing: antialiased;
66
+ font-size: 14px;
67
+ line-height: 1.5;
60
68
  }
61
69
 
62
70
  /* ============================================
@@ -105,9 +113,8 @@ body {
105
113
  cursor: pointer;
106
114
  }
107
115
 
108
- /* ✅ Fix h1 inside logo - reset default heading styles */
109
116
  #appheader-logo h1 {
110
- font-size: 1.25rem;
117
+ font-size: 1.125rem;
111
118
  font-weight: 700;
112
119
  margin: 0;
113
120
  line-height: 1;
@@ -136,6 +143,7 @@ body {
136
143
  background: var(--color-surface-base);
137
144
  border-right: var(--border-width) solid var(--color-border);
138
145
  overflow-y: auto;
146
+ padding: var(--space-lg);
139
147
  }
140
148
 
141
149
  /* ============================================
@@ -149,7 +157,7 @@ body {
149
157
  }
150
158
 
151
159
  #appmain-content {
152
- max-width: 800px;
160
+ max-width: 900px;
153
161
  margin: 0 auto;
154
162
  padding: var(--space-3xl) var(--space-2xl);
155
163
  }
@@ -162,7 +170,7 @@ body {
162
170
  background: var(--color-surface-elevated);
163
171
  border-top: var(--border-width) solid var(--color-border);
164
172
  padding: var(--space-md) var(--space-2xl);
165
- font-size: 0.875rem;
173
+ font-size: 0.8125rem;
166
174
  color: var(--color-text-tertiary);
167
175
  min-height: 40px;
168
176
  display: flex;
@@ -176,141 +184,268 @@ body {
176
184
  }
177
185
 
178
186
  /* ============================================
179
- RIGHT SIDEBAR (Optional)
187
+ TYPOGRAPHY
180
188
  ============================================ */
181
- #appsidebar {
182
- grid-area: aside;
183
- width: 280px;
184
- background: var(--color-surface-base);
185
- border-left: var(--border-width) solid var(--color-border);
186
- display: none;
189
+ h1, h2, h3, h4, h5, h6 {
190
+ font-weight: 600;
191
+ line-height: 1.3;
192
+ color: var(--color-text-primary);
193
+ margin: 0;
187
194
  }
188
195
 
189
- #appsidebar.show {
190
- display: block;
196
+ h1 { font-size: 2rem; }
197
+ h2 { font-size: 1.5rem; }
198
+ h3 { font-size: 1.125rem; margin-bottom: var(--space-md); }
199
+ h4 { font-size: 1rem; }
200
+ h5 { font-size: 0.875rem; }
201
+ h6 { font-size: 0.75rem; }
202
+
203
+ p {
204
+ line-height: 1.6;
205
+ color: var(--color-text-secondary);
206
+ margin: 0;
191
207
  }
192
208
 
193
- #appsidebar-header {
194
- padding: var(--space-lg);
195
- border-bottom: var(--border-width) solid var(--color-border);
196
- font-size: 0.75rem;
209
+ /* ============================================
210
+ HEADINGS
211
+ ============================================ */
212
+ .jux-heading {
197
213
  font-weight: 600;
198
- color: var(--color-text-tertiary);
199
- text-transform: uppercase;
214
+ line-height: 1.3;
215
+ color: var(--color-text-primary);
216
+ margin: 0 0 var(--space-md) 0;
200
217
  }
201
218
 
202
- #appsidebar-content {
203
- padding: var(--space-lg);
204
- overflow-y: auto;
219
+ .jux-heading-1 { font-size: 2rem; }
220
+ .jux-heading-2 { font-size: 1.5rem; }
221
+ .jux-heading-3 { font-size: 1.125rem; font-weight: 700; }
222
+ .jux-heading-4 { font-size: 1rem; }
223
+ .jux-heading-5 { font-size: 0.875rem; }
224
+ .jux-heading-6 { font-size: 0.75rem; }
225
+
226
+ /* ============================================
227
+ HERO COMPONENT
228
+ ============================================ */
229
+ .jux-hero {
230
+ padding: var(--space-3xl) 0;
231
+ margin-bottom: var(--space-2xl);
205
232
  }
206
233
 
207
- #appsidebar-footer {
208
- padding: var(--space-lg);
209
- border-top: var(--border-width) solid var(--color-border);
210
- font-size: 0.75rem;
211
- color: var(--color-text-tertiary);
234
+ .jux-hero-centered {
235
+ text-align: center;
212
236
  }
213
237
 
214
- /* ============================================
215
- SCROLLBARS
216
- ============================================ */
217
- #appmain::-webkit-scrollbar,
218
- #appaside::-webkit-scrollbar,
219
- #appsidebar-content::-webkit-scrollbar {
220
- width: 6px;
238
+ .jux-hero-content {
239
+ display: flex;
240
+ flex-direction: column;
241
+ gap: var(--space-lg);
221
242
  }
222
243
 
223
- #appmain::-webkit-scrollbar-track,
224
- #appaside::-webkit-scrollbar-track,
225
- #appsidebar-content::-webkit-scrollbar-track {
226
- background: transparent;
244
+ .jux-hero-centered .jux-hero-content {
245
+ align-items: center;
227
246
  }
228
247
 
229
- #appmain::-webkit-scrollbar-thumb,
230
- #appaside::-webkit-scrollbar-thumb,
231
- #appsidebar-content::-webkit-scrollbar-thumb {
232
- background: var(--color-border);
233
- border-radius: 3px;
248
+ .jux-hero-title {
249
+ font-size: 2.5rem;
250
+ font-weight: 700;
251
+ line-height: 1.2;
252
+ margin: 0;
253
+ letter-spacing: -0.02em;
254
+ color: var(--color-text-primary);
234
255
  }
235
256
 
236
- #appmain::-webkit-scrollbar-thumb:hover,
237
- #appaside::-webkit-scrollbar-thumb:hover,
238
- #appsidebar-content::-webkit-scrollbar-thumb:hover {
239
- background: var(--color-border-hover);
257
+ .jux-hero-subtitle {
258
+ font-size: 1.25rem;
259
+ line-height: 1.6;
260
+ color: var(--color-text-secondary);
261
+ margin: 0;
262
+ }
263
+
264
+ .jux-hero-body {
265
+ font-size: 1rem;
266
+ line-height: 1.6;
267
+ color: var(--color-text-secondary);
268
+ max-width: 600px;
269
+ }
270
+
271
+ .jux-hero-cta {
272
+ display: inline-flex;
273
+ align-items: center;
274
+ justify-content: center;
275
+ padding: var(--space-md) var(--space-2xl);
276
+ font-size: 1rem;
277
+ font-weight: 600;
278
+ color: white;
279
+ background: var(--color-brand);
280
+ border-radius: var(--radius-md);
281
+ text-decoration: none;
282
+ transition: background-color var(--transition-base);
283
+ }
284
+
285
+ .jux-hero-cta:hover {
286
+ background: var(--color-brand-hover);
240
287
  }
241
288
 
242
289
  /* ============================================
243
- RESPONSIVE
290
+ ALERT COMPONENT
244
291
  ============================================ */
245
- @media (max-width: 768px) {
246
- #app {
247
- grid-template-columns: 1fr;
248
- grid-template-areas:
249
- "header"
250
- "main"
251
- "footer";
252
- }
253
-
254
- #appaside {
255
- display: none;
256
- }
257
-
258
- #appheader {
259
- padding: 0 var(--space-lg);
260
- }
261
-
262
- #appmain-content {
263
- padding: var(--space-2xl) var(--space-lg);
292
+ .jux-alert {
293
+ display: flex;
294
+ align-items: flex-start;
295
+ gap: var(--space-md);
296
+ padding: var(--space-lg);
297
+ border-radius: var(--radius-lg);
298
+ margin-bottom: var(--space-lg);
299
+ position: relative;
300
+ animation: slideIn 0.3s ease-out;
301
+ }
302
+
303
+ @keyframes slideIn {
304
+ from {
305
+ opacity: 0;
306
+ transform: translateY(-10px);
264
307
  }
265
-
266
- #appfooter {
267
- padding: var(--space-md) var(--space-lg);
308
+ to {
309
+ opacity: 1;
310
+ transform: translateY(0);
268
311
  }
269
312
  }
270
313
 
314
+ .jux-alert-info {
315
+ background: #dbeafe;
316
+ border-left: 4px solid #3b82f6;
317
+ color: #1e40af;
318
+ }
319
+
320
+ .jux-alert-success {
321
+ background: #d1fae5;
322
+ border-left: 4px solid #10b981;
323
+ color: #065f46;
324
+ }
325
+
326
+ .jux-alert-warning {
327
+ background: #fef3c7;
328
+ border-left: 4px solid #f59e0b;
329
+ color: #92400e;
330
+ }
331
+
332
+ .jux-alert-error {
333
+ background: #fee2e2;
334
+ border-left: 4px solid #ef4444;
335
+ color: #991b1b;
336
+ }
337
+
338
+ .jux-alert-content {
339
+ flex: 1;
340
+ font-size: 0.875rem;
341
+ line-height: 1.5;
342
+ }
343
+
344
+ .jux-alert-close {
345
+ flex-shrink: 0;
346
+ background: transparent;
347
+ border: none;
348
+ font-size: 1.25rem;
349
+ cursor: pointer;
350
+ opacity: 0.5;
351
+ transition: opacity var(--transition-base);
352
+ padding: 0;
353
+ width: 20px;
354
+ height: 20px;
355
+ display: flex;
356
+ align-items: center;
357
+ justify-content: center;
358
+ color: inherit;
359
+ }
360
+
361
+ .jux-alert-close:hover {
362
+ opacity: 1;
363
+ }
364
+
271
365
  /* ============================================
272
- COMPONENT STYLES
366
+ BADGE COMPONENT
273
367
  ============================================ */
368
+ .jux-badge {
369
+ display: inline-flex;
370
+ align-items: center;
371
+ padding: var(--space-xs) var(--space-md);
372
+ font-size: 0.75rem;
373
+ font-weight: 600;
374
+ line-height: 1;
375
+ text-align: center;
376
+ white-space: nowrap;
377
+ border-radius: var(--radius-sm);
378
+ transition: all var(--transition-base);
379
+ }
380
+
381
+ .jux-badge-default {
382
+ color: #374151;
383
+ background-color: #e5e7eb;
384
+ }
385
+
386
+ .jux-badge-success {
387
+ color: #065f46;
388
+ background-color: #d1fae5;
389
+ }
390
+
391
+ .jux-badge-warning {
392
+ color: #92400e;
393
+ background-color: #fef3c7;
394
+ }
395
+
396
+ .jux-badge-error {
397
+ color: #991b1b;
398
+ background-color: #fee2e2;
399
+ }
274
400
 
275
- /* Buttons */
401
+ .jux-badge-info {
402
+ color: #1e40af;
403
+ background-color: #dbeafe;
404
+ }
405
+
406
+ /* ============================================
407
+ BUTTON COMPONENT
408
+ ============================================ */
276
409
  .jux-button {
277
410
  display: inline-flex;
278
411
  align-items: center;
279
412
  justify-content: center;
280
- padding: 0 var(--space-lg);
413
+ padding: 0 var(--space-xl);
281
414
  height: 36px;
282
415
  font-size: 0.875rem;
283
416
  font-weight: 500;
284
417
  font-family: var(--font-family-base);
285
- color: #ffffff;
286
- background: #0ea5e9;
418
+ color: white;
419
+ background: var(--color-brand);
287
420
  border: none;
288
421
  border-radius: var(--radius-md);
289
422
  cursor: pointer;
290
- transition: background-color var(--transition-base), transform 100ms ease;
423
+ transition: background-color var(--transition-base), transform var(--transition-fast);
291
424
  user-select: none;
292
425
  white-space: nowrap;
293
426
  }
294
427
 
295
428
  .jux-button:hover {
296
- background: #0284c7;
429
+ background: var(--color-brand-hover);
297
430
  }
298
431
 
299
432
  .jux-button:active {
300
433
  transform: scale(0.98);
301
434
  }
302
435
 
303
- .jux-button:focus {
304
- outline: 2px solid #0ea5e9;
305
- outline-offset: 2px;
306
- }
307
-
308
436
  .jux-button:disabled {
309
437
  opacity: 0.5;
310
438
  cursor: not-allowed;
311
439
  }
312
440
 
313
- /* Button variants */
441
+ .jux-button-primary {
442
+ background: var(--color-brand);
443
+ }
444
+
445
+ .jux-button-primary:hover {
446
+ background: var(--color-brand-hover);
447
+ }
448
+
314
449
  .jux-button-secondary {
315
450
  background: var(--color-surface-hover);
316
451
  color: var(--color-text-primary);
@@ -319,1114 +454,1039 @@ body {
319
454
 
320
455
  .jux-button-secondary:hover {
321
456
  background: var(--color-surface-active);
322
- border-color: var(--color-border-hover);
323
- }
324
-
325
- .jux-button-ghost {
326
- background: transparent;
327
- color: var(--color-text-secondary);
328
- }
329
-
330
- .jux-button-ghost:hover {
331
- background: var(--color-surface-hover);
332
457
  }
333
458
 
334
- /* Button sizes */
335
459
  .jux-button-small {
336
460
  height: 28px;
337
461
  padding: 0 var(--space-md);
338
462
  font-size: 0.8125rem;
339
463
  }
340
464
 
465
+ .jux-button-medium {
466
+ height: 36px;
467
+ }
468
+
341
469
  .jux-button-large {
342
470
  height: 44px;
343
471
  padding: 0 var(--space-2xl);
344
472
  font-size: 1rem;
345
473
  }
346
474
 
347
- /* Code blocks */
348
- .jux-code {
349
- background: var(--color-surface-base);
475
+ /* ============================================
476
+ CARD COMPONENT
477
+ ============================================ */
478
+ .jux-card {
479
+ background: var(--color-surface-elevated);
350
480
  border: var(--border-width) solid var(--color-border);
351
481
  border-radius: var(--radius-lg);
352
- padding: var(--space-lg);
353
- font-family: var(--font-family-mono);
354
- font-size: 0.8125rem;
355
- line-height: 1.6;
356
- overflow-x: auto;
357
- margin: var(--space-xl) 0;
482
+ overflow: hidden;
483
+ margin-bottom: var(--space-lg);
358
484
  }
359
485
 
360
- /* Hero */
361
- .jux-hero {
362
- margin-bottom: var(--space-3xl);
486
+ .jux-card-default {
487
+ /* Base card styles */
363
488
  }
364
489
 
365
- .jux-hero h1 {
366
- font-size: 2.5rem;
367
- font-weight: 700;
368
- line-height: 1.2;
369
- margin-bottom: var(--space-md);
370
- letter-spacing: -0.02em;
490
+ .jux-card-header {
491
+ padding: var(--space-lg) var(--space-xl);
492
+ border-bottom: var(--border-width) solid var(--color-border);
493
+ background: var(--color-surface-base);
371
494
  }
372
495
 
373
- .jux-hero p {
496
+ .jux-card-title {
374
497
  font-size: 1.125rem;
375
- color: var(--color-text-secondary);
376
- line-height: 1.6;
377
- }
378
-
379
- /* Dividers */
380
- .jux-divider {
381
- height: 1px;
382
- background: var(--color-border);
383
- border: none;
384
- margin: var(--space-2xl) 0;
385
- }
386
-
387
- /* Headings */
388
- h1, h2, h3, h4, h5, h6 {
389
498
  font-weight: 600;
390
- line-height: 1.3;
391
499
  color: var(--color-text-primary);
500
+ margin: 0;
392
501
  }
393
502
 
394
- h1 { font-size: 2rem; margin: var(--space-2xl) 0 var(--space-lg) 0; }
395
- h2 { font-size: 1.5rem; margin: var(--space-2xl) 0 var(--space-md) 0; }
396
- h3 { font-size: 1.25rem; margin: var(--space-xl) 0 var(--space-md) 0; }
397
-
398
- /* Paragraphs */
399
- p {
400
- line-height: 1.6;
503
+ .jux-card-body {
504
+ padding: var(--space-xl);
401
505
  color: var(--color-text-secondary);
402
- margin-bottom: var(--space-lg);
403
- }
404
-
405
- /* Lists */
406
- ul, ol {
407
- padding-left: var(--space-2xl);
408
- margin-bottom: var(--space-xl);
506
+ line-height: 1.6;
409
507
  }
410
508
 
411
- li {
412
- line-height: 1.6;
413
- color: var(--color-text-secondary);
414
- margin-bottom: var(--space-sm);
509
+ .jux-card-footer {
510
+ padding: var(--space-lg) var(--space-xl);
511
+ border-top: var(--border-width) solid var(--color-border);
512
+ background: var(--color-surface-base);
513
+ font-size: 0.875rem;
514
+ color: var(--color-text-tertiary);
415
515
  }
416
516
 
417
517
  /* ============================================
418
- COMPONENT STYLES (Extracted from TypeScript)
518
+ CHECKBOX COMPONENT
419
519
  ============================================ */
420
-
421
- /* Alert Component */
422
- .jux-alert {
423
- display: flex;
424
- align-items: center;
425
- gap: var(--space-md);
426
- padding: var(--space-lg);
427
- border-radius: var(--radius-lg);
428
- margin-bottom: var(--space-md);
429
- position: relative;
430
- animation: slideIn 0.3s ease-out;
520
+ .jux-checkbox {
521
+ margin-bottom: var(--space-md);
431
522
  }
432
523
 
433
- @keyframes slideIn {
434
- from {
435
- opacity: 0;
436
- transform: translateX(-20px);
437
- }
438
- to {
439
- opacity: 1;
440
- transform: translateX(0);
441
- }
524
+ .jux-checkbox-container {
525
+ display: inline-flex;
526
+ align-items: center;
527
+ gap: var(--space-md);
528
+ cursor: pointer;
529
+ user-select: none;
442
530
  }
443
531
 
444
- .jux-alert-info {
445
- background: #dbeafe;
446
- border-left: 4px solid #3b82f6;
447
- color: #1e40af;
532
+ .jux-checkbox-input {
533
+ position: absolute;
534
+ opacity: 0;
535
+ width: 0;
536
+ height: 0;
448
537
  }
449
538
 
450
- .jux-alert-success {
451
- background: #d1fae5;
452
- border-left: 4px solid #10b981;
453
- color: #065f46;
539
+ .jux-checkbox-checkmark {
540
+ width: 20px;
541
+ height: 20px;
542
+ border: 2px solid var(--color-border);
543
+ border-radius: var(--radius-sm);
544
+ display: flex;
545
+ align-items: center;
546
+ justify-content: center;
547
+ transition: all var(--transition-base);
548
+ background: var(--color-surface-elevated);
454
549
  }
455
550
 
456
- .jux-alert-warning {
457
- background: #fef3c7;
458
- border-left: 4px solid #f59e0b;
459
- color: #92400e;
551
+ .jux-checkbox-input:checked + .jux-checkbox-checkmark {
552
+ background: var(--color-brand);
553
+ border-color: var(--color-brand);
460
554
  }
461
555
 
462
- .jux-alert-error {
463
- background: #fee2e2;
464
- border-left: 4px solid #ef4444;
465
- color: #991b1b;
556
+ .jux-checkbox-checkmark svg {
557
+ width: 14px;
558
+ height: 14px;
559
+ fill: none;
560
+ stroke: white;
561
+ stroke-width: 2;
562
+ opacity: 0;
563
+ transition: opacity var(--transition-base);
466
564
  }
467
565
 
468
- .jux-alert-icon {
469
- flex-shrink: 0;
566
+ .jux-checkbox-input:checked + .jux-checkbox-checkmark svg {
567
+ opacity: 1;
470
568
  }
471
569
 
472
- .jux-alert-content {
473
- flex: 1;
474
- font-size: 14px;
475
- }
476
-
477
- .jux-alert-close {
478
- flex-shrink: 0;
479
- background: transparent;
480
- border: none;
481
- font-size: 24px;
482
- cursor: pointer;
483
- opacity: 0.6;
484
- transition: opacity 0.2s;
485
- padding: 0;
486
- width: 24px;
487
- height: 24px;
488
- display: flex;
489
- align-items: center;
490
- justify-content: center;
491
- }
492
-
493
- .jux-alert-close:hover {
494
- opacity: 1;
495
- }
496
-
497
- /* Badge Component */
498
- .jux-badge {
499
- display: inline-block;
500
- padding: var(--space-xs) var(--space-md);
501
- font-size: 0.75rem;
502
- font-weight: 600;
503
- line-height: 1;
504
- text-align: center;
505
- white-space: nowrap;
506
- vertical-align: baseline;
507
- border-radius: var(--radius-sm);
508
- transition: all var(--transition-base);
509
- }
510
-
511
- .jux-badge-pill {
512
- border-radius: 10rem;
513
- }
514
-
515
- .jux-badge-default {
516
- color: #374151;
517
- background-color: #e5e7eb;
518
- }
519
-
520
- .jux-badge-success {
521
- color: #065f46;
522
- background-color: #d1fae5;
523
- }
524
-
525
- .jux-badge-warning {
526
- color: #92400e;
527
- background-color: #fef3c7;
528
- }
529
-
530
- .jux-badge-error {
531
- color: #991b1b;
532
- background-color: #fee2e2;
533
- }
534
-
535
- .jux-badge-info {
536
- color: #1e40af;
537
- background-color: #dbeafe;
538
- }
539
-
540
- /* Button Component - Add missing variants */
541
- .jux-button-danger {
542
- background: #ef4444;
543
- color: white;
544
- }
545
-
546
- .jux-button-danger:hover {
547
- background: #dc2626;
548
- }
549
-
550
- .jux-button-link {
551
- background: transparent;
552
- color: #3b82f6;
553
- text-decoration: underline;
554
- }
555
-
556
- .jux-button-link:hover {
557
- color: #2563eb;
558
- }
559
-
560
- .jux-button-reset,
561
- .jux-button-submit {
562
- /* Use default button styles */
563
- }
564
-
565
- /* Card Component - Add missing classes */
566
- .jux-card-icon {
567
- flex-shrink: 0;
568
- margin-right: var(--space-md);
569
- }
570
-
571
- .jux-card-hoverable {
572
- transition: box-shadow var(--transition-base), transform var(--transition-base);
573
- }
574
-
575
- .jux-card-hoverable:hover {
576
- box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
577
- transform: translateY(-2px);
578
- }
579
-
580
- /* Checkbox Component - Add container class */
581
- .jux-checkbox-container {
582
- display: flex;
583
- flex-direction: column;
584
- gap: var(--space-sm);
585
- }
586
-
587
- .jux-checkbox-checkmark {
588
- /* Alias for jux-checkbox-mark */
570
+ .jux-checkbox-label-text {
571
+ font-size: 0.875rem;
572
+ color: var(--color-text-primary);
589
573
  }
590
574
 
591
- /* Datepicker Component - Add missing classes */
592
- .jux-datepicker-calendar {
593
- position: absolute;
594
- top: 100%;
595
- left: 0;
596
- margin-top: var(--space-xs);
597
- background: var(--color-surface-elevated);
598
- border: var(--border-width) solid var(--color-border);
599
- border-radius: var(--radius-lg);
600
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
601
- padding: var(--space-lg);
602
- z-index: 1000;
575
+ .jux-input-error {
576
+ color: #ef4444;
577
+ font-size: 0.75rem;
578
+ margin-top: var(--space-xs);
603
579
  }
604
580
 
605
- .jux-datepicker-header {
606
- display: flex;
607
- justify-content: space-between;
608
- align-items: center;
609
- margin-bottom: var(--space-md);
581
+ /* ============================================
582
+ CODE COMPONENT
583
+ ============================================ */
584
+ .jux-code {
585
+ background: #1e1e1e;
586
+ border: var(--border-width) solid #2d2d2d;
587
+ border-radius: var(--radius-lg);
588
+ padding: var(--space-lg);
589
+ margin: var(--space-xl) 0;
590
+ overflow-x: auto;
610
591
  }
611
592
 
612
- .jux-datepicker-nav {
613
- background: transparent;
614
- border: none;
615
- cursor: pointer;
616
- font-size: 1.125rem;
617
- padding: var(--space-xs) var(--space-sm);
618
- color: var(--color-text-secondary);
619
- transition: color var(--transition-base);
593
+ .jux-code pre {
594
+ margin: 0;
595
+ font-family: var(--font-family-mono);
596
+ font-size: 0.8125rem;
597
+ line-height: 1.6;
620
598
  }
621
599
 
622
- .jux-datepicker-nav:hover {
623
- color: var(--color-text-primary);
600
+ .jux-code code {
601
+ color: #d4d4d4;
602
+ font-family: inherit;
624
603
  }
625
604
 
626
- .jux-datepicker-month {
627
- font-weight: 600;
628
- font-size: 0.875rem;
629
- color: var(--color-text-primary);
605
+ /* ============================================
606
+ CONTAINER COMPONENT
607
+ ============================================ */
608
+ .jux-container {
609
+ display: block;
630
610
  }
631
611
 
632
- .jux-datepicker-grid {
633
- display: grid;
634
- grid-template-columns: repeat(7, 1fr);
635
- gap: var(--space-xs);
612
+ /* ============================================
613
+ DATEPICKER COMPONENT
614
+ ============================================ */
615
+ .jux-datepicker {
616
+ position: relative;
636
617
  }
637
618
 
638
- .jux-datepicker-day {
639
- padding: var(--space-sm);
640
- text-align: center;
641
- cursor: pointer;
642
- border-radius: var(--radius-sm);
643
- font-size: 0.875rem;
644
- transition: background-color var(--transition-base);
619
+ .jux-datepicker-container {
620
+ position: relative;
645
621
  }
646
622
 
647
- .jux-datepicker-day:hover {
648
- background-color: var(--color-surface-hover);
623
+ .jux-datepicker-input {
624
+ padding-left: var(--space-3xl);
649
625
  }
650
626
 
651
- .jux-datepicker-day-selected {
652
- background-color: #3b82f6;
653
- color: white;
627
+ /* ============================================
628
+ DIVIDER COMPONENT
629
+ ============================================ */
630
+ .jux-divider {
631
+ border: none;
632
+ margin: var(--space-2xl) 0;
654
633
  }
655
634
 
656
- .jux-datepicker-day-disabled {
657
- color: var(--color-text-tertiary);
658
- cursor: not-allowed;
659
- opacity: 0.5;
635
+ .jux-divider-default {
636
+ border-top: var(--border-width) solid var(--color-border);
660
637
  }
661
638
 
662
- /* Dialog Component - Add missing variant classes */
663
- .jux-dialog-default {
664
- /* Uses base dialog styles */
639
+ /* ============================================
640
+ DROPDOWN COMPONENT
641
+ ============================================ */
642
+ .jux-dropdown {
643
+ position: relative;
644
+ display: inline-block;
665
645
  }
666
646
 
667
- .jux-dialog-warning {
668
- border-top: 4px solid #f59e0b;
647
+ .jux-dropdown-trigger {
648
+ display: inline-flex;
649
+ align-items: center;
650
+ gap: var(--space-sm);
651
+ padding: var(--space-sm) var(--space-lg);
652
+ background: var(--color-surface-elevated);
653
+ border: var(--border-width) solid var(--color-border);
654
+ border-radius: var(--radius-md);
655
+ cursor: pointer;
656
+ font-size: 0.875rem;
657
+ color: var(--color-text-primary);
658
+ transition: background-color var(--transition-base);
669
659
  }
670
660
 
671
- .jux-dialog-danger {
672
- border-top: 4px solid #ef4444;
661
+ .jux-dropdown-trigger:hover {
662
+ background: var(--color-surface-hover);
673
663
  }
674
664
 
675
- .jux-dialog-button-cancel {
676
- background: var(--color-surface-hover);
677
- color: var(--color-text-primary);
678
- border: var(--border-width) solid var(--color-border);
665
+ .jux-dropdown-menu {
666
+ position: absolute;
667
+ top: 100%;
668
+ margin-top: var(--space-xs);
669
+ background: var(--color-surface-elevated);
670
+ border: var(--border-width) solid var(--color-border);
671
+ border-radius: var(--radius-md);
672
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
673
+ min-width: 200px;
674
+ z-index: 1000;
675
+ display: none;
679
676
  }
680
677
 
681
- /* Divider Component - Add variants */
682
- .jux-divider-default {
683
- border-top: var(--border-width) solid var(--color-border);
678
+ .jux-dropdown-menu.show {
679
+ display: block;
684
680
  }
685
681
 
686
- .jux-divider-dashed {
687
- border-top: var(--border-width) dashed var(--color-border);
682
+ .jux-dropdown-bottom-left {
683
+ left: 0;
688
684
  }
689
685
 
690
- .jux-divider-dotted {
691
- border-top: var(--border-width) dotted var(--color-border);
686
+ .jux-dropdown-item {
687
+ width: 100%;
688
+ padding: var(--space-md) var(--space-lg);
689
+ background: transparent;
690
+ border: none;
691
+ text-align: left;
692
+ cursor: pointer;
693
+ font-size: 0.875rem;
694
+ color: var(--color-text-primary);
695
+ transition: background-color var(--transition-base);
696
+ display: flex;
697
+ align-items: center;
698
+ gap: var(--space-md);
692
699
  }
693
700
 
694
- .jux-divider-text {
695
- display: flex;
696
- align-items: center;
697
- text-align: center;
698
- margin: var(--space-2xl) 0;
699
- color: var(--color-text-secondary);
700
- font-size: 0.875rem;
701
+ .jux-dropdown-item:hover {
702
+ background: var(--color-surface-hover);
701
703
  }
702
704
 
703
- .jux-divider-text::before,
704
- .jux-divider-text::after {
705
- content: '';
706
- flex: 1;
707
- border-top: var(--border-width) solid var(--color-border);
705
+ /* ============================================
706
+ INPUT COMPONENT
707
+ ============================================ */
708
+ .jux-input {
709
+ margin-bottom: var(--space-lg);
708
710
  }
709
711
 
710
- .jux-divider-text::before {
711
- margin-right: var(--space-md);
712
+ .jux-input-label {
713
+ display: block;
714
+ font-size: 0.875rem;
715
+ font-weight: 500;
716
+ color: var(--color-text-primary);
717
+ margin-bottom: var(--space-sm);
712
718
  }
713
719
 
714
- .jux-divider-text::after {
715
- margin-left: var(--space-md);
720
+ .jux-input-container {
721
+ position: relative;
722
+ display: flex;
723
+ align-items: center;
716
724
  }
717
725
 
718
- /* Dropdown Component - Add divider */
719
- .jux-dropdown-divider {
720
- height: var(--border-width);
721
- background: var(--color-border);
722
- margin: var(--space-xs) 0;
726
+ .jux-input-icon {
727
+ position: absolute;
728
+ left: var(--space-md);
729
+ color: var(--color-text-tertiary);
730
+ display: flex;
731
+ align-items: center;
732
+ pointer-events: none;
723
733
  }
724
734
 
725
- /* Element Component - Semantic HTML elements */
726
- .jux-header,
727
- .jux-footer,
728
- .jux-main,
729
- .jux-aside,
730
- .jux-section,
731
- .jux-article {
732
- display: block;
735
+ .jux-input-icon svg {
736
+ width: 18px;
737
+ height: 18px;
733
738
  }
734
739
 
735
- /* Error Handler Component */
736
- .jux-error-container {
737
- position: fixed;
738
- top: var(--space-lg);
739
- right: var(--space-lg);
740
- max-width: 500px;
741
- background: var(--color-surface-elevated);
742
- border: var(--border-width) solid #ef4444;
743
- border-radius: var(--radius-lg);
744
- box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.2);
745
- z-index: 9999;
746
- animation: slideIn 0.3s ease-out;
740
+ .jux-input-element {
741
+ width: 100%;
742
+ padding: var(--space-md);
743
+ font-size: 0.875rem;
744
+ color: var(--color-text-primary);
745
+ background: var(--color-surface-elevated);
746
+ border: var(--border-width) solid var(--color-border);
747
+ border-radius: var(--radius-md);
748
+ transition: border-color var(--transition-base), box-shadow var(--transition-base);
749
+ font-family: var(--font-family-base);
747
750
  }
748
751
 
749
- .jux-error-header {
750
- display: flex;
751
- justify-content: space-between;
752
- align-items: center;
753
- padding: var(--space-lg);
754
- border-bottom: var(--border-width) solid var(--color-border);
755
- background: #fee2e2;
752
+ .jux-input-element:focus {
753
+ outline: none;
754
+ border-color: var(--color-brand);
755
+ box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1);
756
756
  }
757
757
 
758
- .jux-error-title {
759
- font-size: 1rem;
760
- font-weight: 600;
761
- color: #991b1b;
758
+ /* ============================================
759
+ FILE UPLOAD COMPONENT
760
+ ============================================ */
761
+ .jux-fileupload {
762
+ margin-bottom: var(--space-lg);
762
763
  }
763
764
 
764
- .jux-error-close {
765
- background: transparent;
766
- border: none;
767
- font-size: 1.5rem;
768
- cursor: pointer;
769
- color: #991b1b;
770
- padding: 0;
771
- width: 24px;
772
- height: 24px;
773
- display: flex;
774
- align-items: center;
775
- justify-content: center;
765
+ .jux-fileupload-input {
766
+ display: none;
776
767
  }
777
768
 
778
- .jux-error-message {
779
- padding: var(--space-lg);
780
- color: var(--color-text-primary);
781
- font-size: 0.875rem;
782
- font-family: var(--font-family-mono);
769
+ .jux-fileupload-button-container {
770
+ display: flex;
771
+ flex-direction: column;
772
+ align-items: center;
773
+ gap: var(--space-md);
774
+ padding: var(--space-3xl);
775
+ border: 2px dashed var(--color-border);
776
+ border-radius: var(--radius-lg);
777
+ cursor: pointer;
778
+ transition: border-color var(--transition-base), background-color var(--transition-base);
783
779
  }
784
780
 
785
- .jux-error-stack,
786
- .jux-error-context,
787
- .jux-error-location,
788
- .jux-error-time {
789
- padding: var(--space-md) var(--space-lg);
790
- border-top: var(--border-width) solid var(--color-border);
791
- font-size: 0.75rem;
792
- color: var(--color-text-secondary);
793
- font-family: var(--font-family-mono);
781
+ .jux-fileupload-button-container:hover {
782
+ border-color: var(--color-brand);
783
+ background: var(--color-surface-base);
794
784
  }
795
785
 
796
- /* File Upload Component */
797
- .jux-fileupload-button-container {
798
- display: flex;
799
- justify-content: center;
800
- margin-top: var(--space-md);
786
+ .jux-fileupload-icon svg {
787
+ width: 48px;
788
+ height: 48px;
789
+ color: var(--color-text-tertiary);
801
790
  }
802
791
 
803
792
  .jux-fileupload-button {
804
- padding: var(--space-sm) var(--space-lg);
805
- background: #3b82f6;
806
- color: white;
807
- border: none;
808
- border-radius: var(--radius-md);
809
- cursor: pointer;
810
- font-size: 0.875rem;
811
- transition: background-color var(--transition-base);
793
+ padding: var(--space-sm) var(--space-xl);
794
+ background: var(--color-brand);
795
+ color: white;
796
+ border: none;
797
+ border-radius: var(--radius-md);
798
+ cursor: pointer;
799
+ font-size: 0.875rem;
800
+ font-weight: 500;
801
+ transition: background-color var(--transition-base);
812
802
  }
813
803
 
814
804
  .jux-fileupload-button:hover {
815
- background: #2563eb;
816
- }
817
-
818
- .jux-fileupload-icon {
819
- display: flex;
820
- justify-content: center;
821
- margin-bottom: var(--space-md);
822
- color: var(--color-text-secondary);
823
- }
824
-
825
- .jux-fileupload-item {
826
- display: flex;
827
- justify-content: space-between;
828
- align-items: center;
829
- padding: var(--space-md);
830
- background: var(--color-surface-hover);
831
- border-radius: var(--radius-md);
832
- margin-bottom: var(--space-sm);
805
+ background: var(--color-brand-hover);
833
806
  }
834
807
 
835
808
  .jux-fileupload-list {
836
- margin-top: var(--space-lg);
837
- }
838
-
839
- /* Heading Component - Add level variants */
840
- .jux-heading-1 { font-size: 2rem; }
841
- .jux-heading-2 { font-size: 1.5rem; }
842
- .jux-heading-3 { font-size: 1.25rem; }
843
- .jux-heading-4 { font-size: 1.125rem; }
844
- .jux-heading-5 { font-size: 1rem; }
845
- .jux-heading-6 { font-size: 0.875rem; }
846
-
847
- /* Hero Component - Add all variants */
848
- .jux-hero-centered {
849
- text-align: center;
809
+ margin-top: var(--space-lg);
850
810
  }
851
811
 
852
- .jux-hero-centered .jux-hero-content {
853
- align-items: center;
812
+ /* ============================================
813
+ KPI CARD COMPONENT
814
+ ============================================ */
815
+ .jux-kpicard {
816
+ background: var(--color-surface-elevated);
817
+ border: var(--border-width) solid var(--color-border);
818
+ border-radius: var(--radius-lg);
819
+ padding: var(--space-xl);
820
+ margin-bottom: var(--space-lg);
854
821
  }
855
822
 
856
- /* KPI Card Component */
857
- .jux-kpicard {
858
- background: var(--color-surface-elevated);
859
- border: var(--border-width) solid var(--color-border);
860
- border-radius: var(--radius-lg);
861
- padding: var(--space-xl);
823
+ .jux-kpicard-content {
824
+ display: flex;
825
+ flex-direction: column;
826
+ gap: var(--space-sm);
862
827
  }
863
828
 
864
829
  .jux-kpicard-title {
865
- font-size: 0.875rem;
866
- color: var(--color-text-secondary);
867
- margin-bottom: var(--space-sm);
830
+ font-size: 0.875rem;
831
+ color: var(--color-text-secondary);
832
+ font-weight: 500;
868
833
  }
869
834
 
870
835
  .jux-kpicard-value {
871
- font-size: 2rem;
872
- font-weight: 700;
873
- color: var(--color-text-primary);
874
- margin-bottom: var(--space-xs);
836
+ font-size: 2rem;
837
+ font-weight: 700;
838
+ color: var(--color-text-primary);
839
+ line-height: 1;
875
840
  }
876
841
 
877
842
  .jux-kpicard-delta {
878
- font-size: 0.875rem;
879
- font-weight: 500;
843
+ display: flex;
844
+ align-items: center;
845
+ gap: var(--space-xs);
846
+ font-size: 0.875rem;
847
+ font-weight: 500;
848
+ color: #10b981;
880
849
  }
881
850
 
882
- .jux-kpicard-content {
883
- display: flex;
884
- flex-direction: column;
851
+ .jux-kpicard-delta svg {
852
+ width: 16px;
853
+ height: 16px;
885
854
  }
886
855
 
887
- /* List Component - Add all variant classes */
856
+ /* ============================================
857
+ LIST COMPONENT
858
+ ============================================ */
888
859
  .jux-list-wrapper {
889
- border: var(--border-width) solid var(--color-border);
890
- border-radius: var(--radius-lg);
891
- overflow: hidden;
860
+ border: var(--border-width) solid var(--color-border);
861
+ border-radius: var(--radius-lg);
862
+ overflow: hidden;
863
+ margin-bottom: var(--space-lg);
892
864
  }
893
865
 
894
- .jux-list-header {
895
- padding: var(--space-lg);
896
- background: var(--color-surface-base);
897
- border-bottom: var(--border-width) solid var(--color-border);
898
- font-weight: 600;
899
- color: var(--color-text-primary);
866
+ .jux-list {
867
+ list-style: none;
868
+ margin: 0;
869
+ padding: 0;
870
+ }
871
+
872
+ .jux-list-unordered {
873
+ /* Base list styles */
900
874
  }
901
875
 
902
876
  .jux-list-item {
903
- padding: var(--space-lg);
904
- border-bottom: var(--border-width) solid var(--color-border);
905
- transition: background-color var(--transition-base);
877
+ padding: var(--space-lg);
878
+ border-bottom: var(--border-width) solid var(--color-border);
879
+ display: flex;
880
+ align-items: center;
881
+ gap: var(--space-md);
906
882
  }
907
883
 
908
884
  .jux-list-item:last-child {
909
- border-bottom: none;
885
+ border-bottom: none;
910
886
  }
911
887
 
912
- .jux-list-item-bordered {
913
- border: var(--border-width) solid var(--color-border);
914
- border-radius: var(--radius-md);
915
- margin-bottom: var(--space-sm);
888
+ .jux-list-item-hoverable {
889
+ transition: background-color var(--transition-base);
890
+ cursor: pointer;
916
891
  }
917
892
 
918
893
  .jux-list-item-hoverable:hover {
919
- background-color: var(--color-surface-hover);
920
- cursor: pointer;
921
- }
922
-
923
- .jux-list-item-selected {
924
- background-color: #eff6ff;
925
- border-left: 4px solid #3b82f6;
926
- }
927
-
928
- .jux-list-item-disabled {
929
- opacity: 0.5;
930
- cursor: not-allowed;
894
+ background: var(--color-surface-hover);
931
895
  }
932
896
 
933
- .jux-list-item-striped:nth-child(even) {
934
- background-color: var(--color-surface-base);
897
+ .jux-list-item-content {
898
+ flex: 1;
935
899
  }
936
900
 
937
- .jux-list-item-icon {
938
- margin-right: var(--space-md);
939
- color: var(--color-text-secondary);
901
+ .jux-list-item-text {
902
+ color: var(--color-text-secondary);
903
+ font-size: 0.875rem;
904
+ line-height: 1.5;
940
905
  }
941
906
 
942
907
  .jux-list-item-title {
943
- font-weight: 600;
944
- color: var(--color-text-primary);
945
- margin-bottom: var(--space-xs);
946
- }
947
-
948
- .jux-list-item-text,
949
- .jux-list-item-body {
950
- color: var(--color-text-secondary);
951
- font-size: 0.875rem;
908
+ font-weight: 600;
909
+ color: var(--color-text-primary);
910
+ margin-bottom: var(--space-xs);
952
911
  }
953
912
 
954
- .jux-list-item-content {
955
- flex: 1;
913
+ /* ============================================
914
+ LOADING COMPONENT
915
+ ============================================ */
916
+ .jux-loading {
917
+ display: flex;
918
+ align-items: center;
919
+ justify-content: center;
920
+ padding: var(--space-xl);
956
921
  }
957
922
 
958
- .jux-list-item-metadata {
959
- font-size: 0.75rem;
960
- color: var(--color-text-tertiary);
961
- margin-top: var(--space-xs);
923
+ .jux-loading-spinner {
924
+ width: 40px;
925
+ height: 40px;
926
+ border: 3px solid var(--color-border);
927
+ border-top-color: var(--color-brand);
928
+ border-radius: 50%;
929
+ animation: spin 0.8s linear infinite;
962
930
  }
963
931
 
964
- /* List item type variants */
965
- .jux-list-item-default { /* default styles */ }
966
- .jux-list-item-info { background-color: #eff6ff; }
967
- .jux-list-item-success { background-color: #f0fdf4; }
968
- .jux-list-item-warning { background-color: #fffbeb; }
969
- .jux-list-item-error { background-color: #fef2f2; }
970
-
971
- /* Loading Component - Add variants */
972
- .jux-loading-dots {
973
- display: flex;
974
- gap: var(--space-sm);
932
+ .jux-loading-lg .jux-loading-spinner {
933
+ width: 48px;
934
+ height: 48px;
935
+ border-width: 4px;
975
936
  }
976
937
 
977
- .jux-loading-dot {
978
- width: 8px;
979
- height: 8px;
980
- background: #3b82f6;
981
- border-radius: 50%;
982
- animation: bounce 1.4s infinite ease-in-out both;
938
+ @keyframes spin {
939
+ to { transform: rotate(360deg); }
983
940
  }
984
941
 
985
- .jux-loading-dot:nth-child(1) { animation-delay: -0.32s; }
986
- .jux-loading-dot:nth-child(2) { animation-delay: -0.16s; }
987
-
988
- @keyframes bounce {
989
- 0%, 80%, 100% { transform: scale(0); }
990
- 40% { transform: scale(1); }
942
+ /* ============================================
943
+ MENU COMPONENT
944
+ ============================================ */
945
+ .jux-menu {
946
+ display: flex;
947
+ gap: var(--space-xs);
991
948
  }
992
949
 
993
- .jux-loading-pulse {
994
- width: 40px;
995
- height: 40px;
996
- background: #3b82f6;
997
- border-radius: 50%;
998
- animation: pulse 1.5s infinite;
950
+ .jux-menu-vertical {
951
+ flex-direction: column;
999
952
  }
1000
953
 
1001
- @keyframes pulse {
1002
- 0%, 100% { opacity: 1; }
1003
- 50% { opacity: 0.5; }
954
+ .jux-menu-item {
955
+ /* Menu item wrapper */
1004
956
  }
1005
957
 
1006
- /* Menu Component */
1007
958
  .jux-menu-button {
1008
- background: transparent;
1009
- border: none;
1010
- padding: var(--space-md);
1011
- cursor: pointer;
1012
- color: var(--color-text-primary);
959
+ width: 100%;
960
+ display: flex;
961
+ align-items: center;
962
+ gap: var(--space-md);
963
+ padding: var(--space-md) var(--space-lg);
964
+ background: transparent;
965
+ border: none;
966
+ text-align: left;
967
+ cursor: pointer;
968
+ font-size: 0.875rem;
969
+ color: var(--color-text-primary);
970
+ border-radius: var(--radius-md);
971
+ transition: background-color var(--transition-base);
1013
972
  }
1014
973
 
1015
- .jux-menu-icon {
1016
- margin-right: var(--space-sm);
974
+ .jux-menu-button:hover {
975
+ background: var(--color-surface-hover);
1017
976
  }
1018
977
 
1019
978
  .jux-menu-label {
1020
- font-size: 0.75rem;
1021
- font-weight: 600;
1022
- color: var(--color-text-tertiary);
1023
- text-transform: uppercase;
1024
- padding: var(--space-md);
979
+ flex: 1;
1025
980
  }
1026
981
 
1027
- .jux-menu-link {
1028
- display: flex;
1029
- align-items: center;
1030
- padding: var(--space-md);
1031
- color: var(--color-text-primary);
1032
- text-decoration: none;
1033
- transition: background-color var(--transition-base);
982
+ /* ============================================
983
+ NAV COMPONENT
984
+ ============================================ */
985
+ .jux-nav {
986
+ display: flex;
987
+ gap: var(--space-sm);
1034
988
  }
1035
989
 
1036
- .jux-menu-link:hover {
1037
- background-color: var(--color-surface-hover);
990
+ .jux-nav-default {
991
+ /* Base nav styles */
1038
992
  }
1039
993
 
1040
- .jux-menu-link-active {
1041
- background-color: #eff6ff;
1042
- color: #3b82f6;
1043
- font-weight: 600;
994
+ .jux-nav-items {
995
+ display: flex;
996
+ gap: var(--space-sm);
997
+ align-items: center;
1044
998
  }
1045
999
 
1046
- .jux-menu-submenu {
1047
- padding-left: var(--space-2xl);
1000
+ .jux-nav-item-wrapper {
1001
+ /* Nav item wrapper */
1048
1002
  }
1049
1003
 
1050
- /* Modal Component - Add variants */
1051
- .jux-modal-overlay {
1052
- position: fixed;
1053
- top: 0;
1054
- left: 0;
1055
- right: 0;
1056
- bottom: 0;
1057
- background-color: rgba(0, 0, 0, 0.5);
1058
- display: flex;
1059
- align-items: center;
1060
- justify-content: center;
1061
- z-index: 1000;
1004
+ .jux-nav-link {
1005
+ padding: var(--space-sm) var(--space-lg);
1006
+ color: var(--color-text-primary);
1007
+ text-decoration: none;
1008
+ font-size: 0.875rem;
1009
+ border-radius: var(--radius-md);
1010
+ transition: background-color var(--transition-base), color var(--transition-base);
1062
1011
  }
1063
1012
 
1064
- .jux-modal {
1065
- background: var(--color-surface-elevated);
1066
- border-radius: var(--radius-lg);
1067
- box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.2);
1068
- max-width: 600px;
1069
- width: 90%;
1070
- max-height: 90vh;
1071
- overflow-y: auto;
1013
+ .jux-nav-link:hover {
1014
+ background: var(--color-surface-hover);
1015
+ color: var(--color-brand);
1072
1016
  }
1073
1017
 
1074
- .jux-modal-header {
1075
- padding: var(--space-xl);
1076
- border-bottom: var(--border-width) solid var(--color-border);
1077
- display: flex;
1078
- justify-content: space-between;
1079
- align-items: center;
1018
+ /* ============================================
1019
+ PARAGRAPH COMPONENT
1020
+ ============================================ */
1021
+ .jux-paragraph {
1022
+ line-height: 1.6;
1023
+ color: var(--color-text-secondary);
1024
+ margin-bottom: var(--space-lg);
1025
+ font-size: 0.875rem;
1080
1026
  }
1081
1027
 
1082
- .jux-modal-body {
1083
- padding: var(--space-xl);
1028
+ /* ============================================
1029
+ PROGRESS COMPONENT
1030
+ ============================================ */
1031
+ .jux-progress {
1032
+ margin-bottom: var(--space-lg);
1084
1033
  }
1085
1034
 
1086
- .jux-modal-close {
1087
- background: transparent;
1088
- border: none;
1089
- font-size: 1.5rem;
1090
- cursor: pointer;
1091
- color: var(--color-text-secondary);
1035
+ .jux-progress-track {
1036
+ width: 100%;
1037
+ height: 8px;
1038
+ background: var(--color-surface-base);
1039
+ border-radius: var(--radius-full);
1040
+ overflow: hidden;
1092
1041
  }
1093
1042
 
1094
- /* Nav Component - Add all variants */
1095
- .jux-nav-brand {
1096
- font-weight: 700;
1097
- font-size: 1.25rem;
1098
- color: var(--color-text-primary);
1043
+ .jux-progress-bar {
1044
+ height: 100%;
1045
+ background: var(--color-brand);
1046
+ transition: width 0.3s ease;
1047
+ border-radius: var(--radius-full);
1099
1048
  }
1100
1049
 
1101
- .jux-nav-items {
1102
- display: flex;
1103
- gap: var(--space-md);
1104
- align-items: center;
1050
+ .jux-progress-bar-success {
1051
+ background: #10b981;
1105
1052
  }
1106
1053
 
1107
- .jux-nav-item-wrapper {
1108
- position: relative;
1054
+ .jux-progress-bar-warning {
1055
+ background: #f59e0b;
1109
1056
  }
1110
1057
 
1111
- .jux-nav-item-active {
1112
- font-weight: 600;
1058
+ .jux-progress-bar-error {
1059
+ background: #ef4444;
1113
1060
  }
1114
1061
 
1115
- .jux-nav-link {
1116
- padding: var(--space-md) var(--space-lg);
1117
- text-decoration: none;
1118
- color: var(--color-text-primary);
1119
- transition: color var(--transition-base);
1062
+ /* ============================================
1063
+ RADIO COMPONENT
1064
+ ============================================ */
1065
+ .jux-radio {
1066
+ margin-bottom: var(--space-lg);
1120
1067
  }
1121
1068
 
1122
- .jux-nav-link:hover {
1123
- color: #3b82f6;
1069
+ .jux-radio-options {
1070
+ display: flex;
1071
+ gap: var(--space-lg);
1124
1072
  }
1125
1073
 
1126
- .jux-nav-link-active {
1127
- color: #3b82f6;
1128
- font-weight: 600;
1074
+ .jux-radio-vertical {
1075
+ flex-direction: column;
1076
+ gap: var(--space-md);
1129
1077
  }
1130
1078
 
1131
- .jux-nav-tabs {
1132
- border-bottom: var(--border-width) solid var(--color-border);
1079
+ .jux-radio-option {
1080
+ display: flex;
1081
+ align-items: center;
1082
+ gap: var(--space-md);
1083
+ cursor: pointer;
1084
+ user-select: none;
1133
1085
  }
1134
1086
 
1135
- .jux-nav-tabs .jux-nav-link {
1136
- border-bottom: 2px solid transparent;
1087
+ .jux-radio-input {
1088
+ position: absolute;
1089
+ opacity: 0;
1090
+ width: 0;
1091
+ height: 0;
1137
1092
  }
1138
1093
 
1139
- .jux-nav-tabs .jux-nav-link-active {
1140
- border-bottom-color: #3b82f6;
1094
+ .jux-radio-mark {
1095
+ width: 20px;
1096
+ height: 20px;
1097
+ border: 2px solid var(--color-border);
1098
+ border-radius: 50%;
1099
+ display: flex;
1100
+ align-items: center;
1101
+ justify-content: center;
1102
+ transition: all var(--transition-base);
1103
+ background: var(--color-surface-elevated);
1141
1104
  }
1142
1105
 
1143
- .jux-nav-pills .jux-nav-link {
1144
- border-radius: var(--radius-md);
1106
+ .jux-radio-input:checked + .jux-radio-mark {
1107
+ border-color: var(--color-brand);
1145
1108
  }
1146
1109
 
1147
- .jux-nav-pills .jux-nav-link-active {
1148
- background-color: #3b82f6;
1149
- color: white;
1110
+ .jux-radio-mark::after {
1111
+ content: '';
1112
+ width: 10px;
1113
+ height: 10px;
1114
+ border-radius: 50%;
1115
+ background: var(--color-brand);
1116
+ opacity: 0;
1117
+ transform: scale(0);
1118
+ transition: all var(--transition-base);
1150
1119
  }
1151
1120
 
1152
- .jux-nav-sticky {
1153
- position: sticky;
1154
- top: 0;
1155
- z-index: 100;
1121
+ .jux-radio-input:checked + .jux-radio-mark::after {
1122
+ opacity: 1;
1123
+ transform: scale(1);
1156
1124
  }
1157
1125
 
1158
- /* Page Helper */
1159
- .jux-page {
1160
- min-height: 100vh;
1161
- display: flex;
1162
- flex-direction: column;
1126
+ .jux-radio-label-text {
1127
+ font-size: 0.875rem;
1128
+ color: var(--color-text-primary);
1163
1129
  }
1164
1130
 
1165
- /* Progress Component - Fix class name */
1166
- .jux-progress-track {
1167
- /* Alias for jux-progress-bar */
1168
- width: 100%;
1169
- height: 8px;
1170
- background-color: var(--color-surface-base);
1171
- border-radius: var(--radius-lg);
1172
- overflow: hidden;
1131
+ /* ============================================
1132
+ SELECT COMPONENT
1133
+ ============================================ */
1134
+ .jux-select {
1135
+ margin-bottom: var(--space-lg);
1173
1136
  }
1174
1137
 
1175
- /* Radio Component - Add orientation classes */
1176
- .jux-radio-horizontal {
1177
- flex-direction: row;
1178
- flex-wrap: wrap;
1138
+ .jux-select-container {
1139
+ position: relative;
1179
1140
  }
1180
1141
 
1181
- .jux-radio-vertical {
1182
- flex-direction: column;
1142
+ .jux-select-element {
1143
+ width: 100%;
1144
+ padding: var(--space-md);
1145
+ font-size: 0.875rem;
1146
+ color: var(--color-text-primary);
1147
+ background: var(--color-surface-elevated);
1148
+ border: var(--border-width) solid var(--color-border);
1149
+ border-radius: var(--radius-md);
1150
+ cursor: pointer;
1151
+ appearance: none;
1152
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23666'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E");
1153
+ background-repeat: no-repeat;
1154
+ background-position: right var(--space-md) center;
1155
+ background-size: 20px;
1156
+ padding-right: var(--space-3xl);
1183
1157
  }
1184
1158
 
1185
- /* Script/Style placeholders */
1186
- .jux-script-,
1187
- .jux-style- {
1188
- /* These are injected dynamically */
1159
+ .jux-select-element:focus {
1160
+ outline: none;
1161
+ border-color: var(--color-brand);
1162
+ box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1);
1189
1163
  }
1190
1164
 
1191
- /* Sidebar Component - Add toggle */
1192
- .jux-sidebar-toggle {
1193
- position: absolute;
1194
- top: var(--space-lg);
1195
- right: calc(var(--space-lg) * -1);
1196
- background: var(--color-surface-elevated);
1197
- border: var(--border-width) solid var(--color-border);
1198
- border-radius: 0 var(--radius-md) var(--radius-md) 0;
1199
- padding: var(--space-sm);
1200
- cursor: pointer;
1165
+ /* ============================================
1166
+ SIDEBAR COMPONENT
1167
+ ============================================ */
1168
+ .jux-sidebar {
1169
+ position: relative;
1170
+ background: var(--color-surface-base);
1171
+ border: var(--border-width) solid var(--color-border);
1172
+ border-radius: var(--radius-lg);
1173
+ padding: var(--space-lg);
1174
+ margin-bottom: var(--space-lg);
1201
1175
  }
1202
1176
 
1203
- /* Table Component - Add missing classes */
1204
- .jux-table-wrapper {
1205
- overflow-x: auto;
1206
- border: var(--border-width) solid var(--color-border);
1207
- border-radius: var(--radius-lg);
1177
+ .jux-sidebar-left {
1178
+ /* Left-aligned sidebar */
1208
1179
  }
1209
1180
 
1210
- .jux-table {
1211
- width: 100%;
1212
- border-collapse: collapse;
1181
+ .jux-sidebar-toggle {
1182
+ position: absolute;
1183
+ top: var(--space-md);
1184
+ right: var(--space-md);
1185
+ background: transparent;
1186
+ border: none;
1187
+ cursor: pointer;
1188
+ padding: var(--space-xs);
1189
+ color: var(--color-text-secondary);
1190
+ display: flex;
1191
+ align-items: center;
1192
+ justify-content: center;
1213
1193
  }
1214
1194
 
1215
- .jux-table-striped tbody tr:nth-child(even) {
1216
- background-color: var(--color-surface-base);
1195
+ /* ============================================
1196
+ SWITCH COMPONENT
1197
+ ============================================ */
1198
+ .jux-switch {
1199
+ margin-bottom: var(--space-lg);
1217
1200
  }
1218
1201
 
1219
- .jux-table-hoverable tbody tr:hover {
1220
- background-color: var(--color-surface-hover);
1202
+ .jux-switch-container {
1203
+ display: inline-flex;
1204
+ align-items: center;
1205
+ gap: var(--space-md);
1206
+ cursor: pointer;
1207
+ user-select: none;
1221
1208
  }
1222
1209
 
1223
- .jux-table-bordered th,
1224
- .jux-table-bordered td {
1225
- border: var(--border-width) solid var(--color-border);
1210
+ .jux-switch-input {
1211
+ position: absolute;
1212
+ opacity: 0;
1213
+ width: 0;
1214
+ height: 0;
1226
1215
  }
1227
1216
 
1228
- .jux-table-row-selected {
1229
- background-color: #eff6ff !important;
1217
+ .jux-switch-slider {
1218
+ width: 44px;
1219
+ height: 24px;
1220
+ background: var(--color-border);
1221
+ border-radius: var(--radius-full);
1222
+ position: relative;
1223
+ transition: background-color var(--transition-base);
1230
1224
  }
1231
1225
 
1232
- .jux-bulk-checkbox {
1233
- margin: 0;
1226
+ .jux-switch-slider::before {
1227
+ content: '';
1228
+ position: absolute;
1229
+ width: 18px;
1230
+ height: 18px;
1231
+ left: 3px;
1232
+ top: 3px;
1233
+ background: white;
1234
+ border-radius: 50%;
1235
+ transition: transform var(--transition-base);
1234
1236
  }
1235
1237
 
1236
- .jux-table-filter {
1237
- padding: var(--space-lg);
1238
- border-bottom: var(--border-width) solid var(--color-border);
1238
+ .jux-switch-input:checked + .jux-switch-slider {
1239
+ background: var(--color-brand);
1239
1240
  }
1240
1241
 
1241
- .jux-table-pagination {
1242
- padding: var(--space-lg);
1243
- border-top: var(--border-width) solid var(--color-border);
1244
- display: flex;
1245
- justify-content: center;
1246
- gap: var(--space-sm);
1242
+ .jux-switch-input:checked + .jux-switch-slider::before {
1243
+ transform: translateX(20px);
1247
1244
  }
1248
1245
 
1249
- /* Tabs Component */
1250
- .jux-tabs-list {
1251
- display: flex;
1252
- gap: var(--space-sm);
1253
- border-bottom: var(--border-width) solid var(--color-border);
1254
- margin-bottom: var(--space-lg);
1246
+ .jux-switch-label-text {
1247
+ font-size: 0.875rem;
1248
+ color: var(--color-text-primary);
1255
1249
  }
1256
1250
 
1257
- .jux-tabs-button {
1258
- padding: var(--space-md) var(--space-lg);
1259
- background: transparent;
1260
- border: none;
1261
- border-bottom: 2px solid transparent;
1262
- cursor: pointer;
1263
- color: var(--color-text-secondary);
1264
- font-weight: 500;
1265
- transition: all var(--transition-base);
1251
+ /* ============================================
1252
+ TABLE COMPONENT
1253
+ ============================================ */
1254
+ .jux-table-wrapper {
1255
+ border: var(--border-width) solid var(--color-border);
1256
+ border-radius: var(--radius-lg);
1257
+ overflow: hidden;
1258
+ margin-bottom: var(--space-lg);
1266
1259
  }
1267
1260
 
1268
- .jux-tabs-button:hover {
1269
- color: var(--color-text-primary);
1261
+ .jux-table-filter {
1262
+ width: 100%;
1263
+ padding: var(--space-md) var(--space-lg);
1264
+ font-size: 0.875rem;
1265
+ border: none;
1266
+ border-bottom: var(--border-width) solid var(--color-border);
1267
+ background: var(--color-surface-base);
1268
+ color: var(--color-text-primary);
1270
1269
  }
1271
1270
 
1272
- .jux-tabs-button-active {
1273
- color: #3b82f6;
1274
- border-bottom-color: #3b82f6;
1271
+ .jux-table-filter:focus {
1272
+ outline: none;
1273
+ background: var(--color-surface-elevated);
1275
1274
  }
1276
1275
 
1277
- .jux-tabs-panels {
1278
- position: relative;
1276
+ .jux-table {
1277
+ width: 100%;
1278
+ border-collapse: collapse;
1279
1279
  }
1280
1280
 
1281
- .jux-tabs-panel {
1282
- display: none;
1281
+ .jux-table-bordered {
1282
+ /* Bordered table variant */
1283
1283
  }
1284
1284
 
1285
- .jux-tabs-panel-active {
1286
- display: block;
1285
+ .jux-table thead {
1286
+ background: var(--color-surface-base);
1287
+ border-bottom: var(--border-width) solid var(--color-border);
1287
1288
  }
1288
1289
 
1289
- /* Theme Toggle Component */
1290
- .jux-theme {
1291
- /* Theme wrapper class */
1290
+ .jux-table th {
1291
+ padding: var(--space-md) var(--space-lg);
1292
+ text-align: left;
1293
+ font-size: 0.75rem;
1294
+ font-weight: 600;
1295
+ color: var(--color-text-secondary);
1296
+ text-transform: uppercase;
1297
+ letter-spacing: 0.05em;
1292
1298
  }
1293
1299
 
1294
- .jux-theme-toggle {
1295
- cursor: pointer;
1300
+ .jux-table td {
1301
+ padding: var(--space-md) var(--space-lg);
1302
+ font-size: 0.875rem;
1303
+ color: var(--color-text-primary);
1304
+ border-top: var(--border-width) solid var(--color-border);
1296
1305
  }
1297
1306
 
1298
- .jux-theme-toggle-button {
1299
- background: var(--color-surface-hover);
1300
- border: var(--border-width) solid var(--color-border);
1301
- padding: var(--space-sm) var(--space-md);
1302
- border-radius: var(--radius-md);
1303
- cursor: pointer;
1307
+ .jux-table tbody tr:hover {
1308
+ background: var(--color-surface-hover);
1304
1309
  }
1305
1310
 
1306
- .jux-theme-toggle-dropdown {
1307
- position: absolute;
1308
- top: 100%;
1309
- right: 0;
1310
- margin-top: var(--space-xs);
1311
- background: var(--color-surface-elevated);
1312
- border: var(--border-width) solid var(--color-border);
1313
- border-radius: var(--radius-md);
1314
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
1315
- min-width: 150px;
1316
- z-index: 1000;
1311
+ .jux-table-pagination {
1312
+ display: flex;
1313
+ align-items: center;
1314
+ justify-content: center;
1315
+ gap: var(--space-md);
1316
+ padding: var(--space-md) var(--space-lg);
1317
+ border-top: var(--border-width) solid var(--color-border);
1318
+ background: var(--color-surface-base);
1317
1319
  }
1318
1320
 
1319
- .jux-theme-toggle-select {
1320
- /* Native select styling */
1321
+ .jux-table-pagination button {
1322
+ padding: var(--space-xs) var(--space-md);
1323
+ background: var(--color-surface-elevated);
1324
+ border: var(--border-width) solid var(--color-border);
1325
+ border-radius: var(--radius-md);
1326
+ cursor: pointer;
1327
+ font-size: 0.875rem;
1328
+ color: var(--color-text-primary);
1329
+ transition: background-color var(--transition-base);
1321
1330
  }
1322
1331
 
1323
- .jux-theme-toggle-cycle {
1324
- /* Button that cycles through themes */
1332
+ .jux-table-pagination button:hover:not(:disabled) {
1333
+ background: var(--color-surface-hover);
1325
1334
  }
1326
1335
 
1327
- /* Token Calculator Component */
1328
- .jux-token-calculator {
1329
- background: var(--color-surface-elevated);
1330
- border: var(--border-width) solid var(--color-border);
1331
- border-radius: var(--radius-lg);
1332
- padding: var(--space-xl);
1336
+ .jux-table-pagination button:disabled {
1337
+ opacity: 0.5;
1338
+ cursor: not-allowed;
1333
1339
  }
1334
1340
 
1335
- .jux-token-calculator-header {
1336
- margin-bottom: var(--space-xl);
1337
- padding-bottom: var(--space-lg);
1338
- border-bottom: var(--border-width) solid var(--color-border);
1341
+ .jux-table-pagination span {
1342
+ font-size: 0.875rem;
1343
+ color: var(--color-text-secondary);
1339
1344
  }
1340
1345
 
1341
- .jux-token-calculator-content {
1342
- display: flex;
1343
- flex-direction: column;
1344
- gap: var(--space-lg);
1346
+ /* ============================================
1347
+ TABS COMPONENT
1348
+ ============================================ */
1349
+ .jux-tabs {
1350
+ margin-bottom: var(--space-lg);
1345
1351
  }
1346
1352
 
1347
- .jux-token-table {
1348
- width: 100%;
1349
- border-collapse: collapse;
1353
+ .jux-tabs-default {
1354
+ /* Base tabs styles */
1350
1355
  }
1351
1356
 
1352
- .jux-token-details {
1353
- font-size: 0.875rem;
1354
- color: var(--color-text-secondary);
1357
+ .jux-tabs-list {
1358
+ display: flex;
1359
+ gap: var(--space-xs);
1360
+ border-bottom: var(--border-width) solid var(--color-border);
1361
+ margin-bottom: var(--space-lg);
1355
1362
  }
1356
1363
 
1357
- .jux-token-row-highlight {
1358
- background-color: #fffbeb;
1364
+ .jux-tabs-button {
1365
+ padding: var(--space-md) var(--space-xl);
1366
+ background: transparent;
1367
+ border: none;
1368
+ border-bottom: 2px solid transparent;
1369
+ cursor: pointer;
1370
+ font-size: 0.875rem;
1371
+ font-weight: 500;
1372
+ color: var(--color-text-secondary);
1373
+ transition: color var(--transition-base), border-color var(--transition-base);
1374
+ position: relative;
1375
+ bottom: -1px;
1359
1376
  }
1360
1377
 
1361
- .jux-token-bar-container {
1362
- display: flex;
1363
- flex-direction: column;
1364
- gap: var(--space-sm);
1378
+ .jux-tabs-button:hover {
1379
+ color: var(--color-text-primary);
1365
1380
  }
1366
1381
 
1367
- .jux-token-bar-row {
1368
- display: flex;
1369
- gap: var(--space-xs);
1370
- align-items: center;
1382
+ .jux-tabs-button-active {
1383
+ color: var(--color-brand);
1384
+ border-bottom-color: var(--color-brand);
1371
1385
  }
1372
1386
 
1373
- .jux-token-bar-label {
1374
- min-width: 100px;
1375
- font-size: 0.875rem;
1376
- color: var(--color-text-secondary);
1387
+ .jux-tabs-panels {
1388
+ /* Tabs panels container */
1377
1389
  }
1378
1390
 
1379
- .jux-token-bar-jux {
1380
- height: 24px;
1381
- background: #3b82f6;
1382
- border-radius: var(--radius-sm);
1391
+ .jux-tabs-panel {
1392
+ display: none;
1393
+ animation: fadeIn 0.2s ease-in;
1383
1394
  }
1384
1395
 
1385
- .jux-token-bar-other {
1386
- height: 24px;
1387
- background: #e5e7eb;
1388
- border-radius: var(--radius-sm);
1396
+ .jux-tabs-panel-active {
1397
+ display: block;
1389
1398
  }
1390
1399
 
1391
- .jux-token-bar-value {
1392
- min-width: 60px;
1393
- text-align: right;
1394
- font-size: 0.875rem;
1395
- font-weight: 600;
1400
+ @keyframes fadeIn {
1401
+ from { opacity: 0; }
1402
+ to { opacity: 1; }
1396
1403
  }
1397
1404
 
1398
- /* View Component */
1405
+ /* ============================================
1406
+ VIEW COMPONENT
1407
+ ============================================ */
1399
1408
  .jux-view {
1400
- display: flex;
1401
- flex-direction: column;
1409
+ background: var(--color-surface-elevated);
1410
+ border: var(--border-width) solid var(--color-border);
1411
+ border-radius: var(--radius-lg);
1412
+ overflow: hidden;
1413
+ margin-bottom: var(--space-lg);
1402
1414
  }
1403
1415
 
1404
1416
  .jux-view-header {
1405
- padding: var(--space-xl);
1406
- border-bottom: var(--border-width) solid var(--color-border);
1417
+ padding: var(--space-xl);
1418
+ border-bottom: var(--border-width) solid var(--color-border);
1419
+ background: var(--color-surface-base);
1407
1420
  }
1408
1421
 
1409
1422
  .jux-view-title {
1410
- font-size: 1.5rem;
1411
- font-weight: 700;
1412
- color: var(--color-text-primary);
1413
- margin-bottom: var(--space-xs);
1423
+ font-size: 1.5rem;
1424
+ font-weight: 600;
1425
+ color: var(--color-text-primary);
1426
+ margin: 0;
1414
1427
  }
1415
1428
 
1416
- .jux-view-description {
1417
- font-size: 0.875rem;
1418
- color: var(--color-text-secondary);
1429
+ .jux-view-content {
1430
+ padding: var(--space-xl);
1419
1431
  }
1420
1432
 
1421
- .jux-view-content {
1422
- padding: var(--space-xl);
1433
+ /* ============================================
1434
+ SCROLLBARS
1435
+ ============================================ */
1436
+ #appmain::-webkit-scrollbar,
1437
+ #appaside::-webkit-scrollbar {
1438
+ width: 6px;
1423
1439
  }
1424
1440
 
1425
- .jux-view-item {
1426
- padding: var(--space-lg);
1427
- border-bottom: var(--border-width) solid var(--color-border);
1441
+ #appmain::-webkit-scrollbar-track,
1442
+ #appaside::-webkit-scrollbar-track {
1443
+ background: transparent;
1444
+ }
1445
+
1446
+ #appmain::-webkit-scrollbar-thumb,
1447
+ #appaside::-webkit-scrollbar-thumb {
1448
+ background: var(--color-border);
1449
+ border-radius: 3px;
1450
+ }
1451
+
1452
+ #appmain::-webkit-scrollbar-thumb:hover,
1453
+ #appaside::-webkit-scrollbar-thumb:hover {
1454
+ background: var(--color-border-hover);
1428
1455
  }
1429
1456
 
1430
- .jux-view-item:last-child {
1431
- border-bottom: none;
1457
+ /* ============================================
1458
+ RESPONSIVE
1459
+ ============================================ */
1460
+ @media (max-width: 768px) {
1461
+ #app {
1462
+ grid-template-columns: 1fr;
1463
+ grid-template-areas:
1464
+ "header"
1465
+ "main"
1466
+ "footer";
1467
+ }
1468
+
1469
+ #appaside {
1470
+ display: none;
1471
+ }
1472
+
1473
+ #appheader {
1474
+ padding: 0 var(--space-lg);
1475
+ }
1476
+
1477
+ #appmain-content {
1478
+ padding: var(--space-2xl) var(--space-lg);
1479
+ }
1480
+
1481
+ #appfooter {
1482
+ padding: var(--space-md) var(--space-lg);
1483
+ }
1484
+
1485
+ .jux-hero-title {
1486
+ font-size: 2rem;
1487
+ }
1488
+
1489
+ .jux-radio-options {
1490
+ flex-direction: column;
1491
+ }
1432
1492
  }