bits-ui 1.7.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 (289) 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 +8 -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 +7 -3
  123. package/dist/bits/navigation-menu/components/navigation-menu.svelte +4 -2
  124. package/dist/bits/navigation-menu/navigation-menu.svelte.d.ts +29 -17
  125. package/dist/bits/navigation-menu/navigation-menu.svelte.js +107 -74
  126. package/dist/bits/navigation-menu/types.d.ts +14 -7
  127. package/dist/bits/pagination/components/pagination-next-button.svelte +4 -2
  128. package/dist/bits/pagination/components/pagination-page.svelte +4 -2
  129. package/dist/bits/pagination/components/pagination-prev-button.svelte +4 -2
  130. package/dist/bits/pagination/components/pagination.svelte +4 -2
  131. package/dist/bits/pagination/pagination.svelte.js +4 -4
  132. package/dist/bits/pin-input/components/pin-input-cell.svelte +4 -2
  133. package/dist/bits/pin-input/components/pin-input.svelte +5 -3
  134. package/dist/bits/pin-input/pin-input.svelte.js +4 -10
  135. package/dist/bits/popover/components/popover-close.svelte +4 -2
  136. package/dist/bits/popover/components/popover-content-static.svelte +6 -2
  137. package/dist/bits/popover/components/popover-content.svelte +6 -2
  138. package/dist/bits/popover/components/popover-trigger.svelte +5 -3
  139. package/dist/bits/popover/popover.svelte.js +4 -18
  140. package/dist/bits/progress/components/progress.svelte +4 -2
  141. package/dist/bits/progress/progress.svelte.js +2 -2
  142. package/dist/bits/radio-group/components/radio-group-item.svelte +4 -2
  143. package/dist/bits/radio-group/components/radio-group.svelte +4 -2
  144. package/dist/bits/radio-group/radio-group.svelte.js +4 -7
  145. package/dist/bits/range-calendar/components/range-calendar-cell.svelte +4 -2
  146. package/dist/bits/range-calendar/components/range-calendar-day.svelte +4 -2
  147. package/dist/bits/range-calendar/components/range-calendar.svelte +4 -2
  148. package/dist/bits/range-calendar/range-calendar.svelte.js +4 -4
  149. package/dist/bits/scroll-area/components/scroll-area-corner.svelte +8 -2
  150. package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +4 -1
  151. package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +1 -1
  152. package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +5 -1
  153. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +4 -2
  154. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +8 -3
  155. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +4 -2
  156. package/dist/bits/scroll-area/components/scroll-area.svelte +4 -2
  157. package/dist/bits/scroll-area/scroll-area.svelte.js +13 -47
  158. package/dist/bits/select/components/select-content-static.svelte +6 -2
  159. package/dist/bits/select/components/select-content.svelte +6 -2
  160. package/dist/bits/select/components/select-group-heading.svelte +3 -2
  161. package/dist/bits/select/components/select-group.svelte +4 -2
  162. package/dist/bits/select/components/select-item.svelte +4 -2
  163. package/dist/bits/select/components/select-scroll-down-button.svelte +4 -2
  164. package/dist/bits/select/components/select-scroll-up-button.svelte +4 -2
  165. package/dist/bits/select/components/select-trigger.svelte +5 -3
  166. package/dist/bits/select/components/select-viewport.svelte +4 -2
  167. package/dist/bits/select/components/select.svelte +1 -1
  168. package/dist/bits/select/select.svelte.d.ts +0 -18
  169. package/dist/bits/select/select.svelte.js +10 -43
  170. package/dist/bits/separator/components/separator.svelte +4 -2
  171. package/dist/bits/separator/separator.svelte.js +2 -2
  172. package/dist/bits/slider/components/slider-range.svelte +4 -2
  173. package/dist/bits/slider/components/slider-thumb-label.svelte +50 -0
  174. package/dist/bits/slider/components/slider-thumb-label.svelte.d.ts +4 -0
  175. package/dist/bits/slider/components/slider-thumb.svelte +4 -2
  176. package/dist/bits/slider/components/slider-tick-label.svelte +50 -0
  177. package/dist/bits/slider/components/slider-tick-label.svelte.d.ts +4 -0
  178. package/dist/bits/slider/components/slider-tick.svelte +4 -2
  179. package/dist/bits/slider/components/slider.svelte +26 -5
  180. package/dist/bits/slider/exports.d.ts +3 -1
  181. package/dist/bits/slider/exports.js +2 -0
  182. package/dist/bits/slider/helpers.d.ts +14 -0
  183. package/dist/bits/slider/helpers.js +122 -0
  184. package/dist/bits/slider/slider.svelte.d.ts +93 -6
  185. package/dist/bits/slider/slider.svelte.js +198 -101
  186. package/dist/bits/slider/types.d.ts +111 -11
  187. package/dist/bits/switch/components/switch-thumb.svelte +4 -2
  188. package/dist/bits/switch/components/switch.svelte +4 -2
  189. package/dist/bits/switch/switch.svelte.js +3 -3
  190. package/dist/bits/tabs/components/tabs-content.svelte +4 -2
  191. package/dist/bits/tabs/components/tabs-list.svelte +4 -2
  192. package/dist/bits/tabs/components/tabs-trigger.svelte +4 -2
  193. package/dist/bits/tabs/components/tabs.svelte +4 -2
  194. package/dist/bits/tabs/tabs.svelte.js +6 -6
  195. package/dist/bits/time-field/components/time-field-hidden-input.svelte +10 -0
  196. package/dist/bits/{date-field/components/date-field-error.svelte.d.ts → time-field/components/time-field-hidden-input.svelte.d.ts} +6 -14
  197. package/dist/bits/time-field/components/time-field-input.svelte +39 -0
  198. package/dist/bits/time-field/components/time-field-input.svelte.d.ts +4 -0
  199. package/dist/bits/time-field/components/time-field-label.svelte +34 -0
  200. package/dist/bits/time-field/components/time-field-label.svelte.d.ts +4 -0
  201. package/dist/bits/time-field/components/time-field-segment.svelte +37 -0
  202. package/dist/bits/time-field/components/time-field-segment.svelte.d.ts +4 -0
  203. package/dist/bits/time-field/components/time-field.svelte +94 -0
  204. package/dist/bits/time-field/components/time-field.svelte.d.ts +20 -0
  205. package/dist/bits/time-field/exports.d.ts +5 -0
  206. package/dist/bits/time-field/exports.js +4 -0
  207. package/dist/bits/time-field/index.d.ts +1 -0
  208. package/dist/bits/time-field/index.js +1 -0
  209. package/dist/bits/time-field/time-field.svelte.d.ts +415 -0
  210. package/dist/bits/time-field/time-field.svelte.js +971 -0
  211. package/dist/bits/time-field/types.d.ts +137 -0
  212. package/dist/bits/time-field/types.js +1 -0
  213. package/dist/bits/time-range-field/components/time-range-field-input.svelte +43 -0
  214. package/dist/bits/time-range-field/components/time-range-field-input.svelte.d.ts +4 -0
  215. package/dist/bits/time-range-field/components/time-range-field-label.svelte +34 -0
  216. package/dist/bits/time-range-field/components/time-range-field-label.svelte.d.ts +4 -0
  217. package/dist/bits/time-range-field/components/time-range-field.svelte +144 -0
  218. package/dist/bits/time-range-field/components/time-range-field.svelte.d.ts +20 -0
  219. package/dist/bits/time-range-field/exports.d.ts +5 -0
  220. package/dist/bits/time-range-field/exports.js +4 -0
  221. package/dist/bits/time-range-field/index.d.ts +1 -0
  222. package/dist/bits/time-range-field/index.js +1 -0
  223. package/dist/bits/time-range-field/time-range-field.svelte.d.ts +90 -0
  224. package/dist/bits/time-range-field/time-range-field.svelte.js +210 -0
  225. package/dist/bits/time-range-field/types.d.ts +150 -0
  226. package/dist/bits/time-range-field/types.js +1 -0
  227. package/dist/bits/toggle/components/toggle.svelte +4 -2
  228. package/dist/bits/toggle/toggle.svelte.js +2 -2
  229. package/dist/bits/toggle-group/components/toggle-group-item.svelte +4 -2
  230. package/dist/bits/toggle-group/components/toggle-group.svelte +4 -2
  231. package/dist/bits/toggle-group/toggle-group.svelte.js +4 -4
  232. package/dist/bits/toolbar/components/toolbar-button.svelte +4 -2
  233. package/dist/bits/toolbar/components/toolbar-group-item.svelte +4 -2
  234. package/dist/bits/toolbar/components/toolbar-group.svelte +4 -2
  235. package/dist/bits/toolbar/components/toolbar-link.svelte +4 -2
  236. package/dist/bits/toolbar/components/toolbar.svelte +4 -2
  237. package/dist/bits/toolbar/toolbar.svelte.js +7 -7
  238. package/dist/bits/tooltip/components/tooltip-content-static.svelte +6 -2
  239. package/dist/bits/tooltip/components/tooltip-content.svelte +6 -2
  240. package/dist/bits/tooltip/components/tooltip-trigger.svelte +5 -3
  241. package/dist/bits/tooltip/tooltip.svelte.js +3 -14
  242. package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -0
  243. package/dist/bits/utilities/dismissible-layer/types.d.ts +2 -0
  244. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +3 -3
  245. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +16 -25
  246. package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -1
  247. package/dist/bits/utilities/floating-layer/types.d.ts +1 -0
  248. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +3 -2
  249. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +5 -26
  250. package/dist/bits/utilities/focus-scope/focus-scope.svelte +2 -0
  251. package/dist/bits/utilities/focus-scope/types.d.ts +2 -0
  252. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +2 -1
  253. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +2 -8
  254. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +4 -0
  255. package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -1
  256. package/dist/bits/utilities/presence-layer/presence-layer.svelte +2 -2
  257. package/dist/bits/utilities/presence-layer/types.d.ts +2 -1
  258. package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +1 -1
  259. package/dist/bits/utilities/presence-layer/use-presence.svelte.js +19 -36
  260. package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -0
  261. package/dist/bits/utilities/text-selection-layer/types.d.ts +2 -0
  262. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +3 -1
  263. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +2 -8
  264. package/dist/index.d.ts +1 -1
  265. package/dist/index.js +1 -1
  266. package/dist/internal/create-id.d.ts +8 -0
  267. package/dist/internal/create-id.js +5 -0
  268. package/dist/internal/date-time/field/helpers.d.ts +1 -0
  269. package/dist/internal/date-time/field/helpers.js +8 -2
  270. package/dist/internal/date-time/field/parts.d.ts +3 -1
  271. package/dist/internal/date-time/field/parts.js +10 -2
  272. package/dist/internal/date-time/field/segments.d.ts +9 -0
  273. package/dist/internal/date-time/field/segments.js +65 -0
  274. package/dist/internal/date-time/field/time-helpers.d.ts +77 -0
  275. package/dist/internal/date-time/field/time-helpers.js +301 -0
  276. package/dist/internal/date-time/field/types.d.ts +2 -2
  277. package/dist/internal/date-time/formatter.d.ts +11 -1
  278. package/dist/internal/date-time/formatter.js +56 -0
  279. package/dist/internal/date-time/utils.d.ts +7 -2
  280. package/dist/internal/date-time/utils.js +15 -1
  281. package/dist/internal/dom-context.svelte.d.ts +9 -0
  282. package/dist/internal/dom-context.svelte.js +26 -0
  283. package/dist/internal/use-roving-focus.svelte.d.ts +3 -3
  284. package/dist/internal/use-roving-focus.svelte.js +10 -11
  285. package/dist/shared/date/types.d.ts +27 -4
  286. package/dist/shared/index.d.ts +9 -2
  287. package/dist/types.d.ts +2 -0
  288. package/package.json +18 -16
  289. package/dist/bits/date-field/components/date-field-error.svelte +0 -0
