@threadlabs/looma 0.37.6 → 0.38.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 +20 -5
- package/components/ui-combobox/ui-combobox.html +24 -3
- package/components/ui-combobox/ui-combobox.js +18 -3
- package/components/ui-icon-button/ui-icon-button.html +17 -8
- package/components/ui-menu-item/ui-menu-item.html +6 -1
- package/components/ui-select/ui-select.html +12 -0
- package/dist/index.js +1 -1
- package/docs/README.md +23 -10
- package/docs/catalog.json +78 -31
- package/docs/customizer-render.mjs +36 -20
- package/docs/customizer.js +76 -25
- package/docs/documentation.css +2 -0
- package/docs/palette.mjs +3 -3
- package/docs/site.mjs +1 -1
- package/docs/theme-session.mjs +1 -0
- package/docs/theme.mjs +11 -10
- package/package.json +2 -2
- package/styles/ui-button.css +19 -9
- package/styles/ui-combobox.css +40 -2
- package/styles/ui-icon-button.css +12 -2
- package/styles/ui-menu-item.css +6 -1
- package/styles/ui-select.css +9 -0
- package/theme-system.css +7 -2
- package/vanilla/UiButton.js +1 -1
- package/vanilla/UiCombobox.d.ts +1 -0
- package/vanilla/UiCombobox.js +38 -37
- package/vanilla/UiIconButton.d.ts +1 -1
- package/vanilla/UiIconButton.js +1 -1
- package/vanilla/UiSelect.d.ts +1 -0
- package/vanilla/UiSelect.js +7 -7
- package/vue/UiButton.vue +30 -12
- package/vue/UiCombobox.d.ts +6 -0
- package/vue/UiCombobox.vue +70 -6
- package/vue/UiIconButton.d.ts +2 -2
- package/vue/UiIconButton.vue +23 -18
- package/vue/UiMenuItem.vue +6 -1
- package/vue/UiSelect.d.ts +6 -0
- package/vue/UiSelect.vue +30 -1
- package/vue/chunks/UiButton.js +4 -4
- package/vue/chunks/UiCombobox.js +72 -46
- package/vue/chunks/UiIconButton.js +6 -7
- package/vue/chunks/UiMenuItem.js +1 -1
- package/vue/chunks/UiSelect.js +27 -2
- package/vue/components.css +126 -25
- package/vue/editor/index.js +2 -3
package/vue/components.css
CHANGED
|
@@ -1123,8 +1123,6 @@ svg,.arc {
|
|
|
1123
1123
|
/* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
|
|
1124
1124
|
is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
|
|
1125
1125
|
|
|
1126
|
-
/* A neutral card encloses content quietly; ordinary outlines keep their action-tone edge. */
|
|
1127
|
-
|
|
1128
1126
|
/* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
|
|
1129
1127
|
|
|
1130
1128
|
/* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
|
|
@@ -1134,9 +1132,6 @@ svg,.arc {
|
|
|
1134
1132
|
|
|
1135
1133
|
/* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
|
|
1136
1134
|
|
|
1137
|
-
/* Pressed, or holding its menu open, a ghost button sinks slightly: a light surface with a faint
|
|
1138
|
-
edge and a soft inner shadow. Lighter than hover, so an open menu's trigger never reads as heavy. */
|
|
1139
|
-
|
|
1140
1135
|
/* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
|
|
1141
1136
|
|
|
1142
1137
|
/* A loading action stays visually active; only an explicitly disabled action takes the
|
|
@@ -1334,6 +1329,11 @@ svg,.arc {
|
|
|
1334
1329
|
:scope[data-appearance="card"][data-tone="neutral"]:hover:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
|
|
1335
1330
|
border-color: var(--ui-button-hover-border, var(--ui-border-strong));
|
|
1336
1331
|
}
|
|
1332
|
+
:scope[data-appearance="card"][aria-pressed="true"]:where([data-hn-ui-button]) {
|
|
1333
|
+
background-color: var(--ui-selection-surface);
|
|
1334
|
+
border-color: var(--ui-selection-border);
|
|
1335
|
+
color: var(--ui-selection-text);
|
|
1336
|
+
}
|
|
1337
1337
|
:scope:active:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
|
|
1338
1338
|
scale: var(--ui-press-scale, 1);
|
|
1339
1339
|
background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / 18%));
|
|
@@ -1373,6 +1373,24 @@ svg,.arc {
|
|
|
1373
1373
|
background-color: var(--ui-button-surface, var(--ui-neutral-surface));
|
|
1374
1374
|
color: var(--ui-button-text, var(--ui-text));
|
|
1375
1375
|
}
|
|
1376
|
+
:scope[data-tone="neutral"][data-appearance="outline"]:where([data-hn-ui-button]) {
|
|
1377
|
+
border-color: var(--ui-button-border, var(--ui-control-border));
|
|
1378
|
+
background-color: var(--ui-button-surface, transparent);
|
|
1379
|
+
}
|
|
1380
|
+
:scope[data-tone="neutral"][data-appearance="outline"]:hover:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
|
|
1381
|
+
border-color: var(
|
|
1382
|
+
--ui-button-hover-border,
|
|
1383
|
+
var(--ui-control-border-hover, var(--ui-control-border))
|
|
1384
|
+
);
|
|
1385
|
+
background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
|
|
1386
|
+
}
|
|
1387
|
+
:scope[data-tone="neutral"][data-appearance="outline"]:active:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
|
|
1388
|
+
border-color: var(
|
|
1389
|
+
--ui-button-hover-border,
|
|
1390
|
+
var(--ui-control-border-hover, var(--ui-control-border))
|
|
1391
|
+
);
|
|
1392
|
+
background-color: var(--ui-button-active-surface, var(--ui-neutral-active));
|
|
1393
|
+
}
|
|
1376
1394
|
:scope[data-tone="neutral"][data-appearance="solid"]:hover:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
|
|
1377
1395
|
background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
|
|
1378
1396
|
}
|
|
@@ -1457,10 +1475,7 @@ svg,.arc {
|
|
|
1457
1475
|
border-color: transparent;
|
|
1458
1476
|
}
|
|
1459
1477
|
:scope[data-appearance="ghost"]:is(:active, [aria-expanded="true"]):not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
|
|
1460
|
-
background-color: var(
|
|
1461
|
-
--ui-button-ghost-active-surface,
|
|
1462
|
-
color-mix(in oklch, var(--ui-surface), var(--_tone) 3%)
|
|
1463
|
-
);
|
|
1478
|
+
background-color: var(--ui-button-ghost-active-surface, oklch(from var(--_tone) l c h / 18%));
|
|
1464
1479
|
border-color: transparent;
|
|
1465
1480
|
box-shadow:
|
|
1466
1481
|
inset 0 0 0 1px oklch(from var(--_tone) l c h / 10%),
|
|
@@ -2917,6 +2932,21 @@ label:where([data-hn-ui-combobox]) {
|
|
|
2917
2932
|
flex: 1 1 auto;
|
|
2918
2933
|
min-inline-size: 0;
|
|
2919
2934
|
}
|
|
2935
|
+
.start:where([data-hn-ui-combobox]) {
|
|
2936
|
+
display: flex !important;
|
|
2937
|
+
align-items: center !important;
|
|
2938
|
+
flex: none;
|
|
2939
|
+
padding-inline-start: var(--ui-space-3) !important;
|
|
2940
|
+
}
|
|
2941
|
+
.start:empty:where([data-hn-ui-combobox]) {
|
|
2942
|
+
display: none !important;
|
|
2943
|
+
}
|
|
2944
|
+
:scope[data-ui-combobox-state~="size=sm"] .start:where([data-hn-ui-combobox]) {
|
|
2945
|
+
padding-inline-start: var(--ui-space-2) !important;
|
|
2946
|
+
}
|
|
2947
|
+
:scope[data-ui-combobox-state~="size=lg"] .start:where([data-hn-ui-combobox]) {
|
|
2948
|
+
padding-inline-start: var(--ui-space-4) !important;
|
|
2949
|
+
}
|
|
2920
2950
|
.help:where([data-hn-ui-combobox]) {
|
|
2921
2951
|
flex: none;
|
|
2922
2952
|
display: inline-flex !important;
|
|
@@ -2950,6 +2980,10 @@ label:where([data-hn-ui-combobox]) {
|
|
|
2950
2980
|
inline-size: var(--ui-icon-size-sm);
|
|
2951
2981
|
block-size: var(--ui-icon-size-sm);
|
|
2952
2982
|
}
|
|
2983
|
+
:scope[data-ui-combobox-state~="muted"]
|
|
2984
|
+
input:not(:disabled):where([data-hn-ui-combobox]) {
|
|
2985
|
+
color: var(--ui-text-secondary);
|
|
2986
|
+
}
|
|
2953
2987
|
input:where([data-hn-ui-combobox])::selection {
|
|
2954
2988
|
background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
|
|
2955
2989
|
color: inherit;
|
|
@@ -3041,7 +3075,7 @@ input:disabled:where([data-hn-ui-combobox]),button:disabled:where([data-hn-ui-co
|
|
|
3041
3075
|
border-radius: var(--_ui-combobox-popup-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
|
|
3042
3076
|
background: var(
|
|
3043
3077
|
--_ui-combobox-popup-surface,
|
|
3044
|
-
var(--ui-
|
|
3078
|
+
var(--ui-material-content, var(--ui-surface-elevated))
|
|
3045
3079
|
);
|
|
3046
3080
|
color: var(--ui-text-primary);
|
|
3047
3081
|
box-shadow: var(
|
|
@@ -3237,6 +3271,23 @@ label:where(:scope, :scope *):where([data-hn-ui-combobox]) {
|
|
|
3237
3271
|
flex: 1 1 auto;
|
|
3238
3272
|
min-inline-size: 0;
|
|
3239
3273
|
}
|
|
3274
|
+
.start:where(:scope, :scope *):where([data-hn-ui-combobox]) {
|
|
3275
|
+
display: flex !important;
|
|
3276
|
+
align-items: center !important;
|
|
3277
|
+
flex: none;
|
|
3278
|
+
padding-inline-start: var(--ui-space-3) !important;
|
|
3279
|
+
}
|
|
3280
|
+
.start:empty:where(:scope, :scope *):where([data-hn-ui-combobox]) {
|
|
3281
|
+
display: none !important;
|
|
3282
|
+
}
|
|
3283
|
+
:where(.ui-combobox)[data-ui-combobox-state~="size=sm"]
|
|
3284
|
+
.start:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
|
|
3285
|
+
padding-inline-start: var(--ui-space-2) !important;
|
|
3286
|
+
}
|
|
3287
|
+
:where(.ui-combobox)[data-ui-combobox-state~="size=lg"]
|
|
3288
|
+
.start:where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
|
|
3289
|
+
padding-inline-start: var(--ui-space-4) !important;
|
|
3290
|
+
}
|
|
3240
3291
|
.help:where(:scope, :scope *):where([data-hn-ui-combobox]) {
|
|
3241
3292
|
flex: none;
|
|
3242
3293
|
display: inline-flex !important;
|
|
@@ -3270,6 +3321,10 @@ label:where(:scope, :scope *):where([data-hn-ui-combobox]) {
|
|
|
3270
3321
|
inline-size: var(--ui-icon-size-sm);
|
|
3271
3322
|
block-size: var(--ui-icon-size-sm);
|
|
3272
3323
|
}
|
|
3324
|
+
:where(.ui-combobox)[data-ui-combobox-state~="muted"]
|
|
3325
|
+
input:not(:disabled):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where([data-hn-ui-combobox]) {
|
|
3326
|
+
color: var(--ui-text-secondary);
|
|
3327
|
+
}
|
|
3273
3328
|
input:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-combobox"]))):where(:scope, :scope
|
|
3274
3329
|
*):where([data-hn-ui-combobox])::selection {
|
|
3275
3330
|
background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
|
|
@@ -3365,7 +3420,7 @@ input:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]),button:disab
|
|
|
3365
3420
|
border-radius: var(--_ui-combobox-popup-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
|
|
3366
3421
|
background: var(
|
|
3367
3422
|
--_ui-combobox-popup-surface,
|
|
3368
|
-
var(--ui-
|
|
3423
|
+
var(--ui-material-content, var(--ui-surface-elevated))
|
|
3369
3424
|
);
|
|
3370
3425
|
color: var(--ui-text-primary);
|
|
3371
3426
|
box-shadow: var(
|
|
@@ -3752,7 +3807,7 @@ input:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]),button:disab
|
|
|
3752
3807
|
inherits: false;
|
|
3753
3808
|
}
|
|
3754
3809
|
|
|
3755
|
-
/*
|
|
3810
|
+
/* Neutral actions share the same quiet surface and border roles as fields. */
|
|
3756
3811
|
|
|
3757
3812
|
/* At rest an anticipatory button shows only its guide dot. The icon grows into place when
|
|
3758
3813
|
proximity, hover, or focus reveals it; the button's hit area and guide remain stable. */
|
|
@@ -3879,6 +3934,10 @@ input:disabled:where(:scope, :scope *):where([data-hn-ui-combobox]),button:disab
|
|
|
3879
3934
|
:scope[data-tone="neutral"]:where([data-hn-ui-icon-button]) {
|
|
3880
3935
|
--_tone-highlight: var(--ui-neutral-highlight, none);
|
|
3881
3936
|
--_tone-glow: var(--ui-neutral-glow, 0 0 transparent);
|
|
3937
|
+
--_icon-button-outline-surface: transparent;
|
|
3938
|
+
--_icon-button-border: var(--ui-control-border);
|
|
3939
|
+
--_icon-button-hover-border: var(--ui-control-border-hover, var(--ui-control-border));
|
|
3940
|
+
--_icon-button-text: var(--ui-text);
|
|
3882
3941
|
--_icon-button-solid-surface: var(--ui-neutral-surface);
|
|
3883
3942
|
--_icon-button-solid-hover-surface: var(--ui-neutral-hover);
|
|
3884
3943
|
--_icon-button-solid-text: var(--ui-text);
|
|
@@ -4058,6 +4117,12 @@ html[data-ui-input-modality="touch"] :scope:where([data-hn-ui-icon-button])::aft
|
|
|
4058
4117
|
var(--_icon-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border)))
|
|
4059
4118
|
);
|
|
4060
4119
|
}
|
|
4120
|
+
:scope[data-tone="neutral"][data-appearance="outline"]:hover:enabled:not([aria-disabled="true"]):where([data-hn-ui-icon-button]) {
|
|
4121
|
+
background-color: var(--ui-icon-button-hover-surface, var(--ui-neutral-hover));
|
|
4122
|
+
}
|
|
4123
|
+
:scope[data-tone="neutral"][data-appearance="outline"]:active:enabled:not([aria-disabled="true"]):where([data-hn-ui-icon-button]) {
|
|
4124
|
+
background-color: var(--ui-icon-button-active-surface, var(--ui-neutral-active));
|
|
4125
|
+
}
|
|
4061
4126
|
:scope[data-appearance="solid"]:hover:enabled:not([aria-disabled="true"]):where([data-hn-ui-icon-button]) {
|
|
4062
4127
|
background-color: var(
|
|
4063
4128
|
--ui-icon-button-solid-hover-surface,
|
|
@@ -5777,7 +5842,11 @@ footer:empty:where(:scope, :scope *):where([data-hn-ui-dialog]) {
|
|
|
5777
5842
|
}
|
|
5778
5843
|
}
|
|
5779
5844
|
:scope:is(:hover, :focus-visible):not([aria-disabled="true"]):where([data-hn-ui-menu-item]) {
|
|
5780
|
-
background: var(--ui-menu-item-hover-surface, var(--ui-
|
|
5845
|
+
background: var(--ui-menu-item-hover-surface, var(--ui-accent-subtle));
|
|
5846
|
+
}
|
|
5847
|
+
:scope[aria-checked="true"]:not([aria-disabled="true"]):where([data-hn-ui-menu-item]) {
|
|
5848
|
+
background: var(--ui-selection-surface);
|
|
5849
|
+
color: var(--ui-selection-text);
|
|
5781
5850
|
}
|
|
5782
5851
|
:scope:focus-visible:where([data-hn-ui-menu-item]) {
|
|
5783
5852
|
outline: var(--ui-focus-width) solid var(--ui-focus-ring);
|
|
@@ -10077,6 +10146,13 @@ dialog:where([data-hn-ui-search-shell]) {
|
|
|
10077
10146
|
background-position: right var(--ui-space-3) center, center;
|
|
10078
10147
|
background-size: 1.125rem 1.125rem, 100% 100%;
|
|
10079
10148
|
}
|
|
10149
|
+
:scope[data-ui-select-state~="muted"]:where([data-hn-ui-select]) {
|
|
10150
|
+
color: var(--ui-text-secondary);
|
|
10151
|
+
}
|
|
10152
|
+
:scope[data-ui-select-state~="muted"] :where(:not([data-hn-ui-select])):is(option),:scope[data-ui-select-state~="muted"] :where(:not([data-hn-ui-select])):is(optgroup) {
|
|
10153
|
+
color: var(--ui-text-primary);
|
|
10154
|
+
background-color: var(--ui-control-surface);
|
|
10155
|
+
}
|
|
10080
10156
|
:scope:hover:not(:focus):not(:disabled):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid])):where([data-hn-ui-select]) {
|
|
10081
10157
|
border-color: var(
|
|
10082
10158
|
--ui-select-border-hover,
|
|
@@ -13750,7 +13826,6 @@ html[data-ui-input-modality="touch"]
|
|
|
13750
13826
|
background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
|
|
13751
13827
|
}
|
|
13752
13828
|
|
|
13753
|
-
/* A neutral card encloses content quietly; ordinary outlines keep their action-tone edge. */
|
|
13754
13829
|
:scope:where([data-component~="ui-button"])[data-appearance="card"][data-tone="neutral"] {
|
|
13755
13830
|
border-color: var(--ui-button-border, var(--ui-border));
|
|
13756
13831
|
}
|
|
@@ -13759,6 +13834,12 @@ html[data-ui-input-modality="touch"]
|
|
|
13759
13834
|
border-color: var(--ui-button-hover-border, var(--ui-border-strong));
|
|
13760
13835
|
}
|
|
13761
13836
|
|
|
13837
|
+
:scope:where([data-component~="ui-button"])[data-appearance="card"][aria-pressed="true"] {
|
|
13838
|
+
background-color: var(--ui-selection-surface);
|
|
13839
|
+
border-color: var(--ui-selection-border);
|
|
13840
|
+
color: var(--ui-selection-text);
|
|
13841
|
+
}
|
|
13842
|
+
|
|
13762
13843
|
/* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
|
|
13763
13844
|
:scope:where([data-component~="ui-button"]):active:not(:disabled, [aria-disabled="true"]) {
|
|
13764
13845
|
scale: var(--ui-press-scale, 1);
|
|
@@ -13806,6 +13887,18 @@ html[data-ui-input-modality="touch"]
|
|
|
13806
13887
|
background-color: var(--ui-button-surface, var(--ui-neutral-surface));
|
|
13807
13888
|
color: var(--ui-button-text, var(--ui-text));
|
|
13808
13889
|
}
|
|
13890
|
+
:scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="outline"] {
|
|
13891
|
+
border-color: var(--ui-button-border, var(--ui-control-border));
|
|
13892
|
+
background-color: var(--ui-button-surface, transparent);
|
|
13893
|
+
}
|
|
13894
|
+
:scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="outline"]:hover:not(:disabled, [aria-disabled="true"]) {
|
|
13895
|
+
border-color: var(--ui-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border)));
|
|
13896
|
+
background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
|
|
13897
|
+
}
|
|
13898
|
+
:scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="outline"]:active:not(:disabled, [aria-disabled="true"]) {
|
|
13899
|
+
border-color: var(--ui-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border)));
|
|
13900
|
+
background-color: var(--ui-button-active-surface, var(--ui-neutral-active));
|
|
13901
|
+
}
|
|
13809
13902
|
:scope:where([data-component~="ui-button"])[data-tone="neutral"][data-appearance="solid"]:hover:not(:disabled, [aria-disabled="true"]) {
|
|
13810
13903
|
background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
|
|
13811
13904
|
}
|
|
@@ -13893,10 +13986,8 @@ html[data-ui-input-modality="touch"]
|
|
|
13893
13986
|
border-color: transparent;
|
|
13894
13987
|
}
|
|
13895
13988
|
|
|
13896
|
-
/* Pressed, or holding its menu open, a ghost button sinks slightly: a light surface with a faint
|
|
13897
|
-
edge and a soft inner shadow. Lighter than hover, so an open menu's trigger never reads as heavy. */
|
|
13898
13989
|
:scope:where([data-component~="ui-button"])[data-appearance="ghost"]:is(:active, [aria-expanded="true"]):not(:disabled, [aria-disabled="true"]) {
|
|
13899
|
-
background-color: var(--ui-button-ghost-active-surface,
|
|
13990
|
+
background-color: var(--ui-button-ghost-active-surface, oklch(from var(--_tone) l c h / 18%));
|
|
13900
13991
|
border-color: transparent;
|
|
13901
13992
|
box-shadow: inset 0 0 0 1px oklch(from var(--_tone) l c h / 10%), inset 0 1px 2px oklch(from var(--_tone) l c h / 8%);
|
|
13902
13993
|
}
|
|
@@ -14030,8 +14121,6 @@ html[data-ui-input-modality="touch"]
|
|
|
14030
14121
|
/* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
|
|
14031
14122
|
is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
|
|
14032
14123
|
|
|
14033
|
-
/* A neutral card encloses content quietly; ordinary outlines keep their action-tone edge. */
|
|
14034
|
-
|
|
14035
14124
|
/* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
|
|
14036
14125
|
|
|
14037
14126
|
/* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
|
|
@@ -14041,9 +14130,6 @@ html[data-ui-input-modality="touch"]
|
|
|
14041
14130
|
|
|
14042
14131
|
/* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
|
|
14043
14132
|
|
|
14044
|
-
/* Pressed, or holding its menu open, a ghost button sinks slightly: a light surface with a faint
|
|
14045
|
-
edge and a soft inner shadow. Lighter than hover, so an open menu's trigger never reads as heavy. */
|
|
14046
|
-
|
|
14047
14133
|
/* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
|
|
14048
14134
|
|
|
14049
14135
|
/* A loading action stays visually active; only an explicitly disabled action takes the
|
|
@@ -14557,10 +14643,14 @@ html[data-ui-input-modality="touch"]
|
|
|
14557
14643
|
color: var(--_icon-button-text);
|
|
14558
14644
|
}
|
|
14559
14645
|
|
|
14560
|
-
/*
|
|
14646
|
+
/* Neutral actions share the same quiet surface and border roles as fields. */
|
|
14561
14647
|
:scope:where([data-component~="ui-icon-button"])[data-tone="neutral"] {
|
|
14562
14648
|
--_tone-highlight: var(--ui-neutral-highlight, none);
|
|
14563
14649
|
--_tone-glow: var(--ui-neutral-glow, 0 0 transparent);
|
|
14650
|
+
--_icon-button-outline-surface: transparent;
|
|
14651
|
+
--_icon-button-border: var(--ui-control-border);
|
|
14652
|
+
--_icon-button-hover-border: var(--ui-control-border-hover, var(--ui-control-border));
|
|
14653
|
+
--_icon-button-text: var(--ui-text);
|
|
14564
14654
|
--_icon-button-solid-surface: var(--ui-neutral-surface);
|
|
14565
14655
|
--_icon-button-solid-hover-surface: var(--ui-neutral-hover);
|
|
14566
14656
|
--_icon-button-solid-text: var(--ui-text);
|
|
@@ -14748,6 +14838,12 @@ html[data-ui-input-modality="touch"]
|
|
|
14748
14838
|
:scope:where([data-component~="ui-icon-button"])[data-appearance="outline"]:hover:enabled:not([aria-disabled="true"]) {
|
|
14749
14839
|
border-color: var(--ui-icon-button-hover-border, var(--_icon-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border))));
|
|
14750
14840
|
}
|
|
14841
|
+
:scope:where([data-component~="ui-icon-button"])[data-tone="neutral"][data-appearance="outline"]:hover:enabled:not([aria-disabled="true"]) {
|
|
14842
|
+
background-color: var(--ui-icon-button-hover-surface, var(--ui-neutral-hover));
|
|
14843
|
+
}
|
|
14844
|
+
:scope:where([data-component~="ui-icon-button"])[data-tone="neutral"][data-appearance="outline"]:active:enabled:not([aria-disabled="true"]) {
|
|
14845
|
+
background-color: var(--ui-icon-button-active-surface, var(--ui-neutral-active));
|
|
14846
|
+
}
|
|
14751
14847
|
|
|
14752
14848
|
:scope:where([data-component~="ui-icon-button"])[data-appearance="solid"]:hover:enabled:not([aria-disabled="true"]) {
|
|
14753
14849
|
background-color: var(--ui-icon-button-solid-hover-surface, var(--_icon-button-solid-hover-surface, var(--ui-accent-hover)));
|
|
@@ -14872,7 +14968,7 @@ html[data-ui-input-modality="touch"]
|
|
|
14872
14968
|
@scope ([data-component~="ui-icon-button"]) to ([data-component]) {
|
|
14873
14969
|
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
14874
14970
|
|
|
14875
|
-
/*
|
|
14971
|
+
/* Neutral actions share the same quiet surface and border roles as fields. */
|
|
14876
14972
|
|
|
14877
14973
|
/* At rest an anticipatory button shows only its guide dot. The icon grows into place when
|
|
14878
14974
|
proximity, hover, or focus reveals it; the button's hit area and guide remain stable. */
|
|
@@ -15378,7 +15474,12 @@ html[data-ui-input-modality="touch"]
|
|
|
15378
15474
|
}
|
|
15379
15475
|
|
|
15380
15476
|
:scope:where([data-component~="ui-menu-item"]):is(:hover, :focus-visible):not([aria-disabled="true"]) {
|
|
15381
|
-
background: var(--ui-menu-item-hover-surface, var(--ui-
|
|
15477
|
+
background: var(--ui-menu-item-hover-surface, var(--ui-accent-subtle));
|
|
15478
|
+
}
|
|
15479
|
+
|
|
15480
|
+
:scope:where([data-component~="ui-menu-item"])[aria-checked="true"]:not([aria-disabled="true"]) {
|
|
15481
|
+
background: var(--ui-selection-surface);
|
|
15482
|
+
color: var(--ui-selection-text);
|
|
15382
15483
|
}
|
|
15383
15484
|
|
|
15384
15485
|
:scope:where([data-component~="ui-menu-item"]):focus-visible {
|
package/vue/editor/index.js
CHANGED
|
@@ -3756,7 +3756,7 @@ var D$18 = {
|
|
|
3756
3756
|
"warning",
|
|
3757
3757
|
"info"
|
|
3758
3758
|
],
|
|
3759
|
-
"default": "
|
|
3759
|
+
"default": "neutral",
|
|
3760
3760
|
c: checkFormat("keyword", keywordFormat),
|
|
3761
3761
|
t: "keyword",
|
|
3762
3762
|
j: 0,
|
|
@@ -7666,7 +7666,6 @@ var D$13 = {
|
|
|
7666
7666
|
"tone": {
|
|
7667
7667
|
"required": false,
|
|
7668
7668
|
"values": [
|
|
7669
|
-
"auto",
|
|
7670
7669
|
"accent",
|
|
7671
7670
|
"neutral",
|
|
7672
7671
|
"danger",
|
|
@@ -7674,7 +7673,7 @@ var D$13 = {
|
|
|
7674
7673
|
"warning",
|
|
7675
7674
|
"info"
|
|
7676
7675
|
],
|
|
7677
|
-
"default": "
|
|
7676
|
+
"default": "neutral",
|
|
7678
7677
|
c: checkFormat("keyword", keywordFormat),
|
|
7679
7678
|
t: "keyword",
|
|
7680
7679
|
j: 0,
|