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,13 +1,12 @@
1
- import { DOMContext } from "svelte-toolbelt";
1
+ import { DOMContext, type ReadableBoxedValues, type WritableBoxedValues } from "svelte-toolbelt";
2
2
  import type { PinInputCell, PinInputRootProps as RootComponentProps } from "./types.js";
3
- import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
4
- import type { BitsEvent, BitsFocusEvent, BitsKeyboardEvent, BitsMouseEvent, WithRefProps } from "../../internal/types.js";
3
+ import type { BitsEvent, BitsFocusEvent, BitsKeyboardEvent, BitsMouseEvent, WithRefOpts } from "../../internal/types.js";
5
4
  export declare const REGEXP_ONLY_DIGITS = "^\\d+$";
6
5
  export declare const REGEXP_ONLY_CHARS = "^[a-zA-Z]+$";
7
6
  export declare const REGEXP_ONLY_DIGITS_AND_CHARS = "^[a-zA-Z0-9]+$";
8
- type PinInputRootStateProps = WithRefProps<WritableBoxedValues<{
7
+ interface PinInputRootStateOpts extends WithRefOpts, WritableBoxedValues<{
9
8
  value: string;
10
- }> & ReadableBoxedValues<{
9
+ }>, ReadableBoxedValues<{
11
10
  inputId: string;
12
11
  disabled: boolean;
13
12
  onComplete: (...args: any[]) => void;
@@ -18,14 +17,16 @@ type PinInputRootStateProps = WithRefProps<WritableBoxedValues<{
18
17
  textAlign: RootComponentProps["textalign"];
19
18
  autocomplete: RootComponentProps["autocomplete"];
20
19
  inputmode: RootComponentProps["inputmode"];
21
- }>>;
22
- declare class PinInputRootState {
20
+ }> {
21
+ }
22
+ export declare class PinInputRootState {
23
23
  #private;
24
- readonly opts: PinInputRootStateProps;
24
+ static create(opts: PinInputRootStateOpts): PinInputRootState;
25
+ readonly opts: PinInputRootStateOpts;
25
26
  domContext: DOMContext;
26
- constructor(opts: PinInputRootStateProps);
27
+ constructor(opts: PinInputRootStateOpts);
27
28
  onkeydown: (e: BitsKeyboardEvent) => void;
28
- rootProps: {
29
+ readonly rootProps: {
29
30
  readonly id: string;
30
31
  readonly style: {
31
32
  position: string;
@@ -35,7 +36,7 @@ declare class PinInputRootState {
35
36
  pointerEvents: string;
36
37
  };
37
38
  };
38
- inputWrapperProps: {
39
+ readonly inputWrapperProps: {
39
40
  readonly style: {
40
41
  readonly position: "absolute";
41
42
  readonly inset: 0;
@@ -48,7 +49,7 @@ declare class PinInputRootState {
48
49
  onmouseover: (_: BitsMouseEvent) => void;
49
50
  onmouseleave: (_: BitsMouseEvent) => void;
50
51
  onblur: (_: BitsFocusEvent) => void;
51
- inputProps: {
52
+ readonly inputProps: {
52
53
  id: string;
53
54
  style: {
54
55
  position: string;
@@ -89,7 +90,7 @@ declare class PinInputRootState {
89
90
  onfocus: (_: BitsFocusEvent<HTMLInputElement>) => void;
90
91
  onblur: (_: BitsFocusEvent) => void;
91
92
  };
92
- snippetProps: {
93
+ readonly snippetProps: {
93
94
  cells: {
94
95
  char: string | null;
95
96
  isActive: boolean;
@@ -99,19 +100,19 @@ declare class PinInputRootState {
99
100
  isHovering: boolean;
100
101
  };
101
102
  }
102
- type PinInputCellStateProps = WithRefProps & ReadableBoxedValues<{
103
+ interface PinInputCellStateOpts extends WithRefOpts, ReadableBoxedValues<{
103
104
  cell: PinInputCell;
104
- }>;
105
- declare class PinInputCellState {
106
- readonly opts: PinInputCellStateProps;
107
- constructor(opts: PinInputCellStateProps);
108
- props: {
105
+ }> {
106
+ }
107
+ export declare class PinInputCellState {
108
+ static create(opts: PinInputCellStateOpts): PinInputCellState;
109
+ readonly opts: PinInputCellStateOpts;
110
+ constructor(opts: PinInputCellStateOpts);
111
+ readonly props: {
109
112
  readonly id: string;
110
113
  readonly "data-active": "" | undefined;
111
114
  readonly "data-inactive": "" | undefined;
112
115
  };
113
116
  }
114
117
  export declare function syncTimeouts(cb: (...args: any[]) => unknown, domContext: DOMContext): number[];
115
- export declare function usePinInput(props: PinInputRootStateProps): PinInputRootState;
116
- export declare function usePinInputCell(props: PinInputCellStateProps): PinInputCellState;
117
118
  export {};
@@ -1,6 +1,6 @@
1
1
  import { Previous, watch } from "runed";
2
2
  import { onMount } from "svelte";
3
- import { box, attachRef, DOMContext } from "svelte-toolbelt";
3
+ import { box, attachRef, DOMContext, } from "svelte-toolbelt";
4
4
  import { usePasswordManagerBadge } from "./usePasswordManager.svelte.js";
5
5
  import { createBitsAttrs, getDisabled } from "../../internal/attrs.js";
6
6
  import { on } from "svelte/events";
@@ -27,7 +27,10 @@ const KEYS_TO_IGNORE = [
27
27
  "Control",
28
28
  "Meta",
29
29
  ];
30
- class PinInputRootState {
30
+ export class PinInputRootState {
31
+ static create(opts) {
32
+ return new PinInputRootState(opts);
33
+ }
31
34
  opts;
32
35
  #inputRef = box(null);
33
36
  #isHoveringInput = $state(false);
@@ -389,7 +392,10 @@ class PinInputRootState {
389
392
  isHovering: this.#isHoveringInput,
390
393
  }));
391
394
  }
392
- class PinInputCellState {
395
+ export class PinInputCellState {
396
+ static create(opts) {
397
+ return new PinInputCellState(opts);
398
+ }
393
399
  opts;
394
400
  constructor(opts) {
395
401
  this.opts = opts;
@@ -417,9 +423,3 @@ function safeInsertRule(sheet, rule) {
417
423
  console.error("pin input could not insert CSS rule:", rule);
418
424
  }
419
425
  }
420
- export function usePinInput(props) {
421
- return new PinInputRootState(props);
422
- }
423
- export function usePinInputCell(props) {
424
- return new PinInputCellState(props);
425
- }
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PopoverCloseProps } from "../types.js";
4
- import { usePopoverClose } from "../popover.svelte.js";
4
+ import { PopoverCloseState } from "../popover.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
 
7
7
  const uid = $props.id();
@@ -14,7 +14,7 @@
14
14
  ...restProps
15
15
  }: PopoverCloseProps = $props();
16
16
 
17
- const closeState = usePopoverClose({
17
+ const closeState = PopoverCloseState.create({
18
18
  id: box.with(() => id),
19
19
  ref: box.with(
20
20
  () => ref,
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PopoverContentStaticProps } from "../types.js";
4
- import { usePopoverContent } from "../popover.svelte.js";
4
+ import { PopoverContentState } from "../popover.svelte.js";
5
5
  import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
  import { createId } from "../../../internal/create-id.js";
@@ -24,7 +24,7 @@
24
24
  ...restProps
25
25
  }: PopoverContentStaticProps = $props();
26
26
 
27
- const contentState = usePopoverContent({
27
+ const contentState = PopoverContentState.create({
28
28
  id: box.with(() => id),
29
29
  ref: box.with(
30
30
  () => ref,
@@ -70,7 +70,7 @@
70
70
  {...contentState.popperProps}
71
71
  ref={contentState.opts.ref}
72
72
  isStatic
73
- present={contentState.root.opts.open.current}
73
+ open={contentState.root.opts.open.current}
74
74
  {id}
75
75
  {trapFocus}
76
76
  {preventScroll}
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PopoverContentProps } from "../types.js";
4
- import { usePopoverContent } from "../popover.svelte.js";
4
+ import { PopoverContentState } from "../popover.svelte.js";
5
5
  import PopperLayer from "../../utilities/popper-layer/popper-layer.svelte";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
  import { createId } from "../../../internal/create-id.js";
@@ -24,7 +24,7 @@
24
24
  ...restProps
25
25
  }: PopoverContentProps = $props();
26
26
 
27
- const contentState = usePopoverContent({
27
+ const contentState = PopoverContentState.create({
28
28
  id: box.with(() => id),
29
29
  ref: box.with(
30
30
  () => ref,
@@ -70,7 +70,7 @@
70
70
  {...mergedProps}
71
71
  {...contentState.popperProps}
72
72
  ref={contentState.opts.ref}
73
- present={contentState.root.opts.open.current}
73
+ open={contentState.root.opts.open.current}
74
74
  {id}
75
75
  {trapFocus}
76
76
  {preventScroll}
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PopoverTriggerProps } from "../types.js";
4
- import { usePopoverTrigger } from "../popover.svelte.js";
4
+ import { PopoverTriggerState } from "../popover.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import FloatingLayerAnchor from "../../utilities/floating-layer/components/floating-layer-anchor.svelte";
7
7
 
@@ -17,7 +17,7 @@
17
17
  ...restProps
18
18
  }: PopoverTriggerProps = $props();
19
19
 
20
- const triggerState = usePopoverTrigger({
20
+ const triggerState = PopoverTriggerState.create({
21
21
  id: box.with(() => id),
22
22
  ref: box.with(
23
23
  () => ref,
@@ -1,13 +1,18 @@
1
1
  <script lang="ts">
2
2
  import { box } from "svelte-toolbelt";
3
3
  import type { PopoverRootProps } from "../types.js";
4
- import { usePopoverRoot } from "../popover.svelte.js";
4
+ import { PopoverRootState } from "../popover.svelte.js";
5
5
  import FloatingLayer from "../../utilities/floating-layer/components/floating-layer.svelte";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
 
8
- let { open = $bindable(false), onOpenChange = noop, children }: PopoverRootProps = $props();
8
+ let {
9
+ open = $bindable(false),
10
+ onOpenChange = noop,
11
+ onOpenChangeComplete = noop,
12
+ children,
13
+ }: PopoverRootProps = $props();
9
14
 
10
- usePopoverRoot({
15
+ PopoverRootState.create({
11
16
  open: box.with(
12
17
  () => open,
13
18
  (v) => {
@@ -15,6 +20,7 @@
15
20
  onOpenChange(v);
16
21
  }
17
22
  ),
23
+ onOpenChangeComplete: box.with(() => onOpenChangeComplete),
18
24
  });
19
25
  </script>
20
26
 
@@ -1,28 +1,33 @@
1
- import { type ReadableBoxedValues } from "svelte-toolbelt";
2
- import type { WritableBoxedValues } from "../../internal/box.svelte.js";
3
- import type { BitsKeyboardEvent, BitsMouseEvent, BitsPointerEvent, WithRefProps } from "../../internal/types.js";
4
- type PopoverRootStateProps = WritableBoxedValues<{
1
+ import { type ReadableBoxedValues, type WritableBoxedValues } from "svelte-toolbelt";
2
+ import type { BitsKeyboardEvent, BitsMouseEvent, BitsPointerEvent, OnChangeFn, WithRefOpts } from "../../internal/types.js";
3
+ interface PopoverRootStateOpts extends WritableBoxedValues<{
5
4
  open: boolean;
6
- }>;
7
- declare class PopoverRootState {
8
- readonly opts: PopoverRootStateProps;
5
+ }>, ReadableBoxedValues<{
6
+ onOpenChangeComplete: OnChangeFn<boolean>;
7
+ }> {
8
+ }
9
+ export declare class PopoverRootState {
10
+ static create(opts: PopoverRootStateOpts): PopoverRootState;
11
+ readonly opts: PopoverRootStateOpts;
9
12
  contentNode: HTMLElement | null;
10
13
  triggerNode: HTMLElement | null;
11
- constructor(opts: PopoverRootStateProps);
14
+ constructor(opts: PopoverRootStateOpts);
12
15
  toggleOpen(): void;
13
16
  handleClose(): void;
14
17
  }
15
- type PopoverTriggerStateProps = WithRefProps & ReadableBoxedValues<{
18
+ interface PopoverTriggerStateOpts extends WithRefOpts, ReadableBoxedValues<{
16
19
  disabled: boolean;
17
- }>;
18
- declare class PopoverTriggerState {
20
+ }> {
21
+ }
22
+ export declare class PopoverTriggerState {
19
23
  #private;
20
- readonly opts: PopoverTriggerStateProps;
24
+ static create(opts: PopoverTriggerStateOpts): PopoverTriggerState;
25
+ readonly opts: PopoverTriggerStateOpts;
21
26
  readonly root: PopoverRootState;
22
- constructor(opts: PopoverTriggerStateProps, root: PopoverRootState);
27
+ constructor(opts: PopoverTriggerStateOpts, root: PopoverRootState);
23
28
  onclick(e: BitsMouseEvent): void;
24
29
  onkeydown(e: BitsKeyboardEvent): void;
25
- props: {
30
+ readonly props: {
26
31
  readonly id: string;
27
32
  readonly "aria-haspopup": "dialog";
28
33
  readonly "aria-expanded": "true" | "false";
@@ -33,22 +38,24 @@ declare class PopoverTriggerState {
33
38
  readonly onclick: (e: BitsMouseEvent) => void;
34
39
  };
35
40
  }
36
- type PopoverContentStateProps = WithRefProps & ReadableBoxedValues<{
41
+ interface PopoverContentStateOpts extends WithRefOpts, ReadableBoxedValues<{
37
42
  onInteractOutside: (e: PointerEvent) => void;
38
43
  onEscapeKeydown: (e: KeyboardEvent) => void;
39
44
  onCloseAutoFocus: (e: Event) => void;
40
- }>;
41
- declare class PopoverContentState {
42
- readonly opts: PopoverContentStateProps;
45
+ }> {
46
+ }
47
+ export declare class PopoverContentState {
48
+ static create(opts: PopoverContentStateOpts): PopoverContentState;
49
+ readonly opts: PopoverContentStateOpts;
43
50
  readonly root: PopoverRootState;
44
- constructor(opts: PopoverContentStateProps, root: PopoverRootState);
51
+ constructor(opts: PopoverContentStateOpts, root: PopoverRootState);
45
52
  onInteractOutside: (e: PointerEvent) => void;
46
53
  onEscapeKeydown: (e: KeyboardEvent) => void;
47
54
  onCloseAutoFocus: (e: Event) => void;
48
- snippetProps: {
55
+ readonly snippetProps: {
49
56
  open: boolean;
50
57
  };
51
- props: {
58
+ readonly props: {
52
59
  readonly id: string;
53
60
  readonly tabindex: -1;
54
61
  readonly "data-state": "open" | "closed";
@@ -56,28 +63,26 @@ declare class PopoverContentState {
56
63
  readonly pointerEvents: "auto";
57
64
  };
58
65
  };
59
- popperProps: {
66
+ readonly popperProps: {
60
67
  onInteractOutside: (e: PointerEvent) => void;
61
68
  onEscapeKeydown: (e: KeyboardEvent) => void;
62
69
  onCloseAutoFocus: (e: Event) => void;
63
70
  };
64
71
  }
65
- type PopoverCloseStateProps = WithRefProps;
66
- declare class PopoverCloseState {
67
- readonly opts: PopoverCloseStateProps;
72
+ interface PopoverCloseStateOpts extends WithRefOpts {
73
+ }
74
+ export declare class PopoverCloseState {
75
+ static create(opts: PopoverCloseStateOpts): PopoverCloseState;
76
+ readonly opts: PopoverCloseStateOpts;
68
77
  readonly root: PopoverRootState;
69
- constructor(opts: PopoverCloseStateProps, root: PopoverRootState);
78
+ constructor(opts: PopoverCloseStateOpts, root: PopoverRootState);
70
79
  onclick(_: BitsPointerEvent): void;
71
80
  onkeydown(e: BitsKeyboardEvent): void;
72
- props: {
81
+ readonly props: {
73
82
  readonly id: string;
74
83
  readonly onclick: (_: BitsPointerEvent) => void;
75
84
  readonly onkeydown: (e: BitsKeyboardEvent) => void;
76
85
  readonly type: "button";
77
86
  };
78
87
  }
79
- export declare function usePopoverRoot(props: PopoverRootStateProps): PopoverRootState;
80
- export declare function usePopoverTrigger(props: PopoverTriggerStateProps): PopoverTriggerState;
81
- export declare function usePopoverContent(props: PopoverContentStateProps): PopoverContentState;
82
- export declare function usePopoverClose(props: PopoverCloseStateProps): PopoverCloseState;
83
88
  export {};
@@ -1,18 +1,30 @@
1
- import { attachRef } from "svelte-toolbelt";
1
+ import { attachRef, box, } from "svelte-toolbelt";
2
2
  import { Context } from "runed";
3
3
  import { kbd } from "../../internal/kbd.js";
4
4
  import { createBitsAttrs, getAriaExpanded, getDataOpenClosed } from "../../internal/attrs.js";
5
5
  import { isElement } from "../../internal/is.js";
6
+ import { OpenChangeComplete } from "../../internal/open-change-complete.js";
6
7
  const popoverAttrs = createBitsAttrs({
7
8
  component: "popover",
8
9
  parts: ["root", "trigger", "content", "close"],
9
10
  });
10
- class PopoverRootState {
11
+ const PopoverRootContext = new Context("Popover.Root");
12
+ export class PopoverRootState {
13
+ static create(opts) {
14
+ return PopoverRootContext.set(new PopoverRootState(opts));
15
+ }
11
16
  opts;
12
17
  contentNode = $state(null);
13
18
  triggerNode = $state(null);
14
19
  constructor(opts) {
15
20
  this.opts = opts;
21
+ new OpenChangeComplete({
22
+ ref: box.with(() => this.contentNode),
23
+ open: this.opts.open,
24
+ onComplete: () => {
25
+ this.opts.onOpenChangeComplete.current(this.opts.open.current);
26
+ },
27
+ });
16
28
  }
17
29
  toggleOpen() {
18
30
  this.opts.open.current = !this.opts.open.current;
@@ -23,7 +35,10 @@ class PopoverRootState {
23
35
  this.opts.open.current = false;
24
36
  }
25
37
  }
26
- class PopoverTriggerState {
38
+ export class PopoverTriggerState {
39
+ static create(opts) {
40
+ return new PopoverTriggerState(opts, PopoverRootContext.get());
41
+ }
27
42
  opts;
28
43
  root;
29
44
  constructor(opts, root) {
@@ -67,7 +82,10 @@ class PopoverTriggerState {
67
82
  ...attachRef(this.opts.ref, (v) => (this.root.triggerNode = v)),
68
83
  }));
69
84
  }
70
- class PopoverContentState {
85
+ export class PopoverContentState {
86
+ static create(opts) {
87
+ return new PopoverContentState(opts, PopoverRootContext.get());
88
+ }
71
89
  opts;
72
90
  root;
73
91
  constructor(opts, root) {
@@ -115,7 +133,10 @@ class PopoverContentState {
115
133
  onCloseAutoFocus: this.onCloseAutoFocus,
116
134
  };
117
135
  }
118
- class PopoverCloseState {
136
+ export class PopoverCloseState {
137
+ static create(opts) {
138
+ return new PopoverCloseState(opts, PopoverRootContext.get());
139
+ }
119
140
  opts;
120
141
  root;
121
142
  constructor(opts, root) {
@@ -142,19 +163,3 @@ class PopoverCloseState {
142
163
  ...attachRef(this.opts.ref),
143
164
  }));
144
165
  }
145
- //
146
- // CONTEXT METHODS
147
- //
148
- const PopoverRootContext = new Context("Popover.Root");
149
- export function usePopoverRoot(props) {
150
- return PopoverRootContext.set(new PopoverRootState(props));
151
- }
152
- export function usePopoverTrigger(props) {
153
- return new PopoverTriggerState(props, PopoverRootContext.get());
154
- }
155
- export function usePopoverContent(props) {
156
- return new PopoverContentState(props, PopoverRootContext.get());
157
- }
158
- export function usePopoverClose(props) {
159
- return new PopoverCloseState(props, PopoverRootContext.get());
160
- }
@@ -13,6 +13,10 @@ export type PopoverRootPropsWithoutHTML = WithChildren<{
13
13
  * A callback that is called when the popover's open state changes.
14
14
  */
15
15
  onOpenChange?: OnChangeFn<boolean>;
16
+ /**
17
+ * A callback that is called when the popover's open state changes and the animation is complete.
18
+ */
19
+ onOpenChangeComplete?: OnChangeFn<boolean>;
16
20
  }>;
17
21
  export type PopoverRootProps = PopoverRootPropsWithoutHTML;
18
22
  export type PopoverContentPropsWithoutHTML = WithChildNoChildrenSnippetProps<Omit<PopperLayerProps, "content" | "loop">, FloatingContentSnippetProps>;
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { ProgressRootProps } from "../types.js";
4
- import { useProgressRootState } from "../progress.svelte.js";
4
+ import { ProgressRootState } from "../progress.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
  }: ProgressRootProps = $props();
19
19
 
20
- const rootState = useProgressRootState({
20
+ const rootState = ProgressRootState.create({
21
21
  value: box.with(() => value),
22
22
  max: box.with(() => max),
23
23
  min: box.with(() => min),
@@ -1,14 +1,16 @@
1
- import type { ReadableBoxedValues } from "../../internal/box.svelte.js";
2
- import type { WithRefProps } from "../../internal/types.js";
3
- type ProgressRootStateProps = WithRefProps<ReadableBoxedValues<{
1
+ import { type ReadableBoxedValues } from "svelte-toolbelt";
2
+ import type { WithRefOpts } from "../../internal/types.js";
3
+ interface ProgressRootStateOpts extends WithRefOpts, ReadableBoxedValues<{
4
4
  value: number | null;
5
5
  max: number;
6
6
  min: number;
7
- }>>;
8
- declare class ProgressRootState {
9
- readonly opts: ProgressRootStateProps;
10
- constructor(opts: ProgressRootStateProps);
11
- props: {
7
+ }> {
8
+ }
9
+ export declare class ProgressRootState {
10
+ static create(opts: ProgressRootStateOpts): ProgressRootState;
11
+ readonly opts: ProgressRootStateOpts;
12
+ constructor(opts: ProgressRootStateOpts);
13
+ readonly props: {
12
14
  readonly role: "progressbar";
13
15
  readonly value: number | null;
14
16
  readonly "aria-valuemin": number;
@@ -21,5 +23,4 @@ declare class ProgressRootState {
21
23
  readonly "data-indeterminate": "" | undefined;
22
24
  };
23
25
  }
24
- export declare function useProgressRootState(props: ProgressRootStateProps): ProgressRootState;
25
26
  export {};
@@ -4,7 +4,10 @@ const progressAttrs = createBitsAttrs({
4
4
  component: "progress",
5
5
  parts: ["root"],
6
6
  });
7
- class ProgressRootState {
7
+ export class ProgressRootState {
8
+ static create(opts) {
9
+ return new ProgressRootState(opts);
10
+ }
8
11
  opts;
9
12
  constructor(opts) {
10
13
  this.opts = opts;
@@ -29,6 +32,3 @@ function getProgressDataState(value, max) {
29
32
  return "indeterminate";
30
33
  return value === max ? "loaded" : "loading";
31
34
  }
32
- export function useProgressRootState(props) {
33
- return new ProgressRootState(props);
34
- }
@@ -1,8 +1,8 @@
1
1
  <script lang="ts">
2
2
  import HiddenInput from "../../utilities/hidden-input.svelte";
3
- import { useRadioGroupInput } from "../radio-group.svelte.js";
3
+ import { RadioGroupInputState } from "../radio-group.svelte.js";
4
4
 
5
- const inputState = useRadioGroupInput();
5
+ const inputState = RadioGroupInputState.create();
6
6
  </script>
7
7
 
8
8
  {#if inputState.shouldRender}
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { RadioGroupItemProps } from "../types.js";
4
- import { useRadioGroupItem } from "../radio-group.svelte.js";
4
+ import { RadioGroupItemState } from "../radio-group.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
  }: RadioGroupItemProps = $props();
18
18
 
19
- const itemState = useRadioGroupItem({
19
+ const itemState = RadioGroupItemState.create({
20
20
  value: box.with(() => value),
21
21
  disabled: box.with(() => disabled ?? false),
22
22
  id: box.with(() => id),
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { RadioGroupRootProps } from "../types.js";
4
- import { useRadioGroupRoot } from "../radio-group.svelte.js";
4
+ import { RadioGroupRootState } from "../radio-group.svelte.js";
5
5
  import RadioGroupInput from "./radio-group-input.svelte";
6
6
  import { createId } from "../../../internal/create-id.js";
7
7
  import { noop } from "../../../internal/noop.js";
@@ -18,17 +18,19 @@
18
18
  loop = true,
19
19
  name = undefined,
20
20
  required = false,
21
+ readonly = false,
21
22
  id = createId(uid),
22
23
  onValueChange = noop,
23
24
  ...restProps
24
25
  }: RadioGroupRootProps = $props();
25
26
 
26
- const rootState = useRadioGroupRoot({
27
+ const rootState = RadioGroupRootState.create({
27
28
  orientation: box.with(() => orientation),
28
29
  disabled: box.with(() => disabled),
29
30
  loop: box.with(() => loop),
30
31
  name: box.with(() => name),
31
32
  required: box.with(() => required),
33
+ readonly: box.with(() => readonly),
32
34
  id: box.with(() => id),
33
35
  value: box.with(
34
36
  () => value,