bits-ui 1.8.0 → 2.1.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 (287) hide show
  1. package/dist/bits/accordion/accordion.svelte.d.ts +56 -53
  2. package/dist/bits/accordion/accordion.svelte.js +78 -89
  3. package/dist/bits/accordion/components/accordion-content.svelte +5 -3
  4. package/dist/bits/accordion/components/accordion-header.svelte +4 -2
  5. package/dist/bits/accordion/components/accordion-item.svelte +6 -3
  6. package/dist/bits/accordion/components/accordion-trigger.svelte +4 -2
  7. package/dist/bits/accordion/components/accordion.svelte +4 -2
  8. package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +4 -2
  9. package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +4 -2
  10. package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +8 -3
  11. package/dist/bits/aspect-ratio/aspect-ratio.svelte.js +2 -2
  12. package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +4 -2
  13. package/dist/bits/avatar/avatar.svelte.js +4 -4
  14. package/dist/bits/avatar/components/avatar-fallback.svelte +4 -2
  15. package/dist/bits/avatar/components/avatar-image.svelte +4 -2
  16. package/dist/bits/avatar/components/avatar.svelte +4 -2
  17. package/dist/bits/button/components/button.svelte +1 -1
  18. package/dist/bits/calendar/calendar.svelte.d.ts +1 -9
  19. package/dist/bits/calendar/calendar.svelte.js +47 -38
  20. package/dist/bits/calendar/components/calendar-cell.svelte +4 -2
  21. package/dist/bits/calendar/components/calendar-day.svelte +4 -2
  22. package/dist/bits/calendar/components/calendar-grid-body.svelte +4 -2
  23. package/dist/bits/calendar/components/calendar-grid-head.svelte +4 -2
  24. package/dist/bits/calendar/components/calendar-grid-row.svelte +4 -2
  25. package/dist/bits/calendar/components/calendar-grid.svelte +4 -2
  26. package/dist/bits/calendar/components/calendar-head-cell.svelte +4 -2
  27. package/dist/bits/calendar/components/calendar-header.svelte +4 -2
  28. package/dist/bits/calendar/components/calendar-heading.svelte +4 -2
  29. package/dist/bits/calendar/components/calendar-next-button.svelte +4 -2
  30. package/dist/bits/calendar/components/calendar-prev-button.svelte +4 -2
  31. package/dist/bits/checkbox/checkbox.svelte.js +4 -14
  32. package/dist/bits/checkbox/components/checkbox-group-label.svelte +4 -2
  33. package/dist/bits/checkbox/components/checkbox-group.svelte +4 -2
  34. package/dist/bits/checkbox/components/checkbox.svelte +4 -2
  35. package/dist/bits/collapsible/collapsible.svelte.js +4 -10
  36. package/dist/bits/collapsible/components/collapsible-content.svelte +5 -3
  37. package/dist/bits/collapsible/components/collapsible-trigger.svelte +4 -2
  38. package/dist/bits/collapsible/components/collapsible.svelte +4 -2
  39. package/dist/bits/combobox/components/combobox-input.svelte +1 -1
  40. package/dist/bits/combobox/components/combobox.svelte +1 -1
  41. package/dist/bits/command/command.svelte.js +13 -45
  42. package/dist/bits/command/components/_command-label.svelte +6 -7
  43. package/dist/bits/command/components/_command-label.svelte.d.ts +1 -1
  44. package/dist/bits/command/components/command-empty.svelte +4 -2
  45. package/dist/bits/command/components/command-group-heading.svelte +4 -2
  46. package/dist/bits/command/components/command-group-items.svelte +4 -2
  47. package/dist/bits/command/components/command-group.svelte +4 -2
  48. package/dist/bits/command/components/command-input.svelte +4 -2
  49. package/dist/bits/command/components/command-item.svelte +4 -2
  50. package/dist/bits/command/components/command-link-item.svelte +4 -2
  51. package/dist/bits/command/components/command-list.svelte +4 -2
  52. package/dist/bits/command/components/command-loading.svelte +4 -2
  53. package/dist/bits/command/components/command-separator.svelte +4 -2
  54. package/dist/bits/command/components/command-viewport.svelte +4 -2
  55. package/dist/bits/command/components/command.svelte +4 -2
  56. package/dist/bits/context-menu/components/context-menu-content-static.svelte +2 -3
  57. package/dist/bits/context-menu/components/context-menu-content.svelte +2 -3
  58. package/dist/bits/context-menu/components/context-menu-trigger.svelte +1 -1
  59. package/dist/bits/date-field/components/date-field-input.svelte +4 -2
  60. package/dist/bits/date-field/components/date-field-label.svelte +4 -2
  61. package/dist/bits/date-field/components/date-field-segment.svelte +4 -2
  62. package/dist/bits/date-field/date-field.svelte.d.ts +4 -4
  63. package/dist/bits/date-field/date-field.svelte.js +15 -33
  64. package/dist/bits/date-picker/components/date-picker-calendar.svelte +4 -2
  65. package/dist/bits/date-range-field/components/date-range-field-input.svelte +4 -2
  66. package/dist/bits/date-range-field/components/date-range-field-label.svelte +4 -2
  67. package/dist/bits/date-range-field/components/date-range-field.svelte +4 -2
  68. package/dist/bits/date-range-field/date-range-field.svelte.js +3 -13
  69. package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +4 -2
  70. package/dist/bits/dialog/components/dialog-close.svelte +4 -2
  71. package/dist/bits/dialog/components/dialog-content.svelte +8 -2
  72. package/dist/bits/dialog/components/dialog-description.svelte +4 -2
  73. package/dist/bits/dialog/components/dialog-overlay.svelte +8 -3
  74. package/dist/bits/dialog/components/dialog-title.svelte +4 -2
  75. package/dist/bits/dialog/components/dialog-trigger.svelte +4 -2
  76. package/dist/bits/dialog/dialog.svelte.d.ts +1 -1
  77. package/dist/bits/dialog/dialog.svelte.js +19 -47
  78. package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +6 -5
  79. package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +6 -5
  80. package/dist/bits/index.d.ts +2 -0
  81. package/dist/bits/index.js +2 -0
  82. package/dist/bits/label/components/label.svelte +4 -2
  83. package/dist/bits/label/label.svelte.js +2 -2
  84. package/dist/bits/link-preview/components/link-preview-content-static.svelte +6 -2
  85. package/dist/bits/link-preview/components/link-preview-content.svelte +6 -2
  86. package/dist/bits/link-preview/components/link-preview-trigger.svelte +5 -3
  87. package/dist/bits/link-preview/link-preview.svelte.js +3 -14
  88. package/dist/bits/menu/components/menu-checkbox-group.svelte +4 -2
  89. package/dist/bits/menu/components/menu-checkbox-item.svelte +6 -4
  90. package/dist/bits/menu/components/menu-content-static.svelte +6 -5
  91. package/dist/bits/menu/components/menu-content.svelte +6 -5
  92. package/dist/bits/menu/components/menu-group-heading.svelte +4 -2
  93. package/dist/bits/menu/components/menu-group.svelte +4 -2
  94. package/dist/bits/menu/components/menu-item.svelte +4 -2
  95. package/dist/bits/menu/components/menu-radio-group.svelte +4 -2
  96. package/dist/bits/menu/components/menu-radio-item.svelte +4 -2
  97. package/dist/bits/menu/components/menu-separator.svelte +4 -2
  98. package/dist/bits/menu/components/menu-sub-content-static.svelte +6 -5
  99. package/dist/bits/menu/components/menu-sub-content.svelte +6 -5
  100. package/dist/bits/menu/components/menu-sub-trigger.svelte +6 -3
  101. package/dist/bits/menu/components/menu-trigger.svelte +5 -3
  102. package/dist/bits/menu/menu.svelte.d.ts +7 -20
  103. package/dist/bits/menu/menu.svelte.js +26 -54
  104. package/dist/bits/menubar/components/menubar-content-static.svelte +4 -2
  105. package/dist/bits/menubar/components/menubar-content.svelte +4 -2
  106. package/dist/bits/menubar/components/menubar-menu.svelte +4 -2
  107. package/dist/bits/menubar/components/menubar-trigger.svelte +14 -6
  108. package/dist/bits/menubar/components/menubar.svelte +4 -2
  109. package/dist/bits/menubar/menubar.svelte.d.ts +24 -20
  110. package/dist/bits/menubar/menubar.svelte.js +40 -56
  111. package/dist/bits/meter/components/meter.svelte +4 -2
  112. package/dist/bits/meter/meter.svelte.js +2 -2
  113. package/dist/bits/navigation-menu/components/navigation-menu-content-impl.svelte +5 -2
  114. package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +8 -3
  115. package/dist/bits/navigation-menu/components/navigation-menu-indicator-impl.svelte +4 -2
  116. package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +6 -4
  117. package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +6 -3
  118. package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +4 -2
  119. package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +4 -2
  120. package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +4 -2
  121. package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +4 -2
  122. package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +5 -3
  123. package/dist/bits/navigation-menu/components/navigation-menu.svelte +4 -2
  124. package/dist/bits/navigation-menu/navigation-menu.svelte.js +13 -50
  125. package/dist/bits/pagination/components/pagination-next-button.svelte +4 -2
  126. package/dist/bits/pagination/components/pagination-page.svelte +4 -2
  127. package/dist/bits/pagination/components/pagination-prev-button.svelte +4 -2
  128. package/dist/bits/pagination/components/pagination.svelte +4 -2
  129. package/dist/bits/pagination/pagination.svelte.js +4 -4
  130. package/dist/bits/pin-input/components/pin-input-cell.svelte +4 -2
  131. package/dist/bits/pin-input/components/pin-input.svelte +5 -3
  132. package/dist/bits/pin-input/pin-input.svelte.js +4 -10
  133. package/dist/bits/popover/components/popover-close.svelte +4 -2
  134. package/dist/bits/popover/components/popover-content-static.svelte +6 -2
  135. package/dist/bits/popover/components/popover-content.svelte +6 -2
  136. package/dist/bits/popover/components/popover-trigger.svelte +5 -3
  137. package/dist/bits/popover/popover.svelte.js +4 -18
  138. package/dist/bits/progress/components/progress.svelte +4 -2
  139. package/dist/bits/progress/progress.svelte.js +2 -2
  140. package/dist/bits/radio-group/components/radio-group-item.svelte +4 -2
  141. package/dist/bits/radio-group/components/radio-group.svelte +4 -2
  142. package/dist/bits/radio-group/radio-group.svelte.js +4 -7
  143. package/dist/bits/range-calendar/components/range-calendar-cell.svelte +4 -2
  144. package/dist/bits/range-calendar/components/range-calendar-day.svelte +4 -2
  145. package/dist/bits/range-calendar/components/range-calendar.svelte +4 -2
  146. package/dist/bits/range-calendar/range-calendar.svelte.js +4 -4
  147. package/dist/bits/scroll-area/components/scroll-area-corner.svelte +8 -2
  148. package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +4 -1
  149. package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +1 -1
  150. package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +5 -1
  151. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +4 -2
  152. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +8 -3
  153. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +4 -2
  154. package/dist/bits/scroll-area/components/scroll-area.svelte +4 -2
  155. package/dist/bits/scroll-area/scroll-area.svelte.js +13 -47
  156. package/dist/bits/select/components/select-content-static.svelte +6 -2
  157. package/dist/bits/select/components/select-content.svelte +6 -2
  158. package/dist/bits/select/components/select-group-heading.svelte +3 -2
  159. package/dist/bits/select/components/select-group.svelte +4 -2
  160. package/dist/bits/select/components/select-item.svelte +4 -2
  161. package/dist/bits/select/components/select-scroll-down-button.svelte +4 -2
  162. package/dist/bits/select/components/select-scroll-up-button.svelte +4 -2
  163. package/dist/bits/select/components/select-trigger.svelte +5 -3
  164. package/dist/bits/select/components/select-viewport.svelte +4 -2
  165. package/dist/bits/select/components/select.svelte +1 -1
  166. package/dist/bits/select/select.svelte.d.ts +0 -18
  167. package/dist/bits/select/select.svelte.js +10 -43
  168. package/dist/bits/separator/components/separator.svelte +4 -2
  169. package/dist/bits/separator/separator.svelte.js +2 -2
  170. package/dist/bits/slider/components/slider-range.svelte +4 -2
  171. package/dist/bits/slider/components/slider-thumb-label.svelte +50 -0
  172. package/dist/bits/slider/components/slider-thumb-label.svelte.d.ts +4 -0
  173. package/dist/bits/slider/components/slider-thumb.svelte +4 -2
  174. package/dist/bits/slider/components/slider-tick-label.svelte +50 -0
  175. package/dist/bits/slider/components/slider-tick-label.svelte.d.ts +4 -0
  176. package/dist/bits/slider/components/slider-tick.svelte +4 -2
  177. package/dist/bits/slider/components/slider.svelte +24 -5
  178. package/dist/bits/slider/exports.d.ts +3 -1
  179. package/dist/bits/slider/exports.js +2 -0
  180. package/dist/bits/slider/helpers.d.ts +14 -0
  181. package/dist/bits/slider/helpers.js +122 -0
  182. package/dist/bits/slider/slider.svelte.d.ts +91 -5
  183. package/dist/bits/slider/slider.svelte.js +194 -101
  184. package/dist/bits/slider/types.d.ts +105 -11
  185. package/dist/bits/switch/components/switch-thumb.svelte +4 -2
  186. package/dist/bits/switch/components/switch.svelte +4 -2
  187. package/dist/bits/switch/switch.svelte.js +3 -3
  188. package/dist/bits/tabs/components/tabs-content.svelte +4 -2
  189. package/dist/bits/tabs/components/tabs-list.svelte +4 -2
  190. package/dist/bits/tabs/components/tabs-trigger.svelte +4 -2
  191. package/dist/bits/tabs/components/tabs.svelte +4 -2
  192. package/dist/bits/tabs/tabs.svelte.js +6 -6
  193. package/dist/bits/time-field/components/time-field-hidden-input.svelte +10 -0
  194. package/dist/bits/{date-field/components/date-field-error.svelte.d.ts → time-field/components/time-field-hidden-input.svelte.d.ts} +6 -14
  195. package/dist/bits/time-field/components/time-field-input.svelte +39 -0
  196. package/dist/bits/time-field/components/time-field-input.svelte.d.ts +4 -0
  197. package/dist/bits/time-field/components/time-field-label.svelte +34 -0
  198. package/dist/bits/time-field/components/time-field-label.svelte.d.ts +4 -0
  199. package/dist/bits/time-field/components/time-field-segment.svelte +37 -0
  200. package/dist/bits/time-field/components/time-field-segment.svelte.d.ts +4 -0
  201. package/dist/bits/time-field/components/time-field.svelte +94 -0
  202. package/dist/bits/time-field/components/time-field.svelte.d.ts +20 -0
  203. package/dist/bits/time-field/exports.d.ts +5 -0
  204. package/dist/bits/time-field/exports.js +4 -0
  205. package/dist/bits/time-field/index.d.ts +1 -0
  206. package/dist/bits/time-field/index.js +1 -0
  207. package/dist/bits/time-field/time-field.svelte.d.ts +415 -0
  208. package/dist/bits/time-field/time-field.svelte.js +971 -0
  209. package/dist/bits/time-field/types.d.ts +137 -0
  210. package/dist/bits/time-field/types.js +1 -0
  211. package/dist/bits/time-range-field/components/time-range-field-input.svelte +43 -0
  212. package/dist/bits/time-range-field/components/time-range-field-input.svelte.d.ts +4 -0
  213. package/dist/bits/time-range-field/components/time-range-field-label.svelte +34 -0
  214. package/dist/bits/time-range-field/components/time-range-field-label.svelte.d.ts +4 -0
  215. package/dist/bits/time-range-field/components/time-range-field.svelte +144 -0
  216. package/dist/bits/time-range-field/components/time-range-field.svelte.d.ts +20 -0
  217. package/dist/bits/time-range-field/exports.d.ts +5 -0
  218. package/dist/bits/time-range-field/exports.js +4 -0
  219. package/dist/bits/time-range-field/index.d.ts +1 -0
  220. package/dist/bits/time-range-field/index.js +1 -0
  221. package/dist/bits/time-range-field/time-range-field.svelte.d.ts +90 -0
  222. package/dist/bits/time-range-field/time-range-field.svelte.js +210 -0
  223. package/dist/bits/time-range-field/types.d.ts +150 -0
  224. package/dist/bits/time-range-field/types.js +1 -0
  225. package/dist/bits/toggle/components/toggle.svelte +4 -2
  226. package/dist/bits/toggle/toggle.svelte.js +2 -2
  227. package/dist/bits/toggle-group/components/toggle-group-item.svelte +4 -2
  228. package/dist/bits/toggle-group/components/toggle-group.svelte +4 -2
  229. package/dist/bits/toggle-group/toggle-group.svelte.js +4 -4
  230. package/dist/bits/toolbar/components/toolbar-button.svelte +4 -2
  231. package/dist/bits/toolbar/components/toolbar-group-item.svelte +4 -2
  232. package/dist/bits/toolbar/components/toolbar-group.svelte +4 -2
  233. package/dist/bits/toolbar/components/toolbar-link.svelte +4 -2
  234. package/dist/bits/toolbar/components/toolbar.svelte +4 -2
  235. package/dist/bits/toolbar/toolbar.svelte.js +7 -7
  236. package/dist/bits/tooltip/components/tooltip-content-static.svelte +6 -2
  237. package/dist/bits/tooltip/components/tooltip-content.svelte +6 -2
  238. package/dist/bits/tooltip/components/tooltip-trigger.svelte +5 -3
  239. package/dist/bits/tooltip/tooltip.svelte.js +3 -14
  240. package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -0
  241. package/dist/bits/utilities/dismissible-layer/types.d.ts +2 -0
  242. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +3 -3
  243. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +16 -25
  244. package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -1
  245. package/dist/bits/utilities/floating-layer/types.d.ts +1 -0
  246. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +3 -2
  247. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +5 -26
  248. package/dist/bits/utilities/focus-scope/focus-scope.svelte +2 -0
  249. package/dist/bits/utilities/focus-scope/types.d.ts +2 -0
  250. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +2 -1
  251. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +2 -8
  252. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +4 -0
  253. package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -1
  254. package/dist/bits/utilities/presence-layer/presence-layer.svelte +2 -2
  255. package/dist/bits/utilities/presence-layer/types.d.ts +2 -1
  256. package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +1 -1
  257. package/dist/bits/utilities/presence-layer/use-presence.svelte.js +19 -36
  258. package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -0
  259. package/dist/bits/utilities/text-selection-layer/types.d.ts +2 -0
  260. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +3 -1
  261. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +2 -8
  262. package/dist/index.d.ts +1 -1
  263. package/dist/index.js +1 -1
  264. package/dist/internal/create-id.d.ts +8 -0
  265. package/dist/internal/create-id.js +5 -0
  266. package/dist/internal/date-time/field/helpers.d.ts +1 -0
  267. package/dist/internal/date-time/field/helpers.js +8 -2
  268. package/dist/internal/date-time/field/parts.d.ts +3 -1
  269. package/dist/internal/date-time/field/parts.js +10 -2
  270. package/dist/internal/date-time/field/segments.d.ts +9 -0
  271. package/dist/internal/date-time/field/segments.js +65 -0
  272. package/dist/internal/date-time/field/time-helpers.d.ts +77 -0
  273. package/dist/internal/date-time/field/time-helpers.js +301 -0
  274. package/dist/internal/date-time/field/types.d.ts +2 -2
  275. package/dist/internal/date-time/formatter.d.ts +11 -1
  276. package/dist/internal/date-time/formatter.js +56 -0
  277. package/dist/internal/date-time/utils.d.ts +7 -2
  278. package/dist/internal/date-time/utils.js +15 -1
  279. package/dist/internal/dom-context.svelte.d.ts +9 -0
  280. package/dist/internal/dom-context.svelte.js +26 -0
  281. package/dist/internal/use-roving-focus.svelte.d.ts +3 -3
  282. package/dist/internal/use-roving-focus.svelte.js +10 -11
  283. package/dist/shared/date/types.d.ts +27 -4
  284. package/dist/shared/index.d.ts +2 -2
  285. package/dist/types.d.ts +2 -0
  286. package/package.json +18 -16
  287. package/dist/bits/date-field/components/date-field-error.svelte +0 -0
