bits-ui 1.8.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/dist/bits/accordion/accordion.svelte.d.ts +56 -53
  2. package/dist/bits/accordion/accordion.svelte.js +78 -89
  3. package/dist/bits/accordion/components/accordion-content.svelte +5 -3
  4. package/dist/bits/accordion/components/accordion-header.svelte +4 -2
  5. package/dist/bits/accordion/components/accordion-item.svelte +6 -3
  6. package/dist/bits/accordion/components/accordion-trigger.svelte +4 -2
  7. package/dist/bits/accordion/components/accordion.svelte +4 -2
  8. package/dist/bits/alert-dialog/components/alert-dialog-action.svelte +4 -2
  9. package/dist/bits/alert-dialog/components/alert-dialog-cancel.svelte +4 -2
  10. package/dist/bits/alert-dialog/components/alert-dialog-content.svelte +8 -3
  11. package/dist/bits/aspect-ratio/aspect-ratio.svelte.js +2 -2
  12. package/dist/bits/aspect-ratio/components/aspect-ratio.svelte +4 -2
  13. package/dist/bits/avatar/avatar.svelte.d.ts +2 -1
  14. package/dist/bits/avatar/avatar.svelte.js +8 -6
  15. package/dist/bits/avatar/components/avatar-fallback.svelte +4 -2
  16. package/dist/bits/avatar/components/avatar-image.svelte +4 -2
  17. package/dist/bits/avatar/components/avatar.svelte +4 -2
  18. package/dist/bits/button/components/button.svelte +1 -1
  19. package/dist/bits/calendar/calendar.svelte.d.ts +3 -9
  20. package/dist/bits/calendar/calendar.svelte.js +55 -41
  21. package/dist/bits/calendar/components/calendar-cell.svelte +4 -2
  22. package/dist/bits/calendar/components/calendar-day.svelte +4 -2
  23. package/dist/bits/calendar/components/calendar-grid-body.svelte +4 -2
  24. package/dist/bits/calendar/components/calendar-grid-head.svelte +4 -2
  25. package/dist/bits/calendar/components/calendar-grid-row.svelte +4 -2
  26. package/dist/bits/calendar/components/calendar-grid.svelte +4 -2
  27. package/dist/bits/calendar/components/calendar-head-cell.svelte +4 -2
  28. package/dist/bits/calendar/components/calendar-header.svelte +4 -2
  29. package/dist/bits/calendar/components/calendar-heading.svelte +4 -2
  30. package/dist/bits/calendar/components/calendar-next-button.svelte +4 -2
  31. package/dist/bits/calendar/components/calendar-prev-button.svelte +4 -2
  32. package/dist/bits/checkbox/checkbox.svelte.js +4 -14
  33. package/dist/bits/checkbox/components/checkbox-group-label.svelte +4 -2
  34. package/dist/bits/checkbox/components/checkbox-group.svelte +4 -2
  35. package/dist/bits/checkbox/components/checkbox.svelte +4 -2
  36. package/dist/bits/collapsible/collapsible.svelte.js +4 -10
  37. package/dist/bits/collapsible/components/collapsible-content.svelte +5 -3
  38. package/dist/bits/collapsible/components/collapsible-trigger.svelte +4 -2
  39. package/dist/bits/collapsible/components/collapsible.svelte +4 -2
  40. package/dist/bits/combobox/components/combobox-input.svelte +3 -3
  41. package/dist/bits/combobox/components/combobox.svelte +6 -1
  42. package/dist/bits/combobox/types.d.ts +18 -1
  43. package/dist/bits/command/command.svelte.js +13 -45
  44. package/dist/bits/command/components/_command-label.svelte +6 -7
  45. package/dist/bits/command/components/_command-label.svelte.d.ts +1 -1
  46. package/dist/bits/command/components/command-empty.svelte +4 -2
  47. package/dist/bits/command/components/command-group-heading.svelte +4 -2
  48. package/dist/bits/command/components/command-group-items.svelte +4 -2
  49. package/dist/bits/command/components/command-group.svelte +4 -2
  50. package/dist/bits/command/components/command-input.svelte +4 -2
  51. package/dist/bits/command/components/command-item.svelte +4 -2
  52. package/dist/bits/command/components/command-link-item.svelte +4 -2
  53. package/dist/bits/command/components/command-list.svelte +4 -2
  54. package/dist/bits/command/components/command-loading.svelte +4 -2
  55. package/dist/bits/command/components/command-separator.svelte +4 -2
  56. package/dist/bits/command/components/command-viewport.svelte +4 -2
  57. package/dist/bits/command/components/command.svelte +4 -2
  58. package/dist/bits/context-menu/components/context-menu-content-static.svelte +2 -3
  59. package/dist/bits/context-menu/components/context-menu-content.svelte +2 -3
  60. package/dist/bits/context-menu/components/context-menu-trigger.svelte +1 -1
  61. package/dist/bits/date-field/components/date-field-input.svelte +4 -2
  62. package/dist/bits/date-field/components/date-field-label.svelte +4 -2
  63. package/dist/bits/date-field/components/date-field-segment.svelte +4 -2
  64. package/dist/bits/date-field/date-field.svelte.d.ts +7 -5
  65. package/dist/bits/date-field/date-field.svelte.js +29 -38
  66. package/dist/bits/date-picker/components/date-picker-calendar.svelte +4 -2
  67. package/dist/bits/date-range-field/components/date-range-field-input.svelte +4 -2
  68. package/dist/bits/date-range-field/components/date-range-field-label.svelte +4 -2
  69. package/dist/bits/date-range-field/components/date-range-field.svelte +4 -2
  70. package/dist/bits/date-range-field/date-range-field.svelte.d.ts +2 -0
  71. package/dist/bits/date-range-field/date-range-field.svelte.js +6 -14
  72. package/dist/bits/date-range-picker/components/date-range-picker-calendar.svelte +4 -2
  73. package/dist/bits/dialog/components/dialog-close.svelte +4 -2
  74. package/dist/bits/dialog/components/dialog-content.svelte +8 -2
  75. package/dist/bits/dialog/components/dialog-description.svelte +4 -2
  76. package/dist/bits/dialog/components/dialog-overlay.svelte +8 -3
  77. package/dist/bits/dialog/components/dialog-title.svelte +4 -2
  78. package/dist/bits/dialog/components/dialog-trigger.svelte +4 -2
  79. package/dist/bits/dialog/dialog.svelte.d.ts +1 -1
  80. package/dist/bits/dialog/dialog.svelte.js +19 -47
  81. package/dist/bits/dropdown-menu/components/dropdown-menu-content-static.svelte +6 -5
  82. package/dist/bits/dropdown-menu/components/dropdown-menu-content.svelte +6 -5
  83. package/dist/bits/index.d.ts +2 -0
  84. package/dist/bits/index.js +2 -0
  85. package/dist/bits/label/components/label.svelte +4 -2
  86. package/dist/bits/label/label.svelte.js +2 -2
  87. package/dist/bits/link-preview/components/link-preview-content-static.svelte +6 -2
  88. package/dist/bits/link-preview/components/link-preview-content.svelte +6 -2
  89. package/dist/bits/link-preview/components/link-preview-trigger.svelte +5 -3
  90. package/dist/bits/link-preview/link-preview.svelte.d.ts +2 -0
  91. package/dist/bits/link-preview/link-preview.svelte.js +13 -19
  92. package/dist/bits/menu/components/menu-checkbox-group.svelte +4 -2
  93. package/dist/bits/menu/components/menu-checkbox-item.svelte +6 -4
  94. package/dist/bits/menu/components/menu-content-static.svelte +6 -5
  95. package/dist/bits/menu/components/menu-content.svelte +6 -5
  96. package/dist/bits/menu/components/menu-group-heading.svelte +4 -2
  97. package/dist/bits/menu/components/menu-group.svelte +4 -2
  98. package/dist/bits/menu/components/menu-item.svelte +4 -2
  99. package/dist/bits/menu/components/menu-radio-group.svelte +4 -2
  100. package/dist/bits/menu/components/menu-radio-item.svelte +4 -2
  101. package/dist/bits/menu/components/menu-separator.svelte +4 -2
  102. package/dist/bits/menu/components/menu-sub-content-static.svelte +6 -5
  103. package/dist/bits/menu/components/menu-sub-content.svelte +6 -5
  104. package/dist/bits/menu/components/menu-sub-trigger.svelte +6 -3
  105. package/dist/bits/menu/components/menu-trigger.svelte +5 -3
  106. package/dist/bits/menu/menu.svelte.d.ts +9 -20
  107. package/dist/bits/menu/menu.svelte.js +40 -63
  108. package/dist/bits/menubar/components/menubar-content-static.svelte +4 -2
  109. package/dist/bits/menubar/components/menubar-content.svelte +4 -2
  110. package/dist/bits/menubar/components/menubar-menu.svelte +4 -2
  111. package/dist/bits/menubar/components/menubar-trigger.svelte +14 -6
  112. package/dist/bits/menubar/components/menubar.svelte +4 -2
  113. package/dist/bits/menubar/menubar.svelte.d.ts +24 -20
  114. package/dist/bits/menubar/menubar.svelte.js +40 -56
  115. package/dist/bits/meter/components/meter.svelte +4 -2
  116. package/dist/bits/meter/meter.svelte.js +2 -2
  117. package/dist/bits/navigation-menu/components/navigation-menu-content-impl.svelte +5 -2
  118. package/dist/bits/navigation-menu/components/navigation-menu-content.svelte +8 -3
  119. package/dist/bits/navigation-menu/components/navigation-menu-indicator-impl.svelte +4 -2
  120. package/dist/bits/navigation-menu/components/navigation-menu-indicator.svelte +6 -4
  121. package/dist/bits/navigation-menu/components/navigation-menu-item.svelte +6 -3
  122. package/dist/bits/navigation-menu/components/navigation-menu-link.svelte +4 -2
  123. package/dist/bits/navigation-menu/components/navigation-menu-list.svelte +4 -2
  124. package/dist/bits/navigation-menu/components/navigation-menu-sub.svelte +4 -2
  125. package/dist/bits/navigation-menu/components/navigation-menu-trigger.svelte +4 -2
  126. package/dist/bits/navigation-menu/components/navigation-menu-viewport.svelte +5 -3
  127. package/dist/bits/navigation-menu/components/navigation-menu.svelte +4 -2
  128. package/dist/bits/navigation-menu/navigation-menu.svelte.d.ts +3 -1
  129. package/dist/bits/navigation-menu/navigation-menu.svelte.js +33 -60
  130. package/dist/bits/pagination/components/pagination-next-button.svelte +4 -2
  131. package/dist/bits/pagination/components/pagination-page.svelte +4 -2
  132. package/dist/bits/pagination/components/pagination-prev-button.svelte +4 -2
  133. package/dist/bits/pagination/components/pagination.svelte +4 -2
  134. package/dist/bits/pagination/pagination.svelte.js +4 -4
  135. package/dist/bits/pin-input/components/pin-input-cell.svelte +4 -2
  136. package/dist/bits/pin-input/components/pin-input.svelte +5 -3
  137. package/dist/bits/pin-input/pin-input.svelte.d.ts +4 -2
  138. package/dist/bits/pin-input/pin-input.svelte.js +20 -22
  139. package/dist/bits/pin-input/usePasswordManager.svelte.d.ts +3 -2
  140. package/dist/bits/pin-input/usePasswordManager.svelte.js +6 -5
  141. package/dist/bits/popover/components/popover-close.svelte +4 -2
  142. package/dist/bits/popover/components/popover-content-static.svelte +6 -2
  143. package/dist/bits/popover/components/popover-content.svelte +6 -2
  144. package/dist/bits/popover/components/popover-trigger.svelte +5 -3
  145. package/dist/bits/popover/popover.svelte.js +4 -18
  146. package/dist/bits/progress/components/progress.svelte +4 -2
  147. package/dist/bits/progress/progress.svelte.js +2 -2
  148. package/dist/bits/radio-group/components/radio-group-item.svelte +4 -2
  149. package/dist/bits/radio-group/components/radio-group.svelte +4 -2
  150. package/dist/bits/radio-group/radio-group.svelte.js +4 -7
  151. package/dist/bits/range-calendar/components/range-calendar-cell.svelte +4 -2
  152. package/dist/bits/range-calendar/components/range-calendar-day.svelte +4 -2
  153. package/dist/bits/range-calendar/components/range-calendar.svelte +4 -2
  154. package/dist/bits/range-calendar/range-calendar.svelte.d.ts +2 -0
  155. package/dist/bits/range-calendar/range-calendar.svelte.js +12 -6
  156. package/dist/bits/scroll-area/components/scroll-area-corner.svelte +8 -2
  157. package/dist/bits/scroll-area/components/scroll-area-scrollbar-auto.svelte +4 -1
  158. package/dist/bits/scroll-area/components/scroll-area-scrollbar-hover.svelte +1 -1
  159. package/dist/bits/scroll-area/components/scroll-area-scrollbar-scroll.svelte +5 -1
  160. package/dist/bits/scroll-area/components/scroll-area-scrollbar.svelte +4 -2
  161. package/dist/bits/scroll-area/components/scroll-area-thumb.svelte +8 -3
  162. package/dist/bits/scroll-area/components/scroll-area-viewport.svelte +4 -2
  163. package/dist/bits/scroll-area/components/scroll-area.svelte +4 -2
  164. package/dist/bits/scroll-area/scroll-area.svelte.d.ts +2 -0
  165. package/dist/bits/scroll-area/scroll-area.svelte.js +27 -58
  166. package/dist/bits/select/components/select-content-static.svelte +6 -2
  167. package/dist/bits/select/components/select-content.svelte +6 -2
  168. package/dist/bits/select/components/select-group-heading.svelte +3 -2
  169. package/dist/bits/select/components/select-group.svelte +4 -2
  170. package/dist/bits/select/components/select-item.svelte +4 -2
  171. package/dist/bits/select/components/select-scroll-down-button.svelte +4 -2
  172. package/dist/bits/select/components/select-scroll-up-button.svelte +4 -2
  173. package/dist/bits/select/components/select-trigger.svelte +5 -3
  174. package/dist/bits/select/components/select-viewport.svelte +4 -2
  175. package/dist/bits/select/components/select.svelte +7 -1
  176. package/dist/bits/select/select.svelte.d.ts +5 -19
  177. package/dist/bits/select/select.svelte.js +43 -60
  178. package/dist/bits/separator/components/separator.svelte +4 -2
  179. package/dist/bits/separator/separator.svelte.js +2 -2
  180. package/dist/bits/slider/components/slider-range.svelte +4 -2
  181. package/dist/bits/slider/components/slider-thumb-label.svelte +50 -0
  182. package/dist/bits/slider/components/slider-thumb-label.svelte.d.ts +4 -0
  183. package/dist/bits/slider/components/slider-thumb.svelte +4 -2
  184. package/dist/bits/slider/components/slider-tick-label.svelte +50 -0
  185. package/dist/bits/slider/components/slider-tick-label.svelte.d.ts +4 -0
  186. package/dist/bits/slider/components/slider-tick.svelte +4 -2
  187. package/dist/bits/slider/components/slider.svelte +24 -5
  188. package/dist/bits/slider/exports.d.ts +3 -1
  189. package/dist/bits/slider/exports.js +2 -0
  190. package/dist/bits/slider/helpers.d.ts +14 -0
  191. package/dist/bits/slider/helpers.js +122 -0
  192. package/dist/bits/slider/slider.svelte.d.ts +91 -5
  193. package/dist/bits/slider/slider.svelte.js +194 -101
  194. package/dist/bits/slider/types.d.ts +105 -11
  195. package/dist/bits/switch/components/switch-thumb.svelte +4 -2
  196. package/dist/bits/switch/components/switch.svelte +4 -2
  197. package/dist/bits/switch/switch.svelte.js +3 -3
  198. package/dist/bits/tabs/components/tabs-content.svelte +4 -2
  199. package/dist/bits/tabs/components/tabs-list.svelte +4 -2
  200. package/dist/bits/tabs/components/tabs-trigger.svelte +4 -2
  201. package/dist/bits/tabs/components/tabs.svelte +4 -2
  202. package/dist/bits/tabs/tabs.svelte.js +6 -6
  203. package/dist/bits/time-field/components/time-field-hidden-input.svelte +10 -0
  204. package/dist/bits/{date-field/components/date-field-error.svelte.d.ts → time-field/components/time-field-hidden-input.svelte.d.ts} +6 -14
  205. package/dist/bits/time-field/components/time-field-input.svelte +39 -0
  206. package/dist/bits/time-field/components/time-field-input.svelte.d.ts +4 -0
  207. package/dist/bits/time-field/components/time-field-label.svelte +34 -0
  208. package/dist/bits/time-field/components/time-field-label.svelte.d.ts +4 -0
  209. package/dist/bits/time-field/components/time-field-segment.svelte +37 -0
  210. package/dist/bits/time-field/components/time-field-segment.svelte.d.ts +4 -0
  211. package/dist/bits/time-field/components/time-field.svelte +94 -0
  212. package/dist/bits/time-field/components/time-field.svelte.d.ts +20 -0
  213. package/dist/bits/time-field/exports.d.ts +5 -0
  214. package/dist/bits/time-field/exports.js +4 -0
  215. package/dist/bits/time-field/index.d.ts +1 -0
  216. package/dist/bits/time-field/index.js +1 -0
  217. package/dist/bits/time-field/time-field.svelte.d.ts +417 -0
  218. package/dist/bits/time-field/time-field.svelte.js +980 -0
  219. package/dist/bits/time-field/types.d.ts +137 -0
  220. package/dist/bits/time-field/types.js +1 -0
  221. package/dist/bits/time-range-field/components/time-range-field-input.svelte +43 -0
  222. package/dist/bits/time-range-field/components/time-range-field-input.svelte.d.ts +4 -0
  223. package/dist/bits/time-range-field/components/time-range-field-label.svelte +34 -0
  224. package/dist/bits/time-range-field/components/time-range-field-label.svelte.d.ts +4 -0
  225. package/dist/bits/time-range-field/components/time-range-field.svelte +144 -0
  226. package/dist/bits/time-range-field/components/time-range-field.svelte.d.ts +20 -0
  227. package/dist/bits/time-range-field/exports.d.ts +5 -0
  228. package/dist/bits/time-range-field/exports.js +4 -0
  229. package/dist/bits/time-range-field/index.d.ts +1 -0
  230. package/dist/bits/time-range-field/index.js +1 -0
  231. package/dist/bits/time-range-field/time-range-field.svelte.d.ts +92 -0
  232. package/dist/bits/time-range-field/time-range-field.svelte.js +212 -0
  233. package/dist/bits/time-range-field/types.d.ts +150 -0
  234. package/dist/bits/time-range-field/types.js +1 -0
  235. package/dist/bits/toggle/components/toggle.svelte +4 -2
  236. package/dist/bits/toggle/toggle.svelte.js +2 -2
  237. package/dist/bits/toggle-group/components/toggle-group-item.svelte +4 -2
  238. package/dist/bits/toggle-group/components/toggle-group.svelte +4 -2
  239. package/dist/bits/toggle-group/toggle-group.svelte.js +4 -4
  240. package/dist/bits/toolbar/components/toolbar-button.svelte +4 -2
  241. package/dist/bits/toolbar/components/toolbar-group-item.svelte +4 -2
  242. package/dist/bits/toolbar/components/toolbar-group.svelte +4 -2
  243. package/dist/bits/toolbar/components/toolbar-link.svelte +4 -2
  244. package/dist/bits/toolbar/components/toolbar.svelte +4 -2
  245. package/dist/bits/toolbar/toolbar.svelte.js +7 -7
  246. package/dist/bits/tooltip/components/tooltip-content-static.svelte +6 -2
  247. package/dist/bits/tooltip/components/tooltip-content.svelte +6 -2
  248. package/dist/bits/tooltip/components/tooltip-trigger.svelte +5 -3
  249. package/dist/bits/tooltip/tooltip.svelte.d.ts +2 -0
  250. package/dist/bits/tooltip/tooltip.svelte.js +6 -15
  251. package/dist/bits/utilities/dismissible-layer/dismissible-layer.svelte +2 -0
  252. package/dist/bits/utilities/dismissible-layer/types.d.ts +2 -0
  253. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.d.ts +3 -3
  254. package/dist/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.js +16 -25
  255. package/dist/bits/utilities/floating-layer/components/floating-layer-anchor.svelte +2 -1
  256. package/dist/bits/utilities/floating-layer/types.d.ts +1 -0
  257. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.d.ts +3 -2
  258. package/dist/bits/utilities/floating-layer/use-floating-layer.svelte.js +7 -27
  259. package/dist/bits/utilities/focus-scope/focus-scope.svelte +2 -0
  260. package/dist/bits/utilities/focus-scope/types.d.ts +2 -0
  261. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.d.ts +2 -1
  262. package/dist/bits/utilities/focus-scope/use-focus-scope.svelte.js +15 -16
  263. package/dist/bits/utilities/popper-layer/popper-layer-inner.svelte +4 -0
  264. package/dist/bits/utilities/popper-layer/popper-layer.svelte +3 -1
  265. package/dist/bits/utilities/portal/types.d.ts +1 -1
  266. package/dist/bits/utilities/presence-layer/presence-layer.svelte +2 -2
  267. package/dist/bits/utilities/presence-layer/types.d.ts +2 -1
  268. package/dist/bits/utilities/presence-layer/use-presence.svelte.d.ts +1 -1
  269. package/dist/bits/utilities/presence-layer/use-presence.svelte.js +19 -36
  270. package/dist/bits/utilities/text-selection-layer/text-selection-layer.svelte +2 -0
  271. package/dist/bits/utilities/text-selection-layer/types.d.ts +2 -0
  272. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.d.ts +5 -1
  273. package/dist/bits/utilities/text-selection-layer/use-text-selection-layer.svelte.js +8 -14
  274. package/dist/index.d.ts +1 -1
  275. package/dist/index.js +1 -1
  276. package/dist/internal/box-auto-reset.svelte.d.ts +7 -1
  277. package/dist/internal/box-auto-reset.svelte.js +11 -6
  278. package/dist/internal/create-id.d.ts +8 -0
  279. package/dist/internal/create-id.js +5 -0
  280. package/dist/internal/date-time/announcer.d.ts +1 -1
  281. package/dist/internal/date-time/announcer.js +20 -20
  282. package/dist/internal/date-time/calendar-helpers.svelte.js +7 -5
  283. package/dist/internal/date-time/field/helpers.d.ts +9 -2
  284. package/dist/internal/date-time/field/helpers.js +16 -9
  285. package/dist/internal/date-time/field/parts.d.ts +3 -1
  286. package/dist/internal/date-time/field/parts.js +10 -2
  287. package/dist/internal/date-time/field/segments.d.ts +9 -0
  288. package/dist/internal/date-time/field/segments.js +65 -0
  289. package/dist/internal/date-time/field/time-helpers.d.ts +83 -0
  290. package/dist/internal/date-time/field/time-helpers.js +301 -0
  291. package/dist/internal/date-time/field/types.d.ts +2 -2
  292. package/dist/internal/date-time/formatter.d.ts +11 -1
  293. package/dist/internal/date-time/formatter.js +56 -0
  294. package/dist/internal/date-time/utils.d.ts +7 -2
  295. package/dist/internal/date-time/utils.js +15 -1
  296. package/dist/internal/dom.d.ts +0 -1
  297. package/dist/internal/dom.js +0 -3
  298. package/dist/internal/focus.d.ts +2 -2
  299. package/dist/internal/focus.js +14 -9
  300. package/dist/internal/math.d.ts +0 -4
  301. package/dist/internal/math.js +0 -28
  302. package/dist/internal/tabbable.d.ts +0 -2
  303. package/dist/internal/tabbable.js +10 -14
  304. package/dist/internal/use-data-typeahead.svelte.d.ts +1 -0
  305. package/dist/internal/use-data-typeahead.svelte.js +4 -1
  306. package/dist/internal/use-dom-typeahead.svelte.d.ts +3 -1
  307. package/dist/internal/use-dom-typeahead.svelte.js +5 -2
  308. package/dist/internal/use-grace-area.svelte.js +9 -5
  309. package/dist/internal/use-roving-focus.svelte.d.ts +3 -3
  310. package/dist/internal/use-roving-focus.svelte.js +10 -11
  311. package/dist/shared/date/types.d.ts +27 -4
  312. package/dist/shared/index.d.ts +2 -2
  313. package/dist/types.d.ts +2 -0
  314. package/package.json +18 -16
  315. package/dist/bits/date-field/components/date-field-error.svelte +0 -0
  316. package/dist/internal/use-size.svelte.d.ts +0 -7
  317. package/dist/internal/use-size.svelte.js +0 -54
