bits-ui 1.0.0-next.8 → 1.0.0-next.81

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 (837) hide show
  1. package/dist/app.d.ts +14 -0
  2. package/dist/bits/accordion/accordion.svelte.d.ts +15 -16
  3. package/dist/bits/accordion/accordion.svelte.js +40 -41
  4. package/dist/bits/accordion/components/accordion-content.svelte +3 -4
  5. package/dist/bits/accordion/components/accordion-content.svelte.d.ts +2 -17
  6. package/dist/bits/accordion/components/accordion-header.svelte +2 -3
  7. package/dist/bits/accordion/components/accordion-header.svelte.d.ts +2 -17
  8. package/dist/bits/accordion/components/accordion-item.svelte +2 -3
  9. package/dist/bits/accordion/components/accordion-item.svelte.d.ts +2 -17
  10. package/dist/bits/accordion/components/accordion-trigger.svelte +2 -3
  11. package/dist/bits/accordion/components/accordion-trigger.svelte.d.ts +2 -17
  12. package/dist/bits/accordion/components/accordion.svelte +8 -13
  13. package/dist/bits/accordion/components/accordion.svelte.d.ts +3 -18
  14. package/dist/bits/accordion/exports.d.ts +6 -0
  15. package/dist/bits/accordion/exports.js +5 -0
  16. package/dist/bits/accordion/index.d.ts +1 -6
  17. package/dist/bits/accordion/index.js +1 -5
  18. package/dist/bits/accordion/types.d.ts +9 -18
  19. package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +4 -5
  20. package/dist/bits/alert-dialog/components/alert-dialog-action.svelte.d.ts +2 -17
  21. package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +6 -5
  22. package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte.d.ts +2 -17
  23. package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +20 -17
  24. package/dist/bits/alert-dialog/components/alert-dialog-content.svelte.d.ts +2 -17
  25. package/dist/bits/alert-dialog/components/alert-dialog.svelte +5 -14
  26. package/dist/bits/alert-dialog/components/alert-dialog.svelte.d.ts +2 -17
  27. package/dist/bits/alert-dialog/exports.d.ts +10 -0
  28. package/dist/bits/alert-dialog/exports.js +9 -0
  29. package/dist/bits/alert-dialog/index.d.ts +1 -10
  30. package/dist/bits/alert-dialog/index.js +1 -9
  31. package/dist/bits/alert-dialog/types.d.ts +1 -1
  32. package/dist/bits/aspect-ratio/aspect-ratio.svelte.js +1 -1
  33. package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +4 -5
  34. package/dist/bits/aspect-ratio/components/aspect-ratio.svelte.d.ts +3 -18
  35. package/dist/bits/aspect-ratio/exports.d.ts +2 -0
  36. package/dist/bits/aspect-ratio/exports.js +1 -0
  37. package/dist/bits/aspect-ratio/index.d.ts +1 -2
  38. package/dist/bits/aspect-ratio/index.js +1 -1
  39. package/dist/bits/aspect-ratio/types.d.ts +3 -3
  40. package/dist/bits/avatar/avatar.svelte.d.ts +1 -3
  41. package/dist/bits/avatar/avatar.svelte.js +11 -17
  42. package/dist/bits/avatar/components/avatar-fallback.svelte +4 -5
  43. package/dist/bits/avatar/components/avatar-fallback.svelte.d.ts +3 -18
  44. package/dist/bits/avatar/components/avatar-image.svelte +4 -5
  45. package/dist/bits/avatar/components/avatar-image.svelte.d.ts +3 -18
  46. package/dist/bits/avatar/components/avatar.svelte +4 -5
  47. package/dist/bits/avatar/components/avatar.svelte.d.ts +3 -18
  48. package/dist/bits/avatar/exports.d.ts +4 -0
  49. package/dist/bits/avatar/exports.js +3 -0
  50. package/dist/bits/avatar/index.d.ts +1 -4
  51. package/dist/bits/avatar/index.js +1 -3
  52. package/dist/bits/avatar/types.d.ts +4 -4
  53. package/dist/bits/button/components/button.svelte +14 -4
  54. package/dist/bits/button/components/button.svelte.d.ts +3 -18
  55. package/dist/bits/button/exports.d.ts +2 -0
  56. package/dist/bits/button/exports.js +1 -0
  57. package/dist/bits/button/index.d.ts +1 -2
  58. package/dist/bits/button/index.js +1 -1
  59. package/dist/bits/button/types.d.ts +6 -4
  60. package/dist/bits/calendar/calendar.svelte.d.ts +36 -76
  61. package/dist/bits/calendar/calendar.svelte.js +77 -89
  62. package/dist/bits/calendar/components/calendar-cell.svelte +4 -5
  63. package/dist/bits/calendar/components/calendar-cell.svelte.d.ts +3 -18
  64. package/dist/bits/calendar/components/calendar-day.svelte +10 -5
  65. package/dist/bits/calendar/components/calendar-day.svelte.d.ts +3 -18
  66. package/dist/bits/calendar/components/calendar-grid-body.svelte +4 -5
  67. package/dist/bits/calendar/components/calendar-grid-body.svelte.d.ts +3 -18
  68. package/dist/bits/calendar/components/calendar-grid-head.svelte +4 -5
  69. package/dist/bits/calendar/components/calendar-grid-head.svelte.d.ts +3 -18
  70. package/dist/bits/calendar/components/calendar-grid-row.svelte +4 -5
  71. package/dist/bits/calendar/components/calendar-grid-row.svelte.d.ts +3 -18
  72. package/dist/bits/calendar/components/calendar-grid.svelte +4 -5
  73. package/dist/bits/calendar/components/calendar-grid.svelte.d.ts +3 -18
  74. package/dist/bits/calendar/components/calendar-head-cell.svelte +4 -5
  75. package/dist/bits/calendar/components/calendar-head-cell.svelte.d.ts +3 -18
  76. package/dist/bits/calendar/components/calendar-header.svelte +4 -5
  77. package/dist/bits/calendar/components/calendar-header.svelte.d.ts +3 -18
  78. package/dist/bits/calendar/components/calendar-heading.svelte +4 -5
  79. package/dist/bits/calendar/components/calendar-heading.svelte.d.ts +3 -18
  80. package/dist/bits/calendar/components/calendar-next-button.svelte +4 -5
  81. package/dist/bits/calendar/components/calendar-next-button.svelte.d.ts +3 -18
  82. package/dist/bits/calendar/components/calendar-prev-button.svelte +4 -5
  83. package/dist/bits/calendar/components/calendar-prev-button.svelte.d.ts +3 -18
  84. package/dist/bits/calendar/components/calendar.svelte +18 -23
  85. package/dist/bits/calendar/components/calendar.svelte.d.ts +3 -18
  86. package/dist/bits/calendar/exports.d.ts +13 -0
  87. package/dist/bits/calendar/exports.js +12 -0
  88. package/dist/bits/calendar/index.d.ts +1 -13
  89. package/dist/bits/calendar/index.js +1 -12
  90. package/dist/bits/calendar/types.d.ts +15 -33
  91. package/dist/bits/checkbox/checkbox.svelte.d.ts +63 -12
  92. package/dist/bits/checkbox/checkbox.svelte.js +180 -44
  93. package/dist/bits/checkbox/components/checkbox-group-label.svelte +32 -0
  94. package/dist/bits/checkbox/components/checkbox-group-label.svelte.d.ts +4 -0
  95. package/dist/bits/checkbox/components/checkbox-group.svelte +45 -0
  96. package/dist/bits/checkbox/components/checkbox-group.svelte.d.ts +4 -0
  97. package/dist/bits/checkbox/components/checkbox.svelte +22 -16
  98. package/dist/bits/checkbox/components/checkbox.svelte.d.ts +3 -18
  99. package/dist/bits/checkbox/exports.d.ts +4 -0
  100. package/dist/bits/checkbox/exports.js +3 -0
  101. package/dist/bits/checkbox/index.d.ts +1 -2
  102. package/dist/bits/checkbox/index.js +1 -1
  103. package/dist/bits/checkbox/types.d.ts +54 -12
  104. package/dist/bits/collapsible/collapsible.svelte.d.ts +6 -5
  105. package/dist/bits/collapsible/collapsible.svelte.js +29 -23
  106. package/dist/bits/collapsible/components/collapsible-content.svelte +3 -4
  107. package/dist/bits/collapsible/components/collapsible-content.svelte.d.ts +5 -27
  108. package/dist/bits/collapsible/components/collapsible-trigger.svelte +4 -5
  109. package/dist/bits/collapsible/components/collapsible-trigger.svelte.d.ts +3 -18
  110. package/dist/bits/collapsible/components/collapsible.svelte +7 -13
  111. package/dist/bits/collapsible/components/collapsible.svelte.d.ts +3 -18
  112. package/dist/bits/collapsible/exports.d.ts +4 -0
  113. package/dist/bits/collapsible/exports.js +3 -0
  114. package/dist/bits/collapsible/index.d.ts +1 -4
  115. package/dist/bits/collapsible/index.js +1 -3
  116. package/dist/bits/collapsible/types.d.ts +6 -14
  117. package/dist/bits/combobox/components/combobox-input.svelte +6 -7
  118. package/dist/bits/combobox/components/combobox-input.svelte.d.ts +3 -18
  119. package/dist/bits/combobox/components/combobox-trigger.svelte +8 -8
  120. package/dist/bits/combobox/components/combobox-trigger.svelte.d.ts +3 -18
  121. package/dist/bits/combobox/components/combobox.svelte +23 -34
  122. package/dist/bits/combobox/components/combobox.svelte.d.ts +2 -17
  123. package/dist/bits/combobox/exports.d.ts +15 -0
  124. package/dist/bits/combobox/exports.js +14 -0
  125. package/dist/bits/combobox/index.d.ts +1 -8
  126. package/dist/bits/combobox/index.js +1 -7
  127. package/dist/bits/combobox/types.d.ts +3 -3
  128. package/dist/bits/command/command-score.js +1 -2
  129. package/dist/bits/command/command.svelte.d.ts +21 -27
  130. package/dist/bits/command/command.svelte.js +108 -122
  131. package/dist/bits/command/components/_command-label.svelte +2 -2
  132. package/dist/bits/command/components/_command-label.svelte.d.ts +3 -18
  133. package/dist/bits/command/components/command-empty.svelte +4 -5
  134. package/dist/bits/command/components/command-empty.svelte.d.ts +3 -18
  135. package/dist/bits/command/components/command-group-heading.svelte +4 -5
  136. package/dist/bits/command/components/command-group-heading.svelte.d.ts +3 -18
  137. package/dist/bits/command/components/command-group-items.svelte +4 -5
  138. package/dist/bits/command/components/command-group-items.svelte.d.ts +3 -18
  139. package/dist/bits/command/components/command-group.svelte +2 -3
  140. package/dist/bits/command/components/command-group.svelte.d.ts +2 -17
  141. package/dist/bits/command/components/command-input.svelte +4 -5
  142. package/dist/bits/command/components/command-input.svelte.d.ts +3 -18
  143. package/dist/bits/command/components/command-item.svelte +7 -8
  144. package/dist/bits/command/components/command-item.svelte.d.ts +3 -18
  145. package/dist/bits/command/components/command-link-item.svelte +7 -8
  146. package/dist/bits/command/components/command-link-item.svelte.d.ts +3 -18
  147. package/dist/bits/command/components/command-list.svelte +4 -5
  148. package/dist/bits/command/components/command-list.svelte.d.ts +3 -18
  149. package/dist/bits/command/components/command-loading.svelte +4 -5
  150. package/dist/bits/command/components/command-loading.svelte.d.ts +3 -18
  151. package/dist/bits/command/components/command-separator.svelte +4 -5
  152. package/dist/bits/command/components/command-separator.svelte.d.ts +3 -18
  153. package/dist/bits/command/components/command-viewport.svelte +3 -3
  154. package/dist/bits/command/components/command-viewport.svelte.d.ts +3 -18
  155. package/dist/bits/command/components/command.svelte +9 -13
  156. package/dist/bits/command/components/command.svelte.d.ts +3 -18
  157. package/dist/bits/command/exports.d.ts +13 -0
  158. package/dist/bits/command/exports.js +12 -0
  159. package/dist/bits/command/index.d.ts +1 -13
  160. package/dist/bits/command/index.js +1 -12
  161. package/dist/bits/command/types.d.ts +17 -21
  162. package/dist/bits/context-menu/components/context-menu-content-static.svelte +80 -45
  163. package/dist/bits/context-menu/components/context-menu-content-static.svelte.d.ts +3 -18
  164. package/dist/bits/context-menu/components/context-menu-content.svelte +79 -51
  165. package/dist/bits/context-menu/components/context-menu-content.svelte.d.ts +3 -18
  166. package/dist/bits/context-menu/components/context-menu-trigger.svelte +4 -5
  167. package/dist/bits/context-menu/components/context-menu-trigger.svelte.d.ts +3 -18
  168. package/dist/bits/context-menu/components/context-menu.svelte +10 -19
  169. package/dist/bits/context-menu/components/context-menu.svelte.d.ts +2 -18
  170. package/dist/bits/context-menu/exports.d.ts +18 -0
  171. package/dist/bits/context-menu/exports.js +17 -0
  172. package/dist/bits/context-menu/index.d.ts +1 -18
  173. package/dist/bits/context-menu/index.js +1 -17
  174. package/dist/bits/context-menu/types.d.ts +3 -3
  175. package/dist/bits/date-field/components/date-field-input.svelte +4 -5
  176. package/dist/bits/date-field/components/date-field-input.svelte.d.ts +3 -18
  177. package/dist/bits/date-field/components/date-field-label.svelte +4 -5
  178. package/dist/bits/date-field/components/date-field-label.svelte.d.ts +3 -18
  179. package/dist/bits/date-field/components/date-field-segment.svelte +4 -5
  180. package/dist/bits/date-field/components/date-field-segment.svelte.d.ts +3 -18
  181. package/dist/bits/date-field/components/date-field.svelte +9 -23
  182. package/dist/bits/date-field/components/date-field.svelte.d.ts +2 -17
  183. package/dist/bits/date-field/date-field.svelte.d.ts +83 -77
  184. package/dist/bits/date-field/date-field.svelte.js +167 -150
  185. package/dist/bits/date-field/exports.d.ts +5 -0
  186. package/dist/bits/date-field/exports.js +4 -0
  187. package/dist/bits/date-field/index.d.ts +1 -5
  188. package/dist/bits/date-field/index.js +1 -4
  189. package/dist/bits/date-field/types.d.ts +8 -26
  190. package/dist/bits/date-picker/components/date-picker-calendar.svelte +6 -7
  191. package/dist/bits/date-picker/components/date-picker-calendar.svelte.d.ts +3 -18
  192. package/dist/bits/date-picker/components/date-picker-content-static.svelte +8 -4
  193. package/dist/bits/date-picker/components/date-picker-content-static.svelte.d.ts +3 -18
  194. package/dist/bits/date-picker/components/date-picker-content.svelte +5 -5
  195. package/dist/bits/date-picker/components/date-picker-content.svelte.d.ts +3 -18
  196. package/dist/bits/date-picker/components/date-picker-trigger.svelte +8 -5
  197. package/dist/bits/date-picker/components/date-picker-trigger.svelte.d.ts +3 -18
  198. package/dist/bits/date-picker/components/date-picker.svelte +13 -36
  199. package/dist/bits/date-picker/components/date-picker.svelte.d.ts +2 -17
  200. package/dist/bits/date-picker/date-picker.svelte.d.ts +4 -3
  201. package/dist/bits/date-picker/date-picker.svelte.js +3 -3
  202. package/dist/bits/date-picker/exports.d.ts +22 -0
  203. package/dist/bits/date-picker/exports.js +21 -0
  204. package/dist/bits/date-picker/index.d.ts +1 -22
  205. package/dist/bits/date-picker/index.js +1 -21
  206. package/dist/bits/date-picker/types.d.ts +4 -30
  207. package/dist/bits/date-range-field/components/date-range-field-input.svelte +4 -5
  208. package/dist/bits/date-range-field/components/date-range-field-input.svelte.d.ts +3 -18
  209. package/dist/bits/date-range-field/components/date-range-field-label.svelte +4 -5
  210. package/dist/bits/date-range-field/components/date-range-field-label.svelte.d.ts +3 -18
  211. package/dist/bits/date-range-field/components/date-range-field.svelte +13 -31
  212. package/dist/bits/date-range-field/components/date-range-field.svelte.d.ts +3 -18
  213. package/dist/bits/date-range-field/date-range-field.svelte.d.ts +9 -29
  214. package/dist/bits/date-range-field/date-range-field.svelte.js +37 -60
  215. package/dist/bits/date-range-field/exports.d.ts +5 -0
  216. package/dist/bits/date-range-field/exports.js +4 -0
  217. package/dist/bits/date-range-field/index.d.ts +1 -5
  218. package/dist/bits/date-range-field/index.js +1 -4
  219. package/dist/bits/date-range-field/types.d.ts +9 -26
  220. package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +6 -7
  221. package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte.d.ts +3 -18
  222. package/dist/bits/date-range-picker/components/date-range-picker-trigger.svelte +8 -5
  223. package/dist/bits/date-range-picker/components/date-range-picker-trigger.svelte.d.ts +3 -18
  224. package/dist/bits/date-range-picker/components/date-range-picker.svelte +20 -47
  225. package/dist/bits/date-range-picker/components/date-range-picker.svelte.d.ts +3 -18
  226. package/dist/bits/date-range-picker/date-range-picker.svelte.d.ts +4 -3
  227. package/dist/bits/date-range-picker/date-range-picker.svelte.js +3 -3
  228. package/dist/bits/date-range-picker/exports.d.ts +21 -0
  229. package/dist/bits/date-range-picker/exports.js +20 -0
  230. package/dist/bits/date-range-picker/index.d.ts +1 -21
  231. package/dist/bits/date-range-picker/index.js +1 -20
  232. package/dist/bits/date-range-picker/types.d.ts +5 -32
  233. package/dist/bits/dialog/components/dialog-close.svelte +6 -5
  234. package/dist/bits/dialog/components/dialog-close.svelte.d.ts +2 -17
  235. package/dist/bits/dialog/components/dialog-content.svelte +20 -17
  236. package/dist/bits/dialog/components/dialog-content.svelte.d.ts +3 -18
  237. package/dist/bits/dialog/components/dialog-description.svelte +4 -5
  238. package/dist/bits/dialog/components/dialog-description.svelte.d.ts +3 -18
  239. package/dist/bits/dialog/components/dialog-overlay.svelte +4 -5
  240. package/dist/bits/dialog/components/dialog-overlay.svelte.d.ts +3 -18
  241. package/dist/bits/dialog/components/dialog-title.svelte +4 -5
  242. package/dist/bits/dialog/components/dialog-title.svelte.d.ts +3 -18
  243. package/dist/bits/dialog/components/dialog-trigger.svelte +6 -5
  244. package/dist/bits/dialog/components/dialog-trigger.svelte.d.ts +3 -18
  245. package/dist/bits/dialog/components/dialog.svelte +5 -14
  246. package/dist/bits/dialog/components/dialog.svelte.d.ts +2 -17
  247. package/dist/bits/dialog/dialog.svelte.d.ts +34 -18
  248. package/dist/bits/dialog/dialog.svelte.js +106 -54
  249. package/dist/bits/dialog/exports.d.ts +9 -0
  250. package/dist/bits/dialog/exports.js +8 -0
  251. package/dist/bits/dialog/index.d.ts +1 -9
  252. package/dist/bits/dialog/index.js +1 -8
  253. package/dist/bits/dialog/types.d.ts +9 -18
  254. package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +67 -33
  255. package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte.d.ts +3 -18
  256. package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +68 -34
  257. package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte.d.ts +3 -18
  258. package/dist/bits/dropdown-menu/exports.d.ts +18 -0
  259. package/dist/bits/dropdown-menu/exports.js +17 -0
  260. package/dist/bits/dropdown-menu/index.d.ts +1 -18
  261. package/dist/bits/dropdown-menu/index.js +1 -17
  262. package/dist/bits/dropdown-menu/types.d.ts +1 -1
  263. package/dist/bits/index.d.ts +38 -38
  264. package/dist/bits/index.js +38 -38
  265. package/dist/bits/label/components/label.svelte +4 -5
  266. package/dist/bits/label/components/label.svelte.d.ts +3 -18
  267. package/dist/bits/label/exports.d.ts +2 -0
  268. package/dist/bits/label/exports.js +1 -0
  269. package/dist/bits/label/index.d.ts +1 -2
  270. package/dist/bits/label/index.js +1 -1
  271. package/dist/bits/label/label.svelte.d.ts +4 -3
  272. package/dist/bits/label/label.svelte.js +5 -4
  273. package/dist/bits/label/types.d.ts +2 -2
  274. package/dist/bits/link-preview/components/link-preview-content-static.svelte +72 -33
  275. package/dist/bits/link-preview/components/link-preview-content-static.svelte.d.ts +3 -18
  276. package/dist/bits/link-preview/components/link-preview-content.svelte +75 -35
  277. package/dist/bits/link-preview/components/link-preview-content.svelte.d.ts +3 -18
  278. package/dist/bits/link-preview/components/link-preview-trigger.svelte +4 -5
  279. package/dist/bits/link-preview/components/link-preview-trigger.svelte.d.ts +3 -18
  280. package/dist/bits/link-preview/components/link-preview.svelte +5 -10
  281. package/dist/bits/link-preview/components/link-preview.svelte.d.ts +2 -17
  282. package/dist/bits/link-preview/exports.d.ts +7 -0
  283. package/dist/bits/link-preview/exports.js +6 -0
  284. package/dist/bits/link-preview/index.d.ts +1 -7
  285. package/dist/bits/link-preview/index.js +1 -6
  286. package/dist/bits/link-preview/link-preview.svelte.d.ts +22 -19
  287. package/dist/bits/link-preview/link-preview.svelte.js +67 -57
  288. package/dist/bits/link-preview/types.d.ts +10 -24
  289. package/dist/bits/menu/components/menu-arrow.svelte +5 -5
  290. package/dist/bits/menu/components/menu-arrow.svelte.d.ts +2 -17
  291. package/dist/bits/menu/components/menu-checkbox-item.svelte +20 -15
  292. package/dist/bits/menu/components/menu-checkbox-item.svelte.d.ts +3 -18
  293. package/dist/bits/menu/components/menu-content-static.svelte +73 -48
  294. package/dist/bits/menu/components/menu-content-static.svelte.d.ts +3 -18
  295. package/dist/bits/menu/components/menu-content.svelte +74 -48
  296. package/dist/bits/menu/components/menu-content.svelte.d.ts +3 -18
  297. package/dist/bits/menu/components/menu-group-heading.svelte +4 -5
  298. package/dist/bits/menu/components/menu-group-heading.svelte.d.ts +3 -18
  299. package/dist/bits/menu/components/menu-group.svelte +4 -5
  300. package/dist/bits/menu/components/menu-group.svelte.d.ts +3 -18
  301. package/dist/bits/menu/components/menu-item.svelte +7 -6
  302. package/dist/bits/menu/components/menu-item.svelte.d.ts +3 -18
  303. package/dist/bits/menu/components/menu-radio-group.svelte +7 -13
  304. package/dist/bits/menu/components/menu-radio-group.svelte.d.ts +3 -18
  305. package/dist/bits/menu/components/menu-radio-item.svelte +7 -6
  306. package/dist/bits/menu/components/menu-radio-item.svelte.d.ts +3 -18
  307. package/dist/bits/menu/components/menu-separator.svelte +4 -5
  308. package/dist/bits/menu/components/menu-separator.svelte.d.ts +3 -18
  309. package/dist/bits/menu/components/menu-sub-content-static.svelte +89 -56
  310. package/dist/bits/menu/components/menu-sub-content-static.svelte.d.ts +3 -18
  311. package/dist/bits/menu/components/menu-sub-content.svelte +102 -59
  312. package/dist/bits/menu/components/menu-sub-content.svelte.d.ts +3 -18
  313. package/dist/bits/menu/components/menu-sub-trigger.svelte +7 -8
  314. package/dist/bits/menu/components/menu-sub-trigger.svelte.d.ts +3 -18
  315. package/dist/bits/menu/components/menu-sub.svelte +8 -17
  316. package/dist/bits/menu/components/menu-sub.svelte.d.ts +2 -18
  317. package/dist/bits/menu/components/menu-trigger.svelte +9 -9
  318. package/dist/bits/menu/components/menu-trigger.svelte.d.ts +3 -18
  319. package/dist/bits/menu/components/menu.svelte +10 -19
  320. package/dist/bits/menu/components/menu.svelte.d.ts +5 -25
  321. package/dist/bits/menu/menu.svelte.d.ts +115 -111
  322. package/dist/bits/menu/menu.svelte.js +258 -296
  323. package/dist/bits/menu/types.d.ts +50 -59
  324. package/dist/bits/menubar/components/menubar-content-static.svelte +4 -5
  325. package/dist/bits/menubar/components/menubar-content-static.svelte.d.ts +3 -18
  326. package/dist/bits/menubar/components/menubar-content.svelte +4 -5
  327. package/dist/bits/menubar/components/menubar-content.svelte.d.ts +3 -18
  328. package/dist/bits/menubar/components/menubar-menu.svelte +3 -3
  329. package/dist/bits/menubar/components/menubar-menu.svelte.d.ts +2 -17
  330. package/dist/bits/menubar/components/menubar-trigger.svelte +4 -5
  331. package/dist/bits/menubar/components/menubar-trigger.svelte.d.ts +3 -18
  332. package/dist/bits/menubar/components/menubar.svelte +7 -13
  333. package/dist/bits/menubar/components/menubar.svelte.d.ts +3 -18
  334. package/dist/bits/menubar/exports.d.ts +20 -0
  335. package/dist/bits/menubar/exports.js +18 -0
  336. package/dist/bits/menubar/index.d.ts +1 -19
  337. package/dist/bits/menubar/index.js +1 -17
  338. package/dist/bits/menubar/menubar.svelte.d.ts +35 -33
  339. package/dist/bits/menubar/menubar.svelte.js +78 -85
  340. package/dist/bits/menubar/types.d.ts +5 -13
  341. package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +5 -6
  342. package/dist/bits/navigation-menu/components/navigation-menu-content.svelte.d.ts +3 -18
  343. package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +4 -5
  344. package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte.d.ts +3 -18
  345. package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +4 -5
  346. package/dist/bits/navigation-menu/components/navigation-menu-item.svelte.d.ts +3 -18
  347. package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +5 -6
  348. package/dist/bits/navigation-menu/components/navigation-menu-link.svelte.d.ts +3 -18
  349. package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +4 -5
  350. package/dist/bits/navigation-menu/components/navigation-menu-list.svelte.d.ts +3 -18
  351. package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +4 -5
  352. package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte.d.ts +3 -18
  353. package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +4 -5
  354. package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte.d.ts +3 -18
  355. package/dist/bits/navigation-menu/components/navigation-menu.svelte +7 -13
  356. package/dist/bits/navigation-menu/components/navigation-menu.svelte.d.ts +3 -18
  357. package/dist/bits/navigation-menu/exports.d.ts +9 -0
  358. package/dist/bits/navigation-menu/exports.js +8 -0
  359. package/dist/bits/navigation-menu/index.d.ts +1 -9
  360. package/dist/bits/navigation-menu/index.js +1 -8
  361. package/dist/bits/navigation-menu/navigation-menu.svelte.d.ts +53 -61
  362. package/dist/bits/navigation-menu/navigation-menu.svelte.js +138 -170
  363. package/dist/bits/navigation-menu/types.d.ts +11 -18
  364. package/dist/bits/pagination/components/pagination-next-button.svelte +6 -5
  365. package/dist/bits/pagination/components/pagination-next-button.svelte.d.ts +3 -18
  366. package/dist/bits/pagination/components/pagination-page.svelte +6 -5
  367. package/dist/bits/pagination/components/pagination-page.svelte.d.ts +3 -18
  368. package/dist/bits/pagination/components/pagination-prev-button.svelte +6 -5
  369. package/dist/bits/pagination/components/pagination-prev-button.svelte.d.ts +3 -18
  370. package/dist/bits/pagination/components/pagination.svelte +7 -13
  371. package/dist/bits/pagination/components/pagination.svelte.d.ts +3 -18
  372. package/dist/bits/pagination/exports.d.ts +5 -0
  373. package/dist/bits/pagination/exports.js +4 -0
  374. package/dist/bits/pagination/index.d.ts +1 -5
  375. package/dist/bits/pagination/index.js +1 -4
  376. package/dist/bits/pagination/pagination.svelte.d.ts +24 -15
  377. package/dist/bits/pagination/pagination.svelte.js +82 -43
  378. package/dist/bits/pagination/types.d.ts +6 -13
  379. package/dist/bits/pin-input/components/pin-input-cell.svelte +4 -5
  380. package/dist/bits/pin-input/components/pin-input-cell.svelte.d.ts +3 -18
  381. package/dist/bits/pin-input/components/pin-input.svelte +9 -15
  382. package/dist/bits/pin-input/components/pin-input.svelte.d.ts +3 -18
  383. package/dist/bits/pin-input/exports.d.ts +3 -0
  384. package/dist/bits/pin-input/exports.js +2 -0
  385. package/dist/bits/pin-input/index.d.ts +1 -3
  386. package/dist/bits/pin-input/index.js +1 -2
  387. package/dist/bits/pin-input/pin-input.svelte.d.ts +19 -17
  388. package/dist/bits/pin-input/pin-input.svelte.js +82 -27
  389. package/dist/bits/pin-input/types.d.ts +3 -12
  390. package/dist/bits/pin-input/usePasswordManager.svelte.js +6 -6
  391. package/dist/bits/popover/components/popover-arrow.svelte +4 -4
  392. package/dist/bits/popover/components/popover-arrow.svelte.d.ts +2 -17
  393. package/dist/bits/popover/components/popover-close.svelte +4 -5
  394. package/dist/bits/popover/components/popover-close.svelte.d.ts +3 -18
  395. package/dist/bits/popover/components/popover-content-static.svelte +67 -44
  396. package/dist/bits/popover/components/popover-content-static.svelte.d.ts +3 -18
  397. package/dist/bits/popover/components/popover-content.svelte +66 -44
  398. package/dist/bits/popover/components/popover-content.svelte.d.ts +3 -18
  399. package/dist/bits/popover/components/popover-trigger.svelte +9 -8
  400. package/dist/bits/popover/components/popover-trigger.svelte.d.ts +3 -18
  401. package/dist/bits/popover/components/popover.svelte +8 -17
  402. package/dist/bits/popover/components/popover.svelte.d.ts +2 -17
  403. package/dist/bits/popover/exports.d.ts +9 -0
  404. package/dist/bits/popover/exports.js +7 -0
  405. package/dist/bits/popover/index.d.ts +1 -9
  406. package/dist/bits/popover/index.js +1 -7
  407. package/dist/bits/popover/popover.svelte.d.ts +34 -18
  408. package/dist/bits/popover/popover.svelte.js +92 -42
  409. package/dist/bits/popover/types.d.ts +9 -23
  410. package/dist/bits/progress/components/progress.svelte +4 -5
  411. package/dist/bits/progress/components/progress.svelte.d.ts +3 -18
  412. package/dist/bits/progress/exports.d.ts +2 -0
  413. package/dist/bits/progress/exports.js +1 -0
  414. package/dist/bits/progress/index.d.ts +1 -2
  415. package/dist/bits/progress/index.js +1 -1
  416. package/dist/bits/progress/progress.svelte.js +1 -7
  417. package/dist/bits/progress/types.d.ts +2 -2
  418. package/dist/bits/radio-group/components/radio-group-item.svelte +4 -5
  419. package/dist/bits/radio-group/components/radio-group-item.svelte.d.ts +3 -18
  420. package/dist/bits/radio-group/components/radio-group.svelte +8 -13
  421. package/dist/bits/radio-group/components/radio-group.svelte.d.ts +3 -18
  422. package/dist/bits/radio-group/exports.d.ts +3 -0
  423. package/dist/bits/radio-group/exports.js +2 -0
  424. package/dist/bits/radio-group/index.d.ts +1 -3
  425. package/dist/bits/radio-group/index.js +1 -2
  426. package/dist/bits/radio-group/radio-group.svelte.d.ts +13 -11
  427. package/dist/bits/radio-group/radio-group.svelte.js +42 -33
  428. package/dist/bits/radio-group/types.d.ts +3 -11
  429. package/dist/bits/range-calendar/components/range-calendar-cell.svelte +4 -5
  430. package/dist/bits/range-calendar/components/range-calendar-cell.svelte.d.ts +3 -18
  431. package/dist/bits/range-calendar/components/range-calendar-day.svelte +10 -5
  432. package/dist/bits/range-calendar/components/range-calendar-day.svelte.d.ts +3 -18
  433. package/dist/bits/range-calendar/components/range-calendar.svelte +12 -34
  434. package/dist/bits/range-calendar/components/range-calendar.svelte.d.ts +3 -18
  435. package/dist/bits/range-calendar/exports.d.ts +13 -0
  436. package/dist/bits/range-calendar/exports.js +12 -0
  437. package/dist/bits/range-calendar/index.d.ts +1 -13
  438. package/dist/bits/range-calendar/index.js +1 -12
  439. package/dist/bits/range-calendar/range-calendar.svelte.d.ts +33 -41
  440. package/dist/bits/range-calendar/range-calendar.svelte.js +158 -162
  441. package/dist/bits/range-calendar/types.d.ts +3 -21
  442. package/dist/bits/scroll-area/components/scroll-area-corner-impl.svelte +3 -4
  443. package/dist/bits/scroll-area/components/scroll-area-corner-impl.svelte.d.ts +5 -19
  444. package/dist/bits/scroll-area/components/scroll-area-corner.svelte +5 -5
  445. package/dist/bits/scroll-area/components/scroll-area-corner.svelte.d.ts +3 -18
  446. package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +2 -2
  447. package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte.d.ts +2 -17
  448. package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +2 -2
  449. package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte.d.ts +2 -17
  450. package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +2 -2
  451. package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte.d.ts +2 -17
  452. package/dist/bits/scroll-area/components/scroll-area-scrollbar-shared.svelte +1 -1
  453. package/dist/bits/scroll-area/components/scroll-area-scrollbar-shared.svelte.d.ts +2 -17
  454. package/dist/bits/scroll-area/components/scroll-area-scrollbar-visible.svelte.d.ts +2 -17
  455. package/dist/bits/scroll-area/components/scroll-area-scrollbar-x.svelte +3 -3
  456. package/dist/bits/scroll-area/components/scroll-area-scrollbar-x.svelte.d.ts +2 -17
  457. package/dist/bits/scroll-area/components/scroll-area-scrollbar-y.svelte +3 -3
  458. package/dist/bits/scroll-area/components/scroll-area-scrollbar-y.svelte.d.ts +2 -17
  459. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +3 -3
  460. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte.d.ts +3 -18
  461. package/dist/bits/scroll-area/components/scroll-area-thumb-impl.svelte +3 -4
  462. package/dist/bits/scroll-area/components/scroll-area-thumb-impl.svelte.d.ts +5 -19
  463. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +6 -6
  464. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte.d.ts +3 -18
  465. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +18 -5
  466. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte.d.ts +3 -18
  467. package/dist/bits/scroll-area/components/scroll-area.svelte +4 -5
  468. package/dist/bits/scroll-area/components/scroll-area.svelte.d.ts +3 -18
  469. package/dist/bits/scroll-area/exports.d.ts +6 -0
  470. package/dist/bits/scroll-area/exports.js +5 -0
  471. package/dist/bits/scroll-area/index.d.ts +1 -6
  472. package/dist/bits/scroll-area/index.js +1 -5
  473. package/dist/bits/scroll-area/scroll-area.svelte.d.ts +51 -51
  474. package/dist/bits/scroll-area/scroll-area.svelte.js +113 -129
  475. package/dist/bits/scroll-area/types.d.ts +6 -6
  476. package/dist/bits/select/components/select-content-static.svelte +100 -0
  477. package/dist/bits/select/components/select-content-static.svelte.d.ts +4 -0
  478. package/dist/bits/select/components/select-content.svelte +87 -36
  479. package/dist/bits/select/components/select-content.svelte.d.ts +3 -18
  480. package/dist/bits/select/components/select-group-heading.svelte +7 -8
  481. package/dist/bits/select/components/select-group-heading.svelte.d.ts +3 -18
  482. package/dist/bits/select/components/select-group.svelte +7 -7
  483. package/dist/bits/select/components/select-group.svelte.d.ts +3 -18
  484. package/dist/bits/{listbox/components/listbox-hidden-input.svelte → select/components/select-hidden-input.svelte} +4 -4
  485. package/dist/bits/select/components/select-hidden-input.svelte.d.ts +6 -0
  486. package/dist/bits/select/components/select-item.svelte +24 -13
  487. package/dist/bits/select/components/select-item.svelte.d.ts +3 -18
  488. package/dist/bits/select/components/select-scroll-down-button.svelte +22 -12
  489. package/dist/bits/select/components/select-scroll-down-button.svelte.d.ts +3 -18
  490. package/dist/bits/select/components/select-scroll-up-button.svelte +24 -14
  491. package/dist/bits/select/components/select-scroll-up-button.svelte.d.ts +3 -18
  492. package/dist/bits/select/components/select-trigger.svelte +7 -9
  493. package/dist/bits/select/components/select-trigger.svelte.d.ts +3 -18
  494. package/dist/bits/select/components/select-viewport.svelte +14 -5
  495. package/dist/bits/select/components/select-viewport.svelte.d.ts +3 -18
  496. package/dist/bits/select/components/select.svelte +52 -66
  497. package/dist/bits/select/components/select.svelte.d.ts +2 -17
  498. package/dist/bits/select/exports.d.ts +12 -0
  499. package/dist/bits/select/exports.js +11 -0
  500. package/dist/bits/select/index.d.ts +1 -15
  501. package/dist/bits/select/index.js +1 -14
  502. package/dist/bits/select/select.svelte.d.ts +320 -286
  503. package/dist/bits/select/select.svelte.js +830 -918
  504. package/dist/bits/select/types.d.ts +123 -91
  505. package/dist/bits/separator/components/separator.svelte +4 -5
  506. package/dist/bits/separator/components/separator.svelte.d.ts +3 -18
  507. package/dist/bits/separator/exports.d.ts +2 -0
  508. package/dist/bits/separator/exports.js +1 -0
  509. package/dist/bits/separator/index.d.ts +1 -2
  510. package/dist/bits/separator/index.js +1 -1
  511. package/dist/bits/separator/separator.svelte.js +1 -1
  512. package/dist/bits/separator/types.d.ts +2 -2
  513. package/dist/bits/slider/components/slider-range.svelte +4 -5
  514. package/dist/bits/slider/components/slider-range.svelte.d.ts +3 -18
  515. package/dist/bits/slider/components/slider-thumb.svelte +4 -5
  516. package/dist/bits/slider/components/slider-thumb.svelte.d.ts +3 -18
  517. package/dist/bits/slider/components/slider-tick.svelte +4 -5
  518. package/dist/bits/slider/components/slider-tick.svelte.d.ts +3 -18
  519. package/dist/bits/slider/components/slider.svelte +19 -17
  520. package/dist/bits/slider/components/slider.svelte.d.ts +3 -18
  521. package/dist/bits/slider/exports.d.ts +5 -0
  522. package/dist/bits/slider/exports.js +4 -0
  523. package/dist/bits/slider/index.d.ts +1 -5
  524. package/dist/bits/slider/index.js +1 -4
  525. package/dist/bits/slider/slider.svelte.d.ts +119 -48
  526. package/dist/bits/slider/slider.svelte.js +281 -95
  527. package/dist/bits/slider/types.d.ts +54 -28
  528. package/dist/bits/switch/components/switch-thumb.svelte +4 -5
  529. package/dist/bits/switch/components/switch-thumb.svelte.d.ts +3 -18
  530. package/dist/bits/switch/components/switch.svelte +7 -13
  531. package/dist/bits/switch/components/switch.svelte.d.ts +3 -18
  532. package/dist/bits/switch/exports.d.ts +3 -0
  533. package/dist/bits/switch/exports.js +2 -0
  534. package/dist/bits/switch/index.d.ts +1 -3
  535. package/dist/bits/switch/index.js +1 -2
  536. package/dist/bits/switch/switch.svelte.d.ts +7 -7
  537. package/dist/bits/switch/switch.svelte.js +16 -24
  538. package/dist/bits/switch/types.d.ts +3 -12
  539. package/dist/bits/tabs/components/tabs-content.svelte +4 -5
  540. package/dist/bits/tabs/components/tabs-content.svelte.d.ts +3 -18
  541. package/dist/bits/tabs/components/tabs-list.svelte +4 -5
  542. package/dist/bits/tabs/components/tabs-list.svelte.d.ts +3 -18
  543. package/dist/bits/tabs/components/tabs-trigger.svelte +4 -5
  544. package/dist/bits/tabs/components/tabs-trigger.svelte.d.ts +3 -18
  545. package/dist/bits/tabs/components/tabs.svelte +7 -13
  546. package/dist/bits/tabs/components/tabs.svelte.d.ts +3 -18
  547. package/dist/bits/tabs/exports.d.ts +5 -0
  548. package/dist/bits/tabs/exports.js +4 -0
  549. package/dist/bits/tabs/index.d.ts +1 -5
  550. package/dist/bits/tabs/index.js +1 -4
  551. package/dist/bits/tabs/tabs.svelte.d.ts +12 -13
  552. package/dist/bits/tabs/tabs.svelte.js +44 -71
  553. package/dist/bits/tabs/types.d.ts +5 -13
  554. package/dist/bits/toggle/components/toggle.svelte +7 -13
  555. package/dist/bits/toggle/components/toggle.svelte.d.ts +3 -18
  556. package/dist/bits/toggle/exports.d.ts +2 -0
  557. package/dist/bits/toggle/exports.js +1 -0
  558. package/dist/bits/toggle/index.d.ts +1 -2
  559. package/dist/bits/toggle/index.js +1 -1
  560. package/dist/bits/toggle/toggle.svelte.d.ts +6 -5
  561. package/dist/bits/toggle/toggle.svelte.js +9 -19
  562. package/dist/bits/toggle/types.d.ts +2 -11
  563. package/dist/bits/toggle-group/components/toggle-group-item.svelte +4 -5
  564. package/dist/bits/toggle-group/components/toggle-group-item.svelte.d.ts +3 -18
  565. package/dist/bits/toggle-group/components/toggle-group.svelte +10 -17
  566. package/dist/bits/toggle-group/components/toggle-group.svelte.d.ts +3 -18
  567. package/dist/bits/toggle-group/exports.d.ts +3 -0
  568. package/dist/bits/toggle-group/exports.js +2 -0
  569. package/dist/bits/toggle-group/index.d.ts +1 -3
  570. package/dist/bits/toggle-group/index.js +1 -2
  571. package/dist/bits/toggle-group/toggle-group.svelte.d.ts +14 -13
  572. package/dist/bits/toggle-group/toggle-group.svelte.js +38 -32
  573. package/dist/bits/toggle-group/types.d.ts +5 -13
  574. package/dist/bits/toolbar/components/toolbar-button.svelte +4 -5
  575. package/dist/bits/toolbar/components/toolbar-button.svelte.d.ts +3 -18
  576. package/dist/bits/toolbar/components/toolbar-group-item.svelte +4 -5
  577. package/dist/bits/toolbar/components/toolbar-group-item.svelte.d.ts +2 -17
  578. package/dist/bits/toolbar/components/toolbar-group.svelte +9 -17
  579. package/dist/bits/toolbar/components/toolbar-group.svelte.d.ts +3 -18
  580. package/dist/bits/toolbar/components/toolbar-link.svelte +4 -5
  581. package/dist/bits/toolbar/components/toolbar-link.svelte.d.ts +3 -18
  582. package/dist/bits/toolbar/components/toolbar.svelte +4 -5
  583. package/dist/bits/toolbar/components/toolbar.svelte.d.ts +3 -18
  584. package/dist/bits/toolbar/exports.d.ts +6 -0
  585. package/dist/bits/toolbar/exports.js +5 -0
  586. package/dist/bits/toolbar/index.d.ts +1 -6
  587. package/dist/bits/toolbar/index.js +1 -5
  588. package/dist/bits/toolbar/toolbar.svelte.d.ts +17 -19
  589. package/dist/bits/toolbar/toolbar.svelte.js +57 -59
  590. package/dist/bits/toolbar/types.d.ts +5 -5
  591. package/dist/bits/tooltip/components/tooltip-arrow.svelte +4 -4
  592. package/dist/bits/tooltip/components/tooltip-arrow.svelte.d.ts +2 -17
  593. package/dist/bits/tooltip/components/tooltip-content-static.svelte +71 -32
  594. package/dist/bits/tooltip/components/tooltip-content-static.svelte.d.ts +3 -18
  595. package/dist/bits/tooltip/components/tooltip-content.svelte +71 -33
  596. package/dist/bits/tooltip/components/tooltip-content.svelte.d.ts +3 -18
  597. package/dist/bits/tooltip/components/tooltip-provider.svelte +2 -2
  598. package/dist/bits/tooltip/components/tooltip-provider.svelte.d.ts +2 -18
  599. package/dist/bits/tooltip/components/tooltip-trigger.svelte +7 -8
  600. package/dist/bits/tooltip/components/tooltip-trigger.svelte.d.ts +3 -18
  601. package/dist/bits/tooltip/components/tooltip.svelte +11 -16
  602. package/dist/bits/tooltip/components/tooltip.svelte.d.ts +2 -18
  603. package/dist/bits/tooltip/exports.d.ts +9 -0
  604. package/dist/bits/tooltip/exports.js +7 -0
  605. package/dist/bits/tooltip/index.d.ts +1 -9
  606. package/dist/bits/tooltip/index.js +1 -7
  607. package/dist/bits/tooltip/tooltip.svelte.d.ts +14 -10
  608. package/dist/bits/tooltip/tooltip.svelte.js +42 -52
  609. package/dist/bits/tooltip/types.d.ts +10 -24
  610. package/dist/bits/utilities/arrow/arrow.svelte +3 -3
  611. package/dist/bits/utilities/arrow/arrow.svelte.d.ts +2 -17
  612. package/dist/bits/utilities/arrow/types.d.ts +2 -2
  613. package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +1 -3
  614. package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte.d.ts +2 -17
  615. package/dist/bits/utilities/dismissible-layer/types.d.ts +3 -14
  616. package/dist/bits/utilities/dismissible-layer/{useDismissibleLayer.svelte.js → use-dismissable-layer.svelte.js} +95 -78
  617. package/dist/bits/utilities/escape-layer/escape-layer.svelte +1 -1
  618. package/dist/bits/utilities/escape-layer/escape-layer.svelte.d.ts +2 -17
  619. package/dist/bits/utilities/escape-layer/{useEscapeLayer.svelte.js → use-escape-layer.svelte.js} +10 -10
  620. package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +1 -1
  621. package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte.d.ts +2 -17
  622. package/dist/bits/utilities/floating-layer/components/floating-layer-arrow.svelte +4 -6
  623. package/dist/bits/utilities/floating-layer/components/floating-layer-arrow.svelte.d.ts +2 -17
  624. package/dist/bits/utilities/floating-layer/components/floating-layer-content-static.svelte +4 -2
  625. package/dist/bits/utilities/floating-layer/components/floating-layer-content-static.svelte.d.ts +10 -21
  626. package/dist/bits/utilities/floating-layer/components/floating-layer-content.svelte +4 -7
  627. package/dist/bits/utilities/floating-layer/components/floating-layer-content.svelte.d.ts +2 -17
  628. package/dist/bits/utilities/floating-layer/components/floating-layer.svelte +1 -1
  629. package/dist/bits/utilities/floating-layer/components/floating-layer.svelte.d.ts +4 -18
  630. package/dist/bits/utilities/floating-layer/types.d.ts +9 -1
  631. package/dist/bits/utilities/floating-layer/{useFloatingLayer.svelte.d.ts → use-floating-layer.svelte.d.ts} +10 -13
  632. package/dist/bits/utilities/floating-layer/{useFloatingLayer.svelte.js → use-floating-layer.svelte.js} +19 -42
  633. package/dist/bits/utilities/focus-scope/focus-scope-stack.svelte.js +2 -2
  634. package/dist/bits/utilities/focus-scope/focus-scope.svelte +4 -2
  635. package/dist/bits/utilities/focus-scope/focus-scope.svelte.d.ts +2 -17
  636. package/dist/bits/utilities/focus-scope/types.d.ts +5 -1
  637. package/dist/bits/utilities/focus-scope/{useFocusScope.svelte.d.ts → use-focus-scope.svelte.d.ts} +5 -1
  638. package/dist/bits/utilities/focus-scope/{useFocusScope.svelte.js → use-focus-scope.svelte.js} +74 -65
  639. package/dist/bits/utilities/is-using-keyboard/is-using-keyboard.svelte.d.ts +13 -0
  640. package/dist/bits/utilities/is-using-keyboard/is-using-keyboard.svelte.js +51 -0
  641. package/dist/bits/utilities/mounted.svelte +5 -7
  642. package/dist/bits/utilities/mounted.svelte.d.ts +4 -18
  643. package/dist/bits/utilities/popper-layer/popper-content.svelte.d.ts +5 -23
  644. package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte +85 -0
  645. package/dist/bits/utilities/popper-layer/popper-layer-force-mount.svelte.d.ts +7 -0
  646. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +127 -0
  647. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte.d.ts +7 -0
  648. package/dist/bits/utilities/popper-layer/popper-layer.svelte +23 -67
  649. package/dist/bits/utilities/popper-layer/popper-layer.svelte.d.ts +2 -17
  650. package/dist/bits/utilities/popper-layer/types.d.ts +8 -5
  651. package/dist/bits/utilities/portal/portal-consumer.svelte.d.ts +4 -18
  652. package/dist/bits/utilities/portal/portal.svelte +19 -18
  653. package/dist/bits/utilities/portal/portal.svelte.d.ts +2 -17
  654. package/dist/bits/utilities/presence-layer/presence-layer.svelte +1 -1
  655. package/dist/bits/utilities/presence-layer/presence-layer.svelte.d.ts +2 -17
  656. package/dist/bits/utilities/presence-layer/{usePresence.svelte.d.ts → use-presence.svelte.d.ts} +1 -1
  657. package/dist/bits/utilities/presence-layer/{usePresence.svelte.js → use-presence.svelte.js} +16 -26
  658. package/dist/bits/utilities/scroll-lock/index.d.ts +10 -0
  659. package/dist/bits/utilities/scroll-lock/scroll-lock.svelte +3 -3
  660. package/dist/bits/utilities/scroll-lock/scroll-lock.svelte.d.ts +2 -17
  661. package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +1 -1
  662. package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte.d.ts +2 -17
  663. package/dist/bits/utilities/text-selection-layer/{useTextSelectionLayer.svelte.js → use-text-selection-layer.svelte.js} +13 -15
  664. package/dist/bits/utilities/visually-hidden/types.d.ts +2 -2
  665. package/dist/bits/utilities/visually-hidden/visually-hidden.svelte +1 -1
  666. package/dist/bits/utilities/visually-hidden/visually-hidden.svelte.d.ts +2 -17
  667. package/dist/index.d.ts +1 -2
  668. package/dist/index.js +1 -1
  669. package/dist/internal/arrays.d.ts +23 -0
  670. package/dist/internal/arrays.js +35 -0
  671. package/dist/internal/attrs.d.ts +1 -1
  672. package/dist/internal/attrs.js +3 -3
  673. package/dist/internal/{createEventHook.svelte.js → create-event-hook.svelte.js} +1 -1
  674. package/dist/{shared/date → internal/date-time}/announcer.js +3 -14
  675. package/dist/{shared/date → internal/date-time}/calendar-helpers.svelte.d.ts +3 -6
  676. package/dist/{shared/date → internal/date-time}/calendar-helpers.svelte.js +15 -15
  677. package/dist/{shared/date → internal/date-time}/field/helpers.d.ts +2 -1
  678. package/dist/{shared/date → internal/date-time}/field/helpers.js +15 -15
  679. package/dist/{shared/date/field.js → internal/date-time/field/segments.js} +4 -5
  680. package/dist/{shared/date → internal/date-time}/formatter.d.ts +2 -1
  681. package/dist/{shared/date → internal/date-time}/formatter.js +3 -2
  682. package/dist/{shared/date → internal/date-time}/utils.d.ts +1 -1
  683. package/dist/{shared/date → internal/date-time}/utils.js +0 -12
  684. package/dist/internal/debounce.js +1 -1
  685. package/dist/internal/events.d.ts +14 -0
  686. package/dist/internal/events.js +32 -0
  687. package/dist/internal/focus.js +1 -1
  688. package/dist/internal/is.js +0 -1
  689. package/dist/internal/kbd-constants.d.ts +40 -0
  690. package/dist/internal/kbd-constants.js +40 -0
  691. package/dist/internal/kbd.d.ts +1 -77
  692. package/dist/internal/kbd.js +1 -79
  693. package/dist/internal/should-trap-focus.d.ts +6 -0
  694. package/dist/internal/should-trap-focus.js +6 -0
  695. package/dist/internal/types.d.ts +35 -0
  696. package/dist/internal/{useBodyScrollLock.svelte.d.ts → use-body-scroll-lock.svelte.d.ts} +2 -1
  697. package/dist/internal/use-body-scroll-lock.svelte.js +110 -0
  698. package/dist/internal/use-data-typeahead.svelte.d.ts +12 -0
  699. package/dist/internal/use-data-typeahead.svelte.js +30 -0
  700. package/dist/internal/use-dom-typeahead.svelte.d.ts +11 -0
  701. package/dist/internal/use-dom-typeahead.svelte.js +30 -0
  702. package/dist/internal/use-grace-area.svelte.d.ts +5 -0
  703. package/dist/internal/{useGraceArea.svelte.js → use-grace-area.svelte.js} +18 -22
  704. package/dist/internal/use-id.js +8 -0
  705. package/dist/internal/{useRovingFocus.svelte.d.ts → use-roving-focus.svelte.d.ts} +1 -1
  706. package/dist/internal/{useRovingFocus.svelte.js → use-roving-focus.svelte.js} +8 -2
  707. package/dist/internal/{useSize.svelte.d.ts → use-size.svelte.d.ts} +1 -1
  708. package/dist/internal/{useSize.svelte.js → use-size.svelte.js} +1 -1
  709. package/dist/internal/{useStateMachine.svelte.js → use-state-machine.svelte.js} +1 -0
  710. package/dist/internal/{useTimeoutFn.svelte.js → use-timeout-fn.svelte.js} +1 -2
  711. package/dist/shared/attributes.d.ts +28 -28
  712. package/dist/shared/css.d.ts +2 -1
  713. package/dist/shared/date/types.d.ts +25 -0
  714. package/dist/shared/index.d.ts +6 -9
  715. package/dist/shared/index.js +4 -2
  716. package/dist/shared/types.d.ts +13 -0
  717. package/dist/types.d.ts +1 -1
  718. package/package.json +19 -28
  719. package/dist/bits/listbox/components/listbox-content-static.svelte +0 -69
  720. package/dist/bits/listbox/components/listbox-content-static.svelte.d.ts +0 -19
  721. package/dist/bits/listbox/components/listbox-content.svelte +0 -77
  722. package/dist/bits/listbox/components/listbox-content.svelte.d.ts +0 -19
  723. package/dist/bits/listbox/components/listbox-group-label.svelte +0 -33
  724. package/dist/bits/listbox/components/listbox-group-label.svelte.d.ts +0 -19
  725. package/dist/bits/listbox/components/listbox-group.svelte +0 -33
  726. package/dist/bits/listbox/components/listbox-group.svelte.d.ts +0 -19
  727. package/dist/bits/listbox/components/listbox-hidden-input.svelte.d.ts +0 -20
  728. package/dist/bits/listbox/components/listbox-item.svelte +0 -44
  729. package/dist/bits/listbox/components/listbox-item.svelte.d.ts +0 -19
  730. package/dist/bits/listbox/components/listbox-label.svelte +0 -33
  731. package/dist/bits/listbox/components/listbox-label.svelte.d.ts +0 -18
  732. package/dist/bits/listbox/components/listbox-scroll-down-button.svelte +0 -40
  733. package/dist/bits/listbox/components/listbox-scroll-down-button.svelte.d.ts +0 -19
  734. package/dist/bits/listbox/components/listbox-scroll-up-button.svelte +0 -40
  735. package/dist/bits/listbox/components/listbox-scroll-up-button.svelte.d.ts +0 -19
  736. package/dist/bits/listbox/components/listbox-trigger.svelte +0 -36
  737. package/dist/bits/listbox/components/listbox-trigger.svelte.d.ts +0 -19
  738. package/dist/bits/listbox/components/listbox-viewport.svelte +0 -55
  739. package/dist/bits/listbox/components/listbox-viewport.svelte.d.ts +0 -19
  740. package/dist/bits/listbox/components/listbox.svelte +0 -81
  741. package/dist/bits/listbox/components/listbox.svelte.d.ts +0 -18
  742. package/dist/bits/listbox/index.d.ts +0 -13
  743. package/dist/bits/listbox/index.js +0 -12
  744. package/dist/bits/listbox/listbox.svelte.d.ts +0 -414
  745. package/dist/bits/listbox/listbox.svelte.js +0 -1023
  746. package/dist/bits/listbox/types.d.ts +0 -177
  747. package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +0 -48
  748. package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte.d.ts +0 -18
  749. package/dist/bits/select/components/select-arrow.svelte +0 -22
  750. package/dist/bits/select/components/select-arrow.svelte.d.ts +0 -18
  751. package/dist/bits/select/components/select-content-floating.svelte +0 -73
  752. package/dist/bits/select/components/select-content-floating.svelte.d.ts +0 -34
  753. package/dist/bits/select/components/select-content-impl.svelte +0 -90
  754. package/dist/bits/select/components/select-content-impl.svelte.d.ts +0 -90
  755. package/dist/bits/select/components/select-content-item-aligned.svelte +0 -38
  756. package/dist/bits/select/components/select-content-item-aligned.svelte.d.ts +0 -29
  757. package/dist/bits/select/components/select-icon.svelte +0 -37
  758. package/dist/bits/select/components/select-icon.svelte.d.ts +0 -19
  759. package/dist/bits/select/components/select-item-text.svelte +0 -40
  760. package/dist/bits/select/components/select-item-text.svelte.d.ts +0 -19
  761. package/dist/bits/select/components/select-native.svelte +0 -36
  762. package/dist/bits/select/components/select-native.svelte.d.ts +0 -30
  763. package/dist/bits/select/components/select-provider.svelte +0 -10
  764. package/dist/bits/select/components/select-provider.svelte.d.ts +0 -23
  765. package/dist/bits/select/components/select-scroll-down-button-mounted.svelte +0 -33
  766. package/dist/bits/select/components/select-scroll-down-button-mounted.svelte.d.ts +0 -29
  767. package/dist/bits/select/components/select-scroll-up-button-mounted.svelte +0 -33
  768. package/dist/bits/select/components/select-scroll-up-button-mounted.svelte.d.ts +0 -29
  769. package/dist/bits/select/components/select-separator.svelte +0 -33
  770. package/dist/bits/select/components/select-separator.svelte.d.ts +0 -19
  771. package/dist/bits/select/components/select-value.svelte +0 -35
  772. package/dist/bits/select/components/select-value.svelte.d.ts +0 -19
  773. package/dist/internal/afterSleep.d.ts +0 -4
  774. package/dist/internal/afterSleep.js +0 -6
  775. package/dist/internal/afterTick.d.ts +0 -5
  776. package/dist/internal/afterTick.js +0 -7
  777. package/dist/internal/callbacks.d.ts +0 -11
  778. package/dist/internal/callbacks.js +0 -21
  779. package/dist/internal/composeHandlers.d.ts +0 -8
  780. package/dist/internal/composeHandlers.js +0 -21
  781. package/dist/internal/createContext.d.ts +0 -1
  782. package/dist/internal/createContext.js +0 -56
  783. package/dist/internal/cssToStyleObj.d.ts +0 -2
  784. package/dist/internal/cssToStyleObj.js +0 -23
  785. package/dist/internal/executeCallbacks.d.ts +0 -7
  786. package/dist/internal/executeCallbacks.js +0 -15
  787. package/dist/internal/mergeProps.d.ts +0 -22
  788. package/dist/internal/mergeProps.js +0 -98
  789. package/dist/internal/onDestroyEffect.svelte.d.ts +0 -1
  790. package/dist/internal/onDestroyEffect.svelte.js +0 -7
  791. package/dist/internal/strings.d.ts +0 -3
  792. package/dist/internal/strings.js +0 -70
  793. package/dist/internal/style.d.ts +0 -3
  794. package/dist/internal/style.js +0 -16
  795. package/dist/internal/styleToCSS.d.ts +0 -1
  796. package/dist/internal/styleToCSS.js +0 -23
  797. package/dist/internal/useBodyScrollLock.svelte.js +0 -88
  798. package/dist/internal/useGraceArea.svelte.d.ts +0 -5
  799. package/dist/internal/useId.js +0 -8
  800. package/dist/internal/useRefById.svelte.d.ts +0 -28
  801. package/dist/internal/useRefById.svelte.js +0 -27
  802. package/dist/internal/useTypeahead.svelte.d.ts +0 -34
  803. package/dist/internal/useTypeahead.svelte.js +0 -64
  804. package/dist/shared/date/index.d.ts +0 -7
  805. package/dist/shared/date/index.js +0 -7
  806. /package/dist/bits/menu/{index.d.ts → exports.d.ts} +0 -0
  807. /package/dist/bits/menu/{index.js → exports.js} +0 -0
  808. /package/dist/bits/utilities/dismissible-layer/{useDismissibleLayer.svelte.d.ts → use-dismissable-layer.svelte.d.ts} +0 -0
  809. /package/dist/bits/utilities/escape-layer/{useEscapeLayer.svelte.d.ts → use-escape-layer.svelte.d.ts} +0 -0
  810. /package/dist/bits/utilities/text-selection-layer/{useTextSelectionLayer.svelte.d.ts → use-text-selection-layer.svelte.d.ts} +0 -0
  811. /package/dist/internal/{boxAutoReset.svelte.d.ts → box-auto-reset.svelte.d.ts} +0 -0
  812. /package/dist/internal/{boxAutoReset.svelte.js → box-auto-reset.svelte.js} +0 -0
  813. /package/dist/internal/{createEventHook.svelte.d.ts → create-event-hook.svelte.d.ts} +0 -0
  814. /package/dist/internal/{createSharedHook.svelte.d.ts → create-shared-hook.svelte.d.ts} +0 -0
  815. /package/dist/internal/{createSharedHook.svelte.js → create-shared-hook.svelte.js} +0 -0
  816. /package/dist/{shared/date → internal/date-time}/announcer.d.ts +0 -0
  817. /package/dist/{shared/date → internal/date-time}/field/parts.d.ts +0 -0
  818. /package/dist/{shared/date → internal/date-time}/field/parts.js +0 -0
  819. /package/dist/{shared/date/field.d.ts → internal/date-time/field/segments.d.ts} +0 -0
  820. /package/dist/{shared/date → internal/date-time}/field/types.d.ts +0 -0
  821. /package/dist/{bits/listbox → internal/date-time/field}/types.js +0 -0
  822. /package/dist/{shared/date → internal/date-time}/placeholders.d.ts +0 -0
  823. /package/dist/{shared/date → internal/date-time}/placeholders.js +0 -0
  824. /package/dist/internal/floating-svelte/{useFloating.svelte.d.ts → use-floating.svelte.d.ts} +0 -0
  825. /package/dist/internal/floating-svelte/{useFloating.svelte.js → use-floating.svelte.js} +0 -0
  826. /package/dist/internal/{getDirectionalKeys.d.ts → get-directional-keys.d.ts} +0 -0
  827. /package/dist/internal/{getDirectionalKeys.js → get-directional-keys.js} +0 -0
  828. /package/dist/internal/{useArrowNavigation.d.ts → use-arrow-navigation.d.ts} +0 -0
  829. /package/dist/internal/{useArrowNavigation.js → use-arrow-navigation.js} +0 -0
  830. /package/dist/internal/{useFormControl.svelte.d.ts → use-form-control.svelte.d.ts} +0 -0
  831. /package/dist/internal/{useFormControl.svelte.js → use-form-control.svelte.js} +0 -0
  832. /package/dist/internal/{useId.d.ts → use-id.d.ts} +0 -0
  833. /package/dist/internal/{useResizeObserver.svelte.d.ts → use-resize-observer.svelte.d.ts} +0 -0
  834. /package/dist/internal/{useResizeObserver.svelte.js → use-resize-observer.svelte.js} +0 -0
  835. /package/dist/internal/{useStateMachine.svelte.d.ts → use-state-machine.svelte.d.ts} +0 -0
  836. /package/dist/internal/{useTimeoutFn.svelte.d.ts → use-timeout-fn.svelte.d.ts} +0 -0
  837. /package/dist/shared/{date/field/types.js → types.js} +0 -0
