@limpiolux/ui-styles 1.0.0 → 1.0.2

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.
package/components.css CHANGED
@@ -442,4 +442,665 @@
442
442
  backdrop-filter: blur(40px) saturate(1.8);
443
443
  -webkit-backdrop-filter: blur(40px) saturate(1.8);
444
444
  }
445
+
446
+ /* ── Legacy bridge: forms ── */
447
+
448
+ .form-control,
449
+ .form-select {
450
+ @apply w-full rounded-lg border border-zinc-800 bg-zinc-900 px-3 py-2.5 text-sm text-zinc-100 outline-none transition-colors;
451
+ box-shadow: none;
452
+ }
453
+
454
+ .form-control::placeholder {
455
+ color: rgb(var(--color-zinc-600));
456
+ }
457
+
458
+ .form-control:focus,
459
+ .form-select:focus {
460
+ border-color: rgba(var(--color-brand) / 0.52);
461
+ box-shadow: 0 0 0 1px rgba(var(--color-brand) / 0.18);
462
+ }
463
+
464
+ .form-control-sm {
465
+ @apply rounded-md px-2.5 py-1.5 text-xs;
466
+ }
467
+
468
+ .form-check {
469
+ @apply flex items-center gap-2;
470
+ }
471
+
472
+ .form-check-input {
473
+ width: 1.125rem;
474
+ height: 1.125rem;
475
+ border: 2px solid rgb(var(--color-zinc-600));
476
+ border-radius: 0.35rem;
477
+ background-color: transparent;
478
+ cursor: pointer;
479
+ transition: all 140ms ease;
480
+ }
481
+
482
+ .form-check-input[type="radio"] {
483
+ border-radius: 999px;
484
+ }
485
+
486
+ .form-check-input:checked {
487
+ border-color: rgb(var(--color-brand));
488
+ background-color: rgb(var(--color-brand));
489
+ }
490
+
491
+ .form-check-label {
492
+ @apply text-sm text-zinc-300;
493
+ }
494
+
495
+ .form-switch {
496
+ @apply inline-flex items-center gap-2;
497
+ }
498
+
499
+ .form-switch .form-check-input,
500
+ .form-switch input[type="checkbox"] {
501
+ appearance: none;
502
+ -webkit-appearance: none;
503
+ width: 2.8rem;
504
+ height: 1.55rem;
505
+ border: none;
506
+ border-radius: 999px;
507
+ background: rgb(var(--color-zinc-700));
508
+ position: relative;
509
+ cursor: pointer;
510
+ transition: background-color 180ms ease;
511
+ }
512
+
513
+ .form-switch .form-check-input::before,
514
+ .form-switch input[type="checkbox"]::before {
515
+ content: '';
516
+ position: absolute;
517
+ top: 2px;
518
+ left: 2px;
519
+ width: 1.2rem;
520
+ height: 1.2rem;
521
+ border-radius: 999px;
522
+ background: #fff;
523
+ transition: transform 180ms ease;
524
+ }
525
+
526
+ .form-switch .form-check-input:checked,
527
+ .form-switch input[type="checkbox"]:checked {
528
+ background: rgb(var(--color-brand));
529
+ }
530
+
531
+ .form-switch .form-check-input:checked::before,
532
+ .form-switch input[type="checkbox"]:checked::before {
533
+ transform: translateX(1.25rem);
534
+ }
535
+
536
+ /* ── Legacy bridge: buttons ── */
537
+
538
+ .btn {
539
+ @apply inline-flex items-center justify-center gap-2 rounded-lg border border-transparent px-3.5 py-2 text-sm font-medium transition-colors;
540
+ }
541
+
542
+ .btn-sm {
543
+ @apply rounded-md px-2.5 py-1.5 text-xs;
544
+ }
545
+
546
+ .btn-link {
547
+ border: none;
548
+ background: transparent;
549
+ color: rgb(var(--color-zinc-400));
550
+ padding: 0;
551
+ }
552
+
553
+ .btn-link:hover {
554
+ color: rgb(var(--color-zinc-200));
555
+ }
556
+
557
+ .btn-outline-primary {
558
+ border-color: rgba(var(--color-brand) / 0.38);
559
+ color: rgb(var(--color-brand-soft));
560
+ background: rgba(var(--color-brand) / 0.08);
561
+ }
562
+
563
+ .btn-outline-primary:hover {
564
+ background: rgba(var(--color-brand) / 0.15);
565
+ }
566
+
567
+ .btn-outline-secondary {
568
+ border-color: rgba(var(--color-zinc-500) / 0.5);
569
+ color: rgb(var(--color-zinc-300));
570
+ background: rgba(var(--color-zinc-800) / 0.45);
571
+ }
572
+
573
+ .btn-outline-secondary:hover {
574
+ background: rgba(var(--color-zinc-700) / 0.55);
575
+ }
576
+
577
+ .btn-outline-success,
578
+ .btn-success {
579
+ border-color: rgba(34, 197, 94, 0.45);
580
+ color: #86efac;
581
+ background: rgba(34, 197, 94, 0.14);
582
+ }
583
+
584
+ .btn-outline-success:hover,
585
+ .btn-success:hover {
586
+ background: rgba(34, 197, 94, 0.22);
587
+ }
588
+
589
+ .btn-outline-danger,
590
+ .btn-danger {
591
+ border-color: rgba(248, 113, 113, 0.45);
592
+ color: #fca5a5;
593
+ background: rgba(248, 113, 113, 0.14);
594
+ }
595
+
596
+ .btn-outline-danger:hover,
597
+ .btn-danger:hover {
598
+ background: rgba(248, 113, 113, 0.22);
599
+ }
600
+
601
+ .btn-outline-warning,
602
+ .btn-warning {
603
+ border-color: rgba(251, 191, 36, 0.45);
604
+ color: #fcd34d;
605
+ background: rgba(251, 191, 36, 0.14);
606
+ }
607
+
608
+ .btn-outline-warning:hover,
609
+ .btn-warning:hover {
610
+ background: rgba(251, 191, 36, 0.22);
611
+ }
612
+
613
+ .btn-outline-info,
614
+ .btn-info {
615
+ border-color: rgba(96, 165, 250, 0.45);
616
+ color: #93c5fd;
617
+ background: rgba(96, 165, 250, 0.14);
618
+ }
619
+
620
+ .btn-outline-info:hover,
621
+ .btn-info:hover {
622
+ background: rgba(96, 165, 250, 0.22);
623
+ }
624
+
625
+ .btn-close {
626
+ position: relative;
627
+ width: 1.8rem;
628
+ height: 1.8rem;
629
+ border: none;
630
+ border-radius: 0.5rem;
631
+ background: transparent;
632
+ color: rgb(var(--color-zinc-400));
633
+ cursor: pointer;
634
+ transition: color 150ms ease, background-color 150ms ease;
635
+ }
636
+
637
+ .btn-close::before {
638
+ content: '×';
639
+ position: absolute;
640
+ inset: 0;
641
+ display: grid;
642
+ place-items: center;
643
+ font-size: 1.25rem;
644
+ line-height: 1;
645
+ }
646
+
647
+ .btn-close:hover {
648
+ color: rgb(var(--color-zinc-200));
649
+ background: rgba(39, 39, 42, 0.72);
650
+ }
651
+
652
+ /* ── Legacy bridge: alerts & badges ── */
653
+
654
+ .alert {
655
+ @apply relative rounded-xl border px-3 py-2.5 text-sm;
656
+ }
657
+
658
+ .alert-dismissible {
659
+ padding-right: 2.7rem;
660
+ }
661
+
662
+ .alert-dismissible .btn-close {
663
+ position: absolute;
664
+ top: 0.45rem;
665
+ right: 0.45rem;
666
+ }
667
+
668
+ .alert-success {
669
+ border-color: rgba(34, 197, 94, 0.42);
670
+ background: rgba(34, 197, 94, 0.14);
671
+ color: #86efac;
672
+ }
673
+
674
+ .alert-warning {
675
+ border-color: rgba(251, 191, 36, 0.42);
676
+ background: rgba(251, 191, 36, 0.14);
677
+ color: #fcd34d;
678
+ }
679
+
680
+ .alert-danger {
681
+ border-color: rgba(248, 113, 113, 0.42);
682
+ background: rgba(248, 113, 113, 0.14);
683
+ color: #fca5a5;
684
+ }
685
+
686
+ .alert-info,
687
+ .alert-primary {
688
+ border-color: rgba(var(--color-brand) / 0.38);
689
+ background: rgba(var(--color-brand) / 0.12);
690
+ color: rgb(var(--color-brand-soft));
691
+ }
692
+
693
+ .badge {
694
+ @apply inline-flex items-center rounded-lg px-2 py-0.5 text-[11px] font-semibold;
695
+ }
696
+
697
+ .rounded-pill {
698
+ border-radius: 999px !important;
699
+ }
700
+
701
+ .text-bg-primary,
702
+ .table-primary {
703
+ color: #d7f1fb;
704
+ background: rgba(var(--color-brand) / 0.22) !important;
705
+ border-color: rgba(var(--color-brand) / 0.34) !important;
706
+ }
707
+
708
+ .text-bg-success,
709
+ .table-success {
710
+ color: #d1fae5;
711
+ background: rgba(16, 185, 129, 0.24) !important;
712
+ border-color: rgba(16, 185, 129, 0.38) !important;
713
+ }
714
+
715
+ .text-bg-warning,
716
+ .table-warning {
717
+ color: #fef3c7;
718
+ background: rgba(245, 158, 11, 0.24) !important;
719
+ border-color: rgba(245, 158, 11, 0.38) !important;
720
+ }
721
+
722
+ .text-bg-danger,
723
+ .table-danger {
724
+ color: #fee2e2;
725
+ background: rgba(239, 68, 68, 0.24) !important;
726
+ border-color: rgba(239, 68, 68, 0.38) !important;
727
+ }
728
+
729
+ .text-bg-info,
730
+ .table-info {
731
+ color: #dbeafe;
732
+ background: rgba(59, 130, 246, 0.24) !important;
733
+ border-color: rgba(59, 130, 246, 0.38) !important;
734
+ }
735
+
736
+ .text-bg-light,
737
+ .table-light {
738
+ color: rgb(var(--color-zinc-200));
739
+ background: rgba(var(--color-zinc-700) / 0.25) !important;
740
+ border-color: rgba(var(--color-zinc-600) / 0.32) !important;
741
+ }
742
+
743
+ .bg-warning {
744
+ background: rgba(251, 191, 36, 0.14) !important;
745
+ color: #fcd34d !important;
746
+ }
747
+
748
+ .bg-danger {
749
+ background: rgba(248, 113, 113, 0.14) !important;
750
+ color: #fecaca !important;
751
+ }
752
+
753
+ .bg-success {
754
+ background: rgba(34, 197, 94, 0.14) !important;
755
+ color: #bbf7d0 !important;
756
+ }
757
+
758
+ .bg-info {
759
+ background: rgba(96, 165, 250, 0.14) !important;
760
+ color: #bfdbfe !important;
761
+ }
762
+
763
+ /* ── Legacy bridge: tables ── */
764
+
765
+ .table {
766
+ width: 100%;
767
+ border-collapse: collapse;
768
+ font-size: 0.82rem;
769
+ color: rgb(var(--color-zinc-300));
770
+ }
771
+
772
+ .table thead {
773
+ font-size: 0.75rem;
774
+ }
775
+
776
+ .table th {
777
+ padding: 0.65rem 0.75rem;
778
+ text-align: left;
779
+ font-weight: 600;
780
+ color: rgb(var(--color-zinc-400));
781
+ border-bottom: 1px solid rgb(var(--color-zinc-800));
782
+ white-space: nowrap;
783
+ background: rgb(var(--color-zinc-900));
784
+ }
785
+
786
+ .table td {
787
+ padding: 0.65rem 0.75rem;
788
+ border-bottom: 1px solid rgb(var(--color-zinc-800) / 0.5);
789
+ vertical-align: middle;
790
+ }
791
+
792
+ .table-responsive {
793
+ overflow-x: auto;
794
+ border-radius: 0.75rem;
795
+ border: 1px solid rgb(var(--color-zinc-800));
796
+ }
797
+
798
+ .table-hover tbody tr:hover {
799
+ background-color: rgb(var(--color-zinc-800) / 0.3);
800
+ }
801
+
802
+ .table-bordered th,
803
+ .table-bordered td {
804
+ border: 1px solid rgb(var(--color-zinc-800) / 0.75);
805
+ }
806
+
807
+ .table-striped > tbody > tr:nth-child(odd) {
808
+ background: rgba(var(--color-zinc-800) / 0.28);
809
+ }
810
+
811
+ .table-dark {
812
+ background: rgb(var(--color-zinc-900));
813
+ color: rgb(var(--color-zinc-200));
814
+ }
815
+
816
+ .table-secondary {
817
+ color: rgb(var(--color-zinc-200));
818
+ background: rgba(var(--color-zinc-700) / 0.2) !important;
819
+ border-color: rgba(var(--color-zinc-600) / 0.32) !important;
820
+ }
821
+
822
+ /* ── Legacy bridge: cards & helpers ── */
823
+
824
+ .card {
825
+ border: 1px solid rgba(255, 255, 255, 0.08);
826
+ border-radius: 0.9rem;
827
+ background: rgba(24, 24, 27, 0.45);
828
+ box-shadow:
829
+ 0 8px 28px -14px rgba(0, 0, 0, 0.34),
830
+ inset 0 1px 0 rgba(255, 255, 255, 0.03);
831
+ }
832
+
833
+ .card-header {
834
+ @apply px-4 py-3 text-sm font-semibold;
835
+ border-bottom: 1px solid rgba(63, 63, 70, 0.85);
836
+ background: rgba(9, 9, 11, 0.38);
837
+ color: rgb(var(--color-zinc-200));
838
+ }
839
+
840
+ .card-body {
841
+ @apply px-4 py-4;
842
+ }
843
+
844
+ .modal-content {
845
+ border: 1px solid rgba(255, 255, 255, 0.1);
846
+ border-radius: 0.9rem;
847
+ background: linear-gradient(
848
+ 160deg,
849
+ rgba(24, 24, 27, 0.88) 0%,
850
+ rgba(9, 9, 11, 0.92) 100%
851
+ );
852
+ box-shadow:
853
+ 0 32px 64px -16px rgba(0, 0, 0, 0.5),
854
+ inset 0 1px 0 rgba(255, 255, 255, 0.08),
855
+ inset 0 -1px 0 rgba(0, 0, 0, 0.1);
856
+ backdrop-filter: blur(40px) saturate(1.8);
857
+ -webkit-backdrop-filter: blur(40px) saturate(1.8);
858
+ }
859
+
860
+ .modal-header {
861
+ @apply flex items-center justify-between px-4 py-3;
862
+ border-bottom: 1px solid rgba(63, 63, 70, 0.85);
863
+ }
864
+
865
+ .modal-body {
866
+ @apply px-4 py-4;
867
+ }
868
+
869
+ .modal-footer {
870
+ @apply flex items-center justify-end gap-2 px-4 py-3;
871
+ border-top: 1px solid rgba(63, 63, 70, 0.85);
872
+ }
873
+
874
+ .btn-orange {
875
+ border-color: rgba(234, 88, 12, 0.45);
876
+ color: #fdba74;
877
+ background: rgba(234, 88, 12, 0.14);
878
+ }
879
+
880
+ .btn-orange:hover {
881
+ background: rgba(234, 88, 12, 0.22);
882
+ }
883
+
884
+ .btn-purple {
885
+ border-color: rgba(168, 85, 247, 0.45);
886
+ color: #d8b4fe;
887
+ background: rgba(168, 85, 247, 0.14);
888
+ }
889
+
890
+ .btn-purple:hover {
891
+ background: rgba(168, 85, 247, 0.22);
892
+ }
893
+
894
+ .btn-brown {
895
+ border-color: rgba(161, 98, 7, 0.42);
896
+ color: #fcd34d;
897
+ background: rgba(161, 98, 7, 0.15);
898
+ }
899
+
900
+ .btn-brown:hover {
901
+ background: rgba(161, 98, 7, 0.24);
902
+ }
903
+
904
+ .text-brown {
905
+ color: #d97706 !important;
906
+ }
907
+
908
+ .text-success-emphasis {
909
+ color: #86efac !important;
910
+ }
911
+
912
+ .text-danger-emphasis {
913
+ color: #fca5a5 !important;
914
+ }
915
+
916
+ .border-success {
917
+ border-color: rgba(34, 197, 94, 0.42) !important;
918
+ }
919
+
920
+ .border-danger {
921
+ border-color: rgba(248, 113, 113, 0.42) !important;
922
+ }
923
+
924
+ .rounded-2 {
925
+ border-radius: 0.65rem !important;
926
+ }
927
+
928
+ .cursor-pointer {
929
+ cursor: pointer !important;
930
+ }
931
+
932
+ .text-truncate {
933
+ overflow: hidden;
934
+ text-overflow: ellipsis;
935
+ white-space: nowrap;
936
+ }
937
+
938
+ .btn-check {
939
+ position: absolute;
940
+ width: 1px;
941
+ height: 1px;
942
+ padding: 0;
943
+ margin: -1px;
944
+ overflow: hidden;
945
+ clip: rect(0, 0, 0, 0);
946
+ border: 0;
947
+ }
948
+
949
+ .btn-check:checked + .btn-outline-success,
950
+ .btn-check:checked + .btn-outline-danger,
951
+ .btn-check:checked + .btn-outline-secondary,
952
+ .btn-check:checked + .btn-outline-primary,
953
+ .btn-check:checked + .btn-outline-warning,
954
+ .btn-check:checked + .btn-outline-info {
955
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.22);
956
+ filter: saturate(1.12);
957
+ }
958
+
959
+ .btn-check:checked + .btn-outline-success {
960
+ background: rgba(34, 197, 94, 0.26);
961
+ }
962
+
963
+ .btn-check:checked + .btn-outline-danger {
964
+ background: rgba(248, 113, 113, 0.26);
965
+ }
966
+
967
+ .btn-check:checked + .btn-outline-warning {
968
+ background: rgba(251, 191, 36, 0.26);
969
+ }
970
+
971
+ .btn-check:checked + .btn-outline-info {
972
+ background: rgba(96, 165, 250, 0.26);
973
+ }
974
+
975
+ .btn-check:checked + .btn-outline-primary {
976
+ background: rgba(var(--color-brand) / 0.24);
977
+ }
978
+
979
+ .fw-bold {
980
+ font-weight: 700 !important;
981
+ }
982
+
983
+ .fw-semibold {
984
+ font-weight: 600 !important;
985
+ }
986
+
987
+ .border-secondary {
988
+ border-color: rgba(var(--color-zinc-600) / 0.5) !important;
989
+ }
990
+
991
+ .text-secondary {
992
+ color: rgb(var(--color-zinc-400)) !important;
993
+ }
994
+
995
+ .text-start {
996
+ text-align: left !important;
997
+ }
998
+
999
+ .text-center {
1000
+ text-align: center !important;
1001
+ }
1002
+
1003
+ .text-left {
1004
+ text-align: left !important;
1005
+ }
1006
+
1007
+ .text-right,
1008
+ .text-end {
1009
+ text-align: right !important;
1010
+ }
1011
+
1012
+ .align-items-center {
1013
+ align-items: center !important;
1014
+ }
1015
+
1016
+ .align-items-end {
1017
+ align-items: flex-end !important;
1018
+ }
1019
+
1020
+ .align-items-stretch {
1021
+ align-items: stretch !important;
1022
+ }
1023
+
1024
+ .justify-content-center {
1025
+ justify-content: center !important;
1026
+ }
1027
+
1028
+ .justify-content-between {
1029
+ justify-content: space-between !important;
1030
+ }
1031
+
1032
+ .justify-content-end {
1033
+ justify-content: flex-end !important;
1034
+ }
1035
+
1036
+ .justify-content-stretch {
1037
+ justify-content: stretch !important;
1038
+ }
1039
+
1040
+ .form-group {
1041
+ margin-bottom: 0.75rem;
1042
+ }
1043
+
1044
+ .form-label {
1045
+ display: block;
1046
+ font-size: 0.875rem;
1047
+ font-weight: 500;
1048
+ color: rgb(var(--color-zinc-300));
1049
+ margin-bottom: 0.35rem;
1050
+ }
1051
+
1052
+ .form-select-sm {
1053
+ padding: 0.35rem 0.55rem;
1054
+ font-size: 0.78rem;
1055
+ border-radius: 0.45rem;
1056
+ }
1057
+
1058
+ .rounded {
1059
+ border-radius: 0.5rem !important;
1060
+ }
1061
+
1062
+ .rounded-circle {
1063
+ border-radius: 999px !important;
1064
+ }
1065
+
1066
+ .bg-primary {
1067
+ background: rgba(var(--color-brand) / 0.18) !important;
1068
+ color: #d7f1fb !important;
1069
+ }
1070
+
1071
+ .bg-secondary {
1072
+ background: rgba(var(--color-zinc-700) / 0.35) !important;
1073
+ color: rgb(var(--color-zinc-200)) !important;
1074
+ }
1075
+
1076
+ .border-brand {
1077
+ border-color: rgba(var(--color-brand) / 0.45) !important;
1078
+ }
1079
+
1080
+ .border-warning {
1081
+ border-color: rgba(245, 158, 11, 0.42) !important;
1082
+ }
1083
+
1084
+ .border-muted {
1085
+ border-color: rgba(var(--color-zinc-600) / 0.5) !important;
1086
+ }
1087
+
1088
+ .text-orange {
1089
+ color: #fb923c !important;
1090
+ }
1091
+
1092
+ .alert-heading {
1093
+ font-size: 0.9rem;
1094
+ font-weight: 600;
1095
+ margin: 0 0 0.25rem;
1096
+ }
1097
+
1098
+ .fade {
1099
+ opacity: 0;
1100
+ transition: opacity 160ms ease;
1101
+ }
1102
+
1103
+ .fade.show {
1104
+ opacity: 1;
1105
+ }
445
1106
  }
