@ariakit/react-components 0.1.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 (1155) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/button/button.d.ts +2 -0
  3. package/dist/button/button.js +53 -0
  4. package/dist/button/button.js.map +1 -0
  5. package/dist/button-Cp853csH.d.ts +34 -0
  6. package/dist/button-Cp853csH.d.ts.map +1 -0
  7. package/dist/checkbox/checkbox-check.d.ts +56 -0
  8. package/dist/checkbox/checkbox-check.d.ts.map +1 -0
  9. package/dist/checkbox/checkbox-check.js +77 -0
  10. package/dist/checkbox/checkbox-check.js.map +1 -0
  11. package/dist/checkbox/checkbox-checked-context.d.ts +5 -0
  12. package/dist/checkbox/checkbox-checked-context.d.ts.map +1 -0
  13. package/dist/checkbox/checkbox-checked-context.js +8 -0
  14. package/dist/checkbox/checkbox-checked-context.js.map +1 -0
  15. package/dist/checkbox/checkbox-context.d.ts +24 -0
  16. package/dist/checkbox/checkbox-context.d.ts.map +1 -0
  17. package/dist/checkbox/checkbox-context.js +26 -0
  18. package/dist/checkbox/checkbox-context.js.map +1 -0
  19. package/dist/checkbox/checkbox-provider.d.ts +35 -0
  20. package/dist/checkbox/checkbox-provider.d.ts.map +1 -0
  21. package/dist/checkbox/checkbox-provider.js +15 -0
  22. package/dist/checkbox/checkbox-provider.js.map +1 -0
  23. package/dist/checkbox/checkbox-store.d.ts +2 -0
  24. package/dist/checkbox/checkbox-store.js +18 -0
  25. package/dist/checkbox/checkbox-store.js.map +1 -0
  26. package/dist/checkbox/checkbox.d.ts +91 -0
  27. package/dist/checkbox/checkbox.d.ts.map +1 -0
  28. package/dist/checkbox/checkbox.js +148 -0
  29. package/dist/checkbox/checkbox.js.map +1 -0
  30. package/dist/checkbox-store-CYZPR4N4.d.ts +38 -0
  31. package/dist/checkbox-store-CYZPR4N4.d.ts.map +1 -0
  32. package/dist/collection/collection-context.d.ts +24 -0
  33. package/dist/collection/collection-context.d.ts.map +1 -0
  34. package/dist/collection/collection-context.js +26 -0
  35. package/dist/collection/collection-context.js.map +1 -0
  36. package/dist/collection/collection-item-offscreen.d.ts +2 -0
  37. package/dist/collection/collection-item-offscreen.js +88 -0
  38. package/dist/collection/collection-item-offscreen.js.map +1 -0
  39. package/dist/collection/collection-item.d.ts +2 -0
  40. package/dist/collection/collection-item.js +69 -0
  41. package/dist/collection/collection-item.js.map +1 -0
  42. package/dist/collection/collection-provider.d.ts +26 -0
  43. package/dist/collection/collection-provider.d.ts.map +1 -0
  44. package/dist/collection/collection-provider.js +15 -0
  45. package/dist/collection/collection-provider.js.map +1 -0
  46. package/dist/collection/collection-renderer.d.ts +2 -0
  47. package/dist/collection/collection-renderer.js +580 -0
  48. package/dist/collection/collection-renderer.js.map +1 -0
  49. package/dist/collection/collection-store.d.ts +2 -0
  50. package/dist/collection/collection-store.js +18 -0
  51. package/dist/collection/collection-store.js.map +1 -0
  52. package/dist/collection/collection.d.ts +55 -0
  53. package/dist/collection/collection.d.ts.map +1 -0
  54. package/dist/collection/collection.js +55 -0
  55. package/dist/collection/collection.js.map +1 -0
  56. package/dist/collection-item-C-g2BwVF.d.ts +84 -0
  57. package/dist/collection-item-C-g2BwVF.d.ts.map +1 -0
  58. package/dist/collection-item-offscreen-DyXa-sqj.d.ts +30 -0
  59. package/dist/collection-item-offscreen-DyXa-sqj.d.ts.map +1 -0
  60. package/dist/collection-renderer-DsPD9ksD.d.ts +469 -0
  61. package/dist/collection-renderer-DsPD9ksD.d.ts.map +1 -0
  62. package/dist/collection-store-CbwzYsWf.d.ts +42 -0
  63. package/dist/collection-store-CbwzYsWf.d.ts.map +1 -0
  64. package/dist/combobox/combobox-cancel.d.ts +62 -0
  65. package/dist/combobox/combobox-cancel.d.ts.map +1 -0
  66. package/dist/combobox/combobox-cancel.js +98 -0
  67. package/dist/combobox/combobox-cancel.js.map +1 -0
  68. package/dist/combobox/combobox-context.d.ts +27 -0
  69. package/dist/combobox/combobox-context.d.ts.map +1 -0
  70. package/dist/combobox/combobox-context.js +32 -0
  71. package/dist/combobox/combobox-context.js.map +1 -0
  72. package/dist/combobox/combobox-disclosure.d.ts +63 -0
  73. package/dist/combobox/combobox-disclosure.d.ts.map +1 -0
  74. package/dist/combobox/combobox-disclosure.js +108 -0
  75. package/dist/combobox/combobox-disclosure.js.map +1 -0
  76. package/dist/combobox/combobox-group-label.d.ts +56 -0
  77. package/dist/combobox/combobox-group-label.d.ts.map +1 -0
  78. package/dist/combobox/combobox-group-label.js +47 -0
  79. package/dist/combobox/combobox-group-label.js.map +1 -0
  80. package/dist/combobox/combobox-group.d.ts +63 -0
  81. package/dist/combobox/combobox-group.d.ts.map +1 -0
  82. package/dist/combobox/combobox-group.js +67 -0
  83. package/dist/combobox/combobox-group.js.map +1 -0
  84. package/dist/combobox/combobox-item-check.d.ts +61 -0
  85. package/dist/combobox/combobox-item-check.d.ts.map +1 -0
  86. package/dist/combobox/combobox-item-check.js +62 -0
  87. package/dist/combobox/combobox-item-check.js.map +1 -0
  88. package/dist/combobox/combobox-item-offscreen.d.ts +34 -0
  89. package/dist/combobox/combobox-item-offscreen.d.ts.map +1 -0
  90. package/dist/combobox/combobox-item-offscreen.js +53 -0
  91. package/dist/combobox/combobox-item-offscreen.js.map +1 -0
  92. package/dist/combobox/combobox-item-value.d.ts +103 -0
  93. package/dist/combobox/combobox-item-value.d.ts.map +1 -0
  94. package/dist/combobox/combobox-item-value.js +143 -0
  95. package/dist/combobox/combobox-item-value.js.map +1 -0
  96. package/dist/combobox/combobox-item.d.ts +146 -0
  97. package/dist/combobox/combobox-item.d.ts.map +1 -0
  98. package/dist/combobox/combobox-item.js +157 -0
  99. package/dist/combobox/combobox-item.js.map +1 -0
  100. package/dist/combobox/combobox-label.d.ts +50 -0
  101. package/dist/combobox/combobox-label.d.ts.map +1 -0
  102. package/dist/combobox/combobox-label.js +51 -0
  103. package/dist/combobox/combobox-label.js.map +1 -0
  104. package/dist/combobox/combobox-list.d.ts +55 -0
  105. package/dist/combobox/combobox-list.d.ts.map +1 -0
  106. package/dist/combobox/combobox-list.js +106 -0
  107. package/dist/combobox/combobox-list.js.map +1 -0
  108. package/dist/combobox/combobox-popover.d.ts +46 -0
  109. package/dist/combobox/combobox-popover.d.ts.map +1 -0
  110. package/dist/combobox/combobox-popover.js +115 -0
  111. package/dist/combobox/combobox-popover.js.map +1 -0
  112. package/dist/combobox/combobox-provider.d.ts +30 -0
  113. package/dist/combobox/combobox-provider.d.ts.map +1 -0
  114. package/dist/combobox/combobox-provider.js +15 -0
  115. package/dist/combobox/combobox-provider.js.map +1 -0
  116. package/dist/combobox/combobox-row.d.ts +66 -0
  117. package/dist/combobox/combobox-row.d.ts.map +1 -0
  118. package/dist/combobox/combobox-row.js +70 -0
  119. package/dist/combobox/combobox-row.js.map +1 -0
  120. package/dist/combobox/combobox-separator.d.ts +61 -0
  121. package/dist/combobox/combobox-separator.d.ts.map +1 -0
  122. package/dist/combobox/combobox-separator.js +60 -0
  123. package/dist/combobox/combobox-separator.js.map +1 -0
  124. package/dist/combobox/combobox-store.d.ts +2 -0
  125. package/dist/combobox/combobox-store.js +33 -0
  126. package/dist/combobox/combobox-store.js.map +1 -0
  127. package/dist/combobox/combobox-value.d.ts +49 -0
  128. package/dist/combobox/combobox-value.d.ts.map +1 -0
  129. package/dist/combobox/combobox-value.js +40 -0
  130. package/dist/combobox/combobox-value.js.map +1 -0
  131. package/dist/combobox/combobox.d.ts +268 -0
  132. package/dist/combobox/combobox.d.ts.map +1 -0
  133. package/dist/combobox/combobox.js +399 -0
  134. package/dist/combobox/combobox.js.map +1 -0
  135. package/dist/combobox-store-DEVQ45mZ.d.ts +80 -0
  136. package/dist/combobox-store-DEVQ45mZ.d.ts.map +1 -0
  137. package/dist/command/command.d.ts +2 -0
  138. package/dist/command/command.js +130 -0
  139. package/dist/command/command.js.map +1 -0
  140. package/dist/command-DckndCUK.d.ts +59 -0
  141. package/dist/command-DckndCUK.d.ts.map +1 -0
  142. package/dist/composite/composite-container.d.ts +59 -0
  143. package/dist/composite/composite-container.d.ts.map +1 -0
  144. package/dist/composite/composite-container.js +164 -0
  145. package/dist/composite/composite-container.js.map +1 -0
  146. package/dist/composite/composite-context.d.ts +34 -0
  147. package/dist/composite/composite-context.d.ts.map +1 -0
  148. package/dist/composite/composite-context.js +30 -0
  149. package/dist/composite/composite-context.js.map +1 -0
  150. package/dist/composite/composite-group-label.d.ts +55 -0
  151. package/dist/composite/composite-group-label.d.ts.map +1 -0
  152. package/dist/composite/composite-group-label.js +46 -0
  153. package/dist/composite/composite-group-label.js.map +1 -0
  154. package/dist/composite/composite-group.d.ts +60 -0
  155. package/dist/composite/composite-group.d.ts.map +1 -0
  156. package/dist/composite/composite-group.js +51 -0
  157. package/dist/composite/composite-group.js.map +1 -0
  158. package/dist/composite/composite-hover.d.ts +2 -0
  159. package/dist/composite/composite-hover.js +114 -0
  160. package/dist/composite/composite-hover.js.map +1 -0
  161. package/dist/composite/composite-input.d.ts +55 -0
  162. package/dist/composite/composite-input.d.ts.map +1 -0
  163. package/dist/composite/composite-input.js +91 -0
  164. package/dist/composite/composite-input.js.map +1 -0
  165. package/dist/composite/composite-item-offscreen.d.ts +39 -0
  166. package/dist/composite/composite-item-offscreen.d.ts.map +1 -0
  167. package/dist/composite/composite-item-offscreen.js +72 -0
  168. package/dist/composite/composite-item-offscreen.js.map +1 -0
  169. package/dist/composite/composite-item.d.ts +2 -0
  170. package/dist/composite/composite-item.js +290 -0
  171. package/dist/composite/composite-item.js.map +1 -0
  172. package/dist/composite/composite-overflow-disclosure.d.ts +53 -0
  173. package/dist/composite/composite-overflow-disclosure.d.ts.map +1 -0
  174. package/dist/composite/composite-overflow-disclosure.js +84 -0
  175. package/dist/composite/composite-overflow-disclosure.js.map +1 -0
  176. package/dist/composite/composite-overflow-store.d.ts +38 -0
  177. package/dist/composite/composite-overflow-store.d.ts.map +1 -0
  178. package/dist/composite/composite-overflow-store.js +36 -0
  179. package/dist/composite/composite-overflow-store.js.map +1 -0
  180. package/dist/composite/composite-overflow.d.ts +54 -0
  181. package/dist/composite/composite-overflow.d.ts.map +1 -0
  182. package/dist/composite/composite-overflow.js +82 -0
  183. package/dist/composite/composite-overflow.js.map +1 -0
  184. package/dist/composite/composite-provider.d.ts +28 -0
  185. package/dist/composite/composite-provider.d.ts.map +1 -0
  186. package/dist/composite/composite-provider.js +15 -0
  187. package/dist/composite/composite-provider.js.map +1 -0
  188. package/dist/composite/composite-renderer.d.ts +329 -0
  189. package/dist/composite/composite-renderer.d.ts.map +1 -0
  190. package/dist/composite/composite-renderer.js +121 -0
  191. package/dist/composite/composite-renderer.js.map +1 -0
  192. package/dist/composite/composite-row.d.ts +67 -0
  193. package/dist/composite/composite-row.d.ts.map +1 -0
  194. package/dist/composite/composite-row.js +86 -0
  195. package/dist/composite/composite-row.js.map +1 -0
  196. package/dist/composite/composite-separator.d.ts +61 -0
  197. package/dist/composite/composite-separator.d.ts.map +1 -0
  198. package/dist/composite/composite-separator.js +55 -0
  199. package/dist/composite/composite-separator.js.map +1 -0
  200. package/dist/composite/composite-store.d.ts +2 -0
  201. package/dist/composite/composite-store.js +33 -0
  202. package/dist/composite/composite-store.js.map +1 -0
  203. package/dist/composite/composite-typeahead.d.ts +2 -0
  204. package/dist/composite/composite-typeahead.js +126 -0
  205. package/dist/composite/composite-typeahead.js.map +1 -0
  206. package/dist/composite/composite.d.ts +2 -0
  207. package/dist/composite/composite.js +273 -0
  208. package/dist/composite/composite.js.map +1 -0
  209. package/dist/composite/utils.d.ts +52 -0
  210. package/dist/composite/utils.d.ts.map +1 -0
  211. package/dist/composite/utils.js +93 -0
  212. package/dist/composite/utils.js.map +1 -0
  213. package/dist/composite-DLvyFHMq.d.ts +124 -0
  214. package/dist/composite-DLvyFHMq.d.ts.map +1 -0
  215. package/dist/composite-hover-C7ul163w.d.ts +103 -0
  216. package/dist/composite-hover-C7ul163w.d.ts.map +1 -0
  217. package/dist/composite-item-B4WTelVz.d.ts +141 -0
  218. package/dist/composite-item-B4WTelVz.d.ts.map +1 -0
  219. package/dist/composite-store-DyJc-XRA.d.ts +43 -0
  220. package/dist/composite-store-DyJc-XRA.d.ts.map +1 -0
  221. package/dist/composite-typeahead-DDhpyKqm.d.ts +63 -0
  222. package/dist/composite-typeahead-DDhpyKqm.d.ts.map +1 -0
  223. package/dist/dialog/dialog-backdrop.d.ts +16 -0
  224. package/dist/dialog/dialog-backdrop.d.ts.map +1 -0
  225. package/dist/dialog/dialog-backdrop.js +58 -0
  226. package/dist/dialog/dialog-backdrop.js.map +1 -0
  227. package/dist/dialog/dialog-context.d.ts +27 -0
  228. package/dist/dialog/dialog-context.d.ts.map +1 -0
  229. package/dist/dialog/dialog-context.js +30 -0
  230. package/dist/dialog/dialog-context.js.map +1 -0
  231. package/dist/dialog/dialog-description.d.ts +2 -0
  232. package/dist/dialog/dialog-description.js +53 -0
  233. package/dist/dialog/dialog-description.js.map +1 -0
  234. package/dist/dialog/dialog-disclosure.d.ts +2 -0
  235. package/dist/dialog/dialog-disclosure.js +52 -0
  236. package/dist/dialog/dialog-disclosure.js.map +1 -0
  237. package/dist/dialog/dialog-dismiss.d.ts +2 -0
  238. package/dist/dialog/dialog-dismiss.js +80 -0
  239. package/dist/dialog/dialog-dismiss.js.map +1 -0
  240. package/dist/dialog/dialog-heading.d.ts +2 -0
  241. package/dist/dialog/dialog-heading.js +54 -0
  242. package/dist/dialog/dialog-heading.js.map +1 -0
  243. package/dist/dialog/dialog-provider.d.ts +22 -0
  244. package/dist/dialog/dialog-provider.d.ts.map +1 -0
  245. package/dist/dialog/dialog-provider.js +26 -0
  246. package/dist/dialog/dialog-provider.js.map +1 -0
  247. package/dist/dialog/dialog-store.d.ts +2 -0
  248. package/dist/dialog/dialog-store.js +28 -0
  249. package/dist/dialog/dialog-store.js.map +1 -0
  250. package/dist/dialog/dialog.d.ts +2 -0
  251. package/dist/dialog/dialog.js +429 -0
  252. package/dist/dialog/dialog.js.map +1 -0
  253. package/dist/dialog/utils/disable-accessibility-tree-outside.d.ts +7 -0
  254. package/dist/dialog/utils/disable-accessibility-tree-outside.d.ts.map +1 -0
  255. package/dist/dialog/utils/disable-accessibility-tree-outside.js +24 -0
  256. package/dist/dialog/utils/disable-accessibility-tree-outside.js.map +1 -0
  257. package/dist/dialog/utils/disable-tree.d.ts +9 -0
  258. package/dist/dialog/utils/disable-tree.d.ts.map +1 -0
  259. package/dist/dialog/utils/disable-tree.js +48 -0
  260. package/dist/dialog/utils/disable-tree.js.map +1 -0
  261. package/dist/dialog/utils/is-backdrop.d.ts +5 -0
  262. package/dist/dialog/utils/is-backdrop.d.ts.map +1 -0
  263. package/dist/dialog/utils/is-backdrop.js +15 -0
  264. package/dist/dialog/utils/is-backdrop.js.map +1 -0
  265. package/dist/dialog/utils/is-focus-trap.d.ts +5 -0
  266. package/dist/dialog/utils/is-focus-trap.d.ts.map +1 -0
  267. package/dist/dialog/utils/is-focus-trap.js +14 -0
  268. package/dist/dialog/utils/is-focus-trap.js.map +1 -0
  269. package/dist/dialog/utils/mark-tree-outside.d.ts +9 -0
  270. package/dist/dialog/utils/mark-tree-outside.d.ts.map +1 -0
  271. package/dist/dialog/utils/mark-tree-outside.js +44 -0
  272. package/dist/dialog/utils/mark-tree-outside.js.map +1 -0
  273. package/dist/dialog/utils/orchestrate.d.ts +9 -0
  274. package/dist/dialog/utils/orchestrate.d.ts.map +1 -0
  275. package/dist/dialog/utils/orchestrate.js +77 -0
  276. package/dist/dialog/utils/orchestrate.js.map +1 -0
  277. package/dist/dialog/utils/prepend-hidden-dismiss.d.ts +5 -0
  278. package/dist/dialog/utils/prepend-hidden-dismiss.d.ts.map +1 -0
  279. package/dist/dialog/utils/prepend-hidden-dismiss.js +31 -0
  280. package/dist/dialog/utils/prepend-hidden-dismiss.js.map +1 -0
  281. package/dist/dialog/utils/supports-inert.d.ts +5 -0
  282. package/dist/dialog/utils/supports-inert.d.ts.map +1 -0
  283. package/dist/dialog/utils/supports-inert.js +9 -0
  284. package/dist/dialog/utils/supports-inert.js.map +1 -0
  285. package/dist/dialog/utils/use-hide-on-interact-outside.d.ts +9 -0
  286. package/dist/dialog/utils/use-hide-on-interact-outside.d.ts.map +1 -0
  287. package/dist/dialog/utils/use-hide-on-interact-outside.js +123 -0
  288. package/dist/dialog/utils/use-hide-on-interact-outside.js.map +1 -0
  289. package/dist/dialog/utils/use-nested-dialogs.d.ts +11 -0
  290. package/dist/dialog/utils/use-nested-dialogs.d.ts.map +1 -0
  291. package/dist/dialog/utils/use-nested-dialogs.js +40 -0
  292. package/dist/dialog/utils/use-nested-dialogs.js.map +1 -0
  293. package/dist/dialog/utils/use-prevent-body-scroll.d.ts +5 -0
  294. package/dist/dialog/utils/use-prevent-body-scroll.d.ts.map +1 -0
  295. package/dist/dialog/utils/use-prevent-body-scroll.js +60 -0
  296. package/dist/dialog/utils/use-prevent-body-scroll.js.map +1 -0
  297. package/dist/dialog/utils/use-previous-mouse-down-ref.d.ts +5 -0
  298. package/dist/dialog/utils/use-previous-mouse-down-ref.d.ts.map +1 -0
  299. package/dist/dialog/utils/use-previous-mouse-down-ref.js +22 -0
  300. package/dist/dialog/utils/use-previous-mouse-down-ref.js.map +1 -0
  301. package/dist/dialog/utils/use-root-dialog.d.ts +16 -0
  302. package/dist/dialog/utils/use-root-dialog.d.ts.map +1 -0
  303. package/dist/dialog/utils/use-root-dialog.js +47 -0
  304. package/dist/dialog/utils/use-root-dialog.js.map +1 -0
  305. package/dist/dialog/utils/walk-tree-outside.d.ts +8 -0
  306. package/dist/dialog/utils/walk-tree-outside.d.ts.map +1 -0
  307. package/dist/dialog/utils/walk-tree-outside.js +58 -0
  308. package/dist/dialog/utils/walk-tree-outside.js.map +1 -0
  309. package/dist/dialog-C__C-zX2.d.ts +267 -0
  310. package/dist/dialog-C__C-zX2.d.ts.map +1 -0
  311. package/dist/dialog-description-BCZJ1Kyd.d.ts +48 -0
  312. package/dist/dialog-description-BCZJ1Kyd.d.ts.map +1 -0
  313. package/dist/dialog-disclosure-DLD10zlb.d.ts +47 -0
  314. package/dist/dialog-disclosure-DLD10zlb.d.ts.map +1 -0
  315. package/dist/dialog-dismiss-CnwEbzc6.d.ts +48 -0
  316. package/dist/dialog-dismiss-CnwEbzc6.d.ts.map +1 -0
  317. package/dist/dialog-heading-DQvnOfZH.d.ts +49 -0
  318. package/dist/dialog-heading-DQvnOfZH.d.ts.map +1 -0
  319. package/dist/dialog-store-Cjt12T_Y.d.ts +29 -0
  320. package/dist/dialog-store-Cjt12T_Y.d.ts.map +1 -0
  321. package/dist/disclosure/disclosure-content.d.ts +2 -0
  322. package/dist/disclosure/disclosure-content.js +171 -0
  323. package/dist/disclosure/disclosure-content.js.map +1 -0
  324. package/dist/disclosure/disclosure-context.d.ts +24 -0
  325. package/dist/disclosure/disclosure-context.d.ts.map +1 -0
  326. package/dist/disclosure/disclosure-context.js +26 -0
  327. package/dist/disclosure/disclosure-context.js.map +1 -0
  328. package/dist/disclosure/disclosure-provider.d.ts +23 -0
  329. package/dist/disclosure/disclosure-provider.d.ts.map +1 -0
  330. package/dist/disclosure/disclosure-provider.js +27 -0
  331. package/dist/disclosure/disclosure-provider.js.map +1 -0
  332. package/dist/disclosure/disclosure-store.d.ts +2 -0
  333. package/dist/disclosure/disclosure-store.js +32 -0
  334. package/dist/disclosure/disclosure-store.js.map +1 -0
  335. package/dist/disclosure/disclosure.d.ts +2 -0
  336. package/dist/disclosure/disclosure.js +83 -0
  337. package/dist/disclosure/disclosure.js.map +1 -0
  338. package/dist/disclosure-CQ37hPVP.d.ts +60 -0
  339. package/dist/disclosure-CQ37hPVP.d.ts.map +1 -0
  340. package/dist/disclosure-content-BbPkZgAc.d.ts +88 -0
  341. package/dist/disclosure-content-BbPkZgAc.d.ts.map +1 -0
  342. package/dist/disclosure-store-BsaBaRKv.d.ts +58 -0
  343. package/dist/disclosure-store-BsaBaRKv.d.ts.map +1 -0
  344. package/dist/focus-trap/focus-trap-region.d.ts +42 -0
  345. package/dist/focus-trap/focus-trap-region.d.ts.map +1 -0
  346. package/dist/focus-trap/focus-trap-region.js +69 -0
  347. package/dist/focus-trap/focus-trap-region.js.map +1 -0
  348. package/dist/focus-trap/focus-trap.d.ts +31 -0
  349. package/dist/focus-trap/focus-trap.d.ts.map +1 -0
  350. package/dist/focus-trap/focus-trap.js +45 -0
  351. package/dist/focus-trap/focus-trap.js.map +1 -0
  352. package/dist/focusable/focusable-container.d.ts +43 -0
  353. package/dist/focusable/focusable-container.d.ts.map +1 -0
  354. package/dist/focusable/focusable-container.js +41 -0
  355. package/dist/focusable/focusable-container.js.map +1 -0
  356. package/dist/focusable/focusable-context.d.ts +5 -0
  357. package/dist/focusable/focusable-context.d.ts.map +1 -0
  358. package/dist/focusable/focusable-context.js +8 -0
  359. package/dist/focusable/focusable-context.js.map +1 -0
  360. package/dist/focusable/focusable.d.ts +2 -0
  361. package/dist/focusable/focusable.js +273 -0
  362. package/dist/focusable/focusable.js.map +1 -0
  363. package/dist/focusable-B00tOxtB.d.ts +142 -0
  364. package/dist/focusable-B00tOxtB.d.ts.map +1 -0
  365. package/dist/form/form-checkbox.d.ts +50 -0
  366. package/dist/form/form-checkbox.d.ts.map +1 -0
  367. package/dist/form/form-checkbox.js +73 -0
  368. package/dist/form/form-checkbox.js.map +1 -0
  369. package/dist/form/form-context.d.ts +24 -0
  370. package/dist/form/form-context.d.ts.map +1 -0
  371. package/dist/form/form-context.js +27 -0
  372. package/dist/form/form-context.js.map +1 -0
  373. package/dist/form/form-control.d.ts +100 -0
  374. package/dist/form/form-control.d.ts.map +1 -0
  375. package/dist/form/form-control.js +139 -0
  376. package/dist/form/form-control.js.map +1 -0
  377. package/dist/form/form-description.d.ts +73 -0
  378. package/dist/form/form-description.d.ts.map +1 -0
  379. package/dist/form/form-description.js +83 -0
  380. package/dist/form/form-description.js.map +1 -0
  381. package/dist/form/form-error.d.ts +82 -0
  382. package/dist/form/form-error.d.ts.map +1 -0
  383. package/dist/form/form-error.js +102 -0
  384. package/dist/form/form-error.js.map +1 -0
  385. package/dist/form/form-field.d.ts +73 -0
  386. package/dist/form/form-field.d.ts.map +1 -0
  387. package/dist/form/form-field.js +74 -0
  388. package/dist/form/form-field.js.map +1 -0
  389. package/dist/form/form-group-label.d.ts +62 -0
  390. package/dist/form/form-group-label.d.ts.map +1 -0
  391. package/dist/form/form-group-label.js +54 -0
  392. package/dist/form/form-group-label.js.map +1 -0
  393. package/dist/form/form-group.d.ts +64 -0
  394. package/dist/form/form-group.d.ts.map +1 -0
  395. package/dist/form/form-group.js +56 -0
  396. package/dist/form/form-group.js.map +1 -0
  397. package/dist/form/form-input.d.ts +50 -0
  398. package/dist/form/form-input.d.ts.map +1 -0
  399. package/dist/form/form-input.js +74 -0
  400. package/dist/form/form-input.js.map +1 -0
  401. package/dist/form/form-label.d.ts +77 -0
  402. package/dist/form/form-label.d.ts.map +1 -0
  403. package/dist/form/form-label.js +120 -0
  404. package/dist/form/form-label.js.map +1 -0
  405. package/dist/form/form-provider.d.ts +28 -0
  406. package/dist/form/form-provider.d.ts.map +1 -0
  407. package/dist/form/form-provider.js +15 -0
  408. package/dist/form/form-provider.js.map +1 -0
  409. package/dist/form/form-push.d.ts +102 -0
  410. package/dist/form/form-push.d.ts.map +1 -0
  411. package/dist/form/form-push.js +134 -0
  412. package/dist/form/form-push.js.map +1 -0
  413. package/dist/form/form-radio-group.d.ts +56 -0
  414. package/dist/form/form-radio-group.d.ts.map +1 -0
  415. package/dist/form/form-radio-group.js +68 -0
  416. package/dist/form/form-radio-group.js.map +1 -0
  417. package/dist/form/form-radio.d.ts +58 -0
  418. package/dist/form/form-radio.d.ts.map +1 -0
  419. package/dist/form/form-radio.js +90 -0
  420. package/dist/form/form-radio.js.map +1 -0
  421. package/dist/form/form-remove.d.ts +102 -0
  422. package/dist/form/form-remove.d.ts.map +1 -0
  423. package/dist/form/form-remove.js +116 -0
  424. package/dist/form/form-remove.js.map +1 -0
  425. package/dist/form/form-reset.d.ts +51 -0
  426. package/dist/form/form-reset.d.ts.map +1 -0
  427. package/dist/form/form-reset.js +54 -0
  428. package/dist/form/form-reset.js.map +1 -0
  429. package/dist/form/form-store.d.ts +2 -0
  430. package/dist/form/form-store.js +41 -0
  431. package/dist/form/form-store.js.map +1 -0
  432. package/dist/form/form-submit.d.ts +57 -0
  433. package/dist/form/form-submit.d.ts.map +1 -0
  434. package/dist/form/form-submit.js +59 -0
  435. package/dist/form/form-submit.js.map +1 -0
  436. package/dist/form/form.d.ts +101 -0
  437. package/dist/form/form.d.ts.map +1 -0
  438. package/dist/form/form.js +146 -0
  439. package/dist/form/form.js.map +1 -0
  440. package/dist/form-store-C4Kf5QHm.d.ts +120 -0
  441. package/dist/form-store-C4Kf5QHm.d.ts.map +1 -0
  442. package/dist/group/group-label-context.d.ts +7 -0
  443. package/dist/group/group-label-context.d.ts.map +1 -0
  444. package/dist/group/group-label-context.js +8 -0
  445. package/dist/group/group-label-context.js.map +1 -0
  446. package/dist/group/group-label.d.ts +2 -0
  447. package/dist/group/group-label.js +52 -0
  448. package/dist/group/group-label.js.map +1 -0
  449. package/dist/group/group.d.ts +2 -0
  450. package/dist/group/group.js +47 -0
  451. package/dist/group/group.js.map +1 -0
  452. package/dist/group-CamegDJA.d.ts +32 -0
  453. package/dist/group-CamegDJA.d.ts.map +1 -0
  454. package/dist/group-label-C16IDs1b.d.ts +37 -0
  455. package/dist/group-label-C16IDs1b.d.ts.map +1 -0
  456. package/dist/heading/heading-context.d.ts +7 -0
  457. package/dist/heading/heading-context.d.ts.map +1 -0
  458. package/dist/heading/heading-context.js +8 -0
  459. package/dist/heading/heading-context.js.map +1 -0
  460. package/dist/heading/heading-level.d.ts +35 -0
  461. package/dist/heading/heading-level.d.ts.map +1 -0
  462. package/dist/heading/heading-level.js +33 -0
  463. package/dist/heading/heading-level.js.map +1 -0
  464. package/dist/heading/heading.d.ts +2 -0
  465. package/dist/heading/heading.js +56 -0
  466. package/dist/heading/heading.js.map +1 -0
  467. package/dist/heading/utils.d.ts +2 -0
  468. package/dist/heading/utils.js +1 -0
  469. package/dist/heading-zY9g_9K-.d.ts +42 -0
  470. package/dist/heading-zY9g_9K-.d.ts.map +1 -0
  471. package/dist/hovercard/hovercard-anchor.d.ts +59 -0
  472. package/dist/hovercard/hovercard-anchor.d.ts.map +1 -0
  473. package/dist/hovercard/hovercard-anchor.js +106 -0
  474. package/dist/hovercard/hovercard-anchor.js.map +1 -0
  475. package/dist/hovercard/hovercard-arrow.d.ts +54 -0
  476. package/dist/hovercard/hovercard-arrow.d.ts.map +1 -0
  477. package/dist/hovercard/hovercard-arrow.js +51 -0
  478. package/dist/hovercard/hovercard-arrow.js.map +1 -0
  479. package/dist/hovercard/hovercard-context.d.ts +24 -0
  480. package/dist/hovercard/hovercard-context.d.ts.map +1 -0
  481. package/dist/hovercard/hovercard-context.js +27 -0
  482. package/dist/hovercard/hovercard-context.js.map +1 -0
  483. package/dist/hovercard/hovercard-description.d.ts +51 -0
  484. package/dist/hovercard/hovercard-description.d.ts.map +1 -0
  485. package/dist/hovercard/hovercard-description.js +42 -0
  486. package/dist/hovercard/hovercard-description.js.map +1 -0
  487. package/dist/hovercard/hovercard-disclosure.d.ts +51 -0
  488. package/dist/hovercard/hovercard-disclosure.d.ts.map +1 -0
  489. package/dist/hovercard/hovercard-disclosure.js +122 -0
  490. package/dist/hovercard/hovercard-disclosure.js.map +1 -0
  491. package/dist/hovercard/hovercard-dismiss.d.ts +50 -0
  492. package/dist/hovercard/hovercard-dismiss.d.ts.map +1 -0
  493. package/dist/hovercard/hovercard-dismiss.js +47 -0
  494. package/dist/hovercard/hovercard-dismiss.js.map +1 -0
  495. package/dist/hovercard/hovercard-heading.d.ts +51 -0
  496. package/dist/hovercard/hovercard-heading.d.ts.map +1 -0
  497. package/dist/hovercard/hovercard-heading.js +42 -0
  498. package/dist/hovercard/hovercard-heading.js.map +1 -0
  499. package/dist/hovercard/hovercard-provider.d.ts +23 -0
  500. package/dist/hovercard/hovercard-provider.d.ts.map +1 -0
  501. package/dist/hovercard/hovercard-provider.js +27 -0
  502. package/dist/hovercard/hovercard-provider.js.map +1 -0
  503. package/dist/hovercard/hovercard-store.d.ts +2 -0
  504. package/dist/hovercard/hovercard-store.js +31 -0
  505. package/dist/hovercard/hovercard-store.js.map +1 -0
  506. package/dist/hovercard/hovercard.d.ts +80 -0
  507. package/dist/hovercard/hovercard.d.ts.map +1 -0
  508. package/dist/hovercard/hovercard.js +240 -0
  509. package/dist/hovercard/hovercard.js.map +1 -0
  510. package/dist/hovercard/utils/debug-polygon.d.ts +7 -0
  511. package/dist/hovercard/utils/debug-polygon.d.ts.map +1 -0
  512. package/dist/hovercard/utils/debug-polygon.js +33 -0
  513. package/dist/hovercard/utils/debug-polygon.js.map +1 -0
  514. package/dist/hovercard/utils/polygon.d.ts +9 -0
  515. package/dist/hovercard/utils/polygon.d.ts.map +1 -0
  516. package/dist/hovercard/utils/polygon.js +70 -0
  517. package/dist/hovercard/utils/polygon.js.map +1 -0
  518. package/dist/hovercard-store-gIeoQEn_.d.ts +30 -0
  519. package/dist/hovercard-store-gIeoQEn_.d.ts.map +1 -0
  520. package/dist/index.d.ts +5 -0
  521. package/dist/index.d.ts.map +1 -0
  522. package/dist/index.js +7 -0
  523. package/dist/index.js.map +1 -0
  524. package/dist/menu/menu-arrow.d.ts +52 -0
  525. package/dist/menu/menu-arrow.d.ts.map +1 -0
  526. package/dist/menu/menu-arrow.js +49 -0
  527. package/dist/menu/menu-arrow.js.map +1 -0
  528. package/dist/menu/menu-bar-provider.d.ts +35 -0
  529. package/dist/menu/menu-bar-provider.d.ts.map +1 -0
  530. package/dist/menu/menu-bar-provider.js +42 -0
  531. package/dist/menu/menu-bar-provider.js.map +1 -0
  532. package/dist/menu/menu-bar-store.d.ts +25 -0
  533. package/dist/menu/menu-bar-store.d.ts.map +1 -0
  534. package/dist/menu/menu-bar-store.js +28 -0
  535. package/dist/menu/menu-bar-store.js.map +1 -0
  536. package/dist/menu/menu-bar.d.ts +61 -0
  537. package/dist/menu/menu-bar.d.ts.map +1 -0
  538. package/dist/menu/menu-bar.js +66 -0
  539. package/dist/menu/menu-bar.js.map +1 -0
  540. package/dist/menu/menu-button-arrow.d.ts +65 -0
  541. package/dist/menu/menu-button-arrow.d.ts.map +1 -0
  542. package/dist/menu/menu-button-arrow.js +62 -0
  543. package/dist/menu/menu-button-arrow.js.map +1 -0
  544. package/dist/menu/menu-button.d.ts +67 -0
  545. package/dist/menu/menu-button.d.ts.map +1 -0
  546. package/dist/menu/menu-button.js +183 -0
  547. package/dist/menu/menu-button.js.map +1 -0
  548. package/dist/menu/menu-context.d.ts +47 -0
  549. package/dist/menu/menu-context.d.ts.map +1 -0
  550. package/dist/menu/menu-context.js +52 -0
  551. package/dist/menu/menu-context.js.map +1 -0
  552. package/dist/menu/menu-description.d.ts +50 -0
  553. package/dist/menu/menu-description.d.ts.map +1 -0
  554. package/dist/menu/menu-description.js +42 -0
  555. package/dist/menu/menu-description.js.map +1 -0
  556. package/dist/menu/menu-dismiss.d.ts +49 -0
  557. package/dist/menu/menu-dismiss.d.ts.map +1 -0
  558. package/dist/menu/menu-dismiss.js +47 -0
  559. package/dist/menu/menu-dismiss.js.map +1 -0
  560. package/dist/menu/menu-group-label.d.ts +55 -0
  561. package/dist/menu/menu-group-label.d.ts.map +1 -0
  562. package/dist/menu/menu-group-label.js +47 -0
  563. package/dist/menu/menu-group-label.js.map +1 -0
  564. package/dist/menu/menu-group.d.ts +61 -0
  565. package/dist/menu/menu-group.d.ts.map +1 -0
  566. package/dist/menu/menu-group.js +53 -0
  567. package/dist/menu/menu-group.js.map +1 -0
  568. package/dist/menu/menu-heading.d.ts +50 -0
  569. package/dist/menu/menu-heading.d.ts.map +1 -0
  570. package/dist/menu/menu-heading.js +42 -0
  571. package/dist/menu/menu-heading.js.map +1 -0
  572. package/dist/menu/menu-item-check.d.ts +58 -0
  573. package/dist/menu/menu-item-check.d.ts.map +1 -0
  574. package/dist/menu/menu-item-check.js +60 -0
  575. package/dist/menu/menu-item-check.js.map +1 -0
  576. package/dist/menu/menu-item-checkbox.d.ts +104 -0
  577. package/dist/menu/menu-item-checkbox.d.ts.map +1 -0
  578. package/dist/menu/menu-item-checkbox.js +151 -0
  579. package/dist/menu/menu-item-checkbox.js.map +1 -0
  580. package/dist/menu/menu-item-radio.d.ts +91 -0
  581. package/dist/menu/menu-item-radio.d.ts.map +1 -0
  582. package/dist/menu/menu-item-radio.js +121 -0
  583. package/dist/menu/menu-item-radio.js.map +1 -0
  584. package/dist/menu/menu-item.d.ts +75 -0
  585. package/dist/menu/menu-item.d.ts.map +1 -0
  586. package/dist/menu/menu-item.js +122 -0
  587. package/dist/menu/menu-item.js.map +1 -0
  588. package/dist/menu/menu-list.d.ts +59 -0
  589. package/dist/menu/menu-list.d.ts.map +1 -0
  590. package/dist/menu/menu-list.js +168 -0
  591. package/dist/menu/menu-list.js.map +1 -0
  592. package/dist/menu/menu-provider.d.ts +29 -0
  593. package/dist/menu/menu-provider.d.ts.map +1 -0
  594. package/dist/menu/menu-provider.js +15 -0
  595. package/dist/menu/menu-provider.js.map +1 -0
  596. package/dist/menu/menu-separator.d.ts +59 -0
  597. package/dist/menu/menu-separator.d.ts.map +1 -0
  598. package/dist/menu/menu-separator.js +57 -0
  599. package/dist/menu/menu-separator.js.map +1 -0
  600. package/dist/menu/menu-store.d.ts +2 -0
  601. package/dist/menu/menu-store.js +40 -0
  602. package/dist/menu/menu-store.js.map +1 -0
  603. package/dist/menu/menu.d.ts +49 -0
  604. package/dist/menu/menu.d.ts.map +1 -0
  605. package/dist/menu/menu.js +169 -0
  606. package/dist/menu/menu.js.map +1 -0
  607. package/dist/menu-store-0CKKmNek.d.ts +83 -0
  608. package/dist/menu-store-0CKKmNek.d.ts.map +1 -0
  609. package/dist/menubar/menubar-context.d.ts +25 -0
  610. package/dist/menubar/menubar-context.d.ts.map +1 -0
  611. package/dist/menubar/menubar-context.js +29 -0
  612. package/dist/menubar/menubar-context.js.map +1 -0
  613. package/dist/menubar/menubar-provider.d.ts +37 -0
  614. package/dist/menubar/menubar-provider.d.ts.map +1 -0
  615. package/dist/menubar/menubar-provider.js +41 -0
  616. package/dist/menubar/menubar-provider.js.map +1 -0
  617. package/dist/menubar/menubar-store.d.ts +2 -0
  618. package/dist/menubar/menubar-store.js +27 -0
  619. package/dist/menubar/menubar-store.js.map +1 -0
  620. package/dist/menubar/menubar.d.ts +71 -0
  621. package/dist/menubar/menubar.d.ts.map +1 -0
  622. package/dist/menubar/menubar.js +88 -0
  623. package/dist/menubar/menubar.js.map +1 -0
  624. package/dist/menubar-store-3h0eNIbS.d.ts +26 -0
  625. package/dist/menubar-store-3h0eNIbS.d.ts.map +1 -0
  626. package/dist/popover/popover-anchor.d.ts +2 -0
  627. package/dist/popover/popover-anchor.js +45 -0
  628. package/dist/popover/popover-anchor.js.map +1 -0
  629. package/dist/popover/popover-arrow-path.d.ts +5 -0
  630. package/dist/popover/popover-arrow-path.d.ts.map +1 -0
  631. package/dist/popover/popover-arrow-path.js +7 -0
  632. package/dist/popover/popover-arrow-path.js.map +1 -0
  633. package/dist/popover/popover-arrow.d.ts +65 -0
  634. package/dist/popover/popover-arrow.d.ts.map +1 -0
  635. package/dist/popover/popover-arrow.js +160 -0
  636. package/dist/popover/popover-arrow.js.map +1 -0
  637. package/dist/popover/popover-context.d.ts +24 -0
  638. package/dist/popover/popover-context.d.ts.map +1 -0
  639. package/dist/popover/popover-context.js +27 -0
  640. package/dist/popover/popover-context.js.map +1 -0
  641. package/dist/popover/popover-description.d.ts +2 -0
  642. package/dist/popover/popover-description.js +42 -0
  643. package/dist/popover/popover-description.js.map +1 -0
  644. package/dist/popover/popover-disclosure-arrow.d.ts +62 -0
  645. package/dist/popover/popover-disclosure-arrow.d.ts.map +1 -0
  646. package/dist/popover/popover-disclosure-arrow.js +81 -0
  647. package/dist/popover/popover-disclosure-arrow.js.map +1 -0
  648. package/dist/popover/popover-disclosure.d.ts +38 -0
  649. package/dist/popover/popover-disclosure.d.ts.map +1 -0
  650. package/dist/popover/popover-disclosure.js +66 -0
  651. package/dist/popover/popover-disclosure.js.map +1 -0
  652. package/dist/popover/popover-dismiss.d.ts +2 -0
  653. package/dist/popover/popover-dismiss.js +47 -0
  654. package/dist/popover/popover-dismiss.js.map +1 -0
  655. package/dist/popover/popover-heading.d.ts +2 -0
  656. package/dist/popover/popover-heading.js +42 -0
  657. package/dist/popover/popover-heading.js.map +1 -0
  658. package/dist/popover/popover-provider.d.ts +23 -0
  659. package/dist/popover/popover-provider.d.ts.map +1 -0
  660. package/dist/popover/popover-provider.js +27 -0
  661. package/dist/popover/popover-provider.js.map +1 -0
  662. package/dist/popover/popover-store.d.ts +2 -0
  663. package/dist/popover/popover-store.js +30 -0
  664. package/dist/popover/popover-store.js.map +1 -0
  665. package/dist/popover/popover.d.ts +2 -0
  666. package/dist/popover/popover.js +312 -0
  667. package/dist/popover/popover.js.map +1 -0
  668. package/dist/popover-CCqiRKqg.d.ts +181 -0
  669. package/dist/popover-CCqiRKqg.d.ts.map +1 -0
  670. package/dist/popover-anchor-PgfeXyzs.d.ts +47 -0
  671. package/dist/popover-anchor-PgfeXyzs.d.ts.map +1 -0
  672. package/dist/popover-description-DU753dah.d.ts +51 -0
  673. package/dist/popover-description-DU753dah.d.ts.map +1 -0
  674. package/dist/popover-dismiss-DPeI6Zse.d.ts +50 -0
  675. package/dist/popover-dismiss-DPeI6Zse.d.ts.map +1 -0
  676. package/dist/popover-heading-DGsr6D5W.d.ts +51 -0
  677. package/dist/popover-heading-DGsr6D5W.d.ts.map +1 -0
  678. package/dist/popover-store-Bc-l5VVO.d.ts +29 -0
  679. package/dist/popover-store-Bc-l5VVO.d.ts.map +1 -0
  680. package/dist/portal/portal-context.d.ts +21 -0
  681. package/dist/portal/portal-context.d.ts.map +1 -0
  682. package/dist/portal/portal-context.js +24 -0
  683. package/dist/portal/portal-context.js.map +1 -0
  684. package/dist/portal/portal.d.ts +2 -0
  685. package/dist/portal/portal.js +242 -0
  686. package/dist/portal/portal.js.map +1 -0
  687. package/dist/portal-CMBWiayp.d.ts +149 -0
  688. package/dist/portal-CMBWiayp.d.ts.map +1 -0
  689. package/dist/radio/radio-context.d.ts +24 -0
  690. package/dist/radio/radio-context.d.ts.map +1 -0
  691. package/dist/radio/radio-context.js +27 -0
  692. package/dist/radio/radio-context.js.map +1 -0
  693. package/dist/radio/radio-group.d.ts +51 -0
  694. package/dist/radio/radio-group.d.ts.map +1 -0
  695. package/dist/radio/radio-group.js +60 -0
  696. package/dist/radio/radio-group.js.map +1 -0
  697. package/dist/radio/radio-provider.d.ts +25 -0
  698. package/dist/radio/radio-provider.d.ts.map +1 -0
  699. package/dist/radio/radio-provider.js +29 -0
  700. package/dist/radio/radio-provider.js.map +1 -0
  701. package/dist/radio/radio-store.d.ts +2 -0
  702. package/dist/radio/radio-store.js +33 -0
  703. package/dist/radio/radio-store.js.map +1 -0
  704. package/dist/radio/radio.d.ts +76 -0
  705. package/dist/radio/radio.d.ts.map +1 -0
  706. package/dist/radio/radio.js +143 -0
  707. package/dist/radio/radio.js.map +1 -0
  708. package/dist/radio-store-DOZ_1RSk.d.ts +36 -0
  709. package/dist/radio-store-DOZ_1RSk.d.ts.map +1 -0
  710. package/dist/role/role.d.ts +34 -0
  711. package/dist/role/role.d.ts.map +1 -0
  712. package/dist/role/role.js +68 -0
  713. package/dist/role/role.js.map +1 -0
  714. package/dist/select/select-arrow.d.ts +60 -0
  715. package/dist/select/select-arrow.d.ts.map +1 -0
  716. package/dist/select/select-arrow.js +58 -0
  717. package/dist/select/select-arrow.js.map +1 -0
  718. package/dist/select/select-context.d.ts +27 -0
  719. package/dist/select/select-context.d.ts.map +1 -0
  720. package/dist/select/select-context.js +31 -0
  721. package/dist/select/select-context.js.map +1 -0
  722. package/dist/select/select-dismiss.d.ts +59 -0
  723. package/dist/select/select-dismiss.d.ts.map +1 -0
  724. package/dist/select/select-dismiss.js +56 -0
  725. package/dist/select/select-dismiss.js.map +1 -0
  726. package/dist/select/select-group-label.d.ts +61 -0
  727. package/dist/select/select-group-label.d.ts.map +1 -0
  728. package/dist/select/select-group-label.js +52 -0
  729. package/dist/select/select-group-label.js.map +1 -0
  730. package/dist/select/select-group.d.ts +62 -0
  731. package/dist/select/select-group.d.ts.map +1 -0
  732. package/dist/select/select-group.js +53 -0
  733. package/dist/select/select-group.js.map +1 -0
  734. package/dist/select/select-heading.d.ts +59 -0
  735. package/dist/select/select-heading.d.ts.map +1 -0
  736. package/dist/select/select-heading.js +62 -0
  737. package/dist/select/select-heading.js.map +1 -0
  738. package/dist/select/select-item-check.d.ts +59 -0
  739. package/dist/select/select-item-check.d.ts.map +1 -0
  740. package/dist/select/select-item-check.js +61 -0
  741. package/dist/select/select-item-check.js.map +1 -0
  742. package/dist/select/select-item-offscreen.d.ts +37 -0
  743. package/dist/select/select-item-offscreen.d.ts.map +1 -0
  744. package/dist/select/select-item-offscreen.js +38 -0
  745. package/dist/select/select-item-offscreen.js.map +1 -0
  746. package/dist/select/select-item.d.ts +108 -0
  747. package/dist/select/select-item.d.ts.map +1 -0
  748. package/dist/select/select-item.js +143 -0
  749. package/dist/select/select-item.js.map +1 -0
  750. package/dist/select/select-label.d.ts +55 -0
  751. package/dist/select/select-label.d.ts.map +1 -0
  752. package/dist/select/select-label.js +70 -0
  753. package/dist/select/select-label.js.map +1 -0
  754. package/dist/select/select-list.d.ts +80 -0
  755. package/dist/select/select-list.d.ts.map +1 -0
  756. package/dist/select/select-list.js +143 -0
  757. package/dist/select/select-list.js.map +1 -0
  758. package/dist/select/select-popover.d.ts +44 -0
  759. package/dist/select/select-popover.d.ts.map +1 -0
  760. package/dist/select/select-popover.js +59 -0
  761. package/dist/select/select-popover.js.map +1 -0
  762. package/dist/select/select-provider.d.ts +30 -0
  763. package/dist/select/select-provider.d.ts.map +1 -0
  764. package/dist/select/select-provider.js +15 -0
  765. package/dist/select/select-provider.js.map +1 -0
  766. package/dist/select/select-renderer.d.ts +44 -0
  767. package/dist/select/select-renderer.d.ts.map +1 -0
  768. package/dist/select/select-renderer.js +61 -0
  769. package/dist/select/select-renderer.js.map +1 -0
  770. package/dist/select/select-row.d.ts +63 -0
  771. package/dist/select/select-row.d.ts.map +1 -0
  772. package/dist/select/select-row.js +67 -0
  773. package/dist/select/select-row.js.map +1 -0
  774. package/dist/select/select-separator.d.ts +60 -0
  775. package/dist/select/select-separator.d.ts.map +1 -0
  776. package/dist/select/select-separator.js +57 -0
  777. package/dist/select/select-separator.js.map +1 -0
  778. package/dist/select/select-store.d.ts +2 -0
  779. package/dist/select/select-store.js +31 -0
  780. package/dist/select/select-store.js.map +1 -0
  781. package/dist/select/select-value.d.ts +84 -0
  782. package/dist/select/select-value.d.ts.map +1 -0
  783. package/dist/select/select-value.js +18 -0
  784. package/dist/select/select-value.js.map +1 -0
  785. package/dist/select/select.d.ts +89 -0
  786. package/dist/select/select.d.ts.map +1 -0
  787. package/dist/select/select.js +211 -0
  788. package/dist/select/select.js.map +1 -0
  789. package/dist/select-store-BsLTAyKh.d.ts +68 -0
  790. package/dist/select-store-BsLTAyKh.d.ts.map +1 -0
  791. package/dist/separator/separator.d.ts +2 -0
  792. package/dist/separator/separator.js +36 -0
  793. package/dist/separator/separator.js.map +1 -0
  794. package/dist/separator--ozQfMcK.d.ts +36 -0
  795. package/dist/separator--ozQfMcK.d.ts.map +1 -0
  796. package/dist/store.d.ts +1 -0
  797. package/dist/store.js +2 -0
  798. package/dist/tab/tab-context.d.ts +24 -0
  799. package/dist/tab/tab-context.d.ts.map +1 -0
  800. package/dist/tab/tab-context.js +27 -0
  801. package/dist/tab/tab-context.js.map +1 -0
  802. package/dist/tab/tab-list.d.ts +55 -0
  803. package/dist/tab/tab-list.d.ts.map +1 -0
  804. package/dist/tab/tab-list.js +71 -0
  805. package/dist/tab/tab-list.js.map +1 -0
  806. package/dist/tab/tab-panel.d.ts +122 -0
  807. package/dist/tab/tab-panel.d.ts.map +1 -0
  808. package/dist/tab/tab-panel.js +169 -0
  809. package/dist/tab/tab-panel.js.map +1 -0
  810. package/dist/tab/tab-provider.d.ts +26 -0
  811. package/dist/tab/tab-provider.d.ts.map +1 -0
  812. package/dist/tab/tab-provider.js +30 -0
  813. package/dist/tab/tab-provider.js.map +1 -0
  814. package/dist/tab/tab-store.d.ts +77 -0
  815. package/dist/tab/tab-store.d.ts.map +1 -0
  816. package/dist/tab/tab-store.js +55 -0
  817. package/dist/tab/tab-store.js.map +1 -0
  818. package/dist/tab/tab.d.ts +56 -0
  819. package/dist/tab/tab.d.ts.map +1 -0
  820. package/dist/tab/tab.js +115 -0
  821. package/dist/tab/tab.js.map +1 -0
  822. package/dist/tag/tag-context.d.ts +26 -0
  823. package/dist/tag/tag-context.d.ts.map +1 -0
  824. package/dist/tag/tag-context.js +30 -0
  825. package/dist/tag/tag-context.js.map +1 -0
  826. package/dist/tag/tag-input.d.ts +126 -0
  827. package/dist/tag/tag-input.d.ts.map +1 -0
  828. package/dist/tag/tag-input.js +162 -0
  829. package/dist/tag/tag-input.js.map +1 -0
  830. package/dist/tag/tag-list-label.d.ts +59 -0
  831. package/dist/tag/tag-list-label.d.ts.map +1 -0
  832. package/dist/tag/tag-list-label.js +62 -0
  833. package/dist/tag/tag-list-label.js.map +1 -0
  834. package/dist/tag/tag-list.d.ts +62 -0
  835. package/dist/tag/tag-list.d.ts.map +1 -0
  836. package/dist/tag/tag-list.js +127 -0
  837. package/dist/tag/tag-list.js.map +1 -0
  838. package/dist/tag/tag-provider.d.ts +34 -0
  839. package/dist/tag/tag-provider.d.ts.map +1 -0
  840. package/dist/tag/tag-provider.js +38 -0
  841. package/dist/tag/tag-provider.js.map +1 -0
  842. package/dist/tag/tag-remove.d.ts +71 -0
  843. package/dist/tag/tag-remove.d.ts.map +1 -0
  844. package/dist/tag/tag-remove.js +102 -0
  845. package/dist/tag/tag-remove.js.map +1 -0
  846. package/dist/tag/tag-store.d.ts +2 -0
  847. package/dist/tag/tag-store.js +38 -0
  848. package/dist/tag/tag-store.js.map +1 -0
  849. package/dist/tag/tag-value.d.ts +49 -0
  850. package/dist/tag/tag-value.d.ts.map +1 -0
  851. package/dist/tag/tag-value.js +40 -0
  852. package/dist/tag/tag-value.js.map +1 -0
  853. package/dist/tag/tag-values.d.ts +60 -0
  854. package/dist/tag/tag-values.d.ts.map +1 -0
  855. package/dist/tag/tag-values.js +50 -0
  856. package/dist/tag/tag-values.js.map +1 -0
  857. package/dist/tag/tag.d.ts +78 -0
  858. package/dist/tag/tag.d.ts.map +1 -0
  859. package/dist/tag/tag.js +114 -0
  860. package/dist/tag/tag.js.map +1 -0
  861. package/dist/tag/utils.d.ts +5 -0
  862. package/dist/tag/utils.d.ts.map +1 -0
  863. package/dist/tag/utils.js +15 -0
  864. package/dist/tag/utils.js.map +1 -0
  865. package/dist/tag-store-xANOvuGo.d.ts +49 -0
  866. package/dist/tag-store-xANOvuGo.d.ts.map +1 -0
  867. package/dist/toolbar/toolbar-container.d.ts +41 -0
  868. package/dist/toolbar/toolbar-container.d.ts.map +1 -0
  869. package/dist/toolbar/toolbar-container.js +53 -0
  870. package/dist/toolbar/toolbar-container.js.map +1 -0
  871. package/dist/toolbar/toolbar-context.d.ts +24 -0
  872. package/dist/toolbar/toolbar-context.d.ts.map +1 -0
  873. package/dist/toolbar/toolbar-context.js +27 -0
  874. package/dist/toolbar/toolbar-context.js.map +1 -0
  875. package/dist/toolbar/toolbar-input.d.ts +39 -0
  876. package/dist/toolbar/toolbar-input.d.ts.map +1 -0
  877. package/dist/toolbar/toolbar-input.js +47 -0
  878. package/dist/toolbar/toolbar-input.js.map +1 -0
  879. package/dist/toolbar/toolbar-item.d.ts +47 -0
  880. package/dist/toolbar/toolbar-item.d.ts.map +1 -0
  881. package/dist/toolbar/toolbar-item.js +45 -0
  882. package/dist/toolbar/toolbar-item.js.map +1 -0
  883. package/dist/toolbar/toolbar-provider.d.ts +26 -0
  884. package/dist/toolbar/toolbar-provider.d.ts.map +1 -0
  885. package/dist/toolbar/toolbar-provider.js +30 -0
  886. package/dist/toolbar/toolbar-provider.js.map +1 -0
  887. package/dist/toolbar/toolbar-separator.d.ts +51 -0
  888. package/dist/toolbar/toolbar-separator.d.ts.map +1 -0
  889. package/dist/toolbar/toolbar-separator.js +49 -0
  890. package/dist/toolbar/toolbar-separator.js.map +1 -0
  891. package/dist/toolbar/toolbar-store.d.ts +2 -0
  892. package/dist/toolbar/toolbar-store.js +31 -0
  893. package/dist/toolbar/toolbar-store.js.map +1 -0
  894. package/dist/toolbar/toolbar.d.ts +50 -0
  895. package/dist/toolbar/toolbar.d.ts.map +1 -0
  896. package/dist/toolbar/toolbar.js +66 -0
  897. package/dist/toolbar/toolbar.js.map +1 -0
  898. package/dist/toolbar-store-Cs-9cGHx.d.ts +30 -0
  899. package/dist/toolbar-store-Cs-9cGHx.d.ts.map +1 -0
  900. package/dist/tooltip/tooltip-anchor.d.ts +53 -0
  901. package/dist/tooltip/tooltip-anchor.d.ts.map +1 -0
  902. package/dist/tooltip/tooltip-anchor.js +121 -0
  903. package/dist/tooltip/tooltip-anchor.js.map +1 -0
  904. package/dist/tooltip/tooltip-arrow.d.ts +54 -0
  905. package/dist/tooltip/tooltip-arrow.d.ts.map +1 -0
  906. package/dist/tooltip/tooltip-arrow.js +54 -0
  907. package/dist/tooltip/tooltip-arrow.js.map +1 -0
  908. package/dist/tooltip/tooltip-context.d.ts +24 -0
  909. package/dist/tooltip/tooltip-context.d.ts.map +1 -0
  910. package/dist/tooltip/tooltip-context.js +27 -0
  911. package/dist/tooltip/tooltip-context.js.map +1 -0
  912. package/dist/tooltip/tooltip-provider.d.ts +23 -0
  913. package/dist/tooltip/tooltip-provider.d.ts.map +1 -0
  914. package/dist/tooltip/tooltip-provider.js +27 -0
  915. package/dist/tooltip/tooltip-provider.js.map +1 -0
  916. package/dist/tooltip/tooltip-store.d.ts +30 -0
  917. package/dist/tooltip/tooltip-store.d.ts.map +1 -0
  918. package/dist/tooltip/tooltip-store.js +30 -0
  919. package/dist/tooltip/tooltip-store.js.map +1 -0
  920. package/dist/tooltip/tooltip.d.ts +61 -0
  921. package/dist/tooltip/tooltip.d.ts.map +1 -0
  922. package/dist/tooltip/tooltip.js +81 -0
  923. package/dist/tooltip/tooltip.js.map +1 -0
  924. package/dist/utils-DUF1aMov.d.ts +5 -0
  925. package/dist/utils-DUF1aMov.d.ts.map +1 -0
  926. package/dist/visually-hidden/visually-hidden.d.ts +37 -0
  927. package/dist/visually-hidden/visually-hidden.d.ts.map +1 -0
  928. package/dist/visually-hidden/visually-hidden.js +53 -0
  929. package/dist/visually-hidden/visually-hidden.js.map +1 -0
  930. package/license +21 -0
  931. package/package.json +936 -0
  932. package/readme.md +19 -0
  933. package/src/button/button.tsx +76 -0
  934. package/src/checkbox/checkbox-check.tsx +116 -0
  935. package/src/checkbox/checkbox-checked-context.tsx +3 -0
  936. package/src/checkbox/checkbox-context.tsx +27 -0
  937. package/src/checkbox/checkbox-provider.tsx +53 -0
  938. package/src/checkbox/checkbox-store.ts +76 -0
  939. package/src/checkbox/checkbox.tsx +271 -0
  940. package/src/collection/collection-context.tsx +27 -0
  941. package/src/collection/collection-item-offscreen.tsx +157 -0
  942. package/src/collection/collection-item.tsx +136 -0
  943. package/src/collection/collection-provider.tsx +47 -0
  944. package/src/collection/collection-renderer.tsx +994 -0
  945. package/src/collection/collection-store.ts +84 -0
  946. package/src/collection/collection.tsx +93 -0
  947. package/src/combobox/combobox-cancel.tsx +153 -0
  948. package/src/combobox/combobox-context.tsx +49 -0
  949. package/src/combobox/combobox-disclosure.tsx +162 -0
  950. package/src/combobox/combobox-group-label.tsx +74 -0
  951. package/src/combobox/combobox-group.tsx +100 -0
  952. package/src/combobox/combobox-item-check.tsx +83 -0
  953. package/src/combobox/combobox-item-offscreen.tsx +87 -0
  954. package/src/combobox/combobox-item-value.tsx +231 -0
  955. package/src/combobox/combobox-item.tsx +363 -0
  956. package/src/combobox/combobox-label.tsx +89 -0
  957. package/src/combobox/combobox-list.tsx +176 -0
  958. package/src/combobox/combobox-popover.tsx +179 -0
  959. package/src/combobox/combobox-provider.tsx +50 -0
  960. package/src/combobox/combobox-row.tsx +102 -0
  961. package/src/combobox/combobox-separator.tsx +90 -0
  962. package/src/combobox/combobox-store.ts +168 -0
  963. package/src/combobox/combobox-value.tsx +63 -0
  964. package/src/combobox/combobox.tsx +900 -0
  965. package/src/command/command.tsx +215 -0
  966. package/src/composite/composite-container.tsx +278 -0
  967. package/src/composite/composite-context.tsx +53 -0
  968. package/src/composite/composite-group-label.tsx +73 -0
  969. package/src/composite/composite-group.tsx +77 -0
  970. package/src/composite/composite-hover.tsx +230 -0
  971. package/src/composite/composite-input.tsx +147 -0
  972. package/src/composite/composite-item-offscreen.tsx +112 -0
  973. package/src/composite/composite-item.tsx +567 -0
  974. package/src/composite/composite-overflow-disclosure.ts +117 -0
  975. package/src/composite/composite-overflow-store.ts +61 -0
  976. package/src/composite/composite-overflow.tsx +123 -0
  977. package/src/composite/composite-provider.tsx +47 -0
  978. package/src/composite/composite-renderer.tsx +231 -0
  979. package/src/composite/composite-row.tsx +133 -0
  980. package/src/composite/composite-separator.tsx +96 -0
  981. package/src/composite/composite-store.ts +101 -0
  982. package/src/composite/composite-typeahead.tsx +246 -0
  983. package/src/composite/composite.tsx +592 -0
  984. package/src/composite/utils.ts +121 -0
  985. package/src/dialog/dialog-backdrop.tsx +71 -0
  986. package/src/dialog/dialog-context.tsx +43 -0
  987. package/src/dialog/dialog-description.tsx +86 -0
  988. package/src/dialog/dialog-disclosure.tsx +84 -0
  989. package/src/dialog/dialog-dismiss.tsx +113 -0
  990. package/src/dialog/dialog-heading.tsx +88 -0
  991. package/src/dialog/dialog-provider.tsx +28 -0
  992. package/src/dialog/dialog-store.ts +51 -0
  993. package/src/dialog/dialog.tsx +866 -0
  994. package/src/dialog/utils/disable-accessibility-tree-outside.ts +30 -0
  995. package/src/dialog/utils/disable-tree.ts +81 -0
  996. package/src/dialog/utils/is-backdrop.ts +12 -0
  997. package/src/dialog/utils/is-focus-trap.ts +11 -0
  998. package/src/dialog/utils/mark-tree-outside.ts +67 -0
  999. package/src/dialog/utils/orchestrate.ts +123 -0
  1000. package/src/dialog/utils/prepend-hidden-dismiss.ts +35 -0
  1001. package/src/dialog/utils/supports-inert.ts +5 -0
  1002. package/src/dialog/utils/use-hide-on-interact-outside.ts +181 -0
  1003. package/src/dialog/utils/use-nested-dialogs.tsx +55 -0
  1004. package/src/dialog/utils/use-prevent-body-scroll.ts +86 -0
  1005. package/src/dialog/utils/use-previous-mouse-down-ref.ts +19 -0
  1006. package/src/dialog/utils/use-root-dialog.ts +49 -0
  1007. package/src/dialog/utils/walk-tree-outside.ts +85 -0
  1008. package/src/disclosure/disclosure-content.tsx +344 -0
  1009. package/src/disclosure/disclosure-context.tsx +27 -0
  1010. package/src/disclosure/disclosure-provider.tsx +29 -0
  1011. package/src/disclosure/disclosure-store.ts +85 -0
  1012. package/src/disclosure/disclosure.tsx +144 -0
  1013. package/src/focus-trap/focus-trap-region.tsx +112 -0
  1014. package/src/focus-trap/focus-trap.tsx +60 -0
  1015. package/src/focusable/focusable-container.tsx +75 -0
  1016. package/src/focusable/focusable-context.tsx +3 -0
  1017. package/src/focusable/focusable.tsx +559 -0
  1018. package/src/form/form-checkbox.tsx +106 -0
  1019. package/src/form/form-context.tsx +34 -0
  1020. package/src/form/form-control.tsx +227 -0
  1021. package/src/form/form-description.tsx +142 -0
  1022. package/src/form/form-error.tsx +156 -0
  1023. package/src/form/form-field.tsx +94 -0
  1024. package/src/form/form-group-label.tsx +79 -0
  1025. package/src/form/form-group.tsx +79 -0
  1026. package/src/form/form-input.tsx +104 -0
  1027. package/src/form/form-label.tsx +192 -0
  1028. package/src/form/form-provider.tsx +49 -0
  1029. package/src/form/form-push.tsx +200 -0
  1030. package/src/form/form-radio-group.tsx +93 -0
  1031. package/src/form/form-radio.tsx +122 -0
  1032. package/src/form/form-remove.tsx +198 -0
  1033. package/src/form/form-reset.tsx +85 -0
  1034. package/src/form/form-store.ts +195 -0
  1035. package/src/form/form-submit.tsx +93 -0
  1036. package/src/form/form.tsx +249 -0
  1037. package/src/group/group-label-context.tsx +6 -0
  1038. package/src/group/group-label.tsx +75 -0
  1039. package/src/group/group.tsx +69 -0
  1040. package/src/heading/heading-context.tsx +4 -0
  1041. package/src/heading/heading-level.tsx +42 -0
  1042. package/src/heading/heading.tsx +81 -0
  1043. package/src/heading/utils.ts +1 -0
  1044. package/src/hovercard/hovercard-anchor.tsx +195 -0
  1045. package/src/hovercard/hovercard-arrow.tsx +74 -0
  1046. package/src/hovercard/hovercard-context.tsx +34 -0
  1047. package/src/hovercard/hovercard-description.tsx +69 -0
  1048. package/src/hovercard/hovercard-disclosure.tsx +196 -0
  1049. package/src/hovercard/hovercard-dismiss.tsx +70 -0
  1050. package/src/hovercard/hovercard-heading.tsx +68 -0
  1051. package/src/hovercard/hovercard-provider.tsx +29 -0
  1052. package/src/hovercard/hovercard-store.ts +58 -0
  1053. package/src/hovercard/hovercard.tsx +445 -0
  1054. package/src/hovercard/utils/__tests__/polygon-test.ts +66 -0
  1055. package/src/hovercard/utils/debug-polygon.ts +37 -0
  1056. package/src/hovercard/utils/polygon.ts +96 -0
  1057. package/src/index.ts +1 -0
  1058. package/src/menu/menu-arrow.tsx +69 -0
  1059. package/src/menu/menu-bar-provider.tsx +44 -0
  1060. package/src/menu/menu-bar-store.ts +54 -0
  1061. package/src/menu/menu-bar.tsx +84 -0
  1062. package/src/menu/menu-button-arrow.tsx +85 -0
  1063. package/src/menu/menu-button.tsx +338 -0
  1064. package/src/menu/menu-context.tsx +76 -0
  1065. package/src/menu/menu-description.tsx +67 -0
  1066. package/src/menu/menu-dismiss.tsx +69 -0
  1067. package/src/menu/menu-group-label.tsx +72 -0
  1068. package/src/menu/menu-group.tsx +76 -0
  1069. package/src/menu/menu-heading.tsx +67 -0
  1070. package/src/menu/menu-item-check.tsx +79 -0
  1071. package/src/menu/menu-item-checkbox.tsx +227 -0
  1072. package/src/menu/menu-item-radio.tsx +198 -0
  1073. package/src/menu/menu-item.tsx +223 -0
  1074. package/src/menu/menu-list.tsx +230 -0
  1075. package/src/menu/menu-provider.tsx +42 -0
  1076. package/src/menu/menu-separator.tsx +79 -0
  1077. package/src/menu/menu-store.ts +155 -0
  1078. package/src/menu/menu.tsx +274 -0
  1079. package/src/menubar/menubar-context.tsx +39 -0
  1080. package/src/menubar/menubar-provider.tsx +43 -0
  1081. package/src/menubar/menubar-store.ts +48 -0
  1082. package/src/menubar/menubar.tsx +145 -0
  1083. package/src/popover/popover-anchor.tsx +74 -0
  1084. package/src/popover/popover-arrow-path.ts +21 -0
  1085. package/src/popover/popover-arrow.tsx +228 -0
  1086. package/src/popover/popover-context.tsx +34 -0
  1087. package/src/popover/popover-description.tsx +69 -0
  1088. package/src/popover/popover-disclosure-arrow.tsx +135 -0
  1089. package/src/popover/popover-disclosure.tsx +101 -0
  1090. package/src/popover/popover-dismiss.tsx +70 -0
  1091. package/src/popover/popover-heading.tsx +68 -0
  1092. package/src/popover/popover-provider.tsx +29 -0
  1093. package/src/popover/popover-store.ts +53 -0
  1094. package/src/popover/popover.tsx +649 -0
  1095. package/src/portal/portal-context.tsx +19 -0
  1096. package/src/portal/portal.tsx +493 -0
  1097. package/src/radio/radio-context.tsx +34 -0
  1098. package/src/radio/radio-group.tsx +103 -0
  1099. package/src/radio/radio-provider.tsx +29 -0
  1100. package/src/radio/radio-store.ts +64 -0
  1101. package/src/radio/radio.tsx +242 -0
  1102. package/src/role/role.tsx +88 -0
  1103. package/src/select/select-arrow.tsx +80 -0
  1104. package/src/select/select-context.tsx +46 -0
  1105. package/src/select/select-dismiss.tsx +79 -0
  1106. package/src/select/select-group-label.tsx +78 -0
  1107. package/src/select/select-group.tsx +79 -0
  1108. package/src/select/select-heading.tsx +98 -0
  1109. package/src/select/select-item-check.tsx +80 -0
  1110. package/src/select/select-item-offscreen.tsx +59 -0
  1111. package/src/select/select-item.tsx +294 -0
  1112. package/src/select/select-label.tsx +117 -0
  1113. package/src/select/select-list.tsx +251 -0
  1114. package/src/select/select-popover.tsx +67 -0
  1115. package/src/select/select-provider.tsx +45 -0
  1116. package/src/select/select-renderer.tsx +160 -0
  1117. package/src/select/select-row.tsx +97 -0
  1118. package/src/select/select-separator.tsx +80 -0
  1119. package/src/select/select-store.ts +139 -0
  1120. package/src/select/select-value.tsx +108 -0
  1121. package/src/select/select.tsx +371 -0
  1122. package/src/separator/separator.tsx +54 -0
  1123. package/src/store.ts +1 -0
  1124. package/src/tab/tab-context.tsx +34 -0
  1125. package/src/tab/tab-list.tsx +120 -0
  1126. package/src/tab/tab-panel.tsx +314 -0
  1127. package/src/tab/tab-provider.tsx +30 -0
  1128. package/src/tab/tab-store.ts +124 -0
  1129. package/src/tab/tab.tsx +208 -0
  1130. package/src/tag/tag-context.tsx +40 -0
  1131. package/src/tag/tag-input.tsx +321 -0
  1132. package/src/tag/tag-list-label.tsx +102 -0
  1133. package/src/tag/tag-list.tsx +210 -0
  1134. package/src/tag/tag-provider.tsx +38 -0
  1135. package/src/tag/tag-remove.tsx +174 -0
  1136. package/src/tag/tag-store.ts +72 -0
  1137. package/src/tag/tag-value.tsx +63 -0
  1138. package/src/tag/tag-values.tsx +74 -0
  1139. package/src/tag/tag.tsx +199 -0
  1140. package/src/tag/utils.ts +12 -0
  1141. package/src/toolbar/toolbar-container.tsx +67 -0
  1142. package/src/toolbar/toolbar-context.tsx +34 -0
  1143. package/src/toolbar/toolbar-input.tsx +64 -0
  1144. package/src/toolbar/toolbar-item.tsx +72 -0
  1145. package/src/toolbar/toolbar-provider.tsx +32 -0
  1146. package/src/toolbar/toolbar-separator.tsx +71 -0
  1147. package/src/toolbar/toolbar-store.ts +52 -0
  1148. package/src/toolbar/toolbar.tsx +119 -0
  1149. package/src/tooltip/tooltip-anchor.tsx +210 -0
  1150. package/src/tooltip/tooltip-arrow.tsx +84 -0
  1151. package/src/tooltip/tooltip-context.tsx +34 -0
  1152. package/src/tooltip/tooltip-provider.tsx +29 -0
  1153. package/src/tooltip/tooltip-store.ts +53 -0
  1154. package/src/tooltip/tooltip.tsx +153 -0
  1155. package/src/visually-hidden/visually-hidden.tsx +67 -0
