bits-ui 2.7.0 → 2.8.1

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 (378) 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 +9 -12
  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 +5 -3
  34. package/dist/bits/calendar/components/calendar-prev-button.svelte +5 -3
  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 +4 -4
  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 +8 -10
  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 +6 -5
  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 +105 -105
  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 -36
  142. package/dist/bits/menubar/menubar.svelte.js +21 -24
  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 +4 -3
  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 +4 -3
  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 +2 -2
  183. package/dist/bits/radio-group/radio-group.svelte.d.ts +21 -19
  184. package/dist/bits/radio-group/radio-group.svelte.js +15 -15
  185. package/dist/bits/range-calendar/components/range-calendar-cell.svelte +2 -2
  186. package/dist/bits/range-calendar/components/range-calendar-day.svelte +2 -2
  187. package/dist/bits/range-calendar/components/range-calendar.svelte +2 -2
  188. package/dist/bits/range-calendar/range-calendar.svelte.d.ts +21 -20
  189. package/dist/bits/range-calendar/range-calendar.svelte.js +12 -12
  190. package/dist/bits/rating-group/components/rating-group-input.svelte +2 -2
  191. package/dist/bits/rating-group/components/rating-group-item.svelte +2 -2
  192. package/dist/bits/rating-group/components/rating-group.svelte +2 -2
  193. package/dist/bits/rating-group/rating-group.svelte.d.ts +19 -18
  194. package/dist/bits/rating-group/rating-group.svelte.js +16 -17
  195. package/dist/bits/scroll-area/components/scroll-area-corner-impl.svelte +2 -2
  196. package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +3 -3
  197. package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +6 -6
  198. package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +3 -3
  199. package/dist/bits/scroll-area/components/scroll-area-scrollbar-shared.svelte +2 -2
  200. package/dist/bits/scroll-area/components/scroll-area-scrollbar-visible.svelte +2 -2
  201. package/dist/bits/scroll-area/components/scroll-area-scrollbar-x.svelte +2 -2
  202. package/dist/bits/scroll-area/components/scroll-area-scrollbar-y.svelte +2 -2
  203. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +2 -2
  204. package/dist/bits/scroll-area/components/scroll-area-thumb-impl.svelte +2 -2
  205. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +2 -5
  206. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +2 -2
  207. package/dist/bits/scroll-area/components/scroll-area.svelte +2 -2
  208. package/dist/bits/scroll-area/scroll-area.svelte.d.ts +98 -78
  209. package/dist/bits/scroll-area/scroll-area.svelte.js +78 -74
  210. package/dist/bits/select/components/select-content-static.svelte +3 -3
  211. package/dist/bits/select/components/select-content.svelte +3 -3
  212. package/dist/bits/select/components/select-group-heading.svelte +2 -2
  213. package/dist/bits/select/components/select-group.svelte +2 -2
  214. package/dist/bits/select/components/select-hidden-input.svelte +2 -2
  215. package/dist/bits/select/components/select-item.svelte +2 -2
  216. package/dist/bits/select/components/select-scroll-down-button.svelte +2 -2
  217. package/dist/bits/select/components/select-scroll-up-button.svelte +2 -2
  218. package/dist/bits/select/components/select-trigger.svelte +2 -2
  219. package/dist/bits/select/components/select-viewport.svelte +2 -2
  220. package/dist/bits/select/components/select.svelte +4 -2
  221. package/dist/bits/select/select.svelte.d.ts +127 -113
  222. package/dist/bits/select/select.svelte.js +72 -62
  223. package/dist/bits/select/types.d.ts +4 -0
  224. package/dist/bits/separator/components/separator.svelte +2 -2
  225. package/dist/bits/separator/separator.svelte.d.ts +9 -8
  226. package/dist/bits/separator/separator.svelte.js +4 -4
  227. package/dist/bits/slider/components/slider-range.svelte +2 -2
  228. package/dist/bits/slider/components/slider-thumb-label.svelte +2 -2
  229. package/dist/bits/slider/components/slider-thumb.svelte +2 -2
  230. package/dist/bits/slider/components/slider-tick-label.svelte +2 -2
  231. package/dist/bits/slider/components/slider-tick.svelte +2 -2
  232. package/dist/bits/slider/components/slider.svelte +2 -2
  233. package/dist/bits/slider/slider.svelte.d.ts +82 -73
  234. package/dist/bits/slider/slider.svelte.js +30 -28
  235. package/dist/bits/switch/components/switch-input.svelte +2 -2
  236. package/dist/bits/switch/components/switch-thumb.svelte +2 -2
  237. package/dist/bits/switch/components/switch.svelte +2 -2
  238. package/dist/bits/switch/switch.svelte.d.ts +19 -17
  239. package/dist/bits/switch/switch.svelte.js +13 -13
  240. package/dist/bits/tabs/components/tabs-content.svelte +2 -2
  241. package/dist/bits/tabs/components/tabs-list.svelte +2 -2
  242. package/dist/bits/tabs/components/tabs-trigger.svelte +2 -2
  243. package/dist/bits/tabs/components/tabs.svelte +2 -2
  244. package/dist/bits/tabs/tabs.svelte.d.ts +33 -29
  245. package/dist/bits/tabs/tabs.svelte.js +19 -19
  246. package/dist/bits/time-field/components/time-field-hidden-input.svelte +2 -2
  247. package/dist/bits/time-field/components/time-field-input.svelte +2 -2
  248. package/dist/bits/time-field/components/time-field-label.svelte +2 -2
  249. package/dist/bits/time-field/components/time-field-segment.svelte +2 -2
  250. package/dist/bits/time-field/components/time-field.svelte +2 -2
  251. package/dist/bits/time-field/time-field.svelte.d.ts +72 -66
  252. package/dist/bits/time-field/time-field.svelte.js +37 -42
  253. package/dist/bits/time-range-field/components/time-range-field-input.svelte +2 -2
  254. package/dist/bits/time-range-field/components/time-range-field-label.svelte +2 -2
  255. package/dist/bits/time-range-field/components/time-range-field.svelte +2 -2
  256. package/dist/bits/time-range-field/time-range-field.svelte.d.ts +35 -31
  257. package/dist/bits/time-range-field/time-range-field.svelte.js +34 -32
  258. package/dist/bits/toggle/components/toggle.svelte +2 -2
  259. package/dist/bits/toggle/toggle.svelte.d.ts +11 -10
  260. package/dist/bits/toggle/toggle.svelte.js +4 -4
  261. package/dist/bits/toggle-group/components/toggle-group-item.svelte +2 -2
  262. package/dist/bits/toggle-group/components/toggle-group.svelte +2 -2
  263. package/dist/bits/toggle-group/toggle-group.svelte.d.ts +48 -43
  264. package/dist/bits/toggle-group/toggle-group.svelte.js +24 -25
  265. package/dist/bits/toolbar/components/toolbar-button.svelte +2 -2
  266. package/dist/bits/toolbar/components/toolbar-group-item.svelte +2 -2
  267. package/dist/bits/toolbar/components/toolbar-group.svelte +2 -2
  268. package/dist/bits/toolbar/components/toolbar-link.svelte +2 -2
  269. package/dist/bits/toolbar/components/toolbar.svelte +2 -2
  270. package/dist/bits/toolbar/toolbar.svelte.d.ts +59 -51
  271. package/dist/bits/toolbar/toolbar.svelte.js +32 -30
  272. package/dist/bits/tooltip/components/tooltip-content-static.svelte +3 -3
  273. package/dist/bits/tooltip/components/tooltip-content.svelte +3 -3
  274. package/dist/bits/tooltip/components/tooltip-provider.svelte +2 -2
  275. package/dist/bits/tooltip/components/tooltip-trigger.svelte +2 -2
  276. package/dist/bits/tooltip/components/tooltip.svelte +4 -2
  277. package/dist/bits/tooltip/tooltip.svelte.d.ts +33 -29
  278. package/dist/bits/tooltip/tooltip.svelte.js +33 -28
  279. package/dist/bits/tooltip/types.d.ts +4 -0
  280. package/dist/bits/utilities/config/bits-config.d.ts +1 -1
  281. package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -2
  282. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +6 -7
  283. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +3 -3
  284. package/dist/bits/utilities/escape-layer/escape-layer.svelte +2 -2
  285. package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.d.ts +6 -7
  286. package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.js +3 -3
  287. package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -2
  288. package/dist/bits/utilities/floating-layer/components/floating-layer-arrow.svelte +2 -2
  289. package/dist/bits/utilities/floating-layer/components/floating-layer-content.svelte +2 -2
  290. package/dist/bits/utilities/floating-layer/components/floating-layer.svelte +2 -2
  291. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +25 -23
  292. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +25 -25
  293. package/dist/bits/utilities/focus-scope/focus-scope-manager.d.ts +12 -0
  294. package/dist/bits/utilities/focus-scope/focus-scope-manager.js +40 -0
  295. package/dist/bits/utilities/focus-scope/focus-scope.svelte +6 -8
  296. package/dist/bits/utilities/focus-scope/focus-scope.svelte.d.ts +1 -0
  297. package/dist/bits/utilities/focus-scope/focus-scope.svelte.js +204 -0
  298. package/dist/bits/utilities/focus-scope/types.d.ts +2 -6
  299. package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte +1 -1
  300. package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte.d.ts +1 -1
  301. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +3 -3
  302. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte.d.ts +1 -1
  303. package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -3
  304. package/dist/bits/utilities/presence-layer/presence-layer.svelte +8 -8
  305. package/dist/bits/utilities/presence-layer/presence.svelte.d.ts +42 -0
  306. package/dist/bits/utilities/presence-layer/presence.svelte.js +116 -0
  307. package/dist/bits/utilities/presence-layer/types.d.ts +3 -5
  308. package/dist/bits/utilities/scroll-lock/scroll-lock.svelte +2 -2
  309. package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -2
  310. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +7 -7
  311. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +3 -3
  312. package/dist/internal/animations-complete.d.ts +12 -0
  313. package/dist/internal/animations-complete.js +55 -0
  314. package/dist/internal/arrays.js +20 -36
  315. package/dist/internal/attrs.d.ts +9 -2
  316. package/dist/internal/attrs.js +21 -11
  317. package/dist/internal/body-scroll-lock.svelte.d.ts +10 -0
  318. package/dist/internal/body-scroll-lock.svelte.js +106 -0
  319. package/dist/internal/data-typeahead.svelte.d.ts +15 -0
  320. package/dist/internal/data-typeahead.svelte.js +33 -0
  321. package/dist/internal/date-time/calendar-helpers.svelte.d.ts +1 -1
  322. package/dist/internal/dom-typeahead.svelte.d.ts +14 -0
  323. package/dist/internal/dom-typeahead.svelte.js +44 -0
  324. package/dist/internal/dom.d.ts +0 -2
  325. package/dist/internal/dom.js +0 -15
  326. package/dist/internal/focus.js +1 -1
  327. package/dist/internal/{use-grace-area.svelte.d.ts → grace-area.svelte.d.ts} +5 -4
  328. package/dist/internal/{use-grace-area.svelte.js → grace-area.svelte.js} +60 -56
  329. package/dist/internal/open-change-complete.d.ts +13 -0
  330. package/dist/internal/open-change-complete.js +24 -0
  331. package/dist/internal/{use-roving-focus.svelte.d.ts → roving-focus-group.d.ts} +9 -8
  332. package/dist/internal/{use-roving-focus.svelte.js → roving-focus-group.js} +30 -34
  333. package/dist/internal/shared-state.svelte.d.ts +6 -0
  334. package/dist/internal/shared-state.svelte.js +31 -0
  335. package/dist/internal/should-enable-focus-trap.d.ts +5 -0
  336. package/dist/internal/should-enable-focus-trap.js +5 -0
  337. package/dist/internal/state-machine.d.ts +16 -0
  338. package/dist/internal/state-machine.js +18 -0
  339. package/dist/internal/svelte-resize-observer.svelte.d.ts +6 -0
  340. package/dist/internal/svelte-resize-observer.svelte.js +25 -0
  341. package/dist/internal/tabbable.d.ts +0 -1
  342. package/dist/internal/tabbable.js +0 -11
  343. package/dist/internal/timeout-fn.d.ts +16 -0
  344. package/dist/internal/timeout-fn.js +38 -0
  345. package/dist/internal/types.d.ts +2 -2
  346. package/package.json +2 -2
  347. package/dist/bits/utilities/focus-scope/focus-scope-stack.svelte.d.ts +0 -14
  348. package/dist/bits/utilities/focus-scope/focus-scope-stack.svelte.js +0 -50
  349. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +0 -49
  350. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +0 -218
  351. package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +0 -4
  352. package/dist/bits/utilities/presence-layer/use-presence.svelte.js +0 -97
  353. package/dist/internal/box.svelte.d.ts +0 -21
  354. package/dist/internal/box.svelte.js +0 -26
  355. package/dist/internal/create-event-hook.svelte.d.ts +0 -18
  356. package/dist/internal/create-event-hook.svelte.js +0 -29
  357. package/dist/internal/create-shared-hook.svelte.d.ts +0 -2
  358. package/dist/internal/create-shared-hook.svelte.js +0 -27
  359. package/dist/internal/should-trap-focus.d.ts +0 -6
  360. package/dist/internal/should-trap-focus.js +0 -6
  361. package/dist/internal/sleep.d.ts +0 -1
  362. package/dist/internal/sleep.js +0 -3
  363. package/dist/internal/use-after-animations.svelte.d.ts +0 -5
  364. package/dist/internal/use-after-animations.svelte.js +0 -27
  365. package/dist/internal/use-body-scroll-lock.svelte.d.ts +0 -6
  366. package/dist/internal/use-body-scroll-lock.svelte.js +0 -106
  367. package/dist/internal/use-data-typeahead.svelte.d.ts +0 -15
  368. package/dist/internal/use-data-typeahead.svelte.js +0 -34
  369. package/dist/internal/use-dom-typeahead.svelte.d.ts +0 -13
  370. package/dist/internal/use-dom-typeahead.svelte.js +0 -32
  371. package/dist/internal/use-form-control.svelte.d.ts +0 -4
  372. package/dist/internal/use-form-control.svelte.js +0 -16
  373. package/dist/internal/use-resize-observer.svelte.d.ts +0 -2
  374. package/dist/internal/use-resize-observer.svelte.js +0 -17
  375. package/dist/internal/use-state-machine.svelte.d.ts +0 -24
  376. package/dist/internal/use-state-machine.svelte.js +0 -28
  377. package/dist/internal/use-timeout-fn.svelte.d.ts +0 -25
  378. package/dist/internal/use-timeout-fn.svelte.js +0 -39
