@editora/ui-core 0.1.24 → 0.2.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 (318) hide show
  1. package/README.md +339 -5
  2. package/dist/accordion.cjs.js +13 -12
  3. package/dist/accordion.esm.js +13 -12
  4. package/dist/alert-dialog.cjs.js +76 -45
  5. package/dist/alert-dialog.esm.js +179 -135
  6. package/dist/alert.cjs.js +41 -32
  7. package/dist/alert.esm.js +79 -70
  8. package/dist/animated-beam.cjs.js +42 -50
  9. package/dist/animated-beam.esm.js +47 -55
  10. package/dist/animated-list.cjs.js +11 -27
  11. package/dist/animated-list.esm.js +12 -28
  12. package/dist/animated-text.cjs.js +4 -4
  13. package/dist/animated-text.esm.js +4 -4
  14. package/dist/app-header.cjs.js +5 -5
  15. package/dist/app-header.esm.js +6 -6
  16. package/dist/aspect-ratio.cjs.js +10 -12
  17. package/dist/aspect-ratio.esm.js +11 -13
  18. package/dist/avatar.cjs.js +13 -17
  19. package/dist/avatar.esm.js +13 -17
  20. package/dist/badge.cjs.js +27 -22
  21. package/dist/badge.esm.js +32 -27
  22. package/dist/block-controls.cjs.js +11 -12
  23. package/dist/block-controls.esm.js +8 -9
  24. package/dist/box.cjs.js +2 -3
  25. package/dist/box.esm.js +2 -3
  26. package/dist/breadcrumb.cjs.js +12 -18
  27. package/dist/breadcrumb.esm.js +11 -17
  28. package/dist/button.cjs.js +1 -1
  29. package/dist/button.esm.js +1 -1
  30. package/dist/{calendar-B3PUKHQm.mjs → calendar-DmxiZrR7.mjs} +126 -117
  31. package/dist/{calendar-D-mXMgqc.js → calendar-o273O28D.js} +53 -44
  32. package/dist/calendar.cjs.js +1 -1
  33. package/dist/calendar.esm.js +1 -1
  34. package/dist/card.cjs.js +6 -7
  35. package/dist/card.esm.js +5 -6
  36. package/dist/chart.cjs.js +52 -52
  37. package/dist/chart.esm.js +95 -95
  38. package/dist/checkbox.cjs.js +19 -15
  39. package/dist/checkbox.esm.js +19 -15
  40. package/dist/collapsible.cjs.js +7 -11
  41. package/dist/collapsible.esm.js +7 -11
  42. package/dist/color-picker.cjs.js +36 -17
  43. package/dist/color-picker.esm.js +132 -113
  44. package/dist/combobox.cjs.js +57 -54
  45. package/dist/combobox.esm.js +62 -58
  46. package/dist/command-palette.cjs.js +1 -0
  47. package/dist/command-palette.esm.js +1 -0
  48. package/dist/command.cjs.js +32 -14
  49. package/dist/command.esm.js +46 -28
  50. package/dist/components/date-time-utils.d.ts.map +1 -1
  51. package/dist/components/gantt-schedule.d.ts +79 -0
  52. package/dist/components/gantt-schedule.d.ts.map +1 -0
  53. package/dist/components/ui-accordion.d.ts.map +1 -1
  54. package/dist/components/ui-alert-dialog.d.ts +2 -0
  55. package/dist/components/ui-alert-dialog.d.ts.map +1 -1
  56. package/dist/components/ui-alert.d.ts.map +1 -1
  57. package/dist/components/ui-animated-beam.d.ts.map +1 -1
  58. package/dist/components/ui-animated-list.d.ts.map +1 -1
  59. package/dist/components/ui-aspect-ratio.d.ts.map +1 -1
  60. package/dist/components/ui-avatar.d.ts.map +1 -1
  61. package/dist/components/ui-badge.d.ts.map +1 -1
  62. package/dist/components/ui-block-controls.d.ts.map +1 -1
  63. package/dist/components/ui-box.d.ts.map +1 -1
  64. package/dist/components/ui-breadcrumb.d.ts.map +1 -1
  65. package/dist/components/ui-button.d.ts.map +1 -1
  66. package/dist/components/ui-calendar.d.ts.map +1 -1
  67. package/dist/components/ui-card.d.ts.map +1 -1
  68. package/dist/components/ui-checkbox.d.ts.map +1 -1
  69. package/dist/components/ui-collapsible.d.ts.map +1 -1
  70. package/dist/components/ui-color-picker.d.ts.map +1 -1
  71. package/dist/components/ui-combobox.d.ts.map +1 -1
  72. package/dist/components/ui-command-palette.d.ts.map +1 -1
  73. package/dist/components/ui-command.d.ts.map +1 -1
  74. package/dist/components/ui-container.d.ts.map +1 -1
  75. package/dist/components/ui-context-menu.d.ts.map +1 -1
  76. package/dist/components/ui-data-table.d.ts +7 -0
  77. package/dist/components/ui-data-table.d.ts.map +1 -1
  78. package/dist/components/ui-date-picker.d.ts.map +1 -1
  79. package/dist/components/ui-date-range-picker.d.ts.map +1 -1
  80. package/dist/components/ui-date-range-time-picker.d.ts.map +1 -1
  81. package/dist/components/ui-date-time-picker.d.ts.map +1 -1
  82. package/dist/components/ui-dialog.d.ts +2 -0
  83. package/dist/components/ui-dialog.d.ts.map +1 -1
  84. package/dist/components/ui-dock.d.ts.map +1 -1
  85. package/dist/components/ui-drawer.d.ts.map +1 -1
  86. package/dist/components/ui-dropdown.d.ts.map +1 -1
  87. package/dist/components/ui-empty-state.d.ts.map +1 -1
  88. package/dist/components/ui-field.d.ts.map +1 -1
  89. package/dist/components/ui-fieldset.d.ts.map +1 -1
  90. package/dist/components/ui-file-upload.d.ts.map +1 -1
  91. package/dist/components/ui-floating-toolbar.d.ts.map +1 -1
  92. package/dist/components/ui-form.d.ts.map +1 -1
  93. package/dist/components/ui-gantt.d.ts +186 -2
  94. package/dist/components/ui-gantt.d.ts.map +1 -1
  95. package/dist/components/ui-icon-cloud.d.ts.map +1 -1
  96. package/dist/components/ui-inline-edit.d.ts.map +1 -1
  97. package/dist/components/ui-input.d.ts.map +1 -1
  98. package/dist/components/ui-marquee.d.ts.map +1 -1
  99. package/dist/components/ui-menu.d.ts.map +1 -1
  100. package/dist/components/ui-menubar.d.ts.map +1 -1
  101. package/dist/components/ui-meter.d.ts.map +1 -1
  102. package/dist/components/ui-multi-select.d.ts.map +1 -1
  103. package/dist/components/ui-number-field.d.ts.map +1 -1
  104. package/dist/components/ui-orbiter.d.ts.map +1 -1
  105. package/dist/components/ui-pagination.d.ts.map +1 -1
  106. package/dist/components/ui-password-field.d.ts.map +1 -1
  107. package/dist/components/ui-pin-input.d.ts.map +1 -1
  108. package/dist/components/ui-popover.d.ts.map +1 -1
  109. package/dist/components/ui-progress.d.ts.map +1 -1
  110. package/dist/components/ui-radio-group.d.ts.map +1 -1
  111. package/dist/components/ui-radio.d.ts.map +1 -1
  112. package/dist/components/ui-rating.d.ts +1 -0
  113. package/dist/components/ui-rating.d.ts.map +1 -1
  114. package/dist/components/ui-scroll-area.d.ts.map +1 -1
  115. package/dist/components/ui-section.d.ts.map +1 -1
  116. package/dist/components/ui-select.d.ts.map +1 -1
  117. package/dist/components/ui-selection-popup.d.ts.map +1 -1
  118. package/dist/components/ui-slider.d.ts.map +1 -1
  119. package/dist/components/ui-sortable.d.ts.map +1 -1
  120. package/dist/components/ui-spinning-text.d.ts.map +1 -1
  121. package/dist/components/ui-split-button.d.ts.map +1 -1
  122. package/dist/components/ui-splitter.d.ts.map +1 -1
  123. package/dist/components/ui-stepper.d.ts.map +1 -1
  124. package/dist/components/ui-switch.d.ts.map +1 -1
  125. package/dist/components/ui-tabs.d.ts.map +1 -1
  126. package/dist/components/ui-tags-input.d.ts.map +1 -1
  127. package/dist/components/ui-textarea.d.ts.map +1 -1
  128. package/dist/components/ui-time-picker.d.ts.map +1 -1
  129. package/dist/components/ui-toggle-group.d.ts +2 -0
  130. package/dist/components/ui-toggle-group.d.ts.map +1 -1
  131. package/dist/components/ui-toggle.d.ts.map +1 -1
  132. package/dist/components/ui-toolbar.d.ts +2 -0
  133. package/dist/components/ui-toolbar.d.ts.map +1 -1
  134. package/dist/components/ui-tooltip.d.ts.map +1 -1
  135. package/dist/components/ui-transfer-list.d.ts.map +1 -1
  136. package/dist/components/ui-tree-item.d.ts.map +1 -1
  137. package/dist/components/ui-tree.d.ts.map +1 -1
  138. package/dist/components/ui-wizard.d.ts.map +1 -1
  139. package/dist/container.cjs.js +6 -12
  140. package/dist/container.esm.js +8 -14
  141. package/dist/context-menu.cjs.js +8 -8
  142. package/dist/context-menu.esm.js +42 -41
  143. package/dist/data-table.cjs.js +18 -15
  144. package/dist/data-table.esm.js +207 -187
  145. package/dist/date-field.cjs.js +8 -8
  146. package/dist/date-field.esm.js +7 -7
  147. package/dist/date-picker.cjs.js +27 -18
  148. package/dist/date-picker.esm.js +57 -48
  149. package/dist/date-range-picker.cjs.js +22 -17
  150. package/dist/date-range-picker.esm.js +31 -26
  151. package/dist/date-range-time-picker.cjs.js +26 -19
  152. package/dist/date-range-time-picker.esm.js +23 -16
  153. package/dist/date-time-picker.cjs.js +23 -16
  154. package/dist/date-time-picker.esm.js +88 -81
  155. package/dist/{date-time-utils-BTlxnz5j.mjs → date-time-utils-B4hAkt36.mjs} +75 -68
  156. package/dist/date-time-utils-DdigV4hs.js +1 -0
  157. package/dist/dialog.cjs.js +57 -41
  158. package/dist/dialog.esm.js +84 -51
  159. package/dist/dock.cjs.js +16 -30
  160. package/dist/dock.esm.js +26 -40
  161. package/dist/drawer.cjs.js +8 -12
  162. package/dist/drawer.esm.js +6 -10
  163. package/dist/dropdown.cjs.js +8 -6
  164. package/dist/dropdown.esm.js +33 -30
  165. package/dist/empty-state.cjs.js +17 -15
  166. package/dist/empty-state.esm.js +13 -11
  167. package/dist/field.cjs.js +22 -13
  168. package/dist/field.esm.js +54 -45
  169. package/dist/fieldset.cjs.js +18 -11
  170. package/dist/fieldset.esm.js +20 -13
  171. package/dist/file-upload.cjs.js +77 -35
  172. package/dist/file-upload.esm.js +152 -110
  173. package/dist/floating-toolbar.cjs.js +6 -7
  174. package/dist/floating-toolbar.esm.js +8 -9
  175. package/dist/form.cjs.js +20 -23
  176. package/dist/form.esm.js +20 -23
  177. package/dist/gantt.cjs.js +525 -110
  178. package/dist/gantt.esm.js +1882 -377
  179. package/dist/hover-card.cjs.js +7 -7
  180. package/dist/hover-card.esm.js +7 -7
  181. package/dist/icon-cloud.cjs.js +19 -36
  182. package/dist/icon-cloud.esm.js +41 -58
  183. package/dist/index.cjs.js +1 -1
  184. package/dist/index.d.ts +2 -0
  185. package/dist/index.d.ts.map +1 -1
  186. package/dist/index.esm.js +108 -104
  187. package/dist/inline-edit.cjs.js +47 -19
  188. package/dist/inline-edit.esm.js +66 -38
  189. package/dist/input.cjs.js +44 -37
  190. package/dist/input.esm.js +59 -52
  191. package/dist/layout.cjs.js +3 -3
  192. package/dist/layout.esm.js +3 -3
  193. package/dist/marquee.cjs.js +7 -10
  194. package/dist/marquee.esm.js +7 -10
  195. package/dist/menu.cjs.js +8 -24
  196. package/dist/menu.esm.js +52 -72
  197. package/dist/menubar.cjs.js +9 -31
  198. package/dist/menubar.esm.js +127 -153
  199. package/dist/meter.cjs.js +4 -9
  200. package/dist/meter.esm.js +6 -11
  201. package/dist/multi-select.cjs.js +48 -35
  202. package/dist/multi-select.esm.js +67 -53
  203. package/dist/navigation-menu.cjs.js +10 -10
  204. package/dist/navigation-menu.esm.js +33 -33
  205. package/dist/number-field.cjs.js +27 -16
  206. package/dist/number-field.esm.js +36 -25
  207. package/dist/odometer.cjs.js +5 -5
  208. package/dist/odometer.esm.js +3 -3
  209. package/dist/orbiter.cjs.js +11 -28
  210. package/dist/orbiter.esm.js +28 -45
  211. package/dist/overlay-motion-B56x1GoY.js +49 -0
  212. package/dist/overlay-motion-BX3dPLay.mjs +120 -0
  213. package/dist/pagination.cjs.js +28 -25
  214. package/dist/pagination.esm.js +54 -51
  215. package/dist/password-field.cjs.js +38 -33
  216. package/dist/password-field.esm.js +62 -57
  217. package/dist/pin-input.cjs.js +17 -13
  218. package/dist/pin-input.esm.js +23 -19
  219. package/dist/plugin-panel.cjs.js +1 -1
  220. package/dist/plugin-panel.esm.js +1 -1
  221. package/dist/popover.cjs.js +16 -28
  222. package/dist/popover.esm.js +29 -45
  223. package/dist/portal-DeaM1tYY.mjs +121 -0
  224. package/dist/portal-XbYR3m_q.js +1 -0
  225. package/dist/portal.d.ts +3 -1
  226. package/dist/portal.d.ts.map +1 -1
  227. package/dist/{positioner-D0VGxtYU.mjs → positioner-BE8Nbho2.mjs} +5 -3
  228. package/dist/{positioner-D_fqyx_j.js → positioner-DZ1FW6A9.js} +1 -1
  229. package/dist/positioner.cjs.js +1 -1
  230. package/dist/positioner.esm.js +1 -1
  231. package/dist/primitives/overlay-motion.d.ts +47 -0
  232. package/dist/primitives/overlay-motion.d.ts.map +1 -0
  233. package/dist/primitives/positioner.d.ts.map +1 -1
  234. package/dist/progress.cjs.js +11 -16
  235. package/dist/progress.esm.js +37 -42
  236. package/dist/quick-actions.cjs.js +13 -13
  237. package/dist/quick-actions.esm.js +11 -11
  238. package/dist/radio-group.cjs.js +50 -26
  239. package/dist/radio-group.esm.js +53 -29
  240. package/dist/radio.cjs.js +15 -12
  241. package/dist/radio.esm.js +15 -12
  242. package/dist/rating.cjs.js +11 -15
  243. package/dist/rating.esm.js +48 -50
  244. package/dist/{runtime-CFnK53iC.mjs → runtime-CQM6wZOc.mjs} +498 -514
  245. package/dist/runtime-DxCl0A5q.js +5 -0
  246. package/dist/runtime.cjs.js +1 -1
  247. package/dist/runtime.d.ts +3 -2
  248. package/dist/runtime.d.ts.map +1 -1
  249. package/dist/runtime.esm.js +36 -32
  250. package/dist/scroll-area.cjs.js +3 -4
  251. package/dist/scroll-area.esm.js +3 -4
  252. package/dist/section.cjs.js +2 -4
  253. package/dist/section.esm.js +2 -4
  254. package/dist/select.cjs.js +40 -73
  255. package/dist/select.esm.js +55 -87
  256. package/dist/selection-popup.cjs.js +3 -4
  257. package/dist/selection-popup.esm.js +3 -4
  258. package/dist/semantic-tokens.d.ts +17 -0
  259. package/dist/semantic-tokens.d.ts.map +1 -0
  260. package/dist/sidebar.cjs.js +22 -22
  261. package/dist/sidebar.esm.js +25 -25
  262. package/dist/skeleton.cjs.js +2 -2
  263. package/dist/skeleton.esm.js +2 -2
  264. package/dist/slider.cjs.js +22 -26
  265. package/dist/slider.esm.js +25 -29
  266. package/dist/sortable.cjs.js +4 -5
  267. package/dist/sortable.esm.js +4 -5
  268. package/dist/spinning-text.cjs.js +4 -13
  269. package/dist/spinning-text.esm.js +4 -13
  270. package/dist/split-button.cjs.js +5 -5
  271. package/dist/split-button.esm.js +15 -14
  272. package/dist/splitter.cjs.js +52 -10
  273. package/dist/splitter.esm.js +55 -13
  274. package/dist/stepper.cjs.js +31 -65
  275. package/dist/stepper.esm.js +32 -66
  276. package/dist/switch.cjs.js +20 -22
  277. package/dist/switch.esm.js +20 -22
  278. package/dist/table.cjs.js +5 -5
  279. package/dist/table.esm.js +20 -20
  280. package/dist/tabs.cjs.js +91 -21
  281. package/dist/tabs.esm.js +182 -112
  282. package/dist/tags-input.cjs.js +41 -15
  283. package/dist/tags-input.esm.js +73 -47
  284. package/dist/textarea.cjs.js +32 -33
  285. package/dist/textarea.esm.js +38 -39
  286. package/dist/theme.d.ts +25 -1
  287. package/dist/theme.d.ts.map +1 -1
  288. package/dist/time-field.cjs.js +7 -7
  289. package/dist/time-field.esm.js +6 -6
  290. package/dist/time-picker.cjs.js +16 -13
  291. package/dist/time-picker.esm.js +27 -24
  292. package/dist/timeline.cjs.js +10 -10
  293. package/dist/timeline.esm.js +7 -7
  294. package/dist/toggle-group.cjs.js +13 -13
  295. package/dist/toggle-group.esm.js +66 -61
  296. package/dist/toggle.cjs.js +52 -34
  297. package/dist/toggle.esm.js +80 -62
  298. package/dist/toolbar.cjs.js +14 -14
  299. package/dist/toolbar.esm.js +41 -33
  300. package/dist/tooltip.cjs.js +3 -3
  301. package/dist/tooltip.esm.js +39 -33
  302. package/dist/transfer-list.cjs.js +28 -29
  303. package/dist/transfer-list.esm.js +28 -29
  304. package/dist/{tree-B_oQput6.mjs → tree-33fVNnaf.mjs} +6 -5
  305. package/dist/{tree-SivHxcAy.js → tree-Dc02MChE.js} +6 -5
  306. package/dist/tree-item.cjs.js +9 -8
  307. package/dist/tree-item.esm.js +13 -12
  308. package/dist/tree.cjs.js +1 -1
  309. package/dist/tree.esm.js +1 -1
  310. package/dist/{ui-button-Co8Sid6t.mjs → ui-button-C3OmI7Sn.mjs} +152 -154
  311. package/dist/{ui-button-BPrzJScZ.js → ui-button-CnLwXBnx.js} +107 -109
  312. package/dist/wizard.cjs.js +39 -36
  313. package/dist/wizard.esm.js +39 -36
  314. package/package.json +1 -1
  315. package/dist/date-time-utils-y3AvNvGe.js +0 -1
  316. package/dist/portal-DgpQ3Jo1.js +0 -1
  317. package/dist/portal-bR42gHvG.mjs +0 -118
  318. package/dist/runtime-DwE-tizc.js +0 -1
