bits-ui 1.0.0-next.6 → 1.0.0-next.61

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 (760) hide show
  1. package/dist/app.d.ts +15 -0
  2. package/dist/bits/accordion/accordion.svelte.d.ts +7 -9
  3. package/dist/bits/accordion/accordion.svelte.js +25 -19
  4. package/dist/bits/accordion/components/accordion-content.svelte +3 -4
  5. package/dist/bits/accordion/components/accordion-header.svelte +2 -3
  6. package/dist/bits/accordion/components/accordion-item.svelte +2 -3
  7. package/dist/bits/accordion/components/accordion-trigger.svelte +2 -3
  8. package/dist/bits/accordion/components/accordion.svelte +5 -6
  9. package/dist/bits/accordion/components/accordion.svelte.d.ts +2 -2
  10. package/dist/bits/accordion/exports.d.ts +6 -0
  11. package/dist/bits/accordion/exports.js +5 -0
  12. package/dist/bits/accordion/index.d.ts +1 -6
  13. package/dist/bits/accordion/index.js +1 -5
  14. package/dist/bits/accordion/types.d.ts +9 -9
  15. package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +7 -9
  16. package/dist/bits/alert-dialog/components/alert-dialog-action.svelte.d.ts +1 -1
  17. package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +6 -5
  18. package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte.d.ts +1 -1
  19. package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +20 -17
  20. package/dist/bits/alert-dialog/components/alert-dialog.svelte +3 -3
  21. package/dist/bits/alert-dialog/exports.d.ts +10 -0
  22. package/dist/bits/alert-dialog/exports.js +9 -0
  23. package/dist/bits/alert-dialog/index.d.ts +1 -10
  24. package/dist/bits/alert-dialog/index.js +1 -9
  25. package/dist/bits/alert-dialog/types.d.ts +1 -1
  26. package/dist/bits/aspect-ratio/aspect-ratio.svelte.js +1 -1
  27. package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +4 -5
  28. package/dist/bits/aspect-ratio/components/aspect-ratio.svelte.d.ts +2 -2
  29. package/dist/bits/aspect-ratio/exports.d.ts +2 -0
  30. package/dist/bits/aspect-ratio/exports.js +1 -0
  31. package/dist/bits/aspect-ratio/index.d.ts +1 -2
  32. package/dist/bits/aspect-ratio/index.js +1 -1
  33. package/dist/bits/aspect-ratio/types.d.ts +3 -3
  34. package/dist/bits/avatar/avatar.svelte.d.ts +9 -7
  35. package/dist/bits/avatar/avatar.svelte.js +37 -27
  36. package/dist/bits/avatar/components/avatar-fallback.svelte +4 -5
  37. package/dist/bits/avatar/components/avatar-fallback.svelte.d.ts +2 -2
  38. package/dist/bits/avatar/components/avatar-image.svelte +14 -5
  39. package/dist/bits/avatar/components/avatar-image.svelte.d.ts +2 -2
  40. package/dist/bits/avatar/components/avatar.svelte +4 -5
  41. package/dist/bits/avatar/components/avatar.svelte.d.ts +2 -2
  42. package/dist/bits/avatar/exports.d.ts +4 -0
  43. package/dist/bits/avatar/exports.js +3 -0
  44. package/dist/bits/avatar/index.d.ts +1 -4
  45. package/dist/bits/avatar/index.js +1 -3
  46. package/dist/bits/avatar/types.d.ts +4 -4
  47. package/dist/bits/button/components/button.svelte +2 -2
  48. package/dist/bits/button/components/button.svelte.d.ts +3 -3
  49. package/dist/bits/button/exports.d.ts +2 -0
  50. package/dist/bits/button/exports.js +1 -0
  51. package/dist/bits/button/index.d.ts +1 -2
  52. package/dist/bits/button/index.js +1 -1
  53. package/dist/bits/button/types.d.ts +4 -4
  54. package/dist/bits/calendar/calendar.svelte.d.ts +24 -71
  55. package/dist/bits/calendar/calendar.svelte.js +55 -77
  56. package/dist/bits/calendar/components/calendar-cell.svelte +4 -5
  57. package/dist/bits/calendar/components/calendar-cell.svelte.d.ts +2 -2
  58. package/dist/bits/calendar/components/calendar-day.svelte +10 -5
  59. package/dist/bits/calendar/components/calendar-day.svelte.d.ts +2 -2
  60. package/dist/bits/calendar/components/calendar-grid-body.svelte +4 -5
  61. package/dist/bits/calendar/components/calendar-grid-body.svelte.d.ts +2 -2
  62. package/dist/bits/calendar/components/calendar-grid-head.svelte +4 -5
  63. package/dist/bits/calendar/components/calendar-grid-head.svelte.d.ts +2 -2
  64. package/dist/bits/calendar/components/calendar-grid-row.svelte +4 -5
  65. package/dist/bits/calendar/components/calendar-grid-row.svelte.d.ts +2 -2
  66. package/dist/bits/calendar/components/calendar-grid.svelte +4 -5
  67. package/dist/bits/calendar/components/calendar-grid.svelte.d.ts +2 -2
  68. package/dist/bits/calendar/components/calendar-head-cell.svelte +4 -5
  69. package/dist/bits/calendar/components/calendar-head-cell.svelte.d.ts +2 -2
  70. package/dist/bits/calendar/components/calendar-header.svelte +4 -5
  71. package/dist/bits/calendar/components/calendar-header.svelte.d.ts +2 -2
  72. package/dist/bits/calendar/components/calendar-heading.svelte +4 -5
  73. package/dist/bits/calendar/components/calendar-heading.svelte.d.ts +2 -2
  74. package/dist/bits/calendar/components/calendar-next-button.svelte +4 -5
  75. package/dist/bits/calendar/components/calendar-next-button.svelte.d.ts +2 -2
  76. package/dist/bits/calendar/components/calendar-prev-button.svelte +4 -5
  77. package/dist/bits/calendar/components/calendar-prev-button.svelte.d.ts +2 -2
  78. package/dist/bits/calendar/components/calendar.svelte +22 -8
  79. package/dist/bits/calendar/components/calendar.svelte.d.ts +2 -2
  80. package/dist/bits/calendar/exports.d.ts +13 -0
  81. package/dist/bits/calendar/exports.js +12 -0
  82. package/dist/bits/calendar/index.d.ts +1 -13
  83. package/dist/bits/calendar/index.js +1 -12
  84. package/dist/bits/calendar/types.d.ts +15 -15
  85. package/dist/bits/checkbox/checkbox.svelte.d.ts +8 -5
  86. package/dist/bits/checkbox/checkbox.svelte.js +29 -17
  87. package/dist/bits/checkbox/components/checkbox.svelte +26 -6
  88. package/dist/bits/checkbox/components/checkbox.svelte.d.ts +3 -3
  89. package/dist/bits/checkbox/exports.d.ts +2 -0
  90. package/dist/bits/checkbox/exports.js +1 -0
  91. package/dist/bits/checkbox/index.d.ts +1 -2
  92. package/dist/bits/checkbox/index.js +1 -1
  93. package/dist/bits/checkbox/types.d.ts +25 -6
  94. package/dist/bits/collapsible/collapsible.svelte.d.ts +4 -4
  95. package/dist/bits/collapsible/collapsible.svelte.js +31 -14
  96. package/dist/bits/collapsible/components/collapsible-content.svelte +3 -4
  97. package/dist/bits/collapsible/components/collapsible-content.svelte.d.ts +3 -3
  98. package/dist/bits/collapsible/components/collapsible-trigger.svelte +4 -5
  99. package/dist/bits/collapsible/components/collapsible-trigger.svelte.d.ts +2 -2
  100. package/dist/bits/collapsible/components/collapsible.svelte +5 -6
  101. package/dist/bits/collapsible/components/collapsible.svelte.d.ts +3 -3
  102. package/dist/bits/collapsible/exports.d.ts +4 -0
  103. package/dist/bits/collapsible/exports.js +3 -0
  104. package/dist/bits/collapsible/index.d.ts +1 -4
  105. package/dist/bits/collapsible/index.js +1 -3
  106. package/dist/bits/collapsible/types.d.ts +6 -6
  107. package/dist/bits/combobox/components/combobox-input.svelte +6 -7
  108. package/dist/bits/combobox/components/combobox-input.svelte.d.ts +2 -2
  109. package/dist/bits/combobox/components/combobox-trigger.svelte +8 -8
  110. package/dist/bits/combobox/components/combobox-trigger.svelte.d.ts +2 -2
  111. package/dist/bits/combobox/components/combobox.svelte +17 -13
  112. package/dist/bits/combobox/components/combobox.svelte.d.ts +1 -1
  113. package/dist/bits/combobox/exports.d.ts +15 -0
  114. package/dist/bits/combobox/exports.js +14 -0
  115. package/dist/bits/combobox/index.d.ts +1 -8
  116. package/dist/bits/combobox/index.js +1 -7
  117. package/dist/bits/combobox/types.d.ts +3 -3
  118. package/dist/bits/command/command.svelte.d.ts +5 -13
  119. package/dist/bits/command/command.svelte.js +30 -47
  120. package/dist/bits/command/components/_command-label.svelte +2 -2
  121. package/dist/bits/command/components/_command-label.svelte.d.ts +2 -2
  122. package/dist/bits/command/components/command-empty.svelte +4 -5
  123. package/dist/bits/command/components/command-empty.svelte.d.ts +2 -2
  124. package/dist/bits/command/components/command-group-heading.svelte +4 -5
  125. package/dist/bits/command/components/command-group-heading.svelte.d.ts +2 -2
  126. package/dist/bits/command/components/command-group-items.svelte +4 -5
  127. package/dist/bits/command/components/command-group-items.svelte.d.ts +2 -2
  128. package/dist/bits/command/components/command-group.svelte +2 -3
  129. package/dist/bits/command/components/command-input.svelte +4 -5
  130. package/dist/bits/command/components/command-input.svelte.d.ts +2 -2
  131. package/dist/bits/command/components/command-item.svelte +5 -6
  132. package/dist/bits/command/components/command-item.svelte.d.ts +2 -2
  133. package/dist/bits/command/components/command-link-item.svelte +5 -6
  134. package/dist/bits/command/components/command-link-item.svelte.d.ts +2 -2
  135. package/dist/bits/command/components/command-list.svelte +4 -5
  136. package/dist/bits/command/components/command-list.svelte.d.ts +2 -2
  137. package/dist/bits/command/components/command-loading.svelte +4 -5
  138. package/dist/bits/command/components/command-loading.svelte.d.ts +2 -2
  139. package/dist/bits/command/components/command-separator.svelte +4 -5
  140. package/dist/bits/command/components/command-separator.svelte.d.ts +2 -2
  141. package/dist/bits/command/components/command-viewport.svelte +3 -3
  142. package/dist/bits/command/components/command-viewport.svelte.d.ts +2 -2
  143. package/dist/bits/command/components/command.svelte +5 -6
  144. package/dist/bits/command/components/command.svelte.d.ts +2 -2
  145. package/dist/bits/command/exports.d.ts +13 -0
  146. package/dist/bits/command/exports.js +12 -0
  147. package/dist/bits/command/index.d.ts +1 -13
  148. package/dist/bits/command/index.js +1 -12
  149. package/dist/bits/command/types.d.ts +13 -13
  150. package/dist/bits/context-menu/components/context-menu-content-static.svelte +80 -45
  151. package/dist/bits/context-menu/components/context-menu-content-static.svelte.d.ts +2 -2
  152. package/dist/bits/context-menu/components/context-menu-content.svelte +75 -51
  153. package/dist/bits/context-menu/components/context-menu-content.svelte.d.ts +2 -2
  154. package/dist/bits/context-menu/components/context-menu-trigger.svelte +4 -5
  155. package/dist/bits/context-menu/components/context-menu-trigger.svelte.d.ts +2 -2
  156. package/dist/bits/context-menu/components/context-menu.svelte +6 -6
  157. package/dist/bits/context-menu/components/context-menu.svelte.d.ts +1 -2
  158. package/dist/bits/context-menu/exports.d.ts +18 -0
  159. package/dist/bits/context-menu/exports.js +17 -0
  160. package/dist/bits/context-menu/index.d.ts +1 -18
  161. package/dist/bits/context-menu/index.js +1 -17
  162. package/dist/bits/context-menu/types.d.ts +3 -3
  163. package/dist/bits/date-field/components/date-field-input.svelte +4 -5
  164. package/dist/bits/date-field/components/date-field-input.svelte.d.ts +2 -2
  165. package/dist/bits/date-field/components/date-field-label.svelte +4 -5
  166. package/dist/bits/date-field/components/date-field-label.svelte.d.ts +2 -2
  167. package/dist/bits/date-field/components/date-field-segment.svelte +4 -5
  168. package/dist/bits/date-field/components/date-field-segment.svelte.d.ts +2 -2
  169. package/dist/bits/date-field/components/date-field.svelte +4 -4
  170. package/dist/bits/date-field/date-field.svelte.d.ts +43 -49
  171. package/dist/bits/date-field/date-field.svelte.js +94 -97
  172. package/dist/bits/date-field/exports.d.ts +5 -0
  173. package/dist/bits/date-field/exports.js +4 -0
  174. package/dist/bits/date-field/index.d.ts +1 -5
  175. package/dist/bits/date-field/index.js +1 -4
  176. package/dist/bits/date-field/types.d.ts +6 -7
  177. package/dist/bits/date-picker/components/date-picker-calendar.svelte +4 -5
  178. package/dist/bits/date-picker/components/date-picker-calendar.svelte.d.ts +2 -2
  179. package/dist/bits/date-picker/components/date-picker-content-static.svelte +8 -4
  180. package/dist/bits/date-picker/components/date-picker-content-static.svelte.d.ts +2 -2
  181. package/dist/bits/date-picker/components/date-picker-content.svelte +4 -4
  182. package/dist/bits/date-picker/components/date-picker-content.svelte.d.ts +2 -2
  183. package/dist/bits/date-picker/components/date-picker-trigger.svelte +7 -4
  184. package/dist/bits/date-picker/components/date-picker-trigger.svelte.d.ts +2 -2
  185. package/dist/bits/date-picker/components/date-picker.svelte +4 -4
  186. package/dist/bits/date-picker/date-picker.svelte.d.ts +2 -2
  187. package/dist/bits/date-picker/date-picker.svelte.js +1 -1
  188. package/dist/bits/date-picker/exports.d.ts +22 -0
  189. package/dist/bits/date-picker/exports.js +21 -0
  190. package/dist/bits/date-picker/index.d.ts +1 -22
  191. package/dist/bits/date-picker/index.js +1 -21
  192. package/dist/bits/date-picker/types.d.ts +4 -4
  193. package/dist/bits/date-range-field/components/date-range-field-input.svelte +4 -5
  194. package/dist/bits/date-range-field/components/date-range-field-input.svelte.d.ts +2 -2
  195. package/dist/bits/date-range-field/components/date-range-field-label.svelte +4 -5
  196. package/dist/bits/date-range-field/components/date-range-field-label.svelte.d.ts +2 -2
  197. package/dist/bits/date-range-field/components/date-range-field.svelte +6 -7
  198. package/dist/bits/date-range-field/components/date-range-field.svelte.d.ts +2 -2
  199. package/dist/bits/date-range-field/date-range-field.svelte.d.ts +5 -25
  200. package/dist/bits/date-range-field/date-range-field.svelte.js +30 -51
  201. package/dist/bits/date-range-field/exports.d.ts +5 -0
  202. package/dist/bits/date-range-field/exports.js +4 -0
  203. package/dist/bits/date-range-field/index.d.ts +1 -5
  204. package/dist/bits/date-range-field/index.js +1 -4
  205. package/dist/bits/date-range-field/types.d.ts +6 -6
  206. package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +4 -5
  207. package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte.d.ts +2 -2
  208. package/dist/bits/date-range-picker/components/date-range-picker-trigger.svelte +7 -4
  209. package/dist/bits/date-range-picker/components/date-range-picker-trigger.svelte.d.ts +2 -2
  210. package/dist/bits/date-range-picker/components/date-range-picker.svelte +9 -10
  211. package/dist/bits/date-range-picker/components/date-range-picker.svelte.d.ts +2 -2
  212. package/dist/bits/date-range-picker/date-range-picker.svelte.d.ts +2 -2
  213. package/dist/bits/date-range-picker/date-range-picker.svelte.js +1 -1
  214. package/dist/bits/date-range-picker/exports.d.ts +21 -0
  215. package/dist/bits/date-range-picker/exports.js +20 -0
  216. package/dist/bits/date-range-picker/index.d.ts +1 -21
  217. package/dist/bits/date-range-picker/index.js +1 -20
  218. package/dist/bits/date-range-picker/types.d.ts +5 -6
  219. package/dist/bits/dialog/components/dialog-close.svelte +6 -5
  220. package/dist/bits/dialog/components/dialog-content.svelte +20 -17
  221. package/dist/bits/dialog/components/dialog-content.svelte.d.ts +2 -2
  222. package/dist/bits/dialog/components/dialog-description.svelte +4 -5
  223. package/dist/bits/dialog/components/dialog-description.svelte.d.ts +2 -2
  224. package/dist/bits/dialog/components/dialog-overlay.svelte +4 -5
  225. package/dist/bits/dialog/components/dialog-overlay.svelte.d.ts +2 -2
  226. package/dist/bits/dialog/components/dialog-title.svelte +4 -5
  227. package/dist/bits/dialog/components/dialog-title.svelte.d.ts +2 -2
  228. package/dist/bits/dialog/components/dialog-trigger.svelte +6 -5
  229. package/dist/bits/dialog/components/dialog-trigger.svelte.d.ts +2 -2
  230. package/dist/bits/dialog/components/dialog.svelte +3 -3
  231. package/dist/bits/dialog/dialog.svelte.d.ts +35 -14
  232. package/dist/bits/dialog/dialog.svelte.js +133 -39
  233. package/dist/bits/dialog/exports.d.ts +9 -0
  234. package/dist/bits/dialog/exports.js +8 -0
  235. package/dist/bits/dialog/index.d.ts +1 -9
  236. package/dist/bits/dialog/index.js +1 -8
  237. package/dist/bits/dialog/types.d.ts +9 -10
  238. package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +67 -33
  239. package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte.d.ts +2 -2
  240. package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +64 -34
  241. package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte.d.ts +2 -2
  242. package/dist/bits/dropdown-menu/exports.d.ts +18 -0
  243. package/dist/bits/dropdown-menu/exports.js +17 -0
  244. package/dist/bits/dropdown-menu/index.d.ts +1 -18
  245. package/dist/bits/dropdown-menu/index.js +1 -17
  246. package/dist/bits/dropdown-menu/types.d.ts +1 -1
  247. package/dist/bits/index.d.ts +37 -38
  248. package/dist/bits/index.js +37 -38
  249. package/dist/bits/label/components/label.svelte +4 -5
  250. package/dist/bits/label/components/label.svelte.d.ts +2 -2
  251. package/dist/bits/label/exports.d.ts +2 -0
  252. package/dist/bits/label/exports.js +1 -0
  253. package/dist/bits/label/index.d.ts +1 -2
  254. package/dist/bits/label/index.js +1 -1
  255. package/dist/bits/label/label.svelte.js +1 -1
  256. package/dist/bits/label/types.d.ts +2 -2
  257. package/dist/bits/link-preview/components/link-preview-content-static.svelte +92 -34
  258. package/dist/bits/link-preview/components/link-preview-content-static.svelte.d.ts +2 -2
  259. package/dist/bits/link-preview/components/link-preview-content.svelte +71 -35
  260. package/dist/bits/link-preview/components/link-preview-content.svelte.d.ts +2 -2
  261. package/dist/bits/link-preview/components/link-preview-trigger.svelte +4 -5
  262. package/dist/bits/link-preview/components/link-preview-trigger.svelte.d.ts +2 -2
  263. package/dist/bits/link-preview/components/link-preview.svelte +3 -3
  264. package/dist/bits/link-preview/exports.d.ts +7 -0
  265. package/dist/bits/link-preview/exports.js +6 -0
  266. package/dist/bits/link-preview/index.d.ts +1 -7
  267. package/dist/bits/link-preview/index.js +1 -6
  268. package/dist/bits/link-preview/link-preview.svelte.d.ts +4 -3
  269. package/dist/bits/link-preview/link-preview.svelte.js +23 -16
  270. package/dist/bits/link-preview/types.d.ts +6 -6
  271. package/dist/bits/menu/components/menu-arrow.svelte +5 -5
  272. package/dist/bits/menu/components/menu-checkbox-item.svelte +23 -8
  273. package/dist/bits/menu/components/menu-checkbox-item.svelte.d.ts +3 -3
  274. package/dist/bits/menu/components/menu-content-static.svelte +73 -48
  275. package/dist/bits/menu/components/menu-content-static.svelte.d.ts +2 -2
  276. package/dist/bits/menu/components/menu-content.svelte +70 -48
  277. package/dist/bits/menu/components/menu-content.svelte.d.ts +2 -2
  278. package/dist/bits/menu/components/menu-group-heading.svelte +4 -5
  279. package/dist/bits/menu/components/menu-group-heading.svelte.d.ts +2 -2
  280. package/dist/bits/menu/components/menu-group.svelte +4 -5
  281. package/dist/bits/menu/components/menu-group.svelte.d.ts +2 -2
  282. package/dist/bits/menu/components/menu-item.svelte +7 -6
  283. package/dist/bits/menu/components/menu-item.svelte.d.ts +2 -2
  284. package/dist/bits/menu/components/menu-radio-group.svelte +5 -6
  285. package/dist/bits/menu/components/menu-radio-group.svelte.d.ts +2 -2
  286. package/dist/bits/menu/components/menu-radio-item.svelte +7 -6
  287. package/dist/bits/menu/components/menu-radio-item.svelte.d.ts +2 -2
  288. package/dist/bits/menu/components/menu-separator.svelte +4 -5
  289. package/dist/bits/menu/components/menu-separator.svelte.d.ts +2 -2
  290. package/dist/bits/menu/components/menu-sub-content-static.svelte +88 -53
  291. package/dist/bits/menu/components/menu-sub-content-static.svelte.d.ts +2 -2
  292. package/dist/bits/menu/components/menu-sub-content.svelte +82 -51
  293. package/dist/bits/menu/components/menu-sub-content.svelte.d.ts +2 -2
  294. package/dist/bits/menu/components/menu-sub-trigger.svelte +7 -8
  295. package/dist/bits/menu/components/menu-sub-trigger.svelte.d.ts +2 -2
  296. package/dist/bits/menu/components/menu-sub.svelte +6 -6
  297. package/dist/bits/menu/components/menu-sub.svelte.d.ts +1 -2
  298. package/dist/bits/menu/components/menu-trigger.svelte +7 -8
  299. package/dist/bits/menu/components/menu-trigger.svelte.d.ts +2 -2
  300. package/dist/bits/menu/components/menu.svelte +6 -6
  301. package/dist/bits/menu/menu.svelte.d.ts +22 -43
  302. package/dist/bits/menu/menu.svelte.js +94 -134
  303. package/dist/bits/menu/types.d.ts +62 -23
  304. package/dist/bits/menubar/components/menubar-content-static.svelte +4 -5
  305. package/dist/bits/menubar/components/menubar-content-static.svelte.d.ts +2 -2
  306. package/dist/bits/menubar/components/menubar-content.svelte +4 -5
  307. package/dist/bits/menubar/components/menubar-content.svelte.d.ts +2 -2
  308. package/dist/bits/menubar/components/menubar-menu.svelte +3 -3
  309. package/dist/bits/menubar/components/menubar-trigger.svelte +4 -5
  310. package/dist/bits/menubar/components/menubar-trigger.svelte.d.ts +2 -2
  311. package/dist/bits/menubar/components/menubar.svelte +5 -6
  312. package/dist/bits/menubar/components/menubar.svelte.d.ts +2 -2
  313. package/dist/bits/menubar/exports.d.ts +19 -0
  314. package/dist/bits/menubar/exports.js +17 -0
  315. package/dist/bits/menubar/index.d.ts +1 -19
  316. package/dist/bits/menubar/index.js +1 -17
  317. package/dist/bits/menubar/menubar.svelte.d.ts +2 -5
  318. package/dist/bits/menubar/menubar.svelte.js +8 -19
  319. package/dist/bits/menubar/types.d.ts +5 -5
  320. package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +5 -6
  321. package/dist/bits/navigation-menu/components/navigation-menu-content.svelte.d.ts +2 -2
  322. package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +4 -5
  323. package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte.d.ts +2 -2
  324. package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +4 -5
  325. package/dist/bits/navigation-menu/components/navigation-menu-item.svelte.d.ts +2 -2
  326. package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +5 -6
  327. package/dist/bits/navigation-menu/components/navigation-menu-link.svelte.d.ts +2 -2
  328. package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +4 -5
  329. package/dist/bits/navigation-menu/components/navigation-menu-list.svelte.d.ts +2 -2
  330. package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +4 -5
  331. package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte.d.ts +2 -2
  332. package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +4 -5
  333. package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte.d.ts +2 -2
  334. package/dist/bits/navigation-menu/components/navigation-menu.svelte +5 -6
  335. package/dist/bits/navigation-menu/components/navigation-menu.svelte.d.ts +2 -2
  336. package/dist/bits/navigation-menu/exports.d.ts +9 -0
  337. package/dist/bits/navigation-menu/exports.js +8 -0
  338. package/dist/bits/navigation-menu/index.d.ts +1 -9
  339. package/dist/bits/navigation-menu/index.js +1 -8
  340. package/dist/bits/navigation-menu/navigation-menu.svelte.d.ts +4 -14
  341. package/dist/bits/navigation-menu/navigation-menu.svelte.js +21 -57
  342. package/dist/bits/navigation-menu/types.d.ts +11 -12
  343. package/dist/bits/pagination/components/pagination-next-button.svelte +6 -5
  344. package/dist/bits/pagination/components/pagination-next-button.svelte.d.ts +2 -2
  345. package/dist/bits/pagination/components/pagination-page.svelte +6 -5
  346. package/dist/bits/pagination/components/pagination-page.svelte.d.ts +2 -2
  347. package/dist/bits/pagination/components/pagination-prev-button.svelte +6 -5
  348. package/dist/bits/pagination/components/pagination-prev-button.svelte.d.ts +2 -2
  349. package/dist/bits/pagination/components/pagination.svelte +5 -6
  350. package/dist/bits/pagination/components/pagination.svelte.d.ts +3 -3
  351. package/dist/bits/pagination/exports.d.ts +5 -0
  352. package/dist/bits/pagination/exports.js +4 -0
  353. package/dist/bits/pagination/index.d.ts +1 -5
  354. package/dist/bits/pagination/index.js +1 -4
  355. package/dist/bits/pagination/pagination.svelte.d.ts +14 -7
  356. package/dist/bits/pagination/pagination.svelte.js +76 -20
  357. package/dist/bits/pagination/types.d.ts +6 -5
  358. package/dist/bits/pin-input/components/pin-input-cell.svelte +4 -5
  359. package/dist/bits/pin-input/components/pin-input-cell.svelte.d.ts +2 -2
  360. package/dist/bits/pin-input/components/pin-input.svelte +7 -8
  361. package/dist/bits/pin-input/components/pin-input.svelte.d.ts +2 -2
  362. package/dist/bits/pin-input/exports.d.ts +3 -0
  363. package/dist/bits/pin-input/exports.js +2 -0
  364. package/dist/bits/pin-input/index.d.ts +1 -3
  365. package/dist/bits/pin-input/index.js +1 -2
  366. package/dist/bits/pin-input/pin-input.svelte.d.ts +5 -3
  367. package/dist/bits/pin-input/pin-input.svelte.js +58 -10
  368. package/dist/bits/pin-input/types.d.ts +3 -3
  369. package/dist/bits/pin-input/usePasswordManager.svelte.js +6 -6
  370. package/dist/bits/popover/components/popover-arrow.svelte +4 -4
  371. package/dist/bits/popover/components/popover-close.svelte +4 -5
  372. package/dist/bits/popover/components/popover-close.svelte.d.ts +2 -2
  373. package/dist/bits/popover/components/popover-content-static.svelte +73 -35
  374. package/dist/bits/popover/components/popover-content-static.svelte.d.ts +2 -2
  375. package/dist/bits/popover/components/popover-content.svelte +69 -35
  376. package/dist/bits/popover/components/popover-content.svelte.d.ts +2 -2
  377. package/dist/bits/popover/components/popover-trigger.svelte +9 -8
  378. package/dist/bits/popover/components/popover-trigger.svelte.d.ts +2 -2
  379. package/dist/bits/popover/components/popover.svelte +6 -6
  380. package/dist/bits/popover/exports.d.ts +9 -0
  381. package/dist/bits/popover/exports.js +7 -0
  382. package/dist/bits/popover/index.d.ts +1 -9
  383. package/dist/bits/popover/index.js +1 -7
  384. package/dist/bits/popover/popover.svelte.d.ts +12 -7
  385. package/dist/bits/popover/popover.svelte.js +40 -20
  386. package/dist/bits/popover/types.d.ts +8 -8
  387. package/dist/bits/progress/components/progress.svelte +4 -5
  388. package/dist/bits/progress/components/progress.svelte.d.ts +2 -2
  389. package/dist/bits/progress/exports.d.ts +2 -0
  390. package/dist/bits/progress/exports.js +1 -0
  391. package/dist/bits/progress/index.d.ts +1 -2
  392. package/dist/bits/progress/index.js +1 -1
  393. package/dist/bits/progress/progress.svelte.js +1 -1
  394. package/dist/bits/progress/types.d.ts +2 -2
  395. package/dist/bits/radio-group/components/radio-group-item.svelte +4 -5
  396. package/dist/bits/radio-group/components/radio-group-item.svelte.d.ts +2 -2
  397. package/dist/bits/radio-group/components/radio-group.svelte +6 -6
  398. package/dist/bits/radio-group/components/radio-group.svelte.d.ts +2 -2
  399. package/dist/bits/radio-group/exports.d.ts +3 -0
  400. package/dist/bits/radio-group/exports.js +2 -0
  401. package/dist/bits/radio-group/index.d.ts +1 -3
  402. package/dist/bits/radio-group/index.js +1 -2
  403. package/dist/bits/radio-group/radio-group.svelte.d.ts +8 -8
  404. package/dist/bits/radio-group/radio-group.svelte.js +26 -17
  405. package/dist/bits/radio-group/types.d.ts +3 -3
  406. package/dist/bits/range-calendar/components/range-calendar-cell.svelte +4 -5
  407. package/dist/bits/range-calendar/components/range-calendar-cell.svelte.d.ts +2 -2
  408. package/dist/bits/range-calendar/components/range-calendar-day.svelte +10 -5
  409. package/dist/bits/range-calendar/components/range-calendar-day.svelte.d.ts +2 -2
  410. package/dist/bits/range-calendar/components/range-calendar.svelte +6 -9
  411. package/dist/bits/range-calendar/components/range-calendar.svelte.d.ts +2 -2
  412. package/dist/bits/range-calendar/exports.d.ts +13 -0
  413. package/dist/bits/range-calendar/exports.js +12 -0
  414. package/dist/bits/range-calendar/index.d.ts +1 -13
  415. package/dist/bits/range-calendar/index.js +1 -12
  416. package/dist/bits/range-calendar/range-calendar.svelte.d.ts +7 -19
  417. package/dist/bits/range-calendar/range-calendar.svelte.js +32 -49
  418. package/dist/bits/range-calendar/types.d.ts +3 -4
  419. package/dist/bits/scroll-area/components/scroll-area-corner-impl.svelte +3 -4
  420. package/dist/bits/scroll-area/components/scroll-area-corner-impl.svelte.d.ts +2 -2
  421. package/dist/bits/scroll-area/components/scroll-area-corner.svelte +3 -3
  422. package/dist/bits/scroll-area/components/scroll-area-corner.svelte.d.ts +2 -2
  423. package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +2 -2
  424. package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +2 -2
  425. package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +2 -2
  426. package/dist/bits/scroll-area/components/scroll-area-scrollbar-shared.svelte +1 -1
  427. package/dist/bits/scroll-area/components/scroll-area-scrollbar-x.svelte +2 -3
  428. package/dist/bits/scroll-area/components/scroll-area-scrollbar-y.svelte +2 -3
  429. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +3 -3
  430. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte.d.ts +2 -2
  431. package/dist/bits/scroll-area/components/scroll-area-thumb-impl.svelte +3 -4
  432. package/dist/bits/scroll-area/components/scroll-area-thumb-impl.svelte.d.ts +2 -2
  433. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +4 -4
  434. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte.d.ts +2 -2
  435. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +18 -5
  436. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte.d.ts +2 -2
  437. package/dist/bits/scroll-area/components/scroll-area.svelte +4 -5
  438. package/dist/bits/scroll-area/components/scroll-area.svelte.d.ts +2 -2
  439. package/dist/bits/scroll-area/exports.d.ts +6 -0
  440. package/dist/bits/scroll-area/exports.js +5 -0
  441. package/dist/bits/scroll-area/index.d.ts +1 -6
  442. package/dist/bits/scroll-area/index.js +1 -5
  443. package/dist/bits/scroll-area/scroll-area.svelte.d.ts +15 -21
  444. package/dist/bits/scroll-area/scroll-area.svelte.js +40 -68
  445. package/dist/bits/scroll-area/types.d.ts +6 -6
  446. package/dist/bits/select/components/select-content-static.svelte +103 -0
  447. package/dist/bits/{listbox/components/listbox-group-label.svelte.d.ts → select/components/select-content-static.svelte.d.ts} +4 -4
  448. package/dist/bits/select/components/select-content.svelte +83 -36
  449. package/dist/bits/select/components/select-content.svelte.d.ts +2 -2
  450. package/dist/bits/select/components/select-group-heading.svelte +7 -8
  451. package/dist/bits/select/components/select-group-heading.svelte.d.ts +2 -2
  452. package/dist/bits/select/components/select-group.svelte +7 -7
  453. package/dist/bits/select/components/select-group.svelte.d.ts +2 -2
  454. package/dist/bits/{listbox/components/listbox-hidden-input.svelte → select/components/select-hidden-input.svelte} +4 -4
  455. package/dist/bits/{listbox/components/listbox-hidden-input.svelte.d.ts → select/components/select-hidden-input.svelte.d.ts} +4 -4
  456. package/dist/bits/select/components/select-item.svelte +24 -13
  457. package/dist/bits/select/components/select-item.svelte.d.ts +2 -2
  458. package/dist/bits/select/components/select-scroll-down-button.svelte +22 -12
  459. package/dist/bits/select/components/select-scroll-down-button.svelte.d.ts +2 -2
  460. package/dist/bits/select/components/select-scroll-up-button.svelte +24 -14
  461. package/dist/bits/select/components/select-scroll-up-button.svelte.d.ts +2 -2
  462. package/dist/bits/select/components/select-trigger.svelte +7 -9
  463. package/dist/bits/select/components/select-trigger.svelte.d.ts +2 -2
  464. package/dist/bits/select/components/select-viewport.svelte +14 -5
  465. package/dist/bits/select/components/select-viewport.svelte.d.ts +2 -2
  466. package/dist/bits/select/components/select.svelte +59 -59
  467. package/dist/bits/select/components/select.svelte.d.ts +1 -1
  468. package/dist/bits/select/exports.d.ts +12 -0
  469. package/dist/bits/select/exports.js +11 -0
  470. package/dist/bits/select/index.d.ts +1 -15
  471. package/dist/bits/select/index.js +1 -14
  472. package/dist/bits/select/select.svelte.d.ts +282 -271
  473. package/dist/bits/select/select.svelte.js +796 -872
  474. package/dist/bits/select/types.d.ts +137 -83
  475. package/dist/bits/separator/components/separator.svelte +4 -5
  476. package/dist/bits/separator/components/separator.svelte.d.ts +2 -2
  477. package/dist/bits/separator/exports.d.ts +2 -0
  478. package/dist/bits/separator/exports.js +1 -0
  479. package/dist/bits/separator/index.d.ts +1 -2
  480. package/dist/bits/separator/index.js +1 -1
  481. package/dist/bits/separator/separator.svelte.js +1 -1
  482. package/dist/bits/separator/types.d.ts +2 -2
  483. package/dist/bits/slider/components/slider-range.svelte +4 -5
  484. package/dist/bits/slider/components/slider-range.svelte.d.ts +2 -2
  485. package/dist/bits/slider/components/slider-thumb.svelte +4 -5
  486. package/dist/bits/slider/components/slider-thumb.svelte.d.ts +2 -2
  487. package/dist/bits/slider/components/slider-tick.svelte +4 -5
  488. package/dist/bits/slider/components/slider-tick.svelte.d.ts +2 -2
  489. package/dist/bits/slider/components/slider.svelte +7 -8
  490. package/dist/bits/slider/components/slider.svelte.d.ts +2 -2
  491. package/dist/bits/slider/exports.d.ts +5 -0
  492. package/dist/bits/slider/exports.js +4 -0
  493. package/dist/bits/slider/index.d.ts +1 -5
  494. package/dist/bits/slider/index.js +1 -4
  495. package/dist/bits/slider/slider.svelte.d.ts +6 -8
  496. package/dist/bits/slider/slider.svelte.js +19 -22
  497. package/dist/bits/slider/types.d.ts +8 -7
  498. package/dist/bits/switch/components/switch-thumb.svelte +4 -5
  499. package/dist/bits/switch/components/switch-thumb.svelte.d.ts +2 -2
  500. package/dist/bits/switch/components/switch.svelte +5 -6
  501. package/dist/bits/switch/components/switch.svelte.d.ts +2 -2
  502. package/dist/bits/switch/exports.d.ts +3 -0
  503. package/dist/bits/switch/exports.js +2 -0
  504. package/dist/bits/switch/index.d.ts +1 -3
  505. package/dist/bits/switch/index.js +1 -2
  506. package/dist/bits/switch/switch.svelte.d.ts +3 -5
  507. package/dist/bits/switch/switch.svelte.js +6 -13
  508. package/dist/bits/switch/types.d.ts +3 -3
  509. package/dist/bits/tabs/components/tabs-content.svelte +4 -5
  510. package/dist/bits/tabs/components/tabs-content.svelte.d.ts +2 -2
  511. package/dist/bits/tabs/components/tabs-list.svelte +4 -5
  512. package/dist/bits/tabs/components/tabs-list.svelte.d.ts +2 -2
  513. package/dist/bits/tabs/components/tabs-trigger.svelte +4 -5
  514. package/dist/bits/tabs/components/tabs-trigger.svelte.d.ts +2 -2
  515. package/dist/bits/tabs/components/tabs.svelte +5 -6
  516. package/dist/bits/tabs/components/tabs.svelte.d.ts +2 -2
  517. package/dist/bits/tabs/exports.d.ts +5 -0
  518. package/dist/bits/tabs/exports.js +4 -0
  519. package/dist/bits/tabs/index.d.ts +1 -5
  520. package/dist/bits/tabs/index.js +1 -4
  521. package/dist/bits/tabs/tabs.svelte.d.ts +6 -8
  522. package/dist/bits/tabs/tabs.svelte.js +17 -24
  523. package/dist/bits/tabs/types.d.ts +5 -5
  524. package/dist/bits/toggle/components/toggle.svelte +5 -6
  525. package/dist/bits/toggle/components/toggle.svelte.d.ts +2 -2
  526. package/dist/bits/toggle/exports.d.ts +2 -0
  527. package/dist/bits/toggle/exports.js +1 -0
  528. package/dist/bits/toggle/index.d.ts +1 -2
  529. package/dist/bits/toggle/index.js +1 -1
  530. package/dist/bits/toggle/toggle.svelte.d.ts +3 -3
  531. package/dist/bits/toggle/toggle.svelte.js +3 -7
  532. package/dist/bits/toggle/types.d.ts +2 -2
  533. package/dist/bits/toggle-group/components/toggle-group-item.svelte +4 -5
  534. package/dist/bits/toggle-group/components/toggle-group-item.svelte.d.ts +2 -2
  535. package/dist/bits/toggle-group/components/toggle-group.svelte +5 -5
  536. package/dist/bits/toggle-group/components/toggle-group.svelte.d.ts +2 -2
  537. package/dist/bits/toggle-group/exports.d.ts +3 -0
  538. package/dist/bits/toggle-group/exports.js +2 -0
  539. package/dist/bits/toggle-group/index.d.ts +1 -3
  540. package/dist/bits/toggle-group/index.js +1 -2
  541. package/dist/bits/toggle-group/toggle-group.svelte.d.ts +5 -5
  542. package/dist/bits/toggle-group/toggle-group.svelte.js +16 -8
  543. package/dist/bits/toggle-group/types.d.ts +5 -5
  544. package/dist/bits/toolbar/components/toolbar-button.svelte +4 -5
  545. package/dist/bits/toolbar/components/toolbar-button.svelte.d.ts +2 -2
  546. package/dist/bits/toolbar/components/toolbar-group-item.svelte +4 -5
  547. package/dist/bits/toolbar/components/toolbar-group.svelte +5 -5
  548. package/dist/bits/toolbar/components/toolbar-group.svelte.d.ts +2 -2
  549. package/dist/bits/toolbar/components/toolbar-link.svelte +4 -5
  550. package/dist/bits/toolbar/components/toolbar-link.svelte.d.ts +2 -2
  551. package/dist/bits/toolbar/components/toolbar.svelte +4 -5
  552. package/dist/bits/toolbar/components/toolbar.svelte.d.ts +2 -2
  553. package/dist/bits/toolbar/exports.d.ts +6 -0
  554. package/dist/bits/toolbar/exports.js +5 -0
  555. package/dist/bits/toolbar/index.d.ts +1 -6
  556. package/dist/bits/toolbar/index.js +1 -5
  557. package/dist/bits/toolbar/toolbar.svelte.d.ts +4 -8
  558. package/dist/bits/toolbar/toolbar.svelte.js +28 -28
  559. package/dist/bits/toolbar/types.d.ts +5 -5
  560. package/dist/bits/tooltip/components/tooltip-arrow.svelte +4 -4
  561. package/dist/bits/tooltip/components/tooltip-content-static.svelte +90 -33
  562. package/dist/bits/tooltip/components/tooltip-content-static.svelte.d.ts +2 -2
  563. package/dist/bits/tooltip/components/tooltip-content.svelte +67 -33
  564. package/dist/bits/tooltip/components/tooltip-content.svelte.d.ts +2 -2
  565. package/dist/bits/tooltip/components/tooltip-provider.svelte +2 -2
  566. package/dist/bits/tooltip/components/tooltip-provider.svelte.d.ts +1 -2
  567. package/dist/bits/tooltip/components/tooltip-trigger.svelte +7 -8
  568. package/dist/bits/tooltip/components/tooltip-trigger.svelte.d.ts +2 -2
  569. package/dist/bits/tooltip/components/tooltip.svelte +9 -9
  570. package/dist/bits/tooltip/components/tooltip.svelte.d.ts +1 -2
  571. package/dist/bits/tooltip/exports.d.ts +9 -0
  572. package/dist/bits/tooltip/exports.js +7 -0
  573. package/dist/bits/tooltip/index.d.ts +1 -9
  574. package/dist/bits/tooltip/index.js +1 -7
  575. package/dist/bits/tooltip/tooltip.svelte.d.ts +12 -10
  576. package/dist/bits/tooltip/tooltip.svelte.js +13 -18
  577. package/dist/bits/tooltip/types.d.ts +7 -7
  578. package/dist/bits/utilities/arrow/arrow.svelte +3 -3
  579. package/dist/bits/utilities/arrow/types.d.ts +2 -2
  580. package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +0 -2
  581. package/dist/bits/utilities/dismissible-layer/types.d.ts +3 -14
  582. package/dist/bits/utilities/dismissible-layer/useDismissibleLayer.svelte.js +86 -69
  583. package/dist/bits/utilities/escape-layer/useEscapeLayer.svelte.js +5 -5
  584. package/dist/bits/utilities/floating-layer/components/floating-layer-arrow.svelte +2 -3
  585. package/dist/bits/utilities/floating-layer/components/floating-layer-content.svelte +2 -3
  586. package/dist/bits/utilities/floating-layer/useFloatingLayer.svelte.d.ts +10 -13
  587. package/dist/bits/utilities/floating-layer/useFloatingLayer.svelte.js +10 -22
  588. package/dist/bits/utilities/focus-scope/focus-scope-stack.svelte.js +2 -2
  589. package/dist/bits/utilities/focus-scope/focus-scope.svelte +3 -1
  590. package/dist/bits/utilities/focus-scope/types.d.ts +4 -0
  591. package/dist/bits/utilities/focus-scope/useFocusScope.svelte.d.ts +5 -1
  592. package/dist/bits/utilities/focus-scope/useFocusScope.svelte.js +63 -48
  593. package/dist/bits/utilities/mounted.svelte +1 -1
  594. package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte +85 -0
  595. package/dist/bits/{select/components/select-provider.svelte.d.ts → utilities/popper-layer/popper-layer-force-mount.svelte.d.ts} +5 -7
  596. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +126 -0
  597. package/dist/bits/{listbox/components/listbox-group.svelte.d.ts → utilities/popper-layer/popper-layer-inner.svelte.d.ts} +7 -5
  598. package/dist/bits/utilities/popper-layer/popper-layer.svelte +23 -67
  599. package/dist/bits/utilities/popper-layer/types.d.ts +2 -2
  600. package/dist/bits/utilities/presence-layer/usePresence.svelte.d.ts +1 -1
  601. package/dist/bits/utilities/presence-layer/usePresence.svelte.js +50 -42
  602. package/dist/bits/utilities/scroll-lock/index.d.ts +10 -0
  603. package/dist/bits/utilities/scroll-lock/scroll-lock.svelte +3 -3
  604. package/dist/bits/utilities/text-selection-layer/useTextSelectionLayer.svelte.js +7 -10
  605. package/dist/bits/utilities/visually-hidden/types.d.ts +2 -2
  606. package/dist/bits/utilities/visually-hidden/visually-hidden.svelte +1 -1
  607. package/dist/internal/arrays.d.ts +23 -0
  608. package/dist/internal/arrays.js +35 -0
  609. package/dist/internal/attrs.d.ts +1 -1
  610. package/dist/internal/attrs.js +3 -3
  611. package/dist/internal/{createEventHook.svelte.js → create-event-hook.svelte.js} +1 -1
  612. package/dist/{shared/date → internal/date-time}/announcer.js +3 -14
  613. package/dist/{shared/date → internal/date-time}/calendar-helpers.svelte.d.ts +3 -6
  614. package/dist/{shared/date → internal/date-time}/calendar-helpers.svelte.js +15 -15
  615. package/dist/{shared/date → internal/date-time}/field/helpers.d.ts +2 -1
  616. package/dist/{shared/date → internal/date-time}/field/helpers.js +15 -15
  617. package/dist/{shared/date/field.js → internal/date-time/field/segments.js} +4 -5
  618. package/dist/{shared/date → internal/date-time}/formatter.d.ts +2 -1
  619. package/dist/{shared/date → internal/date-time}/formatter.js +3 -2
  620. package/dist/{shared/date → internal/date-time}/utils.d.ts +1 -1
  621. package/dist/internal/kbd-constants.d.ts +40 -0
  622. package/dist/internal/kbd-constants.js +40 -0
  623. package/dist/internal/kbd.d.ts +1 -77
  624. package/dist/internal/kbd.js +1 -79
  625. package/dist/internal/should-trap-focus.d.ts +6 -0
  626. package/dist/internal/should-trap-focus.js +6 -0
  627. package/dist/internal/types.d.ts +28 -0
  628. package/dist/internal/{useBodyScrollLock.svelte.d.ts → use-body-scroll-lock.svelte.d.ts} +2 -1
  629. package/dist/internal/use-body-scroll-lock.svelte.js +110 -0
  630. package/dist/internal/use-data-typeahead.svelte.d.ts +12 -0
  631. package/dist/internal/use-data-typeahead.svelte.js +30 -0
  632. package/dist/internal/use-dom-typeahead.svelte.d.ts +11 -0
  633. package/dist/internal/use-dom-typeahead.svelte.js +30 -0
  634. package/dist/internal/use-grace-area.svelte.d.ts +5 -0
  635. package/dist/internal/{useGraceArea.svelte.js → use-grace-area.svelte.js} +11 -13
  636. package/dist/internal/{useRovingFocus.svelte.d.ts → use-roving-focus.svelte.d.ts} +1 -1
  637. package/dist/internal/{useRovingFocus.svelte.js → use-roving-focus.svelte.js} +8 -2
  638. package/dist/internal/{useSize.svelte.d.ts → use-size.svelte.d.ts} +1 -1
  639. package/dist/internal/{useSize.svelte.js → use-size.svelte.js} +1 -1
  640. package/dist/internal/{useTimeoutFn.svelte.js → use-timeout-fn.svelte.js} +1 -2
  641. package/dist/shared/attributes.d.ts +28 -28
  642. package/dist/shared/date/types.d.ts +25 -0
  643. package/dist/shared/index.d.ts +5 -9
  644. package/dist/shared/index.js +3 -2
  645. package/dist/types.d.ts +1 -1
  646. package/package.json +16 -25
  647. package/dist/bits/listbox/components/listbox-content-static.svelte +0 -69
  648. package/dist/bits/listbox/components/listbox-content-static.svelte.d.ts +0 -19
  649. package/dist/bits/listbox/components/listbox-content.svelte +0 -77
  650. package/dist/bits/listbox/components/listbox-content.svelte.d.ts +0 -19
  651. package/dist/bits/listbox/components/listbox-group-label.svelte +0 -33
  652. package/dist/bits/listbox/components/listbox-group.svelte +0 -33
  653. package/dist/bits/listbox/components/listbox-item.svelte +0 -44
  654. package/dist/bits/listbox/components/listbox-item.svelte.d.ts +0 -19
  655. package/dist/bits/listbox/components/listbox-label.svelte +0 -33
  656. package/dist/bits/listbox/components/listbox-label.svelte.d.ts +0 -18
  657. package/dist/bits/listbox/components/listbox-scroll-down-button.svelte +0 -40
  658. package/dist/bits/listbox/components/listbox-scroll-down-button.svelte.d.ts +0 -19
  659. package/dist/bits/listbox/components/listbox-scroll-up-button.svelte +0 -40
  660. package/dist/bits/listbox/components/listbox-scroll-up-button.svelte.d.ts +0 -19
  661. package/dist/bits/listbox/components/listbox-trigger.svelte +0 -36
  662. package/dist/bits/listbox/components/listbox-trigger.svelte.d.ts +0 -19
  663. package/dist/bits/listbox/components/listbox-viewport.svelte +0 -55
  664. package/dist/bits/listbox/components/listbox-viewport.svelte.d.ts +0 -19
  665. package/dist/bits/listbox/components/listbox.svelte +0 -81
  666. package/dist/bits/listbox/components/listbox.svelte.d.ts +0 -18
  667. package/dist/bits/listbox/index.d.ts +0 -13
  668. package/dist/bits/listbox/index.js +0 -12
  669. package/dist/bits/listbox/listbox.svelte.d.ts +0 -414
  670. package/dist/bits/listbox/listbox.svelte.js +0 -1023
  671. package/dist/bits/listbox/types.d.ts +0 -177
  672. package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +0 -48
  673. package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte.d.ts +0 -18
  674. package/dist/bits/select/components/select-arrow.svelte +0 -22
  675. package/dist/bits/select/components/select-arrow.svelte.d.ts +0 -18
  676. package/dist/bits/select/components/select-content-floating.svelte +0 -73
  677. package/dist/bits/select/components/select-content-floating.svelte.d.ts +0 -34
  678. package/dist/bits/select/components/select-content-impl.svelte +0 -90
  679. package/dist/bits/select/components/select-content-impl.svelte.d.ts +0 -90
  680. package/dist/bits/select/components/select-content-item-aligned.svelte +0 -38
  681. package/dist/bits/select/components/select-content-item-aligned.svelte.d.ts +0 -29
  682. package/dist/bits/select/components/select-icon.svelte +0 -37
  683. package/dist/bits/select/components/select-icon.svelte.d.ts +0 -19
  684. package/dist/bits/select/components/select-item-text.svelte +0 -40
  685. package/dist/bits/select/components/select-item-text.svelte.d.ts +0 -19
  686. package/dist/bits/select/components/select-native.svelte +0 -36
  687. package/dist/bits/select/components/select-native.svelte.d.ts +0 -30
  688. package/dist/bits/select/components/select-provider.svelte +0 -10
  689. package/dist/bits/select/components/select-scroll-down-button-mounted.svelte +0 -33
  690. package/dist/bits/select/components/select-scroll-down-button-mounted.svelte.d.ts +0 -29
  691. package/dist/bits/select/components/select-scroll-up-button-mounted.svelte +0 -33
  692. package/dist/bits/select/components/select-scroll-up-button-mounted.svelte.d.ts +0 -29
  693. package/dist/bits/select/components/select-separator.svelte +0 -33
  694. package/dist/bits/select/components/select-separator.svelte.d.ts +0 -19
  695. package/dist/bits/select/components/select-value.svelte +0 -35
  696. package/dist/bits/select/components/select-value.svelte.d.ts +0 -19
  697. package/dist/internal/afterSleep.d.ts +0 -4
  698. package/dist/internal/afterSleep.js +0 -6
  699. package/dist/internal/afterTick.d.ts +0 -5
  700. package/dist/internal/afterTick.js +0 -7
  701. package/dist/internal/callbacks.d.ts +0 -11
  702. package/dist/internal/callbacks.js +0 -21
  703. package/dist/internal/composeHandlers.d.ts +0 -8
  704. package/dist/internal/composeHandlers.js +0 -21
  705. package/dist/internal/cssToStyleObj.d.ts +0 -2
  706. package/dist/internal/cssToStyleObj.js +0 -23
  707. package/dist/internal/executeCallbacks.d.ts +0 -7
  708. package/dist/internal/executeCallbacks.js +0 -15
  709. package/dist/internal/mergeProps.d.ts +0 -22
  710. package/dist/internal/mergeProps.js +0 -98
  711. package/dist/internal/onDestroyEffect.svelte.d.ts +0 -1
  712. package/dist/internal/onDestroyEffect.svelte.js +0 -7
  713. package/dist/internal/strings.d.ts +0 -3
  714. package/dist/internal/strings.js +0 -70
  715. package/dist/internal/style.d.ts +0 -3
  716. package/dist/internal/style.js +0 -16
  717. package/dist/internal/styleToCSS.d.ts +0 -1
  718. package/dist/internal/styleToCSS.js +0 -23
  719. package/dist/internal/useBodyScrollLock.svelte.js +0 -88
  720. package/dist/internal/useGraceArea.svelte.d.ts +0 -5
  721. package/dist/internal/useRefById.svelte.d.ts +0 -28
  722. package/dist/internal/useRefById.svelte.js +0 -27
  723. package/dist/internal/useTypeahead.svelte.d.ts +0 -34
  724. package/dist/internal/useTypeahead.svelte.js +0 -64
  725. package/dist/shared/date/field/types.js +0 -1
  726. package/dist/shared/date/index.d.ts +0 -7
  727. package/dist/shared/date/index.js +0 -7
  728. /package/dist/bits/menu/{index.d.ts → exports.d.ts} +0 -0
  729. /package/dist/bits/menu/{index.js → exports.js} +0 -0
  730. /package/dist/internal/{boxAutoReset.svelte.d.ts → box-auto-reset.svelte.d.ts} +0 -0
  731. /package/dist/internal/{boxAutoReset.svelte.js → box-auto-reset.svelte.js} +0 -0
  732. /package/dist/internal/{createContext.d.ts → create-context.d.ts} +0 -0
  733. /package/dist/internal/{createContext.js → create-context.js} +0 -0
  734. /package/dist/internal/{createEventHook.svelte.d.ts → create-event-hook.svelte.d.ts} +0 -0
  735. /package/dist/internal/{createSharedHook.svelte.d.ts → create-shared-hook.svelte.d.ts} +0 -0
  736. /package/dist/internal/{createSharedHook.svelte.js → create-shared-hook.svelte.js} +0 -0
  737. /package/dist/{shared/date → internal/date-time}/announcer.d.ts +0 -0
  738. /package/dist/{shared/date → internal/date-time}/field/parts.d.ts +0 -0
  739. /package/dist/{shared/date → internal/date-time}/field/parts.js +0 -0
  740. /package/dist/{shared/date/field.d.ts → internal/date-time/field/segments.d.ts} +0 -0
  741. /package/dist/{shared/date → internal/date-time}/field/types.d.ts +0 -0
  742. /package/dist/{bits/listbox → internal/date-time/field}/types.js +0 -0
  743. /package/dist/{shared/date → internal/date-time}/placeholders.d.ts +0 -0
  744. /package/dist/{shared/date → internal/date-time}/placeholders.js +0 -0
  745. /package/dist/{shared/date → internal/date-time}/utils.js +0 -0
  746. /package/dist/internal/floating-svelte/{useFloating.svelte.d.ts → use-floating.svelte.d.ts} +0 -0
  747. /package/dist/internal/floating-svelte/{useFloating.svelte.js → use-floating.svelte.js} +0 -0
  748. /package/dist/internal/{getDirectionalKeys.d.ts → get-directional-keys.d.ts} +0 -0
  749. /package/dist/internal/{getDirectionalKeys.js → get-directional-keys.js} +0 -0
  750. /package/dist/internal/{useArrowNavigation.d.ts → use-arrow-navigation.d.ts} +0 -0
  751. /package/dist/internal/{useArrowNavigation.js → use-arrow-navigation.js} +0 -0
  752. /package/dist/internal/{useFormControl.svelte.d.ts → use-form-control.svelte.d.ts} +0 -0
  753. /package/dist/internal/{useFormControl.svelte.js → use-form-control.svelte.js} +0 -0
  754. /package/dist/internal/{useId.d.ts → use-id.d.ts} +0 -0
  755. /package/dist/internal/{useId.js → use-id.js} +0 -0
  756. /package/dist/internal/{useResizeObserver.svelte.d.ts → use-resize-observer.svelte.d.ts} +0 -0
  757. /package/dist/internal/{useResizeObserver.svelte.js → use-resize-observer.svelte.js} +0 -0
  758. /package/dist/internal/{useStateMachine.svelte.d.ts → use-state-machine.svelte.d.ts} +0 -0
  759. /package/dist/internal/{useStateMachine.svelte.js → use-state-machine.svelte.js} +0 -0
  760. /package/dist/internal/{useTimeoutFn.svelte.d.ts → use-timeout-fn.svelte.d.ts} +0 -0
