bits-ui 2.7.0 → 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 (366) 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 +2 -2
  183. package/dist/bits/radio-group/radio-group.svelte.d.ts +21 -19
  184. package/dist/bits/radio-group/radio-group.svelte.js +15 -15
  185. package/dist/bits/range-calendar/components/range-calendar-cell.svelte +2 -2
  186. package/dist/bits/range-calendar/components/range-calendar-day.svelte +2 -2
  187. package/dist/bits/range-calendar/components/range-calendar.svelte +2 -2
  188. package/dist/bits/range-calendar/range-calendar.svelte.d.ts +21 -20
  189. package/dist/bits/range-calendar/range-calendar.svelte.js +12 -12
  190. package/dist/bits/rating-group/components/rating-group-input.svelte +2 -2
  191. package/dist/bits/rating-group/components/rating-group-item.svelte +2 -2
  192. package/dist/bits/rating-group/components/rating-group.svelte +2 -2
  193. package/dist/bits/rating-group/rating-group.svelte.d.ts +19 -18
  194. package/dist/bits/rating-group/rating-group.svelte.js +16 -17
  195. package/dist/bits/scroll-area/components/scroll-area-corner-impl.svelte +2 -2
  196. package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +3 -3
  197. package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +6 -6
  198. package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +3 -3
  199. package/dist/bits/scroll-area/components/scroll-area-scrollbar-shared.svelte +2 -2
  200. package/dist/bits/scroll-area/components/scroll-area-scrollbar-visible.svelte +2 -2
  201. package/dist/bits/scroll-area/components/scroll-area-scrollbar-x.svelte +2 -2
  202. package/dist/bits/scroll-area/components/scroll-area-scrollbar-y.svelte +2 -2
  203. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +2 -2
  204. package/dist/bits/scroll-area/components/scroll-area-thumb-impl.svelte +2 -2
  205. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +2 -5
  206. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +2 -2
  207. package/dist/bits/scroll-area/components/scroll-area.svelte +2 -2
  208. package/dist/bits/scroll-area/scroll-area.svelte.d.ts +98 -78
  209. package/dist/bits/scroll-area/scroll-area.svelte.js +78 -74
  210. package/dist/bits/select/components/select-content-static.svelte +3 -3
  211. package/dist/bits/select/components/select-content.svelte +3 -3
  212. package/dist/bits/select/components/select-group-heading.svelte +2 -2
  213. package/dist/bits/select/components/select-group.svelte +2 -2
  214. package/dist/bits/select/components/select-hidden-input.svelte +2 -2
  215. package/dist/bits/select/components/select-item.svelte +2 -2
  216. package/dist/bits/select/components/select-scroll-down-button.svelte +2 -2
  217. package/dist/bits/select/components/select-scroll-up-button.svelte +2 -2
  218. package/dist/bits/select/components/select-trigger.svelte +2 -2
  219. package/dist/bits/select/components/select-viewport.svelte +2 -2
  220. package/dist/bits/select/components/select.svelte +4 -2
  221. package/dist/bits/select/select.svelte.d.ts +127 -113
  222. package/dist/bits/select/select.svelte.js +72 -62
  223. package/dist/bits/select/types.d.ts +4 -0
  224. package/dist/bits/separator/components/separator.svelte +2 -2
  225. package/dist/bits/separator/separator.svelte.d.ts +9 -8
  226. package/dist/bits/separator/separator.svelte.js +4 -4
  227. package/dist/bits/slider/components/slider-range.svelte +2 -2
  228. package/dist/bits/slider/components/slider-thumb-label.svelte +2 -2
  229. package/dist/bits/slider/components/slider-thumb.svelte +2 -2
  230. package/dist/bits/slider/components/slider-tick-label.svelte +2 -2
  231. package/dist/bits/slider/components/slider-tick.svelte +2 -2
  232. package/dist/bits/slider/components/slider.svelte +2 -2
  233. package/dist/bits/slider/slider.svelte.d.ts +82 -73
  234. package/dist/bits/slider/slider.svelte.js +30 -28
  235. package/dist/bits/switch/components/switch-input.svelte +2 -2
  236. package/dist/bits/switch/components/switch-thumb.svelte +2 -2
  237. package/dist/bits/switch/components/switch.svelte +2 -2
  238. package/dist/bits/switch/switch.svelte.d.ts +19 -17
  239. package/dist/bits/switch/switch.svelte.js +13 -13
  240. package/dist/bits/tabs/components/tabs-content.svelte +2 -2
  241. package/dist/bits/tabs/components/tabs-list.svelte +2 -2
  242. package/dist/bits/tabs/components/tabs-trigger.svelte +2 -2
  243. package/dist/bits/tabs/components/tabs.svelte +2 -2
  244. package/dist/bits/tabs/tabs.svelte.d.ts +33 -29
  245. package/dist/bits/tabs/tabs.svelte.js +19 -19
  246. package/dist/bits/time-field/components/time-field-hidden-input.svelte +2 -2
  247. package/dist/bits/time-field/components/time-field-input.svelte +2 -2
  248. package/dist/bits/time-field/components/time-field-label.svelte +2 -2
  249. package/dist/bits/time-field/components/time-field-segment.svelte +2 -2
  250. package/dist/bits/time-field/components/time-field.svelte +2 -2
  251. package/dist/bits/time-field/time-field.svelte.d.ts +72 -66
  252. package/dist/bits/time-field/time-field.svelte.js +37 -42
  253. package/dist/bits/time-range-field/components/time-range-field-input.svelte +2 -2
  254. package/dist/bits/time-range-field/components/time-range-field-label.svelte +2 -2
  255. package/dist/bits/time-range-field/components/time-range-field.svelte +2 -2
  256. package/dist/bits/time-range-field/time-range-field.svelte.d.ts +35 -31
  257. package/dist/bits/time-range-field/time-range-field.svelte.js +34 -32
  258. package/dist/bits/toggle/components/toggle.svelte +2 -2
  259. package/dist/bits/toggle/toggle.svelte.d.ts +11 -10
  260. package/dist/bits/toggle/toggle.svelte.js +4 -4
  261. package/dist/bits/toggle-group/components/toggle-group-item.svelte +2 -2
  262. package/dist/bits/toggle-group/components/toggle-group.svelte +2 -2
  263. package/dist/bits/toggle-group/toggle-group.svelte.d.ts +48 -43
  264. package/dist/bits/toggle-group/toggle-group.svelte.js +24 -25
  265. package/dist/bits/toolbar/components/toolbar-button.svelte +2 -2
  266. package/dist/bits/toolbar/components/toolbar-group-item.svelte +2 -2
  267. package/dist/bits/toolbar/components/toolbar-group.svelte +2 -2
  268. package/dist/bits/toolbar/components/toolbar-link.svelte +2 -2
  269. package/dist/bits/toolbar/components/toolbar.svelte +2 -2
  270. package/dist/bits/toolbar/toolbar.svelte.d.ts +59 -51
  271. package/dist/bits/toolbar/toolbar.svelte.js +32 -30
  272. package/dist/bits/tooltip/components/tooltip-content-static.svelte +3 -3
  273. package/dist/bits/tooltip/components/tooltip-content.svelte +3 -3
  274. package/dist/bits/tooltip/components/tooltip-provider.svelte +2 -2
  275. package/dist/bits/tooltip/components/tooltip-trigger.svelte +2 -2
  276. package/dist/bits/tooltip/components/tooltip.svelte +4 -2
  277. package/dist/bits/tooltip/tooltip.svelte.d.ts +33 -29
  278. package/dist/bits/tooltip/tooltip.svelte.js +33 -28
  279. package/dist/bits/tooltip/types.d.ts +4 -0
  280. package/dist/bits/utilities/config/bits-config.d.ts +1 -1
  281. package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -2
  282. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +6 -7
  283. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +3 -3
  284. package/dist/bits/utilities/escape-layer/escape-layer.svelte +2 -2
  285. package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.d.ts +6 -7
  286. package/dist/bits/utilities/escape-layer/use-escape-layer.svelte.js +3 -3
  287. package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -2
  288. package/dist/bits/utilities/floating-layer/components/floating-layer-arrow.svelte +2 -2
  289. package/dist/bits/utilities/floating-layer/components/floating-layer-content.svelte +2 -2
  290. package/dist/bits/utilities/floating-layer/components/floating-layer.svelte +2 -2
  291. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +25 -23
  292. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +25 -25
  293. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +1 -1
  294. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +1 -1
  295. package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte +1 -1
  296. package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte.d.ts +1 -1
  297. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +1 -1
  298. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte.d.ts +1 -1
  299. package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -3
  300. package/dist/bits/utilities/presence-layer/presence-layer.svelte +8 -8
  301. package/dist/bits/utilities/presence-layer/presence.svelte.d.ts +42 -0
  302. package/dist/bits/utilities/presence-layer/presence.svelte.js +116 -0
  303. package/dist/bits/utilities/presence-layer/types.d.ts +3 -5
  304. package/dist/bits/utilities/scroll-lock/scroll-lock.svelte +2 -2
  305. package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -2
  306. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +7 -7
  307. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +3 -3
  308. package/dist/internal/animations-complete.d.ts +12 -0
  309. package/dist/internal/animations-complete.js +55 -0
  310. package/dist/internal/arrays.js +20 -36
  311. package/dist/internal/attrs.d.ts +9 -2
  312. package/dist/internal/attrs.js +21 -11
  313. package/dist/internal/body-scroll-lock.svelte.d.ts +10 -0
  314. package/dist/internal/body-scroll-lock.svelte.js +106 -0
  315. package/dist/internal/data-typeahead.svelte.d.ts +15 -0
  316. package/dist/internal/data-typeahead.svelte.js +33 -0
  317. package/dist/internal/date-time/calendar-helpers.svelte.d.ts +1 -1
  318. package/dist/internal/dom-typeahead.svelte.d.ts +14 -0
  319. package/dist/internal/dom-typeahead.svelte.js +44 -0
  320. package/dist/internal/dom.d.ts +0 -2
  321. package/dist/internal/dom.js +0 -15
  322. package/dist/internal/{use-grace-area.svelte.d.ts → grace-area.svelte.d.ts} +5 -4
  323. package/dist/internal/{use-grace-area.svelte.js → grace-area.svelte.js} +60 -56
  324. package/dist/internal/open-change-complete.d.ts +13 -0
  325. package/dist/internal/open-change-complete.js +24 -0
  326. package/dist/internal/{use-roving-focus.svelte.d.ts → roving-focus-group.d.ts} +9 -8
  327. package/dist/internal/{use-roving-focus.svelte.js → roving-focus-group.js} +30 -34
  328. package/dist/internal/shared-state.svelte.d.ts +6 -0
  329. package/dist/internal/shared-state.svelte.js +31 -0
  330. package/dist/internal/should-trap-focus.js +1 -2
  331. package/dist/internal/state-machine.d.ts +16 -0
  332. package/dist/internal/state-machine.js +18 -0
  333. package/dist/internal/svelte-resize-observer.svelte.d.ts +6 -0
  334. package/dist/internal/svelte-resize-observer.svelte.js +25 -0
  335. package/dist/internal/tabbable.d.ts +0 -1
  336. package/dist/internal/tabbable.js +0 -11
  337. package/dist/internal/timeout-fn.d.ts +16 -0
  338. package/dist/internal/timeout-fn.js +38 -0
  339. package/dist/internal/types.d.ts +2 -2
  340. package/package.json +1 -1
  341. package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +0 -4
  342. package/dist/bits/utilities/presence-layer/use-presence.svelte.js +0 -97
  343. package/dist/internal/box.svelte.d.ts +0 -21
  344. package/dist/internal/box.svelte.js +0 -26
  345. package/dist/internal/create-event-hook.svelte.d.ts +0 -18
  346. package/dist/internal/create-event-hook.svelte.js +0 -29
  347. package/dist/internal/create-shared-hook.svelte.d.ts +0 -2
  348. package/dist/internal/create-shared-hook.svelte.js +0 -27
  349. package/dist/internal/sleep.d.ts +0 -1
  350. package/dist/internal/sleep.js +0 -3
  351. package/dist/internal/use-after-animations.svelte.d.ts +0 -5
  352. package/dist/internal/use-after-animations.svelte.js +0 -27
  353. package/dist/internal/use-body-scroll-lock.svelte.d.ts +0 -6
  354. package/dist/internal/use-body-scroll-lock.svelte.js +0 -106
  355. package/dist/internal/use-data-typeahead.svelte.d.ts +0 -15
  356. package/dist/internal/use-data-typeahead.svelte.js +0 -34
  357. package/dist/internal/use-dom-typeahead.svelte.d.ts +0 -13
  358. package/dist/internal/use-dom-typeahead.svelte.js +0 -32
  359. package/dist/internal/use-form-control.svelte.d.ts +0 -4
  360. package/dist/internal/use-form-control.svelte.js +0 -16
  361. package/dist/internal/use-resize-observer.svelte.d.ts +0 -2
  362. package/dist/internal/use-resize-observer.svelte.js +0 -17
  363. package/dist/internal/use-state-machine.svelte.d.ts +0 -24
  364. package/dist/internal/use-state-machine.svelte.js +0 -28
  365. package/dist/internal/use-timeout-fn.svelte.d.ts +0 -25
  366. package/dist/internal/use-timeout-fn.svelte.js +0 -39
