@editora/ui-core 0.1.10 → 0.1.13

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 (130) hide show
  1. package/README.md +5 -5
  2. package/dist/alert-dialog.cjs.js +18 -18
  3. package/dist/alert-dialog.esm.js +130 -117
  4. package/dist/app-header.cjs.js +22 -2
  5. package/dist/app-header.esm.js +22 -2
  6. package/dist/badge.cjs.js +5 -5
  7. package/dist/badge.esm.js +9 -8
  8. package/dist/color-picker.cjs.js +4 -4
  9. package/dist/color-picker.esm.js +39 -31
  10. package/dist/combobox.cjs.js +21 -21
  11. package/dist/combobox.esm.js +79 -40
  12. package/dist/command-palette.cjs.js +1 -1
  13. package/dist/command-palette.esm.js +2 -2
  14. package/dist/components/date-time-utils.d.ts +2 -1
  15. package/dist/components/date-time-utils.d.ts.map +1 -1
  16. package/dist/components/ui-alert-dialog.d.ts +2 -0
  17. package/dist/components/ui-alert-dialog.d.ts.map +1 -1
  18. package/dist/components/ui-app-header.d.ts.map +1 -1
  19. package/dist/components/ui-badge.d.ts.map +1 -1
  20. package/dist/components/ui-color-picker.d.ts.map +1 -1
  21. package/dist/components/ui-combobox.d.ts +4 -1
  22. package/dist/components/ui-combobox.d.ts.map +1 -1
  23. package/dist/components/ui-date-picker.d.ts +3 -0
  24. package/dist/components/ui-date-picker.d.ts.map +1 -1
  25. package/dist/components/ui-date-range-picker.d.ts +3 -0
  26. package/dist/components/ui-date-range-picker.d.ts.map +1 -1
  27. package/dist/components/ui-date-range-time-picker.d.ts +3 -0
  28. package/dist/components/ui-date-range-time-picker.d.ts.map +1 -1
  29. package/dist/components/ui-date-time-picker.d.ts +3 -0
  30. package/dist/components/ui-date-time-picker.d.ts.map +1 -1
  31. package/dist/components/ui-dialog.d.ts +3 -0
  32. package/dist/components/ui-dialog.d.ts.map +1 -1
  33. package/dist/components/ui-drawer.d.ts +14 -0
  34. package/dist/components/ui-drawer.d.ts.map +1 -1
  35. package/dist/components/ui-floating-toolbar.d.ts.map +1 -1
  36. package/dist/components/ui-icon.d.ts.map +1 -1
  37. package/dist/components/ui-menu.d.ts +1 -0
  38. package/dist/components/ui-menu.d.ts.map +1 -1
  39. package/dist/components/ui-menubar.d.ts +1 -0
  40. package/dist/components/ui-menubar.d.ts.map +1 -1
  41. package/dist/components/ui-quick-actions.d.ts.map +1 -1
  42. package/dist/components/ui-radio.d.ts +47 -0
  43. package/dist/components/ui-radio.d.ts.map +1 -0
  44. package/dist/components/ui-select.d.ts +8 -0
  45. package/dist/components/ui-select.d.ts.map +1 -1
  46. package/dist/components/ui-selection-popup.d.ts.map +1 -1
  47. package/dist/components/ui-split-button.d.ts +2 -0
  48. package/dist/components/ui-split-button.d.ts.map +1 -1
  49. package/dist/components/ui-stepper.d.ts.map +1 -1
  50. package/dist/components/ui-time-picker.d.ts +3 -0
  51. package/dist/components/ui-time-picker.d.ts.map +1 -1
  52. package/dist/context-menu.cjs.js +2 -2
  53. package/dist/context-menu.esm.js +2 -2
  54. package/dist/date-field.cjs.js +1 -1
  55. package/dist/date-field.esm.js +2 -2
  56. package/dist/date-picker.cjs.js +13 -13
  57. package/dist/date-picker.esm.js +100 -67
  58. package/dist/date-range-picker.cjs.js +14 -14
  59. package/dist/date-range-picker.esm.js +98 -65
  60. package/dist/date-range-time-picker.cjs.js +13 -13
  61. package/dist/date-range-time-picker.esm.js +76 -45
  62. package/dist/date-time-picker.cjs.js +13 -13
  63. package/dist/date-time-picker.esm.js +132 -101
  64. package/dist/date-time-utils-378ecc21.js +1 -0
  65. package/dist/{date-time-utils-bdceb7af.mjs → date-time-utils-a8b17ea7.mjs} +128 -102
  66. package/dist/dialog.cjs.js +29 -20
  67. package/dist/dialog.esm.js +90 -70
  68. package/dist/drawer.cjs.js +16 -16
  69. package/dist/drawer.esm.js +216 -98
  70. package/dist/floating-toolbar.cjs.js +3 -13
  71. package/dist/floating-toolbar.esm.js +17 -27
  72. package/dist/hover-card.cjs.js +1 -1
  73. package/dist/hover-card.esm.js +1 -1
  74. package/dist/{icon-eaa486b3.js → icon-9e9da03b.js} +4 -4
  75. package/dist/{icon-9ed13093.mjs → icon-e2a85cc1.mjs} +22 -18
  76. package/dist/icon.cjs.js +1 -1
  77. package/dist/icon.esm.js +1 -1
  78. package/dist/icons.d.ts +1 -1
  79. package/dist/icons.d.ts.map +1 -1
  80. package/dist/index.cjs.js +1 -1
  81. package/dist/index.d.ts +2 -0
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.esm.js +246 -244
  84. package/dist/menu.cjs.js +2 -2
  85. package/dist/menu.esm.js +118 -110
  86. package/dist/menubar.cjs.js +5 -5
  87. package/dist/menubar.esm.js +83 -78
  88. package/dist/{overlayManager-ece06517.js → overlayManager-0eda4e08.js} +1 -1
  89. package/dist/{overlayManager-86454af7.mjs → overlayManager-5bbd4dc3.mjs} +1 -1
  90. package/dist/popover.cjs.js +1 -1
  91. package/dist/popover.esm.js +2 -2
  92. package/dist/{portal-1cf392ca.mjs → portal-9060f7a6.mjs} +7 -7
  93. package/dist/portal-d9bae456.js +1 -0
  94. package/dist/{positioner-fbd61bf1.mjs → positioner-16f3cca1.mjs} +16 -16
  95. package/dist/positioner-43b1c75a.js +1 -0
  96. package/dist/positioner.cjs.js +1 -1
  97. package/dist/positioner.esm.js +1 -1
  98. package/dist/quick-actions.cjs.js +10 -4
  99. package/dist/quick-actions.esm.js +27 -21
  100. package/dist/radio.cjs.js +259 -0
  101. package/dist/radio.esm.js +455 -0
  102. package/dist/{runtime-5f282bc8.js → runtime-668914fe.js} +1 -1
  103. package/dist/{runtime-4ac0107b.mjs → runtime-864efe2f.mjs} +1 -1
  104. package/dist/runtime.cjs.js +1 -1
  105. package/dist/runtime.esm.js +2 -2
  106. package/dist/scroll-lock-31da444f.mjs +56 -0
  107. package/dist/scroll-lock-d7b0df21.js +1 -0
  108. package/dist/scroll-lock.d.ts.map +1 -1
  109. package/dist/select.cjs.js +14 -15
  110. package/dist/select.esm.js +117 -97
  111. package/dist/selection-popup.cjs.js +4 -7
  112. package/dist/selection-popup.esm.js +8 -11
  113. package/dist/split-button.cjs.js +137 -62
  114. package/dist/split-button.esm.js +235 -145
  115. package/dist/standalone/radio.d.ts +2 -0
  116. package/dist/standalone/radio.d.ts.map +1 -0
  117. package/dist/stepper.cjs.js +19 -50
  118. package/dist/stepper.esm.js +17 -48
  119. package/dist/time-field.cjs.js +1 -1
  120. package/dist/time-field.esm.js +14 -14
  121. package/dist/time-picker.cjs.js +15 -15
  122. package/dist/time-picker.esm.js +99 -68
  123. package/dist/tooltip.cjs.js +1 -1
  124. package/dist/tooltip.esm.js +1 -1
  125. package/package.json +2 -2
  126. package/dist/date-time-utils-5cf58cd0.js +0 -1
  127. package/dist/portal-d8d7fbca.js +0 -1
  128. package/dist/positioner-accc6e5f.js +0 -1
  129. package/dist/scroll-lock-48793569.js +0 -1
  130. package/dist/scroll-lock-9de6d328.mjs +0 -53
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const g=require("./ElementBase-1b301e7f.js"),h=require("./portal-d8d7fbca.js"),f=require("./dismissable-layer-193e3bed.js"),x=require("./positioner-accc6e5f.js");require("./listbox-ef2f708e.js");require("./collection-a2969ad2.js");require("./collection.cjs.js");const m=160,v=`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("./ElementBase-1b301e7f.js"),g=require("./portal-d9bae456.js"),h=require("./dismissable-layer-193e3bed.js"),x=require("./positioner-43b1c75a.js");require("./listbox-ef2f708e.js");require("./collection-a2969ad2.js");require("./collection.cjs.js");const m=160,v=`
2
2
  :host {
3
3
  --ui-split-button-radius: 12px;
4
4
  --ui-split-button-border: 1px solid color-mix(in srgb, var(--ui-color-border, #cbd5e1) 70%, transparent);
@@ -17,11 +17,17 @@
17
17
  --ui-split-button-menu-separator: color-mix(in srgb, var(--ui-split-button-menu-color) 10%, transparent);
18
18
  --ui-split-button-menu-muted: color-mix(in srgb, var(--ui-split-button-menu-color) 58%, transparent);
19
19
  --ui-split-button-menu-danger: var(--ui-color-danger, #dc2626);
20
- --ui-split-button-menu-list-gap: 0px;
20
+ --ui-split-button-menu-option-border: transparent;
21
+ --ui-split-button-menu-option-border-strong: color-mix(in srgb, var(--ui-split-button-bg) 24%, transparent);
22
+ --ui-split-button-menu-option-shadow: none;
23
+ --ui-split-button-menu-affordance-bg: transparent;
24
+ --ui-split-button-menu-affordance-border: color-mix(in srgb, var(--ui-split-button-menu-color) 24%, transparent);
25
+ --ui-split-button-menu-affordance-size: 18px;
26
+ --ui-split-button-menu-list-gap: 2px;
21
27
  --ui-split-button-menu-list-padding-top: 2px;
22
- --ui-split-button-menu-item-min-height: 42px;
28
+ --ui-split-button-menu-item-min-height: 44px;
23
29
  --ui-split-button-menu-item-radius: 10px;
24
- --ui-split-button-menu-item-padding: 10px 12px;
30
+ --ui-split-button-menu-item-padding: 10px 10px;
25
31
  --ui-split-button-focus: var(--ui-color-focus-ring, #2563eb);
26
32
  display: inline-flex;
27
33
  position: relative;
@@ -115,6 +121,7 @@
115
121
  --ui-split-button-menu-shadow: 0 12px 28px rgba(15, 23, 42, 0.08);
116
122
  --ui-split-button-menu-accent: #eef4ff;
117
123
  --ui-split-button-menu-accent-strong: #e0ecff;
124
+ --ui-split-button-menu-option-border: transparent;
118
125
  }
119
126
 
120
127
  :host([variant="contrast"]) {
@@ -158,12 +165,12 @@
158
165
  .menu {
159
166
  position: absolute;
160
167
  display: grid;
161
- gap: 6px;
162
- min-width: 220px;
168
+ gap: 8px;
169
+ min-width: 240px;
163
170
  max-width: min(360px, calc(100vw - 16px));
164
171
  max-height: min(420px, calc(100vh - 16px));
165
172
  overflow: auto;
166
- padding: 10px 8px 8px;
173
+ padding: 8px;
167
174
  border: var(--ui-split-button-menu-border);
168
175
  border-radius: calc(var(--ui-split-button-menu-radius) + 2px);
169
176
  background: var(--ui-split-button-menu-bg);
@@ -199,9 +206,8 @@
199
206
  content: "";
200
207
  position: absolute;
201
208
  inset: 0 0 auto 0;
202
- block-size: 3px;
203
- background: linear-gradient(90deg, var(--ui-split-button-bg), color-mix(in srgb, var(--ui-split-button-bg) 68%, white));
204
- opacity: 0.96;
209
+ block-size: 1px;
210
+ background: color-mix(in srgb, var(--ui-split-button-menu-color) 10%, transparent);
205
211
  pointer-events: none;
206
212
  }
207
213
 
@@ -209,26 +215,30 @@
209
215
  display: grid;
210
216
  gap: var(--ui-split-button-menu-list-gap);
211
217
  padding: var(--ui-split-button-menu-list-padding-top) 0 0;
218
+ position: relative;
219
+ z-index: 1;
212
220
  }
213
221
 
214
222
  .menu-header {
215
223
  display: grid;
216
- gap: 3px;
217
- padding: 2px 8px 6px;
224
+ gap: 4px;
225
+ padding: 4px 6px 2px;
226
+ position: relative;
227
+ z-index: 1;
218
228
  }
219
229
 
220
230
  .menu-heading {
221
231
  margin: 0;
222
232
  min-inline-size: 0;
223
233
  font: 700 13px/1.25 "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
224
- letter-spacing: 0.01em;
234
+ letter-spacing: 0.015em;
225
235
  color: var(--ui-split-button-menu-color);
226
236
  }
227
237
 
228
238
  .menu-description {
229
239
  margin: 0;
230
240
  min-inline-size: 0;
231
- font: 500 12px/1.45 "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
241
+ font: 500 12px/1.5 "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
232
242
  letter-spacing: 0.01em;
233
243
  color: var(--ui-split-button-menu-muted);
234
244
  }
@@ -238,15 +248,15 @@
238
248
  appearance: none;
239
249
  -webkit-appearance: none;
240
250
  display: grid;
241
- grid-template-columns: minmax(0, 1fr) auto;
251
+ grid-template-columns: auto minmax(0, 1fr) auto;
242
252
  inline-size: 100%;
243
253
  gap: 12px;
244
- align-items: center;
254
+ align-items: start;
245
255
  position: relative;
246
256
  min-height: var(--ui-split-button-menu-item-min-height);
247
257
  margin: 0;
248
258
  padding: var(--ui-split-button-menu-item-padding);
249
- border: 0;
259
+ border: 1px solid var(--ui-split-button-menu-option-border);
250
260
  border-radius: var(--ui-split-button-menu-item-radius);
251
261
  background: transparent;
252
262
  color: inherit;
@@ -257,7 +267,14 @@
257
267
  letter-spacing: 0.01em;
258
268
  cursor: pointer;
259
269
  outline: none;
260
- transition: background-color 140ms ease, color 140ms ease, transform 140ms ease, box-shadow 140ms ease;
270
+ overflow: hidden;
271
+ isolation: isolate;
272
+ transition:
273
+ background-color 140ms ease,
274
+ border-color 140ms ease,
275
+ color 140ms ease,
276
+ transform 140ms ease,
277
+ box-shadow 140ms ease;
261
278
  }
262
279
 
263
280
  .menu [slot="menuitem"] + [slot="menuitem"],
@@ -265,26 +282,49 @@
265
282
  box-shadow: inset 0 1px 0 var(--ui-split-button-menu-separator);
266
283
  }
267
284
 
268
- .menu [slot="menuitem"]::before,
269
- .menu [data-menu-item]::before {
285
+ .menu [data-menu-affordance] {
286
+ inline-size: var(--ui-split-button-menu-affordance-size);
287
+ block-size: var(--ui-split-button-menu-affordance-size);
288
+ display: inline-grid;
289
+ place-items: center;
290
+ border-radius: 999px;
291
+ background: var(--ui-split-button-menu-affordance-bg);
292
+ border: 1.5px solid var(--ui-split-button-menu-affordance-border);
293
+ color: color-mix(in srgb, var(--ui-split-button-bg) 82%, var(--ui-split-button-menu-color));
294
+ transition:
295
+ background-color 140ms ease,
296
+ border-color 140ms ease,
297
+ color 140ms ease,
298
+ transform 140ms ease;
299
+ }
300
+
301
+ .menu [data-menu-affordance]::before {
270
302
  content: "";
271
- position: absolute;
272
- inset-inline-start: 0;
273
- inset-block: 8px;
274
- inline-size: 3px;
303
+ inline-size: 7px;
304
+ block-size: 7px;
275
305
  border-radius: 999px;
276
- background: transparent;
277
- transition: background-color 140ms ease;
306
+ background: currentColor;
307
+ opacity: 0;
308
+ transition: transform 140ms ease, opacity 140ms ease;
278
309
  }
279
310
 
280
- .menu [slot="menuitem"] > :first-child,
281
- .menu [data-menu-item] > :first-child,
311
+ .menu [slot="menuitem"] > :nth-child(2),
312
+ .menu [data-menu-item] > :nth-child(2),
282
313
  .menu [data-menu-label] {
283
314
  display: grid;
284
- gap: 2px;
315
+ gap: 3px;
285
316
  min-inline-size: 0;
286
317
  }
287
318
 
319
+ .menu [data-menu-text] {
320
+ padding-block-start: 1px;
321
+ }
322
+
323
+ .menu [slot="menuitem"][data-has-description="false"],
324
+ .menu [data-menu-item][data-has-description="false"] {
325
+ align-items: center;
326
+ }
327
+
288
328
  .menu [data-menu-label] {
289
329
  min-inline-size: 0;
290
330
  overflow: hidden;
@@ -294,25 +334,26 @@
294
334
  }
295
335
 
296
336
  .menu [data-menu-description] {
337
+ display: -webkit-box;
297
338
  min-inline-size: 0;
298
339
  overflow: hidden;
299
- text-overflow: ellipsis;
300
- white-space: nowrap;
301
- font: 500 12px/1.35 "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
340
+ -webkit-box-orient: vertical;
341
+ -webkit-line-clamp: 2;
342
+ white-space: normal;
343
+ font: 500 12px/1.45 "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
302
344
  color: var(--ui-split-button-menu-muted);
303
345
  }
304
346
 
305
- .menu [slot="menuitem"] > :last-child,
306
- .menu [data-menu-item] > :last-child,
307
347
  .menu [data-menu-shortcut] {
308
348
  justify-self: end;
349
+ align-self: center;
350
+ white-space: nowrap;
309
351
  font: 600 12px/1 "IBM Plex Mono", "SFMono-Regular", "SF Mono", Consolas, monospace;
310
352
  letter-spacing: 0.03em;
311
353
  color: var(--ui-split-button-menu-shortcut);
312
- padding: 5px 7px;
313
- border-radius: 8px;
314
- background: color-mix(in srgb, var(--ui-split-button-menu-color) 5%, transparent);
315
- box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ui-split-button-menu-color) 10%, transparent);
354
+ padding: 0;
355
+ background: none;
356
+ box-shadow: none;
316
357
  }
317
358
 
318
359
  .menu [slot="menuitem"][data-tone="danger"],
@@ -325,6 +366,11 @@
325
366
  color: color-mix(in srgb, var(--ui-split-button-menu-danger) 68%, transparent);
326
367
  }