@@ -0,0 +1,900 @@
1
+ import { useStoreState } from "@ariakit/react-store";
2
+ import {
3
+ useBooleanEvent,
4
+ useEvent,
5
+ useForceUpdate,
6
+ useId,
7
+ useMergeRefs,
8
+ useSafeLayoutEffect,
9
+ useUpdateEffect,
10
+ useUpdateLayoutEffect,
11
+ createElement,
12
+ createHook,
13
+ forwardRef,
14
+ } from "@ariakit/react-utils";
15
+ import type { Props } from "@ariakit/react-utils";
16
+ import { sync } from "@ariakit/store";
17
+ import {
18
+ getPopupRole,
19
+ getScrollingElement,
20
+ getTextboxSelection,
21
+ setSelectionRange,
22
+ isFocusEventOutside,
23
+ queueBeforeEvent,
24
+ hasFocus,
25
+ invariant,
26
+ isFalsyBooleanCallback,
27
+ noop,
28
+ normalizeString,
29
+ } from "@ariakit/utils";
30
+ import type { BooleanOrCallback, StringWithValue } from "@ariakit/utils";
31
+ import type {
32
+ AriaAttributes,
33
+ ChangeEvent,
34
+ CompositionEvent,
35
+ ElementType,
36
+ MouseEvent,
37
+ FocusEvent as ReactFocusEvent,
38
+ KeyboardEvent as ReactKeyboardEvent,
39
+ SyntheticEvent,
40
+ } from "react";
41
+ import { useEffect, useMemo, useRef, useState } from "react";
42
+ import type { CompositeOptions } from "../composite/composite.tsx";
43
+ import { useComposite } from "../composite/composite.tsx";
44
+ import type { PopoverAnchorOptions } from "../popover/popover-anchor.tsx";
45
+ import { usePopoverAnchor } from "../popover/popover-anchor.tsx";
46
+ import { useComboboxProviderContext } from "./combobox-context.tsx";
47
+ import type {
48
+ ComboboxStore,
49
+ ComboboxStoreSelectedValue,
50
+ ComboboxStoreState,
51
+ } from "./combobox-store.ts";
52
+
53
+ const TagName = "input" satisfies ElementType;
54
+ type TagName = typeof TagName;
55
+ type HTMLType = HTMLElementTagNameMap[TagName];
56
+
57
+ function isFirstItemAutoSelected(
58
+ items: ComboboxStoreState["items"],
59
+ activeValue: ComboboxStoreState["activeValue"],
60
+ autoSelect: ComboboxProps["autoSelect"],
61
+ ) {
62
+ if (!autoSelect) return false;
63
+ const firstItem = items.find((item) => !item.disabled && item.value);
64
+ return firstItem?.value === activeValue;
65
+ }
66
+
67
+ function hasCompletionString(value?: string, activeValue?: string) {
68
+ if (!activeValue) return false;
69
+ if (value == null) return false;
70
+ value = normalizeString(value);
71
+ return (
72
+ activeValue.length > value.length &&
73
+ activeValue.toLowerCase().indexOf(value.toLowerCase()) === 0
74
+ );
75
+ }
76
+
77
+ function isInputEvent(event: Event): event is InputEvent {
78
+ return event.type === "input";
79
+ }
80
+
81
+ function isAriaAutoCompleteValue(
82
+ value: string,
83
+ ): value is Required<AriaAttributes>["aria-autocomplete"] {
84
+ return (
85
+ value === "inline" ||
86
+ value === "list" ||
87
+ value === "both" ||
88
+ value === "none"
89
+ );
90
+ }
91
+
92
+ function getDefaultAutoSelectId(items: ComboboxStoreState["items"]) {
93
+ const item = items.find((item) => {
94
+ if (item.disabled) return false;
95
+ // When rendering tabs in a combobox widget, we ignore them and auto select
96
+ // the first item that's not a tab instead.
97
+ return item.element?.getAttribute("role") !== "tab";
98
+ });
99
+ return item?.id;
100
+ }
101
+
102
+ /**
103
+ * Returns props to create a `Combobox` component.
104
+ * @see https://ariakit.com/components/combobox
105
+ * @example
106
+ * ```jsx
107
+ * const store = useComboboxStore();
108
+ * const props = useCombobox({ store });
109
+ * <Role {...props} />
110
+ * <ComboboxPopover store={store}>
111
+ * <ComboboxItem value="Apple" />
112
+ * <ComboboxItem value="Banana" />
113
+ * <ComboboxItem value="Orange" />
114
+ * </ComboboxPopover>
115
+ * ```
116
+ */
117
+ export const useCombobox = createHook<TagName, ComboboxOptions>(
118
+ function useCombobox({
119
+ store,
120
+ focusable = true,
121
+ autoSelect: autoSelectProp = false,
122
+ getAutoSelectId,
123
+ setValueOnChange,
124
+ showMinLength = 0,
125
+ showOnChange,
126
+ showOnMouseDown,
127
+ showOnClick = showOnMouseDown,
128
+ showOnKeyDown,
129
+ showOnKeyPress = showOnKeyDown,
130
+ blurActiveItemOnClick,
131
+ setValueOnClick = true,
132
+ moveOnKeyPress = true,
133
+ autoComplete = "list",
134
+ ...props
135
+ }) {
136
+ const context = useComboboxProviderContext();
137
+ store = store || context;
138
+
139
+ invariant(
140
+ store,
141
+ process.env.NODE_ENV !== "production" &&
142
+ "Combobox must receive a `store` prop or be wrapped in a ComboboxProvider component.",
143
+ );
144
+
145
+ const ref = useRef<HTMLType>(null);
146
+ const [valueUpdated, forceValueUpdate] = useForceUpdate();
147
+ const canAutoSelectRef = useRef(false);
148
+ const composingRef = useRef(false);
149
+
150
+ // We can only allow auto select when the combobox focus is handled via the
151
+ // aria-activedescendant attribute. Othwerwise, the focus would move to the
152
+ // first item on every keypress.
153
+ const autoSelect = useStoreState(
154
+ store,
155
+ (state) => state.virtualFocus && autoSelectProp,
156
+ );
157
+
158
+ const inline = autoComplete === "inline" || autoComplete === "both";
159
+ // The inline autocomplete should only happen in certain circumstances. We
160
+ // control this state here.
161
+ const [canInline, setCanInline] = useState(inline);
162
+
163
+ // If the inline autocomplete is enabled in a update, we need to update the
164
+ // canInline state to reflect this. TODO: Try derived state.
165
+ useUpdateLayoutEffect(() => {
166
+ if (!inline) return;
167
+ setCanInline(true);
168
+ }, [inline]);
169
+
170
+ const storeValue = useStoreState(store, "value");
171
+
172
+ // Keep track of the previous selected values so we can set the
173
+ // inlineActiveValue below only when the current activeValue isn't already
174
+ // selected and isn't one of the previously selected values. See
175
+ // tag-combobox test named "deselecting a tag should not highlight the input
176
+ // text if it is not the first combobox item".
177
+ const prevSelectedValueRef = useRef<ComboboxStoreSelectedValue>(undefined);
178
+ useEffect(() => {
179
+ return sync(store, ["selectedValue", "activeId"], (_, prev) => {
180
+ prevSelectedValueRef.current = prev.selectedValue;
181
+ });
182
+ }, [store]);
183
+
184
+ const inlineActiveValue = useStoreState(store, (state) => {
185
+ if (!inline) return;
186
+ if (!canInline) return;
187
+ // It doesn't make sense to inline the active value if it's already
188
+ // selected or just got deselected. Inlining the value typically implies
189
+ // an addition, but if the value is already selected, the action actually
190
+ // becomes a deletion. If the value was just deselected, pressing Enter
191
+ // again would reselect it, but it's not the usual path, so we also take
192
+ // into account the previously selected values. See tag-combobox test
193
+ // named "deselecting a tag should not highlight the input text if it is
194
+ // not the first combobox item".
195
+ if (state.activeValue && Array.isArray(state.selectedValue)) {
196
+ if (state.selectedValue.includes(state.activeValue)) return;
197
+ if (prevSelectedValueRef.current?.includes(state.activeValue)) return;
198
+ }
199
+ return state.activeValue;
200
+ });
201
+
202
+ const items = useStoreState(store, "renderedItems");
203
+ const open = useStoreState(store, "open");
204
+ const contentElement = useStoreState(store, "contentElement");
205
+
206
+ // The current input value may differ from state.value when
207
+ // autoComplete is either "both" or "inline", in which case it will be
208
+ // the active item value or a combination of the input value and the active
209
+ // item value if it's the first item and it's been auto selected. This will
210
+ // only affect the element's value, not the combobox state.
211
+ const value = useMemo(() => {
212
+ if (!inline) return storeValue;
213
+ if (!canInline) return storeValue;
214
+ const firstItemAutoSelected = isFirstItemAutoSelected(
215
+ items,
216
+ inlineActiveValue,
217
+ autoSelect,
218
+ );
219
+ if (firstItemAutoSelected) {
220
+ // If the first item is auto selected, we should append the completion
221
+ // string to the end of the value. This will be highlited in the effect
222
+ // below.
223
+ if (hasCompletionString(storeValue, inlineActiveValue)) {
224
+ const slice = inlineActiveValue?.slice(storeValue.length) || "";
225
+ return storeValue + slice;
226
+ }
227
+ return storeValue;
228
+ }
229
+ return inlineActiveValue || storeValue;
230
+ }, [inline, canInline, items, inlineActiveValue, autoSelect, storeValue]);
231
+
232
+ // Listen to the combobox-item-move event that's dispacthed the ComboboxItem
233
+ // component so we can enable the inline autocomplete when the user moves
234
+ // the focus to an item using the keyboard.
235
+ useEffect(() => {
236
+ const element = ref.current;
237
+ if (!element) return;
238
+ const onCompositeItemMove = () => setCanInline(true);
239
+ element.addEventListener("combobox-item-move", onCompositeItemMove);
240
+ return () => {
241
+ element.removeEventListener("combobox-item-move", onCompositeItemMove);
242
+ };
243
+ }, []);
244
+
245
+ // Highlights the completion string
246
+ useEffect(() => {
247
+ if (!inline) return;
248
+ if (!canInline) return;
249
+ if (!inlineActiveValue) return;
250
+ const firstItemAutoSelected = isFirstItemAutoSelected(
251
+ items,
252
+ inlineActiveValue,
253
+ autoSelect,
254
+ );
255
+ if (!firstItemAutoSelected) return;
256
+ if (!hasCompletionString(storeValue, inlineActiveValue)) return;
257
+ let cleanup = noop;
258
+ // For some reason, this setSelectionRange may run before the value is
259
+ // updated in the DOM. We're using a microtask to make sure it runs after
260
+ // the value is updated so we don't lose the selection. See combobox-group
261
+ // test-browser file.
262
+ queueMicrotask(() => {
263
+ const element = ref.current;
264
+ if (!element) return;
265
+ const { start: prevStart, end: prevEnd } = getTextboxSelection(element);
266
+ const nextStart = storeValue.length;
267
+ const nextEnd = inlineActiveValue.length;
268
+ setSelectionRange(element, nextStart, nextEnd);
269
+ cleanup = () => {
270
+ // This effect may run after the value is updated and the completion
271
+ // string is highlighted, for example, when the items are updated
272
+ // asynchronously or in a React transition in a multi-selectable
273
+ // combobox. In this case, we must restore the previous selection
274
+ // range if it hasn't changed. TODO: Test this.
275
+ if (!hasFocus(element)) return;
276
+ const { start, end } = getTextboxSelection(element);
277
+ if (start !== nextStart) return;
278
+ if (end !== nextEnd) return;
279
+ setSelectionRange(element, prevStart, prevEnd);
280
+ };
281
+ });
282
+ return () => cleanup();
283
+ }, [
284
+ valueUpdated,
285
+ inline,
286
+ canInline,
287
+ inlineActiveValue,
288
+ items,
289
+ autoSelect,
290
+ storeValue,
291
+ ]);
292
+
293
+ const scrollingElementRef = useRef<Element | null>(null);
294
+ const getAutoSelectIdProp = useEvent(getAutoSelectId);
295
+ const autoSelectIdRef = useRef<string | null | undefined>(null);
296
+ const userScrolledRef = useRef(false);
297
+ const isAutoScrollingRef = useRef(false);
298
+
299
+ // Disable the autoSelect behavior when the user scrolls the combobox
300
+ // content. This prevents the focus from moving to the first item on
301
+ // virtualized and infinite lists.
302
+ useEffect(() => {
303
+ if (!open) return;
304
+ if (!contentElement) return;
305
+ const scrollingElement = getScrollingElement(contentElement);
306
+ if (!scrollingElement) return;
307
+ scrollingElementRef.current = scrollingElement;
308
+ const onUserScroll = () => {
309
+ // A wheel event is always initiated by the user, so we can disable the
310
+ // autoSelect behavior without any additional checks.
311
+ canAutoSelectRef.current = false;
312
+ userScrolledRef.current = true;
313
+ };
314
+ const onScroll = () => {
315
+ // Mark any non-programmatic scroll as user-initiated so we don't
316
+ // reset the scroll position when new items load (e.g., infinite
317
+ // scroll, scrollbar drag). Programmatic scrolls from scrollIntoView
318
+ // set isAutoScrollingRef to avoid false positives.
319
+ if (!isAutoScrollingRef.current) {
320
+ userScrolledRef.current = true;
321
+ }
322
+ if (!store) return;
323
+ if (!canAutoSelectRef.current) return;
324
+ // We won't disable the autoSelect behavior if the autoSelect item is
325
+ // still focused.
326
+ const { activeId } = store.getState();
327
+ if (activeId === null) return;
328
+ if (activeId === autoSelectIdRef.current) return;
329
+ canAutoSelectRef.current = false;
330
+ };
331
+ const options = { passive: true, capture: true };
332
+ scrollingElement.addEventListener("wheel", onUserScroll, options);
333
+ scrollingElement.addEventListener("touchmove", onUserScroll, options);
334
+ scrollingElement.addEventListener("scroll", onScroll, options);
335
+ return () => {
336
+ scrollingElement.removeEventListener("wheel", onUserScroll, true);
337
+ scrollingElement.removeEventListener("touchmove", onUserScroll, true);
338
+ scrollingElement.removeEventListener("scroll", onScroll, true);
339
+ };
340
+ }, [open, contentElement, store]);
341
+
342
+ // Reset the user-scrolled flag and set the changed flag to true whenever
343
+ // the combobox value changes and is not empty. We're doing this here in
344
+ // addition to in the onChange handler because the value may change
345
+ // programmatically.
346
+ useSafeLayoutEffect(() => {
347
+ userScrolledRef.current = false;
348
+ if (!storeValue) return;
349
+ if (composingRef.current) return;
350
+ canAutoSelectRef.current = true;
351
+ }, [storeValue]);
352
+
353
+ // Reset the changed flag when the popover is not open so we don't try to
354
+ // auto select an item after the popover closes (for example, in the middle
355
+ // of an animation).
356
+ useSafeLayoutEffect(() => {
357
+ if (autoSelect !== "always" && open) return;
358
+ canAutoSelectRef.current = open;
359
+ }, [autoSelect, open]);
360
+
361
+ const resetValueOnSelect = useStoreState(store, "resetValueOnSelect");
362
+
363
+ // Auto select the first item on type. This effect runs both when the value
364
+ // changes and when the items change so we also catch async items.
365
+ useUpdateEffect(() => {
366
+ const canAutoSelect = canAutoSelectRef.current;
367
+ if (!store) return;
368
+ if (!open) return;
369
+ if (!canAutoSelect && (!resetValueOnSelect || userScrolledRef.current))
370
+ return;
371
+ const { baseElement, contentElement, activeId } = store.getState();
372
+ if (baseElement && !hasFocus(baseElement)) return;
373
+ // The data-placing attribute is an internal state added by the Popover
374
+ // component. We can observe it to know when the popover is done placing
375
+ // itself. This is to prevent the focus from moving to the first item
376
+ // while the popover is still calculating its position, which could cause
377
+ // a scroll jump. See combobox-group test-browser file.
378
+ if (contentElement?.hasAttribute("data-placing")) {
379
+ const observer = new MutationObserver(forceValueUpdate);
380
+ observer.observe(contentElement, { attributeFilter: ["data-placing"] });
381
+ return () => observer.disconnect();
382
+ }
383
+ if (autoSelect && canAutoSelect) {
384
+ const userAutoSelectId = getAutoSelectIdProp(items);
385
+ const autoSelectId =
386
+ userAutoSelectId !== undefined
387
+ ? userAutoSelectId
388
+ : (getDefaultAutoSelectId(items) ?? store.first());
389
+ autoSelectIdRef.current = autoSelectId;
390
+ // If there's no first item (that is, there are no items or all items
391
+ // are disabled), we should move the focus to the input (null),
392
+ // otherwise, with async items, the activeValue won't be reset. TODO:
393
+ // Test this.
394
+ store.move(autoSelectId ?? null);
395
+ } else {
396
+ // Reset the scroll position to the active item when an item is selected
397
+ // and the combobox value is reset, which might move the active item
398
+ // offscreen. Otherwise, if no item is selected, reset to the first
399
+ // item, such as when `autoSelect` is false.
400
+ const element = store.item(activeId || store.first())?.element;
401
+ if (element && "scrollIntoView" in element) {
402
+ isAutoScrollingRef.current = true;
403
+ element.scrollIntoView({ block: "nearest", inline: "nearest" });
404
+ // Clear after the browser dispatches the scroll event. Scroll
405
+ // events fire during the "scroll steps" of the rendering update,
406
+ // which run before requestAnimationFrame callbacks.
407
+ requestAnimationFrame(() => {
408
+ isAutoScrollingRef.current = false;
409
+ });
410
+ }
411
+ }
412
+ return;
413
+ }, [
414
+ store,
415
+ open,
416
+ valueUpdated,
417
+ storeValue,
418
+ autoSelect,
419
+ resetValueOnSelect,
420
+ getAutoSelectIdProp,
421
+ items,
422
+ ]);
423
+
424
+ // If it has inline auto completion, set the store value when the combobox
425
+ // input or the combobox list lose focus.
426
+ useEffect(() => {
427
+ if (!inline) return;
428
+ const combobox = ref.current;
429
+ if (!combobox) return;
430
+ const elements = [combobox, contentElement].filter(
431
+ (value): value is HTMLElement => !!value,
432
+ );
433
+ const onBlur = (event: FocusEvent) => {
434
+ if (elements.every((el) => isFocusEventOutside(event, el))) {
435
+ store?.setValue(value);
436
+ }
437
+ };
438
+ for (const element of elements) {
439
+ element.addEventListener("focusout", onBlur);
440
+ }
441
+ return () => {
442
+ for (const element of elements) {
443
+ element.removeEventListener("focusout", onBlur);
444
+ }
445
+ };
446
+ }, [inline, contentElement, store, value]);
447
+
448
+ const canShow = (event: SyntheticEvent) => {
449
+ const currentTarget = event.currentTarget as HTMLType;
450
+ return currentTarget.value.length >= showMinLength;
451
+ };
452
+
453
+ const onChangeProp = props.onChange;
454
+ const showOnChangeProp = useBooleanEvent(showOnChange ?? canShow);
455
+ const setValueOnChangeProp = useBooleanEvent(
456
+ // If the combobox is combined with tags, the value will be set by the tag
457
+ // input component.
458
+ setValueOnChange ?? !store.tag,
459
+ );
460
+
461
+ const onChange = useEvent((event: ChangeEvent<HTMLType>) => {
462
+ onChangeProp?.(event);
463
+ if (event.defaultPrevented) return;
464
+ if (!store) return;
465
+ const currentTarget = event.currentTarget;
466
+ const { value, selectionStart, selectionEnd } = currentTarget;
467
+ const nativeEvent = event.nativeEvent;
468
+ canAutoSelectRef.current = true;
469
+ if (isInputEvent(nativeEvent)) {
470
+ if (nativeEvent.isComposing) {
471
+ canAutoSelectRef.current = false;
472
+ composingRef.current = true;
473
+ }
474
+ if (inline) {
475
+ const textInserted =
476
+ nativeEvent.inputType === "insertText" ||
477
+ nativeEvent.inputType === "insertCompositionText";
478
+ const caretAtEnd = selectionStart === value.length;
479
+ setCanInline(textInserted && caretAtEnd);
480
+ }
481
+ }
482
+ if (setValueOnChangeProp(event)) {
483
+ const isSameValue = value === store.getState().value;
484
+ store.setValue(value);
485
+ // When the value is not set synchronously, the selection range may be
486
+ // lost. See combobox-group "keep caret position when typing" test.
487
+ queueMicrotask(() => {
488
+ setSelectionRange(currentTarget, selectionStart, selectionEnd);
489
+ });
490
+ if (inline && autoSelect && isSameValue) {
491
+ // The store.setValue(event.target.value) above may not trigger a
492
+ // state update. For example, say the first item starts with "t". The
493
+ // user starts typing "t", then the first item is auto selected and
494
+ // the inline completion string is appended and highlited. The user
495
+ // then selects all the text and type "t" again. This change will
496
+ // produce the same value as the store value, and therefore the state
497
+ // update will not trigger a re-render. We need to force a re-render
498
+ // here so the inline completion effect will be fired.
499
+ forceValueUpdate();
500
+ }
501
+ }
502
+ if (showOnChangeProp(event)) {
503
+ store.show();
504
+ }
505
+ if (!autoSelect || !canAutoSelectRef.current) {
506
+ // If autoSelect is not set or it's not an insertion of text, focus on
507
+ // the combobox input after changing the value.
508
+ store.setActiveId(null);
509
+ }
510
+ });
511
+
512
+ const onCompositionEndProp = props.onCompositionEnd;
513
+
514
+ // When dealing with composition text (for example, when the user is typing
515
+ // in accents or chinese characters), we need to set canAutoSelectRef to
516
+ // true when the composition ends. This is because the native input event
517
+ // that's passed to the change event above will not produce a consistent
518
+ // inputType value across browsers, so we can't rely on that there.
519
+ const onCompositionEnd = useEvent((event: CompositionEvent<HTMLType>) => {
520
+ canAutoSelectRef.current = true;
521
+ composingRef.current = false;
522
+ onCompositionEndProp?.(event);
523
+ if (event.defaultPrevented) return;
524
+ if (!autoSelect) return;
525
+ forceValueUpdate();
526
+ });
527
+
528
+ const onMouseDownProp = props.onMouseDown;
529
+ const blurActiveItemOnClickProp = useBooleanEvent(
530
+ blurActiveItemOnClick ?? (() => store.getState().includesBaseElement),
531
+ );
532
+ const setValueOnClickProp = useBooleanEvent(setValueOnClick);
533
+ const showOnClickProp = useBooleanEvent(showOnClick ?? canShow);
534
+
535
+ const onMouseDown = useEvent((event: MouseEvent<HTMLType>) => {
536
+ onMouseDownProp?.(event);
537
+ if (event.defaultPrevented) return;
538
+ if (event.button) return;
539
+ if (event.ctrlKey) return;
540
+ if (!store) return;
541
+ if (blurActiveItemOnClickProp(event)) {
542
+ store.setActiveId(null);
543
+ }
544
+ if (setValueOnClickProp(event)) {
545
+ store.setValue(value);
546
+ }
547
+ if (showOnClickProp(event)) {
548
+ queueBeforeEvent(event.currentTarget, "mouseup", store.show);
549
+ }
550
+ });
551
+
552
+ const onKeyDownProp = props.onKeyDown;
553
+ const showOnKeyPressProp = useBooleanEvent(showOnKeyPress ?? canShow);
554
+
555
+ const onKeyDown = useEvent((event: ReactKeyboardEvent<HTMLType>) => {
556
+ onKeyDownProp?.(event);
557
+ if (!event.repeat) {
558
+ // Run combobox-tabs and combobox-group (browser) tests.
559
+ canAutoSelectRef.current = false;
560
+ }
561
+ if (event.defaultPrevented) return;
562
+ if (!store) return;
563
+ const { open } = store.getState();
564
+ // When the popover is open, prevent Enter (with or without modifiers)
565
+ // from triggering the default behavior (submitting a parent form). If
566
+ // there's an active item, the keyboard event proxy on Composite will
567
+ // dispatch Enter to the item, which handles selection. If there's no
568
+ // active item (e.g., all items are filtered out, or activeId is stale
569
+ // after a React transition), Enter should be a no-op rather than
570
+ // submitting a form.
571
+ if (open && event.key === "Enter") {
572
+ event.preventDefault();
573
+ return;
574
+ }
575
+ if (event.ctrlKey) return;
576
+ if (event.altKey) return;
577
+ if (event.shiftKey) return;
578
+ if (event.metaKey) return;
579
+ if (open) return;
580
+ // Up and Down arrow keys should open the combobox popover.
581
+ if (event.key === "ArrowUp" || event.key === "ArrowDown") {
582
+ if (showOnKeyPressProp(event)) {
583
+ event.preventDefault();
584
+ store.show();
585
+ }
586
+ }
587
+ });
588
+
589
+ const onBlurProp = props.onBlur;
590
+
591
+ const onBlur = useEvent((event: ReactFocusEvent<HTMLType>) => {
592
+ // If we don't reset the canAutoSelectRef here, the combobox will keep the
593
+ // first item selected when the combobox loses focus and its value gets
594
+ // cleared. See combobox-cancel tests.
595
+ canAutoSelectRef.current = false;
596
+ onBlurProp?.(event);
597
+ if (event.defaultPrevented) return;
598
+ });
599
+
600
+ // This is necessary so other components like ComboboxCancel can reference
601
+ // the combobox input in their aria-controls attribute. It's also used by
602
+ // ComboboxLabel.
603
+ const id = useId(props.id);
604
+
605
+ const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete)
606
+ ? autoComplete
607
+ : undefined;
608
+
609
+ const isActiveItem = useStoreState(
610
+ store,
611
+ (state) => state.activeId === null,
612
+ );
613
+
614
+ props = {
615
+ role: "combobox",
616
+ "aria-autocomplete": ariaAutoComplete,
617
+ "aria-haspopup": getPopupRole(contentElement, "listbox"),
618
+ "aria-expanded": open,
619
+ "aria-controls": contentElement?.id,
620
+ "data-active-item": isActiveItem || undefined,
621
+ value,
622
+ ...props,
623
+ id,
624
+ ref: useMergeRefs(ref, props.ref),
625
+ onChange,
626
+ onCompositionEnd,
627
+ onMouseDown,
628
+ onKeyDown,
629
+ onBlur,
630
+ };
631
+
632
+ props = useComposite<TagName>({
633
+ store,
634
+ focusable,
635
+ ...props,
636
+ // Enable inline autocomplete when the user moves from the combobox input
637
+ // to an item.
638
+ moveOnKeyPress: (event) => {
639
+ if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false;
640
+ if (inline) setCanInline(true);
641
+ return true;
642
+ },
643
+ });
644
+
645
+ props = usePopoverAnchor<TagName>({ store, ...props });
646
+
647
+ return { autoComplete: "off", ...props };
648
+ },
649
+ );
650
+
651
+ /**
652
+ * Renders a combobox input element that can be used to filter a list of items.
653
+ * @see https://ariakit.com/components/combobox
654
+ * @example
655
+ * ```jsx {2}
656
+ * <ComboboxProvider>
657
+ * <Combobox />
658
+ * <ComboboxPopover>
659
+ * <ComboboxItem value="Apple" />
660
+ * <ComboboxItem value="Banana" />
661
+ * <ComboboxItem value="Orange" />
662
+ * </ComboboxPopover>
663
+ * </ComboboxProvider>
664
+ * ```
665
+ */
666
+ export const Combobox = forwardRef(function Combobox(props: ComboboxProps) {
667
+ const htmlProps = useCombobox(props);
668
+ return createElement(TagName, htmlProps);
669
+ });
670
+
671
+ export interface ComboboxOptions<T extends ElementType = TagName>
672
+ extends CompositeOptions<T>, PopoverAnchorOptions<T> {
673
+ /**
674
+ * Object returned by the
675
+ * [`useComboboxStore`](https://ariakit.com/reference/use-combobox-store)
676
+ * hook. If not provided, the closest
677
+ * [`ComboboxProvider`](https://ariakit.com/reference/combobox-provider)
678
+ * component's context will be used.
679
+ */
680
+ store?: ComboboxStore;
681
+ /**
682
+ * Determines if the first enabled item will be automatically focused when the
683
+ * combobox input value changes. If set to `true` or `"always"`, the exact
684
+ * behavior hinges on the value of the
685
+ * [`autoComplete`](https://ariakit.com/reference/combobox#autocomplete) prop:
686
+ * - If [`autoComplete`](https://ariakit.com/reference/combobox#autocomplete)
687
+ * is `both` or `inline`, the first enabled item is automatically focused as
688
+ * the user types in the input. The value gets appended with the completion
689
+ * string if it matches. The inline completion string will be highlighted
690
+ * and selected.
691
+ * - If [`autoComplete`](https://ariakit.com/reference/combobox#autocomplete)
692
+ * is `list` or `none`, the first enabled item is automatically focused as
693
+ * the user types in the input, but the input value is not appended with the
694
+ * item value.
695
+ *
696
+ * If set to `"always"`, the first enabled item is auto-highlighted when the
697
+ * combobox list opens, not just when the input value changes.
698
+ *
699
+ * To change which item gets auto-selected, use the
700
+ * [`getAutoSelectId`](https://ariakit.com/reference/combobox#getautoselectid)
701
+ * prop.
702
+ *
703
+ * Live examples:
704
+ * - [Command Menu with
705
+ * Tabs](https://ariakit.com/examples/dialog-combobox-tab-command-menu)
706
+ * - [ComboboxGroup](https://ariakit.com/examples/combobox-group)
707
+ * - [Combobox with links](https://ariakit.com/examples/combobox-links)
708
+ * - [Textarea with inline
709
+ * Combobox](https://ariakit.com/examples/combobox-textarea)
710
+ * - [Menu with Combobox](https://ariakit.com/examples/menu-combobox)
711
+ * - [Select with Combobox](https://ariakit.com/examples/select-combobox)
712
+ * @default false
713
+ */
714
+ autoSelect?: boolean | "always";
715
+ /**
716
+ * Function that takes the currently rendered items and returns the id of the
717
+ * item to be auto selected when the
718
+ * [`autoSelect`](https://ariakit.com/reference/combobox#autoselect) prop is
719
+ * `true`.
720
+ *
721
+ * By default, the first enabled item is auto selected. This function is handy
722
+ * if you prefer a different item to be auto selected. Returning `undefined`
723
+ * from this function will result in the default behavior.
724
+ * @example
725
+ * ```jsx
726
+ * <Combobox
727
+ * autoSelect
728
+ * getAutoSelectId={(items) => {
729
+ * // Auto select the first enabled item with a value
730
+ * const item = items.find((item) => {
731
+ * if (item.disabled) return false;
732
+ * if (!item.value) return false;
733
+ * return true;
734
+ * });
735
+ * return item?.id;
736
+ * }}
737
+ * />
738
+ * ```
739
+ */
740
+ getAutoSelectId?: (
741
+ renderedItems: ComboboxStoreState["renderedItems"],
742
+ ) => string | null | undefined;
743
+ /**
744
+ * Whether the items will be filtered based on
745
+ * [`value`](https://ariakit.com/reference/combobox-provider#value) and
746
+ * whether the input value will temporarily change based on the active item.
747
+ *
748
+ * This prop is based on the standard
749
+ * [`aria-autocomplete`](https://w3c.github.io/aria/#aria-autocomplete)
750
+ * attribute, accepting the same values:
751
+ * - `list` (default): indicates that the items will be dynamically rendered
752
+ * based on [`value`](https://ariakit.com/reference/combobox-provider#value)
753
+ * and the input value will _not_ change based on the active item. The
754
+ * filtering logic must be implemented by the consumer of this component.
755
+ * - `inline`: indicates that the items are static, that is, they won't be
756
+ * filtered, but the input value will temporarily change based on the active
757
+ * item. Ariakit will automatically provide the inline autocompletion
758
+ * behavior.
759
+ * - `both`: indicates that the items will be dynamically rendered based on
760
+ * [`value`](https://ariakit.com/reference/combobox-provider#value) and the
761
+ * input value will temporarily change based on the active item. The
762
+ * filtering logic must be implemented by the consumer of this component,
763
+ * whereas Ariakit will automatically provide the inline autocompletion
764
+ * behavior.
765
+ * - `none`: the items are static and the input value will _not_ change based
766
+ * on the active item.
767
+ *
768
+ * Live examples:
769
+ * - [ComboboxGroup](https://ariakit.com/examples/combobox-group)
770
+ * @default "list"
771
+ */
772
+ autoComplete?: StringWithValue<Required<AriaAttributes>["aria-autocomplete"]>;
773
+ /**
774
+ * Determines if the highlighted item should lose focus when the user clicks
775
+ * on the combobox input element. By default, this prop's value is set
776
+ * according to the
777
+ * [`includesBaseElement`](https://ariakit.com/reference/combobox-provider#includesbaseelement)
778
+ * value.
779
+ */
780
+ blurActiveItemOnClick?: BooleanOrCallback<MouseEvent<HTMLElement>>;
781
+ /**
782
+ * Specifies the minimum character count the input value should have before
783
+ * the [`ComboboxList`](https://ariakit.com/reference/combobox-list) or
784
+ * [`ComboboxPopover`](https://ariakit.com/reference/combobox-popover)
785
+ * components are displayed.
786
+ *
787
+ * The [`showOnChange`](https://ariakit.com/reference/combobox#showonchange),
788
+ * [`showOnClick`](https://ariakit.com/reference/combobox#showonclick), and
789
+ * [`showOnKeyPress`](https://ariakit.com/reference/combobox#showonkeypress)
790
+ * props allow you to tailor the behavior for each unique event.
791
+ * @default 0
792
+ * @example
793
+ * In the following example, the combobox list will be shown when the input
794
+ * value has at least one character. However, if the user presses the arrow
795
+ * keys, the list will be shown regardless of the input value length.
796
+ * ```jsx
797
+ * <Combobox showMinLength={1} showOnKeyPress />
798
+ * ```
799
+ */
800
+ showMinLength?: number;
801
+ /**
802
+ * Whether the [`ComboboxList`](https://ariakit.com/reference/combobox-list)
803
+ * or [`ComboboxPopover`](https://ariakit.com/reference/combobox-popover)
804
+ * components should be shown when the input value changes.
805
+ *
806
+ * Live examples:
807
+ * - [Textarea with inline
808
+ * Combobox](https://ariakit.com/examples/combobox-textarea)
809
+ * @default true
810
+ * @example
811
+ * ```jsx
812
+ * <Combobox showOnChange={(event) => event.target.value.length > 1} />
813
+ * ```
814
+ */
815
+ showOnChange?: BooleanOrCallback<ChangeEvent<HTMLElement>>;
816
+ /**
817
+ * Whether the [`ComboboxList`](https://ariakit.com/reference/combobox-list)
818
+ * or [`ComboboxPopover`](https://ariakit.com/reference/combobox-popover)
819
+ * components should be shown when the input is clicked.
820
+ * @deprecated Use
821
+ * [`showOnClick`](https://ariakit.com/reference/combobox#showonclick)
822
+ * instead.
823
+ * @default true
824
+ */
825
+ showOnMouseDown?: BooleanOrCallback<MouseEvent<HTMLElement>>;
826
+ /**
827
+ * Whether the [`ComboboxList`](https://ariakit.com/reference/combobox-list)
828
+ * or [`ComboboxPopover`](https://ariakit.com/reference/combobox-popover)
829
+ * components should be shown when the input is clicked.
830
+ *
831
+ * Live examples:
832
+ * - [Textarea with inline
833
+ * Combobox](https://ariakit.com/examples/combobox-textarea)
834
+ * @default true
835
+ * @example
836
+ * ```jsx
837
+ * <Combobox showOnClick={value.length > 1} />
838
+ * ```
839
+ */
840
+ showOnClick?: BooleanOrCallback<MouseEvent<HTMLElement>>;
841
+ /**
842
+ * Whether the [`ComboboxList`](https://ariakit.com/reference/combobox-list)
843
+ * or [`ComboboxPopover`](https://ariakit.com/reference/combobox-popover)
844
+ * components should be shown when the user presses the arrow up or down keys
845
+ * while focusing on the combobox input element.
846
+ * @deprecated Use
847
+ * [`showOnKeyPress`](https://ariakit.com/reference/combobox#showonkeypress)
848
+ * instead.
849
+ * @default true
850
+ */
851
+ showOnKeyDown?: BooleanOrCallback<ReactKeyboardEvent<HTMLElement>>;
852
+ /**
853
+ * Whether the [`ComboboxList`](https://ariakit.com/reference/combobox-list)
854
+ * or [`ComboboxPopover`](https://ariakit.com/reference/combobox-popover)
855
+ * components should be shown when the user presses the arrow up or down keys
856
+ * while focusing on the combobox input element.
857
+ *
858
+ * Live examples:
859
+ * - [Textarea with inline
860
+ * Combobox](https://ariakit.com/examples/combobox-textarea)
861
+ * @default true
862
+ * @example
863
+ * ```jsx
864
+ * <Combobox showOnKeyPress={value.length > 1} />
865
+ * ```
866
+ */
867
+ showOnKeyPress?: BooleanOrCallback<ReactKeyboardEvent<HTMLElement>>;
868
+ /**
869
+ * Whether the combobox
870
+ * [`value`](https://ariakit.com/reference/combobox-provider#value) state
871
+ * should be updated when the input value changes. This is useful if you want
872
+ * to customize how the store
873
+ * [`value`](https://ariakit.com/reference/combobox-provider#value) is updated
874
+ * based on the input element's value.
875
+ *
876
+ * Live examples:
877
+ * - [Textarea with inline
878
+ * Combobox](https://ariakit.com/examples/combobox-textarea)
879
+ * @default true
880
+ */
881
+ setValueOnChange?: BooleanOrCallback<ChangeEvent<HTMLElement>>;
882
+ /**
883
+ * Whether the combobox
884
+ * [`value`](https://ariakit.com/reference/combobox-provider#value) state
885
+ * should be updated when the combobox input element gets clicked. This
886
+ * usually only applies when
887
+ * [`autoComplete`](https://ariakit.com/reference/combobox#autocomplete) is
888
+ * `both` or `inline`, because the input value will temporarily change based
889
+ * on the active item and the store
890
+ * [`value`](https://ariakit.com/reference/combobox-provider#value) will not
891
+ * be updated until the user confirms the selection.
892
+ * @default true
893
+ */
894
+ setValueOnClick?: BooleanOrCallback<MouseEvent<HTMLElement>>;
895
+ }
896
+
897
+ export type ComboboxProps<T extends ElementType = TagName> = Props<
898
+ T,
899
+ ComboboxOptions<T>
900
+ >;