@lifeonlars/prime-yggdrasil 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/button.css +79 -0
- package/dist/components/data.css +141 -0
- package/dist/components/form.css +303 -0
- package/dist/components/misc-extended.css +192 -0
- package/dist/components/misc.css +9 -0
- package/dist/components/overlay.css +34 -0
- package/dist/components.css +1 -0
- package/dist/flag-denmark.svg +12 -0
- package/dist/flag-finland.svg +5 -0
- package/dist/flag-norway.svg +7 -0
- package/dist/flag-sweden.svg +4 -0
- package/dist/flag-uk.svg +7 -0
- package/docs/AI-AGENT-GUIDE.md +115 -0
- package/docs/THEME-COMPLETENESS-AUDIT.md +251 -0
- package/package.json +1 -1
|
@@ -611,3 +611,82 @@
|
|
|
611
611
|
border-color: transparent;
|
|
612
612
|
color: var(--severity-danger-text);
|
|
613
613
|
}
|
|
614
|
+
|
|
615
|
+
/* Button Contrast Variant */
|
|
616
|
+
.p-button.p-button-contrast,
|
|
617
|
+
.p-button-group.p-button-contrast > .p-button,
|
|
618
|
+
.p-splitbutton.p-button-contrast > .p-button {
|
|
619
|
+
color: var(--surface-neutral-primary);
|
|
620
|
+
background: var(--text-neutral-loud);
|
|
621
|
+
border: 1px solid var(--text-neutral-loud);
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
.p-button.p-button-contrast:not(:disabled):hover,
|
|
625
|
+
.p-button-group.p-button-contrast > .p-button:not(:disabled):hover,
|
|
626
|
+
.p-splitbutton.p-button-contrast > .p-button:not(:disabled):hover {
|
|
627
|
+
background: var(--text-neutral-loud);
|
|
628
|
+
color: var(--surface-neutral-primary);
|
|
629
|
+
border-color: var(--text-neutral-loud);
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
.p-button.p-button-contrast:not(:disabled):focus,
|
|
633
|
+
.p-button-group.p-button-contrast > .p-button:not(:disabled):focus,
|
|
634
|
+
.p-splitbutton.p-button-contrast > .p-button:not(:disabled):focus {
|
|
635
|
+
box-shadow: none;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
.p-button.p-button-contrast:not(:disabled):active,
|
|
639
|
+
.p-button-group.p-button-contrast > .p-button:not(:disabled):active,
|
|
640
|
+
.p-splitbutton.p-button-contrast > .p-button:not(:disabled):active {
|
|
641
|
+
background: var(--text-neutral-default);
|
|
642
|
+
color: var(--surface-neutral-primary);
|
|
643
|
+
border-color: var(--text-neutral-default);
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
.p-button.p-button-contrast.p-button-outlined,
|
|
647
|
+
.p-button-group.p-button-contrast > .p-button.p-button-outlined,
|
|
648
|
+
.p-splitbutton.p-button-contrast > .p-button.p-button-outlined {
|
|
649
|
+
background-color: transparent;
|
|
650
|
+
color: var(--text-neutral-loud);
|
|
651
|
+
border: 1px solid;
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
.p-button.p-button-contrast.p-button-outlined:not(:disabled):hover,
|
|
655
|
+
.p-button-group.p-button-contrast > .p-button.p-button-outlined:not(:disabled):hover,
|
|
656
|
+
.p-splitbutton.p-button-contrast > .p-button.p-button-outlined:not(:disabled):hover {
|
|
657
|
+
background: color-mix(in srgb, var(--text-neutral-loud) 4%, transparent);
|
|
658
|
+
color: var(--text-neutral-loud);
|
|
659
|
+
border: 1px solid;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
.p-button.p-button-contrast.p-button-outlined:not(:disabled):active,
|
|
663
|
+
.p-button-group.p-button-contrast > .p-button.p-button-outlined:not(:disabled):active,
|
|
664
|
+
.p-splitbutton.p-button-contrast > .p-button.p-button-outlined:not(:disabled):active {
|
|
665
|
+
background: color-mix(in srgb, var(--text-neutral-loud) 16%, transparent);
|
|
666
|
+
color: var(--text-neutral-loud);
|
|
667
|
+
border: 1px solid;
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
.p-button.p-button-contrast.p-button-text,
|
|
671
|
+
.p-button-group.p-button-contrast > .p-button.p-button-text,
|
|
672
|
+
.p-splitbutton.p-button-contrast > .p-button.p-button-text {
|
|
673
|
+
background-color: transparent;
|
|
674
|
+
color: var(--text-neutral-loud);
|
|
675
|
+
border-color: transparent;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
.p-button.p-button-contrast.p-button-text:not(:disabled):hover,
|
|
679
|
+
.p-button-group.p-button-contrast > .p-button.p-button-text:not(:disabled):hover,
|
|
680
|
+
.p-splitbutton.p-button-contrast > .p-button.p-button-text:not(:disabled):hover {
|
|
681
|
+
background: color-mix(in srgb, var(--text-neutral-loud) 4%, transparent);
|
|
682
|
+
border-color: transparent;
|
|
683
|
+
color: var(--text-neutral-loud);
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
.p-button.p-button-contrast.p-button-text:not(:disabled):active,
|
|
687
|
+
.p-button-group.p-button-contrast > .p-button.p-button-text:not(:disabled):active,
|
|
688
|
+
.p-splitbutton.p-button-contrast > .p-button.p-button-text:not(:disabled):active {
|
|
689
|
+
background: color-mix(in srgb, var(--text-neutral-loud) 16%, transparent);
|
|
690
|
+
border-color: transparent;
|
|
691
|
+
color: var(--text-neutral-loud);
|
|
692
|
+
}
|
package/dist/components/data.css
CHANGED
|
@@ -917,3 +917,144 @@
|
|
|
917
917
|
.p-orderlist.p-orderlist-striped .p-orderlist-list .p-orderlist-item:nth-child(even):hover {
|
|
918
918
|
background: var(--surface-state-hover);
|
|
919
919
|
}
|
|
920
|
+
|
|
921
|
+
/* DataTable Column Filters */
|
|
922
|
+
.p-column-filter-menu-button {
|
|
923
|
+
width: 2rem;
|
|
924
|
+
height: 2rem;
|
|
925
|
+
color: var(--text-neutral-subdued);
|
|
926
|
+
border: 0 none;
|
|
927
|
+
background: transparent;
|
|
928
|
+
border-radius: var(--radius-full);
|
|
929
|
+
transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
.p-column-filter-menu-button:hover {
|
|
933
|
+
color: var(--text-neutral-loud);
|
|
934
|
+
border-color: transparent;
|
|
935
|
+
background: var(--surface-state-hover);
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
.p-column-filter-menu-button:focus-visible {
|
|
939
|
+
outline: 0 none;
|
|
940
|
+
outline-offset: 0;
|
|
941
|
+
box-shadow: 0 0 0 0.2rem var(--surface-brand-overlay);
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
.p-column-filter-menu-button.p-column-filter-menu-button-open,
|
|
945
|
+
.p-column-filter-menu-button.p-column-filter-menu-button-open:hover {
|
|
946
|
+
background: var(--surface-state-hover);
|
|
947
|
+
color: var(--text-neutral-loud);
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
.p-column-filter-menu-button.p-column-filter-menu-button-active,
|
|
951
|
+
.p-column-filter-menu-button.p-column-filter-menu-button-active:hover {
|
|
952
|
+
background: var(--surface-brand-overlay);
|
|
953
|
+
color: var(--text-state-interactive);
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
.p-column-filter-clear-button {
|
|
957
|
+
width: 2rem;
|
|
958
|
+
height: 2rem;
|
|
959
|
+
color: var(--text-neutral-subdued);
|
|
960
|
+
border: 0 none;
|
|
961
|
+
background: transparent;
|
|
962
|
+
border-radius: var(--radius-full);
|
|
963
|
+
transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
.p-column-filter-clear-button:hover {
|
|
967
|
+
color: var(--text-neutral-loud);
|
|
968
|
+
border-color: transparent;
|
|
969
|
+
background: var(--surface-state-hover);
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
.p-column-filter-clear-button:focus-visible {
|
|
973
|
+
outline: 0 none;
|
|
974
|
+
outline-offset: 0;
|
|
975
|
+
box-shadow: 0 0 0 0.2rem var(--surface-brand-overlay);
|
|
976
|
+
}
|
|
977
|
+
|
|
978
|
+
.p-column-filter-row .p-column-filter-menu-button,
|
|
979
|
+
.p-column-filter-row .p-column-filter-clear-button {
|
|
980
|
+
margin-left: 0.5rem;
|
|
981
|
+
}
|
|
982
|
+
|
|
983
|
+
.p-column-filter-overlay {
|
|
984
|
+
background: var(--surface-neutral-primary);
|
|
985
|
+
color: var(--text-neutral-default);
|
|
986
|
+
border: 0 none;
|
|
987
|
+
border-radius: var(--radius-md);
|
|
988
|
+
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
|
|
989
|
+
min-width: 12.5rem;
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
.p-column-filter-overlay .p-column-filter-row-items {
|
|
993
|
+
padding: 0.75rem 0;
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item {
|
|
997
|
+
margin: 0;
|
|
998
|
+
padding: 0.75rem 1.25rem;
|
|
999
|
+
border: 0 none;
|
|
1000
|
+
color: var(--text-neutral-default);
|
|
1001
|
+
background: transparent;
|
|
1002
|
+
transition: box-shadow 0.2s;
|
|
1003
|
+
border-radius: 0;
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:focus-visible {
|
|
1007
|
+
outline: 0 none;
|
|
1008
|
+
outline-offset: 0;
|
|
1009
|
+
box-shadow: inset 0 0 0 0.15rem var(--surface-brand-overlay);
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item.p-highlight {
|
|
1013
|
+
color: var(--text-state-interactive);
|
|
1014
|
+
background: var(--surface-brand-overlay);
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:not(.p-highlight, .p-disabled):hover {
|
|
1018
|
+
color: var(--text-neutral-default);
|
|
1019
|
+
background: var(--surface-state-hover);
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
.p-column-filter-overlay .p-column-filter-row-items .p-column-filter-separator {
|
|
1023
|
+
border-top: 1px solid var(--border-neutral-subdued);
|
|
1024
|
+
margin: 0.25rem 0;
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
.p-column-filter-overlay-menu .p-column-filter-operator {
|
|
1028
|
+
padding: 0.75rem 1.25rem;
|
|
1029
|
+
border-bottom: 1px solid var(--border-neutral-subdued);
|
|
1030
|
+
color: var(--text-neutral-loud);
|
|
1031
|
+
background: var(--surface-neutral-secondary);
|
|
1032
|
+
margin: 0;
|
|
1033
|
+
border-top-right-radius: var(--radius-md);
|
|
1034
|
+
border-top-left-radius: var(--radius-md);
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
.p-column-filter-overlay-menu .p-column-filter-constraint {
|
|
1038
|
+
padding: 1.25rem;
|
|
1039
|
+
border-bottom: 1px solid var(--border-neutral-subdued);
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-matchmode-dropdown {
|
|
1043
|
+
margin-bottom: 0.5rem;
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
.p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-remove-button {
|
|
1047
|
+
margin-top: 0.5rem;
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
.p-column-filter-overlay-menu .p-column-filter-constraint:last-child {
|
|
1051
|
+
border-bottom: 0 none;
|
|
1052
|
+
}
|
|
1053
|
+
|
|
1054
|
+
.p-column-filter-overlay-menu .p-column-filter-add-rule {
|
|
1055
|
+
padding: 0.75rem 1.25rem;
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
.p-column-filter-overlay-menu .p-column-filter-buttonbar {
|
|
1059
|
+
padding: 1.25rem;
|
|
1060
|
+
}
|
package/dist/components/form.css
CHANGED
|
@@ -46,6 +46,60 @@
|
|
|
46
46
|
.p-inputnumber.p-invalid.p-component > .p-inputtext {
|
|
47
47
|
border-color: var(--severity-danger-text);
|
|
48
48
|
}
|
|
49
|
+
.p-icon-field {
|
|
50
|
+
position: relative;
|
|
51
|
+
}
|
|
52
|
+
.p-icon-field > .p-input-icon {
|
|
53
|
+
position: absolute;
|
|
54
|
+
top: 50%;
|
|
55
|
+
margin-top: -0.5rem;
|
|
56
|
+
}
|
|
57
|
+
.p-fluid .p-icon-field-left,
|
|
58
|
+
.p-fluid .p-icon-field-right {
|
|
59
|
+
width: 100%;
|
|
60
|
+
}
|
|
61
|
+
.p-icon-field-left > .p-input-icon:first-of-type {
|
|
62
|
+
left: 0.75rem;
|
|
63
|
+
color: var(--text-neutral-subdued);
|
|
64
|
+
}
|
|
65
|
+
.p-icon-field-right > .p-input-icon:last-of-type {
|
|
66
|
+
right: 0.75rem;
|
|
67
|
+
color: var(--text-neutral-subdued);
|
|
68
|
+
}
|
|
69
|
+
.p-icon-field-left > .p-inputtext {
|
|
70
|
+
padding-left: 2.5rem;
|
|
71
|
+
}
|
|
72
|
+
.p-icon-field-left.p-float-label > label {
|
|
73
|
+
left: 2.5rem;
|
|
74
|
+
}
|
|
75
|
+
.p-icon-field-right > .p-inputtext {
|
|
76
|
+
padding-right: 2.5rem;
|
|
77
|
+
}
|
|
78
|
+
.p-password.p-invalid.p-component > .p-inputtext {
|
|
79
|
+
border-color: var(--severity-danger-text);
|
|
80
|
+
}
|
|
81
|
+
.p-password-panel {
|
|
82
|
+
padding: 1.25rem;
|
|
83
|
+
background: var(--surface-neutral-primary);
|
|
84
|
+
color: var(--text-neutral-default);
|
|
85
|
+
border: 0 none;
|
|
86
|
+
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
|
|
87
|
+
border-radius: var(--radius-md);
|
|
88
|
+
}
|
|
89
|
+
.p-password-panel .p-password-meter {
|
|
90
|
+
margin-bottom: 0.5rem;
|
|
91
|
+
background: var(--surface-neutral-secondary);
|
|
92
|
+
border-radius: var(--radius-sm);
|
|
93
|
+
}
|
|
94
|
+
.p-password-panel .p-password-meter .p-password-strength.weak {
|
|
95
|
+
background: var(--severity-danger-text);
|
|
96
|
+
}
|
|
97
|
+
.p-password-panel .p-password-meter .p-password-strength.medium {
|
|
98
|
+
background: var(--severity-warning-text);
|
|
99
|
+
}
|
|
100
|
+
.p-password-panel .p-password-meter .p-password-strength.strong {
|
|
101
|
+
background: var(--severity-success-text);
|
|
102
|
+
}
|
|
49
103
|
.p-inputgroup > .p-component,
|
|
50
104
|
.p-inputgroup > .p-inputwrapper > .p-inputtext,
|
|
51
105
|
.p-inputgroup > .p-float-label > .p-component {
|
|
@@ -487,6 +541,152 @@
|
|
|
487
541
|
.p-dropdown.p-invalid.p-component {
|
|
488
542
|
border-color: var(--severity-danger-text);
|
|
489
543
|
}
|
|
544
|
+
.p-dropdown-panel {
|
|
545
|
+
background: var(--surface-neutral-primary);
|
|
546
|
+
color: var(--text-neutral-default);
|
|
547
|
+
border: 0 none;
|
|
548
|
+
border-radius: var(--radius-md);
|
|
549
|
+
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
|
|
550
|
+
}
|
|
551
|
+
.p-dropdown-panel .p-dropdown-header {
|
|
552
|
+
padding: 0.75rem 1.25rem;
|
|
553
|
+
border-bottom: 1px solid var(--border-neutral-subdued);
|
|
554
|
+
color: var(--text-neutral-loud);
|
|
555
|
+
background: var(--surface-neutral-secondary);
|
|
556
|
+
margin: 0;
|
|
557
|
+
border-top-right-radius: var(--radius-md);
|
|
558
|
+
border-top-left-radius: var(--radius-md);
|
|
559
|
+
}
|
|
560
|
+
.p-dropdown-panel .p-dropdown-header .p-dropdown-filter {
|
|
561
|
+
padding-right: 1.75rem;
|
|
562
|
+
margin-right: -1.75rem;
|
|
563
|
+
}
|
|
564
|
+
.p-dropdown-panel .p-dropdown-header .p-dropdown-filter-icon {
|
|
565
|
+
right: 0.75rem;
|
|
566
|
+
color: var(--text-neutral-subdued);
|
|
567
|
+
}
|
|
568
|
+
.p-dropdown-panel .p-dropdown-items {
|
|
569
|
+
padding: 0.75rem 0;
|
|
570
|
+
}
|
|
571
|
+
.p-dropdown-panel .p-dropdown-items .p-dropdown-item {
|
|
572
|
+
margin: 0;
|
|
573
|
+
padding: 0.75rem 1.25rem;
|
|
574
|
+
border: 0 none;
|
|
575
|
+
color: var(--text-neutral-default);
|
|
576
|
+
background: transparent;
|
|
577
|
+
transition: box-shadow 0.2s;
|
|
578
|
+
border-radius: 0;
|
|
579
|
+
}
|
|
580
|
+
.p-dropdown-panel .p-dropdown-items .p-dropdown-item:first-child {
|
|
581
|
+
margin-top: 0;
|
|
582
|
+
}
|
|
583
|
+
.p-dropdown-panel .p-dropdown-items .p-dropdown-item:last-child {
|
|
584
|
+
margin-bottom: 0;
|
|
585
|
+
}
|
|
586
|
+
.p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight {
|
|
587
|
+
color: var(--text-state-interactive);
|
|
588
|
+
background: var(--surface-brand-overlay);
|
|
589
|
+
}
|
|
590
|
+
.p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight.p-focus {
|
|
591
|
+
background: color-mix(in srgb, var(--surface-brand-primary) 24%, transparent);
|
|
592
|
+
}
|
|
593
|
+
.p-dropdown-panel .p-dropdown-items .p-dropdown-item:not(.p-highlight):not(.p-disabled).p-focus {
|
|
594
|
+
color: var(--text-neutral-default);
|
|
595
|
+
background: var(--surface-state-hover);
|
|
596
|
+
}
|
|
597
|
+
.p-dropdown-panel .p-dropdown-items .p-dropdown-item .p-dropdown-check-icon {
|
|
598
|
+
position: relative;
|
|
599
|
+
margin-left: -0.5rem;
|
|
600
|
+
margin-right: 0.5rem;
|
|
601
|
+
}
|
|
602
|
+
.p-dropdown-panel .p-dropdown-items .p-dropdown-item-group {
|
|
603
|
+
margin: 0;
|
|
604
|
+
padding: 0.75rem 1.25rem;
|
|
605
|
+
color: var(--text-neutral-loud);
|
|
606
|
+
background: var(--surface-neutral-primary);
|
|
607
|
+
font-weight: 700;
|
|
608
|
+
}
|
|
609
|
+
.p-dropdown-panel .p-dropdown-items .p-dropdown-empty-message {
|
|
610
|
+
padding: 0.75rem 1.25rem;
|
|
611
|
+
color: var(--text-neutral-default);
|
|
612
|
+
background: transparent;
|
|
613
|
+
}
|
|
614
|
+
.p-autocomplete .p-autocomplete-loader {
|
|
615
|
+
right: 0.75rem;
|
|
616
|
+
}
|
|
617
|
+
.p-autocomplete.p-autocomplete-dd .p-autocomplete-loader {
|
|
618
|
+
right: 3.75rem;
|
|
619
|
+
}
|
|
620
|
+
.p-autocomplete .p-autocomplete-multiple-container {
|
|
621
|
+
padding: 0.375rem 0.75rem;
|
|
622
|
+
gap: 0.5rem;
|
|
623
|
+
}
|
|
624
|
+
.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled):hover {
|
|
625
|
+
border-color: var(--border-state-interactive);
|
|
626
|
+
}
|
|
627
|
+
.p-autocomplete .p-autocomplete-multiple-container:not(.p-disabled).p-focus {
|
|
628
|
+
outline: 0 none;
|
|
629
|
+
outline-offset: 0;
|
|
630
|
+
box-shadow: 0 0 0 0.2rem var(--surface-brand-overlay);
|
|
631
|
+
border-color: var(--border-state-interactive);
|
|
632
|
+
}
|
|
633
|
+
.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token {
|
|
634
|
+
padding: 0.375rem 0;
|
|
635
|
+
}
|
|
636
|
+
.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token input {
|
|
637
|
+
font-family: var(--font-family);
|
|
638
|
+
font-size: 1rem;
|
|
639
|
+
color: var(--text-neutral-default);
|
|
640
|
+
padding: 0;
|
|
641
|
+
margin: 0;
|
|
642
|
+
}
|
|
643
|
+
.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token {
|
|
644
|
+
padding: 0.375rem 0.75rem;
|
|
645
|
+
margin-right: 0.5rem;
|
|
646
|
+
background: var(--surface-brand-overlay);
|
|
647
|
+
color: var(--text-state-interactive);
|
|
648
|
+
border-radius: var(--radius-md);
|
|
649
|
+
}
|
|
650
|
+
.p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token .p-autocomplete-token-icon {
|
|
651
|
+
margin-left: 0.5rem;
|
|
652
|
+
}
|
|
653
|
+
.p-autocomplete.p-invalid.p-component > .p-inputtext {
|
|
654
|
+
border-color: var(--severity-danger-text);
|
|
655
|
+
}
|
|
656
|
+
.p-autocomplete-panel {
|
|
657
|
+
background: var(--surface-neutral-primary);
|
|
658
|
+
color: var(--text-neutral-default);
|
|
659
|
+
border: 0 none;
|
|
660
|
+
border-radius: var(--radius-md);
|
|
661
|
+
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
|
|
662
|
+
}
|
|
663
|
+
.p-autocomplete-panel .p-autocomplete-items {
|
|
664
|
+
padding: 0.75rem 0;
|
|
665
|
+
}
|
|
666
|
+
.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item {
|
|
667
|
+
margin: 0;
|
|
668
|
+
padding: 0.75rem 1.25rem;
|
|
669
|
+
border: 0 none;
|
|
670
|
+
color: var(--text-neutral-default);
|
|
671
|
+
background: transparent;
|
|
672
|
+
transition: box-shadow 0.2s;
|
|
673
|
+
border-radius: 0;
|
|
674
|
+
}
|
|
675
|
+
.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item:hover {
|
|
676
|
+
color: var(--text-neutral-default);
|
|
677
|
+
background: var(--surface-state-hover);
|
|
678
|
+
}
|
|
679
|
+
.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item.p-highlight {
|
|
680
|
+
color: var(--text-state-interactive);
|
|
681
|
+
background: var(--surface-brand-overlay);
|
|
682
|
+
}
|
|
683
|
+
.p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item-group {
|
|
684
|
+
margin: 0;
|
|
685
|
+
padding: 0.75rem 1.25rem;
|
|
686
|
+
color: var(--text-neutral-loud);
|
|
687
|
+
background: var(--surface-neutral-primary);
|
|
688
|
+
font-weight: 700;
|
|
689
|
+
}
|
|
490
690
|
.p-multiselect {
|
|
491
691
|
display: inline-flex;
|
|
492
692
|
cursor: pointer;
|
|
@@ -602,6 +802,68 @@
|
|
|
602
802
|
.p-treeselect.p-invalid.p-component {
|
|
603
803
|
border-color: var(--severity-danger-text);
|
|
604
804
|
}
|
|
805
|
+
|
|
806
|
+
/* TreeSelect Panel */
|
|
807
|
+
.p-treeselect-panel {
|
|
808
|
+
background: var(--surface-neutral-primary);
|
|
809
|
+
color: var(--text-neutral-default);
|
|
810
|
+
border: 0 none;
|
|
811
|
+
border-radius: var(--radius-md);
|
|
812
|
+
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
|
|
813
|
+
}
|
|
814
|
+
.p-treeselect-panel .p-treeselect-header {
|
|
815
|
+
padding: 0.75rem 1.25rem;
|
|
816
|
+
border-bottom: 1px solid var(--border-neutral-subdued);
|
|
817
|
+
color: var(--text-neutral-loud);
|
|
818
|
+
background: var(--surface-neutral-secondary);
|
|
819
|
+
margin: 0;
|
|
820
|
+
border-top-right-radius: var(--radius-md);
|
|
821
|
+
border-top-left-radius: var(--radius-md);
|
|
822
|
+
}
|
|
823
|
+
.p-treeselect-panel .p-treeselect-header .p-treeselect-filter-container {
|
|
824
|
+
margin-right: 0.5rem;
|
|
825
|
+
}
|
|
826
|
+
.p-treeselect-panel .p-treeselect-header .p-treeselect-filter-container .p-treeselect-filter {
|
|
827
|
+
padding-right: 1.75rem;
|
|
828
|
+
}
|
|
829
|
+
.p-treeselect-panel .p-treeselect-header .p-treeselect-filter-container .p-treeselect-filter-icon {
|
|
830
|
+
right: 0.75rem;
|
|
831
|
+
color: var(--text-neutral-subdued);
|
|
832
|
+
}
|
|
833
|
+
.p-treeselect-panel .p-treeselect-header .p-treeselect-filter-container.p-treeselect-clearable-filter .p-treeselect-filter {
|
|
834
|
+
padding-right: 3.5rem;
|
|
835
|
+
}
|
|
836
|
+
.p-treeselect-panel .p-treeselect-header .p-treeselect-filter-container.p-treeselect-clearable-filter .p-treeselect-filter-clear-icon {
|
|
837
|
+
right: 2.5rem;
|
|
838
|
+
}
|
|
839
|
+
.p-treeselect-panel .p-treeselect-header .p-treeselect-close {
|
|
840
|
+
width: 2rem;
|
|
841
|
+
height: 2rem;
|
|
842
|
+
color: var(--text-neutral-subdued);
|
|
843
|
+
border: 0 none;
|
|
844
|
+
background: transparent;
|
|
845
|
+
border-radius: var(--radius-full);
|
|
846
|
+
transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
|
|
847
|
+
}
|
|
848
|
+
.p-treeselect-panel .p-treeselect-header .p-treeselect-close:focus-visible {
|
|
849
|
+
outline: 0 none;
|
|
850
|
+
outline-offset: 0;
|
|
851
|
+
box-shadow: 0 0 0 0.2rem var(--surface-brand-overlay);
|
|
852
|
+
}
|
|
853
|
+
.p-treeselect-panel .p-treeselect-header .p-treeselect-close:enabled:hover {
|
|
854
|
+
color: var(--text-neutral-loud);
|
|
855
|
+
border-color: transparent;
|
|
856
|
+
background: var(--surface-state-hover);
|
|
857
|
+
}
|
|
858
|
+
.p-treeselect-panel .p-treeselect-items-wrapper .p-tree {
|
|
859
|
+
border: 0 none;
|
|
860
|
+
}
|
|
861
|
+
.p-treeselect-panel .p-treeselect-items-wrapper .p-treeselect-empty-message {
|
|
862
|
+
padding: 0.75rem 1.25rem;
|
|
863
|
+
color: var(--text-neutral-default);
|
|
864
|
+
background: transparent;
|
|
865
|
+
}
|
|
866
|
+
|
|
605
867
|
.p-cascadeselect {
|
|
606
868
|
background: var(--text-onsurface-onbrand);
|
|
607
869
|
border: 1px solid var(--border-neutral-subdued);
|
|
@@ -649,6 +911,47 @@
|
|
|
649
911
|
.p-cascadeselect.p-invalid.p-component {
|
|
650
912
|
border-color: var(--severity-danger-text);
|
|
651
913
|
}
|
|
914
|
+
.p-cascadeselect-panel {
|
|
915
|
+
background: var(--surface-neutral-primary);
|
|
916
|
+
color: var(--text-neutral-default);
|
|
917
|
+
border: 0 none;
|
|
918
|
+
border-radius: var(--radius-md);
|
|
919
|
+
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
|
|
920
|
+
}
|
|
921
|
+
.p-cascadeselect-panel .p-cascadeselect-items {
|
|
922
|
+
padding: 0.75rem 0;
|
|
923
|
+
}
|
|
924
|
+
.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item {
|
|
925
|
+
margin: 0;
|
|
926
|
+
border: 0 none;
|
|
927
|
+
color: var(--text-neutral-default);
|
|
928
|
+
background: transparent;
|
|
929
|
+
transition: box-shadow 0.2s;
|
|
930
|
+
border-radius: 0;
|
|
931
|
+
}
|
|
932
|
+
.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item:first-child {
|
|
933
|
+
margin-top: 0;
|
|
934
|
+
}
|
|
935
|
+
.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item:last-child {
|
|
936
|
+
margin-bottom: 0;
|
|
937
|
+
}
|
|
938
|
+
.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item.p-highlight {
|
|
939
|
+
color: var(--text-state-interactive);
|
|
940
|
+
background: var(--surface-brand-overlay);
|
|
941
|
+
}
|
|
942
|
+
.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item.p-highlight.p-focus {
|
|
943
|
+
background: color-mix(in srgb, var(--surface-brand-primary) 24%, transparent);
|
|
944
|
+
}
|
|
945
|
+
.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item:not(.p-highlight):not(.p-disabled).p-focus {
|
|
946
|
+
color: var(--text-neutral-default);
|
|
947
|
+
background: var(--surface-state-hover);
|
|
948
|
+
}
|
|
949
|
+
.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content {
|
|
950
|
+
padding: 0.75rem 1.25rem;
|
|
951
|
+
}
|
|
952
|
+
.p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-group-icon {
|
|
953
|
+
font-size: 0.875rem;
|
|
954
|
+
}
|
|
652
955
|
.p-listbox {
|
|
653
956
|
background: var(--text-onsurface-onbrand);
|
|
654
957
|
color: var(--text-neutral-subdued);
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extended miscellaneous components
|
|
3
|
+
* Components not commonly used but part of PrimeReact
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/* InputOTP */
|
|
7
|
+
.p-inputotp {
|
|
8
|
+
display: flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
gap: 0.5rem;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.p-inputotp-input {
|
|
14
|
+
text-align: center;
|
|
15
|
+
width: 2.5rem;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* Mention */
|
|
19
|
+
.p-mention-panel {
|
|
20
|
+
background: var(--surface-neutral-primary);
|
|
21
|
+
color: var(--text-neutral-default);
|
|
22
|
+
border: 0 none;
|
|
23
|
+
border-radius: var(--radius-md);
|
|
24
|
+
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.p-mention-panel .p-mention-items {
|
|
28
|
+
padding: 0.75rem 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.p-mention-panel .p-mention-items .p-mention-item {
|
|
32
|
+
margin: 0;
|
|
33
|
+
padding: 0.75rem 1.25rem;
|
|
34
|
+
border: 0 none;
|
|
35
|
+
color: var(--text-neutral-default);
|
|
36
|
+
background: transparent;
|
|
37
|
+
transition: box-shadow 0.2s;
|
|
38
|
+
border-radius: 0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.p-mention-panel .p-mention-items .p-mention-item:hover {
|
|
42
|
+
color: var(--text-neutral-default);
|
|
43
|
+
background: var(--surface-state-hover);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.p-mention-panel .p-mention-items .p-mention-item.p-highlight {
|
|
47
|
+
color: var(--text-state-interactive);
|
|
48
|
+
background: var(--surface-brand-overlay);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* Toolbar */
|
|
52
|
+
.p-toolbar {
|
|
53
|
+
background: var(--surface-neutral-secondary);
|
|
54
|
+
border: 1px solid var(--border-neutral-subdued);
|
|
55
|
+
padding: 1.25rem;
|
|
56
|
+
border-radius: var(--radius-md);
|
|
57
|
+
gap: 0.5rem;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.p-toolbar .p-toolbar-separator {
|
|
61
|
+
margin: 0 0.5rem;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* ConfirmPopup */
|
|
65
|
+
.p-confirm-popup {
|
|
66
|
+
background: var(--surface-neutral-primary);
|
|
67
|
+
color: var(--text-neutral-default);
|
|
68
|
+
border: 0 none;
|
|
69
|
+
border-radius: var(--radius-md);
|
|
70
|
+
box-shadow: 0 1px 3px rgb(0 0 0 / 30%);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.p-confirm-popup .p-confirm-popup-content {
|
|
74
|
+
padding: 1.25rem;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.p-confirm-popup .p-confirm-popup-footer {
|
|
78
|
+
text-align: right;
|
|
79
|
+
padding: 0 1.25rem 1.25rem 1.25rem;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.p-confirm-popup .p-confirm-popup-footer button {
|
|
83
|
+
margin: 0 0.5rem 0 0;
|
|
84
|
+
width: auto;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.p-confirm-popup .p-confirm-popup-footer button:last-child {
|
|
88
|
+
margin: 0;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.p-confirm-popup:after {
|
|
92
|
+
border: solid transparent;
|
|
93
|
+
border-color: rgb(255 255 255 / 0%);
|
|
94
|
+
border-bottom-color: var(--surface-neutral-primary);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.p-confirm-popup:before {
|
|
98
|
+
border: solid transparent;
|
|
99
|
+
border-color: rgb(255 255 255 / 0%);
|
|
100
|
+
border-bottom-color: var(--surface-neutral-primary);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.p-confirm-popup.p-confirm-popup-flipped:after {
|
|
104
|
+
border-top-color: var(--surface-neutral-primary);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.p-confirm-popup.p-confirm-popup-flipped:before {
|
|
108
|
+
border-top-color: var(--surface-neutral-primary);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.p-confirm-popup .p-confirm-popup-icon {
|
|
112
|
+
font-size: 1.5rem;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.p-confirm-popup .p-confirm-popup-icon.p-icon {
|
|
116
|
+
width: 1.5rem;
|
|
117
|
+
height: 1.5rem;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.p-confirm-popup .p-confirm-popup-message {
|
|
121
|
+
margin-left: 1rem;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* ScrollTop */
|
|
125
|
+
.p-scrolltop {
|
|
126
|
+
width: 3rem;
|
|
127
|
+
height: 3rem;
|
|
128
|
+
border-radius: var(--radius-full);
|
|
129
|
+
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
|
|
130
|
+
transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.p-scrolltop.p-link {
|
|
134
|
+
background: rgb(0 0 0 / 70%);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.p-scrolltop.p-link:hover {
|
|
138
|
+
background: rgb(0 0 0 / 80%);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.p-scrolltop .p-scrolltop-icon {
|
|
142
|
+
font-size: 1.5rem;
|
|
143
|
+
color: var(--surface-neutral-secondary);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.p-scrolltop .p-scrolltop-icon.p-icon {
|
|
147
|
+
width: 1.5rem;
|
|
148
|
+
height: 1.5rem;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/* DataScroller */
|
|
152
|
+
.p-datascroller .p-paginator-top {
|
|
153
|
+
border-width: 0 0 1px 0;
|
|
154
|
+
border-radius: 0;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.p-datascroller .p-paginator-bottom {
|
|
158
|
+
border-width: 0 0 1px 0;
|
|
159
|
+
border-radius: 0;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.p-datascroller .p-datascroller-header {
|
|
163
|
+
background: var(--surface-neutral-secondary);
|
|
164
|
+
color: var(--text-neutral-loud);
|
|
165
|
+
border: 1px solid var(--border-neutral-subdued);
|
|
166
|
+
border-width: 1px 0 1px 0;
|
|
167
|
+
padding: 1rem 1rem;
|
|
168
|
+
font-weight: 700;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.p-datascroller .p-datascroller-content {
|
|
172
|
+
background: var(--surface-neutral-primary);
|
|
173
|
+
color: var(--text-neutral-default);
|
|
174
|
+
border: 0 none;
|
|
175
|
+
padding: 0;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.p-datascroller.p-datascroller-inline .p-datascroller-list > li {
|
|
179
|
+
border: solid var(--border-neutral-subdued);
|
|
180
|
+
border-width: 0 0 1px 0;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.p-datascroller .p-datascroller-footer {
|
|
184
|
+
background: var(--surface-neutral-secondary);
|
|
185
|
+
color: var(--text-neutral-loud);
|
|
186
|
+
border: 1px solid var(--border-neutral-subdued);
|
|
187
|
+
border-width: 0 0 1px 0;
|
|
188
|
+
padding: 1rem 1rem;
|
|
189
|
+
font-weight: 700;
|
|
190
|
+
border-bottom-left-radius: var(--radius-md);
|
|
191
|
+
border-bottom-right-radius: var(--radius-md);
|
|
192
|
+
}
|
package/dist/components/misc.css
CHANGED
|
@@ -78,6 +78,15 @@
|
|
|
78
78
|
.p-avatar.p-avatar-xl .p-avatar-icon {
|
|
79
79
|
font-size: 2rem;
|
|
80
80
|
}
|
|
81
|
+
|
|
82
|
+
.p-avatar-circle {
|
|
83
|
+
border-radius: var(--radius-full);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.p-avatar-group .p-avatar {
|
|
87
|
+
border: 2px solid var(--surface-neutral-primary);
|
|
88
|
+
}
|
|
89
|
+
|
|
81
90
|
.p-chip {
|
|
82
91
|
background-color: var(--surface-neutral-secondary);
|
|
83
92
|
color: var(--text-neutral-default);
|
|
@@ -176,3 +176,37 @@
|
|
|
176
176
|
.p-tooltip.p-tooltip-bottom .p-tooltip-arrow {
|
|
177
177
|
border-bottom-color: var(--text-neutral-subdued);
|
|
178
178
|
}
|
|
179
|
+
|
|
180
|
+
/* Component Overlay Transitions */
|
|
181
|
+
.p-component-overlay {
|
|
182
|
+
background-color: rgb(0 0 0 / 40%);
|
|
183
|
+
transition-duration: 0.2s;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.p-component-overlay-enter {
|
|
187
|
+
animation: p-component-overlay-enter-animation 150ms forwards;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.p-component-overlay-leave {
|
|
191
|
+
animation: p-component-overlay-leave-animation 150ms forwards;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
@keyframes p-component-overlay-enter-animation {
|
|
195
|
+
from {
|
|
196
|
+
background-color: transparent;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
to {
|
|
200
|
+
background-color: rgb(0 0 0 / 40%);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
@keyframes p-component-overlay-leave-animation {
|
|
205
|
+
from {
|
|
206
|
+
background-color: rgb(0 0 0 / 40%);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
to {
|
|
210
|
+
background-color: transparent;
|
|
211
|
+
}
|
|
212
|
+
}
|
package/dist/components.css
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_6670_42251)">
|
|
3
|
+
<path d="M-0.00186157 3H24.0019V21H-0.00186157V3Z" fill="#C8102E"/>
|
|
4
|
+
<path d="M7.71189 3H10.2844V21H7.71189V3Z" fill="white"/>
|
|
5
|
+
<path d="M-0.00186157 10.7137H24.0019V13.2863H-0.00186157V10.7137Z" fill="white"/>
|
|
6
|
+
</g>
|
|
7
|
+
<defs>
|
|
8
|
+
<clipPath id="clip0_6670_42251">
|
|
9
|
+
<rect width="24" height="24" fill="white"/>
|
|
10
|
+
</clipPath>
|
|
11
|
+
</defs>
|
|
12
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M0 3H24V21H0V3Z" fill="white"/>
|
|
3
|
+
<path d="M0 9.54375H24V14.4562H0V9.54375Z" fill="#002F6C"/>
|
|
4
|
+
<path d="M6.58125 3H11.49V21H6.5775L6.58125 3Z" fill="#002F6C"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M0 3H24V21H0V3Z" fill="#ED2939"/>
|
|
3
|
+
<path d="M6.75 3H11.25V21H6.75V3Z" fill="white"/>
|
|
4
|
+
<path d="M0 9.75H24V14.25H0V9.75Z" fill="white"/>
|
|
5
|
+
<path d="M7.875 3H10.125V21H7.875V3Z" fill="#002664"/>
|
|
6
|
+
<path d="M0 10.875H24V13.125H0V10.875Z" fill="#002664"/>
|
|
7
|
+
</svg>
|
package/dist/flag-uk.svg
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M0 3H24V21H0V3Z" fill="#012169"/>
|
|
3
|
+
<path d="M2.8125 3L11.9625 9.7875L21.075 3H24V5.325L15 12.0375L24 18.7125V21H21L12 14.2875L3.0375 21H0V18.75L8.9625 12.075L0 5.4V3H2.8125Z" fill="white"/>
|
|
4
|
+
<path d="M15.9 13.5375L24 19.5V21L13.8375 13.5375H15.9ZM9 14.2875L9.225 15.6L2.025 21H0L9 14.2875ZM24 3V3.1125L14.6625 10.1625L14.7375 8.5125L22.125 3H24ZM0 3L8.9625 9.6H6.7125L0 4.575V3Z" fill="#C8102E"/>
|
|
5
|
+
<path d="M9.0375 3V21H15.0375V3H9.0375ZM0 9V15H24V9H0Z" fill="white"/>
|
|
6
|
+
<path d="M0 10.2375V13.8375H24V10.2375H0ZM10.2375 3V21H13.8375V3H10.2375Z" fill="#C8102E"/>
|
|
7
|
+
</svg>
|
package/docs/AI-AGENT-GUIDE.md
CHANGED
|
@@ -122,6 +122,85 @@ Or use utility classes:
|
|
|
122
122
|
<div className="shadow-4">High shadow</div>
|
|
123
123
|
```
|
|
124
124
|
|
|
125
|
+
## ⚙️ PrimeReact Configuration
|
|
126
|
+
|
|
127
|
+
### App Setup with PrimeReactProvider
|
|
128
|
+
|
|
129
|
+
Wrap your app with `PrimeReactProvider` to configure global settings:
|
|
130
|
+
|
|
131
|
+
```tsx
|
|
132
|
+
import { PrimeReactProvider } from 'primereact/api';
|
|
133
|
+
|
|
134
|
+
function App() {
|
|
135
|
+
const primeConfig = {
|
|
136
|
+
ripple: true, // Enable ripple effect on buttons/clicks
|
|
137
|
+
inputStyle: 'outlined', // 'outlined' or 'filled'
|
|
138
|
+
locale: 'en', // Default locale
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
return (
|
|
142
|
+
<PrimeReactProvider value={primeConfig}>
|
|
143
|
+
{/* Your app content */}
|
|
144
|
+
</PrimeReactProvider>
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Ripple Effect
|
|
150
|
+
|
|
151
|
+
The ripple effect is **disabled by default**. Enable it for Material Design-style click animations:
|
|
152
|
+
|
|
153
|
+
```tsx
|
|
154
|
+
<PrimeReactProvider value={{ ripple: true }}>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Supported components:**
|
|
158
|
+
- Button
|
|
159
|
+
- Checkbox
|
|
160
|
+
- RadioButton
|
|
161
|
+
- Dropdown items
|
|
162
|
+
- Menu items
|
|
163
|
+
- ListBox items
|
|
164
|
+
|
|
165
|
+
**Note:** The ripple effect is a JavaScript feature, not CSS. It's configured at the app level, not in the theme.
|
|
166
|
+
|
|
167
|
+
### Input Style
|
|
168
|
+
|
|
169
|
+
Choose between outlined (default) or filled input styles:
|
|
170
|
+
|
|
171
|
+
```tsx
|
|
172
|
+
// Outlined inputs (default) - border around input
|
|
173
|
+
<PrimeReactProvider value={{ inputStyle: 'outlined' }}>
|
|
174
|
+
|
|
175
|
+
// Filled inputs - filled background, bottom border only
|
|
176
|
+
<PrimeReactProvider value={{ inputStyle: 'filled' }}>
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Other Configuration Options
|
|
180
|
+
|
|
181
|
+
```tsx
|
|
182
|
+
const primeConfig = {
|
|
183
|
+
ripple: true,
|
|
184
|
+
inputStyle: 'outlined',
|
|
185
|
+
|
|
186
|
+
// Append overlays to specific element (default: document.body)
|
|
187
|
+
appendTo: 'self', // or document.getElementById('overlays')
|
|
188
|
+
|
|
189
|
+
// Control z-index layering
|
|
190
|
+
zIndex: {
|
|
191
|
+
modal: 1100, // Modals
|
|
192
|
+
overlay: 1000, // Overlays/dropdowns
|
|
193
|
+
menu: 1000, // Menus
|
|
194
|
+
tooltip: 1100, // Tooltips
|
|
195
|
+
},
|
|
196
|
+
|
|
197
|
+
// Locale for date formatting, number formatting, etc.
|
|
198
|
+
locale: 'en',
|
|
199
|
+
};
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**Documentation:** [PrimeReact Configuration](https://primereact.org/configuration/)
|
|
203
|
+
|
|
125
204
|
## 🧩 Component Selection Guide
|
|
126
205
|
|
|
127
206
|
### Data Display
|
|
@@ -245,6 +324,42 @@ import { Card } from 'primereact/card';
|
|
|
245
324
|
<Card>Content</Card>
|
|
246
325
|
```
|
|
247
326
|
|
|
327
|
+
### 5. **CRITICAL: Applying Utility Classes to Components**
|
|
328
|
+
```tsx
|
|
329
|
+
// ❌ DON'T DO THIS - Utility classes on components
|
|
330
|
+
<Button className="w-full block mt-4 p-4" label="Submit" />
|
|
331
|
+
<InputText className="text-lg font-bold" />
|
|
332
|
+
<DataTable className="my-8" value={data} />
|
|
333
|
+
|
|
334
|
+
// ✅ DO THIS INSTEAD - Use component props + wrapper
|
|
335
|
+
<div className="w-full mt-4"> {/* Utility classes on wrapper */}
|
|
336
|
+
<Button label="Submit" />
|
|
337
|
+
</div>
|
|
338
|
+
|
|
339
|
+
<div className="text-lg"> {/* Styling on wrapper */}
|
|
340
|
+
<InputText />
|
|
341
|
+
</div>
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
**Why this matters:**
|
|
345
|
+
- ✅ **Components** are configured via **props** (size, variant, severity, etc.)
|
|
346
|
+
- ✅ **Utility classes** are for **layout/composition** (flex, grid, margins, width)
|
|
347
|
+
- ❌ Mixing utility classes with components breaks the design system
|
|
348
|
+
- ❌ Can cause unexpected visual bugs (icon misalignment, broken layouts)
|
|
349
|
+
|
|
350
|
+
**Correct approach:**
|
|
351
|
+
```tsx
|
|
352
|
+
// ✅ Layout utilities on wrappers/containers
|
|
353
|
+
<div className="flex gap-4 w-full">
|
|
354
|
+
<Button label="Cancel" severity="secondary" />
|
|
355
|
+
<Button label="Submit" />
|
|
356
|
+
</div>
|
|
357
|
+
|
|
358
|
+
// ✅ Component configuration via props
|
|
359
|
+
<Button label="Large Button" size="large" />
|
|
360
|
+
<InputText placeholder="Text" className="w-full" /> {/* Width is OK */}
|
|
361
|
+
```
|
|
362
|
+
|
|
248
363
|
## 🔍 Decision Tree for UI Development
|
|
249
364
|
|
|
250
365
|
```
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
# Prime Yggdrasil Theme Completeness Audit
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-01-08
|
|
4
|
+
**Base Theme:** PrimeReact Lara Light Blue
|
|
5
|
+
**Status:** ⚠️ Incomplete - Missing ~141 CSS classes
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Executive Summary
|
|
10
|
+
|
|
11
|
+
### PrimeReact Architecture
|
|
12
|
+
|
|
13
|
+
PrimeReact uses a **fully headless/unstyled architecture**:
|
|
14
|
+
- Components are React components with NO built-in styling
|
|
15
|
+
- `primereact.css` is deprecated/empty
|
|
16
|
+
- **Themes provide 100% of the styling** (layout, colors, spacing, positioning)
|
|
17
|
+
- This is by design - similar to Tailwind CSS or Headless UI
|
|
18
|
+
|
|
19
|
+
### Current State
|
|
20
|
+
|
|
21
|
+
- **Lara theme:** 7,068 lines, 662 unique CSS classes
|
|
22
|
+
- **Yggdrasil theme:** 5,590 lines, 521 unique CSS classes
|
|
23
|
+
- **Missing:** ~1,500 lines, 141 CSS classes
|
|
24
|
+
- **Coverage:** ~79% complete
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Missing Components
|
|
29
|
+
|
|
30
|
+
### Major Component Families Not Included
|
|
31
|
+
|
|
32
|
+
1. **AutoComplete** - Searchable dropdown with autocomplete
|
|
33
|
+
2. **ColorPicker** - Color selection component
|
|
34
|
+
3. **DataScroller** - Infinite scroll data display
|
|
35
|
+
4. **InputOTP** - One-time password input
|
|
36
|
+
5. **Mention** - @mention autocomplete for text areas
|
|
37
|
+
6. **ScrollTop** - Back-to-top button
|
|
38
|
+
7. **Toolbar** - Action button toolbar
|
|
39
|
+
8. **TreeSelect** - Tree structure selection (partial - base exists, but missing panel/overlay styles)
|
|
40
|
+
|
|
41
|
+
### Missing Specialized Styles
|
|
42
|
+
|
|
43
|
+
- **Column Filter** - Advanced DataTable column filtering UI (40+ classes)
|
|
44
|
+
- **Confirm Popup** - Confirmation dialog positioning
|
|
45
|
+
- **Avatar Group** - Multiple avatar display
|
|
46
|
+
- **Component Overlay** - Enter/leave transitions
|
|
47
|
+
- **Button Contrast** - High contrast button variant
|
|
48
|
+
- **Error States** - Dedicated error styling
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## What We DO Have (Well Covered)
|
|
53
|
+
|
|
54
|
+
✅ **Forms:** InputText, Dropdown, MultiSelect, Checkbox, Radio, Slider, Rating, InputSwitch
|
|
55
|
+
✅ **Buttons:** All variants, sizes, severities, outlined, text, raised, rounded
|
|
56
|
+
✅ **Data:** DataTable, Paginator, Tree, TreeTable
|
|
57
|
+
✅ **Panels:** Card, Accordion, TabView, Fieldset
|
|
58
|
+
✅ **Overlays:** Dialog, Sidebar, Tooltip, ConfirmDialog
|
|
59
|
+
✅ **Menus:** Menu, Menubar, ContextMenu, MegaMenu, Breadcrumb, Steps
|
|
60
|
+
✅ **Messages:** Toast, Message, InlineMessage
|
|
61
|
+
✅ **Media:** Carousel, Galleria, Image
|
|
62
|
+
✅ **Misc:** Badge, Chip, Tag, Avatar (basic), ProgressBar, Skeleton
|
|
63
|
+
✅ **Calendar/Date:** Full calendar component
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Recent Fixes
|
|
68
|
+
|
|
69
|
+
### IconField Positioning (2026-01-08)
|
|
70
|
+
|
|
71
|
+
**Issue:** Password toggle icons, search icons, and all IconField icons were mispositioned
|
|
72
|
+
|
|
73
|
+
**Root Cause:** Missing IconField CSS positioning rules in theme
|
|
74
|
+
|
|
75
|
+
**Fix:** Added to `src/theme/components/form.css`:
|
|
76
|
+
```css
|
|
77
|
+
.p-icon-field { position: relative; }
|
|
78
|
+
.p-icon-field > .p-input-icon { position: absolute; top: 50%; margin-top: -0.5rem; }
|
|
79
|
+
.p-icon-field-left > .p-input-icon:first-of-type { left: 0.75rem; }
|
|
80
|
+
.p-icon-field-right > .p-input-icon:last-of-type { right: 0.75rem; }
|
|
81
|
+
.p-icon-field-left > .p-inputtext { padding-left: 2.5rem; }
|
|
82
|
+
.p-icon-field-right > .p-inputtext { padding-right: 2.5rem; }
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Impact:** Fixes Password, Search, Calendar icon positioning across all use cases
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Ripple Effect
|
|
90
|
+
|
|
91
|
+
**Status:** ❌ Not included (but not CSS-related)
|
|
92
|
+
|
|
93
|
+
The ripple effect is a **JavaScript feature**, not CSS. To enable:
|
|
94
|
+
|
|
95
|
+
```tsx
|
|
96
|
+
import { PrimeReactProvider } from 'primereact/api';
|
|
97
|
+
|
|
98
|
+
function App() {
|
|
99
|
+
return (
|
|
100
|
+
<PrimeReactProvider value={{ ripple: true }}>
|
|
101
|
+
{/* Your app */}
|
|
102
|
+
</PrimeReactProvider>
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Recommendation:** Add ripple configuration to the AI-AGENT-GUIDE.md with example code.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Recommendations
|
|
112
|
+
|
|
113
|
+
### Option 1: Complete Theme (Recommended for Production)
|
|
114
|
+
|
|
115
|
+
**Pros:**
|
|
116
|
+
- Full PrimeReact component coverage
|
|
117
|
+
- No missing components
|
|
118
|
+
- Better user experience
|
|
119
|
+
|
|
120
|
+
**Cons:**
|
|
121
|
+
- More CSS to maintain
|
|
122
|
+
- Larger bundle size
|
|
123
|
+
|
|
124
|
+
**Action Items:**
|
|
125
|
+
1. Extract missing component styles from Lara theme
|
|
126
|
+
2. Convert to semantic tokens
|
|
127
|
+
3. Add to appropriate component category files
|
|
128
|
+
4. Test each component in Storybook
|
|
129
|
+
|
|
130
|
+
**Estimated Effort:** 4-6 hours
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
### Option 2: As-Needed Addition
|
|
135
|
+
|
|
136
|
+
**Pros:**
|
|
137
|
+
- Smaller bundle size
|
|
138
|
+
- Only maintain what you use
|
|
139
|
+
- Faster initial development
|
|
140
|
+
|
|
141
|
+
**Cons:**
|
|
142
|
+
- Components break when first used
|
|
143
|
+
- Users need to report missing styles
|
|
144
|
+
- Inconsistent component coverage
|
|
145
|
+
|
|
146
|
+
**Current Approach:** This is what we're doing now
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
### Option 3: Document Supported Components
|
|
151
|
+
|
|
152
|
+
**Pros:**
|
|
153
|
+
- Clear expectations
|
|
154
|
+
- Intentional scope
|
|
155
|
+
- Maintain quality over quantity
|
|
156
|
+
|
|
157
|
+
**Cons:**
|
|
158
|
+
- Limited component set
|
|
159
|
+
- May not fit all use cases
|
|
160
|
+
|
|
161
|
+
**Action Items:**
|
|
162
|
+
1. Create SUPPORTED-COMPONENTS.md
|
|
163
|
+
2. List all tested/working components
|
|
164
|
+
3. Mark unsupported components
|
|
165
|
+
4. Provide workarounds or alternatives
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Missing Component Priority Assessment
|
|
170
|
+
|
|
171
|
+
### High Priority (Common Use Cases)
|
|
172
|
+
|
|
173
|
+
1. **AutoComplete** - Very common in search/filter UIs
|
|
174
|
+
2. **Toolbar** - Standard in admin panels
|
|
175
|
+
3. **Column Filter** - Essential for DataTable filtering
|
|
176
|
+
4. **InputOTP** - Growing use for 2FA/authentication
|
|
177
|
+
|
|
178
|
+
### Medium Priority (Specialized Features)
|
|
179
|
+
|
|
180
|
+
5. **TreeSelect** panel/overlay - Complete the partial implementation
|
|
181
|
+
6. **Confirm Popup** - Nice-to-have confirmation UX
|
|
182
|
+
7. **ColorPicker** - Design tools, customization UIs
|
|
183
|
+
|
|
184
|
+
### Low Priority (Niche Use Cases)
|
|
185
|
+
|
|
186
|
+
8. **DataScroller** - Alternative to pagination (less common)
|
|
187
|
+
9. **Mention** - Social/collaborative apps only
|
|
188
|
+
10. **ScrollTop** - Nice-to-have UX enhancement
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Next Steps
|
|
193
|
+
|
|
194
|
+
### Immediate Actions
|
|
195
|
+
|
|
196
|
+
1. ✅ **Document ripple configuration** in AI-AGENT-GUIDE.md
|
|
197
|
+
2. ✅ **Document IconField fix** for future reference
|
|
198
|
+
3. ⏳ **Test current theme** in external project to identify critical gaps
|
|
199
|
+
4. ⏳ **Create SUPPORTED-COMPONENTS.md** listing coverage
|
|
200
|
+
|
|
201
|
+
### Short Term (Before Next Release)
|
|
202
|
+
|
|
203
|
+
1. Add high-priority missing components (AutoComplete, Toolbar, Column Filter)
|
|
204
|
+
2. Complete TreeSelect implementation
|
|
205
|
+
3. Add component coverage tests
|
|
206
|
+
4. Update documentation with component support matrix
|
|
207
|
+
|
|
208
|
+
### Long Term
|
|
209
|
+
|
|
210
|
+
1. Achieve 100% Lara theme parity
|
|
211
|
+
2. Automated theme comparison tests
|
|
212
|
+
3. CSS size optimization
|
|
213
|
+
4. Component-specific documentation
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Testing Checklist
|
|
218
|
+
|
|
219
|
+
When testing theme completeness in external projects:
|
|
220
|
+
|
|
221
|
+
- [ ] All form inputs render correctly
|
|
222
|
+
- [ ] Icons position correctly (IconField, Password, etc.)
|
|
223
|
+
- [ ] DataTable with filtering works
|
|
224
|
+
- [ ] Overlay components position correctly
|
|
225
|
+
- [ ] Buttons have all variants
|
|
226
|
+
- [ ] No console errors about missing CSS
|
|
227
|
+
- [ ] Dark mode works across all components
|
|
228
|
+
- [ ] Responsive behavior works
|
|
229
|
+
- [ ] Semantic tokens apply correctly
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Files Modified Today
|
|
234
|
+
|
|
235
|
+
1. `src/theme/components/form.css` - Added IconField positioning
|
|
236
|
+
2. `src/stories/Password.stories.tsx` - Added Password component examples
|
|
237
|
+
3. `src/stories/IconField.stories.tsx` - Added IconField examples
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Conclusion
|
|
242
|
+
|
|
243
|
+
**The Lara theme IS complete and self-contained.** Our Yggdrasil theme is based on it but we only extracted ~79% of the component styles during the initial conversion.
|
|
244
|
+
|
|
245
|
+
**The good news:** We have all the core components that most apps need (forms, tables, dialogs, menus).
|
|
246
|
+
|
|
247
|
+
**The gap:** Specialized components (AutoComplete, ColorPicker, etc.) are missing.
|
|
248
|
+
|
|
249
|
+
**The fix:** Extract missing components from Lara theme as needed, or do a complete extraction for 100% coverage.
|
|
250
|
+
|
|
251
|
+
The IconField issue we just fixed is exactly this pattern - a component style that exists in Lara but wasn't included in our initial extraction.
|
package/package.json
CHANGED