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
@@ -3,17 +3,18 @@ import { Context, watch } from "runed";
3
3
  import { FIRST_LAST_KEYS, LAST_KEYS, SELECTION_KEYS, SUB_OPEN_KEYS, getCheckedState, isMouseEvent, } from "./utils.js";
4
4
  import { focusFirst } from "../../internal/focus.js";
5
5
  import { CustomEventDispatcher } from "../../internal/events.js";
6
- import { useDOMTypeahead } from "../../internal/use-dom-typeahead.svelte.js";
7
6
  import { isElement, isElementOrSVGElement, isHTMLElement } from "../../internal/is.js";
8
- import { useRovingFocus } from "../../internal/use-roving-focus.svelte.js";
9
7
  import { kbd } from "../../internal/kbd.js";
10
8
  import { createBitsAttrs, getAriaChecked, getAriaDisabled, getAriaExpanded, getAriaOrientation, getDataDisabled, getDataOpenClosed, } from "../../internal/attrs.js";
11
9
  import { IsUsingKeyboard } from "../../index.js";
12
- import { useGraceArea } from "../../internal/use-grace-area.svelte.js";
13
10
  import { getTabbableFrom } from "../../internal/tabbable.js";
14
11
  import { FocusScopeContext } from "../utilities/focus-scope/use-focus-scope.svelte.js";
15
12
  import { isTabbable } from "tabbable";
16
13
  import { untrack } from "svelte";
14
+ import { DOMTypeahead } from "../../internal/dom-typeahead.svelte.js";
15
+ import { RovingFocusGroup } from "../../internal/roving-focus-group.js";
16
+ import { GraceArea } from "../../internal/grace-area.svelte.js";
17
+ import { OpenChangeComplete } from "../../internal/open-change-complete.js";
17
18
  export const CONTEXT_MENU_TRIGGER_ATTR = "data-context-menu-trigger";
18
19
  const MenuRootContext = new Context("Menu.Root");
19
20
  const MenuMenuContext = new Context("Menu.Root | Menu.Sub");
@@ -43,7 +44,16 @@ export const menuAttrs = createBitsAttrs({
43
44
  "arrow",
44
45
  ],
45
46
  });
