bits-ui 2.6.2 → 2.8.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 (367) hide show
  1. package/README.md +4 -4
  2. package/dist/bits/accordion/accordion.svelte.d.ts +66 -58
  3. package/dist/bits/accordion/accordion.svelte.js +56 -51
  4. package/dist/bits/accordion/components/accordion-content.svelte +4 -4
  5. package/dist/bits/accordion/components/accordion-header.svelte +2 -2
  6. package/dist/bits/accordion/components/accordion-item.svelte +2 -2
  7. package/dist/bits/accordion/components/accordion-trigger.svelte +2 -2
  8. package/dist/bits/accordion/components/accordion.svelte +2 -2
  9. package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +2 -2
  10. package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +2 -2
  11. package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +3 -3
  12. package/dist/bits/alert-dialog/components/alert-dialog.svelte +9 -3
  13. package/dist/bits/aspect-ratio/aspect-ratio.svelte.d.ts +10 -16
  14. package/dist/bits/aspect-ratio/aspect-ratio.svelte.js +4 -11
  15. package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +2 -2
  16. package/dist/bits/avatar/avatar.svelte.d.ts +25 -33
  17. package/dist/bits/avatar/avatar.svelte.js +20 -21
  18. package/dist/bits/avatar/components/avatar-fallback.svelte +2 -2
  19. package/dist/bits/avatar/components/avatar-image.svelte +2 -2
  20. package/dist/bits/avatar/components/avatar.svelte +2 -2
  21. package/dist/bits/calendar/calendar.svelte.d.ts +117 -106
  22. package/dist/bits/calendar/calendar.svelte.js +51 -52
  23. package/dist/bits/calendar/components/calendar-cell.svelte +2 -2
  24. package/dist/bits/calendar/components/calendar-day.svelte +2 -2
  25. package/dist/bits/calendar/components/calendar-grid-body.svelte +2 -2
  26. package/dist/bits/calendar/components/calendar-grid-head.svelte +2 -2
  27. package/dist/bits/calendar/components/calendar-grid-row.svelte +2 -2
  28. package/dist/bits/calendar/components/calendar-grid.svelte +2 -2
  29. package/dist/bits/calendar/components/calendar-head-cell.svelte +2 -2
  30. package/dist/bits/calendar/components/calendar-header.svelte +2 -2
  31. package/dist/bits/calendar/components/calendar-heading.svelte +5 -5
  32. package/dist/bits/calendar/components/calendar-month-select.svelte +2 -2
  33. package/dist/bits/calendar/components/calendar-next-button.svelte +2 -2
  34. package/dist/bits/calendar/components/calendar-prev-button.svelte +2 -2
  35. package/dist/bits/calendar/components/calendar-year-select.svelte +2 -2
  36. package/dist/bits/calendar/components/calendar.svelte +2 -2
  37. package/dist/bits/checkbox/checkbox.svelte.d.ts +37 -34
  38. package/dist/bits/checkbox/checkbox.svelte.js +19 -22
  39. package/dist/bits/checkbox/components/checkbox-group-label.svelte +2 -2
  40. package/dist/bits/checkbox/components/checkbox-group.svelte +2 -2
  41. package/dist/bits/checkbox/components/checkbox-input.svelte +2 -2
  42. package/dist/bits/checkbox/components/checkbox.svelte +2 -2
  43. package/dist/bits/collapsible/collapsible.svelte.d.ts +30 -27
  44. package/dist/bits/collapsible/collapsible.svelte.js +23 -15
  45. package/dist/bits/collapsible/components/collapsible-content.svelte +5 -5
  46. package/dist/bits/collapsible/components/collapsible-content.svelte.d.ts +1 -4
  47. package/dist/bits/collapsible/components/collapsible-trigger.svelte +2 -2
  48. package/dist/bits/collapsible/components/collapsible.svelte +4 -2
  49. package/dist/bits/collapsible/types.d.ts +4 -0
  50. package/dist/bits/combobox/components/combobox-input.svelte +2 -2
  51. package/dist/bits/combobox/components/combobox-trigger.svelte +2 -2
  52. package/dist/bits/combobox/components/combobox.svelte +4 -2
  53. package/dist/bits/command/command.svelte.d.ts +103 -92
  54. package/dist/bits/command/command.svelte.js +55 -57
  55. package/dist/bits/command/components/_command-label.svelte +2 -2
  56. package/dist/bits/command/components/command-empty.svelte +2 -2
  57. package/dist/bits/command/components/command-group-heading.svelte +2 -2
  58. package/dist/bits/command/components/command-group-items.svelte +2 -2
  59. package/dist/bits/command/components/command-group.svelte +2 -2
  60. package/dist/bits/command/components/command-input.svelte +2 -2
  61. package/dist/bits/command/components/command-item.svelte +2 -2
  62. package/dist/bits/command/components/command-link-item.svelte +2 -2
  63. package/dist/bits/command/components/command-list.svelte +2 -2
  64. package/dist/bits/command/components/command-loading.svelte +2 -2
  65. package/dist/bits/command/components/command-separator.svelte +2 -2
  66. package/dist/bits/command/components/command-viewport.svelte +2 -2
  67. package/dist/bits/command/components/command.svelte +2 -2
  68. package/dist/bits/context-menu/components/context-menu-content-static.svelte +3 -3
  69. package/dist/bits/context-menu/components/context-menu-content.svelte +3 -3
  70. package/dist/bits/context-menu/components/context-menu-trigger.svelte +2 -2
  71. package/dist/bits/context-menu/components/context-menu.svelte +16 -11
  72. package/dist/bits/date-field/components/date-field-hidden-input.svelte +2 -2
  73. package/dist/bits/date-field/components/date-field-input.svelte +2 -2
  74. package/dist/bits/date-field/components/date-field-label.svelte +2 -2
  75. package/dist/bits/date-field/components/date-field-segment.svelte +2 -2
  76. package/dist/bits/date-field/components/date-field.svelte +2 -2
  77. package/dist/bits/date-field/date-field.svelte.d.ts +85 -74
  78. package/dist/bits/date-field/date-field.svelte.js +55 -53
  79. package/dist/bits/date-picker/components/date-picker-calendar.svelte +2 -2
  80. package/dist/bits/date-picker/components/date-picker.svelte +8 -6
  81. package/dist/bits/date-picker/date-picker.svelte.d.ts +10 -10
  82. package/dist/bits/date-picker/date-picker.svelte.js +6 -5
  83. package/dist/bits/date-picker/types.d.ts +4 -0
  84. package/dist/bits/date-range-field/components/date-range-field-input.svelte +2 -2
  85. package/dist/bits/date-range-field/components/date-range-field-label.svelte +2 -2
  86. package/dist/bits/date-range-field/components/date-range-field.svelte +2 -2
  87. package/dist/bits/date-range-field/date-range-field.svelte.d.ts +32 -29
  88. package/dist/bits/date-range-field/date-range-field.svelte.js +33 -32
  89. package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +2 -2
  90. package/dist/bits/date-range-picker/components/date-range-picker.svelte +8 -6
  91. package/dist/bits/date-range-picker/date-range-picker.svelte.d.ts +10 -10
  92. package/dist/bits/date-range-picker/date-range-picker.svelte.js +6 -5
  93. package/dist/bits/date-range-picker/types.d.ts +4 -0
  94. package/dist/bits/dialog/components/dialog-close.svelte +2 -2
  95. package/dist/bits/dialog/components/dialog-content.svelte +3 -3
  96. package/dist/bits/dialog/components/dialog-description.svelte +2 -2
  97. package/dist/bits/dialog/components/dialog-overlay.svelte +3 -6
  98. package/dist/bits/dialog/components/dialog-title.svelte +2 -2
  99. package/dist/bits/dialog/components/dialog-trigger.svelte +2 -2
  100. package/dist/bits/dialog/components/dialog.svelte +9 -3
  101. package/dist/bits/dialog/dialog.svelte.d.ts +75 -65
  102. package/dist/bits/dialog/dialog.svelte.js +47 -38
  103. package/dist/bits/dialog/types.d.ts +4 -0
  104. package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +3 -3
  105. package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +3 -3
  106. package/dist/bits/label/components/label.svelte +2 -2
  107. package/dist/bits/label/label.svelte.d.ts +8 -7
  108. package/dist/bits/label/label.svelte.js +4 -4
  109. package/dist/bits/link-preview/components/link-preview-content-static.svelte +3 -3
  110. package/dist/bits/link-preview/components/link-preview-content.svelte +3 -3
  111. package/dist/bits/link-preview/components/link-preview-trigger.svelte +2 -2
  112. package/dist/bits/link-preview/components/link-preview.svelte +4 -2
  113. package/dist/bits/link-preview/link-preview.svelte.d.ts +28 -25
  114. package/dist/bits/link-preview/link-preview.svelte.js +24 -16
  115. package/dist/bits/link-preview/types.d.ts +4 -0
  116. package/dist/bits/menu/components/menu-arrow.svelte +2 -2
  117. package/dist/bits/menu/components/menu-checkbox-group.svelte +2 -2
  118. package/dist/bits/menu/components/menu-checkbox-item.svelte +2 -2
  119. package/dist/bits/menu/components/menu-content-static.svelte +3 -3
  120. package/dist/bits/menu/components/menu-content.svelte +3 -3
  121. package/dist/bits/menu/components/menu-group-heading.svelte +2 -2
  122. package/dist/bits/menu/components/menu-group.svelte +2 -2
  123. package/dist/bits/menu/components/menu-item.svelte +2 -2
  124. package/dist/bits/menu/components/menu-radio-group.svelte +2 -2
  125. package/dist/bits/menu/components/menu-radio-item.svelte +2 -2
  126. package/dist/bits/menu/components/menu-separator.svelte +2 -2
  127. package/dist/bits/menu/components/menu-sub-content-static.svelte +3 -3
  128. package/dist/bits/menu/components/menu-sub-content.svelte +3 -3
  129. package/dist/bits/menu/components/menu-sub-trigger.svelte +2 -2
  130. package/dist/bits/menu/components/menu-sub.svelte +9 -3
  131. package/dist/bits/menu/components/menu-trigger.svelte +2 -2
  132. package/dist/bits/menu/components/menu.svelte +16 -11
  133. package/dist/bits/menu/menu.svelte.d.ts +136 -119
  134. package/dist/bits/menu/menu.svelte.js +106 -96
  135. package/dist/bits/menu/types.d.ts +8 -0
  136. package/dist/bits/menubar/components/menubar-content-static.svelte +2 -2
  137. package/dist/bits/menubar/components/menubar-content.svelte +2 -2
  138. package/dist/bits/menubar/components/menubar-menu.svelte +2 -2
  139. package/dist/bits/menubar/components/menubar-trigger.svelte +4 -4
  140. package/dist/bits/menubar/components/menubar.svelte +2 -2
  141. package/dist/bits/menubar/menubar.svelte.d.ts +37 -34
  142. package/dist/bits/menubar/menubar.svelte.js +21 -21
  143. package/dist/bits/meter/components/meter.svelte +2 -2
  144. package/dist/bits/meter/meter.svelte.d.ts +10 -9
  145. package/dist/bits/meter/meter.svelte.js +4 -4
  146. package/dist/bits/navigation-menu/components/navigation-menu-content-impl.svelte +2 -2
  147. package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +3 -3
  148. package/dist/bits/navigation-menu/components/navigation-menu-indicator-impl.svelte +2 -2
  149. package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +3 -3
  150. package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +2 -2
  151. package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +2 -2
  152. package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +2 -2
  153. package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +2 -2
  154. package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +2 -2
  155. package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +3 -3
  156. package/dist/bits/navigation-menu/components/navigation-menu.svelte +2 -2
  157. package/dist/bits/navigation-menu/navigation-menu.svelte.d.ts +116 -109
  158. package/dist/bits/navigation-menu/navigation-menu.svelte.js +78 -81
  159. package/dist/bits/pagination/components/pagination-next-button.svelte +2 -2
  160. package/dist/bits/pagination/components/pagination-page.svelte +2 -2
  161. package/dist/bits/pagination/components/pagination-prev-button.svelte +2 -2
  162. package/dist/bits/pagination/components/pagination.svelte +2 -2
  163. package/dist/bits/pagination/pagination.svelte.d.ts +34 -32
  164. package/dist/bits/pagination/pagination.svelte.js +15 -15
  165. package/dist/bits/pin-input/components/pin-input-cell.svelte +2 -2
  166. package/dist/bits/pin-input/components/pin-input.svelte +2 -2
  167. package/dist/bits/pin-input/pin-input.svelte.d.ts +22 -21
  168. package/dist/bits/pin-input/pin-input.svelte.js +9 -9
  169. package/dist/bits/popover/components/popover-close.svelte +2 -2
  170. package/dist/bits/popover/components/popover-content-static.svelte +3 -3
  171. package/dist/bits/popover/components/popover-content.svelte +3 -3
  172. package/dist/bits/popover/components/popover-trigger.svelte +2 -2
  173. package/dist/bits/popover/components/popover.svelte +9 -3
  174. package/dist/bits/popover/popover.svelte.d.ts +36 -31
  175. package/dist/bits/popover/popover.svelte.js +26 -21
  176. package/dist/bits/popover/types.d.ts +4 -0
  177. package/dist/bits/progress/components/progress.svelte +2 -2
  178. package/dist/bits/progress/progress.svelte.d.ts +10 -9
  179. package/dist/bits/progress/progress.svelte.js +4 -4
  180. package/dist/bits/radio-group/components/radio-group-input.svelte +2 -2
  181. package/dist/bits/radio-group/components/radio-group-item.svelte +2 -2
  182. package/dist/bits/radio-group/components/radio-group.svelte +4 -2
  183. package/dist/bits/radio-group/radio-group.svelte.d.ts +26 -19
  184. package/dist/bits/radio-group/radio-group.svelte.js +26 -19
  185. package/dist/bits/radio-group/types.d.ts +13 -6
  186. package/dist/bits/range-calendar/components/range-calendar-cell.svelte +2 -2
  187. package/dist/bits/range-calendar/components/range-calendar-day.svelte +2 -2
  188. package/dist/bits/range-calendar/components/range-calendar.svelte +2 -2
  189. package/dist/bits/range-calendar/range-calendar.svelte.d.ts +21 -20
  190. package/dist/bits/range-calendar/range-calendar.svelte.js +12 -12
  191. package/dist/bits/rating-group/components/rating-group-input.svelte +2 -2
  192. package/dist/bits/rating-group/components/rating-group-item.svelte +2 -2
  193. package/dist/bits/rating-group/components/rating-group.svelte +2 -2
  194. package/dist/bits/rating-group/rating-group.svelte.d.ts +19 -18
  195. package/dist/bits/rating-group/rating-group.svelte.js +16 -17
  196. package/dist/bits/scroll-area/components/scroll-area-corner-impl.svelte +2 -2
  197. package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +3 -3
  198. package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +6 -6
  199. package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +3 -3
  200. package/dist/bits/scroll-area/components/scroll-area-scrollbar-shared.svelte +2 -2
  201. package/dist/bits/scroll-area/components/scroll-area-scrollbar-visible.svelte +2 -2
  202. package/dist/bits/scroll-area/components/scroll-area-scrollbar-x.svelte +2 -2
  203. package/dist/bits/scroll-area/components/scroll-area-scrollbar-y.svelte +2 -2
  204. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +2 -2
  205. package/dist/bits/scroll-area/components/scroll-area-thumb-impl.svelte +2 -2
  206. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +2 -5
  207. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +2 -2
  208. package/dist/bits/scroll-area/components/scroll-area.svelte +2 -2
  209. package/dist/bits/scroll-area/scroll-area.svelte.d.ts +98 -78
  210. package/dist/bits/scroll-area/scroll-area.svelte.js +78 -74
  211. package/dist/bits/select/components/select-content-static.svelte +3 -3
  212. package/dist/bits/select/components/select-content.svelte +3 -3
  213. package/dist/bits/select/components/select-group-heading.svelte +2 -2
  214. package/dist/bits/select/components/select-group.svelte +2 -2
  215. package/dist/bits/select/components/select-hidden-input.svelte +2 -2
  216. package/dist/bits/select/components/select-item.svelte +2 -2
  217. package/dist/bits/select/components/select-scroll-down-button.svelte +2 -2
  218. package/dist/bits/select/components/select-scroll-up-button.svelte +2 -2
  219. package/dist/bits/select/components/select-trigger.svelte +2 -2
  220. package/dist/bits/select/components/select-viewport.svelte +2 -2
  221. package/dist/bits/select/components/select.svelte +4 -2
  222. package/dist/bits/select/select.svelte.d.ts +127 -113
  223. package/dist/bits/select/select.svelte.js +74 -62
  224. package/dist/bits/select/types.d.ts +4 -0
  225. package/dist/bits/separator/components/separator.svelte +2 -2
  226. package/dist/bits/separator/separator.svelte.d.ts +9 -8
  227. package/dist/bits/separator/separator.svelte.js +4 -4
  228. package/dist/bits/slider/components/slider-range.svelte +2 -2
  229. package/dist/bits/slider/components/slider-thumb-label.svelte +2 -2
  230. package/dist/bits/slider/components/slider-thumb.svelte +2 -2
  231. package/dist/bits/slider/components/slider-tick-label.svelte +2 -2
  232. package/dist/bits/slider/components/slider-tick.svelte +2 -2
  233. package/dist/bits/slider/components/slider.svelte +2 -2
  234. package/dist/bits/slider/slider.svelte.d.ts +82 -73
  235. package/dist/bits/slider/slider.svelte.js +30 -28
  236. package/dist/bits/switch/components/switch-input.svelte +2 -2
  237. package/dist/bits/switch/components/switch-thumb.svelte +2 -2
  238. package/dist/bits/switch/components/switch.svelte +2 -2
  239. package/dist/bits/switch/switch.svelte.d.ts +19 -17
  240. package/dist/bits/switch/switch.svelte.js +13 -13
  241. package/dist/bits/tabs/components/tabs-content.svelte +2 -2
  242. package/dist/bits/tabs/components/tabs-list.svelte +2 -2
  243. package/dist/bits/tabs/components/tabs-trigger.svelte +2 -2
  244. package/dist/bits/tabs/components/tabs.svelte +2 -2
  245. package/dist/bits/tabs/tabs.svelte.d.ts +33 -29
  246. package/dist/bits/tabs/tabs.svelte.js +19 -19
  247. package/dist/bits/time-field/components/time-field-hidden-input.svelte +2 -2
  248. package/dist/bits/time-field/components/time-field-input.svelte +2 -2
  249. package/dist/bits/time-field/components/time-field-label.svelte +2 -2
  250. package/dist/bits/time-field/components/time-field-segment.svelte +2 -2
  251. package/dist/bits/time-field/components/time-field.svelte +2 -2
  252. package/dist/bits/time-field/time-field.svelte.d.ts +72 -66
  253. package/dist/bits/time-field/time-field.svelte.js +37 -42
  254. package/dist/bits/time-range-field/components/time-range-field-input.svelte +2 -2
  255. package/dist/bits/time-range-field/components/time-range-field-label.svelte +2 -2
  256. package/dist/bits/time-range-field/components/time-range-field.svelte +2 -2
  257. package/dist/bits/time-range-field/time-range-field.svelte.d.ts +35 -31
  258. package/dist/bits/time-range-field/time-range-field.svelte.js +34 -32
  259. package/dist/bits/toggle/components/toggle.svelte +2 -2
  260. package/dist/bits/toggle/toggle.svelte.d.ts +11 -10
  261. package/dist/bits/toggle/toggle.svelte.js +4 -4
  262. package/dist/bits/toggle-group/components/toggle-group-item.svelte +2 -2
  263. package/dist/bits/toggle-group/components/toggle-group.svelte +2 -2
  264. package/dist/bits/toggle-group/toggle-group.svelte.d.ts +48 -43
  265. package/dist/bits/toggle-group/toggle-group.svelte.js +24 -25
  266. package/dist/bits/toolbar/components/toolbar-button.svelte +2 -2
  267. package/dist/bits/toolbar/components/toolbar-group-item.svelte +2 -2
  268. package/dist/bits/toolbar/components/toolbar-group.svelte +2 -2
  269. package/dist/bits/toolbar/components/toolbar-link.svelte +2 -2
  270. package/dist/bits/toolbar/components/toolbar.svelte +2 -2
  271. package/dist/bits/toolbar/toolbar.svelte.d.ts +59 -51
  272. package/dist/bits/toolbar/toolbar.svelte.js +32 -30
  273. package/dist/bits/tooltip/components/tooltip-content-static.svelte +3 -3
  274. package/dist/bits/tooltip/components/tooltip-content.svelte +3 -3
  275. package/dist/bits/tooltip/components/tooltip-provider.svelte +2 -2
  276. package/dist/bits/tooltip/components/tooltip-trigger.svelte +2 -2
  277. package/dist/bits/tooltip/components/tooltip.svelte +4 -2
  278. package/dist/bits/tooltip/tooltip.svelte.d.ts +33 -29
  279. package/dist/bits/tooltip/tooltip.svelte.js +33 -28
  280. package/dist/bits/tooltip/types.d.ts +4 -0
  281. package/dist/bits/utilities/config/bits-config.d.ts +1 -1
  282. package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -2
  283. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +6 -7
  284. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +3 -3
  285. package/dist/bits/utilities/escape-layer/escape-layer.svelte +2 -2
  286. package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.d.ts +6 -7
  287. package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.js +3 -3
  288. package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -2
  289. package/dist/bits/utilities/floating-layer/components/floating-layer-arrow.svelte +2 -2
  290. package/dist/bits/utilities/floating-layer/components/floating-layer-content.svelte +2 -2
  291. package/dist/bits/utilities/floating-layer/components/floating-layer.svelte +2 -2
  292. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +25 -23
  293. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +25 -25
  294. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +1 -1
  295. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +1 -1
  296. package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte +1 -1
  297. package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte.d.ts +1 -1
  298. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +1 -1
  299. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte.d.ts +1 -1
  300. package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -3
  301. package/dist/bits/utilities/presence-layer/presence-layer.svelte +8 -8
  302. package/dist/bits/utilities/presence-layer/presence.svelte.d.ts +42 -0
  303. package/dist/bits/utilities/presence-layer/presence.svelte.js +116 -0
  304. package/dist/bits/utilities/presence-layer/types.d.ts +3 -5
  305. package/dist/bits/utilities/scroll-lock/scroll-lock.svelte +2 -2
  306. package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -2
  307. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +7 -7
  308. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +3 -3
  309. package/dist/internal/animations-complete.d.ts +12 -0
  310. package/dist/internal/animations-complete.js +55 -0
  311. package/dist/internal/arrays.js +20 -36
  312. package/dist/internal/attrs.d.ts +9 -2
  313. package/dist/internal/attrs.js +21 -11
  314. package/dist/internal/body-scroll-lock.svelte.d.ts +10 -0
  315. package/dist/internal/body-scroll-lock.svelte.js +106 -0
  316. package/dist/internal/data-typeahead.svelte.d.ts +15 -0
  317. package/dist/internal/data-typeahead.svelte.js +33 -0
  318. package/dist/internal/date-time/calendar-helpers.svelte.d.ts +1 -1
  319. package/dist/internal/dom-typeahead.svelte.d.ts +14 -0
  320. package/dist/internal/dom-typeahead.svelte.js +44 -0
  321. package/dist/internal/dom.d.ts +0 -2
  322. package/dist/internal/dom.js +0 -15
  323. package/dist/internal/{use-grace-area.svelte.d.ts → grace-area.svelte.d.ts} +5 -4
  324. package/dist/internal/{use-grace-area.svelte.js → grace-area.svelte.js} +60 -56
  325. package/dist/internal/open-change-complete.d.ts +13 -0
  326. package/dist/internal/open-change-complete.js +24 -0
  327. package/dist/internal/{use-roving-focus.svelte.d.ts → roving-focus-group.d.ts} +9 -8
  328. package/dist/internal/{use-roving-focus.svelte.js → roving-focus-group.js} +30 -34
  329. package/dist/internal/shared-state.svelte.d.ts +6 -0
  330. package/dist/internal/shared-state.svelte.js +31 -0
  331. package/dist/internal/should-trap-focus.js +1 -2
  332. package/dist/internal/state-machine.d.ts +16 -0
  333. package/dist/internal/state-machine.js +18 -0
  334. package/dist/internal/svelte-resize-observer.svelte.d.ts +6 -0
  335. package/dist/internal/svelte-resize-observer.svelte.js +25 -0
  336. package/dist/internal/tabbable.d.ts +0 -1
  337. package/dist/internal/tabbable.js +0 -11
  338. package/dist/internal/timeout-fn.d.ts +16 -0
  339. package/dist/internal/timeout-fn.js +38 -0
  340. package/dist/internal/types.d.ts +2 -2
  341. package/package.json +1 -1
  342. package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +0 -4
  343. package/dist/bits/utilities/presence-layer/use-presence.svelte.js +0 -97
  344. package/dist/internal/box.svelte.d.ts +0 -21
  345. package/dist/internal/box.svelte.js +0 -26
  346. package/dist/internal/create-event-hook.svelte.d.ts +0 -18
  347. package/dist/internal/create-event-hook.svelte.js +0 -29
  348. package/dist/internal/create-shared-hook.svelte.d.ts +0 -2
  349. package/dist/internal/create-shared-hook.svelte.js +0 -27
  350. package/dist/internal/sleep.d.ts +0 -1
  351. package/dist/internal/sleep.js +0 -3
  352. package/dist/internal/use-after-animations.svelte.d.ts +0 -5
  353. package/dist/internal/use-after-animations.svelte.js +0 -27
  354. package/dist/internal/use-body-scroll-lock.svelte.d.ts +0 -6
  355. package/dist/internal/use-body-scroll-lock.svelte.js +0 -106
  356. package/dist/internal/use-data-typeahead.svelte.d.ts +0 -15
  357. package/dist/internal/use-data-typeahead.svelte.js +0 -34
  358. package/dist/internal/use-dom-typeahead.svelte.d.ts +0 -13
  359. package/dist/internal/use-dom-typeahead.svelte.js +0 -32
  360. package/dist/internal/use-form-control.svelte.d.ts +0 -4
  361. package/dist/internal/use-form-control.svelte.js +0 -16
  362. package/dist/internal/use-resize-observer.svelte.d.ts +0 -2
  363. package/dist/internal/use-resize-observer.svelte.js +0 -17
  364. package/dist/internal/use-state-machine.svelte.d.ts +0 -24
  365. package/dist/internal/use-state-machine.svelte.js +0 -28
  366. package/dist/internal/use-timeout-fn.svelte.d.ts +0 -25
  367. package/dist/internal/use-timeout-fn.svelte.js +0 -39
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { TimeRangeFieldInputProps } from "../types.js";
4
- import { useTimeRangeFieldInput } from "../time-range-field.svelte.js";
4
+ import { TimeRangeFieldInputState } from "../time-range-field.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import TimeFieldHiddenInput from "../../time-field/components/time-field-hidden-input.svelte";
7
7
 
