bits-ui 1.8.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/dist/bits/accordion/accordion.svelte.d.ts +56 -53
  2. package/dist/bits/accordion/accordion.svelte.js +78 -89
  3. package/dist/bits/accordion/components/accordion-content.svelte +5 -3
  4. package/dist/bits/accordion/components/accordion-header.svelte +4 -2
  5. package/dist/bits/accordion/components/accordion-item.svelte +6 -3
  6. package/dist/bits/accordion/components/accordion-trigger.svelte +4 -2
  7. package/dist/bits/accordion/components/accordion.svelte +4 -2
  8. package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +4 -2
  9. package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +4 -2
  10. package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +8 -3
  11. package/dist/bits/aspect-ratio/aspect-ratio.svelte.js +2 -2
  12. package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +4 -2
  13. package/dist/bits/avatar/avatar.svelte.d.ts +2 -1
  14. package/dist/bits/avatar/avatar.svelte.js +8 -6
  15. package/dist/bits/avatar/components/avatar-fallback.svelte +4 -2
  16. package/dist/bits/avatar/components/avatar-image.svelte +4 -2
  17. package/dist/bits/avatar/components/avatar.svelte +4 -2
  18. package/dist/bits/button/components/button.svelte +1 -1
  19. package/dist/bits/calendar/calendar.svelte.d.ts +3 -9
  20. package/dist/bits/calendar/calendar.svelte.js +55 -41
  21. package/dist/bits/calendar/components/calendar-cell.svelte +4 -2
  22. package/dist/bits/calendar/components/calendar-day.svelte +4 -2
  23. package/dist/bits/calendar/components/calendar-grid-body.svelte +4 -2
  24. package/dist/bits/calendar/components/calendar-grid-head.svelte +4 -2
  25. package/dist/bits/calendar/components/calendar-grid-row.svelte +4 -2
  26. package/dist/bits/calendar/components/calendar-grid.svelte +4 -2
  27. package/dist/bits/calendar/components/calendar-head-cell.svelte +4 -2
  28. package/dist/bits/calendar/components/calendar-header.svelte +4 -2
  29. package/dist/bits/calendar/components/calendar-heading.svelte +4 -2
  30. package/dist/bits/calendar/components/calendar-next-button.svelte +4 -2
  31. package/dist/bits/calendar/components/calendar-prev-button.svelte +4 -2
  32. package/dist/bits/checkbox/checkbox.svelte.js +4 -14
  33. package/dist/bits/checkbox/components/checkbox-group-label.svelte +4 -2
  34. package/dist/bits/checkbox/components/checkbox-group.svelte +4 -2
  35. package/dist/bits/checkbox/components/checkbox.svelte +4 -2
  36. package/dist/bits/collapsible/collapsible.svelte.js +4 -10
  37. package/dist/bits/collapsible/components/collapsible-content.svelte +5 -3
  38. package/dist/bits/collapsible/components/collapsible-trigger.svelte +4 -2
  39. package/dist/bits/collapsible/components/collapsible.svelte +4 -2
  40. package/dist/bits/combobox/components/combobox-input.svelte +3 -3
  41. package/dist/bits/combobox/components/combobox.svelte +6 -1
  42. package/dist/bits/combobox/types.d.ts +18 -1
  43. package/dist/bits/command/command.svelte.js +13 -45
  44. package/dist/bits/command/components/_command-label.svelte +6 -7
  45. package/dist/bits/command/components/_command-label.svelte.d.ts +1 -1
  46. package/dist/bits/command/components/command-empty.svelte +4 -2
  47. package/dist/bits/command/components/command-group-heading.svelte +4 -2
  48. package/dist/bits/command/components/command-group-items.svelte +4 -2
  49. package/dist/bits/command/components/command-group.svelte +4 -2
  50. package/dist/bits/command/components/command-input.svelte +4 -2
  51. package/dist/bits/command/components/command-item.svelte +4 -2
  52. package/dist/bits/command/components/command-link-item.svelte +4 -2
  53. package/dist/bits/command/components/command-list.svelte +4 -2
  54. package/dist/bits/command/components/command-loading.svelte +4 -2
  55. package/dist/bits/command/components/command-separator.svelte +4 -2
  56. package/dist/bits/command/components/command-viewport.svelte +4 -2
  57. package/dist/bits/command/components/command.svelte +4 -2
  58. package/dist/bits/context-menu/components/context-menu-content-static.svelte +2 -3
  59. package/dist/bits/context-menu/components/context-menu-content.svelte +2 -3
  60. package/dist/bits/context-menu/components/context-menu-trigger.svelte +1 -1
  61. package/dist/bits/date-field/components/date-field-input.svelte +4 -2
  62. package/dist/bits/date-field/components/date-field-label.svelte +4 -2
  63. package/dist/bits/date-field/components/date-field-segment.svelte +4 -2
  64. package/dist/bits/date-field/date-field.svelte.d.ts +7 -5
  65. package/dist/bits/date-field/date-field.svelte.js +29 -38
  66. package/dist/bits/date-picker/components/date-picker-calendar.svelte +4 -2
  67. package/dist/bits/date-range-field/components/date-range-field-input.svelte +4 -2
  68. package/dist/bits/date-range-field/components/date-range-field-label.svelte +4 -2
  69. package/dist/bits/date-range-field/components/date-range-field.svelte +4 -2
  70. package/dist/bits/date-range-field/date-range-field.svelte.d.ts +2 -0
  71. package/dist/bits/date-range-field/date-range-field.svelte.js +6 -14
  72. package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +4 -2
  73. package/dist/bits/dialog/components/dialog-close.svelte +4 -2
  74. package/dist/bits/dialog/components/dialog-content.svelte +8 -2
  75. package/dist/bits/dialog/components/dialog-description.svelte +4 -2
  76. package/dist/bits/dialog/components/dialog-overlay.svelte +8 -3
  77. package/dist/bits/dialog/components/dialog-title.svelte +4 -2
  78. package/dist/bits/dialog/components/dialog-trigger.svelte +4 -2
  79. package/dist/bits/dialog/dialog.svelte.d.ts +1 -1
  80. package/dist/bits/dialog/dialog.svelte.js +19 -47
  81. package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +6 -5
  82. package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +6 -5
  83. package/dist/bits/index.d.ts +2 -0
  84. package/dist/bits/index.js +2 -0
  85. package/dist/bits/label/components/label.svelte +4 -2
  86. package/dist/bits/label/label.svelte.js +2 -2
  87. package/dist/bits/link-preview/components/link-preview-content-static.svelte +6 -2
  88. package/dist/bits/link-preview/components/link-preview-content.svelte +6 -2
  89. package/dist/bits/link-preview/components/link-preview-trigger.svelte +5 -3
  90. package/dist/bits/link-preview/link-preview.svelte.d.ts +2 -0
  91. package/dist/bits/link-preview/link-preview.svelte.js +13 -19
  92. package/dist/bits/menu/components/menu-checkbox-group.svelte +4 -2
  93. package/dist/bits/menu/components/menu-checkbox-item.svelte +6 -4
  94. package/dist/bits/menu/components/menu-content-static.svelte +6 -5
  95. package/dist/bits/menu/components/menu-content.svelte +6 -5
  96. package/dist/bits/menu/components/menu-group-heading.svelte +4 -2
  97. package/dist/bits/menu/components/menu-group.svelte +4 -2
  98. package/dist/bits/menu/components/menu-item.svelte +4 -2
  99. package/dist/bits/menu/components/menu-radio-group.svelte +4 -2
  100. package/dist/bits/menu/components/menu-radio-item.svelte +4 -2
  101. package/dist/bits/menu/components/menu-separator.svelte +4 -2
  102. package/dist/bits/menu/components/menu-sub-content-static.svelte +6 -5
  103. package/dist/bits/menu/components/menu-sub-content.svelte +6 -5
  104. package/dist/bits/menu/components/menu-sub-trigger.svelte +6 -3
  105. package/dist/bits/menu/components/menu-trigger.svelte +5 -3
  106. package/dist/bits/menu/menu.svelte.d.ts +9 -20
  107. package/dist/bits/menu/menu.svelte.js +40 -63
  108. package/dist/bits/menubar/components/menubar-content-static.svelte +4 -2
  109. package/dist/bits/menubar/components/menubar-content.svelte +4 -2
  110. package/dist/bits/menubar/components/menubar-menu.svelte +4 -2
  111. package/dist/bits/menubar/components/menubar-trigger.svelte +14 -6
  112. package/dist/bits/menubar/components/menubar.svelte +4 -2
  113. package/dist/bits/menubar/menubar.svelte.d.ts +24 -20
  114. package/dist/bits/menubar/menubar.svelte.js +40 -56
  115. package/dist/bits/meter/components/meter.svelte +4 -2
  116. package/dist/bits/meter/meter.svelte.js +2 -2
  117. package/dist/bits/navigation-menu/components/navigation-menu-content-impl.svelte +5 -2
  118. package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +8 -3
  119. package/dist/bits/navigation-menu/components/navigation-menu-indicator-impl.svelte +4 -2
  120. package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +6 -4
  121. package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +6 -3
  122. package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +4 -2
  123. package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +4 -2
  124. package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +4 -2
  125. package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +4 -2
  126. package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +5 -3
  127. package/dist/bits/navigation-menu/components/navigation-menu.svelte +4 -2
  128. package/dist/bits/navigation-menu/navigation-menu.svelte.d.ts +3 -1
  129. package/dist/bits/navigation-menu/navigation-menu.svelte.js +33 -60
  130. package/dist/bits/pagination/components/pagination-next-button.svelte +4 -2
  131. package/dist/bits/pagination/components/pagination-page.svelte +4 -2
  132. package/dist/bits/pagination/components/pagination-prev-button.svelte +4 -2
  133. package/dist/bits/pagination/components/pagination.svelte +4 -2
  134. package/dist/bits/pagination/pagination.svelte.js +4 -4
  135. package/dist/bits/pin-input/components/pin-input-cell.svelte +4 -2
  136. package/dist/bits/pin-input/components/pin-input.svelte +5 -3
  137. package/dist/bits/pin-input/pin-input.svelte.d.ts +4 -2
  138. package/dist/bits/pin-input/pin-input.svelte.js +20 -22
  139. package/dist/bits/pin-input/usePasswordManager.svelte.d.ts +3 -2
  140. package/dist/bits/pin-input/usePasswordManager.svelte.js +6 -5
  141. package/dist/bits/popover/components/popover-close.svelte +4 -2
  142. package/dist/bits/popover/components/popover-content-static.svelte +6 -2
  143. package/dist/bits/popover/components/popover-content.svelte +6 -2
  144. package/dist/bits/popover/components/popover-trigger.svelte +5 -3
  145. package/dist/bits/popover/popover.svelte.js +4 -18
  146. package/dist/bits/progress/components/progress.svelte +4 -2
  147. package/dist/bits/progress/progress.svelte.js +2 -2
  148. package/dist/bits/radio-group/components/radio-group-item.svelte +4 -2
  149. package/dist/bits/radio-group/components/radio-group.svelte +4 -2
  150. package/dist/bits/radio-group/radio-group.svelte.js +4 -7
  151. package/dist/bits/range-calendar/components/range-calendar-cell.svelte +4 -2
  152. package/dist/bits/range-calendar/components/range-calendar-day.svelte +4 -2
  153. package/dist/bits/range-calendar/components/range-calendar.svelte +4 -2
  154. package/dist/bits/range-calendar/range-calendar.svelte.d.ts +2 -0
  155. package/dist/bits/range-calendar/range-calendar.svelte.js +12 -6
  156. package/dist/bits/scroll-area/components/scroll-area-corner.svelte +8 -2
  157. package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +4 -1
  158. package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +1 -1
  159. package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +5 -1
  160. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +4 -2
  161. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +8 -3
  162. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +4 -2
  163. package/dist/bits/scroll-area/components/scroll-area.svelte +4 -2
  164. package/dist/bits/scroll-area/scroll-area.svelte.d.ts +2 -0
  165. package/dist/bits/scroll-area/scroll-area.svelte.js +27 -58
  166. package/dist/bits/select/components/select-content-static.svelte +6 -2
  167. package/dist/bits/select/components/select-content.svelte +6 -2
  168. package/dist/bits/select/components/select-group-heading.svelte +3 -2
  169. package/dist/bits/select/components/select-group.svelte +4 -2
  170. package/dist/bits/select/components/select-item.svelte +4 -2
  171. package/dist/bits/select/components/select-scroll-down-button.svelte +4 -2
  172. package/dist/bits/select/components/select-scroll-up-button.svelte +4 -2
  173. package/dist/bits/select/components/select-trigger.svelte +5 -3
  174. package/dist/bits/select/components/select-viewport.svelte +4 -2
  175. package/dist/bits/select/components/select.svelte +7 -1
  176. package/dist/bits/select/select.svelte.d.ts +5 -19
  177. package/dist/bits/select/select.svelte.js +43 -60
  178. package/dist/bits/separator/components/separator.svelte +4 -2
  179. package/dist/bits/separator/separator.svelte.js +2 -2
  180. package/dist/bits/slider/components/slider-range.svelte +4 -2
  181. package/dist/bits/slider/components/slider-thumb-label.svelte +50 -0
  182. package/dist/bits/slider/components/slider-thumb-label.svelte.d.ts +4 -0
  183. package/dist/bits/slider/components/slider-thumb.svelte +4 -2
  184. package/dist/bits/slider/components/slider-tick-label.svelte +50 -0
  185. package/dist/bits/slider/components/slider-tick-label.svelte.d.ts +4 -0
  186. package/dist/bits/slider/components/slider-tick.svelte +4 -2
  187. package/dist/bits/slider/components/slider.svelte +24 -5
  188. package/dist/bits/slider/exports.d.ts +3 -1
  189. package/dist/bits/slider/exports.js +2 -0
  190. package/dist/bits/slider/helpers.d.ts +14 -0
  191. package/dist/bits/slider/helpers.js +122 -0
  192. package/dist/bits/slider/slider.svelte.d.ts +91 -5
  193. package/dist/bits/slider/slider.svelte.js +194 -101
  194. package/dist/bits/slider/types.d.ts +105 -11
  195. package/dist/bits/switch/components/switch-thumb.svelte +4 -2
  196. package/dist/bits/switch/components/switch.svelte +4 -2
  197. package/dist/bits/switch/switch.svelte.js +3 -3
  198. package/dist/bits/tabs/components/tabs-content.svelte +4 -2
  199. package/dist/bits/tabs/components/tabs-list.svelte +4 -2
  200. package/dist/bits/tabs/components/tabs-trigger.svelte +4 -2
  201. package/dist/bits/tabs/components/tabs.svelte +4 -2
  202. package/dist/bits/tabs/tabs.svelte.js +6 -6
  203. package/dist/bits/time-field/components/time-field-hidden-input.svelte +10 -0
  204. package/dist/bits/{date-field/components/date-field-error.svelte.d.ts → time-field/components/time-field-hidden-input.svelte.d.ts} +6 -14
  205. package/dist/bits/time-field/components/time-field-input.svelte +39 -0
  206. package/dist/bits/time-field/components/time-field-input.svelte.d.ts +4 -0
  207. package/dist/bits/time-field/components/time-field-label.svelte +34 -0
  208. package/dist/bits/time-field/components/time-field-label.svelte.d.ts +4 -0
  209. package/dist/bits/time-field/components/time-field-segment.svelte +37 -0
  210. package/dist/bits/time-field/components/time-field-segment.svelte.d.ts +4 -0
  211. package/dist/bits/time-field/components/time-field.svelte +94 -0
  212. package/dist/bits/time-field/components/time-field.svelte.d.ts +20 -0
  213. package/dist/bits/time-field/exports.d.ts +5 -0
  214. package/dist/bits/time-field/exports.js +4 -0
  215. package/dist/bits/time-field/index.d.ts +1 -0
  216. package/dist/bits/time-field/index.js +1 -0
  217. package/dist/bits/time-field/time-field.svelte.d.ts +417 -0
  218. package/dist/bits/time-field/time-field.svelte.js +980 -0
  219. package/dist/bits/time-field/types.d.ts +137 -0
  220. package/dist/bits/time-field/types.js +1 -0
  221. package/dist/bits/time-range-field/components/time-range-field-input.svelte +43 -0
  222. package/dist/bits/time-range-field/components/time-range-field-input.svelte.d.ts +4 -0
  223. package/dist/bits/time-range-field/components/time-range-field-label.svelte +34 -0
  224. package/dist/bits/time-range-field/components/time-range-field-label.svelte.d.ts +4 -0
  225. package/dist/bits/time-range-field/components/time-range-field.svelte +144 -0
  226. package/dist/bits/time-range-field/components/time-range-field.svelte.d.ts +20 -0
  227. package/dist/bits/time-range-field/exports.d.ts +5 -0
  228. package/dist/bits/time-range-field/exports.js +4 -0
  229. package/dist/bits/time-range-field/index.d.ts +1 -0
  230. package/dist/bits/time-range-field/index.js +1 -0
  231. package/dist/bits/time-range-field/time-range-field.svelte.d.ts +92 -0
  232. package/dist/bits/time-range-field/time-range-field.svelte.js +212 -0
  233. package/dist/bits/time-range-field/types.d.ts +150 -0
  234. package/dist/bits/time-range-field/types.js +1 -0
  235. package/dist/bits/toggle/components/toggle.svelte +4 -2
  236. package/dist/bits/toggle/toggle.svelte.js +2 -2
  237. package/dist/bits/toggle-group/components/toggle-group-item.svelte +4 -2
  238. package/dist/bits/toggle-group/components/toggle-group.svelte +4 -2
  239. package/dist/bits/toggle-group/toggle-group.svelte.js +4 -4
  240. package/dist/bits/toolbar/components/toolbar-button.svelte +4 -2
  241. package/dist/bits/toolbar/components/toolbar-group-item.svelte +4 -2
  242. package/dist/bits/toolbar/components/toolbar-group.svelte +4 -2
  243. package/dist/bits/toolbar/components/toolbar-link.svelte +4 -2
  244. package/dist/bits/toolbar/components/toolbar.svelte +4 -2
  245. package/dist/bits/toolbar/toolbar.svelte.js +7 -7
  246. package/dist/bits/tooltip/components/tooltip-content-static.svelte +6 -2
  247. package/dist/bits/tooltip/components/tooltip-content.svelte +6 -2
  248. package/dist/bits/tooltip/components/tooltip-trigger.svelte +5 -3
  249. package/dist/bits/tooltip/tooltip.svelte.d.ts +2 -0
  250. package/dist/bits/tooltip/tooltip.svelte.js +6 -15
  251. package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -0
  252. package/dist/bits/utilities/dismissible-layer/types.d.ts +2 -0
  253. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +3 -3
  254. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +16 -25
  255. package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -1
  256. package/dist/bits/utilities/floating-layer/types.d.ts +1 -0
  257. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +3 -2
  258. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +7 -27
  259. package/dist/bits/utilities/focus-scope/focus-scope.svelte +2 -0
  260. package/dist/bits/utilities/focus-scope/types.d.ts +2 -0
  261. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +2 -1
  262. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +15 -16
  263. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +4 -0
  264. package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -1
  265. package/dist/bits/utilities/portal/types.d.ts +1 -1
  266. package/dist/bits/utilities/presence-layer/presence-layer.svelte +2 -2
  267. package/dist/bits/utilities/presence-layer/types.d.ts +2 -1
  268. package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +1 -1
  269. package/dist/bits/utilities/presence-layer/use-presence.svelte.js +19 -36
  270. package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -0
  271. package/dist/bits/utilities/text-selection-layer/types.d.ts +2 -0
  272. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +5 -1
  273. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +8 -14
  274. package/dist/index.d.ts +1 -1
  275. package/dist/index.js +1 -1
  276. package/dist/internal/box-auto-reset.svelte.d.ts +7 -1
  277. package/dist/internal/box-auto-reset.svelte.js +11 -6
  278. package/dist/internal/create-id.d.ts +8 -0
  279. package/dist/internal/create-id.js +5 -0
  280. package/dist/internal/date-time/announcer.d.ts +1 -1
  281. package/dist/internal/date-time/announcer.js +20 -20
  282. package/dist/internal/date-time/calendar-helpers.svelte.js +7 -5
  283. package/dist/internal/date-time/field/helpers.d.ts +9 -2
  284. package/dist/internal/date-time/field/helpers.js +16 -9
  285. package/dist/internal/date-time/field/parts.d.ts +3 -1
  286. package/dist/internal/date-time/field/parts.js +10 -2
  287. package/dist/internal/date-time/field/segments.d.ts +9 -0
  288. package/dist/internal/date-time/field/segments.js +65 -0
  289. package/dist/internal/date-time/field/time-helpers.d.ts +83 -0
  290. package/dist/internal/date-time/field/time-helpers.js +301 -0
  291. package/dist/internal/date-time/field/types.d.ts +2 -2
  292. package/dist/internal/date-time/formatter.d.ts +11 -1
  293. package/dist/internal/date-time/formatter.js +56 -0
  294. package/dist/internal/date-time/utils.d.ts +7 -2
  295. package/dist/internal/date-time/utils.js +15 -1
  296. package/dist/internal/dom.d.ts +0 -1
  297. package/dist/internal/dom.js +0 -3
  298. package/dist/internal/focus.d.ts +2 -2
  299. package/dist/internal/focus.js +14 -9
  300. package/dist/internal/math.d.ts +0 -4
  301. package/dist/internal/math.js +0 -28
  302. package/dist/internal/tabbable.d.ts +0 -2
  303. package/dist/internal/tabbable.js +10 -14
  304. package/dist/internal/use-data-typeahead.svelte.d.ts +1 -0
  305. package/dist/internal/use-data-typeahead.svelte.js +4 -1
  306. package/dist/internal/use-dom-typeahead.svelte.d.ts +3 -1
  307. package/dist/internal/use-dom-typeahead.svelte.js +5 -2
  308. package/dist/internal/use-grace-area.svelte.js +9 -5
  309. package/dist/internal/use-roving-focus.svelte.d.ts +3 -3
  310. package/dist/internal/use-roving-focus.svelte.js +10 -11
  311. package/dist/shared/date/types.d.ts +27 -4
  312. package/dist/shared/index.d.ts +2 -2
  313. package/dist/types.d.ts +2 -0
  314. package/package.json +18 -16
  315. package/dist/bits/date-field/components/date-field-error.svelte +0 -0
  316. package/dist/internal/use-size.svelte.d.ts +0 -7
  317. package/dist/internal/use-size.svelte.js +0 -54
