bits-ui 2.6.2 → 2.8.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 (367) hide show
  1. package/README.md +4 -4
  2. package/dist/bits/accordion/accordion.svelte.d.ts +66 -58
  3. package/dist/bits/accordion/accordion.svelte.js +56 -51
  4. package/dist/bits/accordion/components/accordion-content.svelte +4 -4
  5. package/dist/bits/accordion/components/accordion-header.svelte +2 -2
  6. package/dist/bits/accordion/components/accordion-item.svelte +2 -2
  7. package/dist/bits/accordion/components/accordion-trigger.svelte +2 -2
  8. package/dist/bits/accordion/components/accordion.svelte +2 -2
  9. package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +2 -2
  10. package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +2 -2
  11. package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +3 -3
  12. package/dist/bits/alert-dialog/components/alert-dialog.svelte +9 -3
  13. package/dist/bits/aspect-ratio/aspect-ratio.svelte.d.ts +10 -16
  14. package/dist/bits/aspect-ratio/aspect-ratio.svelte.js +4 -11
  15. package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +2 -2
  16. package/dist/bits/avatar/avatar.svelte.d.ts +25 -33
  17. package/dist/bits/avatar/avatar.svelte.js +20 -21
  18. package/dist/bits/avatar/components/avatar-fallback.svelte +2 -2
  19. package/dist/bits/avatar/components/avatar-image.svelte +2 -2
  20. package/dist/bits/avatar/components/avatar.svelte +2 -2
  21. package/dist/bits/calendar/calendar.svelte.d.ts +117 -106
  22. package/dist/bits/calendar/calendar.svelte.js +51 -52
  23. package/dist/bits/calendar/components/calendar-cell.svelte +2 -2
  24. package/dist/bits/calendar/components/calendar-day.svelte +2 -2
  25. package/dist/bits/calendar/components/calendar-grid-body.svelte +2 -2
  26. package/dist/bits/calendar/components/calendar-grid-head.svelte +2 -2
  27. package/dist/bits/calendar/components/calendar-grid-row.svelte +2 -2
  28. package/dist/bits/calendar/components/calendar-grid.svelte +2 -2
  29. package/dist/bits/calendar/components/calendar-head-cell.svelte +2 -2
  30. package/dist/bits/calendar/components/calendar-header.svelte +2 -2
  31. package/dist/bits/calendar/components/calendar-heading.svelte +5 -5
  32. package/dist/bits/calendar/components/calendar-month-select.svelte +2 -2
  33. package/dist/bits/calendar/components/calendar-next-button.svelte +2 -2
  34. package/dist/bits/calendar/components/calendar-prev-button.svelte +2 -2
  35. package/dist/bits/calendar/components/calendar-year-select.svelte +2 -2
  36. package/dist/bits/calendar/components/calendar.svelte +2 -2
  37. package/dist/bits/checkbox/checkbox.svelte.d.ts +37 -34
  38. package/dist/bits/checkbox/checkbox.svelte.js +19 -22
  39. package/dist/bits/checkbox/components/checkbox-group-label.svelte +2 -2
  40. package/dist/bits/checkbox/components/checkbox-group.svelte +2 -2
  41. package/dist/bits/checkbox/components/checkbox-input.svelte +2 -2
  42. package/dist/bits/checkbox/components/checkbox.svelte +2 -2
  43. package/dist/bits/collapsible/collapsible.svelte.d.ts +30 -27
  44. package/dist/bits/collapsible/collapsible.svelte.js +23 -15
  45. package/dist/bits/collapsible/components/collapsible-content.svelte +5 -5
  46. package/dist/bits/collapsible/components/collapsible-content.svelte.d.ts +1 -4
  47. package/dist/bits/collapsible/components/collapsible-trigger.svelte +2 -2
  48. package/dist/bits/collapsible/components/collapsible.svelte +4 -2
  49. package/dist/bits/collapsible/types.d.ts +4 -0
  50. package/dist/bits/combobox/components/combobox-input.svelte +2 -2
  51. package/dist/bits/combobox/components/combobox-trigger.svelte +2 -2
  52. package/dist/bits/combobox/components/combobox.svelte +4 -2
  53. package/dist/bits/command/command.svelte.d.ts +103 -92
  54. package/dist/bits/command/command.svelte.js +55 -57
  55. package/dist/bits/command/components/_command-label.svelte +2 -2
  56. package/dist/bits/command/components/command-empty.svelte +2 -2
  57. package/dist/bits/command/components/command-group-heading.svelte +2 -2
  58. package/dist/bits/command/components/command-group-items.svelte +2 -2
  59. package/dist/bits/command/components/command-group.svelte +2 -2
  60. package/dist/bits/command/components/command-input.svelte +2 -2
  61. package/dist/bits/command/components/command-item.svelte +2 -2
  62. package/dist/bits/command/components/command-link-item.svelte +2 -2
  63. package/dist/bits/command/components/command-list.svelte +2 -2
  64. package/dist/bits/command/components/command-loading.svelte +2 -2
  65. package/dist/bits/command/components/command-separator.svelte +2 -2
  66. package/dist/bits/command/components/command-viewport.svelte +2 -2
  67. package/dist/bits/command/components/command.svelte +2 -2
  68. package/dist/bits/context-menu/components/context-menu-content-static.svelte +3 -3
  69. package/dist/bits/context-menu/components/context-menu-content.svelte +3 -3
  70. package/dist/bits/context-menu/components/context-menu-trigger.svelte +2 -2
  71. package/dist/bits/context-menu/components/context-menu.svelte +16 -11
  72. package/dist/bits/date-field/components/date-field-hidden-input.svelte +2 -2
  73. package/dist/bits/date-field/components/date-field-input.svelte +2 -2
  74. package/dist/bits/date-field/components/date-field-label.svelte +2 -2
  75. package/dist/bits/date-field/components/date-field-segment.svelte +2 -2
  76. package/dist/bits/date-field/components/date-field.svelte +2 -2
  77. package/dist/bits/date-field/date-field.svelte.d.ts +85 -74
  78. package/dist/bits/date-field/date-field.svelte.js +55 -53
  79. package/dist/bits/date-picker/components/date-picker-calendar.svelte +2 -2
  80. package/dist/bits/date-picker/components/date-picker.svelte +8 -6
  81. package/dist/bits/date-picker/date-picker.svelte.d.ts +10 -10
  82. package/dist/bits/date-picker/date-picker.svelte.js +6 -5
  83. package/dist/bits/date-picker/types.d.ts +4 -0
  84. package/dist/bits/date-range-field/components/date-range-field-input.svelte +2 -2
  85. package/dist/bits/date-range-field/components/date-range-field-label.svelte +2 -2
  86. package/dist/bits/date-range-field/components/date-range-field.svelte +2 -2
  87. package/dist/bits/date-range-field/date-range-field.svelte.d.ts +32 -29
  88. package/dist/bits/date-range-field/date-range-field.svelte.js +33 -32
  89. package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +2 -2
  90. package/dist/bits/date-range-picker/components/date-range-picker.svelte +8 -6
  91. package/dist/bits/date-range-picker/date-range-picker.svelte.d.ts +10 -10
  92. package/dist/bits/date-range-picker/date-range-picker.svelte.js +6 -5
  93. package/dist/bits/date-range-picker/types.d.ts +4 -0
  94. package/dist/bits/dialog/components/dialog-close.svelte +2 -2
  95. package/dist/bits/dialog/components/dialog-content.svelte +3 -3
  96. package/dist/bits/dialog/components/dialog-description.svelte +2 -2
  97. package/dist/bits/dialog/components/dialog-overlay.svelte +3 -6
  98. package/dist/bits/dialog/components/dialog-title.svelte +2 -2
  99. package/dist/bits/dialog/components/dialog-trigger.svelte +2 -2
  100. package/dist/bits/dialog/components/dialog.svelte +9 -3
  101. package/dist/bits/dialog/dialog.svelte.d.ts +75 -65
  102. package/dist/bits/dialog/dialog.svelte.js +47 -38
  103. package/dist/bits/dialog/types.d.ts +4 -0
  104. package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +3 -3
  105. package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +3 -3
  106. package/dist/bits/label/components/label.svelte +2 -2
  107. package/dist/bits/label/label.svelte.d.ts +8 -7
  108. package/dist/bits/label/label.svelte.js +4 -4
  109. package/dist/bits/link-preview/components/link-preview-content-static.svelte +3 -3
  110. package/dist/bits/link-preview/components/link-preview-content.svelte +3 -3
  111. package/dist/bits/link-preview/components/link-preview-trigger.svelte +2 -2
  112. package/dist/bits/link-preview/components/link-preview.svelte +4 -2
  113. package/dist/bits/link-preview/link-preview.svelte.d.ts +28 -25
  114. package/dist/bits/link-preview/link-preview.svelte.js +24 -16
  115. package/dist/bits/link-preview/types.d.ts +4 -0
  116. package/dist/bits/menu/components/menu-arrow.svelte +2 -2
  117. package/dist/bits/menu/components/menu-checkbox-group.svelte +2 -2
  118. package/dist/bits/menu/components/menu-checkbox-item.svelte +2 -2
  119. package/dist/bits/menu/components/menu-content-static.svelte +3 -3
  120. package/dist/bits/menu/components/menu-content.svelte +3 -3
  121. package/dist/bits/menu/components/menu-group-heading.svelte +2 -2
  122. package/dist/bits/menu/components/menu-group.svelte +2 -2
  123. package/dist/bits/menu/components/menu-item.svelte +2 -2
  124. package/dist/bits/menu/components/menu-radio-group.svelte +2 -2
  125. package/dist/bits/menu/components/menu-radio-item.svelte +2 -2
  126. package/dist/bits/menu/components/menu-separator.svelte +2 -2
  127. package/dist/bits/menu/components/menu-sub-content-static.svelte +3 -3
  128. package/dist/bits/menu/components/menu-sub-content.svelte +3 -3
  129. package/dist/bits/menu/components/menu-sub-trigger.svelte +2 -2
  130. package/dist/bits/menu/components/menu-sub.svelte +9 -3
  131. package/dist/bits/menu/components/menu-trigger.svelte +2 -2
  132. package/dist/bits/menu/components/menu.svelte +16 -11
  133. package/dist/bits/menu/menu.svelte.d.ts +136 -119
  134. package/dist/bits/menu/menu.svelte.js +106 -96
  135. package/dist/bits/menu/types.d.ts +8 -0
  136. package/dist/bits/menubar/components/menubar-content-static.svelte +2 -2
  137. package/dist/bits/menubar/components/menubar-content.svelte +2 -2
  138. package/dist/bits/menubar/components/menubar-menu.svelte +2 -2
  139. package/dist/bits/menubar/components/menubar-trigger.svelte +4 -4
  140. package/dist/bits/menubar/components/menubar.svelte +2 -2
  141. package/dist/bits/menubar/menubar.svelte.d.ts +37 -34
  142. package/dist/bits/menubar/menubar.svelte.js +21 -21
  143. package/dist/bits/meter/components/meter.svelte +2 -2
  144. package/dist/bits/meter/meter.svelte.d.ts +10 -9
  145. package/dist/bits/meter/meter.svelte.js +4 -4
  146. package/dist/bits/navigation-menu/components/navigation-menu-content-impl.svelte +2 -2
  147. package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +3 -3
  148. package/dist/bits/navigation-menu/components/navigation-menu-indicator-impl.svelte +2 -2
  149. package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +3 -3
  150. package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +2 -2
  151. package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +2 -2
  152. package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +2 -2
  153. package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +2 -2
  154. package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +2 -2
  155. package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +3 -3
  156. package/dist/bits/navigation-menu/components/navigation-menu.svelte +2 -2
  157. package/dist/bits/navigation-menu/navigation-menu.svelte.d.ts +116 -109
  158. package/dist/bits/navigation-menu/navigation-menu.svelte.js +78 -81
  159. package/dist/bits/pagination/components/pagination-next-button.svelte +2 -2
  160. package/dist/bits/pagination/components/pagination-page.svelte +2 -2
  161. package/dist/bits/pagination/components/pagination-prev-button.svelte +2 -2
  162. package/dist/bits/pagination/components/pagination.svelte +2 -2
  163. package/dist/bits/pagination/pagination.svelte.d.ts +34 -32
  164. package/dist/bits/pagination/pagination.svelte.js +15 -15
  165. package/dist/bits/pin-input/components/pin-input-cell.svelte +2 -2
  166. package/dist/bits/pin-input/components/pin-input.svelte +2 -2
  167. package/dist/bits/pin-input/pin-input.svelte.d.ts +22 -21
  168. package/dist/bits/pin-input/pin-input.svelte.js +9 -9
  169. package/dist/bits/popover/components/popover-close.svelte +2 -2
  170. package/dist/bits/popover/components/popover-content-static.svelte +3 -3
  171. package/dist/bits/popover/components/popover-content.svelte +3 -3
  172. package/dist/bits/popover/components/popover-trigger.svelte +2 -2
  173. package/dist/bits/popover/components/popover.svelte +9 -3
  174. package/dist/bits/popover/popover.svelte.d.ts +36 -31
  175. package/dist/bits/popover/popover.svelte.js +26 -21
  176. package/dist/bits/popover/types.d.ts +4 -0
  177. package/dist/bits/progress/components/progress.svelte +2 -2
  178. package/dist/bits/progress/progress.svelte.d.ts +10 -9
  179. package/dist/bits/progress/progress.svelte.js +4 -4
  180. package/dist/bits/radio-group/components/radio-group-input.svelte +2 -2
  181. package/dist/bits/radio-group/components/radio-group-item.svelte +2 -2
  182. package/dist/bits/radio-group/components/radio-group.svelte +4 -2
  183. package/dist/bits/radio-group/radio-group.svelte.d.ts +26 -19
  184. package/dist/bits/radio-group/radio-group.svelte.js +26 -19
  185. package/dist/bits/radio-group/types.d.ts +13 -6
  186. package/dist/bits/range-calendar/components/range-calendar-cell.svelte +2 -2
  187. package/dist/bits/range-calendar/components/range-calendar-day.svelte +2 -2
  188. package/dist/bits/range-calendar/components/range-calendar.svelte +2 -2
  189. package/dist/bits/range-calendar/range-calendar.svelte.d.ts +21 -20
  190. package/dist/bits/range-calendar/range-calendar.svelte.js +12 -12
  191. package/dist/bits/rating-group/components/rating-group-input.svelte +2 -2
  192. package/dist/bits/rating-group/components/rating-group-item.svelte +2 -2
  193. package/dist/bits/rating-group/components/rating-group.svelte +2 -2
  194. package/dist/bits/rating-group/rating-group.svelte.d.ts +19 -18
  195. package/dist/bits/rating-group/rating-group.svelte.js +16 -17
  196. package/dist/bits/scroll-area/components/scroll-area-corner-impl.svelte +2 -2
  197. package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +3 -3
  198. package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +6 -6
  199. package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +3 -3
  200. package/dist/bits/scroll-area/components/scroll-area-scrollbar-shared.svelte +2 -2
  201. package/dist/bits/scroll-area/components/scroll-area-scrollbar-visible.svelte +2 -2
  202. package/dist/bits/scroll-area/components/scroll-area-scrollbar-x.svelte +2 -2
  203. package/dist/bits/scroll-area/components/scroll-area-scrollbar-y.svelte +2 -2
  204. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +2 -2
  205. package/dist/bits/scroll-area/components/scroll-area-thumb-impl.svelte +2 -2
  206. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +2 -5
  207. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +2 -2
  208. package/dist/bits/scroll-area/components/scroll-area.svelte +2 -2
  209. package/dist/bits/scroll-area/scroll-area.svelte.d.ts +98 -78
  210. package/dist/bits/scroll-area/scroll-area.svelte.js +78 -74
  211. package/dist/bits/select/components/select-content-static.svelte +3 -3
  212. package/dist/bits/select/components/select-content.svelte +3 -3
  213. package/dist/bits/select/components/select-group-heading.svelte +2 -2
  214. package/dist/bits/select/components/select-group.svelte +2 -2
  215. package/dist/bits/select/components/select-hidden-input.svelte +2 -2
  216. package/dist/bits/select/components/select-item.svelte +2 -2
  217. package/dist/bits/select/components/select-scroll-down-button.svelte +2 -2
  218. package/dist/bits/select/components/select-scroll-up-button.svelte +2 -2
  219. package/dist/bits/select/components/select-trigger.svelte +2 -2
  220. package/dist/bits/select/components/select-viewport.svelte +2 -2
  221. package/dist/bits/select/components/select.svelte +4 -2
  222. package/dist/bits/select/select.svelte.d.ts +127 -113
  223. package/dist/bits/select/select.svelte.js +74 -62
  224. package/dist/bits/select/types.d.ts +4 -0
  225. package/dist/bits/separator/components/separator.svelte +2 -2
  226. package/dist/bits/separator/separator.svelte.d.ts +9 -8
  227. package/dist/bits/separator/separator.svelte.js +4 -4
  228. package/dist/bits/slider/components/slider-range.svelte +2 -2
  229. package/dist/bits/slider/components/slider-thumb-label.svelte +2 -2
  230. package/dist/bits/slider/components/slider-thumb.svelte +2 -2
  231. package/dist/bits/slider/components/slider-tick-label.svelte +2 -2
  232. package/dist/bits/slider/components/slider-tick.svelte +2 -2
  233. package/dist/bits/slider/components/slider.svelte +2 -2
  234. package/dist/bits/slider/slider.svelte.d.ts +82 -73
  235. package/dist/bits/slider/slider.svelte.js +30 -28
  236. package/dist/bits/switch/components/switch-input.svelte +2 -2
  237. package/dist/bits/switch/components/switch-thumb.svelte +2 -2
  238. package/dist/bits/switch/components/switch.svelte +2 -2
  239. package/dist/bits/switch/switch.svelte.d.ts +19 -17
  240. package/dist/bits/switch/switch.svelte.js +13 -13
  241. package/dist/bits/tabs/components/tabs-content.svelte +2 -2
  242. package/dist/bits/tabs/components/tabs-list.svelte +2 -2
  243. package/dist/bits/tabs/components/tabs-trigger.svelte +2 -2
  244. package/dist/bits/tabs/components/tabs.svelte +2 -2
  245. package/dist/bits/tabs/tabs.svelte.d.ts +33 -29
  246. package/dist/bits/tabs/tabs.svelte.js +19 -19
  247. package/dist/bits/time-field/components/time-field-hidden-input.svelte +2 -2
  248. package/dist/bits/time-field/components/time-field-input.svelte +2 -2
  249. package/dist/bits/time-field/components/time-field-label.svelte +2 -2
  250. package/dist/bits/time-field/components/time-field-segment.svelte +2 -2
  251. package/dist/bits/time-field/components/time-field.svelte +2 -2
  252. package/dist/bits/time-field/time-field.svelte.d.ts +72 -66
  253. package/dist/bits/time-field/time-field.svelte.js +37 -42
  254. package/dist/bits/time-range-field/components/time-range-field-input.svelte +2 -2
  255. package/dist/bits/time-range-field/components/time-range-field-label.svelte +2 -2
  256. package/dist/bits/time-range-field/components/time-range-field.svelte +2 -2
  257. package/dist/bits/time-range-field/time-range-field.svelte.d.ts +35 -31
  258. package/dist/bits/time-range-field/time-range-field.svelte.js +34 -32
  259. package/dist/bits/toggle/components/toggle.svelte +2 -2
  260. package/dist/bits/toggle/toggle.svelte.d.ts +11 -10
  261. package/dist/bits/toggle/toggle.svelte.js +4 -4
  262. package/dist/bits/toggle-group/components/toggle-group-item.svelte +2 -2
  263. package/dist/bits/toggle-group/components/toggle-group.svelte +2 -2
  264. package/dist/bits/toggle-group/toggle-group.svelte.d.ts +48 -43
  265. package/dist/bits/toggle-group/toggle-group.svelte.js +24 -25
  266. package/dist/bits/toolbar/components/toolbar-button.svelte +2 -2
  267. package/dist/bits/toolbar/components/toolbar-group-item.svelte +2 -2
  268. package/dist/bits/toolbar/components/toolbar-group.svelte +2 -2
  269. package/dist/bits/toolbar/components/toolbar-link.svelte +2 -2
  270. package/dist/bits/toolbar/components/toolbar.svelte +2 -2
  271. package/dist/bits/toolbar/toolbar.svelte.d.ts +59 -51
  272. package/dist/bits/toolbar/toolbar.svelte.js +32 -30
  273. package/dist/bits/tooltip/components/tooltip-content-static.svelte +3 -3
  274. package/dist/bits/tooltip/components/tooltip-content.svelte +3 -3
  275. package/dist/bits/tooltip/components/tooltip-provider.svelte +2 -2
  276. package/dist/bits/tooltip/components/tooltip-trigger.svelte +2 -2
  277. package/dist/bits/tooltip/components/tooltip.svelte +4 -2
  278. package/dist/bits/tooltip/tooltip.svelte.d.ts +33 -29
  279. package/dist/bits/tooltip/tooltip.svelte.js +33 -28
  280. package/dist/bits/tooltip/types.d.ts +4 -0
  281. package/dist/bits/utilities/config/bits-config.d.ts +1 -1
  282. package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -2
  283. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +6 -7
  284. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +3 -3
  285. package/dist/bits/utilities/escape-layer/escape-layer.svelte +2 -2
  286. package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.d.ts +6 -7
  287. package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.js +3 -3
  288. package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -2
  289. package/dist/bits/utilities/floating-layer/components/floating-layer-arrow.svelte +2 -2
  290. package/dist/bits/utilities/floating-layer/components/floating-layer-content.svelte +2 -2
  291. package/dist/bits/utilities/floating-layer/components/floating-layer.svelte +2 -2
  292. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +25 -23
  293. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +25 -25
  294. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +1 -1
  295. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +1 -1
  296. package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte +1 -1
  297. package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte.d.ts +1 -1
  298. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +1 -1
  299. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte.d.ts +1 -1
  300. package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -3
  301. package/dist/bits/utilities/presence-layer/presence-layer.svelte +8 -8
  302. package/dist/bits/utilities/presence-layer/presence.svelte.d.ts +42 -0
  303. package/dist/bits/utilities/presence-layer/presence.svelte.js +116 -0
  304. package/dist/bits/utilities/presence-layer/types.d.ts +3 -5
  305. package/dist/bits/utilities/scroll-lock/scroll-lock.svelte +2 -2
  306. package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -2
  307. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +7 -7
  308. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +3 -3
  309. package/dist/internal/animations-complete.d.ts +12 -0
  310. package/dist/internal/animations-complete.js +55 -0
  311. package/dist/internal/arrays.js +20 -36
  312. package/dist/internal/attrs.d.ts +9 -2
  313. package/dist/internal/attrs.js +21 -11
  314. package/dist/internal/body-scroll-lock.svelte.d.ts +10 -0
  315. package/dist/internal/body-scroll-lock.svelte.js +106 -0
  316. package/dist/internal/data-typeahead.svelte.d.ts +15 -0
  317. package/dist/internal/data-typeahead.svelte.js +33 -0
  318. package/dist/internal/date-time/calendar-helpers.svelte.d.ts +1 -1
  319. package/dist/internal/dom-typeahead.svelte.d.ts +14 -0
  320. package/dist/internal/dom-typeahead.svelte.js +44 -0
  321. package/dist/internal/dom.d.ts +0 -2
  322. package/dist/internal/dom.js +0 -15
  323. package/dist/internal/{use-grace-area.svelte.d.ts → grace-area.svelte.d.ts} +5 -4
  324. package/dist/internal/{use-grace-area.svelte.js → grace-area.svelte.js} +60 -56
  325. package/dist/internal/open-change-complete.d.ts +13 -0
  326. package/dist/internal/open-change-complete.js +24 -0
  327. package/dist/internal/{use-roving-focus.svelte.d.ts → roving-focus-group.d.ts} +9 -8
  328. package/dist/internal/{use-roving-focus.svelte.js → roving-focus-group.js} +30 -34
  329. package/dist/internal/shared-state.svelte.d.ts +6 -0
  330. package/dist/internal/shared-state.svelte.js +31 -0
  331. package/dist/internal/should-trap-focus.js +1 -2
  332. package/dist/internal/state-machine.d.ts +16 -0
  333. package/dist/internal/state-machine.js +18 -0
  334. package/dist/internal/svelte-resize-observer.svelte.d.ts +6 -0
  335. package/dist/internal/svelte-resize-observer.svelte.js +25 -0
  336. package/dist/internal/tabbable.d.ts +0 -1
  337. package/dist/internal/tabbable.js +0 -11
  338. package/dist/internal/timeout-fn.d.ts +16 -0
  339. package/dist/internal/timeout-fn.js +38 -0
  340. package/dist/internal/types.d.ts +2 -2
  341. package/package.json +1 -1
  342. package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +0 -4
  343. package/dist/bits/utilities/presence-layer/use-presence.svelte.js +0 -97
  344. package/dist/internal/box.svelte.d.ts +0 -21
  345. package/dist/internal/box.svelte.js +0 -26
  346. package/dist/internal/create-event-hook.svelte.d.ts +0 -18
  347. package/dist/internal/create-event-hook.svelte.js +0 -29
  348. package/dist/internal/create-shared-hook.svelte.d.ts +0 -2
  349. package/dist/internal/create-shared-hook.svelte.js +0 -27
  350. package/dist/internal/sleep.d.ts +0 -1
  351. package/dist/internal/sleep.js +0 -3
  352. package/dist/internal/use-after-animations.svelte.d.ts +0 -5
  353. package/dist/internal/use-after-animations.svelte.js +0 -27
  354. package/dist/internal/use-body-scroll-lock.svelte.d.ts +0 -6
  355. package/dist/internal/use-body-scroll-lock.svelte.js +0 -106
  356. package/dist/internal/use-data-typeahead.svelte.d.ts +0 -15
  357. package/dist/internal/use-data-typeahead.svelte.js +0 -34
  358. package/dist/internal/use-dom-typeahead.svelte.d.ts +0 -13
  359. package/dist/internal/use-dom-typeahead.svelte.js +0 -32
  360. package/dist/internal/use-form-control.svelte.d.ts +0 -4
  361. package/dist/internal/use-form-control.svelte.js +0 -16
  362. package/dist/internal/use-resize-observer.svelte.d.ts +0 -2
  363. package/dist/internal/use-resize-observer.svelte.js +0 -17
  364. package/dist/internal/use-state-machine.svelte.d.ts +0 -24
  365. package/dist/internal/use-state-machine.svelte.js +0 -28
  366. package/dist/internal/use-timeout-fn.svelte.d.ts +0 -25
  367. package/dist/internal/use-timeout-fn.svelte.js +0 -39