@@ -3,17 +3,16 @@ 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
- import { FocusScopeContext } from "../utilities/focus-scope/use-focus-scope.svelte.js";
15
11
  import { isTabbable } from "tabbable";
16
- import { untrack } from "svelte";
12
+ import { DOMTypeahead } from "../../internal/dom-typeahead.svelte.js";
13
+ import { RovingFocusGroup } from "../../internal/roving-focus-group.js";
14
+ import { GraceArea } from "../../internal/grace-area.svelte.js";
15
+ import { OpenChangeComplete } from "../../internal/open-change-complete.js";
17
16
  export const CONTEXT_MENU_TRIGGER_ATTR = "data-context-menu-trigger";
18
17
  const MenuRootContext = new Context("Menu.Root");
19
18
  const MenuMenuContext = new Context("Menu.Root | Menu.Sub");
@@ -43,7 +42,11 @@ export const menuAttrs = createBitsAttrs({
43
42
  "arrow",
44
43
  ],
45
44
  });
46
- class MenuRootState {
45
+ export class MenuRootState {
46
+ static create(opts) {
47
+ const root = new MenuRootState(opts);
48
+ return MenuRootContext.set(root);
49
+ }
47
50
  opts;
48
51
  isUsingKeyboard = new IsUsingKeyboard();
49
52
  ignoreCloseAutoFocus = $state(false);
@@ -55,7 +58,10 @@ class MenuRootState {
55
58
  return menuAttrs.getAttr(part, this.opts.variant.current);
56
59
  };
57
60
  }
58
- class MenuMenuState {
61
+ export class MenuMenuState {
62
+ static create(opts, root) {
63
+ return MenuMenuContext.set(new MenuMenuState(opts, root, null));
64
+ }
59
65
  opts;
60
66
  root;
61
67
  parentMenu;
@@ -66,6 +72,13 @@ class MenuMenuState {
66
72
  this.opts = opts;
67
73
  this.root = root;
68
74
  this.parentMenu = parentMenu;
75
+ new OpenChangeComplete({
76
+ ref: box.with(() => this.contentNode),
77
+ open: this.opts.open,
78
+ onComplete: () => {
79
+ this.opts.onOpenChangeComplete.current(this.opts.open.current);
80
+ },
81
+ });
69
82
  if (parentMenu) {
70
83
  watch(() => parentMenu.opts.open.current, () => {
71
84
  if (parentMenu.opts.open.current)
@@ -84,16 +97,19 @@ class MenuMenuState {
84
97
  this.opts.open.current = false;
85
98
  }
86
99
  }
87
- class MenuContentState {
100
+ export class MenuContentState {
101
+ static create(opts) {
102
+ return MenuContentContext.set(new MenuContentState(opts, MenuMenuContext.get()));
103
+ }
88
104
  opts;
89
105
  parentMenu;
106
+ rovingFocusGroup;
107
+ domContext;
90
108
  search = $state("");
91
109
  #timer = 0;
92
110
  #handleTypeaheadSearch;
93
- rovingFocusGroup;
94
111
  mounted = $state(false);
95
112
  #isSub;
96
- domContext;
97
113
  constructor(opts, parentMenu) {
98
114
  this.opts = opts;
99
115
  this.parentMenu = parentMenu;
@@ -104,7 +120,7 @@ class MenuContentState {
104
120
  this.onblur = this.onblur.bind(this);
105
121
  this.onfocus = this.onfocus.bind(this);
106
122
  this.handleInteractOutside = this.handleInteractOutside.bind(this);
107
- useGraceArea({
123
+ new GraceArea({
108
124
  contentNode: () => this.parentMenu.contentNode,
109
125
  triggerNode: () => this.parentMenu.triggerNode,
110
126
  enabled: () => this.parentMenu.opts.open.current &&
@@ -116,11 +132,11 @@ class MenuContentState {
116
132
  this.parentMenu.root.isPointerInTransit = value;
117
133
  },
118
134
  });
119
- this.#handleTypeaheadSearch = useDOMTypeahead({
135
+ this.#handleTypeaheadSearch = new DOMTypeahead({
120
136
  getActiveElement: () => this.domContext.getActiveElement(),
121
137
  getWindow: () => this.domContext.getWindow(),
122
138
  }).handleTypeaheadSearch;
123
- this.rovingFocusGroup = useRovingFocus({
139
+ this.rovingFocusGroup = new RovingFocusGroup({
124
140
  rootNode: box.with(() => this.parentMenu.contentNode),
125
141
  candidateAttr: this.parentMenu.root.getBitsAttr("item"),
126
142
  loop: this.opts.loop,
@@ -173,9 +189,8 @@ class MenuContentState {
173
189
  rootMenu = rootMenu.parentMenu;
174
190
  }
175
191
  // if for some unforeseen reason the root menu has no trigger, we bail
176
- if (!rootMenu.triggerNode) {
192
+ if (!rootMenu.triggerNode)
177
193
  return;
178
- }
179
194
  // cancel default tab behavior
180
195
  e.preventDefault();
181
196
  // find the next/previous tabbable
@@ -305,11 +320,9 @@ class MenuContentState {
305
320
  pointerEvents: "auto",
306
321
  },
307
322
  ...attachRef(this.opts.ref, (v) => {
308
- untrack(() => {
309
- if (this.parentMenu.contentNode !== v) {
310
- this.parentMenu.contentNode = v;
311
- }
312
- });
323
+ if (this.parentMenu.contentNode !== v) {
324
+ this.parentMenu.contentNode = v;
325
+ }
313
326
  }),
314
327
  }));
315
328
  popperProps = {
@@ -383,11 +396,15 @@ class MenuItemSharedState {
383
396
  ...attachRef(this.opts.ref),
384
397
  }));
385
398
  }
386
- class MenuItemState {
399
+ export class MenuItemState {
400
+ static create(opts) {
401
+ const item = new MenuItemSharedState(opts, MenuContentContext.get());
402
+ return new MenuItemState(opts, item);
403
+ }
387
404
  opts;
388
405
  item;
389
- #isPointerDown = false;
390
406
  root;
407
+ #isPointerDown = false;
391
408
  constructor(opts, item) {
392
409
  this.opts = opts;
393
410
  this.item = item;
@@ -453,7 +470,13 @@ class MenuItemState {
453
470
  onkeydown: this.onkeydown,
454
471
  }));
455
472
  }
456
- class MenuSubTriggerState {
473
+ export class MenuSubTriggerState {
474
+ static create(opts) {
475
+ const content = MenuContentContext.get();
476
+ const item = new MenuItemSharedState(opts, content);
477
+ const submenu = MenuMenuContext.get();
478
+ return new MenuSubTriggerState(opts, item, content, submenu);
479
+ }
457
480
  opts;
458
481
  item;
459
482
  content;
@@ -546,7 +569,11 @@ class MenuSubTriggerState {
546
569
  ...attachRef(this.opts.ref, (v) => (this.submenu.triggerNode = v)),
547
570
  }, this.item.props));
548
571
  }
549
- class MenuCheckboxItemState {
572
+ export class MenuCheckboxItemState {
573
+ static create(opts, checkboxGroup) {
574
+ const item = new MenuItemState(opts, new MenuItemSharedState(opts, MenuContentContext.get()));
575
+ return new MenuCheckboxItemState(opts, item, checkboxGroup);
576
+ }
550
577
  opts;
551
578
  item;
552
579
  group;
@@ -591,7 +618,10 @@ class MenuCheckboxItemState {
591
618
  [this.item.root.getBitsAttr("checkbox-item")]: "",
592
619
  }));
593
620
  }
594
- class MenuGroupState {
621
+ export class MenuGroupState {
622
+ static create(opts) {
623
+ return MenuGroupContext.set(new MenuGroupState(opts, MenuRootContext.get()));
624
+ }
595
625
  opts;
596
626
  root;
597
627
  groupHeadingId = $state(undefined);
@@ -607,7 +637,17 @@ class MenuGroupState {
607
637
  ...attachRef(this.opts.ref),
608
638
  }));
609
639
  }
610
- class MenuGroupHeadingState {
640
+ export class MenuGroupHeadingState {
641
+ static create(opts) {
642
+ // Try to get checkbox group first, then radio group, then regular group
643
+ const checkboxGroup = MenuCheckboxGroupContext.getOr(null);
644
+ if (checkboxGroup)
645
+ return new MenuGroupHeadingState(opts, checkboxGroup);
646
+ const radioGroup = MenuRadioGroupContext.getOr(null);
647
+ if (radioGroup)
648
+ return new MenuGroupHeadingState(opts, radioGroup);
649
+ return new MenuGroupHeadingState(opts, MenuGroupContext.get());
650
+ }
611
651
  opts;
612
652
  group;
613
653
  constructor(opts, group) {
@@ -621,7 +661,10 @@ class MenuGroupHeadingState {
621
661
  ...attachRef(this.opts.ref, (v) => (this.group.groupHeadingId = v?.id)),
622
662
  }));
623
663
  }
624
- class MenuSeparatorState {
664
+ export class MenuSeparatorState {
665
+ static create(opts) {
666
+ return new MenuSeparatorState(opts, MenuRootContext.get());
667
+ }
625
668
  opts;
626
669
  root;
627
670
  constructor(opts, root) {
@@ -635,7 +678,10 @@ class MenuSeparatorState {
635
678
  ...attachRef(this.opts.ref),
636
679
  }));
637
680
  }
638
- class MenuArrowState {
681
+ export class MenuArrowState {
682
+ static create() {
683
+ return new MenuArrowState(MenuRootContext.get());
684
+ }
639
685
  root;
640
686
  constructor(root) {
641
687
  this.root = root;
@@ -644,7 +690,10 @@ class MenuArrowState {
644
690
  [this.root.getBitsAttr("arrow")]: "",
645
691
  }));
646
692
  }
647
- class MenuRadioGroupState {
693
+ export class MenuRadioGroupState {
694
+ static create(opts) {
695
+ return MenuGroupContext.set(MenuRadioGroupContext.set(new MenuRadioGroupState(opts, MenuContentContext.get())));
696
+ }
648
697
  opts;
649
698
  content;
650
699
  groupHeadingId = $state(null);
@@ -665,7 +714,13 @@ class MenuRadioGroupState {
665
714
  ...attachRef(this.opts.ref),
666
715
  }));
667
716
  }
668
- class MenuRadioItemState {
717
+ export class MenuRadioItemState {
718
+ static create(opts) {
719
+ const radioGroup = MenuRadioGroupContext.get();
720
+ const sharedItem = new MenuItemSharedState(opts, radioGroup.content);
721
+ const item = new MenuItemState(opts, sharedItem);
722
+ return new MenuRadioItemState(opts, item, radioGroup);
723
+ }
669
724
  opts;
670
725
  item;
671
726
  group;
@@ -687,7 +742,10 @@ class MenuRadioItemState {
687
742
  ...attachRef(this.opts.ref),
688
743
  }));
689
744
  }
690
- class DropdownMenuTriggerState {
745
+ export class DropdownMenuTriggerState {
746
+ static create(opts) {
747
+ return new DropdownMenuTriggerState(opts, MenuMenuContext.get());
748
+ }
691
749
  opts;
692
750
  parentMenu;
693
751
  constructor(opts, parentMenu) {
@@ -749,7 +807,10 @@ class DropdownMenuTriggerState {
749
807
  ...attachRef(this.opts.ref, (v) => (this.parentMenu.triggerNode = v)),
750
808
  }));
751
809
  }
752
- class ContextMenuTriggerState {
810
+ export class ContextMenuTriggerState {
811
+ static create(opts) {
812
+ return new ContextMenuTriggerState(opts, MenuMenuContext.get());
813
+ }
753
814
  opts;
754
815
  parentMenu;
755
816
  #point = $state({ x: 0, y: 0 });
@@ -770,8 +831,8 @@ class ContextMenuTriggerState {
770
831
  getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...point }),
771
832
  };
772
833
  });
773
- $effect(() => {
774
- if (this.opts.disabled.current) {
834
+ watch(() => this.opts.disabled.current, (isDisabled) => {
835
+ if (isDisabled) {
775
836
  this.#clearLongPressTimer();
776
837
  }
777
838
  });
@@ -831,11 +892,14 @@ class ContextMenuTriggerState {
831
892
  ...attachRef(this.opts.ref, (v) => (this.parentMenu.triggerNode = v)),
832
893
  }));
833
894
  }
834
- class MenuCheckboxGroupState {
895
+ export class MenuCheckboxGroupState {
896
+ static create(opts) {
897
+ return MenuCheckboxGroupContext.set(new MenuCheckboxGroupState(opts, MenuContentContext.get()));
898
+ }
835
899
  opts;
836
900
  content;
837
- groupHeadingId = $state(null);
838
901
  root;
902
+ groupHeadingId = $state(null);
839
903
  constructor(opts, content) {
840
904
  this.opts = opts;
841
905
  this.content = content;
@@ -868,73 +932,9 @@ class MenuCheckboxGroupState {
868
932
  ...attachRef(this.opts.ref),
869
933
  }));
870
934
  }
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()));
935
+ export class MenuSubmenuState {
936
+ static create(opts) {
937
+ const menu = MenuMenuContext.get();
938
+ return MenuMenuContext.set(new MenuMenuState(opts, menu.root, menu));
939
+ }
940
940
  }