@@ -1,95 +1,37 @@
1
- import { box } from "svelte-toolbelt";
2
- import { tick, untrack } from "svelte";
3
- import { IsFocusWithin } from "runed";
1
+ import { afterTick, box, mergeProps, onDestroyEffect, useRefById } from "svelte-toolbelt";
2
+ import { Context, IsFocusWithin, watch } from "runed";
4
3
  import { FIRST_LAST_KEYS, LAST_KEYS, SELECTION_KEYS, SUB_OPEN_KEYS, getCheckedState, isMouseEvent, } from "./utils.js";
5
4
  import { focusFirst } from "../../internal/focus.js";
6
- import { addEventListener } from "../../internal/events.js";
7
- import { executeCallbacks } from "../../internal/executeCallbacks.js";
8
- import { useTypeahead } from "../../internal/useTypeahead.svelte.js";
5
+ import { CustomEventDispatcher } from "../../internal/events.js";
6
+ import { useDOMTypeahead } from "../../internal/use-dom-typeahead.svelte.js";
9
7
  import { isElement, isElementOrSVGElement, isHTMLElement } from "../../internal/is.js";
10
- import { useRovingFocus } from "../../internal/useRovingFocus.svelte.js";
8
+ import { useRovingFocus } from "../../internal/use-roving-focus.svelte.js";
11
9
  import { kbd } from "../../internal/kbd.js";