@@ -17,7 +17,7 @@
17
17
  ...restProps
18
18
  }: TimeRangeFieldInputProps = $props();
19
19
 
20
- const inputState = useTimeRangeFieldInput(
20
+ const inputState = TimeRangeFieldInputState.create(
21
21
  {
22
22
  id: box.with(() => id),
23
23
  ref: box.with(
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
- import { useTimeRangeFieldLabel } from "../time-range-field.svelte.js";
3
+ import { TimeRangeFieldLabelState } from "../time-range-field.svelte.js";
4
4
  import type { TimeRangeFieldLabelProps } from "../types.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
 
@@ -14,7 +14,7 @@
14
14
  ...restProps
15
15
  }: TimeRangeFieldLabelProps = $props();
16
16
 
17
- const labelState = useTimeRangeFieldLabel({
17
+ const labelState = TimeRangeFieldLabelState.create({
18
18
  id: box.with(() => id),
19
19
  ref: box.with(
20
20
  () => ref,
@@ -8,7 +8,7 @@
8
8
  <script lang="ts" generics="T extends TimeValue = Time">
9
9
  import { watch } from "runed";
10
10
  import { box, mergeProps } from "svelte-toolbelt";
11
- import { useTimeRangeFieldRoot } from "../time-range-field.svelte.js";
11
+ import { TimeRangeFieldRootState } from "../time-range-field.svelte.js";
12
12
  import type { TimeRangeFieldRootProps } from "../types.js";
13
13
  import { createId } from "../../../internal/create-id.js";
14
14
  import { noop } from "../../../internal/noop.js";
@@ -84,7 +84,7 @@
84
84
  }
85
85
  );
86
86
 
87
- const rootState = useTimeRangeFieldRoot({
87
+ const rootState = TimeRangeFieldRootState.create({
88
88
  id: box.with(() => id),
89
89
  ref: box.with(
90
90
  () => ref,
@@ -1,20 +1,20 @@
1
1
  import type { Time } from "@internationalized/date";
2
- import { DOMContext } from "svelte-toolbelt";
2
+ import { DOMContext, type ReadableBoxedValues, type WritableBoxedValues } from "svelte-toolbelt";
3
3
  import { Context } from "runed";
4
- import type { TimeFieldRootState } from "../time-field/time-field.svelte.js";
4
+ import { TimeFieldRootState } from "../time-field/time-field.svelte.js";
5
5
  import { TimeFieldInputState } from "../time-field/time-field.svelte.js";
6
- import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
7
6
  import type { TimeSegmentPart } from "../../shared/index.js";
8
- import type { WithRefProps } from "../../internal/types.js";
7
+ import type { WithRefOpts } from "../../internal/types.js";
9
8
  import type { TimeGranularity, TimeOnInvalid, TimeRange, TimeRangeValidator, TimeValue } from "../../shared/date/types.js";
10
9
  import { type TimeFormatter } from "../../internal/date-time/formatter.js";
11
- export declare const timeRangeFieldAttrs: import("../../internal/attrs.js").BitsAttrs<readonly ["root", "label"]>;
12
- type TimeRangeFieldRootStateProps<T extends TimeValue = Time> = WithRefProps<WritableBoxedValues<{
10
+ export declare const timeRangeFieldAttrs: import("../../internal/attrs.js").CreateBitsAttrsReturn<readonly ["root", "label"]>;
11
+ export declare const TimeRangeFieldRootContext: Context<TimeRangeFieldRootState<Time>>;
12
+ interface TimeRangeFieldRootStateOpts<T extends TimeValue = Time> extends WithRefOpts, WritableBoxedValues<{
13
13
  value: TimeRange<T>;
14
14
  placeholder: TimeValue;
15
15
  startValue: T | undefined;
16
16
  endValue: T | undefined;
17
- }> & ReadableBoxedValues<{
17
+ }>, ReadableBoxedValues<{
18
18
  readonlySegments: TimeSegmentPart[];
19
19
  validate: TimeRangeValidator<T> | undefined;
20
20
  onInvalid: TimeOnInvalid | undefined;
@@ -28,10 +28,12 @@ type TimeRangeFieldRootStateProps<T extends TimeValue = Time> = WithRefProps<Wri
28
28
  hideTimeZone: boolean;
29
29
  required: boolean;
30
30
  errorMessageId: string | undefined;
31
- }>>;
31
+ }> {
32
+ }
32
33
  export declare class TimeRangeFieldRootState<T extends TimeValue = Time> {
33
34
  #private;
34
- readonly opts: TimeRangeFieldRootStateProps<T>;
35
+ static create<T extends TimeValue = Time>(opts: TimeRangeFieldRootStateOpts<T>): TimeRangeFieldRootState<Time>;
36
+ readonly opts: TimeRangeFieldRootStateOpts<T>;
35
37
  startFieldState: TimeFieldRootState | undefined;
36
38
  endFieldState: TimeFieldRootState | undefined;
37
39
  descriptionId: string;
@@ -39,16 +41,16 @@ export declare class TimeRangeFieldRootState<T extends TimeValue = Time> {
39
41
  fieldNode: HTMLElement | null;
40
42
  labelNode: HTMLElement | null;
41
43
  descriptionNode: HTMLElement | null;
42
- startValueComplete: boolean;
43
- endValueComplete: boolean;
44
- rangeComplete: boolean;
45
- startValueTime: Time | undefined;
46
- endValueTime: Time | undefined;
47
- minValueTime: Time | undefined;
48
- maxValueTime: Time | undefined;
44
+ readonly startValueComplete: boolean;
45
+ readonly endValueComplete: boolean;
46
+ readonly rangeComplete: boolean;
47
+ readonly startValueTime: Time | undefined;
48
+ readonly endValueTime: Time | undefined;
49
+ readonly minValueTime: Time | undefined;
50
+ readonly maxValueTime: Time | undefined;
49
51
  domContext: DOMContext;
50
- constructor(opts: TimeRangeFieldRootStateProps<T>);
51
- validationStatus: false | {
52
+ constructor(opts: TimeRangeFieldRootStateOpts<T>);
53
+ readonly validationStatus: false | {
52
54
  readonly reason: "custom";
53
55
  readonly message: string | string[];
54
56
  } | {
@@ -58,33 +60,35 @@ export declare class TimeRangeFieldRootState<T extends TimeValue = Time> {
58
60
  readonly reason: "max";
59
61
  readonly message?: undefined;
60
62
  };
61
- isInvalid: boolean;
63
+ readonly isInvalid: boolean;
62
64
  props: {
63
65
  readonly id: string;
64
66
  readonly role: "group";
65
67
  readonly "data-invalid": "" | undefined;
66
68
  };
67
69
  }
68
- type TimeRangeFieldLabelStateProps = WithRefProps;
69
- declare class TimeRangeFieldLabelState {
70
+ interface TimeRangeFieldLabelStateOpts extends WithRefOpts {
71
+ }
72
+ export declare class TimeRangeFieldLabelState {
70
73
  #private;
71
- readonly opts: TimeRangeFieldLabelStateProps;
74
+ static create(opts: TimeRangeFieldLabelStateOpts): TimeRangeFieldLabelState;
75
+ readonly opts: TimeRangeFieldLabelStateOpts;
72
76
  readonly root: TimeRangeFieldRootState;
73
- constructor(opts: TimeRangeFieldLabelStateProps, root: TimeRangeFieldRootState);
74
- props: {
77
+ constructor(opts: TimeRangeFieldLabelStateOpts, root: TimeRangeFieldRootState);
78
+ readonly props: {
75
79
  readonly id: string;
76
80
  readonly "data-invalid": "" | undefined;
77
81
  readonly "data-disabled": "" | undefined;
78
82
  readonly onclick: () => void;
79
83
  };
80
84
  }
81
- type TimeRangeFieldInputStateProps<T extends TimeValue = Time> = WritableBoxedValues<{
85
+ interface TimeRangeFieldInputStateOpts<T extends TimeValue = Time> extends WritableBoxedValues<{
82
86
  value: T | undefined;
83
- }> & ReadableBoxedValues<{
87
+ }>, ReadableBoxedValues<{
84
88
  name: string;
85
- }> & WithRefProps;
86
- export declare const TimeRangeFieldRootContext: Context<TimeRangeFieldRootState<Time>>;
87
- export declare function useTimeRangeFieldRoot<T extends TimeValue = Time>(props: TimeRangeFieldRootStateProps<T>): TimeRangeFieldRootState<Time>;
88
- export declare function useTimeRangeFieldLabel(props: TimeRangeFieldLabelStateProps): TimeRangeFieldLabelState;
89
- export declare function useTimeRangeFieldInput(props: Omit<TimeRangeFieldInputStateProps, "value">, type: "start" | "end"): TimeFieldInputState;
89
+ }>, WithRefOpts {
90
+ }
91
+ export declare class TimeRangeFieldInputState {
92
+ static create(opts: Omit<TimeRangeFieldInputStateOpts, "value">, type: "start" | "end"): TimeFieldInputState;
93
+ }
90
94
  export {};
@@ -1,6 +1,7 @@
1
- import { box, onDestroyEffect, attachRef, DOMContext } from "svelte-toolbelt";
1
+ import { box, onDestroyEffect, attachRef, DOMContext, } from "svelte-toolbelt";
2
2
  import { Context, watch } from "runed";
3
- import { TimeFieldInputState, useTimeFieldRoot } from "../time-field/time-field.svelte.js";
3
+ import { TimeFieldRootState } from "../time-field/time-field.svelte.js";
4
+ import { TimeFieldInputState } from "../time-field/time-field.svelte.js";
4
5
  import { useId } from "../../internal/use-id.js";
5
6
  import { createBitsAttrs, getDataDisabled, getDataInvalid } from "../../internal/attrs.js";
6
7
  import { createTimeFormatter } from "../../internal/date-time/formatter.js";
@@ -11,7 +12,11 @@ export const timeRangeFieldAttrs = createBitsAttrs({
11
12
  component: "time-range-field",
12
13
  parts: ["root", "label"],
13
14
  });
15
+ export const TimeRangeFieldRootContext = new Context("TimeRangeField.Root");
14
16
  export class TimeRangeFieldRootState {
17
+ static create(opts) {
18
+ return TimeRangeFieldRootContext.set(new TimeRangeFieldRootState(opts));
19
+ }
15
20
  opts;
16
21
  startFieldState = undefined;
17
22
  endFieldState = undefined;
@@ -158,7 +163,10 @@ export class TimeRangeFieldRootState {
158
163
  ...attachRef(this.opts.ref, (v) => (this.fieldNode = v)),
159
164
  }));
160
165
  }
161
- class TimeRangeFieldLabelState {
166
+ export class TimeRangeFieldLabelState {
167
+ static create(opts) {
168
+ return new TimeRangeFieldLabelState(opts, TimeRangeFieldRootContext.get());
169
+ }
162
170
  opts;
163
171
  root;
164
172
  constructor(opts, root) {
@@ -175,7 +183,6 @@ class TimeRangeFieldLabelState {
175
183
  };
176
184
  props = $derived.by(() => ({
177
185
  id: this.opts.id.current,
178
- // TODO: invalid state for field
179
186
  "data-invalid": getDataInvalid(this.root.isInvalid),
180
187
  "data-disabled": getDataDisabled(this.root.opts.disabled.current),
181
188
  [timeRangeFieldAttrs.label]: "",
@@ -183,32 +190,27 @@ class TimeRangeFieldLabelState {
183
190
  ...attachRef(this.opts.ref, (v) => (this.root.labelNode = v)),
184
191
  }));
185
192
  }
186
- export const TimeRangeFieldRootContext = new Context("TimeRangeField.Root");
187
- export function useTimeRangeFieldRoot(props) {
188
- return TimeRangeFieldRootContext.set(new TimeRangeFieldRootState(props));
189
- }
190
- export function useTimeRangeFieldLabel(props) {
191
- return new TimeRangeFieldLabelState(props, TimeRangeFieldRootContext.get());
192
- }
193
- export function useTimeRangeFieldInput(props, type) {
194
- const root = TimeRangeFieldRootContext.get();
195
- const fieldState = useTimeFieldRoot({
196
- value: type === "start" ? root.opts.startValue : root.opts.endValue,
197
- disabled: root.opts.disabled,
198
- readonly: root.opts.readonly,
199
- readonlySegments: root.opts.readonlySegments,
200
- validate: box.with(() => undefined),
201
- minValue: root.opts.minValue,
202
- maxValue: root.opts.maxValue,
203
- hourCycle: root.opts.hourCycle,
204
- locale: root.opts.locale,
205
- hideTimeZone: root.opts.hideTimeZone,
206
- required: root.opts.required,
207
- granularity: root.opts.granularity,
208
- placeholder: root.opts.placeholder,
209
- onInvalid: root.opts.onInvalid,
210
- errorMessageId: root.opts.errorMessageId,
211
- isInvalidProp: box.with(() => root.isInvalid),
212
- }, root);
213
- return new TimeFieldInputState({ name: props.name, id: props.id, ref: props.ref }, fieldState);
193
+ export class TimeRangeFieldInputState {
194
+ static create(opts, type) {
195
+ const root = TimeRangeFieldRootContext.get();
196
+ const fieldState = TimeFieldRootState.create({
197
+ value: type === "start" ? root.opts.startValue : root.opts.endValue,
198
+ disabled: root.opts.disabled,
199
+ readonly: root.opts.readonly,
200
+ readonlySegments: root.opts.readonlySegments,
201
+ validate: box.with(() => undefined),
202
+ minValue: root.opts.minValue,
203
+ maxValue: root.opts.maxValue,
204
+ hourCycle: root.opts.hourCycle,
205
+ locale: root.opts.locale,
206
+ hideTimeZone: root.opts.hideTimeZone,
207
+ required: root.opts.required,
208
+ granularity: root.opts.granularity,
209
+ placeholder: root.opts.placeholder,
210
+ onInvalid: root.opts.onInvalid,
211
+ errorMessageId: root.opts.errorMessageId,
212
+ isInvalidProp: box.with(() => root.isInvalid),
213
+ }, root);
214
+ return new TimeFieldInputState({ name: opts.name, id: opts.id, ref: opts.ref }, fieldState);
215
+ }
214
216
  }
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { ToggleRootProps } from "../types.js";
4
- import { useToggleRoot } from "../toggle.svelte.js";
4
+ import { ToggleRootState } from "../toggle.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
 
@@ -19,7 +19,7 @@
19
19
  ...restProps
20
20
  }: ToggleRootProps = $props();
21
21
 
22
- const toggleState = useToggleRoot({
22
+ const toggleState = ToggleRootState.create({
23
23
  pressed: box.with(
24
24
  () => pressed,
25
25
  (v) => {
@@ -1,15 +1,17 @@
1
- import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
2
- import type { BitsMouseEvent, WithRefProps } from "../../internal/types.js";
3
- export declare const toggleAttrs: import("../../internal/attrs.js").BitsAttrs<readonly ["root"]>;
4
- type ToggleRootStateProps = WithRefProps<ReadableBoxedValues<{
1
+ import { type ReadableBoxedValues, type WritableBoxedValues } from "svelte-toolbelt";
2
+ import type { BitsMouseEvent, WithRefOpts } from "../../internal/types.js";
3
+ export declare const toggleAttrs: import("../../internal/attrs.js").CreateBitsAttrsReturn<readonly ["root"]>;
4
+ interface ToggleRootStateOpts extends WithRefOpts, ReadableBoxedValues<{
5
5
  disabled: boolean;
6
- }> & WritableBoxedValues<{
6
+ }>, WritableBoxedValues<{
7
7
  pressed: boolean;
8
- }>>;
9
- declare class ToggleRootState {
8
+ }> {
9
+ }
10
+ export declare class ToggleRootState {
10
11
  #private;
11
- readonly opts: ToggleRootStateProps;
12
- constructor(opts: ToggleRootStateProps);
12
+ static create(opts: ToggleRootStateOpts): ToggleRootState;
13
+ readonly opts: ToggleRootStateOpts;
14
+ constructor(opts: ToggleRootStateOpts);
13
15
  onclick(_: BitsMouseEvent): void;
14
16
  readonly snippetProps: {
15
17
  pressed: boolean;
@@ -23,6 +25,5 @@ declare class ToggleRootState {
23
25
  readonly onclick: (_: BitsMouseEvent) => void;
24
26
  };
25
27
  }
26
- export declare function useToggleRoot(props: ToggleRootStateProps): ToggleRootState;
27
28
  export declare function getToggleDataState(condition: boolean): "on" | "off";
28
29
  export {};
@@ -4,7 +4,10 @@ export const toggleAttrs = createBitsAttrs({
4
4
  component: "toggle",
5
5
  parts: ["root"],
6
6
  });
7
- class ToggleRootState {
7
+ export class ToggleRootState {
8
+ static create(opts) {
9
+ return new ToggleRootState(opts);
10
+ }
8
11
  opts;
9
12
  constructor(opts) {
10
13
  this.opts = opts;
@@ -34,9 +37,6 @@ class ToggleRootState {
34
37
  ...attachRef(this.opts.ref),
35
38
  }));
36
39
  }
37
- export function useToggleRoot(props) {
38
- return new ToggleRootState(props);
39
- }
40
40
  export function getToggleDataState(condition) {
41
41
  return condition ? "on" : "off";
42
42
  }
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { ToggleGroupItemProps } from "../types.js";
4
- import { useToggleGroupItem } from "../toggle-group.svelte.js";
4
+ import { ToggleGroupItemState } from "../toggle-group.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
 
7
7
  const uid = $props.id();
@@ -17,7 +17,7 @@
17
17
  ...restProps
18
18
  }: ToggleGroupItemProps = $props();
19
19
 
20
- const itemState = useToggleGroupItem({
20
+ const itemState = ToggleGroupItemState.create({
21
21
  id: box.with(() => id),
22
22
  value: box.with(() => value),
23
23
  disabled: box.with(() => disabled ?? false),
@@ -2,7 +2,7 @@
2
2
  import { type WritableBox, box } from "svelte-toolbelt";
3
3
  import { mergeProps } from "svelte-toolbelt";
4
4
  import type { ToggleGroupRootProps } from "../types.js";
5
- import { useToggleGroupRoot } from "../toggle-group.svelte.js";
5
+ import { ToggleGroupRootState } from "../toggle-group.svelte.js";
6
6
  import { createId } from "../../../internal/create-id.js";
7
7
  import { noop } from "../../../internal/noop.js";
8
8
  import { watch } from "runed";
@@ -39,7 +39,7 @@
39
39
  }
40
40
  );
41
41
 
42
- const rootState = useToggleGroupRoot({
42
+ const rootState = ToggleGroupRootState.create({
43
43
  id: box.with(() => id),
44
44
  value: box.with(
45
45
  () => value!,
@@ -1,65 +1,81 @@
1
- import { type WritableBox } from "svelte-toolbelt";
2
- import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
1
+ import { type WritableBox, type ReadableBoxedValues, type WritableBoxedValues } from "svelte-toolbelt";
3
2
  import type { Orientation } from "../../shared/index.js";
4
- import { type UseRovingFocusReturn } from "../../internal/use-roving-focus.svelte.js";
5
- import type { BitsKeyboardEvent, BitsMouseEvent, WithRefProps } from "../../internal/types.js";
6
- export declare const toggleGroupAttrs: import("../../internal/attrs.js").BitsAttrs<readonly ["root", "item"]>;
7
- type ToggleGroupBaseStateProps = WithRefProps<ReadableBoxedValues<{
3
+ import type { BitsKeyboardEvent, BitsMouseEvent, WithRefOpts } from "../../internal/types.js";
4
+ import { RovingFocusGroup } from "../../internal/roving-focus-group.js";
5
+ export declare const toggleGroupAttrs: import("../../internal/attrs.js").CreateBitsAttrsReturn<readonly ["root", "item"]>;
6
+ interface ToggleGroupBaseStateOpts extends WithRefOpts, ReadableBoxedValues<{
8
7
  disabled: boolean;
9
8
  rovingFocus: boolean;
10
9
  loop: boolean;
11
10
  orientation: Orientation;
12
- }>>;
13
- declare class ToggleGroupBaseState {
14
- readonly opts: ToggleGroupBaseStateProps;
15
- rovingFocusGroup: UseRovingFocusReturn;
16
- constructor(opts: ToggleGroupBaseStateProps);
17
- props: {
11
+ }> {
12
+ }
13
+ declare abstract class ToggleGroupBaseState {
14
+ readonly opts: ToggleGroupBaseStateOpts;
15
+ readonly rovingFocusGroup: RovingFocusGroup;
16
+ constructor(opts: ToggleGroupBaseStateOpts);
17
+ readonly props: {
18
18
  readonly id: string;
19
19
  readonly role: "group";
20
20
  readonly "data-orientation": "horizontal" | "vertical";
21
21
  readonly "data-disabled": "" | undefined;
22
22
  };
23
23
  }
24
- type ToggleGroupSingleStateProps = ToggleGroupBaseStateProps & WritableBoxedValues<{
24
+ interface ToggleGroupSingleStateOpts extends ToggleGroupBaseStateOpts, WritableBoxedValues<{
25
25
  value: string;
26
- }>;
26
+ }> {
27
+ }
27
28
  declare class ToggleGroupSingleState extends ToggleGroupBaseState {
28
- readonly opts: ToggleGroupSingleStateProps;
29
+ readonly opts: ToggleGroupSingleStateOpts;
29
30
  isMulti: boolean;
30
- anyPressed: boolean;
31
- constructor(opts: ToggleGroupSingleStateProps);
31
+ readonly anyPressed: boolean;
32
+ constructor(opts: ToggleGroupSingleStateOpts);
32
33
  includesItem(item: string): boolean;
33
34
  toggleItem(item: string, id: string): void;
34
35
  }
35
- type ToggleGroupMultipleStateProps = ToggleGroupBaseStateProps & WritableBoxedValues<{
36
+ interface ToggleGroupMultipleStateOpts extends ToggleGroupBaseStateOpts, WritableBoxedValues<{
36
37
  value: string[];
37
- }>;
38
+ }> {
39
+ }
38
40
  declare class ToggleGroupMultipleState extends ToggleGroupBaseState {
39
- readonly opts: ToggleGroupMultipleStateProps;
41
+ readonly opts: ToggleGroupMultipleStateOpts;
40
42
  isMulti: boolean;
41
- anyPressed: boolean;
42
- constructor(opts: ToggleGroupMultipleStateProps);
43
+ readonly anyPressed: boolean;
44
+ constructor(opts: ToggleGroupMultipleStateOpts);
43
45
  includesItem(item: string): boolean;
44
46
  toggleItem(item: string, id: string): void;
45
47
  }
46
- type ToggleGroupState = ToggleGroupSingleState | ToggleGroupMultipleState;
47
- type ToggleGroupItemStateProps = WithRefProps<ReadableBoxedValues<{
48
+ type ToggleGroup = ToggleGroupSingleState | ToggleGroupMultipleState;
49
+ interface ToggleGroupRootOpts extends WithRefOpts, ReadableBoxedValues<{
50
+ disabled: boolean;
51
+ rovingFocus: boolean;
52
+ loop: boolean;
53
+ orientation: Orientation;
54
+ }> {
55
+ type: "single" | "multiple";
56
+ value: WritableBox<string> | WritableBox<string[]>;
57
+ }
58
+ export declare class ToggleGroupRootState {
59
+ static create(opts: ToggleGroupRootOpts): ToggleGroup;
60
+ }
61
+ interface ToggleGroupItemStateOpts extends WithRefOpts, ReadableBoxedValues<{
48
62
  value: string;
49
63
  disabled: boolean;
50
- }>>;
51
- declare class ToggleGroupItemState {
64
+ }> {
65
+ }
66
+ export declare class ToggleGroupItemState {
52
67
  #private;
53
- readonly opts: ToggleGroupItemStateProps;
54
- readonly root: ToggleGroupState;
55
- constructor(opts: ToggleGroupItemStateProps, root: ToggleGroupState);
68
+ static create(opts: ToggleGroupItemStateOpts): ToggleGroupItemState;
69
+ readonly opts: ToggleGroupItemStateOpts;
70
+ readonly root: ToggleGroup;
71
+ readonly isPressed: boolean;
72
+ constructor(opts: ToggleGroupItemStateOpts, root: ToggleGroup);
56
73
  onclick(_: BitsMouseEvent): void;
57
74
  onkeydown(e: BitsKeyboardEvent): void;
58
- isPressed: boolean;
59
- snippetProps: {
75
+ readonly snippetProps: {
60
76
  pressed: boolean;
61
77
  };
62
- props: {
78
+ readonly props: {
63
79
  readonly id: string;
64
80
  readonly role: "radio" | undefined;
65
81
  readonly tabindex: number;
@@ -74,15 +90,4 @@ declare class ToggleGroupItemState {
74
90
  readonly onkeydown: (e: BitsKeyboardEvent) => void;
75
91
  };
76
92
  }
77
- type InitToggleGroupProps = WithRefProps<{
78
- type: "single" | "multiple";
79
- value: WritableBox<string> | WritableBox<string[]>;
80
- } & ReadableBoxedValues<{
81
- disabled: boolean;
82
- rovingFocus: boolean;
83
- loop: boolean;
84
- orientation: Orientation;
85
- }>>;
86
- export declare function useToggleGroupRoot(props: InitToggleGroupProps): ToggleGroupState;
87
- export declare function useToggleGroupItem(props: Omit<ToggleGroupItemStateProps, "rootState">): ToggleGroupItemState;
88
93
  export {};
@@ -1,18 +1,19 @@
1
- import { attachRef } from "svelte-toolbelt";
1
+ import { attachRef, } from "svelte-toolbelt";
2
2
  import { Context } from "runed";
3
3
  import { createBitsAttrs, getAriaChecked, getAriaPressed, getDataDisabled, getDataOrientation, getDisabled, } from "../../internal/attrs.js";
4
4
  import { kbd } from "../../internal/kbd.js";
5
- import { useRovingFocus, } from "../../internal/use-roving-focus.svelte.js";
5
+ import { RovingFocusGroup } from "../../internal/roving-focus-group.js";
6
6
  export const toggleGroupAttrs = createBitsAttrs({
7
7
  component: "toggle-group",
8
8
  parts: ["root", "item"],
9
9
  });
10
+ const ToggleGroupRootContext = new Context("ToggleGroup.Root");
10
11
  class ToggleGroupBaseState {
11
12
  opts;
12
13
  rovingFocusGroup;
13
14
  constructor(opts) {
14
15
  this.opts = opts;
15
- this.rovingFocusGroup = useRovingFocus({
16
+ this.rovingFocusGroup = new RovingFocusGroup({
16
17
  candidateAttr: toggleGroupAttrs.item,
17
18
  rootNode: opts.ref,
18
19
  loop: opts.loop,
@@ -70,10 +71,29 @@ class ToggleGroupMultipleState extends ToggleGroupBaseState {
70
71
  }
71
72
  }
72
73
  }
73
- class ToggleGroupItemState {
74
+ export class ToggleGroupRootState {
75
+ static create(opts) {
76
+ const { type, ...rest } = opts;
77
+ const rootState = type === "single"
78
+ ? new ToggleGroupSingleState(rest)
79
+ : new ToggleGroupMultipleState(rest);
80
+ return ToggleGroupRootContext.set(rootState);
81
+ }
82
+ }
83
+ export class ToggleGroupItemState {
84
+ static create(opts) {
85
+ return new ToggleGroupItemState(opts, ToggleGroupRootContext.get());
86
+ }
74
87
  opts;
75
88
  root;
76
89
  #isDisabled = $derived.by(() => this.opts.disabled.current || this.root.opts.disabled.current);
90
+ isPressed = $derived.by(() => this.root.includesItem(this.opts.value.current));
91
+ #ariaChecked = $derived.by(() => {
92
+ return this.root.isMulti ? undefined : getAriaChecked(this.isPressed, false);
93
+ });
94
+ #ariaPressed = $derived.by(() => {
95
+ return this.root.isMulti ? getAriaPressed(this.isPressed) : undefined;
96
+ });
77
97
  constructor(opts, root) {
78
98
  this.opts = opts;
79
99
  this.root = root;
@@ -110,13 +130,6 @@ class ToggleGroupItemState {
110
130
  return;
111
131
  this.root.rovingFocusGroup.handleKeydown(this.opts.ref.current, e);
112
132
  }
113
- isPressed = $derived.by(() => this.root.includesItem(this.opts.value.current));
114
- #ariaChecked = $derived.by(() => {
115
- return this.root.isMulti ? undefined : getAriaChecked(this.isPressed, false);
116
- });
117
- #ariaPressed = $derived.by(() => {
118
- return this.root.isMulti ? getAriaPressed(this.isPressed) : undefined;
119
- });
120
133
  #tabIndex = $state(0);
121
134
  snippetProps = $derived.by(() => ({
122
135
  pressed: this.isPressed,
@@ -139,20 +152,6 @@ class ToggleGroupItemState {
139
152
  ...attachRef(this.opts.ref),
140
153
  }));
141
154
  }
142
- //
143
- // HELPERS
144
- //
145
155
  function getToggleItemDataState(condition) {
146
156
  return condition ? "on" : "off";
147
157
  }
148
- const ToggleGroupRootContext = new Context("ToggleGroup.Root");
149
- export function useToggleGroupRoot(props) {
150
- const { type, ...rest } = props;
151
- const rootState = type === "single"
152
- ? new ToggleGroupSingleState(rest)
153
- : new ToggleGroupMultipleState(rest);
154
- return ToggleGroupRootContext.set(rootState);
155
- }
156
- export function useToggleGroupItem(props) {
157
- return new ToggleGroupItemState(props, ToggleGroupRootContext.get());
158
- }
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { ToolbarButtonProps } from "../types.js";
4
- import { useToolbarButton } from "../toolbar.svelte.js";
4
+ import { ToolbarButtonState } from "../toolbar.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
 
7
7
  const uid = $props.id();
@@ -16,7 +16,7 @@
16
16
  ...restProps
17
17
  }: ToolbarButtonProps = $props();
18
18
 
19
- const buttonState = useToolbarButton({
19
+ const buttonState = ToolbarButtonState.create({
20
20
  id: box.with(() => id),
21
21
  disabled: box.with(() => disabled ?? false),
22
22
  ref: box.with(
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { ToolbarGroupItemProps } from "../types.js";
4
- import { useToolbarGroupItem } from "../toolbar.svelte.js";
4
+ import { ToolbarGroupItemState } from "../toolbar.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
 
7
7
  const uid = $props.id();
@@ -17,7 +17,7 @@
17
17
  ...restProps
18
18
  }: ToolbarGroupItemProps = $props();
19
19
 
20
- const groupItemState = useToolbarGroupItem({
20
+ const groupItemState = ToolbarGroupItemState.create({
21
21
  id: box.with(() => id),
22
22
  value: box.with(() => value),
23
23
  disabled: box.with(() => disabled ?? false),