bits-ui 1.8.0 → 2.2.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 (317) 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.d.ts +2 -1
  14. package/dist/bits/avatar/avatar.svelte.js +8 -6
  15. package/dist/bits/avatar/components/avatar-fallback.svelte +4 -2
  16. package/dist/bits/avatar/components/avatar-image.svelte +4 -2
  17. package/dist/bits/avatar/components/avatar.svelte +4 -2
  18. package/dist/bits/button/components/button.svelte +1 -1
  19. package/dist/bits/calendar/calendar.svelte.d.ts +3 -9
  20. package/dist/bits/calendar/calendar.svelte.js +55 -41
  21. package/dist/bits/calendar/components/calendar-cell.svelte +4 -2
  22. package/dist/bits/calendar/components/calendar-day.svelte +4 -2
  23. package/dist/bits/calendar/components/calendar-grid-body.svelte +4 -2
  24. package/dist/bits/calendar/components/calendar-grid-head.svelte +4 -2
  25. package/dist/bits/calendar/components/calendar-grid-row.svelte +4 -2
  26. package/dist/bits/calendar/components/calendar-grid.svelte +4 -2
  27. package/dist/bits/calendar/components/calendar-head-cell.svelte +4 -2
  28. package/dist/bits/calendar/components/calendar-header.svelte +4 -2
  29. package/dist/bits/calendar/components/calendar-heading.svelte +4 -2
  30. package/dist/bits/calendar/components/calendar-next-button.svelte +4 -2
  31. package/dist/bits/calendar/components/calendar-prev-button.svelte +4 -2
  32. package/dist/bits/checkbox/checkbox.svelte.js +4 -14
  33. package/dist/bits/checkbox/components/checkbox-group-label.svelte +4 -2
  34. package/dist/bits/checkbox/components/checkbox-group.svelte +4 -2
  35. package/dist/bits/checkbox/components/checkbox.svelte +4 -2
  36. package/dist/bits/collapsible/collapsible.svelte.js +4 -10
  37. package/dist/bits/collapsible/components/collapsible-content.svelte +5 -3
  38. package/dist/bits/collapsible/components/collapsible-trigger.svelte +4 -2
  39. package/dist/bits/collapsible/components/collapsible.svelte +4 -2
  40. package/dist/bits/combobox/components/combobox-input.svelte +3 -3
  41. package/dist/bits/combobox/components/combobox.svelte +6 -1
  42. package/dist/bits/combobox/types.d.ts +18 -1
  43. package/dist/bits/command/command.svelte.js +13 -45
  44. package/dist/bits/command/components/_command-label.svelte +6 -7
  45. package/dist/bits/command/components/_command-label.svelte.d.ts +1 -1
  46. package/dist/bits/command/components/command-empty.svelte +4 -2
  47. package/dist/bits/command/components/command-group-heading.svelte +4 -2
  48. package/dist/bits/command/components/command-group-items.svelte +4 -2
  49. package/dist/bits/command/components/command-group.svelte +4 -2
  50. package/dist/bits/command/components/command-input.svelte +4 -2
  51. package/dist/bits/command/components/command-item.svelte +4 -2
  52. package/dist/bits/command/components/command-link-item.svelte +4 -2
  53. package/dist/bits/command/components/command-list.svelte +4 -2
  54. package/dist/bits/command/components/command-loading.svelte +4 -2
  55. package/dist/bits/command/components/command-separator.svelte +4 -2
  56. package/dist/bits/command/components/command-viewport.svelte +4 -2
  57. package/dist/bits/command/components/command.svelte +4 -2
  58. package/dist/bits/context-menu/components/context-menu-content-static.svelte +2 -3
  59. package/dist/bits/context-menu/components/context-menu-content.svelte +2 -3
  60. package/dist/bits/context-menu/components/context-menu-trigger.svelte +1 -1
  61. package/dist/bits/date-field/components/date-field-input.svelte +4 -2
  62. package/dist/bits/date-field/components/date-field-label.svelte +4 -2
  63. package/dist/bits/date-field/components/date-field-segment.svelte +4 -2
  64. package/dist/bits/date-field/date-field.svelte.d.ts +7 -5
  65. package/dist/bits/date-field/date-field.svelte.js +29 -38
  66. package/dist/bits/date-picker/components/date-picker-calendar.svelte +4 -2
  67. package/dist/bits/date-range-field/components/date-range-field-input.svelte +4 -2
  68. package/dist/bits/date-range-field/components/date-range-field-label.svelte +4 -2
  69. package/dist/bits/date-range-field/components/date-range-field.svelte +4 -2
  70. package/dist/bits/date-range-field/date-range-field.svelte.d.ts +2 -0
  71. package/dist/bits/date-range-field/date-range-field.svelte.js +6 -14
  72. package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +4 -2
  73. package/dist/bits/dialog/components/dialog-close.svelte +4 -2
  74. package/dist/bits/dialog/components/dialog-content.svelte +8 -2
  75. package/dist/bits/dialog/components/dialog-description.svelte +4 -2
  76. package/dist/bits/dialog/components/dialog-overlay.svelte +8 -3
  77. package/dist/bits/dialog/components/dialog-title.svelte +4 -2
  78. package/dist/bits/dialog/components/dialog-trigger.svelte +4 -2
  79. package/dist/bits/dialog/dialog.svelte.d.ts +1 -1
  80. package/dist/bits/dialog/dialog.svelte.js +19 -47
  81. package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +6 -5
  82. package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +6 -5
  83. package/dist/bits/index.d.ts +2 -0
  84. package/dist/bits/index.js +2 -0
  85. package/dist/bits/label/components/label.svelte +4 -2
  86. package/dist/bits/label/label.svelte.js +2 -2
  87. package/dist/bits/link-preview/components/link-preview-content-static.svelte +6 -2
  88. package/dist/bits/link-preview/components/link-preview-content.svelte +6 -2
  89. package/dist/bits/link-preview/components/link-preview-trigger.svelte +5 -3
  90. package/dist/bits/link-preview/link-preview.svelte.d.ts +2 -0
  91. package/dist/bits/link-preview/link-preview.svelte.js +13 -19
  92. package/dist/bits/menu/components/menu-checkbox-group.svelte +4 -2
  93. package/dist/bits/menu/components/menu-checkbox-item.svelte +6 -4
  94. package/dist/bits/menu/components/menu-content-static.svelte +6 -5
  95. package/dist/bits/menu/components/menu-content.svelte +6 -5
  96. package/dist/bits/menu/components/menu-group-heading.svelte +4 -2
  97. package/dist/bits/menu/components/menu-group.svelte +4 -2
  98. package/dist/bits/menu/components/menu-item.svelte +4 -2
  99. package/dist/bits/menu/components/menu-radio-group.svelte +4 -2
  100. package/dist/bits/menu/components/menu-radio-item.svelte +4 -2
  101. package/dist/bits/menu/components/menu-separator.svelte +4 -2
  102. package/dist/bits/menu/components/menu-sub-content-static.svelte +6 -5
  103. package/dist/bits/menu/components/menu-sub-content.svelte +6 -5
  104. package/dist/bits/menu/components/menu-sub-trigger.svelte +6 -3
  105. package/dist/bits/menu/components/menu-trigger.svelte +5 -3
  106. package/dist/bits/menu/menu.svelte.d.ts +9 -20
  107. package/dist/bits/menu/menu.svelte.js +40 -63
  108. package/dist/bits/menubar/components/menubar-content-static.svelte +4 -2
  109. package/dist/bits/menubar/components/menubar-content.svelte +4 -2
  110. package/dist/bits/menubar/components/menubar-menu.svelte +4 -2
  111. package/dist/bits/menubar/components/menubar-trigger.svelte +14 -6
  112. package/dist/bits/menubar/components/menubar.svelte +4 -2
  113. package/dist/bits/menubar/menubar.svelte.d.ts +24 -20
  114. package/dist/bits/menubar/menubar.svelte.js +40 -56
  115. package/dist/bits/meter/components/meter.svelte +4 -2
  116. package/dist/bits/meter/meter.svelte.js +2 -2
  117. package/dist/bits/navigation-menu/components/navigation-menu-content-impl.svelte +5 -2
  118. package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +8 -3
  119. package/dist/bits/navigation-menu/components/navigation-menu-indicator-impl.svelte +4 -2
  120. package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +6 -4
  121. package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +6 -3
  122. package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +4 -2
  123. package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +4 -2
  124. package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +4 -2
  125. package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +4 -2
  126. package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +5 -3
  127. package/dist/bits/navigation-menu/components/navigation-menu.svelte +4 -2
  128. package/dist/bits/navigation-menu/navigation-menu.svelte.d.ts +3 -1
  129. package/dist/bits/navigation-menu/navigation-menu.svelte.js +33 -60
  130. package/dist/bits/pagination/components/pagination-next-button.svelte +4 -2
  131. package/dist/bits/pagination/components/pagination-page.svelte +4 -2
  132. package/dist/bits/pagination/components/pagination-prev-button.svelte +4 -2
  133. package/dist/bits/pagination/components/pagination.svelte +4 -2
  134. package/dist/bits/pagination/pagination.svelte.js +4 -4
  135. package/dist/bits/pin-input/components/pin-input-cell.svelte +4 -2
  136. package/dist/bits/pin-input/components/pin-input.svelte +5 -3
  137. package/dist/bits/pin-input/pin-input.svelte.d.ts +4 -2
  138. package/dist/bits/pin-input/pin-input.svelte.js +20 -22
  139. package/dist/bits/pin-input/usePasswordManager.svelte.d.ts +3 -2
  140. package/dist/bits/pin-input/usePasswordManager.svelte.js +6 -5
  141. package/dist/bits/popover/components/popover-close.svelte +4 -2
  142. package/dist/bits/popover/components/popover-content-static.svelte +6 -2
  143. package/dist/bits/popover/components/popover-content.svelte +6 -2
  144. package/dist/bits/popover/components/popover-trigger.svelte +5 -3
  145. package/dist/bits/popover/popover.svelte.js +4 -18
  146. package/dist/bits/progress/components/progress.svelte +4 -2
  147. package/dist/bits/progress/progress.svelte.js +2 -2
  148. package/dist/bits/radio-group/components/radio-group-item.svelte +4 -2
  149. package/dist/bits/radio-group/components/radio-group.svelte +4 -2
  150. package/dist/bits/radio-group/radio-group.svelte.js +4 -7
  151. package/dist/bits/range-calendar/components/range-calendar-cell.svelte +4 -2
  152. package/dist/bits/range-calendar/components/range-calendar-day.svelte +4 -2
  153. package/dist/bits/range-calendar/components/range-calendar.svelte +4 -2
  154. package/dist/bits/range-calendar/range-calendar.svelte.d.ts +2 -0
  155. package/dist/bits/range-calendar/range-calendar.svelte.js +12 -6
  156. package/dist/bits/scroll-area/components/scroll-area-corner.svelte +8 -2
  157. package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +4 -1
  158. package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +1 -1
  159. package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +5 -1
  160. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +4 -2
  161. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +8 -3
  162. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +4 -2
  163. package/dist/bits/scroll-area/components/scroll-area.svelte +4 -2
  164. package/dist/bits/scroll-area/scroll-area.svelte.d.ts +2 -0
  165. package/dist/bits/scroll-area/scroll-area.svelte.js +27 -58
  166. package/dist/bits/select/components/select-content-static.svelte +6 -2
  167. package/dist/bits/select/components/select-content.svelte +6 -2
  168. package/dist/bits/select/components/select-group-heading.svelte +3 -2
  169. package/dist/bits/select/components/select-group.svelte +4 -2
  170. package/dist/bits/select/components/select-item.svelte +4 -2
  171. package/dist/bits/select/components/select-scroll-down-button.svelte +4 -2
  172. package/dist/bits/select/components/select-scroll-up-button.svelte +4 -2
  173. package/dist/bits/select/components/select-trigger.svelte +5 -3
  174. package/dist/bits/select/components/select-viewport.svelte +4 -2
  175. package/dist/bits/select/components/select.svelte +7 -1
  176. package/dist/bits/select/select.svelte.d.ts +5 -19
  177. package/dist/bits/select/select.svelte.js +43 -60
  178. package/dist/bits/separator/components/separator.svelte +4 -2
  179. package/dist/bits/separator/separator.svelte.js +2 -2
  180. package/dist/bits/slider/components/slider-range.svelte +4 -2
  181. package/dist/bits/slider/components/slider-thumb-label.svelte +50 -0
  182. package/dist/bits/slider/components/slider-thumb-label.svelte.d.ts +4 -0
  183. package/dist/bits/slider/components/slider-thumb.svelte +4 -2
  184. package/dist/bits/slider/components/slider-tick-label.svelte +50 -0
  185. package/dist/bits/slider/components/slider-tick-label.svelte.d.ts +4 -0
  186. package/dist/bits/slider/components/slider-tick.svelte +4 -2
  187. package/dist/bits/slider/components/slider.svelte +24 -5
  188. package/dist/bits/slider/exports.d.ts +3 -1
  189. package/dist/bits/slider/exports.js +2 -0
  190. package/dist/bits/slider/helpers.d.ts +14 -0
  191. package/dist/bits/slider/helpers.js +122 -0
  192. package/dist/bits/slider/slider.svelte.d.ts +91 -5
  193. package/dist/bits/slider/slider.svelte.js +194 -101
  194. package/dist/bits/slider/types.d.ts +105 -11
  195. package/dist/bits/switch/components/switch-thumb.svelte +4 -2
  196. package/dist/bits/switch/components/switch.svelte +4 -2
  197. package/dist/bits/switch/switch.svelte.js +3 -3
  198. package/dist/bits/tabs/components/tabs-content.svelte +4 -2
  199. package/dist/bits/tabs/components/tabs-list.svelte +4 -2
  200. package/dist/bits/tabs/components/tabs-trigger.svelte +4 -2
  201. package/dist/bits/tabs/components/tabs.svelte +4 -2
  202. package/dist/bits/tabs/tabs.svelte.js +6 -6
  203. package/dist/bits/time-field/components/time-field-hidden-input.svelte +10 -0
  204. package/dist/bits/{date-field/components/date-field-error.svelte.d.ts → time-field/components/time-field-hidden-input.svelte.d.ts} +6 -14
  205. package/dist/bits/time-field/components/time-field-input.svelte +39 -0
  206. package/dist/bits/time-field/components/time-field-input.svelte.d.ts +4 -0
  207. package/dist/bits/time-field/components/time-field-label.svelte +34 -0
  208. package/dist/bits/time-field/components/time-field-label.svelte.d.ts +4 -0
  209. package/dist/bits/time-field/components/time-field-segment.svelte +37 -0
  210. package/dist/bits/time-field/components/time-field-segment.svelte.d.ts +4 -0
  211. package/dist/bits/time-field/components/time-field.svelte +94 -0
  212. package/dist/bits/time-field/components/time-field.svelte.d.ts +20 -0
  213. package/dist/bits/time-field/exports.d.ts +5 -0
  214. package/dist/bits/time-field/exports.js +4 -0
  215. package/dist/bits/time-field/index.d.ts +1 -0
  216. package/dist/bits/time-field/index.js +1 -0
  217. package/dist/bits/time-field/time-field.svelte.d.ts +417 -0
  218. package/dist/bits/time-field/time-field.svelte.js +980 -0
  219. package/dist/bits/time-field/types.d.ts +137 -0
  220. package/dist/bits/time-field/types.js +1 -0
  221. package/dist/bits/time-range-field/components/time-range-field-input.svelte +43 -0
  222. package/dist/bits/time-range-field/components/time-range-field-input.svelte.d.ts +4 -0
  223. package/dist/bits/time-range-field/components/time-range-field-label.svelte +34 -0
  224. package/dist/bits/time-range-field/components/time-range-field-label.svelte.d.ts +4 -0
  225. package/dist/bits/time-range-field/components/time-range-field.svelte +144 -0
  226. package/dist/bits/time-range-field/components/time-range-field.svelte.d.ts +20 -0
  227. package/dist/bits/time-range-field/exports.d.ts +5 -0
  228. package/dist/bits/time-range-field/exports.js +4 -0
  229. package/dist/bits/time-range-field/index.d.ts +1 -0
  230. package/dist/bits/time-range-field/index.js +1 -0
  231. package/dist/bits/time-range-field/time-range-field.svelte.d.ts +92 -0
  232. package/dist/bits/time-range-field/time-range-field.svelte.js +212 -0
  233. package/dist/bits/time-range-field/types.d.ts +150 -0
  234. package/dist/bits/time-range-field/types.js +1 -0
  235. package/dist/bits/toggle/components/toggle.svelte +4 -2
  236. package/dist/bits/toggle/toggle.svelte.js +2 -2
  237. package/dist/bits/toggle-group/components/toggle-group-item.svelte +4 -2
  238. package/dist/bits/toggle-group/components/toggle-group.svelte +4 -2
  239. package/dist/bits/toggle-group/toggle-group.svelte.js +4 -4
  240. package/dist/bits/toolbar/components/toolbar-button.svelte +4 -2
  241. package/dist/bits/toolbar/components/toolbar-group-item.svelte +4 -2
  242. package/dist/bits/toolbar/components/toolbar-group.svelte +4 -2
  243. package/dist/bits/toolbar/components/toolbar-link.svelte +4 -2
  244. package/dist/bits/toolbar/components/toolbar.svelte +4 -2
  245. package/dist/bits/toolbar/toolbar.svelte.js +7 -7
  246. package/dist/bits/tooltip/components/tooltip-content-static.svelte +6 -2
  247. package/dist/bits/tooltip/components/tooltip-content.svelte +6 -2
  248. package/dist/bits/tooltip/components/tooltip-trigger.svelte +5 -3
  249. package/dist/bits/tooltip/tooltip.svelte.d.ts +2 -0
  250. package/dist/bits/tooltip/tooltip.svelte.js +6 -15
  251. package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -0
  252. package/dist/bits/utilities/dismissible-layer/types.d.ts +2 -0
  253. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +3 -3
  254. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +16 -25
  255. package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -1
  256. package/dist/bits/utilities/floating-layer/types.d.ts +1 -0
  257. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +3 -2
  258. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +7 -27
  259. package/dist/bits/utilities/focus-scope/focus-scope.svelte +2 -0
  260. package/dist/bits/utilities/focus-scope/types.d.ts +2 -0
  261. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +2 -1
  262. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +15 -16
  263. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +4 -0
  264. package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -1
  265. package/dist/bits/utilities/portal/types.d.ts +1 -1
  266. package/dist/bits/utilities/presence-layer/presence-layer.svelte +2 -2
  267. package/dist/bits/utilities/presence-layer/types.d.ts +2 -1
  268. package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +1 -1
  269. package/dist/bits/utilities/presence-layer/use-presence.svelte.js +19 -36
  270. package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -0
  271. package/dist/bits/utilities/text-selection-layer/types.d.ts +2 -0
  272. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +5 -1
  273. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +8 -14
  274. package/dist/index.d.ts +1 -1
  275. package/dist/index.js +1 -1
  276. package/dist/internal/box-auto-reset.svelte.d.ts +7 -1
  277. package/dist/internal/box-auto-reset.svelte.js +11 -6
  278. package/dist/internal/create-id.d.ts +8 -0
  279. package/dist/internal/create-id.js +5 -0
  280. package/dist/internal/date-time/announcer.d.ts +1 -1
  281. package/dist/internal/date-time/announcer.js +20 -20
  282. package/dist/internal/date-time/calendar-helpers.svelte.js +7 -5
  283. package/dist/internal/date-time/field/helpers.d.ts +9 -2
  284. package/dist/internal/date-time/field/helpers.js +16 -9
  285. package/dist/internal/date-time/field/parts.d.ts +3 -1
  286. package/dist/internal/date-time/field/parts.js +10 -2
  287. package/dist/internal/date-time/field/segments.d.ts +9 -0
  288. package/dist/internal/date-time/field/segments.js +65 -0
  289. package/dist/internal/date-time/field/time-helpers.d.ts +83 -0
  290. package/dist/internal/date-time/field/time-helpers.js +301 -0
  291. package/dist/internal/date-time/field/types.d.ts +2 -2
  292. package/dist/internal/date-time/formatter.d.ts +11 -1
  293. package/dist/internal/date-time/formatter.js +56 -0
  294. package/dist/internal/date-time/utils.d.ts +7 -2
  295. package/dist/internal/date-time/utils.js +15 -1
  296. package/dist/internal/dom.d.ts +0 -1
  297. package/dist/internal/dom.js +0 -3
  298. package/dist/internal/focus.d.ts +2 -2
  299. package/dist/internal/focus.js +14 -9
  300. package/dist/internal/math.d.ts +0 -4
  301. package/dist/internal/math.js +0 -28
  302. package/dist/internal/tabbable.d.ts +0 -2
  303. package/dist/internal/tabbable.js +10 -14
  304. package/dist/internal/use-data-typeahead.svelte.d.ts +1 -0
  305. package/dist/internal/use-data-typeahead.svelte.js +4 -1
  306. package/dist/internal/use-dom-typeahead.svelte.d.ts +3 -1
  307. package/dist/internal/use-dom-typeahead.svelte.js +5 -2
  308. package/dist/internal/use-grace-area.svelte.js +9 -5
  309. package/dist/internal/use-roving-focus.svelte.d.ts +3 -3
  310. package/dist/internal/use-roving-focus.svelte.js +10 -11
  311. package/dist/shared/date/types.d.ts +27 -4
  312. package/dist/shared/index.d.ts +2 -2
  313. package/dist/types.d.ts +2 -0
  314. package/package.json +18 -16
  315. package/dist/bits/date-field/components/date-field-error.svelte +0 -0
  316. package/dist/internal/use-size.svelte.d.ts +0 -7
  317. package/dist/internal/use-size.svelte.js +0 -54