@@ -2,10 +2,12 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { CommandSeparatorProps } from "../types.js";
4
4
  import { useCommandSeparator } from "../command.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
  forceMount = false,
11
13
  children,
@@ -2,10 +2,12 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import { useCommandViewport } from "../command.svelte.js";
4
4
  import type { CommandViewportProps } 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,
@@ -4,11 +4,13 @@
4
4
  import type { CommandRootProps } from "../types.js";
5
5
  import CommandLabel from "./_command-label.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 { computeCommandScore } from "../index.js";
9
9
 
10
+ const uid = $props.id();
11
+
10
12
  let {
11
- id = useId(),
13
+ id = createId(uid),
12
14
  ref = $bindable(null),
13
15
  value = $bindable(""),
14
16
  onValueChange = noop,
@@ -5,7 +5,6 @@
5
5
  import { useId } from "../../../internal/use-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
 
@@ -66,6 +65,7 @@
66
65
  <PopperLayerForceMount
67
66
  {...mergedProps}
68
67
  {...contentState.popperProps}
68
+ ref={contentState.opts.ref}
69
69
  isStatic
70
70
  side="right"
71
71
  sideOffset={2}
@@ -91,13 +91,13 @@
91
91
  {@render children?.()}
92
92
  </div>
93
93
  {/if}
94
- <Mounted bind:mounted={contentState.mounted} />
95
94
  {/snippet}
96
95
  </PopperLayerForceMount>
97
96
  {:else if !forceMount}
98
97
  <PopperLayer
99
98
  {...mergedProps}
100
99
  {...contentState.popperProps}
100
+ ref={contentState.opts.ref}
101
101
  isStatic
102
102
  side="right"
103
103
  sideOffset={2}
@@ -123,7 +123,6 @@
123
123
  {@render children?.()}
124
124
  </div>
125
125
  {/if}
126
- <Mounted bind:mounted={contentState.mounted} />
127
126
  {/snippet}
128
127
  </PopperLayer>
129
128
  {/if}
@@ -5,7 +5,6 @@
5
5
  import { useId } from "../../../internal/use-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
 
@@ -68,6 +67,7 @@
68
67
  <PopperLayerForceMount
69
68
  {...mergedProps}
70
69
  {...contentState.popperProps}
70
+ ref={contentState.opts.ref}
71
71
  side="right"
72
72
  sideOffset={2}
73
73
  align="start"
@@ -94,13 +94,13 @@
94
94
  </div>
95
95
  </div>
96
96
  {/if}
97
- <Mounted bind:mounted={contentState.mounted} />
98
97
  {/snippet}
99
98
  </PopperLayerForceMount>
100
99
  {:else if !forceMount}
101
100
  <PopperLayer
102
101
  {...mergedProps}
103
102
  {...contentState.popperProps}
103
+ ref={contentState.opts.ref}
104
104
  side="right"
105
105
  sideOffset={2}
106
106
  align="start"
@@ -127,7 +127,6 @@
127
127
  </div>
128
128
  </div>
129
129
  {/if}
130
- <Mounted bind:mounted={contentState.mounted} />
131
130
  {/snippet}
132
131
  </PopperLayer>
133
132
  {/if}
@@ -28,7 +28,7 @@
28
28
  );
