bits-ui 2.6.2 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/README.md +4 -4
  2. package/dist/bits/accordion/accordion.svelte.d.ts +66 -58
  3. package/dist/bits/accordion/accordion.svelte.js +56 -51
  4. package/dist/bits/accordion/components/accordion-content.svelte +4 -4
  5. package/dist/bits/accordion/components/accordion-header.svelte +2 -2
  6. package/dist/bits/accordion/components/accordion-item.svelte +2 -2
  7. package/dist/bits/accordion/components/accordion-trigger.svelte +2 -2
  8. package/dist/bits/accordion/components/accordion.svelte +2 -2
  9. package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +2 -2
  10. package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +2 -2
  11. package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +3 -3
  12. package/dist/bits/alert-dialog/components/alert-dialog.svelte +9 -3
  13. package/dist/bits/aspect-ratio/aspect-ratio.svelte.d.ts +10 -16
  14. package/dist/bits/aspect-ratio/aspect-ratio.svelte.js +4 -11
  15. package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +2 -2
  16. package/dist/bits/avatar/avatar.svelte.d.ts +25 -33
  17. package/dist/bits/avatar/avatar.svelte.js +20 -21
  18. package/dist/bits/avatar/components/avatar-fallback.svelte +2 -2
  19. package/dist/bits/avatar/components/avatar-image.svelte +2 -2
  20. package/dist/bits/avatar/components/avatar.svelte +2 -2
  21. package/dist/bits/calendar/calendar.svelte.d.ts +117 -106
  22. package/dist/bits/calendar/calendar.svelte.js +51 -52
  23. package/dist/bits/calendar/components/calendar-cell.svelte +2 -2
  24. package/dist/bits/calendar/components/calendar-day.svelte +2 -2
  25. package/dist/bits/calendar/components/calendar-grid-body.svelte +2 -2
  26. package/dist/bits/calendar/components/calendar-grid-head.svelte +2 -2
  27. package/dist/bits/calendar/components/calendar-grid-row.svelte +2 -2
  28. package/dist/bits/calendar/components/calendar-grid.svelte +2 -2
  29. package/dist/bits/calendar/components/calendar-head-cell.svelte +2 -2
  30. package/dist/bits/calendar/components/calendar-header.svelte +2 -2
  31. package/dist/bits/calendar/components/calendar-heading.svelte +5 -5
  32. package/dist/bits/calendar/components/calendar-month-select.svelte +2 -2
  33. package/dist/bits/calendar/components/calendar-next-button.svelte +2 -2
  34. package/dist/bits/calendar/components/calendar-prev-button.svelte +2 -2
  35. package/dist/bits/calendar/components/calendar-year-select.svelte +2 -2
  36. package/dist/bits/calendar/components/calendar.svelte +2 -2
  37. package/dist/bits/checkbox/checkbox.svelte.d.ts +37 -34
  38. package/dist/bits/checkbox/checkbox.svelte.js +19 -22
  39. package/dist/bits/checkbox/components/checkbox-group-label.svelte +2 -2
  40. package/dist/bits/checkbox/components/checkbox-group.svelte +2 -2
  41. package/dist/bits/checkbox/components/checkbox-input.svelte +2 -2
  42. package/dist/bits/checkbox/components/checkbox.svelte +2 -2
  43. package/dist/bits/collapsible/collapsible.svelte.d.ts +30 -27
  44. package/dist/bits/collapsible/collapsible.svelte.js +23 -15
  45. package/dist/bits/collapsible/components/collapsible-content.svelte +5 -5
  46. package/dist/bits/collapsible/components/collapsible-content.svelte.d.ts +1 -4
  47. package/dist/bits/collapsible/components/collapsible-trigger.svelte +2 -2
  48. package/dist/bits/collapsible/components/collapsible.svelte +4 -2
  49. package/dist/bits/collapsible/types.d.ts +4 -0
  50. package/dist/bits/combobox/components/combobox-input.svelte +2 -2
  51. package/dist/bits/combobox/components/combobox-trigger.svelte +2 -2
  52. package/dist/bits/combobox/components/combobox.svelte +4 -2
  53. package/dist/bits/command/command.svelte.d.ts +103 -92
  54. package/dist/bits/command/command.svelte.js +55 -57
  55. package/dist/bits/command/components/_command-label.svelte +2 -2
  56. package/dist/bits/command/components/command-empty.svelte +2 -2
  57. package/dist/bits/command/components/command-group-heading.svelte +2 -2
  58. package/dist/bits/command/components/command-group-items.svelte +2 -2
  59. package/dist/bits/command/components/command-group.svelte +2 -2
  60. package/dist/bits/command/components/command-input.svelte +2 -2
  61. package/dist/bits/command/components/command-item.svelte +2 -2
  62. package/dist/bits/command/components/command-link-item.svelte +2 -2
  63. package/dist/bits/command/components/command-list.svelte +2 -2
  64. package/dist/bits/command/components/command-loading.svelte +2 -2
  65. package/dist/bits/command/components/command-separator.svelte +2 -2
  66. package/dist/bits/command/components/command-viewport.svelte +2 -2
  67. package/dist/bits/command/components/command.svelte +2 -2
  68. package/dist/bits/context-menu/components/context-menu-content-static.svelte +3 -3
  69. package/dist/bits/context-menu/components/context-menu-content.svelte +3 -3
  70. package/dist/bits/context-menu/components/context-menu-trigger.svelte +2 -2
  71. package/dist/bits/context-menu/components/context-menu.svelte +16 -11
  72. package/dist/bits/date-field/components/date-field-hidden-input.svelte +2 -2
  73. package/dist/bits/date-field/components/date-field-input.svelte +2 -2
  74. package/dist/bits/date-field/components/date-field-label.svelte +2 -2
  75. package/dist/bits/date-field/components/date-field-segment.svelte +2 -2
  76. package/dist/bits/date-field/components/date-field.svelte +2 -2
  77. package/dist/bits/date-field/date-field.svelte.d.ts +85 -74
  78. package/dist/bits/date-field/date-field.svelte.js +55 -53
  79. package/dist/bits/date-picker/components/date-picker-calendar.svelte +2 -2
  80. package/dist/bits/date-picker/components/date-picker.svelte +8 -6
  81. package/dist/bits/date-picker/date-picker.svelte.d.ts +10 -10
  82. package/dist/bits/date-picker/date-picker.svelte.js +6 -5
  83. package/dist/bits/date-picker/types.d.ts +4 -0
  84. package/dist/bits/date-range-field/components/date-range-field-input.svelte +2 -2
  85. package/dist/bits/date-range-field/components/date-range-field-label.svelte +2 -2
  86. package/dist/bits/date-range-field/components/date-range-field.svelte +2 -2
  87. package/dist/bits/date-range-field/date-range-field.svelte.d.ts +32 -29
  88. package/dist/bits/date-range-field/date-range-field.svelte.js +33 -32
  89. package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +2 -2
  90. package/dist/bits/date-range-picker/components/date-range-picker.svelte +8 -6
  91. package/dist/bits/date-range-picker/date-range-picker.svelte.d.ts +10 -10
  92. package/dist/bits/date-range-picker/date-range-picker.svelte.js +6 -5
  93. package/dist/bits/date-range-picker/types.d.ts +4 -0
  94. package/dist/bits/dialog/components/dialog-close.svelte +2 -2
  95. package/dist/bits/dialog/components/dialog-content.svelte +3 -3
  96. package/dist/bits/dialog/components/dialog-description.svelte +2 -2
  97. package/dist/bits/dialog/components/dialog-overlay.svelte +3 -6
  98. package/dist/bits/dialog/components/dialog-title.svelte +2 -2
  99. package/dist/bits/dialog/components/dialog-trigger.svelte +2 -2
  100. package/dist/bits/dialog/components/dialog.svelte +9 -3
  101. package/dist/bits/dialog/dialog.svelte.d.ts +75 -65
  102. package/dist/bits/dialog/dialog.svelte.js +47 -38
  103. package/dist/bits/dialog/types.d.ts +4 -0
  104. package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +3 -3
  105. package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +3 -3
  106. package/dist/bits/label/components/label.svelte +2 -2
  107. package/dist/bits/label/label.svelte.d.ts +8 -7
  108. package/dist/bits/label/label.svelte.js +4 -4
  109. package/dist/bits/link-preview/components/link-preview-content-static.svelte +3 -3
  110. package/dist/bits/link-preview/components/link-preview-content.svelte +3 -3
  111. package/dist/bits/link-preview/components/link-preview-trigger.svelte +2 -2
  112. package/dist/bits/link-preview/components/link-preview.svelte +4 -2
  113. package/dist/bits/link-preview/link-preview.svelte.d.ts +28 -25
  114. package/dist/bits/link-preview/link-preview.svelte.js +24 -16
  115. package/dist/bits/link-preview/types.d.ts +4 -0
  116. package/dist/bits/menu/components/menu-arrow.svelte +2 -2
  117. package/dist/bits/menu/components/menu-checkbox-group.svelte +2 -2
  118. package/dist/bits/menu/components/menu-checkbox-item.svelte +2 -2
  119. package/dist/bits/menu/components/menu-content-static.svelte +3 -3
  120. package/dist/bits/menu/components/menu-content.svelte +3 -3
  121. package/dist/bits/menu/components/menu-group-heading.svelte +2 -2
  122. package/dist/bits/menu/components/menu-group.svelte +2 -2
  123. package/dist/bits/menu/components/menu-item.svelte +2 -2
  124. package/dist/bits/menu/components/menu-radio-group.svelte +2 -2
  125. package/dist/bits/menu/components/menu-radio-item.svelte +2 -2
  126. package/dist/bits/menu/components/menu-separator.svelte +2 -2
  127. package/dist/bits/menu/components/menu-sub-content-static.svelte +3 -3
  128. package/dist/bits/menu/components/menu-sub-content.svelte +3 -3
  129. package/dist/bits/menu/components/menu-sub-trigger.svelte +2 -2
  130. package/dist/bits/menu/components/menu-sub.svelte +9 -3
  131. package/dist/bits/menu/components/menu-trigger.svelte +2 -2
  132. package/dist/bits/menu/components/menu.svelte +16 -11
  133. package/dist/bits/menu/menu.svelte.d.ts +136 -119
  134. package/dist/bits/menu/menu.svelte.js +106 -96
  135. package/dist/bits/menu/types.d.ts +8 -0
  136. package/dist/bits/menubar/components/menubar-content-static.svelte +2 -2
  137. package/dist/bits/menubar/components/menubar-content.svelte +2 -2
  138. package/dist/bits/menubar/components/menubar-menu.svelte +2 -2
  139. package/dist/bits/menubar/components/menubar-trigger.svelte +4 -4
  140. package/dist/bits/menubar/components/menubar.svelte +2 -2
  141. package/dist/bits/menubar/menubar.svelte.d.ts +37 -34
  142. package/dist/bits/menubar/menubar.svelte.js +21 -21
  143. package/dist/bits/meter/components/meter.svelte +2 -2
  144. package/dist/bits/meter/meter.svelte.d.ts +10 -9
  145. package/dist/bits/meter/meter.svelte.js +4 -4
  146. package/dist/bits/navigation-menu/components/navigation-menu-content-impl.svelte +2 -2
  147. package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +3 -3
  148. package/dist/bits/navigation-menu/components/navigation-menu-indicator-impl.svelte +2 -2
  149. package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +3 -3
  150. package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +2 -2
  151. package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +2 -2
  152. package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +2 -2
  153. package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +2 -2
  154. package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +2 -2
  155. package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +3 -3
  156. package/dist/bits/navigation-menu/components/navigation-menu.svelte +2 -2
  157. package/dist/bits/navigation-menu/navigation-menu.svelte.d.ts +116 -109
  158. package/dist/bits/navigation-menu/navigation-menu.svelte.js +78 -81
  159. package/dist/bits/pagination/components/pagination-next-button.svelte +2 -2
  160. package/dist/bits/pagination/components/pagination-page.svelte +2 -2
  161. package/dist/bits/pagination/components/pagination-prev-button.svelte +2 -2
  162. package/dist/bits/pagination/components/pagination.svelte +2 -2
  163. package/dist/bits/pagination/pagination.svelte.d.ts +34 -32
  164. package/dist/bits/pagination/pagination.svelte.js +15 -15
  165. package/dist/bits/pin-input/components/pin-input-cell.svelte +2 -2
  166. package/dist/bits/pin-input/components/pin-input.svelte +2 -2
  167. package/dist/bits/pin-input/pin-input.svelte.d.ts +22 -21
  168. package/dist/bits/pin-input/pin-input.svelte.js +9 -9
  169. package/dist/bits/popover/components/popover-close.svelte +2 -2
  170. package/dist/bits/popover/components/popover-content-static.svelte +3 -3
  171. package/dist/bits/popover/components/popover-content.svelte +3 -3
  172. package/dist/bits/popover/components/popover-trigger.svelte +2 -2
  173. package/dist/bits/popover/components/popover.svelte +9 -3
  174. package/dist/bits/popover/popover.svelte.d.ts +36 -31
  175. package/dist/bits/popover/popover.svelte.js +26 -21
  176. package/dist/bits/popover/types.d.ts +4 -0
  177. package/dist/bits/progress/components/progress.svelte +2 -2
  178. package/dist/bits/progress/progress.svelte.d.ts +10 -9
  179. package/dist/bits/progress/progress.svelte.js +4 -4
  180. package/dist/bits/radio-group/components/radio-group-input.svelte +2 -2
  181. package/dist/bits/radio-group/components/radio-group-item.svelte +2 -2
  182. package/dist/bits/radio-group/components/radio-group.svelte +4 -2
  183. package/dist/bits/radio-group/radio-group.svelte.d.ts +26 -19
  184. package/dist/bits/radio-group/radio-group.svelte.js +26 -19
  185. package/dist/bits/radio-group/types.d.ts +13 -6
  186. package/dist/bits/range-calendar/components/range-calendar-cell.svelte +2 -2
  187. package/dist/bits/range-calendar/components/range-calendar-day.svelte +2 -2
  188. package/dist/bits/range-calendar/components/range-calendar.svelte +2 -2
  189. package/dist/bits/range-calendar/range-calendar.svelte.d.ts +21 -20
  190. package/dist/bits/range-calendar/range-calendar.svelte.js +12 -12
  191. package/dist/bits/rating-group/components/rating-group-input.svelte +2 -2
  192. package/dist/bits/rating-group/components/rating-group-item.svelte +2 -2
  193. package/dist/bits/rating-group/components/rating-group.svelte +2 -2
  194. package/dist/bits/rating-group/rating-group.svelte.d.ts +19 -18
  195. package/dist/bits/rating-group/rating-group.svelte.js +16 -17
  196. package/dist/bits/scroll-area/components/scroll-area-corner-impl.svelte +2 -2
  197. package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +3 -3
  198. package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +6 -6
  199. package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +3 -3
  200. package/dist/bits/scroll-area/components/scroll-area-scrollbar-shared.svelte +2 -2
  201. package/dist/bits/scroll-area/components/scroll-area-scrollbar-visible.svelte +2 -2
  202. package/dist/bits/scroll-area/components/scroll-area-scrollbar-x.svelte +2 -2
  203. package/dist/bits/scroll-area/components/scroll-area-scrollbar-y.svelte +2 -2
  204. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +2 -2
  205. package/dist/bits/scroll-area/components/scroll-area-thumb-impl.svelte +2 -2
  206. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +2 -5
  207. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +2 -2
  208. package/dist/bits/scroll-area/components/scroll-area.svelte +2 -2
  209. package/dist/bits/scroll-area/scroll-area.svelte.d.ts +98 -78
  210. package/dist/bits/scroll-area/scroll-area.svelte.js +78 -74
  211. package/dist/bits/select/components/select-content-static.svelte +3 -3
  212. package/dist/bits/select/components/select-content.svelte +3 -3
  213. package/dist/bits/select/components/select-group-heading.svelte +2 -2
  214. package/dist/bits/select/components/select-group.svelte +2 -2
  215. package/dist/bits/select/components/select-hidden-input.svelte +2 -2
  216. package/dist/bits/select/components/select-item.svelte +2 -2
  217. package/dist/bits/select/components/select-scroll-down-button.svelte +2 -2
  218. package/dist/bits/select/components/select-scroll-up-button.svelte +2 -2
  219. package/dist/bits/select/components/select-trigger.svelte +2 -2
  220. package/dist/bits/select/components/select-viewport.svelte +2 -2
  221. package/dist/bits/select/components/select.svelte +4 -2
  222. package/dist/bits/select/select.svelte.d.ts +127 -113
  223. package/dist/bits/select/select.svelte.js +74 -62
  224. package/dist/bits/select/types.d.ts +4 -0
  225. package/dist/bits/separator/components/separator.svelte +2 -2
  226. package/dist/bits/separator/separator.svelte.d.ts +9 -8
  227. package/dist/bits/separator/separator.svelte.js +4 -4
  228. package/dist/bits/slider/components/slider-range.svelte +2 -2
  229. package/dist/bits/slider/components/slider-thumb-label.svelte +2 -2
  230. package/dist/bits/slider/components/slider-thumb.svelte +2 -2
  231. package/dist/bits/slider/components/slider-tick-label.svelte +2 -2
  232. package/dist/bits/slider/components/slider-tick.svelte +2 -2
  233. package/dist/bits/slider/components/slider.svelte +2 -2
  234. package/dist/bits/slider/slider.svelte.d.ts +82 -73
  235. package/dist/bits/slider/slider.svelte.js +30 -28
  236. package/dist/bits/switch/components/switch-input.svelte +2 -2
  237. package/dist/bits/switch/components/switch-thumb.svelte +2 -2
  238. package/dist/bits/switch/components/switch.svelte +2 -2
  239. package/dist/bits/switch/switch.svelte.d.ts +19 -17
  240. package/dist/bits/switch/switch.svelte.js +13 -13
  241. package/dist/bits/tabs/components/tabs-content.svelte +2 -2
  242. package/dist/bits/tabs/components/tabs-list.svelte +2 -2
  243. package/dist/bits/tabs/components/tabs-trigger.svelte +2 -2
  244. package/dist/bits/tabs/components/tabs.svelte +2 -2
  245. package/dist/bits/tabs/tabs.svelte.d.ts +33 -29
  246. package/dist/bits/tabs/tabs.svelte.js +19 -19
  247. package/dist/bits/time-field/components/time-field-hidden-input.svelte +2 -2
  248. package/dist/bits/time-field/components/time-field-input.svelte +2 -2
  249. package/dist/bits/time-field/components/time-field-label.svelte +2 -2
  250. package/dist/bits/time-field/components/time-field-segment.svelte +2 -2
  251. package/dist/bits/time-field/components/time-field.svelte +2 -2
  252. package/dist/bits/time-field/time-field.svelte.d.ts +72 -66
  253. package/dist/bits/time-field/time-field.svelte.js +37 -42
  254. package/dist/bits/time-range-field/components/time-range-field-input.svelte +2 -2
  255. package/dist/bits/time-range-field/components/time-range-field-label.svelte +2 -2
  256. package/dist/bits/time-range-field/components/time-range-field.svelte +2 -2
  257. package/dist/bits/time-range-field/time-range-field.svelte.d.ts +35 -31
  258. package/dist/bits/time-range-field/time-range-field.svelte.js +34 -32
  259. package/dist/bits/toggle/components/toggle.svelte +2 -2
  260. package/dist/bits/toggle/toggle.svelte.d.ts +11 -10
  261. package/dist/bits/toggle/toggle.svelte.js +4 -4
  262. package/dist/bits/toggle-group/components/toggle-group-item.svelte +2 -2
  263. package/dist/bits/toggle-group/components/toggle-group.svelte +2 -2
  264. package/dist/bits/toggle-group/toggle-group.svelte.d.ts +48 -43
  265. package/dist/bits/toggle-group/toggle-group.svelte.js +24 -25
  266. package/dist/bits/toolbar/components/toolbar-button.svelte +2 -2
  267. package/dist/bits/toolbar/components/toolbar-group-item.svelte +2 -2
  268. package/dist/bits/toolbar/components/toolbar-group.svelte +2 -2
  269. package/dist/bits/toolbar/components/toolbar-link.svelte +2 -2
  270. package/dist/bits/toolbar/components/toolbar.svelte +2 -2
  271. package/dist/bits/toolbar/toolbar.svelte.d.ts +59 -51
  272. package/dist/bits/toolbar/toolbar.svelte.js +32 -30
  273. package/dist/bits/tooltip/components/tooltip-content-static.svelte +3 -3
  274. package/dist/bits/tooltip/components/tooltip-content.svelte +3 -3
  275. package/dist/bits/tooltip/components/tooltip-provider.svelte +2 -2
  276. package/dist/bits/tooltip/components/tooltip-trigger.svelte +2 -2
  277. package/dist/bits/tooltip/components/tooltip.svelte +4 -2
  278. package/dist/bits/tooltip/tooltip.svelte.d.ts +33 -29
  279. package/dist/bits/tooltip/tooltip.svelte.js +33 -28
  280. package/dist/bits/tooltip/types.d.ts +4 -0
  281. package/dist/bits/utilities/config/bits-config.d.ts +1 -1
  282. package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -2
  283. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +6 -7
  284. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +3 -3
  285. package/dist/bits/utilities/escape-layer/escape-layer.svelte +2 -2
  286. package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.d.ts +6 -7
  287. package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.js +3 -3
  288. package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -2
  289. package/dist/bits/utilities/floating-layer/components/floating-layer-arrow.svelte +2 -2
  290. package/dist/bits/utilities/floating-layer/components/floating-layer-content.svelte +2 -2
  291. package/dist/bits/utilities/floating-layer/components/floating-layer.svelte +2 -2
  292. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +25 -23
  293. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +25 -25
  294. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +1 -1
  295. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +1 -1
  296. package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte +1 -1
  297. package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte.d.ts +1 -1
  298. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +1 -1
  299. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte.d.ts +1 -1
  300. package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -3
  301. package/dist/bits/utilities/presence-layer/presence-layer.svelte +8 -8
  302. package/dist/bits/utilities/presence-layer/presence.svelte.d.ts +42 -0
  303. package/dist/bits/utilities/presence-layer/presence.svelte.js +116 -0
  304. package/dist/bits/utilities/presence-layer/types.d.ts +3 -5
  305. package/dist/bits/utilities/scroll-lock/scroll-lock.svelte +2 -2
  306. package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -2
  307. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +7 -7
  308. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +3 -3
  309. package/dist/internal/animations-complete.d.ts +12 -0
  310. package/dist/internal/animations-complete.js +55 -0
  311. package/dist/internal/arrays.js +20 -36
  312. package/dist/internal/attrs.d.ts +9 -2
  313. package/dist/internal/attrs.js +21 -11
  314. package/dist/internal/body-scroll-lock.svelte.d.ts +10 -0
  315. package/dist/internal/body-scroll-lock.svelte.js +106 -0
  316. package/dist/internal/data-typeahead.svelte.d.ts +15 -0
  317. package/dist/internal/data-typeahead.svelte.js +33 -0
  318. package/dist/internal/date-time/calendar-helpers.svelte.d.ts +1 -1
  319. package/dist/internal/dom-typeahead.svelte.d.ts +14 -0
  320. package/dist/internal/dom-typeahead.svelte.js +44 -0
  321. package/dist/internal/dom.d.ts +0 -2
  322. package/dist/internal/dom.js +0 -15
  323. package/dist/internal/{use-grace-area.svelte.d.ts → grace-area.svelte.d.ts} +5 -4
  324. package/dist/internal/{use-grace-area.svelte.js → grace-area.svelte.js} +60 -56
  325. package/dist/internal/open-change-complete.d.ts +13 -0
  326. package/dist/internal/open-change-complete.js +24 -0
  327. package/dist/internal/{use-roving-focus.svelte.d.ts → roving-focus-group.d.ts} +9 -8
  328. package/dist/internal/{use-roving-focus.svelte.js → roving-focus-group.js} +30 -34
  329. package/dist/internal/shared-state.svelte.d.ts +6 -0
  330. package/dist/internal/shared-state.svelte.js +31 -0
  331. package/dist/internal/should-trap-focus.js +1 -2
  332. package/dist/internal/state-machine.d.ts +16 -0
  333. package/dist/internal/state-machine.js +18 -0
  334. package/dist/internal/svelte-resize-observer.svelte.d.ts +6 -0
  335. package/dist/internal/svelte-resize-observer.svelte.js +25 -0
  336. package/dist/internal/tabbable.d.ts +0 -1
  337. package/dist/internal/tabbable.js +0 -11
  338. package/dist/internal/timeout-fn.d.ts +16 -0
  339. package/dist/internal/timeout-fn.js +38 -0
  340. package/dist/internal/types.d.ts +2 -2
  341. package/package.json +1 -1
  342. package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +0 -4
  343. package/dist/bits/utilities/presence-layer/use-presence.svelte.js +0 -97
  344. package/dist/internal/box.svelte.d.ts +0 -21
  345. package/dist/internal/box.svelte.js +0 -26
  346. package/dist/internal/create-event-hook.svelte.d.ts +0 -18
  347. package/dist/internal/create-event-hook.svelte.js +0 -29
  348. package/dist/internal/create-shared-hook.svelte.d.ts +0 -2
  349. package/dist/internal/create-shared-hook.svelte.js +0 -27
  350. package/dist/internal/sleep.d.ts +0 -1
  351. package/dist/internal/sleep.js +0 -3
  352. package/dist/internal/use-after-animations.svelte.d.ts +0 -5
  353. package/dist/internal/use-after-animations.svelte.js +0 -27
  354. package/dist/internal/use-body-scroll-lock.svelte.d.ts +0 -6
  355. package/dist/internal/use-body-scroll-lock.svelte.js +0 -106
  356. package/dist/internal/use-data-typeahead.svelte.d.ts +0 -15
  357. package/dist/internal/use-data-typeahead.svelte.js +0 -34
  358. package/dist/internal/use-dom-typeahead.svelte.d.ts +0 -13
  359. package/dist/internal/use-dom-typeahead.svelte.js +0 -32
  360. package/dist/internal/use-form-control.svelte.d.ts +0 -4
  361. package/dist/internal/use-form-control.svelte.js +0 -16
  362. package/dist/internal/use-resize-observer.svelte.d.ts +0 -2
  363. package/dist/internal/use-resize-observer.svelte.js +0 -17
  364. package/dist/internal/use-state-machine.svelte.d.ts +0 -24
  365. package/dist/internal/use-state-machine.svelte.js +0 -28
  366. package/dist/internal/use-timeout-fn.svelte.d.ts +0 -25
  367. package/dist/internal/use-timeout-fn.svelte.js +0 -39