46
- class MenuRootState {
47
+ export class MenuRootState {
48
+ static create(opts) {
49
+ const root = new MenuRootState(opts);
50
+ FocusScopeContext.set({
51
+ get ignoreCloseAutoFocus() {
52
+ return root.ignoreCloseAutoFocus;
53
+ },
54
+ });
55
+ return MenuRootContext.set(root);
56
+ }
47
57
  opts;
48
58
  isUsingKeyboard = new IsUsingKeyboard();
49
59
  ignoreCloseAutoFocus = $state(false);
@@ -55,7 +65,10 @@ class MenuRootState {
55
65
  return menuAttrs.getAttr(part, this.opts.variant.current);
56
66
  };
57
67
  }
58
- class MenuMenuState {
68
+ export class MenuMenuState {
69
+ static create(opts, root) {
70
+ return MenuMenuContext.set(new MenuMenuState(opts, root, null));
71
+ }
59
72
  opts;
60
73
  root;
61
74
  parentMenu;
@@ -66,6 +79,13 @@ class MenuMenuState {
66
79
  this.opts = opts;
67
80
  this.root = root;
68
81
  this.parentMenu = parentMenu;
82
+ new OpenChangeComplete({
83
+ ref: box.with(() => this.contentNode),
84
+ open: this.opts.open,
85
+ onComplete: () => {
86
+ this.opts.onOpenChangeComplete.current(this.opts.open.current);
87
+ },
88
+ });
69
89
  if (parentMenu) {
70
90
  watch(() => parentMenu.opts.open.current, () => {
71
91
  if (parentMenu.opts.open.current)
@@ -84,16 +104,19 @@ class MenuMenuState {
84
104
  this.opts.open.current = false;
85
105
  }
86
106
  }
87
- class MenuContentState {
107
+ export class MenuContentState {
108
+ static create(opts) {
109
+ return MenuContentContext.set(new MenuContentState(opts, MenuMenuContext.get()));
110
+ }
88
111
  opts;
89
112
  parentMenu;
113
+ rovingFocusGroup;
114
+ domContext;
90
115
  search = $state("");
91
116
  #timer = 0;
92
117
  #handleTypeaheadSearch;
93
- rovingFocusGroup;
94
118
  mounted = $state(false);
95
119
  #isSub;
96
- domContext;
97
120
  constructor(opts, parentMenu) {
98
121
  this.opts = opts;
99
122
  this.parentMenu = parentMenu;
@@ -104,7 +127,7 @@ class MenuContentState {
104
127
  this.onblur = this.onblur.bind(this);
105
128
  this.onfocus = this.onfocus.bind(this);
106
129
  this.handleInteractOutside = this.handleInteractOutside.bind(this);
107
- useGraceArea({
130
+ new GraceArea({
108
131
  contentNode: () => this.parentMenu.contentNode,
109
132
  triggerNode: () => this.parentMenu.triggerNode,
110
133
  enabled: () => this.parentMenu.opts.open.current &&
@@ -116,11 +139,11 @@ class MenuContentState {
116
139
  this.parentMenu.root.isPointerInTransit = value;
117
140
  },
118
141
  });
119
- this.#handleTypeaheadSearch = useDOMTypeahead({
142
+ this.#handleTypeaheadSearch = new DOMTypeahead({
120
143
  getActiveElement: () => this.domContext.getActiveElement(),
121
144
  getWindow: () => this.domContext.getWindow(),
122
145
  }).handleTypeaheadSearch;
123
- this.rovingFocusGroup = useRovingFocus({
146
+ this.rovingFocusGroup = new RovingFocusGroup({
124
147
  rootNode: box.with(() => this.parentMenu.contentNode),
125
148
  candidateAttr: this.parentMenu.root.getBitsAttr("item"),
126
149
  loop: this.opts.loop,
@@ -383,11 +406,15 @@ class MenuItemSharedState {
383
406
  ...attachRef(this.opts.ref),
384
407
  }));
385
408
  }
386
- class MenuItemState {
409
+ export class MenuItemState {
410
+ static create(opts) {
411
+ const item = new MenuItemSharedState(opts, MenuContentContext.get());
412
+ return new MenuItemState(opts, item);
413
+ }
387
414
  opts;
388
415
  item;
389
- #isPointerDown = false;
390
416
  root;
417
+ #isPointerDown = false;
391
418
  constructor(opts, item) {
392
419
  this.opts = opts;
393
420
  this.item = item;
@@ -453,7 +480,13 @@ class MenuItemState {
453
480
  onkeydown: this.onkeydown,
454
481
  }));
455
482
  }
456
- class MenuSubTriggerState {
483
+ export class MenuSubTriggerState {
484
+ static create(opts) {
485
+ const content = MenuContentContext.get();
486
+ const item = new MenuItemSharedState(opts, content);
487
+ const submenu = MenuMenuContext.get();
488
+ return new MenuSubTriggerState(opts, item, content, submenu);
489
+ }
457
490
  opts;
458
491
  item;
459
492
  content;
@@ -546,7 +579,11 @@ class MenuSubTriggerState {
546
579
  ...attachRef(this.opts.ref, (v) => (this.submenu.triggerNode = v)),
547
580
  }, this.item.props));
548
581
  }
549
- class MenuCheckboxItemState {
582
+ export class MenuCheckboxItemState {
583
+ static create(opts, checkboxGroup) {
584
+ const item = new MenuItemState(opts, new MenuItemSharedState(opts, MenuContentContext.get()));
585
+ return new MenuCheckboxItemState(opts, item, checkboxGroup);
586
+ }
550
587
  opts;
551
588
  item;
552
589
  group;
@@ -591,7 +628,10 @@ class MenuCheckboxItemState {
591
628
  [this.item.root.getBitsAttr("checkbox-item")]: "",
592
629
  }));
593
630
  }
594
- class MenuGroupState {
631
+ export class MenuGroupState {
632
+ static create(opts) {
633
+ return MenuGroupContext.set(new MenuGroupState(opts, MenuRootContext.get()));
634
+ }
595
635
  opts;
596
636
  root;
597
637
  groupHeadingId = $state(undefined);
@@ -607,7 +647,17 @@ class MenuGroupState {
607
647
  ...attachRef(this.opts.ref),
608
648
  }));
609
649
  }
610
- class MenuGroupHeadingState {
650
+ export class MenuGroupHeadingState {
651
+ static create(opts) {
652
+ // Try to get checkbox group first, then radio group, then regular group
653
+ const checkboxGroup = MenuCheckboxGroupContext.getOr(null);
654
+ if (checkboxGroup)
655
+ return new MenuGroupHeadingState(opts, checkboxGroup);
656
+ const radioGroup = MenuRadioGroupContext.getOr(null);
657
+ if (radioGroup)
658
+ return new MenuGroupHeadingState(opts, radioGroup);
659
+ return new MenuGroupHeadingState(opts, MenuGroupContext.get());
660
+ }
611
661
  opts;
612
662
  group;
613
663
  constructor(opts, group) {
@@ -621,7 +671,10 @@ class MenuGroupHeadingState {
621
671
  ...attachRef(this.opts.ref, (v) => (this.group.groupHeadingId = v?.id)),
622
672
  }));
623
673
  }
624
- class MenuSeparatorState {
674
+ export class MenuSeparatorState {
675
+ static create(opts) {
676
+ return new MenuSeparatorState(opts, MenuRootContext.get());
677
+ }
625
678
  opts;
626
679
  root;
627
680
  constructor(opts, root) {
@@ -635,7 +688,10 @@ class MenuSeparatorState {
635
688
  ...attachRef(this.opts.ref),
636
689
  }));
637
690
  }
638
- class MenuArrowState {
691
+ export class MenuArrowState {
692
+ static create() {
693
+ return new MenuArrowState(MenuRootContext.get());
694
+ }
639
695
  root;
640
696
  constructor(root) {
641
697
  this.root = root;
@@ -644,7 +700,10 @@ class MenuArrowState {
644
700
  [this.root.getBitsAttr("arrow")]: "",
645
701
  }));
646
702
  }
647
- class MenuRadioGroupState {
703
+ export class MenuRadioGroupState {
704
+ static create(opts) {
705
+ return MenuGroupContext.set(MenuRadioGroupContext.set(new MenuRadioGroupState(opts, MenuContentContext.get())));
706
+ }
648
707
  opts;
649
708
  content;
650
709
  groupHeadingId = $state(null);
@@ -665,7 +724,13 @@ class MenuRadioGroupState {
665
724
  ...attachRef(this.opts.ref),
666
725
  }));
667
726
  }
668
- class MenuRadioItemState {
727
+ export class MenuRadioItemState {
728
+ static create(opts) {
729
+ const radioGroup = MenuRadioGroupContext.get();
730
+ const sharedItem = new MenuItemSharedState(opts, radioGroup.content);
731
+ const item = new MenuItemState(opts, sharedItem);
732
+ return new MenuRadioItemState(opts, item, radioGroup);
733
+ }
669
734
  opts;
670
735
  item;
671
736
  group;
@@ -687,7 +752,10 @@ class MenuRadioItemState {
687
752
  ...attachRef(this.opts.ref),
688
753
  }));
689
754
  }
690
- class DropdownMenuTriggerState {
755
+ export class DropdownMenuTriggerState {
756
+ static create(opts) {
757
+ return new DropdownMenuTriggerState(opts, MenuMenuContext.get());
758
+ }
691
759
  opts;
692
760
  parentMenu;
693
761
  constructor(opts, parentMenu) {
@@ -749,7 +817,10 @@ class DropdownMenuTriggerState {
749
817
  ...attachRef(this.opts.ref, (v) => (this.parentMenu.triggerNode = v)),
750
818
  }));
751
819
  }
752
- class ContextMenuTriggerState {
820
+ export class ContextMenuTriggerState {
821
+ static create(opts) {
822
+ return new ContextMenuTriggerState(opts, MenuMenuContext.get());
823
+ }
753
824
  opts;
754
825
  parentMenu;
755
826
  #point = $state({ x: 0, y: 0 });
@@ -770,8 +841,8 @@ class ContextMenuTriggerState {
770
841
  getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...point }),
771
842
  };
772
843
  });
773
- $effect(() => {
774
- if (this.opts.disabled.current) {
844
+ watch(() => this.opts.disabled.current, (isDisabled) => {
845
+ if (isDisabled) {
775
846
  this.#clearLongPressTimer();
776
847
  }
777
848
  });
@@ -831,11 +902,14 @@ class ContextMenuTriggerState {
831
902
  ...attachRef(this.opts.ref, (v) => (this.parentMenu.triggerNode = v)),
832
903
  }));
833
904
  }
834
- class MenuCheckboxGroupState {
905
+ export class MenuCheckboxGroupState {
906
+ static create(opts) {
907
+ return MenuCheckboxGroupContext.set(new MenuCheckboxGroupState(opts, MenuContentContext.get()));
908
+ }
835
909
  opts;
836
910
  content;
837
- groupHeadingId = $state(null);
838
911
  root;
912
+ groupHeadingId = $state(null);
839
913
  constructor(opts, content) {
840
914
  this.opts = opts;
841
915
  this.content = content;
@@ -868,73 +942,9 @@ class MenuCheckboxGroupState {
868
942
  ...attachRef(this.opts.ref),
869
943
  }));
870
944
  }
871
- export function useMenuRoot(props) {
872
- const root = new MenuRootState(props);
873
- FocusScopeContext.set({
874
- get ignoreCloseAutoFocus() {
875
- return root.ignoreCloseAutoFocus;
876
- },
877
- });
878
- return MenuRootContext.set(root);
879
- }
880
- export function useMenuMenu(root, props) {
881
- return MenuMenuContext.set(new MenuMenuState(props, root, null));
882
- }
883
- export function useMenuSubmenu(props) {
884
- const menu = MenuMenuContext.get();
885
- return MenuMenuContext.set(new MenuMenuState(props, menu.root, menu));
886
- }
887
- export function useMenuSubTrigger(props) {
888
- const content = MenuContentContext.get();
889
- const item = new MenuItemSharedState(props, content);
890
- const submenu = MenuMenuContext.get();
891
- return new MenuSubTriggerState(props, item, content, submenu);
892
- }
893
- export function useMenuDropdownTrigger(props) {
894
- return new DropdownMenuTriggerState(props, MenuMenuContext.get());
895
- }
896
- export function useMenuContextTrigger(props) {
897
- return new ContextMenuTriggerState(props, MenuMenuContext.get());
898
- }
899
- export function useMenuContent(props) {
900
- return MenuContentContext.set(new MenuContentState(props, MenuMenuContext.get()));
901
- }
902
- export function useMenuItem(props) {
903
- const item = new MenuItemSharedState(props, MenuContentContext.get());
904
- return new MenuItemState(props, item);
905
- }
906
- export function useMenuCheckboxItem(props, checkboxGroup) {
907
- const item = new MenuItemState(props, new MenuItemSharedState(props, MenuContentContext.get()));
908
- return new MenuCheckboxItemState(props, item, checkboxGroup);
909
- }
910
- export function useMenuRadioGroup(props) {
911
- return MenuGroupContext.set(MenuRadioGroupContext.set(new MenuRadioGroupState(props, MenuContentContext.get())));
912
- }
913
- export function useMenuRadioItem(props) {
914
- const radioGroup = MenuRadioGroupContext.get();
915
- const sharedItem = new MenuItemSharedState(props, radioGroup.content);
916
- const item = new MenuItemState(props, sharedItem);
917
- return new MenuRadioItemState(props, item, radioGroup);
918
- }
919
- export function useMenuGroup(props) {
920
- return MenuGroupContext.set(new MenuGroupState(props, MenuRootContext.get()));
921
- }
922
- export function useMenuGroupHeading(props) {
923
- // Try to get checkbox group first, then radio group, then regular group
924
- const checkboxGroup = MenuCheckboxGroupContext.getOr(null);
925
- if (checkboxGroup)
926
- return new MenuGroupHeadingState(props, checkboxGroup);
927
- const radioGroup = MenuRadioGroupContext.getOr(null);
928
- if (radioGroup)
929
- return new MenuGroupHeadingState(props, radioGroup);
930
- return new MenuGroupHeadingState(props, MenuGroupContext.get());
931
- }
932
- export function useMenuSeparator(props) {
933
- return new MenuSeparatorState(props, MenuRootContext.get());
934
- }
935
- export function useMenuArrow() {
936
- return new MenuArrowState(MenuRootContext.get());
937
- }
938
- export function useMenuCheckboxGroup(props) {
939
- return MenuCheckboxGroupContext.set(new MenuCheckboxGroupState(props, MenuContentContext.get()));
945
+ export class MenuSubmenuState {
946
+ static create(opts) {
947
+ const menu = MenuMenuContext.get();
948
+ return MenuMenuContext.set(new MenuMenuState(opts, menu.root, menu));
949
+ }
940
950
  }
@@ -15,6 +15,10 @@ export type MenuRootPropsWithoutHTML = WithChildren<{
15
15
  * A callback that is called when the menu is opened or closed.
16
16
  */
17
17
  onOpenChange?: OnChangeFn<boolean>;
18
+ /**
19
+ * A callback that is called when the menu is opened or closed.
20
+ */
21
+ onOpenChangeComplete?: OnChangeFn<boolean>;
18
22
  /**
19
23
  * The direction of the site.
20
24
  *
@@ -135,6 +139,10 @@ export type MenuSubPropsWithoutHTML = WithChildren<{
135
139
  * A callback that is called when the menu is opened or closed.
136
140
  */
137
141
  onOpenChange?: OnChangeFn<boolean>;
142
+ /**
143
+ * A callback that is called when the menu finishes opening/closing animations.
144
+ */
145
+ onOpenChangeComplete?: OnChangeFn<boolean>;
138
146
  }>;
139
147
  export type MenuSubProps = MenuSubPropsWithoutHTML;
140
148
  export type MenuSubContentPropsWithoutHTML = Expand<WithChildNoChildrenSnippetProps<Omit<PopperLayerProps, "content" | "preventScroll"> & _SharedMenuContentProps, FloatingContentSnippetProps>>;
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenubarContentStaticProps } from "../types.js";
4
- import { useMenubarContent } from "../menubar.svelte.js";
4
+ import { MenubarContentState } from "../menubar.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import MenuContentStatic from "../../menu/components/menu-content-static.svelte";
7
7
  import { noop } from "../../../internal/noop.js";
@@ -19,7 +19,7 @@
19
19
  ...restProps
20
20
  }: MenubarContentStaticProps = $props();
21
21
 
22
- const contentState = useMenubarContent({
22
+ const contentState = MenubarContentState.create({
23
23
  id: box.with(() => id),
24
24
  interactOutsideBehavior: box.with(() => interactOutsideBehavior),
25
25
  ref: box.with(
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenubarContentProps } from "../types.js";
4
- import { useMenubarContent } from "../menubar.svelte.js";
4
+ import { MenubarContentState } from "../menubar.svelte.js";
5
5
  import MenuContent from "../../menu/components/menu-content.svelte";
6
6
  import { createId } from "../../../internal/create-id.js";
7
7
  import { noop } from "../../../internal/noop.js";
@@ -19,7 +19,7 @@
19
19
  ...restProps
20
20
  }: MenubarContentProps = $props();
21
21
 
22
- const contentState = useMenubarContent({
22
+ const contentState = MenubarContentState.create({
23
23
  id: box.with(() => id),
24
24
  interactOutsideBehavior: box.with(() => interactOutsideBehavior),
25
25
  ref: box.with(
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box } from "svelte-toolbelt";
3
3
  import type { MenubarMenuProps } from "../types.js";
4
- import { useMenubarMenu } from "../menubar.svelte.js";
4
+ import { MenubarMenuState } from "../menubar.svelte.js";
5
5
  import Menu from "../../menu/components/menu.svelte";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
  import { createId } from "../../../internal/create-id.js";
@@ -10,7 +10,7 @@
10
10
 
11
11
  let { value = createId(uid), onOpenChange = noop, ...restProps }: MenubarMenuProps = $props();
12
12
 
13
- const menuState = useMenubarMenu({
13
+ const menuState = MenubarMenuState.create({
14
14
  value: box.with(() => value),
15
15
  onOpenChange: box.with(() => onOpenChange),
16
16
  });
@@ -1,10 +1,10 @@
1
1
  <script lang="ts">
2
2
  import { attachRef, box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenubarTriggerProps } from "../types.js";
4
- import { useMenubarTrigger } from "../menubar.svelte.js";
4
+ import { MenubarTriggerState } from "../menubar.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
- import { useMenuDropdownTrigger } from "../../menu/menu.svelte.js";
7
+ import { DropdownMenuTriggerState } from "../../menu/menu.svelte.js";
8
8
 
9
9
  const uid = $props.id();
10
10
 
@@ -17,7 +17,7 @@
17
17
  ...restProps
18
18
  }: MenubarTriggerProps = $props();
19
19
 
20
- const triggerState = useMenubarTrigger({
20
+ const triggerState = MenubarTriggerState.create({
21
21
  id: box.with(() => id),
22
22
  disabled: box.with(() => disabled ?? false),
23
23
  ref: box.with(
@@ -26,7 +26,7 @@
26
26
  ),
27
27
  });
28
28
 
29
- const dropdownTriggerState = useMenuDropdownTrigger(triggerState.opts);
29
+ const dropdownTriggerState = DropdownMenuTriggerState.create(triggerState.opts);
30
30
 
31
31
  const mergedProps = $derived(
32
32
  mergeProps(restProps, triggerState.props, {
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenubarRootProps } from "../types.js";
4
- import { useMenubarRoot } from "../menubar.svelte.js";
4
+ import { MenubarRootState } from "../menubar.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
  }: MenubarRootProps = $props();
21
21
 
22
- const rootState = useMenubarRoot({
22
+ const rootState = MenubarRootState.create({
23
23
  id: box.with(() => id),
24
24
  value: box.with(
25
25
  () => value,
@@ -1,24 +1,25 @@
1
- import { type ReadableBox } from "svelte-toolbelt";
1
+ import { type ReadableBox, type ReadableBoxedValues, type WritableBoxedValues } from "svelte-toolbelt";
2
2
  import type { InteractOutsideBehaviorType } from "../utilities/dismissible-layer/types.js";
3
- import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
4
- import { type UseRovingFocusReturn } from "../../internal/use-roving-focus.svelte.js";
5
3
  import type { Direction } from "../../shared/index.js";
6
- import type { OnChangeFn, WithRefProps } from "../../internal/types.js";
4
+ import type { OnChangeFn, WithRefOpts } from "../../internal/types.js";
7
5
  import { type FocusScopeContextValue } from "../utilities/focus-scope/use-focus-scope.svelte.js";
8
6
  import type { FocusEventHandler, KeyboardEventHandler, PointerEventHandler } from "svelte/elements";
9
- type MenubarRootStateProps = WithRefProps<ReadableBoxedValues<{
7
+ import { RovingFocusGroup } from "../../internal/roving-focus-group.js";
8
+ interface MenubarRootStateOpts extends WithRefOpts, ReadableBoxedValues<{
10
9
  dir: Direction;
11
10
  loop: boolean;
12
- }> & WritableBoxedValues<{
11
+ }>, WritableBoxedValues<{
13
12
  value: string;
14
- }>>;
15
- declare class MenubarRootState {
16
- readonly opts: MenubarRootStateProps;
17
- rovingFocusGroup: UseRovingFocusReturn;
13
+ }> {
14
+ }
15
+ export declare class MenubarRootState {
16
+ static create(opts: MenubarRootStateOpts): MenubarRootState;
17
+ readonly opts: MenubarRootStateOpts;
18
+ readonly rovingFocusGroup: RovingFocusGroup;
18
19
  wasOpenedByKeyboard: boolean;
19
20
  triggerIds: string[];
20
21
  valueToChangeHandler: Map<string, ReadableBox<OnChangeFn<boolean>>>;
21
- constructor(opts: MenubarRootStateProps);
22
+ constructor(opts: MenubarRootStateOpts);
22
23
  /**
23
24
  * @param id - the id of the trigger to register
24
25
  * @returns - a function to de-register the trigger
@@ -35,17 +36,19 @@ declare class MenubarRootState {
35
36
  onMenuOpen: (id: string, triggerId: string) => void;
36
37
  onMenuClose: () => void;
37
38
  onMenuToggle: (id: string) => void;
38
- props: {
39
+ readonly props: {
39
40
  readonly id: string;
40
41
  readonly role: "menubar";
41
42
  };
42
43
  }
43
- type MenubarMenuStateProps = ReadableBoxedValues<{
44
+ interface MenubarMenuStateOpts extends ReadableBoxedValues<{
44
45
  value: string;
45
46
  onOpenChange: OnChangeFn<boolean>;
46
- }>;
47
- declare class MenubarMenuState {
48
- readonly opts: MenubarMenuStateProps;
47
+ }> {
48
+ }
49
+ export declare class MenubarMenuState {
50
+ static create(opts: MenubarMenuStateOpts): MenubarMenuState;
51
+ readonly opts: MenubarMenuStateOpts;
49
52
  readonly root: MenubarRootState;
50
53
  open: boolean;
51
54
  wasOpenedByKeyboard: boolean;
@@ -53,27 +56,29 @@ declare class MenubarMenuState {
53
56
  triggerId: string | undefined;
54
57
  contentId: string | undefined;
55
58
  contentNode: HTMLElement | null;
56
- constructor(opts: MenubarMenuStateProps, root: MenubarRootState);
59
+ constructor(opts: MenubarMenuStateOpts, root: MenubarRootState);
57
60
  getTriggerNode(): HTMLElement | null;
58
61
  toggleMenu(): void;
59
62
  openMenu(): void;
60
63
  }
61
- type MenubarTriggerStateProps = WithRefProps<ReadableBoxedValues<{
64
+ interface MenubarTriggerStateOpts extends WithRefOpts, ReadableBoxedValues<{
62
65
  disabled: boolean;
63
- }>>;
64
- declare class MenubarTriggerState {
66
+ }> {
67
+ }
68
+ export declare class MenubarTriggerState {
65
69
  #private;
66
- readonly opts: MenubarTriggerStateProps;
70
+ static create(opts: MenubarTriggerStateOpts): MenubarTriggerState;
71
+ readonly opts: MenubarTriggerStateOpts;
67
72
  readonly menu: MenubarMenuState;
68
- root: MenubarRootState;
73
+ readonly root: MenubarRootState;
69
74
  isFocused: boolean;
70
- constructor(opts: MenubarTriggerStateProps, menu: MenubarMenuState);
75
+ constructor(opts: MenubarTriggerStateOpts, menu: MenubarMenuState);
71
76
  onpointerdown: PointerEventHandler<HTMLElement>;
72
77
  onpointerenter: PointerEventHandler<HTMLElement>;
73
78
  onkeydown: KeyboardEventHandler<HTMLElement>;
74
79
  onfocus: FocusEventHandler<HTMLElement>;
75
80
  onblur: FocusEventHandler<HTMLElement>;
76
- props: {
81
+ readonly props: {
77
82
  readonly type: "button";
78
83
  readonly role: "menuitem";
79
84
  readonly id: string;
@@ -93,19 +98,21 @@ declare class MenubarTriggerState {
93
98
  readonly onblur: FocusEventHandler<HTMLElement>;
94
99
  };
95
100
  }
96
- type MenubarContentStateProps = WithRefProps<ReadableBoxedValues<{
101
+ interface MenubarContentStateOpts extends WithRefOpts, ReadableBoxedValues<{
97
102
  interactOutsideBehavior: InteractOutsideBehaviorType;
98
103
  onOpenAutoFocus: (e: Event) => void;
99
104
  onCloseAutoFocus: (e: Event) => void;
100
105
  onFocusOutside: (e: FocusEvent) => void;
101
106
  onInteractOutside: (e: PointerEvent) => void;
102
- }>>;
103
- declare class MenubarContentState {
104
- readonly opts: MenubarContentStateProps;
107
+ }> {
108
+ }
109
+ export declare class MenubarContentState {
110
+ static create(opts: MenubarContentStateOpts): MenubarContentState;
111
+ readonly opts: MenubarContentStateOpts;
105
112
  readonly menu: MenubarMenuState;
106
- root: MenubarRootState;
113
+ readonly root: MenubarRootState;
107
114
  focusScopeContext: FocusScopeContextValue;
108
- constructor(opts: MenubarContentStateProps, menu: MenubarMenuState);
115
+ constructor(opts: MenubarContentStateOpts, menu: MenubarMenuState);
109
116
  onCloseAutoFocus: (e: Event) => void;
110
117
  onFocusOutside: (e: FocusEvent) => void;
111
118
  onInteractOutside: (e: PointerEvent) => void;
@@ -127,8 +134,4 @@ declare class MenubarContentState {
127
134
  onOpenAutoFocus: (e: Event) => void;
128
135
  };
129
136
  }
130
- export declare function useMenubarRoot(props: MenubarRootStateProps): MenubarRootState;
131
- export declare function useMenubarMenu(props: MenubarMenuStateProps): MenubarMenuState;
132
- export declare function useMenubarTrigger(props: MenubarTriggerStateProps): MenubarTriggerState;
133
- export declare function useMenubarContent(props: MenubarContentStateProps): MenubarContentState;
134
137
  export {};