@@ -1,4 +1,4 @@
1
- import { box, onDestroyEffect, useRefById } from "svelte-toolbelt";
1
+ import { box, onDestroyEffect, attachRef, DOMContext } from "svelte-toolbelt";
2
2
  import { Context, watch } from "runed";
3
3
  import { DateFieldInputState, useDateFieldRoot } from "../date-field/date-field.svelte.js";
4
4
  import { useId } from "../../internal/use-id.js";
@@ -21,17 +21,13 @@ export class DateRangeFieldRootState {
21
21
  startValueComplete = $derived.by(() => this.opts.startValue.current !== undefined);
22
22
  endValueComplete = $derived.by(() => this.opts.endValue.current !== undefined);
23
23
  rangeComplete = $derived(this.startValueComplete && this.endValueComplete);
24
+ domContext;
24
25
  constructor(opts) {
25
26
  this.opts = opts;
26
27
  this.formatter = createFormatter(this.opts.locale.current);
27
- useRefById({
28
- ...opts,
29
- onRefChange: (node) => {
30
- this.fieldNode = node;
31
- },
32
- });
28
+ this.domContext = new DOMContext(this.opts.ref);
33
29
  onDestroyEffect(() => {
34
- removeDescriptionElement(this.descriptionId);
30
+ removeDescriptionElement(this.descriptionId, this.domContext.getDocument());
35
31
  });
36
32
  $effect(() => {
37
33
  if (this.formatter.getLocale() === this.opts.locale.current)
@@ -136,6 +132,7 @@ export class DateRangeFieldRootState {
136
132
  role: "group",
137
133
  [DATE_RANGE_FIELD_ROOT_ATTR]: "",
138
134
  "data-invalid": getDataInvalid(this.isInvalid),
135
+ ...attachRef(this.opts.ref, (v) => (this.fieldNode = v)),
139
136
  }));
140
137
  }
141
138
  class DateRangeFieldLabelState {
@@ -144,12 +141,6 @@ class DateRangeFieldLabelState {
144
141
  constructor(opts, root) {
145
142
  this.opts = opts;
146
143
  this.root = root;
147
- useRefById({
148
- ...opts,
149
- onRefChange: (node) => {
150
- root.labelNode = node;
151
- },
152
- });
153
144
  }
154
145
  #onclick = () => {
155
146
  if (this.root.opts.disabled.current)
@@ -166,6 +157,7 @@ class DateRangeFieldLabelState {
166
157
  "data-disabled": getDataDisabled(this.root.opts.disabled.current),
167
158
  [DATE_RANGE_FIELD_LABEL_ATTR]: "",
168
159
  onclick: this.#onclick,
160
+ ...attachRef(this.opts.ref, (v) => (this.root.labelNode = v)),
169
161
  }));
170
162
  }
