@bigbinary/neeto-atoms 1.0.5 → 1.0.7

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 (503) hide show
  1. package/dist/DataTable-Y4POx0WN.js +3737 -0
  2. package/dist/DataTable-Y4POx0WN.js.map +1 -0
  3. package/dist/button-COIbN8dg.js +40 -0
  4. package/dist/button-COIbN8dg.js.map +1 -0
  5. package/dist/check-Cpkv29p1.js +15 -0
  6. package/dist/check-Cpkv29p1.js.map +1 -0
  7. package/dist/chevron-down-BNi0ntys.js +15 -0
  8. package/dist/chevron-down-BNi0ntys.js.map +1 -0
  9. package/dist/chevron-left-BDoT8E2-.js +15 -0
  10. package/dist/chevron-left-BDoT8E2-.js.map +1 -0
  11. package/dist/chevron-right-DQnrO-ek.js +15 -0
  12. package/dist/chevron-right-DQnrO-ek.js.map +1 -0
  13. package/dist/chevron-up-Bf2G3AAU.js +15 -0
  14. package/dist/chevron-up-Bf2G3AAU.js.map +1 -0
  15. package/dist/cjs/DataTable-DJw2SZ7b.js +3764 -0
  16. package/dist/cjs/DataTable-DJw2SZ7b.js.map +1 -0
  17. package/dist/cjs/button-B8XGl69v.js +63 -0
  18. package/dist/cjs/button-B8XGl69v.js.map +1 -0
  19. package/dist/cjs/check-BQgcDXys.js +17 -0
  20. package/dist/cjs/check-BQgcDXys.js.map +1 -0
  21. package/dist/cjs/chevron-down-CPsWSS51.js +17 -0
  22. package/dist/cjs/chevron-down-CPsWSS51.js.map +1 -0
  23. package/dist/cjs/chevron-left-BldoOh5p.js +17 -0
  24. package/dist/cjs/chevron-left-BldoOh5p.js.map +1 -0
  25. package/dist/cjs/chevron-right-0jNdwX2Q.js +17 -0
  26. package/dist/cjs/chevron-right-0jNdwX2Q.js.map +1 -0
  27. package/dist/cjs/chevron-up-BpwpBnZU.js +17 -0
  28. package/dist/cjs/chevron-up-BpwpBnZU.js.map +1 -0
  29. package/dist/cjs/components/DataTable.js +53 -0
  30. package/dist/cjs/components/DataTable.js.map +1 -0
  31. package/dist/cjs/createLucideIcon-D0tRgV6l.js +149 -0
  32. package/dist/cjs/createLucideIcon-D0tRgV6l.js.map +1 -0
  33. package/dist/cjs/dialog-DzNWLbJ6.js +50 -0
  34. package/dist/cjs/dialog-DzNWLbJ6.js.map +1 -0
  35. package/dist/cjs/ellipsis-4aubOI2n.js +21 -0
  36. package/dist/cjs/ellipsis-4aubOI2n.js.map +1 -0
  37. package/dist/cjs/floating-ui.react-dom-B4Aw6O7R.js +2293 -0
  38. package/dist/cjs/floating-ui.react-dom-B4Aw6O7R.js.map +1 -0
  39. package/dist/cjs/index-9jC1advf.js +34 -0
  40. package/dist/cjs/index-9jC1advf.js.map +1 -0
  41. package/dist/cjs/index-BZhTddX0.js +47 -0
  42. package/dist/cjs/index-BZhTddX0.js.map +1 -0
  43. package/dist/cjs/index-Bf0WsHta.js +63 -0
  44. package/dist/cjs/index-Bf0WsHta.js.map +1 -0
  45. package/dist/cjs/index-BqCr1H3u.js +173 -0
  46. package/dist/cjs/index-BqCr1H3u.js.map +1 -0
  47. package/dist/cjs/index-BrpkRQoS.js +99 -0
  48. package/dist/cjs/index-BrpkRQoS.js.map +1 -0
  49. package/dist/cjs/index-Bvu9MiFi.js +247 -0
  50. package/dist/cjs/index-Bvu9MiFi.js.map +1 -0
  51. package/dist/cjs/index-BwAq9ba8.js +38 -0
  52. package/dist/cjs/index-BwAq9ba8.js.map +1 -0
  53. package/dist/cjs/index-C9ICrOhM.js +328 -0
  54. package/dist/cjs/index-C9ICrOhM.js.map +1 -0
  55. package/dist/cjs/index-CB9xFokC.js +59 -0
  56. package/dist/cjs/index-CB9xFokC.js.map +1 -0
  57. package/dist/cjs/index-CCdG4z4E.js +30 -0
  58. package/dist/cjs/index-CCdG4z4E.js.map +1 -0
  59. package/dist/cjs/index-CF951Pw9.js +38 -0
  60. package/dist/cjs/index-CF951Pw9.js.map +1 -0
  61. package/dist/cjs/index-CGUGhyIp.js +103 -0
  62. package/dist/cjs/index-CGUGhyIp.js.map +1 -0
  63. package/dist/cjs/index-CGet1HH4.js +953 -0
  64. package/dist/cjs/index-CGet1HH4.js.map +1 -0
  65. package/dist/cjs/index-COPkC3I5.js +14 -0
  66. package/dist/cjs/index-COPkC3I5.js.map +1 -0
  67. package/dist/cjs/index-Ch55j1or.js +176 -0
  68. package/dist/cjs/index-Ch55j1or.js.map +1 -0
  69. package/dist/cjs/index-ChSOMM8b.js +1153 -0
  70. package/dist/cjs/index-ChSOMM8b.js.map +1 -0
  71. package/dist/cjs/index-CyrAgb4H.js +93 -0
  72. package/dist/cjs/index-CyrAgb4H.js.map +1 -0
  73. package/dist/cjs/index-D-iDn9RI.js +63 -0
  74. package/dist/cjs/index-D-iDn9RI.js.map +1 -0
  75. package/dist/cjs/index-DAds6mf_.js +433 -0
  76. package/dist/cjs/index-DAds6mf_.js.map +1 -0
  77. package/dist/cjs/index-DMbj7vXd.js +152 -0
  78. package/dist/cjs/index-DMbj7vXd.js.map +1 -0
  79. package/dist/cjs/index-DR7GJU4J.js +248 -0
  80. package/dist/cjs/index-DR7GJU4J.js.map +1 -0
  81. package/dist/cjs/index-DcCSSgb7.js +153 -0
  82. package/dist/cjs/index-DcCSSgb7.js.map +1 -0
  83. package/dist/cjs/index-Df-Ffa3s.js +43 -0
  84. package/dist/cjs/index-Df-Ffa3s.js.map +1 -0
  85. package/dist/cjs/index-DnKJmaCq.js +8 -0
  86. package/dist/cjs/index-DnKJmaCq.js.map +1 -0
  87. package/dist/cjs/index-DuNgWCXZ.js +113 -0
  88. package/dist/cjs/index-DuNgWCXZ.js.map +1 -0
  89. package/dist/cjs/index-EyWRfsCG.js +9 -0
  90. package/dist/cjs/index-EyWRfsCG.js.map +1 -0
  91. package/dist/cjs/index-lWVw05cs.js +35 -0
  92. package/dist/cjs/index-lWVw05cs.js.map +1 -0
  93. package/dist/cjs/index.js +53 -66849
  94. package/dist/cjs/index.js.map +1 -1
  95. package/dist/cjs/input-CgKPISj_.js +11 -0
  96. package/dist/cjs/input-CgKPISj_.js.map +1 -0
  97. package/dist/cjs/input-group-DoK0-4fL.js +66 -0
  98. package/dist/cjs/input-group-DoK0-4fL.js.map +1 -0
  99. package/dist/cjs/label-Bdc9ytTI.js +52 -0
  100. package/dist/cjs/label-Bdc9ytTI.js.map +1 -0
  101. package/dist/cjs/loader-circle-Bw7zP2Gn.js +17 -0
  102. package/dist/cjs/loader-circle-Bw7zP2Gn.js.map +1 -0
  103. package/dist/cjs/primitives/Accordion.js +340 -0
  104. package/dist/cjs/primitives/Accordion.js.map +1 -0
  105. package/dist/cjs/primitives/Alert.js +40 -0
  106. package/dist/cjs/primitives/Alert.js.map +1 -0
  107. package/dist/cjs/primitives/AlertDialog.js +256 -0
  108. package/dist/cjs/primitives/AlertDialog.js.map +1 -0
  109. package/dist/cjs/primitives/AspectRatio.js +75 -0
  110. package/dist/cjs/primitives/AspectRatio.js.map +1 -0
  111. package/dist/cjs/primitives/Avatar.js +189 -0
  112. package/dist/cjs/primitives/Avatar.js.map +1 -0
  113. package/dist/cjs/primitives/Badge.js +34 -0
  114. package/dist/cjs/primitives/Badge.js.map +1 -0
  115. package/dist/cjs/primitives/Breadcrumb.js +50 -0
  116. package/dist/cjs/primitives/Breadcrumb.js.map +1 -0
  117. package/dist/cjs/primitives/Button.js +16 -0
  118. package/dist/cjs/primitives/Button.js.map +1 -0
  119. package/dist/cjs/primitives/ButtonGroup.js +43 -0
  120. package/dist/cjs/primitives/ButtonGroup.js.map +1 -0
  121. package/dist/cjs/primitives/Calendar.js +8030 -0
  122. package/dist/cjs/primitives/Calendar.js.map +1 -0
  123. package/dist/cjs/primitives/Card.js +43 -0
  124. package/dist/cjs/primitives/Card.js.map +1 -0
  125. package/dist/cjs/primitives/Carousel.js +1867 -0
  126. package/dist/cjs/primitives/Carousel.js.map +1 -0
  127. package/dist/cjs/primitives/Chart.js +18787 -0
  128. package/dist/cjs/primitives/Chart.js.map +1 -0
  129. package/dist/cjs/primitives/Checkbox.js +304 -0
  130. package/dist/cjs/primitives/Checkbox.js.map +1 -0
  131. package/dist/cjs/primitives/Collapsible.js +33 -0
  132. package/dist/cjs/primitives/Collapsible.js.map +1 -0
  133. package/dist/cjs/primitives/Combobox.js +10288 -0
  134. package/dist/cjs/primitives/Combobox.js.map +1 -0
  135. package/dist/cjs/primitives/Command.js +248 -0
  136. package/dist/cjs/primitives/Command.js.map +1 -0
  137. package/dist/cjs/primitives/ContextMenu.js +404 -0
  138. package/dist/cjs/primitives/ContextMenu.js.map +1 -0
  139. package/dist/cjs/primitives/Dialog.js +48 -0
  140. package/dist/cjs/primitives/Dialog.js.map +1 -0
  141. package/dist/cjs/primitives/Drawer.js +1715 -0
  142. package/dist/cjs/primitives/Drawer.js.map +1 -0
  143. package/dist/cjs/primitives/DropdownMenu.js +383 -0
  144. package/dist/cjs/primitives/DropdownMenu.js.map +1 -0
  145. package/dist/cjs/primitives/Empty.js +50 -0
  146. package/dist/cjs/primitives/Empty.js.map +1 -0
  147. package/dist/cjs/primitives/Field.js +95 -0
  148. package/dist/cjs/primitives/Field.js.map +1 -0
  149. package/dist/cjs/primitives/HoverCard.js +291 -0
  150. package/dist/cjs/primitives/HoverCard.js.map +1 -0
  151. package/dist/cjs/primitives/Input.js +10 -0
  152. package/dist/cjs/primitives/Input.js.map +1 -0
  153. package/dist/cjs/primitives/InputGroup.js +27 -0
  154. package/dist/cjs/primitives/InputGroup.js.map +1 -0
  155. package/dist/cjs/primitives/InputOTP.js +84 -0
  156. package/dist/cjs/primitives/InputOTP.js.map +1 -0
  157. package/dist/cjs/primitives/Item.js +96 -0
  158. package/dist/cjs/primitives/Item.js.map +1 -0
  159. package/dist/cjs/primitives/Kbd.js +18 -0
  160. package/dist/cjs/primitives/Kbd.js.map +1 -0
  161. package/dist/cjs/primitives/Label.js +14 -0
  162. package/dist/cjs/primitives/Label.js.map +1 -0
  163. package/dist/cjs/primitives/Menubar.js +547 -0
  164. package/dist/cjs/primitives/Menubar.js.map +1 -0
  165. package/dist/cjs/primitives/NativeSelect.js +26 -0
  166. package/dist/cjs/primitives/NativeSelect.js.map +1 -0
  167. package/dist/cjs/primitives/NavigationMenu.js +856 -0
  168. package/dist/cjs/primitives/NavigationMenu.js.map +1 -0
  169. package/dist/cjs/primitives/Pagination.js +52 -0
  170. package/dist/cjs/primitives/Pagination.js.map +1 -0
  171. package/dist/cjs/primitives/Popover.js +444 -0
  172. package/dist/cjs/primitives/Popover.js.map +1 -0
  173. package/dist/cjs/primitives/Progress.js +125 -0
  174. package/dist/cjs/primitives/Progress.js.map +1 -0
  175. package/dist/cjs/primitives/RadioGroup.js +322 -0
  176. package/dist/cjs/primitives/RadioGroup.js.map +1 -0
  177. package/dist/cjs/primitives/Resizable.js +2051 -0
  178. package/dist/cjs/primitives/Resizable.js.map +1 -0
  179. package/dist/cjs/primitives/ScrollArea.js +754 -0
  180. package/dist/cjs/primitives/ScrollArea.js.map +1 -0
  181. package/dist/cjs/primitives/Select.js +1318 -0
  182. package/dist/cjs/primitives/Select.js.map +1 -0
  183. package/dist/cjs/primitives/Separator.js +14 -0
  184. package/dist/cjs/primitives/Separator.js.map +1 -0
  185. package/dist/cjs/primitives/Sheet.js +44 -0
  186. package/dist/cjs/primitives/Sheet.js.map +1 -0
  187. package/dist/cjs/primitives/Sidebar.js +310 -0
  188. package/dist/cjs/primitives/Sidebar.js.map +1 -0
  189. package/dist/cjs/primitives/Skeleton.js +10 -0
  190. package/dist/cjs/primitives/Skeleton.js.map +1 -0
  191. package/dist/cjs/primitives/Slider.js +591 -0
  192. package/dist/cjs/primitives/Slider.js.map +1 -0
  193. package/dist/cjs/primitives/Sonner.js +1260 -0
  194. package/dist/cjs/primitives/Sonner.js.map +1 -0
  195. package/dist/cjs/primitives/Spinner.js +16 -0
  196. package/dist/cjs/primitives/Spinner.js.map +1 -0
  197. package/dist/cjs/primitives/Switch.js +184 -0
  198. package/dist/cjs/primitives/Switch.js.map +1 -0
  199. package/dist/cjs/primitives/Table.js +45 -0
  200. package/dist/cjs/primitives/Table.js.map +1 -0
  201. package/dist/cjs/primitives/Tabs.js +250 -0
  202. package/dist/cjs/primitives/Tabs.js.map +1 -0
  203. package/dist/cjs/primitives/Textarea.js +10 -0
  204. package/dist/cjs/primitives/Textarea.js.map +1 -0
  205. package/dist/cjs/primitives/Toggle.js +19 -0
  206. package/dist/cjs/primitives/Toggle.js.map +1 -0
  207. package/dist/cjs/primitives/ToggleGroup.js +221 -0
  208. package/dist/cjs/primitives/ToggleGroup.js.map +1 -0
  209. package/dist/cjs/primitives/Tooltip.js +33 -0
  210. package/dist/cjs/primitives/Tooltip.js.map +1 -0
  211. package/dist/cjs/primitives/Typography.js +105 -0
  212. package/dist/cjs/primitives/Typography.js.map +1 -0
  213. package/dist/cjs/primitives/index.js +422 -0
  214. package/dist/cjs/primitives/index.js.map +1 -0
  215. package/dist/cjs/reselect-CeyIIDM-.js +457 -0
  216. package/dist/cjs/reselect-CeyIIDM-.js.map +1 -0
  217. package/dist/cjs/separator-CPy2gyg1.js +58 -0
  218. package/dist/cjs/separator-CPy2gyg1.js.map +1 -0
  219. package/dist/cjs/sheet-nHSYZxAA.js +48 -0
  220. package/dist/cjs/sheet-nHSYZxAA.js.map +1 -0
  221. package/dist/cjs/skeleton-DffZ8bV7.js +11 -0
  222. package/dist/cjs/skeleton-DffZ8bV7.js.map +1 -0
  223. package/dist/cjs/textarea-CZSSY75H.js +11 -0
  224. package/dist/cjs/textarea-CZSSY75H.js.map +1 -0
  225. package/dist/cjs/toggle-CaqzT8dI.js +84 -0
  226. package/dist/cjs/toggle-CaqzT8dI.js.map +1 -0
  227. package/dist/cjs/tooltip-CRkOMh1b.js +542 -0
  228. package/dist/cjs/tooltip-CRkOMh1b.js.map +1 -0
  229. package/dist/cjs/use-mobile-B-UYxtqX.js +41 -0
  230. package/dist/cjs/use-mobile-B-UYxtqX.js.map +1 -0
  231. package/dist/cjs/utils-CTr7wn5d.js +3210 -0
  232. package/dist/cjs/utils-CTr7wn5d.js.map +1 -0
  233. package/dist/cjs/x-Brw3FJst.js +20 -0
  234. package/dist/cjs/x-Brw3FJst.js.map +1 -0
  235. package/dist/components/DataTable/DataTable.d.ts +1 -1
  236. package/dist/components/DataTable/types.d.ts +0 -5
  237. package/dist/components/DataTable.js +41 -0
  238. package/dist/components/DataTable.js.map +1 -0
  239. package/dist/createLucideIcon-C8ycilSN.js +147 -0
  240. package/dist/createLucideIcon-C8ycilSN.js.map +1 -0
  241. package/dist/dialog-C97DOTvO.js +39 -0
  242. package/dist/dialog-C97DOTvO.js.map +1 -0
  243. package/dist/ellipsis-lb8Ws6br.js +19 -0
  244. package/dist/ellipsis-lb8Ws6br.js.map +1 -0
  245. package/dist/floating-ui.react-dom-CcGbtPEK.js +2243 -0
  246. package/dist/floating-ui.react-dom-CcGbtPEK.js.map +1 -0
  247. package/dist/index-0o2E3Cnw.js +146 -0
  248. package/dist/index-0o2E3Cnw.js.map +1 -0
  249. package/dist/index-30QpKM0j.js +16 -0
  250. package/dist/index-30QpKM0j.js.map +1 -0
  251. package/dist/index-B4_fVWDx.js +1129 -0
  252. package/dist/index-B4_fVWDx.js.map +1 -0
  253. package/dist/index-BA158WEj.js +12 -0
  254. package/dist/index-BA158WEj.js.map +1 -0
  255. package/dist/index-BNPynZWM.js +225 -0
  256. package/dist/index-BNPynZWM.js.map +1 -0
  257. package/dist/index-BYZaLNq1.js +41 -0
  258. package/dist/index-BYZaLNq1.js.map +1 -0
  259. package/dist/index-BfAAoDv6.js +7 -0
  260. package/dist/index-BfAAoDv6.js.map +1 -0
  261. package/dist/index-BtkPdosV.js +40 -0
  262. package/dist/index-BtkPdosV.js.map +1 -0
  263. package/dist/index-BwxI_qgh.js +915 -0
  264. package/dist/index-BwxI_qgh.js.map +1 -0
  265. package/dist/index-ByEpUy7w.js +302 -0
  266. package/dist/index-ByEpUy7w.js.map +1 -0
  267. package/dist/index-CSMSzzKM.js +93 -0
  268. package/dist/index-CSMSzzKM.js.map +1 -0
  269. package/dist/index-CSUSJzOJ.js +13 -0
  270. package/dist/index-CSUSJzOJ.js.map +1 -0
  271. package/dist/index-CSggBaQF.js +36 -0
  272. package/dist/index-CSggBaQF.js.map +1 -0
  273. package/dist/index-CfriMyrd.js +91 -0
  274. package/dist/index-CfriMyrd.js.map +1 -0
  275. package/dist/index-CiyxEyB0.js +80 -0
  276. package/dist/index-CiyxEyB0.js.map +1 -0
  277. package/dist/index-Cor698lu.js +71 -0
  278. package/dist/index-Cor698lu.js.map +1 -0
  279. package/dist/index-D7Zy7P05.js +45 -0
  280. package/dist/index-D7Zy7P05.js.map +1 -0
  281. package/dist/index-DNzunGHb.js +12 -0
  282. package/dist/index-DNzunGHb.js.map +1 -0
  283. package/dist/index-DOzu5J1s.js +8 -0
  284. package/dist/index-DOzu5J1s.js.map +1 -0
  285. package/dist/index-DZXbzIgC.js +6 -0
  286. package/dist/index-DZXbzIgC.js.map +1 -0
  287. package/dist/index-Dd1i1d2M.js +155 -0
  288. package/dist/index-Dd1i1d2M.js.map +1 -0
  289. package/dist/index-DhnfW8wQ.js +128 -0
  290. package/dist/index-DhnfW8wQ.js.map +1 -0
  291. package/dist/index-PF0ms7Xn.js +402 -0
  292. package/dist/index-PF0ms7Xn.js.map +1 -0
  293. package/dist/index-fV_U4ZJM.js +18 -0
  294. package/dist/index-fV_U4ZJM.js.map +1 -0
  295. package/dist/index-j_qxDBFl.js +224 -0
  296. package/dist/index-j_qxDBFl.js.map +1 -0
  297. package/dist/index-yFgkK_AM.js +131 -0
  298. package/dist/index-yFgkK_AM.js.map +1 -0
  299. package/dist/index-zW4GjM5L.js +16 -0
  300. package/dist/index-zW4GjM5L.js.map +1 -0
  301. package/dist/index.d.ts +0 -55
  302. package/dist/index.js +41 -66515
  303. package/dist/index.js.map +1 -1
  304. package/dist/input-GLCCE2kT.js +9 -0
  305. package/dist/input-GLCCE2kT.js.map +1 -0
  306. package/dist/input-group-CDBpz6Pb.js +59 -0
  307. package/dist/input-group-CDBpz6Pb.js.map +1 -0
  308. package/dist/label-B4qDF3W1.js +30 -0
  309. package/dist/label-B4qDF3W1.js.map +1 -0
  310. package/dist/loader-circle-DycHUAWN.js +15 -0
  311. package/dist/loader-circle-DycHUAWN.js.map +1 -0
  312. package/dist/primitives/Accordion.js +331 -0
  313. package/dist/primitives/Accordion.js.map +1 -0
  314. package/dist/primitives/Alert.js +35 -0
  315. package/dist/primitives/Alert.js.map +1 -0
  316. package/dist/primitives/AlertDialog.js +223 -0
  317. package/dist/primitives/AlertDialog.js.map +1 -0
  318. package/dist/primitives/AspectRatio.js +53 -0
  319. package/dist/primitives/AspectRatio.js.map +1 -0
  320. package/dist/primitives/Avatar.js +162 -0
  321. package/dist/primitives/Avatar.js.map +1 -0
  322. package/dist/primitives/Badge.js +31 -0
  323. package/dist/primitives/Badge.js.map +1 -0
  324. package/dist/primitives/Breadcrumb.js +42 -0
  325. package/dist/primitives/Breadcrumb.js.map +1 -0
  326. package/dist/{components → primitives}/Button.d.ts +1 -1
  327. package/dist/primitives/Button.js +14 -0
  328. package/dist/primitives/Button.js.map +1 -0
  329. package/dist/primitives/ButtonGroup.js +38 -0
  330. package/dist/primitives/ButtonGroup.js.map +1 -0
  331. package/dist/primitives/Calendar.js +8008 -0
  332. package/dist/primitives/Calendar.js.map +1 -0
  333. package/dist/primitives/Card.js +35 -0
  334. package/dist/primitives/Card.js.map +1 -0
  335. package/dist/{components → primitives}/Carousel.d.ts +1 -1
  336. package/dist/primitives/Carousel.js +1841 -0
  337. package/dist/primitives/Carousel.js.map +1 -0
  338. package/dist/primitives/Chart.js +18761 -0
  339. package/dist/primitives/Chart.js.map +1 -0
  340. package/dist/primitives/Checkbox.js +282 -0
  341. package/dist/primitives/Checkbox.js.map +1 -0
  342. package/dist/primitives/Collapsible.js +29 -0
  343. package/dist/primitives/Collapsible.js.map +1 -0
  344. package/dist/primitives/Combobox.js +10251 -0
  345. package/dist/primitives/Combobox.js.map +1 -0
  346. package/dist/primitives/Command.js +218 -0
  347. package/dist/primitives/Command.js.map +1 -0
  348. package/dist/primitives/ContextMenu.js +368 -0
  349. package/dist/primitives/ContextMenu.js.map +1 -0
  350. package/dist/primitives/Dialog.js +37 -0
  351. package/dist/primitives/Dialog.js.map +1 -0
  352. package/dist/primitives/Drawer.js +1685 -0
  353. package/dist/primitives/Drawer.js.map +1 -0
  354. package/dist/primitives/DropdownMenu.js +347 -0
  355. package/dist/primitives/DropdownMenu.js.map +1 -0
  356. package/dist/primitives/Empty.js +43 -0
  357. package/dist/primitives/Empty.js.map +1 -0
  358. package/dist/primitives/Field.js +84 -0
  359. package/dist/primitives/Field.js.map +1 -0
  360. package/dist/primitives/HoverCard.js +267 -0
  361. package/dist/primitives/HoverCard.js.map +1 -0
  362. package/dist/primitives/Input.js +8 -0
  363. package/dist/primitives/Input.js.map +1 -0
  364. package/dist/primitives/InputGroup.js +20 -0
  365. package/dist/primitives/InputGroup.js.map +1 -0
  366. package/dist/primitives/InputOTP.js +59 -0
  367. package/dist/primitives/InputOTP.js.map +1 -0
  368. package/dist/primitives/Item.js +85 -0
  369. package/dist/primitives/Item.js.map +1 -0
  370. package/dist/primitives/Kbd.js +15 -0
  371. package/dist/primitives/Kbd.js.map +1 -0
  372. package/dist/primitives/Label.js +12 -0
  373. package/dist/primitives/Label.js.map +1 -0
  374. package/dist/primitives/Menubar.js +510 -0
  375. package/dist/primitives/Menubar.js.map +1 -0
  376. package/dist/primitives/NativeSelect.js +22 -0
  377. package/dist/primitives/NativeSelect.js.map +1 -0
  378. package/dist/primitives/NavigationMenu.js +823 -0
  379. package/dist/primitives/NavigationMenu.js.map +1 -0
  380. package/dist/primitives/Pagination.js +44 -0
  381. package/dist/primitives/Pagination.js.map +1 -0
  382. package/dist/primitives/Popover.js +416 -0
  383. package/dist/primitives/Popover.js.map +1 -0
  384. package/dist/primitives/Progress.js +103 -0
  385. package/dist/primitives/Progress.js.map +1 -0
  386. package/dist/primitives/RadioGroup.js +299 -0
  387. package/dist/primitives/RadioGroup.js.map +1 -0
  388. package/dist/primitives/Resizable.js +2047 -0
  389. package/dist/primitives/Resizable.js.map +1 -0
  390. package/dist/primitives/ScrollArea.js +731 -0
  391. package/dist/primitives/ScrollArea.js.map +1 -0
  392. package/dist/primitives/Select.js +1286 -0
  393. package/dist/primitives/Select.js.map +1 -0
  394. package/dist/primitives/Separator.js +12 -0
  395. package/dist/primitives/Separator.js.map +1 -0
  396. package/dist/primitives/Sheet.js +35 -0
  397. package/dist/primitives/Sheet.js.map +1 -0
  398. package/dist/primitives/Sidebar.js +265 -0
  399. package/dist/primitives/Sidebar.js.map +1 -0
  400. package/dist/primitives/Skeleton.js +8 -0
  401. package/dist/primitives/Skeleton.js.map +1 -0
  402. package/dist/primitives/Slider.js +569 -0
  403. package/dist/primitives/Slider.js.map +1 -0
  404. package/dist/primitives/Sonner.js +1236 -0
  405. package/dist/primitives/Sonner.js.map +1 -0
  406. package/dist/primitives/Spinner.js +14 -0
  407. package/dist/primitives/Spinner.js.map +1 -0
  408. package/dist/primitives/Switch.js +162 -0
  409. package/dist/primitives/Switch.js.map +1 -0
  410. package/dist/{components → primitives}/Table.d.ts +2 -2
  411. package/dist/primitives/Table.js +36 -0
  412. package/dist/primitives/Table.js.map +1 -0
  413. package/dist/primitives/Tabs.js +224 -0
  414. package/dist/primitives/Tabs.js.map +1 -0
  415. package/dist/primitives/Textarea.js +8 -0
  416. package/dist/primitives/Textarea.js.map +1 -0
  417. package/dist/primitives/Toggle.js +17 -0
  418. package/dist/primitives/Toggle.js.map +1 -0
  419. package/dist/primitives/ToggleGroup.js +199 -0
  420. package/dist/primitives/ToggleGroup.js.map +1 -0
  421. package/dist/primitives/Tooltip.js +28 -0
  422. package/dist/primitives/Tooltip.js.map +1 -0
  423. package/dist/{components → primitives}/Typography.d.ts +1 -1
  424. package/dist/primitives/Typography.js +83 -0
  425. package/dist/primitives/Typography.js.map +1 -0
  426. package/dist/primitives/index.d.ts +55 -0
  427. package/dist/primitives/index.js +110 -0
  428. package/dist/primitives/index.js.map +1 -0
  429. package/dist/reselect-CABQm5hA.js +448 -0
  430. package/dist/reselect-CABQm5hA.js.map +1 -0
  431. package/dist/separator-BbhgePmX.js +36 -0
  432. package/dist/separator-BbhgePmX.js.map +1 -0
  433. package/dist/shadcn/components/badge.d.ts +1 -1
  434. package/dist/shadcn/components/button.d.ts +2 -2
  435. package/dist/shadcn/components/typography.d.ts +2 -2
  436. package/dist/sheet-D1ngftfX.js +39 -0
  437. package/dist/sheet-D1ngftfX.js.map +1 -0
  438. package/dist/skeleton-AR83txPr.js +9 -0
  439. package/dist/skeleton-AR83txPr.js.map +1 -0
  440. package/dist/textarea-BSZwxzjQ.js +9 -0
  441. package/dist/textarea-BSZwxzjQ.js.map +1 -0
  442. package/dist/toggle-2k9K8a5c.js +60 -0
  443. package/dist/toggle-2k9K8a5c.js.map +1 -0
  444. package/dist/tooltip-D5soNrAP.js +517 -0
  445. package/dist/tooltip-D5soNrAP.js.map +1 -0
  446. package/dist/use-mobile-IRjN_mlT.js +19 -0
  447. package/dist/use-mobile-IRjN_mlT.js.map +1 -0
  448. package/dist/utils-DdHUxIdC.js +3207 -0
  449. package/dist/utils-DdHUxIdC.js.map +1 -0
  450. package/dist/x-_o2T3n6D.js +18 -0
  451. package/dist/x-_o2T3n6D.js.map +1 -0
  452. package/package.json +53 -33
  453. /package/dist/{components → primitives}/Accordion.d.ts +0 -0
  454. /package/dist/{components → primitives}/Alert.d.ts +0 -0
  455. /package/dist/{components → primitives}/AlertDialog.d.ts +0 -0
  456. /package/dist/{components → primitives}/AspectRatio.d.ts +0 -0
  457. /package/dist/{components → primitives}/Avatar.d.ts +0 -0
  458. /package/dist/{components → primitives}/Badge.d.ts +0 -0
  459. /package/dist/{components → primitives}/Breadcrumb.d.ts +0 -0
  460. /package/dist/{components → primitives}/ButtonGroup.d.ts +0 -0
  461. /package/dist/{components → primitives}/Calendar.d.ts +0 -0
  462. /package/dist/{components → primitives}/Card.d.ts +0 -0
  463. /package/dist/{components → primitives}/Chart.d.ts +0 -0
  464. /package/dist/{components → primitives}/Checkbox.d.ts +0 -0
  465. /package/dist/{components → primitives}/Collapsible.d.ts +0 -0
  466. /package/dist/{components → primitives}/Combobox.d.ts +0 -0
  467. /package/dist/{components → primitives}/Command.d.ts +0 -0
  468. /package/dist/{components → primitives}/ContextMenu.d.ts +0 -0
  469. /package/dist/{components → primitives}/Dialog.d.ts +0 -0
  470. /package/dist/{components → primitives}/Drawer.d.ts +0 -0
  471. /package/dist/{components → primitives}/DropdownMenu.d.ts +0 -0
  472. /package/dist/{components → primitives}/Empty.d.ts +0 -0
  473. /package/dist/{components → primitives}/Field.d.ts +0 -0
  474. /package/dist/{components → primitives}/HoverCard.d.ts +0 -0
  475. /package/dist/{components → primitives}/Input.d.ts +0 -0
  476. /package/dist/{components → primitives}/InputGroup.d.ts +0 -0
  477. /package/dist/{components → primitives}/InputOTP.d.ts +0 -0
  478. /package/dist/{components → primitives}/Item.d.ts +0 -0
  479. /package/dist/{components → primitives}/Kbd.d.ts +0 -0
  480. /package/dist/{components → primitives}/Label.d.ts +0 -0
  481. /package/dist/{components → primitives}/Menubar.d.ts +0 -0
  482. /package/dist/{components → primitives}/NativeSelect.d.ts +0 -0
  483. /package/dist/{components → primitives}/NavigationMenu.d.ts +0 -0
  484. /package/dist/{components → primitives}/Pagination.d.ts +0 -0
  485. /package/dist/{components → primitives}/Popover.d.ts +0 -0
  486. /package/dist/{components → primitives}/Progress.d.ts +0 -0
  487. /package/dist/{components → primitives}/RadioGroup.d.ts +0 -0
  488. /package/dist/{components → primitives}/Resizable.d.ts +0 -0
  489. /package/dist/{components → primitives}/ScrollArea.d.ts +0 -0
  490. /package/dist/{components → primitives}/Select.d.ts +0 -0
  491. /package/dist/{components → primitives}/Separator.d.ts +0 -0
  492. /package/dist/{components → primitives}/Sheet.d.ts +0 -0
  493. /package/dist/{components → primitives}/Sidebar.d.ts +0 -0
  494. /package/dist/{components → primitives}/Skeleton.d.ts +0 -0
  495. /package/dist/{components → primitives}/Slider.d.ts +0 -0
  496. /package/dist/{components → primitives}/Sonner.d.ts +0 -0
  497. /package/dist/{components → primitives}/Spinner.d.ts +0 -0
  498. /package/dist/{components → primitives}/Switch.d.ts +0 -0
  499. /package/dist/{components → primitives}/Tabs.d.ts +0 -0
  500. /package/dist/{components → primitives}/Textarea.d.ts +0 -0
  501. /package/dist/{components → primitives}/Toggle.d.ts +0 -0
  502. /package/dist/{components → primitives}/ToggleGroup.d.ts +0 -0
  503. /package/dist/{components → primitives}/Tooltip.d.ts +0 -0