29
29
  </script>
30
30
 
31
- <FloatingLayer.Anchor {id} virtualEl={triggerState.virtualElement}>
31
+ <FloatingLayer.Anchor {id} virtualEl={triggerState.virtualElement} ref={triggerState.opts.ref}>
32
32
  {#if child}
33
33
  {@render child({ props: mergedProps })}
34
34
  {:else}
@@ -3,10 +3,12 @@
3
3
  import { useDateFieldInput } from "../date-field.svelte.js";
4
4
  import type { DateFieldInputProps } from "../types.js";
5
5
  import DateFieldHiddenInput from "./date-field-hidden-input.svelte";
6
- import { useId } from "../../../internal/use-id.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
  ref = $bindable(null),
11
13
  name = "",
12
14
  children,
@@ -2,10 +2,12 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import { useDateFieldLabel } from "../date-field.svelte.js";
4
4
  import type { DateFieldLabelProps } 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,
@@ -2,10 +2,12 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import { useDateFieldSegment } from "../date-field.svelte.js";
4
4
  import type { DateFieldSegmentProps } 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,
@@ -4,7 +4,7 @@ import { type WritableBox } from "svelte-toolbelt";
4
4
  import type { DateRangeFieldRootState } from "../date-range-field/date-range-field.svelte.js";
5
5
  import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
6
6
  import type { BitsFocusEvent, BitsKeyboardEvent, BitsMouseEvent, WithRefProps } from "../../internal/types.js";
7
- import type { DateAndTimeSegmentObj, DateOnInvalid, DateSegmentObj, DateSegmentPart, DateValidator, Granularity, HourCycle, SegmentPart, SegmentValueObj, TimeSegmentObj, TimeSegmentPart } from "../../shared/date/types.js";
7
+ import type { DateAndTimeSegmentObj, DateOnInvalid, DateSegmentObj, DateSegmentPart, DateValidator, Granularity, HourCycle, SegmentPart, SegmentValueObj, TimeSegmentObj, EditableTimeSegmentPart } from "../../shared/date/types.js";
8
8
  import { type Formatter } from "../../internal/date-time/formatter.js";
9
9
  import { type Announcer } from "../../internal/date-time/announcer.js";
10
10
  export declare const DATE_FIELD_INPUT_ATTR = "data-date-field-input";
@@ -134,7 +134,7 @@ export declare class DateFieldRootState {
134
134
  caretColor: string;
135
135
  };
136
136
  };