327
368
 
369
+ .menu [slot="menuitem"][data-tone="danger"] [data-menu-affordance],
370
+ .menu [data-menu-item][data-tone="danger"] [data-menu-affordance] {
371
+ color: color-mix(in srgb, var(--ui-split-button-menu-danger) 88%, var(--ui-split-button-menu-color));
372
+ }
373
+
328
374
  .menu [slot="menuitem"][data-active="true"],
329
375
  .menu [data-menu-item][data-active="true"],
330
376
  .menu [slot="menuitem"]:hover,
@@ -332,7 +378,8 @@
332
378
  .menu [slot="menuitem"]:focus-visible,
333
379
  .menu [data-menu-item]:focus-visible {
334
380
  background: var(--ui-split-button-menu-accent);
335
- box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ui-split-button-bg) 16%, transparent);
381
+ border-color: var(--ui-split-button-menu-option-border-strong);
382
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ui-split-button-bg) 10%, transparent);
336
383
  }
337
384
 
338
385
  .menu [slot="menuitem"][data-active="true"],
@@ -340,22 +387,46 @@
340
387
  background: var(--ui-split-button-menu-accent-strong);
341
388
  }
342
389
 
343
- .menu [slot="menuitem"][data-active="true"]::before,
344
- .menu [data-menu-item][data-active="true"]::before,
345
- .menu [slot="menuitem"]:hover::before,
346
- .menu [data-menu-item]:hover::before,
347
- .menu [slot="menuitem"]:focus-visible::before,
348
- .menu [data-menu-item]:focus-visible::before {
349
- background: var(--ui-split-button-bg);
390
+ .menu [slot="menuitem"][data-active="true"] [data-menu-affordance],
391
+ .menu [data-menu-item][data-active="true"] [data-menu-affordance],
392
+ .menu [slot="menuitem"]:hover [data-menu-affordance],
393
+ .menu [data-menu-item]:hover [data-menu-affordance],
394
+ .menu [slot="menuitem"]:focus-visible [data-menu-affordance],
395
+ .menu [data-menu-item]:focus-visible [data-menu-affordance] {
396
+ background: color-mix(in srgb, var(--ui-split-button-bg) 10%, transparent);
397
+ border-color: color-mix(in srgb, var(--ui-split-button-bg) 28%, transparent);
398
+ color: color-mix(in srgb, var(--ui-split-button-bg) 88%, var(--ui-split-button-menu-color));
350
399
  }
351
400
 
352
- .menu [slot="menuitem"][data-tone="danger"][data-active="true"]::before,
353
- .menu [data-menu-item][data-tone="danger"][data-active="true"]::before,
354
- .menu [slot="menuitem"][data-tone="danger"]:hover::before,
355
- .menu [data-menu-item][data-tone="danger"]:hover::before,
356
- .menu [slot="menuitem"][data-tone="danger"]:focus-visible::before,
357
- .menu [data-menu-item][data-tone="danger"]:focus-visible::before {
358
- background: var(--ui-split-button-menu-danger);
401
+ .menu [slot="menuitem"][data-active="true"] [data-menu-affordance]::before,
402
+ .menu [data-menu-item][data-active="true"] [data-menu-affordance]::before,
403
+ .menu [slot="menuitem"]:hover [data-menu-affordance]::before,
404
+ .menu [data-menu-item]:hover [data-menu-affordance]::before,
405
+ .menu [slot="menuitem"]:focus-visible [data-menu-affordance]::before,
406
+ .menu [data-menu-item]:focus-visible [data-menu-affordance]::before {
407
+ opacity: 1;
408
+ transform: scale(1);
409
+ }
410
+
411
+ .menu [slot="menuitem"][data-tone="danger"][data-active="true"],
412
+ .menu [data-menu-item][data-tone="danger"][data-active="true"],
413
+ .menu [slot="menuitem"][data-tone="danger"]:hover,
414
+ .menu [data-menu-item][data-tone="danger"]:hover,
415
+ .menu [slot="menuitem"][data-tone="danger"]:focus-visible,
416
+ .menu [data-menu-item][data-tone="danger"]:focus-visible {
417
+ border-color: color-mix(in srgb, var(--ui-split-button-menu-danger) 28%, transparent);
418
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ui-split-button-menu-danger) 14%, transparent);
419
+ }
420
+
421
+ .menu [slot="menuitem"][data-tone="danger"][data-active="true"] [data-menu-affordance],
422
+ .menu [data-menu-item][data-tone="danger"][data-active="true"] [data-menu-affordance],
423
+ .menu [slot="menuitem"][data-tone="danger"]:hover [data-menu-affordance],
424
+ .menu [data-menu-item][data-tone="danger"]:hover [data-menu-affordance],
425
+ .menu [slot="menuitem"][data-tone="danger"]:focus-visible [data-menu-affordance],
426
+ .menu [data-menu-item][data-tone="danger"]:focus-visible [data-menu-affordance] {
427
+ background: color-mix(in srgb, var(--ui-split-button-menu-danger) 14%, #ffffff);
428
+ border-color: color-mix(in srgb, var(--ui-split-button-menu-danger) 30%, transparent);
429
+ color: var(--ui-split-button-menu-danger);
359
430
  }
360
431
 
361
432
  .menu [slot="menuitem"][disabled],
@@ -364,22 +435,26 @@
364
435
  .menu [data-menu-item][aria-disabled="true"] {
365
436
  opacity: 0.56;
366
437
  pointer-events: none;
438
+ transform: none;
439
+ box-shadow: none;
367
440
  }
368
441
 
369
442
  :host([menu-density="compact"]) {
370
- --ui-split-button-menu-list-gap: 0px;
443
+ --ui-split-button-menu-list-gap: 1px;
371
444
  --ui-split-button-menu-list-padding-top: 2px;
372
- --ui-split-button-menu-item-min-height: 40px;
445
+ --ui-split-button-menu-item-min-height: 38px;
373
446
  --ui-split-button-menu-item-radius: 8px;
374
- --ui-split-button-menu-item-padding: 9px 11px;
447
+ --ui-split-button-menu-item-padding: 8px 10px;
448
+ --ui-split-button-menu-affordance-size: 16px;
375
449
  }
376
450
 
377
451
  :host([menu-density="airy"]) {
378
- --ui-split-button-menu-list-gap: 6px;
452
+ --ui-split-button-menu-list-gap: 4px;
379
453
  --ui-split-button-menu-list-padding-top: 6px;
380
454
  --ui-split-button-menu-item-min-height: 50px;
381
455
  --ui-split-button-menu-item-radius: 14px;
382
- --ui-split-button-menu-item-padding: 12px 14px;
456
+ --ui-split-button-menu-item-padding: 12px 12px;
457
+ --ui-split-button-menu-affordance-size: 20px;
383
458
  }
384
459
 
385
460
  :host([menu-shape="flat"]) {
@@ -398,13 +473,13 @@
398
473
  transform: none;
399
474
  }
400
475
  }
