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
@@ -1,13 +1,15 @@
1
1
  <script lang="ts">
2
2
  import type { NavigationMenuViewportProps } from "../types.js";
3
3
  import { useNavigationMenuViewport } from "../navigation-menu.svelte.js";
4
- import { useId } from "../../../internal/use-id.js";
4
+ import { createId } from "../../../internal/create-id.js";
5
5
  import PresenceLayer from "../../utilities/presence-layer/presence-layer.svelte";
6
6
  import { box, mergeProps } from "svelte-toolbelt";
7
7
  import { Mounted } from "../../utilities/index.js";
8
8
 
9
+ const uid = $props.id();
10
+
9
11
  let {
10
- id = useId(),
12
+ id = createId(uid),
11
13
  ref = $bindable(null),
12
14
  forceMount = false,
13
15
  child,
@@ -26,7 +28,7 @@
26
28
  const mergedProps = $derived(mergeProps(restProps, viewportState.props));
27
29
  </script>
28
30
 
29
- <PresenceLayer {id} present={forceMount || viewportState.open}>
31
+ <PresenceLayer present={forceMount || viewportState.open} ref={viewportState.opts.ref}>
30
32
  {#snippet presence()}
31
33
  {#if child}
32
34
  {@render child({ props: mergedProps })}
@@ -2,13 +2,15 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { NavigationMenuRootProps } from "../types.js";
4
4
  import { useNavigationMenuRoot } from "../navigation-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
 
8
+ const uid = $props.id();
9
+
8
10
  let {
9
11
  child,
10
12
  children,
11
- id = useId(),
13
+ id = createId(uid),
12
14
  ref = $bindable(null),
13
15
  value = $bindable(""),
14
16
  onValueChange = noop,
@@ -2,7 +2,7 @@
2
2
  * Based on Radix UI's Navigation Menu
3
3
  * https://www.radix-ui.com/docs/primitives/components/navigation-menu
4
4
  */
5
- import { afterSleep, afterTick, box, useRefById, } from "svelte-toolbelt";
5
+ import { afterSleep, afterTick, box, attachRef, } from "svelte-toolbelt";
6
6
  import { Context, useDebounce, watch } from "runed";
7
7
  import { untrack } from "svelte";
8
8
  import { SvelteMap } from "svelte/reactivity";
@@ -72,7 +72,6 @@ class NavigationMenuRootState {
72
72
  constructor(opts) {
73
73
  this.opts = opts;
74
74
  this.isDelaySkipped = boxAutoReset(false, this.opts.skipDelayDuration.current);
75
- useRefById(opts);
76
75
  this.provider = useNavigationMenuProvider({
77
76
  value: this.opts.value,
78
77
  previousValue: this.previousValue,
@@ -135,6 +134,7 @@ class NavigationMenuRootState {
135
134
  dir: this.opts.dir.current,
136
135
  [NAVIGATION_MENU_ROOT_ATTR]: "",
137
136
  [NAVIGATION_MENU_ATTR]: "",
137
+ ...attachRef(this.opts.ref),
138
138
  }));
139
139
  }
140
140
  class NavigationMenuSubState {
@@ -145,7 +145,6 @@ class NavigationMenuSubState {
145
145
  constructor(opts, context) {
146
146
  this.opts = opts;
147
147
  this.context = context;
148
- useRefById(opts);
149
148
  this.subProvider = useNavigationMenuProvider({
150
149
  isRootMenu: false,
151
150
  value: this.opts.value,
@@ -173,6 +172,7 @@ class NavigationMenuSubState {
173
172
  "data-orientation": getDataOrientation(this.opts.orientation.current),
174
173
  [NAVIGATION_MENU_SUB_ATTR]: "",
175
174
  [NAVIGATION_MENU_ATTR]: "",
175
+ ...attachRef(this.opts.ref),
176
176
  }));
177
177
  }
178
178
  class NavigationMenuListState {
@@ -186,17 +186,8 @@ class NavigationMenuListState {
186
186
  constructor(opts, context) {
187
187
  this.opts = opts;
188
188
  this.context = context;
189
- useRefById(opts);
190
- useRefById({
191
- id: this.wrapperId,
192
- ref: this.wrapperRef,
193
- onRefChange: (node) => {
194
- this.context.indicatorTrackRef.current = node;
195
- },
196
- deps: () => this.wrapperMounted,
197
- });
198
189
  this.rovingFocusGroup = useRovingFocus({
199
- rootNodeId: opts.id,
190
+ rootNode: opts.ref,
200
191
  candidateSelector: `[${NAVIGATION_MENU_TRIGGER_ATTR}]:not([data-disabled]), [${NAVIGATION_MENU_LINK_ATTR}]:not([data-disabled])`,
201
192
  loop: box.with(() => false),
202
193
  orientation: this.context.opts.orientation,
@@ -211,11 +202,13 @@ class NavigationMenuListState {
211
202
  }
212
203
  wrapperProps = $derived.by(() => ({
213
204
  id: this.wrapperId.current,
205
+ ...attachRef(this.wrapperRef, (v) => (this.context.indicatorTrackRef.current = v)),
214
206
  }));
215
207
  props = $derived.by(() => ({
216
208
  id: this.opts.id.current,
217
209
  "data-orientation": getDataOrientation(this.context.opts.orientation.current),
218
210
  [NAVIGATION_MENU_LIST_ATTR]: "",
211
+ ...attachRef(this.opts.ref),
219
212
  }));
220
213
  }
221
214
  export class NavigationMenuItemState {
@@ -276,20 +269,6 @@ class NavigationMenuTriggerState {
276
269
  this.context = context.provider;
277
270
  this.itemContext = context.item;
278
271
  this.listContext = context.list;
279
- useRefById({
280
- ...opts,
281
- onRefChange: (node) => {
282
- this.itemContext.triggerNode = node;
283
- },
284
- });
285
- useRefById({
286
- id: this.focusProxyId,
287
- ref: this.focusProxyRef,
288
- onRefChange: (node) => {
289
- this.itemContext.focusProxyNode = node;
290
- },
291
- deps: () => this.focusProxyMounted,
292
- });
293
272
  watch(() => this.opts.ref.current, () => {
294
273
  const node = this.opts.ref.current;
295
274
  if (!node)
@@ -366,11 +345,13 @@ class NavigationMenuTriggerState {
366
345
  onpointerenter: this.onpointerenter,
367
346
  onclick: this.onclick,
368
347
  onkeydown: this.onkeydown,
348
+ ...attachRef(this.opts.ref, (v) => (this.itemContext.triggerNode = v)),
369
349
  }));
370
350
  focusProxyProps = $derived.by(() => ({
371
351
  id: this.focusProxyId.current,
372
352
  tabindex: 0,
373
353
  onfocus: this.focusProxyOnFocus,
354
+ ...attachRef(this.focusProxyRef, (v) => (this.itemContext.focusProxyNode = v)),
374
355
  }));
375
356
  restructureSpanProps = $derived.by(() => ({
376
357
  "aria-owns": this.itemContext.contentId,
@@ -391,7 +372,6 @@ class NavigationMenuLinkState {
391
372
  constructor(opts, context) {
392
373
  this.opts = opts;
393
374
  this.context = context;
394
- useRefById(opts);
395
375
  }
396
376
  onclick = (e) => {
397
377
  const currTarget = e.currentTarget;
@@ -441,6 +421,7 @@ class NavigationMenuLinkState {
441
421
  onpointerenter: this.onpointerenter,
442
422
  onpointermove: this.onpointermove,
443
423
  [NAVIGATION_MENU_LINK_ATTR]: "",
424
+ ...attachRef(this.opts.ref),
444
425
  }));
445
426
  }
446
427
  class NavigationMenuIndicatorState {
@@ -469,10 +450,6 @@ class NavigationMenuIndicatorImplState {
469
450
  this.listContext = context.list;
470
451
  useResizeObserver(() => this.activeTrigger, this.handlePositionChange);
471
452
  useResizeObserver(() => this.context.indicatorTrackRef.current, this.handlePositionChange);
472
- useRefById({
473
- ...opts,
474
- deps: () => this.context.opts.value.current,
475
- });
476
453
  }
477
454
  handlePositionChange = () => {
478
455
  if (!this.activeTrigger)
@@ -505,6 +482,7 @@ class NavigationMenuIndicatorImplState {
505
482
  }),
506
483
  },
507
484
  [NAVIGATION_MENU_INDICATOR_ATTR]: "",
485
+ ...attachRef(this.opts.ref),
508
486
  }));
509
487
  }
510
488
  class NavigationMenuContentState {
@@ -530,13 +508,6 @@ class NavigationMenuContentState {
530
508
  this.context = context.provider;
531
509
  this.itemContext = context.item;
532
510
  this.listContext = context.list;
533
- useRefById({
534
- ...opts,
535
- onRefChange: (node) => {
536
- this.itemContext.contentNode = node;
537
- },
538
- deps: () => this.mounted,
539
- });
540
511
  }
541
512
  onpointerenter = (_) => {
542
513
  this.context.onContentEnter();
@@ -550,6 +521,7 @@ class NavigationMenuContentState {
550
521
  id: this.opts.id.current,
551
522
  onpointerenter: this.onpointerenter,
552
523
  onpointerleave: this.onpointerleave,
524
+ ...attachRef(this.opts.ref, (v) => (this.itemContext.contentNode = v)),
553
525
  }));
554
526
  }
555
527
  class NavigationMenuContentImplState {
@@ -598,10 +570,6 @@ class NavigationMenuContentImplState {
598
570
  this.itemContext = itemContext;
599
571
  this.listContext = itemContext.listContext;
600
572
  this.context = itemContext.listContext.context;
601
- useRefById({
602
- ...opts,
603
- deps: () => this.context.opts.value.current,
604
- });
605
573
  watch([
606
574
  () => this.itemContext.opts.value.current,
607
575
  () => this.itemContext.triggerNode,
@@ -711,6 +679,7 @@ class NavigationMenuContentImplState {
711
679
  "data-state": getDataOpenClosed(this.context.opts.value.current === this.itemContext.opts.value.current),
712
680
  onkeydown: this.onkeydown,
713
681
  [NAVIGATION_MENU_CONTENT_ATTR]: "",
682
+ ...attachRef(this.opts.ref),
714
683
  }));
715
684
  }
716
685
  class NavigationMenuViewportState {
@@ -726,13 +695,6 @@ class NavigationMenuViewportState {
726
695
  constructor(opts, context) {
727
696
  this.opts = opts;
728
697
  this.context = context;
729
- useRefById({
730
- ...opts,
731
- onRefChange: (node) => {
732
- this.context.viewportRef.current = node;
733
- },
734
- deps: () => this.open,
735
- });
736
698
  watch([() => this.activeContentValue, () => this.open], () => {
737
699
  afterTick(() => {
738
700
  const currNode = this.context.viewportRef.current;
@@ -776,6 +738,7 @@ class NavigationMenuViewportState {
776
738
  [NAVIGATION_MENU_VIEWPORT_ATTR]: "",
777
739
  onpointerenter: this.context.onContentEnter,
778
740
  onpointerleave: this.context.onContentLeave,
741
+ ...attachRef(this.opts.ref, (v) => (this.context.viewportRef.current = v)),
779
742
  }));
780
743
  }
781
744
  const NavigationMenuProviderContext = new Context("NavigationMenu.Root");
@@ -2,10 +2,12 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PaginationNextButtonProps } from "../types.js";
4
4
  import { usePaginationButton } from "../pagination.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
- id = useId(),
10
+ id = createId(uid),
9
11
  child,
10
12
  children,
11
13
  ref = $bindable(null),
@@ -2,10 +2,12 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PaginationPageProps } from "../types.js";
4
4
  import { usePaginationPage } from "../pagination.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
- id = useId(),
10
+ id = createId(uid),
9
11
  page,
10
12
  child,
11
13
  children,
@@ -2,10 +2,12 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PaginationPrevButtonProps } from "../types.js";
4
4
  import { usePaginationButton } from "../pagination.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
- id = useId(),
10
+ id = createId(uid),
9
11
  child,
10
12
  children,
11
13
  ref = $bindable(null),
@@ -2,11 +2,13 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PaginationRootProps } from "../types.js";
4
4
  import { usePaginationRoot } from "../pagination.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
6
5
  import { noop } from "../../../internal/noop.js";
6
+ import { createId } from "../../../internal/create-id.js";
7
+
8
+ const uid = $props.id();
7
9
 
8
10
  let {
9
- id = useId(),
11
+ id = createId(uid),
10
12
  count,
11
13
  perPage = 1,
12
14
  page = $bindable(1),
@@ -1,4 +1,4 @@
1
- import { useRefById } from "svelte-toolbelt";
1
+ import { attachRef } from "svelte-toolbelt";
2
2
  import { Context } from "runed";
3
3
  import { getDataOrientation } from "../../internal/attrs.js";
4
4
  import { getElemDirection } from "../../internal/locale.js";
@@ -28,7 +28,6 @@ class PaginationRootState {
28
28
  }));
29
29
  constructor(opts) {
30
30
  this.opts = opts;
31
- useRefById(opts);
32
31
  }
33
32
  setPage(page) {
34
33
  this.opts.page.current = page;
@@ -62,6 +61,7 @@ class PaginationRootState {
62
61
  id: this.opts.id.current,
63
62
  "data-orientation": getDataOrientation(this.opts.orientation.current),
64
63
  [PAGINATION_ROOT_ATTR]: "",
64
+ ...attachRef(this.opts.ref),
65
65
  }));
66
66
  }
67
67
  class PaginationPageState {
@@ -71,7 +71,6 @@ class PaginationPageState {
71
71
  constructor(opts, root) {
72
72
  this.opts = opts;
73
73
  this.root = root;
74
- useRefById(opts);
75
74
  this.onclick = this.onclick.bind(this);
76
75
  this.onkeydown = this.onkeydown.bind(this);
77
76
  }
@@ -100,6 +99,7 @@ class PaginationPageState {
100
99
  //
101
100
  onclick: this.onclick,
102
101
  onkeydown: this.onkeydown,
102
+ ...attachRef(this.opts.ref),
103
103
  }));
104
104
  }
105
105
  class PaginationButtonState {
@@ -108,7 +108,6 @@ class PaginationButtonState {
108
108
  constructor(opts, root) {
109
109
  this.opts = opts;
110
110
  this.root = root;
111
- useRefById(opts);
112
111
  this.onclick = this.onclick.bind(this);
113
112
  this.onkeydown = this.onkeydown.bind(this);
114
113
  }
@@ -148,6 +147,7 @@ class PaginationButtonState {
148
147
  //
149
148
  onclick: this.onclick,
150
149
  onkeydown: this.onkeydown,
150
+ ...attachRef(this.opts.ref),
151
151
  }));
152
152
  }
153
153
  //
@@ -2,10 +2,12 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PinInputCellProps } from "../types.js";
4
4
  import { usePinInputCell } from "../pin-input.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
- id = useId(),
10
+ id = createId(uid),
9
11
  ref = $bindable(null),
10
12
  cell,
11
13
  child,
@@ -2,12 +2,14 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PinInputRootProps } from "../types.js";
4
4
  import { usePinInput } from "../pin-input.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
 
8
+ const uid = $props.id();
9
+
8
10
  let {
9
- id = useId(),
10
- inputId = useId(),
11
+ id = createId(uid),
12
+ inputId = `${createId(uid)}-input`,
11
13
  ref = $bindable(null),
12
14
  maxlength = 6,
13
15
  textalign = "left",
@@ -1,6 +1,6 @@
1
1
  import { Previous, watch } from "runed";
2
2
  import { onMount } from "svelte";
3
- import { box, useRefById } from "svelte-toolbelt";
3
+ import { box, attachRef } from "svelte-toolbelt";
4
4
  import { usePasswordManagerBadge } from "./usePasswordManager.svelte.js";
5
5
  import { getDisabled } from "../../internal/attrs.js";
6
6
  import { on } from "svelte/events";
@@ -60,11 +60,6 @@ class PinInputRootState {
60
60
  isFocused: this.#isFocused,
61
61
  pushPasswordManagerStrategy: this.opts.pushPasswordManagerStrategy,
62
62
  });
63
- useRefById(opts);
64
- useRefById({
65
- id: this.opts.inputId,
66
- ref: this.#inputRef,
67
- });
68
63
  onMount(() => {
69
64
  const input = this.#inputRef.current;
70
65
  const container = this.opts.ref.current;
@@ -155,6 +150,7 @@ class PinInputRootState {
155
150
  id: this.opts.id.current,
156
151
  [ROOT_ATTR]: "",
157
152
  style: this.#rootStyles,
153
+ ...attachRef(this.opts.ref),
158
154
  }));
159
155
  inputWrapperProps = $derived.by(() => ({
160
156
  style: {
@@ -365,6 +361,7 @@ class PinInputRootState {
365
361
  onmouseleave: this.onmouseleave,
366
362
  onfocus: this.onfocus,
367
363
  onblur: this.onblur,
364
+ ...attachRef(this.#inputRef),
368
365
  }));
369
366
  #cells = $derived.by(() => Array.from({ length: this.opts.maxLength.current }).map((_, idx) => {
370
367
  const isActive = this.#isFocused.current &&
@@ -390,16 +387,13 @@ class PinInputCellState {
390
387
  opts;
391
388
  constructor(opts) {
392
389
  this.opts = opts;
393
- useRefById({
394
- id: this.opts.id,
395
- ref: this.opts.ref,
396
- });
397
390
  }
398
391
  props = $derived.by(() => ({
399
392
  id: this.opts.id.current,
400
393
  [CELL_ATTR]: "",
401
394
  "data-active": this.opts.cell.current.isActive ? "" : undefined,
402
395
  "data-inactive": !this.opts.cell.current.isActive ? "" : undefined,
396
+ ...attachRef(this.opts.ref),
403
397
  }));
404
398
  }
405
399
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -2,12 +2,14 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PopoverCloseProps } from "../types.js";
4
4
  import { usePopoverClose } from "../popover.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
  child,
9
11
  children,
10
- id = useId(),
12
+ id = createId(uid),
11
13
  ref = $bindable(null),
12
14
  ...restProps
13
15
  }: PopoverCloseProps = $props();
@@ -4,15 +4,17 @@
4
4
  import { usePopoverContent } from "../popover.svelte.js";
5
5
  import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
6
6
  import { noop } from "../../../internal/noop.js";
7
- import { useId } from "../../../internal/use-id.js";
7
+ import { createId } from "../../../internal/create-id.js";
8
8
  import { getFloatingContentCSSVars } from "../../../internal/floating-svelte/floating-utils.svelte.js";
9
9
  import PopperLayerForceMount from "../../utilities/popper-layer/popper-layer-force-mount.svelte";
10
10
 
11
+ const uid = $props.id();
12
+
11
13
  let {
12
14
  child,
13
15
  children,
14
16
  ref = $bindable(null),
15
- id = useId(),
17
+ id = createId(uid),
16
18
  forceMount = false,
17
19
  onCloseAutoFocus = noop,
18
20
  onEscapeKeydown = noop,
@@ -40,6 +42,7 @@
40
42
  <PopperLayerForceMount
41
43
  {...mergedProps}
42
44
  {...contentState.popperProps}
45
+ ref={contentState.opts.ref}
43
46
  isStatic
44
47
  enabled={contentState.root.opts.open.current}
45
48
  {id}
@@ -65,6 +68,7 @@
65
68
  <PopperLayer
66
69
  {...mergedProps}
67
70
  {...contentState.popperProps}
71
+ ref={contentState.opts.ref}
68
72
  isStatic
69
73
  present={contentState.root.opts.open.current}
70
74
  {id}
@@ -4,15 +4,17 @@
4
4
  import { usePopoverContent } from "../popover.svelte.js";
5
5
  import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
6
6
  import { noop } from "../../../internal/noop.js";
7
- import { useId } from "../../../internal/use-id.js";
7
+ import { createId } from "../../../internal/create-id.js";
8
8
  import { getFloatingContentCSSVars } from "../../../internal/floating-svelte/floating-utils.svelte.js";
9
9
  import PopperLayerForceMount from "../../utilities/popper-layer/popper-layer-force-mount.svelte";
10
10
 
11
+ const uid = $props.id();
12
+
11
13
  let {
12
14
  child,
13
15
  children,
14
16
  ref = $bindable(null),
15
- id = useId(),
17
+ id = createId(uid),
16
18
  forceMount = false,
17
19
  onCloseAutoFocus = noop,
18
20
  onEscapeKeydown = noop,
@@ -40,6 +42,7 @@
40
42
  <PopperLayerForceMount
41
43
  {...mergedProps}
42
44
  {...contentState.popperProps}
45
+ ref={contentState.opts.ref}
43
46
  enabled={contentState.root.opts.open.current}
44
47
  {id}
45
48
  {trapFocus}
@@ -66,6 +69,7 @@
66
69
  <PopperLayer
67
70
  {...mergedProps}
68
71
  {...contentState.popperProps}
72
+ ref={contentState.opts.ref}
69
73
  present={contentState.root.opts.open.current}
70
74
  {id}
71
75
  {trapFocus}
@@ -2,13 +2,15 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PopoverTriggerProps } from "../types.js";
4
4
  import { usePopoverTrigger } from "../popover.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
  ref = $bindable(null),
13
15
  type = "button",
14
16
  disabled = false,
@@ -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 { useRefById } from "svelte-toolbelt";
1
+ import { attachRef } from "svelte-toolbelt";
2
2
  import { Context } from "runed";
3
3
  import { kbd } from "../../internal/kbd.js";
4
4
  import { getAriaExpanded, getDataOpenClosed } from "../../internal/attrs.js";
@@ -25,12 +25,6 @@ class PopoverTriggerState {
25
25
  constructor(opts, root) {
26
26
  this.opts = opts;
27
27
  this.root = root;
28
- useRefById({
29
- ...opts,
30
- onRefChange: (node) => {
31
- this.root.triggerNode = node;
32
- },
33
- });
34
28
  this.onclick = this.onclick.bind(this);
35
29
  this.onkeydown = this.onkeydown.bind(this);
36
30
  }
@@ -66,6 +60,7 @@ class PopoverTriggerState {
66
60
  //
67
61
  onkeydown: this.onkeydown,
68
62
  onclick: this.onclick,
63
+ ...attachRef(this.opts.ref, (v) => (this.root.triggerNode = v)),
69
64
  }));
70
65
  }
71
66
  class PopoverContentState {
@@ -74,13 +69,6 @@ class PopoverContentState {
74
69
  constructor(opts, root) {
75
70
  this.opts = opts;
76
71
  this.root = root;
77
- useRefById({
78
- ...opts,
79
- deps: () => this.root.opts.open.current,
80
- onRefChange: (node) => {
81
- this.root.contentNode = node;
82
- },
83
- });
84
72
  }
85
73
  onInteractOutside = (e) => {
86
74
  this.opts.onInteractOutside.current(e);
@@ -115,6 +103,7 @@ class PopoverContentState {
115
103
  style: {
116
104
  pointerEvents: "auto",
117
105
  },
106
+ ...attachRef(this.opts.ref, (v) => (this.root.contentNode = v)),
118
107
  }));
119
108
  popperProps = {
120
109
  onInteractOutside: this.onInteractOutside,
@@ -128,10 +117,6 @@ class PopoverCloseState {
128
117
  constructor(opts, root) {
129
118
  this.opts = opts;
130
119
  this.root = root;
131
- useRefById({
132
- ...opts,
133
- deps: () => this.root.opts.open.current,
134
- });
135
120
  this.onclick = this.onclick.bind(this);
136
121
  this.onkeydown = this.onkeydown.bind(this);
137
122
  }
@@ -150,6 +135,7 @@ class PopoverCloseState {
150
135
  onkeydown: this.onkeydown,
151
136
  type: "button",
152
137
  "data-popover-close": "",
138
+ ...attachRef(this.opts.ref),
153
139
  }));
154
140
  }
155
141
  //
@@ -2,7 +2,9 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { ProgressRootProps } from "../types.js";
4
4
  import { useProgressRootState } from "../progress.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
  child,
@@ -10,7 +12,7 @@
10
12
  value = 0,
11
13
  max = 100,
12
14
  min = 0,
13
- id = useId(),
15
+ id = createId(uid),
14
16
  ref = $bindable(null),
15
17
  ...restProps
16
18
  }: ProgressRootProps = $props();
@@ -1,10 +1,9 @@
1
- import { useRefById } from "svelte-toolbelt";
1
+ import { attachRef } from "svelte-toolbelt";
2
2
  const ROOT_ATTR = "data-progress-root";
3
3
  class ProgressRootState {
4
4
  opts;
5
5
  constructor(opts) {
6
6
  this.opts = opts;
7
- useRefById(opts);
8
7
  }
9
8
  props = $derived.by(() => ({
10
9
  role: "progressbar",
@@ -18,6 +17,7 @@ class ProgressRootState {
18
17
  "data-min": this.opts.min.current,
19
18
  "data-indeterminate": this.opts.value.current === null ? "" : undefined,
20
19
  [ROOT_ATTR]: "",
20
+ ...attachRef(this.opts.ref),
21
21
  }));
22
22
  }
23
23
  function getProgressDataState(value, max) {