@ariakit/react-components 0.1.1 → 0.1.2

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 (500) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/button/button.d.ts +1 -1
  3. package/dist/{button-Cp853csH.d.ts → button-CVWcOgxs.d.ts} +3 -3
  4. package/dist/{button-Cp853csH.d.ts.map → button-CVWcOgxs.d.ts.map} +1 -1
  5. package/dist/checkbox/checkbox-check.d.ts +1 -1
  6. package/dist/checkbox/checkbox-check.d.ts.map +1 -1
  7. package/dist/checkbox/checkbox.d.ts +2 -2
  8. package/dist/checkbox/checkbox.d.ts.map +1 -1
  9. package/dist/collection/collection-item-offscreen.d.ts +1 -1
  10. package/dist/collection/collection-item-offscreen.js +1 -1
  11. package/dist/collection/collection-item-offscreen.js.map +1 -1
  12. package/dist/collection/collection-item.d.ts +1 -1
  13. package/dist/collection/collection-renderer.d.ts +1 -1
  14. package/dist/collection/collection-renderer.js +1 -1
  15. package/dist/collection/collection-renderer.js.map +1 -1
  16. package/dist/collection/collection.d.ts +1 -1
  17. package/dist/collection/collection.d.ts.map +1 -1
  18. package/dist/{collection-item-offscreen-DyXa-sqj.d.ts → collection-item-offscreen-B5E5vNFi.d.ts} +2 -2
  19. package/dist/{collection-item-offscreen-DyXa-sqj.d.ts.map → collection-item-offscreen-B5E5vNFi.d.ts.map} +1 -1
  20. package/dist/{collection-item-C-g2BwVF.d.ts → collection-item-pvEWNoNs.d.ts} +2 -2
  21. package/dist/{collection-item-C-g2BwVF.d.ts.map → collection-item-pvEWNoNs.d.ts.map} +1 -1
  22. package/dist/{collection-renderer-DsPD9ksD.d.ts → collection-renderer-BhzF21Du.d.ts} +29 -15
  23. package/dist/collection-renderer-BhzF21Du.d.ts.map +1 -0
  24. package/dist/combobox/combobox-cancel.d.ts +2 -2
  25. package/dist/combobox/combobox-cancel.d.ts.map +1 -1
  26. package/dist/combobox/combobox-cancel.js +1 -1
  27. package/dist/combobox/combobox-cancel.js.map +1 -1
  28. package/dist/combobox/combobox-disclosure.d.ts +2 -2
  29. package/dist/combobox/combobox-disclosure.d.ts.map +1 -1
  30. package/dist/combobox/combobox-disclosure.js +1 -1
  31. package/dist/combobox/combobox-disclosure.js.map +1 -1
  32. package/dist/combobox/combobox-group-label.d.ts +1 -1
  33. package/dist/combobox/combobox-group-label.d.ts.map +1 -1
  34. package/dist/combobox/combobox-group.d.ts +1 -1
  35. package/dist/combobox/combobox-group.d.ts.map +1 -1
  36. package/dist/combobox/combobox-group.js +1 -1
  37. package/dist/combobox/combobox-group.js.map +1 -1
  38. package/dist/combobox/combobox-item-check.d.ts +1 -1
  39. package/dist/combobox/combobox-item-check.d.ts.map +1 -1
  40. package/dist/combobox/combobox-item-value.d.ts +1 -1
  41. package/dist/combobox/combobox-item-value.d.ts.map +1 -1
  42. package/dist/combobox/combobox-item.d.ts +3 -3
  43. package/dist/combobox/combobox-item.d.ts.map +1 -1
  44. package/dist/combobox/combobox-item.js +1 -1
  45. package/dist/combobox/combobox-item.js.map +1 -1
  46. package/dist/combobox/combobox-label.d.ts +1 -1
  47. package/dist/combobox/combobox-label.d.ts.map +1 -1
  48. package/dist/combobox/combobox-label.js +1 -1
  49. package/dist/combobox/combobox-label.js.map +1 -1
  50. package/dist/combobox/combobox-list.d.ts +1 -1
  51. package/dist/combobox/combobox-list.d.ts.map +1 -1
  52. package/dist/combobox/combobox-list.js +1 -1
  53. package/dist/combobox/combobox-list.js.map +1 -1
  54. package/dist/combobox/combobox-popover.d.ts +1 -1
  55. package/dist/combobox/combobox-popover.js +1 -1
  56. package/dist/combobox/combobox-popover.js.map +1 -1
  57. package/dist/combobox/combobox-row.d.ts +1 -1
  58. package/dist/combobox/combobox-row.d.ts.map +1 -1
  59. package/dist/combobox/combobox-row.js +1 -1
  60. package/dist/combobox/combobox-row.js.map +1 -1
  61. package/dist/combobox/combobox-separator.d.ts +1 -1
  62. package/dist/combobox/combobox-separator.d.ts.map +1 -1
  63. package/dist/combobox/combobox-separator.js +1 -1
  64. package/dist/combobox/combobox-separator.js.map +1 -1
  65. package/dist/combobox/combobox-value.js +1 -1
  66. package/dist/combobox/combobox-value.js.map +1 -1
  67. package/dist/combobox/combobox.d.ts +3 -3
  68. package/dist/combobox/combobox.d.ts.map +1 -1
  69. package/dist/combobox/combobox.js +16 -2
  70. package/dist/combobox/combobox.js.map +1 -1
  71. package/dist/command/command.d.ts +1 -1
  72. package/dist/{command-DckndCUK.d.ts → command-B9C8p3_S.d.ts} +3 -3
  73. package/dist/{command-DckndCUK.d.ts.map → command-B9C8p3_S.d.ts.map} +1 -1
  74. package/dist/composite/composite-container.d.ts +1 -1
  75. package/dist/composite/composite-container.d.ts.map +1 -1
  76. package/dist/composite/composite-container.js +2 -2
  77. package/dist/composite/composite-container.js.map +1 -1
  78. package/dist/composite/composite-group-label.d.ts +2 -2
  79. package/dist/composite/composite-group-label.d.ts.map +1 -1
  80. package/dist/composite/composite-group.d.ts +2 -2
  81. package/dist/composite/composite-group.d.ts.map +1 -1
  82. package/dist/composite/composite-hover.d.ts +1 -1
  83. package/dist/composite/composite-hover.js +9 -13
  84. package/dist/composite/composite-hover.js.map +1 -1
  85. package/dist/composite/composite-input.d.ts +1 -1
  86. package/dist/composite/composite-input.d.ts.map +1 -1
  87. package/dist/composite/composite-input.js +1 -1
  88. package/dist/composite/composite-input.js.map +1 -1
  89. package/dist/composite/composite-item-offscreen.d.ts +2 -2
  90. package/dist/composite/composite-item-offscreen.js +2 -2
  91. package/dist/composite/composite-item-offscreen.js.map +1 -1
  92. package/dist/composite/composite-item.d.ts +1 -1
  93. package/dist/composite/composite-item.js +2 -2
  94. package/dist/composite/composite-item.js.map +1 -1
  95. package/dist/composite/composite-overflow-disclosure.d.ts +2 -2
  96. package/dist/composite/composite-overflow-disclosure.d.ts.map +1 -1
  97. package/dist/composite/composite-overflow.d.ts +2 -2
  98. package/dist/composite/composite-overflow.d.ts.map +1 -1
  99. package/dist/composite/composite-renderer.d.ts +28 -14
  100. package/dist/composite/composite-renderer.d.ts.map +1 -1
  101. package/dist/composite/composite-renderer.js +2 -2
  102. package/dist/composite/composite-renderer.js.map +1 -1
  103. package/dist/composite/composite-row.d.ts +1 -1
  104. package/dist/composite/composite-row.d.ts.map +1 -1
  105. package/dist/composite/composite-row.js +3 -3
  106. package/dist/composite/composite-row.js.map +1 -1
  107. package/dist/composite/composite-separator.d.ts +2 -2
  108. package/dist/composite/composite-separator.d.ts.map +1 -1
  109. package/dist/composite/composite-separator.js +3 -3
  110. package/dist/composite/composite-separator.js.map +1 -1
  111. package/dist/composite/composite-typeahead.d.ts +1 -1
  112. package/dist/composite/composite-typeahead.js +3 -3
  113. package/dist/composite/composite-typeahead.js.map +1 -1
  114. package/dist/composite/composite.d.ts +1 -1
  115. package/dist/composite/composite.js +3 -3
  116. package/dist/composite/composite.js.map +1 -1
  117. package/dist/{composite-DLvyFHMq.d.ts → composite-KBhCGLEy.d.ts} +3 -3
  118. package/dist/{composite-DLvyFHMq.d.ts.map → composite-KBhCGLEy.d.ts.map} +1 -1
  119. package/dist/{composite-hover-C7ul163w.d.ts → composite-hover-BpXq3T8J.d.ts} +2 -2
  120. package/dist/{composite-hover-C7ul163w.d.ts.map → composite-hover-BpXq3T8J.d.ts.map} +1 -1
  121. package/dist/{composite-item-B4WTelVz.d.ts → composite-item-d4UXaZ84.d.ts} +4 -4
  122. package/dist/{composite-item-B4WTelVz.d.ts.map → composite-item-d4UXaZ84.d.ts.map} +1 -1
  123. package/dist/{composite-typeahead-DDhpyKqm.d.ts → composite-typeahead-0euW43GU.d.ts} +2 -2
  124. package/dist/{composite-typeahead-DDhpyKqm.d.ts.map → composite-typeahead-0euW43GU.d.ts.map} +1 -1
  125. package/dist/dialog/dialog-backdrop.d.ts +1 -1
  126. package/dist/dialog/dialog-description.d.ts +1 -1
  127. package/dist/dialog/dialog-disclosure.d.ts +1 -1
  128. package/dist/dialog/dialog-disclosure.js +1 -1
  129. package/dist/dialog/dialog-disclosure.js.map +1 -1
  130. package/dist/dialog/dialog-dismiss.d.ts +1 -1
  131. package/dist/dialog/dialog-heading.d.ts +1 -1
  132. package/dist/dialog/dialog.d.ts +1 -1
  133. package/dist/dialog/dialog.js +18 -6
  134. package/dist/dialog/dialog.js.map +1 -1
  135. package/dist/dialog/utils/disable-accessibility-tree-outside.d.ts +1 -3
  136. package/dist/dialog/utils/disable-accessibility-tree-outside.d.ts.map +1 -1
  137. package/dist/dialog/utils/disable-accessibility-tree-outside.js +1 -15
  138. package/dist/dialog/utils/disable-accessibility-tree-outside.js.map +1 -1
  139. package/dist/dialog/utils/use-hide-on-interact-outside.d.ts +1 -1
  140. package/dist/dialog/utils/use-hide-on-interact-outside.js +2 -2
  141. package/dist/dialog/utils/use-hide-on-interact-outside.js.map +1 -1
  142. package/dist/dialog/utils/use-prevent-body-scroll.js +2 -1
  143. package/dist/dialog/utils/use-prevent-body-scroll.js.map +1 -1
  144. package/dist/dialog/utils/use-previous-mouse-down-ref.d.ts +1 -1
  145. package/dist/dialog/utils/use-previous-mouse-down-ref.d.ts.map +1 -1
  146. package/dist/{dialog-C__C-zX2.d.ts → dialog-D23r2ZWj.d.ts} +4 -4
  147. package/dist/{dialog-C__C-zX2.d.ts.map → dialog-D23r2ZWj.d.ts.map} +1 -1
  148. package/dist/{dialog-description-BCZJ1Kyd.d.ts → dialog-description-CJGxnEvk.d.ts} +2 -2
  149. package/dist/{dialog-description-BCZJ1Kyd.d.ts.map → dialog-description-CJGxnEvk.d.ts.map} +1 -1
  150. package/dist/{dialog-disclosure-DLD10zlb.d.ts → dialog-disclosure-DSESk5pv.d.ts} +3 -3
  151. package/dist/{dialog-disclosure-DLD10zlb.d.ts.map → dialog-disclosure-DSESk5pv.d.ts.map} +1 -1
  152. package/dist/{dialog-dismiss-CnwEbzc6.d.ts → dialog-dismiss-DW3XQYvp.d.ts} +3 -3
  153. package/dist/{dialog-dismiss-CnwEbzc6.d.ts.map → dialog-dismiss-DW3XQYvp.d.ts.map} +1 -1
  154. package/dist/{dialog-heading-DQvnOfZH.d.ts → dialog-heading-DGA5d8VH.d.ts} +3 -3
  155. package/dist/{dialog-heading-DQvnOfZH.d.ts.map → dialog-heading-DGA5d8VH.d.ts.map} +1 -1
  156. package/dist/disclosure/disclosure-content.js +1 -1
  157. package/dist/disclosure/disclosure-content.js.map +1 -1
  158. package/dist/disclosure/disclosure.d.ts +1 -1
  159. package/dist/disclosure/disclosure.js +1 -1
  160. package/dist/disclosure/disclosure.js.map +1 -1
  161. package/dist/{disclosure-CQ37hPVP.d.ts → disclosure-C4F4sCVZ.d.ts} +3 -3
  162. package/dist/{disclosure-CQ37hPVP.d.ts.map → disclosure-C4F4sCVZ.d.ts.map} +1 -1
  163. package/dist/focus-trap/focus-trap-region.d.ts +1 -1
  164. package/dist/focus-trap/focus-trap-region.d.ts.map +1 -1
  165. package/dist/focus-trap/focus-trap.d.ts +1 -1
  166. package/dist/focus-trap/focus-trap.d.ts.map +1 -1
  167. package/dist/focusable/focusable-container.d.ts +1 -1
  168. package/dist/focusable/focusable-container.d.ts.map +1 -1
  169. package/dist/focusable/focusable.d.ts +1 -1
  170. package/dist/focusable/focusable.js +49 -8
  171. package/dist/focusable/focusable.js.map +1 -1
  172. package/dist/{focusable-B00tOxtB.d.ts → focusable-dBZH13-T.d.ts} +2 -2
  173. package/dist/{focusable-B00tOxtB.d.ts.map → focusable-dBZH13-T.d.ts.map} +1 -1
  174. package/dist/form/form-checkbox.d.ts +1 -1
  175. package/dist/form/form-checkbox.d.ts.map +1 -1
  176. package/dist/form/form-checkbox.js +1 -1
  177. package/dist/form/form-checkbox.js.map +1 -1
  178. package/dist/form/form-control.d.ts +2 -2
  179. package/dist/form/form-control.d.ts.map +1 -1
  180. package/dist/form/form-control.js +1 -1
  181. package/dist/form/form-control.js.map +1 -1
  182. package/dist/form/form-description.d.ts +2 -2
  183. package/dist/form/form-description.d.ts.map +1 -1
  184. package/dist/form/form-description.js +1 -1
  185. package/dist/form/form-description.js.map +1 -1
  186. package/dist/form/form-error.d.ts +2 -2
  187. package/dist/form/form-error.d.ts.map +1 -1
  188. package/dist/form/form-error.js +1 -1
  189. package/dist/form/form-error.js.map +1 -1
  190. package/dist/form/form-field.d.ts +1 -1
  191. package/dist/form/form-field.d.ts.map +1 -1
  192. package/dist/form/form-group-label.d.ts +2 -2
  193. package/dist/form/form-group-label.d.ts.map +1 -1
  194. package/dist/form/form-group.d.ts +2 -2
  195. package/dist/form/form-group.d.ts.map +1 -1
  196. package/dist/form/form-input.d.ts +2 -2
  197. package/dist/form/form-input.d.ts.map +1 -1
  198. package/dist/form/form-input.js +1 -1
  199. package/dist/form/form-input.js.map +1 -1
  200. package/dist/form/form-label.d.ts +2 -2
  201. package/dist/form/form-label.d.ts.map +1 -1
  202. package/dist/form/form-label.js +1 -1
  203. package/dist/form/form-label.js.map +1 -1
  204. package/dist/form/form-push.d.ts +3 -3
  205. package/dist/form/form-push.d.ts.map +1 -1
  206. package/dist/form/form-push.js +1 -1
  207. package/dist/form/form-push.js.map +1 -1
  208. package/dist/form/form-radio-group.d.ts +1 -1
  209. package/dist/form/form-radio-group.d.ts.map +1 -1
  210. package/dist/form/form-radio.d.ts +1 -1
  211. package/dist/form/form-radio.d.ts.map +1 -1
  212. package/dist/form/form-radio.js +1 -1
  213. package/dist/form/form-radio.js.map +1 -1
  214. package/dist/form/form-remove.d.ts +16 -12
  215. package/dist/form/form-remove.d.ts.map +1 -1
  216. package/dist/form/form-remove.js +15 -11
  217. package/dist/form/form-remove.js.map +1 -1
  218. package/dist/form/form-reset.d.ts +2 -2
  219. package/dist/form/form-reset.d.ts.map +1 -1
  220. package/dist/form/form-reset.js +1 -1
  221. package/dist/form/form-reset.js.map +1 -1
  222. package/dist/form/form-submit.d.ts +2 -2
  223. package/dist/form/form-submit.d.ts.map +1 -1
  224. package/dist/form/form-submit.js +1 -1
  225. package/dist/form/form-submit.js.map +1 -1
  226. package/dist/form/form.d.ts +1 -1
  227. package/dist/form/form.d.ts.map +1 -1
  228. package/dist/form/form.js +1 -1
  229. package/dist/form/form.js.map +1 -1
  230. package/dist/group/group-label.d.ts +1 -1
  231. package/dist/group/group.d.ts +1 -1
  232. package/dist/{group-label-C16IDs1b.d.ts → group-label-BKYqD4Sj.d.ts} +2 -2
  233. package/dist/{group-label-C16IDs1b.d.ts.map → group-label-BKYqD4Sj.d.ts.map} +1 -1
  234. package/dist/{group-CamegDJA.d.ts → group-nGD9e6Dj.d.ts} +2 -2
  235. package/dist/{group-CamegDJA.d.ts.map → group-nGD9e6Dj.d.ts.map} +1 -1
  236. package/dist/heading/heading.d.ts +1 -1
  237. package/dist/heading/heading.js +2 -2
  238. package/dist/heading/heading.js.map +1 -1
  239. package/dist/{heading-zY9g_9K-.d.ts → heading-D_AmeqL5.d.ts} +2 -2
  240. package/dist/{heading-zY9g_9K-.d.ts.map → heading-D_AmeqL5.d.ts.map} +1 -1
  241. package/dist/hovercard/hovercard-anchor.d.ts +2 -2
  242. package/dist/hovercard/hovercard-anchor.d.ts.map +1 -1
  243. package/dist/hovercard/hovercard-anchor.js +1 -1
  244. package/dist/hovercard/hovercard-anchor.js.map +1 -1
  245. package/dist/hovercard/hovercard-arrow.d.ts +1 -1
  246. package/dist/hovercard/hovercard-arrow.d.ts.map +1 -1
  247. package/dist/hovercard/hovercard-description.d.ts +2 -2
  248. package/dist/hovercard/hovercard-description.d.ts.map +1 -1
  249. package/dist/hovercard/hovercard-disclosure.d.ts +2 -2
  250. package/dist/hovercard/hovercard-disclosure.d.ts.map +1 -1
  251. package/dist/hovercard/hovercard-disclosure.js +4 -4
  252. package/dist/hovercard/hovercard-disclosure.js.map +1 -1
  253. package/dist/hovercard/hovercard-dismiss.d.ts +2 -2
  254. package/dist/hovercard/hovercard-dismiss.d.ts.map +1 -1
  255. package/dist/hovercard/hovercard-heading.d.ts +2 -2
  256. package/dist/hovercard/hovercard-heading.d.ts.map +1 -1
  257. package/dist/hovercard/hovercard.d.ts +1 -1
  258. package/dist/hovercard/hovercard.js +2 -2
  259. package/dist/hovercard/hovercard.js.map +1 -1
  260. package/dist/menu/menu-arrow.d.ts +2 -2
  261. package/dist/menu/menu-arrow.d.ts.map +1 -1
  262. package/dist/menu/menu-bar-provider.js +1 -1
  263. package/dist/menu/menu-bar-provider.js.map +1 -1
  264. package/dist/menu/menu-bar-store.d.ts +3 -3
  265. package/dist/menu/menu-bar-store.js +3 -3
  266. package/dist/menu/menu-bar-store.js.map +1 -1
  267. package/dist/menu/menu-bar.d.ts +1 -1
  268. package/dist/menu/menu-bar.d.ts.map +1 -1
  269. package/dist/menu/menu-bar.js +1 -1
  270. package/dist/menu/menu-bar.js.map +1 -1
  271. package/dist/menu/menu-button-arrow.d.ts +2 -2
  272. package/dist/menu/menu-button-arrow.d.ts.map +1 -1
  273. package/dist/menu/menu-button.d.ts +3 -3
  274. package/dist/menu/menu-button.d.ts.map +1 -1
  275. package/dist/menu/menu-button.js +1 -1
  276. package/dist/menu/menu-button.js.map +1 -1
  277. package/dist/menu/menu-context.d.ts +10 -3
  278. package/dist/menu/menu-context.d.ts.map +1 -1
  279. package/dist/menu/menu-context.js +8 -1
  280. package/dist/menu/menu-context.js.map +1 -1
  281. package/dist/menu/menu-description.d.ts +2 -2
  282. package/dist/menu/menu-description.d.ts.map +1 -1
  283. package/dist/menu/menu-dismiss.d.ts +2 -2
  284. package/dist/menu/menu-dismiss.d.ts.map +1 -1
  285. package/dist/menu/menu-group-label.d.ts +2 -2
  286. package/dist/menu/menu-group-label.d.ts.map +1 -1
  287. package/dist/menu/menu-group.d.ts +2 -2
  288. package/dist/menu/menu-group.d.ts.map +1 -1
  289. package/dist/menu/menu-heading.d.ts +2 -2
  290. package/dist/menu/menu-heading.d.ts.map +1 -1
  291. package/dist/menu/menu-item-check.d.ts +2 -2
  292. package/dist/menu/menu-item-check.d.ts.map +1 -1
  293. package/dist/menu/menu-item-checkbox.d.ts +2 -2
  294. package/dist/menu/menu-item-checkbox.d.ts.map +1 -1
  295. package/dist/menu/menu-item-checkbox.js +1 -1
  296. package/dist/menu/menu-item-checkbox.js.map +1 -1
  297. package/dist/menu/menu-item-radio.d.ts +2 -2
  298. package/dist/menu/menu-item-radio.d.ts.map +1 -1
  299. package/dist/menu/menu-item-radio.js +1 -1
  300. package/dist/menu/menu-item-radio.js.map +1 -1
  301. package/dist/menu/menu-item.d.ts +5 -5
  302. package/dist/menu/menu-item.d.ts.map +1 -1
  303. package/dist/menu/menu-item.js +8 -4
  304. package/dist/menu/menu-item.js.map +1 -1
  305. package/dist/menu/menu-list.d.ts +4 -4
  306. package/dist/menu/menu-list.d.ts.map +1 -1
  307. package/dist/menu/menu-list.js +6 -2
  308. package/dist/menu/menu-list.js.map +1 -1
  309. package/dist/menu/menu-provider.d.ts +1 -1
  310. package/dist/menu/menu-separator.d.ts +2 -2
  311. package/dist/menu/menu-separator.d.ts.map +1 -1
  312. package/dist/menu/menu-store.d.ts +1 -1
  313. package/dist/menu/menu.js +1 -1
  314. package/dist/menu/menu.js.map +1 -1
  315. package/dist/{menu-store-0CKKmNek.d.ts → menu-store-BpTJdcL8.d.ts} +2 -2
  316. package/dist/{menu-store-0CKKmNek.d.ts.map → menu-store-BpTJdcL8.d.ts.map} +1 -1
  317. package/dist/menubar/menubar-context.d.ts +2 -3
  318. package/dist/menubar/menubar-context.d.ts.map +1 -1
  319. package/dist/menubar/menubar-context.js +1 -3
  320. package/dist/menubar/menubar-context.js.map +1 -1
  321. package/dist/menubar/menubar-provider.d.ts +1 -1
  322. package/dist/menubar/menubar-store.d.ts +1 -1
  323. package/dist/menubar/menubar-store.js +2 -2
  324. package/dist/menubar/menubar-store.js.map +1 -1
  325. package/dist/menubar/menubar.d.ts +3 -3
  326. package/dist/menubar/menubar.d.ts.map +1 -1
  327. package/dist/{menubar-store-3h0eNIbS.d.ts → menubar-store-C553OKBw.d.ts} +3 -3
  328. package/dist/{menubar-store-3h0eNIbS.d.ts.map → menubar-store-C553OKBw.d.ts.map} +1 -1
  329. package/dist/popover/popover-anchor.d.ts +1 -1
  330. package/dist/popover/popover-arrow.d.ts +1 -1
  331. package/dist/popover/popover-arrow.d.ts.map +1 -1
  332. package/dist/popover/popover-arrow.js +4 -4
  333. package/dist/popover/popover-arrow.js.map +1 -1
  334. package/dist/popover/popover-description.d.ts +1 -1
  335. package/dist/popover/popover-disclosure-arrow.d.ts +1 -1
  336. package/dist/popover/popover-disclosure-arrow.d.ts.map +1 -1
  337. package/dist/popover/popover-disclosure-arrow.js +1 -1
  338. package/dist/popover/popover-disclosure-arrow.js.map +1 -1
  339. package/dist/popover/popover-disclosure.d.ts +3 -3
  340. package/dist/popover/popover-disclosure.d.ts.map +1 -1
  341. package/dist/popover/popover-disclosure.js +1 -1
  342. package/dist/popover/popover-disclosure.js.map +1 -1
  343. package/dist/popover/popover-dismiss.d.ts +1 -1
  344. package/dist/popover/popover-heading.d.ts +1 -1
  345. package/dist/popover/popover.d.ts +1 -1
  346. package/dist/popover/popover.js +2 -2
  347. package/dist/popover/popover.js.map +1 -1
  348. package/dist/{popover-CCqiRKqg.d.ts → popover-B9PxE5iP.d.ts} +10 -2
  349. package/dist/popover-B9PxE5iP.d.ts.map +1 -0
  350. package/dist/{popover-anchor-PgfeXyzs.d.ts → popover-anchor-W18KUmuM.d.ts} +2 -2
  351. package/dist/{popover-anchor-PgfeXyzs.d.ts.map → popover-anchor-W18KUmuM.d.ts.map} +1 -1
  352. package/dist/{popover-description-DU753dah.d.ts → popover-description-DbW4mVBb.d.ts} +3 -3
  353. package/dist/{popover-description-DU753dah.d.ts.map → popover-description-DbW4mVBb.d.ts.map} +1 -1
  354. package/dist/{popover-dismiss-DPeI6Zse.d.ts → popover-dismiss-CQFvuLzJ.d.ts} +3 -3
  355. package/dist/{popover-dismiss-DPeI6Zse.d.ts.map → popover-dismiss-CQFvuLzJ.d.ts.map} +1 -1
  356. package/dist/{popover-heading-DGsr6D5W.d.ts → popover-heading-DC8rYnwo.d.ts} +3 -3
  357. package/dist/{popover-heading-DGsr6D5W.d.ts.map → popover-heading-DC8rYnwo.d.ts.map} +1 -1
  358. package/dist/portal/portal.d.ts +1 -1
  359. package/dist/{portal-CMBWiayp.d.ts → portal-CKFTfCWH.d.ts} +2 -2
  360. package/dist/{portal-CMBWiayp.d.ts.map → portal-CKFTfCWH.d.ts.map} +1 -1
  361. package/dist/radio/radio-group.d.ts +2 -2
  362. package/dist/radio/radio-group.d.ts.map +1 -1
  363. package/dist/radio/radio-group.js +1 -1
  364. package/dist/radio/radio-group.js.map +1 -1
  365. package/dist/radio/radio.d.ts +2 -2
  366. package/dist/radio/radio.d.ts.map +1 -1
  367. package/dist/select/select-arrow.d.ts +1 -1
  368. package/dist/select/select-arrow.d.ts.map +1 -1
  369. package/dist/select/select-dismiss.d.ts +2 -2
  370. package/dist/select/select-dismiss.d.ts.map +1 -1
  371. package/dist/select/select-group-label.d.ts +1 -1
  372. package/dist/select/select-group-label.d.ts.map +1 -1
  373. package/dist/select/select-group.d.ts +1 -1
  374. package/dist/select/select-group.d.ts.map +1 -1
  375. package/dist/select/select-heading.d.ts +2 -2
  376. package/dist/select/select-heading.d.ts.map +1 -1
  377. package/dist/select/select-item-check.d.ts +1 -1
  378. package/dist/select/select-item-check.d.ts.map +1 -1
  379. package/dist/select/select-item.d.ts +3 -3
  380. package/dist/select/select-item.d.ts.map +1 -1
  381. package/dist/select/select-item.js +1 -1
  382. package/dist/select/select-item.js.map +1 -1
  383. package/dist/select/select-label.d.ts +1 -1
  384. package/dist/select/select-label.d.ts.map +1 -1
  385. package/dist/select/select-label.js +1 -1
  386. package/dist/select/select-label.js.map +1 -1
  387. package/dist/select/select-list.d.ts +3 -3
  388. package/dist/select/select-list.d.ts.map +1 -1
  389. package/dist/select/select-list.js +1 -1
  390. package/dist/select/select-list.js.map +1 -1
  391. package/dist/select/select-popover.d.ts +1 -1
  392. package/dist/select/select-renderer.d.ts +2 -2
  393. package/dist/select/select-renderer.d.ts.map +1 -1
  394. package/dist/select/select-row.d.ts +1 -1
  395. package/dist/select/select-row.d.ts.map +1 -1
  396. package/dist/select/select-row.js +1 -1
  397. package/dist/select/select-row.js.map +1 -1
  398. package/dist/select/select-separator.d.ts +1 -1
  399. package/dist/select/select-separator.d.ts.map +1 -1
  400. package/dist/select/select.d.ts +2 -2
  401. package/dist/select/select.d.ts.map +1 -1
  402. package/dist/select/select.js +1 -1
  403. package/dist/select/select.js.map +1 -1
  404. package/dist/separator/separator.d.ts +1 -1
  405. package/dist/{separator--ozQfMcK.d.ts → separator-BnvSVwBa.d.ts} +2 -2
  406. package/dist/{separator--ozQfMcK.d.ts.map → separator-BnvSVwBa.d.ts.map} +1 -1
  407. package/dist/tab/tab-list.d.ts +2 -2
  408. package/dist/tab/tab-list.d.ts.map +1 -1
  409. package/dist/tab/tab-list.js +1 -1
  410. package/dist/tab/tab-list.js.map +1 -1
  411. package/dist/tab/tab-panel.d.ts +3 -3
  412. package/dist/tab/tab-panel.d.ts.map +1 -1
  413. package/dist/tab/tab-panel.js +2 -3
  414. package/dist/tab/tab-panel.js.map +1 -1
  415. package/dist/tab/tab.d.ts +2 -2
  416. package/dist/tab/tab.d.ts.map +1 -1
  417. package/dist/tab/tab.js +1 -1
  418. package/dist/tab/tab.js.map +1 -1
  419. package/dist/tag/tag-input.d.ts +2 -2
  420. package/dist/tag/tag-input.d.ts.map +1 -1
  421. package/dist/tag/tag-input.js +1 -2
  422. package/dist/tag/tag-input.js.map +1 -1
  423. package/dist/tag/tag-list-label.d.ts +2 -2
  424. package/dist/tag/tag-list-label.d.ts.map +1 -1
  425. package/dist/tag/tag-list-label.js +1 -1
  426. package/dist/tag/tag-list-label.js.map +1 -1
  427. package/dist/tag/tag-list.d.ts +2 -2
  428. package/dist/tag/tag-list.d.ts.map +1 -1
  429. package/dist/tag/tag-list.js +1 -1
  430. package/dist/tag/tag-list.js.map +1 -1
  431. package/dist/tag/tag-remove.d.ts +1 -1
  432. package/dist/tag/tag-remove.d.ts.map +1 -1
  433. package/dist/tag/tag-remove.js +1 -2
  434. package/dist/tag/tag-remove.js.map +1 -1
  435. package/dist/tag/tag-value.js +1 -1
  436. package/dist/tag/tag-value.js.map +1 -1
  437. package/dist/tag/tag-values.js +1 -1
  438. package/dist/tag/tag-values.js.map +1 -1
  439. package/dist/tag/tag.d.ts +2 -2
  440. package/dist/tag/tag.d.ts.map +1 -1
  441. package/dist/tag/tag.js +1 -1
  442. package/dist/tag/tag.js.map +1 -1
  443. package/dist/toolbar/toolbar-container.d.ts +1 -1
  444. package/dist/toolbar/toolbar-container.d.ts.map +1 -1
  445. package/dist/toolbar/toolbar-input.d.ts +1 -1
  446. package/dist/toolbar/toolbar-input.d.ts.map +1 -1
  447. package/dist/toolbar/toolbar-item.d.ts +2 -2
  448. package/dist/toolbar/toolbar-item.d.ts.map +1 -1
  449. package/dist/toolbar/toolbar-separator.d.ts +1 -1
  450. package/dist/toolbar/toolbar-separator.d.ts.map +1 -1
  451. package/dist/toolbar/toolbar.d.ts +2 -2
  452. package/dist/toolbar/toolbar.d.ts.map +1 -1
  453. package/dist/tooltip/tooltip-anchor.d.ts +1 -1
  454. package/dist/tooltip/tooltip-anchor.d.ts.map +1 -1
  455. package/dist/tooltip/tooltip-anchor.js +15 -4
  456. package/dist/tooltip/tooltip-anchor.js.map +1 -1
  457. package/dist/tooltip/tooltip-arrow.d.ts +1 -1
  458. package/dist/tooltip/tooltip-arrow.d.ts.map +1 -1
  459. package/dist/tooltip/tooltip-arrow.js +1 -1
  460. package/dist/tooltip/tooltip-arrow.js.map +1 -1
  461. package/dist/tooltip/tooltip.js +1 -1
  462. package/dist/tooltip/tooltip.js.map +1 -1
  463. package/dist/visually-hidden/visually-hidden.d.ts +1 -1
  464. package/dist/visually-hidden/visually-hidden.d.ts.map +1 -1
  465. package/package.json +8 -8
  466. package/src/collection/collection-item-offscreen.tsx +1 -1
  467. package/src/combobox/combobox.tsx +47 -1
  468. package/src/composite/composite-container.tsx +2 -2
  469. package/src/composite/composite-hover.tsx +8 -14
  470. package/src/composite/composite-item-offscreen.tsx +2 -2
  471. package/src/composite/composite-item.tsx +2 -2
  472. package/src/composite/composite-renderer.tsx +2 -2
  473. package/src/composite/composite-row.tsx +2 -2
  474. package/src/composite/composite-separator.tsx +2 -2
  475. package/src/composite/composite-typeahead.tsx +2 -2
  476. package/src/composite/composite.tsx +3 -3
  477. package/src/dialog/dialog.tsx +33 -10
  478. package/src/dialog/utils/disable-accessibility-tree-outside.ts +0 -25
  479. package/src/dialog/utils/use-hide-on-interact-outside.ts +3 -2
  480. package/src/focusable/focusable.tsx +53 -10
  481. package/src/form/form-remove.tsx +14 -10
  482. package/src/form/form.tsx +3 -1
  483. package/src/heading/heading.tsx +2 -5
  484. package/src/hovercard/hovercard-disclosure.tsx +18 -4
  485. package/src/hovercard/hovercard.tsx +1 -1
  486. package/src/menu/menu-bar-store.ts +2 -2
  487. package/src/menu/menu-context.tsx +8 -0
  488. package/src/menu/menu-item.tsx +18 -1
  489. package/src/menu/menu-list.tsx +15 -0
  490. package/src/menubar/menubar-context.tsx +0 -5
  491. package/src/menubar/menubar-store.ts +2 -2
  492. package/src/popover/popover-arrow.tsx +3 -3
  493. package/src/popover/popover.tsx +8 -0
  494. package/src/tab/tab-panel.tsx +1 -1
  495. package/src/tag/tag-input.tsx +0 -1
  496. package/src/tag/tag-remove.tsx +0 -1
  497. package/src/tooltip/tooltip-anchor.tsx +23 -8
  498. package/dist/collection-renderer-DsPD9ksD.d.ts.map +0 -1
  499. package/dist/popover-CCqiRKqg.d.ts.map +0 -1
  500. package/src/hovercard/utils/__tests__/polygon-test.ts +0 -66