171
163
  export const DateRangeFieldRootContext = new Context("DateRangeField.Root");
@@ -2,13 +2,15 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { DateRangePickerCalendarProps } from "../types.js";
4
4
  import { DateRangePickerRootContext } from "../date-range-picker.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
6
  import { useRangeCalendarRoot } from "../../range-calendar/range-calendar.svelte.js";
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
  ref = $bindable(null),
13
15
  ...restProps
14
16
  }: DateRangePickerCalendarProps = $props();
@@ -2,12 +2,14 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import { useDialogClose } from "../dialog.svelte.js";
4
4
  import type { DialogCloseProps } from "../types.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
+
7
+ const uid = $props.id();
6
8
 
7
9
  let {
8
10
  children,
9
11
  child,
10
- id = useId(),
12
+ id = createId(uid),
11
13
  ref = $bindable(null),
12
14
  disabled = false,
13
15
  ...restProps
@@ -7,13 +7,15 @@
7
7
  import FocusScope from "../../utilities/focus-scope/focus-scope.svelte";
8
8
  import PresenceLayer from "../../utilities/presence-layer/presence-layer.svelte";
9
9
  import TextSelectionLayer from "../../utilities/text-selection-layer/text-selection-layer.svelte";
10
- import { useId } from "../../../internal/use-id.js";
10
+ import { createId } from "../../../internal/create-id.js";
11
11
  import { noop } from "../../../internal/noop.js";
12
12
  import ScrollLock from "../../utilities/scroll-lock/scroll-lock.svelte";
13
13
  import { shouldTrapFocus } from "../../../internal/should-trap-focus.js";
14
14
 
15
+ const uid = $props.id();
16
+
15
17
  let {
16
- id = useId(),
18
+ id = createId(uid),
17
19
  children,
18
20
  child,
19
21
  ref = $bindable(null),
@@ -43,9 +45,11 @@
43
45
  {...mergedProps}
44
46
  {forceMount}
45
47
  present={contentState.root.opts.open.current || forceMount}
48
+ ref={contentState.opts.ref}
46
49
  >
47
50
  {#snippet presence()}
48
51
  <FocusScope
52
+ ref={contentState.opts.ref}
49
53
  loop
50
54
  trapFocus={shouldTrapFocus({
51
55
  forceMount,
@@ -73,6 +77,7 @@
73
77
  >
74
78
  <DismissibleLayer
75
79
  {...mergedProps}
80
+ ref={contentState.opts.ref}
76
81
  enabled={contentState.root.opts.open.current}
77
82
  onInteractOutside={(e) => {
78
83
  onInteractOutside(e);
@@ -82,6 +87,7 @@
82
87
  >
83
88
  <TextSelectionLayer
84
89
  {...mergedProps}
90
+ ref={contentState.opts.ref}
85
91
  enabled={contentState.root.opts.open.current}
86
92
  >
87
93
  {#if child}
@@ -2,10 +2,12 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import { useDialogDescription } from "../dialog.svelte.js";
4
4
  import type { DialogDescriptionProps } from "../types.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
+
7
+ const uid = $props.id();
6
8
 
7
9
  let {
8
- id = useId(),
10
+ id = createId(uid),
9
11
  children,
10
12
  child,
11
13
  ref = $bindable(null),
@@ -2,11 +2,13 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import { useDialogOverlay } from "../dialog.svelte.js";
4
4
  import type { DialogOverlayProps } from "../types.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
6
  import PresenceLayer from "../../utilities/presence-layer/presence-layer.svelte";
7
7
 
8
+ const uid = $props.id();
9
+
8
10
  let {
9
- id = useId(),
11
+ id = createId(uid),
10
12
  forceMount = false,
11
13
  child,
12
14
  children,
@@ -25,7 +27,10 @@
25
27
  const mergedProps = $derived(mergeProps(restProps, overlayState.props));
26
28
  </script>
27
29
 
28
- <PresenceLayer {id} present={overlayState.root.opts.open.current || forceMount}>
30
+ <PresenceLayer
31
+ present={overlayState.root.opts.open.current || forceMount}
32
+ ref={overlayState.opts.ref}
33
+ >
29
34
  {#snippet presence()}
30
35
  {#if child}
31
36
  {@render child({ props: mergeProps(mergedProps), ...overlayState.snippetProps })}
@@ -2,10 +2,12 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import { useDialogTitle } from "../dialog.svelte.js";
4
4
  import type { DialogTitleProps } from "../types.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
+
7
+ const uid = $props.id();
6
8
 
7
9
  let {
8
- id = useId(),
10
+ id = createId(uid),
9
11
  ref = $bindable(null),
10
12
  child,
11
13
  children,
@@ -2,10 +2,12 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import { useDialogTrigger } from "../dialog.svelte.js";
4
4
  import type { DialogTriggerProps } from "../types.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
+
7
+ const uid = $props.id();
6
8
 
7
9
  let {
8
- id = useId(),
10
+ id = createId(uid),
9
11
  ref = $bindable(null),
10
12
  children,
11
13
  child,
@@ -95,7 +95,7 @@ declare class DialogTitleState {
95
95
  readonly "data-state": "open" | "closed";
96
96
  readonly id: string;
97
97
  readonly role: "heading";
98
- readonly "aria-level": 1 | 2 | 3 | 4 | 5 | 6;
98
+ readonly "aria-level": 1 | 2 | 3 | 4 | 6 | 5;
99
99
  };
100
100
  }
101
101
  type DialogDescriptionStateProps = WithRefProps;
@@ -1,7 +1,8 @@
1
- import { useRefById } from "svelte-toolbelt";
1
+ import { attachRef } from "svelte-toolbelt";
2
2
  import { Context } from "runed";
3
3
  import { getAriaExpanded, getDataOpenClosed } from "../../internal/attrs.js";
4
4
  import { kbd } from "../../internal/kbd.js";
5
+ import { untrack } from "svelte";
5
6
  function createAttrs(variant) {
6
7
  return {
7
8
  content: `data-${variant}-content`,
@@ -50,13 +51,6 @@ class DialogTriggerState {
50
51
  constructor(opts, root) {
51
52
  this.opts = opts;
52
53
  this.root = root;
53
- useRefById({
54
- ...opts,
55
- onRefChange: (node) => {
56
- this.root.triggerNode = node;
57
- this.root.triggerId = node?.id;
58
- },
59
- });
60
54
  this.onclick = this.onclick.bind(this);
61
55
  this.onkeydown = this.onkeydown.bind(this);
62
56
  }
@@ -85,6 +79,10 @@ class DialogTriggerState {
85
79
  onclick: this.onclick,
86
80
  disabled: this.opts.disabled.current ? true : undefined,
87
81
  ...this.root.sharedProps,
82
+ ...attachRef(this.opts.ref, (v) => untrack(() => {
83
+ this.root.triggerNode = v;
84
+ this.root.triggerId = v?.id;
85
+ })),
88
86
  }));
89
87
  }
90
88
  class DialogCloseState {
@@ -96,10 +94,6 @@ class DialogCloseState {
96
94
  this.root = root;
97
95
  this.onclick = this.onclick.bind(this);
98
96
  this.onkeydown = this.onkeydown.bind(this);
99
- useRefById({
100
- ...opts,
101
- deps: () => this.root.opts.open.current,
102
- });
103
97
  }
104
98
  onclick(e) {
105
99
  if (this.opts.disabled.current)
@@ -124,6 +118,7 @@ class DialogCloseState {
124
118
  disabled: this.opts.disabled.current ? true : undefined,
125
119
  tabindex: 0,
126
120
  ...this.root.sharedProps,
121
+ ...attachRef(this.opts.ref),
127
122
  }));
128
123
  }
129
124
  class DialogActionState {
@@ -133,12 +128,12 @@ class DialogActionState {
133
128
  constructor(opts, root) {
134
129
  this.opts = opts;
135
130
  this.root = root;
136
- useRefById(opts);
137
131
  }
138
132
  props = $derived.by(() => ({
139
133
  id: this.opts.id.current,
140
134
  [this.#attr]: "",
141
135
  ...this.root.sharedProps,
136
+ ...attachRef(this.opts.ref),
142
137
  }));
143
138
  }
144
139
  class DialogTitleState {
@@ -147,13 +142,6 @@ class DialogTitleState {
147
142
  constructor(opts, root) {
148
143
  this.opts = opts;
149
144
  this.root = root;
150
- useRefById({
151
- ...opts,
152
- onRefChange: (node) => {
153
- this.root.titleId = node?.id;
154
- },
155
- deps: () => this.root.opts.open.current,
156
- });
157
145
  }
158
146
  props = $derived.by(() => ({
159
147
  id: this.opts.id.current,
@@ -161,6 +149,7 @@ class DialogTitleState {
161
149
  "aria-level": this.opts.level.current,
162
150
  [this.root.attrs.title]: "",
163
151
  ...this.root.sharedProps,
152
+ ...attachRef(this.opts.ref, (v) => (this.root.titleId = v?.id)),
164
153
  }));
165
154
  }
166
155
  class DialogDescriptionState {
@@ -169,19 +158,15 @@ class DialogDescriptionState {
169
158
  constructor(opts, root) {
170
159
  this.opts = opts;
171
160
  this.root = root;
172
- useRefById({
173
- ...opts,
174
- deps: () => this.root.opts.open.current,
175
- onRefChange: (node) => {
176
- this.root.descriptionNode = node;
177
- this.root.descriptionId = node?.id;
178
- },
179
- });
180
161
  }
181
162
  props = $derived.by(() => ({
182
163
  id: this.opts.id.current,
183
164
  [this.root.attrs.description]: "",
184
165
  ...this.root.sharedProps,
166
+ ...attachRef(this.opts.ref, (v) => {
167
+ this.root.descriptionNode = v;
168
+ this.root.descriptionId = v?.id;
169
+ }),
185
170
  }));
186
171
  }
187
172
  class DialogContentState {
@@ -190,14 +175,6 @@ class DialogContentState {
190
175
  constructor(opts, root) {
191
176
  this.opts = opts;
192
177
  this.root = root;
193
- useRefById({
194
- ...opts,
195
- deps: () => this.root.opts.open.current,
196
- onRefChange: (node) => {
197
- this.root.contentNode = node;
198
- this.root.contentId = node?.id;
199
- },
200
- });
201
178
  }
202
179
  snippetProps = $derived.by(() => ({ open: this.root.opts.open.current }));
203
180
  props = $derived.by(() => ({
@@ -213,6 +190,10 @@ class DialogContentState {
213
190
  },
214
191
  tabindex: this.root.opts.variant.current === "alert-dialog" ? -1 : undefined,
215
192
  ...this.root.sharedProps,
193
+ ...attachRef(this.opts.ref, (v) => {
194
+ this.root.contentNode = v;
195
+ this.root.contentId = v?.id;
196
+ }),
216
197
  }));
217
198
  }
218
199
  class DialogOverlayState {
@@ -221,10 +202,6 @@ class DialogOverlayState {
221
202
  constructor(opts, root) {
222
203
  this.opts = opts;
223
204
  this.root = root;
224
- useRefById({
225
- ...opts,
226
- deps: () => this.root.opts.open.current,
227
- });
228
205
  }
229
206
  snippetProps = $derived.by(() => ({ open: this.root.opts.open.current }));
230
207
  props = $derived.by(() => ({
@@ -234,6 +211,7 @@ class DialogOverlayState {
234
211
  pointerEvents: "auto",
235
212
  },
236
213
  ...this.root.sharedProps,
214
+ ...attachRef(this.opts.ref),
237
215
  }));
238
216
  }
239
217
  class AlertDialogCancelState {
@@ -244,13 +222,6 @@ class AlertDialogCancelState {
244
222
  this.root = root;
245
223
  this.onclick = this.onclick.bind(this);
246
224
  this.onkeydown = this.onkeydown.bind(this);
247
- useRefById({
248
- ...opts,
249
- deps: () => this.root.opts.open.current,
250
- onRefChange: (node) => {
251
- this.root.cancelNode = node;
252
- },
253
- });
254
225
  }
255
226
  onclick(e) {
256
227
  if (this.opts.disabled.current)
@@ -274,6 +245,7 @@ class AlertDialogCancelState {
274
245
  onkeydown: this.onkeydown,
275
246
  tabindex: 0,
276
247
  ...this.root.sharedProps,
248
+ ...attachRef(this.opts.ref, (v) => (this.root.cancelNode = v)),
277
249
  }));
278
250
  }
279
251
  const DialogRootContext = new Context("Dialog.Root");
@@ -2,15 +2,16 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { DropdownMenuContentStaticProps } from "../types.js";
4
4
  import { useMenuContent } from "../../menu/menu.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
  import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
8
- import Mounted from "../../utilities/mounted.svelte";
9
8
  import { getFloatingContentCSSVars } from "../../../internal/floating-svelte/floating-utils.svelte.js";
10
9
  import PopperLayerForceMount from "../../utilities/popper-layer/popper-layer-force-mount.svelte";
11
10
 
11
+ const uid = $props.id();
12
+
12
13
  let {
13
- id = useId(),
14
+ id = createId(uid),
14
15
  child,
15
16
  children,
16
17
  ref = $bindable(null),
@@ -52,6 +53,7 @@
52
53
  <PopperLayerForceMount
53
54
  {...mergedProps}
54
55
  {...contentState.popperProps}
56
+ ref={contentState.opts.ref}
55
57
  enabled={contentState.parentMenu.opts.open.current}
56
58
  onInteractOutside={handleInteractOutside}
57
59
  onEscapeKeydown={handleEscapeKeydown}
@@ -72,13 +74,13 @@
72
74
  {@render children?.()}
73
75
  </div>
74
76
  {/if}
75
- <Mounted bind:mounted={contentState.mounted} />
76
77
  {/snippet}
77
78
  </PopperLayerForceMount>
78
79
  {:else if !forceMount}
79
80
  <PopperLayer
80
81
  {...mergedProps}
81
82
  {...contentState.popperProps}
83
+ ref={contentState.opts.ref}
82
84
  present={contentState.parentMenu.opts.open.current}
83
85
  onInteractOutside={handleInteractOutside}
84
86
  onEscapeKeydown={handleEscapeKeydown}
@@ -99,7 +101,6 @@
99
101
  {@render children?.()}
100
102
  </div>
101
103
  {/if}
102
- <Mounted bind:mounted={contentState.mounted} />
103
104
  {/snippet}
104
105
  </PopperLayer>
105
106
  {/if}
@@ -2,15 +2,16 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { DropdownMenuContentProps } from "../types.js";
4
4
  import { useMenuContent } from "../../menu/menu.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
  import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
8
- import Mounted from "../../utilities/mounted.svelte";
9
8
  import { getFloatingContentCSSVars } from "../../../internal/floating-svelte/floating-utils.svelte.js";
10
9
  import PopperLayerForceMount from "../../utilities/popper-layer/popper-layer-force-mount.svelte";
11
10
 
11
+ const uid = $props.id();
12
+
12
13
  let {
13
- id = useId(),
14
+ id = createId(uid),
14
15
  child,
15
16
  children,
16
17
  ref = $bindable(null),
@@ -52,6 +53,7 @@
52
53
  <PopperLayerForceMount
53
54
  {...mergedProps}
54
55
  {...contentState.popperProps}
56
+ ref={contentState.opts.ref}
55
57
  enabled={contentState.parentMenu.opts.open.current}
56
58
  onInteractOutside={handleInteractOutside}
57
59
  onEscapeKeydown={handleEscapeKeydown}
@@ -73,13 +75,13 @@
73
75
  </div>
74
76
  </div>
75
77
  {/if}
76
- <Mounted bind:mounted={contentState.mounted} />
77
78
  {/snippet}
78
79
  </PopperLayerForceMount>
79
80
  {:else if !forceMount}
80
81
  <PopperLayer
81
82
  {...mergedProps}
82
83
  {...contentState.popperProps}
84
+ ref={contentState.opts.ref}
83
85
  present={contentState.parentMenu.opts.open.current}
84
86
  onInteractOutside={handleInteractOutside}
85
87
  onEscapeKeydown={handleEscapeKeydown}
@@ -101,7 +103,6 @@
101
103
  </div>
102
104
  </div>
103
105
  {/if}
104
- <Mounted bind:mounted={contentState.mounted} />
105
106
  {/snippet}
106
107
  </PopperLayer>
107
108
  {/if}
@@ -32,6 +32,8 @@ export { Separator } from "./separator/index.js";
32
32
  export { Slider } from "./slider/index.js";
33
33
  export { Switch } from "./switch/index.js";
34
34
  export { Tabs } from "./tabs/index.js";
35
+ export { TimeField } from "./time-field/index.js";
36
+ export { TimeRangeField } from "./time-range-field/index.js";
35
37
  export { Toggle } from "./toggle/index.js";
36
38
  export { ToggleGroup } from "./toggle-group/index.js";
37
39
  export { Toolbar } from "./toolbar/index.js";
@@ -32,6 +32,8 @@ export { Separator } from "./separator/index.js";
32
32
  export { Slider } from "./slider/index.js";
33
33
  export { Switch } from "./switch/index.js";
34
34
  export { Tabs } from "./tabs/index.js";
35
+ export { TimeField } from "./time-field/index.js";
36
+ export { TimeRangeField } from "./time-range-field/index.js";
35
37
  export { Toggle } from "./toggle/index.js";
36
38
  export { ToggleGroup } from "./toggle-group/index.js";
37
39
  export { Toolbar } from "./toolbar/index.js";
@@ -2,12 +2,14 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { LabelRootProps } from "../types.js";
4
4
  import { setLabelRootState } from "../label.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
+
7
+ const uid = $props.id();
6
8
 
7
9
  let {
8
10
  children,
9
11
  child,
10
- id = useId(),
12
+ id = createId(uid),
11
13
  ref = $bindable(null),
12
14
  for: forProp,
13
15
  ...restProps
@@ -1,11 +1,10 @@
1
- import { useRefById } from "svelte-toolbelt";
1
+ import { attachRef } from "svelte-toolbelt";
2
2
  const ROOT_ATTR = "data-label-root";
3
3
  class LabelRootState {
4
4
  opts;
5
5
  constructor(opts) {
6
6
  this.opts = opts;
7
7
  this.onmousedown = this.onmousedown.bind(this);
8
- useRefById(opts);
9
8
  }
10
9
  onmousedown(e) {
11
10
  if (e.detail > 1)
@@ -15,6 +14,7 @@ class LabelRootState {
15
14
  id: this.opts.id.current,
16
15
  [ROOT_ATTR]: "",
17
16
  onmousedown: this.onmousedown,
17
+ ...attachRef(this.opts.ref),
18
18
  }));
19
19
  }
20
20
  export function setLabelRootState(props) {
@@ -2,16 +2,18 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { LinkPreviewContentStaticProps } from "../types.js";
4
4
  import { useLinkPreviewContent } from "../link-preview.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,
@@ -36,6 +38,7 @@
36
38
  <PopperLayerForceMount
37
39
  {...mergedProps}
38
40
  {...contentState.popperProps}
41
+ ref={contentState.opts.ref}
39
42
  enabled={contentState.root.opts.open.current}
40
43
  isStatic
41
44
  {id}
@@ -61,6 +64,7 @@
61
64
  <PopperLayer
62
65
  {...mergedProps}
63
66
  {...contentState.popperProps}
67
+ ref={contentState.opts.ref}
64
68
  present={contentState.root.opts.open.current}
65
69
  isStatic
66
70
  {id}
@@ -2,17 +2,19 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { LinkPreviewContentProps } from "../types.js";
4
4
  import { useLinkPreviewContent } from "../link-preview.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
6
5
  import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
7
6
  import { getFloatingContentCSSVars } from "../../../internal/floating-svelte/floating-utils.svelte.js";
8
7
  import PopperLayerForceMount from "../../utilities/popper-layer/popper-layer-force-mount.svelte";
9
8
  import Mounted from "../../utilities/mounted.svelte";
10
9
  import { noop } from "../../../internal/noop.js";
10
+ import { createId } from "../../../internal/create-id.js";
11
+
12
+ const uid = $props.id();
11
13
 
12
14
  let {
13
15
  children,
14
16
  child,
15
- id = useId(),
17
+ id = createId(uid),
16
18
  ref = $bindable(null),
17
19
  side = "top",
18
20
  sideOffset = 0,
@@ -56,6 +58,7 @@
56
58
  <PopperLayerForceMount
57
59
  {...mergedProps}
58
60
  {...contentState.popperProps}
61
+ ref={contentState.opts.ref}
59
62
  enabled={contentState.root.opts.open.current}
60
63
  {id}
61
64
  trapFocus={false}
@@ -82,6 +85,7 @@
82
85
  <PopperLayer
83
86
  {...mergedProps}
84
87
  {...contentState.popperProps}
88
+ ref={contentState.opts.ref}
85
89
  present={contentState.root.opts.open.current}
86
90
  {id}
87
91
  trapFocus={false}
@@ -2,12 +2,14 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { LinkPreviewTriggerProps } from "../types.js";
4
4
  import { useLinkPreviewTrigger } from "../link-preview.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
6
  import { FloatingLayer } from "../../utilities/floating-layer/index.js";
7
7
 
8
+ const uid = $props.id();
9
+
8
10
  let {
9
11
  ref = $bindable(null),
10
- id = useId(),
12
+ id = createId(uid),
11
13
  child,
12
14
  children,
13
15
  ...restProps
@@ -24,7 +26,7 @@
24
26
  const mergedProps = $derived(mergeProps(restProps, triggerState.props));
25
27
  </script>
26
28
 
27
- <FloatingLayer.Anchor {id}>
29
+ <FloatingLayer.Anchor {id} ref={triggerState.opts.ref}>
28
30
  {#if child}
29
31
  {@render child({ props: mergedProps })}
30
32
  {:else}
@@ -1,3 +1,4 @@
1
+ import { DOMContext } from "svelte-toolbelt";
1
2
  import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
2
3
  import type { BitsFocusEvent, BitsPointerEvent, WithRefProps } from "../../internal/types.js";
3
4
  type LinkPreviewRootStateProps = WritableBoxedValues<{
@@ -16,6 +17,7 @@ declare class LinkPreviewRootState {
16
17
  contentMounted: boolean;
17
18
  triggerNode: HTMLElement | null;
18
19
  isOpening: boolean;
20
+ domContext: DOMContext;
19
21
  constructor(opts: LinkPreviewRootStateProps);
20
22
  clearTimeout(): void;
21
23
  handleOpen(): void;