@@ -1,4 +1,4 @@
1
- import { afterTick, box, useRefById } from "svelte-toolbelt";
1
+ import { afterTick, box, attachRef } from "svelte-toolbelt";
2
2
  import { Context, watch } from "runed";
3
3
  import { useRovingFocus, } from "../../internal/use-roving-focus.svelte.js";
4
4
  import { getAriaExpanded, getDataDisabled, getDataOpenClosed } from "../../internal/attrs.js";
@@ -16,40 +16,35 @@ class MenubarRootState {
16
16
  valueToChangeHandler = new Map();
17
17
  constructor(opts) {
18
18
  this.opts = opts;
19
- useRefById(opts);
20
19
  this.rovingFocusGroup = useRovingFocus({
21
- rootNodeId: this.opts.id,
20
+ rootNode: this.opts.ref,
22
21
  candidateAttr: MENUBAR_TRIGGER_ATTR,
23
22
  loop: this.opts.loop,
24
23
  orientation: box.with(() => "horizontal"),
25
24
  });
26
- this.onMenuClose = this.onMenuClose.bind(this);
27
- this.onMenuOpen = this.onMenuOpen.bind(this);
28
- this.onMenuToggle = this.onMenuToggle.bind(this);
29
- this.registerTrigger = this.registerTrigger.bind(this);
30
25
  }
31
26
  /**
32
27
  * @param id - the id of the trigger to register
33
28
  * @returns - a function to de-register the trigger
34
29
  */
35
- registerTrigger(id) {
30
+ registerTrigger = (id) => {
36
31
  this.triggerIds.push(id);
37
32
  return () => {
38
33
  this.triggerIds = this.triggerIds.filter((triggerId) => triggerId !== id);
39
34
  };
40
- }
35
+ };
41
36
  /**
42
37
  * @param value - the value of the menu to register
43
38
  * @param contentId - the content id to associate with the value
44
39
  * @returns - a function to de-register the menu
45
40
  */
46
- registerMenu(value, onOpenChange) {
41
+ registerMenu = (value, onOpenChange) => {
47
42
  this.valueToChangeHandler.set(value, onOpenChange);
48
43
  return () => {
49
44
  this.valueToChangeHandler.delete(value);
50
45
  };
51
- }
52
- updateValue(value) {
46
+ };
47
+ updateValue = (value) => {
53
48
  const currValue = this.opts.value.current;
54
49
  const currHandler = this.valueToChangeHandler.get(currValue)?.current;
55
50
  const nextHandler = this.valueToChangeHandler.get(value)?.current;
@@ -60,35 +55,38 @@ class MenubarRootState {
60
55
  if (nextHandler) {
61
56
  nextHandler(true);
62
57
  }
63
- }
64
- getTriggers() {
58
+ };
59
+ getTriggers = () => {
65
60
  const node = this.opts.ref.current;
66
61
  if (!node)
67
62
  return [];
68
63
  return Array.from(node.querySelectorAll(`[${MENUBAR_TRIGGER_ATTR}]`));
69
- }
70
- onMenuOpen(id, triggerId) {
64
+ };
65
+ onMenuOpen = (id, triggerId) => {
71
66
  this.updateValue(id);
72
67
  this.rovingFocusGroup.setCurrentTabStopId(triggerId);
73
- }
74
- onMenuClose() {
68
+ };
69
+ onMenuClose = () => {
75
70
  this.updateValue("");
76
- }
77
- onMenuToggle(id) {
71
+ };
72
+ onMenuToggle = (id) => {
78
73
  this.updateValue(this.opts.value.current ? "" : id);
79
- }
74
+ };
80
75
  props = $derived.by(() => ({
81
76
  id: this.opts.id.current,
82
77
  role: "menubar",
83
78
  [MENUBAR_ROOT_ATTR]: "",
79
+ ...attachRef(this.opts.ref),
84
80
  }));
85
81
  }
86
82
  class MenubarMenuState {
87
83
  opts;
88
84
  root;
89
85
  open = $derived.by(() => this.root.opts.value.current === this.opts.value.current);
90
- wasOpenedByKeyboard = $state(false);
86
+ wasOpenedByKeyboard = false;
91
87
  triggerNode = $state(null);
88
+ triggerId = $derived.by(() => this.triggerNode?.id);
89
+ contentId = $derived.by(() => this.contentNode?.id);
92
90
  contentNode = $state(null);
93
91
  constructor(opts, root) {
94
92
  this.opts = opts;
@@ -105,6 +103,9 @@ class MenubarMenuState {
105
103
  getTriggerNode() {
106
104
  return this.triggerNode;
107
105
  }
106
+ toggleMenu() {
107
+ this.root.onMenuToggle(this.opts.value.current);
108
+ }
108
109
  openMenu() {
109
110
  this.root.onMenuOpen(this.opts.value.current, this.triggerNode?.id ?? "");
110
111
  }
@@ -119,17 +120,6 @@ class MenubarTriggerState {
119
120
  this.opts = opts;
120
121
  this.menu = menu;
121
122
  this.root = menu.root;
122
- this.onpointerdown = this.onpointerdown.bind(this);
123
- this.onpointerenter = this.onpointerenter.bind(this);
124
- this.onkeydown = this.onkeydown.bind(this);
125
- this.onfocus = this.onfocus.bind(this);
126
- this.onblur = this.onblur.bind(this);
127
- useRefById({
128
- ...opts,
129
- onRefChange: (node) => {
130
- this.menu.triggerNode = node;
131
- },
132
- });
133
123
  onMount(() => {
134
124
  return this.root.registerTrigger(opts.id.current);
135
125
  });
@@ -139,7 +129,7 @@ class MenubarTriggerState {
139
129
  }
140
130
  });
141
131
  }
142
- onpointerdown(e) {
132
+ onpointerdown = (e) => {
143
133
  // only call if the left button but not when the CTRL key is pressed
144
134
  if (!this.opts.disabled.current && e.button === 0 && e.ctrlKey === false) {
145
135
  // prevent trigger from focusing when opening
@@ -147,17 +137,17 @@ class MenubarTriggerState {
147
137
  if (!this.menu.open) {
148
138
  e.preventDefault();
149
139
  }
150
- this.menu.openMenu();
140
+ this.menu.toggleMenu();
151
141
  }
152
- }
153
- onpointerenter(_) {
142
+ };
143
+ onpointerenter = () => {
154
144
  const isMenubarOpen = Boolean(this.root.opts.value.current);
155
145
  if (isMenubarOpen && !this.menu.open) {
156
146
  this.menu.openMenu();
157
147
  this.menu.getTriggerNode()?.focus();
158
148
  }
159
- }
160
- onkeydown(e) {
149
+ };
150
+ onkeydown = (e) => {
161
151
  if (this.opts.disabled.current)
162
152
  return;
163
153
  if (e.key === kbd.TAB)
@@ -175,20 +165,20 @@ class MenubarTriggerState {
175
165
  e.preventDefault();
176
166
  }
177
167
  this.root.rovingFocusGroup.handleKeydown(this.menu.getTriggerNode(), e);
178
- }
179
- onfocus(_) {
168
+ };
169
+ onfocus = () => {
180
170
  this.isFocused = true;
181
- }
182
- onblur(_) {
171
+ };
172
+ onblur = () => {
183
173
  this.isFocused = false;
184
- }
174
+ };
185
175
  props = $derived.by(() => ({
186
176
  type: "button",
187
177
  role: "menuitem",
188
178
  id: this.opts.id.current,
189
179
  "aria-haspopup": "menu",
190
180
  "aria-expanded": getAriaExpanded(this.menu.open),
191
- "aria-controls": this.menu.open ? this.menu.contentNode?.id : undefined,
181
+ "aria-controls": this.menu.open ? this.menu.contentId : undefined,
192
182
  "data-highlighted": this.isFocused ? "" : undefined,
193
183
  "data-state": getDataOpenClosed(this.menu.open),
194
184
  "data-disabled": getDataDisabled(this.opts.disabled.current),
@@ -201,6 +191,7 @@ class MenubarTriggerState {
201
191
  onkeydown: this.onkeydown,
202
192
  onfocus: this.onfocus,
203
193
  onblur: this.onblur,
194
+ ...attachRef(this.opts.ref, (v) => (this.menu.triggerNode = v)),
204
195
  }));
205
196
  }
206
197
  class MenubarContentState {
@@ -213,14 +204,6 @@ class MenubarContentState {
213
204
  this.menu = menu;
214
205
  this.root = menu.root;
215
206
  this.focusScopeContext = FocusScopeContext.get();
216
- this.onkeydown = this.onkeydown.bind(this);
217
- useRefById({
218
- ...opts,
219
- onRefChange: (node) => {
220
- this.menu.contentNode = node;
221
- },
222
- deps: () => this.menu.open,
223
- });
224
207
  }
225
208
  onCloseAutoFocus = (e) => {
226
209
  this.opts.onCloseAutoFocus.current(e);
@@ -245,7 +228,7 @@ class MenubarContentState {
245
228
  return;
246
229
  afterTick(() => this.opts.ref.current?.focus());
247
230
  };
248
- onkeydown(e) {
231
+ onkeydown = (e) => {
249
232
  if (e.key !== kbd.ARROW_LEFT && e.key !== kbd.ARROW_RIGHT)
250
233
  return;
251
234
  const target = e.target;
@@ -275,10 +258,10 @@ class MenubarContentState {
275
258
  const [nextValue] = candidates;
276
259
  if (nextValue)
277
260
  this.menu.root.onMenuOpen(nextValue.value, nextValue.triggerId);
278
- }
261
+ };
279
262
  props = $derived.by(() => ({
280
263
  id: this.opts.id.current,
281
- "aria-labelledby": this.menu.triggerNode?.id,
264
+ "aria-labelledby": this.menu.triggerId,
282
265
  style: {
283
266
  "--bits-menubar-content-transform-origin": "var(--bits-floating-transform-origin)",
284
267
  "--bits-menubar-content-available-width": "var(--bits-floating-available-width)",
@@ -288,6 +271,7 @@ class MenubarContentState {
288
271
  },
289
272
  onkeydown: this.onkeydown,
290
273
  "data-menu-content": "",
274
+ ...attachRef(this.opts.ref, (v) => (this.menu.contentNode = v)),
291
275
  }));
292
276
  popperProps = {
293
277
  onCloseAutoFocus: this.onCloseAutoFocus,
@@ -2,7 +2,9 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MeterRootProps } from "../types.js";
4
4
  import { useMeterRootState } from "../meter.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
  }: MeterRootProps = $props();
@@ -1,10 +1,9 @@
1
- import { useRefById } from "svelte-toolbelt";
1
+ import { attachRef } from "svelte-toolbelt";
2
2
  const METER_ROOT_ATTR = "data-meter-root";
3
3
  class MeterRootState {
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: "meter",
@@ -16,6 +15,7 @@ class MeterRootState {
16
15
  "data-max": this.opts.max.current,
17
16
  "data-min": this.opts.min.current,
18
17
  [METER_ROOT_ATTR]: "",
18
+ ...attachRef(this.opts.ref),
19
19
  }));
20
20
  }
21
21
  export function useMeterRootState(props) {
@@ -8,13 +8,15 @@
8
8
  useNavigationMenuContentImpl,
9
9
  } from "../navigation-menu.svelte.js";
10
10
  import { noop } from "../../../internal/noop.js";
11
- import { useId } from "../../../internal/use-id.js";
11
+ import { createId } from "../../../internal/create-id.js";
12
12
  import DismissibleLayer from "../../utilities/dismissible-layer/dismissible-layer.svelte";
13
13
  import EscapeLayer from "../../utilities/escape-layer/escape-layer.svelte";
14
14
 
15
+ const uid = $props.id();
16
+
15
17
  let {
16
18
  ref = $bindable(null),
17
- id = useId(),
19
+ id = createId(uid),
18
20
  child: childProp,
19
21
  children: childrenProp,
20
22
  onInteractOutside = noop,
@@ -54,6 +56,7 @@
54
56
 
55
57
  <DismissibleLayer
56
58
  {id}
59
+ ref={contentImplState.opts.ref}
57
60
  enabled={true}
58
61
  onInteractOutside={(e) => {
59
62
  onInteractOutside(e);
@@ -2,15 +2,17 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import { useNavigationMenuContent } from "../navigation-menu.svelte.js";
4
4
  import NavigationMenuContentImpl from "./navigation-menu-content-impl.svelte";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
6
  import type { NavigationMenuContentProps } from "../../../types.js";
7
7
  import Portal from "../../utilities/portal/portal.svelte";
8
8
  import PresenceLayer from "../../utilities/presence-layer/presence-layer.svelte";
9
9
  import Mounted from "../../utilities/mounted.svelte";
10
10
 
11
+ const uid = $props.id();
12
+
11
13
  let {
12
14
  ref = $bindable(null),
13
- id = useId(),
15
+ id = createId(uid),
14
16
  children,
15
17
  child,
16
18
  forceMount = false,
@@ -32,7 +34,10 @@
32
34
  to={contentState.context.viewportRef.current || undefined}
33
35
  disabled={!contentState.context.viewportRef.current}
34
36
  >
35
- <PresenceLayer {id} present={forceMount || contentState.open || contentState.isLastActiveValue}>
37
+ <PresenceLayer
38
+ present={forceMount || contentState.open || contentState.isLastActiveValue}
39
+ ref={contentState.opts.ref}
40
+ >
36
41
  {#snippet presence()}
37
42
  <NavigationMenuContentImpl {...mergedProps} {children} {child} />
38
43
  <Mounted bind:mounted={contentState.mounted} />
@@ -2,10 +2,12 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { NavigationMenuIndicatorProps } from "../types.js";
4
4
  import { useNavigationMenuIndicatorImpl } from "../navigation-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
- id = useId(),
10
+ id = createId(uid),
9
11
  ref = $bindable(null),
10
12
  children,
11
13
  child,
@@ -1,14 +1,16 @@
1
1
  <script lang="ts">
2
- import { mergeProps } from "svelte-toolbelt";
2
+ import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { NavigationMenuIndicatorProps } from "../types.js";
4
4
  import { useNavigationMenuIndicator } from "../navigation-menu.svelte.js";
5
5
  import NavigationMenuIndicatorImpl from "./navigation-menu-indicator-impl.svelte";
6
- import { useId } from "../../../internal/use-id.js";
6
+ import { createId } from "../../../internal/create-id.js";
7
7
  import PresenceLayer from "../../utilities/presence-layer/presence-layer.svelte";
8
8
  import Portal from "../../utilities/portal/portal.svelte";
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
  children,
14
16
  child,
@@ -22,7 +24,7 @@
22
24
 
23
25
  {#if indicatorState.context.indicatorTrackRef.current}
24
26
  <Portal to={indicatorState.context.indicatorTrackRef.current}>
25
- <PresenceLayer {id} present={forceMount || indicatorState.isVisible}>
27
+ <PresenceLayer present={forceMount || indicatorState.isVisible} ref={box.with(() => ref)}>
26
28
  {#snippet presence()}
27
29
  <NavigationMenuIndicatorImpl {...mergedProps} {children} {child} {id} bind:ref />
28
30
  {/snippet}
@@ -2,11 +2,14 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { NavigationMenuItemProps } from "../types.js";
4
4
  import { useNavigationMenuItem } from "../navigation-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();
8
+ const defaultId = createId(uid);
6
9
 
7
10
  let {
8
- id = useId(),
9
- value = useId(),
11
+ id = defaultId,
12
+ value = defaultId,
10
13
  ref = $bindable(null),
11
14
  child,
12
15
  children,
@@ -2,11 +2,13 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { NavigationMenuLinkProps } from "../types.js";
4
4
  import { useNavigationMenuLink } 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
- id = useId(),
11
+ id = createId(uid),
10
12
  ref = $bindable(null),
11
13
  child,
12
14
  children,
@@ -2,11 +2,13 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { NavigationMenuListProps } from "../types.js";
4
4
  import { useNavigationMenuList } from "../navigation-menu.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
6
  import Mounted from "../../utilities/mounted.svelte";
7
7
 
8
+ const uid = $props.id();
9
+
8
10
  let {
9
- id = useId(),
11
+ id = createId(uid),
10
12
  children,
11
13
  child,
12
14
  ref = $bindable(null),
@@ -2,13 +2,15 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { NavigationMenuSubProps } from "../types.js";
4
4
  import { useNavigationMenuSub } 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,12 +2,14 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { NavigationMenuTriggerProps } from "../types.js";
4
4
  import { useNavigationMenuTrigger } from "../navigation-menu.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
6
  import VisuallyHidden from "../../utilities/visually-hidden/visually-hidden.svelte";
7
7
  import Mounted from "../../utilities/mounted.svelte";
8
8
 
9
+ const uid = $props.id();
10
+
9
11
  let {
10
- id = useId(),
12
+ id = createId(uid),
11
13
  disabled = false,
12
14
  children,
13
15
  child,
@@ -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 { type AnyFn, type ReadableBox, type ReadableBoxedValues, type WithRefProps, type WritableBox, type WritableBoxedValues } from "svelte-toolbelt";
5
+ import { type AnyFn, type ReadableBox, type ReadableBoxedValues, type WithRefProps, type WritableBox, type WritableBoxedValues, DOMContext } from "svelte-toolbelt";
6
6
  import { Context } from "runed";
7
7
  import { type Snippet } from "svelte";
8
8
  import { SvelteMap } from "svelte/reactivity";
@@ -125,6 +125,7 @@ export declare class NavigationMenuItemState {
125
125
  props: Record<string, unknown>;
126
126
  }]> | undefined>;
127
127
  contentProps: ReadableBox<Record<string, unknown>>;
128
+ domContext: DOMContext;
128
129
  constructor(opts: NavigationMenuItemStateProps, listContext: NavigationMenuListState);
129
130
  onEntryKeydown: (side?: "start" | "end") => void;
130
131
  onFocusProxyEnter: (side?: "start" | "end") => void;
@@ -294,6 +295,7 @@ declare class NavigationMenuContentImplState {
294
295
  listContext: NavigationMenuListState;
295
296
  prevMotionAttribute: MotionAttribute | null;
296
297
  motionAttribute: MotionAttribute | null;
298
+ domContext: DOMContext;
297
299
  constructor(opts: NavigationMenuContentImplStateProps, itemContext: NavigationMenuItemState);
298
300
  onFocusOutside: (e: Event) => void;
299
301
  onInteractOutside: (e: PointerEvent) => void;