@threadlabs/looma 0.41.2 → 0.42.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/components/ui-button/ui-button.html +33 -12
- package/components/ui-button/ui-button.js +2 -2
- package/components/ui-callout/ui-callout.html +1 -1
- package/components/ui-card/ui-card.html +7 -7
- package/components/ui-checkbox/ui-checkbox.html +1 -1
- package/components/ui-dialog/ui-dialog.html +8 -10
- package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +1 -1
- package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +1 -1
- package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +1 -1
- package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +2 -2
- package/components/ui-icon-button/ui-icon-button.html +45 -10
- package/components/ui-light-editor/ui-light-editor.html +1 -1
- package/components/ui-menu/ui-menu.html +8 -10
- package/components/ui-menu-item/ui-menu-item.html +1 -1
- package/components/ui-popover/ui-popover.html +9 -11
- package/components/ui-radio/ui-radio.html +53 -1
- package/components/ui-section/ui-section.html +1 -1
- package/components/ui-status-message/ui-status-message.html +1 -1
- package/components/ui-switch/ui-switch.html +5 -2
- package/components/ui-tabs/ui-tabs.html +3 -3
- package/components/ui-text/ui-text.html +2 -2
- package/components/ui-tooltip/ui-tooltip.html +8 -10
- package/dist/index.js +1 -1
- package/docs/README.md +5 -1
- package/docs/catalog.json +405 -33
- package/docs/customizer-render.mjs +9 -5
- package/docs/customizer.js +2 -0
- package/docs/fonts.mjs +1 -1
- package/docs/theme.mjs +136 -35
- package/package.json +1 -1
- package/styles/ui-button.css +33 -12
- package/styles/ui-callout.css +1 -1
- package/styles/ui-card.css +6 -6
- package/styles/ui-checkbox.css +1 -1
- package/styles/ui-dialog.css +17 -21
- package/styles/ui-editor-mention-menu-item.css +1 -1
- package/styles/ui-editor-mention-menu.css +1 -1
- package/styles/ui-editor-table-context-menu.css +1 -1
- package/styles/ui-editor-table-toolbar.css +2 -2
- package/styles/ui-icon-button.css +45 -10
- package/styles/ui-light-editor.css +2 -2
- package/styles/ui-menu-item.css +1 -1
- package/styles/ui-menu.css +9 -11
- package/styles/ui-popover.css +10 -12
- package/styles/ui-radio.css +62 -1
- package/styles/ui-section.css +1 -1
- package/styles/ui-status-message.css +1 -1
- package/styles/ui-switch.css +5 -2
- package/styles/ui-tabs.css +3 -3
- package/styles/ui-text.css +2 -2
- package/styles/ui-tooltip.css +9 -11
- package/theme-system.css +10 -8
- package/tokens.css +23 -0
- package/vue/UiButton.vue +45 -12
- package/vue/UiCallout.vue +1 -1
- package/vue/UiCard.vue +7 -13
- package/vue/UiCheckbox.vue +1 -1
- package/vue/UiDialog.vue +21 -45
- package/vue/UiEditorMentionMenu.vue +1 -1
- package/vue/UiEditorMentionMenuItem.vue +1 -1
- package/vue/UiEditorTableContextMenu.vue +1 -1
- package/vue/UiEditorTableToolbar.vue +2 -2
- package/vue/UiIconButton.vue +45 -10
- package/vue/UiLightEditor.vue +2 -2
- package/vue/UiMenu.vue +11 -21
- package/vue/UiMenuItem.vue +1 -1
- package/vue/UiPopover.vue +12 -22
- package/vue/UiRadio.vue +57 -1
- package/vue/UiSection.vue +1 -1
- package/vue/UiStatusMessage.vue +1 -1
- package/vue/UiSwitch.vue +5 -2
- package/vue/UiTabs.vue +3 -3
- package/vue/UiText.vue +2 -2
- package/vue/UiTooltip.vue +11 -21
- package/vue/chunks/UiButton.js +1 -1
- package/vue/chunks/UiCallout.js +1 -1
- package/vue/chunks/UiCard.js +2 -2
- package/vue/chunks/UiCheckbox.js +1 -1
- package/vue/chunks/UiDialog.js +1 -1
- package/vue/chunks/UiEditorMentionMenu.js +1 -1
- package/vue/chunks/UiEditorMentionMenuItem.js +1 -1
- package/vue/chunks/UiEditorTableContextMenu.js +1 -1
- package/vue/chunks/UiEditorTableToolbar.js +1 -1
- package/vue/chunks/UiIconButton.js +1 -1
- package/vue/chunks/UiLightEditor.js +1 -1
- package/vue/chunks/UiMenu.js +1 -1
- package/vue/chunks/UiMenuItem.js +1 -1
- package/vue/chunks/UiPopover.js +1 -1
- package/vue/chunks/UiRadio.js +1 -1
- package/vue/chunks/UiSection.js +1 -1
- package/vue/chunks/UiStatusMessage.js +1 -1
- package/vue/chunks/UiSwitch.js +1 -1
- package/vue/chunks/UiTabs.js +1 -1
- package/vue/chunks/UiText.js +1 -1
- package/vue/chunks/UiTooltip.js +1 -1
- package/vue/components.css +342 -233
- package/vue/editor/index.js +1 -1
|
@@ -197,12 +197,15 @@
|
|
|
197
197
|
inset calc(-1 * var(--_ui-action-start)) -1px 0 light-dark(rgb(0 0 0 / 0.08), rgb(0 0 0 / 0.08))
|
|
198
198
|
);
|
|
199
199
|
--_ui-action-shadow: var(--_ui-action-edge), 0 1px 2px light-dark(rgb(0 0 0 / 0.10), rgb(0 0 0 / 0.20));
|
|
200
|
+
--_tone-border: var(--ui-accent-border, var(--ui-accent));
|
|
201
|
+
--_tone-hover-border: var(--ui-accent-hover-border, var(--ui-accent-hover));
|
|
202
|
+
--_tone-active-border: var(--ui-accent-active-border, var(--ui-accent-active));
|
|
200
203
|
--_tone-highlight: var(--ui-accent-highlight, none);
|
|
201
204
|
--_tone-glow: var(--ui-accent-glow, 0 0 transparent);
|
|
202
205
|
--_hue: var(--ui-accent);
|
|
203
206
|
--_hue-hover: var(--ui-accent-hover);
|
|
204
207
|
--_hue-active: var(--ui-accent-active);
|
|
205
|
-
--_hue-text: var(--ui-accent-
|
|
208
|
+
--_hue-text: var(--ui-accent-subtle-text);
|
|
206
209
|
--_on-hue: var(--ui-on-accent);
|
|
207
210
|
|
|
208
211
|
--_tone: var(--_hue);
|
|
@@ -240,9 +243,9 @@
|
|
|
240
243
|
min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
|
|
241
244
|
border-style: solid;
|
|
242
245
|
border-width: var(--ui-border-width);
|
|
243
|
-
border-color: var(--ui-button-border, var(--_tone));
|
|
246
|
+
border-color: var(--ui-button-border, var(--_tone-text));
|
|
244
247
|
border-radius: var(--ui-button-radius, var(--ui-action-radius, var(--ui-radius-md)));
|
|
245
|
-
background-color: var(--ui-button-surface, oklch(from var(--_tone) l c h / 5%));
|
|
248
|
+
background-color: var(--ui-button-surface, oklch(from var(--_tone) l c h / calc(5% * var(--ui-tonal-opacity, 1))));
|
|
246
249
|
color: var(--ui-button-text, var(--_tone-text));
|
|
247
250
|
font: inherit;
|
|
248
251
|
font-weight: var(--ui-font-medium);
|
|
@@ -385,8 +388,8 @@
|
|
|
385
388
|
/* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
|
|
386
389
|
is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
|
|
387
390
|
:host:hover:not(:disabled, [aria-disabled="true"]) {
|
|
388
|
-
border-color: var(--ui-button-hover-border, var(--_tone-
|
|
389
|
-
background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
|
|
391
|
+
border-color: var(--ui-button-hover-border, var(--_tone-text));
|
|
392
|
+
background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / calc(12% * var(--ui-tonal-opacity, 1))));
|
|
390
393
|
}
|
|
391
394
|
|
|
392
395
|
:host[data-appearance="card"][data-tone="neutral"] {
|
|
@@ -406,13 +409,13 @@
|
|
|
406
409
|
/* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
|
|
407
410
|
:host:active:not(:disabled, [aria-disabled="true"]) {
|
|
408
411
|
scale: var(--ui-press-scale, 1);
|
|
409
|
-
background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / 18%));
|
|
412
|
+
background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / calc(18% * var(--ui-tonal-opacity, 1))));
|
|
410
413
|
background-image: none;
|
|
411
414
|
box-shadow: var(--ui-pressed);
|
|
412
415
|
}
|
|
413
416
|
|
|
414
417
|
:host[data-appearance="solid"], :host[data-appearance="danger"] {
|
|
415
|
-
border-color: var(--_tone);
|
|
418
|
+
border-color: var(--ui-button-border, var(--_tone-border));
|
|
416
419
|
background-color: var(--_tone);
|
|
417
420
|
color: var(--_on-tone);
|
|
418
421
|
background-image: var(--_tone-highlight);
|
|
@@ -421,14 +424,15 @@
|
|
|
421
424
|
var(--_tone-glow);
|
|
422
425
|
}
|
|
423
426
|
|
|
424
|
-
:
|
|
427
|
+
:host[data-appearance="solid"]:hover:not(:disabled, [aria-disabled="true"]),
|
|
428
|
+
:host[data-appearance="danger"]:hover:not(:disabled, [aria-disabled="true"]) {
|
|
425
429
|
background-color: var(--_tone-hover);
|
|
426
|
-
border-color: var(--_tone-hover);
|
|
430
|
+
border-color: var(--ui-button-hover-border, var(--_tone-hover-border));
|
|
427
431
|
}
|
|
428
432
|
|
|
429
433
|
:is(:host[data-appearance="solid"], :host[data-appearance="danger"]):active:not(:disabled, [aria-disabled="true"]) {
|
|
430
434
|
background-color: var(--_tone-active);
|
|
431
|
-
border-color: var(--_tone-active);
|
|
435
|
+
border-color: var(--_tone-active-border);
|
|
432
436
|
background-image: none;
|
|
433
437
|
box-shadow: var(--ui-pressed);
|
|
434
438
|
}
|
|
@@ -436,6 +440,9 @@
|
|
|
436
440
|
/* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
|
|
437
441
|
destructive secondary action, not a special case. */
|
|
438
442
|
:host[data-tone="neutral"] {
|
|
443
|
+
--_tone-border: var(--ui-neutral-border, var(--ui-neutral-surface));
|
|
444
|
+
--_tone-hover-border: var(--ui-neutral-hover-border, var(--ui-neutral-hover));
|
|
445
|
+
--_tone-active-border: var(--ui-neutral-active-border, var(--ui-neutral-active));
|
|
439
446
|
--_tone-highlight: var(--ui-neutral-highlight, none);
|
|
440
447
|
--_tone-glow: var(--ui-neutral-glow, 0 0 transparent);
|
|
441
448
|
--_hue: var(--ui-text);
|
|
@@ -446,7 +453,7 @@
|
|
|
446
453
|
}
|
|
447
454
|
|
|
448
455
|
:host[data-tone="neutral"][data-appearance="solid"] {
|
|
449
|
-
border-color: var(--ui-button-border, var(--
|
|
456
|
+
border-color: var(--ui-button-border, var(--_tone-border));
|
|
450
457
|
background-color: var(--ui-button-surface, var(--ui-neutral-surface));
|
|
451
458
|
color: var(--ui-button-text, var(--ui-text));
|
|
452
459
|
}
|
|
@@ -463,13 +470,18 @@
|
|
|
463
470
|
background-color: var(--ui-button-active-surface, var(--ui-neutral-active));
|
|
464
471
|
}
|
|
465
472
|
:host[data-tone="neutral"][data-appearance="solid"]:hover:not(:disabled, [aria-disabled="true"]) {
|
|
473
|
+
border-color: var(--ui-button-hover-border, var(--_tone-hover-border));
|
|
466
474
|
background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
|
|
467
475
|
}
|
|
468
476
|
:host[data-tone="neutral"][data-appearance="solid"]:active:not(:disabled, [aria-disabled="true"]) {
|
|
477
|
+
border-color: var(--_tone-active-border);
|
|
469
478
|
background-color: var(--ui-button-active-surface, var(--ui-neutral-active));
|
|
470
479
|
}
|
|
471
480
|
|
|
472
481
|
:host[data-tone="danger"], :host[data-appearance="danger"] {
|
|
482
|
+
--_tone-border: var(--ui-danger-border, var(--ui-danger));
|
|
483
|
+
--_tone-hover-border: var(--ui-danger-hover-border, var(--ui-danger-hover));
|
|
484
|
+
--_tone-active-border: var(--ui-danger-active-border, var(--ui-danger-active));
|
|
473
485
|
--_tone-highlight: var(--ui-danger-highlight, none);
|
|
474
486
|
--_tone-glow: var(--ui-danger-glow, 0 0 transparent);
|
|
475
487
|
--_hue: var(--ui-danger);
|
|
@@ -480,6 +492,9 @@
|
|
|
480
492
|
}
|
|
481
493
|
|
|
482
494
|
:host[data-tone="success"] {
|
|
495
|
+
--_tone-border: var(--ui-success-border, var(--ui-success));
|
|
496
|
+
--_tone-hover-border: var(--ui-success-hover-border, var(--ui-success-hover));
|
|
497
|
+
--_tone-active-border: var(--ui-success-active-border, var(--ui-success-active));
|
|
483
498
|
--_tone-highlight: var(--ui-success-highlight, none);
|
|
484
499
|
--_tone-glow: var(--ui-success-glow, 0 0 transparent);
|
|
485
500
|
--_hue: var(--ui-success);
|
|
@@ -490,6 +505,9 @@
|
|
|
490
505
|
}
|
|
491
506
|
|
|
492
507
|
:host[data-tone="warning"] {
|
|
508
|
+
--_tone-border: var(--ui-warning-border, var(--ui-warning));
|
|
509
|
+
--_tone-hover-border: var(--ui-warning-hover-border, var(--ui-warning-hover));
|
|
510
|
+
--_tone-active-border: var(--ui-warning-active-border, var(--ui-warning-active));
|
|
493
511
|
--_tone-highlight: var(--ui-warning-highlight, none);
|
|
494
512
|
--_tone-glow: var(--ui-warning-glow, 0 0 transparent);
|
|
495
513
|
--_hue: var(--ui-warning);
|
|
@@ -500,6 +518,9 @@
|
|
|
500
518
|
}
|
|
501
519
|
|
|
502
520
|
:host[data-tone="info"] {
|
|
521
|
+
--_tone-border: var(--ui-info-border, var(--ui-info));
|
|
522
|
+
--_tone-hover-border: var(--ui-info-hover-border, var(--ui-info-hover));
|
|
523
|
+
--_tone-active-border: var(--ui-info-active-border, var(--ui-info-active));
|
|
503
524
|
--_tone-highlight: var(--ui-info-highlight, none);
|
|
504
525
|
--_tone-glow: var(--ui-info-glow, 0 0 transparent);
|
|
505
526
|
--_hue: var(--ui-info);
|
|
@@ -545,7 +566,7 @@
|
|
|
545
566
|
|
|
546
567
|
/* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
|
|
547
568
|
:host[data-appearance="ghost"]:hover:not(:disabled, [aria-disabled="true"]) {
|
|
548
|
-
background-color: var(--ui-button-ghost-hover-surface, oklch(from var(--_tone) l c h / 10%));
|
|
569
|
+
background-color: var(--ui-button-ghost-hover-surface, oklch(from var(--_tone) l c h / calc(10% * var(--ui-tonal-opacity, 1))));
|
|
549
570
|
border-color: transparent;
|
|
550
571
|
}
|
|
551
572
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Disabled or loading actions cannot activate, navigate, submit, or notify click consumers.
|
|
2
2
|
export function connect(host) {
|
|
3
3
|
const onClick = (event) => {
|
|
4
|
-
if (!host.props.loading.value && !host.props.pending.value) return;
|
|
4
|
+
if (!host.props.disabled.value && !host.props.loading.value && !host.props.pending.value) return;
|
|
5
5
|
event.preventDefault();
|
|
6
6
|
event.stopImmediatePropagation();
|
|
7
7
|
};
|
|
@@ -216,7 +216,7 @@
|
|
|
216
216
|
|
|
217
217
|
/* A link in the callout's text is underlined, so it reads as a link by more than colour. */
|
|
218
218
|
.content :slotted(a) {
|
|
219
|
-
color: var(--ui-accent-
|
|
219
|
+
color: var(--ui-accent-subtle-text);
|
|
220
220
|
text-decoration: underline;
|
|
221
221
|
text-decoration-thickness: 0.06em;
|
|
222
222
|
text-underline-offset: 0.18em;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
elevated adds a subtle lift above the page, for a view's one card, such as sign-in. Treatment independently controls decorative material.</prop>
|
|
8
8
|
<prop name="treatment" type="keyword" values="standard, expressive" default="standard"
|
|
9
9
|
>How much of the theme's decorative material the surface expresses. standard preserves its restrained treatment; expressive uses the full material
|
|
10
|
-
treatment. This does not add elevation or require glass.</prop>
|
|
10
|
+
treatment. Its glass rim can transmit and frost the surrounding scene while content remains opaque. Surface separation controls the rim, independently of frosting. This does not add elevation or require glass.</prop>
|
|
11
11
|
<prop name="padding" type="keyword" values="xs, sm, md, lg" default="md"
|
|
12
12
|
>The space inside the card: xs is compact (0.5rem), sm is snug (0.75rem), md is the default (1.5rem), and lg is roomy (2rem).</prop>
|
|
13
13
|
<prop name="tone" type="keyword" values="neutral, accent, info, success, warning, danger" default="neutral"
|
|
@@ -68,9 +68,9 @@
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
:host([treatment="expressive"]) {
|
|
71
|
-
--_ui-panel-glass:
|
|
71
|
+
--_ui-panel-glass: clamp(0, var(--ui-glassiness, 0), 1);
|
|
72
72
|
--_ui-panel-separation: clamp(0, var(--ui-surface-separation, 0), 1);
|
|
73
|
-
--_ui-panel-rim: calc(
|
|
73
|
+
--_ui-panel-rim: calc(var(--_ui-panel-separation) * 8px);
|
|
74
74
|
border-width: calc(var(--ui-border-width) + var(--_ui-panel-rim));
|
|
75
75
|
border-color: transparent;
|
|
76
76
|
background:
|
|
@@ -82,8 +82,8 @@
|
|
|
82
82
|
var(--_ui-card-elevation),
|
|
83
83
|
var(--ui-material-glow, 0 0 transparent),
|
|
84
84
|
inset 0 0 0 var(--ui-border-width) var(--ui-material-edge, var(--ui-border-strong));
|
|
85
|
-
backdrop-filter: blur(calc(var(--_ui-panel-glass) *
|
|
86
|
-
|
|
85
|
+
-webkit-backdrop-filter: blur(calc(var(--_ui-panel-glass) * 32px));
|
|
86
|
+
backdrop-filter: blur(calc(var(--_ui-panel-glass) * 32px));
|
|
87
87
|
}
|
|
88
88
|
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
|
89
89
|
:host([treatment="expressive"]) {
|
|
@@ -95,8 +95,8 @@
|
|
|
95
95
|
background: var(--_ui-card-surface);
|
|
96
96
|
border-width: var(--ui-border-width);
|
|
97
97
|
border-color: var(--ui-border-strong);
|
|
98
|
-
backdrop-filter: none;
|
|
99
98
|
-webkit-backdrop-filter: none;
|
|
99
|
+
backdrop-filter: none;
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
@media (forced-colors: active) {
|
|
@@ -105,8 +105,8 @@
|
|
|
105
105
|
color: CanvasText;
|
|
106
106
|
border: var(--ui-border-width) solid CanvasText;
|
|
107
107
|
box-shadow: none;
|
|
108
|
-
backdrop-filter: none;
|
|
109
108
|
-webkit-backdrop-filter: none;
|
|
109
|
+
backdrop-filter: none;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
border-color: var(--ui-accent-solid);
|
|
154
154
|
background-color: var(--ui-accent-solid);
|
|
155
155
|
background-image: var(--ui-accent-highlight, none);
|
|
156
|
-
box-shadow:
|
|
156
|
+
box-shadow: none;
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
/* The SVG's painted bounds are centred in its viewBox, including its round stroke.
|
|
@@ -112,12 +112,12 @@
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
/* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
|
|
115
|
-
transparency,
|
|
115
|
+
transparency, frosting and edge light belong to the surrounding decorative material. */
|
|
116
116
|
:host {
|
|
117
|
-
--_ui-material-glassiness:
|
|
117
|
+
--_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
|
|
118
118
|
--_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
|
|
119
|
-
--_ui-material-active: clamp(0, calc(
|
|
120
|
-
--_ui-material-rim: calc(
|
|
119
|
+
--_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
|
|
120
|
+
--_ui-material-rim: calc(var(--_ui-material-separation) * var(--_ui-material-scale, 1) * 8px);
|
|
121
121
|
--_ui-material-content-color: var(--ui-dialog-surface, var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated))));
|
|
122
122
|
--_ui-material-rim-color: color-mix(in srgb, var(--ui-material-glass, var(--ui-surface-elevated)) calc(var(--_ui-material-active) * 100%), transparent);
|
|
123
123
|
background:
|
|
@@ -142,10 +142,8 @@
|
|
|
142
142
|
var(--ui-elevation-dialog, var(--ui-shadow-xl))
|
|
143
143
|
)
|
|
144
144
|
);
|
|
145
|
-
backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) *
|
|
146
|
-
|
|
147
|
-
-webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 18px))
|
|
148
|
-
saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 0.18));
|
|
145
|
+
-webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 32px));
|
|
146
|
+
backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 32px));
|
|
149
147
|
}
|
|
150
148
|
|
|
151
149
|
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
|
@@ -157,8 +155,8 @@
|
|
|
157
155
|
@media (prefers-reduced-transparency: reduce) {
|
|
158
156
|
:host {
|
|
159
157
|
background: var(--_ui-material-content-color);
|
|
160
|
-
backdrop-filter: none;
|
|
161
158
|
-webkit-backdrop-filter: none;
|
|
159
|
+
backdrop-filter: none;
|
|
162
160
|
}
|
|
163
161
|
}
|
|
164
162
|
|
|
@@ -167,8 +165,8 @@
|
|
|
167
165
|
background: Canvas;
|
|
168
166
|
border-color: CanvasText;
|
|
169
167
|
box-shadow: none;
|
|
170
|
-
backdrop-filter: none;
|
|
171
168
|
-webkit-backdrop-filter: none;
|
|
169
|
+
backdrop-filter: none;
|
|
172
170
|
}
|
|
173
171
|
}
|
|
174
172
|
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
width: 32px;
|
|
148
148
|
height: 32px;
|
|
149
149
|
flex: 0 0 auto;
|
|
150
|
-
color: var(--ui-accent-
|
|
150
|
+
color: var(--ui-accent-subtle-text);
|
|
151
151
|
background: var(--ui-accent-soft, var(--ui-accent-subtle));
|
|
152
152
|
border-radius: var(--ui-radius-round);
|
|
153
153
|
font-size: var(--ui-font-size-xs);
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
|
|
194
194
|
:host button.active {
|
|
195
195
|
background: var(--ui-accent-soft, var(--ui-accent-subtle));
|
|
196
|
-
color: var(--ui-accent-
|
|
196
|
+
color: var(--ui-accent-subtle-text);
|
|
197
197
|
}
|
|
198
198
|
|
|
199
199
|
.group button {
|
|
@@ -210,7 +210,7 @@
|
|
|
210
210
|
}
|
|
211
211
|
|
|
212
212
|
:host button.danger {
|
|
213
|
-
color: var(--ui-danger);
|
|
213
|
+
color: var(--ui-danger-subtle-text);
|
|
214
214
|
}
|
|
215
215
|
|
|
216
216
|
:host {
|
|
@@ -133,6 +133,10 @@
|
|
|
133
133
|
/* Optional inherited action-group values keep text and icon actions under the same light.
|
|
134
134
|
One fine top/start highlight follows the bottom/end lowlight at a joined action seam.
|
|
135
135
|
The shared theme supplies reflections and glow independently of the resting lift. */
|
|
136
|
+
--_solid-border: var(--ui-accent-border, var(--ui-accent-solid));
|
|
137
|
+
--_solid-hover-border: var(--ui-accent-hover-border, var(--ui-accent-hover));
|
|
138
|
+
--_solid-active-border: var(--ui-accent-active-border, var(--ui-accent-active));
|
|
139
|
+
--_solid-active-surface: var(--ui-accent-active, var(--ui-accent-hover));
|
|
136
140
|
--_tone-highlight: var(--ui-accent-highlight, none);
|
|
137
141
|
--_tone-glow: var(--ui-accent-glow, 0 0 transparent);
|
|
138
142
|
--_ui-action-start: 1px;
|
|
@@ -155,20 +159,28 @@
|
|
|
155
159
|
}
|
|
156
160
|
|
|
157
161
|
:host[data-tone="accent"] {
|
|
162
|
+
--_solid-border: var(--ui-accent-border, var(--ui-accent));
|
|
163
|
+
--_solid-hover-border: var(--ui-accent-hover-border, var(--ui-accent-hover));
|
|
164
|
+
--_solid-active-border: var(--ui-accent-active-border, var(--ui-accent-active));
|
|
165
|
+
--_solid-active-surface: var(--ui-accent-active, var(--ui-accent-hover));
|
|
158
166
|
--_tone-highlight: var(--ui-accent-highlight, none);
|
|
159
167
|
--_tone-glow: var(--ui-accent-glow, 0 0 transparent);
|
|
160
|
-
--_icon-button-border: var(--ui-accent-
|
|
161
|
-
--_icon-button-hover-border: var(--ui-accent-
|
|
168
|
+
--_icon-button-border: var(--ui-accent-subtle-text);
|
|
169
|
+
--_icon-button-hover-border: var(--ui-accent-subtle-text);
|
|
162
170
|
--_icon-button-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
|
|
163
171
|
--_icon-button-outline-surface: color-mix(in srgb, var(--ui-accent-solid) 5%, var(--ui-surface-default));
|
|
164
172
|
color: var(--_icon-button-text);
|
|
165
173
|
}
|
|
166
174
|
|
|
167
175
|
:host[data-tone="danger"] {
|
|
176
|
+
--_solid-border: var(--ui-danger-border, var(--ui-danger));
|
|
177
|
+
--_solid-hover-border: var(--ui-danger-hover-border, var(--ui-danger-hover));
|
|
178
|
+
--_solid-active-border: var(--ui-danger-active-border, var(--ui-danger-active));
|
|
179
|
+
--_solid-active-surface: var(--ui-danger-active, var(--ui-danger-hover));
|
|
168
180
|
--_tone-highlight: var(--ui-danger-highlight, none);
|
|
169
181
|
--_tone-glow: var(--ui-danger-glow, 0 0 transparent);
|
|
170
|
-
--_icon-button-border: var(--ui-danger);
|
|
171
|
-
--_icon-button-hover-border: var(--ui-danger-
|
|
182
|
+
--_icon-button-border: var(--ui-danger-subtle-text);
|
|
183
|
+
--_icon-button-hover-border: var(--ui-danger-subtle-text);
|
|
172
184
|
--_icon-button-text: var(--ui-danger-subtle-text);
|
|
173
185
|
--_icon-button-outline-surface: color-mix(in srgb, var(--ui-danger) 5%, var(--ui-surface-default));
|
|
174
186
|
--_icon-button-solid-surface: var(--ui-danger);
|
|
@@ -178,10 +190,14 @@
|
|
|
178
190
|
}
|
|
179
191
|
|
|
180
192
|
:host[data-tone="success"] {
|
|
193
|
+
--_solid-border: var(--ui-success-border, var(--ui-success));
|
|
194
|
+
--_solid-hover-border: var(--ui-success-hover-border, var(--ui-success-hover));
|
|
195
|
+
--_solid-active-border: var(--ui-success-active-border, var(--ui-success-active));
|
|
196
|
+
--_solid-active-surface: var(--ui-success-active, var(--ui-success-hover));
|
|
181
197
|
--_tone-highlight: var(--ui-success-highlight, none);
|
|
182
198
|
--_tone-glow: var(--ui-success-glow, 0 0 transparent);
|
|
183
|
-
--_icon-button-border: var(--ui-success);
|
|
184
|
-
--_icon-button-hover-border: var(--ui-success-
|
|
199
|
+
--_icon-button-border: var(--ui-success-subtle-text);
|
|
200
|
+
--_icon-button-hover-border: var(--ui-success-subtle-text);
|
|
185
201
|
--_icon-button-text: var(--ui-success-subtle-text);
|
|
186
202
|
--_icon-button-outline-surface: color-mix(in srgb, var(--ui-success) 5%, var(--ui-surface-default));
|
|
187
203
|
--_icon-button-solid-surface: var(--ui-success);
|
|
@@ -191,10 +207,14 @@
|
|
|
191
207
|
}
|
|
192
208
|
|
|
193
209
|
:host[data-tone="warning"] {
|
|
210
|
+
--_solid-border: var(--ui-warning-border, var(--ui-warning));
|
|
211
|
+
--_solid-hover-border: var(--ui-warning-hover-border, var(--ui-warning-hover));
|
|
212
|
+
--_solid-active-border: var(--ui-warning-active-border, var(--ui-warning-active));
|
|
213
|
+
--_solid-active-surface: var(--ui-warning-active, var(--ui-warning-hover));
|
|
194
214
|
--_tone-highlight: var(--ui-warning-highlight, none);
|
|
195
215
|
--_tone-glow: var(--ui-warning-glow, 0 0 transparent);
|
|
196
|
-
--_icon-button-border: var(--ui-warning);
|
|
197
|
-
--_icon-button-hover-border: var(--ui-warning-
|
|
216
|
+
--_icon-button-border: var(--ui-warning-subtle-text);
|
|
217
|
+
--_icon-button-hover-border: var(--ui-warning-subtle-text);
|
|
198
218
|
--_icon-button-text: var(--ui-warning-subtle-text);
|
|
199
219
|
--_icon-button-outline-surface: color-mix(in srgb, var(--ui-warning) 5%, var(--ui-surface-default));
|
|
200
220
|
--_icon-button-solid-surface: var(--ui-warning);
|
|
@@ -204,10 +224,14 @@
|
|
|
204
224
|
}
|
|
205
225
|
|
|
206
226
|
:host[data-tone="info"] {
|
|
227
|
+
--_solid-border: var(--ui-info-border, var(--ui-info));
|
|
228
|
+
--_solid-hover-border: var(--ui-info-hover-border, var(--ui-info-hover));
|
|
229
|
+
--_solid-active-border: var(--ui-info-active-border, var(--ui-info-active));
|
|
230
|
+
--_solid-active-surface: var(--ui-info-active, var(--ui-info-hover));
|
|
207
231
|
--_tone-highlight: var(--ui-info-highlight, none);
|
|
208
232
|
--_tone-glow: var(--ui-info-glow, 0 0 transparent);
|
|
209
|
-
--_icon-button-border: var(--ui-info);
|
|
210
|
-
--_icon-button-hover-border: var(--ui-info-
|
|
233
|
+
--_icon-button-border: var(--ui-info-subtle-text);
|
|
234
|
+
--_icon-button-hover-border: var(--ui-info-subtle-text);
|
|
211
235
|
--_icon-button-text: var(--ui-info-subtle-text);
|
|
212
236
|
--_icon-button-outline-surface: color-mix(in srgb, var(--ui-info) 5%, var(--ui-surface-default));
|
|
213
237
|
--_icon-button-solid-surface: var(--ui-info);
|
|
@@ -218,6 +242,10 @@
|
|
|
218
242
|
|
|
219
243
|
/* Neutral actions share the same quiet surface and border roles as fields. */
|
|
220
244
|
:host[data-tone="neutral"] {
|
|
245
|
+
--_solid-border: var(--ui-neutral-border, var(--ui-neutral-surface));
|
|
246
|
+
--_solid-hover-border: var(--ui-neutral-hover-border, var(--ui-neutral-hover));
|
|
247
|
+
--_solid-active-border: var(--ui-neutral-active-border, var(--ui-neutral-active));
|
|
248
|
+
--_solid-active-surface: var(--ui-neutral-active, var(--ui-neutral-hover));
|
|
221
249
|
--_tone-highlight: var(--ui-neutral-highlight, none);
|
|
222
250
|
--_tone-glow: var(--ui-neutral-glow, 0 0 transparent);
|
|
223
251
|
--_icon-button-outline-surface: transparent;
|
|
@@ -394,6 +422,7 @@
|
|
|
394
422
|
}
|
|
395
423
|
|
|
396
424
|
:host[data-appearance="solid"] {
|
|
425
|
+
border-color: var(--ui-icon-button-border, var(--_solid-border));
|
|
397
426
|
background-color: var(--ui-icon-button-solid-surface, var(--_icon-button-solid-surface, var(--ui-accent-solid)));
|
|
398
427
|
background-image: var(--_tone-highlight);
|
|
399
428
|
color: var(--ui-icon-button-solid-text, var(--_icon-button-solid-text, var(--ui-text-on-accent)));
|
|
@@ -419,6 +448,7 @@
|
|
|
419
448
|
}
|
|
420
449
|
|
|
421
450
|
:host[data-appearance="solid"]:hover:enabled:not([aria-disabled="true"]) {
|
|
451
|
+
border-color: var(--ui-icon-button-hover-border, var(--_solid-hover-border));
|
|
422
452
|
background-color: var(--ui-icon-button-solid-hover-surface, var(--_icon-button-solid-hover-surface, var(--ui-accent-hover)));
|
|
423
453
|
}
|
|
424
454
|
|
|
@@ -480,6 +510,11 @@
|
|
|
480
510
|
var(--ui-focus-halo);
|
|
481
511
|
}
|
|
482
512
|
|
|
513
|
+
:host[data-appearance="solid"]:active:enabled:not([aria-disabled="true"]) {
|
|
514
|
+
background-color: var(--ui-icon-button-active-surface, var(--_solid-active-surface));
|
|
515
|
+
border-color: var(--_solid-active-border);
|
|
516
|
+
}
|
|
517
|
+
|
|
483
518
|
:host:is(:host[data-appearance="outline"], :host[data-appearance="solid"]):active:enabled:not([aria-disabled="true"]) {
|
|
484
519
|
background-image: none;
|
|
485
520
|
box-shadow: var(--ui-pressed);
|
|
@@ -127,12 +127,12 @@
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
/* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
|
|
130
|
-
transparency,
|
|
130
|
+
transparency, frosting and edge light belong to the surrounding decorative material. */
|
|
131
131
|
:host:not([inline]) .surface {
|
|
132
|
-
--_ui-material-glassiness:
|
|
132
|
+
--_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
|
|
133
133
|
--_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
|
|
134
|
-
--_ui-material-active: clamp(0, calc(
|
|
135
|
-
--_ui-material-rim: calc(
|
|
134
|
+
--_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
|
|
135
|
+
--_ui-material-rim: calc(var(--_ui-material-separation) * var(--_ui-material-scale, 0.28) * 8px);
|
|
136
136
|
--_ui-material-content-color: var(--_ui-menu-surface, var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated))));
|
|
137
137
|
--_ui-material-rim-color: color-mix(in srgb, var(--ui-material-glass, var(--ui-surface-elevated)) calc(var(--_ui-material-active) * 100%), transparent);
|
|
138
138
|
background:
|
|
@@ -157,10 +157,8 @@
|
|
|
157
157
|
var(--ui-elevation-overlay, var(--ui-shadow-lg))
|
|
158
158
|
)
|
|
159
159
|
);
|
|
160
|
-
backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) *
|
|
161
|
-
|
|
162
|
-
-webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 18px))
|
|
163
|
-
saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 0.18));
|
|
160
|
+
-webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 32px));
|
|
161
|
+
backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 32px));
|
|
164
162
|
}
|
|
165
163
|
|
|
166
164
|
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
|
@@ -172,8 +170,8 @@
|
|
|
172
170
|
@media (prefers-reduced-transparency: reduce) {
|
|
173
171
|
:host:not([inline]) .surface {
|
|
174
172
|
background: var(--_ui-material-content-color);
|
|
175
|
-
backdrop-filter: none;
|
|
176
173
|
-webkit-backdrop-filter: none;
|
|
174
|
+
backdrop-filter: none;
|
|
177
175
|
}
|
|
178
176
|
}
|
|
179
177
|
|
|
@@ -182,8 +180,8 @@
|
|
|
182
180
|
background: Canvas;
|
|
183
181
|
border-color: CanvasText;
|
|
184
182
|
box-shadow: none;
|
|
185
|
-
backdrop-filter: none;
|
|
186
183
|
-webkit-backdrop-filter: none;
|
|
184
|
+
backdrop-filter: none;
|
|
187
185
|
}
|
|
188
186
|
}
|
|
189
187
|
|
|
@@ -98,12 +98,12 @@
|
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
/* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
|
|
101
|
-
transparency,
|
|
101
|
+
transparency, frosting and edge light belong to the surrounding decorative material. */
|
|
102
102
|
.surface {
|
|
103
|
-
--_ui-material-glassiness:
|
|
103
|
+
--_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
|
|
104
104
|
--_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
|
|
105
|
-
--_ui-material-active: clamp(0, calc(
|
|
106
|
-
--_ui-material-rim: calc(
|
|
105
|
+
--_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
|
|
106
|
+
--_ui-material-rim: calc(var(--_ui-material-separation) * var(--_ui-material-scale, 0.55) * 8px);
|
|
107
107
|
--_ui-material-content-color: var(--_ui-popover-surface, var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated))));
|
|
108
108
|
--_ui-material-rim-color: color-mix(in srgb, var(--ui-material-glass, var(--ui-surface-elevated)) calc(var(--_ui-material-active) * 100%), transparent);
|
|
109
109
|
background:
|
|
@@ -128,10 +128,8 @@
|
|
|
128
128
|
var(--ui-elevation-overlay, var(--ui-shadow-lg))
|
|
129
129
|
)
|
|
130
130
|
);
|
|
131
|
-
backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) *
|
|
132
|
-
|
|
133
|
-
-webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 18px))
|
|
134
|
-
saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 0.18));
|
|
131
|
+
-webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 32px));
|
|
132
|
+
backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 32px));
|
|
135
133
|
}
|
|
136
134
|
|
|
137
135
|
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
|
@@ -143,8 +141,8 @@
|
|
|
143
141
|
@media (prefers-reduced-transparency: reduce) {
|
|
144
142
|
.surface {
|
|
145
143
|
background: var(--_ui-material-content-color);
|
|
146
|
-
backdrop-filter: none;
|
|
147
144
|
-webkit-backdrop-filter: none;
|
|
145
|
+
backdrop-filter: none;
|
|
148
146
|
}
|
|
149
147
|
}
|
|
150
148
|
|
|
@@ -153,8 +151,8 @@
|
|
|
153
151
|
background: Canvas;
|
|
154
152
|
border-color: CanvasText;
|
|
155
153
|
box-shadow: none;
|
|
156
|
-
backdrop-filter: none;
|
|
157
154
|
-webkit-backdrop-filter: none;
|
|
155
|
+
backdrop-filter: none;
|
|
158
156
|
}
|
|
159
157
|
}
|
|
160
158
|
|
|
@@ -165,8 +163,8 @@
|
|
|
165
163
|
border: 0;
|
|
166
164
|
background: transparent;
|
|
167
165
|
box-shadow: none;
|
|
168
|
-
backdrop-filter: none;
|
|
169
166
|
-webkit-backdrop-filter: none;
|
|
167
|
+
backdrop-filter: none;
|
|
170
168
|
}
|
|
171
169
|
|
|
172
170
|
:host(:not(:state(internalOpen))) {
|