@burtson-labs/ui 0.13.1 → 0.14.1

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 (460) hide show
  1. package/LICENSES/DEPENDENCIES.txt +2745 -0
  2. package/LICENSES/Radix-MIT.txt +21 -0
  3. package/LICENSES/cmdk-MIT.txt +21 -0
  4. package/LICENSES/overrides/react-remove-scroll-bar.txt +26 -0
  5. package/LICENSES/shadcn-MIT.txt +21 -0
  6. package/README.md +20 -12
  7. package/THIRD_PARTY_NOTICES.md +15 -3
  8. package/dist/components/accordion.d.ts +4 -4
  9. package/dist/components/accordion.js +22 -18
  10. package/dist/components/accordion.js.map +1 -1
  11. package/dist/components/alert-dialog.d.ts +13 -11
  12. package/dist/components/alert-dialog.js +41 -31
  13. package/dist/components/alert-dialog.js.map +1 -1
  14. package/dist/components/alert.d.ts +5 -3
  15. package/dist/components/alert.js +12 -7
  16. package/dist/components/alert.js.map +1 -1
  17. package/dist/components/app-shell.d.ts +7 -6
  18. package/dist/components/app-shell.js +22 -14
  19. package/dist/components/app-shell.js.map +1 -1
  20. package/dist/components/attachment.d.ts +3 -3
  21. package/dist/components/attachment.js +11 -7
  22. package/dist/components/attachment.js.map +1 -1
  23. package/dist/components/audio-player.d.ts +2 -2
  24. package/dist/components/audio-player.js +9 -6
  25. package/dist/components/audio-player.js.map +1 -1
  26. package/dist/components/avatar.d.ts +4 -4
  27. package/dist/components/avatar.js +16 -12
  28. package/dist/components/avatar.js.map +1 -1
  29. package/dist/components/badge.d.ts +1 -1
  30. package/dist/components/badge.js +15 -13
  31. package/dist/components/badge.js.map +1 -1
  32. package/dist/components/breadcrumb.d.ts +8 -8
  33. package/dist/components/breadcrumb.js +27 -20
  34. package/dist/components/breadcrumb.js.map +1 -1
  35. package/dist/components/button.d.ts +9 -2
  36. package/dist/components/button.js +15 -6
  37. package/dist/components/button.js.map +1 -1
  38. package/dist/components/card.d.ts +9 -9
  39. package/dist/components/card.js +33 -23
  40. package/dist/components/card.js.map +1 -1
  41. package/dist/components/chat-history.d.ts +1 -1
  42. package/dist/components/chat-history.js +11 -9
  43. package/dist/components/chat-history.js.map +1 -1
  44. package/dist/components/chat-layout.d.ts +1 -1
  45. package/dist/components/chat-layout.js +8 -3
  46. package/dist/components/chat-layout.js.map +1 -1
  47. package/dist/components/checkbox-card.d.ts +3 -3
  48. package/dist/components/checkbox-card.js +12 -10
  49. package/dist/components/checkbox-card.js.map +1 -1
  50. package/dist/components/checkbox.d.ts +24 -3
  51. package/dist/components/checkbox.js +52 -9
  52. package/dist/components/checkbox.js.map +1 -1
  53. package/dist/components/collapsible.d.ts +3 -3
  54. package/dist/components/collapsible.js +14 -11
  55. package/dist/components/collapsible.js.map +1 -1
  56. package/dist/components/combobox.d.ts +14 -4
  57. package/dist/components/combobox.js +19 -8
  58. package/dist/components/combobox.js.map +1 -1
  59. package/dist/components/command.d.ts +68 -12
  60. package/dist/components/command.js +48 -34
  61. package/dist/components/command.js.map +1 -1
  62. package/dist/components/composer.d.ts +2 -2
  63. package/dist/components/composer.js +10 -7
  64. package/dist/components/composer.js.map +1 -1
  65. package/dist/components/connection-status.d.ts +3 -3
  66. package/dist/components/connection-status.js +19 -14
  67. package/dist/components/connection-status.js.map +1 -1
  68. package/dist/components/context-menu.d.ts +15 -14
  69. package/dist/components/context-menu.js +52 -41
  70. package/dist/components/context-menu.js.map +1 -1
  71. package/dist/components/conversation.d.ts +1 -1
  72. package/dist/components/conversation.js +7 -5
  73. package/dist/components/conversation.js.map +1 -1
  74. package/dist/components/copy-button.d.ts +1 -1
  75. package/dist/components/copy-button.js +4 -2
  76. package/dist/components/copy-button.js.map +1 -1
  77. package/dist/components/data-table.d.ts +7 -2
  78. package/dist/components/data-table.js +17 -42
  79. package/dist/components/data-table.js.map +1 -1
  80. package/dist/components/dialog.d.ts +19 -10
  81. package/dist/components/dialog.js +50 -33
  82. package/dist/components/dialog.js.map +1 -1
  83. package/dist/components/dropdown-menu.d.ts +15 -14
  84. package/dist/components/dropdown-menu.js +52 -41
  85. package/dist/components/dropdown-menu.js.map +1 -1
  86. package/dist/components/editor-tabs.d.ts +1 -1
  87. package/dist/components/editor-tabs.js +7 -5
  88. package/dist/components/editor-tabs.js.map +1 -1
  89. package/dist/components/empty-state.d.ts +5 -5
  90. package/dist/components/empty-state.js +17 -11
  91. package/dist/components/empty-state.js.map +1 -1
  92. package/dist/components/error-summary.d.ts +21 -0
  93. package/dist/components/error-summary.js +62 -0
  94. package/dist/components/error-summary.js.map +1 -0
  95. package/dist/components/field.d.ts +66 -7
  96. package/dist/components/field.js +152 -20
  97. package/dist/components/field.js.map +1 -1
  98. package/dist/components/form-actions.d.ts +18 -0
  99. package/dist/components/form-actions.js +30 -0
  100. package/dist/components/form-actions.js.map +1 -0
  101. package/dist/components/icon-button.d.ts +3 -1
  102. package/dist/components/icon-button.js +6 -3
  103. package/dist/components/icon-button.js.map +1 -1
  104. package/dist/components/input.d.ts +42 -7
  105. package/dist/components/input.js +54 -10
  106. package/dist/components/input.js.map +1 -1
  107. package/dist/components/kbd.d.ts +2 -2
  108. package/dist/components/kbd.js +8 -5
  109. package/dist/components/kbd.js.map +1 -1
  110. package/dist/components/label.d.ts +7 -2
  111. package/dist/components/label.js +14 -7
  112. package/dist/components/label.js.map +1 -1
  113. package/dist/components/markdown.d.ts +4 -3
  114. package/dist/components/markdown.js +8 -6
  115. package/dist/components/markdown.js.map +1 -1
  116. package/dist/components/menubar.d.ts +17 -15
  117. package/dist/components/menubar.js +58 -45
  118. package/dist/components/menubar.js.map +1 -1
  119. package/dist/components/message-actions.d.ts +3 -3
  120. package/dist/components/message-actions.js +16 -12
  121. package/dist/components/message-actions.js.map +1 -1
  122. package/dist/components/message.d.ts +1 -1
  123. package/dist/components/message.js +6 -3
  124. package/dist/components/message.js.map +1 -1
  125. package/dist/components/mobile-nav.d.ts +1 -1
  126. package/dist/components/mobile-nav.js +7 -5
  127. package/dist/components/mobile-nav.js.map +1 -1
  128. package/dist/components/native-select.d.ts +16 -0
  129. package/dist/components/native-select.js +33 -0
  130. package/dist/components/native-select.js.map +1 -0
  131. package/dist/components/navigation-menu.d.ts +13 -12
  132. package/dist/components/navigation-menu.js +43 -33
  133. package/dist/components/navigation-menu.js.map +1 -1
  134. package/dist/components/number-input.d.ts +23 -0
  135. package/dist/components/number-input.js +45 -0
  136. package/dist/components/number-input.js.map +1 -0
  137. package/dist/components/onboarding-checklist.d.ts +1 -1
  138. package/dist/components/onboarding-checklist.js +5 -3
  139. package/dist/components/onboarding-checklist.js.map +1 -1
  140. package/dist/components/page-header.d.ts +7 -6
  141. package/dist/components/page-header.js +23 -15
  142. package/dist/components/page-header.js.map +1 -1
  143. package/dist/components/pagination.d.ts +1 -1
  144. package/dist/components/pagination.js +4 -2
  145. package/dist/components/pagination.js.map +1 -1
  146. package/dist/components/popover.d.ts +14 -11
  147. package/dist/components/popover.js +30 -23
  148. package/dist/components/popover.js.map +1 -1
  149. package/dist/components/progress.d.ts +2 -2
  150. package/dist/components/progress.js +11 -9
  151. package/dist/components/progress.js.map +1 -1
  152. package/dist/components/radio-group.d.ts +23 -4
  153. package/dist/components/radio-group.js +56 -14
  154. package/dist/components/radio-group.js.map +1 -1
  155. package/dist/components/reasoning.d.ts +3 -3
  156. package/dist/components/reasoning.js +14 -11
  157. package/dist/components/reasoning.js.map +1 -1
  158. package/dist/components/resizable.js +1 -0
  159. package/dist/components/resizable.js.map +1 -1
  160. package/dist/components/scroll-area.d.ts +4 -3
  161. package/dist/components/scroll-area.js +18 -14
  162. package/dist/components/scroll-area.js.map +1 -1
  163. package/dist/components/secret-input.d.ts +3 -2
  164. package/dist/components/secret-input.js +7 -4
  165. package/dist/components/secret-input.js.map +1 -1
  166. package/dist/components/select.d.ts +12 -7
  167. package/dist/components/select.js +42 -35
  168. package/dist/components/select.js.map +1 -1
  169. package/dist/components/separator.d.ts +2 -2
  170. package/dist/components/separator.js +8 -6
  171. package/dist/components/separator.js.map +1 -1
  172. package/dist/components/sheet.d.ts +11 -9
  173. package/dist/components/sheet.js +41 -29
  174. package/dist/components/sheet.js.map +1 -1
  175. package/dist/components/skeleton.d.ts +2 -1
  176. package/dist/components/skeleton.js +7 -4
  177. package/dist/components/skeleton.js.map +1 -1
  178. package/dist/components/slider.d.ts +10 -6
  179. package/dist/components/slider.js +16 -7
  180. package/dist/components/slider.js.map +1 -1
  181. package/dist/components/source.d.ts +2 -2
  182. package/dist/components/source.js +10 -7
  183. package/dist/components/source.js.map +1 -1
  184. package/dist/components/spinner.d.ts +4 -2
  185. package/dist/components/spinner.js +5 -3
  186. package/dist/components/spinner.js.map +1 -1
  187. package/dist/components/stat-card.d.ts +27 -2
  188. package/dist/components/stat-card.js +70 -9
  189. package/dist/components/stat-card.js.map +1 -1
  190. package/dist/components/status.d.ts +7 -6
  191. package/dist/components/status.js +12 -5
  192. package/dist/components/status.js.map +1 -1
  193. package/dist/components/steps.d.ts +1 -1
  194. package/dist/components/steps.js +5 -3
  195. package/dist/components/steps.js.map +1 -1
  196. package/dist/components/switch.d.ts +47 -3
  197. package/dist/components/switch.js +89 -11
  198. package/dist/components/switch.js.map +1 -1
  199. package/dist/components/table.d.ts +29 -12
  200. package/dist/components/table.js +80 -34
  201. package/dist/components/table.js.map +1 -1
  202. package/dist/components/tabs.d.ts +10 -5
  203. package/dist/components/tabs.js +29 -19
  204. package/dist/components/tabs.js.map +1 -1
  205. package/dist/components/textarea.d.ts +6 -1
  206. package/dist/components/textarea.js +4 -3
  207. package/dist/components/textarea.js.map +1 -1
  208. package/dist/components/toast.d.ts +11 -7
  209. package/dist/components/toast.js +37 -27
  210. package/dist/components/toast.js.map +1 -1
  211. package/dist/components/toaster.d.ts +4 -2
  212. package/dist/components/toaster.js +7 -2
  213. package/dist/components/toaster.js.map +1 -1
  214. package/dist/components/tool-call.d.ts +2 -2
  215. package/dist/components/tool-call.js +15 -12
  216. package/dist/components/tool-call.js.map +1 -1
  217. package/dist/components/toolbar.d.ts +9 -4
  218. package/dist/components/toolbar.js +15 -9
  219. package/dist/components/toolbar.js.map +1 -1
  220. package/dist/components/tooltip.d.ts +4 -3
  221. package/dist/components/tooltip.js +17 -13
  222. package/dist/components/tooltip.js.map +1 -1
  223. package/dist/components/tour.js +10 -8
  224. package/dist/components/tour.js.map +1 -1
  225. package/dist/components/tree-view.d.ts +1 -1
  226. package/dist/components/tree-view.js +10 -5
  227. package/dist/components/tree-view.js.map +1 -1
  228. package/dist/components/voice-recorder.d.ts +1 -1
  229. package/dist/components/voice-recorder.js +5 -2
  230. package/dist/components/voice-recorder.js.map +1 -1
  231. package/dist/index.d.ts +6 -1
  232. package/dist/index.js +17 -12
  233. package/dist/lib/media.d.ts +18 -0
  234. package/dist/lib/media.js +34 -0
  235. package/dist/lib/media.js.map +1 -0
  236. package/dist/lib/utils.d.ts +32 -0
  237. package/dist/lib/utils.js +33 -1
  238. package/dist/lib/utils.js.map +1 -1
  239. package/dist/mui/index.js +20 -8
  240. package/dist/mui/index.js.map +1 -1
  241. package/dist/primitives/vendor/cmdk/command-score.d.ts +1 -0
  242. package/dist/primitives/vendor/cmdk/command-score.js +64 -0
  243. package/dist/primitives/vendor/cmdk/command-score.js.map +1 -0
  244. package/dist/primitives/vendor/cmdk/index.d.ts +384 -0
  245. package/dist/primitives/vendor/cmdk/index.js +687 -0
  246. package/dist/primitives/vendor/cmdk/index.js.map +1 -0
  247. package/dist/primitives/vendor/radix/number/index.d.ts +1 -0
  248. package/dist/primitives/vendor/radix/number/number.d.ts +2 -0
  249. package/dist/primitives/vendor/radix/number/number.js +9 -0
  250. package/dist/primitives/vendor/radix/number/number.js.map +1 -0
  251. package/dist/primitives/vendor/radix/primitive/index.d.ts +2 -0
  252. package/dist/primitives/vendor/radix/primitive/is-development.d.ts +1 -0
  253. package/dist/primitives/vendor/radix/primitive/is-development.js +7 -0
  254. package/dist/primitives/vendor/radix/primitive/is-development.js.map +1 -0
  255. package/dist/primitives/vendor/radix/primitive/primitive.d.ts +14 -0
  256. package/dist/primitives/vendor/radix/primitive/primitive.js +12 -0
  257. package/dist/primitives/vendor/radix/primitive/primitive.js.map +1 -0
  258. package/dist/primitives/vendor/radix/primitive/types.d.ts +5 -0
  259. package/dist/primitives/vendor/radix/react-accordion/accordion.d.ts +112 -0
  260. package/dist/primitives/vendor/radix/react-accordion/accordion.js +266 -0
  261. package/dist/primitives/vendor/radix/react-accordion/accordion.js.map +1 -0
  262. package/dist/primitives/vendor/radix/react-accordion/index.d.ts +2 -0
  263. package/dist/primitives/vendor/radix/react-alert-dialog/alert-dialog.d.ts +49 -0
  264. package/dist/primitives/vendor/radix/react-alert-dialog/alert-dialog.js +122 -0
  265. package/dist/primitives/vendor/radix/react-alert-dialog/alert-dialog.js.map +1 -0
  266. package/dist/primitives/vendor/radix/react-alert-dialog/index.d.ts +2 -0
  267. package/dist/primitives/vendor/radix/react-arrow/arrow.d.ts +9 -0
  268. package/dist/primitives/vendor/radix/react-arrow/arrow.js +22 -0
  269. package/dist/primitives/vendor/radix/react-arrow/arrow.js.map +1 -0
  270. package/dist/primitives/vendor/radix/react-arrow/index.d.ts +2 -0
  271. package/dist/primitives/vendor/radix/react-avatar/avatar.d.ts +19 -0
  272. package/dist/primitives/vendor/radix/react-avatar/avatar.js +132 -0
  273. package/dist/primitives/vendor/radix/react-avatar/avatar.js.map +1 -0
  274. package/dist/primitives/vendor/radix/react-avatar/index.d.ts +2 -0
  275. package/dist/primitives/vendor/radix/react-checkbox/checkbox.d.ts +47 -0
  276. package/dist/primitives/vendor/radix/react-checkbox/checkbox.js +197 -0
  277. package/dist/primitives/vendor/radix/react-checkbox/checkbox.js.map +1 -0
  278. package/dist/primitives/vendor/radix/react-checkbox/index.d.ts +2 -0
  279. package/dist/primitives/vendor/radix/react-collapsible/collapsible.d.ts +31 -0
  280. package/dist/primitives/vendor/radix/react-collapsible/collapsible.js +133 -0
  281. package/dist/primitives/vendor/radix/react-collapsible/collapsible.js.map +1 -0
  282. package/dist/primitives/vendor/radix/react-collapsible/index.d.ts +2 -0
  283. package/dist/primitives/vendor/radix/react-collection/collection-legacy.d.ts +21 -0
  284. package/dist/primitives/vendor/radix/react-collection/collection-legacy.js +84 -0
  285. package/dist/primitives/vendor/radix/react-collection/collection-legacy.js.map +1 -0
  286. package/dist/primitives/vendor/radix/react-collection/collection.d.ts +32 -0
  287. package/dist/primitives/vendor/radix/react-collection/index.d.ts +4 -0
  288. package/dist/primitives/vendor/radix/react-collection/ordered-dictionary.d.ts +51 -0
  289. package/dist/primitives/vendor/radix/react-compose-refs/compose-refs.d.ts +13 -0
  290. package/dist/primitives/vendor/radix/react-compose-refs/compose-refs.js +43 -0
  291. package/dist/primitives/vendor/radix/react-compose-refs/compose-refs.js.map +1 -0
  292. package/dist/primitives/vendor/radix/react-compose-refs/index.d.ts +1 -0
  293. package/dist/primitives/vendor/radix/react-context/create-context.d.ts +45 -0
  294. package/dist/primitives/vendor/radix/react-context/create-context.js +74 -0
  295. package/dist/primitives/vendor/radix/react-context/create-context.js.map +1 -0
  296. package/dist/primitives/vendor/radix/react-context/index.d.ts +2 -0
  297. package/dist/primitives/vendor/radix/react-context-menu/context-menu.d.ts +95 -0
  298. package/dist/primitives/vendor/radix/react-context-menu/context-menu.js +279 -0
  299. package/dist/primitives/vendor/radix/react-context-menu/context-menu.js.map +1 -0
  300. package/dist/primitives/vendor/radix/react-context-menu/index.d.ts +2 -0
  301. package/dist/primitives/vendor/radix/react-dialog/dialog.d.ts +97 -0
  302. package/dist/primitives/vendor/radix/react-dialog/dialog.js +262 -0
  303. package/dist/primitives/vendor/radix/react-dialog/dialog.js.map +1 -0
  304. package/dist/primitives/vendor/radix/react-dialog/index.d.ts +4 -0
  305. package/dist/primitives/vendor/radix/react-direction/direction.d.ts +10 -0
  306. package/dist/primitives/vendor/radix/react-direction/direction.js +13 -0
  307. package/dist/primitives/vendor/radix/react-direction/direction.js.map +1 -0
  308. package/dist/primitives/vendor/radix/react-direction/index.d.ts +1 -0
  309. package/dist/primitives/vendor/radix/react-dismissable-layer/dismissable-layer.d.ts +61 -0
  310. package/dist/primitives/vendor/radix/react-dismissable-layer/dismissable-layer.js +336 -0
  311. package/dist/primitives/vendor/radix/react-dismissable-layer/dismissable-layer.js.map +1 -0
  312. package/dist/primitives/vendor/radix/react-dismissable-layer/index.d.ts +4 -0
  313. package/dist/primitives/vendor/radix/react-dropdown-menu/dropdown-menu.d.ts +95 -0
  314. package/dist/primitives/vendor/radix/react-dropdown-menu/dropdown-menu.js +257 -0
  315. package/dist/primitives/vendor/radix/react-dropdown-menu/dropdown-menu.js.map +1 -0
  316. package/dist/primitives/vendor/radix/react-dropdown-menu/index.d.ts +2 -0
  317. package/dist/primitives/vendor/radix/react-focus-guards/focus-guards.d.ts +11 -0
  318. package/dist/primitives/vendor/radix/react-focus-guards/focus-guards.js +49 -0
  319. package/dist/primitives/vendor/radix/react-focus-guards/focus-guards.js.map +1 -0
  320. package/dist/primitives/vendor/radix/react-focus-guards/index.d.ts +1 -0
  321. package/dist/primitives/vendor/radix/react-focus-scope/focus-scope.d.ts +31 -0
  322. package/dist/primitives/vendor/radix/react-focus-scope/focus-scope.js +221 -0
  323. package/dist/primitives/vendor/radix/react-focus-scope/focus-scope.js.map +1 -0
  324. package/dist/primitives/vendor/radix/react-focus-scope/index.d.ts +1 -0
  325. package/dist/primitives/vendor/radix/react-id/id.d.ts +2 -0
  326. package/dist/primitives/vendor/radix/react-id/id.js +17 -0
  327. package/dist/primitives/vendor/radix/react-id/id.js.map +1 -0
  328. package/dist/primitives/vendor/radix/react-id/index.d.ts +1 -0
  329. package/dist/primitives/vendor/radix/react-label/index.d.ts +2 -0
  330. package/dist/primitives/vendor/radix/react-label/label.d.ts +9 -0
  331. package/dist/primitives/vendor/radix/react-label/label.js +21 -0
  332. package/dist/primitives/vendor/radix/react-label/label.js.map +1 -0
  333. package/dist/primitives/vendor/radix/react-menu/index.d.ts +2 -0
  334. package/dist/primitives/vendor/radix/react-menu/menu.d.ts +173 -0
  335. package/dist/primitives/vendor/radix/react-menu/menu.js +806 -0
  336. package/dist/primitives/vendor/radix/react-menu/menu.js.map +1 -0
  337. package/dist/primitives/vendor/radix/react-menubar/index.d.ts +2 -0
  338. package/dist/primitives/vendor/radix/react-menubar/menubar.d.ts +106 -0
  339. package/dist/primitives/vendor/radix/react-menubar/menubar.js +377 -0
  340. package/dist/primitives/vendor/radix/react-menubar/menubar.js.map +1 -0
  341. package/dist/primitives/vendor/radix/react-navigation-menu/index.d.ts +2 -0
  342. package/dist/primitives/vendor/radix/react-navigation-menu/navigation-menu.d.ts +124 -0
  343. package/dist/primitives/vendor/radix/react-navigation-menu/navigation-menu.js +743 -0
  344. package/dist/primitives/vendor/radix/react-navigation-menu/navigation-menu.js.map +1 -0
  345. package/dist/primitives/vendor/radix/react-popover/index.d.ts +1 -0
  346. package/dist/primitives/vendor/radix/react-popover/popover.d.ts +83 -0
  347. package/dist/primitives/vendor/radix/react-popover/popover.js +236 -0
  348. package/dist/primitives/vendor/radix/react-popover/popover.js.map +1 -0
  349. package/dist/primitives/vendor/radix/react-popper/index.d.ts +2 -0
  350. package/dist/primitives/vendor/radix/react-popper/popper.d.ts +44 -0
  351. package/dist/primitives/vendor/radix/react-popper/popper.js +276 -0
  352. package/dist/primitives/vendor/radix/react-popper/popper.js.map +1 -0
  353. package/dist/primitives/vendor/radix/react-portal/index.d.ts +2 -0
  354. package/dist/primitives/vendor/radix/react-portal/portal.d.ts +13 -0
  355. package/dist/primitives/vendor/radix/react-portal/portal.js +21 -0
  356. package/dist/primitives/vendor/radix/react-portal/portal.js.map +1 -0
  357. package/dist/primitives/vendor/radix/react-presence/index.d.ts +2 -0
  358. package/dist/primitives/vendor/radix/react-presence/presence.d.ts +11 -0
  359. package/dist/primitives/vendor/radix/react-presence/presence.js +152 -0
  360. package/dist/primitives/vendor/radix/react-presence/presence.js.map +1 -0
  361. package/dist/primitives/vendor/radix/react-presence/use-state-machine.d.ts +10 -0
  362. package/dist/primitives/vendor/radix/react-presence/use-state-machine.js +12 -0
  363. package/dist/primitives/vendor/radix/react-presence/use-state-machine.js.map +1 -0
  364. package/dist/primitives/vendor/radix/react-primitive/index.d.ts +2 -0
  365. package/dist/primitives/vendor/radix/react-primitive/primitive.d.ts +56 -0
  366. package/dist/primitives/vendor/radix/react-primitive/primitive.js +84 -0
  367. package/dist/primitives/vendor/radix/react-primitive/primitive.js.map +1 -0
  368. package/dist/primitives/vendor/radix/react-progress/index.d.ts +2 -0
  369. package/dist/primitives/vendor/radix/react-progress/progress.d.ts +17 -0
  370. package/dist/primitives/vendor/radix/react-progress/progress.js +79 -0
  371. package/dist/primitives/vendor/radix/react-progress/progress.js.map +1 -0
  372. package/dist/primitives/vendor/radix/react-radio-group/index.d.ts +2 -0
  373. package/dist/primitives/vendor/radix/react-radio-group/radio-group.d.ts +55 -0
  374. package/dist/primitives/vendor/radix/react-radio-group/radio-group.js +173 -0
  375. package/dist/primitives/vendor/radix/react-radio-group/radio-group.js.map +1 -0
  376. package/dist/primitives/vendor/radix/react-radio-group/radio.d.ts +62 -0
  377. package/dist/primitives/vendor/radix/react-radio-group/radio.js +150 -0
  378. package/dist/primitives/vendor/radix/react-radio-group/radio.js.map +1 -0
  379. package/dist/primitives/vendor/radix/react-roving-focus/index.d.ts +2 -0
  380. package/dist/primitives/vendor/radix/react-roving-focus/roving-focus-group.d.ts +47 -0
  381. package/dist/primitives/vendor/radix/react-roving-focus/roving-focus-group.js +218 -0
  382. package/dist/primitives/vendor/radix/react-roving-focus/roving-focus-group.js.map +1 -0
  383. package/dist/primitives/vendor/radix/react-scroll-area/index.d.ts +2 -0
  384. package/dist/primitives/vendor/radix/react-scroll-area/scroll-area.d.ts +121 -0
  385. package/dist/primitives/vendor/radix/react-scroll-area/scroll-area.js +713 -0
  386. package/dist/primitives/vendor/radix/react-scroll-area/scroll-area.js.map +1 -0
  387. package/dist/primitives/vendor/radix/react-scroll-area/use-state-machine.d.ts +10 -0
  388. package/dist/primitives/vendor/radix/react-scroll-area/use-state-machine.js +12 -0
  389. package/dist/primitives/vendor/radix/react-scroll-area/use-state-machine.js.map +1 -0
  390. package/dist/primitives/vendor/radix/react-select/index.d.ts +2 -0
  391. package/dist/primitives/vendor/radix/react-select/select.d.ts +163 -0
  392. package/dist/primitives/vendor/radix/react-select/select.js +1040 -0
  393. package/dist/primitives/vendor/radix/react-select/select.js.map +1 -0
  394. package/dist/primitives/vendor/radix/react-separator/index.d.ts +2 -0
  395. package/dist/primitives/vendor/radix/react-separator/separator.d.ts +20 -0
  396. package/dist/primitives/vendor/radix/react-separator/separator.js +29 -0
  397. package/dist/primitives/vendor/radix/react-separator/separator.js.map +1 -0
  398. package/dist/primitives/vendor/radix/react-slot/index.d.ts +1 -0
  399. package/dist/primitives/vendor/radix/react-slot/slot.d.ts +29 -0
  400. package/dist/primitives/vendor/radix/react-slot/slot.js +107 -0
  401. package/dist/primitives/vendor/radix/react-slot/slot.js.map +1 -0
  402. package/dist/primitives/vendor/radix/react-switch/index.d.ts +2 -0
  403. package/dist/primitives/vendor/radix/react-switch/switch.d.ts +41 -0
  404. package/dist/primitives/vendor/radix/react-switch/switch.js +185 -0
  405. package/dist/primitives/vendor/radix/react-switch/switch.js.map +1 -0
  406. package/dist/primitives/vendor/radix/react-tabs/index.d.ts +2 -0
  407. package/dist/primitives/vendor/radix/react-tabs/tabs.d.ts +54 -0
  408. package/dist/primitives/vendor/radix/react-tabs/tabs.js +145 -0
  409. package/dist/primitives/vendor/radix/react-tabs/tabs.js.map +1 -0
  410. package/dist/primitives/vendor/radix/react-toast/index.d.ts +2 -0
  411. package/dist/primitives/vendor/radix/react-toast/toast.d.ts +125 -0
  412. package/dist/primitives/vendor/radix/react-toast/toast.js +557 -0
  413. package/dist/primitives/vendor/radix/react-toast/toast.js.map +1 -0
  414. package/dist/primitives/vendor/radix/react-tooltip/index.d.ts +2 -0
  415. package/dist/primitives/vendor/radix/react-tooltip/tooltip.d.ts +99 -0
  416. package/dist/primitives/vendor/radix/react-tooltip/tooltip.js +503 -0
  417. package/dist/primitives/vendor/radix/react-tooltip/tooltip.js.map +1 -0
  418. package/dist/primitives/vendor/radix/react-use-callback-ref/index.d.ts +1 -0
  419. package/dist/primitives/vendor/radix/react-use-callback-ref/use-callback-ref.d.ts +6 -0
  420. package/dist/primitives/vendor/radix/react-use-callback-ref/use-callback-ref.js +18 -0
  421. package/dist/primitives/vendor/radix/react-use-callback-ref/use-callback-ref.js.map +1 -0
  422. package/dist/primitives/vendor/radix/react-use-controllable-state/index.d.ts +2 -0
  423. package/dist/primitives/vendor/radix/react-use-controllable-state/use-controllable-state-reducer.d.ts +28 -0
  424. package/dist/primitives/vendor/radix/react-use-controllable-state/use-controllable-state.d.ts +11 -0
  425. package/dist/primitives/vendor/radix/react-use-controllable-state/use-controllable-state.js +59 -0
  426. package/dist/primitives/vendor/radix/react-use-controllable-state/use-controllable-state.js.map +1 -0
  427. package/dist/primitives/vendor/radix/react-use-effect-event/index.d.ts +1 -0
  428. package/dist/primitives/vendor/radix/react-use-effect-event/use-effect-event.d.ts +7 -0
  429. package/dist/primitives/vendor/radix/react-use-is-hydrated/index.d.ts +1 -0
  430. package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated-legacy.d.ts +1 -0
  431. package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated-legacy.js +18 -0
  432. package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated-legacy.js.map +1 -0
  433. package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated.d.ts +6 -0
  434. package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated.js +19 -0
  435. package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated.js.map +1 -0
  436. package/dist/primitives/vendor/radix/react-use-layout-effect/index.d.ts +1 -0
  437. package/dist/primitives/vendor/radix/react-use-layout-effect/use-layout-effect.d.ts +10 -0
  438. package/dist/primitives/vendor/radix/react-use-layout-effect/use-layout-effect.js +15 -0
  439. package/dist/primitives/vendor/radix/react-use-layout-effect/use-layout-effect.js.map +1 -0
  440. package/dist/primitives/vendor/radix/react-use-previous/index.d.ts +1 -0
  441. package/dist/primitives/vendor/radix/react-use-previous/use-previous.d.ts +2 -0
  442. package/dist/primitives/vendor/radix/react-use-previous/use-previous.js +20 -0
  443. package/dist/primitives/vendor/radix/react-use-previous/use-previous.js.map +1 -0
  444. package/dist/primitives/vendor/radix/react-use-size/index.d.ts +1 -0
  445. package/dist/primitives/vendor/radix/react-use-size/use-size.d.ts +5 -0
  446. package/dist/primitives/vendor/radix/react-use-size/use-size.js +42 -0
  447. package/dist/primitives/vendor/radix/react-use-size/use-size.js.map +1 -0
  448. package/dist/primitives/vendor/radix/react-visually-hidden/index.d.ts +2 -0
  449. package/dist/primitives/vendor/radix/react-visually-hidden/visually-hidden.d.ts +21 -0
  450. package/dist/primitives/vendor/radix/react-visually-hidden/visually-hidden.js +32 -0
  451. package/dist/primitives/vendor/radix/react-visually-hidden/visually-hidden.js.map +1 -0
  452. package/dist/primitives/vendor/radix/rect/index.d.ts +2 -0
  453. package/dist/primitives/vendor/radix/rect/observe-element-rect.d.ts +16 -0
  454. package/dist/styles.css +1 -1
  455. package/dist/theme.css +36 -17
  456. package/dist/tokens.d.ts +78 -36
  457. package/dist/tokens.js +63 -32
  458. package/dist/tokens.js.map +1 -1
  459. package/package.json +25 -13
  460. package/vendor-manifest.json +1101 -0