@@ -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,24 @@
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";
7
- import { type FocusScopeContextValue } from "../utilities/focus-scope/use-focus-scope.svelte.js";
4
+ import type { OnChangeFn, WithRefOpts } from "../../internal/types.js";
8
5
  import type { FocusEventHandler, KeyboardEventHandler, PointerEventHandler } from "svelte/elements";
9
- type MenubarRootStateProps = WithRefProps<ReadableBoxedValues<{
6
+ import { RovingFocusGroup } from "../../internal/roving-focus-group.js";
7
+ interface MenubarRootStateOpts extends WithRefOpts, ReadableBoxedValues<{
10
8
  dir: Direction;
11
9
  loop: boolean;
12
- }> & WritableBoxedValues<{
10
+ }>, WritableBoxedValues<{
13
11
  value: string;
14
- }>>;
15
- declare class MenubarRootState {
16
- readonly opts: MenubarRootStateProps;
17
- rovingFocusGroup: UseRovingFocusReturn;
12
+ }> {
13
+ }
14
+ export declare class MenubarRootState {
15
+ static create(opts: MenubarRootStateOpts): MenubarRootState;
16
+ readonly opts: MenubarRootStateOpts;
17
+ readonly rovingFocusGroup: RovingFocusGroup;
18
18
  wasOpenedByKeyboard: boolean;
19
19
  triggerIds: string[];
20
20
  valueToChangeHandler: Map<string, ReadableBox<OnChangeFn<boolean>>>;
21
- constructor(opts: MenubarRootStateProps);
21
+ constructor(opts: MenubarRootStateOpts);
22
22
  /**
23
23
  * @param id - the id of the trigger to register
24
24
  * @returns - a function to de-register the trigger
@@ -35,17 +35,19 @@ declare class MenubarRootState {
35
35
  onMenuOpen: (id: string, triggerId: string) => void;
36
36
  onMenuClose: () => void;
37
37
  onMenuToggle: (id: string) => void;
38
- props: {
38
+ readonly props: {
39
39
  readonly id: string;
40
40
  readonly role: "menubar";
41
41
  };
42
42
  }
43
- type MenubarMenuStateProps = ReadableBoxedValues<{
43
+ interface MenubarMenuStateOpts extends ReadableBoxedValues<{
44
44
  value: string;
45
45
  onOpenChange: OnChangeFn<boolean>;
46
- }>;
47
- declare class MenubarMenuState {
48
- readonly opts: MenubarMenuStateProps;
46
+ }> {
47
+ }
48
+ export declare class MenubarMenuState {
49
+ static create(opts: MenubarMenuStateOpts): MenubarMenuState;
50
+ readonly opts: MenubarMenuStateOpts;
49
51
  readonly root: MenubarRootState;
50
52
  open: boolean;
51
53
  wasOpenedByKeyboard: boolean;
@@ -53,27 +55,29 @@ declare class MenubarMenuState {
53
55
  triggerId: string | undefined;
54
56
  contentId: string | undefined;
55
57
  contentNode: HTMLElement | null;
56
- constructor(opts: MenubarMenuStateProps, root: MenubarRootState);
58
+ constructor(opts: MenubarMenuStateOpts, root: MenubarRootState);
57
59
  getTriggerNode(): HTMLElement | null;
58
60
  toggleMenu(): void;
59
61
  openMenu(): void;
60
62
  }
61
- type MenubarTriggerStateProps = WithRefProps<ReadableBoxedValues<{
63
+ interface MenubarTriggerStateOpts extends WithRefOpts, ReadableBoxedValues<{
62
64
  disabled: boolean;
63
- }>>;
64
- declare class MenubarTriggerState {
65
+ }> {
66
+ }
67
+ export declare class MenubarTriggerState {
65
68
  #private;
66
- readonly opts: MenubarTriggerStateProps;
69
+ static create(opts: MenubarTriggerStateOpts): MenubarTriggerState;
70
+ readonly opts: MenubarTriggerStateOpts;
67
71
  readonly menu: MenubarMenuState;
68
- root: MenubarRootState;
72
+ readonly root: MenubarRootState;
69
73
  isFocused: boolean;
70
- constructor(opts: MenubarTriggerStateProps, menu: MenubarMenuState);
74
+ constructor(opts: MenubarTriggerStateOpts, menu: MenubarMenuState);
71
75
  onpointerdown: PointerEventHandler<HTMLElement>;
72
76
  onpointerenter: PointerEventHandler<HTMLElement>;
73
77
  onkeydown: KeyboardEventHandler<HTMLElement>;
74
78
  onfocus: FocusEventHandler<HTMLElement>;
75
79
  onblur: FocusEventHandler<HTMLElement>;
76
- props: {
80
+ readonly props: {
77
81
  readonly type: "button";
78
82
  readonly role: "menuitem";
79
83
  readonly id: string;
@@ -93,19 +97,20 @@ declare class MenubarTriggerState {
93
97
  readonly onblur: FocusEventHandler<HTMLElement>;
94
98
  };
95
99
  }
96
- type MenubarContentStateProps = WithRefProps<ReadableBoxedValues<{
100
+ interface MenubarContentStateOpts extends WithRefOpts, ReadableBoxedValues<{
97
101
  interactOutsideBehavior: InteractOutsideBehaviorType;
98
102
  onOpenAutoFocus: (e: Event) => void;
99
103
  onCloseAutoFocus: (e: Event) => void;
100
104
  onFocusOutside: (e: FocusEvent) => void;
101
105
  onInteractOutside: (e: PointerEvent) => void;
102
- }>>;
103
- declare class MenubarContentState {
104
- readonly opts: MenubarContentStateProps;
106
+ }> {
107
+ }
108
+ export declare class MenubarContentState {
109
+ static create(opts: MenubarContentStateOpts): MenubarContentState;
110
+ readonly opts: MenubarContentStateOpts;
105
111
  readonly menu: MenubarMenuState;
106
- root: MenubarRootState;
107
- focusScopeContext: FocusScopeContextValue;
108
- constructor(opts: MenubarContentStateProps, menu: MenubarMenuState);
112
+ readonly root: MenubarRootState;
113
+ constructor(opts: MenubarContentStateOpts, menu: MenubarMenuState);
109
114
  onCloseAutoFocus: (e: Event) => void;
110
115
  onFocusOutside: (e: FocusEvent) => void;
111
116
  onInteractOutside: (e: PointerEvent) => void;
@@ -127,8 +132,4 @@ declare class MenubarContentState {
127
132
  onOpenAutoFocus: (e: Event) => void;
128
133
  };
129
134
  }
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
135
  export {};