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
@@ -12,11 +12,11 @@ import { noop } from "../../internal/noop.js";
12
12
  import { getTabbableCandidates } from "../../internal/focus.js";
13
13
  import { kbd } from "../../internal/kbd.js";
14
14
  import { CustomEventDispatcher } from "../../internal/events.js";
15
- import { useRovingFocus } from "../../internal/use-roving-focus.svelte.js";
16
15
  import { useArrowNavigation } from "../../internal/use-arrow-navigation.js";
17
16
  import { boxAutoReset } from "../../internal/box-auto-reset.svelte.js";
18
- import { useResizeObserver } from "../../internal/use-resize-observer.svelte.js";
19
17
  import { isElement } from "../../internal/is.js";
18
+ import { RovingFocusGroup } from "../../internal/roving-focus-group.js";
19
+ import { SvelteResizeObserver } from "../../internal/svelte-resize-observer.svelte.js";
20
20
  const navigationMenuAttrs = createBitsAttrs({
21
21
  component: "navigation-menu",
22
22
  parts: [
@@ -32,7 +32,15 @@ const navigationMenuAttrs = createBitsAttrs({
32
32
  "indicator",
33
33
  ],
34
34
  });
35
+ const NavigationMenuProviderContext = new Context("NavigationMenu.Root");
36
+ export const NavigationMenuItemContext = new Context("NavigationMenu.Item");
37
+ const NavigationMenuListContext = new Context("NavigationMenu.List");
38
+ const NavigationMenuContentContext = new Context("NavigationMenu.Content");
39
+ const NavigationMenuSubContext = new Context("NavigationMenu.Sub");
35
40
  class NavigationMenuProviderState {
41
+ static create(opts) {
42
+ return NavigationMenuProviderContext.set(new NavigationMenuProviderState(opts));
43
+ }
36
44
  opts;
37
45
  indicatorTrackRef = box(null);
38
46
  viewportRef = box(null);
@@ -59,7 +67,10 @@ class NavigationMenuProviderState {
59
67
  this.activeItem = item;
60
68
  };
61
69
  }
62
- class NavigationMenuRootState {
70
+ export class NavigationMenuRootState {
71
+ static create(opts) {
72
+ return new NavigationMenuRootState(opts);
73
+ }
63
74
  opts;
64
75
  provider;
65
76
  previousValue = box("");
@@ -80,7 +91,7 @@ class NavigationMenuRootState {
80
91
  afterMs: this.opts.skipDelayDuration.current,
81
92
  getWindow: () => getWindow(opts.ref.current),
82
93
  });
83
- this.provider = useNavigationMenuProvider({
94
+ this.provider = NavigationMenuProviderState.create({
84
95
  value: this.opts.value,
85
96
  previousValue: this.previousValue,
86
97
  dir: this.opts.dir,
@@ -145,7 +156,10 @@ class NavigationMenuRootState {
145
156
  ...attachRef(this.opts.ref),
146
157
  }));
147
158
  }
148
- class NavigationMenuSubState {
159
+ export class NavigationMenuSubState {
160
+ static create(opts) {
161
+ return new NavigationMenuSubState(opts, NavigationMenuProviderContext.get());
162
+ }
149
163
  opts;
150
164
  context;
151
165
  previousValue = box("");
@@ -153,7 +167,7 @@ class NavigationMenuSubState {
153
167
  constructor(opts, context) {
154
168
  this.opts = opts;
155
169
  this.context = context;
156
- this.subProvider = useNavigationMenuProvider({
170
+ this.subProvider = NavigationMenuProviderState.create({
157
171
  isRootMenu: false,
158
172
  value: this.opts.value,
159
173
  dir: this.context.opts.dir,
@@ -183,7 +197,10 @@ class NavigationMenuSubState {
183
197
  ...attachRef(this.opts.ref),
184
198
  }));
185
199
  }
186
- class NavigationMenuListState {
200
+ export class NavigationMenuListState {
201
+ static create(opts) {
202
+ return NavigationMenuListContext.set(new NavigationMenuListState(opts, NavigationMenuProviderContext.get()));
203
+ }
187
204
  opts;
188
205
  context;
189
206
  wrapperId = box(useId());
@@ -194,7 +211,7 @@ class NavigationMenuListState {
194
211
  constructor(opts, context) {
195
212
  this.opts = opts;
196
213
  this.context = context;
197
- this.rovingFocusGroup = useRovingFocus({
214
+ this.rovingFocusGroup = new RovingFocusGroup({
198
215
  rootNode: opts.ref,
199
216
  candidateSelector: `${navigationMenuAttrs.selector("trigger")}:not([data-disabled]), ${navigationMenuAttrs.selector("link")}:not([data-disabled])`,
200
217
  loop: box.with(() => false),
@@ -220,6 +237,9 @@ class NavigationMenuListState {
220
237
  }));
221
238
  }
222
239
  export class NavigationMenuItemState {
240
+ static create(opts) {
241
+ return NavigationMenuItemContext.set(new NavigationMenuItemState(opts, NavigationMenuListContext.get()));
242
+ }
223
243
  opts;
224
244
  listContext;
225
245
  contentNode = $state(null);
@@ -262,7 +282,15 @@ export class NavigationMenuItemState {
262
282
  [navigationMenuAttrs.item]: "",
263
283
  }));
264
284
  }
265
- class NavigationMenuTriggerState {
285
+ export class NavigationMenuTriggerState {
286
+ static create(opts) {
287
+ return new NavigationMenuTriggerState(opts, {
288
+ provider: NavigationMenuProviderContext.get(),
289
+ item: NavigationMenuItemContext.get(),
290
+ list: NavigationMenuListContext.get(),
291
+ sub: NavigationMenuSubContext.getOr(null),
292
+ });
293
+ }
266
294
  opts;
267
295
  focusProxyId = box(useId());
268
296
  focusProxyRef = box(null);
@@ -271,8 +299,8 @@ class NavigationMenuTriggerState {
271
299
  listContext;
272
300
  hasPointerMoveOpened = box(false);
273
301
  wasClickClose = false;
274
- open = $derived.by(() => this.itemContext.opts.value.current === this.context.opts.value.current);
275
302
  focusProxyMounted = $state(false);
303
+ open = $derived.by(() => this.itemContext.opts.value.current === this.context.opts.value.current);
276
304
  constructor(opts, context) {
277
305
  this.opts = opts;
278
306
  this.hasPointerMoveOpened = boxAutoReset(false, {
@@ -366,9 +394,6 @@ class NavigationMenuTriggerState {
366
394
  onfocus: this.focusProxyOnFocus,
367
395
  ...attachRef(this.focusProxyRef, (v) => (this.itemContext.focusProxyNode = v)),
368
396
  }));
369
- restructureSpanProps = $derived.by(() => ({
370
- "aria-owns": this.itemContext.contentId,
371
- }));
372
397
  }
373
398
  const LINK_SELECT_EVENT = new CustomEventDispatcher("bitsLinkSelect", {
374
399
  bubbles: true,
@@ -378,7 +403,13 @@ const ROOT_CONTENT_DISMISS_EVENT = new CustomEventDispatcher("bitsRootContentDis
378
403
  cancelable: true,
379
404
  bubbles: true,
380
405
  });
381
- class NavigationMenuLinkState {
406
+ export class NavigationMenuLinkState {
407
+ static create(opts) {
408
+ return new NavigationMenuLinkState(opts, {
409
+ provider: NavigationMenuProviderContext.get(),
410
+ item: NavigationMenuItemContext.get(),
411
+ });
412
+ }
382
413
  opts;
383
414
  context;
384
415
  isFocused = $state(false);
@@ -437,14 +468,23 @@ class NavigationMenuLinkState {
437
468
  ...attachRef(this.opts.ref),
438
469
  }));
439
470
  }
440
- class NavigationMenuIndicatorState {
471
+ export class NavigationMenuIndicatorState {
472
+ static create() {
473
+ return new NavigationMenuIndicatorState(NavigationMenuProviderContext.get());
474
+ }
441
475
  context;
442
476
  isVisible = $derived.by(() => Boolean(this.context.opts.value.current));
443
477
  constructor(context) {
444
478
  this.context = context;
445
479
  }
446
480
  }
447
- class NavigationMenuIndicatorImplState {
481
+ export class NavigationMenuIndicatorImplState {
482
+ static create(opts) {
483
+ return new NavigationMenuIndicatorImplState(opts, {
484
+ provider: NavigationMenuProviderContext.get(),
485
+ list: NavigationMenuListContext.get(),
486
+ });
487
+ }
448
488
  opts;
449
489
  context;
450
490
  listContext;
@@ -461,8 +501,8 @@ class NavigationMenuIndicatorImplState {
461
501
  this.opts = opts;
462
502
  this.context = context.provider;
463
503
  this.listContext = context.list;
464
- useResizeObserver(() => this.activeTrigger, this.handlePositionChange);
465
- useResizeObserver(() => this.context.indicatorTrackRef.current, this.handlePositionChange);
504
+ new SvelteResizeObserver(() => this.activeTrigger, this.handlePositionChange);
505
+ new SvelteResizeObserver(() => this.context.indicatorTrackRef.current, this.handlePositionChange);
466
506
  }
467
507
  handlePositionChange = () => {
468
508
  if (!this.activeTrigger)
@@ -498,13 +538,20 @@ class NavigationMenuIndicatorImplState {
498
538
  ...attachRef(this.opts.ref),
499
539
  }));
500
540
  }
501
- class NavigationMenuContentState {
541
+ export class NavigationMenuContentState {
542
+ static create(opts) {
543
+ return NavigationMenuContentContext.set(new NavigationMenuContentState(opts, {
544
+ provider: NavigationMenuProviderContext.get(),
545
+ item: NavigationMenuItemContext.get(),
546
+ list: NavigationMenuListContext.get(),
547
+ }));
548
+ }
502
549
  opts;
503
550
  context;
504
551
  itemContext;
505
552
  listContext;
506
- open = $derived.by(() => this.itemContext.opts.value.current === this.context.opts.value.current);
507
553
  mounted = $state(false);
554
+ open = $derived.by(() => this.itemContext.opts.value.current === this.context.opts.value.current);
508
555
  value = $derived.by(() => this.itemContext.opts.value.current);
509
556
  // We persist the last active content value as the viewport may be animating out
510
557
  // and we want the content to remain mounted for the lifecycle of the viewport.
@@ -537,7 +584,10 @@ class NavigationMenuContentState {
537
584
  ...attachRef(this.opts.ref, (v) => (this.itemContext.contentNode = v)),
538
585
  }));
539
586
  }
540
- class NavigationMenuContentImplState {
587
+ export class NavigationMenuContentImplState {
588
+ static create(opts, itemState) {
589
+ return new NavigationMenuContentImplState(opts, itemState ?? NavigationMenuItemContext.get());
590
+ }
541
591
  opts;
542
592
  itemContext;
543
593
  context;
@@ -697,15 +747,18 @@ class NavigationMenuContentImplState {
697
747
  ...attachRef(this.opts.ref),
698
748
  }));
699
749
  }
700
- class NavigationMenuViewportState {
750
+ export class NavigationMenuViewportState {
751
+ static create(opts) {
752
+ return new NavigationMenuViewportState(opts, NavigationMenuProviderContext.get());
753
+ }
701
754
  opts;
702
755
  context;
703
756
  open = $derived.by(() => !!this.context.opts.value.current);
704
- size = $state(null);
705
- contentNode = $state(null);
706
757
  viewportWidth = $derived.by(() => (this.size ? `${this.size.width}px` : undefined));
707
758
  viewportHeight = $derived.by(() => (this.size ? `${this.size.height}px` : undefined));
708
759
  activeContentValue = $derived.by(() => this.context.opts.value.current);
760
+ size = $state(null);
761
+ contentNode = $state(null);
709
762
  mounted = $state(false);
710
763
  constructor(opts, context) {
711
764
  this.opts = opts;
@@ -726,7 +779,7 @@ class NavigationMenuViewportState {
726
779
  * For example, if content animates in from `scale(0.5)` the dimensions would be anything
727
780
  * from `0.5` to `1` of the intended size.
728
781
  */
729
- useResizeObserver(() => this.contentNode, () => {
782
+ new SvelteResizeObserver(() => this.contentNode, () => {
730
783
  if (this.contentNode) {
731
784
  this.size = {
732
785
  width: this.contentNode.offsetWidth,
@@ -756,62 +809,6 @@ class NavigationMenuViewportState {
756
809
  ...attachRef(this.opts.ref, (v) => (this.context.viewportRef.current = v)),
757
810
  }));
758
811
  }
759
- const NavigationMenuProviderContext = new Context("NavigationMenu.Root");
760
- export const NavigationMenuItemContext = new Context("NavigationMenu.Item");
761
- const NavigationMenuListContext = new Context("NavigationMenu.List");
762
- const NavigationMenuContentContext = new Context("NavigationMenu.Content");
763
- const NavigationMenuSubContext = new Context("NavigationMenu.Sub");
764
- export function useNavigationMenuRoot(props) {
765
- return new NavigationMenuRootState(props);
766
- }
767
- export function useNavigationMenuProvider(props) {
768
- return NavigationMenuProviderContext.set(new NavigationMenuProviderState(props));
769
- }
770
- export function useNavigationMenuSub(props) {
771
- return new NavigationMenuSubState(props, NavigationMenuProviderContext.get());
772
- }
773
- export function useNavigationMenuList(props) {
774
- return NavigationMenuListContext.set(new NavigationMenuListState(props, NavigationMenuProviderContext.get()));
775
- }
776
- export function useNavigationMenuItem(props) {
777
- return NavigationMenuItemContext.set(new NavigationMenuItemState(props, NavigationMenuListContext.get()));
778
- }
779
- export function useNavigationMenuIndicatorImpl(props) {
780
- return new NavigationMenuIndicatorImplState(props, {
781
- provider: NavigationMenuProviderContext.get(),
782
- list: NavigationMenuListContext.get(),
783
- });
784
- }
785
- export function useNavigationMenuTrigger(props) {
786
- return new NavigationMenuTriggerState(props, {
787
- provider: NavigationMenuProviderContext.get(),
788
- item: NavigationMenuItemContext.get(),
789
- list: NavigationMenuListContext.get(),
790
- sub: NavigationMenuSubContext.getOr(null),
791
- });
792
- }
793
- export function useNavigationMenuContent(props) {
794
- return NavigationMenuContentContext.set(new NavigationMenuContentState(props, {
795
- provider: NavigationMenuProviderContext.get(),
796
- item: NavigationMenuItemContext.get(),
797
- list: NavigationMenuListContext.get(),
798
- }));
799
- }
800
- export function useNavigationMenuLink(props) {
801
- return new NavigationMenuLinkState(props, {
802
- provider: NavigationMenuProviderContext.get(),
803
- item: NavigationMenuItemContext.get(),
804
- });
805
- }
806
- export function useNavigationMenuContentImpl(props, itemState) {
807
- return new NavigationMenuContentImplState(props, itemState ?? NavigationMenuItemContext.get());
808
- }
809
- export function useNavigationMenuViewport(props) {
810
- return new NavigationMenuViewportState(props, NavigationMenuProviderContext.get());
811
- }
812
- export function useNavigationMenuIndicator() {
813
- return new NavigationMenuIndicatorState(NavigationMenuProviderContext.get());
814
- }
815
812
  //
816
813
  function focusFirst(candidates, getActiveElement) {
817
814
  const previouslyFocusedElement = getActiveElement();
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PaginationNextButtonProps } from "../types.js";
4
- import { usePaginationButton } from "../pagination.svelte.js";
4
+ import { PaginationButtonState } from "../pagination.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
  }: PaginationNextButtonProps = $props();
18
18
 
19
- const nextButtonState = usePaginationButton({
19
+ const nextButtonState = PaginationButtonState.create({
20
20
  type: "next",
21
21
  id: box.with(() => id),
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 { PaginationPageProps } from "../types.js";
4
- import { usePaginationPage } from "../pagination.svelte.js";
4
+ import { PaginationPageState } from "../pagination.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
  }: PaginationPageProps = $props();
19
19
 
20
- const pageState = usePaginationPage({
20
+ const pageState = PaginationPageState.create({
21
21
  id: box.with(() => id),
22
22
  page: box.with(() => page),
23
23
  ref: box.with(
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PaginationPrevButtonProps } from "../types.js";
4
- import { usePaginationButton } from "../pagination.svelte.js";
4
+ import { PaginationButtonState } from "../pagination.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
  }: PaginationPrevButtonProps = $props();
18
18
 
19
- const prevButtonState = usePaginationButton({
19
+ const prevButtonState = PaginationButtonState.create({
20
20
  type: "prev",
21
21
  id: box.with(() => id),
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 { PaginationRootProps } from "../types.js";
4
- import { usePaginationRoot } from "../pagination.svelte.js";
4
+ import { PaginationRootState } from "../pagination.svelte.js";
5
5
  import { noop } from "../../../internal/noop.js";
6
6
  import { createId } from "../../../internal/create-id.js";
7
7
 
@@ -22,7 +22,7 @@
22
22
  ...restProps
23
23
  }: PaginationRootProps = $props();
24
24
 
25
- const rootState = usePaginationRoot({
25
+ const rootState = PaginationRootState.create({
26
26
  id: box.with(() => id),
27
27
  count: box.with(() => count),
28
28
  perPage: box.with(() => perPage),
@@ -1,33 +1,35 @@
1
+ import { type ReadableBoxedValues, type WritableBoxedValues } from "svelte-toolbelt";
1
2
  import type { Page, PageItem } from "./types.js";
2
- import type { BitsKeyboardEvent, BitsMouseEvent, WithRefProps } from "../../internal/types.js";
3
- import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
3
+ import type { BitsKeyboardEvent, BitsMouseEvent, WithRefOpts } from "../../internal/types.js";
4
4
  import { type Orientation } from "../../shared/index.js";
5
- type PaginationRootStateProps = WithRefProps<ReadableBoxedValues<{
5
+ interface PaginationRootStateOpts extends WithRefOpts, ReadableBoxedValues<{
6
6
  count: number;
7
7
  perPage: number;
8
8
  siblingCount: number;
9
9
  orientation: Orientation;
10
10
  loop: boolean;
11
- }> & WritableBoxedValues<{
11
+ }>, WritableBoxedValues<{
12
12
  page: number;
13
- }>>;
14
- declare class PaginationRootState {
15
- readonly opts: PaginationRootStateProps;
16
- totalPages: number;
17
- range: {
13
+ }> {
14
+ }
15
+ export declare class PaginationRootState {
16
+ static create(opts: PaginationRootStateOpts): PaginationRootState;
17
+ readonly opts: PaginationRootStateOpts;
18
+ readonly totalPages: number;
19
+ readonly range: {
18
20
  start: number;
19
21
  end: number;
20
22
  };
21
- pages: PageItem[];
22
- constructor(opts: PaginationRootStateProps);
23
+ readonly pages: PageItem[];
24
+ readonly hasPrevPage: boolean;
25
+ readonly hasNextPage: boolean;
26
+ constructor(opts: PaginationRootStateOpts);
23
27
  setPage(page: number): void;
24
28
  getPageTriggerNodes(): HTMLElement[];
25
29
  getButtonNode(type: "prev" | "next"): HTMLElement | null | undefined;
26
- hasPrevPage: boolean;
27
- hasNextPage: boolean;
28
30
  prevPage(): void;
29
31
  nextPage(): void;
30
- snippetProps: {
32
+ readonly snippetProps: {
31
33
  pages: PageItem[];
32
34
  range: {
33
35
  start: number;
@@ -35,23 +37,25 @@ declare class PaginationRootState {
35
37
  };
36
38
  currentPage: number;
37
39
  };
38
- props: {
40
+ readonly props: {
39
41
  readonly id: string;
40
42
  readonly "data-orientation": "horizontal" | "vertical";
41
43
  };
42
44
  }
43
- type PaginationPageStateProps = WithRefProps<ReadableBoxedValues<{
45
+ interface PaginationPageStateOpts extends WithRefOpts, ReadableBoxedValues<{
44
46
  page: Page;
45
47
  disabled: boolean;
46
- }>>;
47
- declare class PaginationPageState {
48
+ }> {
49
+ }
50
+ export declare class PaginationPageState {
48
51
  #private;
49
- readonly opts: PaginationPageStateProps;
52
+ static create(opts: PaginationPageStateOpts): PaginationPageState;
53
+ readonly opts: PaginationPageStateOpts;
50
54
  readonly root: PaginationRootState;
51
- constructor(opts: PaginationPageStateProps, root: PaginationRootState);
55
+ constructor(opts: PaginationPageStateOpts, root: PaginationRootState);
52
56
  onclick(e: BitsMouseEvent): void;
53
57
  onkeydown(e: BitsKeyboardEvent): void;
54
- props: {
58
+ readonly props: {
55
59
  readonly id: string;
56
60
  readonly "aria-label": `Page ${number}`;
57
61
  readonly "data-value": `${number}`;
@@ -60,26 +64,24 @@ declare class PaginationPageState {
60
64
  readonly onkeydown: (e: BitsKeyboardEvent) => void;
61
65
  };
62
66
  }
63
- type PaginationButtonStateProps = WithRefProps<{
64
- type: "prev" | "next";
65
- }> & ReadableBoxedValues<{
67
+ interface PaginationButtonStateOpts extends WithRefOpts, ReadableBoxedValues<{
66
68
  disabled: boolean;
67
- }>;
68
- declare class PaginationButtonState {
69
+ }> {
70
+ type: "prev" | "next";
71
+ }
72
+ export declare class PaginationButtonState {
69
73
  #private;
70
- readonly opts: PaginationButtonStateProps;
74
+ static create(opts: PaginationButtonStateOpts): PaginationButtonState;
75
+ readonly opts: PaginationButtonStateOpts;
71
76
  readonly root: PaginationRootState;
72
- constructor(opts: PaginationButtonStateProps, root: PaginationRootState);
77
+ constructor(opts: PaginationButtonStateOpts, root: PaginationRootState);
73
78
  onclick(e: BitsMouseEvent): void;
74
79
  onkeydown(e: BitsKeyboardEvent): void;
75
- props: {
80
+ readonly props: {
76
81
  readonly id: string;
77
82
  readonly disabled: boolean;
78
83
  readonly onclick: (e: BitsMouseEvent) => void;
79
84
  readonly onkeydown: (e: BitsKeyboardEvent) => void;
80
85
  };
81
86
  }
82
- export declare function usePaginationRoot(props: PaginationRootStateProps): PaginationRootState;
83
- export declare function usePaginationPage(props: PaginationPageStateProps): PaginationPageState;
84
- export declare function usePaginationButton(props: PaginationButtonStateProps): PaginationButtonState;
85
87
  export {};
@@ -9,7 +9,11 @@ const paginationAttrs = createBitsAttrs({
9
9
  component: "pagination",
10
10
  parts: ["root", "page", "prev", "next"],
11
11
  });
12
- class PaginationRootState {
12
+ const PaginationRootContext = new Context("Pagination.Root");
13
+ export class PaginationRootState {
14
+ static create(opts) {
15
+ return PaginationRootContext.set(new PaginationRootState(opts));
16
+ }
13
17
  opts;
14
18
  totalPages = $derived.by(() => {
15
19
  if (this.opts.count.current === 0)
@@ -26,6 +30,8 @@ class PaginationRootState {
26
30
  totalPages: this.totalPages,
27
31
  siblingCount: this.opts.siblingCount.current,
28
32
  }));
33
+ hasPrevPage = $derived.by(() => this.opts.page.current > 1);
34
+ hasNextPage = $derived.by(() => this.opts.page.current < this.totalPages);
29
35
  constructor(opts) {
30
36
  this.opts = opts;
31
37
  }
@@ -44,8 +50,6 @@ class PaginationRootState {
44
50
  return;
45
51
  return node.querySelector(paginationAttrs.selector(type));
46
52
  }
47
- hasPrevPage = $derived.by(() => this.opts.page.current > 1);
48
- hasNextPage = $derived.by(() => this.opts.page.current < this.totalPages);
49
53
  prevPage() {
50
54
  this.opts.page.current = Math.max(this.opts.page.current - 1, 1);
51
55
  }
@@ -64,7 +68,10 @@ class PaginationRootState {
64
68
  ...attachRef(this.opts.ref),
65
69
  }));
66
70
  }
67
- class PaginationPageState {
71
+ export class PaginationPageState {
72
+ static create(opts) {
73
+ return new PaginationPageState(opts, PaginationRootContext.get());
74
+ }
68
75
  opts;
69
76
  root;
70
77
  #isSelected = $derived.by(() => this.opts.page.current.value === this.root.opts.page.current);
@@ -102,7 +109,10 @@ class PaginationPageState {
102
109
  ...attachRef(this.opts.ref),
103
110
  }));
104
111
  }
105
- class PaginationButtonState {
112
+ export class PaginationButtonState {
113
+ static create(opts) {
114
+ return new PaginationButtonState(opts, PaginationRootContext.get());
115
+ }
106
116
  opts;
107
117
  root;
108
118
  constructor(opts, root) {
@@ -246,13 +256,3 @@ function getPageItems({ page = 1, totalPages, siblingCount = 1 }) {
246
256
  }
247
257
  return pageItems;
248
258
  }
249
- const PaginationRootContext = new Context("Pagination.Root");
250
- export function usePaginationRoot(props) {
251
- return PaginationRootContext.set(new PaginationRootState(props));
252
- }
253
- export function usePaginationPage(props) {
254
- return new PaginationPageState(props, PaginationRootContext.get());
255
- }
256
- export function usePaginationButton(props) {
257
- return new PaginationButtonState(props, PaginationRootContext.get());
258
- }
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PinInputCellProps } from "../types.js";
4
- import { usePinInputCell } from "../pin-input.svelte.js";
4
+ import { PinInputCellState } from "../pin-input.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
 
7
7
  const uid = $props.id();
@@ -15,7 +15,7 @@
15
15
  ...restProps
16
16
  }: PinInputCellProps = $props();
17
17
 
18
- const cellState = usePinInputCell({
18
+ const cellState = PinInputCellState.create({
19
19
  id: box.with(() => id),
20
20
  ref: box.with(
21
21
  () => ref,
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { PinInputRootProps } from "../types.js";
4
- import { usePinInput } from "../pin-input.svelte.js";
4
+ import { PinInputRootState } from "../pin-input.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
 
@@ -27,7 +27,7 @@
27
27
  ...restProps
28
28
  }: PinInputRootProps = $props();
29
29
 
30
- const rootState = usePinInput({
30
+ const rootState = PinInputRootState.create({
31
31
  id: box.with(() => id),
32
32
  ref: box.with(
33
33
  () => ref,