401
- `;function y(p,t){const e=p.cloneNode(!0);return e.setAttribute("slot","menuitem"),e.setAttribute("data-menu-item","true"),e.setAttribute("data-index",String(t)),e.setAttribute("tabindex","-1"),e.id||(e.id=`ui-split-button-item-${Math.random().toString(36).slice(2,9)}`),e}class b extends g.ElementBase{constructor(){super(),this._portalEl=null,this._portalRoot=null,this._layer=null,this._positioner=null,this._listbox=null,this._triggerButton=null,this._toggleButton=null,this._menuItems=[],this._lastFocused=null,this._closeTimer=null,this._onPrimaryClick=this._onPrimaryClick.bind(this),this._onToggleClick=this._onToggleClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this)}static get observedAttributes(){return["label","menu-label","menu-heading","menu-description","variant","density","menu-density","menu-shape","disabled","open"]}openMenu(){var t,e;this.hasAttribute("disabled")||this.hasAttribute("open")&&((t=this._portalEl)==null?void 0:t.getAttribute("data-state"))!=="closing"||!this._portalEl&&this._collectMenuItems().length===0||(this._lastFocused=document.activeElement||this._toggleButton,this._clearCloseTimer(),this._portalEl&&(this._setMenuState("opening"),this._portalEl.style.pointerEvents="auto",(e=this._positioner)==null||e.update(),requestAnimationFrame(()=>this._setMenuState("open"))),this.setAttribute("open",""),queueMicrotask(()=>{if(!this._portalEl)this._mountMenu();else try{this._portalEl.focus({preventScroll:!0})}catch{this._portalEl.focus()}}))}closeMenu(){this.hasAttribute("open")&&this.removeAttribute("open")}toggleMenu(){this.hasAttribute("open")?this.closeMenu():this.openMenu()}connectedCallback(){super.connectedCallback(),this.hasAttribute("open")&&this.openMenu()}disconnectedCallback(){this._teardownMenu(!0),super.disconnectedCallback()}attributeChangedCallback(t,e,i){if(e!==i){if(t==="open"){i!=null?this.openMenu():this._beginCloseMenu();return}this.isConnected&&this.requestRender()}}render(){var i,n,o;const t=this.getAttribute("label")||"Run action",e=this.getAttribute("menu-label")||"Open action menu";this.setContent(`
476
+ `;function y(d,e){const t=d.cloneNode(!0);if(t.setAttribute("slot","menuitem"),t.setAttribute("data-menu-item","true"),t.setAttribute("data-index",String(e)),t.setAttribute("role","menuitem"),t.setAttribute("tabindex","-1"),t.classList.add("menu-option"),t.setAttribute("data-has-description",t.querySelector("[data-menu-description]")?"true":"false"),t.setAttribute("data-has-shortcut",t.querySelector("[data-menu-shortcut]")?"true":"false"),t.hasAttribute("disabled")&&t.setAttribute("aria-disabled","true"),!t.querySelector("[data-menu-affordance]")){const n=document.createElement("span");n.setAttribute("data-menu-affordance","true"),n.setAttribute("aria-hidden","true"),t.prepend(n)}return t.id||(t.id=`ui-split-button-item-${Math.random().toString(36).slice(2,9)}`),t}class b extends f.ElementBase{constructor(){super(),this._portalEl=null,this._portalRoot=null,this._layer=null,this._positioner=null,this._listbox=null,this._triggerButton=null,this._toggleButton=null,this._menuItems=[],this._lastFocused=null,this._closeTimer=null,this._onPrimaryClick=this._onPrimaryClick.bind(this),this._onToggleClick=this._onToggleClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onMenuPointerDown=this._onMenuPointerDown.bind(this),this._onMenuPointerMove=this._onMenuPointerMove.bind(this)}static get observedAttributes(){return["label","menu-label","menu-heading","menu-description","variant","density","menu-density","menu-shape","disabled","open"]}openMenu(){var e,t;this.hasAttribute("disabled")||this.hasAttribute("open")&&((e=this._portalEl)==null?void 0:e.getAttribute("data-state"))!=="closing"||!this._portalEl&&this._collectMenuItems().length===0||(this._lastFocused=document.activeElement||this._toggleButton,this._clearCloseTimer(),this._portalEl&&(this._setMenuState("opening"),this._portalEl.style.pointerEvents="auto",(t=this._positioner)==null||t.update(),requestAnimationFrame(()=>this._setMenuState("open"))),this.setAttribute("open",""),queueMicrotask(()=>{if(!this._portalEl)this._mountMenu();else try{this._portalEl.focus({preventScroll:!0})}catch{this._portalEl.focus()}}))}closeMenu(){this.hasAttribute("open")&&this.removeAttribute("open")}toggleMenu(){this.hasAttribute("open")?this.closeMenu():this.openMenu()}connectedCallback(){super.connectedCallback(),this.hasAttribute("open")&&this.openMenu()}disconnectedCallback(){this._teardownMenu(!0),super.disconnectedCallback()}attributeChangedCallback(e,t,n){if(t!==n){if(e==="open"){n!=null?this.openMenu():this._beginCloseMenu();return}this.isConnected&&this.requestRender()}}render(){var n,i,o;const e=this.getAttribute("label")||"Run action",t=this.getAttribute("menu-label")||"Open action menu";this.setContent(`
402
477
  <style>${v}</style>
