@threadlabs/looma 0.37.6 → 0.39.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.
Files changed (52) hide show
  1. package/EXPRESSIVE-MARKDOWN.md +2 -0
  2. package/README.md +1 -1
  3. package/components/ui-button/ui-button.html +20 -5
  4. package/components/ui-combobox/ui-combobox.html +24 -3
  5. package/components/ui-combobox/ui-combobox.js +18 -3
  6. package/components/ui-icon-button/ui-icon-button.html +17 -8
  7. package/components/ui-menu-item/ui-menu-item.html +6 -1
  8. package/components/ui-select/ui-select.html +12 -0
  9. package/dist/index.js +1 -1
  10. package/docs/README.md +25 -12
  11. package/docs/catalog.json +78 -31
  12. package/docs/cli.mjs +1 -1
  13. package/docs/commands.mjs +2 -2
  14. package/docs/customizer-render.mjs +36 -20
  15. package/docs/customizer.js +76 -25
  16. package/docs/documentation.css +2 -0
  17. package/docs/index.d.ts +3 -3
  18. package/docs/local-server.mjs +1 -1
  19. package/docs/palette.mjs +3 -3
  20. package/docs/site.mjs +7 -7
  21. package/docs/theme-session.mjs +1 -0
  22. package/docs/theme.mjs +11 -10
  23. package/editor/expressmark.js +12 -4
  24. package/package.json +6 -6
  25. package/styles/ui-button.css +19 -9
  26. package/styles/ui-combobox.css +40 -2
  27. package/styles/ui-icon-button.css +12 -2
  28. package/styles/ui-menu-item.css +6 -1
  29. package/styles/ui-select.css +9 -0
  30. package/theme-system.css +7 -2
  31. package/vanilla/UiButton.js +1 -1
  32. package/vanilla/UiCombobox.d.ts +1 -0
  33. package/vanilla/UiCombobox.js +38 -37
  34. package/vanilla/UiIconButton.d.ts +1 -1
  35. package/vanilla/UiIconButton.js +1 -1
  36. package/vanilla/UiSelect.d.ts +1 -0
  37. package/vanilla/UiSelect.js +7 -7
  38. package/vue/UiButton.vue +30 -12
  39. package/vue/UiCombobox.d.ts +6 -0
  40. package/vue/UiCombobox.vue +70 -6
  41. package/vue/UiIconButton.d.ts +2 -2
  42. package/vue/UiIconButton.vue +23 -18
  43. package/vue/UiMenuItem.vue +6 -1
  44. package/vue/UiSelect.d.ts +6 -0
  45. package/vue/UiSelect.vue +30 -1
  46. package/vue/chunks/UiButton.js +4 -4
  47. package/vue/chunks/UiCombobox.js +72 -46
  48. package/vue/chunks/UiIconButton.js +6 -7
  49. package/vue/chunks/UiMenuItem.js +1 -1
  50. package/vue/chunks/UiSelect.js +27 -2
  51. package/vue/components.css +126 -25
  52. package/vue/editor/index.js +2 -3
@@ -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-overlay-surface, var(--ui-surface-elevated))
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-overlay-surface, var(--ui-surface-elevated))
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
- /* Omitted tone retains the existing accent solid; explicit neutral is additive. */
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-surface-subtle));
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, color-mix(in oklch, var(--ui-surface), var(--_tone) 3%));
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
- /* Omitted tone retains the existing accent solid; explicit neutral is additive. */
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
- /* Omitted tone retains the existing accent solid; explicit neutral is additive. */
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-surface-subtle));
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 {
@@ -3756,7 +3756,7 @@ var D$18 = {
3756
3756
  "warning",
3757
3757
  "info"
3758
3758
  ],
3759
- "default": "accent",
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": "auto",
7676
+ "default": "neutral",
7678
7677
  c: checkFormat("keyword", keywordFormat),
7679
7678
  t: "keyword",
7680
7679
  j: 0,