@@ -1,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),
@@ -1,10 +1,10 @@
1
1
  <script lang="ts">
2
2
  import type { Snippet } from "svelte";
3
- import { useFloatingRootState } from "../use-floating-layer.svelte.js";
3
+ import { FloatingRootState } from "../use-floating-layer.svelte.js";
4
4
 
5
5
  let { children, tooltip = false }: { children?: Snippet; tooltip?: boolean } = $props();
6
6
 
7
- useFloatingRootState(tooltip);
7
+ FloatingRootState.create(tooltip);
8
8
  </script>
9
9
 
10
10
  {@render children?.()}
@@ -1,7 +1,6 @@
1
1
  import { type Middleware, type Placement } from "@floating-ui/dom";
2
- import { type ReadableBox } from "svelte-toolbelt";
3
- import type { Arrayable, WithRefProps } from "../../../internal/types.js";
4
- import type { Box, ReadableBoxedValues } from "../../../internal/box.svelte.js";
2
+ import { type ReadableBoxedValues, type ReadableBox, type Box } from "svelte-toolbelt";
3
+ import type { Arrayable, WithRefOpts } from "../../../internal/types.js";
5
4
  import type { Measurable, UseFloatingReturn } from "../../../internal/floating-svelte/types.js";
6
5
  import type { Direction, StyleProperties } from "../../../shared/index.js";