@@ -2,7 +2,8 @@ import { E as z } from "./ElementBase-BeZT54Hj.mjs";
2
2
  import { a as B, r as I } from "./scroll-lock-LfqXXqsu.mjs";
3
3
  import { c as M } from "./dismissable-layer-BmPIoK80.mjs";
4
4
  import { c as R } from "./focus-scope-CmEsG5UZ.mjs";
5
- const W = `
5
+ import { l as P, c as W } from "./overlay-motion-BX3dPLay.mjs";
6
+ const H = `
6
7
  :host {
7
8
  position: fixed;
8
9
  inset: 0;
@@ -13,17 +14,13 @@ const W = `
13
14
  color-scheme: light dark;
14
15
  --ui-dialog-backdrop: color-mix(in srgb, #020617 58%, transparent);
15
16
  --ui-dialog-backdrop-filter: none;
16
- --ui-dialog-bg: linear-gradient(
17
- 180deg,
18
- color-mix(in srgb, var(--ui-color-surface, #ffffff) 98%, transparent) 0%,
19
- color-mix(in srgb, var(--ui-color-surface-elevated, #f8fafc) 24%, var(--ui-color-surface, #ffffff)) 100%
20
- );
17
+ --ui-dialog-bg: var(--color-panel-solid, var(--ui-color-surface-elevated, var(--ui-color-surface, #ffffff)));
21
18
  --ui-dialog-color: var(--ui-color-text, #0f172a);
22
19
  --ui-dialog-muted: var(--ui-color-muted, #526175);
23
- --ui-dialog-border-color: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 70%, transparent);
20
+ --ui-dialog-border-color: var(--ui-color-line-subtle, color-mix(in srgb, var(--ui-color-border, #cbd5e1) 70%, transparent));
24
21
  --ui-dialog-border: 1px solid var(--ui-dialog-border-color);
25
- --ui-dialog-shadow: none;
26
- --ui-dialog-radius: 16px;
22
+ --ui-dialog-shadow: var(--shadow-6, 0 24px 60px rgba(2, 6, 23, 0.28));
23
+ --ui-dialog-radius: calc(var(--ui-radius, 6px) * 2);
27
24
  --ui-dialog-padding-x: 24px;
28
25
  --ui-dialog-padding-y: 20px;
29
26
  --ui-dialog-width: min(560px, calc(100vw - 24px));
@@ -72,18 +69,21 @@ const W = `
72
69
  background: var(--ui-dialog-backdrop);
73
70
  -webkit-backdrop-filter: var(--ui-dialog-backdrop-filter);
74
71
  backdrop-filter: var(--ui-dialog-backdrop-filter);
75
- opacity: 0;
76
- transition: opacity var(--ui-dialog-duration) var(--ui-dialog-easing);
72
+ /* The overlay goes to the top layer (popover); undo the popover user-agent box. */
73
+ inline-size: 100%;
74
+ block-size: 100%;
75
+ max-inline-size: none;
76
+ max-block-size: none;
77
+ margin: 0;
78
+ border: 0;
79
+ overflow: visible;
80
+ color: inherit;
77
81
  }
78
82
 
79
83
  .overlay[hidden] {
80
84
  display: none;
81
85
  }
82
86
 