137
- updateSegment<T extends keyof DateAndTimeSegmentObj>(part: T, cb: T extends DateSegmentPart ? Updater<DateSegmentObj[T]> : T extends TimeSegmentPart ? Updater<TimeSegmentObj[T]> : Updater<DateAndTimeSegmentObj[T]>): void;
137
+ updateSegment<T extends keyof DateAndTimeSegmentObj>(part: T, cb: T extends DateSegmentPart ? Updater<DateSegmentObj[T]> : T extends EditableTimeSegmentPart ? Updater<TimeSegmentObj[T]> : Updater<DateAndTimeSegmentObj[T]>): void;
138
138
  handleSegmentClick(e: BitsMouseEvent): void;
139
139
  getBaseSegmentAttrs(part: SegmentPart, segmentId: string): {
140
140
  "aria-invalid": "true" | undefined;
@@ -319,7 +319,7 @@ declare class DateFieldDayPeriodSegmentState {
319
319
  "aria-label": string;
320
320
  "aria-valuemin": number;
321
321
  "aria-valuemax": number;
322
- "aria-valuenow": number | "AM" | "PM";
322
+ "aria-valuenow": number;
323
323
  "aria-valuetext": "AM" | "PM";
324
324
  onkeydown: (e: BitsKeyboardEvent) => void;
325
325
  onclick: (e: BitsMouseEvent) => void;
@@ -349,7 +349,7 @@ declare class DateFieldDayPeriodSegmentState {
349
349
  "aria-label": string;
350
350
  "aria-valuemin": number;
351
351
  "aria-valuemax": number;
352
- "aria-valuenow": number | "AM" | "PM";
352
+ "aria-valuenow": number;
353
353
  "aria-valuetext": "AM" | "PM";
354
354
  onkeydown: (e: BitsKeyboardEvent) => void;
355
355
  onclick: (e: BitsMouseEvent) => void;
@@ -1,6 +1,6 @@
1
- import { box, onDestroyEffect, useRefById } from "svelte-toolbelt";
1
+ import { box, onDestroyEffect, attachRef } from "svelte-toolbelt";
2
2
  import { onMount, untrack } from "svelte";
3
- import { Context } from "runed";
3
+ import { Context, watch } from "runed";
4
4
  import { getAriaDisabled, getAriaHidden, getAriaInvalid, getAriaReadonly, getDataDisabled, getDataInvalid, getDataReadonly, } from "../../internal/attrs.js";
5
5
  import { isBrowser, isNumberString } from "../../internal/is.js";
6
6
  import { kbd } from "../../internal/kbd.js";
@@ -8,7 +8,7 @@ import { useId } from "../../internal/use-id.js";
8
8
  import { createFormatter } from "../../internal/date-time/formatter.js";
9
9
  import { getAnnouncer } from "../../internal/date-time/announcer.js";
10
10
  import { areAllSegmentsFilled, createContent, getValueFromSegments, inferGranularity, initSegmentStates, initializeSegmentValues, isAcceptableSegmentKey, isDateAndTimeSegmentObj, isDateSegmentPart, isFirstSegment, removeDescriptionElement, setDescription, } from "../../internal/date-time/field/helpers.js";
11
- import { DATE_SEGMENT_PARTS, TIME_SEGMENT_PARTS } from "../../internal/date-time/field/parts.js";
11
+ import { DATE_SEGMENT_PARTS, EDITABLE_TIME_SEGMENT_PARTS, } from "../../internal/date-time/field/parts.js";
12
12
  import { getDaysInMonth, isBefore, toDate } from "../../internal/date-time/utils.js";
13
13
  import { getFirstSegment, handleSegmentNavigation, isSegmentNavigationKey, moveToNextSegment, moveToPrevSegment, } from "../../internal/date-time/field/segments.js";
14
14
  export const DATE_FIELD_INPUT_ATTR = "data-date-field-input";
@@ -183,13 +183,10 @@ export class DateFieldRootState {
183
183
  this.segmentValues = initializeSegmentValues(this.inferredGranularity);
184
184
  }
185
185
  });
186
- $effect(() => {
187
- this.validationStatus;
188
- untrack(() => {
189
- if (this.validationStatus !== false) {
190
- this.onInvalid.current?.(this.validationStatus.reason, this.validationStatus.message);
191
- }
192
- });
186
+ watch(() => this.validationStatus, () => {
187
+ if (this.validationStatus !== false) {
188
+ this.onInvalid.current?.(this.validationStatus.reason, this.validationStatus.message);
189
+ }
193
190
  });
194
191
  }
195
192
  setName(name) {
@@ -281,7 +278,7 @@ export class DateFieldRootState {
281
278
  return [part, `${partValue}`];
282
279
  });
283
280
  if ("hour" in value) {
284
- const timeValues = TIME_SEGMENT_PARTS.map((part) => {
281
+ const timeValues = EDITABLE_TIME_SEGMENT_PARTS.map((part) => {
285
282
  if (part === "dayPeriod") {
286
283
  if (this.states.dayPeriod.updating) {
287
284
  return [part, this.states.dayPeriod.updating];
@@ -562,12 +559,6 @@ export class DateFieldInputState {
562
559
  $effect(() => {
563
560
  this.root.setName(this.opts.name.current);
564
561
  });
565
- useRefById({
566
- ...opts,
567
- onRefChange: (node) => {
568
- this.root.setFieldNode(node);
569
- },
570
- });
571
562
  }
572
563
  #ariaDescribedBy = $derived.by(() => {
573
564
  if (!isBrowser)
@@ -586,6 +577,7 @@ export class DateFieldInputState {
586
577
  "data-invalid": this.root.isInvalid ? "" : undefined,
587
578
  "data-disabled": getDataDisabled(this.root.disabled.current),
588
579
  [DATE_FIELD_INPUT_ATTR]: "",
580
+ ...attachRef(this.opts.ref, (v) => this.root.setFieldNode(v)),
589
581
  }));
590
582
  }
591
583
  class DateFieldHiddenInputState {
@@ -610,12 +602,6 @@ class DateFieldLabelState {
610
602
  this.opts = opts;
611
603
  this.root = root;
612
604
  this.onclick = this.onclick.bind(this);
613
- useRefById({
614
- ...opts,
615
- onRefChange: (node) => {
616
- this.root.setLabelNode(node);
617
- },
618
- });
619
605
  }
620
606
  onclick(_) {
621
607
  if (this.root.disabled.current)
@@ -631,6 +617,7 @@ class DateFieldLabelState {
631
617
  "data-disabled": getDataDisabled(this.root.disabled.current),
632
618
  [DATE_FIELD_LABEL_ATTR]: "",
633
619
  onclick: this.onclick,
620
+ ...attachRef(this.opts.ref, (v) => this.root.setLabelNode(v)),
634
621
  }));
635
622
  }
636
623
  // Base class for numeric segments
@@ -648,7 +635,6 @@ class BaseNumericSegmentState {
648
635
  this.announcer = root.announcer;
649
636
  this.onkeydown = this.onkeydown.bind(this);
650
637
  this.onfocusout = this.onfocusout.bind(this);
651
- useRefById(opts);
652
638
  }
653
639
  #getMax() {
654
640
  return typeof this.config.max === "function" ? this.config.max(this.root) : this.config.max;
@@ -893,6 +879,7 @@ class BaseNumericSegmentState {
893
879
  onfocusout: this.onfocusout,
894
880
  onclick: this.root.handleSegmentClick,
895
881
  ...this.root.getBaseSegmentAttrs(this.part, this.opts.id.current),
882
+ ...attachRef(this.opts.ref),
896
883
  };
897
884
  });
898
885
  }
@@ -1074,12 +1061,6 @@ class DateFieldDayPeriodSegmentState {
1074
1061
  this.root = root;
1075
1062
  this.#announcer = this.root.announcer;
1076
1063
  this.onkeydown = this.onkeydown.bind(this);
1077
- useRefById({
1078
- ...opts,
1079
- onRefChange: (node) => {
1080
- this.root.dayPeriodNode = node;
1081
- },
1082
- });
1083
1064
  }
1084
1065
  onkeydown(e) {
1085
1066
  if (e.ctrlKey || e.metaKey || this.root.disabled.current)
@@ -1126,7 +1107,7 @@ class DateFieldDayPeriodSegmentState {
1126
1107
  return;
1127
1108
  const valueMin = 0;
1128
1109
  const valueMax = 12;
1129
- const valueNow = segmentValues.dayPeriod ?? 0;
1110
+ const valueNow = segmentValues.dayPeriod === "AM" ? 0 : 12;
1130
1111
  const valueText = segmentValues.dayPeriod ?? "AM";
1131
1112
  return {
1132
1113
  ...this.root.sharedSegmentAttrs,
@@ -1140,6 +1121,7 @@ class DateFieldDayPeriodSegmentState {
1140
1121
  onkeydown: this.onkeydown,
1141
1122
  onclick: this.root.handleSegmentClick,
1142
1123
  ...this.root.getBaseSegmentAttrs("dayPeriod", this.opts.id.current),
1124
+ ...attachRef(this.opts.ref, (v) => (this.root.dayPeriodNode = v)),
1143
1125
  };
1144
1126
  });
1145
1127
  }
@@ -1149,12 +1131,12 @@ class DateFieldDayLiteralSegmentState {
1149
1131
  constructor(opts, root) {
1150
1132
  this.opts = opts;
1151
1133
  this.root = root;
1152
- useRefById(opts);
1153
1134
  }
1154
1135
  props = $derived.by(() => ({
1155
1136
  id: this.opts.id.current,
1156
1137
  "aria-hidden": getAriaHidden(true),
1157
1138
  ...this.root.getBaseSegmentAttrs("literal", this.opts.id.current),
1139
+ ...attachRef(this.opts.ref),
1158
1140
  }));
1159
1141
  }
1160
1142
  class DateFieldTimeZoneSegmentState {
@@ -1164,7 +1146,6 @@ class DateFieldTimeZoneSegmentState {
1164
1146
  this.opts = opts;
1165
1147
  this.root = root;
1166
1148
  this.onkeydown = this.onkeydown.bind(this);
1167
- useRefById(opts);
1168
1149
  }
1169
1150
  onkeydown(e) {
1170
1151
  if (e.key !== kbd.TAB)
@@ -1186,6 +1167,7 @@ class DateFieldTimeZoneSegmentState {
1186
1167
  tabindex: 0,
1187
1168
  ...this.root.getBaseSegmentAttrs("timeZoneName", this.opts.id.current),
1188
1169
  "data-readonly": getDataReadonly(true),
1170
+ ...attachRef(this.opts.ref),
1189
1171
  }));
1190
1172
  }
1191
1173
  // Utils/helpers
@@ -2,13 +2,15 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { DatePickerCalendarProps } from "../types.js";
4
4
  import { DatePickerRootContext } from "../date-picker.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
6
5
  import { useCalendarRoot } from "../../calendar/calendar.svelte.js";
6
+ import { createId } from "../../../internal/create-id.js";
7
+
8
+ const uid = $props.id();
7
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
  }: DatePickerCalendarProps = $props();