@@ -1 +1 @@
1
- {"version":3,"file":"tag.js","names":[],"sources":["../../src/tag/tag.tsx"],"sourcesContent":["import {\n useBooleanEvent,\n useEvent,\n useId,\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n memo,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { invariant, isApple } from \"@ariakit/utils\";\nimport type { BooleanOrCallback } from \"@ariakit/utils\";\nimport type { ElementType, KeyboardEvent } from \"react\";\nimport { useCallback, useState } from \"react\";\nimport type { CompositeItemOptions } from \"../composite/composite-item.tsx\";\nimport { useCompositeItem } from \"../composite/composite-item.tsx\";\nimport {\n TagRemoveIdContext,\n TagValueContext,\n useTagContext,\n} from \"./tag-context.tsx\";\nimport type { TagStore } from \"./tag-store.ts\";\nimport { useTouchDevice } from \"./utils.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\n/**\n * Returns props to create a `Tag` component.\n * @see https://ariakit.com/components/tag\n * @example\n * ```jsx\n * const props = useTag();\n * <Role.div {...props} />\n * ```\n */\nexport const useTag = createHook<TagName, TagOptions>(function useTag({\n store,\n value,\n getItem: getItemProp,\n removeOnKeyPress = true,\n ...props\n}) {\n const context = useTagContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"Tag must be wrapped in a TagList component.\",\n );\n\n const id = useId(props.id);\n const touchDevice = useTouchDevice();\n\n const getItem = useCallback<NonNullable<CompositeItemOptions[\"getItem\"]>>(\n (item) => {\n const nextItem = { ...item, value };\n if (getItemProp) {\n return getItemProp(nextItem);\n }\n return nextItem;\n },\n [value, getItemProp],\n );\n\n const onKeyDownProp = props.onKeyDown;\n const removeOnKeyPressProp = useBooleanEvent(removeOnKeyPress);\n\n const onKeyDown = useEvent((event: KeyboardEvent<HTMLType>) => {\n onKeyDownProp?.(event);\n if (event.defaultPrevented) return;\n const { inputElement } = store.getState();\n\n const isBackspace = event.key === \"Backspace\";\n const isRemoveKey = isBackspace || event.key === \"Delete\";\n\n if (isRemoveKey && removeOnKeyPressProp(event)) {\n event.preventDefault();\n store.removeValue(value);\n const nextId = isBackspace\n ? store.previous() || store.next()\n : store.next();\n store.move(nextId);\n }\n\n const isPrintableKey =\n !event.ctrlKey && !event.metaKey && event.key.length === 1;\n\n // If it's cmd/ctrl+v, focus on the input element so the value is pasted\n // there.\n const pc = !isApple();\n const v = event.key === \"v\" || event.key === \"V\";\n const mod = pc ? event.ctrlKey : event.metaKey;\n const isPaste = mod && v;\n\n if (isPrintableKey || isPaste) {\n inputElement?.focus();\n }\n });\n\n const [removeId, setRemoveId] = useState<string>();\n\n props = useWrapElement(\n props,\n (element) => (\n <TagValueContext.Provider value={value}>\n <TagRemoveIdContext.Provider value={setRemoveId}>\n {element}\n </TagRemoveIdContext.Provider>\n </TagValueContext.Provider>\n ),\n [value],\n );\n\n props = {\n role: !touchDevice ? \"option\" : \"listitem\",\n children: value,\n \"aria-describedby\": removeId,\n ...props,\n id,\n onKeyDown,\n };\n\n props = useCompositeItem<TagName>({\n store,\n ...props,\n getItem,\n });\n\n return props;\n});\n\n/**\n * Renders a tag element inside a\n * [`TagList`](https://ariakit.com/reference/tag-list) wrapper.\n *\n * The user can remove the tag by pressing `Backspace` or `Delete` keys when the\n * tag is focused. The\n * [`removeOnKeyPress`](https://ariakit.com/reference/tag#removeonkeypress) prop\n * can be used to disable this behavior.\n *\n * When a printable key is pressed, the focus is automatically moved to the\n * input element.\n * @see https://ariakit.com/components/tag\n * @example\n * ```jsx {7-10}\n * <TagProvider>\n * <TagListLabel>Invitees</TagListLabel>\n * <TagList>\n * <TagValues>\n * {(values) =>\n * values.map((value) => (\n * <Tag key={value} value={value}>\n * {value}\n * <TagRemove />\n * </Tag>\n * ))\n * }\n * </TagValues>\n * <TagInput />\n * </TagList>\n * </TagProvider>\n * ```\n */\nexport const Tag = memo(\n forwardRef(function Tag(props: TagProps) {\n const htmlProps = useTag(props);\n return createElement(TagName, htmlProps);\n }),\n);\n\nexport interface TagOptions<\n T extends ElementType = TagName,\n> extends CompositeItemOptions<T> {\n /**\n * Object returned by the\n * [`useTagStore`](https://ariakit.com/reference/use-tag-store) hook. If not\n * provided, the closest [`TagList`](https://ariakit.com/reference/tag-list)\n * component's context will be used.\n */\n store?: TagStore;\n /**\n * The unique value of the tag. This is automatically rendered as the tag's\n * content if no children are provided.\n */\n value: string;\n /**\n * Defines the behavior of the `Backspace` and `Delete` keys when the tag is\n * focused. If `true`, the tag is removed. If it's a function, it's invoked\n * with the key event and should return a boolean.\n * @default true\n */\n removeOnKeyPress?: BooleanOrCallback<KeyboardEvent<HTMLType>>;\n}\n\nexport type TagProps<T extends ElementType = TagName> = Props<T, TagOptions<T>>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;MA6CE,SAAM,WAAU,SAAc,OAAA,EAAA,OAAA,OAAA,SAAA,aAAA,mBAAA,MAAA,GAAA,SAAA;CAC9B,MAAA,UAAQ,cAAS;CAEjB,QAAA,SAGI;CAGJ,UAAM,OAAW,6CAAQ;CACzB,MAAM,KAAA,MAAA,MAAc,EAAA;CAEpB,MAAM,cAAU,eACb;OACC,UAAM,aAAW,SAAA;QAAK,WAAA;GAAM,GAAA;GAAM;EAClC;EAGA,IAAA,aAAO,OAAA,YAAA,QAAA;EACT,OACC;CAGH,GAAA,CAAA,OAAM,WAAgB,CAAA;CACtB,MAAM,gBAAA,MAAA;CAEN,MAAM,uBAAsB,gBAAmC,gBAAA;OAC7D,YAAgB,UAAK,UAAA;EACrB,gBAAU,KAAA;EACV,IAAA,MAAQ,kBAAiB;EAEzB,MAAM,EAAA,iBAAc,MAAM,SAAQ;EAGlC,MAFoB,cAAe,MAAM,QAAQ;OAG/C,eAAM,MAAe,QAAA,aAAA,qBAAA,KAAA,GAAA;GACrB,MAAM,eAAY;GAClB,MAAM,YAAS,KAAA;GAGf,MAAM,SAAK,cAAM,MAAA,SAAA,KAAA,MAAA,KAAA,IAAA,MAAA,KAAA;GACnB,MAAA,KAAA,MAAA;EAEA;EAKA,MAAM,iBAAc,CAAA,MAAA,WAAA,CAAA,MAAA,WAAA,MAAA,IAAA,WAAA;EACpB,MAAM,KAAI,CAAA,QAAM;EAEhB,MAAM,IAAA,MAAA,QADW,OAAM,MAAA,QAAgB;EAGvC,MAAI,WAAA,KAAkB,MAAA,UACpB,MAAA,YAAoB;EAEvB,IAAA,kBAAA,SAAA,cAAA,MAAA;CAED,CAAA;CAEA,MAAA,CAAA,UAAQ,eAEL,SAAA;SACkC,eAAA,QAAA,YAAA,oBAAA,gBAAA,UAAA;;YACK,oBAAA,mBAAA,UAAA;;GAEP,UAAA;EACL,CAAA;CAK9B,CAAA,GAAA,CAAA,KAAQ,CAAA;SACC;EACP,MAAA,CAAA,cAAU,WAAA;EACV,UAAA;EACA,oBAAG;EACH,GAAA;EACA;EACF;CAEA;SACE,iBAAA;EACA;EACA,GAAA;EACD;CAED,CAAA;CACD,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqCG,MAAO,KAAA,WAAc,SADH,IAAO,OACc;CACxC,OACH,cAAA,SAAA,OAAA,KAAA,CAAA"}
1
+ {"version":3,"file":"tag.js","names":[],"sources":["../../src/tag/tag.tsx"],"sourcesContent":["import {\n useBooleanEvent,\n useEvent,\n useId,\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n memo,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { invariant, isApple } from \"@ariakit/utils\";\nimport type { BooleanOrCallback } from \"@ariakit/utils\";\nimport type { ElementType, KeyboardEvent } from \"react\";\nimport { useCallback, useState } from \"react\";\nimport type { CompositeItemOptions } from \"../composite/composite-item.tsx\";\nimport { useCompositeItem } from \"../composite/composite-item.tsx\";\nimport {\n TagRemoveIdContext,\n TagValueContext,\n useTagContext,\n} from \"./tag-context.tsx\";\nimport type { TagStore } from \"./tag-store.ts\";\nimport { useTouchDevice } from \"./utils.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\n/**\n * Returns props to create a `Tag` component.\n * @see https://ariakit.com/components/tag\n * @example\n * ```jsx\n * const props = useTag();\n * <Role.div {...props} />\n * ```\n */\nexport const useTag = createHook<TagName, TagOptions>(function useTag({\n store,\n value,\n getItem: getItemProp,\n removeOnKeyPress = true,\n ...props\n}) {\n const context = useTagContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"Tag must be wrapped in a TagList component.\",\n );\n\n const id = useId(props.id);\n const touchDevice = useTouchDevice();\n\n const getItem = useCallback<NonNullable<CompositeItemOptions[\"getItem\"]>>(\n (item) => {\n const nextItem = { ...item, value };\n if (getItemProp) {\n return getItemProp(nextItem);\n }\n return nextItem;\n },\n [value, getItemProp],\n );\n\n const onKeyDownProp = props.onKeyDown;\n const removeOnKeyPressProp = useBooleanEvent(removeOnKeyPress);\n\n const onKeyDown = useEvent((event: KeyboardEvent<HTMLType>) => {\n onKeyDownProp?.(event);\n if (event.defaultPrevented) return;\n const { inputElement } = store.getState();\n\n const isBackspace = event.key === \"Backspace\";\n const isRemoveKey = isBackspace || event.key === \"Delete\";\n\n if (isRemoveKey && removeOnKeyPressProp(event)) {\n event.preventDefault();\n store.removeValue(value);\n const nextId = isBackspace\n ? store.previous() || store.next()\n : store.next();\n store.move(nextId);\n }\n\n const isPrintableKey =\n !event.ctrlKey && !event.metaKey && event.key.length === 1;\n\n // If it's cmd/ctrl+v, focus on the input element so the value is pasted\n // there.\n const pc = !isApple();\n const v = event.key === \"v\" || event.key === \"V\";\n const mod = pc ? event.ctrlKey : event.metaKey;\n const isPaste = mod && v;\n\n if (isPrintableKey || isPaste) {\n inputElement?.focus();\n }\n });\n\n const [removeId, setRemoveId] = useState<string>();\n\n props = useWrapElement(\n props,\n (element) => (\n <TagValueContext.Provider value={value}>\n <TagRemoveIdContext.Provider value={setRemoveId}>\n {element}\n </TagRemoveIdContext.Provider>\n </TagValueContext.Provider>\n ),\n [value],\n );\n\n props = {\n role: !touchDevice ? \"option\" : \"listitem\",\n children: value,\n \"aria-describedby\": removeId,\n ...props,\n id,\n onKeyDown,\n };\n\n props = useCompositeItem<TagName>({\n store,\n ...props,\n getItem,\n });\n\n return props;\n});\n\n/**\n * Renders a tag element inside a\n * [`TagList`](https://ariakit.com/reference/tag-list) wrapper.\n *\n * The user can remove the tag by pressing `Backspace` or `Delete` keys when the\n * tag is focused. The\n * [`removeOnKeyPress`](https://ariakit.com/reference/tag#removeonkeypress) prop\n * can be used to disable this behavior.\n *\n * When a printable key is pressed, the focus is automatically moved to the\n * input element.\n * @see https://ariakit.com/components/tag\n * @example\n * ```jsx {7-10}\n * <TagProvider>\n * <TagListLabel>Invitees</TagListLabel>\n * <TagList>\n * <TagValues>\n * {(values) =>\n * values.map((value) => (\n * <Tag key={value} value={value}>\n * {value}\n * <TagRemove />\n * </Tag>\n * ))\n * }\n * </TagValues>\n * <TagInput />\n * </TagList>\n * </TagProvider>\n * ```\n */\nexport const Tag = memo(\n forwardRef(function Tag(props: TagProps) {\n const htmlProps = useTag(props);\n return createElement(TagName, htmlProps);\n }),\n);\n\nexport interface TagOptions<\n T extends ElementType = TagName,\n> extends CompositeItemOptions<T> {\n /**\n * Object returned by the\n * [`useTagStore`](https://ariakit.com/reference/use-tag-store) hook. If not\n * provided, the closest [`TagList`](https://ariakit.com/reference/tag-list)\n * component's context will be used.\n */\n store?: TagStore;\n /**\n * The unique value of the tag. This is automatically rendered as the tag's\n * content if no children are provided.\n */\n value: string;\n /**\n * Defines the behavior of the `Backspace` and `Delete` keys when the tag is\n * focused. If `true`, the tag is removed. If it's a function, it's invoked\n * with the key event and should return a boolean.\n * @default true\n */\n removeOnKeyPress?: BooleanOrCallback<KeyboardEvent<HTMLType>>;\n}\n\nexport type TagProps<T extends ElementType = TagName> = Props<T, TagOptions<T>>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;MA6CE,SAAM,WAAU,SAAc,OAAA,EAAA,OAAA,OAAA,SAAA,aAAA,mBAAA,MAAA,GAAA,SAAA;CAC9B,MAAA,UAAQ,cAAS;CAEjB,QAAA,SAEE;CAIF,UAAM,OAAW,QAAQ,IAAA,aAAA,gBAAA,6CAAA;CACzB,MAAM,KAAA,MAAA,MAAc,EAAA;CAEpB,MAAM,cAAU,eACb;OACC,UAAM,aAAW,SAAA;QAAK,WAAA;GAAM,GAAA;GAAM;EAClC;EAGA,IAAA,aAAO,OAAA,YAAA,QAAA;EACT,OACC;CAGH,GAAA,CAAA,OAAM,WAAgB,CAAA;CACtB,MAAM,gBAAA,MAAA;CAEN,MAAM,uBAAsB,gBAAmC,gBAAA;OAC7D,YAAgB,UAAK,UAAA;EACrB,gBAAU,KAAA;EACV,IAAA,MAAQ,kBAAiB;EAEzB,MAAM,EAAA,iBAAc,MAAM,SAAQ;EAGlC,MAFoB,cAAe,MAAM,QAAQ;OAG/C,eAAM,MAAe,QAAA,aAAA,qBAAA,KAAA,GAAA;GACrB,MAAM,eAAY;GAClB,MAAM,YAAS,KAAA;GAGf,MAAM,SAAK,cAAM,MAAA,SAAA,KAAA,MAAA,KAAA,IAAA,MAAA,KAAA;GACnB,MAAA,KAAA,MAAA;EAEA;EAKA,MAAM,iBAAc,CAAA,MAAA,WAAA,CAAA,MAAA,WAAA,MAAA,IAAA,WAAA;EACpB,MAAM,KAAI,CAAA,QAAM;EAEhB,MAAM,IAAA,MAAA,QADW,OAAM,MAAA,QAAgB;EAGvC,MAAI,WAAA,KAAkB,MAAA,UACpB,MAAA,YAAoB;EAEvB,IAAA,kBAAA,SAAA,cAAA,MAAA;CAED,CAAA;CAEA,MAAA,CAAA,UAAQ,eAEL,SAAA;SACkC,eAAA,QAAA,YAAA,oBAAA,gBAAA,UAAA;;YACK,oBAAA,mBAAA,UAAA;;GAEP,UAAA;EACL,CAAA;CAK9B,CAAA,GAAA,CAAA,KAAQ,CAAA;SACC;EACP,MAAA,CAAA,cAAU,WAAA;EACV,UAAA;EACA,oBAAG;EACH,GAAA;EACA;EACF;CAEA;SACE,iBAAA;EACA;EACA,GAAA;EACD;CAED,CAAA;CACD,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqCG,MAAO,KAAA,WAAc,SADH,IAAO,OACc;CACxC,OACH,cAAA,SAAA,OAAA,KAAA,CAAA"}
@@ -33,7 +33,7 @@ declare const useToolbarContainer: import("@ariakit/react-utils").Hook<"div", To
33
33
  * </Toolbar>
34
34
  * ```
35
35
  */
36
- declare const ToolbarContainer: (props: ToolbarContainerProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
36
+ declare const ToolbarContainer: (props: ToolbarContainerProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
37
37
  interface ToolbarContainerOptions<T extends ElementType = TagName> extends ToolbarItemOptions<T>, Omit<CompositeContainerOptions<T>, "store"> {}
38
38
  type ToolbarContainerProps<T extends ElementType = TagName> = Props<T, ToolbarContainerOptions<T>>;
39
39
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-container.d.ts","names":["Props","ElementType","CompositeContainerOptions","ToolbarItemOptions","TagName","useToolbarContainer","ToolbarContainerOptions","Hook","ToolbarContainer","ToolbarContainerProps","props","ReactElement","JSXElementConstructor","T","Omit"],"sources":["../../src/toolbar/toolbar-container.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAe7B;;;;AAjB6D,cAiBxCC,mBAAAA,iCAAoDE,IAAAA,QAAYD,uBAAuB;AAa5G;;;;;;;;;AAAyJ;AACzJ;;AADA,cAAqBE,gBAAAA,GAAmBE,KAAAA,EAAOD,qBAAqB,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACnHN,uBAAAA,WAAkCL,WAAAA,GAAcG,OAAAA,UAAiBD,kBAAAA,CAAmBU,CAAAA,GAAIC,IAAAA,CAAKZ,yBAAAA,CAA0BW,CAAAA;AAAAA,KAE5HJ,qBAAAA,WAAgCR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,uBAAAA,CAAwBO,CAAAA"}
1
+ {"version":3,"file":"toolbar-container.d.ts","names":["Props","ElementType","CompositeContainerOptions","ToolbarItemOptions","TagName","useToolbarContainer","ToolbarContainerOptions","Hook","ToolbarContainer","ToolbarContainerProps","props","ReactElement","JSXElementConstructor","T","Omit"],"sources":["../../src/toolbar/toolbar-container.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAe7B;;;;AAjB6D,cAiBxCC,mBAAAA,iCAAoDE,IAAAA,QAAYD,uBAAuB;AAa5G;;;;;;;;;AAA6J;AAC7J;;AADA,cAAqBE,gBAAAA,GAAmBE,KAAAA,EAAOD,qBAAqB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACvHN,uBAAAA,WAAkCL,WAAAA,GAAcG,OAAAA,UAAiBD,kBAAAA,CAAmBU,CAAAA,GAAIC,IAAAA,CAAKZ,yBAAAA,CAA0BW,CAAAA;AAAAA,KAE5HJ,qBAAAA,WAAgCR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,uBAAAA,CAAwBO,CAAAA"}
@@ -31,7 +31,7 @@ declare const useToolbarInput: import("@ariakit/react-utils").Hook<"input", Tool
31
31
  * </Toolbar>
32
32
  * ```
33
33
  */
34
- declare const ToolbarInput: (props: ToolbarInputProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
34
+ declare const ToolbarInput: (props: ToolbarInputProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
35
35
  interface ToolbarInputOptions<T extends ElementType = TagName> extends ToolbarItemOptions<T> {}
36
36
  type ToolbarInputProps<T extends ElementType = TagName> = Props<T, ToolbarInputOptions<T>>;
37
37
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-input.d.ts","names":["Props","ElementType","ToolbarItemOptions","TagName","useToolbarInput","ToolbarInputOptions","Hook","ToolbarInput","ToolbarInputProps","props","ReactElement","JSXElementConstructor","T"],"sources":["../../src/toolbar/toolbar-input.d.ts"],"mappings":";;;;;cAGcG,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAc7B;;;AAhB6D,cAgBxCC,eAAAA,iCAAgDE,IAAAA,UAAcD,mBAAmB;AAAA;AAatG;;;;;;;;;AAAiJ;AACjJ;AAdsG,cAajFE,YAAAA,GAAeE,KAAAA,EAAOD,iBAAiB,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UAC3GN,mBAAAA,WAA8BJ,WAAAA,GAAcE,OAAAA,UAAiBD,kBAAAA,CAAmBU,CAAAA;AAAAA,KAErFJ,iBAAAA,WAA4BP,WAAAA,GAAcE,OAAAA,IAAWH,KAAAA,CAAMY,CAAAA,EAAGP,mBAAAA,CAAoBO,CAAAA"}
1
+ {"version":3,"file":"toolbar-input.d.ts","names":["Props","ElementType","ToolbarItemOptions","TagName","useToolbarInput","ToolbarInputOptions","Hook","ToolbarInput","ToolbarInputProps","props","ReactElement","JSXElementConstructor","T"],"sources":["../../src/toolbar/toolbar-input.d.ts"],"mappings":";;;;;cAGcG,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAc7B;;;AAhB6D,cAgBxCC,eAAAA,iCAAgDE,IAAAA,UAAcD,mBAAmB;AAAA;AAatG;;;;;;;;;AAAqJ;AACrJ;AAdsG,cAajFE,YAAAA,GAAeE,KAAAA,EAAOD,iBAAiB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UAC/GN,mBAAAA,WAA8BJ,WAAAA,GAAcE,OAAAA,UAAiBD,kBAAAA,CAAmBU,CAAAA;AAAAA,KAErFJ,iBAAAA,WAA4BP,WAAAA,GAAcE,OAAAA,IAAWH,KAAAA,CAAMY,CAAAA,EAAGP,mBAAAA,CAAoBO,CAAAA"}
@@ -1,4 +1,4 @@
1
- import { n as CompositeItemOptions } from "../composite-item-B4WTelVz.js";
1
+ import { n as CompositeItemOptions } from "../composite-item-d4UXaZ84.js";
2
2
  import { t as ToolbarStore } from "../toolbar-store-Cs-9cGHx.js";
3
3
  import { Props } from "@ariakit/react-utils";
4
4
  import { ElementType } from "react";
@@ -30,7 +30,7 @@ declare const useToolbarItem: import("@ariakit/react-utils").Hook<"button", Tool
30
30
  * </Toolbar>
31
31
  * ```
32
32
  */
33
- declare const ToolbarItem: (props: ToolbarItemProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
33
+ declare const ToolbarItem: (props: ToolbarItemProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
34
34
  interface ToolbarItemOptions<T extends ElementType = TagName> extends CompositeItemOptions<T> {
35
35
  /**
36
36
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-item.d.ts","names":["Props","ElementType","CompositeItemOptions","ToolbarStore","TagName","useToolbarItem","ToolbarItemOptions","Hook","ToolbarItem","ToolbarItemProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/toolbar/toolbar-item.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAa7B;;AAfuD,cAelCC,cAAAA,iCAA+CE,IAAAA,WAAeD,kBAAkB;;AAAA;AAYrG;;;;;;;;;cAAqBE,WAAAA,GAAcE,KAAAA,EAAOD,gBAAgB,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACzGN,kBAAAA,WAA6BL,WAAAA,GAAcG,OAAAA,UAAiBF,oBAAAA,CAAqBW,CAAAA;EAA/D;;;;;;;EAQ/BC,KAAAA,GAAQX,YAAAA;AAAAA;AAAAA,KAEAM,gBAAAA,WAA2BR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,kBAAAA,CAAmBO,CAAAA"}
1
+ {"version":3,"file":"toolbar-item.d.ts","names":["Props","ElementType","CompositeItemOptions","ToolbarStore","TagName","useToolbarItem","ToolbarItemOptions","Hook","ToolbarItem","ToolbarItemProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/toolbar/toolbar-item.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAa7B;;AAfuD,cAelCC,cAAAA,iCAA+CE,IAAAA,WAAeD,kBAAkB;;AAAA;AAYrG;;;;;;;;;cAAqBE,WAAAA,GAAcE,KAAAA,EAAOD,gBAAgB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UAC7GN,kBAAAA,WAA6BL,WAAAA,GAAcG,OAAAA,UAAiBF,oBAAAA,CAAqBW,CAAAA;EAA/D;;;;;;;EAQ/BC,KAAAA,GAAQX,YAAAA;AAAAA;AAAAA,KAEAM,gBAAAA,WAA2BR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,kBAAAA,CAAmBO,CAAAA"}
@@ -34,7 +34,7 @@ declare const useToolbarSeparator: import("@ariakit/react-utils").Hook<"hr", Too
34
34
  * </Toolbar>
35
35
  * ```
36
36
  */
37
- declare const ToolbarSeparator: (props: ToolbarSeparatorProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
37
+ declare const ToolbarSeparator: (props: ToolbarSeparatorProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
38
38
  interface ToolbarSeparatorOptions<T extends ElementType = TagName> extends CompositeSeparatorOptions<T> {
39
39
  /**
40
40
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-separator.d.ts","names":["Props","ElementType","CompositeSeparatorOptions","ToolbarStore","TagName","useToolbarSeparator","ToolbarSeparatorOptions","Hook","ToolbarSeparator","ToolbarSeparatorProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/toolbar/toolbar-separator.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAe7B;;;;AAjBuD,cAiBlCC,mBAAAA,iCAAoDE,IAAAA,OAAWD,uBAAuB;AAc3G;;;;;;;;;AAAyJ;AACzJ;;;AADA,cAAqBE,gBAAAA,GAAmBE,KAAAA,EAAOD,qBAAqB,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACnHN,uBAAAA,WAAkCL,WAAAA,GAAcG,OAAAA,UAAiBF,yBAAAA,CAA0BW,CAAAA;EAAAA;;;;;;;EAQxGC,KAAAA,GAAQX,YAAAA;AAAAA;AAAAA,KAEAM,qBAAAA,WAAgCR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,uBAAAA,CAAwBO,CAAAA"}
1
+ {"version":3,"file":"toolbar-separator.d.ts","names":["Props","ElementType","CompositeSeparatorOptions","ToolbarStore","TagName","useToolbarSeparator","ToolbarSeparatorOptions","Hook","ToolbarSeparator","ToolbarSeparatorProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/toolbar/toolbar-separator.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAe7B;;;;AAjBuD,cAiBlCC,mBAAAA,iCAAoDE,IAAAA,OAAWD,uBAAuB;AAc3G;;;;;;;;;AAA6J;AAC7J;;;AADA,cAAqBE,gBAAAA,GAAmBE,KAAAA,EAAOD,qBAAqB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACvHN,uBAAAA,WAAkCL,WAAAA,GAAcG,OAAAA,UAAiBF,yBAAAA,CAA0BW,CAAAA;EAAAA;;;;;;;EAQxGC,KAAAA,GAAQX,YAAAA;AAAAA;AAAAA,KAEAM,qBAAAA,WAAgCR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,uBAAAA,CAAwBO,CAAAA"}
@@ -1,4 +1,4 @@
1
- import { n as CompositeOptions } from "../composite-DLvyFHMq.js";
1
+ import { n as CompositeOptions } from "../composite-KBhCGLEy.js";
2
2
  import { i as ToolbarStoreProps, t as ToolbarStore } from "../toolbar-store-Cs-9cGHx.js";
3
3
  import { Props } from "@ariakit/react-utils";
4
4
  import { ElementType } from "react";
@@ -31,7 +31,7 @@ declare const useToolbar: import("@ariakit/react-utils").Hook<"div", ToolbarOpti
31
31
  * </Toolbar>
32
32
  * ```
33
33
  */
34
- declare const Toolbar: (props: ToolbarProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
34
+ declare const Toolbar: (props: ToolbarProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
35
35
  interface ToolbarOptions<T extends ElementType = TagName> extends CompositeOptions<T>, Pick<ToolbarStoreProps, "focusLoop" | "orientation" | "rtl" | "virtualFocus"> {
36
36
  /**
37
37
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar.d.ts","names":["Props","ElementType","CompositeOptions","ToolbarStore","ToolbarStoreProps","TagName","useToolbar","ToolbarOptions","Hook","Toolbar","ToolbarProps","props","ReactElement","JSXElementConstructor","T","Pick","store"],"sources":["../../src/toolbar/toolbar.d.ts"],"mappings":";;;;;;cAIcK,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF6C;;;;AACrD;AAAA;;;;AACQ;AAc7B;;;AAhB0E,cAgBrDC,UAAAA,iCAA2CE,IAAAA,QAAYD,cAAc;AAAA;AAY1F;;;;;;;;;AAAuI;AAZ7C,cAYrEE,OAAAA,GAAUE,KAAAA,EAAOD,YAAY,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UACjGN,cAAAA,WAAyBN,WAAAA,GAAcI,OAAAA,UAAiBH,gBAAAA,CAAiBY,CAAAA,GAAIC,IAAAA,CAAKX,iBAAAA;EAApEU;;;;;;;;;EAU3BE,KAAAA,GAAQb,YAAAA;AAAAA;AAAAA,KAEAO,YAAAA,WAAuBT,WAAAA,GAAcI,OAAAA,IAAWL,KAAAA,CAAMc,CAAAA,EAAGP,cAAAA,CAAeO,CAAAA"}
1
+ {"version":3,"file":"toolbar.d.ts","names":["Props","ElementType","CompositeOptions","ToolbarStore","ToolbarStoreProps","TagName","useToolbar","ToolbarOptions","Hook","Toolbar","ToolbarProps","props","ReactElement","JSXElementConstructor","T","Pick","store"],"sources":["../../src/toolbar/toolbar.d.ts"],"mappings":";;;;;;cAIcK,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF6C;;;;AACrD;AAAA;;;;AACQ;AAc7B;;;AAhB0E,cAgBrDC,UAAAA,iCAA2CE,IAAAA,QAAYD,cAAc;AAAA;AAY1F;;;;;;;;;AAA2I;AAZjD,cAYrEE,OAAAA,GAAUE,KAAAA,EAAOD,YAAY,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACrGN,cAAAA,WAAyBN,WAAAA,GAAcI,OAAAA,UAAiBH,gBAAAA,CAAiBY,CAAAA,GAAIC,IAAAA,CAAKX,iBAAAA;EAApEU;;;;;;;;;EAU3BE,KAAAA,GAAQb,YAAAA;AAAAA;AAAAA,KAEAO,YAAAA,WAAuBT,WAAAA,GAAcI,OAAAA,IAAWL,KAAAA,CAAMc,CAAAA,EAAGP,cAAAA,CAAeO,CAAAA"}
@@ -36,7 +36,7 @@ declare const useTooltipAnchor: import("@ariakit/react-utils").Hook<"div", Toolt
36
36
  * </TooltipProvider>
37
37
  * ```
38
38
  */
39
- declare const TooltipAnchor: (props: TooltipAnchorProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
39
+ declare const TooltipAnchor: (props: TooltipAnchorProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
40
40
  interface TooltipAnchorOptions<T extends ElementType = TagName> extends HovercardAnchorOptions<T> {
41
41
  /**
42
42
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-anchor.d.ts","names":["Props","ElementType","HovercardAnchorOptions","TooltipStore","TagName","useTooltipAnchor","TooltipAnchorOptions","Hook","TooltipAnchor","TooltipAnchorProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/tooltip/tooltip-anchor.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAY7B;AAduD,cAclCC,gBAAAA,iCAAiDE,IAAAA,QAAYD,oBAAoB;;;AAAA;AAmBtG;;;;;;;;;AAAmJ;AACnJ;;;;;cADqBE,aAAAA,GAAgBE,KAAAA,EAAOD,kBAAkB,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UAC7GN,oBAAAA,WAA+BL,WAAAA,GAAcG,OAAAA,UAAiBF,sBAAAA,CAAuBW,CAAAA;EAAvBX;;;;;;;EAQ3EY,KAAAA,GAAQX,YAAAA;AAAAA;AAAAA,KAEAM,kBAAAA,WAA6BR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,oBAAAA,CAAqBO,CAAAA"}
1
+ {"version":3,"file":"tooltip-anchor.d.ts","names":["Props","ElementType","HovercardAnchorOptions","TooltipStore","TagName","useTooltipAnchor","TooltipAnchorOptions","Hook","TooltipAnchor","TooltipAnchorProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/tooltip/tooltip-anchor.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAY7B;AAduD,cAclCC,gBAAAA,iCAAiDE,IAAAA,QAAYD,oBAAoB;;;AAAA;AAmBtG;;;;;;;;;AAAuJ;AACvJ;;;;;cADqBE,aAAAA,GAAgBE,KAAAA,EAAOD,kBAAkB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACjHN,oBAAAA,WAA+BL,WAAAA,GAAcG,OAAAA,UAAiBF,sBAAAA,CAAuBW,CAAAA;EAAvBX;;;;;;;EAQ3EY,KAAAA,GAAQX,YAAAA;AAAAA;AAAAA,KAEAM,kBAAAA,WAA6BR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,oBAAAA,CAAqBO,CAAAA"}
@@ -9,6 +9,7 @@ import { createStore, sync } from "@ariakit/store";
9
9
  //#region src/tooltip/tooltip-anchor.tsx
10
10
  const TagName = "div";
11
11
  const globalStore = createStore({ activeStore: null });
12
+ const hidingStores = /* @__PURE__ */ new WeakSet();
12
13
  function createRemoveStoreCallback(store) {
13
14
  return () => {
14
15
  const { activeStore } = globalStore.getState();
@@ -16,6 +17,12 @@ function createRemoveStoreCallback(store) {
16
17
  globalStore.setState("activeStore", null);
17
18
  };
18
19
  }
20
+ function hideStore(store) {
21
+ if (!store) return;
22
+ hidingStores.add(store);
23
+ store.hide();
24
+ queueMicrotask(() => hidingStores.delete(store));
25
+ }
19
26
  /**
20
27
  * Returns props to create a `TooltipAnchor` component.
21
28
  * @see https://ariakit.com/components/tooltip
@@ -30,7 +37,7 @@ function createRemoveStoreCallback(store) {
30
37
  const useTooltipAnchor = createHook(function useTooltipAnchor({ store, showOnHover = true, ...props }) {
31
38
  const context = useTooltipProviderContext();
32
39
  store = store || context;
33
- invariant(store, "TooltipAnchor must receive a `store` prop or be wrapped in a TooltipProvider component.");
40
+ invariant(store, process.env.NODE_ENV !== "production" && "TooltipAnchor must receive a `store` prop or be wrapped in a TooltipProvider component.");
34
41
  const canShowOnHoverRef = useRef(false);
35
42
  useEffect(() => {
36
43
  return sync(store, ["mounted"], (state) => {
@@ -40,14 +47,18 @@ const useTooltipAnchor = createHook(function useTooltipAnchor({ store, showOnHov
40
47
  }, [store]);
41
48
  useEffect(() => {
42
49
  if (!store) return;
43
- return chain(createRemoveStoreCallback(store), sync(store, ["mounted", "skipTimeout"], (state) => {
50
+ const removeStore = createRemoveStoreCallback(store);
51
+ return chain(removeStore, sync(store, ["mounted"], (state) => {
44
52
  if (!store) return;
45
53
  if (state.mounted) {
46
54
  const { activeStore } = globalStore.getState();
47
- if (activeStore !== store) activeStore?.hide();
55
+ if (activeStore !== store) {
56
+ if (hidingStores.has(store)) return;
57
+ hideStore(activeStore);
58
+ }
48
59
  return globalStore.setState("activeStore", store);
49
60
  }
50
- const id = setTimeout(createRemoveStoreCallback(store), state.skipTimeout);
61
+ const id = setTimeout(removeStore, store.getState().skipTimeout);
51
62
  return () => clearTimeout(id);
52
63
  }));
53
64
  }, [store]);
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-anchor.js","names":[],"sources":["../../src/tooltip/tooltip-anchor.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useEvent,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { createStore, sync } from \"@ariakit/store\";\nimport { chain, invariant, isFalsyBooleanCallback } from \"@ariakit/utils\";\nimport type { ElementType, FocusEvent, MouseEvent } from \"react\";\nimport { useEffect, useRef } from \"react\";\nimport type { HovercardAnchorOptions } from \"../hovercard/hovercard-anchor.tsx\";\nimport { useHovercardAnchor } from \"../hovercard/hovercard-anchor.tsx\";\nimport { useTooltipProviderContext } from \"./tooltip-context.tsx\";\nimport type { TooltipStore } from \"./tooltip-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\n// Create a global store to keep track of the active tooltip store so we can\n// show other tooltips without a delay when there's already an active tooltip.\nconst globalStore = createStore<{ activeStore: TooltipStore | null }>({\n activeStore: null,\n});\n\nfunction createRemoveStoreCallback(store: TooltipStore) {\n return () => {\n const { activeStore } = globalStore.getState();\n if (activeStore !== store) return;\n globalStore.setState(\"activeStore\", null);\n };\n}\n\n/**\n * Returns props to create a `TooltipAnchor` component.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx\n * const store = useToolTipStore();\n * const props = useTooltipAnchor({ store });\n * <Role {...props}>Anchor</Role>\n * <Tooltip store={store}>Tooltip</Tooltip>\n * ```\n */\nexport const useTooltipAnchor = createHook<TagName, TooltipAnchorOptions>(\n function useTooltipAnchor({ store, showOnHover = true, ...props }) {\n const context = useTooltipProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"TooltipAnchor must receive a `store` prop or be wrapped in a TooltipProvider component.\",\n );\n\n // Imagine the scenario: the user hovers over an anchor, which shows a\n // tooltip, then presses escape to close the tooltip. We don't want to show\n // the tooltip again while the anchor is still hovered. So we keep this flag\n // that's set to true on mouse enter.\n const canShowOnHoverRef = useRef(false);\n\n useEffect(() => {\n return sync(store, [\"mounted\"], (state) => {\n if (state.mounted) return;\n canShowOnHoverRef.current = false;\n });\n }, [store]);\n\n useEffect(() => {\n if (!store) return;\n return chain(\n // Immediately remove the current store from the global store when\n // the component unmounts. This is useful, for example, to avoid\n // showing tooltips immediately on serial tests.\n createRemoveStoreCallback(store),\n sync(store, [\"mounted\", \"skipTimeout\"], (state) => {\n if (!store) return;\n // If the current tooltip is open, we should immediately hide the\n // active one and set the current one as the active tooltip.\n if (state.mounted) {\n const { activeStore } = globalStore.getState();\n if (activeStore !== store) {\n activeStore?.hide();\n }\n return globalStore.setState(\"activeStore\", store);\n }\n // Otherwise, if the current tooltip is closed, we should set a\n // timeout to hide the active tooltip in the global store. This is so\n // we can show other tooltips without a delay when there's already an\n // active tooltip (see the showOnHover method below).\n const id = setTimeout(\n createRemoveStoreCallback(store),\n state.skipTimeout,\n );\n return () => clearTimeout(id);\n }),\n );\n }, [store]);\n\n const onMouseEnterProp = props.onMouseEnter;\n\n const onMouseEnter = useEvent((event: MouseEvent<HTMLType>) => {\n onMouseEnterProp?.(event);\n canShowOnHoverRef.current = true;\n });\n\n const onFocusVisibleProp = props.onFocusVisible;\n\n const onFocusVisible = useEvent((event: FocusEvent<HTMLType>) => {\n onFocusVisibleProp?.(event);\n if (event.defaultPrevented) return;\n store?.setAnchorElement(event.currentTarget);\n store?.show();\n });\n\n const onBlurProp = props.onBlur;\n\n const onBlur = useEvent((event: FocusEvent<HTMLType>) => {\n onBlurProp?.(event);\n if (event.defaultPrevented) return;\n const { activeStore } = globalStore.getState();\n // Sets canShowOnHover to false so moving the mouse over the anchor after\n // it loses focus (for example, clicking on a menu button) doesn't show\n // the tooltip until the mouse leaves and re-enters the anchor.\n canShowOnHoverRef.current = false;\n // If the current tooltip is the active tooltip and the anchor loses focus\n // (for example, if the anchor is a menu button, clicking on the menu\n // button will automatically focus on the menu), we don't want to show\n // subsequent tooltips without a delay. So we set the active tooltip to\n // null.\n if (activeStore === store) {\n globalStore.setState(\"activeStore\", null);\n }\n });\n\n const type = useStoreState(store, \"type\");\n const contentId = useStoreState(store, (state) => state.contentElement?.id);\n\n props = {\n \"aria-labelledby\":\n type === \"label\" && props[\"aria-label\"] == null ? contentId : undefined,\n ...props,\n onMouseEnter,\n onFocusVisible,\n onBlur,\n };\n\n props = useHovercardAnchor<TagName>({\n store,\n showOnHover(event) {\n if (!canShowOnHoverRef.current) return false;\n if (isFalsyBooleanCallback(showOnHover, event)) return false;\n const { activeStore } = globalStore.getState();\n if (!activeStore) return true;\n // Show the tooltip immediately if there's an active tooltip instead of\n // waiting for the showTimeout delay.\n store?.show();\n return false;\n },\n ...props,\n });\n\n return props;\n },\n);\n\n/**\n * Renders a reference element for a\n * [`Tooltip`](https://ariakit.com/reference/tooltip), which is triggered by\n * focusing or hovering over the anchor.\n *\n * The tooltip is strictly for visual purposes. It's your responsibility to\n * ensure the anchor element has an accessible name. See [Tooltip anchors must\n * have accessible\n * names](https://ariakit.com/components/tooltip#tooltip-anchors-must-have-accessible-names)\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx {2}\n * <TooltipProvider>\n * <TooltipAnchor>Anchor</TooltipAnchor>\n * <Tooltip>Tooltip</Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport const TooltipAnchor = forwardRef(function TooltipAnchor(\n props: TooltipAnchorProps,\n) {\n const htmlProps = useTooltipAnchor(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface TooltipAnchorOptions<\n T extends ElementType = TagName,\n> extends HovercardAnchorOptions<T> {\n /**\n * Object returned by the\n * [`useTooltipStore`](https://ariakit.com/reference/use-tooltip-store) hook.\n * If not provided, the closest\n * [`TooltipProvider`](https://ariakit.com/reference/tooltip-provider)\n * component's context will be used.\n */\n store?: TooltipStore;\n}\n\nexport type TooltipAnchorProps<T extends ElementType = TagName> = Props<\n T,\n TooltipAnchorOptions<T>\n>;\n"],"mappings":";;;;;;;;;AAuBA,MAAM,UAAA;AAIN,MAAA,cAAS,YAAA,EAAA,aAA+C,KAAA,CAAA;SACtD,0BAAa,OAAA;cACH;EACR,MAAI,EAAA,gBAAgB,YAAO,SAAA;EAC3B,IAAA,gBAAY,OAAS;EACvB,YAAA,SAAA,eAAA,IAAA;CACF;;;;;;;;;;;;;MAeI,mBAAgB,WAAA,SAA0B,iBAAA,EAAA,OAAA,cAAA,MAAA,GAAA,SAAA;CAC1C,MAAA,UAAQ,0BAAS;CAEjB,QAAA,SAGI;CAOJ,UAAM,OAAA,yFAAgC;CAEtC,MAAA,oBAAgB,OAAA,KAAA;iBACF;SACN,KAAM,OAAA,CAAS,SAAA,IAAA,UAAA;GACnB,IAAA,MAAA,SAAkB;GACnB,kBAAA,UAAA;EACH,CAAA;CAEA,GAAA,CAAA,KAAA,CAAA;iBACc;EACZ,IAAA,CAAA,OAAO;SAME,MAAO,0BAAA,KAAA,GAAA,KAAA,OAAA,CAAA,WAAA,aAAA,IAAA,UAAA;GAGZ,IAAI,CAAA,OAAM;OACR,MAAQ,SAAA;IACR,MAAI,EAAA,gBAAgB,YAClB,SAAkB;IAEpB,IAAA,gBAAmB,OAAA,aAAS,KAAe;IAC7C,OAAA,YAAA,SAAA,eAAA,KAAA;GAKA;GAIA,MAAA,KAAA,WAAa,0BAAe,KAAA,GAAA,MAAA,WAAA;GAC7B,aACH,aAAA,EAAA;EACF,CAAA,CAAG;CAEH,GAAA,CAAA,KAAM,CAAA;CAEN,MAAM,mBAAe,MAAU;OAC7B,eAAmB,UAAK,UAAA;EACxB,mBAAkB,KAAA;EACnB,kBAAA,UAAA;CAED,CAAA;CAEA,MAAM,qBAAiB,MAAU;OAC/B,iBAAqB,UAAK,UAAA;EAC1B,qBAAU,KAAA;EACV,IAAA,MAAO,kBAAiB;EACxB,OAAO,iBAAK,MAAA,aAAA;EACb,OAAA,KAAA;CAED,CAAA;CAEA,MAAM,aAAS,MAAU;OACvB,SAAa,UAAK,UAAA;EAClB,aAAU,KAAA;EACV,IAAA,MAAQ,kBAAgB;EAIxB,MAAA,EAAA,gBAAkB,YAAU,SAAA;EAM5B,kBAAI,UACF;EAEH,IAAA,gBAAA,OAAA,YAAA,SAAA,eAAA,IAAA;CAED,CAAA;CACA,MAAM,OAAA,cAAY,OAAc,MAAQ;CAExC,MAAA,YAAQ,cAAA,QAAA,UAAA,MAAA,gBAAA,EAAA;SACN;EAEA,mBAAG,SAAA,WAAA,MAAA,iBAAA,OAAA,YAAA,KAAA;EACH,GAAA;EACA;EACA;EACF;CAEA;SACE,mBAAA;EACA;cACO,OAAA;GACL,IAAI,CAAA,kBAAA,SAAuB,OAAA;GAC3B,IAAA,uBAAwB,aAAY,KAAS,GAAA,OAAA;GAC7C,MAAK,EAAA,gBAAa,YAAO,SAAA;GAGzB,IAAA,CAAA,aAAY,OAAA;GACZ,OAAO,KAAA;GACT,OAAA;EACA;EACD,GAAA;CAED,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;MAwBE,gBAAqB,WADH,SAAA,cACqB,OAAA;CACxC,OAAA,cAAA,SAAA,iBAAA,KAAA,CAAA"}
1
+ {"version":3,"file":"tooltip-anchor.js","names":[],"sources":["../../src/tooltip/tooltip-anchor.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useEvent,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { createStore, sync } from \"@ariakit/store\";\nimport { chain, invariant, isFalsyBooleanCallback } from \"@ariakit/utils\";\nimport type { ElementType, FocusEvent, MouseEvent } from \"react\";\nimport { useEffect, useRef } from \"react\";\nimport type { HovercardAnchorOptions } from \"../hovercard/hovercard-anchor.tsx\";\nimport { useHovercardAnchor } from \"../hovercard/hovercard-anchor.tsx\";\nimport { useTooltipProviderContext } from \"./tooltip-context.tsx\";\nimport type { TooltipStore } from \"./tooltip-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\n// Create a global store to keep track of the active tooltip store so we can\n// show other tooltips without a delay when there's already an active tooltip.\nconst globalStore = createStore<{ activeStore: TooltipStore | null }>({\n activeStore: null,\n});\n\nconst hidingStores = new WeakSet<TooltipStore>();\n\nfunction createRemoveStoreCallback(store: TooltipStore) {\n return () => {\n const { activeStore } = globalStore.getState();\n if (activeStore !== store) return;\n globalStore.setState(\"activeStore\", null);\n };\n}\n\nfunction hideStore(store: TooltipStore | null) {\n if (!store) return;\n hidingStores.add(store);\n store.hide();\n // Cleanup runs after `hide()` so controlled `open` props still see this\n // store in `hidingStores` when their batch microtask forces them open again.\n queueMicrotask(() => hidingStores.delete(store));\n}\n\n/**\n * Returns props to create a `TooltipAnchor` component.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx\n * const store = useToolTipStore();\n * const props = useTooltipAnchor({ store });\n * <Role {...props}>Anchor</Role>\n * <Tooltip store={store}>Tooltip</Tooltip>\n * ```\n */\nexport const useTooltipAnchor = createHook<TagName, TooltipAnchorOptions>(\n function useTooltipAnchor({ store, showOnHover = true, ...props }) {\n const context = useTooltipProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"TooltipAnchor must receive a `store` prop or be wrapped in a TooltipProvider component.\",\n );\n\n // Imagine the scenario: the user hovers over an anchor, which shows a\n // tooltip, then presses escape to close the tooltip. We don't want to show\n // the tooltip again while the anchor is still hovered. So we keep this flag\n // that's set to true on mouse enter.\n const canShowOnHoverRef = useRef(false);\n\n useEffect(() => {\n return sync(store, [\"mounted\"], (state) => {\n if (state.mounted) return;\n canShowOnHoverRef.current = false;\n });\n }, [store]);\n\n useEffect(() => {\n if (!store) return;\n const removeStore = createRemoveStoreCallback(store);\n return chain(\n // Immediately remove the current store from the global store when\n // the component unmounts. This is useful, for example, to avoid\n // showing tooltips immediately on serial tests.\n removeStore,\n sync(store, [\"mounted\"], (state) => {\n if (!store) return;\n // If the current tooltip is open, we should immediately hide the\n // active one and set the current one as the active tooltip. If a\n // tooltip we just hid gets forced open again, we leave the current\n // active store in place to avoid a re-entrant loop between forced\n // open tooltips.\n if (state.mounted) {\n const { activeStore } = globalStore.getState();\n if (activeStore !== store) {\n if (hidingStores.has(store)) return;\n hideStore(activeStore);\n }\n return globalStore.setState(\"activeStore\", store);\n }\n // Otherwise, if the current tooltip is closed, we should set a\n // timeout to hide the active tooltip in the global store. This is so\n // we can show other tooltips without a delay when there's already an\n // active tooltip (see the showOnHover method below).\n // Read skipTimeout lazily because this sync only subscribes to\n // mounted.\n const id = setTimeout(removeStore, store.getState().skipTimeout);\n return () => clearTimeout(id);\n }),\n );\n }, [store]);\n\n const onMouseEnterProp = props.onMouseEnter;\n\n const onMouseEnter = useEvent((event: MouseEvent<HTMLType>) => {\n onMouseEnterProp?.(event);\n canShowOnHoverRef.current = true;\n });\n\n const onFocusVisibleProp = props.onFocusVisible;\n\n const onFocusVisible = useEvent((event: FocusEvent<HTMLType>) => {\n onFocusVisibleProp?.(event);\n if (event.defaultPrevented) return;\n store?.setAnchorElement(event.currentTarget);\n store?.show();\n });\n\n const onBlurProp = props.onBlur;\n\n const onBlur = useEvent((event: FocusEvent<HTMLType>) => {\n onBlurProp?.(event);\n if (event.defaultPrevented) return;\n const { activeStore } = globalStore.getState();\n // Sets canShowOnHover to false so moving the mouse over the anchor after\n // it loses focus (for example, clicking on a menu button) doesn't show\n // the tooltip until the mouse leaves and re-enters the anchor.\n canShowOnHoverRef.current = false;\n // If the current tooltip is the active tooltip and the anchor loses focus\n // (for example, if the anchor is a menu button, clicking on the menu\n // button will automatically focus on the menu), we don't want to show\n // subsequent tooltips without a delay. So we set the active tooltip to\n // null.\n if (activeStore === store) {\n globalStore.setState(\"activeStore\", null);\n }\n });\n\n const type = useStoreState(store, \"type\");\n const contentId = useStoreState(store, (state) => state.contentElement?.id);\n\n props = {\n \"aria-labelledby\":\n type === \"label\" && props[\"aria-label\"] == null ? contentId : undefined,\n ...props,\n onMouseEnter,\n onFocusVisible,\n onBlur,\n };\n\n props = useHovercardAnchor<TagName>({\n store,\n showOnHover(event) {\n if (!canShowOnHoverRef.current) return false;\n if (isFalsyBooleanCallback(showOnHover, event)) return false;\n const { activeStore } = globalStore.getState();\n if (!activeStore) return true;\n // Show the tooltip immediately if there's an active tooltip instead of\n // waiting for the showTimeout delay.\n store?.show();\n return false;\n },\n ...props,\n });\n\n return props;\n },\n);\n\n/**\n * Renders a reference element for a\n * [`Tooltip`](https://ariakit.com/reference/tooltip), which is triggered by\n * focusing or hovering over the anchor.\n *\n * The tooltip is strictly for visual purposes. It's your responsibility to\n * ensure the anchor element has an accessible name. See [Tooltip anchors must\n * have accessible\n * names](https://ariakit.com/components/tooltip#tooltip-anchors-must-have-accessible-names)\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx {2}\n * <TooltipProvider>\n * <TooltipAnchor>Anchor</TooltipAnchor>\n * <Tooltip>Tooltip</Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport const TooltipAnchor = forwardRef(function TooltipAnchor(\n props: TooltipAnchorProps,\n) {\n const htmlProps = useTooltipAnchor(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface TooltipAnchorOptions<\n T extends ElementType = TagName,\n> extends HovercardAnchorOptions<T> {\n /**\n * Object returned by the\n * [`useTooltipStore`](https://ariakit.com/reference/use-tooltip-store) hook.\n * If not provided, the closest\n * [`TooltipProvider`](https://ariakit.com/reference/tooltip-provider)\n * component's context will be used.\n */\n store?: TooltipStore;\n}\n\nexport type TooltipAnchorProps<T extends ElementType = TagName> = Props<\n T,\n TooltipAnchorOptions<T>\n>;\n"],"mappings":";;;;;;;;;AAuBA,MAAM,UAAA;AAIN,MAAM,cAAA,YAAA,EAAA,aAAmB,KAAsB,CAAA;AAE/C,MAAA,+BAAmC,IAAA,QAAqB;SACtD,0BAAa,OAAA;cACH;EACR,MAAI,EAAA,gBAAgB,YAAO,SAAA;EAC3B,IAAA,gBAAY,OAAS;EACvB,YAAA,SAAA,eAAA,IAAA;CACF;AAEA;SACO,UAAO,OAAA;CACZ,IAAA,CAAA,OAAA;CACA,aAAW,IAAA,KAAA;CAGX,MAAA,KAAA;CACF,qBAAA,aAAA,OAAA,KAAA,CAAA;;;;;;;;;;;;;MAeI,mBAAgB,WAAA,SAA0B,iBAAA,EAAA,OAAA,cAAA,MAAA,GAAA,SAAA;CAC1C,MAAA,UAAQ,0BAAS;CAEjB,QAAA,SAEE;CAQF,UAAM,OAAA,QAAA,IAAoB,aAAY,gBAAA,yFAAA;CAEtC,MAAA,oBAAgB,OAAA,KAAA;iBACF;SACN,KAAM,OAAA,CAAS,SAAA,IAAA,UAAA;GACnB,IAAA,MAAA,SAAkB;GACnB,kBAAA,UAAA;EACH,CAAA;CAEA,GAAA,CAAA,KAAA,CAAA;iBACc;EACZ,IAAA,CAAA,OAAM;EACN,MAAA,cAIE,0BACa,KAAS;SACf,MAAO,aAAA,KAAA,OAAA,CAAA,SAAA,IAAA,UAAA;GAMZ,IAAI,CAAA,OAAM;OACR,MAAQ,SAAA;IACR,MAAI,EAAA,gBAAgB,YAAO,SAAA;QACzB,gBAAiB,OAAS;KAC1B,IAAA,aAAU,IAAW,KAAA,GAAA;KACvB,UAAA,WAAA;IACA;IACF,OAAA,YAAA,SAAA,eAAA,KAAA;GAOA;GACA,MAAA,KAAA,WAAa,aAAe,MAAA,SAAA,EAAA,WAAA;GAC7B,aACH,aAAA,EAAA;EACF,CAAA,CAAG;CAEH,GAAA,CAAA,KAAM,CAAA;CAEN,MAAM,mBAAe,MAAU;OAC7B,eAAmB,UAAK,UAAA;EACxB,mBAAkB,KAAA;EACnB,kBAAA,UAAA;CAED,CAAA;CAEA,MAAM,qBAAiB,MAAU;OAC/B,iBAAqB,UAAK,UAAA;EAC1B,qBAAU,KAAA;EACV,IAAA,MAAO,kBAAiB;EACxB,OAAO,iBAAK,MAAA,aAAA;EACb,OAAA,KAAA;CAED,CAAA;CAEA,MAAM,aAAS,MAAU;OACvB,SAAa,UAAK,UAAA;EAClB,aAAU,KAAA;EACV,IAAA,MAAQ,kBAAgB;EAIxB,MAAA,EAAA,gBAAkB,YAAU,SAAA;EAM5B,kBAAI,UACF;EAEH,IAAA,gBAAA,OAAA,YAAA,SAAA,eAAA,IAAA;CAED,CAAA;CACA,MAAM,OAAA,cAAY,OAAc,MAAQ;CAExC,MAAA,YAAQ,cAAA,QAAA,UAAA,MAAA,gBAAA,EAAA;SACN;EAEA,mBAAG,SAAA,WAAA,MAAA,iBAAA,OAAA,YAAA,KAAA;EACH,GAAA;EACA;EACA;EACF;CAEA;SACE,mBAAA;EACA;cACO,OAAA;GACL,IAAI,CAAA,kBAAA,SAAuB,OAAA;GAC3B,IAAA,uBAAwB,aAAY,KAAS,GAAA,OAAA;GAC7C,MAAK,EAAA,gBAAa,YAAO,SAAA;GAGzB,IAAA,CAAA,aAAY,OAAA;GACZ,OAAO,KAAA;GACT,OAAA;EACA;EACD,GAAA;CAED,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;MAwBE,gBAAqB,WADH,SAAA,cACqB,OAAA;CACxC,OAAA,cAAA,SAAA,iBAAA,KAAA,CAAA"}
@@ -36,7 +36,7 @@ declare const useTooltipArrow: import("@ariakit/react-utils").Hook<"div", Toolti
36
36
  * </TooltipProvider>
37
37
  * ```
38
38
  */
39
- declare const TooltipArrow: (props: TooltipArrowProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
39
+ declare const TooltipArrow: (props: TooltipArrowProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
40
40
  interface TooltipArrowOptions<T extends ElementType = TagName> extends PopoverArrowOptions<T> {
41
41
  /**
42
42
  * Object returned by the
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-arrow.d.ts","names":["Props","ElementType","PopoverArrowOptions","TooltipStore","TagName","useTooltipArrow","TooltipArrowOptions","Hook","TooltipArrow","TooltipArrowProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/tooltip/tooltip-arrow.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAe7B;;;;AAjBuD,cAiBlCC,eAAAA,iCAAgDE,IAAAA,QAAYD,mBAAmB;AAgBpG;;;;;;;;;AAAiJ;AACjJ;;;;;AADA,cAAqBE,YAAAA,GAAeE,KAAAA,EAAOD,iBAAiB,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UAC3GN,mBAAAA,WAA8BL,WAAAA,GAAcG,OAAAA,UAAiBF,mBAAAA,CAAoBW,CAAAA;EAApBX;;;;;;;;EAS1EY,KAAAA,GAAQX,YAAAA;AAAAA;AAAAA,KAEAM,iBAAAA,WAA4BR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,mBAAAA,CAAoBO,CAAAA"}
1
+ {"version":3,"file":"tooltip-arrow.d.ts","names":["Props","ElementType","PopoverArrowOptions","TooltipStore","TagName","useTooltipArrow","TooltipArrowOptions","Hook","TooltipArrow","TooltipArrowProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/tooltip/tooltip-arrow.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAe7B;;;;AAjBuD,cAiBlCC,eAAAA,iCAAgDE,IAAAA,QAAYD,mBAAmB;AAgBpG;;;;;;;;;AAAqJ;AACrJ;;;;;AADA,cAAqBE,YAAAA,GAAeE,KAAAA,EAAOD,iBAAiB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UAC/GN,mBAAAA,WAA8BL,WAAAA,GAAcG,OAAAA,UAAiBF,mBAAAA,CAAoBW,CAAAA;EAApBX;;;;;;;;EAS1EY,KAAAA,GAAQX,YAAAA;AAAAA;AAAAA,KAEAM,iBAAAA,WAA4BR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,mBAAAA,CAAoBO,CAAAA"}
@@ -22,7 +22,7 @@ const TagName = "div";
22
22
  const useTooltipArrow = createHook(function useTooltipArrow({ store, size = 16, ...props }) {
23
23
  const context = useTooltipContext();
24
24
  store = store || context;
25
- invariant(store, "TooltipArrow must be wrapped in a Tooltip component.");
25
+ invariant(store, process.env.NODE_ENV !== "production" && "TooltipArrow must be wrapped in a Tooltip component.");
26
26
  props = usePopoverArrow({
27
27
  store,
28
28
  size,
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-arrow.js","names":[],"sources":["../../src/tooltip/tooltip-arrow.tsx"],"sourcesContent":["import { createElement, createHook, forwardRef } from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { invariant } from \"@ariakit/utils\";\nimport type { ElementType } from \"react\";\nimport type { PopoverArrowOptions } from \"../popover/popover-arrow.tsx\";\nimport { usePopoverArrow } from \"../popover/popover-arrow.tsx\";\nimport { useTooltipContext } from \"./tooltip-context.tsx\";\nimport type { TooltipStore } from \"./tooltip-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\n\n/**\n * Returns props to create a `TooltipArrow` component.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx\n * const store = useToolTipStore();\n * const props = useTooltipArrow({ store });\n * <TooltipAnchor store={store}>Anchor</TooltipAnchor>\n * <Tooltip store={store}>\n * <Role {...props} />\n * Tooltip\n * </Tooltip>\n * ```\n */\nexport const useTooltipArrow = createHook<TagName, TooltipArrowOptions>(\n function useTooltipArrow({ store, size = 16, ...props }) {\n // We need to get the tooltip store here because Tooltip is not using the\n // Popover component, so PopoverArrow can't access the popover context.\n const context = useTooltipContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"TooltipArrow must be wrapped in a Tooltip component.\",\n );\n\n props = usePopoverArrow({ store, size, ...props });\n return props;\n },\n);\n\n/**\n * Renders an arrow inside a [`Tooltip`](https://ariakit.com/reference/tooltip)\n * pointing to the anchor element.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx {4}\n * <TooltipProvider>\n * <TooltipAnchor>Anchor</TooltipAnchor>\n * <Tooltip>\n * <TooltipArrow />\n * Tooltip\n * </Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport const TooltipArrow = forwardRef(function TooltipArrow(\n props: TooltipArrowProps,\n) {\n const htmlProps = useTooltipArrow(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface TooltipArrowOptions<\n T extends ElementType = TagName,\n> extends PopoverArrowOptions<T> {\n /**\n * Object returned by the\n * [`useTooltipStore`](https://ariakit.com/reference/use-tooltip-store) hook.\n * If not provided, the closest\n * [`Tooltip`](https://ariakit.com/reference/tooltip) or\n * [`TooltipProvider`](https://ariakit.com/reference/tooltip-provider)\n * components' context will be used.\n */\n store?: TooltipStore;\n}\n\nexport type TooltipArrowProps<T extends ElementType = TagName> = Props<\n T,\n TooltipArrowOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;MA8BI,kBAAgB,WAAkB,SAAA,gBAAA,EAAA,OAAA,OAAA,IAAA,GAAA,SAAA;CAClC,MAAA,UAAQ,kBAAS;CAEjB,QAAA,SAGI;CAGJ,UAAQ,OAAA,sDAAgB;SAAE,gBAAA;EAAO;EAAM;EAAU,GAAA;CACjD,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;MAqBE,eAAO,WADW,SAAA,aACqB,OAAA;CACxC,OAAA,cAAA,SAAA,gBAAA,KAAA,CAAA"}
1
+ {"version":3,"file":"tooltip-arrow.js","names":[],"sources":["../../src/tooltip/tooltip-arrow.tsx"],"sourcesContent":["import { createElement, createHook, forwardRef } from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { invariant } from \"@ariakit/utils\";\nimport type { ElementType } from \"react\";\nimport type { PopoverArrowOptions } from \"../popover/popover-arrow.tsx\";\nimport { usePopoverArrow } from \"../popover/popover-arrow.tsx\";\nimport { useTooltipContext } from \"./tooltip-context.tsx\";\nimport type { TooltipStore } from \"./tooltip-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\n\n/**\n * Returns props to create a `TooltipArrow` component.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx\n * const store = useToolTipStore();\n * const props = useTooltipArrow({ store });\n * <TooltipAnchor store={store}>Anchor</TooltipAnchor>\n * <Tooltip store={store}>\n * <Role {...props} />\n * Tooltip\n * </Tooltip>\n * ```\n */\nexport const useTooltipArrow = createHook<TagName, TooltipArrowOptions>(\n function useTooltipArrow({ store, size = 16, ...props }) {\n // We need to get the tooltip store here because Tooltip is not using the\n // Popover component, so PopoverArrow can't access the popover context.\n const context = useTooltipContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"TooltipArrow must be wrapped in a Tooltip component.\",\n );\n\n props = usePopoverArrow({ store, size, ...props });\n return props;\n },\n);\n\n/**\n * Renders an arrow inside a [`Tooltip`](https://ariakit.com/reference/tooltip)\n * pointing to the anchor element.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx {4}\n * <TooltipProvider>\n * <TooltipAnchor>Anchor</TooltipAnchor>\n * <Tooltip>\n * <TooltipArrow />\n * Tooltip\n * </Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport const TooltipArrow = forwardRef(function TooltipArrow(\n props: TooltipArrowProps,\n) {\n const htmlProps = useTooltipArrow(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface TooltipArrowOptions<\n T extends ElementType = TagName,\n> extends PopoverArrowOptions<T> {\n /**\n * Object returned by the\n * [`useTooltipStore`](https://ariakit.com/reference/use-tooltip-store) hook.\n * If not provided, the closest\n * [`Tooltip`](https://ariakit.com/reference/tooltip) or\n * [`TooltipProvider`](https://ariakit.com/reference/tooltip-provider)\n * components' context will be used.\n */\n store?: TooltipStore;\n}\n\nexport type TooltipArrowProps<T extends ElementType = TagName> = Props<\n T,\n TooltipArrowOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;MA8BI,kBAAgB,WAAkB,SAAA,gBAAA,EAAA,OAAA,OAAA,IAAA,GAAA,SAAA;CAClC,MAAA,UAAQ,kBAAS;CAEjB,QAAA,SAEE;CAIF,UAAQ,OAAA,QAAgB,IAAA,aAAA,gBAAA,sDAAA;SAAE,gBAAA;EAAO;EAAM;EAAU,GAAA;CACjD,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;MAqBE,eAAO,WADW,SAAA,aACqB,OAAA;CACxC,OAAA,cAAA,SAAA,gBAAA,KAAA,CAAA"}
@@ -22,7 +22,7 @@ const TagName = "div";
22
22
  const useTooltip = createHook(function useTooltip({ store, portal = true, gutter = 8, preserveTabOrder = false, hideOnHoverOutside = true, hideOnInteractOutside = true, ...props }) {
23
23
  const context = useTooltipProviderContext();
24
24
  store = store || context;
25
- invariant(store, "Tooltip must receive a `store` prop or be wrapped in a TooltipProvider component.");
25
+ invariant(store, process.env.NODE_ENV !== "production" && "Tooltip must receive a `store` prop or be wrapped in a TooltipProvider component.");
26
26
  props = useWrapElement(props, (element) => /* @__PURE__ */ jsx(TooltipScopedContextProvider, {
27
27
  value: store,
28
28
  children: element
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","names":[],"sources":["../../src/tooltip/tooltip.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { contains, invariant, isFalsyBooleanCallback } from \"@ariakit/utils\";\nimport type { ElementType } from \"react\";\nimport { createDialogComponent } from \"../dialog/dialog.tsx\";\nimport type { HovercardOptions } from \"../hovercard/hovercard.tsx\";\nimport { useHovercard } from \"../hovercard/hovercard.tsx\";\nimport {\n TooltipScopedContextProvider,\n useTooltipProviderContext,\n} from \"./tooltip-context.tsx\";\nimport type { TooltipStore } from \"./tooltip-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\n\n/**\n * Returns props to create a `Tooltip` component.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx\n * const store = useToolTipStore();\n * const props = useTooltip({ store });\n * <TooltipAnchor store={store}>Anchor</TooltipAnchor>\n * <Role {...props}>Tooltip</Role>\n * ```\n */\nexport const useTooltip = createHook<TagName, TooltipOptions>(\n function useTooltip({\n store,\n portal = true,\n gutter = 8,\n preserveTabOrder = false,\n hideOnHoverOutside = true,\n hideOnInteractOutside = true,\n ...props\n }) {\n const context = useTooltipProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"Tooltip must receive a `store` prop or be wrapped in a TooltipProvider component.\",\n );\n\n props = useWrapElement(\n props,\n (element) => (\n <TooltipScopedContextProvider value={store}>\n {element}\n </TooltipScopedContextProvider>\n ),\n [store],\n );\n\n const role = useStoreState(store, (state) =>\n state.type === \"description\" ? \"tooltip\" : \"none\",\n );\n\n props = { role, ...props };\n\n props = useHovercard({\n ...props,\n store,\n portal,\n gutter,\n preserveTabOrder,\n hideOnHoverOutside(event) {\n if (isFalsyBooleanCallback(hideOnHoverOutside, event)) return false;\n const anchorElement = store?.getState().anchorElement;\n if (!anchorElement) return true;\n // If the anchor element has the `data-focus-visible` attribute (added\n // by the `Focusable` component that is used by several components), we\n // don't hide the tooltip when the mouse leaves the anchor element. In\n // this case, the tooltip will be hidden only if the user presses the\n // Escape key or if the anchor element loses focus.\n if (\"focusVisible\" in anchorElement.dataset) return false;\n return true;\n },\n hideOnInteractOutside: (event) => {\n if (isFalsyBooleanCallback(hideOnInteractOutside, event)) return false;\n const anchorElement = store?.getState().anchorElement;\n if (!anchorElement) return true;\n // Prevent hiding the tooltip when the user interacts with the anchor\n // element. It's up to the developer to hide the tooltip when the user\n // clicks on the anchor element if that's the intended behavior.\n if (contains(anchorElement, event.target as Node)) return false;\n return true;\n },\n });\n\n return props;\n },\n);\n\n/**\n * Renders a tooltip element that visually describes a\n * [`TooltipAnchor`](https://ariakit.com/reference/tooltip-anchor) when it\n * receives focus or is hovered.\n *\n * The tooltip is strictly for visual purposes. It's your responsibility to\n * ensure the anchor element has an accessible name. See [Tooltip anchors must\n * have accessible\n * names](https://ariakit.com/components/tooltip#tooltip-anchors-must-have-accessible-names)\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx {3}\n * <TooltipProvider>\n * <TooltipAnchor>Anchor</TooltipAnchor>\n * <Tooltip>Tooltip</Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport const Tooltip = createDialogComponent(\n forwardRef(function Tooltip(props: TooltipProps) {\n const htmlProps = useTooltip(props);\n return createElement(TagName, htmlProps);\n }),\n useTooltipProviderContext,\n);\n\nexport interface TooltipOptions<\n T extends ElementType = TagName,\n> extends HovercardOptions<T> {\n /**\n * Object returned by the\n * [`useTooltipStore`](https://ariakit.com/reference/use-tooltip-store) hook.\n * If not provided, the closest\n * [`TooltipProvider`](https://ariakit.com/reference/tooltip-provider)\n * component's context will be used.\n */\n store?: TooltipStore;\n /**\n * @default true\n */\n portal?: HovercardOptions<T>[\"portal\"];\n /**\n * @default 8\n */\n gutter?: HovercardOptions<T>[\"gutter\"];\n}\n\nexport type TooltipProps<T extends ElementType = TagName> = Props<\n T,\n TooltipOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;MA2CI,aAAgB,WAAA,SAAA,WAA0B,EAAA,OAAA,SAAA,MAAA,SAAA,GAAA,mBAAA,OAAA,qBAAA,MAAA,wBAAA,MAAA,GAAA,SAAA;CAC1C,MAAA,UAAQ,0BAAS;CAEjB,QAAA,SAGI;CAGJ,UAAQ,OAAA,mFAGJ;SAAqC,eAAA,QAAA,YAAA,oBAAA,8BAAA;;EAEP,UAGlC;CAMA,CAAA,GAAA,CAAA,KAAQ,CAAA;SAJK;EAIG,MAAG,cAAA,QAAA,UAAA,MAAA,SAAA,gBAAA,YAAA,MAAA;EAAM,GAAA;CAEzB;SACK,aAAA;EACH,GAAA;EACA;EACA;EACA;EACA;qBACM,OAAA;GACJ,IAAA,uBAAsB,oBAAkB,KAAA,GAAA,OAAA;GACxC,MAAK,gBAAe,OAAO,SAAA,EAAA;GAM3B,IAAI,CAAA,eAAA,OAAkB;GACtB,IAAA,kBAAO,cAAA,SAAA,OAAA;GACT,OAAA;EACA;0BACM,UAAuB;GAC3B,IAAA,uBAAsB,uBAAkB,KAAA,GAAA,OAAA;GACxC,MAAK,gBAAe,OAAO,SAAA,EAAA;GAI3B,IAAI,CAAA,eAAS,OAAA;GACb,IAAA,SAAO,eAAA,MAAA,MAAA,GAAA,OAAA;GACT,OAAA;EACD;CAED,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;MAuBI,UAAO,sBADW,WACqB,SAAA,QAAA,OAAA;CACxC,OACD,cAAA,SACF,WAAA,KAAA,CAAA"}
1
+ {"version":3,"file":"tooltip.js","names":[],"sources":["../../src/tooltip/tooltip.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { contains, invariant, isFalsyBooleanCallback } from \"@ariakit/utils\";\nimport type { ElementType } from \"react\";\nimport { createDialogComponent } from \"../dialog/dialog.tsx\";\nimport type { HovercardOptions } from \"../hovercard/hovercard.tsx\";\nimport { useHovercard } from \"../hovercard/hovercard.tsx\";\nimport {\n TooltipScopedContextProvider,\n useTooltipProviderContext,\n} from \"./tooltip-context.tsx\";\nimport type { TooltipStore } from \"./tooltip-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\n\n/**\n * Returns props to create a `Tooltip` component.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx\n * const store = useToolTipStore();\n * const props = useTooltip({ store });\n * <TooltipAnchor store={store}>Anchor</TooltipAnchor>\n * <Role {...props}>Tooltip</Role>\n * ```\n */\nexport const useTooltip = createHook<TagName, TooltipOptions>(\n function useTooltip({\n store,\n portal = true,\n gutter = 8,\n preserveTabOrder = false,\n hideOnHoverOutside = true,\n hideOnInteractOutside = true,\n ...props\n }) {\n const context = useTooltipProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"Tooltip must receive a `store` prop or be wrapped in a TooltipProvider component.\",\n );\n\n props = useWrapElement(\n props,\n (element) => (\n <TooltipScopedContextProvider value={store}>\n {element}\n </TooltipScopedContextProvider>\n ),\n [store],\n );\n\n const role = useStoreState(store, (state) =>\n state.type === \"description\" ? \"tooltip\" : \"none\",\n );\n\n props = { role, ...props };\n\n props = useHovercard({\n ...props,\n store,\n portal,\n gutter,\n preserveTabOrder,\n hideOnHoverOutside(event) {\n if (isFalsyBooleanCallback(hideOnHoverOutside, event)) return false;\n const anchorElement = store?.getState().anchorElement;\n if (!anchorElement) return true;\n // If the anchor element has the `data-focus-visible` attribute (added\n // by the `Focusable` component that is used by several components), we\n // don't hide the tooltip when the mouse leaves the anchor element. In\n // this case, the tooltip will be hidden only if the user presses the\n // Escape key or if the anchor element loses focus.\n if (\"focusVisible\" in anchorElement.dataset) return false;\n return true;\n },\n hideOnInteractOutside: (event) => {\n if (isFalsyBooleanCallback(hideOnInteractOutside, event)) return false;\n const anchorElement = store?.getState().anchorElement;\n if (!anchorElement) return true;\n // Prevent hiding the tooltip when the user interacts with the anchor\n // element. It's up to the developer to hide the tooltip when the user\n // clicks on the anchor element if that's the intended behavior.\n if (contains(anchorElement, event.target as Node)) return false;\n return true;\n },\n });\n\n return props;\n },\n);\n\n/**\n * Renders a tooltip element that visually describes a\n * [`TooltipAnchor`](https://ariakit.com/reference/tooltip-anchor) when it\n * receives focus or is hovered.\n *\n * The tooltip is strictly for visual purposes. It's your responsibility to\n * ensure the anchor element has an accessible name. See [Tooltip anchors must\n * have accessible\n * names](https://ariakit.com/components/tooltip#tooltip-anchors-must-have-accessible-names)\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx {3}\n * <TooltipProvider>\n * <TooltipAnchor>Anchor</TooltipAnchor>\n * <Tooltip>Tooltip</Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport const Tooltip = createDialogComponent(\n forwardRef(function Tooltip(props: TooltipProps) {\n const htmlProps = useTooltip(props);\n return createElement(TagName, htmlProps);\n }),\n useTooltipProviderContext,\n);\n\nexport interface TooltipOptions<\n T extends ElementType = TagName,\n> extends HovercardOptions<T> {\n /**\n * Object returned by the\n * [`useTooltipStore`](https://ariakit.com/reference/use-tooltip-store) hook.\n * If not provided, the closest\n * [`TooltipProvider`](https://ariakit.com/reference/tooltip-provider)\n * component's context will be used.\n */\n store?: TooltipStore;\n /**\n * @default true\n */\n portal?: HovercardOptions<T>[\"portal\"];\n /**\n * @default 8\n */\n gutter?: HovercardOptions<T>[\"gutter\"];\n}\n\nexport type TooltipProps<T extends ElementType = TagName> = Props<\n T,\n TooltipOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;MA2CI,aAAgB,WAAA,SAAA,WAA0B,EAAA,OAAA,SAAA,MAAA,SAAA,GAAA,mBAAA,OAAA,qBAAA,MAAA,wBAAA,MAAA,GAAA,SAAA;CAC1C,MAAA,UAAQ,0BAAS;CAEjB,QAAA,SAEE;CAIF,UAAQ,OAAA,QACN,IAAA,aACC,gBACC,mFAAA;SAAqC,eAAA,QAAA,YAAA,oBAAA,8BAAA;;EAEP,UAGlC;CAMA,CAAA,GAAA,CAAA,KAAQ,CAAA;SAJK;EAIG,MAAG,cAAA,QAAA,UAAA,MAAA,SAAA,gBAAA,YAAA,MAAA;EAAM,GAAA;CAEzB;SACK,aAAA;EACH,GAAA;EACA;EACA;EACA;EACA;qBACM,OAAA;GACJ,IAAA,uBAAsB,oBAAkB,KAAA,GAAA,OAAA;GACxC,MAAK,gBAAe,OAAO,SAAA,EAAA;GAM3B,IAAI,CAAA,eAAA,OAAkB;GACtB,IAAA,kBAAO,cAAA,SAAA,OAAA;GACT,OAAA;EACA;0BACM,UAAuB;GAC3B,IAAA,uBAAsB,uBAAkB,KAAA,GAAA,OAAA;GACxC,MAAK,gBAAe,OAAO,SAAA,EAAA;GAI3B,IAAI,CAAA,eAAS,OAAA;GACb,IAAA,SAAO,eAAA,MAAA,MAAA,GAAA,OAAA;GACT,OAAA;EACD;CAED,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;MAuBI,UAAO,sBADW,WACqB,SAAA,QAAA,OAAA;CACxC,OACD,cAAA,SACF,WAAA,KAAA,CAAA"}
@@ -29,7 +29,7 @@ declare const useVisuallyHidden: import("@ariakit/react-utils").Hook<"span", Vis
29
29
  * </a>
30
30
  * ```
31
31
  */
32
- declare const VisuallyHidden: (props: VisuallyHiddenProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
32
+ declare const VisuallyHidden: (props: VisuallyHiddenProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
33
33
  interface VisuallyHiddenOptions<_T extends ElementType = TagName> extends Options {}
34
34
  type VisuallyHiddenProps<T extends ElementType = TagName> = Props<T, VisuallyHiddenOptions<T>>;
35
35
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"visually-hidden.d.ts","names":["Options","Props","ElementType","TagName","useVisuallyHidden","VisuallyHiddenOptions","Hook","VisuallyHidden","VisuallyHiddenProps","props","ReactElement","JSXElementConstructor","_T","T"],"sources":["../../src/visually-hidden/visually-hidden.d.ts"],"mappings":";;;;cAEcG,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFY;;;;AACpB;AAAA;;;;AACQ;AAc7B;;;AAhByC,cAgBpBC,iBAAAA,iCAAkDE,IAAAA,SAAaD,qBAAqB;AAAA;AAYzG;;;;;;;;;AAAqJ;AAZ5C,cAYpFE,cAAAA,GAAiBE,KAAAA,EAAOD,mBAAmB,qBAAqBE,YAAAA,+BAA2CC,qBAAAA;AAAAA,UAC/GN,qBAAAA,YAAiCH,WAAAA,GAAcC,OAAAA,UAAiBH,OAAAA;AAAAA,KAErEQ,mBAAAA,WAA8BN,WAAAA,GAAcC,OAAAA,IAAWF,KAAAA,CAAMY,CAAAA,EAAGR,qBAAAA,CAAsBQ,CAAAA"}
1
+ {"version":3,"file":"visually-hidden.d.ts","names":["Options","Props","ElementType","TagName","useVisuallyHidden","VisuallyHiddenOptions","Hook","VisuallyHidden","VisuallyHiddenProps","props","ReactElement","JSXElementConstructor","_T","T"],"sources":["../../src/visually-hidden/visually-hidden.d.ts"],"mappings":";;;;cAEcG,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFY;;;;AACpB;AAAA;;;;AACQ;AAc7B;;;AAhByC,cAgBpBC,iBAAAA,iCAAkDE,IAAAA,SAAaD,qBAAqB;AAAA;AAYzG;;;;;;;;;AAAyJ;AAZhD,cAYpFE,cAAAA,GAAiBE,KAAAA,EAAOD,mBAAmB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACnHN,qBAAAA,YAAiCH,WAAAA,GAAcC,OAAAA,UAAiBH,OAAAA;AAAAA,KAErEQ,mBAAAA,WAA8BN,WAAAA,GAAcC,OAAAA,IAAWF,KAAAA,CAAMY,CAAAA,EAAGR,qBAAAA,CAAsBQ,CAAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ariakit/react-components",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Ariakit React components",
5
5
  "keywords": [
6
6
  "ariakit",
@@ -23,15 +23,15 @@
23
23
  "sideEffects": false,
24
24
  "dependencies": {
25
25
  "@floating-ui/dom": "^1.0.0",
26
- "@ariakit/components": "0.1.1",
27
- "@ariakit/react-store": "0.1.1",
28
- "@ariakit/react-utils": "0.1.1",
29
- "@ariakit/store": "0.1.1",
30
- "@ariakit/utils": "0.1.1"
26
+ "@ariakit/components": "0.1.2",
27
+ "@ariakit/react-store": "0.1.2",
28
+ "@ariakit/react-utils": "0.1.2",
29
+ "@ariakit/store": "0.1.2",
30
+ "@ariakit/utils": "0.1.2"
31
31
  },
32
32
  "devDependencies": {
33
- "react": "18.3.1",
34
- "react-dom": "18.3.1",
33
+ "react": "19.2.6",
34
+ "react-dom": "19.2.6",
35
35
  "@ariakit/scripts": "0.0.0"
36
36
  },
37
37
  "peerDependencies": {
@@ -55,7 +55,7 @@ export function useCollectionItemOffscreen<
55
55
  invariant(
56
56
  offscreenRoot !== undefined,
57
57
  process.env.NODE_ENV !== "production" &&
58
- "The offscreenRoot prop must provided.",
58
+ "The offscreenRoot prop must be provided.",
59
59
  );
60
60
 
61
61
  const getOffscreenRoot = () => {
@@ -293,6 +293,16 @@ export const useCombobox = createHook<TagName, ComboboxOptions>(
293
293
  const scrollingElementRef = useRef<Element | null>(null);
294
294
  const getAutoSelectIdProp = useEvent(getAutoSelectId);
295
295
  const autoSelectIdRef = useRef<string | null | undefined>(null);
296
+ // Tracks the item (id and value) the autoSelect behavior last moved focus
297
+ // to, so we can tell an already-focused item apart from one that only looks
298
+ // the same, such as a different value under the same id (e.g. an index-keyed
299
+ // list after filtering) or an item that became active without focus. This is
300
+ // distinct from autoSelectIdRef above, which tracks the current target for
301
+ // the scroll guard. Reset when the popover closes so reopening re-focuses.
302
+ const autoSelectMovedRef = useRef<{
303
+ id: string | null;
304
+ value?: string;
305
+ }>(undefined);
296
306
  const userScrolledRef = useRef(false);
297
307
  const isAutoScrollingRef = useRef(false);
298
308
 
@@ -358,6 +368,13 @@ export const useCombobox = createHook<TagName, ComboboxOptions>(
358
368
  canAutoSelectRef.current = open;
359
369
  }, [autoSelect, open]);
360
370
 
371
+ // Reset the auto-moved item when the popover closes so reopening re-focuses
372
+ // the auto-selected item.
373
+ useSafeLayoutEffect(() => {
374
+ if (open) return;
375
+ autoSelectMovedRef.current = undefined;
376
+ }, [open]);
377
+
361
378
  const resetValueOnSelect = useStoreState(store, "resetValueOnSelect");
362
379
 
363
380
  // Auto select the first item on type. This effect runs both when the value
@@ -391,7 +408,36 @@ export const useCombobox = createHook<TagName, ComboboxOptions>(
391
408
  // are disabled), we should move the focus to the input (null),
392
409
  // otherwise, with async items, the activeValue won't be reset. TODO:
393
410
  // Test this.
394
- store.move(autoSelectId ?? null);
411
+ const nextActiveId = autoSelectId ?? null;
412
+ const nextActiveValue = store.item(nextActiveId)?.value;
413
+ const moved = autoSelectMovedRef.current;
414
+ // Move when the auto-select target changes: a different active item, a
415
+ // different target id, or the same id now holding a different value
416
+ // (for example, a list keyed by index whose first item's value changes
417
+ // after filtering, or asynchronously loaded items). We avoid re-moving
418
+ // to the exact item we already moved to, because store.move() always
419
+ // increments the `moves` counter, which makes the Composite component
420
+ // re-focus the active item. Re-focusing when only the rendered items
421
+ // changed (for example, a virtualized list resizing because a mobile
422
+ // keyboard's autocomplete bar changed the available height) would bounce
423
+ // focus off the input and back and drop characters as the user types.
424
+ // See https://github.com/ariakit/ariakit/issues/3837
425
+ if (
426
+ nextActiveId !== activeId ||
427
+ moved?.id !== nextActiveId ||
428
+ moved?.value !== nextActiveValue
429
+ ) {
430
+ autoSelectMovedRef.current = {
431
+ id: nextActiveId,
432
+ value: nextActiveValue,
433
+ };
434
+ store.move(nextActiveId);
435
+ } else {
436
+ // The same item is already the focused active item, so we skip the
437
+ // move to avoid re-focusing it. Keep activeValue in sync (a no-op
438
+ // here since the value is unchanged) the way store.move() would.
439
+ store.setState("activeValue", nextActiveValue);
440
+ }
395
441
  } else {
396
442
  // Reset the scroll position to the active item when an item is selected
397
443
  // and the combobox value is reset, which might move the active item
@@ -20,7 +20,7 @@ import {
20
20
  } from "@ariakit/utils";
21
21
  import type { ElementType, FocusEvent, KeyboardEvent, MouseEvent } from "react";
22
22
  import { useEffect, useRef } from "react";
23
- import { useCompositeContext } from "./composite-context.tsx";
23
+ import { useCompositeScopedContext } from "./composite-context.tsx";
24
24
  import type { CompositeStore } from "./composite-store.ts";
25
25
  import { selectTextField } from "./utils.ts";
26
26
 
@@ -56,7 +56,7 @@ export const useCompositeContainer = createHook<
56
56
  TagName,
57
57
  CompositeContainerOptions
58
58
  >(function useCompositeContainer({ store, ...props }) {
59
- const context = useCompositeContext();
59
+ const context = useCompositeScopedContext();
60
60
  store = store || context;
61
61
 
62
62
  const ref = useRef<HTMLType>(null);
@@ -15,29 +15,22 @@ import {
15
15
  hasFocusWithin,
16
16
  hasOwnProperty,
17
17
  invariant,
18
+ isElement,
18
19
  removeUndefinedValues,
19
20
  } from "@ariakit/utils";
20
21
  import type { BooleanOrCallback } from "@ariakit/utils";
21
22
  import type { ElementType, MouseEvent as ReactMouseEvent } from "react";
22
23
  import { useCallback } from "react";
23
- import { useCompositeContext } from "./composite-context.tsx";
24
+ import { useCompositeScopedContext } from "./composite-context.tsx";
24
25
  import type { CompositeStore } from "./composite-store.ts";
25
26
 
26
27
  const TagName = "div" satisfies ElementType;
27
28
  type TagName = typeof TagName;
28
29
  type HTMLType = HTMLElementTagNameMap[TagName];
29
30
 
30
- function getMouseDestination(event: ReactMouseEvent<HTMLElement>) {
31
- const relatedTarget = event.relatedTarget as Node | null;
32
- if (relatedTarget?.nodeType === Node.ELEMENT_NODE) {
33
- return relatedTarget as Element;
34
- }
35
- return null;
36
- }
37
-
38
31
  function hoveringInside(event: ReactMouseEvent<HTMLElement>) {
39
- const nextElement = getMouseDestination(event);
40
- if (!nextElement) return false;
32
+ const nextElement = event.relatedTarget;
33
+ if (!isElement(nextElement)) return false;
41
34
  return contains(event.currentTarget, nextElement);
42
35
  }
43
36
 
@@ -45,8 +38,9 @@ const symbol = Symbol("composite-hover");
45
38
  type ElementWithSymbol = HTMLElement & { [symbol]?: boolean };
46
39
 
47
40
  function movingToAnotherItem(event: ReactMouseEvent<HTMLElement>) {
48
- let dest = getMouseDestination(event);
49
- if (!dest) return false;
41
+ const { relatedTarget } = event;
42
+ if (!isElement(relatedTarget)) return false;
43
+ let dest: Element | null = relatedTarget;
50
44
  do {
51
45
  if (hasOwnProperty(dest, symbol) && dest[symbol]) return true;
52
46
  dest = dest.parentElement;
@@ -75,7 +69,7 @@ export const useCompositeHover = createHook<TagName, CompositeHoverOptions>(
75
69
  blurOnHoverEnd = !!focusOnHover,
76
70
  ...props
77
71
  }) {
78
- const context = useCompositeContext();
72
+ const context = useCompositeScopedContext();
79
73
  store = store || context;
80
74
 
81
75
  invariant(
@@ -8,7 +8,7 @@ import { useCollectionItemOffscreen } from "../collection/collection-item-offscr
8
8
  import type { ComboboxStoreState } from "../combobox/combobox-store.ts";
9
9
  import { Role } from "../role/role.tsx";
10
10
  import type { SelectStoreState } from "../select/select-store.ts";
11
- import { useCompositeContext } from "./composite-context.tsx";
11
+ import { useCompositeScopedContext } from "./composite-context.tsx";
12
12
  import * as Base from "./composite-item.tsx";
13
13
  import type { CompositeStoreState } from "./composite-store.ts";
14
14
 
@@ -20,7 +20,7 @@ export function useCompositeItemOffscreen<
20
20
  // oxlint-disable-next-line no-unnecessary-type-parameters
21
21
  P extends CompositeItemProps<T>,
22
22
  >({ store, offscreenMode = "active", disabled, value, ...props }: P) {
23
- const context = useCompositeContext();
23
+ const context = useCompositeScopedContext();
24
24
  store = store || context;
25
25
 
26
26
  const id = useId(props.id);
@@ -39,7 +39,7 @@ import { useCommand } from "../command/command.tsx";
39
39
  import {
40
40
  CompositeItemContext,
41
41
  CompositeRowContext,
42
- useCompositeContext,
42
+ useCompositeScopedContext,
43
43
  } from "./composite-context.tsx";
44
44
  import type { CompositeStore } from "./composite-store.ts";
45
45
  import {
@@ -155,7 +155,7 @@ export const useCompositeItem = createHook<TagName, CompositeItemOptions>(
155
155
  "aria-posinset": ariaPosInSetProp,
156
156
  ...props
157
157
  }) {
158
- const context = useCompositeContext();
158
+ const context = useCompositeScopedContext();
159
159
  store = store || context;
160
160
 
161
161
  const id = useId(props.id);