83
- .overlay[data-open='true'] {
84
- opacity: 1;
85
- }
86
-
87
87
  .panel {
88
88
  position: relative;
89
89
  z-index: var(--ui-dialog-z);
@@ -97,20 +97,39 @@ const W = `
97
97
  color: var(--ui-dialog-color);
98
98
  box-shadow: var(--ui-dialog-shadow);
99
99
  padding: var(--ui-dialog-padding-y) var(--ui-dialog-padding-x);
100
- transform: translate3d(0, 12px, 0) scale(0.985);
101
- opacity: 0;
102
100
  transition:
103
- transform var(--ui-dialog-duration) var(--ui-dialog-easing),
104
- opacity var(--ui-dialog-duration) var(--ui-dialog-easing),
105
101
  border-color var(--ui-dialog-duration) var(--ui-dialog-easing),
106
102
  box-shadow var(--ui-dialog-duration) var(--ui-dialog-easing);
107
- will-change: transform, opacity;
108
103
  backface-visibility: hidden;
109
104
  }
110
105
 
111
- .overlay[data-open='true'] .panel {
112
- transform: translate3d(0, 0, 0) scale(1);
113
- opacity: 1;
106
+ /* Open and close are animations on data-state: a transition cannot run out of display: none. */
107
+ .overlay[data-state='open']:not([data-instant]) {
108
+ animation: ui-dialog-backdrop-in var(--ui-dialog-in-duration, 150ms) ease-out backwards;
109
+ }
110
+
111
+ .overlay[data-state='open']:not([data-instant]) .panel {
112
+ animation: ui-dialog-panel-in var(--ui-dialog-in-duration, 150ms) var(--ui-motion-enter-easing, cubic-bezier(0.16, 1, 0.3, 1)) backwards;
113
+ }
114
+
115
+ .overlay[data-state='closed'] {
116
+ animation: ui-dialog-backdrop-out var(--ui-dialog-out-duration, 100ms) ease-in both;
117
+ pointer-events: none;
118
+ }
119
+
120
+ .overlay[data-state='closed'] .panel {
121
+ animation: ui-dialog-panel-out var(--ui-dialog-out-duration, 100ms) var(--ui-motion-exit-easing, cubic-bezier(0.4, 0, 1, 1)) both;
122
+ }
123
+
124
+ @keyframes ui-dialog-backdrop-in { from { opacity: 0; } to { opacity: 1; } }
125
+ @keyframes ui-dialog-backdrop-out { from { opacity: 1; } to { opacity: 0; } }
126
+ @keyframes ui-dialog-panel-in {
127
+ from { opacity: 0; transform: translate3d(0, 8px, 0) scale(0.96); }
128
+ to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
129
+ }
130
+ @keyframes ui-dialog-panel-out {
131
+ from { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
132
+ to { opacity: 0; transform: translate3d(0, 8px, 0) scale(0.96); }
114
133
  }
115
134
 
116
135
  :host([state='error']) .panel {
@@ -199,8 +218,6 @@ const W = `
199
218
 
200
219
  .footer {
201
220
  margin-top: 20px;
202
- padding-top: 16px;
203
- border-top: 1px solid color-mix(in srgb, var(--ui-dialog-border-color) 82%, transparent);
204
221
  display: flex;
205
222
  align-items: center;
206
223
  justify-content: flex-end;
@@ -280,7 +297,7 @@ const W = `
280
297
  }
281
298
 
282
299
  .error[data-empty='true'] {
283
- visibility: hidden;
300
+ display: none;
284
301
  }
285
302
 
286
303
  :host([state='loading']) .btn,
@@ -376,8 +393,8 @@ const W = `
376
393
  box-shadow: none;
377
394
  }
378
395
  }