@@ -2,16 +2,18 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { TooltipContentStaticProps } from "../types.js";
4
4
  import { useTooltipContent } from "../tooltip.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
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";
8
8
  import PopperLayerForceMount from "../../utilities/popper-layer/popper-layer-force-mount.svelte";
9
9
  import { noop } from "../../../internal/noop.js";
10
10
 
11
+ const uid = $props.id();
12
+
11
13
  let {
12
14
  children,
13
15
  child,
14
- id = useId(),
16
+ id = createId(uid),
15
17
  ref = $bindable(null),
16
18
  onInteractOutside = noop,
17
19
  onEscapeKeydown = noop,
@@ -43,6 +45,7 @@
43
45
  loop={false}
44
46
  preventScroll={false}
45
47
  forceMount={true}
48
+ ref={contentState.opts.ref}
46
49
  >
47
50
  {#snippet popper({ props })}
48
51
  {@const mergedProps = mergeProps(props, {
@@ -68,6 +71,7 @@
68
71
  loop={false}
69
72
  preventScroll={false}
70
73
  forceMount={false}
74
+ ref={contentState.opts.ref}
71
75
  >
72
76
  {#snippet popper({ props })}
73
77
  {@const mergedProps = mergeProps(props, {
@@ -2,16 +2,18 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { TooltipContentProps } from "../types.js";
4
4
  import { useTooltipContent } from "../tooltip.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
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";
8
8
  import PopperLayerForceMount from "../../utilities/popper-layer/popper-layer-force-mount.svelte";
9
9
  import { noop } from "../../../internal/noop.js";
10
10
 
11
+ const uid = $props.id();
12
+
11
13
  let {
12
14
  children,
13
15
  child,
14
- id = useId(),
16
+ id = createId(uid),
15
17
  ref = $bindable(null),
16
18
  side = "top",
17
19
  sideOffset = 0,
@@ -61,6 +63,7 @@
61
63
  loop={false}
62
64
  preventScroll={false}
63
65
  forceMount={true}
66
+ ref={contentState.opts.ref}
64
67
  >
65
68
  {#snippet popper({ props, wrapperProps })}
66
69
  {@const mergedProps = mergeProps(props, {
@@ -87,6 +90,7 @@
87
90
  loop={false}
88
91
  preventScroll={false}
89
92
  forceMount={false}
93
+ ref={contentState.opts.ref}
90
94
  >
91
95
  {#snippet popper({ props, wrapperProps })}
92
96
  {@const mergedProps = mergeProps(props, {
@@ -2,13 +2,15 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { TooltipTriggerProps } from "../types.js";
4
4
  import { useTooltipTrigger } from "../tooltip.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
6
  import FloatingLayerAnchor from "../../utilities/floating-layer/components/floating-layer-anchor.svelte";
7
7
 
8
+ const uid = $props.id();
9
+
8
10
  let {
9
11
  children,
10
12
  child,
11
- id = useId(),
13
+ id = createId(uid),
12
14
  disabled = false,
13
15
  type = "button",
14
16
  ref = $bindable(null),
@@ -27,7 +29,7 @@
27
29
  const mergedProps = $derived(mergeProps(restProps, triggerState.props, { type }));
28
30
  </script>
29
31
 
30
- <FloatingLayerAnchor {id}>
32
+ <FloatingLayerAnchor {id} ref={triggerState.opts.ref}>
31
33
  {#if child}
32
34
  {@render child({ props: mergedProps })}
33
35
  {:else}
@@ -1,4 +1,4 @@
1
- import { box, onMountEffect, useRefById } from "svelte-toolbelt";
1
+ import { box, onMountEffect, attachRef } from "svelte-toolbelt";
2
2
  import { on } from "svelte/events";
3
3
  import { Context, watch } from "runed";
4
4
  import { useTimeoutFn } from "../../internal/use-timeout-fn.svelte.js";
@@ -138,12 +138,6 @@ class TooltipTriggerState {
138
138
  constructor(opts, root) {
139
139
  this.opts = opts;
140
140
  this.root = root;
141
- useRefById({
142
- ...opts,
143
- onRefChange: (node) => {
144
- this.root.triggerNode = node;
145
- },
146
- });
147
141
  }
148
142
  handlePointerUp = () => {
149
143
  this.#isPointerDown.current = false;
@@ -212,6 +206,7 @@ class TooltipTriggerState {
212
206
  onfocus: this.#onfocus,
213
207
  onblur: this.#onblur,
214
208
  onclick: this.#onclick,
209
+ ...attachRef(this.opts.ref, (v) => (this.root.triggerNode = v)),
215
210
  }));
216
211
  }
217
212
  class TooltipContentState {
@@ -220,13 +215,6 @@ class TooltipContentState {
220
215
  constructor(opts, root) {
221
216
  this.opts = opts;
222
217
  this.root = root;
223
- useRefById({
224
- ...opts,
225
- onRefChange: (node) => {
226
- this.root.contentNode = node;
227
- },
228
- deps: () => this.root.opts.open.current,
229
- });
230
218
  useGraceArea({
231
219
  triggerNode: () => this.root.triggerNode,
232
220
  contentNode: () => this.root.contentNode,
@@ -284,6 +272,7 @@ class TooltipContentState {
284
272
  outline: "none",
285
273
  },
286
274
  [TOOLTIP_CONTENT_ATTR]: "",
275
+ ...attachRef(this.opts.ref, (v) => (this.root.contentNode = v)),
287
276
  }));
288
277
  popperProps = {
289
278
  onInteractOutside: this.onInteractOutside,
@@ -12,6 +12,7 @@
12
12
  children,
13
13
  enabled,
14
14
  isValidEvent = () => false,
15
+ ref,
15
16
  }: DismissibleLayerImplProps = $props();
16
17
 
17
18
  const dismissibleLayerState = useDismissibleLayer({
@@ -21,6 +22,7 @@
21
22
  enabled: box.with(() => enabled),
22
23
  onFocusOutside: box.with(() => onFocusOutside),
23
24
  isValidEvent: box.with(() => isValidEvent),
25
+ ref,
24
26
  });
25
27
  </script>
26
28
 
@@ -1,4 +1,5 @@
1
1
  import type { Snippet } from "svelte";
2
+ import type { WritableBox } from "svelte-toolbelt";
2
3
  export type InteractOutsideEvent = PointerEvent;
3
4
  export type InteractOutsideEventHandler = (e: PointerEvent) => void;
4
5
  export type InteractOutsideBehaviorType = "close" | "defer-otherwise-close" | "defer-otherwise-ignore" | "ignore";
@@ -44,4 +45,5 @@ export type DismissibleLayerImplProps = {
44
45
  children?: Snippet<[{
45
46
  props: Record<string, unknown>;
46
47
  }]>;
48
+ ref: WritableBox<HTMLElement | null>;
47
49
  } & DismissibleLayerProps;
@@ -1,12 +1,12 @@
1
1
  import { type WritableBox } from "svelte-toolbelt";
2
2
  import type { DismissibleLayerImplProps } from "./types.js";
3
3
  import type { ReadableBoxedValues } from "../../../internal/box.svelte.js";
4
- type DismissibleLayerStateProps = ReadableBoxedValues<Required<Omit<DismissibleLayerImplProps, "children">>>;
4
+ type DismissibleLayerStateProps = ReadableBoxedValues<Required<Omit<DismissibleLayerImplProps, "children" | "ref">>> & {
5
+ ref: WritableBox<HTMLElement | null>;
6
+ };
5
7
  export declare class DismissibleLayerState {
6
8
  #private;
7
9
  readonly opts: DismissibleLayerStateProps;
8
- node: WritableBox<HTMLElement | null>;
9
- currNode: HTMLElement | null;
10
10
  constructor(opts: DismissibleLayerStateProps);
11
11
  props: {
12
12
  onfocuscapture: () => void;
@@ -1,4 +1,4 @@
1
- import { afterSleep, afterTick, box, executeCallbacks, onDestroyEffect, useRefById, } from "svelte-toolbelt";
1
+ import { afterSleep, afterTick, executeCallbacks, onDestroyEffect, } from "svelte-toolbelt";
2
2
  import { watch } from "runed";
3
3
  import { on } from "svelte/events";
4
4
  import { addEventListener } from "../../../internal/events.js";
@@ -17,26 +17,16 @@ export class DismissibleLayerState {
17
17
  };
18
18
  #isResponsibleLayer = false;
19
19
  #isFocusInsideDOMTree = false;
20
- node = box(null);
21
20
  #documentObj = undefined;
22
21
  #onFocusOutside;
23
- currNode = $state(null);
24
22
  #unsubClickListener = noop;
25
23
  constructor(opts) {
26
24
  this.opts = opts;
27
- useRefById({
28
- id: opts.id,
29
- ref: this.node,
30
- deps: () => opts.enabled.current,
31
- onRefChange: (node) => {
32
- this.currNode = node;
33
- },
34
- });
35
25
  this.#behaviorType = opts.interactOutsideBehavior;
36
26
  this.#interactOutsideProp = opts.onInteractOutside;
37
27
  this.#onFocusOutside = opts.onFocusOutside;
38
28
  $effect(() => {
39
- this.#documentObj = getOwnerDocument(this.currNode);
29
+ this.#documentObj = getOwnerDocument(this.opts.ref.current);
40
30
  });
41
31
  let unsubEvents = noop;
42
32
  const cleanup = () => {
@@ -45,11 +35,11 @@ export class DismissibleLayerState {
45
35
  this.#handleInteractOutside.destroy();
46
36
  unsubEvents();
47
37
  };
48
- watch([() => this.opts.enabled.current, () => this.currNode], ([enabled, currNode]) => {
49
- if (!enabled || !currNode)
38
+ watch([() => this.opts.enabled.current, () => this.opts.ref.current], () => {
39
+ if (!this.opts.enabled.current || !this.opts.ref.current)
50
40
  return;
51
41
  afterSleep(1, () => {
52
- if (!this.currNode)
42
+ if (!this.opts.ref.current)
53
43
  return;
54
44
  globalThis.bitsDismissableLayers.set(this, this.#behaviorType);
55
45
  unsubEvents();
@@ -68,10 +58,10 @@ export class DismissibleLayerState {
68
58
  #handleFocus = (event) => {
69
59
  if (event.defaultPrevented)
70
60
  return;
71
- if (!this.currNode)
61
+ if (!this.opts.ref.current)
72
62
  return;
73
63
  afterTick(() => {
74
- if (!this.currNode || this.#isTargetWithinLayer(event.target))
64
+ if (!this.opts.ref.current || this.#isTargetWithinLayer(event.target))
75
65
  return;
76
66
  if (event.target && !this.#isFocusInsideDOMTree) {
77
67
  this.#onFocusOutside.current?.(event);
@@ -107,11 +97,12 @@ export class DismissibleLayerState {
107
97
  this.#interactOutsideProp.current(e);
108
98
  };
109
99
  #handleInteractOutside = debounce((e) => {
110
- if (!this.currNode) {
100
+ if (!this.opts.ref.current) {
111
101
  this.#unsubClickListener();
112
102
  return;
113
103
  }
114
- const isEventValid = this.opts.isValidEvent.current(e, this.currNode) || isValidEvent(e, this.currNode);
104
+ const isEventValid = this.opts.isValidEvent.current(e, this.opts.ref.current) ||
105
+ isValidEvent(e, this.opts.ref.current);
115
106
  if (!this.#isResponsibleLayer || this.#isAnyEventIntercepted() || !isEventValid) {
116
107
  this.#unsubClickListener();
117
108
  return;
@@ -141,14 +132,14 @@ export class DismissibleLayerState {
141
132
  this.#interceptedEvents[e.type] = false;
142
133
  };
143
134
  #markResponsibleLayer = () => {
144
- if (!this.node.current)
135
+ if (!this.opts.ref.current)
145
136
  return;
146
- this.#isResponsibleLayer = isResponsibleLayer(this.node.current);
137
+ this.#isResponsibleLayer = isResponsibleLayer(this.opts.ref.current);
147
138
  };
148
139
  #isTargetWithinLayer = (target) => {
149
- if (!this.node.current)
140
+ if (!this.opts.ref.current)
150
141
  return false;
151
- return isOrContainsTarget(this.node.current, target);
142
+ return isOrContainsTarget(this.opts.ref.current, target);
152
143
  };
153
144
  #resetState = debounce(() => {
154
145
  for (const eventType in this.#interceptedEvents) {
@@ -187,9 +178,9 @@ function isResponsibleLayer(node) {
187
178
  */
188
179
  const topMostLayer = getTopMostLayer(layersArr);
189
180
  if (topMostLayer)
190
- return topMostLayer[0].node.current === node;
181
+ return topMostLayer[0].opts.ref.current === node;
191
182
  const [firstLayerNode] = layersArr[0];
192
- return firstLayerNode.node.current === node;
183
+ return firstLayerNode.opts.ref.current === node;
193
184
  }
194
185
  function isValidEvent(e, node) {
195
186
  if ("button" in e && e.button > 0)
@@ -4,11 +4,12 @@
4
4
  import type { AnchorProps } from "./index.js";
5
5
  import type { Measurable } from "../../../../internal/floating-svelte/types.js";
6
6
 
7
- let { id, children, virtualEl }: AnchorProps = $props();
7
+ let { id, children, virtualEl, ref }: AnchorProps = $props();
8
8
 
9
9
  useFloatingAnchorState({
10
10
  id: box.with(() => id),
11
11
  virtualEl: box.with(() => virtualEl as unknown as Measurable | null),
12
+ ref,
12
13
  });
13
14
  </script>
14
15
 
@@ -112,4 +112,5 @@ export type FloatingLayerAnchorProps = {
112
112
  id: string;
113
113
  children?: Snippet;
114
114
  virtualEl?: ReadableBox<Measurable | null>;
115
+ ref: ReadableBox<HTMLElement | null>;
115
116
  };
@@ -1,4 +1,5 @@
1
1
  import { type Middleware, type Placement } from "@floating-ui/dom";
2
+ import { type ReadableBox } from "svelte-toolbelt";
2
3
  import type { Arrayable, WithRefProps } from "../../../internal/types.js";
3
4
  import type { Box, ReadableBoxedValues } from "../../../internal/box.svelte.js";
4
5
  import type { Measurable, UseFloatingReturn } from "../../../internal/floating-svelte/types.js";
@@ -11,7 +12,7 @@ export type Boundary = Element | null;
11
12
  declare class FloatingRootState {
12
13
  anchorNode: import("svelte-toolbelt").WritableBox<HTMLElement | Measurable | null>;
13
14
  customAnchorNode: import("svelte-toolbelt").WritableBox<string | HTMLElement | Measurable | null>;
14
- triggerNode: import("svelte-toolbelt").WritableBox<HTMLElement | Measurable | null>;
15
+ triggerNode: ReadableBox<Measurable | HTMLElement | null>;
15
16
  constructor();
16
17
  }
17
18
  export type FloatingContentStateProps = ReadableBoxedValues<{
@@ -934,11 +935,11 @@ declare class FloatingArrowState {
934
935
  type FloatingAnchorStateProps = ReadableBoxedValues<{
935
936
  id: string;
936
937
  virtualEl?: Measurable | null;
938
+ ref: Measurable | HTMLElement | null;
937
939
  }>;
938
940
  declare class FloatingAnchorState {
939
941
  readonly opts: FloatingAnchorStateProps;
940
942
  readonly root: FloatingRootState;
941
- ref: import("svelte-toolbelt").WritableBox<HTMLElement | null>;
942
943
  constructor(opts: FloatingAnchorStateProps, root: FloatingRootState);
943
944
  }
944
945
  export declare function useFloatingRootState(): FloatingRootState;
@@ -1,5 +1,5 @@
1
1
  import { arrow, autoUpdate, flip, hide, limitShift, offset, shift, size, } from "@floating-ui/dom";
2
- import { box, cssToStyleObj, styleToString, useRefById } from "svelte-toolbelt";
2
+ import { attachRef, box, cssToStyleObj, styleToString } from "svelte-toolbelt";
3
3
  import { Context, ElementSize, watch } from "runed";
4
4
  import { isNotNull } from "../../../internal/is.js";
5
5
  import { useId } from "../../../internal/use-id.js";
@@ -133,6 +133,7 @@ class FloatingContentState {
133
133
  },
134
134
  // Floating UI calculates logical alignment based the `dir` attribute
135
135
  dir: this.opts.dir.current,
136
+ ...attachRef(this.wrapperRef),
136
137
  }));
137
138
  props = $derived.by(() => ({
138
139
  "data-side": this.placedSide,
@@ -143,6 +144,7 @@ class FloatingContentState {
143
144
  // we prevent animations so that users's animation don't kick in too early referring wrong sides
144
145
  // animation: !this.floating.isPositioned ? "none" : undefined,
145
146
  }),
147
+ ...attachRef(this.contentRef),
146
148
  }));
147
149
  arrowStyle = $derived({
148
150
  position: "absolute",
@@ -172,16 +174,6 @@ class FloatingContentState {
172
174
  watch(() => opts.customAnchor.current, (customAnchor) => {
173
175
  this.root.customAnchorNode.current = customAnchor;
174
176
  });
175
- useRefById({
176
- id: this.opts.wrapperId,
177
- ref: this.wrapperRef,
178
- deps: () => this.opts.enabled.current,
179
- });
180
- useRefById({
181
- id: this.opts.id,
182
- ref: this.contentRef,
183
- deps: () => this.opts.enabled.current,
184
- });
185
177
  this.floating = useFloating({
186
178
  strategy: () => this.opts.strategy.current,
187
179
  placement: () => this.#desiredPlacement,
@@ -216,24 +208,17 @@ class FloatingArrowState {
216
208
  constructor(opts, content) {
217
209
  this.opts = opts;
218
210
  this.content = content;
219
- useRefById({
220
- ...opts,
221
- onRefChange: (node) => {
222
- this.content.arrowRef.current = node;
223
- },
224
- deps: () => this.content.opts.enabled.current,
225
- });
226
211
  }
227
212
  props = $derived.by(() => ({
228
213
  id: this.opts.id.current,
229
214
  style: this.content.arrowStyle,
230
215
  "data-side": this.content.placedSide,
216
+ ...attachRef(this.content.arrowRef),
231
217
  }));
232
218
  }
233
219
  class FloatingAnchorState {
234
220
  opts;
235
221
  root;
236
- ref = box(null);
237
222
  constructor(opts, root) {
238
223
  this.opts = opts;
239
224
  this.root = root;
@@ -241,13 +226,7 @@ class FloatingAnchorState {
241
226
  root.triggerNode = box.from(opts.virtualEl.current);
242
227
  }
243
228
  else {
244
- useRefById({
245
- id: opts.id,
246
- ref: this.ref,
247
- onRefChange: (node) => {
248
- root.triggerNode.current = node;
249
- },
250
- });
229
+ root.triggerNode = opts.ref;
251
230
  }
252
231
  }
253
232
  }
@@ -12,6 +12,7 @@
12
12
  onOpenAutoFocus = noop,
13
13
  focusScope,
14
14
  forceMount = false,
15
+ ref,
15
16
  }: FocusScopeImplProps = $props();
16
17
 
17
18
  const focusScopeState = useFocusScope({
@@ -21,6 +22,7 @@
21
22
  onOpenAutoFocus: box.with(() => onOpenAutoFocus),
22
23
  id: box.with(() => id),
23
24
  forceMount: box.with(() => forceMount),
25
+ ref,
24
26
  });
25
27
  </script>
26
28
 
@@ -1,6 +1,7 @@
1
1
  import type { Snippet } from "svelte";
2
2
  import type { FocusScopeContainerProps } from "./use-focus-scope.svelte.js";
3
3
  import type { EventCallback } from "../../../internal/events.js";
4
+ import type { ReadableBox } from "svelte-toolbelt";
4
5
  export type FocusScopeProps = {
5
6
  /**
6
7
  * Event handler called when auto-focusing on open.
@@ -38,4 +39,5 @@ export type FocusScopeImplProps = {
38
39
  * Whether the content within the focus trap is being force mounted or not.
39
40
  */
40
41
  forceMount?: boolean;
42
+ ref: ReadableBox<HTMLElement | null>;
41
43
  } & FocusScopeProps;
@@ -36,13 +36,14 @@ type UseFocusScopeProps = ReadableBoxedValues<{
36
36
  * Whether force mount is enabled or not
37
37
  */
38
38
  forceMount: boolean;
39
+ ref: HTMLElement | null;
39
40
  }>;
40
41
  export type FocusScopeContainerProps = {
41
42
  id: string;
42
43
  tabindex: number;
43
44
  onkeydown: EventCallback<KeyboardEvent>;
44
45
  };
45
- export declare function useFocusScope({ id, loop, enabled, onOpenAutoFocus, onCloseAutoFocus, forceMount, }: UseFocusScopeProps): {
46
+ export declare function useFocusScope({ id, loop, enabled, onOpenAutoFocus, onCloseAutoFocus, forceMount, ref, }: UseFocusScopeProps): {
46
47
  readonly props: FocusScopeContainerProps;
47
48
  };
48
49
  export {};
@@ -1,4 +1,4 @@
1
- import { afterSleep, afterTick, box, executeCallbacks, useRefById } from "svelte-toolbelt";
1
+ import { afterSleep, afterTick, 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";
@@ -16,17 +16,11 @@ const AutoFocusOnDestroyEvent = new CustomEventDispatcher("focusScope.autoFocusO
16
16
  cancelable: true,
17
17
  });
18
18
  export const FocusScopeContext = new Context("FocusScope");
19
- export function useFocusScope({ id, loop, enabled, onOpenAutoFocus, onCloseAutoFocus, forceMount, }) {
19
+ export function useFocusScope({ id, loop, enabled, onOpenAutoFocus, onCloseAutoFocus, forceMount, ref, }) {
20
20
  const focusScopeStack = createFocusScopeStack();
21
21
  const focusScope = createFocusScopeAPI();
22
- const ref = box(null);
23
22
  const ctx = FocusScopeContext.getOr({ ignoreCloseAutoFocus: false });
24
23
  let lastFocusedElement = null;
25
- useRefById({
26
- id,
27
- ref,
28
- deps: () => enabled.current,
29
- });
30
24
  function manageFocus(event) {
31
25
  if (focusScope.paused || !ref.current || focusScope.isHandlingFocus)
32
26
  return;
@@ -44,6 +44,7 @@
44
44
  customAnchor = null,
45
45
  isStatic = false,
46
46
  enabled,
47
+ ref,
47
48
  ...restProps
48
49
  }: Omit<PopperLayerImplProps, "present" | "children"> & {
49
50
  enabled: boolean;
@@ -85,6 +86,7 @@
85
86
  {loop}
86
87
  trapFocus={enabled && trapFocus}
87
88
  forceMount={restProps.forceMount}
89
+ {ref}
88
90
  >
89
91
  {#snippet focusScope({ props: focusScopeProps })}
90
92
  <EscapeLayer {onEscapeKeydown} {escapeKeydownBehavior} {enabled}>
@@ -95,6 +97,7 @@
95
97
  {interactOutsideBehavior}
96
98
  {isValidEvent}
97
99
  {enabled}
100
+ {ref}
98
101
  >
99
102
  {#snippet children({ props: dismissibleProps })}
100
103
  <TextSelectionLayer
@@ -103,6 +106,7 @@
103
106
  {onPointerDown}
104
107
  {onPointerUp}
105
108
  {enabled}
109
+ {ref}
106
110
  >
107
111
  {@render popper?.({
108
112
  props: mergeProps(
@@ -39,11 +39,12 @@
39
39
  isValidEvent = () => false,
40
40
  customAnchor = null,
41
41
  isStatic = false,
42
+ ref,
42
43
  ...restProps
43
44
  }: PopperLayerImplProps = $props();
44
45
  </script>
45
46
 
46
- <PresenceLayer {id} {present} {...restProps}>
47
+ <PresenceLayer {present} {ref}>
47
48
  {#snippet presence()}
48
49
  <PopperLayerInner
49
50
  {popper}
@@ -82,6 +83,7 @@
82
83
  {isValidEvent}
83
84
  {onFocusOutside}
84
85
  forceMount={false}
86
+ {ref}
85
87
  {...restProps}
86
88
  />
87
89
  {/snippet}
@@ -3,11 +3,11 @@
3
3
  import type { PresenceLayerImplProps } from "./types.js";
4
4
  import { usePresence } from "./use-presence.svelte.js";
5
5
 
6
- let { present, forceMount, presence, id }: PresenceLayerImplProps = $props();
6
+ let { present, forceMount, presence, ref }: PresenceLayerImplProps = $props();
7
7
 
8
8
  const isPresent = usePresence(
9
9
  box.with(() => present),
10
- box.with(() => id)
10
+ ref
11
11
  );
12
12
  </script>
13
13
 
@@ -1,4 +1,5 @@
1
1
  import type { Snippet } from "svelte";
2
+ import type { ReadableBox } from "svelte-toolbelt";
2
3
  export type PresenceLayerProps = {
3
4
  /**
4
5
  * Whether to force mount the component.
@@ -6,7 +7,6 @@ export type PresenceLayerProps = {
6
7
  forceMount?: boolean;
7
8
  };
8
9
  export type PresenceLayerImplProps = PresenceLayerProps & {
9
- id: string;
10
10
  /**
11
11
  * The presence status.
12
12
  */
@@ -16,4 +16,5 @@ export type PresenceLayerImplProps = PresenceLayerProps & {
16
16
  current: boolean;
17
17
  };
18
18
  }]>;
19
+ ref: ReadableBox<HTMLElement | null>;
19
20
  };
@@ -1,4 +1,4 @@
1
1
  import { type ReadableBox } from "svelte-toolbelt";
2
- export declare function usePresence(present: ReadableBox<boolean>, id: ReadableBox<string>): {
2
+ export declare function usePresence(present: ReadableBox<boolean>, ref: ReadableBox<HTMLElement | null>): {
3
3
  readonly current: boolean;
4
4
  };