12
10
  import { getAriaChecked, getAriaDisabled, getAriaExpanded, getAriaOrientation, getDataDisabled, getDataOpenClosed, } from "../../internal/attrs.js";
13
- import { mergeProps } from "../../internal/mergeProps.js";
14
- import { createContext } from "../../internal/createContext.js";
15
- import { afterTick } from "../../internal/afterTick.js";
16
- import { useRefById } from "../../internal/useRefById.svelte.js";
17
11
  import { isPointerInGraceArea, makeHullFromElements } from "../../internal/polygon.js";
18
- import { onDestroyEffect } from "../../internal/onDestroyEffect.svelte.js";
19
- // const TRIGGER_ATTR = "data-menu-trigger";
20
- // const CONTENT_ATTR = "data-menu-content";
21
- // const ITEM_ATTR = "data-menu-item";
22
- // const SEPARATOR_ATTR = "data-menu-separator";
23
- // const SUB_TRIGGER_ATTR = "data-menu-sub-trigger";
24
- // const CHECKBOX_ITEM_ATTR = "data-menu-checkbox-item";
25
- // const GROUP_ATTR = "data-menu-group";
26
- // const LABEL_ATTR = "data-menu-group-heading";
27
- // const RADIO_GROUP_ATTR = "data-menu-radio-group";
28
- // const RADIO_ITEM_ATTR = "data-menu-radio-item";
29
- // const ARROW_ATTR = "data-menu-arrow";
12
+ import { IsUsingKeyboard } from "../../index.js";
30
13
  export const CONTEXT_MENU_TRIGGER_ATTR = "data-context-menu-trigger";