379
- `, P = 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
380
- function g(n, t) {
396
+ `, K = 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
397
+ function p(n, t) {
381
398
  if (n == null) return t;
382
399
  const i = n.trim().toLowerCase();
383
400
  return i !== "false" && i !== "0" && i !== "off";
@@ -385,18 +402,18 @@ function g(n, t) {
385
402
  function a(n) {
386
403
  return n.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
387
404
  }
388
- function S() {
405
+ function C() {
389
406
  return typeof window < "u" && typeof document < "u";
390
407
  }
391
- function C(n) {
408
+ function S(n) {
392
409
  return window.setTimeout(n, 16);
393
410
  }
394
- function p(n) {
411
+ function g(n) {
395
412
  n && window.clearTimeout(n);
396
413
  }
397
414
  const l = class l extends z {
398
415
  constructor() {
399
- super(), this._isActive = !1, this._uid = Math.random().toString(36).slice(2, 10), this._dialogId = this._uid, this._lastFocused = null, this._terminalEmitted = !1, this._closeMeta = null, this._runtimeError = "", this._config = {}, this._dismissableLayer = null, this._focusScope = null, this._disconnectCleanupFrame = 0, this._restoreFocusFrame = 0, this._onClick = this._onClick.bind(this), this._onKeyDown = this._onKeyDown.bind(this), this._onFocusIn = this._onFocusIn.bind(this), this._onSubmit = this._onSubmit.bind(this);
416
+ super(), this._isActive = !1, this._uid = Math.random().toString(36).slice(2, 10), this._dialogId = this._uid, this._lastFocused = null, this._terminalEmitted = !1, this._closeMeta = null, this._runtimeError = "", this._config = {}, this._dismissableLayer = null, this._focusScope = null, this._disconnectCleanupFrame = 0, this._restoreFocusFrame = 0, this._presented = !1, this._finishClose = null, this._onClick = this._onClick.bind(this), this._onKeyDown = this._onKeyDown.bind(this), this._onFocusIn = this._onFocusIn.bind(this), this._onSubmit = this._onSubmit.bind(this);
400
417
  }
401
418
  static get observedAttributes() {
402
419
  return [
@@ -424,10 +441,10 @@ const l = class l extends z {
424
441
  ];
425
442
  }
426
443
  connectedCallback() {
427
- this._disconnectCleanupFrame && (p(this._disconnectCleanupFrame), this._disconnectCleanupFrame = 0), super.connectedCallback(), this.root.addEventListener("click", this._onClick), this.root.addEventListener("keydown", this._onKeyDown), this.addEventListener("submit", this._onSubmit), this._syncFromAttributes(), this._syncOpenState();
444
+ this._disconnectCleanupFrame && (g(this._disconnectCleanupFrame), this._disconnectCleanupFrame = 0), super.connectedCallback(), this.root.addEventListener("click", this._onClick), this.root.addEventListener("keydown", this._onKeyDown), this.addEventListener("submit", this._onSubmit), this._syncFromAttributes(), this._syncOpenState();
428
445
  }
429
446
  disconnectedCallback() {
430
- this.root.removeEventListener("click", this._onClick), this.root.removeEventListener("keydown", this._onKeyDown), this.removeEventListener("submit", this._onSubmit), this._disconnectCleanupFrame && p(this._disconnectCleanupFrame), this._restoreFocusFrame && (p(this._restoreFocusFrame), this._restoreFocusFrame = 0), this._disconnectCleanupFrame = C(() => {
447
+ this.root.removeEventListener("click", this._onClick), this.root.removeEventListener("keydown", this._onKeyDown), this.removeEventListener("submit", this._onSubmit), this._disconnectCleanupFrame && g(this._disconnectCleanupFrame), this._restoreFocusFrame && (g(this._restoreFocusFrame), this._restoreFocusFrame = 0), this._disconnectCleanupFrame = S(() => {
431
448
  this._disconnectCleanupFrame = 0, !this.isConnected && (this._isActive && !this._terminalEmitted ? this.close("dismiss", "unmount") : (this._destroyRuntimeControllers(), this._deactivate()), super.disconnectedCallback());
432
449
  });
433
450
  }
@@ -447,25 +464,25 @@ const l = class l extends z {
447
464
  t ? this.setAttribute("open", "") : this.close("dismiss", "programmatic");
448
465
  }
449
466
  get dismissible() {
450
- return g(this.getAttribute("dismissible") ?? this.getAttribute("closable"), !0);
467
+ return p(this.getAttribute("dismissible") ?? this.getAttribute("closable"), !0);
451
468
  }
452
469
  set dismissible(t) {
453
470
  this.setAttribute("dismissible", String(t)), this.setAttribute("closable", String(t));
454
471
  }
455
472
  get closeOnOverlay() {
456
- return g(this.getAttribute("close-on-overlay") ?? this.getAttribute("close-on-backdrop"), !0);
473
+ return p(this.getAttribute("close-on-overlay") ?? this.getAttribute("close-on-backdrop"), !0);
457
474
  }
458
475
  set closeOnOverlay(t) {
459
476
  this.setAttribute("close-on-overlay", String(t)), this.setAttribute("close-on-backdrop", String(t));
460
477
  }
461
478
  get closeOnEsc() {
462
- return g(this.getAttribute("close-on-esc"), !0);
479
+ return p(this.getAttribute("close-on-esc"), !0);
463
480
  }
464
481
  set closeOnEsc(t) {
465
482
  this.setAttribute("close-on-esc", String(t));
466
483
  }
467
484
  get lockWhileLoading() {
468
- return g(this.getAttribute("lock-while-loading"), !0);
485
+ return p(this.getAttribute("lock-while-loading"), !0);
469
486
  }
470
487
  set lockWhileLoading(t) {
471
488
  this.setAttribute("lock-while-loading", String(t));
@@ -574,7 +591,7 @@ const l = class l extends z {
574
591
  }), this.dispatchEvent(new CustomEvent("hide", { bubbles: !0, composed: !0 })), this._terminalEmitted = !0, this._closeMeta = null;
575
592
  }
576
593
  const i = this._lastFocused;
577
- this._lastFocused = null, i && this._canRestoreFocus(i) && (this._restoreFocusFrame && p(this._restoreFocusFrame), this._restoreFocusFrame = C(() => {
594
+ this._lastFocused = null, i && this._canRestoreFocus(i) && (this._restoreFocusFrame && g(this._restoreFocusFrame), this._restoreFocusFrame = S(() => {
578
595
  this._restoreFocusFrame = 0;
579
596
  try {
580
597
  this._canRestoreFocus(i) && i.focus();
@@ -608,14 +625,14 @@ const l = class l extends z {
608
625
  }
609
626
  _canRestoreFocus(t) {
610
627
  if (!t || !t.isConnected || t.disabled || t.getAttribute("aria-hidden") === "true") return !1;
611
- if (!S()) return !0;
628
+ if (!C()) return !0;
612
629
  const i = window.getComputedStyle(t);
613
630
  return i.display !== "none" && i.visibility !== "hidden";
614
631
  }
615
632
  _collectFocusable(t) {
616
- return Array.from(t.querySelectorAll(P)).filter((i) => {
633
+ return Array.from(t.querySelectorAll(K)).filter((i) => {
617
634
  if (i.disabled || i.getAttribute("aria-hidden") === "true") return !1;
618
- const s = S() ? window.getComputedStyle(i) : null;
635
+ const s = C() ? window.getComputedStyle(i) : null;
619
636
  return !(s && (s.display === "none" || s.visibility === "hidden"));
620
637
  });
621
638
  }
@@ -649,7 +666,23 @@ const l = class l extends z {
649
666
  }
650
667
  _syncOpenUi() {
651
668
  const t = this.root.querySelector(".overlay"), i = this._queryPanel(), e = this.open;
652
- !t || !i || (t.hidden = !e, t.setAttribute("data-open", String(e)), t.setAttribute("aria-hidden", e ? "false" : "true"), i.setAttribute("aria-hidden", e ? "false" : "true"));
669
+ if (!(!t || !i)) {
670
+ if (t.setAttribute("aria-hidden", e ? "false" : "true"), i.setAttribute("aria-hidden", e ? "false" : "true"), t.setAttribute("data-open", String(e)), e) {
671
+ this._finishClose?.(), this._finishClose = null, t.hidden = !1, t.setAttribute("data-state", "open"), this._presented || t.removeAttribute("data-instant"), this._presented = !0, this.hasAttribute("headless") || P(t, { resetBox: !1 });
672
+ return;
673
+ }
674
+ if (this._presented && !t.hidden) {
675
+ this._presented = !1, t.removeAttribute("data-instant"), this._finishClose = W(t, () => {
676
+ this._finishClose = null, t.hidden = !0;
677
+ try {
678
+ t.matches(":popover-open") && t.hidePopover();
679
+ } catch {
680
+ }
681
+ });
682
+ return;
683
+ }
684
+ this._finishClose || (this._presented = !1, t.setAttribute("data-state", "closed"), t.hidden = !0);
685
+ }
653
686
  }
654
687
  _syncRuntimeControllers() {
655
688
  if (this._destroyRuntimeControllers(), !this.open || !this._isTopMost()) return;
@@ -763,17 +796,17 @@ const l = class l extends z {
763
796
  }
764
797
  }
765
798
  render() {
766
- const t = this._config.title ?? this.getAttribute("title") ?? "", i = this._config.description ?? this.getAttribute("description") ?? "", e = this._config.submitText ?? this.getAttribute("submit-text") ?? "Submit", s = this._config.cancelText ?? this.getAttribute("cancel-text") ?? "Cancel", o = this._config.loadingText ?? this.getAttribute("loading-text") ?? "Working...", r = t.trim(), h = i.trim(), c = !!this.querySelector('[slot="title"]'), d = !!this.querySelector('[slot="description"]'), f = !!(r || c), m = !!(h || d), E = !!this.querySelector('[slot="content"]'), L = !!this.querySelector('[slot="footer"]'), O = this._config.showCancel ?? !0, $ = this._config.showClose ?? this.dismissible, v = this._runtimeError || this._config.errorMessage || this.getAttribute("error-message") || "", b = this.state === "loading", x = `ui-dialog-title-${this._uid}`, A = `ui-dialog-description-${this._uid}`, k = `ui-dialog-error-${this._uid}`, D = this.getAttribute("aria-label") || "", q = this.getAttribute("aria-labelledby") || "", w = this.getAttribute("aria-describedby") || "", _ = q || (f ? x : ""), F = D || (_ ? "" : "Dialog"), u = [];
767
- w ? u.push(w) : (m && u.push(A), v && u.push(k));
768
- const T = f || m ? `
799
+ const t = this._config.title ?? this.getAttribute("title") ?? "", i = this._config.description ?? this.getAttribute("description") ?? "", e = this._config.submitText ?? this.getAttribute("submit-text") ?? "Submit", s = this._config.cancelText ?? this.getAttribute("cancel-text") ?? "Cancel", o = this._config.loadingText ?? this.getAttribute("loading-text") ?? "Working...", r = t.trim(), h = i.trim(), c = !!this.querySelector('[slot="title"]'), d = !!this.querySelector('[slot="description"]'), f = !!(r || c), m = !!(h || d), E = !!this.querySelector('[slot="content"]'), L = !!this.querySelector('[slot="footer"]'), O = this._config.showCancel ?? !0, $ = this._config.showClose ?? this.dismissible, v = this._runtimeError || this._config.errorMessage || this.getAttribute("error-message") || "", b = this.state === "loading", x = `ui-dialog-title-${this._uid}`, k = `ui-dialog-description-${this._uid}`, A = `ui-dialog-error-${this._uid}`, T = this.getAttribute("aria-label") || "", D = this.getAttribute("aria-labelledby") || "", w = this.getAttribute("aria-describedby") || "", _ = D || (f ? x : ""), F = T || (_ ? "" : "Dialog"), u = [];
800
+ w ? u.push(w) : (m && u.push(k), v && u.push(A));
801
+ const q = f || m ? `
769
802
  <header class="header" part="header">
770
803
  ${f ? `<h2 id="${x}" class="title" part="title"><slot name="title">${a(r)}</slot></h2>` : ""}
771
- ${m ? `<p id="${A}" class="description" part="description"><slot name="description">${a(h)}</slot></p>` : ""}
804
+ ${m ? `<p id="${k}" class="description" part="description"><slot name="description">${a(h)}</slot></p>` : ""}
772
805
  </header>
773
806
  ` : "";
774
807
  this._destroyRuntimeControllers(), this.setContent(`
775
- ${this.hasAttribute("headless") ? "" : `<style>${W}</style>`}
776
- <div class="overlay" part="overlay" data-open="${String(this.open)}" ${this.open ? "" : "hidden"} aria-hidden="${this.open ? "false" : "true"}">
808
+ ${this.hasAttribute("headless") ? "" : `<style>${H}</style>`}
809
+ <div class="overlay" part="overlay" data-open="${String(this.open)}" data-state="${this.open ? "open" : "closed"}" ${this.open ? "data-instant" : "hidden"} aria-hidden="${this.open ? "false" : "true"}">
777
810
  <section
778
811
  class="panel"
779
812
  part="panel"
@@ -791,12 +824,12 @@ const l = class l extends z {
791
824
  <path d="M12.5 3.5L3.5 12.5"></path>
792
825
  </svg>
793
826
  </button>` : ""}
794
- ${T}
827
+ ${q}
795
828
  <div class="body" part="body">
796
829
  ${E ? '<slot name="content"></slot>' : "<slot></slot>"}
797
830
  </div>
798
831
 
799
- <div class="error" id="${k}" part="error" aria-live="polite" data-empty="${String(!v)}">${a(v)}</div>
832
+ <div class="error" id="${A}" part="error" aria-live="polite" data-empty="${String(!v)}">${a(v)}</div>
800
833
 
801
834
  <footer class="footer" part="footer">
802
835
  ${b ? `<span class="loading" part="loading"><span class="spinner" aria-hidden="true"></span><span>${a(o)}</span></span>` : '<span aria-hidden="true"></span>'}
package/dist/dock.cjs.js CHANGED
@@ -1,44 +1,30 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const T=require("./ElementBase-DxbvhLJs.js"),F=1.92,C=148,R=1,D=20,k=.18,_="12px",x="12px 14px",v="56px",O=56,z={xs:{gap:"8px",padding:"8px 10px",itemSize:40,iconSize:18,itemRadius:14},sm:{gap:"10px",padding:"10px 12px",itemSize:48,iconSize:20,itemRadius:16},md:{gap:_,padding:x,itemSize:56,iconSize:24,itemRadius:18},lg:{gap:"14px",padding:"14px 16px",itemSize:64,iconSize:28,itemRadius:20},xl:{gap:"18px",padding:"16px 20px",itemSize:74,iconSize:32,itemRadius:24}},P={calm:{response:.11,damping:.82,spread:.62,lift:.82},smooth:{response:.16,damping:.78,spread:.82,lift:1},snappy:{response:.22,damping:.74,spread:.92,lift:1.06},bouncy:{response:.24,damping:.66,spread:1,lift:1.12}},E=new Set(["gap","padding","radius","item-size","variant","tone","size","elevation"]),N=new Set(["orientation","magnification","distance","idle-scale","lift","smoothing","animation","gap","padding","item-size"]),I=new Set(["label-mode","label-placement"]),V=new Set(["none","sm","md","lg","full"]),q=`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const T=require("./ElementBase-DxbvhLJs.js"),F=1.92,C=148,R=1,D=20,x=.18,_="12px",k="12px 14px",v="56px",O=56,z={xs:{gap:"8px",padding:"8px 10px",itemSize:40,iconSize:18,itemRadius:14},sm:{gap:"10px",padding:"10px 12px",itemSize:48,iconSize:20,itemRadius:16},md:{gap:_,padding:k,itemSize:56,iconSize:24,itemRadius:18},lg:{gap:"14px",padding:"14px 16px",itemSize:64,iconSize:28,itemRadius:20},xl:{gap:"18px",padding:"16px 20px",itemSize:74,iconSize:32,itemRadius:24}},P={calm:{response:.11,damping:.82,spread:.62,lift:.82},smooth:{response:.16,damping:.78,spread:.82,lift:1},snappy:{response:.22,damping:.74,spread:.92,lift:1.06},bouncy:{response:.24,damping:.66,spread:1,lift:1.12}},E=new Set(["gap","padding","radius","item-size","variant","tone","size","elevation"]),N=new Set(["orientation","magnification","distance","idle-scale","lift","smoothing","animation","gap","padding","item-size"]),I=new Set(["label-mode","label-placement"]),V=new Set(["none","sm","md","lg","full"]),q=`
2
2
  :host {
3
3
  --ui-dock-gap: ${_};
4
- --ui-dock-padding: ${x};
5
- --ui-dock-radius: 24px;
4
+ --ui-dock-padding: ${k};
5
+ --ui-dock-radius: var(--ui-control-radius-4, calc(var(--ui-radius, 6px) + 6px));
6
6
  --ui-dock-item-size: ${v};
7
7
  --ui-dock-icon-size: 24px;
8
- --ui-dock-item-radius: 18px;
8
+ --ui-dock-item-radius: calc(var(--ui-radius, 6px) + 2px);
9
9
  --ui-dock-accent: var(--ui-color-primary, var(--ui-primary, #2563eb));
10
- --ui-dock-bg:
11
- linear-gradient(
12
- 180deg,
13
- color-mix(in srgb, var(--color-panel-solid, var(--ui-color-surface, #ffffff)) 90%, #ffffff 10%),
14
- color-mix(in srgb, var(--color-panel-solid, var(--ui-color-surface, #ffffff)) 96%, transparent)
15
- );
10
+ --ui-dock-bg: var(--color-panel-solid, var(--ui-color-surface, #ffffff));
16
11
  --ui-dock-color: var(--ui-color-text, var(--ui-text, #0f172a));
17
- --ui-dock-border-color: color-mix(in srgb, #ffffff 24%, var(--ui-color-border, rgba(15, 23, 42, 0.16)));
12
+ --ui-dock-border-color: var(--ui-color-line-subtle, color-mix(in srgb, var(--ui-color-border, #cbd5e1) 76%, transparent));
18
13
  --ui-dock-border: 1px solid var(--ui-dock-border-color);
19
- --ui-dock-shadow:
20
- 0 1px 3px rgba(15, 23, 42, 0.08),
21
- 0 24px 44px rgba(15, 23, 42, 0.14);
14
+ --ui-dock-shadow: var(--shadow-3, none);
22
15
  --ui-dock-backdrop: blur(16px) saturate(1.08);
23
- --ui-dock-item-bg:
24
- linear-gradient(
25
- 180deg,
26
- color-mix(in srgb, #ffffff 86%, transparent),
27
- color-mix(in srgb, var(--ui-dock-accent) 10%, rgba(255, 255, 255, 0.72))
28
- );
29
- --ui-dock-item-border: color-mix(in srgb, var(--ui-dock-accent) 16%, rgba(255, 255, 255, 0.72));
30
- --ui-dock-item-shadow:
31
- 0 1px 2px rgba(15, 23, 42, 0.08),
32
- 0 10px 18px rgba(15, 23, 42, 0.12);
33
- --ui-dock-item-backdrop: blur(10px) saturate(1.02);
16
+ --ui-dock-item-bg: transparent;
17
+ --ui-dock-item-border: transparent;
18
+ --ui-dock-item-shadow: none;
19
+ --ui-dock-item-backdrop: none;
34
20
  --ui-dock-label-bg: rgba(15, 23, 42, 0.92);
35
21
  --ui-dock-label-color: #f8fafc;
36
22
  --ui-dock-label-border: rgba(255, 255, 255, 0.14);
37
- --ui-dock-label-shadow: 0 14px 28px rgba(2, 6, 23, 0.28);
23
+ --ui-dock-label-shadow: var(--shadow-3, 0 8px 16px rgba(2, 6, 23, 0.2));
38
24
  --ui-dock-label-padding: 6px 10px;
39
25
  --ui-dock-label-font-size: 12px;
40
26
  --ui-dock-label-font-weight: 600;
41
- --ui-dock-label-radius: 999px;
27
+ --ui-dock-label-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
42
28
  --ui-dock-label-offset: 12px;
43
29
  --ui-dock-label-backdrop: blur(10px) saturate(1.04);
44
30
  --ui-dock-focus-ring: var(--ui-color-focus-ring, var(--ui-focus-ring, #2563eb));
@@ -65,7 +51,7 @@
65
51
  :host([size="md"]),
66
52
  :host([size="2"]) {
67
53
  --ui-dock-gap: ${_};
68
- --ui-dock-padding: ${x};
54
+ --ui-dock-padding: ${k};
69
55
  --ui-dock-item-size: ${v};
70
56
  --ui-dock-icon-size: 24px;
71
57
  --ui-dock-item-radius: 18px;
@@ -335,7 +321,7 @@
335
321
  scroll-behavior: auto;
336
322
  }
337
323
  }
338
- `;function g(s,e,t){return Math.min(t,Math.max(e,s))}function w(s,e){if(s==null||s.trim()==="")return e;const t=Number(s);return Number.isFinite(t)?t:e}function y(s,e){return Math.max(0,w(s,e))}function U(s,e){return g(w(s,e),.01,1)}function b(s){if(s==null||s.trim()==="")return null;const e=s.trim().split(/\s+/).filter(Boolean);return e.length?e.map(t=>/^-?\d+(\.\d+)?$/.test(t)?`${t}px`:t).join(" "):null}function $(s){return typeof requestAnimationFrame=="function"?requestAnimationFrame(s):window.setTimeout(()=>s(Date.now()),16)}function A(s){if(s!=null){if(typeof cancelAnimationFrame=="function"){cancelAnimationFrame(s);return}window.clearTimeout(s)}}function B(s){return s instanceof HTMLElement}function H(s){return s.hasAttribute("disabled")||s.getAttribute("aria-disabled")==="true"}function j(s){return s.hasAttribute("data-active")||s.getAttribute("aria-current")==="page"||s.getAttribute("aria-current")==="true"}function S(s,e){return s==="top"||s==="bottom"||s==="start"||s==="end"?s:e==="horizontal"?"top":"end"}function L(s,e,t){if(!s.length)return-1;let a=e;for(let n=0;n<s.length;n+=1)if(a=(a+t+s.length)%s.length,!s[a]?.disabled)return a;return-1}class M extends T.ElementBase{constructor(){super(),this._frameEl=null,this._slotEl=null,this._items=[],this._itemNames=new WeakMap,this._resizeObserver=null,this._mutationObserver=null,this._mediaQuery=null,this._raf=null,this._pointerActive=!1,this._pointerCoord=Number.NaN,this._focusedIndex=-1,this._rovingIndex=0,this._reducedMotion=!1,this._handleSlotChange=this._handleSlotChange.bind(this),this._handlePointerMove=this._handlePointerMove.bind(this),this._handlePointerLeave=this._handlePointerLeave.bind(this),this._handleFocusIn=this._handleFocusIn.bind(this),this._handleFocusOut=this._handleFocusOut.bind(this),this._handleKeyDown=this._handleKeyDown.bind(this),this._handleResize=this._handleResize.bind(this),this._handleLightDomMutation=this._handleLightDomMutation.bind(this),this._handleReducedMotionChange=this._handleReducedMotionChange.bind(this)}static get observedAttributes(){return["orientation","magnification","distance","idle-scale","lift","smoothing","animation","gap","padding","item-size","label-mode","label-placement","variant","tone","size","radius","elevation"]}connectedCallback(){super.connectedCallback(),this.hasAttribute("role")||this.setAttribute("role","toolbar"),this._observeLightDom(),this._bindReducedMotion(),this._syncHostStyles(),queueMicrotask(()=>this.refresh())}disconnectedCallback(){if(this._slotEl&&(this._slotEl.removeEventListener("slotchange",this._handleSlotChange),this._slotEl=null),this._frameEl&&(this._frameEl.removeEventListener("pointermove",this._handlePointerMove),this._frameEl.removeEventListener("pointerleave",this._handlePointerLeave),this._frameEl=null),this.removeEventListener("focusin",this._handleFocusIn),this.removeEventListener("focusout",this._handleFocusOut),this.removeEventListener("keydown",this._handleKeyDown),this._resizeObserver?.disconnect(),this._resizeObserver=null,this._mutationObserver?.disconnect(),this._mutationObserver=null,this._mediaQuery){try{this._mediaQuery.removeEventListener("change",this._handleReducedMotionChange)}catch{this._mediaQuery.removeListener(this._handleReducedMotionChange)}this._mediaQuery=null}A(this._raf),this._raf=null,super.disconnectedCallback()}refresh(){this._collectItems(),this._syncHostStyles(),this._measureItems(),this._syncTabIndices(),this._updateTargets(),this._queueAnimation()}focusItem(e){const t=typeof e=="number"?e:this._items.findIndex(a=>a.el.getAttribute("data-value")===String(e));t<0||t>=this._items.length||this._items[t]?.disabled||(this._focusedIndex=t,this._rovingIndex=t,this._syncTabIndices(),this._items[t]?.el.focus(),this._pointerActive=!1,this._pointerCoord=Number.NaN,this._updateTargets(),this._queueAnimation())}clearActive(){this._pointerActive=!1,this._pointerCoord=Number.NaN,this._focusedIndex=-1,this._updateTargets(),this._queueAnimation()}attributeChangedCallback(e,t,a){!e||t===a||!this.isConnected||(E.has(e)&&this._syncHostStyles(),I.has(e)&&this._syncItemChrome(),(N.has(e)||I.has(e)||E.has(e))&&this.refresh())}shouldRenderOnAttributeChange(){return!1}render(){this.setContent(`
324
+ `;function g(s,e,t){return Math.min(t,Math.max(e,s))}function L(s,e){if(s==null||s.trim()==="")return e;const t=Number(s);return Number.isFinite(t)?t:e}function y(s,e){return Math.max(0,L(s,e))}function U(s,e){return g(L(s,e),.01,1)}function b(s){if(s==null||s.trim()==="")return null;const e=s.trim().split(/\s+/).filter(Boolean);return e.length?e.map(t=>/^-?\d+(\.\d+)?$/.test(t)?`${t}px`:t).join(" "):null}function $(s){return typeof requestAnimationFrame=="function"?requestAnimationFrame(s):window.setTimeout(()=>s(Date.now()),16)}function A(s){if(s!=null){if(typeof cancelAnimationFrame=="function"){cancelAnimationFrame(s);return}window.clearTimeout(s)}}function B(s){return s instanceof HTMLElement}function H(s){return s.hasAttribute("disabled")||s.getAttribute("aria-disabled")==="true"}function j(s){return s.hasAttribute("data-active")||s.getAttribute("aria-current")==="page"||s.getAttribute("aria-current")==="true"}function S(s,e){return s==="top"||s==="bottom"||s==="start"||s==="end"?s:e==="horizontal"?"top":"end"}function w(s,e,t){if(!s.length)return-1;let a=e;for(let n=0;n<s.length;n+=1)if(a=(a+t+s.length)%s.length,!s[a]?.disabled)return a;return-1}class M extends T.ElementBase{constructor(){super(),this._frameEl=null,this._slotEl=null,this._items=[],this._itemNames=new WeakMap,this._resizeObserver=null,this._mutationObserver=null,this._mediaQuery=null,this._raf=null,this._pointerActive=!1,this._pointerCoord=Number.NaN,this._focusedIndex=-1,this._rovingIndex=0,this._reducedMotion=!1,this._handleSlotChange=this._handleSlotChange.bind(this),this._handlePointerMove=this._handlePointerMove.bind(this),this._handlePointerLeave=this._handlePointerLeave.bind(this),this._handleFocusIn=this._handleFocusIn.bind(this),this._handleFocusOut=this._handleFocusOut.bind(this),this._handleKeyDown=this._handleKeyDown.bind(this),this._handleResize=this._handleResize.bind(this),this._handleLightDomMutation=this._handleLightDomMutation.bind(this),this._handleReducedMotionChange=this._handleReducedMotionChange.bind(this)}static get observedAttributes(){return["orientation","magnification","distance","idle-scale","lift","smoothing","animation","gap","padding","item-size","label-mode","label-placement","variant","tone","size","radius","elevation"]}connectedCallback(){super.connectedCallback(),this.hasAttribute("role")||this.setAttribute("role","toolbar"),this._observeLightDom(),this._bindReducedMotion(),this._syncHostStyles(),queueMicrotask(()=>this.refresh())}disconnectedCallback(){if(this._slotEl&&(this._slotEl.removeEventListener("slotchange",this._handleSlotChange),this._slotEl=null),this._frameEl&&(this._frameEl.removeEventListener("pointermove",this._handlePointerMove),this._frameEl.removeEventListener("pointerleave",this._handlePointerLeave),this._frameEl=null),this.removeEventListener("focusin",this._handleFocusIn),this.removeEventListener("focusout",this._handleFocusOut),this.removeEventListener("keydown",this._handleKeyDown),this._resizeObserver?.disconnect(),this._resizeObserver=null,this._mutationObserver?.disconnect(),this._mutationObserver=null,this._mediaQuery){try{this._mediaQuery.removeEventListener("change",this._handleReducedMotionChange)}catch{this._mediaQuery.removeListener(this._handleReducedMotionChange)}this._mediaQuery=null}A(this._raf),this._raf=null,super.disconnectedCallback()}refresh(){this._collectItems(),this._syncHostStyles(),this._measureItems(),this._syncTabIndices(),this._updateTargets(),this._queueAnimation()}focusItem(e){const t=typeof e=="number"?e:this._items.findIndex(a=>a.el.getAttribute("data-value")===String(e));t<0||t>=this._items.length||this._items[t]?.disabled||(this._focusedIndex=t,this._rovingIndex=t,this._syncTabIndices(),this._items[t]?.el.focus(),this._pointerActive=!1,this._pointerCoord=Number.NaN,this._updateTargets(),this._queueAnimation())}clearActive(){this._pointerActive=!1,this._pointerCoord=Number.NaN,this._focusedIndex=-1,this._updateTargets(),this._queueAnimation()}attributeChangedCallback(e,t,a){!e||t===a||!this.isConnected||(E.has(e)&&this._syncHostStyles(),I.has(e)&&this._syncItemChrome(),(N.has(e)||I.has(e)||E.has(e))&&this.refresh())}shouldRenderOnAttributeChange(){return!1}render(){this.setContent(`
339
325
  <style>${q}</style>
340
326
  <div class="root" part="root">
341
327
  <div class="frame" part="frame">
@@ -344,4 +330,4 @@
344
330
  </div>
345
331
  </div>
346
332
  </div>
347
- `),this._bindElements(),this._syncHostStyles(),this.refresh()}_bindElements(){const e=this.root.querySelector(".frame");e&&e!==this._frameEl&&(this._frameEl&&(this._frameEl.removeEventListener("pointermove",this._handlePointerMove),this._frameEl.removeEventListener("pointerleave",this._handlePointerLeave)),e.addEventListener("pointermove",this._handlePointerMove),e.addEventListener("pointerleave",this._handlePointerLeave),this._frameEl=e);const t=this.root.querySelector("slot");t&&t!==this._slotEl&&(this._slotEl&&this._slotEl.removeEventListener("slotchange",this._handleSlotChange),t.addEventListener("slotchange",this._handleSlotChange),this._slotEl=t),this.removeEventListener("focusin",this._handleFocusIn),this.removeEventListener("focusout",this._handleFocusOut),this.removeEventListener("keydown",this._handleKeyDown),this.addEventListener("focusin",this._handleFocusIn),this.addEventListener("focusout",this._handleFocusOut),this.addEventListener("keydown",this._handleKeyDown),this._ensureResizeObserver()}_observeLightDom(){this._mutationObserver||typeof MutationObserver>"u"||(this._mutationObserver=new MutationObserver(this._handleLightDomMutation),this._mutationObserver.observe(this,{childList:!0,subtree:!0,characterData:!0}))}_ensureResizeObserver(){this._resizeObserver||typeof ResizeObserver>"u"||(this._resizeObserver=new ResizeObserver(this._handleResize),this._resizeObserver.observe(this))}_bindReducedMotion(){if(typeof window>"u"||typeof window.matchMedia!="function")return;const e=window.matchMedia("(prefers-reduced-motion: reduce)");this._reducedMotion=e.matches,this._mediaQuery=e;try{e.addEventListener("change",this._handleReducedMotionChange)}catch{e.addListener(this._handleReducedMotionChange)}}_handleReducedMotionChange(e){this._reducedMotion=e.matches,this.refresh()}_handleSlotChange(){this.refresh()}_handleLightDomMutation(){this.refresh()}_handleResize(){this._measureItems(),this._updateTargets(),this._queueAnimation()}_handlePointerMove(e){if("pointerType"in e&&e.pointerType==="touch"||!this._frameEl)return;const t=this._frameEl.getBoundingClientRect(),n=this._orientation()==="horizontal"?e.clientX-t.left:e.clientY-t.top;this._pointerActive=!0,this._pointerCoord=n,this._measureItems(),this._updateTargets(),this._queueAnimation()}_handlePointerLeave(){this._pointerActive=!1,this._pointerCoord=Number.NaN,this._updateTargets(),this._queueAnimation()}_handleFocusIn(e){const t=e.target?.closest?.("[data-ui-dock-item]");if(!t)return;const a=this._items.findIndex(n=>n.el===t);a<0||(this._focusedIndex=a,this._rovingIndex=a,this._syncTabIndices(),this._pointerActive=!1,this._pointerCoord=Number.NaN,this._updateTargets(),this._queueAnimation())}_handleFocusOut(e){const t=e.relatedTarget;t&&this.contains(t)||(this._focusedIndex=-1,this._pointerActive||(this._updateTargets(),this._queueAnimation()))}_handleKeyDown(e){if(e.defaultPrevented||!this._items.length)return;const t=this._orientation(),a=t==="horizontal"?["ArrowLeft"]:["ArrowUp"],n=t==="horizontal"?["ArrowRight"]:["ArrowDown"];if(a.includes(e.key)){e.preventDefault();const i=L(this._items,this._rovingIndex,-1);i>=0&&this.focusItem(i);return}if(n.includes(e.key)){e.preventDefault();const i=L(this._items,this._rovingIndex,1);i>=0&&this.focusItem(i);return}if(e.key==="Home"){e.preventDefault();const i=this._items.findIndex(c=>!c.disabled);i>=0&&this.focusItem(i);return}if(e.key==="End"){e.preventDefault();for(let i=this._items.length-1;i>=0;i-=1)if(!this._items[i]?.disabled){this.focusItem(i);break}return}e.key==="Escape"&&this.clearActive()}_collectItems(){const e=new Map(this._items.map(n=>[n.el,n])),t=Array.from(this.children).filter(B).map(n=>{const i=e.get(n),c=n.querySelector("[data-ui-dock-icon]"),o=n.querySelector("[data-ui-dock-label]"),l=n.querySelector("[data-ui-dock-badge]");return{el:n,iconEl:c,labelEl:o,badgeEl:l,center:i?.center??0,currentScale:i?.currentScale??this._idleScale(),targetScale:i?.targetScale??this._idleScale(),currentLift:i?.currentLift??0,targetLift:i?.targetLift??0,labelVisible:i?.labelVisible??!1,disabled:H(n),sticky:j(n),scaleVelocity:i?.scaleVelocity??0,liftVelocity:i?.liftVelocity??0}});this._items=t;const a=this._items.findIndex(n=>n.sticky&&!n.disabled);a>=0?this._rovingIndex=a:(!this._items[this._rovingIndex]||this._items[this._rovingIndex]?.disabled)&&(this._rovingIndex=this._items.findIndex(n=>!n.disabled)),this._rovingIndex<0&&(this._rovingIndex=0),(this._focusedIndex>=this._items.length||this._items[this._focusedIndex]?.disabled)&&(this._focusedIndex=-1),this._syncItemChrome()}_syncItemChrome(){const e=S(this.getAttribute("label-placement"),this._orientation()),t=this._labelMode(),a=this._orientation();this._items.forEach(n=>{const{el:i,iconEl:c,labelEl:o,badgeEl:l,sticky:h}=n;i.setAttribute("data-ui-dock-item",""),i.style.setProperty("position","relative"),i.style.setProperty("display","inline-flex"),i.style.setProperty("align-items","center"),i.style.setProperty("justify-content","center"),i.style.setProperty("inline-size","var(--ui-dock-item-size)"),i.style.setProperty("block-size","var(--ui-dock-item-size)"),i.style.setProperty("min-inline-size","var(--ui-dock-item-size)"),i.style.setProperty("min-block-size","var(--ui-dock-item-size)"),i.style.setProperty("flex","0 0 var(--ui-dock-item-size)"),i.style.setProperty("box-sizing","border-box"),i.style.setProperty("background","transparent"),i.style.setProperty("border","none"),i.style.setProperty("padding","0"),i.style.setProperty("margin","0"),i.style.setProperty("color","inherit"),i.style.setProperty("text-decoration","none"),i.style.setProperty("outline","none"),i.style.setProperty("cursor",n.disabled?"not-allowed":"pointer"),i.style.setProperty("transform-origin",a==="horizontal"?"center bottom":"center center"),i.style.setProperty("touch-action","manipulation"),i.hasAttribute("tabindex")||(i.tabIndex=-1);const r=i.getAttribute("aria-label"),d=this._itemNames.get(i),u=d&&d.composed===r?d.base:r||o?.textContent?.trim()||i.getAttribute("data-label")||i.getAttribute("title")||"",m=l?.textContent?.trim()??"",f=u&&m&&!u.includes(m)?`${u}, ${m}`:u;f&&(f!==r&&i.setAttribute("aria-label",f),this._itemNames.set(i,{base:u,composed:f})),h?i.setAttribute("data-dock-current","true"):i.removeAttribute("data-dock-current"),c&&(c.style.setProperty("display","inline-flex"),c.style.setProperty("align-items","center"),c.style.setProperty("justify-content","center"),c.style.setProperty("inline-size","100%"),c.style.setProperty("block-size","100%"),c.style.setProperty("border-radius","var(--ui-dock-item-radius)"),c.style.setProperty("background","var(--ui-dock-item-bg)"),c.style.setProperty("border","1px solid var(--ui-dock-item-border)"),c.style.setProperty("box-shadow","var(--ui-dock-item-shadow)"),c.style.setProperty("backdrop-filter","var(--ui-dock-item-backdrop)"),c.style.setProperty("font-size","var(--ui-dock-icon-size)"),c.style.setProperty("color","inherit"),c.style.setProperty("overflow","hidden"),c.style.setProperty("box-sizing","border-box")),o&&(o.setAttribute("aria-hidden","true"),o.style.setProperty("position","absolute"),o.style.setProperty("pointer-events","none"),o.style.setProperty("white-space","nowrap"),o.style.setProperty("padding","var(--ui-dock-label-padding)"),o.style.setProperty("border-radius","var(--ui-dock-label-radius)"),o.style.setProperty("background","var(--ui-dock-label-bg)"),o.style.setProperty("color","var(--ui-dock-label-color)"),o.style.setProperty("border","1px solid var(--ui-dock-label-border)"),o.style.setProperty("box-shadow","var(--ui-dock-label-shadow)"),o.style.setProperty("backdrop-filter","var(--ui-dock-label-backdrop)"),o.style.setProperty("font-size","var(--ui-dock-label-font-size)"),o.style.setProperty("font-weight","var(--ui-dock-label-font-weight)"),o.style.setProperty("line-height","1.2"),o.style.setProperty("letter-spacing","0.01em"),o.style.setProperty("min-inline-size","max-content"),o.style.setProperty("z-index","3"),o.style.setProperty("display",t==="none"?"none":"inline-flex"),o.style.removeProperty("top"),o.style.removeProperty("bottom"),o.style.removeProperty("left"),o.style.removeProperty("right"),e==="top"?(o.style.setProperty("left","50%"),o.style.setProperty("bottom","calc(100% + var(--ui-dock-label-offset))")):e==="bottom"?(o.style.setProperty("left","50%"),o.style.setProperty("top","calc(100% + var(--ui-dock-label-offset))")):e==="start"?(o.style.setProperty("right","calc(100% + var(--ui-dock-label-offset))"),o.style.setProperty("top","50%")):(o.style.setProperty("left","calc(100% + var(--ui-dock-label-offset))"),o.style.setProperty("top","50%"))),l&&(l.setAttribute("aria-hidden","true"),l.style.setProperty("position","absolute"),l.style.setProperty("inset-inline-end","-2px"),l.style.setProperty("inset-block-start","-2px"),l.style.setProperty("display","inline-flex"),l.style.setProperty("align-items","center"),l.style.setProperty("justify-content","center"),l.style.setProperty("min-inline-size","18px"),l.style.setProperty("min-block-size","18px"),l.style.setProperty("padding","0 6px"),l.style.setProperty("border-radius","999px"),l.style.setProperty("background","var(--ui-dock-accent)"),l.style.setProperty("color","#ffffff"),l.style.setProperty("font-size","11px"),l.style.setProperty("font-weight","700"),l.style.setProperty("box-shadow","0 8px 18px color-mix(in srgb, var(--ui-dock-accent) 32%, rgba(15, 23, 42, 0.18))"),l.style.setProperty("z-index","4"))})}_syncTabIndices(){const e=this._items.findIndex(t=>!t.disabled);e>=0&&(this._rovingIndex<0||this._items[this._rovingIndex]?.disabled)&&(this._rovingIndex=e),this._items.forEach((t,a)=>{if(t.disabled){t.el.tabIndex=-1;return}t.el.tabIndex=a===this._rovingIndex?0:-1})}_measureItems(){if(!this._frameEl)return;const e=this._frameEl.getBoundingClientRect(),t=this._orientation(),a=t==="horizontal"?e.left:e.top;this._items.forEach(n=>{const i=n.el.getBoundingClientRect();n.center=(t==="horizontal"?i.left+i.width/2:i.top+i.height/2)-a})}_updateTargets(){const e=this._idleScale(),t=Math.max(e,this._magnification()),a=Math.max(1,this._distance()),n=this._lift()*this._motion().lift,i=this._labelMode();this._items.forEach((c,o)=>{let l=e;if(c.sticky&&(l=Math.max(l,e+(t-e)*.08)),this._pointerActive&&Number.isFinite(this._pointerCoord)){const r=Math.abs(this._pointerCoord-c.center),d=g(1-r/a,0,1);l=Math.max(l,e+(t-e)*d*d)}o===this._focusedIndex&&(l=Math.max(l,t)),c.disabled&&(l=e);const h=t===e?0:(l-e)/(t-e);c.targetScale=g(l,e,t),c.targetLift=h*n,c.labelVisible=i==="always"||i!=="none"&&(o===this._focusedIndex||h>.18)}),this._updateRuntimeState()}_applyFrame(e=!1){const t=this._smoothing(),a=this._motion(),n=g(a.response+t*.12,.05,.42),i=g(a.damping+(t-k)*.14,.52,.9),c=this._orientation(),o=S(this.getAttribute("label-placement"),c),l=this._mainAxisOffsets(a.spread);let h=!1;this._items.forEach((r,d)=>{e?(r.currentScale=r.targetScale,r.currentLift=r.targetLift,r.scaleVelocity=0,r.liftVelocity=0):(r.scaleVelocity=r.scaleVelocity*i+(r.targetScale-r.currentScale)*n,r.liftVelocity=r.liftVelocity*i+(r.targetLift-r.currentLift)*n,r.currentScale+=r.scaleVelocity,r.currentLift+=r.liftVelocity,Math.abs(r.targetScale-r.currentScale)<.002&&Math.abs(r.scaleVelocity)<.002&&(r.currentScale=r.targetScale,r.scaleVelocity=0),Math.abs(r.targetLift-r.currentLift)<.002&&Math.abs(r.liftVelocity)<.002&&(r.currentLift=r.targetLift,r.liftVelocity=0)),(Math.abs(r.targetScale-r.currentScale)>=.002||Math.abs(r.targetLift-r.currentLift)>=.002||Math.abs(r.scaleVelocity)>=.002||Math.abs(r.liftVelocity)>=.002)&&(h=!0);const u=l[d]??0,m=c==="horizontal"?u:o==="start"?-r.currentLift*.28:r.currentLift*.28,f=c==="horizontal"?-r.currentLift:u;if(r.el.style.setProperty("transform",`translate3d(${m}px, ${f}px, 0) scale(${r.currentScale})`),r.el.style.setProperty("z-index",String(100+Math.round(r.currentScale*100)+d)),r.iconEl){const p=d===this._focusedIndex?"0 0 0 3px color-mix(in srgb, var(--ui-dock-focus-ring) 26%, transparent), ":r.sticky?"0 0 0 2px color-mix(in srgb, var(--ui-dock-accent) 22%, transparent), ":"";r.iconEl.style.setProperty("box-shadow",`${p}var(--ui-dock-item-shadow)`),r.iconEl.style.setProperty("border-color",r.sticky||d===this._focusedIndex?"color-mix(in srgb, var(--ui-dock-accent) 30%, var(--ui-dock-item-border))":"var(--ui-dock-item-border)")}if(r.labelEl){const p=r.labelVisible;r.labelEl.style.setProperty("opacity",p?"1":"0"),r.labelEl.style.setProperty("visibility",p?"visible":"hidden"),r.labelEl.style.setProperty("transform",this._labelTransform(o,p)),r.labelEl.style.setProperty("filter",p?"blur(0px)":"blur(6px)")}}),h&&this._queueAnimation()}_queueAnimation(){if(this._reducedMotion){A(this._raf),this._raf=null,this._applyFrame(!0);return}this._raf==null&&(this._raf=$(()=>{this._raf=null,this._applyFrame(!1)}))}_mainAxisOffsets(e){if(this._items.length<2)return this._items.map(()=>0);const t=this._resolvedItemSizePx(),a=this._resolvedGapPx(),n=t+a,i=[0];for(let o=1;o<this._items.length;o+=1){const l=this._items[o-1],h=this._items[o],r=t*l.currentScale/2,d=t*h.currentScale/2,u=Math.max(0,r+d-n);i[o]=i[o-1]+u*e}const c=i[i.length-1]/2;return i.map(o=>o-c)}_labelTransform(e,t){return e==="top"?t?"translate3d(-50%, 0, 0)":"translate3d(-50%, 6px, 0)":e==="bottom"?t?"translate3d(-50%, 0, 0)":"translate3d(-50%, -6px, 0)":e==="start"?t?"translate3d(0, -50%, 0)":"translate3d(6px, -50%, 0)":t?"translate3d(0, -50%, 0)":"translate3d(-6px, -50%, 0)"}_syncHostStyles(){const e=b(this.getAttribute("gap"));e?this.style.setProperty("--ui-dock-gap",e):this.style.removeProperty("--ui-dock-gap");const t=b(this.getAttribute("padding"));t?this.style.setProperty("--ui-dock-padding",t):this.style.removeProperty("--ui-dock-padding");const a=b(this.getAttribute("item-size"));a?(this.style.setProperty("--ui-dock-item-size",a),this.style.setProperty("--ui-dock-icon-size",`calc(${a} * 0.44)`)):(this.style.removeProperty("--ui-dock-item-size"),this.style.removeProperty("--ui-dock-icon-size"));const n=this.getAttribute("radius");if(n&&!V.has(n)){const i=b(n)||n;this.style.setProperty("--ui-dock-radius",i),this.style.setProperty("--ui-dock-item-radius",`calc(${i} * 0.82)`)}else this.style.removeProperty("--ui-dock-radius"),this.style.removeProperty("--ui-dock-item-radius")}_orientation(){return this.getAttribute("orientation")==="vertical"?"vertical":"horizontal"}_motion(){const e=this.getAttribute("animation");return e==="calm"||e==="snappy"||e==="bouncy"?P[e]:P.smooth}_labelMode(){const e=this.getAttribute("label-mode");return e==="always"||e==="none"?e:"hover"}_magnification(){return Math.max(this._idleScale(),y(this.getAttribute("magnification"),F))}_distance(){return y(this.getAttribute("distance"),C)}_idleScale(){return Math.max(.5,y(this.getAttribute("idle-scale"),R))}_lift(){return y(this.getAttribute("lift"),D)}_smoothing(){return U(this.getAttribute("smoothing"),k)}_sizeToken(){const e=this.getAttribute("size");return e==="xs"||e==="0"?"xs":e==="sm"||e==="1"?"sm":e==="lg"||e==="3"?"lg":e==="xl"||e==="4"?"xl":"md"}_resolvedItemSizePx(){const e=b(this.getAttribute("item-size"));if(e){const t=Number.parseFloat(e);if(Number.isFinite(t))return t}return z[this._sizeToken()]?.itemSize??O}_resolvedGapPx(){const e=b(this.getAttribute("gap"));if(e){const a=Number.parseFloat(e);if(Number.isFinite(a))return a}const t=z[this._sizeToken()];return t?Number.parseFloat(t.gap):Number.parseFloat(_)}_updateRuntimeState(){const e=this._focusedIndex>=0?"keyboard":this._pointerActive?"pointer":"idle";this.setAttribute("data-state",e)}}typeof customElements<"u"&&!customElements.get("ui-dock")&&customElements.define("ui-dock",M);exports.UIDock=M;
333
+ `),this._bindElements(),this._syncHostStyles(),this.refresh()}_bindElements(){const e=this.root.querySelector(".frame");e&&e!==this._frameEl&&(this._frameEl&&(this._frameEl.removeEventListener("pointermove",this._handlePointerMove),this._frameEl.removeEventListener("pointerleave",this._handlePointerLeave)),e.addEventListener("pointermove",this._handlePointerMove),e.addEventListener("pointerleave",this._handlePointerLeave),this._frameEl=e);const t=this.root.querySelector("slot");t&&t!==this._slotEl&&(this._slotEl&&this._slotEl.removeEventListener("slotchange",this._handleSlotChange),t.addEventListener("slotchange",this._handleSlotChange),this._slotEl=t),this.removeEventListener("focusin",this._handleFocusIn),this.removeEventListener("focusout",this._handleFocusOut),this.removeEventListener("keydown",this._handleKeyDown),this.addEventListener("focusin",this._handleFocusIn),this.addEventListener("focusout",this._handleFocusOut),this.addEventListener("keydown",this._handleKeyDown),this._ensureResizeObserver()}_observeLightDom(){this._mutationObserver||typeof MutationObserver>"u"||(this._mutationObserver=new MutationObserver(this._handleLightDomMutation),this._mutationObserver.observe(this,{childList:!0,subtree:!0,characterData:!0}))}_ensureResizeObserver(){this._resizeObserver||typeof ResizeObserver>"u"||(this._resizeObserver=new ResizeObserver(this._handleResize),this._resizeObserver.observe(this))}_bindReducedMotion(){if(typeof window>"u"||typeof window.matchMedia!="function")return;const e=window.matchMedia("(prefers-reduced-motion: reduce)");this._reducedMotion=e.matches,this._mediaQuery=e;try{e.addEventListener("change",this._handleReducedMotionChange)}catch{e.addListener(this._handleReducedMotionChange)}}_handleReducedMotionChange(e){this._reducedMotion=e.matches,this.refresh()}_handleSlotChange(){this.refresh()}_handleLightDomMutation(){this.refresh()}_handleResize(){this._measureItems(),this._updateTargets(),this._queueAnimation()}_handlePointerMove(e){if("pointerType"in e&&e.pointerType==="touch"||!this._frameEl)return;const t=this._frameEl.getBoundingClientRect(),n=this._orientation()==="horizontal"?e.clientX-t.left:e.clientY-t.top;this._pointerActive=!0,this._pointerCoord=n,this._measureItems(),this._updateTargets(),this._queueAnimation()}_handlePointerLeave(){this._pointerActive=!1,this._pointerCoord=Number.NaN,this._updateTargets(),this._queueAnimation()}_handleFocusIn(e){const t=e.target?.closest?.("[data-ui-dock-item]");if(!t)return;const a=this._items.findIndex(n=>n.el===t);a<0||(this._focusedIndex=a,this._rovingIndex=a,this._syncTabIndices(),this._pointerActive=!1,this._pointerCoord=Number.NaN,this._updateTargets(),this._queueAnimation())}_handleFocusOut(e){const t=e.relatedTarget;t&&this.contains(t)||(this._focusedIndex=-1,this._pointerActive||(this._updateTargets(),this._queueAnimation()))}_handleKeyDown(e){if(e.defaultPrevented||!this._items.length)return;const t=this._orientation(),a=t==="horizontal"?["ArrowLeft"]:["ArrowUp"],n=t==="horizontal"?["ArrowRight"]:["ArrowDown"];if(a.includes(e.key)){e.preventDefault();const i=w(this._items,this._rovingIndex,-1);i>=0&&this.focusItem(i);return}if(n.includes(e.key)){e.preventDefault();const i=w(this._items,this._rovingIndex,1);i>=0&&this.focusItem(i);return}if(e.key==="Home"){e.preventDefault();const i=this._items.findIndex(c=>!c.disabled);i>=0&&this.focusItem(i);return}if(e.key==="End"){e.preventDefault();for(let i=this._items.length-1;i>=0;i-=1)if(!this._items[i]?.disabled){this.focusItem(i);break}return}e.key==="Escape"&&this.clearActive()}_collectItems(){const e=new Map(this._items.map(n=>[n.el,n])),t=Array.from(this.children).filter(B).map(n=>{const i=e.get(n),c=n.querySelector("[data-ui-dock-icon]"),o=n.querySelector("[data-ui-dock-label]"),l=n.querySelector("[data-ui-dock-badge]");return{el:n,iconEl:c,labelEl:o,badgeEl:l,center:i?.center??0,currentScale:i?.currentScale??this._idleScale(),targetScale:i?.targetScale??this._idleScale(),currentLift:i?.currentLift??0,targetLift:i?.targetLift??0,labelVisible:i?.labelVisible??!1,disabled:H(n),sticky:j(n),scaleVelocity:i?.scaleVelocity??0,liftVelocity:i?.liftVelocity??0}});this._items=t;const a=this._items.findIndex(n=>n.sticky&&!n.disabled);a>=0?this._rovingIndex=a:(!this._items[this._rovingIndex]||this._items[this._rovingIndex]?.disabled)&&(this._rovingIndex=this._items.findIndex(n=>!n.disabled)),this._rovingIndex<0&&(this._rovingIndex=0),(this._focusedIndex>=this._items.length||this._items[this._focusedIndex]?.disabled)&&(this._focusedIndex=-1),this._syncItemChrome()}_syncItemChrome(){const e=S(this.getAttribute("label-placement"),this._orientation()),t=this._labelMode(),a=this._orientation();this._items.forEach(n=>{const{el:i,iconEl:c,labelEl:o,badgeEl:l,sticky:h}=n;i.setAttribute("data-ui-dock-item",""),i.style.setProperty("position","relative"),i.style.setProperty("display","inline-flex"),i.style.setProperty("align-items","center"),i.style.setProperty("justify-content","center"),i.style.setProperty("inline-size","var(--ui-dock-item-size)"),i.style.setProperty("block-size","var(--ui-dock-item-size)"),i.style.setProperty("min-inline-size","var(--ui-dock-item-size)"),i.style.setProperty("min-block-size","var(--ui-dock-item-size)"),i.style.setProperty("flex","0 0 var(--ui-dock-item-size)"),i.style.setProperty("box-sizing","border-box"),i.style.setProperty("background","transparent"),i.style.setProperty("border","none"),i.style.setProperty("padding","0"),i.style.setProperty("margin","0"),i.style.setProperty("color","inherit"),i.style.setProperty("text-decoration","none"),i.style.setProperty("outline","none"),i.style.setProperty("cursor",n.disabled?"not-allowed":"pointer"),i.style.setProperty("transform-origin",a==="horizontal"?"center bottom":"center center"),i.style.setProperty("touch-action","manipulation"),i.hasAttribute("tabindex")||(i.tabIndex=-1);const r=i.getAttribute("aria-label"),d=this._itemNames.get(i),u=d&&d.composed===r?d.base:r||o?.textContent?.trim()||i.getAttribute("data-label")||i.getAttribute("title")||"",m=l?.textContent?.trim()??"",f=u&&m&&!u.includes(m)?`${u}, ${m}`:u;f&&(f!==r&&i.setAttribute("aria-label",f),this._itemNames.set(i,{base:u,composed:f})),h?i.setAttribute("data-dock-current","true"):i.removeAttribute("data-dock-current"),c&&(c.style.setProperty("display","inline-flex"),c.style.setProperty("align-items","center"),c.style.setProperty("justify-content","center"),c.style.setProperty("inline-size","100%"),c.style.setProperty("block-size","100%"),c.style.setProperty("border-radius","var(--ui-dock-item-radius)"),c.style.setProperty("background","var(--ui-dock-item-bg)"),c.style.setProperty("border","1px solid var(--ui-dock-item-border)"),c.style.setProperty("box-shadow","var(--ui-dock-item-shadow)"),c.style.setProperty("backdrop-filter","var(--ui-dock-item-backdrop)"),c.style.setProperty("font-size","var(--ui-dock-icon-size)"),c.style.setProperty("color","inherit"),c.style.setProperty("overflow","hidden"),c.style.setProperty("box-sizing","border-box")),o&&(o.setAttribute("aria-hidden","true"),o.style.setProperty("position","absolute"),o.style.setProperty("pointer-events","none"),o.style.setProperty("white-space","nowrap"),o.style.setProperty("padding","var(--ui-dock-label-padding)"),o.style.setProperty("border-radius","var(--ui-dock-label-radius)"),o.style.setProperty("background","var(--ui-dock-label-bg)"),o.style.setProperty("color","var(--ui-dock-label-color)"),o.style.setProperty("border","1px solid var(--ui-dock-label-border)"),o.style.setProperty("box-shadow","var(--ui-dock-label-shadow)"),o.style.setProperty("backdrop-filter","var(--ui-dock-label-backdrop)"),o.style.setProperty("font-size","var(--ui-dock-label-font-size)"),o.style.setProperty("font-weight","var(--ui-dock-label-font-weight)"),o.style.setProperty("line-height","1.2"),o.style.setProperty("letter-spacing","0.01em"),o.style.setProperty("min-inline-size","max-content"),o.style.setProperty("z-index","3"),o.style.setProperty("display",t==="none"?"none":"inline-flex"),o.style.removeProperty("top"),o.style.removeProperty("bottom"),o.style.removeProperty("left"),o.style.removeProperty("right"),e==="top"?(o.style.setProperty("left","50%"),o.style.setProperty("bottom","calc(100% + var(--ui-dock-label-offset))")):e==="bottom"?(o.style.setProperty("left","50%"),o.style.setProperty("top","calc(100% + var(--ui-dock-label-offset))")):e==="start"?(o.style.setProperty("right","calc(100% + var(--ui-dock-label-offset))"),o.style.setProperty("top","50%")):(o.style.setProperty("left","calc(100% + var(--ui-dock-label-offset))"),o.style.setProperty("top","50%"))),l&&(l.setAttribute("aria-hidden","true"),l.style.setProperty("position","absolute"),l.style.setProperty("inset-inline-end","-2px"),l.style.setProperty("inset-block-start","-2px"),l.style.setProperty("display","inline-flex"),l.style.setProperty("align-items","center"),l.style.setProperty("justify-content","center"),l.style.setProperty("min-inline-size","18px"),l.style.setProperty("min-block-size","18px"),l.style.setProperty("padding","0 6px"),l.style.setProperty("border-radius","999px"),l.style.setProperty("background","var(--ui-dock-accent)"),l.style.setProperty("color","#ffffff"),l.style.setProperty("font-size","11px"),l.style.setProperty("font-weight","700"),l.style.setProperty("box-shadow","none"),l.style.setProperty("z-index","4"))})}_syncTabIndices(){const e=this._items.findIndex(t=>!t.disabled);e>=0&&(this._rovingIndex<0||this._items[this._rovingIndex]?.disabled)&&(this._rovingIndex=e),this._items.forEach((t,a)=>{if(t.disabled){t.el.tabIndex=-1;return}t.el.tabIndex=a===this._rovingIndex?0:-1})}_measureItems(){if(!this._frameEl)return;const e=this._frameEl.getBoundingClientRect(),t=this._orientation(),a=t==="horizontal"?e.left:e.top;this._items.forEach(n=>{const i=n.el.getBoundingClientRect();n.center=(t==="horizontal"?i.left+i.width/2:i.top+i.height/2)-a})}_updateTargets(){const e=this._idleScale(),t=Math.max(e,this._magnification()),a=Math.max(1,this._distance()),n=this._lift()*this._motion().lift,i=this._labelMode();this._items.forEach((c,o)=>{let l=e;if(c.sticky&&(l=Math.max(l,e+(t-e)*.08)),this._pointerActive&&Number.isFinite(this._pointerCoord)){const r=Math.abs(this._pointerCoord-c.center),d=g(1-r/a,0,1);l=Math.max(l,e+(t-e)*d*d)}o===this._focusedIndex&&(l=Math.max(l,t)),c.disabled&&(l=e);const h=t===e?0:(l-e)/(t-e);c.targetScale=g(l,e,t),c.targetLift=h*n,c.labelVisible=i==="always"||i!=="none"&&(o===this._focusedIndex||h>.18)}),this._updateRuntimeState()}_applyFrame(e=!1){const t=this._smoothing(),a=this._motion(),n=g(a.response+t*.12,.05,.42),i=g(a.damping+(t-x)*.14,.52,.9),c=this._orientation(),o=S(this.getAttribute("label-placement"),c),l=this._mainAxisOffsets(a.spread);let h=!1;this._items.forEach((r,d)=>{e?(r.currentScale=r.targetScale,r.currentLift=r.targetLift,r.scaleVelocity=0,r.liftVelocity=0):(r.scaleVelocity=r.scaleVelocity*i+(r.targetScale-r.currentScale)*n,r.liftVelocity=r.liftVelocity*i+(r.targetLift-r.currentLift)*n,r.currentScale+=r.scaleVelocity,r.currentLift+=r.liftVelocity,Math.abs(r.targetScale-r.currentScale)<.002&&Math.abs(r.scaleVelocity)<.002&&(r.currentScale=r.targetScale,r.scaleVelocity=0),Math.abs(r.targetLift-r.currentLift)<.002&&Math.abs(r.liftVelocity)<.002&&(r.currentLift=r.targetLift,r.liftVelocity=0)),(Math.abs(r.targetScale-r.currentScale)>=.002||Math.abs(r.targetLift-r.currentLift)>=.002||Math.abs(r.scaleVelocity)>=.002||Math.abs(r.liftVelocity)>=.002)&&(h=!0);const u=l[d]??0,m=c==="horizontal"?u:o==="start"?-r.currentLift*.28:r.currentLift*.28,f=c==="horizontal"?-r.currentLift:u;if(r.el.style.setProperty("transform",`translate3d(${m}px, ${f}px, 0) scale(${r.currentScale})`),r.el.style.setProperty("z-index",String(100+Math.round(r.currentScale*100)+d)),r.iconEl){const p=d===this._focusedIndex?"0 0 0 2px var(--ui-ring-color, var(--ui-dock-focus-ring)), ":r.sticky?"0 0 0 2px color-mix(in srgb, var(--ui-dock-accent) 22%, transparent), ":"";r.iconEl.style.setProperty("box-shadow",`${p}var(--ui-dock-item-shadow)`),r.iconEl.style.setProperty("border-color",r.sticky||d===this._focusedIndex?"color-mix(in srgb, var(--ui-dock-accent) 55%, transparent)":"var(--ui-dock-item-border)")}if(r.labelEl){const p=r.labelVisible;r.labelEl.style.setProperty("opacity",p?"1":"0"),r.labelEl.style.setProperty("visibility",p?"visible":"hidden"),r.labelEl.style.setProperty("transform",this._labelTransform(o,p)),r.labelEl.style.setProperty("filter",p?"blur(0px)":"blur(6px)")}}),h&&this._queueAnimation()}_queueAnimation(){if(this._reducedMotion){A(this._raf),this._raf=null,this._applyFrame(!0);return}this._raf==null&&(this._raf=$(()=>{this._raf=null,this._applyFrame(!1)}))}_mainAxisOffsets(e){if(this._items.length<2)return this._items.map(()=>0);const t=this._resolvedItemSizePx(),a=this._resolvedGapPx(),n=t+a,i=[0];for(let o=1;o<this._items.length;o+=1){const l=this._items[o-1],h=this._items[o],r=t*l.currentScale/2,d=t*h.currentScale/2,u=Math.max(0,r+d-n);i[o]=i[o-1]+u*e}const c=i[i.length-1]/2;return i.map(o=>o-c)}_labelTransform(e,t){return e==="top"?t?"translate3d(-50%, 0, 0)":"translate3d(-50%, 6px, 0)":e==="bottom"?t?"translate3d(-50%, 0, 0)":"translate3d(-50%, -6px, 0)":e==="start"?t?"translate3d(0, -50%, 0)":"translate3d(6px, -50%, 0)":t?"translate3d(0, -50%, 0)":"translate3d(-6px, -50%, 0)"}_syncHostStyles(){const e=b(this.getAttribute("gap"));e?this.style.setProperty("--ui-dock-gap",e):this.style.removeProperty("--ui-dock-gap");const t=b(this.getAttribute("padding"));t?this.style.setProperty("--ui-dock-padding",t):this.style.removeProperty("--ui-dock-padding");const a=b(this.getAttribute("item-size"));a?(this.style.setProperty("--ui-dock-item-size",a),this.style.setProperty("--ui-dock-icon-size",`calc(${a} * 0.44)`)):(this.style.removeProperty("--ui-dock-item-size"),this.style.removeProperty("--ui-dock-icon-size"));const n=this.getAttribute("radius");if(n&&!V.has(n)){const i=b(n)||n;this.style.setProperty("--ui-dock-radius",i),this.style.setProperty("--ui-dock-item-radius",`calc(${i} * 0.82)`)}else this.style.removeProperty("--ui-dock-radius"),this.style.removeProperty("--ui-dock-item-radius")}_orientation(){return this.getAttribute("orientation")==="vertical"?"vertical":"horizontal"}_motion(){const e=this.getAttribute("animation");return e==="calm"||e==="snappy"||e==="bouncy"?P[e]:P.smooth}_labelMode(){const e=this.getAttribute("label-mode");return e==="always"||e==="none"?e:"hover"}_magnification(){return Math.max(this._idleScale(),y(this.getAttribute("magnification"),F))}_distance(){return y(this.getAttribute("distance"),C)}_idleScale(){return Math.max(.5,y(this.getAttribute("idle-scale"),R))}_lift(){return y(this.getAttribute("lift"),D)}_smoothing(){return U(this.getAttribute("smoothing"),x)}_sizeToken(){const e=this.getAttribute("size");return e==="xs"||e==="0"?"xs":e==="sm"||e==="1"?"sm":e==="lg"||e==="3"?"lg":e==="xl"||e==="4"?"xl":"md"}_resolvedItemSizePx(){const e=b(this.getAttribute("item-size"));if(e){const t=Number.parseFloat(e);if(Number.isFinite(t))return t}return z[this._sizeToken()]?.itemSize??O}_resolvedGapPx(){const e=b(this.getAttribute("gap"));if(e){const a=Number.parseFloat(e);if(Number.isFinite(a))return a}const t=z[this._sizeToken()];return t?Number.parseFloat(t.gap):Number.parseFloat(_)}_updateRuntimeState(){const e=this._focusedIndex>=0?"keyboard":this._pointerActive?"pointer":"idle";this.setAttribute("data-state",e)}}typeof customElements<"u"&&!customElements.get("ui-dock")&&customElements.define("ui-dock",M);exports.UIDock=M;