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
@@ -1,18 +1,23 @@
1
- import { attachRef } from "svelte-toolbelt";
1
+ import { attachRef, } from "svelte-toolbelt";
2
2
  import { Context } from "runed";
3
3
  import { createBitsAttrs, getAriaChecked, getAriaPressed, getDataDisabled, getDataOrientation, getDisabled, } from "../../internal/attrs.js";
4
4
  import { kbd } from "../../internal/kbd.js";
5
- import { useRovingFocus, } from "../../internal/use-roving-focus.svelte.js";
5
+ import { RovingFocusGroup } from "../../internal/roving-focus-group.js";
6
6
  export const toolbarAttrs = createBitsAttrs({
7
7
  component: "toolbar",
8
8
  parts: ["root", "item", "group", "group-item", "link", "button"],
9
9
  });
10
- class ToolbarRootState {
10
+ const ToolbarRootContext = new Context("Toolbar.Root");
11
+ const ToolbarGroupContext = new Context("Toolbar.Group");
12
+ export class ToolbarRootState {
13
+ static create(opts) {
14
+ return ToolbarRootContext.set(new ToolbarRootState(opts));
15
+ }
11
16
  opts;
12
17
  rovingFocusGroup;
13
18
  constructor(opts) {
14
19
  this.opts = opts;
15
- this.rovingFocusGroup = useRovingFocus({
20
+ this.rovingFocusGroup = new RovingFocusGroup({
16
21
  orientation: this.opts.orientation,
17
22
  loop: this.opts.loop,
18
23
  rootNode: this.opts.ref,
@@ -87,7 +92,21 @@ class ToolbarGroupMultipleState extends ToolbarGroupBaseState {
87
92
  }
88
93
  }
89
94
  }
90
- class ToolbarGroupItemState {
95
+ export class ToolbarGroupState {
96
+ static create(opts) {
97
+ const { type, ...rest } = opts;
98
+ const rootState = ToolbarRootContext.get();
99
+ const groupState = type === "single"
100
+ ? new ToolbarGroupSingleState(rest, rootState)
101
+ : new ToolbarGroupMultipleState(rest, rootState);
102
+ return ToolbarGroupContext.set(groupState);
103
+ }
104
+ }
105
+ export class ToolbarGroupItemState {
106
+ static create(opts) {
107
+ const group = ToolbarGroupContext.get();
108
+ return new ToolbarGroupItemState(opts, group, group.root);
109
+ }
91
110
  opts;
92
111
  group;
93
112
  root;
@@ -149,7 +168,10 @@ class ToolbarGroupItemState {
149
168
  ...attachRef(this.opts.ref),
150
169
  }));
151
170
  }
152
- class ToolbarLinkState {
171
+ export class ToolbarLinkState {
172
+ static create(opts) {
173
+ return new ToolbarLinkState(opts, ToolbarRootContext.get());
174
+ }
153
175
  opts;
154
176
  root;
155
177
  constructor(opts, root) {
@@ -184,7 +206,10 @@ class ToolbarLinkState {
184
206
  ...attachRef(this.opts.ref),
185
207
  }));
186
208
  }
187
- class ToolbarButtonState {
209
+ export class ToolbarButtonState {
210
+ static create(opts) {
211
+ return new ToolbarButtonState(opts, ToolbarRootContext.get());
212
+ }
188
213
  opts;
189
214
  root;
190
215
  constructor(opts, root) {
@@ -227,26 +252,3 @@ class ToolbarButtonState {
227
252
  function getToggleItemDataState(condition) {
228
253
  return condition ? "on" : "off";
229
254
  }
230
- const ToolbarRootContext = new Context("Toolbar.Root");
231
- const ToolbarGroupContext = new Context("Toolbar.Group");
232
- export function useToolbarRoot(props) {
233
- return ToolbarRootContext.set(new ToolbarRootState(props));
234
- }
235
- export function useToolbarGroup(props) {
236
- const { type, ...rest } = props;
237
- const rootState = ToolbarRootContext.get();
238
- const groupState = type === "single"
239
- ? new ToolbarGroupSingleState(rest, rootState)
240
- : new ToolbarGroupMultipleState(rest, rootState);
241
- return ToolbarGroupContext.set(groupState);
242
- }
243
- export function useToolbarGroupItem(props) {
244
- const group = ToolbarGroupContext.get();
245
- return new ToolbarGroupItemState(props, group, group.root);
246
- }
247
- export function useToolbarButton(props) {
248
- return new ToolbarButtonState(props, ToolbarRootContext.get());
249
- }
250
- export function useToolbarLink(props) {
251
- return new ToolbarLinkState(props, ToolbarRootContext.get());
252
- }
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { TooltipContentStaticProps } from "../types.js";
4
- import { useTooltipContent } from "../tooltip.svelte.js";
4
+ import { TooltipContentState } from "../tooltip.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
7
7
  import { getFloatingContentCSSVars } from "../../../internal/floating-svelte/floating-utils.svelte.js";
@@ -21,7 +21,7 @@
21
21
  ...restProps
22
22
  }: TooltipContentStaticProps = $props();
23
23
 
24
- const contentState = useTooltipContent({
24
+ const contentState = TooltipContentState.create({
25
25
  id: box.with(() => id),
26
26
  ref: box.with(
27
27
  () => ref,
@@ -67,7 +67,7 @@
67
67
  {...contentState.popperProps}
68
68
  tooltip={true}
69
69
  isStatic
70
- present={contentState.root.opts.open.current}
70
+ open={contentState.root.opts.open.current}
71
71
  {id}
72
72
  trapFocus={false}
73
73
  loop={false}
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { TooltipContentProps } from "../types.js";
4
- import { useTooltipContent } from "../tooltip.svelte.js";
4
+ import { TooltipContentState } from "../tooltip.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
7
7
  import { getFloatingContentCSSVars } from "../../../internal/floating-svelte/floating-utils.svelte.js";
@@ -29,7 +29,7 @@
29
29
  ...restProps
30
30
  }: TooltipContentProps = $props();
31
31
 
32
- const contentState = useTooltipContent({
32
+ const contentState = TooltipContentState.create({
33
33
  id: box.with(() => id),
34
34
  ref: box.with(
35
35
  () => ref,
@@ -85,7 +85,7 @@
85
85
  <PopperLayer
86
86
  {...mergedProps}
87
87
  {...contentState.popperProps}
88
- present={contentState.root.opts.open.current}
88
+ open={contentState.root.opts.open.current}
89
89
  {id}
90
90
  trapFocus={false}
91
91
  loop={false}
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box } from "svelte-toolbelt";
3
3
  import type { TooltipProviderProps } from "../types.js";
4
- import { useTooltipProvider } from "../tooltip.svelte.js";
4
+ import { TooltipProviderState } from "../tooltip.svelte.js";
5
5
 
6
6
  let {
7
7
  children,
@@ -13,7 +13,7 @@
13
13
  skipDelayDuration = 300,
14
14
  }: TooltipProviderProps = $props();
15
15
 
16
- useTooltipProvider({
16
+ TooltipProviderState.create({
17
17
  delayDuration: box.with(() => delayDuration),
18
18
  disableCloseOnTriggerClick: box.with(() => disableCloseOnTriggerClick),
19
19
  disableHoverableContent: box.with(() => disableHoverableContent),
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { TooltipTriggerProps } from "../types.js";
4
- import { useTooltipTrigger } from "../tooltip.svelte.js";
4
+ import { TooltipTriggerState } from "../tooltip.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import FloatingLayerAnchor from "../../utilities/floating-layer/components/floating-layer-anchor.svelte";
7
7
 
@@ -17,7 +17,7 @@
17
17
  ...restProps
18
18
  }: TooltipTriggerProps = $props();
19
19
 
20
- const triggerState = useTooltipTrigger({
20
+ const triggerState = TooltipTriggerState.create({
21
21
  id: box.with(() => id),
22
22
  disabled: box.with(() => disabled ?? false),
23
23
  ref: box.with(
@@ -1,13 +1,14 @@
1
1
  <script lang="ts">
2
2
  import { box } from "svelte-toolbelt";
3
3
  import type { TooltipRootProps } from "../types.js";
4
- import { useTooltipRoot } from "../tooltip.svelte.js";
4
+ import { TooltipRootState } from "../tooltip.svelte.js";
5
5
  import FloatingLayer from "../../utilities/floating-layer/components/floating-layer.svelte";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
 
8
8
  let {
9
9
  open = $bindable(false),
10
10
  onOpenChange = noop,
11
+ onOpenChangeComplete = noop,
11
12
  disabled,
12
13
  delayDuration,
13
14
  disableCloseOnTriggerClick,
@@ -16,7 +17,7 @@
16
17
  children,
17
18
  }: TooltipRootProps = $props();
18
19
 
19
- useTooltipRoot({
20
+ TooltipRootState.create({
20
21
  open: box.with(
21
22
  () => open,
22
23
  (v) => {
@@ -29,6 +30,7 @@
29
30
  disableHoverableContent: box.with(() => disableHoverableContent),
30
31
  ignoreNonKeyboardFocus: box.with(() => ignoreNonKeyboardFocus),
31
32
  disabled: box.with(() => disabled),
33
+ onOpenChangeComplete: box.with(() => onOpenChangeComplete),
32
34
  });
33
35
  </script>
34
36
 
@@ -1,38 +1,42 @@
1
- import { DOMContext } from "svelte-toolbelt";
2
- import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
3
- import type { WithRefProps } from "../../internal/types.js";
1
+ import { DOMContext, type WritableBoxedValues, type ReadableBoxedValues } from "svelte-toolbelt";
2
+ import type { OnChangeFn, WithRefOpts } from "../../internal/types.js";
4
3
  import type { FocusEventHandler, MouseEventHandler, PointerEventHandler } from "svelte/elements";
5
- export declare const tooltipAttrs: import("../../internal/attrs.js").BitsAttrs<readonly ["content", "trigger"]>;
6
- type TooltipProviderStateProps = ReadableBoxedValues<{
4
+ export declare const tooltipAttrs: import("../../internal/attrs.js").CreateBitsAttrsReturn<readonly ["content", "trigger"]>;
5
+ interface TooltipProviderStateOpts extends ReadableBoxedValues<{
7
6
  delayDuration: number;
8
7
  disableHoverableContent: boolean;
9
8
  disableCloseOnTriggerClick: boolean;
10
9
  disabled: boolean;
11
10
  ignoreNonKeyboardFocus: boolean;
12
11
  skipDelayDuration: number;
13
- }>;
14
- declare class TooltipProviderState {
12
+ }> {
13
+ }
14
+ export declare class TooltipProviderState {
15
15
  #private;
16
- readonly opts: TooltipProviderStateProps;
16
+ static create(opts: TooltipProviderStateOpts): TooltipProviderState;
17
+ readonly opts: TooltipProviderStateOpts;
17
18
  isOpenDelayed: boolean;
18
19
  isPointerInTransit: import("svelte-toolbelt").WritableBox<boolean>;
19
- constructor(opts: TooltipProviderStateProps);
20
+ constructor(opts: TooltipProviderStateOpts);
20
21
  onOpen: (tooltip: TooltipRootState) => void;
21
22
  onClose: (tooltip: TooltipRootState) => void;
22
23
  isTooltipOpen: (tooltip: TooltipRootState) => boolean;
23
24
  }
24
- type TooltipRootStateProps = ReadableBoxedValues<{
25
+ interface TooltipRootStateOpts extends ReadableBoxedValues<{
25
26
  delayDuration: number | undefined;
26
27
  disableHoverableContent: boolean | undefined;
27
28
  disableCloseOnTriggerClick: boolean | undefined;
28
29
  disabled: boolean | undefined;
29
30
  ignoreNonKeyboardFocus: boolean | undefined;
30
- }> & WritableBoxedValues<{
31
+ onOpenChangeComplete: OnChangeFn<boolean>;
32
+ }>, WritableBoxedValues<{
31
33
  open: boolean;
32
- }>;
33
- declare class TooltipRootState {
34
+ }> {
35
+ }
36
+ export declare class TooltipRootState {
34
37
  #private;
35
- readonly opts: TooltipRootStateProps;
38
+ static create(opts: TooltipRootStateOpts): TooltipRootState;
39
+ readonly opts: TooltipRootStateOpts;
36
40
  readonly provider: TooltipProviderState;
37
41
  readonly delayDuration: number;
38
42
  readonly disableHoverableContent: boolean;
@@ -42,21 +46,23 @@ declare class TooltipRootState {
42
46
  contentNode: HTMLElement | null;
43
47
  triggerNode: HTMLElement | null;
44
48
  readonly stateAttr: string;
45
- constructor(opts: TooltipRootStateProps, provider: TooltipProviderState);
49
+ constructor(opts: TooltipRootStateOpts, provider: TooltipProviderState);
46
50
  handleOpen: () => void;
47
51
  handleClose: () => void;
48
52
  onTriggerEnter: () => void;
49
53
  onTriggerLeave: () => void;
50
54
  }
51
- type TooltipTriggerStateProps = WithRefProps<ReadableBoxedValues<{
55
+ interface TooltipTriggerStateOpts extends WithRefOpts, ReadableBoxedValues<{
52
56
  disabled: boolean;
53
- }>>;
54
- declare class TooltipTriggerState {
57
+ }> {
58
+ }
59
+ export declare class TooltipTriggerState {
55
60
  #private;
56
- readonly opts: TooltipTriggerStateProps;
61
+ static create(opts: TooltipTriggerStateOpts): TooltipTriggerState;
62
+ readonly opts: TooltipTriggerStateOpts;
57
63
  readonly root: TooltipRootState;
58
64
  domContext: DOMContext;
59
- constructor(opts: TooltipTriggerStateProps, root: TooltipRootState);
65
+ constructor(opts: TooltipTriggerStateOpts, root: TooltipRootState);
60
66
  handlePointerUp: () => void;
61
67
  readonly props: {
62
68
  readonly id: string;
@@ -75,14 +81,16 @@ declare class TooltipTriggerState {
75
81
  readonly onclick: MouseEventHandler<HTMLElement>;
76
82
  };
77
83
  }
78
- type TooltipContentStateProps = WithRefProps & ReadableBoxedValues<{
84
+ interface TooltipContentStateOpts extends WithRefOpts, ReadableBoxedValues<{
79
85
  onInteractOutside: (e: PointerEvent) => void;
80
86
  onEscapeKeydown: (e: KeyboardEvent) => void;
81
- }>;
82
- declare class TooltipContentState {
83
- readonly opts: TooltipContentStateProps;
87
+ }> {
88
+ }
89
+ export declare class TooltipContentState {
90
+ static create(opts: TooltipContentStateOpts): TooltipContentState;
91
+ readonly opts: TooltipContentStateOpts;
84
92
  readonly root: TooltipRootState;
85
- constructor(opts: TooltipContentStateProps, root: TooltipRootState);
93
+ constructor(opts: TooltipContentStateOpts, root: TooltipRootState);
86
94
  onInteractOutside: (e: PointerEvent) => void;
87
95
  onEscapeKeydown: (e: KeyboardEvent) => void;
88
96
  onOpenAutoFocus: (e: Event) => void;
@@ -106,8 +114,4 @@ declare class TooltipContentState {
106
114
  onCloseAutoFocus: (e: Event) => void;
107
115
  };
108
116
  }
109
- export declare function useTooltipProvider(props: TooltipProviderStateProps): TooltipProviderState;
110
- export declare function useTooltipRoot(props: TooltipRootStateProps): TooltipRootState;
111
- export declare function useTooltipTrigger(props: TooltipTriggerStateProps): TooltipTriggerState;
112
- export declare function useTooltipContent(props: TooltipContentStateProps): TooltipContentState;
113
117
  export {};
@@ -1,15 +1,21 @@
1
- import { box, onMountEffect, attachRef, DOMContext } from "svelte-toolbelt";
1
+ import { box, onMountEffect, attachRef, DOMContext, } from "svelte-toolbelt";
2
2
  import { on } from "svelte/events";
3
3
  import { Context, watch } from "runed";
4
- import { useTimeoutFn } from "../../internal/use-timeout-fn.svelte.js";
5
4
  import { isElement, isFocusVisible } from "../../internal/is.js";
6
- import { useGraceArea } from "../../internal/use-grace-area.svelte.js";
7
5
  import { createBitsAttrs, getDataDisabled } from "../../internal/attrs.js";
6
+ import { TimeoutFn } from "../../internal/timeout-fn.js";
7
+ import { GraceArea } from "../../internal/grace-area.svelte.js";
8
+ import { OpenChangeComplete } from "../../internal/open-change-complete.js";
8
9
  export const tooltipAttrs = createBitsAttrs({
9
10
  component: "tooltip",
10
11
  parts: ["content", "trigger"],
11
12
  });
12
- class TooltipProviderState {
13
+ const TooltipProviderContext = new Context("Tooltip.Provider");
14
+ const TooltipRootContext = new Context("Tooltip.Root");
15
+ export class TooltipProviderState {
16
+ static create(opts) {
17
+ return TooltipProviderContext.set(new TooltipProviderState(opts));
18
+ }
13
19
  opts;
14
20
  isOpenDelayed = $state(true);
15
21
  isPointerInTransit = box(false);
@@ -17,7 +23,7 @@ class TooltipProviderState {
17
23
  #openTooltip = $state(null);
18
24
  constructor(opts) {
19
25
  this.opts = opts;
20
- this.#timerFn = useTimeoutFn(() => {
26
+ this.#timerFn = new TimeoutFn(() => {
21
27
  this.isOpenDelayed = true;
22
28
  }, this.opts.skipDelayDuration.current, { immediate: false });
23
29
  }
@@ -51,7 +57,10 @@ class TooltipProviderState {
51
57
  return this.#openTooltip === tooltip;
52
58
  };
53
59
  }
54
- class TooltipRootState {
60
+ export class TooltipRootState {
61
+ static create(opts) {
62
+ return TooltipRootContext.set(new TooltipRootState(opts, TooltipProviderContext.get()));
63
+ }
55
64
  opts;
56
65
  provider;
57
66
  delayDuration = $derived.by(() => this.opts.delayDuration.current ?? this.provider.opts.delayDuration.current);
@@ -74,14 +83,21 @@ class TooltipRootState {
74
83
  constructor(opts, provider) {
75
84
  this.opts = opts;
76
85
  this.provider = provider;
77
- this.#timerFn = useTimeoutFn(() => {
86
+ this.#timerFn = new TimeoutFn(() => {
78
87
  this.#wasOpenDelayed = true;
79
88
  this.opts.open.current = true;
80
89
  }, this.delayDuration ?? 0, { immediate: false });
90
+ new OpenChangeComplete({
91
+ open: this.opts.open,
92
+ ref: box.with(() => this.contentNode),
93
+ onComplete: () => {
94
+ this.opts.onOpenChangeComplete.current(this.opts.open.current);
95
+ },
96
+ });
81
97
  watch(() => this.delayDuration, () => {
82
98
  if (this.delayDuration === undefined)
83
99
  return;
84
- this.#timerFn = useTimeoutFn(() => {
100
+ this.#timerFn = new TimeoutFn(() => {
85
101
  this.#wasOpenDelayed = true;
86
102
  this.opts.open.current = true;
87
103
  }, this.delayDuration, { immediate: false });
@@ -131,7 +147,10 @@ class TooltipRootState {
131
147
  }
132
148
  };
133
149
  }
134
- class TooltipTriggerState {
150
+ export class TooltipTriggerState {
151
+ static create(opts) {
152
+ return new TooltipTriggerState(opts, TooltipRootContext.get());
153
+ }
135
154
  opts;
136
155
  root;
137
156
  #isPointerDown = box(false);
@@ -215,13 +234,16 @@ class TooltipTriggerState {
215
234
  ...attachRef(this.opts.ref, (v) => (this.root.triggerNode = v)),
216
235
  }));
217
236
  }
218
- class TooltipContentState {
237
+ export class TooltipContentState {
238
+ static create(opts) {
239
+ return new TooltipContentState(opts, TooltipRootContext.get());
240
+ }
219
241
  opts;
220
242
  root;
221
243
  constructor(opts, root) {
222
244
  this.opts = opts;
223
245
  this.root = root;
224
- useGraceArea({
246
+ new GraceArea({
225
247
  triggerNode: () => this.root.triggerNode,
226
248
  contentNode: () => this.root.contentNode,
227
249
  enabled: () => this.root.opts.open.current && !this.root.disableHoverableContent,
@@ -287,20 +309,3 @@ class TooltipContentState {
287
309
  onCloseAutoFocus: this.onCloseAutoFocus,
288
310
  };
289
311
  }
290
- //
291
- // CONTEXT METHODS
292
- //
293
- const TooltipProviderContext = new Context("Tooltip.Provider");
294
- const TooltipRootContext = new Context("Tooltip.Root");
295
- export function useTooltipProvider(props) {
296
- return TooltipProviderContext.set(new TooltipProviderState(props));
297
- }
298
- export function useTooltipRoot(props) {
299
- return TooltipRootContext.set(new TooltipRootState(props, TooltipProviderContext.get()));
300
- }
301
- export function useTooltipTrigger(props) {
302
- return new TooltipTriggerState(props, TooltipRootContext.get());
303
- }
304
- export function useTooltipContent(props) {
305
- return new TooltipContentState(props, TooltipRootContext.get());
306
- }
@@ -57,6 +57,10 @@ export type TooltipRootPropsWithoutHTML = WithChildren<{
57
57
  * A callback that will be called when the tooltip is opened or closed.
58
58
  */
59
59
  onOpenChange?: OnChangeFn<boolean>;
60
+ /**
61
+ * A callback that will be called when the tooltip is opened or closed.
62
+ */
63
+ onOpenChangeComplete?: OnChangeFn<boolean>;
60
64
  /**
61
65
  * The delay in milliseconds before the tooltip opens.
62
66
  *
@@ -1,5 +1,5 @@
1
1
  import { Context } from "runed";
2
- import type { ReadableBoxedValues } from "../../../internal/box.svelte.js";
2
+ import { type ReadableBoxedValues } from "svelte-toolbelt";
3
3
  import type { BitsConfigPropsWithoutChildren } from "./types.js";
4
4
  type BitsConfigStateProps = ReadableBoxedValues<BitsConfigPropsWithoutChildren>;
5
5
  export declare const BitsConfigContext: Context<BitsConfigState>;
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box } from "svelte-toolbelt";
3
3
  import type { DismissibleLayerImplProps } from "./types.js";
4
- import { useDismissibleLayer } from "./use-dismissable-layer.svelte.js";
4
+ import { DismissibleLayerState } from "./use-dismissable-layer.svelte.js";
5
5
  import { noop } from "../../../internal/noop.js";
6
6
 
7
7
  let {
@@ -15,7 +15,7 @@
15
15
  ref,
16
16
  }: DismissibleLayerImplProps = $props();
17
17
 
18
- const dismissibleLayerState = useDismissibleLayer({
18
+ const dismissibleLayerState = DismissibleLayerState.create({
19
19
  id: box.with(() => id),
20
20
  interactOutsideBehavior: box.with(() => interactOutsideBehavior),
21
21
  onInteractOutside: box.with(() => onInteractOutside),
@@ -1,19 +1,18 @@
1
- import { type WritableBox } from "svelte-toolbelt";
1
+ import { type WritableBox, type ReadableBoxedValues } from "svelte-toolbelt";
2
2
  import type { DismissibleLayerImplProps } from "./types.js";
3
- import type { ReadableBoxedValues } from "../../../internal/box.svelte.js";
4
- type DismissibleLayerStateProps = ReadableBoxedValues<Required<Omit<DismissibleLayerImplProps, "children" | "ref">>> & {
3
+ interface DismissibleLayerStateOpts extends ReadableBoxedValues<Required<Omit<DismissibleLayerImplProps, "children" | "ref">>> {
5
4
  ref: WritableBox<HTMLElement | null>;
6
- };
5
+ }
7
6
  export declare class DismissibleLayerState {
8
7
  #private;
9
- readonly opts: DismissibleLayerStateProps;
10
- constructor(opts: DismissibleLayerStateProps);
8
+ static create(opts: DismissibleLayerStateOpts): DismissibleLayerState;
9
+ readonly opts: DismissibleLayerStateOpts;
10
+ constructor(opts: DismissibleLayerStateOpts);
11
11
  props: {
12
12
  onfocuscapture: () => void;
13
13
  onblurcapture: () => void;
14
14
  };
15
15
  }
16
- export declare function useDismissibleLayer(props: DismissibleLayerStateProps): DismissibleLayerState;
17
16
  export type FocusOutsideEvent = CustomEvent<{
18
17
  originalEvent: FocusEvent;
19
18
  }>;
@@ -9,6 +9,9 @@ import { isElement } from "../../../internal/is.js";
9
9
  import { isClickTrulyOutside } from "../../../internal/dom.js";
10
10
  globalThis.bitsDismissableLayers ??= new Map();
11
11
  export class DismissibleLayerState {
12
+ static create(opts) {
13
+ return new DismissibleLayerState(opts);
14
+ }
12
15
  opts;
13
16
  #interactOutsideProp;
14
17
  #behaviorType;
@@ -162,9 +165,6 @@ export class DismissibleLayerState {
162
165
  onblurcapture: this.#onblurcapture,
163
166
  };
164
167
  }
165
- export function useDismissibleLayer(props) {
166
- return new DismissibleLayerState(props);
167
- }
168
168
  function getTopMostLayer(layersArr) {
169
169
  return layersArr.findLast(([_, { current: behaviorType }]) => behaviorType === "close" || behaviorType === "ignore");
170
170
  }
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box } from "svelte-toolbelt";
3
3
  import type { EscapeLayerImplProps } from "./types.js";
4
- import { useEscapeLayer } from "./use-escape-layer.svelte.js";
4
+ import { EscapeLayerState } from "./use-escape-layer.svelte.js";
5
5
  import { noop } from "../../../internal/noop.js";
6
6
 
7
7
  let {
@@ -12,7 +12,7 @@
12
12
  ref,
13
13
  }: EscapeLayerImplProps = $props();
14
14
 
15
- useEscapeLayer({
15
+ EscapeLayerState.create({
16
16
  escapeKeydownBehavior: box.with(() => escapeKeydownBehavior),
17
17
  onEscapeKeydown: box.with(() => onEscapeKeydown),
18
18
  enabled: box.with(() => enabled),
@@ -1,14 +1,13 @@
1
- import { DOMContext, type Box } from "svelte-toolbelt";
1
+ import { DOMContext, type Box, type ReadableBoxedValues } from "svelte-toolbelt";
2
2
  import type { EscapeLayerImplProps } from "./types.js";
3
- import type { ReadableBoxedValues } from "../../../internal/box.svelte.js";
4
- type EscapeLayerStateProps = ReadableBoxedValues<Required<Omit<EscapeLayerImplProps, "children" | "ref">>> & {
3
+ interface EscapeLayerStateOpts extends ReadableBoxedValues<Required<Omit<EscapeLayerImplProps, "children" | "ref">>> {
5
4
  ref: Box<HTMLElement | null>;
6
- };
5
+ }
7
6
  export declare class EscapeLayerState {
8
7
  #private;
9
- readonly opts: EscapeLayerStateProps;
8
+ static create(opts: EscapeLayerStateOpts): EscapeLayerState;
9
+ readonly opts: EscapeLayerStateOpts;
10
10
  readonly domContext: DOMContext;
11
- constructor(opts: EscapeLayerStateProps);
11
+ constructor(opts: EscapeLayerStateOpts);
12
12
  }
13
- export declare function useEscapeLayer(props: EscapeLayerStateProps): EscapeLayerState;
14
13
  export {};
@@ -5,6 +5,9 @@ import { kbd } from "../../../internal/kbd.js";
5
5
  import { noop } from "../../../internal/noop.js";
6
6
  globalThis.bitsEscapeLayers ??= new Map();
7
7
  export class EscapeLayerState {
8
+ static create(opts) {
9
+ return new EscapeLayerState(opts);
10
+ }
8
11
  opts;
9
12
  domContext;
10
13
  constructor(opts) {
@@ -36,9 +39,6 @@ export class EscapeLayerState {
36
39
  this.opts.onEscapeKeydown.current(clonedEvent);
37
40
  };
38
41
  }
39
- export function useEscapeLayer(props) {
40
- return new EscapeLayerState(props);
41
- }
42
42
  function isResponsibleEscapeLayer(instance) {
43
43
  const layersArr = [...globalThis.bitsEscapeLayers];
44
44
  /**
@@ -1,12 +1,12 @@
1
1
  <script lang="ts">
2
2
  import { box } from "svelte-toolbelt";
3
- import { useFloatingAnchorState } from "../use-floating-layer.svelte.js";
3
+ import { FloatingAnchorState } from "../use-floating-layer.svelte.js";
4
4
  import type { AnchorProps } from "./index.js";
5
5
  import type { Measurable } from "../../../../internal/floating-svelte/types.js";
6
6
 
7
7
  let { id, children, virtualEl, ref, tooltip = false }: AnchorProps = $props();
8
8
 
9
- useFloatingAnchorState(
9
+ FloatingAnchorState.create(
10
10
  {
11
11
  id: box.with(() => id),
12
12
  virtualEl: box.with(() => virtualEl as unknown as Measurable | null),
@@ -1,12 +1,12 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
- import { useFloatingArrowState } from "../use-floating-layer.svelte.js";
3
+ import { FloatingArrowState } from "../use-floating-layer.svelte.js";
4
4
  import { Arrow, type ArrowProps } from "../../arrow/index.js";
5
5
  import { useId } from "../../../../internal/use-id.js";
6
6
 
7
7
  let { id = useId(), ref = $bindable(null), ...restProps }: ArrowProps = $props();
8
8
 
9
- const arrowState = useFloatingArrowState({
9
+ const arrowState = FloatingArrowState.create({
10
10
  id: box.with(() => id),
11
11
  ref: box.with(
12
12
  () => ref,
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
- import { useFloatingContentState } from "../use-floating-layer.svelte.js";
3
+ import { FloatingContentState } from "../use-floating-layer.svelte.js";
4
4
  import type { ContentImplProps } from "./index.js";
5
5
  import { useId } from "../../../../internal/use-id.js";
6
6
 
@@ -28,7 +28,7 @@
28
28
  tooltip = false,
29
29
  }: ContentImplProps = $props();
30
30
 
31
- const contentState = useFloatingContentState(
31
+ const contentState = FloatingContentState.create(
32
32
  {
33
33
  side: box.with(() => side),
34
34
  sideOffset: box.with(() => sideOffset),