package/light.css CHANGED
@@ -312,3 +312,186 @@
312
312
  inset 0 1px 0 rgba(255, 255, 255, 0.9),
313
313
  inset 0 -1px 0 rgba(0, 0, 0, 0.03);
314
314
  }
315
+
316
+ /* ── Legacy bridge: forms ── */
317
+
318
+ .light .form-control,
319
+ .light .form-select {
320
+ background: rgb(var(--color-zinc-900));
321
+ border-color: rgb(var(--color-zinc-800));
322
+ color: rgb(var(--color-zinc-200));
323
+ }
324
+
325
+ .light .form-control::placeholder {
326
+ color: rgb(var(--color-zinc-500));
327
+ }
328
+
329
+ .light .form-check-input {
330
+ border-color: rgb(var(--color-zinc-500));
331
+ }
332
+
333
+ .light .form-check-label {
334
+ color: rgb(var(--color-zinc-300));
335
+ }
336
+
337
+ .light .form-switch .form-check-input,
338
+ .light .form-switch input[type='checkbox'] {
339
+ background: rgb(var(--color-zinc-600));
340
+ }
341
+
342
+ .light .form-switch .form-check-input:checked,
343
+ .light .form-switch input[type='checkbox']:checked {
344
+ background: rgb(var(--color-brand));
345
+ }
346
+
347
+ /* ── Legacy bridge: buttons ── */
348
+
349
+ .light .btn-link {
350
+ color: rgb(var(--color-zinc-500));
351
+ }
352
+
353
+ .light .btn-link:hover {
354
+ color: rgb(var(--color-zinc-200));
355
+ }
356
+
357
+ .light .btn-close {
358
+ color: rgb(var(--color-zinc-500));
359
+ }
360
+
361
+ .light .btn-close:hover {
362
+ color: rgb(var(--color-zinc-200));
363
+ background: rgba(228, 228, 231, 0.9);
364
+ }
365
+
366
+ /* ── Legacy bridge: alerts & badges ── */
367
+
368
+ .light .text-bg-light,
369
+ .light .table-light {
370
+ color: rgb(var(--color-zinc-300));
371
+ background: rgba(var(--color-zinc-700) / 0.2) !important;
372
+ border-color: rgba(var(--color-zinc-600) / 0.3) !important;
373
+ }
374
+
375
+ /* ── Legacy bridge: tables ── */
376
+
377
+ .light .table {
378
+ color: rgb(var(--color-zinc-300));
379
+ }
380
+
381
+ .light .table th {
382
+ color: rgb(var(--color-zinc-400));
383
+ border-color: rgb(var(--color-zinc-700));
384
+ background: rgb(var(--color-zinc-900));
385
+ }
386
+
387
+ .light .table td {
388
+ border-color: rgb(var(--color-zinc-700));
389
+ }
390
+
391
+ .light .table-hover tbody tr:hover {
392
+ background-color: rgba(var(--color-zinc-700) / 0.22);
393
+ }
394
+
395
+ .light .table-responsive {
396
+ border-color: rgb(var(--color-zinc-700));
397
+ }
398
+
399
+ .light .text-dark {
400
+ color: rgb(var(--color-zinc-300)) !important;
401
+ }
402
+
403
+ .light .text-muted {
404
+ color: rgb(var(--color-zinc-500)) !important;
405
+ }
406
+
407
+ .light .text-primary {
408
+ color: rgb(var(--color-brand-strong)) !important;
409
+ }
410
+
411
+ .light .text-info {
412
+ color: #1d4ed8 !important;
413
+ }
414
+
415
+ .light .text-success {
416
+ color: #15803d !important;
417
+ }
418
+
419
+ .light .text-warning {
420
+ color: #a16207 !important;
421
+ }
422
+
423
+ .light .text-danger {
424
+ color: #b91c1c !important;
425
+ }
426
+
427
+ .light .bg-light {
428
+ background: rgba(var(--color-zinc-900) / 0.85) !important;
429
+ }
430
+
431
+ .light .table-secondary {
432
+ color: rgb(var(--color-zinc-300));
433
+ background: rgba(var(--color-zinc-700) / 0.18) !important;
434
+ border-color: rgba(var(--color-zinc-600) / 0.28) !important;
435
+ }
436
+
437
+ .light .card {
438
+ border-color: rgba(0, 0, 0, 0.09);
439
+ background: rgba(255, 255, 255, 0.66);
440
+ box-shadow:
441
+ 0 8px 24px -16px rgba(15, 23, 42, 0.14),
442
+ inset 0 1px 0 rgba(255, 255, 255, 0.8);
443
+ }
444
+
445
+ .light .card-header {
446
+ border-bottom-color: rgba(212, 212, 216, 0.95);
447
+ background: rgba(255, 255, 255, 0.78);
448
+ color: rgb(var(--color-zinc-200));
449
+ }
450
+
451
+ .light .modal-content {
452
+ border-color: rgba(0, 0, 0, 0.08);
453
+ background: linear-gradient(
454
+ 160deg,
455
+ rgba(255, 255, 255, 0.92) 0%,
456
+ rgba(244, 244, 245, 0.88) 100%
457
+ );
458
+ box-shadow:
459
+ 0 32px 64px -16px rgba(15, 23, 42, 0.18),
460
+ inset 0 1px 0 rgba(255, 255, 255, 0.9),
461
+ inset 0 -1px 0 rgba(0, 0, 0, 0.03);
462
+ }
463
+
464
+ .light .modal-header,
465
+ .light .modal-footer {
466
+ border-color: rgba(212, 212, 216, 0.95);
467
+ }
468
+
469
+ .light .text-brown {
470
+ color: #92400e !important;
471
+ }
472
+
473
+ .light .text-success-emphasis {
474
+ color: #166534 !important;
475
+ }
476
+
477
+ .light .text-danger-emphasis {
478
+ color: #991b1b !important;
479
+ }
480
+
481
+ .light .form-label {
482
+ color: rgb(var(--color-zinc-300));
483
+ }
484
+
485
+ .light .bg-primary {
486
+ background: rgba(var(--color-brand) / 0.12) !important;
487
+ color: rgb(var(--color-brand-strong)) !important;
488
+ }
489
+
490
+ .light .bg-secondary {
491
+ background: rgba(var(--color-zinc-700) / 0.24) !important;
492
+ color: rgb(var(--color-zinc-300)) !important;
493
+ }
494
+
495
+ .light .text-orange {
496
+ color: #c2410c !important;
497
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@limpiolux/ui-styles",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Shared design system — Preventores liquid glass theme with dark/light mode support",
5
5
  "type": "module",
6
6
  "exports": {
package/utilities.css CHANGED
@@ -37,3 +37,258 @@
37
37
  .light .date-filter-input {
38
38
  color-scheme: light;
39
39
  }
40
+
41
+ /* ── Legacy utility bridge ── */
42
+
43
+ .text-dark {
44
+ color: rgb(var(--color-zinc-200)) !important;
45
+ }
46
+
47
+ .text-white {
48
+ color: #fff !important;
49
+ }
50
+
51
+ .text-muted {
52
+ color: rgb(var(--color-zinc-500)) !important;
53
+ }
54
+
55
+ .text-primary {
56
+ color: rgb(var(--color-brand-soft)) !important;
57
+ }
58
+
59
+ .text-info {
60
+ color: #93c5fd !important;
61
+ }
62
+
63
+ .text-success {
64
+ color: #86efac !important;
65
+ }
66
+
67
+ .text-warning {
68
+ color: #fcd34d !important;
69
+ }
70
+
71
+ .text-danger {
72
+ color: #fca5a5 !important;
73
+ }
74
+
75
+ .bg-light {
76
+ background: rgba(var(--color-zinc-800) / 0.38) !important;
77
+ }
78
+
79
+ .w-25 {
80
+ width: min(100%, 16rem) !important;
81
+ }
82
+
83
+ .w-50 {
84
+ width: min(100%, 30rem) !important;
85
+ }
86
+
87
+ .w-75 {
88
+ width: min(100%, 42rem) !important;
89
+ }
90
+
91
+ .w-100 {
92
+ width: 100% !important;
93
+ }
94
+
95
+ .fs-10 {
96
+ font-size: 0.625rem !important;
97
+ }
98
+
99
+ .fs-8 {
100
+ font-size: 0.78rem !important;
101
+ }
102
+
103
+ .fs-7 {
104
+ font-size: 0.875rem !important;
105
+ }
106
+
107
+ .fs-6 {
108
+ font-size: 0.95rem !important;
109
+ }
110
+
111
+ .d-none {
112
+ display: none !important;
113
+ }
114
+
115
+ .d-flex {
116
+ display: flex !important;
117
+ }
118
+
119
+ .d-inline-flex {
120
+ display: inline-flex !important;
121
+ }
122
+
123
+ .d-inline-block {
124
+ display: inline-block !important;
125
+ }
126
+
127
+ .d-sm-flex,
128
+ .d-sm-block,
129
+ .d-lg-inline {
130
+ display: inherit;
131
+ }
132
+
133
+ @media (min-width: 576px) {
134
+ .d-sm-flex { display: flex !important; }
135
+ .d-sm-block { display: block !important; }
136
+ }
137
+
138
+ @media (min-width: 992px) {
139
+ .d-lg-inline { display: inline !important; }
140
+ }
141
+
142
+ .float-start {
143
+ float: left !important;
144
+ }
145
+
146
+ .float-end {
147
+ float: right !important;
148
+ }
149
+
150
+ .mr-1 { margin-right: 0.25rem !important; }
151
+ .mr-2 { margin-right: 0.5rem !important; }
152
+ .mr-3 { margin-right: 0.75rem !important; }
153
+ .mr-auto { margin-right: auto !important; }
154
+
155
+ .ml-0\.5 { margin-left: 0.125rem !important; }
156
+ .ml-1 { margin-left: 0.25rem !important; }
157
+ .ml-2 { margin-left: 0.5rem !important; }
158
+ .ml-3 { margin-left: 0.75rem !important; }
159
+ .ml-4 { margin-left: 1rem !important; }
160
+ .ml-auto { margin-left: auto !important; }
161
+
162
+ .me-1 { margin-inline-end: 0.25rem !important; }
163
+ .me-2 { margin-inline-end: 0.5rem !important; }
164
+ .me-3 { margin-inline-end: 0.75rem !important; }
165
+
166
+ .ms-1 { margin-inline-start: 0.25rem !important; }
167
+ .ms-2 { margin-inline-start: 0.5rem !important; }
168
+ .ms-3 { margin-inline-start: 0.75rem !important; }
169
+ .ms-auto { margin-inline-start: auto !important; }
170
+
171
+ .px-0\.5 { padding-left: 0.125rem !important; padding-right: 0.125rem !important; }
172
+ .px-1 { padding-left: 0.25rem !important; padding-right: 0.25rem !important; }
173
+ .px-2 { padding-left: 0.5rem !important; padding-right: 0.5rem !important; }
174
+ .px-3 { padding-left: 0.75rem !important; padding-right: 0.75rem !important; }
175
+ .px-4 { padding-left: 1rem !important; padding-right: 1rem !important; }
176
+
177
+ .py-0\.5 { padding-top: 0.125rem !important; padding-bottom: 0.125rem !important; }
178
+ .py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
179
+ .py-1\.5 { padding-top: 0.375rem !important; padding-bottom: 0.375rem !important; }
180
+ .py-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; }
181
+ .py-2\.5 { padding-top: 0.625rem !important; padding-bottom: 0.625rem !important; }
182
+ .py-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; }
183
+ .py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
184
+ .py-5 { padding-top: 1.25rem !important; padding-bottom: 1.25rem !important; }
185
+
186
+ .mx-auto { margin-left: auto !important; margin-right: auto !important; }
187
+ .mx-1 { margin-left: 0.25rem !important; margin-right: 0.25rem !important; }
188
+ .mx-3 { margin-left: 0.75rem !important; margin-right: 0.75rem !important; }
189
+ .mx-4 { margin-left: 1rem !important; margin-right: 1rem !important; }
190
+
191
+ .mt-0 { margin-top: 0 !important; }
192
+ .mt-1 { margin-top: 0.25rem !important; }
193
+ .mt-2 { margin-top: 0.5rem !important; }
194
+ .mt-3 { margin-top: 0.75rem !important; }
195
+
196
+ .my-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; }
197
+ .my-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; }
198
+
199
+ .mb-0 { margin-bottom: 0 !important; }
200
+ .mb-1 { margin-bottom: 0.25rem !important; }
201
+ .mb-2 { margin-bottom: 0.5rem !important; }
202
+ .mb-3 { margin-bottom: 0.75rem !important; }
203
+
204
+ .pt-2 { padding-top: 0.5rem !important; }
205
+
206
+ .h-2 { height: 0.5rem !important; }
207
+ .h-3 { height: 0.75rem !important; }
208
+ .h-4 { height: 1rem !important; }
209
+ .h-7 { height: 1.75rem !important; }
210
+ .h-8 { height: 2rem !important; }
211
+ .h-10 { height: 2.5rem !important; }
212
+ .h-14 { height: 3.5rem !important; }
213
+ .h-16 { height: 4rem !important; }
214
+ .h-full { height: 100% !important; }
215
+
216
+ .w-auto { width: auto !important; }
217
+
218
+ .pl-2 { padding-left: 0.5rem !important; }
219
+ .pl-3 { padding-left: 0.75rem !important; }
220
+ .pl-4 { padding-left: 1rem !important; }
221
+ .pl-5 { padding-left: 1.25rem !important; }
222
+
223
+ /* Bootstrap-like grid bridge */
224
+
225
+ .row {
226
+ display: flex;
227
+ flex-wrap: wrap;
228
+ margin-right: -0.5rem;
229
+ margin-left: -0.5rem;
230
+ }
231
+
232
+ .row > * {
233
+ box-sizing: border-box;
234
+ width: 100%;
235
+ max-width: 100%;
236
+ padding-right: 0.5rem;
237
+ padding-left: 0.5rem;
238
+ }
239
+
240
+ .col-1 { flex: 0 0 auto; width: 8.333333%; }
241
+ .col-2 { flex: 0 0 auto; width: 16.666667%; }
242
+ .col-3 { flex: 0 0 auto; width: 25%; }
243
+ .col-4 { flex: 0 0 auto; width: 33.333333%; }
244
+ .col-5 { flex: 0 0 auto; width: 41.666667%; }
245
+ .col-6 { flex: 0 0 auto; width: 50%; }
246
+ .col-7 { flex: 0 0 auto; width: 58.333333%; }
247
+ .col-8 { flex: 0 0 auto; width: 66.666667%; }
248
+ .col-9 { flex: 0 0 auto; width: 75%; }
249
+ .col-10 { flex: 0 0 auto; width: 83.333333%; }
250
+ .col-11 { flex: 0 0 auto; width: 91.666667%; }
251
+ .col-12 { flex: 0 0 auto; width: 100%; }
252
+
253
+ @media (min-width: 576px) {
254
+ .col-sm-4 { flex: 0 0 auto; width: 33.333333%; }
255
+ .col-sm-6 { flex: 0 0 auto; width: 50%; }
256
+ .col-sm-12 { flex: 0 0 auto; width: 100%; }
257
+ }
258
+
259
+ @media (min-width: 768px) {
260
+ .col-md-2 { flex: 0 0 auto; width: 16.666667%; }
261
+ .col-md-3 { flex: 0 0 auto; width: 25%; }
262
+ .col-md-4 { flex: 0 0 auto; width: 33.333333%; }
263
+ .col-md-5 { flex: 0 0 auto; width: 41.666667%; }
264
+ .col-md-6 { flex: 0 0 auto; width: 50%; }
265
+ .col-md-7 { flex: 0 0 auto; width: 58.333333%; }
266
+ .col-md-8 { flex: 0 0 auto; width: 66.666667%; }
267
+ }
268
+
269
+ @media (min-width: 992px) {
270
+ .col-lg-6 { flex: 0 0 auto; width: 50%; }
271
+ }
272
+
273
+ @media (min-width: 1200px) {
274
+ .col-xl-5 { flex: 0 0 auto; width: 41.666667%; }
275
+ }
276
+
277
+ /* typo compatibility (present in codebase) */
278
+ .col-sx-4,
279
+ .col-xs-4 {
280
+ flex: 0 0 auto;
281
+ width: 33.333333%;
282
+ }
283
+
284
+ .col-sx-8,
285
+ .col-xs-8 {
286
+ flex: 0 0 auto;
287
+ width: 66.666667%;
288
+ }
289
+
290
+ .col-sx-12,
291
+ .col-xs-12 {
292
+ flex: 0 0 auto;
293
+ width: 100%;
294
+ }