@@ -1,1023 +0,0 @@
1
- import { Previous } from "runed";
2
- import { untrack } from "svelte";
3
- import { styleToString } from "svelte-toolbelt";
4
- import { afterTick } from "../../internal/afterTick.js";
5
- import { backward, forward, next, prev } from "../../internal/arrays.js";
6
- import { getAriaExpanded, getAriaHidden, getDataDisabled, getDataOpenClosed, getDisabled, getRequired, } from "../../internal/attrs.js";
7
- import { createContext } from "../../internal/createContext.js";
8
- import { kbd } from "../../internal/kbd.js";
9
- import { useRefById } from "../../internal/useRefById.svelte.js";
10
- import { noop } from "../../internal/callbacks.js";
11
- import { addEventListener } from "../../internal/events.js";
12
- import { useTypeahead } from "../../internal/useTypeahead.svelte.js";
13
- import { srOnlyStyles } from "../../internal/style.js";
14
- // prettier-ignore
15
- export const INTERACTION_KEYS = [kbd.ARROW_LEFT, kbd.ESCAPE, kbd.ARROW_RIGHT, kbd.SHIFT, kbd.CAPS_LOCK, kbd.CONTROL, kbd.ALT, kbd.META, kbd.ENTER, kbd.F1, kbd.F2, kbd.F3, kbd.F4, kbd.F5, kbd.F6, kbd.F7, kbd.F8, kbd.F9, kbd.F10, kbd.F11, kbd.F12];
16
- export const FIRST_KEYS = [kbd.ARROW_DOWN, kbd.PAGE_UP, kbd.HOME];
17
- export const LAST_KEYS = [kbd.ARROW_UP, kbd.PAGE_DOWN, kbd.END];
18
- export const FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];
19
- export const SELECTION_KEYS = [kbd.ENTER, kbd.SPACE];
20
- class ListboxBaseRootState {
21
- disabled;
22
- required;
23
- name;
24
- loop;
25
- open;
26
- scrollAlignment;
27
- touchedInput = $state(false);
28
- inputValue = $state("");
29
- inputNode = $state(null);
30
- contentNode = $state(null);
31
- triggerNode = $state(null);
32
- highlightedNode = $state(null);
33
- highlightedValue = $derived.by(() => {
34
- if (!this.highlightedNode)
35
- return null;
36
- return this.highlightedNode.getAttribute("data-value");
37
- });
38
- highlightedId = $derived.by(() => {
39
- if (!this.highlightedNode)
40
- return undefined;
41
- return this.highlightedNode.id;
42
- });
43
- highlightedLabel = $derived.by(() => {
44
- if (!this.highlightedNode)
45
- return null;
46
- return this.highlightedNode.getAttribute("data-label");
47
- });
48
- isUsingKeyboard = $state(false);
49
- isCombobox = $state(false);
50
- bitsAttrs;
51
- constructor(props) {
52
- this.disabled = props.disabled;
53
- this.required = props.required;
54
- this.name = props.name;
55
- this.loop = props.loop;
56
- this.open = props.open;
57
- this.scrollAlignment = props.scrollAlignment;
58
- this.isCombobox = props.isCombobox;
59
- this.bitsAttrs = getListboxBitsAttrs(this);
60
- $effect.pre(() => {
61
- if (!this.open.current) {
62
- this.setHighlightedNode(null);
63
- }
64
- });
65
- }
66
- setHighlightedNode = (node) => {
67
- this.highlightedNode = node;
68
- if (node) {
69
- if (this.isUsingKeyboard) {
70
- node.scrollIntoView({ block: "nearest" });
71
- }
72
- }
73
- };
74
- getCandidateNodes = () => {
75
- const node = this.contentNode;
76
- if (!node)
77
- return [];
78
- const nodes = Array.from(node.querySelectorAll(`[${this.bitsAttrs.item}]:not([data-disabled])`));
79
- return nodes;
80
- };
81
- setHighlightedToFirstCandidate = () => {
82
- this.setHighlightedNode(null);
83
- const candidateNodes = this.getCandidateNodes();
84
- if (!candidateNodes.length)
85
- return;
86
- this.setHighlightedNode(candidateNodes[0]);
87
- };
88
- getNodeByValue = (value) => {
89
- const candidateNodes = this.getCandidateNodes();
90
- return candidateNodes.find((node) => node.dataset.value === value) ?? null;
91
- };
92
- setOpen = (open) => {
93
- this.open.current = open;
94
- };
95
- toggleOpen = () => {
96
- this.open.current = !this.open.current;
97
- };
98
- openMenu = () => {
99
- this.setOpen(true);
100
- };
101
- closeMenu = () => {
102
- this.setHighlightedNode(null);
103
- this.setOpen(false);
104
- };
105
- toggleMenu = () => {
106
- this.toggleOpen();
107
- };
108
- createComboTrigger(props) {
109
- return new ListboxComboTriggerState(props, this);
110
- }
111
- createGroup(props) {
112
- return new ListboxGroupState(props, this);
113
- }
114
- createHiddenInput(props) {
115
- return new ListboxHiddenInputState(props, this);
116
- }
117
- createContent(props) {
118
- return new ListboxContentState(props, this);
119
- }
120
- }
121
- class ListboxSingleRootState extends ListboxBaseRootState {
122
- value;
123
- isMulti = false;
124
- hasValue = $derived.by(() => this.value.current !== "");
125
- constructor(props) {
126
- super(props);
127
- this.value = props.value;
128
- $effect(() => {
129
- if (!this.open.current && this.highlightedNode) {
130
- this.setHighlightedNode(null);
131
- }
132
- });
133
- $effect(() => {
134
- if (!this.open.current)
135
- return;
136
- afterTick(() => {
137
- this.#setInitialHighlightedNode();
138
- });
139
- });
140
- }
141
- includesItem = (itemValue) => {
142
- return this.value.current === itemValue;
143
- };
144
- toggleItem = (itemValue, itemLabel = itemValue) => {
145
- this.value.current = this.includesItem(itemValue) ? "" : itemValue;
146
- this.inputValue = itemLabel;
147
- };
148
- #setInitialHighlightedNode = () => {
149
- if (this.highlightedNode)
150
- return;
151
- if (this.value.current !== "") {
152
- const node = this.getNodeByValue(this.value.current);
153
- if (node) {
154
- this.setHighlightedNode(node);
155
- return;
156
- }
157
- }
158
- // if no value is set, we want to highlight the first item
159
- const firstCandidate = this.getCandidateNodes()[0];
160
- if (!firstCandidate)
161
- return;
162
- this.setHighlightedNode(firstCandidate);
163
- };
164
- createInput(props) {
165
- return new ListboxInputState(props, this);
166
- }
167
- createTrigger(props) {
168
- return new ListboxTriggerState(props, this);
169
- }
170
- createItem(props) {
171
- return new ListboxItemState(props, this);
172
- }
173
- }
174
- class ListboxMultipleRootState extends ListboxBaseRootState {
175
- value;
176
- isMulti = true;
177
- hasValue = $derived.by(() => this.value.current.length > 0);
178
- constructor(props) {
179
- super(props);
180
- this.value = props.value;
181
- $effect(() => {
182
- if (!this.open.current)
183
- return;
184
- afterTick(() => {
185
- if (!this.highlightedNode) {
186
- this.#setInitialHighlightedNode();
187
- }
188
- });
189
- });
190
- }
191
- includesItem = (itemValue) => {
192
- return this.value.current.includes(itemValue);
193
- };
194
- toggleItem = (itemValue, itemLabel = itemValue) => {
195
- if (this.includesItem(itemValue)) {
196
- this.value.current = this.value.current.filter((v) => v !== itemValue);
197
- }
198
- else {
199
- this.value.current = [...this.value.current, itemValue];
200
- }
201
- this.inputValue = itemLabel;
202
- };
203
- #setInitialHighlightedNode = () => {
204
- if (this.highlightedNode)
205
- return;
206
- if (this.value.current.length && this.value.current[0] !== "") {
207
- const node = this.getNodeByValue(this.value.current[0]);
208
- if (node) {
209
- this.setHighlightedNode(node);
210
- return;
211
- }
212
- }
213
- // if no value is set, we want to highlight the first item
214
- const firstCandidate = this.getCandidateNodes()[0];
215
- if (!firstCandidate)
216
- return;
217
- this.setHighlightedNode(firstCandidate);
218
- };
219
- createInput(props) {
220
- return new ListboxInputState(props, this);
221
- }
222
- createTrigger(props) {
223
- return new ListboxTriggerState(props, this);
224
- }
225
- createItem(props) {
226
- return new ListboxItemState(props, this);
227
- }
228
- }
229
- class ListboxInputState {
230
- #id;
231
- #ref;
232
- root;
233
- constructor(props, root) {
234
- this.root = root;
235
- this.#id = props.id;
236
- this.#ref = props.ref;
237
- useRefById({
238
- id: this.#id,
239
- ref: this.#ref,
240
- onRefChange: (node) => {
241
- this.root.inputNode = node;
242
- },
243
- });
244
- }
245
- #onkeydown = async (e) => {
246
- this.root.isUsingKeyboard = true;
247
- if (e.key === kbd.ESCAPE)
248
- return;
249
- const open = this.root.open.current;
250
- const inputValue = this.root.inputValue;
251
- // prevent arrow up/down from moving the position of the cursor in the input
252
- if (e.key === kbd.ARROW_UP || e.key === kbd.ARROW_DOWN)
253
- e.preventDefault();
254
- if (!open) {
255
- if (INTERACTION_KEYS.includes(e.key))
256
- return;
257
- if (e.key === kbd.TAB)
258
- return;
259
- if (e.key === kbd.BACKSPACE && inputValue === "")
260
- return;
261
- this.root.openMenu();
262
- // we need to wait for a tick after the menu opens to ensure the highlighted nodes are
263
- // set correctly.
264
- afterTick(() => {
265
- if (this.root.hasValue)
266
- return;
267
- const candidateNodes = this.root.getCandidateNodes();
268
- if (!candidateNodes.length)
269
- return;
270
- if (e.key === kbd.ARROW_DOWN) {
271
- const firstCandidate = candidateNodes[0];
272
- this.root.setHighlightedNode(firstCandidate);
273
- }
274
- else if (e.key === kbd.ARROW_UP) {
275
- const lastCandidate = candidateNodes[candidateNodes.length - 1];
276
- this.root.setHighlightedNode(lastCandidate);
277
- }
278
- });
279
- return;
280
- }
281
- if (e.key === kbd.TAB) {
282
- this.root.closeMenu();
283
- return;
284
- }
285
- if (e.key === kbd.ENTER && !e.isComposing) {
286
- e.preventDefault();
287
- const highlightedValue = this.root.highlightedValue;
288
- if (highlightedValue) {
289
- this.root.toggleItem(highlightedValue, this.root.highlightedLabel ?? undefined);
290
- }
291
- if (!this.root.isMulti) {
292
- this.root.closeMenu();
293
- }
294
- }
295
- if (e.key === kbd.ARROW_UP && e.altKey) {
296
- this.root.closeMenu();
297
- }
298
- if (FIRST_LAST_KEYS.includes(e.key)) {
299
- e.preventDefault();
300
- const candidateNodes = this.root.getCandidateNodes();
301
- const currHighlightedNode = this.root.highlightedNode;
302
- const currIndex = currHighlightedNode
303
- ? candidateNodes.indexOf(currHighlightedNode)
304
- : -1;
305
- const loop = this.root.loop.current;
306
- let nextItem;
307
- if (e.key === kbd.ARROW_DOWN) {
308
- nextItem = next(candidateNodes, currIndex, loop);
309
- }
310
- else if (e.key === kbd.ARROW_UP) {
311
- nextItem = prev(candidateNodes, currIndex, loop);
312
- }
313
- else if (e.key === kbd.PAGE_DOWN) {
314
- nextItem = forward(candidateNodes, currIndex, 10, loop);
315
- }
316
- else if (e.key === kbd.PAGE_UP) {
317
- nextItem = backward(candidateNodes, currIndex, 10, loop);
318
- }
319
- else if (e.key === kbd.HOME) {
320
- nextItem = candidateNodes[0];
321
- }
322
- else if (e.key === kbd.END) {
323
- nextItem = candidateNodes[candidateNodes.length - 1];
324
- }
325
- if (!nextItem)
326
- return;
327
- this.root.setHighlightedNode(nextItem);
328
- return;
329
- }
330
- if (INTERACTION_KEYS.includes(e.key))
331
- return;
332
- if (!this.root.highlightedNode) {
333
- this.root.setHighlightedToFirstCandidate();
334
- }
335
- // this.root.setHighlightedToFirstCandidate();
336
- };
337
- #oninput = (e) => {
338
- this.root.inputValue = e.currentTarget.value;
339
- this.root.setHighlightedToFirstCandidate();
340
- };
341
- props = $derived.by(() => ({
342
- id: this.#id.current,
343
- role: "combobox",
344
- disabled: this.root.disabled.current ? true : undefined,
345
- "aria-activedescendant": this.root.highlightedId,
346
- "aria-autocomplete": "list",
347
- "aria-expanded": getAriaExpanded(this.root.open.current),
348
- "data-state": getDataOpenClosed(this.root.open.current),
349
- "data-disabled": getDataDisabled(this.root.disabled.current),
350
- onkeydown: this.#onkeydown,
351
- oninput: this.#oninput,
352
- [this.root.bitsAttrs.input]: "",
353
- }));
354
- }
355
- class ListboxComboTriggerState {
356
- #id;
357
- #ref;
358
- root;
359
- constructor(props, root) {
360
- this.root = root;
361
- this.#id = props.id;
362
- this.#ref = props.ref;
363
- useRefById({
364
- id: this.#id,
365
- ref: this.#ref,
366
- });
367
- }
368
- #onkeydown = (e) => {
369
- if (e.key === kbd.ENTER || e.key === kbd.SPACE) {
370
- e.preventDefault();
371
- if (document.activeElement !== this.root.inputNode) {
372
- this.root.inputNode?.focus();
373
- }
374
- this.root.toggleMenu();
375
- }
376
- };
377
- /**
378
- * `pointerdown` fires before the `focus` event, so we can prevent the default
379
- * behavior of focusing the button and keep focus on the input.
380
- */
381
- #onpointerdown = (e) => {
382
- if (this.root.disabled.current)
383
- return;
384
- e.preventDefault();
385
- if (document.activeElement !== this.root.inputNode) {
386
- this.root.inputNode?.focus();
387
- }
388
- this.root.toggleMenu();
389
- };
390
- props = $derived.by(() => ({
391
- id: this.#id.current,
392
- disabled: this.root.disabled.current ? true : undefined,
393
- "aria-haspopup": "listbox",
394
- "data-state": getDataOpenClosed(this.root.open.current),
395
- "data-disabled": getDataDisabled(this.root.disabled.current),
396
- [this.root.bitsAttrs.trigger]: "",
397
- onpointerdown: this.#onpointerdown,
398
- onkeydown: this.#onkeydown,
399
- }));
400
- }
401
- class ListboxTriggerState {
402
- #id;
403
- #ref;
404
- root;
405
- #typeahead;
406
- constructor(props, root) {
407
- this.root = root;
408
- this.#id = props.id;
409
- this.#ref = props.ref;
410
- useRefById({
411
- id: this.#id,
412
- ref: this.#ref,
413
- onRefChange: (node) => {
414
- this.root.triggerNode = node;
415
- },
416
- });
417
- this.#typeahead = useTypeahead({
418
- getCurrentItem: () => this.root.highlightedNode,
419
- onMatch: (node) => {
420
- this.root.setHighlightedNode(node);
421
- },
422
- });
423
- }
424
- #onkeydown = (e) => {
425
- this.root.isUsingKeyboard = true;
426
- if (e.key === kbd.ARROW_UP || e.key === kbd.ARROW_DOWN)
427
- e.preventDefault();
428
- if (!this.root.open.current) {
429
- if (e.key === kbd.ENTER)
430
- return;
431
- if (e.key === kbd.SPACE || e.key === kbd.ARROW_DOWN || e.key === kbd.ARROW_UP) {
432
- e.preventDefault();
433
- this.root.openMenu();
434
- }
435
- // we need to wait for a tick after the menu opens to ensure
436
- // the highlighted nodes are set correctly
437
- afterTick(() => {
438
- if (this.root.hasValue)
439
- return;
440
- const candidateNodes = this.root.getCandidateNodes();
441
- if (!candidateNodes.length)
442
- return;
443
- if (e.key === kbd.ARROW_DOWN) {
444
- const firstCandidate = candidateNodes[0];
445
- this.root.setHighlightedNode(firstCandidate);
446
- }
447
- else if (e.key === kbd.ARROW_UP) {
448
- const lastCandidate = candidateNodes[candidateNodes.length - 1];
449
- this.root.setHighlightedNode(lastCandidate);
450
- }
451
- });
452
- return;
453
- }
454
- if (e.key === kbd.TAB) {
455
- this.root.closeMenu();
456
- return;
457
- }
458
- if ((e.key === kbd.ENTER || e.key === kbd.SPACE) && !e.isComposing) {
459
- e.preventDefault();
460
- const highlightedValue = this.root.highlightedValue;
461
- if (highlightedValue) {
462
- this.root.toggleItem(highlightedValue, this.root.highlightedLabel ?? undefined);
463
- }
464
- if (!this.root.isMulti) {
465
- this.root.closeMenu();
466
- }
467
- }
468
- if (e.key === kbd.ARROW_UP && e.altKey) {
469
- this.root.closeMenu();
470
- }
471
- if (FIRST_LAST_KEYS.includes(e.key)) {
472
- e.preventDefault();
473
- const candidateNodes = this.root.getCandidateNodes();
474
- const currHighlightedNode = this.root.highlightedNode;
475
- const currIndex = currHighlightedNode
476
- ? candidateNodes.indexOf(currHighlightedNode)
477
- : -1;
478
- const loop = this.root.loop.current;
479
- let nextItem;
480
- if (e.key === kbd.ARROW_DOWN) {
481
- nextItem = next(candidateNodes, currIndex, loop);
482
- }
483
- else if (e.key === kbd.ARROW_UP) {
484
- nextItem = prev(candidateNodes, currIndex, loop);
485
- }
486
- else if (e.key === kbd.PAGE_DOWN) {
487
- nextItem = forward(candidateNodes, currIndex, 10, loop);
488
- }
489
- else if (e.key === kbd.PAGE_UP) {
490
- nextItem = backward(candidateNodes, currIndex, 10, loop);
491
- }
492
- else if (e.key === kbd.HOME) {
493
- nextItem = candidateNodes[0];
494
- }
495
- else if (e.key === kbd.END) {
496
- nextItem = candidateNodes[candidateNodes.length - 1];
497
- }
498
- if (!nextItem)
499
- return;
500
- this.root.setHighlightedNode(nextItem);
501
- return;
502
- }
503
- const isModifierKey = e.ctrlKey || e.altKey || e.metaKey;
504
- const isCharacterKey = e.key.length === 1;
505
- // prevent space from being considered with typeahead
506
- if (e.code === "Space")
507
- return;
508
- const candidateNodes = this.root.getCandidateNodes();
509
- if (e.key === kbd.TAB)
510
- return;
511
- if (!isModifierKey && isCharacterKey) {
512
- this.#typeahead.handleTypeaheadSearch(e.key, candidateNodes);
513
- return;
514
- }
515
- if (!this.root.highlightedNode) {
516
- this.root.setHighlightedToFirstCandidate();
517
- }
518
- };
519
- #onclick = (e) => {
520
- e.preventDefault();
521
- };
522
- /**
523
- * `pointerdown` fires before the `focus` event, so we can prevent the default
524
- * behavior of focusing the button and keep focus on the input.
525
- */
526
- #onpointerdown = () => {
527
- if (this.root.disabled.current)
528
- return;
529
- this.root.toggleMenu();
530
- };
531
- props = $derived.by(() => ({
532
- id: this.#id.current,
533
- disabled: this.root.disabled.current ? true : undefined,
534
- "aria-haspopup": "listbox",
535
- "data-state": getDataOpenClosed(this.root.open.current),
536
- "data-disabled": getDataDisabled(this.root.disabled.current),
537
- [this.root.bitsAttrs.trigger]: "",
538
- onpointerdown: this.#onpointerdown,
539
- onkeydown: this.#onkeydown,
540
- onclick: this.#onclick,
541
- }));
542
- }
543
- class ListboxContentState {
544
- #id;
545
- #ref;
546
- viewportNode = $state(null);
547
- root;
548
- isPositioned = $state(false);
549
- constructor(props, root) {
550
- this.root = root;
551
- this.#id = props.id;
552
- this.#ref = props.ref;
553
- useRefById({
554
- id: this.#id,
555
- ref: this.#ref,
556
- onRefChange: (node) => {
557
- this.root.contentNode = node;
558
- },
559
- condition: () => this.root.open.current,
560
- });
561
- $effect(() => {
562
- return () => {
563
- this.root.contentNode = null;
564
- };
565
- });
566
- $effect(() => {
567
- if (this.root.open.current === false) {
568
- this.isPositioned = false;
569
- }
570
- });
571
- }
572
- #onpointermove = () => {
573
- this.root.isUsingKeyboard = false;
574
- };
575
- #styles = $derived.by(() => {
576
- if (this.root.isCombobox) {
577
- return {
578
- "--bits-combobox-content-transform-origin": "var(--bits-floating-transform-origin)",
579
- "--bits-combobox-content-available-width": "var(--bits-floating-available-width)",
580
- "--bits-combobox-content-available-height": "var(--bits-floating-available-height)",
581
- "--bits-combobox-anchor-width": "var(--bits-floating-anchor-width)",
582
- "--bits-combobox-anchor-height": "var(--bits-floating-anchor-height)",
583
- };
584
- }
585
- else {
586
- return {
587
- "--bits-listbox-content-transform-origin": "var(--bits-floating-transform-origin)",
588
- "--bits-listbox-content-available-width": "var(--bits-floating-available-width)",
589
- "--bits-listbox-content-available-height": "var(--bits-floating-available-height)",
590
- "--bits-listbox-anchor-width": "var(--bits-floating-anchor-width)",
591
- "--bits-listbox-anchor-height": "var(--bits-floating-anchor-height)",
592
- };
593
- }
594
- });
595
- handleInteractOutside = (e) => {
596
- if (e.target === this.root.triggerNode || e.target === this.root.inputNode) {
597
- e.preventDefault();
598
- }
599
- };
600
- snippetProps = $derived.by(() => ({ open: this.root.open.current }));
601
- props = $derived.by(() => ({
602
- id: this.#id.current,
603
- role: "listbox",
604
- "data-state": getDataOpenClosed(this.root.open.current),
605
- [this.root.bitsAttrs.content]: "",
606
- style: {
607
- display: "flex",
608
- flexDirection: "column",
609
- outline: "none",
610
- boxSizing: "border-box",
611
- ...this.#styles,
612
- },
613
- onpointermove: this.#onpointermove,
614
- }));
615
- createViewportState = (props) => {
616
- return new ListboxViewportState(props, this);
617
- };
618
- createScrollUpButtonState = (props) => {
619
- const state = new ListboxScrollButtonImplState(props, this);
620
- return new ListboxScrollUpButtonState(state);
621
- };
622
- createScrollDownButtonState = (props) => {
623
- const state = new ListboxScrollButtonImplState(props, this);
624
- return new ListboxScrollDownButtonState(state);
625
- };
626
- }
627
- class ListboxItemState {
628
- #id;
629
- #ref;
630
- root;
631
- value;
632
- label;
633
- onHighlight;
634
- onUnhighlight;
635
- disabled;
636
- isSelected = $derived.by(() => this.root.includesItem(this.value.current));
637
- isHighlighted = $derived.by(() => this.root.highlightedValue === this.value.current);
638
- prevHighlighted = new Previous(() => this.isHighlighted);
639
- constructor(props, root) {
640
- this.root = root;
641
- this.value = props.value;
642
- this.disabled = props.disabled;
643
- this.label = props.label;
644
- this.onHighlight = props.onHighlight;
645
- this.onUnhighlight = props.onUnhighlight;
646
- this.#id = props.id;
647
- this.#ref = props.ref;
648
- $effect(() => {
649
- if (this.isHighlighted) {
650
- this.onHighlight.current();
651
- }
652
- else if (this.prevHighlighted.current) {
653
- this.onUnhighlight.current();
654
- }
655
- });
656
- useRefById({
657
- id: this.#id,
658
- ref: this.#ref,
659
- });
660
- }
661
- snippetProps = $derived.by(() => ({
662
- selected: this.isSelected,
663
- highlighted: this.isHighlighted,
664
- }));
665
- #onpointerdown = (e) => {
666
- // prevent focus from leaving the combobox
667
- e.preventDefault();
668
- };
669
- /**
670
- * Using `pointerup` instead of `click` allows power users to pointerdown
671
- * the trigger, then release pointerup on an item to select it vs having to do
672
- * multiple clicks.
673
- */
674
- #onpointerup = (e) => {
675
- // prevent any default behavior
676
- e.preventDefault();
677
- if (this.disabled.current)
678
- return;
679
- const isCurrentSelectedValue = this.value.current === this.root.value.current;
680
- this.root.toggleItem(this.value.current, this.label.current);
681
- if (!this.root.isMulti && !isCurrentSelectedValue) {
682
- this.root.closeMenu();
683
- }
684
- };
685
- #onpointermove = (_) => {
686
- if (this.root.highlightedNode !== this.#ref.current) {
687
- this.root.setHighlightedNode(this.#ref.current);
688
- }
689
- };
690
- props = $derived.by(() => ({
691
- id: this.#id.current,
692
- "aria-selected": this.root.includesItem(this.value.current) ? "true" : undefined,
693
- "data-value": this.value.current,
694
- "data-disabled": getDataDisabled(this.disabled.current),
695
- "data-highlighted": this.root.highlightedValue === this.value.current ? "" : undefined,
696
- "data-selected": this.root.includesItem(this.value.current) ? "" : undefined,
697
- "data-label": this.label.current,
698
- [this.root.bitsAttrs.item]: "",
699
- onpointermove: this.#onpointermove,
700
- onpointerdown: this.#onpointerdown,
701
- onpointerup: this.#onpointerup,
702
- }));
703
- }
704
- class ListboxGroupState {
705
- #id;
706
- #ref;
707
- root;
708
- labelNode = $state(null);
709
- constructor(props, root) {
710
- this.#id = props.id;
711
- this.#ref = props.ref;
712
- this.root = root;
713
- useRefById({
714
- id: this.#id,
715
- ref: this.#ref,
716
- });
717
- }
718
- props = $derived.by(() => ({
719
- id: this.#id.current,
720
- role: "group",
721
- [this.root.bitsAttrs.group]: "",
722
- "aria-labelledby": this.labelNode?.id ?? undefined,
723
- }));
724
- createGroupHeading(props) {
725
- return new ListboxGroupHeadingState(props, this);
726
- }
727
- }
728
- class ListboxGroupHeadingState {
729
- #id;
730
- #ref;
731
- group;
732
- constructor(props, group) {
733
- this.#id = props.id;
734
- this.#ref = props.ref;
735
- this.group = group;
736
- useRefById({
737
- id: this.#id,
738
- ref: this.#ref,
739
- onRefChange: (node) => {
740
- group.labelNode = node;
741
- },
742
- });
743
- }
744
- props = $derived.by(() => ({
745
- id: this.#id.current,
746
- [this.group.root.bitsAttrs["group-label"]]: "",
747
- }));
748
- }
749
- class ListboxHiddenInputState {
750
- #value;
751
- root;
752
- shouldRender = $derived.by(() => this.root.name.current !== "");
753
- constructor(props, root) {
754
- this.root = root;
755
- this.#value = props.value;
756
- }
757
- props = $derived.by(() => ({
758
- disabled: getDisabled(this.root.disabled.current),
759
- required: getRequired(this.root.required.current),
760
- name: this.root.name.current,
761
- value: this.#value.current,
762
- "aria-hidden": getAriaHidden(true),
763
- style: styleToString(srOnlyStyles),
764
- }));
765
- }
766
- class ListboxViewportState {
767
- #id;
768
- #ref;
769
- root;
770
- content;
771
- constructor(props, content) {
772
- this.#id = props.id;
773
- this.#ref = props.ref;
774
- this.content = content;
775
- this.root = content.root;
776
- useRefById({
777
- id: this.#id,
778
- ref: this.#ref,
779
- onRefChange: (node) => {
780
- this.content.viewportNode = node;
781
- },
782
- condition: () => this.root.open.current,
783
- });
784
- }
785
- props = $derived.by(() => ({
786
- id: this.#id.current,
787
- role: "presentation",
788
- [this.root.bitsAttrs.viewport]: "",
789
- style: {
790
- // we use position: 'relative' here on the `viewport` so that when we call
791
- // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport
792
- // (independent of the scrollUpButton).
793
- position: "relative",
794
- flex: 1,
795
- overflow: "auto",
796
- },
797
- }));
798
- }
799
- class ListboxScrollButtonImplState {
800
- id;
801
- ref;
802
- content;
803
- root;
804
- autoScrollTimer = $state(null);
805
- onAutoScroll = noop;
806
- mounted;
807
- constructor(props, content) {
808
- this.ref = props.ref;
809
- this.id = props.id;
810
- this.mounted = props.mounted;
811
- this.content = content;
812
- this.root = content.root;
813
- useRefById({
814
- id: this.id,
815
- ref: this.ref,
816
- condition: () => this.mounted.current,
817
- });
818
- $effect(() => {
819
- if (!this.mounted.current)
820
- return;
821
- const activeItem = untrack(() => this.root.highlightedNode);
822
- activeItem?.scrollIntoView({ block: "nearest" });
823
- });
824
- }
825
- clearAutoScrollTimer = () => {
826
- if (this.autoScrollTimer === null)
827
- return;
828
- window.clearInterval(this.autoScrollTimer);
829
- this.autoScrollTimer = null;
830
- };
831
- #onpointerdown = () => {
832
- if (this.autoScrollTimer !== null)
833
- return;
834
- this.autoScrollTimer = window.setInterval(() => {
835
- this.onAutoScroll();
836
- }, 50);
837
- };
838
- #onpointermove = () => {
839
- if (this.autoScrollTimer !== null)
840
- return;
841
- this.autoScrollTimer = window.setInterval(() => {
842
- this.onAutoScroll();
843
- }, 50);
844
- };
845
- #onpointerleave = () => {
846
- this.clearAutoScrollTimer();
847
- };
848
- props = $derived.by(() => ({
849
- id: this.id.current,
850
- "aria-hidden": getAriaHidden(true),
851
- style: {
852
- flexShrink: 0,
853
- },
854
- onpointerdown: this.#onpointerdown,
855
- onpointermove: this.#onpointermove,
856
- onpointerleave: this.#onpointerleave,
857
- }));
858
- }
859
- class ListboxScrollDownButtonState {
860
- state;
861
- content;
862
- root;
863
- canScrollDown = $state(false);
864
- constructor(state) {
865
- this.state = state;
866
- this.content = state.content;
867
- this.root = state.root;
868
- this.state.onAutoScroll = this.handleAutoScroll;
869
- $effect(() => {
870
- const viewport = this.content.viewportNode;
871
- const isPositioned = this.content.isPositioned;
872
- if (!viewport || !isPositioned)
873
- return;
874
- let cleanup = noop;
875
- untrack(() => {
876
- const handleScroll = () => {
877
- afterTick(() => {
878
- const maxScroll = viewport.scrollHeight - viewport.clientHeight;
879
- const paddingTop = Number.parseInt(getComputedStyle(viewport).paddingTop, 10);
880
- this.canScrollDown = Math.ceil(viewport.scrollTop) < maxScroll - paddingTop;
881
- });
882
- };
883
- handleScroll();
884
- cleanup = addEventListener(viewport, "scroll", handleScroll);
885
- });
886
- return cleanup;
887
- });
888
- $effect(() => {
889
- if (this.state.mounted.current)
890
- return;
891
- this.state.clearAutoScrollTimer();
892
- });
893
- }
894
- handleAutoScroll = () => {
895
- afterTick(() => {
896
- const viewport = this.content.viewportNode;
897
- const selectedItem = this.root.highlightedNode;
898
- if (!viewport || !selectedItem)
899
- return;
900
- viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;
901
- });
902
- };
903
- props = $derived.by(() => ({ ...this.state.props, [this.root.bitsAttrs["scroll-down-button"]]: "" }));
904
- }
905
- class ListboxScrollUpButtonState {
906
- state;
907
- content;
908
- root;
909
- canScrollUp = $state(false);
910
- constructor(state) {
911
- this.state = state;
912
- this.content = state.content;
913
- this.root = state.root;
914
- this.state.onAutoScroll = this.handleAutoScroll;
915
- $effect(() => {
916
- const viewport = this.content.viewportNode;
917
- const isPositioned = this.content.isPositioned;
918
- if (!viewport || !isPositioned)
919
- return;
920
- let cleanup = noop;
921
- untrack(() => {
922
- const handleScroll = () => {
923
- const paddingTop = Number.parseInt(getComputedStyle(viewport).paddingTop, 10);
924
- this.canScrollUp = viewport.scrollTop - paddingTop > 0;
925
- };
926
- handleScroll();
927
- cleanup = addEventListener(viewport, "scroll", handleScroll);
928
- });
929
- return cleanup;
930
- });
931
- $effect(() => {
932
- if (this.state.mounted.current)
933
- return;
934
- this.state.clearAutoScrollTimer();
935
- });
936
- }
937
- handleAutoScroll = () => {
938
- afterTick(() => {
939
- const viewport = this.content.viewportNode;
940
- const selectedItem = this.root.highlightedNode;
941
- if (!viewport || !selectedItem)
942
- return;
943
- viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;
944
- });
945
- };
946
- props = $derived.by(() => ({ ...this.state.props, [this.root.bitsAttrs["scroll-up-button"]]: "" }));
947
- }
948
- const [setListboxRootContext, getListboxRootContext] = createContext([
949
- "Listbox.Root",
950
- "Combobox.Root",
951
- ]);
952
- const [setListboxGroupContext, getListboxGroupContext] = createContext([
953
- "Listbox.Group",
954
- "Combobox.Group",
955
- ]);
956
- const [setListboxContentContext, getListboxContentContext] = createContext([
957
- "Listbox.Content",
958
- "Combobox.Content",
959
- ]);
960
- export function useListboxRoot(props) {
961
- const { type, ...rest } = props;
962
- const rootState = type === "single"
963
- ? new ListboxSingleRootState(rest)
964
- : new ListboxMultipleRootState(rest);
965
- return setListboxRootContext(rootState);
966
- }
967
- export function useListboxInput(props) {
968
- return getListboxRootContext().createInput(props);
969
- }
970
- export function useListboxContent(props) {
971
- return setListboxContentContext(getListboxRootContext().createContent(props));
972
- }
973
- export function useListboxTrigger(props) {
974
- return getListboxRootContext().createTrigger(props);
975
- }
976
- export function useListboxComboTrigger(props) {
977
- return getListboxRootContext().createComboTrigger(props);
978
- }
979
- export function useListboxItem(props) {
980
- return getListboxRootContext().createItem(props);
981
- }
982
- export function useListboxViewport(props) {
983
- return getListboxContentContext().createViewportState(props);
984
- }
985
- export function useListboxScrollUpButton(props) {
986
- return getListboxContentContext().createScrollUpButtonState(props);
987
- }
988
- export function useListboxScrollDownButton(props) {
989
- return getListboxContentContext().createScrollDownButtonState(props);
990
- }
991
- export function useListboxGroup(props) {
992
- return setListboxGroupContext(getListboxRootContext().createGroup(props));
993
- }
994
- export function useListboxGroupHeading(props) {
995
- return getListboxGroupContext().createGroupHeading(props);
996
- }
997
- export function useListboxHiddenInput(props) {
998
- return getListboxRootContext().createHiddenInput(props);
999
- }
1000
- ////////////////////////////////////
1001
- // Helpers
1002
- ////////////////////////////////////
1003
- const listboxParts = [
1004
- "trigger",
1005
- "content",
1006
- "item",
1007
- "viewport",
1008
- "scroll-up-button",
1009
- "scroll-down-button",
1010
- "group",
1011
- "group-label",
1012
- "separator",
1013
- "arrow",
1014
- "input",
1015
- ];
1016
- export function getListboxBitsAttrs(root) {
1017
- const isCombobox = root.isCombobox;
1018
- const attrObj = {};
1019
- for (const part of listboxParts) {
1020
- attrObj[part] = isCombobox ? `data-combobox-${part}` : `data-listbox-${part}`;
1021
- }
1022
- return attrObj;
1023
- }