@moodlehq/design-system 3.2.0 → 4.1.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 +7 -6
- package/dist/components/badge/Badge.d.ts +19 -0
- package/dist/components/badge/Badge.js +42 -0
- package/dist/components/badge/Badge.js.map +1 -0
- package/dist/components/badge/index.d.ts +1 -0
- package/dist/components/badge/index.js +2 -0
- package/dist/components/button/Button.d.ts +4 -3
- package/dist/components/button/Button.js +25 -11
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/checkbox/Checkbox.d.ts +23 -0
- package/dist/components/checkbox/Checkbox.js +68 -0
- package/dist/components/checkbox/Checkbox.js.map +1 -0
- package/dist/components/checkbox/index.d.ts +1 -0
- package/dist/components/checkbox/index.js +2 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/index.css +514 -50
- package/dist/index.js +3 -1
- package/package.json +3 -1
- package/tokens/css/colors.css +5 -5
- package/tokens/css/primitives.css +1 -1
- package/tokens/scss/_colors.scss +6 -6
- package/tokens/scss/_index_css_vars.scss +340 -0
- package/tokens/scss/_primitives.scss +1 -1
- package/tokens/scss/_typography.scss +1 -1
package/dist/index.css
CHANGED
|
@@ -103,24 +103,219 @@
|
|
|
103
103
|
inline-size: 100%;
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
+
.mds-badge {
|
|
107
|
+
display: inline-flex;
|
|
108
|
+
align-items: center;
|
|
109
|
+
gap: 0;
|
|
110
|
+
padding: var(--mds-spacing-xxs) var(--mds-spacing-xs);
|
|
111
|
+
border-radius: var(--mds-border-radius-sm);
|
|
112
|
+
|
|
113
|
+
font-family: var(--mds-font-family-base);
|
|
114
|
+
font-weight: var(--mds-font-weight-medium);
|
|
115
|
+
font-size: var(--mds-font-size-paragraph-small);
|
|
116
|
+
line-height: var(--mds-line-height-paragraph-xs);
|
|
117
|
+
letter-spacing: var(--mds-letter-spacing-default);
|
|
118
|
+
white-space: nowrap;
|
|
119
|
+
vertical-align: baseline;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.mds-badge--has-icon {
|
|
123
|
+
gap: var(--mds-spacing-xxs);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* Normalize icon dimensions to match the badge icon token across <i> and <svg> usage. */
|
|
127
|
+
|
|
128
|
+
.mds-badge > i,
|
|
129
|
+
.mds-badge > svg {
|
|
130
|
+
width: var(--mds-icons-xxs);
|
|
131
|
+
height: var(--mds-icons-xxs);
|
|
132
|
+
font-size: var(--mds-icons-xxs);
|
|
133
|
+
flex-shrink: 0;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* Pill shape overrides the default rounded corners */
|
|
137
|
+
|
|
138
|
+
.mds-badge--pill {
|
|
139
|
+
border-radius: var(--mds-border-radius-pill);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/*
|
|
143
|
+
* Per-variant colour rules.
|
|
144
|
+
* Default contrast: solid coloured background with inverse text.
|
|
145
|
+
* Subtle contrast (.mds-badge--subtle): light tinted background, dark feedback text, visible border.
|
|
146
|
+
*/
|
|
147
|
+
|
|
148
|
+
.mds-badge--subtle {
|
|
149
|
+
border: var(--mds-stroke-weight-sm) solid transparent;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* --- Primary --- */
|
|
153
|
+
|
|
154
|
+
.mds-badge--primary {
|
|
155
|
+
background-color: var(--mds-bg-feedback-primary-default);
|
|
156
|
+
color: var(--mds-text-inverse);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.mds-badge--primary.mds-badge--subtle {
|
|
160
|
+
background-color: var(--mds-bg-feedback-primary-subtle);
|
|
161
|
+
color: var(--mds-text-feedback-primary);
|
|
162
|
+
border-color: var(--mds-border-feedback-primary);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/* --- Secondary --- */
|
|
166
|
+
|
|
167
|
+
.mds-badge--secondary {
|
|
168
|
+
background-color: var(--mds-bg-feedback-secondary-default);
|
|
169
|
+
color: var(--mds-text-feedback-secondary);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.mds-badge--secondary.mds-badge--subtle {
|
|
173
|
+
background-color: var(--mds-bg-feedback-secondary-subtle);
|
|
174
|
+
color: var(--mds-text-feedback-secondary);
|
|
175
|
+
border-color: var(--mds-border-feedback-secondary);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/* --- Success --- */
|
|
179
|
+
|
|
180
|
+
.mds-badge--success {
|
|
181
|
+
background-color: var(--mds-bg-feedback-success-default);
|
|
182
|
+
color: var(--mds-text-inverse);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.mds-badge--success.mds-badge--subtle {
|
|
186
|
+
background-color: var(--mds-bg-feedback-success-subtle);
|
|
187
|
+
color: var(--mds-text-feedback-success);
|
|
188
|
+
border-color: var(--mds-border-feedback-success);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/* --- Danger --- */
|
|
192
|
+
|
|
193
|
+
.mds-badge--danger {
|
|
194
|
+
background-color: var(--mds-bg-feedback-danger-default);
|
|
195
|
+
color: var(--mds-text-inverse);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.mds-badge--danger.mds-badge--subtle {
|
|
199
|
+
background-color: var(--mds-bg-feedback-danger-subtle);
|
|
200
|
+
color: var(--mds-text-feedback-danger);
|
|
201
|
+
border-color: var(--mds-border-feedback-danger);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* --- Warning --- */
|
|
205
|
+
|
|
206
|
+
.mds-badge--warning {
|
|
207
|
+
background-color: var(--mds-bg-feedback-warning-default);
|
|
208
|
+
color: var(--mds-text-feedback-warning);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.mds-badge--warning.mds-badge--subtle {
|
|
212
|
+
background-color: var(--mds-bg-feedback-warning-subtle);
|
|
213
|
+
color: var(--mds-text-feedback-warning);
|
|
214
|
+
border-color: var(--mds-border-feedback-warning);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/* --- Info --- */
|
|
218
|
+
|
|
219
|
+
.mds-badge--info {
|
|
220
|
+
background-color: var(--mds-bg-feedback-info-default);
|
|
221
|
+
color: var(--mds-text-inverse);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.mds-badge--info.mds-badge--subtle {
|
|
225
|
+
background-color: var(--mds-bg-feedback-info-subtle);
|
|
226
|
+
color: var(--mds-text-feedback-info);
|
|
227
|
+
border-color: var(--mds-border-feedback-info);
|
|
228
|
+
}
|
|
229
|
+
|
|
106
230
|
.mds-btn.btn {
|
|
107
231
|
background-color: var(--mds-bg-interactive-primary-default);
|
|
108
|
-
border:
|
|
109
|
-
border-radius: var(--mds-border-radius-
|
|
232
|
+
border: none;
|
|
233
|
+
border-radius: var(--mds-border-radius-sm);
|
|
110
234
|
padding: var(--mds-spacing-xs) var(--mds-spacing-sm);
|
|
111
235
|
|
|
112
236
|
color: var(--mds-text-inverse);
|
|
113
237
|
font-family: var(--mds-font-family-base);
|
|
114
238
|
font-weight: var(--mds-font-weight-regular);
|
|
115
239
|
font-size: var(--mds-font-size-paragraph-default);
|
|
116
|
-
line-height: var(--mds-line-height-paragraph-
|
|
240
|
+
line-height: var(--mds-line-height-paragraph-xs);
|
|
117
241
|
letter-spacing: var(--mds-letter-spacing-default);
|
|
118
242
|
|
|
119
|
-
/*
|
|
120
|
-
has no visual effect when the button contains only a single child (no icon) */
|
|
243
|
+
/* Keep icon/text spacing consistent with icon variants from the design matrix. */
|
|
121
244
|
display: inline-flex;
|
|
122
245
|
align-items: center;
|
|
123
|
-
gap: var(--mds-spacing-
|
|
246
|
+
gap: var(--mds-spacing-xs);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/* Icon-only sizing in Figma is not derived from text button size classes. */
|
|
250
|
+
|
|
251
|
+
.mds-btn.btn.mds-btn--icon-only {
|
|
252
|
+
padding: var(--mds-spacing-xs);
|
|
253
|
+
border-radius: var(--mds-border-radius-xl);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.mds-btn.btn.mds-btn--icon-only i,
|
|
257
|
+
.mds-btn.btn.mds-btn--icon-only svg {
|
|
258
|
+
inline-size: var(--mds-icons-xs);
|
|
259
|
+
block-size: var(--mds-icons-xs);
|
|
260
|
+
font-size: var(--mds-icons-xs);
|
|
261
|
+
line-height: 1;
|
|
262
|
+
flex-shrink: 0;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.mds-btn.btn.mds-btn--icon-only.mds-btn--size-sm {
|
|
266
|
+
padding: var(--mds-spacing-xxs);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.mds-btn.btn.mds-btn--icon-only.mds-btn--size-sm i,
|
|
270
|
+
.mds-btn.btn.mds-btn--icon-only.mds-btn--size-sm svg {
|
|
271
|
+
inline-size: var(--mds-icons-xxs);
|
|
272
|
+
block-size: var(--mds-icons-xxs);
|
|
273
|
+
font-size: var(--mds-icons-xxs);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.mds-btn.btn.mds-btn--icon-only.mds-btn--size-lg {
|
|
277
|
+
padding: var(--mds-spacing-xs);
|
|
278
|
+
border-radius: var(--mds-border-radius-sm);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.mds-btn.btn.mds-btn--size-sm i,
|
|
282
|
+
.mds-btn.btn.mds-btn--size-sm svg {
|
|
283
|
+
inline-size: var(--mds-icons-xxs);
|
|
284
|
+
block-size: var(--mds-icons-xxs);
|
|
285
|
+
font-size: var(--mds-icons-xxs);
|
|
286
|
+
line-height: 1;
|
|
287
|
+
flex-shrink: 0;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.mds-btn.btn.mds-btn--size-md i,
|
|
291
|
+
.mds-btn.btn.mds-btn--size-md svg,
|
|
292
|
+
.mds-btn.btn.mds-btn--size-lg i,
|
|
293
|
+
.mds-btn.btn.mds-btn--size-lg svg {
|
|
294
|
+
inline-size: var(--mds-icons-xs);
|
|
295
|
+
block-size: var(--mds-icons-xs);
|
|
296
|
+
font-size: var(--mds-icons-xs);
|
|
297
|
+
line-height: 1;
|
|
298
|
+
flex-shrink: 0;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.mds-btn.btn:focus {
|
|
302
|
+
box-shadow: none;
|
|
303
|
+
outline: none;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.mds-btn.btn:focus-visible {
|
|
307
|
+
outline: var(--mds-stroke-weight-md) solid var(--mds-focus-default);
|
|
308
|
+
outline-offset: var(--mds-spacing-offset);
|
|
309
|
+
box-shadow: none;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
.mds-btn.btn:active:focus-visible {
|
|
313
|
+
box-shadow: none;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.mds-btn.btn.btn-danger:focus-visible,
|
|
317
|
+
.mds-btn.btn.btn-outline-danger:focus-visible {
|
|
318
|
+
outline: var(--mds-stroke-weight-md) solid var(--mds-focus-danger);
|
|
124
319
|
}
|
|
125
320
|
|
|
126
321
|
.mds-btn.btn:hover {
|
|
@@ -129,7 +324,7 @@
|
|
|
129
324
|
|
|
130
325
|
.mds-btn.btn:active {
|
|
131
326
|
background-color: var(--mds-bg-interactive-primary-active);
|
|
132
|
-
|
|
327
|
+
box-shadow: none;
|
|
133
328
|
}
|
|
134
329
|
|
|
135
330
|
.mds-btn.btn:disabled {
|
|
@@ -142,7 +337,7 @@
|
|
|
142
337
|
|
|
143
338
|
.mds-btn.btn.btn-secondary {
|
|
144
339
|
background-color: var(--mds-bg-interactive-secondary-default);
|
|
145
|
-
color: var(--mds-text-
|
|
340
|
+
color: var(--mds-text-subtle);
|
|
146
341
|
}
|
|
147
342
|
|
|
148
343
|
.mds-btn.btn.btn-secondary:hover {
|
|
@@ -155,6 +350,7 @@
|
|
|
155
350
|
|
|
156
351
|
.mds-btn.btn.btn-secondary:disabled {
|
|
157
352
|
background-color: var(--mds-bg-interactive-secondary-disabled);
|
|
353
|
+
color: var(--mds-text-muted);
|
|
158
354
|
}
|
|
159
355
|
|
|
160
356
|
/**
|
|
@@ -177,104 +373,374 @@
|
|
|
177
373
|
background-color: var(--mds-bg-interactive-danger-disabled);
|
|
178
374
|
}
|
|
179
375
|
|
|
376
|
+
/**
|
|
377
|
+
* Ghost variants
|
|
378
|
+
*/
|
|
379
|
+
|
|
380
|
+
.mds-btn.btn.btn-ghost {
|
|
381
|
+
background-color: transparent;
|
|
382
|
+
color: var(--mds-text-subtle);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.mds-btn.btn.btn-ghost:hover {
|
|
386
|
+
background-color: var(--mds-bg-interactive-secondary-hover);
|
|
387
|
+
color: var(--mds-text-subtle);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
.mds-btn.btn.btn-ghost:active {
|
|
391
|
+
background-color: var(--mds-bg-interactive-secondary-active);
|
|
392
|
+
color: var(--mds-text-subtle);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
.mds-btn.btn.btn-ghost:disabled {
|
|
396
|
+
background-color: transparent;
|
|
397
|
+
color: var(--mds-text-muted);
|
|
398
|
+
}
|
|
399
|
+
|
|
180
400
|
/**
|
|
181
401
|
* Outline Primary variants
|
|
182
402
|
*/
|
|
183
403
|
|
|
184
|
-
.mds-btn.btn
|
|
404
|
+
.mds-btn.btn:is(
|
|
405
|
+
.btn-outline-primary,
|
|
406
|
+
.btn-outline-secondary,
|
|
407
|
+
.btn-outline-danger
|
|
408
|
+
) {
|
|
185
409
|
background-color: transparent;
|
|
186
|
-
border: var(--mds-stroke-weight-sm) solid
|
|
187
|
-
|
|
410
|
+
border: var(--mds-stroke-weight-sm) solid transparent;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
.mds-btn.btn.btn-outline-primary {
|
|
414
|
+
border-color: var(--mds-border-interactive-primary-default);
|
|
188
415
|
color: var(--mds-text-link-primary-default);
|
|
189
416
|
}
|
|
190
417
|
|
|
191
418
|
.mds-btn.btn-outline-primary:hover {
|
|
419
|
+
border-color: var(--mds-bg-interactive-primary-hover);
|
|
192
420
|
background-color: var(--mds-bg-interactive-primary-hover);
|
|
193
421
|
color: var(--mds-text-inverse);
|
|
194
422
|
}
|
|
195
423
|
|
|
196
424
|
.mds-btn.btn-outline-primary:active {
|
|
425
|
+
border-color: var(--mds-bg-interactive-primary-active);
|
|
197
426
|
background-color: var(--mds-bg-interactive-primary-active);
|
|
198
427
|
color: var(--mds-text-inverse);
|
|
199
428
|
}
|
|
200
429
|
|
|
201
430
|
.mds-btn.btn.btn-outline-primary:disabled {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
var(--mds-border-interactive-primary-disabled);
|
|
205
|
-
color: var(--mds-color-blue-300);
|
|
431
|
+
border-color: var(--mds-border-interactive-primary-disabled);
|
|
432
|
+
color: var(--mds-text-link-primary-disabled);
|
|
206
433
|
}
|
|
207
434
|
|
|
208
435
|
/**
|
|
209
436
|
* Outline Secondary variants
|
|
210
437
|
*/
|
|
211
438
|
|
|
212
|
-
.mds-btn.btn-outline-secondary {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
var(--mds-border-interactive-secondary-default);
|
|
216
|
-
color: var(--mds-text-muted);
|
|
439
|
+
.mds-btn.btn.btn-outline-secondary {
|
|
440
|
+
border-color: var(--mds-border-interactive-secondary-default);
|
|
441
|
+
color: var(--mds-text-subtle);
|
|
217
442
|
}
|
|
218
443
|
|
|
219
444
|
.mds-btn.btn-outline-secondary:hover {
|
|
445
|
+
border-color: var(--mds-border-interactive-secondary-hover);
|
|
220
446
|
background-color: var(--mds-border-interactive-secondary-hover);
|
|
221
447
|
color: var(--mds-text-inverse);
|
|
222
448
|
}
|
|
223
449
|
|
|
224
450
|
.mds-btn.btn-outline-secondary:active {
|
|
451
|
+
border-color: var(--mds-border-interactive-secondary-active);
|
|
225
452
|
background-color: var(--mds-border-interactive-secondary-active);
|
|
226
453
|
color: var(--mds-text-inverse);
|
|
227
454
|
}
|
|
228
455
|
|
|
229
456
|
.mds-btn.btn.btn-outline-secondary:disabled {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
var(--mds-border-interactive-secondary-disabled);
|
|
233
|
-
color: var(--mds-color-gray-500);
|
|
457
|
+
border-color: var(--mds-border-interactive-secondary-disabled);
|
|
458
|
+
color: var(--mds-text-muted);
|
|
234
459
|
}
|
|
235
460
|
|
|
236
461
|
/**
|
|
237
462
|
* Outline Danger variants
|
|
238
463
|
*/
|
|
239
464
|
|
|
240
|
-
.mds-btn.btn-outline-danger {
|
|
241
|
-
|
|
242
|
-
border: var(--mds-stroke-weight-sm) solid
|
|
243
|
-
var(--mds-border-interactive-danger-default);
|
|
465
|
+
.mds-btn.btn.btn-outline-danger {
|
|
466
|
+
border-color: var(--mds-border-interactive-danger-default);
|
|
244
467
|
color: var(--mds-text-danger);
|
|
245
468
|
}
|
|
246
469
|
|
|
247
470
|
.mds-btn.btn-outline-danger:hover {
|
|
248
|
-
|
|
471
|
+
border-color: var(--mds-bg-interactive-danger-hover);
|
|
472
|
+
background-color: var(--mds-bg-interactive-danger-hover);
|
|
249
473
|
color: var(--mds-text-inverse);
|
|
250
474
|
}
|
|
251
475
|
|
|
252
476
|
.mds-btn.btn-outline-danger:active {
|
|
253
|
-
|
|
477
|
+
border-color: var(--mds-bg-interactive-danger-active);
|
|
478
|
+
background-color: var(--mds-bg-interactive-danger-active);
|
|
254
479
|
color: var(--mds-text-inverse);
|
|
255
480
|
}
|
|
256
481
|
|
|
257
482
|
.mds-btn.btn.btn-outline-danger:disabled {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
var(--mds-border-interactive-danger-disabled);
|
|
261
|
-
color: var(--mds-color-red-300);
|
|
483
|
+
border-color: var(--mds-border-interactive-danger-disabled);
|
|
484
|
+
color: var(--mds-text-danger-disabled);
|
|
262
485
|
}
|
|
263
486
|
|
|
264
487
|
/**
|
|
265
488
|
* Size variants
|
|
266
489
|
*/
|
|
267
490
|
|
|
268
|
-
.mds-btn.btn-sm {
|
|
491
|
+
.mds-btn.mds-btn--size-sm {
|
|
269
492
|
padding: var(--mds-spacing-xxs) var(--mds-spacing-xs);
|
|
493
|
+
border-radius: var(--mds-border-radius-xs);
|
|
494
|
+
font-weight: var(--mds-font-weight-medium);
|
|
495
|
+
font-size: var(--mds-font-size-paragraph-small);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
.mds-btn.mds-btn--size-md {
|
|
499
|
+
padding: var(--mds-spacing-xs) var(--mds-spacing-sm);
|
|
500
|
+
font-size: var(--mds-font-size-paragraph-default);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
.mds-btn.mds-btn--size-lg {
|
|
504
|
+
padding: var(--mds-spacing-sm) var(--mds-spacing-md);
|
|
505
|
+
font-size: var(--mds-font-size-paragraph-default);
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
/* Keep outer geometry aligned with filled variants when outline border is present. */
|
|
509
|
+
|
|
510
|
+
.mds-btn.mds-btn--size-sm:is(
|
|
511
|
+
.btn-outline-primary,
|
|
512
|
+
.btn-outline-secondary,
|
|
513
|
+
.btn-outline-danger
|
|
514
|
+
) {
|
|
515
|
+
padding: calc(var(--mds-spacing-xxs) - var(--mds-stroke-weight-sm))
|
|
516
|
+
calc(var(--mds-spacing-xs) - var(--mds-stroke-weight-sm));
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
.mds-btn.mds-btn--size-md:is(
|
|
520
|
+
.btn-outline-primary,
|
|
521
|
+
.btn-outline-secondary,
|
|
522
|
+
.btn-outline-danger
|
|
523
|
+
) {
|
|
524
|
+
padding: calc(var(--mds-spacing-xs) - var(--mds-stroke-weight-sm))
|
|
525
|
+
calc(var(--mds-spacing-sm) - var(--mds-stroke-weight-sm));
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
.mds-btn.mds-btn--size-lg:is(
|
|
529
|
+
.btn-outline-primary,
|
|
530
|
+
.btn-outline-secondary,
|
|
531
|
+
.btn-outline-danger
|
|
532
|
+
) {
|
|
533
|
+
padding: calc(var(--mds-spacing-sm) - var(--mds-stroke-weight-sm))
|
|
534
|
+
calc(var(--mds-spacing-md) - var(--mds-stroke-weight-sm));
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
.mds-btn.mds-btn--icon-only:is(
|
|
538
|
+
.btn-outline-primary,
|
|
539
|
+
.btn-outline-secondary,
|
|
540
|
+
.btn-outline-danger
|
|
541
|
+
) {
|
|
542
|
+
padding: calc(var(--mds-spacing-xs) - var(--mds-stroke-weight-sm));
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
.mds-btn.mds-btn--icon-only.mds-btn--size-sm:is(
|
|
546
|
+
.btn-outline-primary,
|
|
547
|
+
.btn-outline-secondary,
|
|
548
|
+
.btn-outline-danger
|
|
549
|
+
) {
|
|
550
|
+
padding: calc(var(--mds-spacing-xxs) - var(--mds-stroke-weight-sm));
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
.mds-btn.mds-btn--icon-only.mds-btn--size-lg:is(
|
|
554
|
+
.btn-outline-primary,
|
|
555
|
+
.btn-outline-secondary,
|
|
556
|
+
.btn-outline-danger
|
|
557
|
+
) {
|
|
558
|
+
padding: calc(var(--mds-spacing-xs) - var(--mds-stroke-weight-sm));
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
.mds-checkbox {
|
|
562
|
+
display: inline-grid;
|
|
563
|
+
grid-template-columns: auto auto;
|
|
564
|
+
align-items: center;
|
|
565
|
+
align-self: start;
|
|
566
|
+
min-height: var(--mds-icons-lg);
|
|
567
|
+
padding: var(--mds-spacing-none);
|
|
568
|
+
column-gap: var(--mds-spacing-xs);
|
|
569
|
+
row-gap: var(--mds-spacing-xxs);
|
|
570
|
+
|
|
571
|
+
font-family: var(--mds-font-family-base);
|
|
572
|
+
font-size: var(--mds-font-size-paragraph-default);
|
|
573
|
+
font-weight: var(--mds-font-weight-regular);
|
|
574
|
+
line-height: var(--mds-line-height-paragraph-xs);
|
|
575
|
+
letter-spacing: var(--mds-letter-spacing-default);
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
.mds-checkbox-input {
|
|
579
|
+
border-radius: var(--mds-border-radius-xs);
|
|
580
|
+
border: var(--mds-stroke-weight-sm) solid
|
|
581
|
+
var(--mds-border-interactive-secondary-default);
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
.mds-checkbox .mds-checkbox-input {
|
|
585
|
+
/* Bootstrap applies float/offset styles to .form-check-input for indented label layouts.
|
|
586
|
+
Match selector specificity and reset float/margins for the grid-based sibling layout. */
|
|
587
|
+
margin: 0;
|
|
588
|
+
float: none;
|
|
589
|
+
background-color: var(--mds-bg-surface-default);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
.mds-checkbox-input:checked {
|
|
593
|
+
background-color: var(--mds-bg-interactive-primary-default);
|
|
594
|
+
border-color: transparent;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
.mds-checkbox-input:indeterminate {
|
|
598
|
+
background-color: var(--mds-bg-interactive-primary-default);
|
|
599
|
+
border-color: transparent;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
.mds-checkbox-input:disabled {
|
|
603
|
+
border-color: var(--mds-border-interactive-secondary-disabled);
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
.mds-checkbox-input:disabled:checked {
|
|
607
|
+
background-color: var(--mds-bg-interactive-primary-disabled);
|
|
608
|
+
border-color: transparent;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
.mds-checkbox-input:disabled:indeterminate {
|
|
612
|
+
background-color: var(--mds-bg-interactive-primary-disabled);
|
|
613
|
+
border-color: transparent;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
.mds-checkbox-input.is-invalid {
|
|
617
|
+
border-color: var(--mds-border-interactive-danger-default);
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
.mds-checkbox-input.is-invalid:checked {
|
|
621
|
+
background-color: var(--mds-bg-interactive-danger-default);
|
|
622
|
+
border-color: transparent;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
.mds-checkbox-input.is-invalid:indeterminate {
|
|
626
|
+
background-color: var(--mds-bg-interactive-danger-default);
|
|
627
|
+
border-color: transparent;
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
.mds-checkbox-input.is-invalid:disabled {
|
|
631
|
+
background-color: var(--mds-bg-interactive-secondary-disabled);
|
|
632
|
+
border-color: var(--mds-border-interactive-secondary-disabled);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
.mds-checkbox-input.is-invalid:disabled:checked {
|
|
636
|
+
background-color: var(--mds-bg-interactive-primary-disabled);
|
|
637
|
+
border-color: transparent;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
.mds-checkbox-input.is-invalid:disabled:indeterminate {
|
|
641
|
+
background-color: var(--mds-bg-interactive-primary-disabled);
|
|
642
|
+
border-color: transparent;
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
.mds-checkbox-input:focus,
|
|
646
|
+
.mds-checkbox-input.is-invalid:focus {
|
|
647
|
+
/* Reset Bootstrap's :focus box-shadow; our ring is applied on :focus-visible only */
|
|
648
|
+
box-shadow: none;
|
|
649
|
+
outline: none;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
/* Bootstrap also sets border-color on :focus. Restore the correct border for each state,
|
|
653
|
+
excluding checked/indeterminate which keep their transparent border. */
|
|
654
|
+
|
|
655
|
+
.mds-checkbox-input:focus:not(:checked):not(:indeterminate) {
|
|
656
|
+
border-color: var(--mds-border-interactive-secondary-default);
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
.mds-checkbox-input.is-invalid:focus:not(:checked):not(:indeterminate) {
|
|
660
|
+
border-color: var(--mds-border-interactive-danger-default);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
.mds-checkbox-input:focus-visible {
|
|
664
|
+
outline: var(--mds-stroke-weight-md) solid var(--mds-focus-default);
|
|
665
|
+
outline-offset: var(--mds-spacing-offset);
|
|
666
|
+
box-shadow: none;
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
.mds-checkbox-input.is-invalid:focus-visible {
|
|
670
|
+
outline: var(--mds-stroke-weight-md) solid var(--mds-border-feedback-danger);
|
|
671
|
+
outline-offset: var(--mds-spacing-offset);
|
|
672
|
+
box-shadow: none;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
.mds-checkbox .form-check-label,
|
|
676
|
+
.mds-checkbox .mds-checkbox-label {
|
|
677
|
+
display: flex;
|
|
678
|
+
align-items: center;
|
|
679
|
+
/* In the radio-style sibling layout, the checkbox should align to the label text line,
|
|
680
|
+
not to an expanded label hit area. Keep the label box tight and let htmlFor preserve click behavior. */
|
|
681
|
+
padding: 0;
|
|
682
|
+
color: var(--mds-text-default);
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
.mds-checkbox .mds-checkbox-label-text {
|
|
686
|
+
min-width: 0;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
.mds-checkbox .mds-checkbox-input:disabled ~ .form-check-label,
|
|
690
|
+
.mds-checkbox .mds-checkbox-input:disabled ~ .mds-checkbox-label {
|
|
691
|
+
color: var(--mds-text-muted);
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
.mds-checkbox .mds-checkbox-input.is-invalid ~ .form-check-label,
|
|
695
|
+
.mds-checkbox .mds-checkbox-input.is-invalid ~ .mds-checkbox-label {
|
|
696
|
+
color: var(--mds-text-danger);
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
/* Disabled takes precedence over invalid — restore muted colour when both are active. */
|
|
700
|
+
|
|
701
|
+
.mds-checkbox .mds-checkbox-input.is-invalid:disabled ~ .form-check-label,
|
|
702
|
+
.mds-checkbox .mds-checkbox-input.is-invalid:disabled ~ .mds-checkbox-label {
|
|
703
|
+
color: var(--mds-text-muted);
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
.mds-checkbox-required {
|
|
707
|
+
color: var(--mds-text-danger);
|
|
708
|
+
margin-inline-start: var(--mds-spacing-xxs);
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
.mds-checkbox .invalid-feedback,
|
|
712
|
+
.mds-checkbox .mds-checkbox-feedback {
|
|
713
|
+
grid-column: 2;
|
|
270
714
|
font-size: var(--mds-font-size-paragraph-small);
|
|
271
|
-
|
|
715
|
+
font-weight: var(--mds-font-weight-medium);
|
|
716
|
+
line-height: var(--mds-line-height-paragraph-xs);
|
|
272
717
|
}
|
|
273
718
|
|
|
274
|
-
.mds-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
719
|
+
.mds-checkbox .invalid-feedback,
|
|
720
|
+
.mds-checkbox .mds-checkbox-feedback.mds-checkbox-supporting-text {
|
|
721
|
+
margin: 0;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
.mds-checkbox .invalid-feedback {
|
|
725
|
+
color: var(--mds-text-danger);
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
/* In the default state supporting text is subtle. In the invalid state use danger to match
|
|
729
|
+
the label colour \u2014 matching Figma where the label container sets the colour for both. */
|
|
730
|
+
|
|
731
|
+
.mds-checkbox .mds-checkbox-feedback.mds-checkbox-supporting-text {
|
|
732
|
+
color: var(--mds-text-subtle);
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
.mds-checkbox
|
|
736
|
+
.mds-checkbox-input.is-invalid
|
|
737
|
+
~ .mds-checkbox-feedback.mds-checkbox-supporting-text {
|
|
738
|
+
color: var(--mds-text-danger);
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
.mds-checkbox .mds-checkbox-input:disabled ~ .invalid-feedback,
|
|
742
|
+
.mds-checkbox .mds-checkbox-input:disabled ~ .mds-checkbox-feedback {
|
|
743
|
+
opacity: 0.5;
|
|
278
744
|
}
|
|
279
745
|
|
|
280
746
|
.mds-close-button.btn-close {
|
|
@@ -353,7 +819,7 @@
|
|
|
353
819
|
font-family: var(--mds-font-family-base, Arial, sans-serif);
|
|
354
820
|
font-size: var(--mds-font-size-body, 1rem);
|
|
355
821
|
font-weight: var(--mds-font-weight-regular, 400);
|
|
356
|
-
line-height: var(--mds-line-height-paragraph-
|
|
822
|
+
line-height: var(--mds-line-height-paragraph-xs, 0.75rem);
|
|
357
823
|
letter-spacing: var(--mds-letter-spacing, 0);
|
|
358
824
|
}
|
|
359
825
|
|
|
@@ -448,7 +914,6 @@
|
|
|
448
914
|
.mds-form-check .form-check-label,
|
|
449
915
|
.mds-form-check .mds-form-check-label {
|
|
450
916
|
color: var(--mds-text-default, #1d2125);
|
|
451
|
-
cursor: pointer;
|
|
452
917
|
}
|
|
453
918
|
|
|
454
919
|
/* Use sibling selector so the label reflects the input's disabled/invalid state */
|
|
@@ -456,8 +921,6 @@
|
|
|
456
921
|
.mds-form-check .mds-form-check-input:disabled ~ .form-check-label,
|
|
457
922
|
.mds-form-check .mds-form-check-input:disabled ~ .mds-form-check-label {
|
|
458
923
|
color: var(--mds-text-muted);
|
|
459
|
-
/* Disabled inputs are not interactive — suppress the pointer cursor on the label */
|
|
460
|
-
cursor: default;
|
|
461
924
|
}
|
|
462
925
|
|
|
463
926
|
.mds-form-check .mds-form-check-input.is-invalid ~ .form-check-label,
|
|
@@ -474,6 +937,7 @@
|
|
|
474
937
|
grid-column: 2;
|
|
475
938
|
font-size: var(--mds-font-size-paragraph-small, 0.875rem);
|
|
476
939
|
font-weight: var(--mds-font-weight-medium, 500);
|
|
940
|
+
line-height: var(--mds-line-height-paragraph-xs, 0.75rem);
|
|
477
941
|
color: var(--mds-text-danger);
|
|
478
942
|
}
|
|
479
943
|
|
|
@@ -547,13 +1011,13 @@
|
|
|
547
1011
|
--mds-activity-icon-resource-icon: var(--mds-color-cyan-500);
|
|
548
1012
|
--mds-bg-feedback-danger-light: var(--mds-color-red-50);
|
|
549
1013
|
--mds-bg-feedback-danger-subtle: var(--mds-color-red-100);
|
|
550
|
-
--mds-bg-feedback-info-default: var(--mds-color-cyan-
|
|
1014
|
+
--mds-bg-feedback-info-default: var(--mds-color-cyan-600);
|
|
551
1015
|
--mds-bg-feedback-info-light: var(--mds-color-cyan-50);
|
|
552
1016
|
--mds-bg-feedback-info-subtle: var(--mds-color-cyan-100);
|
|
553
1017
|
--mds-bg-feedback-primary-default: var(--mds-color-blue-500);
|
|
554
1018
|
--mds-bg-feedback-primary-light: var(--mds-color-blue-50);
|
|
555
1019
|
--mds-bg-feedback-primary-subtle: var(--mds-color-blue-100);
|
|
556
|
-
--mds-bg-feedback-secondary-default: var(--mds-color-gray-
|
|
1020
|
+
--mds-bg-feedback-secondary-default: var(--mds-color-gray-300);
|
|
557
1021
|
--mds-bg-feedback-secondary-subtle: var(--mds-color-gray-100);
|
|
558
1022
|
--mds-bg-feedback-success-default: var(--mds-color-green-500);
|
|
559
1023
|
--mds-bg-feedback-success-light: var(--mds-color-green-50);
|
|
@@ -571,9 +1035,9 @@
|
|
|
571
1035
|
--mds-bg-interactive-primary-default-light: var(--mds-color-blue-50);
|
|
572
1036
|
--mds-bg-interactive-primary-disabled: var(--mds-color-blue-200);
|
|
573
1037
|
--mds-bg-interactive-primary-hover: var(--mds-color-blue-600);
|
|
574
|
-
--mds-bg-interactive-secondary-default: var(--mds-color-gray-
|
|
1038
|
+
--mds-bg-interactive-secondary-default: var(--mds-color-gray-300);
|
|
575
1039
|
--mds-bg-interactive-secondary-disabled: var(--mds-color-gray-200);
|
|
576
|
-
--mds-bg-interactive-secondary-hover: var(--mds-color-gray-
|
|
1040
|
+
--mds-bg-interactive-secondary-hover: var(--mds-color-gray-400);
|
|
577
1041
|
--mds-bg-surface-default: var(--mds-color-gray-white);
|
|
578
1042
|
--mds-bg-surface-strong: var(--mds-color-gray-200);
|
|
579
1043
|
--mds-bg-surface-subtle: var(--mds-color-gray-100);
|
|
@@ -589,7 +1053,7 @@
|
|
|
589
1053
|
--mds-border-interactive-primary-active: var(--mds-color-blue-600);
|
|
590
1054
|
--mds-border-interactive-primary-disabled: var(--mds-color-blue-300);
|
|
591
1055
|
--mds-border-interactive-secondary-active: var(--mds-color-gray-700);
|
|
592
|
-
--mds-border-interactive-secondary-default: var(--mds-color-gray-
|
|
1056
|
+
--mds-border-interactive-secondary-default: var(--mds-color-gray-500);
|
|
593
1057
|
--mds-border-interactive-secondary-disabled: var(--mds-color-gray-500);
|
|
594
1058
|
--mds-border-interactive-secondary-hover: var(--mds-color-gray-600);
|
|
595
1059
|
--mds-border-subtle: var(--mds-color-gray-200);
|
|
@@ -751,7 +1215,7 @@
|
|
|
751
1215
|
--mds-scale-1700: 6rem;
|
|
752
1216
|
--mds-scale-1800: 50rem;
|
|
753
1217
|
--mds-typography-font-family-monospace: Menlo;
|
|
754
|
-
--mds-typography-font-family-sans-serif:
|
|
1218
|
+
--mds-typography-font-family-sans-serif: Noto sans;
|
|
755
1219
|
--mds-typography-font-size-0: 0rem;
|
|
756
1220
|
--mds-typography-font-size-1: 1rem;
|
|
757
1221
|
--mds-typography-font-size-2: 2rem;
|