@@ -1,14 +1,16 @@
1
- import { DOMContext } from "svelte-toolbelt";
2
- import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
3
- import type { BitsFocusEvent, BitsPointerEvent, WithRefProps } from "../../internal/types.js";
4
- type LinkPreviewRootStateProps = WritableBoxedValues<{
1
+ import { DOMContext, type ReadableBoxedValues, type WritableBoxedValues } from "svelte-toolbelt";
2
+ import type { BitsFocusEvent, BitsPointerEvent, OnChangeFn, WithRefOpts } from "../../internal/types.js";
3
+ interface LinkPreviewRootStateOpts extends WritableBoxedValues<{
5
4
  open: boolean;
6
- }> & ReadableBoxedValues<{
5
+ }>, ReadableBoxedValues<{
7
6
  openDelay: number;
8
7
  closeDelay: number;
9
- }>;
10
- declare class LinkPreviewRootState {
11
- readonly opts: LinkPreviewRootStateProps;
8
+ onOpenChangeComplete: OnChangeFn<boolean>;
9
+ }> {
10
+ }
11
+ export declare class LinkPreviewRootState {
12
+ static create(opts: LinkPreviewRootStateOpts): LinkPreviewRootState;
13
+ readonly opts: LinkPreviewRootStateOpts;
12
14
  hasSelection: boolean;
13
15
  isPointerDownOnContent: boolean;
14
16
  containsSelection: boolean;
@@ -18,22 +20,24 @@ declare class LinkPreviewRootState {
18
20
  triggerNode: HTMLElement | null;
19
21
  isOpening: boolean;
20
22
  domContext: DOMContext;
21
- constructor(opts: LinkPreviewRootStateProps);
23
+ constructor(opts: LinkPreviewRootStateOpts);
22
24
  clearTimeout(): void;
23
25
  handleOpen(): void;
24
26
  immediateClose(): void;
25
27
  handleClose(): void;
26
28
  }
27
- type LinkPreviewTriggerStateProps = WithRefProps;
28
- declare class LinkPreviewTriggerState {
29
- readonly opts: LinkPreviewTriggerStateProps;
29
+ interface LinkPreviewTriggerStateOpts extends WithRefOpts {
30
+ }
31
+ export declare class LinkPreviewTriggerState {
32
+ static create(opts: LinkPreviewTriggerStateOpts): LinkPreviewTriggerState;
33
+ readonly opts: LinkPreviewTriggerStateOpts;
30
34
  readonly root: LinkPreviewRootState;
31
- constructor(opts: LinkPreviewTriggerStateProps, root: LinkPreviewRootState);
35
+ constructor(opts: LinkPreviewTriggerStateOpts, root: LinkPreviewRootState);
32
36
  onpointerenter(e: BitsPointerEvent): void;
33
37
  onpointerleave(e: BitsPointerEvent): void;
34
38
  onfocus(e: BitsFocusEvent): void;
35
39
  onblur(_: BitsFocusEvent): void;
36
- props: {
40
+ readonly props: {
37
41
  readonly id: string;
38
42
  readonly "aria-haspopup": "dialog";
39
43
  readonly "aria-expanded": "true" | "false";
@@ -46,14 +50,16 @@ declare class LinkPreviewTriggerState {
46
50
  readonly onpointerleave: (e: BitsPointerEvent) => void;
47
51
  };
48
52
  }
49
- type LinkPreviewContentStateProps = WithRefProps & ReadableBoxedValues<{
53
+ interface LinkPreviewContentStateOpts extends WithRefOpts, ReadableBoxedValues<{
50
54
  onInteractOutside: (e: PointerEvent) => void;
51
55
  onEscapeKeydown: (e: KeyboardEvent) => void;
52
- }>;
53
- declare class LinkPreviewContentState {
54
- readonly opts: LinkPreviewContentStateProps;
56
+ }> {
57
+ }
58
+ export declare class LinkPreviewContentState {
59
+ static create(opts: LinkPreviewContentStateOpts): LinkPreviewContentState;
60
+ readonly opts: LinkPreviewContentStateOpts;
55
61
  readonly root: LinkPreviewRootState;
56
- constructor(opts: LinkPreviewContentStateProps, root: LinkPreviewRootState);
62
+ constructor(opts: LinkPreviewContentStateOpts, root: LinkPreviewRootState);
57
63
  onpointerdown(e: BitsPointerEvent): void;
58
64
  onpointerenter(e: BitsPointerEvent): void;
59
65
  onfocusout(e: BitsFocusEvent): void;
@@ -61,10 +67,10 @@ declare class LinkPreviewContentState {
61
67
  onEscapeKeydown: (e: KeyboardEvent) => void;
62
68
  onOpenAutoFocus: (e: Event) => void;
63
69
  onCloseAutoFocus: (e: Event) => void;
64
- snippetProps: {
70
+ readonly snippetProps: {
65
71
  open: boolean;
66
72
  };
67
- props: {
73
+ readonly props: {
68
74
  readonly id: string;
69
75
  readonly tabindex: -1;
70
76
  readonly "data-state": "open" | "closed";
@@ -72,14 +78,11 @@ declare class LinkPreviewContentState {
72
78
  readonly onpointerenter: (e: BitsPointerEvent) => void;
73
79
  readonly onfocusout: (e: BitsFocusEvent) => void;
74
80
  };
75
- popperProps: {
81
+ readonly popperProps: {
76
82
  onInteractOutside: (e: PointerEvent) => void;
77
83
  onEscapeKeydown: (e: KeyboardEvent) => void;
78
84
  onOpenAutoFocus: (e: Event) => void;
79
85
  onCloseAutoFocus: (e: Event) => void;
80
86
  };
81
87
  }
82
- export declare function useLinkPreviewRoot(props: LinkPreviewRootStateProps): LinkPreviewRootState;
83
- export declare function useLinkPreviewTrigger(props: LinkPreviewTriggerStateProps): LinkPreviewTriggerState;
84
- export declare function useLinkPreviewContent(props: LinkPreviewContentStateProps): LinkPreviewContentState;
85
88
  export {};
@@ -1,15 +1,20 @@
1
- import { afterSleep, onDestroyEffect, attachRef, DOMContext } from "svelte-toolbelt";
1
+ import { afterSleep, onDestroyEffect, attachRef, DOMContext, box, } from "svelte-toolbelt";
2
2
  import { Context, watch } from "runed";
3
3
  import { on } from "svelte/events";
4
4
  import { createBitsAttrs, getAriaExpanded, getDataOpenClosed } from "../../internal/attrs.js";
5
5
  import { isElement, isFocusVisible, isTouch } from "../../internal/is.js";
6
6
  import { getTabbableCandidates } from "../../internal/focus.js";
7
- import { useGraceArea } from "../../internal/use-grace-area.svelte.js";
7
+ import { GraceArea } from "../../internal/grace-area.svelte.js";
8
+ import { OpenChangeComplete } from "../../internal/open-change-complete.js";
8
9
  const linkPreviewAttrs = createBitsAttrs({
9
10
  component: "link-preview",
10
11
  parts: ["content", "trigger"],
11
12
  });
12
- class LinkPreviewRootState {
13
+ const LinkPreviewRootContext = new Context("LinkPreview.Root");
14
+ export class LinkPreviewRootState {
15
+ static create(opts) {
16
+ return LinkPreviewRootContext.set(new LinkPreviewRootState(opts));
17
+ }
13
18
  opts;
14
19
  hasSelection = $state(false);
15
20
  isPointerDownOnContent = $state(false);
@@ -22,6 +27,13 @@ class LinkPreviewRootState {
22
27
  domContext = new DOMContext(() => null);
23
28
  constructor(opts) {
24
29
  this.opts = opts;
30
+ new OpenChangeComplete({
31
+ ref: box.with(() => this.contentNode),
32
+ open: this.opts.open,
33
+ onComplete: () => {
34
+ this.opts.onOpenChangeComplete.current(this.opts.open.current);
35
+ },
36
+ });
25
37
  watch(() => this.opts.open.current, (isOpen) => {
26
38
  if (!isOpen) {
27
39
  this.hasSelection = false;
@@ -89,7 +101,10 @@ class LinkPreviewRootState {
89
101
  }
90
102
  }
91
103
  }
92
- class LinkPreviewTriggerState {
104
+ export class LinkPreviewTriggerState {
105
+ static create(opts) {
106
+ return new LinkPreviewTriggerState(opts, LinkPreviewRootContext.get());
107
+ }
93
108
  opts;
94
109
  root;
95
110
  constructor(opts, root) {
@@ -136,7 +151,10 @@ class LinkPreviewTriggerState {
136
151
  ...attachRef(this.opts.ref, (v) => (this.root.triggerNode = v)),
137
152
  }));
138
153
  }
139
- class LinkPreviewContentState {
154
+ export class LinkPreviewContentState {
155
+ static create(opts) {
156
+ return new LinkPreviewContentState(opts, LinkPreviewRootContext.get());
157
+ }
140
158
  opts;
141
159
  root;
142
160
  constructor(opts, root) {
@@ -146,7 +164,7 @@ class LinkPreviewContentState {
146
164
  this.onpointerdown = this.onpointerdown.bind(this);
147
165
  this.onpointerenter = this.onpointerenter.bind(this);
148
166
  this.onfocusout = this.onfocusout.bind(this);
149
- useGraceArea({
167
+ new GraceArea({
150
168
  triggerNode: () => this.root.triggerNode,
151
169
  contentNode: () => this.opts.ref.current,
152
170
  enabled: () => this.root.opts.open.current,
@@ -212,13 +230,3 @@ class LinkPreviewContentState {
212
230
  onCloseAutoFocus: this.onCloseAutoFocus,
213
231
  };
214
232
  }
215
- const LinkPreviewRootContext = new Context("LinkPreview.Root");
216
- export function useLinkPreviewRoot(props) {
217
- return LinkPreviewRootContext.set(new LinkPreviewRootState(props));
218
- }
219
- export function useLinkPreviewTrigger(props) {
220
- return new LinkPreviewTriggerState(props, LinkPreviewRootContext.get());
221
- }
222
- export function useLinkPreviewContent(props) {
223
- return new LinkPreviewContentState(props, LinkPreviewRootContext.get());
224
- }
@@ -17,6 +17,10 @@ export type LinkPreviewRootPropsWithoutHTML = WithChildren<{
17
17
  * A callback that will be called when the link preview is opened or closed.
18
18
  */
19
19
  onOpenChange?: OnChangeFn<boolean>;
20
+ /**
21
+ * A callback that will be called when the link preview finishes opening/closing animations.
22
+ */
23
+ onOpenChangeComplete?: OnChangeFn<boolean>;
20
24
  /**
21
25
  * The delay in milliseconds before the preview opens.
22
26
  *
@@ -1,12 +1,12 @@
1
1
  <script lang="ts">
2
2
  import { mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuArrowProps } from "../types.js";
4
- import { useMenuArrow } from "../menu.svelte.js";
4
+ import { MenuArrowState } from "../menu.svelte.js";
5
5
  import FloatingLayerArrow from "../../utilities/floating-layer/components/floating-layer-arrow.svelte";
6
6
 
7
7
  let { ref = $bindable(null), ...restProps }: MenuArrowProps = $props();
8
8
 
9
- const arrowState = useMenuArrow();
9
+ const arrowState = MenuArrowState.create();
10
10
 
11
11
  const mergedProps = $derived(mergeProps(restProps, arrowState.props));
12
12
  </script>
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuCheckboxGroupProps } from "../types.js";
4
- import { useMenuCheckboxGroup } from "../menu.svelte.js";
4
+ import { MenuCheckboxGroupState } from "../menu.svelte.js";
5
5
  import { noop } from "../../../internal/noop.js";
6
6
  import { createId } from "../../../internal/create-id.js";
7
7
 
@@ -17,7 +17,7 @@
17
17
  ...restProps
18
18
  }: MenuCheckboxGroupProps = $props();
19
19
 
20
- const checkboxGroupState = useMenuCheckboxGroup({
20
+ const checkboxGroupState = MenuCheckboxGroupState.create({
21
21
  value: box.with(
22
22
  () => $state.snapshot(value),
23
23
  (v) => {
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuCheckboxItemProps } from "../types.js";
4
- import { MenuCheckboxGroupContext, useMenuCheckboxItem } from "../menu.svelte.js";
4
+ import { MenuCheckboxGroupContext, MenuCheckboxItemState } from "../menu.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
  import { watch } from "runed";
@@ -47,7 +47,7 @@
47
47
  }
48
48
  );
49
49
 
50
- const checkboxItemState = useMenuCheckboxItem(
50
+ const checkboxItemState = MenuCheckboxItemState.create(
51
51
  {
52
52
  checked: box.with(
53
53
  () => checked,
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuContentStaticProps } from "../types.js";
4
- import { useMenuContent } from "../menu.svelte.js";
4
+ import { MenuContentState } from "../menu.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
  import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
@@ -23,7 +23,7 @@
23
23
  ...restProps
24
24
  }: MenuContentStaticProps = $props();
25
25
 
26
- const contentState = useMenuContent({
26
+ const contentState = MenuContentState.create({
27
27
  id: box.with(() => id),
28
28
  loop: box.with(() => loop),
29
29
  ref: box.with(
@@ -87,7 +87,7 @@
87
87
  {...mergedProps}
88
88
  {...contentState.popperProps}
89
89
  ref={contentState.opts.ref}
90
- present={contentState.parentMenu.opts.open.current}
90
+ open={contentState.parentMenu.opts.open.current}
91
91
  onInteractOutside={handleInteractOutside}
92
92
  onEscapeKeydown={handleEscapeKeydown}
93
93
  trapFocus
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuContentProps } from "../types.js";
4
- import { useMenuContent } from "../menu.svelte.js";
4
+ import { MenuContentState } from "../menu.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
  import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
@@ -23,7 +23,7 @@
23
23
  ...restProps
24
24
  }: MenuContentProps = $props();
25
25
 
26
- const contentState = useMenuContent({
26
+ const contentState = MenuContentState.create({
27
27
  id: box.with(() => id),
28
28
  loop: box.with(() => loop),
29
29
  ref: box.with(
@@ -88,7 +88,7 @@
88
88
  {...mergedProps}
89
89
  {...contentState.popperProps}
90
90
  ref={contentState.opts.ref}
91
- present={contentState.parentMenu.opts.open.current}
91
+ open={contentState.parentMenu.opts.open.current}
92
92
  onInteractOutside={handleInteractOutside}
93
93
  onEscapeKeydown={handleEscapeKeydown}
94
94
  trapFocus
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuGroupHeadingProps } from "../types.js";
4
- import { useMenuGroupHeading } from "../menu.svelte.js";
4
+ import { MenuGroupHeadingState } from "../menu.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
 
7
7
  const uid = $props.id();
@@ -14,7 +14,7 @@
14
14
  ...restProps
15
15
  }: MenuGroupHeadingProps = $props();
16
16
 
17
- const groupHeadingState = useMenuGroupHeading({
17
+ const groupHeadingState = MenuGroupHeadingState.create({
18
18
  id: box.with(() => id),
19
19
  ref: box.with(
20
20
  () => ref,
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuGroupProps } from "../types.js";
4
- import { useMenuGroup } from "../menu.svelte.js";
4
+ import { MenuGroupState } from "../menu.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
 
7
7
  const uid = $props.id();
@@ -14,7 +14,7 @@
14
14
  ...restProps
15
15
  }: MenuGroupProps = $props();
16
16
 
17
- const groupState = useMenuGroup({
17
+ const groupState = MenuGroupState.create({
18
18
  id: box.with(() => id),
19
19
  ref: box.with(
20
20
  () => ref,
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuItemProps } from "../types.js";
4
- import { useMenuItem } from "../menu.svelte.js";
4
+ import { MenuItemState } from "../menu.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
 
@@ -18,7 +18,7 @@
18
18
  ...restProps
19
19
  }: MenuItemProps = $props();
20
20
 
21
- const itemState = useMenuItem({
21
+ const itemState = MenuItemState.create({
22
22
  id: box.with(() => id),
23
23
  disabled: box.with(() => disabled),
24
24
  onSelect: box.with(() => onSelect),
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuRadioGroupProps } from "../types.js";
4
- import { useMenuRadioGroup } from "../menu.svelte.js";
4
+ import { MenuRadioGroupState } from "../menu.svelte.js";
5
5
  import { noop } from "../../../internal/noop.js";
6
6
  import { createId } from "../../../internal/create-id.js";
7
7
 
@@ -17,7 +17,7 @@
17
17
  ...restProps
18
18
  }: MenuRadioGroupProps = $props();
19
19
 
20
- const radioGroupState = useMenuRadioGroup({
20
+ const radioGroupState = MenuRadioGroupState.create({
21
21
  value: box.with(
22
22
  () => value,
23
23
  (v) => {
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuRadioItemProps } from "../types.js";
4
- import { useMenuRadioItem } from "../menu.svelte.js";
4
+ import { MenuRadioItemState } from "../menu.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
 
@@ -19,7 +19,7 @@
19
19
  ...restProps
20
20
  }: MenuRadioItemProps = $props();
21
21
 
22
- const radioItemState = useMenuRadioItem({
22
+ const radioItemState = MenuRadioItemState.create({
23
23
  value: box.with(() => value),
24
24
  id: box.with(() => id),
25
25
  disabled: box.with(() => disabled),
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuSeparatorProps } from "../types.js";
4
- import { useMenuSeparator } from "../menu.svelte.js";
4
+ import { MenuSeparatorState } from "../menu.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
 
7
7
  const uid = $props.id();
@@ -14,7 +14,7 @@
14
14
  ...restProps
15
15
  }: MenuSeparatorProps = $props();
16
16
 
17
- const separatorState = useMenuSeparator({
17
+ const separatorState = MenuSeparatorState.create({
18
18
  id: box.with(() => id),
19
19
  ref: box.with(
20
20
  () => ref,
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { afterTick, box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuSubContentStaticProps } from "../types.js";
4
- import { useMenuContent } from "../menu.svelte.js";
4
+ import { MenuContentState } from "../menu.svelte.js";
5
5
  import { SUB_CLOSE_KEYS } from "../utils.js";
6
6
  import { createId } from "../../../internal/create-id.js";
7
7
  import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
@@ -30,7 +30,7 @@
30
30
  ...restProps
31
31
  }: MenuSubContentStaticProps = $props();
32
32
 
33
- const subContentState = useMenuContent({
33
+ const subContentState = MenuContentState.create({
34
34
  id: box.with(() => id),
35
35
  loop: box.with(() => loop),
36
36
  ref: box.with(
@@ -142,7 +142,7 @@
142
142
  {escapeKeydownBehavior}
143
143
  onCloseAutoFocus={handleCloseAutoFocus}
144
144
  onOpenAutoFocus={handleOpenAutoFocus}
145
- present={subContentState.parentMenu.opts.open.current}
145
+ open={subContentState.parentMenu.opts.open.current}
146
146
  onInteractOutside={handleInteractOutside}
147
147
  onEscapeKeydown={handleEscapeKeydown}
148
148
  onFocusOutside={handleOnFocusOutside}
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuSubContentProps } from "../types.js";
4
- import { MenuOpenEvent, useMenuContent } from "../menu.svelte.js";
4
+ import { MenuOpenEvent, MenuContentState } from "../menu.svelte.js";
5
5
  import { SUB_CLOSE_KEYS } from "../utils.js";
6
6
  import { createId } from "../../../internal/create-id.js";
7
7
  import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
@@ -31,7 +31,7 @@
31
31
  ...restProps
32
32
  }: MenuSubContentProps = $props();
33
33
 
34
- const subContentState = useMenuContent({
34
+ const subContentState = MenuContentState.create({
35
35
  id: box.with(() => id),
36
36
  loop: box.with(() => loop),
37
37
  ref: box.with(
@@ -149,7 +149,7 @@
149
149
  {escapeKeydownBehavior}
150
150
  onCloseAutoFocus={handleCloseAutoFocus}
151
151
  onOpenAutoFocus={handleOpenAutoFocus}
152
- present={subContentState.parentMenu.opts.open.current}
152
+ open={subContentState.parentMenu.opts.open.current}
153
153
  onInteractOutside={handleInteractOutside}
154
154
  onEscapeKeydown={handleEscapeKeydown}
155
155
  onFocusOutside={handleOnFocusOutside}
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuSubTriggerProps } from "../types.js";
4
- import { useMenuSubTrigger } from "../menu.svelte.js";
4
+ import { MenuSubTriggerState } from "../menu.svelte.js";
5
5
  import FloatingLayerAnchor from "../../utilities/floating-layer/components/floating-layer-anchor.svelte";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
  import { createId } from "../../../internal/create-id.js";
@@ -18,7 +18,7 @@
18
18
  ...restProps
19
19
  }: MenuSubTriggerProps = $props();
20
20
 
21
- const subTriggerState = useMenuSubTrigger({
21
+ const subTriggerState = MenuSubTriggerState.create({
22
22
  disabled: box.with(() => disabled),
23
23
  onSelect: box.with(() => onSelect),
24
24
  id: box.with(() => id),
@@ -1,13 +1,18 @@
1
1
  <script lang="ts">
2
2
  import { box } from "svelte-toolbelt";
3
3
  import type { MenuSubProps } from "../types.js";
4
- import { useMenuSubmenu } from "../menu.svelte.js";
4
+ import { MenuSubmenuState } from "../menu.svelte.js";
5
5
  import FloatingLayer from "../../utilities/floating-layer/components/floating-layer.svelte";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
 
8
- let { open = $bindable(false), onOpenChange = noop, children }: MenuSubProps = $props();
8
+ let {
9
+ open = $bindable(false),
10
+ onOpenChange = noop,
11
+ onOpenChangeComplete = noop,
12
+ children,
13
+ }: MenuSubProps = $props();
9
14
 
10
- useMenuSubmenu({
15
+ MenuSubmenuState.create({
11
16
  open: box.with(
12
17
  () => open,
13
18
  (v) => {
@@ -15,6 +20,7 @@
15
20
  onOpenChange?.(v);
16
21
  }
17
22
  ),
23
+ onOpenChangeComplete: box.with(() => onOpenChangeComplete),
18
24
  });
19
25
  </script>
20
26
 
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuTriggerProps } from "../types.js";
4
- import { useMenuDropdownTrigger } from "../menu.svelte.js";
4
+ import { DropdownMenuTriggerState } from "../menu.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import FloatingLayerAnchor from "../../utilities/floating-layer/components/floating-layer-anchor.svelte";
7
7
 
@@ -17,7 +17,7 @@
17
17
  ...restProps
18
18
  }: MenuTriggerProps = $props();
19
19
 
20
- const triggerState = useMenuDropdownTrigger({
20
+ const triggerState = DropdownMenuTriggerState.create({
21
21
  id: box.with(() => id),
22
22
  disabled: box.with(() => disabled ?? false),
23
23
  ref: box.with(
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box } from "svelte-toolbelt";
3
3
  import type { MenuRootProps } from "../types.js";
4
- import { useMenuMenu, useMenuRoot } from "../menu.svelte.js";
4
+ import { MenuMenuState, MenuRootState } from "../menu.svelte.js";
5
5
  import { noop } from "../../../internal/noop.js";
6
6
  import FloatingLayer from "../../utilities/floating-layer/components/floating-layer.svelte";
7
7
 
@@ -9,13 +9,14 @@
9
9
  open = $bindable(false),
10
10
  dir = "ltr",
11
11
  onOpenChange = noop,
12
+ onOpenChangeComplete = noop,
12
13
  _internal_variant: variant = "dropdown-menu",
13
14
  children,
14
15
  }: MenuRootProps & {
15
16
  _internal_variant?: "context-menu" | "dropdown-menu" | "menubar";
16
17
  } = $props();
17
18
 
18
- const root = useMenuRoot({
19
+ const root = MenuRootState.create({
19
20
  variant: box.with(() => variant),
20
21
  dir: box.with(() => dir),
21
22
  onClose: () => {
@@ -24,15 +25,19 @@
24
25
  },
25
26
  });
26
27
 
27
- useMenuMenu(root, {
28
- open: box.with(
29
- () => open,
30
- (v) => {
31
- open = v;
32
- onOpenChange(v);
33
- }
34
- ),
35
- });
28
+ MenuMenuState.create(
29
+ {
30
+ open: box.with(
31
+ () => open,
32
+ (v) => {
33
+ open = v;
34
+ onOpenChange(v);
35
+ }
36
+ ),
37
+ onOpenChangeComplete: box.with(() => onOpenChangeComplete),
38
+ },
39
+ root
40
+ );
36
41
  </script>
37
42
 
38
43
  <FloatingLayer>