@duskmoon-dev/core 1.9.0 → 1.10.1
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/README.md +3 -3
- package/dist/components/appbar.css +2 -2
- package/dist/components/autocomplete.css +1 -1
- package/dist/components/card.css +4 -4
- package/dist/components/cascader.css +1 -1
- package/dist/components/collapse.css +1 -1
- package/dist/components/datepicker.css +2 -2
- package/dist/components/dialog.css +1 -1
- package/dist/components/drawer.css +1 -1
- package/dist/components/file-upload.css +1 -1
- package/dist/components/form-group.css +33 -1
- package/dist/components/index.css +630 -42
- package/dist/components/modal.css +1 -1
- package/dist/components/multi-select.css +1 -1
- package/dist/components/navigation.css +2 -2
- package/dist/components/nested-menu.css +261 -0
- package/dist/components/popover.css +28 -16
- package/dist/components/snackbar.css +1 -1
- package/dist/components/theme-controller.css +281 -0
- package/dist/components/time-input.css +1 -1
- package/dist/components/toast.css +1 -1
- package/dist/components/toggle.css +274 -0
- package/dist/components/tooltip.css +2 -2
- package/dist/components/tree-select.css +1 -1
- package/dist/esm/components/appbar.js +2 -2
- package/dist/esm/components/autocomplete.js +1 -1
- package/dist/esm/components/card.js +4 -4
- package/dist/esm/components/cascader.js +1 -1
- package/dist/esm/components/collapse.js +1 -1
- package/dist/esm/components/datepicker.js +2 -2
- package/dist/esm/components/dialog.js +1 -1
- package/dist/esm/components/drawer.js +1 -1
- package/dist/esm/components/file-upload.js +1 -1
- package/dist/esm/components/form-group.js +33 -1
- package/dist/esm/components/modal.js +1 -1
- package/dist/esm/components/multi-select.js +1 -1
- package/dist/esm/components/navigation.js +2 -2
- package/dist/esm/components/nested-menu.js +268 -0
- package/dist/esm/components/popover.js +28 -16
- package/dist/esm/components/snackbar.js +1 -1
- package/dist/esm/components/theme-controller.js +288 -0
- package/dist/esm/components/time-input.js +1 -1
- package/dist/esm/components/toast.js +1 -1
- package/dist/esm/components/toggle.js +281 -0
- package/dist/esm/components/tooltip.js +2 -2
- package/dist/esm/components/tree-select.js +1 -1
- package/dist/index.css +702 -73
- package/dist/index.min.css +1 -0
- package/dist/themes/moonlight.css +34 -16
- package/dist/themes/ocean.css +16 -7
- package/dist/themes/sunset.css +5 -4
- package/dist/themes/sunshine.css +6 -4
- package/dist/types/types/plugin.d.ts +1 -1
- package/package.json +21 -1
package/dist/index.css
CHANGED
|
@@ -230,6 +230,17 @@ html {
|
|
|
230
230
|
|
|
231
231
|
--color-shadow: initial;
|
|
232
232
|
--color-scrim: initial;
|
|
233
|
+
|
|
234
|
+
/* ============================================
|
|
235
|
+
* ELEVATION SHADOWS (6 tokens)
|
|
236
|
+
* ============================================ */
|
|
237
|
+
|
|
238
|
+
--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
239
|
+
--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
|
240
|
+
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
|
241
|
+
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
242
|
+
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
|
|
243
|
+
--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
|
|
233
244
|
}
|
|
234
245
|
|
|
235
246
|
/* Utility classes for colors - OKLCH format */
|
|
@@ -518,8 +529,9 @@ html {
|
|
|
518
529
|
* SHAPE & DEPTH
|
|
519
530
|
* ============================================ */
|
|
520
531
|
|
|
521
|
-
|
|
522
|
-
--radius-
|
|
532
|
+
/* Sunshine: rounded, bubbly, soft feel */
|
|
533
|
+
--radius-selector: 0.25rem;
|
|
534
|
+
--radius-field: 0.625rem;
|
|
523
535
|
--radius-box: 2rem;
|
|
524
536
|
--size-selector: 0.1875rem;
|
|
525
537
|
--size-field: 0.1875rem;
|
|
@@ -631,8 +643,9 @@ html {
|
|
|
631
643
|
* SHAPE & DEPTH
|
|
632
644
|
* ============================================ */
|
|
633
645
|
|
|
634
|
-
|
|
635
|
-
--radius-
|
|
646
|
+
/* Sunshine: rounded, bubbly, soft feel */
|
|
647
|
+
--radius-selector: 0.25rem;
|
|
648
|
+
--radius-field: 0.625rem;
|
|
636
649
|
--radius-box: 2rem;
|
|
637
650
|
--size-selector: 0.1875rem;
|
|
638
651
|
--size-field: 0.1875rem;
|
|
@@ -770,14 +783,15 @@ html {
|
|
|
770
783
|
* SHAPE & DEPTH
|
|
771
784
|
* ============================================ */
|
|
772
785
|
|
|
773
|
-
|
|
774
|
-
--radius-
|
|
775
|
-
--radius-
|
|
776
|
-
--
|
|
777
|
-
--size-
|
|
778
|
-
--
|
|
779
|
-
--
|
|
780
|
-
--
|
|
786
|
+
/* Moonlight: sleek, minimal, slightly angular */
|
|
787
|
+
--radius-selector: 0.125rem;
|
|
788
|
+
--radius-field: 0.375rem;
|
|
789
|
+
--radius-box: 1rem;
|
|
790
|
+
--size-selector: 0.125rem;
|
|
791
|
+
--size-field: 0.125rem;
|
|
792
|
+
--border: 1px;
|
|
793
|
+
--depth: 0.8;
|
|
794
|
+
--noise: 0.6;
|
|
781
795
|
|
|
782
796
|
/* ============================================
|
|
783
797
|
* SURFACE VARIANT
|
|
@@ -799,6 +813,14 @@ html {
|
|
|
799
813
|
|
|
800
814
|
--color-shadow: oklch(0% 0 0);
|
|
801
815
|
--color-scrim: oklch(0% 0 0 / 60%);
|
|
816
|
+
|
|
817
|
+
/* Dark-mode shadows: stronger opacity for depth on dark surfaces */
|
|
818
|
+
--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.15);
|
|
819
|
+
--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.25), 0 1px 2px -1px rgb(0 0 0 / 0.25);
|
|
820
|
+
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.25), 0 2px 4px -2px rgb(0 0 0 / 0.25);
|
|
821
|
+
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.3), 0 4px 6px -4px rgb(0 0 0 / 0.3);
|
|
822
|
+
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.3), 0 8px 10px -6px rgb(0 0 0 / 0.3);
|
|
823
|
+
--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.5);
|
|
802
824
|
}
|
|
803
825
|
|
|
804
826
|
/* System preference: prefers-color-scheme dark */
|
|
@@ -884,14 +906,15 @@ html {
|
|
|
884
906
|
* SHAPE & DEPTH
|
|
885
907
|
* ============================================ */
|
|
886
908
|
|
|
887
|
-
|
|
888
|
-
--radius-
|
|
889
|
-
--radius-
|
|
890
|
-
--
|
|
891
|
-
--size-
|
|
892
|
-
--
|
|
893
|
-
--
|
|
894
|
-
--
|
|
909
|
+
/* Moonlight: sleek, minimal, slightly angular */
|
|
910
|
+
--radius-selector: 0.125rem;
|
|
911
|
+
--radius-field: 0.375rem;
|
|
912
|
+
--radius-box: 1rem;
|
|
913
|
+
--size-selector: 0.125rem;
|
|
914
|
+
--size-field: 0.125rem;
|
|
915
|
+
--border: 1px;
|
|
916
|
+
--depth: 0.8;
|
|
917
|
+
--noise: 0.6;
|
|
895
918
|
|
|
896
919
|
/* Surface Variant */
|
|
897
920
|
--color-surface-variant: oklch(30% 0.02 260);
|
|
@@ -904,6 +927,14 @@ html {
|
|
|
904
927
|
/* Shadow & Scrim */
|
|
905
928
|
--color-shadow: oklch(0% 0 0);
|
|
906
929
|
--color-scrim: oklch(0% 0 0 / 60%);
|
|
930
|
+
|
|
931
|
+
/* Dark-mode shadows */
|
|
932
|
+
--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.15);
|
|
933
|
+
--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.25), 0 1px 2px -1px rgb(0 0 0 / 0.25);
|
|
934
|
+
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.25), 0 2px 4px -2px rgb(0 0 0 / 0.25);
|
|
935
|
+
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.3), 0 4px 6px -4px rgb(0 0 0 / 0.3);
|
|
936
|
+
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.3), 0 8px 10px -6px rgb(0 0 0 / 0.3);
|
|
937
|
+
--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.5);
|
|
907
938
|
}
|
|
908
939
|
}
|
|
909
940
|
|
|
@@ -1023,14 +1054,15 @@ html {
|
|
|
1023
1054
|
* SHAPE & DEPTH
|
|
1024
1055
|
* ============================================ */
|
|
1025
1056
|
|
|
1026
|
-
|
|
1027
|
-
--radius-
|
|
1057
|
+
/* Ocean: smooth, flowing, generous curves */
|
|
1058
|
+
--radius-selector: 0.25rem;
|
|
1059
|
+
--radius-field: 0.75rem;
|
|
1028
1060
|
--radius-box: 1.5rem;
|
|
1029
|
-
--size-selector: 0.
|
|
1030
|
-
--size-field: 0.
|
|
1031
|
-
--border:
|
|
1032
|
-
--depth:
|
|
1033
|
-
--noise: 0.
|
|
1061
|
+
--size-selector: 0.125rem;
|
|
1062
|
+
--size-field: 0.125rem;
|
|
1063
|
+
--border: 1px;
|
|
1064
|
+
--depth: 0.7;
|
|
1065
|
+
--noise: 0.3;
|
|
1034
1066
|
|
|
1035
1067
|
/* ============================================
|
|
1036
1068
|
* SURFACE VARIANT
|
|
@@ -1052,6 +1084,14 @@ html {
|
|
|
1052
1084
|
|
|
1053
1085
|
--color-shadow: oklch(0% 0 0);
|
|
1054
1086
|
--color-scrim: oklch(0% 0 0 / 60%);
|
|
1087
|
+
|
|
1088
|
+
/* Dark-mode shadows: stronger opacity for depth on dark surfaces */
|
|
1089
|
+
--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.15);
|
|
1090
|
+
--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.25), 0 1px 2px -1px rgb(0 0 0 / 0.25);
|
|
1091
|
+
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.25), 0 2px 4px -2px rgb(0 0 0 / 0.25);
|
|
1092
|
+
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.3), 0 4px 6px -4px rgb(0 0 0 / 0.3);
|
|
1093
|
+
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.3), 0 8px 10px -6px rgb(0 0 0 / 0.3);
|
|
1094
|
+
--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.5);
|
|
1055
1095
|
}
|
|
1056
1096
|
|
|
1057
1097
|
/**
|
|
@@ -1315,13 +1355,14 @@ html {
|
|
|
1315
1355
|
* SHAPE & DEPTH
|
|
1316
1356
|
* ============================================ */
|
|
1317
1357
|
|
|
1318
|
-
|
|
1358
|
+
/* Sunset: warm, soft, organic feel */
|
|
1359
|
+
--radius-selector: 0.1875rem;
|
|
1319
1360
|
--radius-field: 0.5rem;
|
|
1320
|
-
--radius-box: 1.
|
|
1361
|
+
--radius-box: 1.25rem;
|
|
1321
1362
|
--size-selector: 0.1875rem;
|
|
1322
1363
|
--size-field: 0.1875rem;
|
|
1323
|
-
--border: 0.
|
|
1324
|
-
--depth:
|
|
1364
|
+
--border: 0.75px;
|
|
1365
|
+
--depth: 0.9;
|
|
1325
1366
|
--noise: 0.7;
|
|
1326
1367
|
|
|
1327
1368
|
/* ============================================
|
|
@@ -1852,12 +1893,12 @@ html {
|
|
|
1852
1893
|
border-radius: 1rem;
|
|
1853
1894
|
background-color: var(--color-surface);
|
|
1854
1895
|
color: var(--color-on-surface);
|
|
1855
|
-
box-shadow:
|
|
1896
|
+
box-shadow: var(--shadow-sm);
|
|
1856
1897
|
transition: box-shadow 150ms ease-in-out, transform 150ms ease-in-out;
|
|
1857
1898
|
}
|
|
1858
1899
|
|
|
1859
1900
|
.card:hover {
|
|
1860
|
-
box-shadow:
|
|
1901
|
+
box-shadow: var(--shadow-md);
|
|
1861
1902
|
}
|
|
1862
1903
|
|
|
1863
1904
|
/* Card Image */
|
|
@@ -2010,11 +2051,11 @@ html {
|
|
|
2010
2051
|
|
|
2011
2052
|
/* Elevated Variants */
|
|
2012
2053
|
.card-elevated {
|
|
2013
|
-
box-shadow:
|
|
2054
|
+
box-shadow: var(--shadow-lg);
|
|
2014
2055
|
}
|
|
2015
2056
|
|
|
2016
2057
|
.card-elevated:hover {
|
|
2017
|
-
box-shadow:
|
|
2058
|
+
box-shadow: var(--shadow-xl);
|
|
2018
2059
|
transform: translateY(-2px);
|
|
2019
2060
|
}
|
|
2020
2061
|
|
|
@@ -3187,7 +3228,7 @@ html {
|
|
|
3187
3228
|
.tabs-boxed .tab[aria-selected="true"] {
|
|
3188
3229
|
background-color: var(--color-surface);
|
|
3189
3230
|
color: var(--color-on-surface);
|
|
3190
|
-
box-shadow:
|
|
3231
|
+
box-shadow: var(--shadow-xs);
|
|
3191
3232
|
}
|
|
3192
3233
|
|
|
3193
3234
|
/* Tabs Lifted */
|
|
@@ -3239,7 +3280,7 @@ html {
|
|
|
3239
3280
|
background-color: var(--color-surface);
|
|
3240
3281
|
border: 1px solid var(--color-outline);
|
|
3241
3282
|
border-radius: 0.5rem;
|
|
3242
|
-
box-shadow:
|
|
3283
|
+
box-shadow: var(--shadow-lg);
|
|
3243
3284
|
opacity: 0;
|
|
3244
3285
|
visibility: hidden;
|
|
3245
3286
|
transform: translateY(-0.5rem);
|
|
@@ -3523,7 +3564,7 @@ html {
|
|
|
3523
3564
|
background-color: var(--color-surface);
|
|
3524
3565
|
color: var(--color-on-surface);
|
|
3525
3566
|
border-radius: 1rem;
|
|
3526
|
-
box-shadow:
|
|
3567
|
+
box-shadow: var(--shadow-2xl);
|
|
3527
3568
|
overflow-y: auto;
|
|
3528
3569
|
transform: scale(0.95);
|
|
3529
3570
|
transition: transform 200ms ease-out;
|
|
@@ -4787,7 +4828,7 @@ html {
|
|
|
4787
4828
|
background-color: var(--color-surface);
|
|
4788
4829
|
border: 1px solid var(--color-outline);
|
|
4789
4830
|
border-radius: 0.5rem;
|
|
4790
|
-
box-shadow:
|
|
4831
|
+
box-shadow: var(--shadow-lg);
|
|
4791
4832
|
overflow-y: auto;
|
|
4792
4833
|
opacity: 0;
|
|
4793
4834
|
visibility: hidden;
|
|
@@ -5133,7 +5174,7 @@ html {
|
|
|
5133
5174
|
background-color: var(--color-surface);
|
|
5134
5175
|
border: 1px solid var(--color-outline-variant);
|
|
5135
5176
|
border-radius: 0.5rem;
|
|
5136
|
-
box-shadow:
|
|
5177
|
+
box-shadow: var(--shadow-md);
|
|
5137
5178
|
overflow: hidden;
|
|
5138
5179
|
}
|
|
5139
5180
|
|
|
@@ -5776,7 +5817,7 @@ html {
|
|
|
5776
5817
|
background-color: var(--color-surface);
|
|
5777
5818
|
border: 1px solid var(--color-outline);
|
|
5778
5819
|
border-radius: 0.75rem;
|
|
5779
|
-
box-shadow:
|
|
5820
|
+
box-shadow: var(--shadow-lg);
|
|
5780
5821
|
opacity: 0;
|
|
5781
5822
|
visibility: hidden;
|
|
5782
5823
|
transform: translateY(-0.5rem);
|
|
@@ -5802,7 +5843,7 @@ html {
|
|
|
5802
5843
|
background-color: var(--color-surface);
|
|
5803
5844
|
border: 1px solid var(--color-outline);
|
|
5804
5845
|
border-radius: 0.75rem;
|
|
5805
|
-
box-shadow:
|
|
5846
|
+
box-shadow: var(--shadow-lg);
|
|
5806
5847
|
}
|
|
5807
5848
|
|
|
5808
5849
|
/* Calendar Header */
|
|
@@ -6688,7 +6729,7 @@ html {
|
|
|
6688
6729
|
}
|
|
6689
6730
|
|
|
6690
6731
|
.file-upload-button:hover {
|
|
6691
|
-
box-shadow:
|
|
6732
|
+
box-shadow: var(--shadow-md);
|
|
6692
6733
|
}
|
|
6693
6734
|
|
|
6694
6735
|
.file-upload-button:focus-visible {
|
|
@@ -6871,7 +6912,7 @@ html {
|
|
|
6871
6912
|
.fieldset-card {
|
|
6872
6913
|
background-color: var(--color-surface);
|
|
6873
6914
|
border-color: transparent;
|
|
6874
|
-
box-shadow:
|
|
6915
|
+
box-shadow: var(--shadow-xs);
|
|
6875
6916
|
padding: 1.5rem;
|
|
6876
6917
|
}
|
|
6877
6918
|
|
|
@@ -7013,6 +7054,13 @@ html {
|
|
|
7013
7054
|
border-color: var(--color-error);
|
|
7014
7055
|
}
|
|
7015
7056
|
|
|
7057
|
+
.form-group-error .input:focus-visible,
|
|
7058
|
+
.form-group-error .select:focus-visible,
|
|
7059
|
+
.form-group-error .textarea:focus-visible {
|
|
7060
|
+
border-color: var(--color-error);
|
|
7061
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
|
|
7062
|
+
}
|
|
7063
|
+
|
|
7016
7064
|
/* Success State on Form Group */
|
|
7017
7065
|
.form-group-success .form-label {
|
|
7018
7066
|
color: var(--color-success);
|
|
@@ -7024,6 +7072,31 @@ html {
|
|
|
7024
7072
|
border-color: var(--color-success);
|
|
7025
7073
|
}
|
|
7026
7074
|
|
|
7075
|
+
.form-group-success .input:focus-visible,
|
|
7076
|
+
.form-group-success .select:focus-visible,
|
|
7077
|
+
.form-group-success .textarea:focus-visible {
|
|
7078
|
+
border-color: var(--color-success);
|
|
7079
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
|
|
7080
|
+
}
|
|
7081
|
+
|
|
7082
|
+
/* Warning State on Form Group */
|
|
7083
|
+
.form-group-warning .form-label {
|
|
7084
|
+
color: var(--color-warning);
|
|
7085
|
+
}
|
|
7086
|
+
|
|
7087
|
+
.form-group-warning .input,
|
|
7088
|
+
.form-group-warning .select,
|
|
7089
|
+
.form-group-warning .textarea {
|
|
7090
|
+
border-color: var(--color-warning);
|
|
7091
|
+
}
|
|
7092
|
+
|
|
7093
|
+
.form-group-warning .input:focus-visible,
|
|
7094
|
+
.form-group-warning .select:focus-visible,
|
|
7095
|
+
.form-group-warning .textarea:focus-visible {
|
|
7096
|
+
border-color: var(--color-warning);
|
|
7097
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
|
|
7098
|
+
}
|
|
7099
|
+
|
|
7027
7100
|
/* Disabled Form Group */
|
|
7028
7101
|
.form-group-disabled {
|
|
7029
7102
|
opacity: 0.5;
|
|
@@ -7224,7 +7297,7 @@ html {
|
|
|
7224
7297
|
background-color: var(--color-surface);
|
|
7225
7298
|
border: 1px solid var(--color-outline-variant);
|
|
7226
7299
|
border-radius: 0.5rem;
|
|
7227
|
-
box-shadow:
|
|
7300
|
+
box-shadow: var(--shadow-md);
|
|
7228
7301
|
overflow: hidden;
|
|
7229
7302
|
}
|
|
7230
7303
|
|
|
@@ -9674,6 +9747,288 @@ html {
|
|
|
9674
9747
|
}
|
|
9675
9748
|
}
|
|
9676
9749
|
|
|
9750
|
+
/**
|
|
9751
|
+
* Theme Controller Component Styles
|
|
9752
|
+
* DuskMoonUI - Two display modes for theme switching:
|
|
9753
|
+
*
|
|
9754
|
+
* 1. Switch (.theme-controller) — inline pill-shaped radio group, all options visible
|
|
9755
|
+
* 2. Dropdown (.theme-controller-dropdown) — <details>/<summary> with floating menu
|
|
9756
|
+
*
|
|
9757
|
+
* Both modes reuse .theme-controller-item (hidden radio) and .theme-controller-label
|
|
9758
|
+
* for CSS-only active state via :checked + label.
|
|
9759
|
+
*/
|
|
9760
|
+
|
|
9761
|
+
@layer components {
|
|
9762
|
+
/* ========================================
|
|
9763
|
+
* SHARED — Radio input & label (used in both modes)
|
|
9764
|
+
* ======================================== */
|
|
9765
|
+
|
|
9766
|
+
/* Hidden Radio Input — visually hidden but accessible */
|
|
9767
|
+
.theme-controller-item {
|
|
9768
|
+
position: absolute;
|
|
9769
|
+
width: 1px;
|
|
9770
|
+
height: 1px;
|
|
9771
|
+
padding: 0;
|
|
9772
|
+
margin: -1px;
|
|
9773
|
+
overflow: hidden;
|
|
9774
|
+
clip: rect(0, 0, 0, 0);
|
|
9775
|
+
white-space: nowrap;
|
|
9776
|
+
border: 0;
|
|
9777
|
+
}
|
|
9778
|
+
|
|
9779
|
+
/* Visible Label — the clickable option */
|
|
9780
|
+
.theme-controller-label {
|
|
9781
|
+
display: inline-flex;
|
|
9782
|
+
align-items: center;
|
|
9783
|
+
justify-content: center;
|
|
9784
|
+
gap: 0.5rem;
|
|
9785
|
+
padding: 0.5rem 1rem;
|
|
9786
|
+
font-size: 0.875rem;
|
|
9787
|
+
font-weight: 500;
|
|
9788
|
+
line-height: 1.25rem;
|
|
9789
|
+
color: var(--color-on-surface-variant);
|
|
9790
|
+
background-color: transparent;
|
|
9791
|
+
border-radius: calc(var(--radius-box, 1.5rem) - 0.25rem);
|
|
9792
|
+
cursor: pointer;
|
|
9793
|
+
transition: background-color 150ms ease-in-out, color 150ms ease-in-out,
|
|
9794
|
+
box-shadow 150ms ease-in-out;
|
|
9795
|
+
user-select: none;
|
|
9796
|
+
white-space: nowrap;
|
|
9797
|
+
}
|
|
9798
|
+
|
|
9799
|
+
/* Hover state */
|
|
9800
|
+
.theme-controller-label:hover {
|
|
9801
|
+
background-color: var(--color-surface-container-high);
|
|
9802
|
+
}
|
|
9803
|
+
|
|
9804
|
+
/* Focus-visible ring on the label when its radio is focused */
|
|
9805
|
+
.theme-controller-item:focus-visible + .theme-controller-label {
|
|
9806
|
+
outline: 2px solid var(--color-primary);
|
|
9807
|
+
outline-offset: 2px;
|
|
9808
|
+
}
|
|
9809
|
+
|
|
9810
|
+
/* Active/checked state */
|
|
9811
|
+
.theme-controller-item:checked + .theme-controller-label {
|
|
9812
|
+
background-color: var(--color-primary-container);
|
|
9813
|
+
color: var(--color-on-primary-container);
|
|
9814
|
+
box-shadow: var(--shadow-xs);
|
|
9815
|
+
}
|
|
9816
|
+
|
|
9817
|
+
.theme-controller-item:checked + .theme-controller-label:hover {
|
|
9818
|
+
background-color: color-mix(in oklch, var(--color-primary-container), black 5%);
|
|
9819
|
+
}
|
|
9820
|
+
|
|
9821
|
+
/* ========================================
|
|
9822
|
+
* SWITCH MODE — inline pill radio group
|
|
9823
|
+
* ======================================== */
|
|
9824
|
+
|
|
9825
|
+
.theme-controller {
|
|
9826
|
+
display: inline-flex;
|
|
9827
|
+
align-items: stretch;
|
|
9828
|
+
background-color: var(--color-surface-container);
|
|
9829
|
+
border: 1px solid var(--color-outline-variant);
|
|
9830
|
+
border-radius: var(--radius-box, 1.5rem);
|
|
9831
|
+
padding: 0.25rem;
|
|
9832
|
+
gap: 0.125rem;
|
|
9833
|
+
}
|
|
9834
|
+
|
|
9835
|
+
/* ── Switch Size Variants ── */
|
|
9836
|
+
|
|
9837
|
+
.theme-controller-sm {
|
|
9838
|
+
padding: 0.125rem;
|
|
9839
|
+
border-radius: calc(var(--radius-box, 1.5rem) * 0.75);
|
|
9840
|
+
}
|
|
9841
|
+
|
|
9842
|
+
.theme-controller-sm .theme-controller-label {
|
|
9843
|
+
padding: 0.375rem 0.75rem;
|
|
9844
|
+
font-size: 0.75rem;
|
|
9845
|
+
line-height: 1rem;
|
|
9846
|
+
border-radius: calc(var(--radius-box, 1.5rem) * 0.75 - 0.125rem);
|
|
9847
|
+
}
|
|
9848
|
+
|
|
9849
|
+
.theme-controller-lg {
|
|
9850
|
+
padding: 0.375rem;
|
|
9851
|
+
gap: 0.25rem;
|
|
9852
|
+
border-radius: calc(var(--radius-box, 1.5rem) * 1.25);
|
|
9853
|
+
}
|
|
9854
|
+
|
|
9855
|
+
.theme-controller-lg .theme-controller-label {
|
|
9856
|
+
padding: 0.75rem 1.5rem;
|
|
9857
|
+
font-size: 1rem;
|
|
9858
|
+
line-height: 1.5rem;
|
|
9859
|
+
border-radius: calc(var(--radius-box, 1.5rem) * 1.25 - 0.375rem);
|
|
9860
|
+
}
|
|
9861
|
+
|
|
9862
|
+
/* ── Switch Icon-only Variant ── */
|
|
9863
|
+
|
|
9864
|
+
.theme-controller-icon .theme-controller-label {
|
|
9865
|
+
padding: 0.5rem;
|
|
9866
|
+
}
|
|
9867
|
+
|
|
9868
|
+
.theme-controller-icon.theme-controller-sm .theme-controller-label {
|
|
9869
|
+
padding: 0.375rem;
|
|
9870
|
+
}
|
|
9871
|
+
|
|
9872
|
+
.theme-controller-icon.theme-controller-lg .theme-controller-label {
|
|
9873
|
+
padding: 0.75rem;
|
|
9874
|
+
}
|
|
9875
|
+
|
|
9876
|
+
/* ========================================
|
|
9877
|
+
* DROPDOWN MODE — <details>/<summary> with floating menu
|
|
9878
|
+
* ======================================== */
|
|
9879
|
+
|
|
9880
|
+
.theme-controller-dropdown {
|
|
9881
|
+
position: relative;
|
|
9882
|
+
display: inline-block;
|
|
9883
|
+
}
|
|
9884
|
+
|
|
9885
|
+
/* Trigger button (<summary>) */
|
|
9886
|
+
.theme-controller-trigger {
|
|
9887
|
+
display: inline-flex;
|
|
9888
|
+
align-items: center;
|
|
9889
|
+
gap: 0.5rem;
|
|
9890
|
+
padding: 0.5rem 0.75rem;
|
|
9891
|
+
font-size: 0.875rem;
|
|
9892
|
+
font-weight: 500;
|
|
9893
|
+
line-height: 1.25rem;
|
|
9894
|
+
color: var(--color-on-surface);
|
|
9895
|
+
background-color: var(--color-surface-container);
|
|
9896
|
+
border: 1px solid var(--color-outline-variant);
|
|
9897
|
+
border-radius: var(--radius-field, 0.5rem);
|
|
9898
|
+
cursor: pointer;
|
|
9899
|
+
user-select: none;
|
|
9900
|
+
transition: background-color 150ms ease-in-out;
|
|
9901
|
+
list-style: none;
|
|
9902
|
+
}
|
|
9903
|
+
|
|
9904
|
+
.theme-controller-trigger::-webkit-details-marker {
|
|
9905
|
+
display: none;
|
|
9906
|
+
}
|
|
9907
|
+
|
|
9908
|
+
.theme-controller-trigger:hover {
|
|
9909
|
+
background-color: var(--color-surface-container-high);
|
|
9910
|
+
}
|
|
9911
|
+
|
|
9912
|
+
.theme-controller-trigger:focus-visible {
|
|
9913
|
+
outline: 2px solid var(--color-primary);
|
|
9914
|
+
outline-offset: 2px;
|
|
9915
|
+
}
|
|
9916
|
+
|
|
9917
|
+
/* Chevron indicator */
|
|
9918
|
+
.theme-controller-trigger::after {
|
|
9919
|
+
content: '';
|
|
9920
|
+
display: inline-block;
|
|
9921
|
+
width: 0.5rem;
|
|
9922
|
+
height: 0.5rem;
|
|
9923
|
+
border-right: 2px solid currentColor;
|
|
9924
|
+
border-bottom: 2px solid currentColor;
|
|
9925
|
+
transform: rotate(45deg);
|
|
9926
|
+
margin-top: -0.125rem;
|
|
9927
|
+
transition: transform 150ms ease-in-out;
|
|
9928
|
+
}
|
|
9929
|
+
|
|
9930
|
+
.theme-controller-dropdown[open] .theme-controller-trigger::after {
|
|
9931
|
+
transform: rotate(-135deg);
|
|
9932
|
+
margin-top: 0.125rem;
|
|
9933
|
+
}
|
|
9934
|
+
|
|
9935
|
+
/* Floating menu */
|
|
9936
|
+
.theme-controller-menu {
|
|
9937
|
+
position: absolute;
|
|
9938
|
+
top: calc(100% + 0.25rem);
|
|
9939
|
+
left: 0;
|
|
9940
|
+
z-index: 50;
|
|
9941
|
+
min-width: 100%;
|
|
9942
|
+
background-color: var(--color-surface-container);
|
|
9943
|
+
border: 1px solid var(--color-outline-variant);
|
|
9944
|
+
border-radius: var(--radius-field, 0.5rem);
|
|
9945
|
+
padding: 0.25rem;
|
|
9946
|
+
box-shadow: var(--shadow-md);
|
|
9947
|
+
display: flex;
|
|
9948
|
+
flex-direction: column;
|
|
9949
|
+
gap: 0.125rem;
|
|
9950
|
+
}
|
|
9951
|
+
|
|
9952
|
+
/* Menu labels are full-width and left-aligned */
|
|
9953
|
+
.theme-controller-menu .theme-controller-label {
|
|
9954
|
+
width: 100%;
|
|
9955
|
+
justify-content: flex-start;
|
|
9956
|
+
border-radius: calc(var(--radius-field, 0.5rem) - 0.25rem);
|
|
9957
|
+
}
|
|
9958
|
+
|
|
9959
|
+
/* ── Dropdown Size Variants ── */
|
|
9960
|
+
|
|
9961
|
+
.theme-controller-dropdown-sm .theme-controller-trigger {
|
|
9962
|
+
padding: 0.375rem 0.625rem;
|
|
9963
|
+
font-size: 0.75rem;
|
|
9964
|
+
line-height: 1rem;
|
|
9965
|
+
}
|
|
9966
|
+
|
|
9967
|
+
.theme-controller-dropdown-sm .theme-controller-menu {
|
|
9968
|
+
padding: 0.125rem;
|
|
9969
|
+
}
|
|
9970
|
+
|
|
9971
|
+
.theme-controller-dropdown-sm .theme-controller-menu .theme-controller-label {
|
|
9972
|
+
padding: 0.375rem 0.75rem;
|
|
9973
|
+
font-size: 0.75rem;
|
|
9974
|
+
line-height: 1rem;
|
|
9975
|
+
}
|
|
9976
|
+
|
|
9977
|
+
.theme-controller-dropdown-lg .theme-controller-trigger {
|
|
9978
|
+
padding: 0.75rem 1rem;
|
|
9979
|
+
font-size: 1rem;
|
|
9980
|
+
line-height: 1.5rem;
|
|
9981
|
+
}
|
|
9982
|
+
|
|
9983
|
+
.theme-controller-dropdown-lg .theme-controller-menu {
|
|
9984
|
+
padding: 0.375rem;
|
|
9985
|
+
}
|
|
9986
|
+
|
|
9987
|
+
.theme-controller-dropdown-lg .theme-controller-menu .theme-controller-label {
|
|
9988
|
+
padding: 0.75rem 1.5rem;
|
|
9989
|
+
font-size: 1rem;
|
|
9990
|
+
line-height: 1.5rem;
|
|
9991
|
+
}
|
|
9992
|
+
|
|
9993
|
+
/* ── Dropdown Icon-only Trigger ── */
|
|
9994
|
+
|
|
9995
|
+
.theme-controller-dropdown-icon .theme-controller-trigger {
|
|
9996
|
+
padding: 0.5rem;
|
|
9997
|
+
}
|
|
9998
|
+
|
|
9999
|
+
/* Hide chevron for icon-only trigger */
|
|
10000
|
+
.theme-controller-dropdown-icon .theme-controller-trigger::after {
|
|
10001
|
+
display: none;
|
|
10002
|
+
}
|
|
10003
|
+
|
|
10004
|
+
.theme-controller-dropdown-icon.theme-controller-dropdown-sm .theme-controller-trigger {
|
|
10005
|
+
padding: 0.375rem;
|
|
10006
|
+
}
|
|
10007
|
+
|
|
10008
|
+
.theme-controller-dropdown-icon.theme-controller-dropdown-lg .theme-controller-trigger {
|
|
10009
|
+
padding: 0.75rem;
|
|
10010
|
+
}
|
|
10011
|
+
|
|
10012
|
+
/* ── Dropdown Alignment ── */
|
|
10013
|
+
|
|
10014
|
+
.theme-controller-dropdown-end .theme-controller-menu {
|
|
10015
|
+
left: auto;
|
|
10016
|
+
right: 0;
|
|
10017
|
+
}
|
|
10018
|
+
|
|
10019
|
+
/* ========================================
|
|
10020
|
+
* REDUCED MOTION
|
|
10021
|
+
* ======================================== */
|
|
10022
|
+
|
|
10023
|
+
@media (prefers-reduced-motion: reduce) {
|
|
10024
|
+
.theme-controller-label,
|
|
10025
|
+
.theme-controller-trigger,
|
|
10026
|
+
.theme-controller-trigger::after {
|
|
10027
|
+
transition: none;
|
|
10028
|
+
}
|
|
10029
|
+
}
|
|
10030
|
+
}
|
|
10031
|
+
|
|
9677
10032
|
/**
|
|
9678
10033
|
* Toggle Button Component Styles
|
|
9679
10034
|
* DuskMoonUI - Material Design 3 inspired toggle button
|
|
@@ -9841,7 +10196,7 @@ html {
|
|
|
9841
10196
|
.toggle-segmented .toggle-btn.active {
|
|
9842
10197
|
background-color: var(--color-surface-variant);
|
|
9843
10198
|
border-color: transparent;
|
|
9844
|
-
box-shadow:
|
|
10199
|
+
box-shadow: var(--shadow-sm);
|
|
9845
10200
|
}
|
|
9846
10201
|
|
|
9847
10202
|
/* Chip-like toggle */
|
|
@@ -10149,7 +10504,7 @@ html {
|
|
|
10149
10504
|
background-color: var(--color-surface);
|
|
10150
10505
|
border: 1px solid var(--color-outline-variant);
|
|
10151
10506
|
border-radius: 0.5rem;
|
|
10152
|
-
box-shadow:
|
|
10507
|
+
box-shadow: var(--shadow-md);
|
|
10153
10508
|
}
|
|
10154
10509
|
|
|
10155
10510
|
.time-picker-dropdown-open {
|
|
@@ -10340,7 +10695,7 @@ html {
|
|
|
10340
10695
|
background-color: var(--color-surface);
|
|
10341
10696
|
border: 1px solid var(--color-outline-variant);
|
|
10342
10697
|
border-radius: 0.5rem;
|
|
10343
|
-
box-shadow:
|
|
10698
|
+
box-shadow: var(--shadow-md);
|
|
10344
10699
|
overflow-y: auto;
|
|
10345
10700
|
}
|
|
10346
10701
|
|
|
@@ -10899,7 +11254,7 @@ html {
|
|
|
10899
11254
|
background-color: var(--color-surface);
|
|
10900
11255
|
color: var(--color-on-surface);
|
|
10901
11256
|
border-radius: 1.5rem;
|
|
10902
|
-
box-shadow:
|
|
11257
|
+
box-shadow: var(--shadow-2xl);
|
|
10903
11258
|
overflow: hidden;
|
|
10904
11259
|
}
|
|
10905
11260
|
|
|
@@ -11577,7 +11932,7 @@ html {
|
|
|
11577
11932
|
background-color: var(--color-surface-container-highest);
|
|
11578
11933
|
color: var(--color-on-surface);
|
|
11579
11934
|
border-radius: 0.5rem;
|
|
11580
|
-
box-shadow:
|
|
11935
|
+
box-shadow: var(--shadow-md);
|
|
11581
11936
|
pointer-events: auto;
|
|
11582
11937
|
opacity: 0;
|
|
11583
11938
|
transform: translateY(100%);
|
|
@@ -11890,7 +12245,7 @@ html {
|
|
|
11890
12245
|
color: var(--color-on-surface);
|
|
11891
12246
|
border: 1px solid var(--color-outline);
|
|
11892
12247
|
border-radius: 0.75rem;
|
|
11893
|
-
box-shadow:
|
|
12248
|
+
box-shadow: var(--shadow-lg);
|
|
11894
12249
|
pointer-events: auto;
|
|
11895
12250
|
opacity: 0;
|
|
11896
12251
|
transform: translateX(100%);
|
|
@@ -12098,7 +12453,7 @@ html {
|
|
|
12098
12453
|
background-color: var(--color-on-surface);
|
|
12099
12454
|
color: var(--color-surface);
|
|
12100
12455
|
border-radius: 0.25rem;
|
|
12101
|
-
box-shadow:
|
|
12456
|
+
box-shadow: var(--shadow-md);
|
|
12102
12457
|
opacity: 0;
|
|
12103
12458
|
visibility: hidden;
|
|
12104
12459
|
transition: opacity 150ms ease-out, visibility 150ms ease-out;
|
|
@@ -12227,7 +12582,7 @@ html {
|
|
|
12227
12582
|
background-color: var(--color-surface);
|
|
12228
12583
|
color: var(--color-on-surface);
|
|
12229
12584
|
border: 1px solid var(--color-outline);
|
|
12230
|
-
box-shadow:
|
|
12585
|
+
box-shadow: var(--shadow-md);
|
|
12231
12586
|
}
|
|
12232
12587
|
|
|
12233
12588
|
.tooltip.tooltip-light .tooltip-content::before {
|
|
@@ -12380,7 +12735,7 @@ html {
|
|
|
12380
12735
|
padding: 0 1rem;
|
|
12381
12736
|
background-color: var(--color-surface);
|
|
12382
12737
|
color: var(--color-on-surface);
|
|
12383
|
-
box-shadow:
|
|
12738
|
+
box-shadow: var(--shadow-sm);
|
|
12384
12739
|
}
|
|
12385
12740
|
|
|
12386
12741
|
/* Static App Bar (default) */
|
|
@@ -12421,7 +12776,7 @@ html {
|
|
|
12421
12776
|
|
|
12422
12777
|
/* App Bar with Shadow (elevated) */
|
|
12423
12778
|
.appbar-elevated {
|
|
12424
|
-
box-shadow:
|
|
12779
|
+
box-shadow: var(--shadow-sm);
|
|
12425
12780
|
}
|
|
12426
12781
|
|
|
12427
12782
|
/* Flat App Bar (no shadow) */
|
|
@@ -13441,7 +13796,7 @@ html {
|
|
|
13441
13796
|
display: flex;
|
|
13442
13797
|
flex-direction: column;
|
|
13443
13798
|
background-color: var(--color-surface-container-low);
|
|
13444
|
-
box-shadow:
|
|
13799
|
+
box-shadow: var(--shadow-2xl);
|
|
13445
13800
|
transition: transform 300ms ease-out;
|
|
13446
13801
|
}
|
|
13447
13802
|
|
|
@@ -13784,6 +14139,268 @@ html {
|
|
|
13784
14139
|
}
|
|
13785
14140
|
}
|
|
13786
14141
|
|
|
14142
|
+
/**
|
|
14143
|
+
* Nested Menu Component Styles
|
|
14144
|
+
* DuskMoonUI - Sidebar navigation with collapsible cascading levels via <details>/<summary>
|
|
14145
|
+
*/
|
|
14146
|
+
|
|
14147
|
+
@layer components {
|
|
14148
|
+
/* ============================================
|
|
14149
|
+
* ROOT CONTAINER
|
|
14150
|
+
* ============================================ */
|
|
14151
|
+
|
|
14152
|
+
.nested-menu {
|
|
14153
|
+
display: flex;
|
|
14154
|
+
flex-direction: column;
|
|
14155
|
+
list-style: none;
|
|
14156
|
+
margin: 0;
|
|
14157
|
+
padding: 0.5rem;
|
|
14158
|
+
gap: 0.125rem;
|
|
14159
|
+
font-size: 0.875rem;
|
|
14160
|
+
color: var(--color-on-surface);
|
|
14161
|
+
}
|
|
14162
|
+
|
|
14163
|
+
/* ============================================
|
|
14164
|
+
* SECTION TITLES
|
|
14165
|
+
* ============================================ */
|
|
14166
|
+
|
|
14167
|
+
.nested-menu-title {
|
|
14168
|
+
padding: 0.75rem 0.75rem 0.25rem;
|
|
14169
|
+
font-size: 0.6875rem;
|
|
14170
|
+
font-weight: 600;
|
|
14171
|
+
text-transform: uppercase;
|
|
14172
|
+
letter-spacing: 0.05em;
|
|
14173
|
+
color: var(--color-on-surface-variant);
|
|
14174
|
+
user-select: none;
|
|
14175
|
+
}
|
|
14176
|
+
|
|
14177
|
+
/* ============================================
|
|
14178
|
+
* MENU ITEMS (links and buttons)
|
|
14179
|
+
* ============================================ */
|
|
14180
|
+
|
|
14181
|
+
.nested-menu li > a,
|
|
14182
|
+
.nested-menu li > button {
|
|
14183
|
+
display: flex;
|
|
14184
|
+
align-items: center;
|
|
14185
|
+
gap: 0.5rem;
|
|
14186
|
+
width: 100%;
|
|
14187
|
+
padding: 0.5rem 0.75rem;
|
|
14188
|
+
font-size: inherit;
|
|
14189
|
+
color: var(--color-on-surface);
|
|
14190
|
+
text-decoration: none;
|
|
14191
|
+
background-color: transparent;
|
|
14192
|
+
border: none;
|
|
14193
|
+
border-radius: var(--radius-field, 0.375rem);
|
|
14194
|
+
cursor: pointer;
|
|
14195
|
+
transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
|
|
14196
|
+
}
|
|
14197
|
+
|
|
14198
|
+
.nested-menu li > a:hover,
|
|
14199
|
+
.nested-menu li > button:hover {
|
|
14200
|
+
background-color: var(--color-surface-container);
|
|
14201
|
+
}
|
|
14202
|
+
|
|
14203
|
+
.nested-menu li > a:focus-visible,
|
|
14204
|
+
.nested-menu li > button:focus-visible {
|
|
14205
|
+
outline: 2px solid var(--color-primary);
|
|
14206
|
+
outline-offset: -2px;
|
|
14207
|
+
}
|
|
14208
|
+
|
|
14209
|
+
/* Active state */
|
|
14210
|
+
.nested-menu li > a.active,
|
|
14211
|
+
.nested-menu li > button.active,
|
|
14212
|
+
.nested-menu li > a[aria-current="page"],
|
|
14213
|
+
.nested-menu li > button[aria-current="page"] {
|
|
14214
|
+
background-color: var(--color-primary-container);
|
|
14215
|
+
color: var(--color-on-primary-container);
|
|
14216
|
+
}
|
|
14217
|
+
|
|
14218
|
+
.nested-menu li > a.active:hover,
|
|
14219
|
+
.nested-menu li > button.active:hover,
|
|
14220
|
+
.nested-menu li > a[aria-current="page"]:hover,
|
|
14221
|
+
.nested-menu li > button[aria-current="page"]:hover {
|
|
14222
|
+
background-color: color-mix(in oklch, var(--color-primary-container), var(--color-on-primary-container) 8%);
|
|
14223
|
+
}
|
|
14224
|
+
|
|
14225
|
+
/* Disabled state */
|
|
14226
|
+
.nested-menu li.disabled {
|
|
14227
|
+
opacity: 0.5;
|
|
14228
|
+
pointer-events: none;
|
|
14229
|
+
}
|
|
14230
|
+
|
|
14231
|
+
/* ============================================
|
|
14232
|
+
* COLLAPSIBLE SUBMENUS (<details>/<summary>)
|
|
14233
|
+
* ============================================ */
|
|
14234
|
+
|
|
14235
|
+
.nested-menu details {
|
|
14236
|
+
width: 100%;
|
|
14237
|
+
}
|
|
14238
|
+
|
|
14239
|
+
/* Remove native marker */
|
|
14240
|
+
.nested-menu summary {
|
|
14241
|
+
display: flex;
|
|
14242
|
+
align-items: center;
|
|
14243
|
+
gap: 0.5rem;
|
|
14244
|
+
width: 100%;
|
|
14245
|
+
padding: 0.5rem 0.75rem;
|
|
14246
|
+
font-size: inherit;
|
|
14247
|
+
color: var(--color-on-surface);
|
|
14248
|
+
background-color: transparent;
|
|
14249
|
+
border: none;
|
|
14250
|
+
border-radius: var(--radius-field, 0.375rem);
|
|
14251
|
+
cursor: pointer;
|
|
14252
|
+
list-style: none;
|
|
14253
|
+
transition: background-color 150ms ease-in-out;
|
|
14254
|
+
}
|
|
14255
|
+
|
|
14256
|
+
.nested-menu summary::-webkit-details-marker {
|
|
14257
|
+
display: none;
|
|
14258
|
+
}
|
|
14259
|
+
|
|
14260
|
+
.nested-menu summary::marker {
|
|
14261
|
+
display: none;
|
|
14262
|
+
content: "";
|
|
14263
|
+
}
|
|
14264
|
+
|
|
14265
|
+
.nested-menu summary:hover {
|
|
14266
|
+
background-color: var(--color-surface-container);
|
|
14267
|
+
}
|
|
14268
|
+
|
|
14269
|
+
.nested-menu summary:focus-visible {
|
|
14270
|
+
outline: 2px solid var(--color-primary);
|
|
14271
|
+
outline-offset: -2px;
|
|
14272
|
+
}
|
|
14273
|
+
|
|
14274
|
+
/* Chevron indicator */
|
|
14275
|
+
.nested-menu summary::after {
|
|
14276
|
+
content: "";
|
|
14277
|
+
display: inline-block;
|
|
14278
|
+
margin-left: auto;
|
|
14279
|
+
width: 0.375rem;
|
|
14280
|
+
height: 0.375rem;
|
|
14281
|
+
border-right: 1.5px solid currentColor;
|
|
14282
|
+
border-bottom: 1.5px solid currentColor;
|
|
14283
|
+
transform: rotate(-45deg);
|
|
14284
|
+
transition: transform 200ms ease-in-out;
|
|
14285
|
+
flex-shrink: 0;
|
|
14286
|
+
opacity: 0.6;
|
|
14287
|
+
}
|
|
14288
|
+
|
|
14289
|
+
.nested-menu details[open] > summary::after {
|
|
14290
|
+
transform: rotate(45deg);
|
|
14291
|
+
}
|
|
14292
|
+
|
|
14293
|
+
/* Nested <ul> inside details — auto-indentation */
|
|
14294
|
+
.nested-menu details > ul {
|
|
14295
|
+
list-style: none;
|
|
14296
|
+
margin: 0;
|
|
14297
|
+
padding: 0.125rem 0 0.125rem 1rem;
|
|
14298
|
+
display: flex;
|
|
14299
|
+
flex-direction: column;
|
|
14300
|
+
gap: 0.125rem;
|
|
14301
|
+
}
|
|
14302
|
+
|
|
14303
|
+
/* ============================================
|
|
14304
|
+
* SIZE VARIANTS
|
|
14305
|
+
* ============================================ */
|
|
14306
|
+
|
|
14307
|
+
.nested-menu-xs {
|
|
14308
|
+
font-size: 0.75rem;
|
|
14309
|
+
padding: 0.25rem;
|
|
14310
|
+
}
|
|
14311
|
+
|
|
14312
|
+
.nested-menu-xs li > a,
|
|
14313
|
+
.nested-menu-xs li > button,
|
|
14314
|
+
.nested-menu-xs summary {
|
|
14315
|
+
padding: 0.25rem 0.5rem;
|
|
14316
|
+
gap: 0.375rem;
|
|
14317
|
+
}
|
|
14318
|
+
|
|
14319
|
+
.nested-menu-xs .nested-menu-title {
|
|
14320
|
+
padding: 0.5rem 0.5rem 0.125rem;
|
|
14321
|
+
font-size: 0.625rem;
|
|
14322
|
+
}
|
|
14323
|
+
|
|
14324
|
+
.nested-menu-sm {
|
|
14325
|
+
font-size: 0.8125rem;
|
|
14326
|
+
padding: 0.375rem;
|
|
14327
|
+
}
|
|
14328
|
+
|
|
14329
|
+
.nested-menu-sm li > a,
|
|
14330
|
+
.nested-menu-sm li > button,
|
|
14331
|
+
.nested-menu-sm summary {
|
|
14332
|
+
padding: 0.375rem 0.625rem;
|
|
14333
|
+
gap: 0.375rem;
|
|
14334
|
+
}
|
|
14335
|
+
|
|
14336
|
+
.nested-menu-sm .nested-menu-title {
|
|
14337
|
+
padding: 0.625rem 0.625rem 0.1875rem;
|
|
14338
|
+
font-size: 0.625rem;
|
|
14339
|
+
}
|
|
14340
|
+
|
|
14341
|
+
.nested-menu-lg {
|
|
14342
|
+
font-size: 1rem;
|
|
14343
|
+
padding: 0.625rem;
|
|
14344
|
+
}
|
|
14345
|
+
|
|
14346
|
+
.nested-menu-lg li > a,
|
|
14347
|
+
.nested-menu-lg li > button,
|
|
14348
|
+
.nested-menu-lg summary {
|
|
14349
|
+
padding: 0.625rem 1rem;
|
|
14350
|
+
gap: 0.625rem;
|
|
14351
|
+
}
|
|
14352
|
+
|
|
14353
|
+
.nested-menu-lg .nested-menu-title {
|
|
14354
|
+
padding: 0.875rem 1rem 0.375rem;
|
|
14355
|
+
font-size: 0.75rem;
|
|
14356
|
+
}
|
|
14357
|
+
|
|
14358
|
+
/* ============================================
|
|
14359
|
+
* MODIFIER VARIANTS
|
|
14360
|
+
* ============================================ */
|
|
14361
|
+
|
|
14362
|
+
/* Bordered — sidebar panel look */
|
|
14363
|
+
.nested-menu-bordered {
|
|
14364
|
+
background-color: var(--color-surface);
|
|
14365
|
+
border: 1px solid var(--color-outline-variant);
|
|
14366
|
+
border-radius: var(--radius-card, 0.75rem);
|
|
14367
|
+
box-shadow: var(--shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));
|
|
14368
|
+
}
|
|
14369
|
+
|
|
14370
|
+
/* Compact — tighter padding throughout */
|
|
14371
|
+
.nested-menu-compact {
|
|
14372
|
+
padding: 0.25rem;
|
|
14373
|
+
gap: 0;
|
|
14374
|
+
}
|
|
14375
|
+
|
|
14376
|
+
.nested-menu-compact li > a,
|
|
14377
|
+
.nested-menu-compact li > button,
|
|
14378
|
+
.nested-menu-compact summary {
|
|
14379
|
+
padding: 0.3125rem 0.625rem;
|
|
14380
|
+
}
|
|
14381
|
+
|
|
14382
|
+
.nested-menu-compact .nested-menu-title {
|
|
14383
|
+
padding: 0.5rem 0.625rem 0.125rem;
|
|
14384
|
+
}
|
|
14385
|
+
|
|
14386
|
+
.nested-menu-compact details > ul {
|
|
14387
|
+
padding: 0 0 0 0.75rem;
|
|
14388
|
+
}
|
|
14389
|
+
|
|
14390
|
+
/* ============================================
|
|
14391
|
+
* REDUCED MOTION
|
|
14392
|
+
* ============================================ */
|
|
14393
|
+
|
|
14394
|
+
@media (prefers-reduced-motion: reduce) {
|
|
14395
|
+
.nested-menu li > a,
|
|
14396
|
+
.nested-menu li > button,
|
|
14397
|
+
.nested-menu summary,
|
|
14398
|
+
.nested-menu summary::after {
|
|
14399
|
+
transition: none;
|
|
14400
|
+
}
|
|
14401
|
+
}
|
|
14402
|
+
}
|
|
14403
|
+
|
|
13787
14404
|
/**
|
|
13788
14405
|
* Stepper Component Styles
|
|
13789
14406
|
* DuskMoonUI - Material Design 3 inspired stepper/wizard system
|
|
@@ -14841,7 +15458,7 @@ html {
|
|
|
14841
15458
|
border: 1px solid var(--color-outline-variant);
|
|
14842
15459
|
border-radius: 0.75rem;
|
|
14843
15460
|
overflow: hidden;
|
|
14844
|
-
box-shadow:
|
|
15461
|
+
box-shadow: var(--shadow-sm);
|
|
14845
15462
|
}
|
|
14846
15463
|
|
|
14847
15464
|
.collapse-card .collapse-toggle,
|
|
@@ -15144,8 +15761,8 @@ html {
|
|
|
15144
15761
|
*/
|
|
15145
15762
|
|
|
15146
15763
|
@layer components {
|
|
15147
|
-
/* Popover Container */
|
|
15148
|
-
.popover {
|
|
15764
|
+
/* Popover Container (class-based approach only, not native [popover]) */
|
|
15765
|
+
.popover:not([popover]) {
|
|
15149
15766
|
position: relative;
|
|
15150
15767
|
display: inline-block;
|
|
15151
15768
|
}
|
|
@@ -15160,7 +15777,7 @@ html {
|
|
|
15160
15777
|
background-color: var(--color-surface);
|
|
15161
15778
|
border: 1px solid var(--color-outline-variant);
|
|
15162
15779
|
border-radius: 0.75rem;
|
|
15163
|
-
box-shadow:
|
|
15780
|
+
box-shadow: var(--shadow-lg);
|
|
15164
15781
|
opacity: 0;
|
|
15165
15782
|
visibility: hidden;
|
|
15166
15783
|
transform: scale(0.95);
|
|
@@ -15195,7 +15812,7 @@ html {
|
|
|
15195
15812
|
background-color: var(--color-surface);
|
|
15196
15813
|
border: 1px solid var(--color-outline-variant);
|
|
15197
15814
|
border-radius: 0.75rem;
|
|
15198
|
-
box-shadow:
|
|
15815
|
+
box-shadow: var(--shadow-lg);
|
|
15199
15816
|
opacity: 0;
|
|
15200
15817
|
visibility: hidden;
|
|
15201
15818
|
transition: opacity 150ms ease-out, visibility 150ms ease-out;
|
|
@@ -15649,7 +16266,7 @@ html {
|
|
|
15649
16266
|
background-color: var(--color-surface);
|
|
15650
16267
|
border: 1px solid var(--color-outline-variant);
|
|
15651
16268
|
border-radius: 0.75rem;
|
|
15652
|
-
box-shadow:
|
|
16269
|
+
box-shadow: var(--shadow-lg);
|
|
15653
16270
|
opacity: 0;
|
|
15654
16271
|
transform: scale(0.95);
|
|
15655
16272
|
transition: opacity 150ms ease-out, transform 150ms ease-out, overlay 150ms ease-out allow-discrete, display 150ms ease-out allow-discrete;
|
|
@@ -15791,53 +16408,65 @@ html {
|
|
|
15791
16408
|
style="anchor-name: --my-popover" */
|
|
15792
16409
|
}
|
|
15793
16410
|
|
|
15794
|
-
/* Anchored popover positioning
|
|
16411
|
+
/* Anchored popover positioning
|
|
16412
|
+
* Uses anchor() functions instead of position-area to avoid
|
|
16413
|
+
* a Chrome rendering bug at HiDPI (DPR>=2) where position-area
|
|
16414
|
+
* computes correct CSS-pixel offsets but renders at physical-pixel
|
|
16415
|
+
* coordinates, doubling the distance from the anchor. */
|
|
15795
16416
|
.popover[popover][style*="position-anchor"] {
|
|
15796
|
-
|
|
15797
|
-
|
|
16417
|
+
inset: unset;
|
|
16418
|
+
top: anchor(bottom);
|
|
16419
|
+
justify-self: anchor-center;
|
|
15798
16420
|
margin-top: 0.5rem;
|
|
15799
16421
|
}
|
|
15800
16422
|
|
|
15801
16423
|
/* Position variants for anchored popovers */
|
|
15802
16424
|
.popover-top[popover][style*="position-anchor"] {
|
|
15803
|
-
|
|
16425
|
+
top: unset;
|
|
16426
|
+
bottom: anchor(top);
|
|
15804
16427
|
margin-top: 0;
|
|
15805
16428
|
margin-bottom: 0.5rem;
|
|
15806
16429
|
}
|
|
15807
16430
|
|
|
15808
16431
|
.popover-bottom[popover][style*="position-anchor"] {
|
|
15809
|
-
|
|
16432
|
+
top: anchor(bottom);
|
|
15810
16433
|
margin-top: 0.5rem;
|
|
15811
16434
|
margin-bottom: 0;
|
|
15812
16435
|
}
|
|
15813
16436
|
|
|
15814
16437
|
.popover-left[popover][style*="position-anchor"] {
|
|
15815
|
-
|
|
16438
|
+
top: anchor(center);
|
|
16439
|
+
right: anchor(left);
|
|
16440
|
+
justify-self: unset;
|
|
16441
|
+
translate: 0 -50%;
|
|
15816
16442
|
margin-top: 0;
|
|
15817
16443
|
margin-right: 0.5rem;
|
|
15818
16444
|
}
|
|
15819
16445
|
|
|
15820
16446
|
.popover-right[popover][style*="position-anchor"] {
|
|
15821
|
-
|
|
16447
|
+
top: anchor(center);
|
|
16448
|
+
left: anchor(right);
|
|
16449
|
+
justify-self: unset;
|
|
16450
|
+
translate: 0 -50%;
|
|
15822
16451
|
margin-top: 0;
|
|
15823
16452
|
margin-left: 0.5rem;
|
|
15824
16453
|
}
|
|
15825
16454
|
|
|
15826
16455
|
/* Anchored popover alignment variants */
|
|
15827
16456
|
.popover-start[popover][style*="position-anchor"] {
|
|
15828
|
-
|
|
16457
|
+
justify-self: start;
|
|
15829
16458
|
}
|
|
15830
16459
|
|
|
15831
16460
|
.popover-end[popover][style*="position-anchor"] {
|
|
15832
|
-
|
|
16461
|
+
justify-self: end;
|
|
15833
16462
|
}
|
|
15834
16463
|
|
|
15835
16464
|
.popover-top.popover-start[popover][style*="position-anchor"] {
|
|
15836
|
-
|
|
16465
|
+
justify-self: start;
|
|
15837
16466
|
}
|
|
15838
16467
|
|
|
15839
16468
|
.popover-top.popover-end[popover][style*="position-anchor"] {
|
|
15840
|
-
|
|
16469
|
+
justify-self: end;
|
|
15841
16470
|
}
|
|
15842
16471
|
|
|
15843
16472
|
/* Reduce Motion */
|