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
@@ -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,4 +1,4 @@
1
- import { afterSleep, onDestroyEffect, useRefById } from "svelte-toolbelt";
1
+ import { afterSleep, onDestroyEffect, attachRef } from "svelte-toolbelt";
2
2
  import { Context, watch } from "runed";
3
3
  import { on } from "svelte/events";
4
4
  import { getAriaExpanded, getDataOpenClosed } from "../../internal/attrs.js";
@@ -94,12 +94,6 @@ class LinkPreviewTriggerState {
94
94
  this.onpointerleave = this.onpointerleave.bind(this);
95
95
  this.onfocus = this.onfocus.bind(this);
96
96
  this.onblur = this.onblur.bind(this);
97
- useRefById({
98
- ...opts,
99
- onRefChange: (node) => {
100
- this.root.triggerNode = node;
101
- },
102
- });
103
97
  }
104
98
  onpointerenter(e) {
105
99
  if (isTouch(e))
@@ -133,6 +127,7 @@ class LinkPreviewTriggerState {
133
127
  onfocus: this.onfocus,
134
128
  onblur: this.onblur,
135
129
  onpointerleave: this.onpointerleave,
130
+ ...attachRef(this.opts.ref, (v) => (this.root.triggerNode = v)),
136
131
  }));
137
132
  }
138
133
  class LinkPreviewContentState {
@@ -144,13 +139,6 @@ class LinkPreviewContentState {
144
139
  this.onpointerdown = this.onpointerdown.bind(this);
145
140
  this.onpointerenter = this.onpointerenter.bind(this);
146
141
  this.onfocusout = this.onfocusout.bind(this);
147
- useRefById({
148
- ...opts,
149
- onRefChange: (node) => {
150
- this.root.contentNode = node;
151
- },
152
- deps: () => this.root.opts.open.current,
153
- });
154
142
  useGraceArea({
155
143
  triggerNode: () => this.root.triggerNode,
156
144
  contentNode: () => this.opts.ref.current,
@@ -208,6 +196,7 @@ class LinkPreviewContentState {
208
196
  onpointerdown: this.onpointerdown,
209
197
  onpointerenter: this.onpointerenter,
210
198
  onfocusout: this.onfocusout,
199
+ ...attachRef(this.opts.ref, (v) => (this.root.contentNode = v)),
211
200
  }));
212
201
  popperProps = {
213
202
  onInteractOutside: this.onInteractOutside,
@@ -3,10 +3,12 @@
3
3
  import type { MenuCheckboxGroupProps } from "../types.js";
4
4
  import { useMenuCheckboxGroup } from "../menu.svelte.js";
5
5
  import { noop } from "../../../internal/noop.js";
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
  children,
11
13
  child,
12
14
  ref = $bindable(null),
@@ -2,16 +2,18 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuCheckboxItemProps } from "../types.js";
4
4
  import { MenuCheckboxGroupContext, useMenuCheckboxItem } from "../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 { watch } from "runed";
8
8
 
9
+ const uid = $props.id();
10
+
9
11
  let {
10
12
  child,
11
13
  children,
12
14
  ref = $bindable(null),
13
15
  checked = $bindable(false),
14
- id = useId(),
16
+ id = createId(uid),
15
17
  onCheckedChange = noop,
16
18
  disabled = false,
17
19
  onSelect = noop,
@@ -84,9 +86,9 @@
84
86
  </script>
85
87
 
86
88
  {#if child}
87
- {@render child({ props: mergedProps, ...checkboxItemState.snippetProps })}
89
+ {@render child({ checked, indeterminate, props: mergedProps })}
88
90
  {:else}
89
91
  <div {...mergedProps}>
90
- {@render children?.(checkboxItemState.snippetProps)}
92
+ {@render children?.({ checked, indeterminate })}
91
93
  </div>
92
94
  {/if}
@@ -2,15 +2,16 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuContentStaticProps } from "../types.js";
4
4
  import { useMenuContent } from "../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),
@@ -55,6 +56,7 @@
55
56
  <PopperLayerForceMount
56
57
  {...mergedProps}
57
58
  {...contentState.popperProps}
59
+ ref={contentState.opts.ref}
58
60
  enabled={contentState.parentMenu.opts.open.current}
59
61
  onInteractOutside={handleInteractOutside}
60
62
  onEscapeKeydown={handleEscapeKeydown}
@@ -78,13 +80,13 @@
78
80
  {@render children?.()}
79
81
  </div>
80
82
  {/if}
81
- <Mounted bind:mounted={contentState.mounted} />
82
83
  {/snippet}
83
84
  </PopperLayerForceMount>
84
85
  {:else if !forceMount}
85
86
  <PopperLayer
86
87
  {...mergedProps}
87
88
  {...contentState.popperProps}
89
+ ref={contentState.opts.ref}
88
90
  present={contentState.parentMenu.opts.open.current}
89
91
  onInteractOutside={handleInteractOutside}
90
92
  onEscapeKeydown={handleEscapeKeydown}
@@ -108,7 +110,6 @@
108
110
  {@render children?.()}
109
111
  </div>
110
112
  {/if}
111
- <Mounted bind:mounted={contentState.mounted} />
112
113
  {/snippet}
113
114
  </PopperLayer>
114
115
  {/if}
@@ -2,15 +2,16 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuContentProps } from "../types.js";
4
4
  import { useMenuContent } from "../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),
@@ -55,6 +56,7 @@
55
56
  <PopperLayerForceMount
56
57
  {...mergedProps}
57
58
  {...contentState.popperProps}
59
+ ref={contentState.opts.ref}
58
60
  enabled={contentState.parentMenu.opts.open.current}
59
61
  onInteractOutside={handleInteractOutside}
60
62
  onEscapeKeydown={handleEscapeKeydown}
@@ -79,13 +81,13 @@
79
81
  </div>
80
82
  </div>
81
83
  {/if}
82
- <Mounted bind:mounted={contentState.mounted} />
83
84
  {/snippet}
84
85
  </PopperLayerForceMount>
85
86
  {:else if !forceMount}
86
87
  <PopperLayer
87
88
  {...mergedProps}
88
89
  {...contentState.popperProps}
90
+ ref={contentState.opts.ref}
89
91
  present={contentState.parentMenu.opts.open.current}
90
92
  onInteractOutside={handleInteractOutside}
91
93
  onEscapeKeydown={handleEscapeKeydown}
@@ -110,7 +112,6 @@
110
112
  </div>
111
113
  </div>
112
114
  {/if}
113
- <Mounted bind:mounted={contentState.mounted} />
114
115
  {/snippet}
115
116
  </PopperLayer>
116
117
  {/if}
@@ -2,13 +2,15 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenuGroupHeadingProps } from "../types.js";
4
4
  import { useMenuGroupHeading } from "../menu.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
12
  ref = $bindable(null),
11
- id = useId(),
13
+ id = createId(uid),
12
14
  ...restProps
13
15
  }: MenuGroupHeadingProps = $props();
14
16