403
478
  <div class="group" part="group">
404
- <button class="button" part="button" type="button">${t}</button>
405
- <button class="toggle" part="toggle" type="button" aria-label="${e}" aria-haspopup="menu" aria-expanded="${this.hasAttribute("open")?"true":"false"}">
479
+ <button class="button" part="button" type="button">${e}</button>
480
+ <button class="toggle" part="toggle" type="button" aria-label="${t}" aria-haspopup="menu" aria-expanded="${this.hasAttribute("open")?"true":"false"}">
406
481
  <svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="m5 8 5 5 5-5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>
407
482
  </button>
408
483
  </div>
409
484
  <div class="slot-source"><slot name="menuitem"></slot></div>
410
- `),this._triggerButton=this.root.querySelector(".button"),this._toggleButton=this.root.querySelector(".toggle"),this._syncToggleState(),(i=this._triggerButton)==null||i.addEventListener("click",this._onPrimaryClick),(n=this._toggleButton)==null||n.addEventListener("click",this._onToggleClick),(o=this._toggleButton)==null||o.addEventListener("keydown",this._onKeyDown)}_onPrimaryClick(t){this.hasAttribute("disabled")||this.dispatchEvent(new CustomEvent("primary-action",{detail:{originalEvent:t},bubbles:!0,composed:!0}))}_onToggleClick(){this.toggleMenu()}_onKeyDown(t){(t.key==="ArrowDown"||t.key==="Enter"||t.key===" ")&&(t.preventDefault(),this.openMenu())}_mountMenu(){var d;if(this._portalEl)return;const t=h.createPortalContainer();if(!t)return;this._portalRoot=t,this._portalRoot.classList.add("ui-split-button-portal");const e=document.createElement("div");e.className="menu",e.setAttribute("role","menu"),e.setAttribute("data-state","opening"),e.tabIndex=-1,e.style.pointerEvents="auto";const i=document.createElement("style");i.textContent=_;const n=this.getAttribute("menu-heading")||"",o=this.getAttribute("menu-description")||"",r=n||o?(()=>{const s=document.createElement("div");if(s.className="menu-header",n){const a=document.createElement("p");a.className="menu-heading",a.textContent=n,s.appendChild(a)}if(o){const a=document.createElement("p");a.className="menu-description",a.textContent=o,s.appendChild(a)}return s})():null,u=document.createElement("ui-listbox");if(u.setAttribute("item-selector",'[slot="menuitem"]'),u.setAttribute("item-role","menuitem"),u.setAttribute("active-attribute","data-active"),this._menuItems=this._collectMenuItems(),this._menuItems.length===0){this.removeAttribute("open");return}const l=(d=this.root.querySelector(".group"))==null?void 0:d.getBoundingClientRect();l&&Number.isFinite(l.width)&&l.width>0&&(e.style.minWidth=`${Math.max(236,Math.round(l.width))}px`),this._menuItems.forEach(s=>u.appendChild(s)),u.refresh(),e.append(i),r&&e.appendChild(r),e.appendChild(u),this._portalRoot.appendChild(e),this._portalEl=e,this._listbox=u,this._positioner=x.createPositioner({floating:e,anchor:this._toggleButton||this,placement:"bottom-start",offset:6,fitViewport:!0}),this._layer=f.createDismissableLayer({node:e,trigger:this._toggleButton,closeOnEscape:!0,closeOnPointerOutside:!0,onDismiss:()=>this.closeMenu()}),u.addEventListener("click",s=>this._onMenuClick(s)),u.addEventListener("keydown",s=>this._onMenuKeyDown(s));const c=this._listbox.focusBoundary("first",{focus:!1,scroll:!1});c&&this._listbox.setActiveItem(c,{focus:!1,scroll:!1}),this._syncToggleState(),requestAnimationFrame(()=>this._setMenuState("open")),queueMicrotask(()=>{try{e.focus({preventScroll:!0})}catch{e.focus()}})}_collectMenuItems(){const t=this.root.querySelector('slot[name="menuitem"]');return(t?t.assignedElements({flatten:!0}):[]).filter(i=>i.getAttribute("slot")==="menuitem").map((i,n)=>y(i,n))}_onMenuClick(t){var n,o;const e=t.composedPath(),i=this._menuItems.find(r=>e.includes(r));if(!i){const r=(o=(n=t.target)==null?void 0:n.closest)==null?void 0:o.call(n,"[data-menu-item]");r&&this._selectMenuItem(r);return}this._selectMenuItem(i)}_onMenuKeyDown(t){if(this._listbox){if(t.key==="Escape"||t.key==="Tab"){t.preventDefault(),this.closeMenu();return}if(t.key==="ArrowDown"){t.preventDefault(),this._listbox.move(1,{focus:!1,scroll:!0});return}if(t.key==="ArrowUp"){t.preventDefault(),this._listbox.move(-1,{focus:!1,scroll:!0});return}if(t.key==="Home"){t.preventDefault(),this._listbox.focusBoundary("first",{focus:!1,scroll:!0});return}if(t.key==="End"){t.preventDefault(),this._listbox.focusBoundary("last",{focus:!1,scroll:!0});return}if(t.key==="Enter"||t.key===" "){t.preventDefault();const e=this._listbox.getActiveItem();e&&this._selectMenuItem(e)}}}_syncToggleState(){var t;(t=this._toggleButton)==null||t.setAttribute("aria-expanded",this.hasAttribute("open")?"true":"false")}_selectMenuItem(t){const e=Number(t.getAttribute("data-index")||-1);this.dispatchEvent(new CustomEvent("select",{detail:{index:e,value:t.getAttribute("data-value")||void 0,label:t.getAttribute("data-label")||(t.textContent||"").trim()},bubbles:!0,composed:!0})),this.closeMenu()}_beginCloseMenu(){this._portalEl&&(this._clearCloseTimer(),this._setMenuState("closing"),this._portalEl.style.pointerEvents="none",this._closeTimer=window.setTimeout(()=>{this._closeTimer=null,this._teardownMenu(!0)},m))}_setMenuState(t){var e;(e=this._portalEl)==null||e.setAttribute("data-state",t)}_clearCloseTimer(){this._closeTimer!=null&&(window.clearTimeout(this._closeTimer),this._closeTimer=null)}_teardownMenu(t=!1){var e,i,n;if(this._clearCloseTimer(),(e=this._layer)==null||e.destroy(),this._layer=null,(i=this._positioner)==null||i.destroy(),this._positioner=null,this._listbox=null,(n=this._portalEl)!=null&&n.parentElement&&this._portalEl.parentElement.removeChild(this._portalEl),this._portalEl=null,this._portalRoot=null,this._syncToggleState(),t){const o=this._toggleButton||this._lastFocused;o&&o.isConnected&&queueMicrotask(()=>{try{o.focus({preventScroll:!0})}catch{o.focus()}})}this._lastFocused=null}}typeof customElements<"u"&&!customElements.get("ui-split-button")&&customElements.define("ui-split-button",b);exports.UISplitButton=b;
485
+ `),this._triggerButton=this.root.querySelector(".button"),this._toggleButton=this.root.querySelector(".toggle"),this._syncToggleState(),(n=this._triggerButton)==null||n.addEventListener("click",this._onPrimaryClick),(i=this._toggleButton)==null||i.addEventListener("click",this._onToggleClick),(o=this._toggleButton)==null||o.addEventListener("keydown",this._onKeyDown)}_onPrimaryClick(e){this.hasAttribute("disabled")||this.dispatchEvent(new CustomEvent("primary-action",{detail:{originalEvent:e},bubbles:!0,composed:!0}))}_onToggleClick(){this.toggleMenu()}_onKeyDown(e){(e.key==="ArrowDown"||e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.openMenu())}_mountMenu(){var c;if(this._portalEl)return;const e=g.createPortalContainer();if(!e)return;this._portalRoot=e,this._portalRoot.classList.add("ui-split-button-portal");const t=document.createElement("div");t.className="menu",t.setAttribute("role","menu"),t.setAttribute("data-state","opening"),t.tabIndex=-1,t.style.pointerEvents="auto";const n=document.createElement("style");n.textContent=_;const i=this.getAttribute("menu-heading")||"",o=this.getAttribute("menu-description")||"",r=i||o?(()=>{const a=document.createElement("div");if(a.className="menu-header",i){const u=document.createElement("p");u.className="menu-heading",u.textContent=i,a.appendChild(u)}if(o){const u=document.createElement("p");u.className="menu-description",u.textContent=o,a.appendChild(u)}return a})():null,s=document.createElement("ui-listbox");if(s.setAttribute("item-selector",'[slot="menuitem"]'),s.setAttribute("item-role","menuitem"),s.setAttribute("active-attribute","data-active"),this._menuItems=this._collectMenuItems(),this._menuItems.length===0){this.removeAttribute("open");return}const l=(c=this.root.querySelector(".group"))==null?void 0:c.getBoundingClientRect();l&&Number.isFinite(l.width)&&l.width>0&&(t.style.minWidth=`${Math.max(260,Math.round(l.width))}px`),this._menuItems.forEach(a=>s.appendChild(a)),s.refresh(),t.append(n),r&&t.appendChild(r),t.appendChild(s),this._portalRoot.appendChild(t),this._portalEl=t,this._listbox=s,this._positioner=x.createPositioner({floating:t,anchor:this.root.querySelector(".group")||this._toggleButton||this,placement:"bottom-start",offset:6,fitViewport:!0}),this._layer=h.createDismissableLayer({node:t,trigger:this._toggleButton,closeOnEscape:!0,closeOnPointerOutside:!0,onDismiss:()=>this.closeMenu()}),s.addEventListener("click",a=>this._onMenuClick(a)),s.addEventListener("pointerdown",this._onMenuPointerDown),s.addEventListener("pointermove",this._onMenuPointerMove,{passive:!0}),s.addEventListener("keydown",a=>this._onMenuKeyDown(a));const p=this._listbox.focusBoundary("first",{focus:!1,scroll:!1});p&&this._listbox.setActiveItem(p,{focus:!1,scroll:!1}),this._syncToggleState(),requestAnimationFrame(()=>this._setMenuState("open")),queueMicrotask(()=>{try{t.focus({preventScroll:!0})}catch{t.focus()}})}_collectMenuItems(){const e=this.root.querySelector('slot[name="menuitem"]');return(e?e.assignedElements({flatten:!0}):[]).filter(n=>n.getAttribute("slot")==="menuitem").map((n,i)=>y(n,i))}_onMenuClick(e){var i,o;const t=e.composedPath(),n=this._menuItems.find(r=>t.includes(r));if(!n){const r=(o=(i=e.target)==null?void 0:i.closest)==null?void 0:o.call(i,"[data-menu-item]");r&&this._selectMenuItem(r);return}this._selectMenuItem(n)}_onMenuPointerDown(e){var n,i;(i=(n=e.target)==null?void 0:n.closest)!=null&&i.call(n,"[data-menu-item]")&&e.preventDefault()}_onMenuPointerMove(e){var n,i;if(!this._listbox)return;const t=(i=(n=e.target)==null?void 0:n.closest)==null?void 0:i.call(n,"[data-menu-item]");!t||t.hasAttribute("disabled")||t.getAttribute("aria-disabled")==="true"||this._listbox.getActiveItem()!==t&&this._listbox.setActiveItem(t,{focus:!1,scroll:!1})}_onMenuKeyDown(e){if(this._listbox){if(e.key==="Escape"||e.key==="Tab"){e.preventDefault(),this.closeMenu();return}if(e.key==="ArrowDown"){e.preventDefault(),this._listbox.move(1,{focus:!1,scroll:!0});return}if(e.key==="ArrowUp"){e.preventDefault(),this._listbox.move(-1,{focus:!1,scroll:!0});return}if(e.key==="Home"){e.preventDefault(),this._listbox.focusBoundary("first",{focus:!1,scroll:!0});return}if(e.key==="End"){e.preventDefault(),this._listbox.focusBoundary("last",{focus:!1,scroll:!0});return}if(e.key==="Enter"||e.key===" "){e.preventDefault();const t=this._listbox.getActiveItem();t&&this._selectMenuItem(t)}}}_syncToggleState(){var e;(e=this._toggleButton)==null||e.setAttribute("aria-expanded",this.hasAttribute("open")?"true":"false")}_selectMenuItem(e){const t=Number(e.getAttribute("data-index")||-1);this.dispatchEvent(new CustomEvent("select",{detail:{index:t,value:e.getAttribute("data-value")||void 0,label:e.getAttribute("data-label")||(e.textContent||"").trim()},bubbles:!0,composed:!0})),this.closeMenu()}_beginCloseMenu(){this._portalEl&&(this._clearCloseTimer(),this._setMenuState("closing"),this._portalEl.style.pointerEvents="none",this._closeTimer=window.setTimeout(()=>{this._closeTimer=null,this._teardownMenu(!0)},m))}_setMenuState(e){var t;(t=this._portalEl)==null||t.setAttribute("data-state",e)}_clearCloseTimer(){this._closeTimer!=null&&(window.clearTimeout(this._closeTimer),this._closeTimer=null)}_teardownMenu(e=!1){var t,n,i;if(this._clearCloseTimer(),(t=this._layer)==null||t.destroy(),this._layer=null,(n=this._positioner)==null||n.destroy(),this._positioner=null,this._listbox=null,(i=this._portalEl)!=null&&i.parentElement&&this._portalEl.parentElement.removeChild(this._portalEl),this._portalEl=null,this._portalRoot=null,this._syncToggleState(),e){const o=this._toggleButton||this._lastFocused;o&&o.isConnected&&queueMicrotask(()=>{try{o.focus({preventScroll:!0})}catch{o.focus()}})}this._lastFocused=null}}typeof customElements<"u"&&!customElements.get("ui-split-button")&&customElements.define("ui-split-button",b);exports.UISplitButton=b;