@@ -1,4 +1,4 @@
1
- import { afterTick, box, mergeProps, onDestroyEffect, useRefById } from "svelte-toolbelt";
1
+ import { afterTick, box, mergeProps, onDestroyEffect, attachRef, DOMContext, getWindow, } from "svelte-toolbelt";
2
2
  import { Context, watch } from "runed";
3
3
  import { FIRST_LAST_KEYS, LAST_KEYS, SELECTION_KEYS, SUB_OPEN_KEYS, getCheckedState, isMouseEvent, } from "./utils.js";
4
4
  import { focusFirst } from "../../internal/focus.js";
@@ -13,6 +13,7 @@ import { useGraceArea } from "../../internal/use-grace-area.svelte.js";
13
13
  import { getTabbableFrom } from "../../internal/tabbable.js";
14
14
  import { FocusScopeContext } from "../utilities/focus-scope/use-focus-scope.svelte.js";
15
15
  import { isTabbable } from "tabbable";
16
+ import { untrack } from "svelte";
16
17
  export const CONTEXT_MENU_TRIGGER_ATTR = "data-context-menu-trigger";
17
18
  const MenuRootContext = new Context("Menu.Root");
18
19
  const MenuMenuContext = new Context("Menu.Root | Menu.Sub");
@@ -74,24 +75,17 @@ class MenuContentState {
74
75
  rovingFocusGroup;
75
76
  mounted = $state(false);
76
77
  #isSub;
78
+ domContext;
77
79
  constructor(opts, parentMenu) {
78
80
  this.opts = opts;
79
81
  this.parentMenu = parentMenu;
82
+ this.domContext = new DOMContext(opts.ref);
80
83
  parentMenu.contentId = opts.id;
81
84
  this.#isSub = opts.isSub ?? false;
82
85
  this.onkeydown = this.onkeydown.bind(this);
83
86
  this.onblur = this.onblur.bind(this);
84
87
  this.onfocus = this.onfocus.bind(this);
85
88
  this.handleInteractOutside = this.handleInteractOutside.bind(this);
86
- useRefById({
87
- ...opts,
88
- deps: () => this.parentMenu.opts.open.current,
89
- onRefChange: (node) => {
90
- if (this.parentMenu.contentNode !== node) {
91
- this.parentMenu.contentNode = node;
92
- }
93
- },
94
- });
95
89
  useGraceArea({
96
90
  contentNode: () => this.parentMenu.contentNode,
97
91
  triggerNode: () => this.parentMenu.triggerNode,
@@ -104,9 +98,12 @@ class MenuContentState {
104
98
  this.parentMenu.root.isPointerInTransit = value;
105
99
  },
106
100
  });
107
- this.#handleTypeaheadSearch = useDOMTypeahead().handleTypeaheadSearch;
101
+ this.#handleTypeaheadSearch = useDOMTypeahead({
102
+ getActiveElement: () => this.domContext.getActiveElement(),
103
+ getWindow: () => this.domContext.getWindow(),
104
+ }).handleTypeaheadSearch;
108
105
  this.rovingFocusGroup = useRovingFocus({
109
- rootNodeId: this.parentMenu.contentId,
106
+ rootNode: box.with(() => this.parentMenu.contentNode),
110
107
  candidateAttr: this.parentMenu.root.getAttr("item"),
111
108
  loop: this.opts.loop,
112
109
  orientation: box.with(() => "vertical"),
@@ -125,7 +122,7 @@ class MenuContentState {
125
122
  });
126
123
  $effect(() => {
127
124
  if (!this.parentMenu.opts.open.current) {
128
- window.clearTimeout(this.#timer);
125
+ this.domContext.getWindow().clearTimeout(this.#timer);
129
126
  }
130
127
  });
131
128
  }
@@ -182,7 +179,7 @@ class MenuContentState {
182
179
  });
183
180
  }