@@ -0,0 +1,915 @@
1
+ import * as React from 'react';
2
+ import { c as composeEventHandlers } from './index-DNzunGHb.js';
3
+ import { c as createCollection } from './index-Dd1i1d2M.js';
4
+ import { c as composeRefs, u as useComposedRefs } from './index-BtkPdosV.js';
5
+ import { c as createContextScope } from './index-CiyxEyB0.js';
6
+ import { u as useDirection } from './index-BA158WEj.js';
7
+ import { D as DismissableLayer } from './index-BNPynZWM.js';
8
+ import { h as hideOthers, u as useFocusGuards, R as ReactRemoveScroll, F as FocusScope } from './index-B4_fVWDx.js';
9
+ import { u as useId } from './index-zW4GjM5L.js';
10
+ import { R as Root2, A as Anchor, c as createPopperScope, C as Content, a as Arrow } from './index-ByEpUy7w.js';
11
+ import { P as Portal$1 } from './index-fV_U4ZJM.js';
12
+ import { P as Presence } from './index-yFgkK_AM.js';
13
+ import { P as Primitive, d as dispatchDiscreteCustomEvent } from './index-DhnfW8wQ.js';
14
+ import { c as createRovingFocusGroupScope, I as Item, R as Root } from './index-j_qxDBFl.js';
15
+ import { jsx } from 'react/jsx-runtime';
16
+ import { u as useCallbackRef } from './index-CSUSJzOJ.js';
17
+
18
+ // src/slot.tsx
19
+ // @__NO_SIDE_EFFECTS__
20
+ function createSlot(ownerName) {
21
+ const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);
22
+ const Slot2 = React.forwardRef((props, forwardedRef) => {
23
+ const { children, ...slotProps } = props;
24
+ const childrenArray = React.Children.toArray(children);
25
+ const slottable = childrenArray.find(isSlottable);
26
+ if (slottable) {
27
+ const newElement = slottable.props.children;
28
+ const newChildren = childrenArray.map((child) => {
29
+ if (child === slottable) {
30
+ if (React.Children.count(newElement) > 1) return React.Children.only(null);
31
+ return React.isValidElement(newElement) ? newElement.props.children : null;
32
+ } else {
33
+ return child;
34
+ }
35
+ });
36
+ return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });
37
+ }
38
+ return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });
39
+ });
40
+ Slot2.displayName = `${ownerName}.Slot`;
41
+ return Slot2;
42
+ }
43
+ // @__NO_SIDE_EFFECTS__
44
+ function createSlotClone(ownerName) {
45
+ const SlotClone = React.forwardRef((props, forwardedRef) => {
46
+ const { children, ...slotProps } = props;
47
+ if (React.isValidElement(children)) {
48
+ const childrenRef = getElementRef(children);
49
+ const props2 = mergeProps(slotProps, children.props);
50
+ if (children.type !== React.Fragment) {
51
+ props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;
52
+ }
53
+ return React.cloneElement(children, props2);
54
+ }
55
+ return React.Children.count(children) > 1 ? React.Children.only(null) : null;
56
+ });
57
+ SlotClone.displayName = `${ownerName}.SlotClone`;
58
+ return SlotClone;
59
+ }
60
+ var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
61
+ function isSlottable(child) {
62
+ return React.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
63
+ }
64
+ function mergeProps(slotProps, childProps) {
65
+ const overrideProps = { ...childProps };
66
+ for (const propName in childProps) {
67
+ const slotPropValue = slotProps[propName];
68
+ const childPropValue = childProps[propName];
69
+ const isHandler = /^on[A-Z]/.test(propName);
70
+ if (isHandler) {
71
+ if (slotPropValue && childPropValue) {
72
+ overrideProps[propName] = (...args) => {
73
+ const result = childPropValue(...args);
74
+ slotPropValue(...args);
75
+ return result;
76
+ };
77
+ } else if (slotPropValue) {
78
+ overrideProps[propName] = slotPropValue;
79
+ }
80
+ } else if (propName === "style") {
81
+ overrideProps[propName] = { ...slotPropValue, ...childPropValue };
82
+ } else if (propName === "className") {
83
+ overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" ");
84
+ }
85
+ }
86
+ return { ...slotProps, ...overrideProps };
87
+ }
88
+ function getElementRef(element) {
89
+ let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
90
+ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
91
+ if (mayWarn) {
92
+ return element.ref;
93
+ }
94
+ getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
95
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
96
+ if (mayWarn) {
97
+ return element.props.ref;
98
+ }
99
+ return element.props.ref || element.ref;
100
+ }
101
+
102
+ var SELECTION_KEYS = ["Enter", " "];
103
+ var FIRST_KEYS = ["ArrowDown", "PageUp", "Home"];
104
+ var LAST_KEYS = ["ArrowUp", "PageDown", "End"];
105
+ var FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];
106
+ var SUB_OPEN_KEYS = {
107
+ ltr: [...SELECTION_KEYS, "ArrowRight"],
108
+ rtl: [...SELECTION_KEYS, "ArrowLeft"]
109
+ };
110
+ var SUB_CLOSE_KEYS = {
111
+ ltr: ["ArrowLeft"],
112
+ rtl: ["ArrowRight"]
113
+ };
114
+ var MENU_NAME = "Menu";
115
+ var [Collection, useCollection, createCollectionScope] = createCollection(MENU_NAME);
116
+ var [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [
117
+ createCollectionScope,
118
+ createPopperScope,
119
+ createRovingFocusGroupScope
120
+ ]);
121
+ var usePopperScope = createPopperScope();
122
+ var useRovingFocusGroupScope = createRovingFocusGroupScope();
123
+ var [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);
124
+ var [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);
125
+ var Menu = (props) => {
126
+ const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;
127
+ const popperScope = usePopperScope(__scopeMenu);
128
+ const [content, setContent] = React.useState(null);
129
+ const isUsingKeyboardRef = React.useRef(false);
130
+ const handleOpenChange = useCallbackRef(onOpenChange);
131
+ const direction = useDirection(dir);
132
+ React.useEffect(() => {
133
+ const handleKeyDown = () => {
134
+ isUsingKeyboardRef.current = true;
135
+ document.addEventListener("pointerdown", handlePointer, { capture: true, once: true });
136
+ document.addEventListener("pointermove", handlePointer, { capture: true, once: true });
137
+ };
138
+ const handlePointer = () => isUsingKeyboardRef.current = false;
139
+ document.addEventListener("keydown", handleKeyDown, { capture: true });
140
+ return () => {
141
+ document.removeEventListener("keydown", handleKeyDown, { capture: true });
142
+ document.removeEventListener("pointerdown", handlePointer, { capture: true });
143
+ document.removeEventListener("pointermove", handlePointer, { capture: true });
144
+ };
145
+ }, []);
146
+ return /* @__PURE__ */ jsx(Root2, { ...popperScope, children: /* @__PURE__ */ jsx(
147
+ MenuProvider,
148
+ {
149
+ scope: __scopeMenu,
150
+ open,
151
+ onOpenChange: handleOpenChange,
152
+ content,
153
+ onContentChange: setContent,
154
+ children: /* @__PURE__ */ jsx(
155
+ MenuRootProvider,
156
+ {
157
+ scope: __scopeMenu,
158
+ onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),
159
+ isUsingKeyboardRef,
160
+ dir: direction,
161
+ modal,
162
+ children
163
+ }
164
+ )
165
+ }
166
+ ) });
167
+ };
168
+ Menu.displayName = MENU_NAME;
169
+ var ANCHOR_NAME = "MenuAnchor";
170
+ var MenuAnchor = React.forwardRef(
171
+ (props, forwardedRef) => {
172
+ const { __scopeMenu, ...anchorProps } = props;
173
+ const popperScope = usePopperScope(__scopeMenu);
174
+ return /* @__PURE__ */ jsx(Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });
175
+ }
176
+ );
177
+ MenuAnchor.displayName = ANCHOR_NAME;
178
+ var PORTAL_NAME = "MenuPortal";
179
+ var [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {
180
+ forceMount: void 0
181
+ });
182
+ var MenuPortal = (props) => {
183
+ const { __scopeMenu, forceMount, children, container } = props;
184
+ const context = useMenuContext(PORTAL_NAME, __scopeMenu);
185
+ return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Portal$1, { asChild: true, container, children }) }) });
186
+ };
187
+ MenuPortal.displayName = PORTAL_NAME;
188
+ var CONTENT_NAME = "MenuContent";
189
+ var [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME);
190
+ var MenuContent = React.forwardRef(
191
+ (props, forwardedRef) => {
192
+ const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);
193
+ const { forceMount = portalContext.forceMount, ...contentProps } = props;
194
+ const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);
195
+ const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);
196
+ return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });
197
+ }
198
+ );
199
+ var MenuRootContentModal = React.forwardRef(
200
+ (props, forwardedRef) => {
201
+ const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);
202
+ const ref = React.useRef(null);
203
+ const composedRefs = useComposedRefs(forwardedRef, ref);
204
+ React.useEffect(() => {
205
+ const content = ref.current;
206
+ if (content) return hideOthers(content);
207
+ }, []);
208
+ return /* @__PURE__ */ jsx(
209
+ MenuContentImpl,
210
+ {
211
+ ...props,
212
+ ref: composedRefs,
213
+ trapFocus: context.open,
214
+ disableOutsidePointerEvents: context.open,
215
+ disableOutsideScroll: true,
216
+ onFocusOutside: composeEventHandlers(
217
+ props.onFocusOutside,
218
+ (event) => event.preventDefault(),
219
+ { checkForDefaultPrevented: false }
220
+ ),
221
+ onDismiss: () => context.onOpenChange(false)
222
+ }
223
+ );
224
+ }
225
+ );
226
+ var MenuRootContentNonModal = React.forwardRef((props, forwardedRef) => {
227
+ const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);
228
+ return /* @__PURE__ */ jsx(
229
+ MenuContentImpl,
230
+ {
231
+ ...props,
232
+ ref: forwardedRef,
233
+ trapFocus: false,
234
+ disableOutsidePointerEvents: false,
235
+ disableOutsideScroll: false,
236
+ onDismiss: () => context.onOpenChange(false)
237
+ }
238
+ );
239
+ });
240
+ var Slot = createSlot("MenuContent.ScrollLock");
241
+ var MenuContentImpl = React.forwardRef(
242
+ (props, forwardedRef) => {
243
+ const {
244
+ __scopeMenu,
245
+ loop = false,
246
+ trapFocus,
247
+ onOpenAutoFocus,
248
+ onCloseAutoFocus,
249
+ disableOutsidePointerEvents,
250
+ onEntryFocus,
251
+ onEscapeKeyDown,
252
+ onPointerDownOutside,
253
+ onFocusOutside,
254
+ onInteractOutside,
255
+ onDismiss,
256
+ disableOutsideScroll,
257
+ ...contentProps
258
+ } = props;
259
+ const context = useMenuContext(CONTENT_NAME, __scopeMenu);
260
+ const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);
261
+ const popperScope = usePopperScope(__scopeMenu);
262
+ const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);
263
+ const getItems = useCollection(__scopeMenu);
264
+ const [currentItemId, setCurrentItemId] = React.useState(null);
265
+ const contentRef = React.useRef(null);
266
+ const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);
267
+ const timerRef = React.useRef(0);
268
+ const searchRef = React.useRef("");
269
+ const pointerGraceTimerRef = React.useRef(0);
270
+ const pointerGraceIntentRef = React.useRef(null);
271
+ const pointerDirRef = React.useRef("right");
272
+ const lastPointerXRef = React.useRef(0);
273
+ const ScrollLockWrapper = disableOutsideScroll ? ReactRemoveScroll : React.Fragment;
274
+ const scrollLockWrapperProps = disableOutsideScroll ? { as: Slot, allowPinchZoom: true } : void 0;
275
+ const handleTypeaheadSearch = (key) => {
276
+ const search = searchRef.current + key;
277
+ const items = getItems().filter((item) => !item.disabled);
278
+ const currentItem = document.activeElement;
279
+ const currentMatch = items.find((item) => item.ref.current === currentItem)?.textValue;
280
+ const values = items.map((item) => item.textValue);
281
+ const nextMatch = getNextMatch(values, search, currentMatch);
282
+ const newItem = items.find((item) => item.textValue === nextMatch)?.ref.current;
283
+ (function updateSearch(value) {
284
+ searchRef.current = value;
285
+ window.clearTimeout(timerRef.current);
286
+ if (value !== "") timerRef.current = window.setTimeout(() => updateSearch(""), 1e3);
287
+ })(search);
288
+ if (newItem) {
289
+ setTimeout(() => newItem.focus());
290
+ }
291
+ };
292
+ React.useEffect(() => {
293
+ return () => window.clearTimeout(timerRef.current);
294
+ }, []);
295
+ useFocusGuards();
296
+ const isPointerMovingToSubmenu = React.useCallback((event) => {
297
+ const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;
298
+ return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);
299
+ }, []);
300
+ return /* @__PURE__ */ jsx(
301
+ MenuContentProvider,
302
+ {
303
+ scope: __scopeMenu,
304
+ searchRef,
305
+ onItemEnter: React.useCallback(
306
+ (event) => {
307
+ if (isPointerMovingToSubmenu(event)) event.preventDefault();
308
+ },
309
+ [isPointerMovingToSubmenu]
310
+ ),
311
+ onItemLeave: React.useCallback(
312
+ (event) => {
313
+ if (isPointerMovingToSubmenu(event)) return;
314
+ contentRef.current?.focus();
315
+ setCurrentItemId(null);
316
+ },
317
+ [isPointerMovingToSubmenu]
318
+ ),
319
+ onTriggerLeave: React.useCallback(
320
+ (event) => {
321
+ if (isPointerMovingToSubmenu(event)) event.preventDefault();
322
+ },
323
+ [isPointerMovingToSubmenu]
324
+ ),
325
+ pointerGraceTimerRef,
326
+ onPointerGraceIntentChange: React.useCallback((intent) => {
327
+ pointerGraceIntentRef.current = intent;
328
+ }, []),
329
+ children: /* @__PURE__ */ jsx(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx(
330
+ FocusScope,
331
+ {
332
+ asChild: true,
333
+ trapped: trapFocus,
334
+ onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {
335
+ event.preventDefault();
336
+ contentRef.current?.focus({ preventScroll: true });
337
+ }),
338
+ onUnmountAutoFocus: onCloseAutoFocus,
339
+ children: /* @__PURE__ */ jsx(
340
+ DismissableLayer,
341
+ {
342
+ asChild: true,
343
+ disableOutsidePointerEvents,
344
+ onEscapeKeyDown,
345
+ onPointerDownOutside,
346
+ onFocusOutside,
347
+ onInteractOutside,
348
+ onDismiss,
349
+ children: /* @__PURE__ */ jsx(
350
+ Root,
351
+ {
352
+ asChild: true,
353
+ ...rovingFocusGroupScope,
354
+ dir: rootContext.dir,
355
+ orientation: "vertical",
356
+ loop,
357
+ currentTabStopId: currentItemId,
358
+ onCurrentTabStopIdChange: setCurrentItemId,
359
+ onEntryFocus: composeEventHandlers(onEntryFocus, (event) => {
360
+ if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();
361
+ }),
362
+ preventScrollOnEntryFocus: true,
363
+ children: /* @__PURE__ */ jsx(
364
+ Content,
365
+ {
366
+ role: "menu",
367
+ "aria-orientation": "vertical",
368
+ "data-state": getOpenState(context.open),
369
+ "data-radix-menu-content": "",
370
+ dir: rootContext.dir,
371
+ ...popperScope,
372
+ ...contentProps,
373
+ ref: composedRefs,
374
+ style: { outline: "none", ...contentProps.style },
375
+ onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {
376
+ const target = event.target;
377
+ const isKeyDownInside = target.closest("[data-radix-menu-content]") === event.currentTarget;
378
+ const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;
379
+ const isCharacterKey = event.key.length === 1;
380
+ if (isKeyDownInside) {
381
+ if (event.key === "Tab") event.preventDefault();
382
+ if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);
383
+ }
384
+ const content = contentRef.current;
385
+ if (event.target !== content) return;
386
+ if (!FIRST_LAST_KEYS.includes(event.key)) return;
387
+ event.preventDefault();
388
+ const items = getItems().filter((item) => !item.disabled);
389
+ const candidateNodes = items.map((item) => item.ref.current);
390
+ if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();
391
+ focusFirst(candidateNodes);
392
+ }),
393
+ onBlur: composeEventHandlers(props.onBlur, (event) => {
394
+ if (!event.currentTarget.contains(event.target)) {
395
+ window.clearTimeout(timerRef.current);
396
+ searchRef.current = "";
397
+ }
398
+ }),
399
+ onPointerMove: composeEventHandlers(
400
+ props.onPointerMove,
401
+ whenMouse((event) => {
402
+ const target = event.target;
403
+ const pointerXHasChanged = lastPointerXRef.current !== event.clientX;
404
+ if (event.currentTarget.contains(target) && pointerXHasChanged) {
405
+ const newDir = event.clientX > lastPointerXRef.current ? "right" : "left";
406
+ pointerDirRef.current = newDir;
407
+ lastPointerXRef.current = event.clientX;
408
+ }
409
+ })
410
+ )
411
+ }
412
+ )
413
+ }
414
+ )
415
+ }
416
+ )
417
+ }
418
+ ) })
419
+ }
420
+ );
421
+ }
422
+ );
423
+ MenuContent.displayName = CONTENT_NAME;
424
+ var GROUP_NAME = "MenuGroup";
425
+ var MenuGroup = React.forwardRef(
426
+ (props, forwardedRef) => {
427
+ const { __scopeMenu, ...groupProps } = props;
428
+ return /* @__PURE__ */ jsx(Primitive.div, { role: "group", ...groupProps, ref: forwardedRef });
429
+ }
430
+ );
431
+ MenuGroup.displayName = GROUP_NAME;
432
+ var LABEL_NAME = "MenuLabel";
433
+ var MenuLabel = React.forwardRef(
434
+ (props, forwardedRef) => {
435
+ const { __scopeMenu, ...labelProps } = props;
436
+ return /* @__PURE__ */ jsx(Primitive.div, { ...labelProps, ref: forwardedRef });
437
+ }
438
+ );
439
+ MenuLabel.displayName = LABEL_NAME;
440
+ var ITEM_NAME = "MenuItem";
441
+ var ITEM_SELECT = "menu.itemSelect";
442
+ var MenuItem = React.forwardRef(
443
+ (props, forwardedRef) => {
444
+ const { disabled = false, onSelect, ...itemProps } = props;
445
+ const ref = React.useRef(null);
446
+ const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);
447
+ const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);
448
+ const composedRefs = useComposedRefs(forwardedRef, ref);
449
+ const isPointerDownRef = React.useRef(false);
450
+ const handleSelect = () => {
451
+ const menuItem = ref.current;
452
+ if (!disabled && menuItem) {
453
+ const itemSelectEvent = new CustomEvent(ITEM_SELECT, { bubbles: true, cancelable: true });
454
+ menuItem.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), { once: true });
455
+ dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);
456
+ if (itemSelectEvent.defaultPrevented) {
457
+ isPointerDownRef.current = false;
458
+ } else {
459
+ rootContext.onClose();
460
+ }
461
+ }
462
+ };
463
+ return /* @__PURE__ */ jsx(
464
+ MenuItemImpl,
465
+ {
466
+ ...itemProps,
467
+ ref: composedRefs,
468
+ disabled,
469
+ onClick: composeEventHandlers(props.onClick, handleSelect),
470
+ onPointerDown: (event) => {
471
+ props.onPointerDown?.(event);
472
+ isPointerDownRef.current = true;
473
+ },
474
+ onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {
475
+ if (!isPointerDownRef.current) event.currentTarget?.click();
476
+ }),
477
+ onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
478
+ const isTypingAhead = contentContext.searchRef.current !== "";
479
+ if (disabled || isTypingAhead && event.key === " ") return;
480
+ if (SELECTION_KEYS.includes(event.key)) {
481
+ event.currentTarget.click();
482
+ event.preventDefault();
483
+ }
484
+ })
485
+ }
486
+ );
487
+ }
488
+ );
489
+ MenuItem.displayName = ITEM_NAME;
490
+ var MenuItemImpl = React.forwardRef(
491
+ (props, forwardedRef) => {
492
+ const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;
493
+ const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);
494
+ const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);
495
+ const ref = React.useRef(null);
496
+ const composedRefs = useComposedRefs(forwardedRef, ref);
497
+ const [isFocused, setIsFocused] = React.useState(false);
498
+ const [textContent, setTextContent] = React.useState("");
499
+ React.useEffect(() => {
500
+ const menuItem = ref.current;
501
+ if (menuItem) {
502
+ setTextContent((menuItem.textContent ?? "").trim());
503
+ }
504
+ }, [itemProps.children]);
505
+ return /* @__PURE__ */ jsx(
506
+ Collection.ItemSlot,
507
+ {
508
+ scope: __scopeMenu,
509
+ disabled,
510
+ textValue: textValue ?? textContent,
511
+ children: /* @__PURE__ */ jsx(Item, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx(
512
+ Primitive.div,
513
+ {
514
+ role: "menuitem",
515
+ "data-highlighted": isFocused ? "" : void 0,
516
+ "aria-disabled": disabled || void 0,
517
+ "data-disabled": disabled ? "" : void 0,
518
+ ...itemProps,
519
+ ref: composedRefs,
520
+ onPointerMove: composeEventHandlers(
521
+ props.onPointerMove,
522
+ whenMouse((event) => {
523
+ if (disabled) {
524
+ contentContext.onItemLeave(event);
525
+ } else {
526
+ contentContext.onItemEnter(event);
527
+ if (!event.defaultPrevented) {
528
+ const item = event.currentTarget;
529
+ item.focus({ preventScroll: true });
530
+ }
531
+ }
532
+ })
533
+ ),
534
+ onPointerLeave: composeEventHandlers(
535
+ props.onPointerLeave,
536
+ whenMouse((event) => contentContext.onItemLeave(event))
537
+ ),
538
+ onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),
539
+ onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))
540
+ }
541
+ ) })
542
+ }
543
+ );
544
+ }
545
+ );
546
+ var CHECKBOX_ITEM_NAME = "MenuCheckboxItem";
547
+ var MenuCheckboxItem = React.forwardRef(
548
+ (props, forwardedRef) => {
549
+ const { checked = false, onCheckedChange, ...checkboxItemProps } = props;
550
+ return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(
551
+ MenuItem,
552
+ {
553
+ role: "menuitemcheckbox",
554
+ "aria-checked": isIndeterminate(checked) ? "mixed" : checked,
555
+ ...checkboxItemProps,
556
+ ref: forwardedRef,
557
+ "data-state": getCheckedState(checked),
558
+ onSelect: composeEventHandlers(
559
+ checkboxItemProps.onSelect,
560
+ () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),
561
+ { checkForDefaultPrevented: false }
562
+ )
563
+ }
564
+ ) });
565
+ }
566
+ );
567
+ MenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
568
+ var RADIO_GROUP_NAME = "MenuRadioGroup";
569
+ var [RadioGroupProvider, useRadioGroupContext] = createMenuContext(
570
+ RADIO_GROUP_NAME,
571
+ { value: void 0, onValueChange: () => {
572
+ } }
573
+ );
574
+ var MenuRadioGroup = React.forwardRef(
575
+ (props, forwardedRef) => {
576
+ const { value, onValueChange, ...groupProps } = props;
577
+ const handleValueChange = useCallbackRef(onValueChange);
578
+ return /* @__PURE__ */ jsx(RadioGroupProvider, { scope: props.__scopeMenu, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(MenuGroup, { ...groupProps, ref: forwardedRef }) });
579
+ }
580
+ );
581
+ MenuRadioGroup.displayName = RADIO_GROUP_NAME;
582
+ var RADIO_ITEM_NAME = "MenuRadioItem";
583
+ var MenuRadioItem = React.forwardRef(
584
+ (props, forwardedRef) => {
585
+ const { value, ...radioItemProps } = props;
586
+ const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);
587
+ const checked = value === context.value;
588
+ return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(
589
+ MenuItem,
590
+ {
591
+ role: "menuitemradio",
592
+ "aria-checked": checked,
593
+ ...radioItemProps,
594
+ ref: forwardedRef,
595
+ "data-state": getCheckedState(checked),
596
+ onSelect: composeEventHandlers(
597
+ radioItemProps.onSelect,
598
+ () => context.onValueChange?.(value),
599
+ { checkForDefaultPrevented: false }
600
+ )
601
+ }
602
+ ) });
603
+ }
604
+ );
605
+ MenuRadioItem.displayName = RADIO_ITEM_NAME;
606
+ var ITEM_INDICATOR_NAME = "MenuItemIndicator";
607
+ var [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(
608
+ ITEM_INDICATOR_NAME,
609
+ { checked: false }
610
+ );
611
+ var MenuItemIndicator = React.forwardRef(
612
+ (props, forwardedRef) => {
613
+ const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;
614
+ const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);
615
+ return /* @__PURE__ */ jsx(
616
+ Presence,
617
+ {
618
+ present: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true,
619
+ children: /* @__PURE__ */ jsx(
620
+ Primitive.span,
621
+ {
622
+ ...itemIndicatorProps,
623
+ ref: forwardedRef,
624
+ "data-state": getCheckedState(indicatorContext.checked)
625
+ }
626
+ )
627
+ }
628
+ );
629
+ }
630
+ );
631
+ MenuItemIndicator.displayName = ITEM_INDICATOR_NAME;
632
+ var SEPARATOR_NAME = "MenuSeparator";
633
+ var MenuSeparator = React.forwardRef(
634
+ (props, forwardedRef) => {
635
+ const { __scopeMenu, ...separatorProps } = props;
636
+ return /* @__PURE__ */ jsx(
637
+ Primitive.div,
638
+ {
639
+ role: "separator",
640
+ "aria-orientation": "horizontal",
641
+ ...separatorProps,
642
+ ref: forwardedRef
643
+ }
644
+ );
645
+ }
646
+ );
647
+ MenuSeparator.displayName = SEPARATOR_NAME;
648
+ var ARROW_NAME = "MenuArrow";
649
+ var MenuArrow = React.forwardRef(
650
+ (props, forwardedRef) => {
651
+ const { __scopeMenu, ...arrowProps } = props;
652
+ const popperScope = usePopperScope(__scopeMenu);
653
+ return /* @__PURE__ */ jsx(Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });
654
+ }
655
+ );
656
+ MenuArrow.displayName = ARROW_NAME;
657
+ var SUB_NAME = "MenuSub";
658
+ var [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);
659
+ var MenuSub = (props) => {
660
+ const { __scopeMenu, children, open = false, onOpenChange } = props;
661
+ const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);
662
+ const popperScope = usePopperScope(__scopeMenu);
663
+ const [trigger, setTrigger] = React.useState(null);
664
+ const [content, setContent] = React.useState(null);
665
+ const handleOpenChange = useCallbackRef(onOpenChange);
666
+ React.useEffect(() => {
667
+ if (parentMenuContext.open === false) handleOpenChange(false);
668
+ return () => handleOpenChange(false);
669
+ }, [parentMenuContext.open, handleOpenChange]);
670
+ return /* @__PURE__ */ jsx(Root2, { ...popperScope, children: /* @__PURE__ */ jsx(
671
+ MenuProvider,
672
+ {
673
+ scope: __scopeMenu,
674
+ open,
675
+ onOpenChange: handleOpenChange,
676
+ content,
677
+ onContentChange: setContent,
678
+ children: /* @__PURE__ */ jsx(
679
+ MenuSubProvider,
680
+ {
681
+ scope: __scopeMenu,
682
+ contentId: useId(),
683
+ triggerId: useId(),
684
+ trigger,
685
+ onTriggerChange: setTrigger,
686
+ children
687
+ }
688
+ )
689
+ }
690
+ ) });
691
+ };
692
+ MenuSub.displayName = SUB_NAME;
693
+ var SUB_TRIGGER_NAME = "MenuSubTrigger";
694
+ var MenuSubTrigger = React.forwardRef(
695
+ (props, forwardedRef) => {
696
+ const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);
697
+ const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);
698
+ const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);
699
+ const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);
700
+ const openTimerRef = React.useRef(null);
701
+ const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;
702
+ const scope = { __scopeMenu: props.__scopeMenu };
703
+ const clearOpenTimer = React.useCallback(() => {
704
+ if (openTimerRef.current) window.clearTimeout(openTimerRef.current);
705
+ openTimerRef.current = null;
706
+ }, []);
707
+ React.useEffect(() => clearOpenTimer, [clearOpenTimer]);
708
+ React.useEffect(() => {
709
+ const pointerGraceTimer = pointerGraceTimerRef.current;
710
+ return () => {
711
+ window.clearTimeout(pointerGraceTimer);
712
+ onPointerGraceIntentChange(null);
713
+ };
714
+ }, [pointerGraceTimerRef, onPointerGraceIntentChange]);
715
+ return /* @__PURE__ */ jsx(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx(
716
+ MenuItemImpl,
717
+ {
718
+ id: subContext.triggerId,
719
+ "aria-haspopup": "menu",
720
+ "aria-expanded": context.open,
721
+ "aria-controls": subContext.contentId,
722
+ "data-state": getOpenState(context.open),
723
+ ...props,
724
+ ref: composeRefs(forwardedRef, subContext.onTriggerChange),
725
+ onClick: (event) => {
726
+ props.onClick?.(event);
727
+ if (props.disabled || event.defaultPrevented) return;
728
+ event.currentTarget.focus();
729
+ if (!context.open) context.onOpenChange(true);
730
+ },
731
+ onPointerMove: composeEventHandlers(
732
+ props.onPointerMove,
733
+ whenMouse((event) => {
734
+ contentContext.onItemEnter(event);
735
+ if (event.defaultPrevented) return;
736
+ if (!props.disabled && !context.open && !openTimerRef.current) {
737
+ contentContext.onPointerGraceIntentChange(null);
738
+ openTimerRef.current = window.setTimeout(() => {
739
+ context.onOpenChange(true);
740
+ clearOpenTimer();
741
+ }, 100);
742
+ }
743
+ })
744
+ ),
745
+ onPointerLeave: composeEventHandlers(
746
+ props.onPointerLeave,
747
+ whenMouse((event) => {
748
+ clearOpenTimer();
749
+ const contentRect = context.content?.getBoundingClientRect();
750
+ if (contentRect) {
751
+ const side = context.content?.dataset.side;
752
+ const rightSide = side === "right";
753
+ const bleed = rightSide ? -5 : 5;
754
+ const contentNearEdge = contentRect[rightSide ? "left" : "right"];
755
+ const contentFarEdge = contentRect[rightSide ? "right" : "left"];
756
+ contentContext.onPointerGraceIntentChange({
757
+ area: [
758
+ // Apply a bleed on clientX to ensure that our exit point is
759
+ // consistently within polygon bounds
760
+ { x: event.clientX + bleed, y: event.clientY },
761
+ { x: contentNearEdge, y: contentRect.top },
762
+ { x: contentFarEdge, y: contentRect.top },
763
+ { x: contentFarEdge, y: contentRect.bottom },
764
+ { x: contentNearEdge, y: contentRect.bottom }
765
+ ],
766
+ side
767
+ });
768
+ window.clearTimeout(pointerGraceTimerRef.current);
769
+ pointerGraceTimerRef.current = window.setTimeout(
770
+ () => contentContext.onPointerGraceIntentChange(null),
771
+ 300
772
+ );
773
+ } else {
774
+ contentContext.onTriggerLeave(event);
775
+ if (event.defaultPrevented) return;
776
+ contentContext.onPointerGraceIntentChange(null);
777
+ }
778
+ })
779
+ ),
780
+ onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
781
+ const isTypingAhead = contentContext.searchRef.current !== "";
782
+ if (props.disabled || isTypingAhead && event.key === " ") return;
783
+ if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {
784
+ context.onOpenChange(true);
785
+ context.content?.focus();
786
+ event.preventDefault();
787
+ }
788
+ })
789
+ }
790
+ ) });
791
+ }
792
+ );
793
+ MenuSubTrigger.displayName = SUB_TRIGGER_NAME;
794
+ var SUB_CONTENT_NAME = "MenuSubContent";
795
+ var MenuSubContent = React.forwardRef(
796
+ (props, forwardedRef) => {
797
+ const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);
798
+ const { forceMount = portalContext.forceMount, ...subContentProps } = props;
799
+ const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);
800
+ const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);
801
+ const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);
802
+ const ref = React.useRef(null);
803
+ const composedRefs = useComposedRefs(forwardedRef, ref);
804
+ return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(
805
+ MenuContentImpl,
806
+ {
807
+ id: subContext.contentId,
808
+ "aria-labelledby": subContext.triggerId,
809
+ ...subContentProps,
810
+ ref: composedRefs,
811
+ align: "start",
812
+ side: rootContext.dir === "rtl" ? "left" : "right",
813
+ disableOutsidePointerEvents: false,
814
+ disableOutsideScroll: false,
815
+ trapFocus: false,
816
+ onOpenAutoFocus: (event) => {
817
+ if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();
818
+ event.preventDefault();
819
+ },
820
+ onCloseAutoFocus: (event) => event.preventDefault(),
821
+ onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {
822
+ if (event.target !== subContext.trigger) context.onOpenChange(false);
823
+ }),
824
+ onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {
825
+ rootContext.onClose();
826
+ event.preventDefault();
827
+ }),
828
+ onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
829
+ const isKeyDownInside = event.currentTarget.contains(event.target);
830
+ const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);
831
+ if (isKeyDownInside && isCloseKey) {
832
+ context.onOpenChange(false);
833
+ subContext.trigger?.focus();
834
+ event.preventDefault();
835
+ }
836
+ })
837
+ }
838
+ ) }) }) });
839
+ }
840
+ );
841
+ MenuSubContent.displayName = SUB_CONTENT_NAME;
842
+ function getOpenState(open) {
843
+ return open ? "open" : "closed";
844
+ }
845
+ function isIndeterminate(checked) {
846
+ return checked === "indeterminate";
847
+ }
848
+ function getCheckedState(checked) {
849
+ return isIndeterminate(checked) ? "indeterminate" : checked ? "checked" : "unchecked";
850
+ }
851
+ function focusFirst(candidates) {
852
+ const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;
853
+ for (const candidate of candidates) {
854
+ if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;
855
+ candidate.focus();
856
+ if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;
857
+ }
858
+ }
859
+ function wrapArray(array, startIndex) {
860
+ return array.map((_, index) => array[(startIndex + index) % array.length]);
861
+ }
862
+ function getNextMatch(values, search, currentMatch) {
863
+ const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);
864
+ const normalizedSearch = isRepeated ? search[0] : search;
865
+ const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;
866
+ let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));
867
+ const excludeCurrentMatch = normalizedSearch.length === 1;
868
+ if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);
869
+ const nextMatch = wrappedValues.find(
870
+ (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())
871
+ );
872
+ return nextMatch !== currentMatch ? nextMatch : void 0;
873
+ }
874
+ function isPointInPolygon(point, polygon) {
875
+ const { x, y } = point;
876
+ let inside = false;
877
+ for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
878
+ const ii = polygon[i];
879
+ const jj = polygon[j];
880
+ const xi = ii.x;
881
+ const yi = ii.y;
882
+ const xj = jj.x;
883
+ const yj = jj.y;
884
+ const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
885
+ if (intersect) inside = !inside;
886
+ }
887
+ return inside;
888
+ }
889
+ function isPointerInGraceArea(event, area) {
890
+ if (!area) return false;
891
+ const cursorPos = { x: event.clientX, y: event.clientY };
892
+ return isPointInPolygon(cursorPos, area);
893
+ }
894
+ function whenMouse(handler) {
895
+ return (event) => event.pointerType === "mouse" ? handler(event) : void 0;
896
+ }
897
+ var Root3 = Menu;
898
+ var Anchor2 = MenuAnchor;
899
+ var Portal = MenuPortal;
900
+ var Content2 = MenuContent;
901
+ var Group = MenuGroup;
902
+ var Label = MenuLabel;
903
+ var Item2 = MenuItem;
904
+ var CheckboxItem = MenuCheckboxItem;
905
+ var RadioGroup = MenuRadioGroup;
906
+ var RadioItem = MenuRadioItem;
907
+ var ItemIndicator = MenuItemIndicator;
908
+ var Separator = MenuSeparator;
909
+ var Arrow2 = MenuArrow;
910
+ var Sub = MenuSub;
911
+ var SubTrigger = MenuSubTrigger;
912
+ var SubContent = MenuSubContent;
913
+
914
+ export { Anchor2 as A, CheckboxItem as C, Group as G, ItemIndicator as I, Label as L, Portal as P, Root3 as R, Separator as S, Content2 as a, Item2 as b, RadioGroup as c, RadioItem as d, Sub as e, SubContent as f, SubTrigger as g, createMenuScope as h, Arrow2 as i };
915
+ //# sourceMappingURL=index-BwxI_qgh.js.map