@@ -1,25 +1,24 @@
1
1
  import type { Updater } from "svelte/store";
2
2
  import { Time } from "@internationalized/date";
3
- import { type WritableBox, DOMContext } from "svelte-toolbelt";
4
- import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
5
- import type { BitsFocusEvent, BitsKeyboardEvent, BitsMouseEvent, WithRefProps } from "../../internal/types.js";
3
+ import { type WritableBox, DOMContext, type ReadableBoxedValues, type WritableBoxedValues } from "svelte-toolbelt";
4
+ import type { BitsFocusEvent, BitsKeyboardEvent, BitsMouseEvent, WithRefOpts } from "../../internal/types.js";
6
5
  import type { TimeSegmentObj, SegmentPart, HourCycle, TimeValidator, TimeOnInvalid, EditableTimeSegmentPart } from "../../shared/date/types.js";
7
6
  import { type TimeFormatter } from "../../internal/date-time/formatter.js";
8
7
  import { type Announcer } from "../../internal/date-time/announcer.js";
9
8
  import type { TimeValue } from "../../shared/date/types.js";
10
9
  import type { TimeRangeFieldRootState } from "../time-range-field/time-range-field.svelte.js";
11
- export declare const timeFieldAttrs: import("../../internal/attrs.js").BitsAttrs<readonly ["input", "label"]>;
12
- type SegmentConfig = {
10
+ export declare const timeFieldAttrs: import("../../internal/attrs.js").CreateBitsAttrsReturn<readonly ["input", "label"]>;
11
+ interface SegmentConfig {
13
12
  min: number | ((root: TimeFieldRootState) => number);
14
13
  max: number | ((root: TimeFieldRootState) => number);
15
14
  cycle: number;
16
15
  canBeZero?: boolean;
17
16
  padZero?: boolean;
18
- };
19
- export type TimeFieldRootStateProps<T extends TimeValue = Time> = WritableBoxedValues<{
17
+ }
18
+ export interface TimeFieldRootStateOpts<T extends TimeValue = Time> extends WritableBoxedValues<{
20
19
  value: T | undefined;
21
20
  placeholder: TimeValue;
22
- }> & ReadableBoxedValues<{
21
+ }>, ReadableBoxedValues<{
23
22
  readonlySegments: SegmentPart[];
24
23
  validate: TimeValidator<T> | undefined;
25
24
  onInvalid: TimeOnInvalid | undefined;
@@ -34,44 +33,46 @@ export type TimeFieldRootStateProps<T extends TimeValue = Time> = WritableBoxedV
34
33
  required: boolean;
35
34
  errorMessageId: string | undefined;
36
35
  isInvalidProp: boolean | undefined;
37
- }>;
36
+ }> {
37
+ }
38
38
  export declare class TimeFieldRootState<T extends TimeValue = Time> {
39
39
  #private;
40
- value: TimeFieldRootStateProps<T>["value"];
40
+ static create<T extends TimeValue = Time>(opts: TimeFieldRootStateOpts<T>, rangeRoot?: TimeRangeFieldRootState<T>): TimeFieldRootState<Time>;
41
+ value: TimeFieldRootStateOpts<T>["value"];
41
42
  placeholder: WritableBox<TimeValue>;
42
- validate: TimeFieldRootStateProps<T>["validate"];
43
- minValue: TimeFieldRootStateProps<T>["minValue"];
44
- maxValue: TimeFieldRootStateProps<T>["maxValue"];
45
- disabled: TimeFieldRootStateProps<T>["disabled"];
46
- readonly: TimeFieldRootStateProps<T>["readonly"];
47
- granularity: TimeFieldRootStateProps<T>["granularity"];
48
- readonlySegments: TimeFieldRootStateProps<T>["readonlySegments"];
49
- hourCycleProp: TimeFieldRootStateProps<T>["hourCycle"];
50
- locale: TimeFieldRootStateProps<T>["locale"];
51
- hideTimeZone: TimeFieldRootStateProps<T>["hideTimeZone"];
52
- required: TimeFieldRootStateProps<T>["required"];
53
- onInvalid: TimeFieldRootStateProps<T>["onInvalid"];
54
- errorMessageId: TimeFieldRootStateProps<T>["errorMessageId"];
55
- isInvalidProp: TimeFieldRootStateProps<T>["isInvalidProp"];
43
+ validate: TimeFieldRootStateOpts<T>["validate"];
44
+ minValue: TimeFieldRootStateOpts<T>["minValue"];
45
+ maxValue: TimeFieldRootStateOpts<T>["maxValue"];
46
+ disabled: TimeFieldRootStateOpts<T>["disabled"];
47
+ readonly: TimeFieldRootStateOpts<T>["readonly"];
48
+ granularity: TimeFieldRootStateOpts<T>["granularity"];
49
+ readonlySegments: TimeFieldRootStateOpts<T>["readonlySegments"];
50
+ hourCycleProp: TimeFieldRootStateOpts<T>["hourCycle"];
51
+ locale: TimeFieldRootStateOpts<T>["locale"];
52
+ hideTimeZone: TimeFieldRootStateOpts<T>["hideTimeZone"];
53
+ required: TimeFieldRootStateOpts<T>["required"];
54
+ onInvalid: TimeFieldRootStateOpts<T>["onInvalid"];
55
+ errorMessageId: TimeFieldRootStateOpts<T>["errorMessageId"];
56
+ isInvalidProp: TimeFieldRootStateOpts<T>["isInvalidProp"];
56
57
  descriptionId: string;
57
58
  formatter: TimeFormatter;
58
59
  initialSegments: TimeSegmentObj;
59
60
  segmentValues: TimeSegmentObj;
60
61
  announcer: Announcer;
61
- readonlySegmentsSet: Set<SegmentPart>;
62
+ readonly readonlySegmentsSet: Set<SegmentPart>;
62
63
  segmentStates: import("../../shared/date/types.js").TimeSegmentStateMap;
63
64
  descriptionNode: HTMLElement | null;
64
65
  validationNode: HTMLElement | null;
65
66
  states: import("../../shared/date/types.js").TimeSegmentStateMap;
66
67
  dayPeriodNode: HTMLElement | null;
67
68
  name: string;
68
- maxValueTime: Time | undefined;
69
- minValueTime: Time | undefined;
70
- valueTime: Time | undefined;
71
- hourCycle: HourCycle;
72
- rangeRoot: TimeRangeFieldRootState<T> | undefined;
69
+ readonly maxValueTime: Time | undefined;
70
+ readonly minValueTime: Time | undefined;
71
+ readonly valueTime: Time | undefined;
72
+ readonly hourCycle: HourCycle;
73
+ readonly rangeRoot: TimeRangeFieldRootState<T> | undefined;
73
74
  domContext: DOMContext;
74
- constructor(props: TimeFieldRootStateProps<T>, rangeRoot?: TimeRangeFieldRootState<T>);
75
+ constructor(props: TimeFieldRootStateOpts<T>, rangeRoot?: TimeRangeFieldRootState<T>);
75
76
  setName(name: string): void;
76
77
  setFieldNode(node: HTMLElement | null): void;
77
78
  /**
@@ -143,16 +144,18 @@ export declare class TimeFieldRootState<T extends TimeValue = Time> {
143
144
  "data-segment": string;
144
145
  };
145
146
  }
146
- type TimeFieldInputStateProps = WithRefProps & ReadableBoxedValues<{
147
+ interface TimeFieldInputStateOpts extends WithRefOpts, ReadableBoxedValues<{
147
148
  name: string;
148
- }>;
149
+ }> {
150
+ }
149
151
  export declare class TimeFieldInputState {
150
152
  #private;
151
- readonly opts: TimeFieldInputStateProps;
153
+ static create(opts: TimeFieldInputStateOpts): TimeFieldInputState;
154
+ readonly opts: TimeFieldInputStateOpts;
152
155
  readonly root: TimeFieldRootState;
153
156
  domContext: DOMContext;
154
- constructor(opts: TimeFieldInputStateProps, root: TimeFieldRootState);
155
- props: {
157
+ constructor(opts: TimeFieldInputStateOpts, root: TimeFieldRootState);
158
+ readonly props: {
156
159
  readonly id: string;
157
160
  readonly role: "group";
158
161
  readonly "aria-labelledby": string | undefined;
@@ -162,24 +165,27 @@ export declare class TimeFieldInputState {
162
165
  readonly "data-disabled": "" | undefined;
163
166
  };
164
167
  }
165
- declare class TimeFieldHiddenInputState {
168
+ export declare class TimeFieldHiddenInputState {
169
+ static create(): TimeFieldHiddenInputState;
166
170
  readonly root: TimeFieldRootState;
167
- shouldRender: boolean;
168
- isoValue: string | undefined;
171
+ readonly shouldRender: boolean;
172
+ readonly isoValue: string | undefined;
169
173
  constructor(root: TimeFieldRootState);
170
- props: {
174
+ readonly props: {
171
175
  readonly name: string;
172
176
  readonly value: string | undefined;
173
177
  readonly required: boolean;
174
178
  };
175
179
  }
176
- type TimeFieldLabelStateProps = WithRefProps;
177
- declare class TimeFieldLabelState {
178
- readonly opts: TimeFieldLabelStateProps;
180
+ interface TimeFieldLabelStateOpts extends WithRefOpts {
181
+ }
182
+ export declare class TimeFieldLabelState {
183
+ static create(opts: TimeFieldLabelStateOpts): TimeFieldLabelState;
184
+ readonly opts: TimeFieldLabelStateOpts;
179
185
  readonly root: TimeFieldRootState;
180
- constructor(opts: TimeFieldLabelStateProps, root: TimeFieldRootState);
186
+ constructor(opts: TimeFieldLabelStateOpts, root: TimeFieldRootState);
181
187
  onclick(_: BitsMouseEvent): void;
182
- props: {
188
+ readonly props: {
183
189
  readonly id: string;
184
190
  readonly "data-invalid": "" | undefined;
185
191
  readonly "data-disabled": "" | undefined;
@@ -188,12 +194,12 @@ declare class TimeFieldLabelState {
188
194
  }
189
195
  declare abstract class BaseTimeSegmentState {
190
196
  #private;
191
- readonly opts: WithRefProps;
197
+ readonly opts: WithRefOpts;
192
198
  readonly root: TimeFieldRootState;
193
199
  readonly announcer: Announcer;
194
200
  readonly part: string;
195
201
  readonly config: SegmentConfig;
196
- constructor(opts: WithRefProps, root: TimeFieldRootState, part: string, config: SegmentConfig);
202
+ constructor(opts: WithRefOpts, root: TimeFieldRootState, part: string, config: SegmentConfig);
197
203
  onkeydown(e: BitsKeyboardEvent): void;
198
204
  onfocusout(_: BitsFocusEvent): void;
199
205
  getSegmentProps(): {
@@ -262,23 +268,24 @@ declare abstract class BaseTimeSegmentState {
262
268
  };
263
269
  }
264
270
  declare class TimeFieldHourSegmentState extends BaseTimeSegmentState {
265
- constructor(opts: WithRefProps, root: TimeFieldRootState);
271
+ constructor(opts: WithRefOpts, root: TimeFieldRootState);
266
272
  onkeydown(e: BitsKeyboardEvent): void;
267
273
  }
268
274
  declare class TimeFieldMinuteSegmentState extends BaseTimeSegmentState {
269
- constructor(opts: WithRefProps, root: TimeFieldRootState);
275
+ constructor(opts: WithRefOpts, root: TimeFieldRootState);
270
276
  }
271
277
  declare class TimeFieldSecondSegmentState extends BaseTimeSegmentState {
272
- constructor(opts: WithRefProps, root: TimeFieldRootState);
278
+ constructor(opts: WithRefOpts, root: TimeFieldRootState);
279
+ }
280
+ interface TimeFieldDayPeriodSegmentStateOpts extends WithRefOpts {
273
281
  }
274
- type TimeFieldDayPeriodSegmentStateProps = WithRefProps;
275
282
  declare class TimeFieldDayPeriodSegmentState {
276
283
  #private;
277
- readonly opts: TimeFieldDayPeriodSegmentStateProps;
284
+ readonly opts: TimeFieldDayPeriodSegmentStateOpts;
278
285
  readonly root: TimeFieldRootState;
279
- constructor(opts: TimeFieldDayPeriodSegmentStateProps, root: TimeFieldRootState);
286
+ constructor(opts: TimeFieldDayPeriodSegmentStateOpts, root: TimeFieldRootState);
280
287
  onkeydown(e: BitsKeyboardEvent): void;
281
- props: {
288
+ readonly props: {
282
289
  "aria-invalid": "true" | undefined;
283
290
  "aria-disabled": "true" | "false";
284
291
  "aria-readonly": "true" | "false";
@@ -334,12 +341,13 @@ declare class TimeFieldDayPeriodSegmentState {
334
341
  };
335
342
  } | undefined;
336
343
  }
337
- type TimeFieldLiteralSegmentStateProps = WithRefProps;
344
+ interface TimeFieldLiteralSegmentStateOpts extends WithRefOpts {
345
+ }
338
346
  declare class TimeFieldLiteralSegmentState {
339
- readonly opts: TimeFieldLiteralSegmentStateProps;
347
+ readonly opts: TimeFieldLiteralSegmentStateOpts;
340
348
  readonly root: TimeFieldRootState;
341
- constructor(opts: TimeFieldLiteralSegmentStateProps, root: TimeFieldRootState);
342
- props: {
349
+ constructor(opts: TimeFieldLiteralSegmentStateOpts, root: TimeFieldRootState);
350
+ readonly props: {
343
351
  readonly "aria-invalid": "true" | undefined;
344
352
  readonly "aria-disabled": "true" | "false";
345
353
  readonly "aria-readonly": "true" | "false";
@@ -366,11 +374,11 @@ declare class TimeFieldLiteralSegmentState {
366
374
  };
367
375
  }
368
376
  declare class TimeFieldTimeZoneSegmentState {
369
- readonly opts: TimeFieldLiteralSegmentStateProps;
377
+ readonly opts: TimeFieldLiteralSegmentStateOpts;
370
378
  readonly root: TimeFieldRootState;
371
- constructor(opts: TimeFieldLiteralSegmentStateProps, root: TimeFieldRootState);
379
+ constructor(opts: TimeFieldLiteralSegmentStateOpts, root: TimeFieldRootState);
372
380
  onkeydown(e: BitsKeyboardEvent): void;
373
- props: {
381
+ readonly props: {
374
382
  readonly "data-readonly": "" | undefined;
375
383
  readonly "aria-invalid": "true" | undefined;
376
384
  readonly "aria-disabled": "true" | "false";
@@ -407,9 +415,7 @@ declare class TimeFieldTimeZoneSegmentState {
407
415
  readonly onkeydown: (e: BitsKeyboardEvent) => void;
408
416
  };
409
417
  }
410
- export declare function useTimeFieldRoot<T extends TimeValue = Time>(props: TimeFieldRootStateProps<T>, rangeRoot?: TimeRangeFieldRootState<T>): TimeFieldRootState<Time>;
411
- export declare function useTimeFieldInput(props: TimeFieldInputStateProps): TimeFieldInputState;
412
- export declare function useTimeFieldHiddenInput(): TimeFieldHiddenInputState;
413
- export declare function useTimeFieldSegment(part: SegmentPart, props: WithRefProps): TimeFieldHourSegmentState | TimeFieldMinuteSegmentState | TimeFieldSecondSegmentState | TimeFieldDayPeriodSegmentState | TimeFieldLiteralSegmentState | TimeFieldTimeZoneSegmentState;
414
- export declare function useTimeFieldLabel(props: TimeFieldLabelStateProps): TimeFieldLabelState;
418
+ export declare class DateFieldSegmentState {
419
+ static create(part: SegmentPart, opts: WithRefOpts): TimeFieldHourSegmentState | TimeFieldMinuteSegmentState | TimeFieldSecondSegmentState | TimeFieldDayPeriodSegmentState | TimeFieldLiteralSegmentState | TimeFieldTimeZoneSegmentState;
420
+ }
415
421
  export {};
@@ -1,5 +1,5 @@
1
1
  import { CalendarDateTime, Time, ZonedDateTime } from "@internationalized/date";
2
- import { onDestroyEffect, attachRef, box, DOMContext } from "svelte-toolbelt";
2
+ import { onDestroyEffect, attachRef, box, DOMContext, } from "svelte-toolbelt";
3
3
  import { onMount, untrack } from "svelte";
4
4
  import { Context, watch } from "runed";
5
5
  import { createBitsAttrs, getAriaDisabled, getAriaHidden, getAriaInvalid, getAriaReadonly, getDataDisabled, getDataInvalid, getDataReadonly, } from "../../internal/attrs.js";
@@ -17,6 +17,7 @@ export const timeFieldAttrs = createBitsAttrs({
17
17
  component: "time-field",
18
18
  parts: ["input", "label"],
19
19
  });
20
+ const TimeFieldRootContext = new Context("TimeField.Root");
20
21
  const SEGMENT_CONFIGS = {
21
22
  hour: {
22
23
  min: (root) => (root.hourCycle === 12 ? 1 : 0),
@@ -47,6 +48,9 @@ const SEGMENT_CONFIGS = {
47
48
  },
48
49
  };
49
50
  export class TimeFieldRootState {
51
+ static create(opts, rangeRoot) {
52
+ return TimeFieldRootContext.set(new TimeFieldRootState(opts, rangeRoot));
53
+ }
50
54
  value;
51
55
  placeholder;
52
56
  validate;
@@ -452,6 +456,9 @@ export class TimeFieldRootState {
452
456
  }
453
457
  }
454
458
  export class TimeFieldInputState {
459
+ static create(opts) {
460
+ return new TimeFieldInputState(opts, TimeFieldRootContext.get());
461
+ }
455
462
  opts;
456
463
  root;
457
464
  domContext;
@@ -484,7 +491,10 @@ export class TimeFieldInputState {
484
491
  ...attachRef(this.opts.ref, (v) => this.root.setFieldNode(v)),
485
492
  }));
486
493
  }
487
- class TimeFieldHiddenInputState {
494
+ export class TimeFieldHiddenInputState {
495
+ static create() {
496
+ return new TimeFieldHiddenInputState(TimeFieldRootContext.get());
497
+ }
488
498
  root;
489
499
  shouldRender = $derived.by(() => this.root.name !== "");
490
500
  isoValue = $derived.by(() => this.root.value.current ? getISOTimeValue(this.root.value.current) : undefined);
@@ -497,7 +507,10 @@ class TimeFieldHiddenInputState {
497
507
  required: this.root.required.current,
498
508
  }));
499
509
  }
500
- class TimeFieldLabelState {
510
+ export class TimeFieldLabelState {
511
+ static create(opts) {
512
+ return new TimeFieldLabelState(opts, TimeFieldRootContext.get());
513
+ }
501
514
  opts;
502
515
  root;
503
516
  constructor(opts, root) {
@@ -924,6 +937,27 @@ class TimeFieldTimeZoneSegmentState {
924
937
  ...attachRef(this.opts.ref),
925
938
  }));
926
939
  }
940
+ export class DateFieldSegmentState {
941
+ static create(part, opts) {
942
+ const root = TimeFieldRootContext.get();
943
+ switch (part) {
944
+ case "hour":
945
+ return new TimeFieldHourSegmentState(opts, root);
946
+ case "minute":
947
+ return new TimeFieldMinuteSegmentState(opts, root);
948
+ case "second":
949
+ return new TimeFieldSecondSegmentState(opts, root);
950
+ case "dayPeriod":
951
+ return new TimeFieldDayPeriodSegmentState(opts, root);
952
+ case "literal":
953
+ return new TimeFieldLiteralSegmentState(opts, root);
954
+ case "timeZoneName":
955
+ return new TimeFieldTimeZoneSegmentState(opts, root);
956
+ default:
957
+ throw new Error(`Invalid part: ${part}`);
958
+ }
959
+ }
960
+ }
927
961
  // Utils/helpers
928
962
  function isAcceptableDayPeriodKey(key) {
929
963
  return (isAcceptableSegmentKey(key) ||
@@ -941,42 +975,3 @@ function isArrowDown(key) {
941
975
  function isBackspace(key) {
942
976
  return key === kbd.BACKSPACE;
943
977
  }
944
- const TimeFieldRootContext = new Context("TimeField.Root");
945
- export function useTimeFieldRoot(props, rangeRoot) {
946
- return TimeFieldRootContext.set(new TimeFieldRootState(props, rangeRoot));
947
- }
948
- export function useTimeFieldInput(props) {
949
- return new TimeFieldInputState(props, TimeFieldRootContext.get());
950
- }
951
- export function useTimeFieldHiddenInput() {
952
- return new TimeFieldHiddenInputState(TimeFieldRootContext.get());
953
- }
954
- export function useTimeFieldSegment(part, props) {
955
- return segmentPartToInstance({
956
- part,
957
- segmentProps: props,
958
- root: TimeFieldRootContext.get(),
959
- });
960
- }
961
- export function useTimeFieldLabel(props) {
962
- return new TimeFieldLabelState(props, TimeFieldRootContext.get());
963
- }
964
- function segmentPartToInstance(props) {
965
- switch (props.part) {
966
- case "hour":
967
- return new TimeFieldHourSegmentState(props.segmentProps, props.root);
968
- case "minute":
969
- return new TimeFieldMinuteSegmentState(props.segmentProps, props.root);
970
- case "second":
971
- return new TimeFieldSecondSegmentState(props.segmentProps, props.root);
972
- case "dayPeriod":
973
- return new TimeFieldDayPeriodSegmentState(props.segmentProps, props.root);
974
- case "literal":
975
- return new TimeFieldLiteralSegmentState(props.segmentProps, props.root);
976
- case "timeZoneName":
977
- return new TimeFieldTimeZoneSegmentState(props.segmentProps, props.root);
978
- default:
979
- // For any date-related parts that shouldn't appear in time field
980
- throw new Error(`Invalid segment part for time field: ${props.part}`);
981
- }
982
- }
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { TimeRangeFieldInputProps } from "../types.js";
4
- import { useTimeRangeFieldInput } from "../time-range-field.svelte.js";
4
+ import { TimeRangeFieldInputState } from "../time-range-field.svelte.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
  import TimeFieldHiddenInput from "../../time-field/components/time-field-hidden-input.svelte";
7
7
 
@@ -17,7 +17,7 @@
17
17
  ...restProps
18
18
  }: TimeRangeFieldInputProps = $props();
19
19
 
20
- const inputState = useTimeRangeFieldInput(
20
+ const inputState = TimeRangeFieldInputState.create(
21
21
  {
22
22
  id: box.with(() => id),
23
23
  ref: box.with(
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
- import { useTimeRangeFieldLabel } from "../time-range-field.svelte.js";
3
+ import { TimeRangeFieldLabelState } from "../time-range-field.svelte.js";
4
4
  import type { TimeRangeFieldLabelProps } from "../types.js";
5
5
  import { createId } from "../../../internal/create-id.js";
6
6
 
@@ -14,7 +14,7 @@
14
14
  ...restProps
15
15
  }: TimeRangeFieldLabelProps = $props();
16
16
 
17
- const labelState = useTimeRangeFieldLabel({
17
+ const labelState = TimeRangeFieldLabelState.create({
18
18
  id: box.with(() => id),
19
19
  ref: box.with(
20
20
  () => ref,
@@ -8,7 +8,7 @@
8
8
  <script lang="ts" generics="T extends TimeValue = Time">
9
9
  import { watch } from "runed";
10
10
  import { box, mergeProps } from "svelte-toolbelt";
11
- import { useTimeRangeFieldRoot } from "../time-range-field.svelte.js";
11
+ import { TimeRangeFieldRootState } from "../time-range-field.svelte.js";
12
12
  import type { TimeRangeFieldRootProps } from "../types.js";
13
13
  import { createId } from "../../../internal/create-id.js";
14
14
  import { noop } from "../../../internal/noop.js";
@@ -84,7 +84,7 @@
84
84
  }
85
85
  );
86
86
 
87
- const rootState = useTimeRangeFieldRoot({
87
+ const rootState = TimeRangeFieldRootState.create({
88
88
  id: box.with(() => id),
89
89
  ref: box.with(
90
90
  () => ref,
@@ -1,20 +1,20 @@
1
1
  import type { Time } from "@internationalized/date";
2
- import { DOMContext } from "svelte-toolbelt";
2
+ import { DOMContext, type ReadableBoxedValues, type WritableBoxedValues } from "svelte-toolbelt";
3
3
  import { Context } from "runed";
4
- import type { TimeFieldRootState } from "../time-field/time-field.svelte.js";
4
+ import { TimeFieldRootState } from "../time-field/time-field.svelte.js";
5
5
  import { TimeFieldInputState } from "../time-field/time-field.svelte.js";
6
- import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
7
6
  import type { TimeSegmentPart } from "../../shared/index.js";
8
- import type { WithRefProps } from "../../internal/types.js";
7
+ import type { WithRefOpts } from "../../internal/types.js";
9
8
  import type { TimeGranularity, TimeOnInvalid, TimeRange, TimeRangeValidator, TimeValue } from "../../shared/date/types.js";
10
9
  import { type TimeFormatter } from "../../internal/date-time/formatter.js";
11
- export declare const timeRangeFieldAttrs: import("../../internal/attrs.js").BitsAttrs<readonly ["root", "label"]>;
12
- type TimeRangeFieldRootStateProps<T extends TimeValue = Time> = WithRefProps<WritableBoxedValues<{
10
+ export declare const timeRangeFieldAttrs: import("../../internal/attrs.js").CreateBitsAttrsReturn<readonly ["root", "label"]>;
11
+ export declare const TimeRangeFieldRootContext: Context<TimeRangeFieldRootState<Time>>;
12
+ interface TimeRangeFieldRootStateOpts<T extends TimeValue = Time> extends WithRefOpts, WritableBoxedValues<{
13
13
  value: TimeRange<T>;
14
14
  placeholder: TimeValue;
15
15
  startValue: T | undefined;
16
16
  endValue: T | undefined;
17
- }> & ReadableBoxedValues<{
17
+ }>, ReadableBoxedValues<{
18
18
  readonlySegments: TimeSegmentPart[];
19
19
  validate: TimeRangeValidator<T> | undefined;
20
20
  onInvalid: TimeOnInvalid | undefined;
@@ -28,10 +28,12 @@ type TimeRangeFieldRootStateProps<T extends TimeValue = Time> = WithRefProps<Wri
28
28
  hideTimeZone: boolean;
29
29
  required: boolean;
30
30
  errorMessageId: string | undefined;
31
- }>>;
31
+ }> {
32
+ }
32
33
  export declare class TimeRangeFieldRootState<T extends TimeValue = Time> {
33
34
  #private;
34
- readonly opts: TimeRangeFieldRootStateProps<T>;
35
+ static create<T extends TimeValue = Time>(opts: TimeRangeFieldRootStateOpts<T>): TimeRangeFieldRootState<Time>;
36
+ readonly opts: TimeRangeFieldRootStateOpts<T>;
35
37
  startFieldState: TimeFieldRootState | undefined;
36
38
  endFieldState: TimeFieldRootState | undefined;
37
39
  descriptionId: string;
@@ -39,16 +41,16 @@ export declare class TimeRangeFieldRootState<T extends TimeValue = Time> {
39
41
  fieldNode: HTMLElement | null;
40
42
  labelNode: HTMLElement | null;
41
43
  descriptionNode: HTMLElement | null;
42
- startValueComplete: boolean;
43
- endValueComplete: boolean;
44
- rangeComplete: boolean;
45
- startValueTime: Time | undefined;
46
- endValueTime: Time | undefined;
47
- minValueTime: Time | undefined;
48
- maxValueTime: Time | undefined;
44
+ readonly startValueComplete: boolean;
45
+ readonly endValueComplete: boolean;
46
+ readonly rangeComplete: boolean;
47
+ readonly startValueTime: Time | undefined;
48
+ readonly endValueTime: Time | undefined;
49
+ readonly minValueTime: Time | undefined;
50
+ readonly maxValueTime: Time | undefined;
49
51
  domContext: DOMContext;
50
- constructor(opts: TimeRangeFieldRootStateProps<T>);
51
- validationStatus: false | {
52
+ constructor(opts: TimeRangeFieldRootStateOpts<T>);
53
+ readonly validationStatus: false | {
52
54
  readonly reason: "custom";
53
55
  readonly message: string | string[];
54
56
  } | {
@@ -58,33 +60,35 @@ export declare class TimeRangeFieldRootState<T extends TimeValue = Time> {
58
60
  readonly reason: "max";
59
61
  readonly message?: undefined;
60
62
  };
61
- isInvalid: boolean;
63
+ readonly isInvalid: boolean;
62
64
  props: {
63
65
  readonly id: string;
64
66
  readonly role: "group";
65
67
  readonly "data-invalid": "" | undefined;
66
68
  };
67
69
  }
68
- type TimeRangeFieldLabelStateProps = WithRefProps;
69
- declare class TimeRangeFieldLabelState {
70
+ interface TimeRangeFieldLabelStateOpts extends WithRefOpts {
71
+ }
72
+ export declare class TimeRangeFieldLabelState {
70
73
  #private;
71
- readonly opts: TimeRangeFieldLabelStateProps;
74
+ static create(opts: TimeRangeFieldLabelStateOpts): TimeRangeFieldLabelState;
75
+ readonly opts: TimeRangeFieldLabelStateOpts;
72
76
  readonly root: TimeRangeFieldRootState;
73
- constructor(opts: TimeRangeFieldLabelStateProps, root: TimeRangeFieldRootState);
74
- props: {
77
+ constructor(opts: TimeRangeFieldLabelStateOpts, root: TimeRangeFieldRootState);
78
+ readonly props: {
75
79
  readonly id: string;
76
80
  readonly "data-invalid": "" | undefined;
77
81
  readonly "data-disabled": "" | undefined;
78
82
  readonly onclick: () => void;
79
83
  };
80
84
  }
81
- type TimeRangeFieldInputStateProps<T extends TimeValue = Time> = WritableBoxedValues<{
85
+ interface TimeRangeFieldInputStateOpts<T extends TimeValue = Time> extends WritableBoxedValues<{
82
86
  value: T | undefined;
83
- }> & ReadableBoxedValues<{
87
+ }>, ReadableBoxedValues<{
84
88
  name: string;
85
- }> & WithRefProps;
86
- export declare const TimeRangeFieldRootContext: Context<TimeRangeFieldRootState<Time>>;
87
- export declare function useTimeRangeFieldRoot<T extends TimeValue = Time>(props: TimeRangeFieldRootStateProps<T>): TimeRangeFieldRootState<Time>;
88
- export declare function useTimeRangeFieldLabel(props: TimeRangeFieldLabelStateProps): TimeRangeFieldLabelState;
89
- export declare function useTimeRangeFieldInput(props: Omit<TimeRangeFieldInputStateProps, "value">, type: "start" | "end"): TimeFieldInputState;
89
+ }>, WithRefOpts {
90
+ }
91
+ export declare class TimeRangeFieldInputState {
92
+ static create(opts: Omit<TimeRangeFieldInputStateOpts, "value">, type: "start" | "end"): TimeFieldInputState;
93
+ }
90
94
  export {};
@@ -1,6 +1,7 @@
1
- import { box, onDestroyEffect, attachRef, DOMContext } from "svelte-toolbelt";
1
+ import { box, onDestroyEffect, attachRef, DOMContext, } from "svelte-toolbelt";
2
2
  import { Context, watch } from "runed";
3
- import { TimeFieldInputState, useTimeFieldRoot } from "../time-field/time-field.svelte.js";
3
+ import { TimeFieldRootState } from "../time-field/time-field.svelte.js";
4
+ import { TimeFieldInputState } from "../time-field/time-field.svelte.js";
4
5
  import { useId } from "../../internal/use-id.js";
5
6
  import { createBitsAttrs, getDataDisabled, getDataInvalid } from "../../internal/attrs.js";
6
7
  import { createTimeFormatter } from "../../internal/date-time/formatter.js";
@@ -11,7 +12,11 @@ export const timeRangeFieldAttrs = createBitsAttrs({
11
12
  component: "time-range-field",
12
13
  parts: ["root", "label"],
13
14
  });
15
+ export const TimeRangeFieldRootContext = new Context("TimeRangeField.Root");
14
16
  export class TimeRangeFieldRootState {
17
+ static create(opts) {
18
+ return TimeRangeFieldRootContext.set(new TimeRangeFieldRootState(opts));
19
+ }
15
20
  opts;
16
21
  startFieldState = undefined;
17
22
  endFieldState = undefined;
@@ -158,7 +163,10 @@ export class TimeRangeFieldRootState {
158
163
  ...attachRef(this.opts.ref, (v) => (this.fieldNode = v)),
159
164
  }));
160
165
  }
161
- class TimeRangeFieldLabelState {
166
+ export class TimeRangeFieldLabelState {
167
+ static create(opts) {
168
+ return new TimeRangeFieldLabelState(opts, TimeRangeFieldRootContext.get());
169
+ }
162
170
  opts;
163
171
  root;
164
172
  constructor(opts, root) {
@@ -175,7 +183,6 @@ class TimeRangeFieldLabelState {
175
183
  };
176
184
  props = $derived.by(() => ({
177
185
  id: this.opts.id.current,
178
- // TODO: invalid state for field
179
186
  "data-invalid": getDataInvalid(this.root.isInvalid),
180
187
  "data-disabled": getDataDisabled(this.root.opts.disabled.current),
181
188
  [timeRangeFieldAttrs.label]: "",
@@ -183,32 +190,27 @@ class TimeRangeFieldLabelState {
183
190
  ...attachRef(this.opts.ref, (v) => (this.root.labelNode = v)),
184
191
  }));
185
192
  }
186
- export const TimeRangeFieldRootContext = new Context("TimeRangeField.Root");
187
- export function useTimeRangeFieldRoot(props) {
188
- return TimeRangeFieldRootContext.set(new TimeRangeFieldRootState(props));
189
- }
190
- export function useTimeRangeFieldLabel(props) {
191
- return new TimeRangeFieldLabelState(props, TimeRangeFieldRootContext.get());
192
- }
193
- export function useTimeRangeFieldInput(props, type) {
194
- const root = TimeRangeFieldRootContext.get();
195
- const fieldState = useTimeFieldRoot({
196
- value: type === "start" ? root.opts.startValue : root.opts.endValue,
197
- disabled: root.opts.disabled,
198
- readonly: root.opts.readonly,
199
- readonlySegments: root.opts.readonlySegments,
200
- validate: box.with(() => undefined),
201
- minValue: root.opts.minValue,
202
- maxValue: root.opts.maxValue,
203
- hourCycle: root.opts.hourCycle,
204
- locale: root.opts.locale,
205
- hideTimeZone: root.opts.hideTimeZone,
206
- required: root.opts.required,
207
- granularity: root.opts.granularity,
208
- placeholder: root.opts.placeholder,
209
- onInvalid: root.opts.onInvalid,
210
- errorMessageId: root.opts.errorMessageId,
211
- isInvalidProp: box.with(() => root.isInvalid),
212
- }, root);
213
- return new TimeFieldInputState({ name: props.name, id: props.id, ref: props.ref }, fieldState);
193
+ export class TimeRangeFieldInputState {
194
+ static create(opts, type) {
195
+ const root = TimeRangeFieldRootContext.get();
196
+ const fieldState = TimeFieldRootState.create({
197
+ value: type === "start" ? root.opts.startValue : root.opts.endValue,
198
+ disabled: root.opts.disabled,
199
+ readonly: root.opts.readonly,
200
+ readonlySegments: root.opts.readonlySegments,
201
+ validate: box.with(() => undefined),
202
+ minValue: root.opts.minValue,
203
+ maxValue: root.opts.maxValue,
204
+ hourCycle: root.opts.hourCycle,
205
+ locale: root.opts.locale,
206
+ hideTimeZone: root.opts.hideTimeZone,
207
+ required: root.opts.required,
208
+ granularity: root.opts.granularity,
209
+ placeholder: root.opts.placeholder,
210
+ onInvalid: root.opts.onInvalid,
211
+ errorMessageId: root.opts.errorMessageId,
212
+ isInvalidProp: box.with(() => root.isInvalid),
213
+ }, root);
214
+ return new TimeFieldInputState({ name: opts.name, id: opts.id, ref: opts.ref }, fieldState);
215
+ }
214
216
  }