184
181
  else {
185
- document.body.focus();
182
+ this.domContext.getDocument().body.focus();
186
183
  }
187
184
  }
188
185
  onkeydown(e) {
@@ -221,7 +218,7 @@ class MenuContentState {
221
218
  if (LAST_KEYS.includes(e.key)) {
222
219
  candidateNodes.reverse();
223
220
  }
224
- focusFirst(candidateNodes);
221
+ focusFirst(candidateNodes, { select: false }, () => this.domContext.getActiveElement());
225
222
  }
226
223
  onblur(e) {
227
224
  if (!isElement(e.currentTarget))
@@ -230,7 +227,7 @@ class MenuContentState {
230
227
  return;
231
228
  // clear search buffer when leaving the menu
232
229
  if (!e.currentTarget.contains?.(e.target)) {
233
- window.clearTimeout(this.#timer);
230
+ this.domContext.getWindow().clearTimeout(this.#timer);
234
231
  this.search = "";
235
232
  }
236
233
  }
@@ -289,6 +286,13 @@ class MenuContentState {
289
286
  style: {
290
287
  pointerEvents: "auto",
291
288
  },
289
+ ...attachRef(this.opts.ref, (v) => {
290
+ untrack(() => {
291
+ if (this.parentMenu.contentNode !== v) {
292
+ this.parentMenu.contentNode = v;
293
+ }
294
+ });
295
+ }),
292
296
  }));
293
297
  popperProps = {
294
298
  onCloseAutoFocus: (e) => this.onCloseAutoFocus(e),
@@ -305,10 +309,6 @@ class MenuItemSharedState {
305
309
  this.onpointerleave = this.onpointerleave.bind(this);
306
310
  this.onfocus = this.onfocus.bind(this);
307
311
  this.onblur = this.onblur.bind(this);
308
- useRefById({
309
- ...opts,
310
- deps: () => this.content.mounted,
311
- });
312
312
  }
313
313
  onpointermove(e) {
314
314
  if (e.defaultPrevented)
@@ -362,6 +362,7 @@ class MenuItemSharedState {
362
362
  onpointerleave: this.onpointerleave,
363
363
  onfocus: this.onfocus,
364
364
  onblur: this.onblur,
365
+ ...attachRef(this.opts.ref),
365
366
  }));
366
367
  }
367
368
  class MenuItemState {
@@ -452,17 +453,11 @@ class MenuSubTriggerState {
452
453
  onDestroyEffect(() => {
453
454
  this.#clearOpenTimer();
454
455
  });
455
- useRefById({
456
- ...item.opts,
457
- onRefChange: (node) => {
458
- this.submenu.triggerNode = node;
459
- },
460
- });
461
456
  }
462
457
  #clearOpenTimer() {
463
458
  if (this.#openTimer === null)
464
459
  return;
465
- window.clearTimeout(this.#openTimer);
460
+ this.content.domContext.getWindow().clearTimeout(this.#openTimer);
466
461
  this.#openTimer = null;
467
462
  }
468
463
  onpointermove(e) {
@@ -472,7 +467,7 @@ class MenuSubTriggerState {
472
467
  !this.submenu.opts.open.current &&
473
468
  !this.#openTimer &&
474
469
  !this.content.parentMenu.root.isPointerInTransit) {
475
- this.#openTimer = window.setTimeout(() => {
470
+ this.#openTimer = this.content.domContext.setTimeout(() => {
476
471
  this.submenu.onOpen();
477
472
  this.#clearOpenTimer();
478
473
  }, 100);
@@ -530,6 +525,7 @@ class MenuSubTriggerState {
530
525
  onpointermove: this.onpointermove,
531
526
  onpointerleave: this.onpointerleave,
532
527
  onkeydown: this.onkeydown,
528
+ ...attachRef(this.opts.ref, (v) => (this.submenu.triggerNode = v)),
533
529
  }, this.item.props));
534
530
  }
535
531
  class MenuCheckboxItemState {
@@ -584,13 +580,13 @@ class MenuGroupState {
584
580
  constructor(opts, root) {
585
581
  this.opts = opts;
586
582
  this.root = root;
587
- useRefById(this.opts);
588
583
  }
589
584
  props = $derived.by(() => ({
590
585
  id: this.opts.id.current,
591
586
  role: "group",
592
587
  "aria-labelledby": this.groupHeadingId,
593
588
  [this.root.getAttr("group")]: "",
589
+ ...attachRef(this.opts.ref),
594
590
  }));
595
591
  }
596
592
  class MenuGroupHeadingState {
@@ -599,17 +595,12 @@ class MenuGroupHeadingState {
599
595
  constructor(opts, group) {
600
596
  this.opts = opts;
601
597
  this.group = group;
602
- useRefById({
603
- ...opts,
604
- onRefChange: (node) => {
605
- this.group.groupHeadingId = node?.id;
606
- },
607
- });
608
598
  }
609
599
  props = $derived.by(() => ({
610
600
  id: this.opts.id.current,
611
601
  role: "group",
612
602
  [this.group.root.getAttr("group-heading")]: "",
603
+ ...attachRef(this.opts.ref, (v) => (this.group.groupHeadingId = v?.id)),
613
604
  }));
614
605
  }
615
606
  class MenuSeparatorState {
@@ -618,12 +609,12 @@ class MenuSeparatorState {
618
609
  constructor(opts, root) {
619
610
  this.opts = opts;
620
611
  this.root = root;
621
- useRefById(opts);
622
612
  }
623
613
  props = $derived.by(() => ({
624
614
  id: this.opts.id.current,
625
615
  role: "group",
626
616
  [this.root.getAttr("separator")]: "",
617
+ ...attachRef(this.opts.ref),
627
618
  }));
628
619
  }
629
620
  class MenuArrowState {
@@ -644,7 +635,6 @@ class MenuRadioGroupState {
644
635
  this.opts = opts;
645
636
  this.content = content;
646
637
  this.root = content.parentMenu.root;
647
- useRefById(opts);
648
638
  }
649
639
  setValue(v) {
650
640
  this.opts.value.current = v;
@@ -654,6 +644,7 @@ class MenuRadioGroupState {
654
644
  [this.root.getAttr("radio-group")]: "",
655
645
  role: "group",
656
646
  "aria-labelledby": this.groupHeadingId,
647
+ ...attachRef(this.opts.ref),
657
648
  }));
658
649
  }
659
650
  class MenuRadioItemState {
@@ -665,7 +656,6 @@ class MenuRadioItemState {
665
656
  this.opts = opts;
666
657
  this.item = item;
667
658
  this.group = group;
668
- useRefById(opts);
669
659
  }
670
660
  selectValue() {
671
661
  this.group.setValue(this.opts.value.current);
@@ -676,6 +666,7 @@ class MenuRadioItemState {
676
666
  role: "menuitemradio",
677
667
  "aria-checked": getAriaChecked(this.isChecked, false),
678
668
  "data-state": getCheckedState(this.isChecked),
669
+ ...attachRef(this.opts.ref),
679
670
  }));
680
671
  }
681
672
  class DropdownMenuTriggerState {
@@ -684,17 +675,8 @@ class DropdownMenuTriggerState {
684
675
  constructor(opts, parentMenu) {
685
676
  this.opts = opts;
686
677
  this.parentMenu = parentMenu;
687
- this.onpointerdown = this.onpointerdown.bind(this);
688
- this.onpointerup = this.onpointerup.bind(this);
689
- this.onkeydown = this.onkeydown.bind(this);
690
- useRefById({
691
- ...opts,
692
- onRefChange: (ref) => {
693
- this.parentMenu.triggerNode = ref;
694
- },
695
- });
696
678
  }
697
- onpointerdown(e) {
679
+ onpointerdown = (e) => {
698
680
  if (this.opts.disabled.current)
699
681
  return;
700
682
  if (e.pointerType === "touch")
@@ -706,16 +688,16 @@ class DropdownMenuTriggerState {
706
688
  if (!this.parentMenu.opts.open.current)
707
689
  e.preventDefault();
708
690
  }
709
- }
710
- onpointerup(e) {
691
+ };
692
+ onpointerup = (e) => {
711
693
  if (this.opts.disabled.current)
712
694
  return;
713
695
  if (e.pointerType === "touch") {
714
696
  e.preventDefault();
715
697
  this.parentMenu.toggleOpen();
716
698
  }
717
- }
718
- onkeydown(e) {
699
+ };
700
+ onkeydown = (e) => {
719
701
  if (this.opts.disabled.current)
720
702
  return;
721
703
  if (e.key === kbd.SPACE || e.key === kbd.ENTER) {
@@ -727,7 +709,7 @@ class DropdownMenuTriggerState {
727
709
  this.parentMenu.onOpen();
728
710
  e.preventDefault();
729
711
  }
730
- }
712
+ };
731
713
  #ariaControls = $derived.by(() => {
732
714
  if (this.parentMenu.opts.open.current && this.parentMenu.contentId.current)
733
715
  return this.parentMenu.contentId.current;
@@ -746,6 +728,7 @@ class DropdownMenuTriggerState {
746
728
  onpointerdown: this.onpointerdown,
747
729
  onpointerup: this.onpointerup,
748
730
  onkeydown: this.onkeydown,
731
+ ...attachRef(this.opts.ref, (v) => (this.parentMenu.triggerNode = v)),
749
732
  }));
750
733
  }
751
734
  class ContextMenuTriggerState {
@@ -764,13 +747,6 @@ class ContextMenuTriggerState {
764
747
  this.onpointermove = this.onpointermove.bind(this);
765
748
  this.onpointercancel = this.onpointercancel.bind(this);
766
749
  this.onpointerup = this.onpointerup.bind(this);
767
- useRefById({
768
- ...opts,
769
- onRefChange: (node) => {
770
- this.parentMenu.triggerNode = node;
771
- },
772
- deps: () => this.parentMenu.opts.open.current,
773
- });
774
750
  watch(() => this.#point, (point) => {
775
751
  this.virtualElement.current = {
776
752
  getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...point }),
@@ -786,7 +762,7 @@ class ContextMenuTriggerState {
786
762
  #clearLongPressTimer() {
787
763
  if (this.#longPressTimer === null)
788
764
  return;
789
- window.clearTimeout(this.#longPressTimer);
765
+ getWindow(this.opts.ref.current).clearTimeout(this.#longPressTimer);
790
766
  }
791
767
  #handleOpen(e) {
792
768
  this.#point = { x: e.clientX, y: e.clientY };
@@ -804,7 +780,7 @@ class ContextMenuTriggerState {
804
780
  if (this.opts.disabled.current || isMouseEvent(e))
805
781
  return;
806
782
  this.#clearLongPressTimer();
807
- this.#longPressTimer = window.setTimeout(() => this.#handleOpen(e), 700);
783
+ this.#longPressTimer = getWindow(this.opts.ref.current).setTimeout(() => this.#handleOpen(e), 700);
808
784
  }
809
785
  onpointermove(e) {
810
786
  if (this.opts.disabled.current || isMouseEvent(e))
@@ -834,6 +810,7 @@ class ContextMenuTriggerState {
834
810
  onpointercancel: this.onpointercancel,
835
811
  onpointerup: this.onpointerup,
836
812
  oncontextmenu: this.oncontextmenu,
813
+ ...attachRef(this.opts.ref, (v) => (this.parentMenu.triggerNode = v)),
837
814
  }));
838
815
  }
839
816
  class MenuCheckboxGroupState {
@@ -845,7 +822,6 @@ class MenuCheckboxGroupState {
845
822
  this.opts = opts;
846
823
  this.content = content;
847
824
  this.root = content.parentMenu.root;
848
- useRefById(opts);
849
825
  }
850
826
  addValue(checkboxValue) {
851
827
  if (!checkboxValue)
@@ -871,6 +847,7 @@ class MenuCheckboxGroupState {
871
847
  [this.root.getAttr("checkbox-group")]: "",
872
848
  role: "group",
873
849
  "aria-labelledby": this.groupHeadingId,
850
+ ...attachRef(this.opts.ref),
874
851
  }));
875
852
  }
876
853
  export function useMenuRoot(props) {
@@ -2,14 +2,16 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenubarContentStaticProps } from "../types.js";
4
4
  import { useMenubarContent } from "../menubar.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
6
  import MenuContentStatic from "../../menu/components/menu-content-static.svelte";
7
7
  import { noop } from "../../../internal/noop.js";
8
8
 
9
+ const uid = $props.id();
10
+
9
11
  let {
10
12
  ref = $bindable(null),
11
13
  interactOutsideBehavior = "close",
12
- id = useId(),
14
+ id = createId(uid),
13
15
  onInteractOutside = noop,
14
16
  onCloseAutoFocus = noop,
15
17
  onFocusOutside = noop,
@@ -3,13 +3,15 @@
3
3
  import type { MenubarContentProps } from "../types.js";
4
4
  import { useMenubarContent } from "../menubar.svelte.js";
5
5
  import MenuContent from "../../menu/components/menu-content.svelte";
6
- import { useId } from "../../../internal/use-id.js";
6
+ import { createId } from "../../../internal/create-id.js";
7
7
  import { noop } from "../../../internal/noop.js";
8
8
 
9
+ const uid = $props.id();
10
+
9
11
  let {
10
12
  ref = $bindable(null),
11
13
  interactOutsideBehavior = "close",
12
- id = useId(),
14
+ id = createId(uid),
13
15
  onInteractOutside = noop,
14
16
  onFocusOutside = noop,
15
17
  onCloseAutoFocus = noop,
@@ -3,10 +3,12 @@
3
3
  import type { MenubarMenuProps } from "../types.js";
4
4
  import { useMenubarMenu } from "../menubar.svelte.js";
5
5
  import Menu from "../../menu/components/menu.svelte";
6
- import { useId } from "../../../internal/use-id.js";
7
6
  import { noop } from "../../../internal/noop.js";
7
+ import { createId } from "../../../internal/create-id.js";
8
8
 
9
- let { value = useId(), onOpenChange = noop, ...restProps }: MenubarMenuProps = $props();
9
+ const uid = $props.id();
10
+
11
+ let { value = createId(uid), onOpenChange = noop, ...restProps }: MenubarMenuProps = $props();
10
12
 
11
13
  const menuState = useMenubarMenu({
12
14
  value: box.with(() => value),
@@ -1,13 +1,15 @@
1
1
  <script lang="ts">
2
- import { box, mergeProps } from "svelte-toolbelt";
2
+ import { attachRef, box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenubarTriggerProps } from "../types.js";
4
4
  import { useMenubarTrigger } from "../menubar.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
6
  import FloatingLayerAnchor from "../../utilities/floating-layer/components/floating-layer-anchor.svelte";
7
7
  import { useMenuDropdownTrigger } from "../../menu/menu.svelte.js";
8
8
 
9
+ const uid = $props.id();
10
+
9
11
  let {
10
- id = useId(),
12
+ id = createId(uid),
11
13
  disabled = false,
12
14
  children,
13
15
  child,
@@ -24,12 +26,18 @@
24
26
  ),
25
27
  });
26
28
 
27
- useMenuDropdownTrigger(triggerState.opts);
29
+ const dropdownTriggerState = useMenuDropdownTrigger(triggerState.opts);
28
30
 
29
- const mergedProps = $derived(mergeProps(restProps, triggerState.props));
31
+ const mergedProps = $derived(
32
+ mergeProps(restProps, triggerState.props, {
33
+ ...attachRef(
34
+ (v: HTMLElement | null) => (dropdownTriggerState.parentMenu.triggerNode = v)
35
+ ),
36
+ })
37
+ );
30
38
  </script>
31
39
 
32
- <FloatingLayerAnchor {id}>
40
+ <FloatingLayerAnchor {id} ref={triggerState.opts.ref}>
33
41
  {#if child}
34
42
  {@render child({ props: mergedProps })}
35
43
  {:else}
@@ -2,11 +2,13 @@
2
2
  import { box, mergeProps } from "svelte-toolbelt";
3
3
  import type { MenubarRootProps } from "../types.js";
4
4
  import { useMenubarRoot } from "../menubar.svelte.js";
5
- import { useId } from "../../../internal/use-id.js";
5
+ import { createId } from "../../../internal/create-id.js";
6
6
  import { noop } from "../../../internal/noop.js";
7
7
 
8
+ const uid = $props.id();
9
+
8
10
  let {
9
- id = useId(),
11
+ id = createId(uid),
10
12
  children,
11
13
  child,
12
14
  ref = $bindable(null),
@@ -3,8 +3,9 @@ import type { InteractOutsideBehaviorType } from "../utilities/dismissible-layer
3
3
  import type { ReadableBoxedValues, WritableBoxedValues } from "../../internal/box.svelte.js";
4
4
  import { type UseRovingFocusReturn } from "../../internal/use-roving-focus.svelte.js";
5
5
  import type { Direction } from "../../shared/index.js";
6
- import type { BitsFocusEvent, BitsKeyboardEvent, BitsPointerEvent, OnChangeFn, WithRefProps } from "../../internal/types.js";
6
+ import type { OnChangeFn, WithRefProps } from "../../internal/types.js";
7
7
  import { type FocusScopeContextValue } from "../utilities/focus-scope/use-focus-scope.svelte.js";
8
+ import type { FocusEventHandler, KeyboardEventHandler, PointerEventHandler } from "svelte/elements";
8
9
  type MenubarRootStateProps = WithRefProps<ReadableBoxedValues<{
9
10
  dir: Direction;
10
11
  loop: boolean;
@@ -22,18 +23,18 @@ declare class MenubarRootState {
22
23
  * @param id - the id of the trigger to register
23
24
  * @returns - a function to de-register the trigger
24
25
  */
25
- registerTrigger(id: string): () => void;
26
+ registerTrigger: (id: string) => () => void;
26
27
  /**
27
28
  * @param value - the value of the menu to register
28
29
  * @param contentId - the content id to associate with the value
29
30
  * @returns - a function to de-register the menu
30
31
  */
31
- registerMenu(value: string, onOpenChange: ReadableBox<OnChangeFn<boolean>>): () => void;
32
- updateValue(value: string): void;
33
- getTriggers(): HTMLButtonElement[];
34
- onMenuOpen(id: string, triggerId: string): void;
35
- onMenuClose(): void;
36
- onMenuToggle(id: string): void;
32
+ registerMenu: (value: string, onOpenChange: ReadableBox<OnChangeFn<boolean>>) => () => void;
33
+ updateValue: (value: string) => void;
34
+ getTriggers: () => HTMLButtonElement[];
35
+ onMenuOpen: (id: string, triggerId: string) => void;
36
+ onMenuClose: () => void;
37
+ onMenuToggle: (id: string) => void;
37
38
  props: {
38
39
  readonly id: string;
39
40
  readonly role: "menubar";
@@ -50,9 +51,12 @@ declare class MenubarMenuState {
50
51
  open: boolean;
51
52
  wasOpenedByKeyboard: boolean;
52
53
  triggerNode: HTMLElement | null;
54
+ triggerId: string | undefined;
55
+ contentId: string | undefined;
53
56
  contentNode: HTMLElement | null;
54
57
  constructor(opts: MenubarMenuStateProps, root: MenubarRootState);
55
58
  getTriggerNode(): HTMLElement | null;
59
+ toggleMenu(): void;
56
60
  openMenu(): void;
57
61
  }
58
62
  type MenubarTriggerStateProps = WithRefProps<ReadableBoxedValues<{
@@ -65,11 +69,11 @@ declare class MenubarTriggerState {
65
69
  root: MenubarRootState;
66
70
  isFocused: boolean;
67
71
  constructor(opts: MenubarTriggerStateProps, menu: MenubarMenuState);
68
- onpointerdown(e: BitsPointerEvent): void;
69
- onpointerenter(_: BitsPointerEvent): void;
70
- onkeydown(e: BitsKeyboardEvent): void;
71
- onfocus(_: BitsFocusEvent): void;
72
- onblur(_: BitsFocusEvent): void;
72
+ onpointerdown: PointerEventHandler<HTMLElement>;
73
+ onpointerenter: PointerEventHandler<HTMLElement>;
74
+ onkeydown: KeyboardEventHandler<HTMLElement>;
75
+ onfocus: FocusEventHandler<HTMLElement>;
76
+ onblur: FocusEventHandler<HTMLElement>;
73
77
  props: {
74
78
  readonly type: "button";
75
79
  readonly role: "menuitem";
@@ -84,11 +88,11 @@ declare class MenubarTriggerState {
84
88
  readonly disabled: true | undefined;
85
89
  readonly tabindex: number;
86
90
  readonly "data-menubar-trigger": "";
87
- readonly onpointerdown: (e: BitsPointerEvent) => void;
88
- readonly onpointerenter: (_: BitsPointerEvent) => void;
89
- readonly onkeydown: (e: BitsKeyboardEvent) => void;
90
- readonly onfocus: (_: BitsFocusEvent) => void;
91
- readonly onblur: (_: BitsFocusEvent) => void;
91
+ readonly onpointerdown: PointerEventHandler<HTMLElement>;
92
+ readonly onpointerenter: PointerEventHandler<HTMLElement>;
93
+ readonly onkeydown: KeyboardEventHandler<HTMLElement>;
94
+ readonly onfocus: FocusEventHandler<HTMLElement>;
95
+ readonly onblur: FocusEventHandler<HTMLElement>;
92
96
  };
93
97
  }
94
98
  type MenubarContentStateProps = WithRefProps<ReadableBoxedValues<{
@@ -108,7 +112,7 @@ declare class MenubarContentState {
108
112
  onFocusOutside: (e: FocusEvent) => void;
109
113
  onInteractOutside: (e: PointerEvent) => void;
110
114
  onOpenAutoFocus: (e: Event) => void;
111
- onkeydown(e: BitsKeyboardEvent): void;
115
+ onkeydown: KeyboardEventHandler<HTMLElement>;
112
116
  props: {
113
117
  readonly id: string;
114
118
  readonly "aria-labelledby": string | undefined;
@@ -119,7 +123,7 @@ declare class MenubarContentState {
119
123
  readonly "--bits-menubar-anchor-width": "var(--bits-floating-anchor-width)";
120
124
  readonly "--bits-menubar-anchor-height": "var(--bits-floating-anchor-height)";
121
125
  };
122
- readonly onkeydown: (e: BitsKeyboardEvent) => void;
126
+ readonly onkeydown: KeyboardEventHandler<HTMLElement>;
123
127
  readonly "data-menu-content": "";
124
128
  };
125
129
  popperProps: {