@@ -2,11 +2,13 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { DateRangeFieldInputProps } from "../types.js";
4
4
  import { useDateRangeFieldInput } from "../date-range-field.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
6
  import DateFieldHiddenInput from "../../date-field/components/date-field-hidden-input.svelte";
7
7
 
8
+ const uid = $props.id();
9
+
8
10
  let {
9
- id = useId(),
11
+ id = createId(uid),
10
12
  ref = $bindable(null),
11
13
  name = "",
12
14
  child,
@@ -2,10 +2,12 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import { useDateRangeFieldLabel } from "../date-range-field.svelte.js";
4
4
  import type { DateRangeFieldLabelProps } 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,
@@ -3,14 +3,16 @@
3
3
  import type { DateValue } from "@internationalized/date";
4
4
  import { useDateRangeFieldRoot } from "../date-range-field.svelte.js";
5
5
  import type { DateRangeFieldRootProps } from "../types.js";
6
- import { useId } from "../../../internal/use-id.js";
6
+ import { createId } from "../../../internal/create-id.js";
7
7
  import { noop } from "../../../internal/noop.js";
8
8
  import type { DateRange } from "../../../shared/index.js";
9
9
  import { getDefaultDate } from "../../../internal/date-time/utils.js";
10
10
  import { watch } from "runed";
11
11
 
12
+ const uid = $props.id();
13
+
12
14
  let {
13
- id = useId(),
15
+ id = createId(uid),
14
16
  ref = $bindable(null),
15
17
  value = $bindable(),
16
18
  onValueChange = noop,
@@ -1,4 +1,4 @@
1
- import { box, onDestroyEffect, useRefById } from "svelte-toolbelt";
1
+ import { box, onDestroyEffect, attachRef } 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";
@@ -24,12 +24,6 @@ export class DateRangeFieldRootState {
24
24
  constructor(opts) {
25
25
  this.opts = opts;
26
26
  this.formatter = createFormatter(this.opts.locale.current);
27
- useRefById({
28
- ...opts,
29
- onRefChange: (node) => {
30
- this.fieldNode = node;
31
- },
32
- });
33
27
  onDestroyEffect(() => {
34
28
  removeDescriptionElement(this.descriptionId);
35
29
  });
@@ -136,6 +130,7 @@ export class DateRangeFieldRootState {
136
130
  role: "group",
137
131
  [DATE_RANGE_FIELD_ROOT_ATTR]: "",
138
132
  "data-invalid": getDataInvalid(this.isInvalid),
133
+ ...attachRef(this.opts.ref, (v) => (this.fieldNode = v)),
139
134
  }));
140
135
  }
141
136
  class DateRangeFieldLabelState {
@@ -144,12 +139,6 @@ class DateRangeFieldLabelState {
144
139
  constructor(opts, root) {
145
140
  this.opts = opts;
146
141
  this.root = root;
147
- useRefById({
148
- ...opts,
149
- onRefChange: (node) => {
150
- root.labelNode = node;
151
- },
152
- });
153
142
  }
154
143
  #onclick = () => {
155
144
  if (this.root.opts.disabled.current)
@@ -166,6 +155,7 @@ class DateRangeFieldLabelState {
166
155
  "data-disabled": getDataDisabled(this.root.opts.disabled.current),
167
156
  [DATE_RANGE_FIELD_LABEL_ATTR]: "",
168
157
  onclick: this.#onclick,
158
+ ...attachRef(this.opts.ref, (v) => (this.root.labelNode = v)),
169
159
  }));
170
160
  }
171
161
  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,