@@ -0,0 +1,257 @@
1
+ "use client";
2
+ import { createContextScope } from "../react-context/create-context.js";
3
+ import { useComposedRefs } from "../react-compose-refs/compose-refs.js";
4
+ import { composeEventHandlers } from "../primitive/primitive.js";
5
+ import { useControllableState } from "../react-use-controllable-state/use-controllable-state.js";
6
+ import { Primitive } from "../react-primitive/primitive.js";
7
+ import { useId } from "../react-id/id.js";
8
+ import { Anchor, CheckboxItem as CheckboxItem$1, Content as Content$1, Group as Group$1, Item as Item$1, ItemIndicator as ItemIndicator$1, Label as Label$1, Portal as Portal$1, RadioGroup as RadioGroup$1, RadioItem as RadioItem$1, Root as Root$1, Separator as Separator$1, Sub as Sub$1, SubContent as SubContent$1, SubTrigger as SubTrigger$1, createMenuScope } from "../react-menu/menu.js";
9
+ import * as React from "react";
10
+ import { jsx } from "react/jsx-runtime";
11
+ //#region src/primitives/vendor/radix/react-dropdown-menu/dropdown-menu.tsx
12
+ var DROPDOWN_MENU_NAME = "DropdownMenu";
13
+ var [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(DROPDOWN_MENU_NAME, [createMenuScope]);
14
+ var useMenuScope = createMenuScope();
15
+ var [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);
16
+ var DropdownMenu = (props) => {
17
+ const { __scopeDropdownMenu, children, dir, open: openProp, defaultOpen, onOpenChange, modal = true } = props;
18
+ const menuScope = useMenuScope(__scopeDropdownMenu);
19
+ const triggerRef = React.useRef(null);
20
+ const [open, setOpen] = useControllableState({
21
+ prop: openProp,
22
+ defaultProp: defaultOpen ?? false,
23
+ onChange: onOpenChange,
24
+ caller: DROPDOWN_MENU_NAME
25
+ });
26
+ return /* @__PURE__ */ jsx(DropdownMenuProvider, {
27
+ scope: __scopeDropdownMenu,
28
+ triggerId: useId(),
29
+ triggerRef,
30
+ contentId: useId(),
31
+ open,
32
+ onOpenChange: setOpen,
33
+ onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),
34
+ modal,
35
+ children: /* @__PURE__ */ jsx(Root$1, {
36
+ ...menuScope,
37
+ open,
38
+ onOpenChange: setOpen,
39
+ dir,
40
+ modal,
41
+ children
42
+ })
43
+ });
44
+ };
45
+ var TRIGGER_NAME = "DropdownMenuTrigger";
46
+ var DropdownMenuTrigger = /* @__PURE__ */ React.forwardRef(function DropdownMenuTrigger(props, forwardedRef) {
47
+ const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;
48
+ const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);
49
+ const menuScope = useMenuScope(__scopeDropdownMenu);
50
+ const composedRefs = useComposedRefs(forwardedRef, context.triggerRef);
51
+ return /* @__PURE__ */ jsx(Anchor, {
52
+ asChild: true,
53
+ ...menuScope,
54
+ children: /* @__PURE__ */ jsx(Primitive.button, {
55
+ type: "button",
56
+ id: context.triggerId,
57
+ "aria-haspopup": "menu",
58
+ "aria-expanded": context.open,
59
+ "aria-controls": context.open ? context.contentId : void 0,
60
+ "data-state": context.open ? "open" : "closed",
61
+ "data-disabled": disabled ? "" : void 0,
62
+ disabled,
63
+ ...triggerProps,
64
+ ref: composedRefs,
65
+ onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {
66
+ if (!disabled && event.button === 0 && event.ctrlKey === false) {
67
+ context.onOpenToggle();
68
+ if (!context.open) event.preventDefault();
69
+ }
70
+ }),
71
+ onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
72
+ if (disabled) return;
73
+ if (["Enter", " "].includes(event.key)) context.onOpenToggle();
74
+ if (event.key === "ArrowDown") context.onOpenChange(true);
75
+ if ([
76
+ "Enter",
77
+ " ",
78
+ "ArrowDown"
79
+ ].includes(event.key)) event.preventDefault();
80
+ })
81
+ })
82
+ });
83
+ });
84
+ var DropdownMenuPortal = (props) => {
85
+ const { __scopeDropdownMenu, ...portalProps } = props;
86
+ const menuScope = useMenuScope(__scopeDropdownMenu);
87
+ return /* @__PURE__ */ jsx(Portal$1, {
88
+ ...menuScope,
89
+ ...portalProps
90
+ });
91
+ };
92
+ var CONTENT_NAME = "DropdownMenuContent";
93
+ var DropdownMenuContent = /* @__PURE__ */ React.forwardRef(function DropdownMenuContent(props, forwardedRef) {
94
+ const { __scopeDropdownMenu, ...contentProps } = props;
95
+ const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);
96
+ const menuScope = useMenuScope(__scopeDropdownMenu);
97
+ const hasInteractedOutsideRef = React.useRef(false);
98
+ return /* @__PURE__ */ jsx(Content$1, {
99
+ id: context.contentId,
100
+ "aria-labelledby": context.triggerId,
101
+ ...menuScope,
102
+ ...contentProps,
103
+ ref: forwardedRef,
104
+ onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {
105
+ if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();
106
+ hasInteractedOutsideRef.current = false;
107
+ event.preventDefault();
108
+ }),
109
+ onInteractOutside: composeEventHandlers(props.onInteractOutside, (event) => {
110
+ const originalEvent = event.detail.originalEvent;
111
+ const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
112
+ const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
113
+ if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;
114
+ }),
115
+ style: {
116
+ ...props.style,
117
+ "--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
118
+ "--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
119
+ "--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
120
+ "--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
121
+ "--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
122
+ }
123
+ });
124
+ });
125
+ var DropdownMenuGroup = /* @__PURE__ */ React.forwardRef(function DropdownMenuGroup(props, forwardedRef) {
126
+ const { __scopeDropdownMenu, ...groupProps } = props;
127
+ const menuScope = useMenuScope(__scopeDropdownMenu);
128
+ return /* @__PURE__ */ jsx(Group$1, {
129
+ ...menuScope,
130
+ ...groupProps,
131
+ ref: forwardedRef
132
+ });
133
+ });
134
+ var DropdownMenuLabel = /* @__PURE__ */ React.forwardRef(function DropdownMenuLabel(props, forwardedRef) {
135
+ const { __scopeDropdownMenu, ...labelProps } = props;
136
+ const menuScope = useMenuScope(__scopeDropdownMenu);
137
+ return /* @__PURE__ */ jsx(Label$1, {
138
+ ...menuScope,
139
+ ...labelProps,
140
+ ref: forwardedRef
141
+ });
142
+ });
143
+ var DropdownMenuItem = /* @__PURE__ */ React.forwardRef(function DropdownMenuItem(props, forwardedRef) {
144
+ const { __scopeDropdownMenu, ...itemProps } = props;
145
+ const menuScope = useMenuScope(__scopeDropdownMenu);
146
+ return /* @__PURE__ */ jsx(Item$1, {
147
+ ...menuScope,
148
+ ...itemProps,
149
+ ref: forwardedRef
150
+ });
151
+ });
152
+ var DropdownMenuCheckboxItem = /* @__PURE__ */ React.forwardRef(function DropdownMenuCheckboxItem(props, forwardedRef) {
153
+ const { __scopeDropdownMenu, ...checkboxItemProps } = props;
154
+ const menuScope = useMenuScope(__scopeDropdownMenu);
155
+ return /* @__PURE__ */ jsx(CheckboxItem$1, {
156
+ ...menuScope,
157
+ ...checkboxItemProps,
158
+ ref: forwardedRef
159
+ });
160
+ });
161
+ var DropdownMenuRadioGroup = /* @__PURE__ */ React.forwardRef(function DropdownMenuRadioGroup(props, forwardedRef) {
162
+ const { __scopeDropdownMenu, ...radioGroupProps } = props;
163
+ const menuScope = useMenuScope(__scopeDropdownMenu);
164
+ return /* @__PURE__ */ jsx(RadioGroup$1, {
165
+ ...menuScope,
166
+ ...radioGroupProps,
167
+ ref: forwardedRef
168
+ });
169
+ });
170
+ var DropdownMenuRadioItem = /* @__PURE__ */ React.forwardRef(function DropdownMenuRadioItem(props, forwardedRef) {
171
+ const { __scopeDropdownMenu, ...radioItemProps } = props;
172
+ const menuScope = useMenuScope(__scopeDropdownMenu);
173
+ return /* @__PURE__ */ jsx(RadioItem$1, {
174
+ ...menuScope,
175
+ ...radioItemProps,
176
+ ref: forwardedRef
177
+ });
178
+ });
179
+ var DropdownMenuItemIndicator = /* @__PURE__ */ React.forwardRef(function DropdownMenuItemIndicator(props, forwardedRef) {
180
+ const { __scopeDropdownMenu, ...itemIndicatorProps } = props;
181
+ const menuScope = useMenuScope(__scopeDropdownMenu);
182
+ return /* @__PURE__ */ jsx(ItemIndicator$1, {
183
+ ...menuScope,
184
+ ...itemIndicatorProps,
185
+ ref: forwardedRef
186
+ });
187
+ });
188
+ var DropdownMenuSeparator = /* @__PURE__ */ React.forwardRef(function DropdownMenuSeparator(props, forwardedRef) {
189
+ const { __scopeDropdownMenu, ...separatorProps } = props;
190
+ const menuScope = useMenuScope(__scopeDropdownMenu);
191
+ return /* @__PURE__ */ jsx(Separator$1, {
192
+ ...menuScope,
193
+ ...separatorProps,
194
+ ref: forwardedRef
195
+ });
196
+ });
197
+ var DropdownMenuSub = (props) => {
198
+ const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;
199
+ const menuScope = useMenuScope(__scopeDropdownMenu);
200
+ const [open, setOpen] = useControllableState({
201
+ prop: openProp,
202
+ defaultProp: defaultOpen ?? false,
203
+ onChange: onOpenChange,
204
+ caller: "DropdownMenuSub"
205
+ });
206
+ return /* @__PURE__ */ jsx(Sub$1, {
207
+ ...menuScope,
208
+ open,
209
+ onOpenChange: setOpen,
210
+ children
211
+ });
212
+ };
213
+ var DropdownMenuSubTrigger = /* @__PURE__ */ React.forwardRef(function DropdownMenuSubTrigger(props, forwardedRef) {
214
+ const { __scopeDropdownMenu, ...subTriggerProps } = props;
215
+ const menuScope = useMenuScope(__scopeDropdownMenu);
216
+ return /* @__PURE__ */ jsx(SubTrigger$1, {
217
+ ...menuScope,
218
+ ...subTriggerProps,
219
+ ref: forwardedRef
220
+ });
221
+ });
222
+ var DropdownMenuSubContent = /* @__PURE__ */ React.forwardRef(function DropdownMenuSubContent(props, forwardedRef) {
223
+ const { __scopeDropdownMenu, ...subContentProps } = props;
224
+ const menuScope = useMenuScope(__scopeDropdownMenu);
225
+ return /* @__PURE__ */ jsx(SubContent$1, {
226
+ ...menuScope,
227
+ ...subContentProps,
228
+ ref: forwardedRef,
229
+ style: {
230
+ ...props.style,
231
+ "--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
232
+ "--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
233
+ "--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
234
+ "--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
235
+ "--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
236
+ }
237
+ });
238
+ });
239
+ var Root = DropdownMenu;
240
+ var Trigger = DropdownMenuTrigger;
241
+ var Portal = DropdownMenuPortal;
242
+ var Content = DropdownMenuContent;
243
+ var Group = DropdownMenuGroup;
244
+ var Label = DropdownMenuLabel;
245
+ var Item = DropdownMenuItem;
246
+ var CheckboxItem = DropdownMenuCheckboxItem;
247
+ var RadioGroup = DropdownMenuRadioGroup;
248
+ var RadioItem = DropdownMenuRadioItem;
249
+ var ItemIndicator = DropdownMenuItemIndicator;
250
+ var Separator = DropdownMenuSeparator;
251
+ var Sub = DropdownMenuSub;
252
+ var SubTrigger = DropdownMenuSubTrigger;
253
+ var SubContent = DropdownMenuSubContent;
254
+ //#endregion
255
+ export { CheckboxItem, Content, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuItemIndicator, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Group, Item, ItemIndicator, Label, Portal, RadioGroup, RadioItem, Root, Separator, Sub, SubContent, SubTrigger, Trigger };
256
+
257
+ //# sourceMappingURL=dropdown-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.js","names":["MenuPrimitive.Root","MenuPrimitive.Anchor","MenuPrimitive.Portal","MenuPrimitive.Content","MenuPrimitive.Group","MenuPrimitive.Label","MenuPrimitive.Item","MenuPrimitive.CheckboxItem","MenuPrimitive.RadioGroup","MenuPrimitive.RadioItem","MenuPrimitive.ItemIndicator","MenuPrimitive.Separator","MenuPrimitive.Sub","MenuPrimitive.SubTrigger","MenuPrimitive.SubContent"],"sources":["../../../../../src/primitives/vendor/radix/react-dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["// Vendored from Radix Primitives (c) 2022 WorkOS, MIT. See vendor/LICENSE.radix.\n// Local modification: package imports resolve to the pinned local source.\nimport * as React from 'react';\nimport { composeEventHandlers } from '../primitive';\nimport { useComposedRefs } from '../react-compose-refs';\nimport { createContextScope } from '../react-context';\nimport { useControllableState } from '../react-use-controllable-state';\nimport { Primitive } from '../react-primitive';\nimport * as MenuPrimitive from '../react-menu';\nimport { createMenuScope } from '../react-menu';\nimport { useId } from '../react-id';\n\nimport type { Scope } from '../react-context';\n\ntype Direction = 'ltr' | 'rtl';\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenu\n * -----------------------------------------------------------------------------------------------*/\n\nconst DROPDOWN_MENU_NAME = 'DropdownMenu';\n\ntype ScopedProps<P> = P & { __scopeDropdownMenu?: Scope };\nconst [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(\n DROPDOWN_MENU_NAME,\n [createMenuScope],\n);\nconst useMenuScope = createMenuScope();\n\ntype DropdownMenuContextValue = {\n triggerId: string;\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n contentId: string;\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpenToggle(): void;\n modal: boolean;\n};\n\nconst [DropdownMenuProvider, useDropdownMenuContext] =\n createDropdownMenuContext<DropdownMenuContextValue>(DROPDOWN_MENU_NAME);\n\ninterface DropdownMenuProps {\n children?: React.ReactNode;\n dir?: Direction;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?(open: boolean): void;\n modal?: boolean;\n}\n\nconst DropdownMenu: React.FC<DropdownMenuProps> = (props: ScopedProps<DropdownMenuProps>) => {\n const {\n __scopeDropdownMenu,\n children,\n dir,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true,\n } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DROPDOWN_MENU_NAME,\n });\n\n return (\n <DropdownMenuProvider\n scope={__scopeDropdownMenu}\n triggerId={useId()}\n triggerRef={triggerRef}\n contentId={useId()}\n open={open}\n onOpenChange={setOpen}\n onOpenToggle={React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}\n modal={modal}\n >\n <MenuPrimitive.Root {...menuScope} open={open} onOpenChange={setOpen} dir={dir} modal={modal}>\n {children}\n </MenuPrimitive.Root>\n </DropdownMenuProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'DropdownMenuTrigger';\n\ntype DropdownMenuTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface DropdownMenuTriggerProps extends PrimitiveButtonProps {}\n\nconst DropdownMenuTrigger = /* @__PURE__ */ React.forwardRef<\n DropdownMenuTriggerElement,\n DropdownMenuTriggerProps\n>(\n // blank line to reduce diff noise\n function DropdownMenuTrigger(props: ScopedProps<DropdownMenuTriggerProps>, forwardedRef) {\n const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;\n const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const composedRefs = useComposedRefs(forwardedRef, context.triggerRef);\n return (\n <MenuPrimitive.Anchor asChild {...menuScope}>\n <Primitive.button\n type=\"button\"\n id={context.triggerId}\n aria-haspopup=\"menu\"\n aria-expanded={context.open}\n aria-controls={context.open ? context.contentId : undefined}\n data-state={context.open ? 'open' : 'closed'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n {...triggerProps}\n ref={composedRefs}\n onPointerDown={composeEventHandlers(props.onPointerDown, (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onOpenToggle();\n // prevent trigger focusing when opening\n // this allows the content to be given focus without competition\n if (!context.open) event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (disabled) return;\n if (['Enter', ' '].includes(event.key)) context.onOpenToggle();\n if (event.key === 'ArrowDown') context.onOpenChange(true);\n // prevent keydown from scrolling window / first focused item to execute\n // that keydown (inadvertently closing the menu)\n if (['Enter', ' ', 'ArrowDown'].includes(event.key)) event.preventDefault();\n })}\n />\n </MenuPrimitive.Anchor>\n );\n },\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuPortal\n * -----------------------------------------------------------------------------------------------*/\n\ntype MenuPortalProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Portal>;\ninterface DropdownMenuPortalProps extends MenuPortalProps {}\n\nconst DropdownMenuPortal: React.FC<DropdownMenuPortalProps> = (\n props: ScopedProps<DropdownMenuPortalProps>,\n) => {\n const { __scopeDropdownMenu, ...portalProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return <MenuPrimitive.Portal {...menuScope} {...portalProps} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'DropdownMenuContent';\n\ntype DropdownMenuContentElement = React.ComponentRef<typeof MenuPrimitive.Content>;\ntype MenuContentProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Content>;\ninterface DropdownMenuContentProps extends Omit<MenuContentProps, 'onEntryFocus'> {}\n\nconst DropdownMenuContent = /* @__PURE__ */ React.forwardRef<\n DropdownMenuContentElement,\n DropdownMenuContentProps\n>(\n // blank line to reduce diff noise\n function DropdownMenuContent(props: ScopedProps<DropdownMenuContentProps>, forwardedRef) {\n const { __scopeDropdownMenu, ...contentProps } = props;\n const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const hasInteractedOutsideRef = React.useRef(false);\n\n return (\n <MenuPrimitive.Content\n id={context.contentId}\n aria-labelledby={context.triggerId}\n {...menuScope}\n {...contentProps}\n ref={forwardedRef}\n onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n hasInteractedOutsideRef.current = false;\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault();\n })}\n onInteractOutside={composeEventHandlers(props.onInteractOutside, (event) => {\n const originalEvent = event.detail.originalEvent as PointerEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;\n })}\n style={{\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n '--radix-dropdown-menu-content-transform-origin':\n 'var(--radix-popper-transform-origin)',\n '--radix-dropdown-menu-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-dropdown-menu-content-available-height':\n 'var(--radix-popper-available-height)',\n '--radix-dropdown-menu-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-dropdown-menu-trigger-height': 'var(--radix-popper-anchor-height)',\n },\n }}\n />\n );\n },\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuGroup\n * -----------------------------------------------------------------------------------------------*/\n\ntype DropdownMenuGroupElement = React.ComponentRef<typeof MenuPrimitive.Group>;\ntype MenuGroupProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Group>;\ninterface DropdownMenuGroupProps extends MenuGroupProps {}\n\nconst DropdownMenuGroup = /* @__PURE__ */ React.forwardRef<\n DropdownMenuGroupElement,\n DropdownMenuGroupProps\n>(\n // blank line to reduce diff noise\n function DropdownMenuGroup(props: ScopedProps<DropdownMenuGroupProps>, forwardedRef) {\n const { __scopeDropdownMenu, ...groupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return <MenuPrimitive.Group {...menuScope} {...groupProps} ref={forwardedRef} />;\n },\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuLabel\n * -----------------------------------------------------------------------------------------------*/\n\ntype DropdownMenuLabelElement = React.ComponentRef<typeof MenuPrimitive.Label>;\ntype MenuLabelProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Label>;\ninterface DropdownMenuLabelProps extends MenuLabelProps {}\n\nconst DropdownMenuLabel = /* @__PURE__ */ React.forwardRef<\n DropdownMenuLabelElement,\n DropdownMenuLabelProps\n>(\n // blank line to reduce diff noise\n function DropdownMenuLabel(props: ScopedProps<DropdownMenuLabelProps>, forwardedRef) {\n const { __scopeDropdownMenu, ...labelProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return <MenuPrimitive.Label {...menuScope} {...labelProps} ref={forwardedRef} />;\n },\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuItem\n * -----------------------------------------------------------------------------------------------*/\n\ntype DropdownMenuItemElement = React.ComponentRef<typeof MenuPrimitive.Item>;\ntype MenuItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Item>;\ninterface DropdownMenuItemProps extends MenuItemProps {}\n\nconst DropdownMenuItem = /* @__PURE__ */ React.forwardRef<\n DropdownMenuItemElement,\n DropdownMenuItemProps\n>(\n // blank line to reduce diff noise\n function DropdownMenuItem(props: ScopedProps<DropdownMenuItemProps>, forwardedRef) {\n const { __scopeDropdownMenu, ...itemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return <MenuPrimitive.Item {...menuScope} {...itemProps} ref={forwardedRef} />;\n },\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuCheckboxItem\n * -----------------------------------------------------------------------------------------------*/\n\ntype DropdownMenuCheckboxItemElement = React.ComponentRef<typeof MenuPrimitive.CheckboxItem>;\ntype MenuCheckboxItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.CheckboxItem>;\ninterface DropdownMenuCheckboxItemProps extends MenuCheckboxItemProps {}\n\nconst DropdownMenuCheckboxItem = /* @__PURE__ */ React.forwardRef<\n DropdownMenuCheckboxItemElement,\n DropdownMenuCheckboxItemProps\n>(function DropdownMenuCheckboxItem(\n props: ScopedProps<DropdownMenuCheckboxItemProps>,\n forwardedRef,\n) {\n const { __scopeDropdownMenu, ...checkboxItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return <MenuPrimitive.CheckboxItem {...menuScope} {...checkboxItemProps} ref={forwardedRef} />;\n});\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuRadioGroup\n * -----------------------------------------------------------------------------------------------*/\n\ntype DropdownMenuRadioGroupElement = React.ComponentRef<typeof MenuPrimitive.RadioGroup>;\ntype MenuRadioGroupProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.RadioGroup>;\ninterface DropdownMenuRadioGroupProps extends MenuRadioGroupProps {}\n\nconst DropdownMenuRadioGroup = /* @__PURE__ */ React.forwardRef<\n DropdownMenuRadioGroupElement,\n DropdownMenuRadioGroupProps\n>(function DropdownMenuRadioGroup(props: ScopedProps<DropdownMenuRadioGroupProps>, forwardedRef) {\n const { __scopeDropdownMenu, ...radioGroupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return <MenuPrimitive.RadioGroup {...menuScope} {...radioGroupProps} ref={forwardedRef} />;\n});\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuRadioItem\n * -----------------------------------------------------------------------------------------------*/\n\ntype DropdownMenuRadioItemElement = React.ComponentRef<typeof MenuPrimitive.RadioItem>;\ntype MenuRadioItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.RadioItem>;\ninterface DropdownMenuRadioItemProps extends MenuRadioItemProps {}\n\nconst DropdownMenuRadioItem = /* @__PURE__ */ React.forwardRef<\n DropdownMenuRadioItemElement,\n DropdownMenuRadioItemProps\n>(function DropdownMenuRadioItem(props: ScopedProps<DropdownMenuRadioItemProps>, forwardedRef) {\n const { __scopeDropdownMenu, ...radioItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return <MenuPrimitive.RadioItem {...menuScope} {...radioItemProps} ref={forwardedRef} />;\n});\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuItemIndicator\n * -----------------------------------------------------------------------------------------------*/\n\ntype DropdownMenuItemIndicatorElement = React.ComponentRef<typeof MenuPrimitive.ItemIndicator>;\ntype MenuItemIndicatorProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.ItemIndicator>;\ninterface DropdownMenuItemIndicatorProps extends MenuItemIndicatorProps {}\n\nconst DropdownMenuItemIndicator = /* @__PURE__ */ React.forwardRef<\n DropdownMenuItemIndicatorElement,\n DropdownMenuItemIndicatorProps\n>(function DropdownMenuItemIndicator(\n props: ScopedProps<DropdownMenuItemIndicatorProps>,\n forwardedRef,\n) {\n const { __scopeDropdownMenu, ...itemIndicatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return <MenuPrimitive.ItemIndicator {...menuScope} {...itemIndicatorProps} ref={forwardedRef} />;\n});\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuSeparator\n * -----------------------------------------------------------------------------------------------*/\n\ntype DropdownMenuSeparatorElement = React.ComponentRef<typeof MenuPrimitive.Separator>;\ntype MenuSeparatorProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Separator>;\ninterface DropdownMenuSeparatorProps extends MenuSeparatorProps {}\n\nconst DropdownMenuSeparator = /* @__PURE__ */ React.forwardRef<\n DropdownMenuSeparatorElement,\n DropdownMenuSeparatorProps\n>(function DropdownMenuSeparator(props: ScopedProps<DropdownMenuSeparatorProps>, forwardedRef) {\n const { __scopeDropdownMenu, ...separatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return <MenuPrimitive.Separator {...menuScope} {...separatorProps} ref={forwardedRef} />;\n});\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuArrow\n * -----------------------------------------------------------------------------------------------*/\n\ntype DropdownMenuArrowElement = React.ComponentRef<typeof MenuPrimitive.Arrow>;\ntype MenuArrowProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Arrow>;\ninterface DropdownMenuArrowProps extends MenuArrowProps {}\n\nconst DropdownMenuArrow = /* @__PURE__ */ React.forwardRef<\n DropdownMenuArrowElement,\n DropdownMenuArrowProps\n>(\n // blank line to reduce diff noise\n function DropdownMenuArrow(props: ScopedProps<DropdownMenuArrowProps>, forwardedRef) {\n const { __scopeDropdownMenu, ...arrowProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return <MenuPrimitive.Arrow {...menuScope} {...arrowProps} ref={forwardedRef} />;\n },\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuSub\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DropdownMenuSubProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nconst DropdownMenuSub: React.FC<DropdownMenuSubProps> = (\n props: ScopedProps<DropdownMenuSubProps>,\n) => {\n const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: 'DropdownMenuSub',\n });\n\n return (\n <MenuPrimitive.Sub {...menuScope} open={open} onOpenChange={setOpen}>\n {children}\n </MenuPrimitive.Sub>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuSubTrigger\n * -----------------------------------------------------------------------------------------------*/\n\ntype DropdownMenuSubTriggerElement = React.ComponentRef<typeof MenuPrimitive.SubTrigger>;\ntype MenuSubTriggerProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.SubTrigger>;\ninterface DropdownMenuSubTriggerProps extends MenuSubTriggerProps {}\n\nconst DropdownMenuSubTrigger = /* @__PURE__ */ React.forwardRef<\n DropdownMenuSubTriggerElement,\n DropdownMenuSubTriggerProps\n>(function DropdownMenuSubTrigger(props: ScopedProps<DropdownMenuSubTriggerProps>, forwardedRef) {\n const { __scopeDropdownMenu, ...subTriggerProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return <MenuPrimitive.SubTrigger {...menuScope} {...subTriggerProps} ref={forwardedRef} />;\n});\n\n/* -------------------------------------------------------------------------------------------------\n * DropdownMenuSubContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype DropdownMenuSubContentElement = React.ComponentRef<typeof MenuPrimitive.Content>;\ntype MenuSubContentProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.SubContent>;\ninterface DropdownMenuSubContentProps extends MenuSubContentProps {}\n\nconst DropdownMenuSubContent = /* @__PURE__ */ React.forwardRef<\n DropdownMenuSubContentElement,\n DropdownMenuSubContentProps\n>(function DropdownMenuSubContent(props: ScopedProps<DropdownMenuSubContentProps>, forwardedRef) {\n const { __scopeDropdownMenu, ...subContentProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n\n return (\n <MenuPrimitive.SubContent\n {...menuScope}\n {...subContentProps}\n ref={forwardedRef}\n style={{\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n '--radix-dropdown-menu-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-dropdown-menu-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-dropdown-menu-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-dropdown-menu-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-dropdown-menu-trigger-height': 'var(--radix-popper-anchor-height)',\n },\n }}\n />\n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = DropdownMenu;\nconst Trigger = DropdownMenuTrigger;\nconst Portal = DropdownMenuPortal;\nconst Content = DropdownMenuContent;\nconst Group = DropdownMenuGroup;\nconst Label = DropdownMenuLabel;\nconst Item = DropdownMenuItem;\nconst CheckboxItem = DropdownMenuCheckboxItem;\nconst RadioGroup = DropdownMenuRadioGroup;\nconst RadioItem = DropdownMenuRadioItem;\nconst ItemIndicator = DropdownMenuItemIndicator;\nconst Separator = DropdownMenuSeparator;\nconst Arrow = DropdownMenuArrow;\nconst Sub = DropdownMenuSub;\nconst SubTrigger = DropdownMenuSubTrigger;\nconst SubContent = DropdownMenuSubContent;\n\nexport {\n createDropdownMenuScope,\n //\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuPortal,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuItemIndicator,\n DropdownMenuSeparator,\n DropdownMenuArrow,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Group,\n Label,\n Item,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Separator,\n Arrow,\n Sub,\n SubTrigger,\n SubContent,\n};\nexport type {\n DropdownMenuProps,\n DropdownMenuTriggerProps,\n DropdownMenuPortalProps,\n DropdownMenuContentProps,\n DropdownMenuGroupProps,\n DropdownMenuLabelProps,\n DropdownMenuItemProps,\n DropdownMenuCheckboxItemProps,\n DropdownMenuRadioGroupProps,\n DropdownMenuRadioItemProps,\n DropdownMenuItemIndicatorProps,\n DropdownMenuSeparatorProps,\n DropdownMenuArrowProps,\n DropdownMenuSubProps,\n DropdownMenuSubTriggerProps,\n DropdownMenuSubContentProps,\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { createDropdownMenuScope, DropdownMenu, DropdownMenuTrigger, DropdownMenuPortal, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuItemIndicator, DropdownMenuSeparator, DropdownMenuArrow, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, Root, Trigger, Portal, Content, Group, Label, Item, CheckboxItem, RadioGroup, RadioItem, ItemIndicator, Separator, Arrow, Sub, SubTrigger, SubContent, } from './dropdown-menu';
2
+ export type { DropdownMenuProps, DropdownMenuTriggerProps, DropdownMenuPortalProps, DropdownMenuContentProps, DropdownMenuGroupProps, DropdownMenuLabelProps, DropdownMenuItemProps, DropdownMenuCheckboxItemProps, DropdownMenuRadioGroupProps, DropdownMenuRadioItemProps, DropdownMenuItemIndicatorProps, DropdownMenuSeparatorProps, DropdownMenuArrowProps, DropdownMenuSubProps, DropdownMenuSubTriggerProps, DropdownMenuSubContentProps, } from './dropdown-menu';
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ interface FocusGuardsProps {
3
+ children?: React.ReactNode;
4
+ }
5
+ declare function FocusGuards(props: FocusGuardsProps): React.ReactNode;
6
+ /**
7
+ * Injects a pair of focus guards at the edges of the whole DOM tree
8
+ * to ensure `focusin` & `focusout` events can be caught consistently.
9
+ */
10
+ declare function useFocusGuards(): void;
11
+ export { FocusGuards, FocusGuards as Root, useFocusGuards, };
@@ -0,0 +1,49 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ //#region src/primitives/vendor/radix/react-focus-guards/focus-guards.tsx
4
+ /** Number of components which have requested interest to have focus guards */
5
+ var count = 0;
6
+ /**
7
+ * Cached references to the single shared pair of edge guards. Keeping these at
8
+ * module scope lets us avoid scanning the whole document (`querySelectorAll`)
9
+ * and re-inserting the guards on every overlay mount.
10
+ */
11
+ var guards = null;
12
+ /**
13
+ * Injects a pair of focus guards at the edges of the whole DOM tree
14
+ * to ensure `focusin` & `focusout` events can be caught consistently.
15
+ */
16
+ function useFocusGuards() {
17
+ React.useEffect(() => {
18
+ if (!guards) guards = {
19
+ start: createFocusGuard(),
20
+ end: createFocusGuard()
21
+ };
22
+ const { start, end } = guards;
23
+ if (document.body.firstElementChild !== start) document.body.insertAdjacentElement("afterbegin", start);
24
+ if (document.body.lastElementChild !== end) document.body.insertAdjacentElement("beforeend", end);
25
+ count++;
26
+ return () => {
27
+ if (count === 1) {
28
+ guards?.start.remove();
29
+ guards?.end.remove();
30
+ guards = null;
31
+ }
32
+ count = Math.max(0, count - 1);
33
+ };
34
+ }, []);
35
+ }
36
+ function createFocusGuard() {
37
+ const element = document.createElement("span");
38
+ element.setAttribute("data-radix-focus-guard", "");
39
+ element.tabIndex = 0;
40
+ element.style.outline = "none";
41
+ element.style.opacity = "0";
42
+ element.style.position = "fixed";
43
+ element.style.pointerEvents = "none";
44
+ return element;
45
+ }
46
+ //#endregion
47
+ export { useFocusGuards };
48
+
49
+ //# sourceMappingURL=focus-guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-guards.js","names":[],"sources":["../../../../../src/primitives/vendor/radix/react-focus-guards/focus-guards.tsx"],"sourcesContent":["// Vendored from Radix Primitives (c) 2022 WorkOS, MIT. See vendor/LICENSE.radix.\n// Local modification: package imports resolve to the pinned local source.\nimport * as React from 'react';\n\n/** Number of components which have requested interest to have focus guards */\nlet count = 0;\n\n/**\n * Cached references to the single shared pair of edge guards. Keeping these at\n * module scope lets us avoid scanning the whole document (`querySelectorAll`)\n * and re-inserting the guards on every overlay mount.\n */\nlet guards: { start: HTMLSpanElement; end: HTMLSpanElement } | null = null;\n\ninterface FocusGuardsProps {\n children?: React.ReactNode;\n}\n\nfunction FocusGuards(props: FocusGuardsProps) {\n useFocusGuards();\n return props.children;\n}\n\n/**\n * Injects a pair of focus guards at the edges of the whole DOM tree\n * to ensure `focusin` & `focusout` events can be caught consistently.\n */\nfunction useFocusGuards() {\n React.useEffect(() => {\n if (!guards) {\n guards = { start: createFocusGuard(), end: createFocusGuard() };\n }\n const { start, end } = guards;\n\n // Only mutate the DOM when the edge invariant is actually broken. Writing\n // to `document.body` dirties layout and forces a synchronous reflow once\n // sibling effects read layout (Popper measuring, react-remove-scroll,\n // aria-hidden, FocusScope), so skipping no-op moves avoids that cost on\n // every mount. The trailing guard still gets re-asserted to last whenever a\n // newly portaled node lands after it (portals append to the end of\n // `document.body`). See https://github.com/radix-ui/primitives/issues/2812\n if (document.body.firstElementChild !== start) {\n document.body.insertAdjacentElement('afterbegin', start);\n }\n if (document.body.lastElementChild !== end) {\n document.body.insertAdjacentElement('beforeend', end);\n }\n count++;\n\n return () => {\n if (count === 1) {\n guards?.start.remove();\n guards?.end.remove();\n guards = null;\n }\n count = Math.max(0, count - 1);\n };\n }, []);\n}\n\nfunction createFocusGuard() {\n const element = document.createElement('span');\n element.setAttribute('data-radix-focus-guard', '');\n element.tabIndex = 0;\n element.style.outline = 'none';\n element.style.opacity = '0';\n element.style.position = 'fixed';\n element.style.pointerEvents = 'none';\n return element;\n}\n\nexport {\n FocusGuards,\n //\n FocusGuards as Root,\n //\n useFocusGuards,\n};\n"],"mappings":";;;;AAKA,IAAI,QAAQ;;;;;;AAOZ,IAAI,SAAkE;;;;;AAetE,SAAS,iBAAiB;CACxB,MAAM,gBAAgB;EACpB,IAAI,CAAC,QACH,SAAS;GAAE,OAAO,iBAAiB;GAAG,KAAK,iBAAiB;EAAE;EAEhE,MAAM,EAAE,OAAO,QAAQ;EASvB,IAAI,SAAS,KAAK,sBAAsB,OACtC,SAAS,KAAK,sBAAsB,cAAc,KAAK;EAEzD,IAAI,SAAS,KAAK,qBAAqB,KACrC,SAAS,KAAK,sBAAsB,aAAa,GAAG;EAEtD;EAEA,aAAa;GACX,IAAI,UAAU,GAAG;IACf,QAAQ,MAAM,OAAO;IACrB,QAAQ,IAAI,OAAO;IACnB,SAAS;GACX;GACA,QAAQ,KAAK,IAAI,GAAG,QAAQ,CAAC;EAC/B;CACF,GAAG,CAAC,CAAC;AACP;AAEA,SAAS,mBAAmB;CAC1B,MAAM,UAAU,SAAS,cAAc,MAAM;CAC7C,QAAQ,aAAa,0BAA0B,EAAE;CACjD,QAAQ,WAAW;CACnB,QAAQ,MAAM,UAAU;CACxB,QAAQ,MAAM,UAAU;CACxB,QAAQ,MAAM,WAAW;CACzB,QAAQ,MAAM,gBAAgB;CAC9B,OAAO;AACT"}
@@ -0,0 +1 @@
1
+ export { FocusGuards, Root, useFocusGuards, } from './focus-guards';
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+ import { Primitive } from '../react-primitive';
3
+ type PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;
4
+ interface FocusScopeProps extends PrimitiveDivProps {
5
+ /**
6
+ * When `true`, tabbing from last item will focus first tabbable
7
+ * and shift+tab from first item will focus last tababble.
8
+ * @defaultValue false
9
+ */
10
+ loop?: boolean;
11
+ /**
12
+ * When `true`, focus cannot escape the focus scope via keyboard,
13
+ * pointer, or a programmatic focus.
14
+ * @defaultValue false
15
+ */
16
+ trapped?: boolean;
17
+ /**
18
+ * Event handler called when auto-focusing on mount.
19
+ * Can be prevented.
20
+ */
21
+ onMountAutoFocus?: (event: Event) => void;
22
+ /**
23
+ * Event handler called when auto-focusing on unmount.
24
+ * Can be prevented.
25
+ */
26
+ onUnmountAutoFocus?: (event: Event) => void;
27
+ }
28
+ declare const FocusScope: React.ForwardRefExoticComponent<FocusScopeProps & React.RefAttributes<HTMLDivElement>>;
29
+ declare const Root: React.ForwardRefExoticComponent<FocusScopeProps & React.RefAttributes<HTMLDivElement>>;
30
+ export { FocusScope, Root, };
31
+ export type { FocusScopeProps };
@@ -0,0 +1,221 @@
1
+ "use client";
2
+ import { useComposedRefs } from "../react-compose-refs/compose-refs.js";
3
+ import { Primitive } from "../react-primitive/primitive.js";
4
+ import { useCallbackRef } from "../react-use-callback-ref/use-callback-ref.js";
5
+ import * as React from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ //#region src/primitives/vendor/radix/react-focus-scope/focus-scope.tsx
8
+ var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
9
+ var AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount";
10
+ var EVENT_OPTIONS = {
11
+ bubbles: false,
12
+ cancelable: true
13
+ };
14
+ var FocusScope = /* @__PURE__ */ React.forwardRef(function FocusScope(props, forwardedRef) {
15
+ const { loop = false, trapped = false, onMountAutoFocus: onMountAutoFocusProp, onUnmountAutoFocus: onUnmountAutoFocusProp, ...scopeProps } = props;
16
+ const [container, setContainer] = React.useState(null);
17
+ const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);
18
+ const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);
19
+ const lastFocusedElementRef = React.useRef(null);
20
+ const composedRefs = useComposedRefs(forwardedRef, setContainer);
21
+ const focusScope = React.useRef({
22
+ paused: false,
23
+ pause() {
24
+ this.paused = true;
25
+ },
26
+ resume() {
27
+ this.paused = false;
28
+ }
29
+ }).current;
30
+ React.useEffect(() => {
31
+ if (trapped) {
32
+ function handleFocusIn(event) {
33
+ if (focusScope.paused || !container) return;
34
+ const target = event.target;
35
+ if (container.contains(target)) lastFocusedElementRef.current = target;
36
+ else focus(lastFocusedElementRef.current, { select: true });
37
+ }
38
+ function handleFocusOut(event) {
39
+ if (focusScope.paused || !container) return;
40
+ const relatedTarget = event.relatedTarget;
41
+ if (relatedTarget === null) return;
42
+ if (!container.contains(relatedTarget)) focus(lastFocusedElementRef.current, { select: true });
43
+ }
44
+ function handleMutations(mutations) {
45
+ if (document.activeElement !== document.body) return;
46
+ for (const mutation of mutations) if (mutation.removedNodes.length > 0) focus(container);
47
+ }
48
+ document.addEventListener("focusin", handleFocusIn);
49
+ document.addEventListener("focusout", handleFocusOut);
50
+ const mutationObserver = new MutationObserver(handleMutations);
51
+ if (container) mutationObserver.observe(container, {
52
+ childList: true,
53
+ subtree: true
54
+ });
55
+ return () => {
56
+ document.removeEventListener("focusin", handleFocusIn);
57
+ document.removeEventListener("focusout", handleFocusOut);
58
+ mutationObserver.disconnect();
59
+ };
60
+ }
61
+ }, [
62
+ trapped,
63
+ container,
64
+ focusScope.paused
65
+ ]);
66
+ React.useEffect(() => {
67
+ if (container) {
68
+ focusScopesStack.add(focusScope);
69
+ const previouslyFocusedElement = document.activeElement;
70
+ if (!container.contains(previouslyFocusedElement)) {
71
+ const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);
72
+ container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
73
+ container.dispatchEvent(mountEvent);
74
+ if (!mountEvent.defaultPrevented) {
75
+ focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });
76
+ if (document.activeElement === previouslyFocusedElement) focus(container);
77
+ }
78
+ }
79
+ return () => {
80
+ container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
81
+ setTimeout(() => {
82
+ const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
83
+ container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
84
+ container.dispatchEvent(unmountEvent);
85
+ if (!unmountEvent.defaultPrevented) focus(previouslyFocusedElement ?? document.body, { select: true });
86
+ container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
87
+ focusScopesStack.remove(focusScope);
88
+ }, 0);
89
+ };
90
+ }
91
+ }, [
92
+ container,
93
+ onMountAutoFocus,
94
+ onUnmountAutoFocus,
95
+ focusScope
96
+ ]);
97
+ const handleKeyDown = React.useCallback((event) => {
98
+ if (!loop && !trapped) return;
99
+ if (focusScope.paused) return;
100
+ const isTabKey = event.key === "Tab" && !event.altKey && !event.ctrlKey && !event.metaKey;
101
+ const focusedElement = document.activeElement;
102
+ if (isTabKey && focusedElement) {
103
+ const container = event.currentTarget;
104
+ const [first, last] = getTabbableEdges(container);
105
+ if (!(first && last)) {
106
+ if (focusedElement === container) event.preventDefault();
107
+ } else if (!event.shiftKey && focusedElement === last) {
108
+ event.preventDefault();
109
+ if (loop) focus(first, { select: true });
110
+ } else if (event.shiftKey && focusedElement === first) {
111
+ event.preventDefault();
112
+ if (loop) focus(last, { select: true });
113
+ }
114
+ }
115
+ }, [
116
+ loop,
117
+ trapped,
118
+ focusScope.paused
119
+ ]);
120
+ return /* @__PURE__ */ jsx(Primitive.div, {
121
+ tabIndex: -1,
122
+ ...scopeProps,
123
+ ref: composedRefs,
124
+ onKeyDown: handleKeyDown
125
+ });
126
+ });
127
+ /**
128
+ * Attempts focusing the first element in a list of candidates.
129
+ * Stops when focus has actually moved.
130
+ */
131
+ function focusFirst(candidates, { select = false } = {}) {
132
+ const previouslyFocusedElement = document.activeElement;
133
+ for (const candidate of candidates) {
134
+ focus(candidate, { select });
135
+ if (document.activeElement !== previouslyFocusedElement) return;
136
+ }
137
+ }
138
+ /**
139
+ * Returns the first and last tabbable elements inside a container.
140
+ */
141
+ function getTabbableEdges(container) {
142
+ const candidates = getTabbableCandidates(container);
143
+ return [findVisible(candidates, container), findVisible(candidates.reverse(), container)];
144
+ }
145
+ /**
146
+ * Returns a list of potential tabbable candidates.
147
+ *
148
+ * NOTE: This is only a close approximation. For example it doesn't take into account cases like when
149
+ * elements are not visible. This cannot be worked out easily by just reading a property, but rather
150
+ * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.
151
+ *
152
+ * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker
153
+ * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1
154
+ */
155
+ function getTabbableCandidates(container) {
156
+ const nodes = [];
157
+ const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, { acceptNode: (node) => {
158
+ const isHiddenInput = node.tagName === "INPUT" && node.type === "hidden";
159
+ if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;
160
+ return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
161
+ } });
162
+ while (walker.nextNode()) nodes.push(walker.currentNode);
163
+ return nodes;
164
+ }
165
+ /**
166
+ * Returns the first visible element in a list.
167
+ * NOTE: Only checks visibility up to the `container`.
168
+ */
169
+ function findVisible(elements, container) {
170
+ const canUseCheckVisibility = typeof container.checkVisibility === "function" && container.checkVisibility({ checkVisibilityCSS: true });
171
+ for (const element of elements) if (!(canUseCheckVisibility ? !element.checkVisibility({ checkVisibilityCSS: true }) : isHidden(element, { upTo: container }))) return element;
172
+ }
173
+ function isHidden(node, { upTo }) {
174
+ if (getComputedStyle(node).visibility === "hidden") return true;
175
+ while (node) {
176
+ if (upTo !== void 0 && node === upTo) return false;
177
+ if (getComputedStyle(node).display === "none") return true;
178
+ node = node.parentElement;
179
+ }
180
+ return false;
181
+ }
182
+ function isSelectableInput(element) {
183
+ return element instanceof HTMLInputElement && "select" in element;
184
+ }
185
+ function focus(element, { select = false } = {}) {
186
+ if (element && element.focus) {
187
+ const previouslyFocusedElement = document.activeElement;
188
+ element.focus({ preventScroll: true });
189
+ if (element !== previouslyFocusedElement && isSelectableInput(element) && select) element.select();
190
+ }
191
+ }
192
+ var focusScopesStack = createFocusScopesStack();
193
+ function createFocusScopesStack() {
194
+ /** A stack of focus scopes, with the active one at the top */
195
+ let stack = [];
196
+ return {
197
+ add(focusScope) {
198
+ const activeFocusScope = stack[0];
199
+ if (focusScope !== activeFocusScope) activeFocusScope?.pause();
200
+ stack = arrayRemove(stack, focusScope);
201
+ stack.unshift(focusScope);
202
+ },
203
+ remove(focusScope) {
204
+ stack = arrayRemove(stack, focusScope);
205
+ stack[0]?.resume();
206
+ }
207
+ };
208
+ }
209
+ function arrayRemove(array, item) {
210
+ const updatedArray = [...array];
211
+ const index = updatedArray.indexOf(item);
212
+ if (index !== -1) updatedArray.splice(index, 1);
213
+ return updatedArray;
214
+ }
215
+ function removeLinks(items) {
216
+ return items.filter((item) => item.tagName !== "A");
217
+ }
218
+ //#endregion
219
+ export { FocusScope };
220
+
221
+ //# sourceMappingURL=focus-scope.js.map