@duskmoon-dev/core 1.9.0 → 1.10.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/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 +349 -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/time-input.css +1 -1
- package/dist/components/toast.css +1 -1
- 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/time-input.js +1 -1
- package/dist/esm/components/toast.js +1 -1
- package/dist/esm/components/tooltip.js +2 -2
- package/dist/esm/components/tree-select.js +1 -1
- package/dist/index.css +421 -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/package.json +1 -1
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nested Menu Component Styles
|
|
3
|
+
* DuskMoonUI - Sidebar navigation with collapsible cascading levels via <details>/<summary>
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
@layer components {
|
|
7
|
+
/* ============================================
|
|
8
|
+
* ROOT CONTAINER
|
|
9
|
+
* ============================================ */
|
|
10
|
+
|
|
11
|
+
.nested-menu {
|
|
12
|
+
display: flex;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
list-style: none;
|
|
15
|
+
margin: 0;
|
|
16
|
+
padding: 0.5rem;
|
|
17
|
+
gap: 0.125rem;
|
|
18
|
+
font-size: 0.875rem;
|
|
19
|
+
color: var(--color-on-surface);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* ============================================
|
|
23
|
+
* SECTION TITLES
|
|
24
|
+
* ============================================ */
|
|
25
|
+
|
|
26
|
+
.nested-menu-title {
|
|
27
|
+
padding: 0.75rem 0.75rem 0.25rem;
|
|
28
|
+
font-size: 0.6875rem;
|
|
29
|
+
font-weight: 600;
|
|
30
|
+
text-transform: uppercase;
|
|
31
|
+
letter-spacing: 0.05em;
|
|
32
|
+
color: var(--color-on-surface-variant);
|
|
33
|
+
user-select: none;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* ============================================
|
|
37
|
+
* MENU ITEMS (links and buttons)
|
|
38
|
+
* ============================================ */
|
|
39
|
+
|
|
40
|
+
.nested-menu li > a,
|
|
41
|
+
.nested-menu li > button {
|
|
42
|
+
display: flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
gap: 0.5rem;
|
|
45
|
+
width: 100%;
|
|
46
|
+
padding: 0.5rem 0.75rem;
|
|
47
|
+
font-size: inherit;
|
|
48
|
+
color: var(--color-on-surface);
|
|
49
|
+
text-decoration: none;
|
|
50
|
+
background-color: transparent;
|
|
51
|
+
border: none;
|
|
52
|
+
border-radius: var(--radius-field, 0.375rem);
|
|
53
|
+
cursor: pointer;
|
|
54
|
+
transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.nested-menu li > a:hover,
|
|
58
|
+
.nested-menu li > button:hover {
|
|
59
|
+
background-color: var(--color-surface-container);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.nested-menu li > a:focus-visible,
|
|
63
|
+
.nested-menu li > button:focus-visible {
|
|
64
|
+
outline: 2px solid var(--color-primary);
|
|
65
|
+
outline-offset: -2px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* Active state */
|
|
69
|
+
.nested-menu li > a.active,
|
|
70
|
+
.nested-menu li > button.active,
|
|
71
|
+
.nested-menu li > a[aria-current="page"],
|
|
72
|
+
.nested-menu li > button[aria-current="page"] {
|
|
73
|
+
background-color: var(--color-primary-container);
|
|
74
|
+
color: var(--color-on-primary-container);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.nested-menu li > a.active:hover,
|
|
78
|
+
.nested-menu li > button.active:hover,
|
|
79
|
+
.nested-menu li > a[aria-current="page"]:hover,
|
|
80
|
+
.nested-menu li > button[aria-current="page"]:hover {
|
|
81
|
+
background-color: color-mix(in oklch, var(--color-primary-container), var(--color-on-primary-container) 8%);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Disabled state */
|
|
85
|
+
.nested-menu li.disabled {
|
|
86
|
+
opacity: 0.5;
|
|
87
|
+
pointer-events: none;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* ============================================
|
|
91
|
+
* COLLAPSIBLE SUBMENUS (<details>/<summary>)
|
|
92
|
+
* ============================================ */
|
|
93
|
+
|
|
94
|
+
.nested-menu details {
|
|
95
|
+
width: 100%;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* Remove native marker */
|
|
99
|
+
.nested-menu summary {
|
|
100
|
+
display: flex;
|
|
101
|
+
align-items: center;
|
|
102
|
+
gap: 0.5rem;
|
|
103
|
+
width: 100%;
|
|
104
|
+
padding: 0.5rem 0.75rem;
|
|
105
|
+
font-size: inherit;
|
|
106
|
+
color: var(--color-on-surface);
|
|
107
|
+
background-color: transparent;
|
|
108
|
+
border: none;
|
|
109
|
+
border-radius: var(--radius-field, 0.375rem);
|
|
110
|
+
cursor: pointer;
|
|
111
|
+
list-style: none;
|
|
112
|
+
transition: background-color 150ms ease-in-out;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.nested-menu summary::-webkit-details-marker {
|
|
116
|
+
display: none;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.nested-menu summary::marker {
|
|
120
|
+
display: none;
|
|
121
|
+
content: "";
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.nested-menu summary:hover {
|
|
125
|
+
background-color: var(--color-surface-container);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.nested-menu summary:focus-visible {
|
|
129
|
+
outline: 2px solid var(--color-primary);
|
|
130
|
+
outline-offset: -2px;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* Chevron indicator */
|
|
134
|
+
.nested-menu summary::after {
|
|
135
|
+
content: "";
|
|
136
|
+
display: inline-block;
|
|
137
|
+
margin-left: auto;
|
|
138
|
+
width: 0.375rem;
|
|
139
|
+
height: 0.375rem;
|
|
140
|
+
border-right: 1.5px solid currentColor;
|
|
141
|
+
border-bottom: 1.5px solid currentColor;
|
|
142
|
+
transform: rotate(-45deg);
|
|
143
|
+
transition: transform 200ms ease-in-out;
|
|
144
|
+
flex-shrink: 0;
|
|
145
|
+
opacity: 0.6;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.nested-menu details[open] > summary::after {
|
|
149
|
+
transform: rotate(45deg);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* Nested <ul> inside details — auto-indentation */
|
|
153
|
+
.nested-menu details > ul {
|
|
154
|
+
list-style: none;
|
|
155
|
+
margin: 0;
|
|
156
|
+
padding: 0.125rem 0 0.125rem 1rem;
|
|
157
|
+
display: flex;
|
|
158
|
+
flex-direction: column;
|
|
159
|
+
gap: 0.125rem;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* ============================================
|
|
163
|
+
* SIZE VARIANTS
|
|
164
|
+
* ============================================ */
|
|
165
|
+
|
|
166
|
+
.nested-menu-xs {
|
|
167
|
+
font-size: 0.75rem;
|
|
168
|
+
padding: 0.25rem;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.nested-menu-xs li > a,
|
|
172
|
+
.nested-menu-xs li > button,
|
|
173
|
+
.nested-menu-xs summary {
|
|
174
|
+
padding: 0.25rem 0.5rem;
|
|
175
|
+
gap: 0.375rem;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.nested-menu-xs .nested-menu-title {
|
|
179
|
+
padding: 0.5rem 0.5rem 0.125rem;
|
|
180
|
+
font-size: 0.625rem;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.nested-menu-sm {
|
|
184
|
+
font-size: 0.8125rem;
|
|
185
|
+
padding: 0.375rem;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.nested-menu-sm li > a,
|
|
189
|
+
.nested-menu-sm li > button,
|
|
190
|
+
.nested-menu-sm summary {
|
|
191
|
+
padding: 0.375rem 0.625rem;
|
|
192
|
+
gap: 0.375rem;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.nested-menu-sm .nested-menu-title {
|
|
196
|
+
padding: 0.625rem 0.625rem 0.1875rem;
|
|
197
|
+
font-size: 0.625rem;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.nested-menu-lg {
|
|
201
|
+
font-size: 1rem;
|
|
202
|
+
padding: 0.625rem;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.nested-menu-lg li > a,
|
|
206
|
+
.nested-menu-lg li > button,
|
|
207
|
+
.nested-menu-lg summary {
|
|
208
|
+
padding: 0.625rem 1rem;
|
|
209
|
+
gap: 0.625rem;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.nested-menu-lg .nested-menu-title {
|
|
213
|
+
padding: 0.875rem 1rem 0.375rem;
|
|
214
|
+
font-size: 0.75rem;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/* ============================================
|
|
218
|
+
* MODIFIER VARIANTS
|
|
219
|
+
* ============================================ */
|
|
220
|
+
|
|
221
|
+
/* Bordered — sidebar panel look */
|
|
222
|
+
.nested-menu-bordered {
|
|
223
|
+
background-color: var(--color-surface);
|
|
224
|
+
border: 1px solid var(--color-outline-variant);
|
|
225
|
+
border-radius: var(--radius-card, 0.75rem);
|
|
226
|
+
box-shadow: var(--shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/* Compact — tighter padding throughout */
|
|
230
|
+
.nested-menu-compact {
|
|
231
|
+
padding: 0.25rem;
|
|
232
|
+
gap: 0;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.nested-menu-compact li > a,
|
|
236
|
+
.nested-menu-compact li > button,
|
|
237
|
+
.nested-menu-compact summary {
|
|
238
|
+
padding: 0.3125rem 0.625rem;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.nested-menu-compact .nested-menu-title {
|
|
242
|
+
padding: 0.5rem 0.625rem 0.125rem;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.nested-menu-compact details > ul {
|
|
246
|
+
padding: 0 0 0 0.75rem;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/* ============================================
|
|
250
|
+
* REDUCED MOTION
|
|
251
|
+
* ============================================ */
|
|
252
|
+
|
|
253
|
+
@media (prefers-reduced-motion: reduce) {
|
|
254
|
+
.nested-menu li > a,
|
|
255
|
+
.nested-menu li > button,
|
|
256
|
+
.nested-menu summary,
|
|
257
|
+
.nested-menu summary::after {
|
|
258
|
+
transition: none;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
@layer components {
|
|
7
|
-
/* Popover Container */
|
|
8
|
-
.popover {
|
|
7
|
+
/* Popover Container (class-based approach only, not native [popover]) */
|
|
8
|
+
.popover:not([popover]) {
|
|
9
9
|
position: relative;
|
|
10
10
|
display: inline-block;
|
|
11
11
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
background-color: var(--color-surface);
|
|
21
21
|
border: 1px solid var(--color-outline-variant);
|
|
22
22
|
border-radius: 0.75rem;
|
|
23
|
-
box-shadow:
|
|
23
|
+
box-shadow: var(--shadow-lg);
|
|
24
24
|
opacity: 0;
|
|
25
25
|
visibility: hidden;
|
|
26
26
|
transform: scale(0.95);
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
background-color: var(--color-surface);
|
|
56
56
|
border: 1px solid var(--color-outline-variant);
|
|
57
57
|
border-radius: 0.75rem;
|
|
58
|
-
box-shadow:
|
|
58
|
+
box-shadow: var(--shadow-lg);
|
|
59
59
|
opacity: 0;
|
|
60
60
|
visibility: hidden;
|
|
61
61
|
transition: opacity 150ms ease-out, visibility 150ms ease-out;
|
|
@@ -509,7 +509,7 @@
|
|
|
509
509
|
background-color: var(--color-surface);
|
|
510
510
|
border: 1px solid var(--color-outline-variant);
|
|
511
511
|
border-radius: 0.75rem;
|
|
512
|
-
box-shadow:
|
|
512
|
+
box-shadow: var(--shadow-lg);
|
|
513
513
|
opacity: 0;
|
|
514
514
|
transform: scale(0.95);
|
|
515
515
|
transition: opacity 150ms ease-out, transform 150ms ease-out, overlay 150ms ease-out allow-discrete, display 150ms ease-out allow-discrete;
|
|
@@ -651,53 +651,65 @@
|
|
|
651
651
|
style="anchor-name: --my-popover" */
|
|
652
652
|
}
|
|
653
653
|
|
|
654
|
-
/* Anchored popover positioning
|
|
654
|
+
/* Anchored popover positioning
|
|
655
|
+
* Uses anchor() functions instead of position-area to avoid
|
|
656
|
+
* a Chrome rendering bug at HiDPI (DPR>=2) where position-area
|
|
657
|
+
* computes correct CSS-pixel offsets but renders at physical-pixel
|
|
658
|
+
* coordinates, doubling the distance from the anchor. */
|
|
655
659
|
.popover[popover][style*="position-anchor"] {
|
|
656
|
-
|
|
657
|
-
|
|
660
|
+
inset: unset;
|
|
661
|
+
top: anchor(bottom);
|
|
662
|
+
justify-self: anchor-center;
|
|
658
663
|
margin-top: 0.5rem;
|
|
659
664
|
}
|
|
660
665
|
|
|
661
666
|
/* Position variants for anchored popovers */
|
|
662
667
|
.popover-top[popover][style*="position-anchor"] {
|
|
663
|
-
|
|
668
|
+
top: unset;
|
|
669
|
+
bottom: anchor(top);
|
|
664
670
|
margin-top: 0;
|
|
665
671
|
margin-bottom: 0.5rem;
|
|
666
672
|
}
|
|
667
673
|
|
|
668
674
|
.popover-bottom[popover][style*="position-anchor"] {
|
|
669
|
-
|
|
675
|
+
top: anchor(bottom);
|
|
670
676
|
margin-top: 0.5rem;
|
|
671
677
|
margin-bottom: 0;
|
|
672
678
|
}
|
|
673
679
|
|
|
674
680
|
.popover-left[popover][style*="position-anchor"] {
|
|
675
|
-
|
|
681
|
+
top: anchor(center);
|
|
682
|
+
right: anchor(left);
|
|
683
|
+
justify-self: unset;
|
|
684
|
+
translate: 0 -50%;
|
|
676
685
|
margin-top: 0;
|
|
677
686
|
margin-right: 0.5rem;
|
|
678
687
|
}
|
|
679
688
|
|
|
680
689
|
.popover-right[popover][style*="position-anchor"] {
|
|
681
|
-
|
|
690
|
+
top: anchor(center);
|
|
691
|
+
left: anchor(right);
|
|
692
|
+
justify-self: unset;
|
|
693
|
+
translate: 0 -50%;
|
|
682
694
|
margin-top: 0;
|
|
683
695
|
margin-left: 0.5rem;
|
|
684
696
|
}
|
|
685
697
|
|
|
686
698
|
/* Anchored popover alignment variants */
|
|
687
699
|
.popover-start[popover][style*="position-anchor"] {
|
|
688
|
-
|
|
700
|
+
justify-self: start;
|
|
689
701
|
}
|
|
690
702
|
|
|
691
703
|
.popover-end[popover][style*="position-anchor"] {
|
|
692
|
-
|
|
704
|
+
justify-self: end;
|
|
693
705
|
}
|
|
694
706
|
|
|
695
707
|
.popover-top.popover-start[popover][style*="position-anchor"] {
|
|
696
|
-
|
|
708
|
+
justify-self: start;
|
|
697
709
|
}
|
|
698
710
|
|
|
699
711
|
.popover-top.popover-end[popover][style*="position-anchor"] {
|
|
700
|
-
|
|
712
|
+
justify-self: end;
|
|
701
713
|
}
|
|
702
714
|
|
|
703
715
|
/* Reduce Motion */
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
background-color: var(--color-surface-container-highest);
|
|
66
66
|
color: var(--color-on-surface);
|
|
67
67
|
border-radius: 0.5rem;
|
|
68
|
-
box-shadow:
|
|
68
|
+
box-shadow: var(--shadow-md);
|
|
69
69
|
pointer-events: auto;
|
|
70
70
|
opacity: 0;
|
|
71
71
|
transform: translateY(100%);
|
|
@@ -198,7 +198,7 @@
|
|
|
198
198
|
background-color: var(--color-surface);
|
|
199
199
|
border: 1px solid var(--color-outline-variant);
|
|
200
200
|
border-radius: 0.5rem;
|
|
201
|
-
box-shadow:
|
|
201
|
+
box-shadow: var(--shadow-md);
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
.time-picker-dropdown-open {
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
color: var(--color-on-surface);
|
|
67
67
|
border: 1px solid var(--color-outline);
|
|
68
68
|
border-radius: 0.75rem;
|
|
69
|
-
box-shadow:
|
|
69
|
+
box-shadow: var(--shadow-lg);
|
|
70
70
|
pointer-events: auto;
|
|
71
71
|
opacity: 0;
|
|
72
72
|
transform: translateX(100%);
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
background-color: var(--color-on-surface);
|
|
23
23
|
color: var(--color-surface);
|
|
24
24
|
border-radius: 0.25rem;
|
|
25
|
-
box-shadow:
|
|
25
|
+
box-shadow: var(--shadow-md);
|
|
26
26
|
opacity: 0;
|
|
27
27
|
visibility: hidden;
|
|
28
28
|
transition: opacity 150ms ease-out, visibility 150ms ease-out;
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
background-color: var(--color-surface);
|
|
152
152
|
color: var(--color-on-surface);
|
|
153
153
|
border: 1px solid var(--color-outline);
|
|
154
|
-
box-shadow:
|
|
154
|
+
box-shadow: var(--shadow-md);
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
.tooltip.tooltip-light .tooltip-content::before {
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
background-color: var(--color-surface);
|
|
137
137
|
border: 1px solid var(--color-outline-variant);
|
|
138
138
|
border-radius: 0.5rem;
|
|
139
|
-
box-shadow:
|
|
139
|
+
box-shadow: var(--shadow-md);
|
|
140
140
|
overflow-y: auto;
|
|
141
141
|
}
|
|
142
142
|
|
|
@@ -15,7 +15,7 @@ export const css = `/**
|
|
|
15
15
|
padding: 0 1rem;
|
|
16
16
|
background-color: var(--color-surface);
|
|
17
17
|
color: var(--color-on-surface);
|
|
18
|
-
box-shadow:
|
|
18
|
+
box-shadow: var(--shadow-sm);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
/* Static App Bar (default) */
|
|
@@ -56,7 +56,7 @@ export const css = `/**
|
|
|
56
56
|
|
|
57
57
|
/* App Bar with Shadow (elevated) */
|
|
58
58
|
.appbar-elevated {
|
|
59
|
-
box-shadow:
|
|
59
|
+
box-shadow: var(--shadow-sm);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
/* Flat App Bar (no shadow) */
|
|
@@ -50,7 +50,7 @@ export const css = `/**
|
|
|
50
50
|
background-color: var(--color-surface);
|
|
51
51
|
border: 1px solid var(--color-outline);
|
|
52
52
|
border-radius: 0.5rem;
|
|
53
|
-
box-shadow:
|
|
53
|
+
box-shadow: var(--shadow-lg);
|
|
54
54
|
overflow-y: auto;
|
|
55
55
|
opacity: 0;
|
|
56
56
|
visibility: hidden;
|
|
@@ -14,12 +14,12 @@ export const css = `/**
|
|
|
14
14
|
border-radius: 1rem;
|
|
15
15
|
background-color: var(--color-surface);
|
|
16
16
|
color: var(--color-on-surface);
|
|
17
|
-
box-shadow:
|
|
17
|
+
box-shadow: var(--shadow-sm);
|
|
18
18
|
transition: box-shadow 150ms ease-in-out, transform 150ms ease-in-out;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
.card:hover {
|
|
22
|
-
box-shadow:
|
|
22
|
+
box-shadow: var(--shadow-md);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
/* Card Image */
|
|
@@ -172,11 +172,11 @@ export const css = `/**
|
|
|
172
172
|
|
|
173
173
|
/* Elevated Variants */
|
|
174
174
|
.card-elevated {
|
|
175
|
-
box-shadow:
|
|
175
|
+
box-shadow: var(--shadow-lg);
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
.card-elevated:hover {
|
|
179
|
-
box-shadow:
|
|
179
|
+
box-shadow: var(--shadow-xl);
|
|
180
180
|
transform: translateY(-2px);
|
|
181
181
|
}
|
|
182
182
|
|
|
@@ -126,7 +126,7 @@ export const css = `/**
|
|
|
126
126
|
background-color: var(--color-surface);
|
|
127
127
|
border: 1px solid var(--color-outline-variant);
|
|
128
128
|
border-radius: 0.5rem;
|
|
129
|
-
box-shadow:
|
|
129
|
+
box-shadow: var(--shadow-md);
|
|
130
130
|
overflow: hidden;
|
|
131
131
|
}
|
|
132
132
|
|
|
@@ -157,7 +157,7 @@ export const css = `/**
|
|
|
157
157
|
border: 1px solid var(--color-outline-variant);
|
|
158
158
|
border-radius: 0.75rem;
|
|
159
159
|
overflow: hidden;
|
|
160
|
-
box-shadow:
|
|
160
|
+
box-shadow: var(--shadow-sm);
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
.collapse-card .collapse-toggle,
|
|
@@ -117,7 +117,7 @@ export const css = `/**
|
|
|
117
117
|
background-color: var(--color-surface);
|
|
118
118
|
border: 1px solid var(--color-outline);
|
|
119
119
|
border-radius: 0.75rem;
|
|
120
|
-
box-shadow:
|
|
120
|
+
box-shadow: var(--shadow-lg);
|
|
121
121
|
opacity: 0;
|
|
122
122
|
visibility: hidden;
|
|
123
123
|
transform: translateY(-0.5rem);
|
|
@@ -143,7 +143,7 @@ export const css = `/**
|
|
|
143
143
|
background-color: var(--color-surface);
|
|
144
144
|
border: 1px solid var(--color-outline);
|
|
145
145
|
border-radius: 0.75rem;
|
|
146
|
-
box-shadow:
|
|
146
|
+
box-shadow: var(--shadow-lg);
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
/* Calendar Header */
|
|
@@ -28,7 +28,7 @@ export const css = `/**
|
|
|
28
28
|
display: flex;
|
|
29
29
|
flex-direction: column;
|
|
30
30
|
background-color: var(--color-surface-container-low);
|
|
31
|
-
box-shadow:
|
|
31
|
+
box-shadow: var(--shadow-2xl);
|
|
32
32
|
transition: transform 300ms ease-out;
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -148,7 +148,7 @@ export const css = `/**
|
|
|
148
148
|
.fieldset-card {
|
|
149
149
|
background-color: var(--color-surface);
|
|
150
150
|
border-color: transparent;
|
|
151
|
-
box-shadow:
|
|
151
|
+
box-shadow: var(--shadow-xs);
|
|
152
152
|
padding: 1.5rem;
|
|
153
153
|
}
|
|
154
154
|
|
|
@@ -290,6 +290,13 @@ export const css = `/**
|
|
|
290
290
|
border-color: var(--color-error);
|
|
291
291
|
}
|
|
292
292
|
|
|
293
|
+
.form-group-error .input:focus-visible,
|
|
294
|
+
.form-group-error .select:focus-visible,
|
|
295
|
+
.form-group-error .textarea:focus-visible {
|
|
296
|
+
border-color: var(--color-error);
|
|
297
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
|
|
298
|
+
}
|
|
299
|
+
|
|
293
300
|
/* Success State on Form Group */
|
|
294
301
|
.form-group-success .form-label {
|
|
295
302
|
color: var(--color-success);
|
|
@@ -301,6 +308,31 @@ export const css = `/**
|
|
|
301
308
|
border-color: var(--color-success);
|
|
302
309
|
}
|
|
303
310
|
|
|
311
|
+
.form-group-success .input:focus-visible,
|
|
312
|
+
.form-group-success .select:focus-visible,
|
|
313
|
+
.form-group-success .textarea:focus-visible {
|
|
314
|
+
border-color: var(--color-success);
|
|
315
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/* Warning State on Form Group */
|
|
319
|
+
.form-group-warning .form-label {
|
|
320
|
+
color: var(--color-warning);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
.form-group-warning .input,
|
|
324
|
+
.form-group-warning .select,
|
|
325
|
+
.form-group-warning .textarea {
|
|
326
|
+
border-color: var(--color-warning);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.form-group-warning .input:focus-visible,
|
|
330
|
+
.form-group-warning .select:focus-visible,
|
|
331
|
+
.form-group-warning .textarea:focus-visible {
|
|
332
|
+
border-color: var(--color-warning);
|
|
333
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
|
|
334
|
+
}
|
|
335
|
+
|
|
304
336
|
/* Disabled Form Group */
|
|
305
337
|
.form-group-disabled {
|
|
306
338
|
opacity: 0.5;
|
|
@@ -36,7 +36,7 @@ export const css = `/**
|
|
|
36
36
|
background-color: var(--color-surface);
|
|
37
37
|
color: var(--color-on-surface);
|
|
38
38
|
border-radius: 1rem;
|
|
39
|
-
box-shadow:
|
|
39
|
+
box-shadow: var(--shadow-2xl);
|
|
40
40
|
overflow-y: auto;
|
|
41
41
|
transform: scale(0.95);
|
|
42
42
|
transition: transform 200ms ease-out;
|
|
@@ -192,7 +192,7 @@ export const css = `/**
|
|
|
192
192
|
background-color: var(--color-surface);
|
|
193
193
|
border: 1px solid var(--color-outline-variant);
|
|
194
194
|
border-radius: 0.5rem;
|
|
195
|
-
box-shadow:
|
|
195
|
+
box-shadow: var(--shadow-md);
|
|
196
196
|
overflow: hidden;
|
|
197
197
|
}
|
|
198
198
|
|
|
@@ -439,7 +439,7 @@ export const css = `/**
|
|
|
439
439
|
.tabs-boxed .tab[aria-selected="true"] {
|
|
440
440
|
background-color: var(--color-surface);
|
|
441
441
|
color: var(--color-on-surface);
|
|
442
|
-
box-shadow:
|
|
442
|
+
box-shadow: var(--shadow-xs);
|
|
443
443
|
}
|
|
444
444
|
|
|
445
445
|
/* Tabs Lifted */
|
|
@@ -491,7 +491,7 @@ export const css = `/**
|
|
|
491
491
|
background-color: var(--color-surface);
|
|
492
492
|
border: 1px solid var(--color-outline);
|
|
493
493
|
border-radius: 0.5rem;
|
|
494
|
-
box-shadow:
|
|
494
|
+
box-shadow: var(--shadow-lg);
|
|
495
495
|
opacity: 0;
|
|
496
496
|
visibility: hidden;
|
|
497
497
|
transform: translateY(-0.5rem);
|