@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,273 @@
1
+ "use client";
2
+ import { useFocusable } from "../focusable/focusable.js";
3
+ import { CompositeContextProvider, useCompositeProviderContext } from "./composite-context.js";
4
+ import { findFirstEnabledItem, getEnabledItem, groupItemsByRows, isItem, silentlyFocused } from "./utils.js";
5
+ import { createElement, createHook, forwardRef, useBooleanEvent, useEvent, useMergeRefs, useSafeLayoutEffect, useTransactionState, useWrapElement } from "@ariakit/react-utils";
6
+ import { fireBlurEvent, fireKeyboardEvent, flatten2DArray, focusIntoView, getActiveElement, hasFocus, invariant, isSelfTarget, isTextField, reverseArray } from "@ariakit/utils";
7
+ import { useCallback, useEffect, useRef, useState } from "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+ import { useStoreState } from "@ariakit/react-store";
10
+ //#region src/composite/composite.tsx
11
+ const TagName = "div";
12
+ function isGrid(items) {
13
+ return items.some((item) => !!item.rowId);
14
+ }
15
+ function isPrintableKey(event) {
16
+ const target = event.target;
17
+ if (target && !isTextField(target)) return false;
18
+ return event.key.length === 1 && !event.ctrlKey && !event.metaKey;
19
+ }
20
+ function isModifierKey(event) {
21
+ return event.key === "Shift" || event.key === "Control" || event.key === "Alt" || event.key === "Meta";
22
+ }
23
+ function useKeyboardEventProxy(store, onKeyboardEvent, previousElementRef) {
24
+ return useEvent((event) => {
25
+ onKeyboardEvent?.(event);
26
+ if (event.defaultPrevented) return;
27
+ if (event.isPropagationStopped()) return;
28
+ if (!isSelfTarget(event)) return;
29
+ if (isModifierKey(event)) return;
30
+ if (isPrintableKey(event)) return;
31
+ const activeElement = getEnabledItem(store, store.getState().activeId)?.element;
32
+ if (!activeElement) return;
33
+ const { view, ...eventInit } = event;
34
+ if (activeElement !== previousElementRef?.current) activeElement.focus();
35
+ if (!fireKeyboardEvent(activeElement, event.type, eventInit)) event.preventDefault();
36
+ if (event.currentTarget.contains(activeElement)) event.stopPropagation();
37
+ });
38
+ }
39
+ function findFirstEnabledItemInTheLastRow(items) {
40
+ return findFirstEnabledItem(flatten2DArray(reverseArray(groupItemsByRows(items))));
41
+ }
42
+ function withBaseScrollPreserved(store, callback) {
43
+ const { virtualFocus, baseElement } = store.getState();
44
+ if (!virtualFocus || !baseElement || !isTextField(baseElement)) {
45
+ callback();
46
+ return;
47
+ }
48
+ const savedScrollLeft = baseElement.scrollLeft;
49
+ const savedScrollTop = baseElement.scrollTop;
50
+ callback();
51
+ baseElement.scrollLeft = savedScrollLeft;
52
+ baseElement.scrollTop = savedScrollTop;
53
+ }
54
+ function useScheduleFocus(store) {
55
+ const [scheduled, setScheduled] = useState(false);
56
+ const schedule = useCallback(() => setScheduled(true), []);
57
+ const activeItem = useStoreState(store, (state) => getEnabledItem(store, state.activeId));
58
+ useEffect(() => {
59
+ const activeElement = activeItem?.element;
60
+ if (!scheduled) return;
61
+ if (!activeElement) return;
62
+ setScheduled(false);
63
+ withBaseScrollPreserved(store, () => {
64
+ activeElement.focus({ preventScroll: true });
65
+ });
66
+ }, [
67
+ store,
68
+ activeItem,
69
+ scheduled
70
+ ]);
71
+ return schedule;
72
+ }
73
+ /**
74
+ * Returns props to create a `Composite` component.
75
+ * @see https://ariakit.com/components/composite
76
+ * @example
77
+ * ```jsx
78
+ * const store = useCompositeStore();
79
+ * const props = useComposite({ store });
80
+ * <Role {...props}>
81
+ * <CompositeItem>Item 1</CompositeItem>
82
+ * <CompositeItem>Item 2</CompositeItem>
83
+ * </Role>
84
+ * ```
85
+ */
86
+ const useComposite = createHook(function useComposite({ store, composite = true, focusOnMove = composite, moveOnKeyPress = true, ...props }) {
87
+ const context = useCompositeProviderContext();
88
+ store = store || context;
89
+ invariant(store, "Composite must receive a `store` prop or be wrapped in a CompositeProvider component.");
90
+ const ref = useRef(null);
91
+ const previousElementRef = useRef(null);
92
+ const scheduleFocus = useScheduleFocus(store);
93
+ const moves = useStoreState(store, "moves");
94
+ const [, setBaseElement] = useTransactionState(composite ? store.setBaseElement : null);
95
+ useEffect(() => {
96
+ if (!store) return;
97
+ if (!moves) return;
98
+ if (!composite) return;
99
+ if (!focusOnMove) return;
100
+ const { activeId } = store.getState();
101
+ const itemElement = getEnabledItem(store, activeId)?.element;
102
+ if (!itemElement) return;
103
+ withBaseScrollPreserved(store, () => focusIntoView(itemElement));
104
+ }, [
105
+ store,
106
+ moves,
107
+ composite,
108
+ focusOnMove
109
+ ]);
110
+ useSafeLayoutEffect(() => {
111
+ if (!store) return;
112
+ if (!moves) return;
113
+ if (!composite) return;
114
+ const { baseElement, activeId } = store.getState();
115
+ if (!(activeId === null)) return;
116
+ if (!baseElement) return;
117
+ const previousElement = previousElementRef.current;
118
+ previousElementRef.current = null;
119
+ if (previousElement) fireBlurEvent(previousElement, { relatedTarget: baseElement });
120
+ if (!hasFocus(baseElement)) baseElement.focus();
121
+ }, [
122
+ store,
123
+ moves,
124
+ composite
125
+ ]);
126
+ const activeId = useStoreState(store, "activeId");
127
+ const virtualFocus = useStoreState(store, "virtualFocus");
128
+ useSafeLayoutEffect(() => {
129
+ if (!store) return;
130
+ if (!composite) return;
131
+ if (!virtualFocus) return;
132
+ const previousElement = previousElementRef.current;
133
+ previousElementRef.current = null;
134
+ if (!previousElement) return;
135
+ const relatedTarget = getEnabledItem(store, activeId)?.element || getActiveElement(previousElement);
136
+ if (relatedTarget === previousElement) return;
137
+ fireBlurEvent(previousElement, { relatedTarget });
138
+ }, [
139
+ store,
140
+ activeId,
141
+ virtualFocus,
142
+ composite
143
+ ]);
144
+ const onKeyDownCapture = useKeyboardEventProxy(store, props.onKeyDownCapture, previousElementRef);
145
+ const onKeyUpCapture = useKeyboardEventProxy(store, props.onKeyUpCapture, previousElementRef);
146
+ const onFocusCaptureProp = props.onFocusCapture;
147
+ const onFocusCapture = useEvent((event) => {
148
+ onFocusCaptureProp?.(event);
149
+ if (event.defaultPrevented) return;
150
+ if (!store) return;
151
+ const { virtualFocus } = store.getState();
152
+ if (!virtualFocus) return;
153
+ const previousActiveElement = event.relatedTarget;
154
+ const isSilentlyFocused = silentlyFocused(event.currentTarget);
155
+ if (isSelfTarget(event) && isSilentlyFocused) {
156
+ event.stopPropagation();
157
+ previousElementRef.current = previousActiveElement;
158
+ }
159
+ });
160
+ const onFocusProp = props.onFocus;
161
+ const onFocus = useEvent((event) => {
162
+ onFocusProp?.(event);
163
+ if (event.defaultPrevented) return;
164
+ if (!composite) return;
165
+ if (!store) return;
166
+ const { relatedTarget } = event;
167
+ const { virtualFocus } = store.getState();
168
+ if (virtualFocus) {
169
+ if (isSelfTarget(event) && !isItem(store, relatedTarget)) queueMicrotask(scheduleFocus);
170
+ } else if (isSelfTarget(event)) store.setActiveId(null);
171
+ });
172
+ const onBlurCaptureProp = props.onBlurCapture;
173
+ const onBlurCapture = useEvent((event) => {
174
+ onBlurCaptureProp?.(event);
175
+ if (event.defaultPrevented) return;
176
+ if (!store) return;
177
+ const { virtualFocus, activeId } = store.getState();
178
+ if (!virtualFocus) return;
179
+ const activeElement = getEnabledItem(store, activeId)?.element;
180
+ const nextActiveElement = event.relatedTarget;
181
+ const nextActiveElementIsItem = isItem(store, nextActiveElement);
182
+ const previousElement = previousElementRef.current;
183
+ previousElementRef.current = null;
184
+ if (isSelfTarget(event) && nextActiveElementIsItem) {
185
+ if (nextActiveElement === activeElement) {
186
+ if (previousElement && previousElement !== nextActiveElement) fireBlurEvent(previousElement, event);
187
+ } else if (activeElement) fireBlurEvent(activeElement, event);
188
+ else if (previousElement) fireBlurEvent(previousElement, event);
189
+ event.stopPropagation();
190
+ } else if (!isItem(store, event.target) && activeElement) fireBlurEvent(activeElement, event);
191
+ });
192
+ const onKeyDownProp = props.onKeyDown;
193
+ const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);
194
+ const onKeyDown = useEvent((event) => {
195
+ onKeyDownProp?.(event);
196
+ if (event.nativeEvent.isComposing) return;
197
+ if (event.defaultPrevented) return;
198
+ if (!store) return;
199
+ if (!isSelfTarget(event)) return;
200
+ const { orientation, renderedItems, activeId } = store.getState();
201
+ if (getEnabledItem(store, activeId)?.element?.isConnected) return;
202
+ const isVertical = orientation !== "horizontal";
203
+ const isHorizontal = orientation !== "vertical";
204
+ const grid = isGrid(renderedItems);
205
+ if ((event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End") && isTextField(event.currentTarget)) return;
206
+ const up = () => {
207
+ if (grid) return findFirstEnabledItemInTheLastRow(renderedItems)?.id;
208
+ return store?.last();
209
+ };
210
+ const action = {
211
+ ArrowUp: (grid || isVertical) && up,
212
+ ArrowRight: (grid || isHorizontal) && store.first,
213
+ ArrowDown: (grid || isVertical) && store.first,
214
+ ArrowLeft: (grid || isHorizontal) && store.last,
215
+ Home: store.first,
216
+ End: store.last,
217
+ PageUp: store.first,
218
+ PageDown: store.last
219
+ }[event.key];
220
+ if (action) {
221
+ const id = action();
222
+ if (id !== void 0) {
223
+ if (!moveOnKeyPressProp(event)) return;
224
+ event.preventDefault();
225
+ store.move(id);
226
+ }
227
+ }
228
+ });
229
+ props = useWrapElement(props, (element) => /* @__PURE__ */ jsx(CompositeContextProvider, {
230
+ value: store,
231
+ children: element
232
+ }), [store]);
233
+ props = {
234
+ "aria-activedescendant": useStoreState(store, (state) => {
235
+ if (!store) return;
236
+ if (!composite) return;
237
+ if (!state.virtualFocus) return;
238
+ return getEnabledItem(store, state.activeId)?.id;
239
+ }),
240
+ ...props,
241
+ ref: useMergeRefs(ref, setBaseElement, props.ref),
242
+ onKeyDownCapture,
243
+ onKeyUpCapture,
244
+ onFocusCapture,
245
+ onFocus,
246
+ onBlurCapture,
247
+ onKeyDown
248
+ };
249
+ props = useFocusable({
250
+ focusable: useStoreState(store, (state) => composite && (state.virtualFocus || state.activeId === null)),
251
+ ...props
252
+ });
253
+ return props;
254
+ });
255
+ /**
256
+ * Renders a composite widget.
257
+ * @see https://ariakit.com/components/composite
258
+ * @example
259
+ * ```jsx
260
+ * const composite = useCompositeStore();
261
+ * <Composite store={composite}>
262
+ * <CompositeItem>Item 1</CompositeItem>
263
+ * <CompositeItem>Item 2</CompositeItem>
264
+ * </Composite>
265
+ * ```
266
+ */
267
+ const Composite = forwardRef(function Composite(props) {
268
+ return createElement(TagName, useComposite(props));
269
+ });
270
+ //#endregion
271
+ export { Composite, useComposite };
272
+
273
+ //# sourceMappingURL=composite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite.js","names":[],"sources":["../../src/composite/composite.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useBooleanEvent,\n useEvent,\n useMergeRefs,\n useSafeLayoutEffect,\n useTransactionState,\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport {\n flatten2DArray,\n reverseArray,\n getActiveElement,\n isTextField,\n fireBlurEvent,\n fireKeyboardEvent,\n isSelfTarget,\n focusIntoView,\n hasFocus,\n invariant,\n} from \"@ariakit/utils\";\nimport type { BooleanOrCallback } from \"@ariakit/utils\";\nimport type {\n ElementType,\n FocusEvent,\n KeyboardEventHandler,\n KeyboardEvent as ReactKeyboardEvent,\n RefObject,\n} from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { FocusableOptions } from \"../focusable/focusable.tsx\";\nimport { useFocusable } from \"../focusable/focusable.tsx\";\nimport {\n CompositeContextProvider,\n useCompositeProviderContext,\n} from \"./composite-context.tsx\";\nimport type { CompositeStore, CompositeStoreItem } from \"./composite-store.ts\";\nimport {\n findFirstEnabledItem,\n getEnabledItem,\n groupItemsByRows,\n isItem,\n silentlyFocused,\n} from \"./utils.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\nfunction isGrid(items: CompositeStoreItem[]) {\n return items.some((item) => !!item.rowId);\n}\n\nfunction isPrintableKey(event: KeyboardEvent | ReactKeyboardEvent): boolean {\n const target = event.target as Element | null;\n if (target && !isTextField(target)) return false;\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\nfunction isModifierKey(event: KeyboardEvent | ReactKeyboardEvent) {\n return (\n event.key === \"Shift\" ||\n event.key === \"Control\" ||\n event.key === \"Alt\" ||\n event.key === \"Meta\"\n );\n}\n\nfunction useKeyboardEventProxy(\n store: CompositeStore,\n onKeyboardEvent?: KeyboardEventHandler,\n previousElementRef?: RefObject<HTMLElement | null>,\n) {\n return useEvent((event: ReactKeyboardEvent) => {\n onKeyboardEvent?.(event);\n if (event.defaultPrevented) return;\n if (event.isPropagationStopped()) return;\n if (!isSelfTarget(event)) return;\n if (isModifierKey(event)) return;\n if (isPrintableKey(event)) return;\n const state = store.getState();\n const activeElement = getEnabledItem(store, state.activeId)?.element;\n if (!activeElement) return;\n const { view, ...eventInit } = event;\n const previousElement = previousElementRef?.current;\n // If the active item element is not the previous element, this means that\n // it hasn't been focused (for example, when using composite hover). So we\n // focus on it before firing the keyboard event.\n if (activeElement !== previousElement) {\n activeElement.focus();\n }\n if (!fireKeyboardEvent(activeElement, event.type, eventInit)) {\n event.preventDefault();\n }\n // The event will be triggered on the composite item and then propagated up\n // to this composite element again, so we can pretend that it wasn't called\n // on this component in the first place.\n if (event.currentTarget.contains(activeElement)) {\n event.stopPropagation();\n }\n });\n}\n\nfunction findFirstEnabledItemInTheLastRow(items: CompositeStoreItem[]) {\n return findFirstEnabledItem(\n flatten2DArray(reverseArray(groupItemsByRows(items))),\n );\n}\n\n// When virtual focus briefly moves DOM focus from a text input to an\n// item and back, browsers reset the input's internal scroll position\n// (e.g., scrollLeft). This helper preserves and restores scroll across\n// such focus transitions. Only applies to text field base elements to\n// avoid undoing intentional scrollIntoView on scrollable containers.\nfunction withBaseScrollPreserved(store: CompositeStore, callback: () => void) {\n const { virtualFocus, baseElement } = store.getState();\n if (!virtualFocus || !baseElement || !isTextField(baseElement)) {\n callback();\n return;\n }\n const savedScrollLeft = baseElement.scrollLeft;\n const savedScrollTop = baseElement.scrollTop;\n callback();\n baseElement.scrollLeft = savedScrollLeft;\n baseElement.scrollTop = savedScrollTop;\n}\n\nfunction useScheduleFocus(store: CompositeStore) {\n const [scheduled, setScheduled] = useState(false);\n const schedule = useCallback(() => setScheduled(true), []);\n const activeItem = useStoreState(store, (state) =>\n getEnabledItem(store, state.activeId),\n );\n useEffect(() => {\n const activeElement = activeItem?.element;\n if (!scheduled) return;\n if (!activeElement) return;\n setScheduled(false);\n withBaseScrollPreserved(store, () => {\n activeElement.focus({ preventScroll: true });\n });\n }, [store, activeItem, scheduled]);\n return schedule;\n}\n\n/**\n * Returns props to create a `Composite` component.\n * @see https://ariakit.com/components/composite\n * @example\n * ```jsx\n * const store = useCompositeStore();\n * const props = useComposite({ store });\n * <Role {...props}>\n * <CompositeItem>Item 1</CompositeItem>\n * <CompositeItem>Item 2</CompositeItem>\n * </Role>\n * ```\n */\nexport const useComposite = createHook<TagName, CompositeOptions>(\n function useComposite({\n store,\n composite = true,\n focusOnMove = composite,\n moveOnKeyPress = true,\n ...props\n }) {\n const context = useCompositeProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"Composite must receive a `store` prop or be wrapped in a CompositeProvider component.\",\n );\n\n const ref = useRef<HTMLType>(null);\n const previousElementRef = useRef<HTMLElement | null>(null);\n const scheduleFocus = useScheduleFocus(store);\n const moves = useStoreState(store, \"moves\");\n\n const [, setBaseElement] = useTransactionState(\n composite ? store.setBaseElement : null,\n );\n\n // Focus on the active item element.\n useEffect(() => {\n if (!store) return;\n if (!moves) return;\n if (!composite) return;\n if (!focusOnMove) return;\n const { activeId } = store.getState();\n const itemElement = getEnabledItem(store, activeId)?.element;\n if (!itemElement) return;\n withBaseScrollPreserved(store, () => focusIntoView(itemElement));\n }, [store, moves, composite, focusOnMove]);\n\n // If composite.move(null) has been called, the composite container (this\n // element) should receive focus.\n useSafeLayoutEffect(() => {\n if (!store) return;\n if (!moves) return;\n if (!composite) return;\n const { baseElement, activeId } = store.getState();\n const isSelfAcive = activeId === null;\n if (!isSelfAcive) return;\n if (!baseElement) return;\n const previousElement = previousElementRef.current;\n // We have to clean up the previous element ref so an additional blur\n // event is not fired on it, for example, when looping through items while\n // includesBaseElement is true.\n previousElementRef.current = null;\n if (previousElement) {\n // We fire a blur event on the previous active item before moving focus\n // to the composite element so the events are dispatched in the right\n // order (blur, then focus).\n fireBlurEvent(previousElement, { relatedTarget: baseElement });\n }\n if (!hasFocus(baseElement)) {\n baseElement.focus();\n }\n }, [store, moves, composite]);\n\n const activeId = useStoreState(store, \"activeId\");\n const virtualFocus = useStoreState(store, \"virtualFocus\");\n\n // At this point, if the activeId has changed and we still have a\n // previousElement, this means that the previousElement hasn't been blurred,\n // so we do it here. This will be the scenario when moving through items, in\n // which case the onFocusCapture below event will stop propagation.\n useSafeLayoutEffect(() => {\n if (!store) return;\n if (!composite) return;\n if (!virtualFocus) return;\n const previousElement = previousElementRef.current;\n previousElementRef.current = null;\n if (!previousElement) return;\n const activeElement = getEnabledItem(store, activeId)?.element;\n const relatedTarget = activeElement || getActiveElement(previousElement);\n if (relatedTarget === previousElement) return;\n fireBlurEvent(previousElement, { relatedTarget });\n }, [store, activeId, virtualFocus, composite]);\n\n const onKeyDownCapture = useKeyboardEventProxy(\n store,\n props.onKeyDownCapture,\n previousElementRef,\n );\n\n const onKeyUpCapture = useKeyboardEventProxy(\n store,\n props.onKeyUpCapture,\n previousElementRef,\n );\n\n const onFocusCaptureProp = props.onFocusCapture;\n\n const onFocusCapture = useEvent((event: FocusEvent<HTMLType>) => {\n onFocusCaptureProp?.(event);\n if (event.defaultPrevented) return;\n if (!store) return;\n const { virtualFocus } = store.getState();\n if (!virtualFocus) return;\n const previousActiveElement = event.relatedTarget as HTMLElement | null;\n const isSilentlyFocused = silentlyFocused(event.currentTarget);\n if (isSelfTarget(event) && isSilentlyFocused) {\n // Composite has been focused as a result of an item receiving focus.\n // The composite item will move focus back to the composite container.\n // In this case, we don't want to propagate this additional event nor\n // call the onFocus handler passed to <Composite onFocus={...} />.\n event.stopPropagation();\n // We keep track of the previous active item element so we can manually\n // fire a blur event on it later when the focus is moved to another item\n // on the onBlurCapture event below.\n previousElementRef.current = previousActiveElement;\n }\n });\n\n const onFocusProp = props.onFocus;\n\n const onFocus = useEvent((event: FocusEvent<HTMLType>) => {\n onFocusProp?.(event);\n if (event.defaultPrevented) return;\n if (!composite) return;\n if (!store) return;\n const { relatedTarget } = event;\n const { virtualFocus } = store.getState();\n if (virtualFocus) {\n // This means that the composite element has been focused while the\n // composite item has not. For example, by clicking on the composite\n // element without touching any item, or by tabbing into the composite\n // element. In this case, we want to trigger focus on the item, just\n // like it would happen with roving tabindex. When it receives focus,\n // the composite item will move focus back to the composite element.\n if (isSelfTarget(event) && !isItem(store, relatedTarget)) {\n // By queueing a microtask, we ensure the scheduleFocus effect will be\n // triggered after all the other effects that might have changed the\n // active item. This also accounts for when the composite container is\n // focused right after it gets mounted (for example, in a dialog), in\n // which case state.items will not be populated yet.\n queueMicrotask(scheduleFocus);\n }\n } else if (isSelfTarget(event)) {\n // When the roving tabindex composite gets intentionally focused (for\n // example, by clicking directly on it, and not on an item), we make\n // sure to set the activeId to null (which means the composite element\n // itself has focus).\n store.setActiveId(null);\n }\n });\n\n const onBlurCaptureProp = props.onBlurCapture;\n\n const onBlurCapture = useEvent((event: FocusEvent<HTMLType>) => {\n onBlurCaptureProp?.(event);\n if (event.defaultPrevented) return;\n if (!store) return;\n const { virtualFocus, activeId } = store.getState();\n if (!virtualFocus) return;\n // When virtualFocus is set to true, we move focus from the composite\n // container (this element) to the composite item that is being selected.\n // Then we move focus back to the composite container. This is so we can\n // provide the same API as the roving tabindex method, which means people\n // can attach onFocus/onBlur handlers on the CompositeItem component\n // regardless of whether virtualFocus is set to true or false. This\n // sequence of blurring and focusing on items and on the composite element\n // may be confusing, so we ignore intermediate focus and blur events by\n // stopping their propagation.\n const activeElement = getEnabledItem(store, activeId)?.element;\n const nextActiveElement = event.relatedTarget;\n const nextActiveElementIsItem = isItem(store, nextActiveElement);\n const previousElement = previousElementRef.current;\n previousElementRef.current = null;\n // This is an intermediate blur event: blurring the composite container\n // to focus on an item (nextActiveElement).\n if (isSelfTarget(event) && nextActiveElementIsItem) {\n // The next active element will be the same as the active item in the\n // store in these two scenarios:\n // - Moving focus with keyboard: the state is updated before the blur\n // event is triggered, so here the active item is already pointing to\n // the next active element.\n // - Clicking on the active item with a pointer: this will trigger blur\n // on the composite element and then the next active element will be\n // the same as the active item. Clicking on an item other than the\n // active one doesn't end up here as the activeItem state will be\n // updated only after that.\n if (nextActiveElement === activeElement) {\n // If there's a previous active item and it's not a click action, then\n // we fire a blur event on it so it will work just like if it had DOM\n // focus before (like when using roving tabindex).\n if (previousElement && previousElement !== nextActiveElement) {\n fireBlurEvent(previousElement, event);\n }\n }\n\n // This will be true when the next active element is not the active\n // element, but there's an active item. This will only happen when\n // clicking with a pointer on a different item, when there's already an\n // item selected, in which case activeElement is the item that is\n // getting blurred, and nextActiveElement is the item that is being\n // clicked.\n else if (activeElement) {\n fireBlurEvent(activeElement, event);\n }\n\n // Finally, if we still have a previousElement, this means that the\n // store is being composed with another composite store and we're moving\n // with keyboard. In this case, the state won't be updated before the\n // blur event. TODO: Test this.\n else if (previousElement) {\n fireBlurEvent(previousElement, event);\n }\n // We want to ignore intermediate blur events, so we stop the\n // propagation of this event.\n event.stopPropagation();\n } else {\n const targetIsItem = isItem(store, event.target);\n // If target is not a composite item, it may be the composite element\n // itself (isSelfTarget) or a tabbable element inside the composite\n // element. This may be triggered by clicking outside of the composite\n // element or by tabbing out of it. In either cases, we want to fire a\n // blur event on the active item.\n if (!targetIsItem && activeElement) {\n fireBlurEvent(activeElement, event);\n }\n }\n });\n\n const onKeyDownProp = props.onKeyDown;\n const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);\n\n const onKeyDown = useEvent((event: ReactKeyboardEvent<HTMLType>) => {\n onKeyDownProp?.(event);\n // https://github.com/ariakit/ariakit/issues/4388\n if (event.nativeEvent.isComposing) return;\n if (event.defaultPrevented) return;\n if (!store) return;\n if (!isSelfTarget(event)) return;\n const { orientation, renderedItems, activeId } = store.getState();\n const activeItem = getEnabledItem(store, activeId);\n if (activeItem?.element?.isConnected) return;\n const isVertical = orientation !== \"horizontal\";\n const isHorizontal = orientation !== \"vertical\";\n const grid = isGrid(renderedItems);\n // If the event is coming from a text field and no item is selected,\n // horizontal keys should perform their default action on the text field\n // instead of moving focus to an item.\n const isHorizontalKey =\n event.key === \"ArrowLeft\" ||\n event.key === \"ArrowRight\" ||\n event.key === \"Home\" ||\n event.key === \"End\";\n if (isHorizontalKey && isTextField(event.currentTarget)) return;\n const up = () => {\n if (grid) {\n const item = findFirstEnabledItemInTheLastRow(renderedItems);\n return item?.id;\n }\n return store?.last();\n };\n const keyMap = {\n ArrowUp: (grid || isVertical) && up,\n ArrowRight: (grid || isHorizontal) && store.first,\n ArrowDown: (grid || isVertical) && store.first,\n ArrowLeft: (grid || isHorizontal) && store.last,\n Home: store.first,\n End: store.last,\n PageUp: store.first,\n PageDown: store.last,\n };\n const action = keyMap[event.key as keyof typeof keyMap];\n if (action) {\n const id = action();\n if (id !== undefined) {\n if (!moveOnKeyPressProp(event)) return;\n event.preventDefault();\n store.move(id);\n }\n }\n });\n\n props = useWrapElement(\n props,\n (element) => (\n <CompositeContextProvider value={store}>\n {element}\n </CompositeContextProvider>\n ),\n [store],\n );\n\n const activeDescendant = useStoreState(store, (state) => {\n if (!store) return;\n if (!composite) return;\n if (!state.virtualFocus) return;\n return getEnabledItem(store, state.activeId)?.id;\n });\n\n props = {\n \"aria-activedescendant\": activeDescendant,\n ...props,\n ref: useMergeRefs(ref, setBaseElement, props.ref),\n onKeyDownCapture,\n onKeyUpCapture,\n onFocusCapture,\n onFocus,\n onBlurCapture,\n onKeyDown,\n };\n\n const focusable = useStoreState(\n store,\n (state) => composite && (state.virtualFocus || state.activeId === null),\n );\n\n props = useFocusable({ focusable, ...props });\n\n return props;\n },\n);\n\n/**\n * Renders a composite widget.\n * @see https://ariakit.com/components/composite\n * @example\n * ```jsx\n * const composite = useCompositeStore();\n * <Composite store={composite}>\n * <CompositeItem>Item 1</CompositeItem>\n * <CompositeItem>Item 2</CompositeItem>\n * </Composite>\n * ```\n */\nexport const Composite = forwardRef(function Composite(props: CompositeProps) {\n const htmlProps = useComposite(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface CompositeOptions<\n T extends ElementType = TagName,\n> extends FocusableOptions<T> {\n /**\n * Object returned by the\n * [`useCompositeStore`](https://ariakit.com/reference/use-composite-store)\n * hook. If not provided, the closest\n * [`CompositeProvider`](https://ariakit.com/reference/composite-provider)\n * component's context will be used.\n */\n store?: CompositeStore;\n /**\n * Determines if the component should act as a composite widget. This prop\n * needs to be set to `false` when merging various composite widgets where\n * only one should function in that manner.\n *\n * If disabled, this component will stop managing focus and keyboard\n * navigation for its items and itself. Additionally, composite ARIA\n * attributes won't be applied. These responsibilities should be taken over by\n * another composite component.\n *\n * **Note**: In most cases, this prop doesn't need to be set manually. For\n * example, when composing [Menu with\n * Combobox](https://ariakit.com/examples/menu-combobox) or [Select with\n * Combobox](https://ariakit.com/examples/select-combobox), this prop will be\n * set to `false` automatically on the\n * [`Menu`](https://ariakit.com/reference/menu) and\n * [`SelectPopover`](https://ariakit.com/reference/select-popover) components\n * so the [`Combobox`](https://ariakit.com/reference/combobox) component can\n * take over the composite widget responsibilities.\n *\n * Live examples:\n * - [Menu with Combobox](https://ariakit.com/examples/menu-combobox)\n * - [Select with Combobox](https://ariakit.com/examples/select-combobox)\n * @default true\n */\n composite?: boolean;\n /**\n * Determines whether the composite widget should move focus to an item when\n * arrow keys are pressed, given that the composite element is focused and\n * there's no active item.\n *\n * **Note**: To entirely disable focus moving within a composite widget, you\n * can use the\n * [`focusOnMove`](https://ariakit.com/reference/composite#focusonmove) prop\n * instead. If you want to control the behavior _only when arrow keys are\n * pressed_, where\n * [`focusOnMove`](https://ariakit.com/reference/composite#focusonmove) may\n * not be applicable, this prop must be set on composite items as well.\n * @default true\n * @example\n * ```jsx\n * <Composite moveOnKeyPress={false}>\n * <CompositeItem moveOnKeyPress={false} />\n * <CompositeItem moveOnKeyPress={false} />\n * </Composite>\n * ```\n */\n moveOnKeyPress?: BooleanOrCallback<ReactKeyboardEvent<HTMLElement>>;\n /**\n * Determines if the active composite item should receive focus (or virtual\n * focus if the\n * [`virtualFocus`](https://ariakit.com/reference/composite-provider#virtualfocus)\n * option is enabled) when moving through items. This typically happens when\n * navigating through items with arrow keys, but it can also happen when\n * calling the\n * [`move`](https://ariakit.com/reference/use-composite-store#move) method\n * directly.\n *\n * Unlike the\n * [`composite`](https://ariakit.com/reference/composite#composite-1) prop,\n * this option doesn't disable the entire composite widget behavior. It only\n * stops this component from managing focus when navigating through items.\n *\n * **Note**: If you want to control the behavior only _when arrow keys are\n * pressed_, use the\n * [`moveOnKeyPress`](https://ariakit.com/reference/composite#moveonkeypress)\n * prop instead.\n * @default true\n */\n focusOnMove?: boolean;\n /**\n * @see https://ariakit.com/reference/focusable\n */\n focusable?: FocusableOptions<T>[\"focusable\"];\n}\n\nexport type CompositeProps<T extends ElementType = TagName> = Props<\n T,\n CompositeOptions<T>\n>;\n"],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { r as CompositeStoreItem, t as CompositeStore } from "../composite-store-DyJc-XRA.js";
2
+
3
+ //#region src/composite/utils.d.ts
4
+ /**
5
+ * Moves all the items before the passed `id` to the end of the array. This is
6
+ * useful when we want to loop through the items in the same row or column as
7
+ * the first items will be placed after the last items.
8
+ *
9
+ * The null item that's inserted when `shouldInsertNullItem` is set to `true`
10
+ * represents the composite container itself. When the active item is null, the
11
+ * composite container has focus.
12
+ */
13
+ declare function flipItems(items: CompositeStoreItem[], activeId: string, shouldInsertNullItem?: boolean): {
14
+ id: string;
15
+ }[];
16
+ /**
17
+ * Finds the first enabled item.
18
+ */
19
+ declare function findFirstEnabledItem(items: CompositeStoreItem[], excludeId?: string): CompositeStoreItem | undefined;
20
+ /**
21
+ * Finds the first enabled item by its id.
22
+ */
23
+ declare function getEnabledItem(store: CompositeStore, id?: string | null): CompositeStoreItem | null;
24
+ /**
25
+ * Creates a two-dimensional array with items grouped by their rowId's.
26
+ */
27
+ declare function groupItemsByRows(items: CompositeStoreItem[]): CompositeStoreItem[][];
28
+ /**
29
+ * Selects text field contents even if it's a content editable element.
30
+ */
31
+ declare function selectTextField(element: HTMLElement, collapseToEnd?: boolean): void;
32
+ declare const FOCUS_SILENTLY: unique symbol;
33
+ type FocusSilentlyElement = HTMLElement & {
34
+ [FOCUS_SILENTLY]?: boolean;
35
+ };
36
+ /**
37
+ * Focus an element with a flag. The `silentlyFocused` function needs to be
38
+ * called later to check if the focus was silenced and to reset this state.
39
+ */
40
+ declare function focusSilently(element: FocusSilentlyElement): void;
41
+ /**
42
+ * Checks whether the element has been focused with the `focusSilently` function
43
+ * and resets the state.
44
+ */
45
+ declare function silentlyFocused(element: FocusSilentlyElement): boolean | undefined;
46
+ /**
47
+ * Determines whether the element is a composite item.
48
+ */
49
+ declare function isItem(store: CompositeStore, element?: Element | null, exclude?: Element): boolean;
50
+ //#endregion
51
+ export { findFirstEnabledItem, flipItems, focusSilently, getEnabledItem, groupItemsByRows, isItem, selectTextField, silentlyFocused };
52
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","names":["CompositeStore","CompositeStoreItem","flipItems","items","activeId","shouldInsertNullItem","id","findFirstEnabledItem","excludeId","getEnabledItem","store","groupItemsByRows","selectTextField","HTMLElement","element","collapseToEnd","FOCUS_SILENTLY","FocusSilentlyElement","focusSilently","silentlyFocused","isItem","Element","exclude"],"sources":["../../src/composite/utils.d.ts"],"mappings":";;;;;AAUA;;;;;;;iBAAwBE,SAAAA,CAAUC,KAAAA,EAAOF,kBAAkB,IAAIG,QAAAA,UAAkBC,oBAAAA;EAC7EC,EAAAA;AAAAA;AAAE;AAKN;;AALM,iBAKkBC,oBAAAA,CAAqBJ,KAAAA,EAAOF,kBAAAA,IAAsBO,SAAAA,YAAqBP,kBAAkB;;;;iBAIzFQ,cAAAA,CAAeC,KAAAA,EAAOV,cAAAA,EAAgBM,EAAAA,mBAAqBL,kBAAkB;;;AAJY;iBAQzFU,gBAAAA,CAAiBR,KAAAA,EAAOF,kBAAAA,KAAuBA,kBAAkB;;;;iBAIjEW,eAAAA,CAAgBE,OAAAA,EAASD,WAAW,EAAEE,aAAAA;AAAAA,cAChDC,cAAAA;AAAAA,KACTC,oBAAAA,GAAuBJ,WAAAA;EAAAA,CACvBG,cAAc;AAAA;AAXkF;AAIrG;;;AAJqG,iBAiB7EE,aAAAA,CAAcJ,OAA6B,EAApBG,oBAAoB;;;;;iBAK3CE,eAAAA,CAAgBL,OAA6B,EAApBG,oBAAoB;AAdrE;;;AAAA,iBAkBwBG,MAAAA,CAAOV,KAAAA,EAAOV,cAAAA,EAAgBc,OAAAA,GAAUO,OAAAA,SAAgBC,OAAAA,GAAUD,OAAAA"}
@@ -0,0 +1,93 @@
1
+ "use client";
2
+ import { getDocument, isTextField } from "@ariakit/utils";
3
+ //#region src/composite/utils.ts
4
+ const NULL_ITEM = { id: null };
5
+ /**
6
+ * Moves all the items before the passed `id` to the end of the array. This is
7
+ * useful when we want to loop through the items in the same row or column as
8
+ * the first items will be placed after the last items.
9
+ *
10
+ * The null item that's inserted when `shouldInsertNullItem` is set to `true`
11
+ * represents the composite container itself. When the active item is null, the
12
+ * composite container has focus.
13
+ */
14
+ function flipItems(items, activeId, shouldInsertNullItem = false) {
15
+ const index = items.findIndex((item) => item.id === activeId);
16
+ return [
17
+ ...items.slice(index + 1),
18
+ ...shouldInsertNullItem ? [NULL_ITEM] : [],
19
+ ...items.slice(0, index)
20
+ ];
21
+ }
22
+ /**
23
+ * Finds the first enabled item.
24
+ */
25
+ function findFirstEnabledItem(items, excludeId) {
26
+ return items.find((item) => {
27
+ if (excludeId) return !item.disabled && item.id !== excludeId;
28
+ return !item.disabled;
29
+ });
30
+ }
31
+ /**
32
+ * Finds the first enabled item by its id.
33
+ */
34
+ function getEnabledItem(store, id) {
35
+ if (!id) return null;
36
+ return store.item(id) || null;
37
+ }
38
+ /**
39
+ * Creates a two-dimensional array with items grouped by their rowId's.
40
+ */
41
+ function groupItemsByRows(items) {
42
+ const rows = [];
43
+ for (const item of items) {
44
+ const row = rows.find((currentRow) => currentRow[0]?.rowId === item.rowId);
45
+ if (row) row.push(item);
46
+ else rows.push([item]);
47
+ }
48
+ return rows;
49
+ }
50
+ /**
51
+ * Selects text field contents even if it's a content editable element.
52
+ */
53
+ function selectTextField(element, collapseToEnd = false) {
54
+ if (isTextField(element)) element.setSelectionRange(collapseToEnd ? element.value.length : 0, element.value.length);
55
+ else if (element.isContentEditable) {
56
+ const selection = getDocument(element).getSelection();
57
+ selection?.selectAllChildren(element);
58
+ if (collapseToEnd) selection?.collapseToEnd();
59
+ }
60
+ }
61
+ const FOCUS_SILENTLY = Symbol("FOCUS_SILENTLY");
62
+ /**
63
+ * Focus an element with a flag. The `silentlyFocused` function needs to be
64
+ * called later to check if the focus was silenced and to reset this state.
65
+ */
66
+ function focusSilently(element) {
67
+ element[FOCUS_SILENTLY] = true;
68
+ element.focus({ preventScroll: true });
69
+ }
70
+ /**
71
+ * Checks whether the element has been focused with the `focusSilently` function
72
+ * and resets the state.
73
+ */
74
+ function silentlyFocused(element) {
75
+ const isSilentlyFocused = element[FOCUS_SILENTLY];
76
+ delete element[FOCUS_SILENTLY];
77
+ return isSilentlyFocused;
78
+ }
79
+ /**
80
+ * Determines whether the element is a composite item.
81
+ */
82
+ function isItem(store, element, exclude) {
83
+ if (!element) return false;
84
+ if (element === exclude) return false;
85
+ const item = store.item(element.id);
86
+ if (!item) return false;
87
+ if (exclude && item.element === exclude) return false;
88
+ return true;
89
+ }
90
+ //#endregion
91
+ export { findFirstEnabledItem, flipItems, focusSilently, getEnabledItem, groupItemsByRows, isItem, selectTextField, silentlyFocused };
92
+
93
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../src/composite/utils.ts"],"sourcesContent":["import { getDocument, isTextField } from \"@ariakit/utils\";\nimport type { CompositeStore, CompositeStoreItem } from \"./composite-store.ts\";\n\nconst NULL_ITEM = { id: null as unknown as string };\n\n/**\n * Moves all the items before the passed `id` to the end of the array. This is\n * useful when we want to loop through the items in the same row or column as\n * the first items will be placed after the last items.\n *\n * The null item that's inserted when `shouldInsertNullItem` is set to `true`\n * represents the composite container itself. When the active item is null, the\n * composite container has focus.\n */\nexport function flipItems(\n items: CompositeStoreItem[],\n activeId: string,\n shouldInsertNullItem = false,\n) {\n const index = items.findIndex((item) => item.id === activeId);\n return [\n ...items.slice(index + 1),\n ...(shouldInsertNullItem ? [NULL_ITEM] : []),\n ...items.slice(0, index),\n ];\n}\n\n/**\n * Finds the first enabled item.\n */\nexport function findFirstEnabledItem(\n items: CompositeStoreItem[],\n excludeId?: string,\n) {\n return items.find((item) => {\n if (excludeId) {\n return !item.disabled && item.id !== excludeId;\n }\n return !item.disabled;\n });\n}\n\n/**\n * Finds the first enabled item by its id.\n */\nexport function getEnabledItem(store: CompositeStore, id?: string | null) {\n if (!id) return null;\n return store.item(id) || null;\n}\n\n/**\n * Creates a two-dimensional array with items grouped by their rowId's.\n */\nexport function groupItemsByRows(items: CompositeStoreItem[]) {\n const rows: CompositeStoreItem[][] = [];\n for (const item of items) {\n const row = rows.find((currentRow) => currentRow[0]?.rowId === item.rowId);\n if (row) {\n row.push(item);\n } else {\n rows.push([item]);\n }\n }\n return rows;\n}\n\n/**\n * Selects text field contents even if it's a content editable element.\n */\nexport function selectTextField(element: HTMLElement, collapseToEnd = false) {\n if (isTextField(element)) {\n element.setSelectionRange(\n collapseToEnd ? element.value.length : 0,\n element.value.length,\n );\n } else if (element.isContentEditable) {\n const selection = getDocument(element).getSelection();\n selection?.selectAllChildren(element);\n if (collapseToEnd) {\n selection?.collapseToEnd();\n }\n }\n}\n\nconst FOCUS_SILENTLY = Symbol(\"FOCUS_SILENTLY\");\ntype FocusSilentlyElement = HTMLElement & { [FOCUS_SILENTLY]?: boolean };\n\n/**\n * Focus an element with a flag. The `silentlyFocused` function needs to be\n * called later to check if the focus was silenced and to reset this state.\n */\nexport function focusSilently(element: FocusSilentlyElement) {\n element[FOCUS_SILENTLY] = true;\n element.focus({ preventScroll: true });\n}\n\n/**\n * Checks whether the element has been focused with the `focusSilently` function\n * and resets the state.\n */\nexport function silentlyFocused(element: FocusSilentlyElement) {\n const isSilentlyFocused = element[FOCUS_SILENTLY];\n delete element[FOCUS_SILENTLY];\n return isSilentlyFocused;\n}\n\n/**\n * Determines whether the element is a composite item.\n */\nexport function isItem(\n store: CompositeStore,\n element?: Element | null,\n exclude?: Element,\n) {\n if (!element) return false;\n if (element === exclude) return false;\n const item = store.item(element.id);\n if (!item) return false;\n if (exclude && item.element === exclude) return false;\n return true;\n}\n"],"mappings":";;;;;;;;;;;;;SAmBQ,UAAQ,OAAM,UAAW,uBAAqB,OAAQ;CAC5D,MAAA,QAAO,MAAA,WAAA,SAAA,KAAA,OAAA,QAAA;QACF;EACH,GAAI,MAAA,MAAA,QAAA,CAAA;EACJ,GAAG,uBAAoB,CAAA,SAAA,IAAA,CAAA;EACzB,GAAA,MAAA,MAAA,GAAA,KAAA;CACF;;;;;SASS,qBAAqB,OAAA,WAAA;QACtB,MAAA,MACF,SAAQ;EAEV,IAAA,WAAa,OAAA,CAAA,KAAA,YAAA,KAAA,OAAA;EACd,OAAA,CAAA,KAAA;CACH,CAAA;;;;;SAMO,eAAW,OAAA,IAAA;CAChB,IAAA,CAAA,IAAO,OAAM;CACf,OAAA,MAAA,KAAA,EAAA,KAAA;;;;;SAMQ,iBAAgC,OAAA;CACtC,MAAK,OAAM,CAAA;MACT,MAAM,QAAW,OAAM;EACvB,MAAI,MACF,KAAI,MAAS,eAAA,WAAA,IAAA,UAAA,KAAA,KAAA;WAEb,IAAK,KAAM,IAAK;OAEpB,KAAA,KAAA,CAAA,IAAA,CAAA;CACA;CACF,OAAA;;;;;SAMM,gBAAmB,SACrB,gBAAQ,OACN;iBAGO,OAAQ,GAAA,QAAA,kBAAmB,gBAAA,QAAA,MAAA,SAAA,GAAA,QAAA,MAAA,MAAA;MACpC,IAAM,QAAA,mBAAwB;EAC9B,MAAA,YAAW,YAAkB,OAAO,EAAA,aAAA;EACpC,WAAI,kBACF,OAAW;EAEf,IAAA,eAAA,WAAA,cAAA;CACF;AAEA;;;;;;SAQU,cAAA,SAAkB;CAC1B,QAAQ,kBAAQ;CAClB,QAAA,MAAA,EAAA,eAAA,KAAA,CAAA;;;;;;SAOQ,gBAAA,SAAoB;CAC1B,MAAA,oBAAe,QAAA;CACf,OAAO,QAAA;CACT,OAAA;;;;;SAUO,OAAS,OAAO,SAAA,SAAA;CACrB,IAAI,CAAA,SAAA,OAAY;CAChB,IAAA,YAAa,SAAW,OAAQ;CAChC,MAAK,OAAM,MAAO,KAAA,QAAA,EAAA;CAClB,IAAI,CAAA,MAAA,OAAW;CACf,IAAA,WAAO,KAAA,YAAA,SAAA,OAAA;CACT,OAAA"}
@@ -0,0 +1,124 @@
1
+ import { n as FocusableOptions } from "./focusable-B00tOxtB.js";
2
+ import { t as CompositeStore } from "./composite-store-DyJc-XRA.js";
3
+ import { Props } from "@ariakit/react-utils";
4
+ import { ElementType, KeyboardEvent } from "react";
5
+ import { BooleanOrCallback } from "@ariakit/utils";
6
+
7
+ //#region src/composite/composite.d.ts
8
+ declare const TagName = "div";
9
+ type TagName = typeof TagName;
10
+ /**
11
+ * Returns props to create a `Composite` component.
12
+ * @see https://ariakit.com/components/composite
13
+ * @example
14
+ * ```jsx
15
+ * const store = useCompositeStore();
16
+ * const props = useComposite({ store });
17
+ * <Role {...props}>
18
+ * <CompositeItem>Item 1</CompositeItem>
19
+ * <CompositeItem>Item 2</CompositeItem>
20
+ * </Role>
21
+ * ```
22
+ */
23
+ declare const useComposite: import("@ariakit/react-utils").Hook<"div", CompositeOptions<"div">>;
24
+ /**
25
+ * Renders a composite widget.
26
+ * @see https://ariakit.com/components/composite
27
+ * @example
28
+ * ```jsx
29
+ * const composite = useCompositeStore();
30
+ * <Composite store={composite}>
31
+ * <CompositeItem>Item 1</CompositeItem>
32
+ * <CompositeItem>Item 2</CompositeItem>
33
+ * </Composite>
34
+ * ```
35
+ */
36
+ declare const Composite: (props: CompositeProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
37
+ interface CompositeOptions<T extends ElementType = TagName> extends FocusableOptions<T> {
38
+ /**
39
+ * Object returned by the
40
+ * [`useCompositeStore`](https://ariakit.com/reference/use-composite-store)
41
+ * hook. If not provided, the closest
42
+ * [`CompositeProvider`](https://ariakit.com/reference/composite-provider)
43
+ * component's context will be used.
44
+ */
45
+ store?: CompositeStore;
46
+ /**
47
+ * Determines if the component should act as a composite widget. This prop
48
+ * needs to be set to `false` when merging various composite widgets where
49
+ * only one should function in that manner.
50
+ *
51
+ * If disabled, this component will stop managing focus and keyboard
52
+ * navigation for its items and itself. Additionally, composite ARIA
53
+ * attributes won't be applied. These responsibilities should be taken over by
54
+ * another composite component.
55
+ *
56
+ * **Note**: In most cases, this prop doesn't need to be set manually. For
57
+ * example, when composing [Menu with
58
+ * Combobox](https://ariakit.com/examples/menu-combobox) or [Select with
59
+ * Combobox](https://ariakit.com/examples/select-combobox), this prop will be
60
+ * set to `false` automatically on the
61
+ * [`Menu`](https://ariakit.com/reference/menu) and
62
+ * [`SelectPopover`](https://ariakit.com/reference/select-popover) components
63
+ * so the [`Combobox`](https://ariakit.com/reference/combobox) component can
64
+ * take over the composite widget responsibilities.
65
+ *
66
+ * Live examples:
67
+ * - [Menu with Combobox](https://ariakit.com/examples/menu-combobox)
68
+ * - [Select with Combobox](https://ariakit.com/examples/select-combobox)
69
+ * @default true
70
+ */
71
+ composite?: boolean;
72
+ /**
73
+ * Determines whether the composite widget should move focus to an item when
74
+ * arrow keys are pressed, given that the composite element is focused and
75
+ * there's no active item.
76
+ *
77
+ * **Note**: To entirely disable focus moving within a composite widget, you
78
+ * can use the
79
+ * [`focusOnMove`](https://ariakit.com/reference/composite#focusonmove) prop
80
+ * instead. If you want to control the behavior _only when arrow keys are
81
+ * pressed_, where
82
+ * [`focusOnMove`](https://ariakit.com/reference/composite#focusonmove) may
83
+ * not be applicable, this prop must be set on composite items as well.
84
+ * @default true
85
+ * @example
86
+ * ```jsx
87
+ * <Composite moveOnKeyPress={false}>
88
+ * <CompositeItem moveOnKeyPress={false} />
89
+ * <CompositeItem moveOnKeyPress={false} />
90
+ * </Composite>
91
+ * ```
92
+ */
93
+ moveOnKeyPress?: BooleanOrCallback<KeyboardEvent<HTMLElement>>;
94
+ /**
95
+ * Determines if the active composite item should receive focus (or virtual
96
+ * focus if the
97
+ * [`virtualFocus`](https://ariakit.com/reference/composite-provider#virtualfocus)
98
+ * option is enabled) when moving through items. This typically happens when
99
+ * navigating through items with arrow keys, but it can also happen when
100
+ * calling the
101
+ * [`move`](https://ariakit.com/reference/use-composite-store#move) method
102
+ * directly.
103
+ *
104
+ * Unlike the
105
+ * [`composite`](https://ariakit.com/reference/composite#composite-1) prop,
106
+ * this option doesn't disable the entire composite widget behavior. It only
107
+ * stops this component from managing focus when navigating through items.
108
+ *
109
+ * **Note**: If you want to control the behavior only _when arrow keys are
110
+ * pressed_, use the
111
+ * [`moveOnKeyPress`](https://ariakit.com/reference/composite#moveonkeypress)
112
+ * prop instead.
113
+ * @default true
114
+ */
115
+ focusOnMove?: boolean;
116
+ /**
117
+ * @see https://ariakit.com/reference/focusable
118
+ */
119
+ focusable?: FocusableOptions<T>["focusable"];
120
+ }
121
+ type CompositeProps<T extends ElementType = TagName> = Props<T, CompositeOptions<T>>;
122
+ //#endregion
123
+ export { useComposite as i, CompositeOptions as n, CompositeProps as r, Composite as t };
124
+ //# sourceMappingURL=composite-DLvyFHMq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite-DLvyFHMq.d.ts","names":["Props","BooleanOrCallback","ElementType","KeyboardEvent","ReactKeyboardEvent","FocusableOptions","CompositeStore","TagName","useComposite","CompositeOptions","Hook","Composite","CompositeProps","props","ReactElement","JSXElementConstructor","T","HTMLElement","store","composite","moveOnKeyPress","focusOnMove","focusable"],"sources":["../src/composite/composite.d.ts"],"mappings":";;;;;;;cAKcO,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF8B;;;;AACtC;AAAA;;;;AACQ;AAc7B;;;AAhB2D,cAgBtCC,YAAAA,iCAA6CE,IAAAA,QAAYD,gBAAgB;AAAA;AAa9F;;;;;;;;;AAA2I;AAC3I;AAd8F,cAazEE,SAAAA,GAAYE,KAAAA,EAAOD,cAAc,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACrGN,gBAAAA,WAA2BP,WAAAA,GAAcK,OAAAA,UAAiBF,gBAAAA,CAAiBW,CAAAA;EAAhDd;;;;;;;EAQxCgB,KAAAA,GAAQZ,cAAAA;EA0EID;;;;;;;;;;;;;;;;;;;;;AAAkB;AAElC;;;EAlDIc,SAAAA;EAkD+CZ;;;;;;;;;;;;;;;AAAsC;;;;;;EA5BrFa,cAAAA,GAAiBnB,iBAAAA,CAAkBG,aAAAA,CAAmBa,WAAAA;;;;;;;;;;;;;;;;;;;;;;EAsBtDI,WAAAA;;;;EAIAC,SAAAA,GAAYjB,gBAAAA,CAAiBW,CAAAA;AAAAA;AAAAA,KAErBJ,cAAAA,WAAyBV,WAAAA,GAAcK,OAAAA,IAAWP,KAAAA,CAAMgB,CAAAA,EAAGP,gBAAAA,CAAiBO,CAAAA"}