@digiko-npm/designsystem 0.3.33 → 0.4.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/README.md +5 -2
- package/dist/designsystem.css +300 -77
- package/dist/designsystem.min.css +2 -2
- package/package.json +1 -1
- package/src/base/reset.css +4 -7
- package/src/components/accordion.css +4 -0
- package/src/components/alert.css +3 -3
- package/src/components/badge.css +2 -2
- package/src/components/breadcrumb.css +2 -2
- package/src/components/button.css +6 -2
- package/src/components/card.css +10 -0
- package/src/components/command.css +4 -0
- package/src/components/custom-select.css +19 -0
- package/src/components/datepicker.css +35 -14
- package/src/components/drawer.css +4 -0
- package/src/components/drop-zone.css +4 -0
- package/src/components/dropdown.css +9 -0
- package/src/components/empty-state.css +6 -0
- package/src/components/input.css +81 -12
- package/src/components/modal.css +6 -2
- package/src/components/nav.css +18 -3
- package/src/components/pagination.css +4 -4
- package/src/components/popover.css +4 -4
- package/src/components/skeleton.css +4 -0
- package/src/components/slider.css +2 -2
- package/src/components/sortable.css +6 -0
- package/src/components/tabs.css +2 -2
- package/src/components/tag.css +3 -2
- package/src/components/toast.css +13 -4
- package/src/components/toggle.css +2 -2
- package/src/components/tooltip.css +4 -4
- package/src/tokens/shadows.css +29 -0
- package/src/utilities/layout.css +9 -5
package/src/components/card.css
CHANGED
|
@@ -20,6 +20,13 @@
|
|
|
20
20
|
box-shadow: var(--ds-shadow-lg);
|
|
21
21
|
transform: translateY(-4px);
|
|
22
22
|
}
|
|
23
|
+
.ds-card--interactive:focus-visible {
|
|
24
|
+
outline: none;
|
|
25
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
26
|
+
}
|
|
27
|
+
.ds-card--interactive:hover:focus-visible {
|
|
28
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color), var(--ds-shadow-lg);
|
|
29
|
+
}
|
|
23
30
|
|
|
24
31
|
/* Elevated card — visible shadow */
|
|
25
32
|
.ds-card--elevated {
|
|
@@ -70,6 +77,9 @@
|
|
|
70
77
|
object-fit: cover;
|
|
71
78
|
background-color: var(--ds-color-bg-elevated);
|
|
72
79
|
}
|
|
80
|
+
.ds-card__media--square { aspect-ratio: 1; }
|
|
81
|
+
.ds-card__media--video { aspect-ratio: 16/9; }
|
|
82
|
+
.ds-card__media--auto { aspect-ratio: auto; }
|
|
73
83
|
|
|
74
84
|
/* Compact */
|
|
75
85
|
.ds-card--compact .ds-card__header,
|
|
@@ -145,6 +145,10 @@
|
|
|
145
145
|
background-color: var(--ds-color-bg-elevated);
|
|
146
146
|
color: var(--ds-color-text);
|
|
147
147
|
}
|
|
148
|
+
.ds-command__item:focus-visible {
|
|
149
|
+
outline: none;
|
|
150
|
+
box-shadow: inset 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
151
|
+
}
|
|
148
152
|
|
|
149
153
|
/* Item icon */
|
|
150
154
|
.ds-command__item-icon {
|
|
@@ -37,6 +37,12 @@
|
|
|
37
37
|
border-color: var(--ds-color-border-hover);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
.ds-custom-select__trigger:focus-visible {
|
|
41
|
+
border-color: var(--ds-color-border-active);
|
|
42
|
+
outline: none;
|
|
43
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
44
|
+
}
|
|
45
|
+
|
|
40
46
|
.ds-custom-select__trigger--open {
|
|
41
47
|
border-color: var(--ds-color-border-active);
|
|
42
48
|
box-shadow: inset 0 0 0 1px var(--ds-color-border-active);
|
|
@@ -200,6 +206,10 @@
|
|
|
200
206
|
background-color: var(--ds-color-bg-elevated);
|
|
201
207
|
color: var(--ds-color-text);
|
|
202
208
|
}
|
|
209
|
+
.ds-custom-select__option:focus-visible {
|
|
210
|
+
outline: none;
|
|
211
|
+
box-shadow: inset 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
212
|
+
}
|
|
203
213
|
|
|
204
214
|
.ds-custom-select__option--selected {
|
|
205
215
|
background-color: var(--ds-color-bg-elevated);
|
|
@@ -308,3 +318,12 @@
|
|
|
308
318
|
border-radius: 0;
|
|
309
319
|
}
|
|
310
320
|
}
|
|
321
|
+
|
|
322
|
+
@media (prefers-reduced-motion: reduce) {
|
|
323
|
+
.ds-custom-select__panel {
|
|
324
|
+
animation: none;
|
|
325
|
+
opacity: 1;
|
|
326
|
+
transform: scale(1);
|
|
327
|
+
}
|
|
328
|
+
.ds-custom-select__backdrop { animation: none; opacity: 1; }
|
|
329
|
+
}
|
|
@@ -57,11 +57,16 @@
|
|
|
57
57
|
line-height: 1;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
.ds-datepicker__trigger:focus-visible {
|
|
61
|
+
outline: none;
|
|
62
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
63
|
+
}
|
|
64
|
+
|
|
60
65
|
/* Calendar panel */
|
|
61
66
|
.ds-datepicker__panel {
|
|
62
67
|
position: absolute;
|
|
63
68
|
z-index: var(--ds-z-dropdown);
|
|
64
|
-
top: calc(100% +
|
|
69
|
+
top: calc(100% + var(--ds-offset-sm));
|
|
65
70
|
left: 0;
|
|
66
71
|
background-color: var(--ds-color-surface);
|
|
67
72
|
border: 1px solid var(--ds-color-border);
|
|
@@ -73,8 +78,8 @@
|
|
|
73
78
|
visibility: hidden;
|
|
74
79
|
transform: scale(0.96);
|
|
75
80
|
transition:
|
|
76
|
-
opacity var(--ds-duration-fast) var(--ds-ease),
|
|
77
|
-
visibility var(--ds-duration-fast) var(--ds-ease),
|
|
81
|
+
opacity var(--ds-duration-fast) var(--ds-ease-default),
|
|
82
|
+
visibility var(--ds-duration-fast) var(--ds-ease-default),
|
|
78
83
|
transform var(--ds-duration-fast) var(--ds-ease-out-expo);
|
|
79
84
|
}
|
|
80
85
|
|
|
@@ -95,7 +100,7 @@
|
|
|
95
100
|
|
|
96
101
|
.ds-datepicker__title {
|
|
97
102
|
font-size: var(--ds-text-sm);
|
|
98
|
-
font-weight:
|
|
103
|
+
font-weight: var(--ds-weight-semibold);
|
|
99
104
|
color: var(--ds-color-text);
|
|
100
105
|
user-select: none;
|
|
101
106
|
}
|
|
@@ -112,13 +117,17 @@
|
|
|
112
117
|
color: var(--ds-color-text-secondary);
|
|
113
118
|
cursor: pointer;
|
|
114
119
|
font-size: var(--ds-text-base);
|
|
115
|
-
transition: all var(--ds-duration-fast) var(--ds-ease);
|
|
120
|
+
transition: all var(--ds-duration-fast) var(--ds-ease-default);
|
|
116
121
|
}
|
|
117
122
|
|
|
118
123
|
.ds-datepicker__nav:hover {
|
|
119
124
|
background-color: var(--ds-color-bg-elevated);
|
|
120
125
|
color: var(--ds-color-text);
|
|
121
126
|
}
|
|
127
|
+
.ds-datepicker__nav:focus-visible {
|
|
128
|
+
outline: none;
|
|
129
|
+
box-shadow: inset 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
130
|
+
}
|
|
122
131
|
|
|
123
132
|
/* Weekday header row */
|
|
124
133
|
.ds-datepicker__weekdays {
|
|
@@ -133,7 +142,7 @@
|
|
|
133
142
|
text-align: center;
|
|
134
143
|
padding: var(--ds-space-1) 0;
|
|
135
144
|
user-select: none;
|
|
136
|
-
font-weight:
|
|
145
|
+
font-weight: var(--ds-weight-medium);
|
|
137
146
|
}
|
|
138
147
|
|
|
139
148
|
/* Day grid */
|
|
@@ -155,7 +164,7 @@
|
|
|
155
164
|
font-size: var(--ds-text-sm);
|
|
156
165
|
color: var(--ds-color-text);
|
|
157
166
|
cursor: pointer;
|
|
158
|
-
transition: all var(--ds-duration-fast) var(--ds-ease);
|
|
167
|
+
transition: all var(--ds-duration-fast) var(--ds-ease-default);
|
|
159
168
|
padding: 0;
|
|
160
169
|
line-height: 1;
|
|
161
170
|
user-select: none;
|
|
@@ -164,18 +173,22 @@
|
|
|
164
173
|
.ds-datepicker__day:hover {
|
|
165
174
|
background-color: var(--ds-color-bg-elevated);
|
|
166
175
|
}
|
|
176
|
+
.ds-datepicker__day:focus-visible {
|
|
177
|
+
outline: none;
|
|
178
|
+
box-shadow: inset 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
179
|
+
}
|
|
167
180
|
|
|
168
181
|
/* Today — subtle ring */
|
|
169
182
|
.ds-datepicker__day--today {
|
|
170
183
|
box-shadow: inset 0 0 0 1px var(--ds-color-border-active);
|
|
171
|
-
font-weight:
|
|
184
|
+
font-weight: var(--ds-weight-semibold);
|
|
172
185
|
}
|
|
173
186
|
|
|
174
187
|
/* Selected — inverted fill */
|
|
175
188
|
.ds-datepicker__day--selected {
|
|
176
189
|
background-color: var(--ds-color-text);
|
|
177
190
|
color: var(--ds-color-bg);
|
|
178
|
-
font-weight:
|
|
191
|
+
font-weight: var(--ds-weight-semibold);
|
|
179
192
|
}
|
|
180
193
|
|
|
181
194
|
.ds-datepicker__day--selected:hover {
|
|
@@ -200,14 +213,14 @@
|
|
|
200
213
|
|
|
201
214
|
.ds-datepicker__today {
|
|
202
215
|
font-size: var(--ds-text-xs);
|
|
203
|
-
font-weight:
|
|
216
|
+
font-weight: var(--ds-weight-medium);
|
|
204
217
|
color: var(--ds-color-text-secondary);
|
|
205
218
|
background: none;
|
|
206
219
|
border: 1px solid var(--ds-color-border);
|
|
207
220
|
border-radius: var(--ds-radius-full);
|
|
208
221
|
padding: var(--ds-space-1) var(--ds-space-3);
|
|
209
222
|
cursor: pointer;
|
|
210
|
-
transition: all var(--ds-duration-fast) var(--ds-ease);
|
|
223
|
+
transition: all var(--ds-duration-fast) var(--ds-ease-default);
|
|
211
224
|
}
|
|
212
225
|
|
|
213
226
|
.ds-datepicker__today:hover {
|
|
@@ -215,6 +228,10 @@
|
|
|
215
228
|
color: var(--ds-color-text);
|
|
216
229
|
border-color: var(--ds-color-border-hover);
|
|
217
230
|
}
|
|
231
|
+
.ds-datepicker__today:focus-visible {
|
|
232
|
+
outline: none;
|
|
233
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
234
|
+
}
|
|
218
235
|
|
|
219
236
|
/* Step arrows — prev/next day buttons beside the date text */
|
|
220
237
|
.ds-datepicker__step {
|
|
@@ -229,7 +246,7 @@
|
|
|
229
246
|
color: var(--ds-color-text-tertiary);
|
|
230
247
|
cursor: pointer;
|
|
231
248
|
font-size: var(--ds-text-xs);
|
|
232
|
-
transition: all var(--ds-duration-fast) var(--ds-ease);
|
|
249
|
+
transition: all var(--ds-duration-fast) var(--ds-ease-default);
|
|
233
250
|
padding: 0;
|
|
234
251
|
flex-shrink: 0;
|
|
235
252
|
}
|
|
@@ -238,6 +255,10 @@
|
|
|
238
255
|
background-color: var(--ds-color-bg-elevated);
|
|
239
256
|
color: var(--ds-color-text);
|
|
240
257
|
}
|
|
258
|
+
.ds-datepicker__step:focus-visible {
|
|
259
|
+
outline: none;
|
|
260
|
+
box-shadow: inset 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
261
|
+
}
|
|
241
262
|
|
|
242
263
|
/* Compact mode — for inline table cells */
|
|
243
264
|
.ds-datepicker--compact .ds-datepicker__panel {
|
|
@@ -256,7 +277,7 @@
|
|
|
256
277
|
}
|
|
257
278
|
|
|
258
279
|
.ds-datepicker--compact .ds-datepicker__weekday {
|
|
259
|
-
font-size:
|
|
280
|
+
font-size: var(--ds-text-2xs);
|
|
260
281
|
}
|
|
261
282
|
|
|
262
283
|
.ds-datepicker--compact .ds-datepicker__day {
|
|
@@ -264,7 +285,7 @@
|
|
|
264
285
|
}
|
|
265
286
|
|
|
266
287
|
.ds-datepicker--compact .ds-datepicker__today {
|
|
267
|
-
font-size:
|
|
288
|
+
font-size: var(--ds-text-2xs);
|
|
268
289
|
padding: 2px var(--ds-space-2);
|
|
269
290
|
}
|
|
270
291
|
|
|
@@ -185,6 +185,10 @@
|
|
|
185
185
|
background-color: var(--ds-color-overlay);
|
|
186
186
|
color: var(--ds-color-text);
|
|
187
187
|
}
|
|
188
|
+
.ds-drawer__close:focus-visible {
|
|
189
|
+
outline: none;
|
|
190
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
191
|
+
}
|
|
188
192
|
|
|
189
193
|
/* ==========================================================================
|
|
190
194
|
* Body
|
|
@@ -39,6 +39,10 @@
|
|
|
39
39
|
transition:
|
|
40
40
|
background-color var(--ds-duration-fast) var(--ds-ease-default);
|
|
41
41
|
}
|
|
42
|
+
.ds-drop-zone:focus-visible {
|
|
43
|
+
outline: none;
|
|
44
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
45
|
+
}
|
|
42
46
|
|
|
43
47
|
:root:not(.dark) .ds-drop-zone {
|
|
44
48
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25'%3E%3Crect x='1' y='1' width='99%25' height='99%25' rx='16' ry='16' fill='none' stroke='%23d4d4d8' stroke-width='2' stroke-dasharray='10 8'/%3E%3C/svg%3E");
|
|
@@ -63,6 +63,11 @@
|
|
|
63
63
|
transform-origin: bottom right;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
+
/* --- Width variants --- */
|
|
67
|
+
.ds-dropdown__menu--sm { min-width: 8rem; }
|
|
68
|
+
.ds-dropdown__menu--lg { min-width: 20rem; }
|
|
69
|
+
.ds-dropdown__menu--auto { min-width: auto; }
|
|
70
|
+
|
|
66
71
|
/* --- Menu item --- */
|
|
67
72
|
|
|
68
73
|
.ds-dropdown__item {
|
|
@@ -85,6 +90,10 @@
|
|
|
85
90
|
background-color: var(--ds-color-bg-elevated);
|
|
86
91
|
color: var(--ds-color-text);
|
|
87
92
|
}
|
|
93
|
+
.ds-dropdown__item:focus-visible {
|
|
94
|
+
outline: none;
|
|
95
|
+
box-shadow: inset 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
96
|
+
}
|
|
88
97
|
|
|
89
98
|
.ds-dropdown__item--active {
|
|
90
99
|
background-color: var(--ds-color-bg-elevated);
|
package/src/components/input.css
CHANGED
|
@@ -11,10 +11,14 @@
|
|
|
11
11
|
margin-bottom: var(--ds-space-1-5);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
.ds-input,
|
|
15
|
+
.ds-textarea {
|
|
16
|
+
width: 100%;
|
|
17
|
+
}
|
|
18
|
+
|
|
14
19
|
.ds-input,
|
|
15
20
|
.ds-textarea,
|
|
16
21
|
.ds-select {
|
|
17
|
-
width: 100%;
|
|
18
22
|
padding: 0 var(--ds-space-4);
|
|
19
23
|
font-family: var(--ds-font-sans);
|
|
20
24
|
font-size: var(--ds-text-base); /* 16px — prevents iOS auto-zoom on focus */
|
|
@@ -23,7 +27,11 @@
|
|
|
23
27
|
background-color: var(--ds-color-surface);
|
|
24
28
|
border: 1px solid var(--ds-color-border);
|
|
25
29
|
border-radius: var(--ds-radius-lg);
|
|
26
|
-
|
|
30
|
+
outline: none;
|
|
31
|
+
transition:
|
|
32
|
+
border-color var(--ds-duration-fast) var(--ds-ease-default),
|
|
33
|
+
box-shadow var(--ds-duration-fast) var(--ds-ease-default),
|
|
34
|
+
background-color var(--ds-duration-fast) var(--ds-ease-default);
|
|
27
35
|
}
|
|
28
36
|
|
|
29
37
|
.ds-input,
|
|
@@ -31,18 +39,22 @@
|
|
|
31
39
|
height: var(--ds-size-3);
|
|
32
40
|
}
|
|
33
41
|
|
|
42
|
+
/* Hover */
|
|
34
43
|
.ds-input:hover,
|
|
35
44
|
.ds-textarea:hover,
|
|
36
45
|
.ds-select:hover {
|
|
37
46
|
border-color: var(--ds-color-border-hover);
|
|
38
47
|
}
|
|
39
48
|
|
|
40
|
-
.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
/* Focus — box-shadow ring instead of outline.
|
|
50
|
+
Inputs always trigger :focus-visible (browser heuristic for text entry),
|
|
51
|
+
so outline creates unavoidable double-border with offset.
|
|
52
|
+
box-shadow follows border-radius perfectly and has no gap. */
|
|
53
|
+
.ds-input:focus-visible,
|
|
54
|
+
.ds-textarea:focus-visible,
|
|
55
|
+
.ds-select:focus-visible {
|
|
56
|
+
border-color: var(--ds-ring-color);
|
|
57
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
46
58
|
}
|
|
47
59
|
|
|
48
60
|
.ds-input::placeholder,
|
|
@@ -50,19 +62,32 @@
|
|
|
50
62
|
color: var(--ds-color-text-tertiary);
|
|
51
63
|
}
|
|
52
64
|
|
|
53
|
-
/* States */
|
|
65
|
+
/* States — error: border + ring match the semantic color */
|
|
54
66
|
.ds-input--error,
|
|
55
67
|
.ds-textarea--error {
|
|
56
68
|
border-color: var(--ds-color-error);
|
|
57
69
|
}
|
|
58
|
-
.ds-input--error:
|
|
59
|
-
.ds-textarea--error:
|
|
60
|
-
|
|
70
|
+
.ds-input--error:hover,
|
|
71
|
+
.ds-textarea--error:hover {
|
|
72
|
+
border-color: var(--ds-color-error);
|
|
73
|
+
}
|
|
74
|
+
.ds-input--error:focus-visible,
|
|
75
|
+
.ds-textarea--error:focus-visible {
|
|
76
|
+
border-color: var(--ds-color-error);
|
|
77
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-color-error);
|
|
61
78
|
}
|
|
62
79
|
|
|
80
|
+
/* States — success: border + ring match the semantic color */
|
|
63
81
|
.ds-input--success {
|
|
64
82
|
border-color: var(--ds-color-success);
|
|
65
83
|
}
|
|
84
|
+
.ds-input--success:hover {
|
|
85
|
+
border-color: var(--ds-color-success);
|
|
86
|
+
}
|
|
87
|
+
.ds-input--success:focus-visible {
|
|
88
|
+
border-color: var(--ds-color-success);
|
|
89
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-color-success);
|
|
90
|
+
}
|
|
66
91
|
|
|
67
92
|
/* Sizes */
|
|
68
93
|
.ds-input--xs,
|
|
@@ -109,6 +134,50 @@
|
|
|
109
134
|
padding-right: var(--ds-space-8);
|
|
110
135
|
}
|
|
111
136
|
|
|
137
|
+
/* --- Layout Modifiers ---
|
|
138
|
+
Override default width/display/chrome assumptions. */
|
|
139
|
+
|
|
140
|
+
/* Full width (opt-in for select, already default for input/textarea) */
|
|
141
|
+
.ds-select--full {
|
|
142
|
+
width: 100%;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/* Flush — naked input inside a styled container.
|
|
146
|
+
No border, no background, no padding, no focus ring.
|
|
147
|
+
The container handles visual chrome. */
|
|
148
|
+
.ds-input--flush {
|
|
149
|
+
background: transparent;
|
|
150
|
+
border: none;
|
|
151
|
+
padding: 0;
|
|
152
|
+
border-radius: 0;
|
|
153
|
+
box-shadow: none;
|
|
154
|
+
height: auto;
|
|
155
|
+
}
|
|
156
|
+
.ds-input--flush:hover {
|
|
157
|
+
border-color: transparent;
|
|
158
|
+
}
|
|
159
|
+
.ds-input--flush:focus-visible {
|
|
160
|
+
border-color: transparent;
|
|
161
|
+
box-shadow: none;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* Inline — auto-width for use in flex rows */
|
|
165
|
+
.ds-input--inline {
|
|
166
|
+
width: auto;
|
|
167
|
+
display: inline-flex;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/* --- Input Group: icon-right ---
|
|
171
|
+
Move icon to the right side, flip input padding. */
|
|
172
|
+
.ds-input-group--icon-right .ds-input-group__icon {
|
|
173
|
+
left: auto;
|
|
174
|
+
right: var(--ds-space-3);
|
|
175
|
+
}
|
|
176
|
+
.ds-input-group--icon-right .ds-input {
|
|
177
|
+
padding-left: var(--ds-space-4);
|
|
178
|
+
padding-right: calc(var(--ds-space-3) + 1rem + var(--ds-space-2));
|
|
179
|
+
}
|
|
180
|
+
|
|
112
181
|
/* Help text */
|
|
113
182
|
.ds-help {
|
|
114
183
|
font-size: var(--ds-text-xs);
|
package/src/components/modal.css
CHANGED
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
justify-content: center;
|
|
13
13
|
padding: var(--ds-space-4);
|
|
14
14
|
background-color: var(--ds-color-overlay);
|
|
15
|
-
backdrop-filter: blur(
|
|
16
|
-
-webkit-backdrop-filter: blur(
|
|
15
|
+
backdrop-filter: blur(var(--ds-blur-sm));
|
|
16
|
+
-webkit-backdrop-filter: blur(var(--ds-blur-sm));
|
|
17
17
|
opacity: 0;
|
|
18
18
|
visibility: hidden;
|
|
19
19
|
transition:
|
|
@@ -82,6 +82,10 @@
|
|
|
82
82
|
.ds-modal__close:hover {
|
|
83
83
|
color: var(--ds-color-text);
|
|
84
84
|
}
|
|
85
|
+
.ds-modal__close:focus-visible {
|
|
86
|
+
outline: none;
|
|
87
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
88
|
+
}
|
|
85
89
|
|
|
86
90
|
.ds-modal__body {
|
|
87
91
|
padding: var(--ds-space-5);
|
package/src/components/nav.css
CHANGED
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
height: 4rem;
|
|
16
16
|
background-color: var(--ds-color-nav-bg);
|
|
17
17
|
border-bottom: 1px solid var(--ds-color-nav-border);
|
|
18
|
-
backdrop-filter: blur(
|
|
19
|
-
-webkit-backdrop-filter: blur(
|
|
18
|
+
backdrop-filter: blur(var(--ds-blur-lg)) saturate(1.5);
|
|
19
|
+
-webkit-backdrop-filter: blur(var(--ds-blur-lg)) saturate(1.5);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
.ds-nav--static {
|
|
@@ -59,6 +59,11 @@
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
.ds-nav__link:focus-visible {
|
|
63
|
+
outline: none;
|
|
64
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
65
|
+
}
|
|
66
|
+
|
|
62
67
|
.ds-nav__link--active {
|
|
63
68
|
color: var(--ds-color-text);
|
|
64
69
|
}
|
|
@@ -88,13 +93,18 @@
|
|
|
88
93
|
}
|
|
89
94
|
}
|
|
90
95
|
|
|
96
|
+
.ds-nav__icon-btn:focus-visible {
|
|
97
|
+
outline: none;
|
|
98
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
99
|
+
}
|
|
100
|
+
|
|
91
101
|
/* --- Mobile nav overlay --- */
|
|
92
102
|
.ds-nav__mobile {
|
|
93
103
|
overflow: hidden;
|
|
94
104
|
max-height: 0;
|
|
95
105
|
border-bottom: 0 solid var(--ds-color-nav-border);
|
|
96
106
|
background-color: var(--ds-color-nav-bg);
|
|
97
|
-
backdrop-filter: blur(
|
|
107
|
+
backdrop-filter: blur(var(--ds-blur-lg));
|
|
98
108
|
transition: all var(--ds-duration-slow) var(--ds-ease-out-expo);
|
|
99
109
|
}
|
|
100
110
|
|
|
@@ -162,6 +172,11 @@
|
|
|
162
172
|
}
|
|
163
173
|
}
|
|
164
174
|
|
|
175
|
+
.ds-sidebar__link:focus-visible {
|
|
176
|
+
outline: none;
|
|
177
|
+
box-shadow: inset 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
178
|
+
}
|
|
179
|
+
|
|
165
180
|
.ds-sidebar__link--active {
|
|
166
181
|
color: var(--ds-color-text);
|
|
167
182
|
background-color: var(--ds-color-bg-elevated);
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
.ds-pagination__item:focus-visible {
|
|
60
|
-
outline:
|
|
61
|
-
|
|
60
|
+
outline: none;
|
|
61
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
/* ---------------------------------------------------------------------------
|
|
@@ -116,8 +116,8 @@
|
|
|
116
116
|
|
|
117
117
|
.ds-pagination__prev:focus-visible,
|
|
118
118
|
.ds-pagination__next:focus-visible {
|
|
119
|
-
outline:
|
|
120
|
-
|
|
119
|
+
outline: none;
|
|
120
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
.ds-pagination__prev:disabled,
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
/* Placement: bottom (default) */
|
|
55
55
|
.ds-popover__content,
|
|
56
56
|
.ds-popover--bottom .ds-popover__content {
|
|
57
|
-
top: calc(100% +
|
|
57
|
+
top: calc(100% + var(--ds-offset-md));
|
|
58
58
|
left: 50%;
|
|
59
59
|
transform: translateX(-50%) scale(0.96);
|
|
60
60
|
}
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
|
|
67
67
|
/* Placement: top */
|
|
68
68
|
.ds-popover--top .ds-popover__content {
|
|
69
|
-
bottom: calc(100% +
|
|
69
|
+
bottom: calc(100% + var(--ds-offset-md));
|
|
70
70
|
top: auto;
|
|
71
71
|
left: 50%;
|
|
72
72
|
transform: translateX(-50%) scale(0.96);
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
|
|
79
79
|
/* Placement: left */
|
|
80
80
|
.ds-popover--left .ds-popover__content {
|
|
81
|
-
right: calc(100% +
|
|
81
|
+
right: calc(100% + var(--ds-offset-md));
|
|
82
82
|
top: 50%;
|
|
83
83
|
left: auto;
|
|
84
84
|
transform: translateY(-50%) scale(0.96);
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
|
|
91
91
|
/* Placement: right */
|
|
92
92
|
.ds-popover--right .ds-popover__content {
|
|
93
|
-
left: calc(100% +
|
|
93
|
+
left: calc(100% + var(--ds-offset-md));
|
|
94
94
|
top: 50%;
|
|
95
95
|
transform: translateY(-50%) scale(0.96);
|
|
96
96
|
}
|
|
@@ -73,12 +73,12 @@
|
|
|
73
73
|
/* Focus ring */
|
|
74
74
|
.ds-slider input[type="range"]:focus-visible::-webkit-slider-thumb {
|
|
75
75
|
outline: var(--ds-ring-width) solid var(--ds-ring-color);
|
|
76
|
-
outline-offset:
|
|
76
|
+
outline-offset: 0;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
.ds-slider input[type="range"]:focus-visible::-moz-range-thumb {
|
|
80
80
|
outline: var(--ds-ring-width) solid var(--ds-ring-color);
|
|
81
|
-
outline-offset:
|
|
81
|
+
outline-offset: 0;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
/* Labels row */
|
|
@@ -31,6 +31,12 @@ tr:hover .ds-sortable__handle,
|
|
|
31
31
|
opacity: 1;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
.ds-sortable__handle:focus-visible {
|
|
35
|
+
outline: none;
|
|
36
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
37
|
+
border-radius: var(--ds-radius-sm);
|
|
38
|
+
}
|
|
39
|
+
|
|
34
40
|
tr:hover .ds-sortable__handle,
|
|
35
41
|
.ds-sortable-row:hover .ds-sortable__handle {
|
|
36
42
|
color: var(--ds-color-text-secondary);
|
package/src/components/tabs.css
CHANGED
|
@@ -106,8 +106,8 @@
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
.ds-tab:focus-visible {
|
|
109
|
-
outline:
|
|
110
|
-
|
|
109
|
+
outline: none;
|
|
110
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
111
111
|
border-radius: var(--ds-radius-sm);
|
|
112
112
|
}
|
|
113
113
|
|
package/src/components/tag.css
CHANGED
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
/* Tags used as <button> for selection — no focus ring on click */
|
|
43
43
|
button.ds-tag:focus-visible {
|
|
44
44
|
outline: none;
|
|
45
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
/* ---------------------------------------------------------------------------
|
|
@@ -124,8 +125,8 @@ button.ds-tag:focus-visible {
|
|
|
124
125
|
}
|
|
125
126
|
|
|
126
127
|
.ds-tag__remove:focus-visible {
|
|
127
|
-
outline:
|
|
128
|
-
|
|
128
|
+
outline: none;
|
|
129
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
129
130
|
opacity: 1;
|
|
130
131
|
}
|
|
131
132
|
|
package/src/components/toast.css
CHANGED
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
animation: ds-toast-in var(--ds-duration-slow) var(--ds-ease-out-expo) forwards;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
.ds-toast--info { border-left:
|
|
39
|
-
.ds-toast--success { border-left:
|
|
40
|
-
.ds-toast--warning { border-left:
|
|
41
|
-
.ds-toast--error { border-left:
|
|
38
|
+
.ds-toast--info { border-left: var(--ds-accent-border-width) solid var(--ds-color-info); }
|
|
39
|
+
.ds-toast--success { border-left: var(--ds-accent-border-width) solid var(--ds-color-success); }
|
|
40
|
+
.ds-toast--warning { border-left: var(--ds-accent-border-width) solid var(--ds-color-warning); }
|
|
41
|
+
.ds-toast--error { border-left: var(--ds-accent-border-width) solid var(--ds-color-error); }
|
|
42
42
|
|
|
43
43
|
.ds-toast__message {
|
|
44
44
|
flex: 1;
|
|
@@ -55,6 +55,10 @@
|
|
|
55
55
|
.ds-toast__close:hover {
|
|
56
56
|
color: var(--ds-color-text);
|
|
57
57
|
}
|
|
58
|
+
.ds-toast__close:focus-visible {
|
|
59
|
+
outline: none;
|
|
60
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
61
|
+
}
|
|
58
62
|
|
|
59
63
|
@keyframes ds-toast-in {
|
|
60
64
|
from { opacity: 0; transform: translateY(-8px); }
|
|
@@ -68,3 +72,8 @@
|
|
|
68
72
|
@keyframes ds-toast-out {
|
|
69
73
|
to { opacity: 0; transform: translateX(100%); }
|
|
70
74
|
}
|
|
75
|
+
|
|
76
|
+
@media (prefers-reduced-motion: reduce) {
|
|
77
|
+
.ds-toast { animation: none; }
|
|
78
|
+
.ds-toast--exit { animation: none; opacity: 0; }
|
|
79
|
+
}
|
|
@@ -83,8 +83,8 @@
|
|
|
83
83
|
--------------------------------------------------------------------------- */
|
|
84
84
|
|
|
85
85
|
.ds-toggle:focus-visible {
|
|
86
|
-
outline:
|
|
87
|
-
|
|
86
|
+
outline: none;
|
|
87
|
+
box-shadow: 0 0 0 var(--ds-ring-width) var(--ds-ring-color);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
/* ---------------------------------------------------------------------------
|