juxscript 1.0.55 → 1.0.57

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.
@@ -412,4 +412,1021 @@ li {
412
412
  line-height: 1.6;
413
413
  color: var(--color-text-secondary);
414
414
  margin-bottom: var(--space-sm);
415
+ }
416
+
417
+ /* ============================================
418
+ COMPONENT STYLES (Extracted from TypeScript)
419
+ ============================================ */
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;
431
+ }
432
+
433
+ @keyframes slideIn {
434
+ from {
435
+ opacity: 0;
436
+ transform: translateX(-20px);
437
+ }
438
+ to {
439
+ opacity: 1;
440
+ transform: translateX(0);
441
+ }
442
+ }
443
+
444
+ .jux-alert-info {
445
+ background: #dbeafe;
446
+ border-left: 4px solid #3b82f6;
447
+ color: #1e40af;
448
+ }
449
+
450
+ .jux-alert-success {
451
+ background: #d1fae5;
452
+ border-left: 4px solid #10b981;
453
+ color: #065f46;
454
+ }
455
+
456
+ .jux-alert-warning {
457
+ background: #fef3c7;
458
+ border-left: 4px solid #f59e0b;
459
+ color: #92400e;
460
+ }
461
+
462
+ .jux-alert-error {
463
+ background: #fee2e2;
464
+ border-left: 4px solid #ef4444;
465
+ color: #991b1b;
466
+ }
467
+
468
+ .jux-alert-icon {
469
+ flex-shrink: 0;
470
+ }
471
+
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 */
589
+ }
590
+
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;
603
+ }
604
+
605
+ .jux-datepicker-header {
606
+ display: flex;
607
+ justify-content: space-between;
608
+ align-items: center;
609
+ margin-bottom: var(--space-md);
610
+ }
611
+
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);
620
+ }
621
+
622
+ .jux-datepicker-nav:hover {
623
+ color: var(--color-text-primary);
624
+ }
625
+
626
+ .jux-datepicker-month {
627
+ font-weight: 600;
628
+ font-size: 0.875rem;
629
+ color: var(--color-text-primary);
630
+ }
631
+
632
+ .jux-datepicker-grid {
633
+ display: grid;
634
+ grid-template-columns: repeat(7, 1fr);
635
+ gap: var(--space-xs);
636
+ }
637
+
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);
645
+ }
646
+
647
+ .jux-datepicker-day:hover {
648
+ background-color: var(--color-surface-hover);
649
+ }
650
+
651
+ .jux-datepicker-day-selected {
652
+ background-color: #3b82f6;
653
+ color: white;
654
+ }
655
+
656
+ .jux-datepicker-day-disabled {
657
+ color: var(--color-text-tertiary);
658
+ cursor: not-allowed;
659
+ opacity: 0.5;
660
+ }
661
+
662
+ /* Dialog Component - Add missing variant classes */
663
+ .jux-dialog-default {
664
+ /* Uses base dialog styles */
665
+ }
666
+
667
+ .jux-dialog-warning {
668
+ border-top: 4px solid #f59e0b;
669
+ }
670
+
671
+ .jux-dialog-danger {
672
+ border-top: 4px solid #ef4444;
673
+ }
674
+
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);
679
+ }
680
+
681
+ /* Divider Component - Add variants */
682
+ .jux-divider-default {
683
+ border-top: var(--border-width) solid var(--color-border);
684
+ }
685
+
686
+ .jux-divider-dashed {
687
+ border-top: var(--border-width) dashed var(--color-border);
688
+ }
689
+
690
+ .jux-divider-dotted {
691
+ border-top: var(--border-width) dotted var(--color-border);
692
+ }
693
+
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
+ }
702
+
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);
708
+ }
709
+
710
+ .jux-divider-text::before {
711
+ margin-right: var(--space-md);
712
+ }
713
+
714
+ .jux-divider-text::after {
715
+ margin-left: var(--space-md);
716
+ }
717
+
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;
723
+ }
724
+
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;
733
+ }
734
+
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;
747
+ }
748
+
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;
756
+ }
757
+
758
+ .jux-error-title {
759
+ font-size: 1rem;
760
+ font-weight: 600;
761
+ color: #991b1b;
762
+ }
763
+
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;
776
+ }
777
+
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);
783
+ }
784
+
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);
794
+ }
795
+
796
+ /* File Upload Component */
797
+ .jux-fileupload-button-container {
798
+ display: flex;
799
+ justify-content: center;
800
+ margin-top: var(--space-md);
801
+ }
802
+
803
+ .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);
812
+ }
813
+
814
+ .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);
833
+ }
834
+
835
+ .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;
850
+ }
851
+
852
+ .jux-hero-centered .jux-hero-content {
853
+ align-items: center;
854
+ }
855
+
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);
862
+ }
863
+
864
+ .jux-kpicard-title {
865
+ font-size: 0.875rem;
866
+ color: var(--color-text-secondary);
867
+ margin-bottom: var(--space-sm);
868
+ }
869
+
870
+ .jux-kpicard-value {
871
+ font-size: 2rem;
872
+ font-weight: 700;
873
+ color: var(--color-text-primary);
874
+ margin-bottom: var(--space-xs);
875
+ }
876
+
877
+ .jux-kpicard-delta {
878
+ font-size: 0.875rem;
879
+ font-weight: 500;
880
+ }
881
+
882
+ .jux-kpicard-content {
883
+ display: flex;
884
+ flex-direction: column;
885
+ }
886
+
887
+ /* List Component - Add all variant classes */
888
+ .jux-list-wrapper {
889
+ border: var(--border-width) solid var(--color-border);
890
+ border-radius: var(--radius-lg);
891
+ overflow: hidden;
892
+ }
893
+
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);
900
+ }
901
+
902
+ .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);
906
+ }
907
+
908
+ .jux-list-item:last-child {
909
+ border-bottom: none;
910
+ }
911
+
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);
916
+ }
917
+
918
+ .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;
931
+ }
932
+
933
+ .jux-list-item-striped:nth-child(even) {
934
+ background-color: var(--color-surface-base);
935
+ }
936
+
937
+ .jux-list-item-icon {
938
+ margin-right: var(--space-md);
939
+ color: var(--color-text-secondary);
940
+ }
941
+
942
+ .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;
952
+ }
953
+
954
+ .jux-list-item-content {
955
+ flex: 1;
956
+ }
957
+
958
+ .jux-list-item-metadata {
959
+ font-size: 0.75rem;
960
+ color: var(--color-text-tertiary);
961
+ margin-top: var(--space-xs);
962
+ }
963
+
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);
975
+ }
976
+
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;
983
+ }
984
+
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); }
991
+ }
992
+
993
+ .jux-loading-pulse {
994
+ width: 40px;
995
+ height: 40px;
996
+ background: #3b82f6;
997
+ border-radius: 50%;
998
+ animation: pulse 1.5s infinite;
999
+ }
1000
+
1001
+ @keyframes pulse {
1002
+ 0%, 100% { opacity: 1; }
1003
+ 50% { opacity: 0.5; }
1004
+ }
1005
+
1006
+ /* Menu Component */
1007
+ .jux-menu-button {
1008
+ background: transparent;
1009
+ border: none;
1010
+ padding: var(--space-md);
1011
+ cursor: pointer;
1012
+ color: var(--color-text-primary);
1013
+ }
1014
+
1015
+ .jux-menu-icon {
1016
+ margin-right: var(--space-sm);
1017
+ }
1018
+
1019
+ .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);
1025
+ }
1026
+
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);
1034
+ }
1035
+
1036
+ .jux-menu-link:hover {
1037
+ background-color: var(--color-surface-hover);
1038
+ }
1039
+
1040
+ .jux-menu-link-active {
1041
+ background-color: #eff6ff;
1042
+ color: #3b82f6;
1043
+ font-weight: 600;
1044
+ }
1045
+
1046
+ .jux-menu-submenu {
1047
+ padding-left: var(--space-2xl);
1048
+ }
1049
+
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;
1062
+ }
1063
+
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;
1072
+ }
1073
+
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;
1080
+ }
1081
+
1082
+ .jux-modal-body {
1083
+ padding: var(--space-xl);
1084
+ }
1085
+
1086
+ .jux-modal-close {
1087
+ background: transparent;
1088
+ border: none;
1089
+ font-size: 1.5rem;
1090
+ cursor: pointer;
1091
+ color: var(--color-text-secondary);
1092
+ }
1093
+
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);
1099
+ }
1100
+
1101
+ .jux-nav-items {
1102
+ display: flex;
1103
+ gap: var(--space-md);
1104
+ align-items: center;
1105
+ }
1106
+
1107
+ .jux-nav-item-wrapper {
1108
+ position: relative;
1109
+ }
1110
+
1111
+ .jux-nav-item-active {
1112
+ font-weight: 600;
1113
+ }
1114
+
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);
1120
+ }
1121
+
1122
+ .jux-nav-link:hover {
1123
+ color: #3b82f6;
1124
+ }
1125
+
1126
+ .jux-nav-link-active {
1127
+ color: #3b82f6;
1128
+ font-weight: 600;
1129
+ }
1130
+
1131
+ .jux-nav-tabs {
1132
+ border-bottom: var(--border-width) solid var(--color-border);
1133
+ }
1134
+
1135
+ .jux-nav-tabs .jux-nav-link {
1136
+ border-bottom: 2px solid transparent;
1137
+ }
1138
+
1139
+ .jux-nav-tabs .jux-nav-link-active {
1140
+ border-bottom-color: #3b82f6;
1141
+ }
1142
+
1143
+ .jux-nav-pills .jux-nav-link {
1144
+ border-radius: var(--radius-md);
1145
+ }
1146
+
1147
+ .jux-nav-pills .jux-nav-link-active {
1148
+ background-color: #3b82f6;
1149
+ color: white;
1150
+ }
1151
+
1152
+ .jux-nav-sticky {
1153
+ position: sticky;
1154
+ top: 0;
1155
+ z-index: 100;
1156
+ }
1157
+
1158
+ /* Page Helper */
1159
+ .jux-page {
1160
+ min-height: 100vh;
1161
+ display: flex;
1162
+ flex-direction: column;
1163
+ }
1164
+
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;
1173
+ }
1174
+
1175
+ /* Radio Component - Add orientation classes */
1176
+ .jux-radio-horizontal {
1177
+ flex-direction: row;
1178
+ flex-wrap: wrap;
1179
+ }
1180
+
1181
+ .jux-radio-vertical {
1182
+ flex-direction: column;
1183
+ }
1184
+
1185
+ /* Script/Style placeholders */
1186
+ .jux-script-,
1187
+ .jux-style- {
1188
+ /* These are injected dynamically */
1189
+ }
1190
+
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;
1201
+ }
1202
+
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);
1208
+ }
1209
+
1210
+ .jux-table {
1211
+ width: 100%;
1212
+ border-collapse: collapse;
1213
+ }
1214
+
1215
+ .jux-table-striped tbody tr:nth-child(even) {
1216
+ background-color: var(--color-surface-base);
1217
+ }
1218
+
1219
+ .jux-table-hoverable tbody tr:hover {
1220
+ background-color: var(--color-surface-hover);
1221
+ }
1222
+
1223
+ .jux-table-bordered th,
1224
+ .jux-table-bordered td {
1225
+ border: var(--border-width) solid var(--color-border);
1226
+ }
1227
+
1228
+ .jux-table-row-selected {
1229
+ background-color: #eff6ff !important;
1230
+ }
1231
+
1232
+ .jux-bulk-checkbox {
1233
+ margin: 0;
1234
+ }
1235
+
1236
+ .jux-table-filter {
1237
+ padding: var(--space-lg);
1238
+ border-bottom: var(--border-width) solid var(--color-border);
1239
+ }
1240
+
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);
1247
+ }
1248
+
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);
1255
+ }
1256
+
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);
1266
+ }
1267
+
1268
+ .jux-tabs-button:hover {
1269
+ color: var(--color-text-primary);
1270
+ }
1271
+
1272
+ .jux-tabs-button-active {
1273
+ color: #3b82f6;
1274
+ border-bottom-color: #3b82f6;
1275
+ }
1276
+
1277
+ .jux-tabs-panels {
1278
+ position: relative;
1279
+ }
1280
+
1281
+ .jux-tabs-panel {
1282
+ display: none;
1283
+ }
1284
+
1285
+ .jux-tabs-panel-active {
1286
+ display: block;
1287
+ }
1288
+
1289
+ /* Theme Toggle Component */
1290
+ .jux-theme {
1291
+ /* Theme wrapper class */
1292
+ }
1293
+
1294
+ .jux-theme-toggle {
1295
+ cursor: pointer;
1296
+ }
1297
+
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;
1304
+ }
1305
+
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;
1317
+ }
1318
+
1319
+ .jux-theme-toggle-select {
1320
+ /* Native select styling */
1321
+ }
1322
+
1323
+ .jux-theme-toggle-cycle {
1324
+ /* Button that cycles through themes */
1325
+ }
1326
+
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);
1333
+ }
1334
+
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);
1339
+ }
1340
+
1341
+ .jux-token-calculator-content {
1342
+ display: flex;
1343
+ flex-direction: column;
1344
+ gap: var(--space-lg);
1345
+ }
1346
+
1347
+ .jux-token-table {
1348
+ width: 100%;
1349
+ border-collapse: collapse;
1350
+ }
1351
+
1352
+ .jux-token-details {
1353
+ font-size: 0.875rem;
1354
+ color: var(--color-text-secondary);
1355
+ }
1356
+
1357
+ .jux-token-row-highlight {
1358
+ background-color: #fffbeb;
1359
+ }
1360
+
1361
+ .jux-token-bar-container {
1362
+ display: flex;
1363
+ flex-direction: column;
1364
+ gap: var(--space-sm);
1365
+ }
1366
+
1367
+ .jux-token-bar-row {
1368
+ display: flex;
1369
+ gap: var(--space-xs);
1370
+ align-items: center;
1371
+ }
1372
+
1373
+ .jux-token-bar-label {
1374
+ min-width: 100px;
1375
+ font-size: 0.875rem;
1376
+ color: var(--color-text-secondary);
1377
+ }
1378
+
1379
+ .jux-token-bar-jux {
1380
+ height: 24px;
1381
+ background: #3b82f6;
1382
+ border-radius: var(--radius-sm);
1383
+ }
1384
+
1385
+ .jux-token-bar-other {
1386
+ height: 24px;
1387
+ background: #e5e7eb;
1388
+ border-radius: var(--radius-sm);
1389
+ }
1390
+
1391
+ .jux-token-bar-value {
1392
+ min-width: 60px;
1393
+ text-align: right;
1394
+ font-size: 0.875rem;
1395
+ font-weight: 600;
1396
+ }
1397
+
1398
+ /* View Component */
1399
+ .jux-view {
1400
+ display: flex;
1401
+ flex-direction: column;
1402
+ }
1403
+
1404
+ .jux-view-header {
1405
+ padding: var(--space-xl);
1406
+ border-bottom: var(--border-width) solid var(--color-border);
1407
+ }
1408
+
1409
+ .jux-view-title {
1410
+ font-size: 1.5rem;
1411
+ font-weight: 700;
1412
+ color: var(--color-text-primary);
1413
+ margin-bottom: var(--space-xs);
1414
+ }
1415
+
1416
+ .jux-view-description {
1417
+ font-size: 0.875rem;
1418
+ color: var(--color-text-secondary);
1419
+ }
1420
+
1421
+ .jux-view-content {
1422
+ padding: var(--space-xl);
1423
+ }
1424
+
1425
+ .jux-view-item {
1426
+ padding: var(--space-lg);
1427
+ border-bottom: var(--border-width) solid var(--color-border);
1428
+ }
1429
+
1430
+ .jux-view-item:last-child {
1431
+ border-bottom: none;
415
1432
  }