7
6
  export declare const SIDE_OPTIONS: readonly ["top", "right", "bottom", "left"];
@@ -9,13 +8,14 @@ export declare const ALIGN_OPTIONS: readonly ["start", "center", "end"];
9
8
  export type Side = (typeof SIDE_OPTIONS)[number];
10
9
  export type Align = (typeof ALIGN_OPTIONS)[number];
11
10
  export type Boundary = Element | null;
12
- declare class FloatingRootState {
11
+ export declare class FloatingRootState {
12
+ static create(tooltip?: boolean): FloatingRootState;
13
13
  anchorNode: import("svelte-toolbelt").WritableBox<HTMLElement | Measurable | null>;
14
14
  customAnchorNode: import("svelte-toolbelt").WritableBox<string | HTMLElement | Measurable | null>;
15
15
  triggerNode: ReadableBox<Measurable | HTMLElement | null>;
16
16
  constructor();
17
17
  }
18
- export type FloatingContentStateProps = ReadableBoxedValues<{
18
+ export interface FloatingContentStateOpts extends ReadableBoxedValues<{
19
19
  id: string;
20
20
  wrapperId: string;
21
21
  side: Side;
@@ -35,10 +35,12 @@ export type FloatingContentStateProps = ReadableBoxedValues<{
35
35
  style: StyleProperties | null | undefined | string;
36
36
  enabled: boolean;
37
37
  customAnchor: string | HTMLElement | null | Measurable;
38
- }>;
39
- declare class FloatingContentState {
38
+ }> {
39
+ }
40
+ export declare class FloatingContentState {
40
41
  #private;
41
- readonly opts: FloatingContentStateProps;
42
+ static create(opts: FloatingContentStateOpts, tooltip?: boolean): FloatingContentState;
43
+ readonly opts: FloatingContentStateOpts;
42
44
  readonly root: FloatingRootState;
43
45
  contentRef: import("svelte-toolbelt").WritableBox<HTMLElement | null>;
44
46
  wrapperRef: import("svelte-toolbelt").WritableBox<HTMLElement | null>;
@@ -911,14 +913,16 @@ declare class FloatingContentState {
911
913
  transform: string;
912
914
  visibility: string | undefined;
913
915
  };
914
- constructor(opts: FloatingContentStateProps, root: FloatingRootState);
916
+ constructor(opts: FloatingContentStateOpts, root: FloatingRootState);
917
+ }
918
+ interface FloatingArrowStateOpts extends WithRefOpts {
915
919
  }
916
- type FloatingArrowStateProps = WithRefProps;
917
- declare class FloatingArrowState {
918
- readonly opts: FloatingArrowStateProps;
920
+ export declare class FloatingArrowState {
921
+ static create(opts: FloatingArrowStateOpts): FloatingArrowState;
922
+ readonly opts: FloatingArrowStateOpts;
919
923
  readonly content: FloatingContentState;
920
- constructor(opts: FloatingArrowStateProps, content: FloatingContentState);
921
- props: {
924
+ constructor(opts: FloatingArrowStateOpts, content: FloatingContentState);
925
+ readonly props: {
922
926
  readonly id: string;
923
927
  readonly style: {
924
928
  [x: string]: string | number | undefined;
@@ -932,20 +936,18 @@ declare class FloatingArrowState {
932
936
  readonly "data-side": "left" | "right" | "top" | "bottom";
933
937
  };
934
938
  }
935
- type FloatingAnchorStateProps = ReadableBoxedValues<{
939
+ interface FloatingAnchorStateOpts extends ReadableBoxedValues<{
936
940
  id: string;
937
941
  virtualEl?: Measurable | null;
938
942
  ref: Measurable | HTMLElement | null;
939
- }>;
940
- declare class FloatingAnchorState {
941
- readonly opts: FloatingAnchorStateProps;
943
+ }> {
944
+ }
945
+ export declare class FloatingAnchorState {
946
+ static create(opts: FloatingAnchorStateOpts, tooltip?: boolean): FloatingAnchorState;
947
+ readonly opts: FloatingAnchorStateOpts;
942
948
  readonly root: FloatingRootState;
943
- constructor(opts: FloatingAnchorStateProps, root: FloatingRootState);
949
+ constructor(opts: FloatingAnchorStateOpts, root: FloatingRootState);
944
950
  }
945
- export declare function useFloatingRootState(tooltip?: boolean): FloatingRootState;
946
- export declare function useFloatingContentState(props: FloatingContentStateProps, tooltip?: boolean): FloatingContentState;
947
- export declare function useFloatingArrowState(props: FloatingArrowStateProps): FloatingArrowState;
948
- export declare function useFloatingAnchorState(props: FloatingAnchorStateProps, tooltip?: boolean): FloatingAnchorState;
949
951
  export declare function getSideFromPlacement(placement: Placement): "left" | "right" | "top" | "bottom";
950
952
  export declare function getAlignFromPlacement(placement: Placement): "end" | "center" | "start";
951
953
  export {};
@@ -12,7 +12,15 @@ const OPPOSITE_SIDE = {
12
12
  bottom: "top",
13
13
  left: "right",
14
14
  };
15
- class FloatingRootState {
15
+ const FloatingRootContext = new Context("Floating.Root");
16
+ const FloatingContentContext = new Context("Floating.Content");
17
+ const FloatingTooltipRootContext = new Context("Floating.Root");
18
+ export class FloatingRootState {
19
+ static create(tooltip = false) {
20
+ return tooltip
21
+ ? FloatingTooltipRootContext.set(new FloatingRootState())
22
+ : FloatingRootContext.set(new FloatingRootState());
23
+ }
16
24
  anchorNode = box(null);
17
25
  customAnchorNode = box(null);
18
26
  triggerNode = box(null);
@@ -32,7 +40,12 @@ class FloatingRootState {
32
40
  });
33
41
  }
34
42
  }
35
- class FloatingContentState {
43
+ export class FloatingContentState {
44
+ static create(opts, tooltip = false) {
45
+ return tooltip
46
+ ? FloatingContentContext.set(new FloatingContentState(opts, FloatingTooltipRootContext.get()))
47
+ : FloatingContentContext.set(new FloatingContentState(opts, FloatingRootContext.get()));
48
+ }
36
49
  opts;
37
50
  root;
38
51
  // nodes
@@ -202,7 +215,10 @@ class FloatingContentState {
202
215
  });
203
216
  }
204
217
  }
205
- class FloatingArrowState {
218
+ export class FloatingArrowState {
219
+ static create(opts) {
220
+ return new FloatingArrowState(opts, FloatingContentContext.get());
221
+ }
206
222
  opts;
207
223
  content;
208
224
  constructor(opts, content) {
@@ -216,7 +232,12 @@ class FloatingArrowState {
216
232
  ...attachRef(this.content.arrowRef),
217
233
  }));
218
234
  }
219
- class FloatingAnchorState {
235
+ export class FloatingAnchorState {
236
+ static create(opts, tooltip = false) {
237
+ return tooltip
238
+ ? new FloatingAnchorState(opts, FloatingTooltipRootContext.get())
239
+ : new FloatingAnchorState(opts, FloatingRootContext.get());
240
+ }
220
241
  opts;
221
242
  root;
222
243
  constructor(opts, root) {
@@ -230,27 +251,6 @@ class FloatingAnchorState {
230
251
  }
231
252
  }
232
253
  }
233
- const FloatingRootContext = new Context("Floating.Root");
234
- const FloatingContentContext = new Context("Floating.Content");
235
- const FloatingTooltipRootContext = new Context("Floating.Root");
236
- export function useFloatingRootState(tooltip = false) {
237
- return tooltip
238
- ? FloatingTooltipRootContext.set(new FloatingRootState())
239
- : FloatingRootContext.set(new FloatingRootState());
240
- }
241
- export function useFloatingContentState(props, tooltip = false) {
242
- return tooltip
243
- ? FloatingContentContext.set(new FloatingContentState(props, FloatingTooltipRootContext.get()))
244
- : FloatingContentContext.set(new FloatingContentState(props, FloatingRootContext.get()));
245
- }
246
- export function useFloatingArrowState(props) {
247
- return new FloatingArrowState(props, FloatingContentContext.get());
248
- }
249
- export function useFloatingAnchorState(props, tooltip = false) {
250
- return tooltip
251
- ? new FloatingAnchorState(props, FloatingTooltipRootContext.get())
252
- : new FloatingAnchorState(props, FloatingRootContext.get());
253
- }
254
254
  //
255
255
  // HELPERS
256
256
  //
@@ -1,5 +1,5 @@
1
+ import { type ReadableBoxedValues } from "svelte-toolbelt";
1
2
  import { Context } from "runed";
2
- import type { ReadableBoxedValues } from "../../../internal/box.svelte.js";
3
3
  import { type EventCallback } from "../../../internal/events.js";
4
4
  export type FocusScopeContextValue = {
5
5
  ignoreCloseAutoFocus: boolean;
@@ -1,4 +1,4 @@
1
- import { afterSleep, afterTick, DOMContext, executeCallbacks } from "svelte-toolbelt";
1
+ import { afterSleep, afterTick, DOMContext, executeCallbacks, } from "svelte-toolbelt";
2
2
  import { Context, watch } from "runed";
3
3
  import { on } from "svelte/events";
4
4
  import { createFocusScopeAPI, createFocusScopeStack, removeLinks, } from "./focus-scope-stack.svelte.js";
@@ -39,7 +39,7 @@
39
39
  isStatic = false,
40
40
  enabled,
41
41
  ...restProps
42
- }: Omit<PopperLayerImplProps, "present"> & {
42
+ }: Omit<PopperLayerImplProps, "open"> & {
43
43
  enabled: boolean;
44
44
  } = $props();
45
45
  </script>
@@ -1,5 +1,5 @@
1
1
  import type { PopperLayerImplProps } from "./types.js";
2
- type $$ComponentProps = Omit<PopperLayerImplProps, "present"> & {
2
+ type $$ComponentProps = Omit<PopperLayerImplProps, "open"> & {
3
3
  enabled: boolean;
4
4
  };
5
5
  declare const PopperLayerForceMount: import("svelte").Component<$$ComponentProps, {}, "">;
@@ -47,7 +47,7 @@
47
47
  ref,
48
48
  tooltip = false,
49
49
  ...restProps
50
- }: Omit<PopperLayerImplProps, "present" | "children"> & {
50
+ }: Omit<PopperLayerImplProps, "open" | "children"> & {
51
51
  enabled: boolean;
52
52
  } = $props();
53
53
  </script>
@@ -1,5 +1,5 @@
1
1
  import type { PopperLayerImplProps } from "./types.js";
2
- type $$ComponentProps = Omit<PopperLayerImplProps, "present" | "children"> & {
2
+ type $$ComponentProps = Omit<PopperLayerImplProps, "open" | "children"> & {
3
3
  enabled: boolean;
4
4
  };
5
5
  declare const PopperLayerInner: import("svelte").Component<$$ComponentProps, {}, "">;
@@ -5,7 +5,7 @@
5
5
 
6
6
  let {
7
7
  popper,
8
- present,
8
+ open,
9
9
  onEscapeKeydown,
10
10
  escapeKeydownBehavior,
11
11
  preventOverflowTextSelection,
@@ -44,7 +44,7 @@
44
44
  }: PopperLayerImplProps = $props();
45
45
  </script>
46
46
 
47
- <PresenceLayer {present} {ref}>
47
+ <PresenceLayer {open} {ref}>
48
48
  {#snippet presence()}
49
49
  <PopperLayerInner
50
50
  {popper}
@@ -73,7 +73,7 @@
73
73
  {onPlaced}
74
74
  {customAnchor}
75
75
  {isStatic}
76
- enabled={present}
76
+ enabled={open}
77
77
  {onInteractOutside}
78
78
  {onCloseAutoFocus}
79
79
  {onOpenAutoFocus}
@@ -1,16 +1,16 @@
1
1
  <script lang="ts">
2
2
  import { box } from "svelte-toolbelt";
3
3
  import type { PresenceLayerImplProps } from "./types.js";
4
- import { usePresence } from "./use-presence.svelte.js";
4
+ import { Presence } from "./presence.svelte.js";
5
5
 
6
- let { present, forceMount, presence, ref }: PresenceLayerImplProps = $props();
6
+ let { open, forceMount, presence, ref }: PresenceLayerImplProps = $props();
7
7
 
8
- const isPresent = usePresence(
9
- box.with(() => present),
10
- ref
11
- );
8
+ const presenceState = new Presence({
9
+ open: box.with(() => open),
10
+ ref,
11
+ });
12
12
  </script>
13
13
 
14
- {#if forceMount || present || isPresent.current}
15
- {@render presence?.({ present: isPresent })}
14
+ {#if forceMount || open || presenceState.isPresent}
15
+ {@render presence?.({ present: presenceState.isPresent })}
16
16
  {/if}
@@ -0,0 +1,42 @@
1
+ import { type ReadableBox, type ReadableBoxedValues } from "svelte-toolbelt";
2
+ import { Previous } from "runed";
3
+ import { StateMachine } from "../../../internal/state-machine.js";
4
+ export interface PresenceOptions extends ReadableBoxedValues<{
5
+ open: boolean;
6
+ ref: HTMLElement | null;
7
+ }> {
8
+ }
9
+ type PresenceStatus = "unmounted" | "mounted" | "unmountSuspended";
10
+ declare const presenceMachine: {
11
+ readonly mounted: {
12
+ readonly UNMOUNT: "unmounted";
13
+ readonly ANIMATION_OUT: "unmountSuspended";
14
+ };
15
+ readonly unmountSuspended: {
16
+ readonly MOUNT: "mounted";
17
+ readonly ANIMATION_END: "unmounted";
18
+ };
19
+ readonly unmounted: {
20
+ readonly MOUNT: "mounted";
21
+ };
22
+ };
23
+ type PresenceMachine = StateMachine<typeof presenceMachine>;
24
+ export declare class Presence {
25
+ readonly opts: PresenceOptions;
26
+ prevAnimationNameState: string;
27
+ styles: CSSStyleDeclaration;
28
+ initialStatus: PresenceStatus;
29
+ previousPresent: Previous<boolean>;
30
+ machine: PresenceMachine;
31
+ present: ReadableBox<boolean>;
32
+ constructor(opts: PresenceOptions);
33
+ /**
34
+ * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`
35
+ * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we
36
+ * make sure we only trigger ANIMATION_END for the currently active animation.
37
+ */
38
+ handleAnimationEnd(event: AnimationEvent): void;
39
+ handleAnimationStart(event: AnimationEvent): void;
40
+ isPresent: boolean;
41
+ }
42
+ export {};