31
- const [setMenuRootContext, getMenuRootContext] = createContext("Menu.Root");
32
- const [setMenuMenuContext, getMenuMenuContext] = createContext(["Menu.Root", "Menu.Sub"], "MenuContext");
33
- const [setMenuContentContext, getMenuContentContext] = createContext("Menu.Content");
34
- const [setMenuGroupContext, getMenuGroupContext] = createContext("Menu.Group");
35
- const [setMenuRadioGroupContext, getMenuRadioGroupContext] = createContext("Menu.RadioGroup");
36
- function createAttrs(variant) {
37
- return {
38
- trigger: `data-${variant}-trigger`,
39
- content: `data-${variant}-content`,
40
- item: `data-${variant}-item`,
41
- separator: `data-${variant}-separator`,
42
- subTrigger: `data-${variant}-sub-trigger`,
43
- checkboxItem: `data-${variant}-checkbox-item`,
44
- group: `data-${variant}-group`,
45
- groupHeading: `data-${variant}-group-heading`,
46
- radioGroup: `data-${variant}-radio-group`,
47
- radioItem: `data-${variant}-radio-item`,
48
- arrow: `data-${variant}-arrow`,
49
- subContent: `data-${variant}-sub-content`,
50
- };
51
- }
14
+ const MenuRootContext = new Context("Menu.Root");
15
+ const MenuMenuContext = new Context("Menu.Root | Menu.Sub");
16
+ const MenuContentContext = new Context("Menu.Content");
17
+ const MenuGroupContext = new Context("Menu.Group | Menu.RadioGroup");
18
+ const MenuRadioGroupContext = new Context("Menu.RadioGroup");
19
+ export const MenuOpenEvent = new CustomEventDispatcher("bitsmenuopen", {
20
+ bubbles: false,
21
+ cancelable: true,
22
+ });
52
23
  class MenuRootState {
53
24
  onClose;
54
25
  variant;
55
- isUsingKeyboard = box(false);
26
+ isUsingKeyboard = new IsUsingKeyboard();
56
27
  dir;
57
- attrs = $derived.by(() => createAttrs(this.variant.current));
58
28
  constructor(props) {
59
29
  this.onClose = props.onClose;
60
30
  this.dir = props.dir;
61
31
  this.variant = props.variant;
62
- $effect(() => {
63
- const callbacksToDispose = [];
64
- const handlePointer = (_) => {
65
- this.isUsingKeyboard.current = false;
66
- };
67
- const handleKeydown = (_) => {
68
- this.isUsingKeyboard.current = true;
69
- const disposePointerDown = addEventListener(document, "pointerdown", handlePointer, { capture: true, once: true });
70
- const disposePointerMove = addEventListener(document, "pointermove", handlePointer, { capture: true, once: true });
71
- callbacksToDispose.push(disposePointerDown, disposePointerMove);
72
- };
73
- const disposeKeydown = addEventListener(document, "keydown", handleKeydown, {
74
- capture: true,
75
- });
76
- callbacksToDispose.push(disposeKeydown);
77
- return () => {
78
- executeCallbacks(callbacksToDispose);
79
- };
80
- });
81
- }
82
- createMenu(props) {
83
- return new MenuMenuState(props, this);
84
32
  }
85
- createGroup(props) {
86
- return new MenuGroupState(props, this);
87
- }
88
- createSeparator(props) {
89
- return new MenuSeparatorState(props, this);
90
- }
91
- createArrow() {
92
- return new MenuArrowState(this);
33
+ getAttr(name) {
34
+ return `data-${this.variant.current}-${name}`;
93
35
  }
94
36
  }
95
37
  class MenuMenuState {
@@ -104,35 +46,21 @@ class MenuMenuState {
104
46
  this.open = props.open;
105
47
  this.parentMenu = parentMenu;
106
48
  if (parentMenu) {
107
- $effect(() => {
108
- parentMenu.open;
109
- untrack(() => {
110
- if (!this.parentMenu?.open)
111
- this.open.current = false;
112
- });
49
+ watch(() => parentMenu.open, (isOpen) => {
50
+ if (isOpen)
51
+ return;
52
+ this.open.current = false;
113
53
  });
114
54
  }
115
55
  }
116
- toggleOpen = () => {
56
+ toggleOpen() {
117
57
  this.open.current = !this.open.current;
118
- };
119
- onOpen = () => {
120
- this.open.current = true;
121
- };
122
- onClose = () => {
123
- this.open.current = false;
124
- };
125
- createContent(props) {
126
- return new MenuContentState(props, this);
127
- }
128
- createSubmenu(props) {
129
- return new MenuMenuState(props, this.root, this);
130
58
  }
131
- createDropdownTrigger(props) {
132
- return new DropdownMenuTriggerState(props, this);
59
+ onOpen() {
60
+ this.open.current = true;
133
61
  }
134
- createContextTrigger(props) {
135
- return new ContextMenuTriggerState(props, this);
62
+ onClose() {
63
+ this.open.current = false;
136
64
  }
137
65
  }
138
66
  class MenuContentState {
@@ -157,10 +85,15 @@ class MenuContentState {
157
85
  this.parentMenu.contentId = props.id;
158
86
  this.contentRef = props.ref;
159
87
  this.isMounted = props.isMounted;
88
+ this.onkeydown = this.onkeydown.bind(this);
89
+ this.onblur = this.onblur.bind(this);
90
+ this.onpointermove = this.onpointermove.bind(this);
91
+ this.onfocus = this.onfocus.bind(this);
92
+ this.handleInteractOutside = this.handleInteractOutside.bind(this);
160
93
  useRefById({
161
94
  id: this.#id,
162
95
  ref: this.contentRef,
163
- condition: () => this.parentMenu.open.current,
96
+ deps: () => this.parentMenu.open.current,
164
97
  onRefChange: (node) => {
165
98
  if (this.parentMenu.contentNode !== node) {
166
99
  this.parentMenu.contentNode = node;
@@ -170,36 +103,48 @@ class MenuContentState {
170
103
  onDestroyEffect(() => {
171
104
  window.clearTimeout(this.#timer);
172
105
  });
173
- this.#handleTypeaheadSearch = useTypeahead().handleTypeaheadSearch;
106
+ this.#handleTypeaheadSearch = useDOMTypeahead().handleTypeaheadSearch;
174
107
  this.rovingFocusGroup = useRovingFocus({
175
108
  rootNodeId: this.parentMenu.contentId,
176
- candidateAttr: this.parentMenu.root.attrs.item,
109
+ candidateAttr: this.parentMenu.root.getAttr("item"),
177
110
  loop: this.#loop,
178
111
  orientation: box.with(() => "vertical"),
179
112
  });
113
+ watch(() => this.parentMenu.contentNode, (contentNode) => {
114
+ if (!contentNode)
115
+ return;
116
+ const handler = () => {
117
+ afterTick(() => {
118
+ if (!this.parentMenu.root.isUsingKeyboard.current)
119
+ return;
120
+ this.rovingFocusGroup.focusFirstCandidate();
121
+ });
122
+ };
123
+ return MenuOpenEvent.listen(contentNode, handler);
124
+ });
180
125
  }
181
- getCandidateNodes = () => {
126
+ #getCandidateNodes() {
182
127
  const node = this.parentMenu.contentNode;
183
128
  if (!node)
184
129
  return [];
185
- const candidates = Array.from(node.querySelectorAll(`[${this.parentMenu.root.attrs.item}]:not([data-disabled])`));
130
+ const candidates = Array.from(node.querySelectorAll(`[${this.parentMenu.root.getAttr("item")}]:not([data-disabled])`));
186
131
  return candidates;
187
- };
188
- isPointerMovingToSubmenu = (e) => {
132
+ }
133
+ #isPointerMovingToSubmenu(e) {
189
134
  const isMovingTowards = this.#pointerDir === this.#pointerGraceIntent?.side;
190
135
  return isMovingTowards && isPointerInGraceArea(e, this.#pointerGraceIntent?.area);
191
- };
192
- onPointerGraceIntentChange = (intent) => {
136
+ }
137
+ onPointerGraceIntentChange(intent) {
193
138
  this.#pointerGraceIntent = intent;
194
- };
195
- #onkeydown = (e) => {
139
+ }
140
+ onkeydown(e) {
196
141
  if (e.defaultPrevented)
197
142
  return;
198
143
  const target = e.target;
199
144
  const currentTarget = e.currentTarget;
200
145
  if (!isHTMLElement(target) || !isHTMLElement(currentTarget))
201
146
  return;
202
- const isKeydownInside = target.closest(`[${this.parentMenu.root.attrs.content}]`)?.id ===
147
+ const isKeydownInside = target.closest(`[${this.parentMenu.root.getAttr("content")}]`)?.id ===
203
148
  this.parentMenu.contentId.current;
204
149
  const isModifierKey = e.ctrlKey || e.altKey || e.metaKey;
205
150
  const isCharacterKey = e.key.length === 1;
@@ -209,7 +154,7 @@ class MenuContentState {
209
154
  // prevent space from being considered with typeahead
210
155
  if (e.code === "Space")
211
156
  return;
212
- const candidateNodes = this.getCandidateNodes();
157
+ const candidateNodes = this.#getCandidateNodes();
213
158
  if (isKeydownInside) {
214
159
  // menus do not respect the tab key
215
160
  if (e.key === kbd.TAB)
@@ -228,8 +173,8 @@ class MenuContentState {
228
173
  candidateNodes.reverse();
229
174
  }
230
175
  focusFirst(candidateNodes);
231
- };
232
- #onblur = (e) => {
176
+ }
177
+ onblur(e) {
233
178
  if (!isElement(e.currentTarget))
234
179
  return;
235
180
  if (!isElement(e.target))
@@ -239,13 +184,13 @@ class MenuContentState {
239
184
  window.clearTimeout(this.#timer);
240
185
  this.search = "";
241
186
  }
242
- };
243
- #onfocus = () => {
187
+ }
188
+ onfocus(_) {
244
189
  if (!this.parentMenu.root.isUsingKeyboard.current)
245
190
  return;
246
191
  afterTick(() => this.rovingFocusGroup.focusFirstCandidate());
247
- };
248
- #onpointermove = (e) => {
192
+ }
193
+ onpointermove(e) {
249
194
  if (!isMouseEvent(e))
250
195
  return;
251
196
  const target = e.target;
@@ -262,24 +207,24 @@ class MenuContentState {
262
207
  this.#pointerDir = newDir;
263
208
  this.#lastPointerX = e.clientX;
264
209
  }
265
- };
266
- onItemEnter = (e) => {
267
- if (this.isPointerMovingToSubmenu(e))
210
+ }
211
+ onItemEnter(e) {
212
+ if (this.#isPointerMovingToSubmenu(e))
268
213
  return true;
269
214
  return false;
270
- };
271
- onItemLeave = (e) => {
272
- if (this.isPointerMovingToSubmenu(e))
215
+ }
216
+ onItemLeave(e) {
217
+ if (this.#isPointerMovingToSubmenu(e))
273
218
  return;
274
219
  const contentNode = this.parentMenu.contentNode;
275
220
  contentNode?.focus();
276
221
  this.rovingFocusGroup.setCurrentTabStopId("");
277
- };
278
- onTriggerLeave = (e) => {
279
- if (this.isPointerMovingToSubmenu(e))
222
+ }
223
+ onTriggerLeave(e) {
224
+ if (this.#isPointerMovingToSubmenu(e))
280
225
  return true;
281
226
  return false;
282
- };
227
+ }
283
228
  onOpenAutoFocus = (e) => {
284
229
  if (e.defaultPrevented)
285
230
  return;
@@ -287,7 +232,7 @@ class MenuContentState {
287
232
  const contentNode = this.parentMenu.contentNode;
288
233
  contentNode?.focus();
289
234
  };
290
- handleInteractOutside = (e) => {
235
+ handleInteractOutside(e) {
291
236
  if (!isElementOrSVGElement(e.target))
292
237
  return;
293
238
  const triggerId = this.parentMenu.triggerNode?.id;
@@ -298,39 +243,23 @@ class MenuContentState {
298
243
  if (e.target.closest(`#${triggerId}`)) {
299
244
  e.preventDefault();
300
245
  }
301
- };
246
+ }
302
247
  snippetProps = $derived.by(() => ({ open: this.parentMenu.open.current }));
303
248
  props = $derived.by(() => ({
304
249
  id: this.#id.current,
305
250
  role: "menu",
306
251
  "aria-orientation": getAriaOrientation("vertical"),
307
- [this.parentMenu.root.attrs.content]: "",
252
+ [this.parentMenu.root.getAttr("content")]: "",
308
253
  "data-state": getDataOpenClosed(this.parentMenu.open.current),
309
- onkeydown: this.#onkeydown,
310
- onblur: this.#onblur,
311
- onpointermove: this.#onpointermove,
312
- onfocus: this.#onfocus,
254
+ onkeydown: this.onkeydown,
255
+ onblur: this.onblur,
256
+ onpointermove: this.onpointermove,
257
+ onfocus: this.onfocus,
313
258
  dir: this.parentMenu.root.dir.current,
314
259
  style: {
315
260
  pointerEvents: "auto",
316
261
  },
317
262
  }));
318
- createItem(props) {
319
- const item = new MenuItemSharedState(props, this);
320
- return new MenuItemState(props, item);
321
- }
322
- createCheckboxItem(props) {
323
- const item = new MenuItemState(props, new MenuItemSharedState(props, this));
324
- return new MenuCheckboxItemState(props, item);
325
- }
326
- createRadioGroup(props) {
327
- return new MenuRadioGroupState(props, this);
328
- }
329
- createSubTrigger(props) {
330
- const item = new MenuItemSharedState(props, this);
331
- const submenu = getMenuMenuContext();
332
- return new MenuSubTriggerState(item, this, submenu);
333
- }
334
263
  }
335
264
  class MenuItemSharedState {
336
265
  content;
@@ -343,13 +272,17 @@ class MenuItemSharedState {
343
272
  this.id = props.id;
344
273
  this.disabled = props.disabled;
345
274
  this.ref = props.ref;
275
+ this.onpointermove = this.onpointermove.bind(this);
276
+ this.onpointerleave = this.onpointerleave.bind(this);
277
+ this.onfocus = this.onfocus.bind(this);
278
+ this.onblur = this.onblur.bind(this);
346
279
  useRefById({
347
280
  id: this.id,
348
281
  ref: this.ref,
349
- condition: () => this.content.isMounted.current,
282
+ deps: () => this.content.isMounted.current,
350
283
  });
351
284
  }
352
- #onpointermove = (e) => {
285
+ onpointermove(e) {
353
286
  if (e.defaultPrevented)
354
287
  return;
355
288
  if (!isMouseEvent(e))
@@ -366,8 +299,8 @@ class MenuItemSharedState {
366
299
  return;
367
300
  item.focus();
368
301
  }
369
- };
370
- #onpointerleave = async (e) => {
302
+ }
303
+ onpointerleave(e) {
371
304
  afterTick(() => {
372
305
  if (e.defaultPrevented)
373
306
  return;
@@ -375,21 +308,21 @@ class MenuItemSharedState {
375
308
  return;
376
309
  this.content.onItemLeave(e);
377
310
  });
378
- };
379
- #onfocus = async (e) => {
311
+ }
312
+ onfocus(e) {
380
313
  afterTick(() => {
381
314
  if (e.defaultPrevented || this.disabled.current)
382
315
  return;
383
316
  this.#isFocused = true;
384
317
  });
385
- };
386
- #onblur = async (e) => {
318
+ }
319
+ onblur(e) {
387
320
  afterTick(() => {
388
321
  if (e.defaultPrevented)
389
322
  return;
390
323
  this.#isFocused = false;
391
324
  });
392
- };
325
+ }
393
326
  props = $derived.by(() => ({
394
327
  id: this.id.current,
395
328
  tabindex: -1,
@@ -397,25 +330,46 @@ class MenuItemSharedState {
397
330
  "aria-disabled": getAriaDisabled(this.disabled.current),
398
331
  "data-disabled": getDataDisabled(this.disabled.current),
399
332
  "data-highlighted": this.#isFocused ? "" : undefined,
400
- [this.content.parentMenu.root.attrs.item]: "",
333
+ [this.content.parentMenu.root.getAttr("item")]: "",
401
334
  //
402
- onpointermove: this.#onpointermove,
403
- onpointerleave: this.#onpointerleave,
404
- onfocus: this.#onfocus,
405
- onblur: this.#onblur,
335
+ onpointermove: this.onpointermove,
336
+ onpointerleave: this.onpointerleave,
337
+ onfocus: this.onfocus,
338
+ onblur: this.onblur,
406
339
  }));
407
340
  }
408
341
  class MenuItemState {
409
342
  #item;
410
343
  #onSelect;
344
+ #closeOnSelect;
411
345
  #isPointerDown = $state(false);
412
346
  root;
413
347
  constructor(props, item) {
414
348
  this.#item = item;
415
349
  this.root = item.content.parentMenu.root;
416
350
  this.#onSelect = props.onSelect;
351
+ this.#closeOnSelect = props.closeOnSelect;
352
+ this.onkeydown = this.onkeydown.bind(this);
353
+ this.onclick = this.onclick.bind(this);
354
+ this.onpointerdown = this.onpointerdown.bind(this);
355
+ this.onpointerup = this.onpointerup.bind(this);
417
356
  }
418
- #onkeydown = (e) => {
357
+ #handleSelect() {
358
+ if (this.#item.disabled.current)
359
+ return;
360
+ const selectEvent = new CustomEvent("menuitemselect", { bubbles: true, cancelable: true });
361
+ this.#onSelect.current(selectEvent);
362
+ afterTick(() => {
363
+ if (selectEvent.defaultPrevented) {
364
+ this.#item.content.parentMenu.root.isUsingKeyboard.current = false;
365
+ return;
366
+ }
367
+ if (this.#closeOnSelect.current) {
368
+ this.#item.content.parentMenu.root.onClose();
369
+ }
370
+ });
371
+ }
372
+ onkeydown(e) {
419
373
  const isTypingAhead = this.#item.content.search !== "";
420
374
  if (this.#item.disabled.current || (isTypingAhead && e.key === kbd.SPACE))
421
375
  return;
@@ -431,26 +385,13 @@ class MenuItemState {
431
385
  */
432
386
  e.preventDefault();
433
387
  }
434
- };
435
- #handleSelect = async () => {
436
- if (this.#item.disabled.current)
437
- return;
438
- const selectEvent = new CustomEvent("menuitemselect", { bubbles: true, cancelable: true });
439
- this.#onSelect.current(selectEvent);
440
- await tick();
441
- if (selectEvent.defaultPrevented) {
442
- this.#item.content.parentMenu.root.isUsingKeyboard.current = false;
443
- }
444
- else {
445
- this.#item.content.parentMenu.root.onClose();
446
- }
447
- };
448
- #onclick = () => {
388
+ }
389
+ onclick(_) {
449
390
  if (this.#item.disabled.current)
450
391
  return;
451
392
  this.#handleSelect();
452
- };
453
- #onpointerup = async (e) => {
393
+ }
394
+ onpointerup(e) {
454
395
  if (e.defaultPrevented)
455
396
  return;
456
397
  if (!this.#isPointerDown) {
@@ -458,15 +399,15 @@ class MenuItemState {
458
399
  return;
459
400
  e.currentTarget?.click();
460
401
  }
461
- };
462
- #onpointerdown = () => {
402
+ }
403
+ onpointerdown(_) {
463
404
  this.#isPointerDown = true;
464
- };
405
+ }
465
406
  props = $derived.by(() => mergeProps(this.#item.props, {
466
- onclick: this.#onclick,
467
- onpointerdown: this.#onpointerdown,
468
- onpointerup: this.#onpointerup,
469
- onkeydown: this.#onkeydown,
407
+ onclick: this.onclick,
408
+ onpointerdown: this.onpointerdown,
409
+ onpointerup: this.onpointerup,
410
+ onkeydown: this.onkeydown,
470
411
  }));
471
412
  }
472
413
  class MenuSubTriggerState {
@@ -480,6 +421,10 @@ class MenuSubTriggerState {
480
421
  this.#item = item;
481
422
  this.#content = content;
482
423
  this.#submenu = submenu;
424
+ this.onpointerleave = this.onpointerleave.bind(this);
425
+ this.onpointermove = this.onpointermove.bind(this);
426
+ this.onkeydown = this.onkeydown.bind(this);
427
+ this.onclick = this.onclick.bind(this);
483
428
  onDestroyEffect(() => {
484
429
  this.#clearOpenTimer();
485
430
  });
@@ -491,13 +436,13 @@ class MenuSubTriggerState {
491
436
  },
492
437
  });
493
438
  }
494
- #clearOpenTimer = () => {
439
+ #clearOpenTimer() {
495
440
  if (this.#openTimer === null)
496
441
  return;
497
442
  window.clearTimeout(this.#openTimer);
498
443
  this.#openTimer = null;
499
- };
500
- #onpointermove = (e) => {
444
+ }
445
+ onpointermove(e) {
501
446
  if (!isMouseEvent(e))
502
447
  return;
503
448
  const defaultPrevented = this.#content.onItemEnter(e);
@@ -510,8 +455,8 @@ class MenuSubTriggerState {
510
455
  this.#clearOpenTimer();
511
456
  }, 100);
512
457
  }
513
- };
514
- #onpointerleave = (e) => {
458
+ }
459
+ onpointerleave(e) {
515
460
  if (!isMouseEvent(e))
516
461
  return;
517
462
  this.#clearOpenTimer();
@@ -534,19 +479,23 @@ class MenuSubTriggerState {
534
479
  // There's 100ms where the user may leave an item before the submenu was opened.
535
480
  this.#content.onPointerGraceIntentChange(null);
536
481
  }
537
- };
538
- #onkeydown = (e) => {
482
+ }
483
+ onkeydown(e) {
539
484
  const isTypingAhead = this.#content.search !== "";
540
485
  if (this.#item.disabled.current || (isTypingAhead && e.key === kbd.SPACE))
541
486
  return;
542
487
  if (SUB_OPEN_KEYS[this.#submenu.root.dir.current].includes(e.key)) {
543
488
  this.#submenu.onOpen();
544
- const contentNode = this.#submenu.contentNode;
545
- contentNode?.focus();
489
+ afterTick(() => {
490
+ const contentNode = this.#submenu.contentNode;
491
+ if (!contentNode)
492
+ return;
493
+ MenuOpenEvent.dispatch(contentNode);
494
+ });
546
495
  e.preventDefault();
547
496
  }
548
- };
549
- #onclick = (e) => {
497
+ }
498
+ onclick(e) {
550
499
  if (this.#item.disabled.current)
551
500
  return;
552
501
  /**
@@ -560,7 +509,7 @@ class MenuSubTriggerState {
560
509
  if (!this.#submenu.open.current) {
561
510
  this.#submenu.onOpen();
562
511
  }
563
- };
512
+ }
564
513
  props = $derived.by(() => mergeProps({
565
514
  "aria-haspopup": "menu",
566
515
  "aria-expanded": getAriaExpanded(this.#submenu.open.current),
@@ -568,37 +517,41 @@ class MenuSubTriggerState {
568
517
  "aria-controls": this.#submenu.open.current
569
518
  ? this.#submenu.contentId.current
570
519
  : undefined,
571
- [this.#submenu.root.attrs.subTrigger]: "",
572
- onclick: this.#onclick,
573
- onpointermove: this.#onpointermove,
574
- onpointerleave: this.#onpointerleave,
575
- onkeydown: this.#onkeydown,
520
+ [this.#submenu.root.getAttr("sub-trigger")]: "",
521
+ onclick: this.onclick,
522
+ onpointermove: this.onpointermove,
523
+ onpointerleave: this.onpointerleave,
524
+ onkeydown: this.onkeydown,
576
525
  }, this.#item.props));
577
526
  }
578
527
  class MenuCheckboxItemState {
579
528
  #item;
580
529
  #checked;
530
+ #indeterminate;
581
531
  constructor(props, item) {
582
532
  this.#item = item;
583
533
  this.#checked = props.checked;
534
+ this.#indeterminate = props.indeterminate;
584
535
  }
585
- toggleChecked = () => {
586
- if (this.#checked.current === true) {
587
- this.#checked.current = false;
588
- }
589
- else if (this.#checked.current === false) {
536
+ toggleChecked() {
537
+ if (this.#indeterminate.current) {
538
+ this.#indeterminate.current = false;
590
539
  this.#checked.current = true;
591
540
  }
592
- else if (this.#checked.current === "indeterminate") {
593
- this.#checked.current = true;
541
+ else {
542
+ this.#checked.current = !this.#checked.current;
594
543
  }
595
- };
544
+ }
545
+ snippetProps = $derived.by(() => ({
546
+ checked: this.#checked.current,
547
+ indeterminate: this.#indeterminate.current,
548
+ }));
596
549
  props = $derived.by(() => ({
597
550
  ...this.#item.props,
598
551
  role: "menuitemcheckbox",
599
- "aria-checked": getAriaChecked(this.#checked.current),
552
+ "aria-checked": getAriaChecked(this.#checked.current, this.#indeterminate.current),
600
553
  "data-state": getCheckedState(this.#checked.current),
601
- [this.#item.root.attrs.checkboxItem]: "",
554
+ [this.#item.root.getAttr("checkbox-item")]: "",
602
555
  }));
603
556
  }
604
557
  class MenuGroupState {
@@ -619,11 +572,8 @@ class MenuGroupState {
619
572
  id: this.#id.current,
620
573
  role: "group",
621
574
  "aria-labelledby": this.groupHeadingId,
622
- [this.root.attrs.group]: "",
575
+ [this.root.getAttr("group")]: "",
623
576
  }));
624
- createGroupHeading(props) {
625
- return new MenuGroupHeadingState(props, this);
626
- }
627
577
  }
628
578
  class MenuGroupHeadingState {
629
579
  #id;
@@ -644,7 +594,7 @@ class MenuGroupHeadingState {
644
594
  props = $derived.by(() => ({
645
595
  id: this.#id.current,
646
596
  role: "group",
647
- [this.#group.root.attrs.groupHeading]: "",
597
+ [this.#group.root.getAttr("group-heading")]: "",
648
598
  }));
649
599
  }
650
600
  class MenuSeparatorState {
@@ -663,7 +613,7 @@ class MenuSeparatorState {
663
613
  props = $derived.by(() => ({
664
614
  id: this.#id.current,
665
615
  role: "group",
666
- [this.#root.attrs.separator]: "",
616
+ [this.#root.getAttr("separator")]: "",
667
617
  }));
668
618
  }
669
619
  class MenuArrowState {
@@ -672,40 +622,33 @@ class MenuArrowState {
672
622
  this.#root = root;
673
623
  }
674
624
  props = $derived.by(() => ({
675
- [this.#root.attrs.arrow]: "",
625
+ [this.#root.getAttr("arrow")]: "",
676
626
  }));
677
627
  }
678
628
  class MenuRadioGroupState {
679
629
  #id;
680
630
  value;
681
631
  #ref;
682
- #content;
632
+ content;
683
633
  groupHeadingId = $state(null);
684
634
  root;
685
635
  constructor(props, content) {
686
636
  this.value = props.value;
687
637
  this.#id = props.id;
688
638
  this.#ref = props.ref;
689
- this.#content = content;
639
+ this.content = content;
690
640
  this.root = content.parentMenu.root;
691
641
  useRefById({
692
642
  id: this.#id,
693
643
  ref: this.#ref,
694
644
  });
695
645
  }
696
- setValue = (v) => {
646
+ setValue(v) {
697
647
  this.value.current = v;
698
- };
699
- createRadioItem(props) {
700
- const item = this.#content.createItem(props);
701
- return new MenuRadioItemState(props, item, this);
702
- }
703
- createGroupHeading(props) {
704
- return new MenuGroupHeadingState(props, this);
705
648
  }
706
649
  props = $derived.by(() => ({
707
650
  id: this.#id.current,
708
- [this.root.attrs.radioGroup]: "",
651
+ [this.root.getAttr("radio-group")]: "",
709
652
  role: "group",
710
653
  "aria-labelledby": this.groupHeadingId,
711
654
  }));
@@ -728,14 +671,14 @@ class MenuRadioItemState {
728
671
  ref: this.#ref,
729
672
  });
730
673
  }
731
- selectValue = () => {
674
+ selectValue() {
732
675
  this.#group.setValue(this.#value.current);
733
- };
676
+ }
734
677
  props = $derived.by(() => ({
735
- [this.#group.root.attrs.radioItem]: "",
678
+ [this.#group.root.getAttr("radio-item")]: "",
736
679
  ...this.#item.props,
737
680
  role: "menuitemradio",
738
- "aria-checked": getAriaChecked(this.isChecked),
681
+ "aria-checked": getAriaChecked(this.isChecked, false),
739
682
  "data-state": getCheckedState(this.isChecked),
740
683
  }));
741
684
  }
@@ -749,6 +692,9 @@ class DropdownMenuTriggerState {
749
692
  this.#id = props.id;
750
693
  this.#parentMenu = parentMenu;
751
694
  this.#disabled = props.disabled;
695
+ this.onpointerdown = this.onpointerdown.bind(this);
696
+ this.onpointerup = this.onpointerup.bind(this);
697
+ this.onkeydown = this.onkeydown.bind(this);
752
698
  useRefById({
753
699
  id: this.#id,
754
700
  ref: this.#ref,
@@ -757,16 +703,28 @@ class DropdownMenuTriggerState {
757
703
  },
758
704
  });
759
705
  }
760
- #onpointerdown = (e) => {
761
- if (!this.#disabled.current && e.button === 0 && e.ctrlKey === false) {
706
+ onpointerdown(e) {
707
+ if (this.#disabled.current)
708
+ return;
709
+ if (e.pointerType === "touch")
710
+ return e.preventDefault();
711
+ if (e.button === 0 && e.ctrlKey === false) {
762
712
  this.#parentMenu.toggleOpen();
763
713
  // prevent trigger focusing when opening to allow
764
714
  // the content to be given focus without competition
765
715
  if (!this.#parentMenu.open.current)
766
716
  e.preventDefault();
767
717
  }
768
- };
769
- #onkeydown = (e) => {
718
+ }
719
+ onpointerup(e) {
720
+ if (this.#disabled.current)
721
+ return;
722
+ if (e.pointerType === "touch") {
723
+ e.preventDefault();
724
+ this.#parentMenu.toggleOpen();
725
+ }
726
+ }
727
+ onkeydown(e) {
770
728
  if (this.#disabled.current)
771
729
  return;
772
730
  if (e.key === kbd.SPACE || e.key === kbd.ENTER) {
@@ -778,7 +736,7 @@ class DropdownMenuTriggerState {
778
736
  this.#parentMenu.onOpen();
779
737
  e.preventDefault();
780
738
  }
781
- };
739
+ }
782
740
  #ariaControls = $derived.by(() => {
783
741
  if (this.#parentMenu.open.current && this.#parentMenu.contentId.current)
784
742
  return this.#parentMenu.contentId.current;
@@ -792,10 +750,11 @@ class DropdownMenuTriggerState {
792
750
  "aria-controls": this.#ariaControls,
793
751
  "data-disabled": getDataDisabled(this.#disabled.current),
794
752
  "data-state": getDataOpenClosed(this.#parentMenu.open.current),
795
- [this.#parentMenu.root.attrs.trigger]: "",
753
+ [this.#parentMenu.root.getAttr("trigger")]: "",
796
754
  //
797
- onpointerdown: this.#onpointerdown,
798
- onkeydown: this.#onkeydown,
755
+ onpointerdown: this.onpointerdown,
756
+ onpointerup: this.onpointerup,
757
+ onkeydown: this.onkeydown,
799
758
  }));
800
759
  }
801
760
  class ContextMenuTriggerState {
@@ -813,18 +772,22 @@ class ContextMenuTriggerState {
813
772
  this.#disabled = props.disabled;
814
773
  this.#id = props.id;
815
774
  this.#ref = props.ref;
775
+ this.oncontextmenu = this.oncontextmenu.bind(this);
776
+ this.onpointerdown = this.onpointerdown.bind(this);
777
+ this.onpointermove = this.onpointermove.bind(this);
778
+ this.onpointercancel = this.onpointercancel.bind(this);
779
+ this.onpointerup = this.onpointerup.bind(this);
816
780
  useRefById({
817
781
  id: this.#id,
818
782
  ref: this.#ref,
819
783
  onRefChange: (node) => {
820
784
  this.#parentMenu.triggerNode = node;
821
785
  },
822
- condition: () => this.#parentMenu.open.current,
786
+ deps: () => this.#parentMenu.open.current,
823
787
  });
824
- $effect(() => {
825
- this.#point;
788
+ watch(() => this.#point, (point) => {
826
789
  this.virtualElement.current = {
827
- getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...this.#point }),
790
+ getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...point }),
828
791
  };
829
792
  });
830
793
  $effect(() => {
@@ -832,50 +795,46 @@ class ContextMenuTriggerState {
832
795
  this.#clearLongPressTimer();
833
796
  }
834
797
  });
835
- $effect(() => {
836
- return () => {
837
- this.#clearLongPressTimer();
838
- };
839
- });
798
+ onDestroyEffect(() => this.#clearLongPressTimer());
840
799
  }
841
- #clearLongPressTimer = () => {
800
+ #clearLongPressTimer() {
842
801
  if (this.#longPressTimer === null)
843
802
  return;
844
803
  window.clearTimeout(this.#longPressTimer);
845
- };
846
- #handleOpen = (e) => {
804
+ }
805
+ #handleOpen(e) {
847
806
  this.#point = { x: e.clientX, y: e.clientY };
848
807
  this.#parentMenu.onOpen();
849
- };
850
- #oncontextmenu = (e) => {
808
+ }
809
+ oncontextmenu(e) {
851
810
  if (this.#disabled.current)
852
811
  return;
853
812
  this.#clearLongPressTimer();
854
813
  this.#handleOpen(e);
855
814
  e.preventDefault();
856
815
  this.#parentMenu.contentNode?.focus();
857
- };
858
- #onpointerdown = (e) => {
816
+ }
817
+ onpointerdown(e) {
859
818
  if (this.#disabled.current || isMouseEvent(e))
860
819
  return;
861
820
  this.#clearLongPressTimer();
862
821
  this.#longPressTimer = window.setTimeout(() => this.#handleOpen(e), 700);
863
- };
864
- #onpointermove = (e) => {
822
+ }
823
+ onpointermove(e) {
865
824
  if (this.#disabled.current || isMouseEvent(e))
866
825
  return;
867
826
  this.#clearLongPressTimer();
868
- };
869
- #onpointercancel = (e) => {
827
+ }
828
+ onpointercancel(e) {
870
829
  if (this.#disabled.current || isMouseEvent(e))
871
830
  return;
872
831
  this.#clearLongPressTimer();
873
- };
874
- #onpointerup = (e) => {
832
+ }
833
+ onpointerup(e) {
875
834
  if (this.#disabled.current || isMouseEvent(e))
876
835
  return;
877
836
  this.#clearLongPressTimer();
878
- };
837
+ }
879
838
  props = $derived.by(() => ({
880
839
  id: this.#id.current,
881
840
  disabled: this.#disabled.current,
@@ -883,61 +842,64 @@ class ContextMenuTriggerState {
883
842
  "data-state": getDataOpenClosed(this.#parentMenu.open.current),
884
843
  [CONTEXT_MENU_TRIGGER_ATTR]: "",
885
844
  //
886
- onpointerdown: this.#onpointerdown,
887
- onpointermove: this.#onpointermove,
888
- onpointercancel: this.#onpointercancel,
889
- onpointerup: this.#onpointerup,
890
- oncontextmenu: this.#oncontextmenu,
845
+ onpointerdown: this.onpointerdown,
846
+ onpointermove: this.onpointermove,
847
+ onpointercancel: this.onpointercancel,
848
+ onpointerup: this.onpointerup,
849
+ oncontextmenu: this.oncontextmenu,
891
850
  }));
892
851
  }
893
- //
894
- // CONTEXT METHODS
895
- //
896
852
  export function useMenuRoot(props) {
897
- return setMenuRootContext(new MenuRootState(props));
853
+ return MenuRootContext.set(new MenuRootState(props));
898
854
  }
899
855
  export function useMenuMenu(root, props) {
900
- return setMenuMenuContext(root.createMenu(props));
856
+ return MenuMenuContext.set(new MenuMenuState(props, root));
901
857
  }
902
858
  export function useMenuSubmenu(props) {
903
- return setMenuMenuContext(getMenuMenuContext().createSubmenu(props));
859
+ const menu = MenuMenuContext.get();
860
+ return MenuMenuContext.set(new MenuMenuState(props, menu.root, menu));
904
861
  }
905
862
  export function useMenuSubTrigger(props) {
906
- return getMenuContentContext().createSubTrigger(props);
863
+ const content = MenuContentContext.get();
864
+ const item = new MenuItemSharedState(props, content);
865
+ const submenu = MenuMenuContext.get();
866
+ return new MenuSubTriggerState(item, content, submenu);
907
867
  }
908
868
  export function useMenuDropdownTrigger(props) {
909
- return getMenuMenuContext().createDropdownTrigger(props);
910
- }
911
- export function useMenuPortal() {
912
- return getMenuMenuContext();
869
+ return new DropdownMenuTriggerState(props, MenuMenuContext.get());
913
870
  }
914
871
  export function useMenuContextTrigger(props) {
915
- return getMenuMenuContext().createContextTrigger(props);
872
+ return new ContextMenuTriggerState(props, MenuMenuContext.get());
916
873
  }
917
874
  export function useMenuContent(props) {
918
- return setMenuContentContext(getMenuMenuContext().createContent(props));
875
+ return MenuContentContext.set(new MenuContentState(props, MenuMenuContext.get()));
919
876
  }
920
877
  export function useMenuItem(props) {
921
- return getMenuContentContext().createItem(props);
878
+ const item = new MenuItemSharedState(props, MenuContentContext.get());
879
+ return new MenuItemState(props, item);
922
880
  }
923
881
  export function useMenuCheckboxItem(props) {
924
- return getMenuContentContext().createCheckboxItem(props);
882
+ const item = new MenuItemState(props, new MenuItemSharedState(props, MenuContentContext.get()));
883
+ return new MenuCheckboxItemState(props, item);
925
884
  }
926
885
  export function useMenuRadioGroup(props) {
927
- return setMenuGroupContext(setMenuRadioGroupContext(getMenuContentContext().createRadioGroup(props)));
886
+ return MenuGroupContext.set(MenuRadioGroupContext.set(new MenuRadioGroupState(props, MenuContentContext.get())));
928
887
  }
929
888
  export function useMenuRadioItem(props) {
930
- return getMenuRadioGroupContext().createRadioItem(props);
889
+ const radioGroup = MenuRadioGroupContext.get();
890
+ const sharedItem = new MenuItemSharedState(props, radioGroup.content);
891
+ const item = new MenuItemState(props, sharedItem);
892
+ return new MenuRadioItemState(props, item, radioGroup);
931
893
  }
932
894
  export function useMenuGroup(props) {
933
- return setMenuGroupContext(getMenuRootContext().createGroup(props));
895
+ return MenuGroupContext.set(new MenuGroupState(props, MenuRootContext.get()));
934
896
  }
935
897
  export function useMenuGroupHeading(props) {
936
- return getMenuGroupContext().createGroupHeading(props);
898
+ return new MenuGroupHeadingState(props, MenuGroupContext.get());
937
899
  }
938
900
  export function useMenuSeparator(props) {
939
- return getMenuRootContext().createSeparator(props);
901
+ return new MenuSeparatorState(props, MenuRootContext.get());
940
902
  }
941
903
  export function useMenuArrow() {
942
- return getMenuRootContext().createArrow();
904
+ return new MenuArrowState(MenuRootContext.get());
943
905
  }