@protonradio/proton-ui 0.11.10 → 0.11.12

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 (482) hide show
  1. package/dist/_virtual/jsx-runtime.cjs.js +2 -0
  2. package/dist/_virtual/jsx-runtime.cjs.js.map +1 -0
  3. package/dist/_virtual/jsx-runtime.es.js +5 -0
  4. package/dist/_virtual/jsx-runtime.es.js.map +1 -0
  5. package/dist/_virtual/react-jsx-runtime.development.cjs.js +2 -0
  6. package/dist/_virtual/react-jsx-runtime.development.cjs.js.map +1 -0
  7. package/dist/_virtual/react-jsx-runtime.development.es.js +5 -0
  8. package/dist/_virtual/react-jsx-runtime.development.es.js.map +1 -0
  9. package/dist/_virtual/react-jsx-runtime.production.min.cjs.js +2 -0
  10. package/dist/_virtual/react-jsx-runtime.production.min.cjs.js.map +1 -0
  11. package/dist/_virtual/react-jsx-runtime.production.min.es.js +5 -0
  12. package/dist/_virtual/react-jsx-runtime.production.min.es.js.map +1 -0
  13. package/dist/assets/svg/icons.svg.cjs.js +2 -0
  14. package/dist/assets/svg/icons.svg.cjs.js.map +1 -0
  15. package/dist/assets/svg/icons.svg.es.js +5 -0
  16. package/dist/assets/svg/icons.svg.es.js.map +1 -0
  17. package/dist/components/ActionMenu/ActionMenu.cjs.js +2 -0
  18. package/dist/components/ActionMenu/ActionMenu.cjs.js.map +1 -0
  19. package/dist/components/ActionMenu/ActionMenu.es.js +277 -0
  20. package/dist/components/ActionMenu/ActionMenu.es.js.map +1 -0
  21. package/dist/components/Badge/Badge.cjs.js +2 -0
  22. package/dist/components/Badge/Badge.cjs.js.map +1 -0
  23. package/dist/components/Badge/Badge.es.js +25 -0
  24. package/dist/components/Badge/Badge.es.js.map +1 -0
  25. package/dist/components/Banner/Banner.cjs.js +2 -0
  26. package/dist/components/Banner/Banner.cjs.js.map +1 -0
  27. package/dist/components/Banner/Banner.es.js +131 -0
  28. package/dist/components/Banner/Banner.es.js.map +1 -0
  29. package/dist/components/Button/Button.cjs.js +2 -0
  30. package/dist/components/Button/Button.cjs.js.map +1 -0
  31. package/dist/components/Button/Button.es.js +99 -0
  32. package/dist/components/Button/Button.es.js.map +1 -0
  33. package/dist/components/ButtonGroup/ButtonGroup.cjs.js +2 -0
  34. package/dist/components/ButtonGroup/ButtonGroup.cjs.js.map +1 -0
  35. package/dist/components/ButtonGroup/ButtonGroup.es.js +51 -0
  36. package/dist/components/ButtonGroup/ButtonGroup.es.js.map +1 -0
  37. package/dist/components/ButtonWithSelect/ButtonWithSelect.cjs.js +2 -0
  38. package/dist/components/ButtonWithSelect/ButtonWithSelect.cjs.js.map +1 -0
  39. package/dist/components/ButtonWithSelect/ButtonWithSelect.es.js +80 -0
  40. package/dist/components/ButtonWithSelect/ButtonWithSelect.es.js.map +1 -0
  41. package/dist/components/DataTable/DataTable.cjs.js +2 -0
  42. package/dist/components/DataTable/DataTable.cjs.js.map +1 -0
  43. package/dist/components/DataTable/DataTable.es.js +137 -0
  44. package/dist/components/DataTable/DataTable.es.js.map +1 -0
  45. package/dist/components/Dialog/Dialog.cjs.js +2 -0
  46. package/dist/components/Dialog/Dialog.cjs.js.map +1 -0
  47. package/dist/components/Dialog/Dialog.es.js +15 -0
  48. package/dist/components/Dialog/Dialog.es.js.map +1 -0
  49. package/dist/components/Elevation/Elevation.cjs.js +2 -0
  50. package/dist/components/Elevation/Elevation.cjs.js.map +1 -0
  51. package/dist/components/Elevation/Elevation.es.js +33 -0
  52. package/dist/components/Elevation/Elevation.es.js.map +1 -0
  53. package/dist/components/Icon/Icon.cjs.js +2 -0
  54. package/dist/components/Icon/Icon.cjs.js.map +1 -0
  55. package/dist/components/Icon/Icon.es.js +42 -0
  56. package/dist/components/Icon/Icon.es.js.map +1 -0
  57. package/dist/components/ImageBackground/ImageBackground.cjs.js +2 -0
  58. package/dist/components/ImageBackground/ImageBackground.cjs.js.map +1 -0
  59. package/dist/components/ImageBackground/ImageBackground.es.js +55 -0
  60. package/dist/components/ImageBackground/ImageBackground.es.js.map +1 -0
  61. package/dist/components/Input/BaseInput/Input.cjs.js +2 -0
  62. package/dist/components/Input/BaseInput/Input.cjs.js.map +1 -0
  63. package/dist/components/Input/BaseInput/Input.es.js +186 -0
  64. package/dist/components/Input/BaseInput/Input.es.js.map +1 -0
  65. package/dist/components/Input/CopyInput/CopyInput.cjs.js +2 -0
  66. package/dist/components/Input/CopyInput/CopyInput.cjs.js.map +1 -0
  67. package/dist/components/Input/CopyInput/CopyInput.es.js +83 -0
  68. package/dist/components/Input/CopyInput/CopyInput.es.js.map +1 -0
  69. package/dist/components/Input/SearchInput/SearchInput.cjs.js +2 -0
  70. package/dist/components/Input/SearchInput/SearchInput.cjs.js.map +1 -0
  71. package/dist/components/Input/SearchInput/SearchInput.es.js +118 -0
  72. package/dist/components/Input/SearchInput/SearchInput.es.js.map +1 -0
  73. package/dist/components/Menu/MenuTrigger.cjs.js +2 -0
  74. package/dist/components/Menu/MenuTrigger.cjs.js.map +1 -0
  75. package/dist/components/Menu/MenuTrigger.es.js +89 -0
  76. package/dist/components/Menu/MenuTrigger.es.js.map +1 -0
  77. package/dist/components/Menu/PopoverMenu.cjs.js +2 -0
  78. package/dist/components/Menu/PopoverMenu.cjs.js.map +1 -0
  79. package/dist/components/Menu/PopoverMenu.es.js +122 -0
  80. package/dist/components/Menu/PopoverMenu.es.js.map +1 -0
  81. package/dist/components/Modal/Modal.cjs.js +2 -0
  82. package/dist/components/Modal/Modal.cjs.js.map +1 -0
  83. package/dist/components/Modal/Modal.es.js +122 -0
  84. package/dist/components/Modal/Modal.es.js.map +1 -0
  85. package/dist/components/Popover/Popover.cjs.js +2 -0
  86. package/dist/components/Popover/Popover.cjs.js.map +1 -0
  87. package/dist/components/Popover/Popover.es.js +54 -0
  88. package/dist/components/Popover/Popover.es.js.map +1 -0
  89. package/dist/components/ScreenOverlay/ScreenOverlay.cjs.js +2 -0
  90. package/dist/components/ScreenOverlay/ScreenOverlay.cjs.js.map +1 -0
  91. package/dist/components/ScreenOverlay/ScreenOverlay.es.js +44 -0
  92. package/dist/components/ScreenOverlay/ScreenOverlay.es.js.map +1 -0
  93. package/dist/components/Select/Select.cjs.js +2 -0
  94. package/dist/components/Select/Select.cjs.js.map +1 -0
  95. package/dist/components/Select/Select.es.js +228 -0
  96. package/dist/components/Select/Select.es.js.map +1 -0
  97. package/dist/components/Switch/Switch.cjs.js +2 -0
  98. package/dist/components/Switch/Switch.cjs.js.map +1 -0
  99. package/dist/components/Switch/Switch.es.js +40 -0
  100. package/dist/components/Switch/Switch.es.js.map +1 -0
  101. package/dist/components/Table/Collection/CompoundComponents.cjs.js +2 -0
  102. package/dist/components/Table/Collection/CompoundComponents.cjs.js.map +1 -0
  103. package/dist/components/Table/Collection/CompoundComponents.es.js +9 -0
  104. package/dist/components/Table/Collection/CompoundComponents.es.js.map +1 -0
  105. package/dist/components/Table/Collection/collectionParser.cjs.js +2 -0
  106. package/dist/components/Table/Collection/collectionParser.cjs.js.map +1 -0
  107. package/dist/components/Table/Collection/collectionParser.es.js +54 -0
  108. package/dist/components/Table/Collection/collectionParser.es.js.map +1 -0
  109. package/dist/components/Table/Collection/useTableCollection.cjs.js +2 -0
  110. package/dist/components/Table/Collection/useTableCollection.cjs.js.map +1 -0
  111. package/dist/components/Table/Collection/useTableCollection.es.js +59 -0
  112. package/dist/components/Table/Collection/useTableCollection.es.js.map +1 -0
  113. package/dist/components/Table/Table.cjs.js +2 -0
  114. package/dist/components/Table/Table.cjs.js.map +1 -0
  115. package/dist/components/Table/Table.es.js +89 -0
  116. package/dist/components/Table/Table.es.js.map +1 -0
  117. package/dist/components/Text/TextEllipsis/TextEllipsis.cjs.js +2 -0
  118. package/dist/components/Text/TextEllipsis/TextEllipsis.cjs.js.map +1 -0
  119. package/dist/components/Text/TextEllipsis/TextEllipsis.es.js +30 -0
  120. package/dist/components/Text/TextEllipsis/TextEllipsis.es.js.map +1 -0
  121. package/dist/components/Text/TextEmphasis/TextEmphasis.cjs.js +2 -0
  122. package/dist/components/Text/TextEmphasis/TextEmphasis.cjs.js.map +1 -0
  123. package/dist/components/Text/TextEmphasis/TextEmphasis.es.js +54 -0
  124. package/dist/components/Text/TextEmphasis/TextEmphasis.es.js.map +1 -0
  125. package/dist/components/ThemeProvider.cjs.js +2 -0
  126. package/dist/components/ThemeProvider.cjs.js.map +1 -0
  127. package/dist/components/ThemeProvider.es.js +42 -0
  128. package/dist/components/ThemeProvider.es.js.map +1 -0
  129. package/dist/components/Tombstone/Tombstone.cjs.js +2 -0
  130. package/dist/components/Tombstone/Tombstone.cjs.js.map +1 -0
  131. package/dist/components/Tombstone/Tombstone.es.js +35 -0
  132. package/dist/components/Tombstone/Tombstone.es.js.map +1 -0
  133. package/dist/components/Tooltip/Tooltip.cjs.js +2 -0
  134. package/dist/components/Tooltip/Tooltip.cjs.js.map +1 -0
  135. package/dist/components/Tooltip/Tooltip.es.js +78 -0
  136. package/dist/components/Tooltip/Tooltip.es.js.map +1 -0
  137. package/dist/components/Waveform/Waveform.cjs.js +2 -0
  138. package/dist/components/Waveform/Waveform.cjs.js.map +1 -0
  139. package/dist/components/Waveform/Waveform.es.js +163 -0
  140. package/dist/components/Waveform/Waveform.es.js.map +1 -0
  141. package/dist/components/Waveform/WaveformBar.cjs.js +2 -0
  142. package/dist/components/Waveform/WaveformBar.cjs.js.map +1 -0
  143. package/dist/components/Waveform/WaveformBar.es.js +74 -0
  144. package/dist/components/Waveform/WaveformBar.es.js.map +1 -0
  145. package/dist/constants/breakpoint.cjs.js +2 -0
  146. package/dist/constants/breakpoint.cjs.js.map +1 -0
  147. package/dist/{breakpoint-9y1_8U_b.mjs → constants/breakpoint.es.js} +2 -2
  148. package/dist/constants/breakpoint.es.js.map +1 -0
  149. package/dist/constants/placement.cjs.js +2 -0
  150. package/dist/constants/placement.cjs.js.map +1 -0
  151. package/dist/constants/placement.es.js +28 -0
  152. package/dist/constants/placement.es.js.map +1 -0
  153. package/dist/constants.cjs.js +1 -1
  154. package/dist/constants.cjs.js.map +1 -1
  155. package/dist/constants.es.js +3 -26
  156. package/dist/constants.es.js.map +1 -1
  157. package/dist/dark.cjs.js +1 -1
  158. package/dist/dark.cjs.js.map +1 -1
  159. package/dist/dark.es.js +8 -55
  160. package/dist/dark.es.js.map +1 -1
  161. package/dist/design/colors.cjs.js +2 -0
  162. package/dist/design/colors.cjs.js.map +1 -0
  163. package/dist/{colors-CWaj9dFz.mjs → design/colors.es.js} +7 -7
  164. package/dist/design/colors.es.js.map +1 -0
  165. package/dist/design/darkTheme/colors.cjs.js +2 -0
  166. package/dist/{colors-Ceyo4oCJ.mjs.map → design/darkTheme/colors.cjs.js.map} +1 -1
  167. package/dist/{colors-Ceyo4oCJ.mjs → design/darkTheme/colors.es.js} +13 -13
  168. package/dist/{colors-CebzFjpe.js.map → design/darkTheme/colors.es.js.map} +1 -1
  169. package/dist/design/darkTheme/stylesheet.cjs.js +2 -0
  170. package/dist/design/darkTheme/stylesheet.cjs.js.map +1 -0
  171. package/dist/design/darkTheme/stylesheet.es.js +52 -0
  172. package/dist/design/darkTheme/stylesheet.es.js.map +1 -0
  173. package/dist/design/generateStylesheet.cjs.js +2 -0
  174. package/dist/design/generateStylesheet.cjs.js.map +1 -0
  175. package/dist/design/generateStylesheet.es.js +26 -0
  176. package/dist/design/generateStylesheet.es.js.map +1 -0
  177. package/dist/design/lightTheme/colors.cjs.js +2 -0
  178. package/dist/{colors-DMkDnu4U.mjs.map → design/lightTheme/colors.cjs.js.map} +1 -1
  179. package/dist/{colors-DMkDnu4U.mjs → design/lightTheme/colors.es.js} +11 -11
  180. package/dist/{colors-DL1dYffC.js.map → design/lightTheme/colors.es.js.map} +1 -1
  181. package/dist/design/lightTheme/stylesheet.cjs.js +2 -0
  182. package/dist/design/lightTheme/stylesheet.cjs.js.map +1 -0
  183. package/dist/design/lightTheme/stylesheet.es.js +52 -0
  184. package/dist/design/lightTheme/stylesheet.es.js.map +1 -0
  185. package/dist/design/theme.cjs.js +2 -0
  186. package/dist/design/theme.cjs.js.map +1 -0
  187. package/dist/design/theme.es.js +12 -0
  188. package/dist/design/theme.es.js.map +1 -0
  189. package/dist/hooks/useBreakpoint.cjs.js +2 -0
  190. package/dist/hooks/useBreakpoint.cjs.js.map +1 -0
  191. package/dist/hooks/useBreakpoint.es.js +17 -0
  192. package/dist/hooks/useBreakpoint.es.js.map +1 -0
  193. package/dist/hooks/useIsClosing.cjs.js +2 -0
  194. package/dist/hooks/useIsClosing.cjs.js.map +1 -0
  195. package/dist/hooks/useIsClosing.es.js +30 -0
  196. package/dist/hooks/useIsClosing.es.js.map +1 -0
  197. package/dist/hooks/useLockBodyScroll.cjs.js +2 -0
  198. package/dist/hooks/useLockBodyScroll.cjs.js.map +1 -0
  199. package/dist/hooks/useLockBodyScroll.es.js +14 -0
  200. package/dist/hooks/useLockBodyScroll.es.js.map +1 -0
  201. package/dist/hooks/usePalette.cjs.js +2 -0
  202. package/dist/hooks/usePalette.cjs.js.map +1 -0
  203. package/dist/hooks/usePalette.es.js +37 -0
  204. package/dist/hooks/usePalette.es.js.map +1 -0
  205. package/dist/hooks.cjs.js +1 -1
  206. package/dist/hooks.cjs.js.map +1 -1
  207. package/dist/hooks.es.js +8 -37
  208. package/dist/hooks.es.js.map +1 -1
  209. package/dist/index.cjs.js +1 -36
  210. package/dist/index.cjs.js.map +1 -1
  211. package/dist/index.d.ts +0 -1
  212. package/dist/index.es.js +60 -5421
  213. package/dist/index.es.js.map +1 -1
  214. package/dist/light.cjs.js +1 -1
  215. package/dist/light.cjs.js.map +1 -1
  216. package/dist/light.es.js +8 -55
  217. package/dist/light.es.js.map +1 -1
  218. package/dist/node_modules/@react-aria/button/dist/useButton.cjs.js +2 -0
  219. package/dist/node_modules/@react-aria/button/dist/useButton.cjs.js.map +1 -0
  220. package/dist/node_modules/@react-aria/button/dist/useButton.es.js +55 -0
  221. package/dist/node_modules/@react-aria/button/dist/useButton.es.js.map +1 -0
  222. package/dist/node_modules/@react-aria/dialog/dist/useDialog.cjs.js +2 -0
  223. package/dist/node_modules/@react-aria/dialog/dist/useDialog.cjs.js.map +1 -0
  224. package/dist/node_modules/@react-aria/dialog/dist/useDialog.es.js +44 -0
  225. package/dist/node_modules/@react-aria/dialog/dist/useDialog.es.js.map +1 -0
  226. package/dist/node_modules/@react-aria/focus/dist/FocusScope.cjs.js +2 -0
  227. package/dist/node_modules/@react-aria/focus/dist/FocusScope.cjs.js.map +1 -0
  228. package/dist/node_modules/@react-aria/focus/dist/FocusScope.es.js +437 -0
  229. package/dist/node_modules/@react-aria/focus/dist/FocusScope.es.js.map +1 -0
  230. package/dist/node_modules/@react-aria/form/dist/useFormValidation.cjs.js +2 -0
  231. package/dist/node_modules/@react-aria/form/dist/useFormValidation.cjs.js.map +1 -0
  232. package/dist/node_modules/@react-aria/form/dist/useFormValidation.es.js +78 -0
  233. package/dist/node_modules/@react-aria/form/dist/useFormValidation.es.js.map +1 -0
  234. package/dist/node_modules/@react-aria/i18n/dist/context.cjs.js +2 -0
  235. package/dist/node_modules/@react-aria/i18n/dist/context.cjs.js.map +1 -0
  236. package/dist/node_modules/@react-aria/i18n/dist/context.es.js +11 -0
  237. package/dist/node_modules/@react-aria/i18n/dist/context.es.js.map +1 -0
  238. package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.cjs.js +2 -0
  239. package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.cjs.js.map +1 -0
  240. package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.es.js +30 -0
  241. package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.es.js.map +1 -0
  242. package/dist/node_modules/@react-aria/i18n/dist/utils.cjs.js +2 -0
  243. package/dist/node_modules/@react-aria/i18n/dist/utils.cjs.js.map +1 -0
  244. package/dist/node_modules/@react-aria/i18n/dist/utils.es.js +45 -0
  245. package/dist/node_modules/@react-aria/i18n/dist/utils.es.js.map +1 -0
  246. package/dist/node_modules/@react-aria/interactions/dist/context.cjs.js +2 -0
  247. package/dist/node_modules/@react-aria/interactions/dist/context.cjs.js.map +1 -0
  248. package/dist/node_modules/@react-aria/interactions/dist/context.es.js +10 -0
  249. package/dist/node_modules/@react-aria/interactions/dist/context.es.js.map +1 -0
  250. package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.cjs.js +2 -0
  251. package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.cjs.js.map +1 -0
  252. package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.es.js +29 -0
  253. package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.es.js.map +1 -0
  254. package/dist/node_modules/@react-aria/interactions/dist/focusSafely.cjs.js +2 -0
  255. package/dist/node_modules/@react-aria/interactions/dist/focusSafely.cjs.js.map +1 -0
  256. package/dist/node_modules/@react-aria/interactions/dist/focusSafely.es.js +15 -0
  257. package/dist/node_modules/@react-aria/interactions/dist/focusSafely.es.js.map +1 -0
  258. package/dist/node_modules/@react-aria/interactions/dist/textSelection.cjs.js +2 -0
  259. package/dist/node_modules/@react-aria/interactions/dist/textSelection.cjs.js.map +1 -0
  260. package/dist/node_modules/@react-aria/interactions/dist/textSelection.es.js +35 -0
  261. package/dist/node_modules/@react-aria/interactions/dist/textSelection.es.js.map +1 -0
  262. package/dist/node_modules/@react-aria/interactions/dist/useFocus.cjs.js +2 -0
  263. package/dist/node_modules/@react-aria/interactions/dist/useFocus.cjs.js.map +1 -0
  264. package/dist/node_modules/@react-aria/interactions/dist/useFocus.es.js +30 -0
  265. package/dist/node_modules/@react-aria/interactions/dist/useFocus.es.js.map +1 -0
  266. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.cjs.js +2 -0
  267. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.cjs.js.map +1 -0
  268. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.es.js +63 -0
  269. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.es.js.map +1 -0
  270. package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.cjs.js +2 -0
  271. package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.cjs.js.map +1 -0
  272. package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.es.js +56 -0
  273. package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.es.js.map +1 -0
  274. package/dist/node_modules/@react-aria/interactions/dist/useFocusable.cjs.js +2 -0
  275. package/dist/node_modules/@react-aria/interactions/dist/useFocusable.cjs.js.map +1 -0
  276. package/dist/node_modules/@react-aria/interactions/dist/useFocusable.es.js +42 -0
  277. package/dist/node_modules/@react-aria/interactions/dist/useFocusable.es.js.map +1 -0
  278. package/dist/node_modules/@react-aria/interactions/dist/useInteractOutside.cjs.js +2 -0
  279. package/dist/node_modules/@react-aria/interactions/dist/useInteractOutside.cjs.js.map +1 -0
  280. package/dist/node_modules/@react-aria/interactions/dist/useInteractOutside.es.js +51 -0
  281. package/dist/node_modules/@react-aria/interactions/dist/useInteractOutside.es.js.map +1 -0
  282. package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.cjs.js +2 -0
  283. package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.cjs.js.map +1 -0
  284. package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.es.js +13 -0
  285. package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.es.js.map +1 -0
  286. package/dist/node_modules/@react-aria/interactions/dist/usePress.cjs.js +8 -0
  287. package/dist/node_modules/@react-aria/interactions/dist/usePress.cjs.js.map +1 -0
  288. package/dist/node_modules/@react-aria/interactions/dist/usePress.es.js +386 -0
  289. package/dist/node_modules/@react-aria/interactions/dist/usePress.es.js.map +1 -0
  290. package/dist/node_modules/@react-aria/interactions/dist/utils.cjs.js +2 -0
  291. package/dist/node_modules/@react-aria/interactions/dist/utils.cjs.js.map +1 -0
  292. package/dist/node_modules/@react-aria/interactions/dist/utils.es.js +92 -0
  293. package/dist/node_modules/@react-aria/interactions/dist/utils.es.js.map +1 -0
  294. package/dist/node_modules/@react-aria/label/dist/useField.cjs.js +2 -0
  295. package/dist/node_modules/@react-aria/label/dist/useField.cjs.js.map +1 -0
  296. package/dist/node_modules/@react-aria/label/dist/useField.es.js +36 -0
  297. package/dist/node_modules/@react-aria/label/dist/useField.es.js.map +1 -0
  298. package/dist/node_modules/@react-aria/label/dist/useLabel.cjs.js +2 -0
  299. package/dist/node_modules/@react-aria/label/dist/useLabel.cjs.js.map +1 -0
  300. package/dist/node_modules/@react-aria/label/dist/useLabel.es.js +23 -0
  301. package/dist/node_modules/@react-aria/label/dist/useLabel.es.js.map +1 -0
  302. package/dist/node_modules/@react-aria/overlays/dist/Overlay.cjs.js +2 -0
  303. package/dist/node_modules/@react-aria/overlays/dist/Overlay.cjs.js.map +1 -0
  304. package/dist/node_modules/@react-aria/overlays/dist/Overlay.es.js +16 -0
  305. package/dist/node_modules/@react-aria/overlays/dist/Overlay.es.js.map +1 -0
  306. package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.cjs.js +2 -0
  307. package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.cjs.js.map +1 -0
  308. package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.es.js +70 -0
  309. package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.es.js.map +1 -0
  310. package/dist/node_modules/@react-aria/overlays/dist/useModalOverlay.cjs.js +2 -0
  311. package/dist/node_modules/@react-aria/overlays/dist/useModalOverlay.cjs.js.map +1 -0
  312. package/dist/node_modules/@react-aria/overlays/dist/useModalOverlay.es.js +32 -0
  313. package/dist/node_modules/@react-aria/overlays/dist/useModalOverlay.es.js.map +1 -0
  314. package/dist/node_modules/@react-aria/overlays/dist/useOverlay.cjs.js +2 -0
  315. package/dist/node_modules/@react-aria/overlays/dist/useOverlay.cjs.js.map +1 -0
  316. package/dist/node_modules/@react-aria/overlays/dist/useOverlay.es.js +53 -0
  317. package/dist/node_modules/@react-aria/overlays/dist/useOverlay.es.js.map +1 -0
  318. package/dist/node_modules/@react-aria/overlays/dist/usePreventScroll.cjs.js +2 -0
  319. package/dist/node_modules/@react-aria/overlays/dist/usePreventScroll.cjs.js.map +1 -0
  320. package/dist/node_modules/@react-aria/overlays/dist/usePreventScroll.es.js +100 -0
  321. package/dist/node_modules/@react-aria/overlays/dist/usePreventScroll.es.js.map +1 -0
  322. package/dist/node_modules/@react-aria/radio/dist/useRadio.cjs.js +2 -0
  323. package/dist/node_modules/@react-aria/radio/dist/useRadio.cjs.js.map +1 -0
  324. package/dist/node_modules/@react-aria/radio/dist/useRadio.es.js +70 -0
  325. package/dist/node_modules/@react-aria/radio/dist/useRadio.es.js.map +1 -0
  326. package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.cjs.js +2 -0
  327. package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.cjs.js.map +1 -0
  328. package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.es.js +80 -0
  329. package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.es.js.map +1 -0
  330. package/dist/node_modules/@react-aria/radio/dist/utils.cjs.js +2 -0
  331. package/dist/node_modules/@react-aria/radio/dist/utils.cjs.js.map +1 -0
  332. package/dist/node_modules/@react-aria/radio/dist/utils.es.js +5 -0
  333. package/dist/node_modules/@react-aria/radio/dist/utils.es.js.map +1 -0
  334. package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.cjs.js +2 -0
  335. package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.cjs.js.map +1 -0
  336. package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.es.js +19 -0
  337. package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.es.js.map +1 -0
  338. package/dist/node_modules/@react-aria/switch/dist/useSwitch.cjs.js +2 -0
  339. package/dist/node_modules/@react-aria/switch/dist/useSwitch.cjs.js.map +1 -0
  340. package/dist/node_modules/@react-aria/switch/dist/useSwitch.es.js +20 -0
  341. package/dist/node_modules/@react-aria/switch/dist/useSwitch.es.js.map +1 -0
  342. package/dist/node_modules/@react-aria/toggle/dist/useToggle.cjs.js +2 -0
  343. package/dist/node_modules/@react-aria/toggle/dist/useToggle.cjs.js.map +1 -0
  344. package/dist/node_modules/@react-aria/toggle/dist/useToggle.es.js +60 -0
  345. package/dist/node_modules/@react-aria/toggle/dist/useToggle.es.js.map +1 -0
  346. package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.cjs.js +2 -0
  347. package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.cjs.js.map +1 -0
  348. package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.es.js +41 -0
  349. package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.es.js.map +1 -0
  350. package/dist/node_modules/@react-stately/form/dist/useFormValidationState.cjs.js +2 -0
  351. package/dist/node_modules/@react-stately/form/dist/useFormValidationState.cjs.js.map +1 -0
  352. package/dist/node_modules/@react-stately/form/dist/useFormValidationState.es.js +110 -0
  353. package/dist/node_modules/@react-stately/form/dist/useFormValidationState.es.js.map +1 -0
  354. package/dist/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.cjs.js +2 -0
  355. package/dist/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.cjs.js.map +1 -0
  356. package/dist/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.es.js +30 -0
  357. package/dist/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.es.js.map +1 -0
  358. package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.cjs.js +2 -0
  359. package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.cjs.js.map +1 -0
  360. package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.es.js +35 -0
  361. package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.es.js.map +1 -0
  362. package/dist/node_modules/@react-stately/toggle/dist/useToggleState.cjs.js +2 -0
  363. package/dist/node_modules/@react-stately/toggle/dist/useToggleState.cjs.js.map +1 -0
  364. package/dist/node_modules/@react-stately/toggle/dist/useToggleState.es.js +22 -0
  365. package/dist/node_modules/@react-stately/toggle/dist/useToggleState.es.js.map +1 -0
  366. package/dist/node_modules/@react-stately/utils/dist/useControlledState.cjs.js +2 -0
  367. package/dist/node_modules/@react-stately/utils/dist/useControlledState.cjs.js.map +1 -0
  368. package/dist/node_modules/@react-stately/utils/dist/useControlledState.es.js +31 -0
  369. package/dist/node_modules/@react-stately/utils/dist/useControlledState.es.js.map +1 -0
  370. package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.cjs.js +2 -0
  371. package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.cjs.js.map +1 -0
  372. package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.es.js +9 -0
  373. package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.es.js.map +1 -0
  374. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.cjs.js +2 -0
  375. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.cjs.js.map +1 -0
  376. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.es.js +8 -0
  377. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.es.js.map +1 -0
  378. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.cjs.js +2 -0
  379. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.cjs.js.map +1 -0
  380. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.es.js +13 -0
  381. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.es.js.map +1 -0
  382. package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.cjs.js +2 -0
  383. package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.cjs.js.map +1 -0
  384. package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.es.js +9 -0
  385. package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.es.js.map +1 -0
  386. package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.cjs.js +2 -0
  387. package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.cjs.js.map +1 -0
  388. package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.es.js +11 -0
  389. package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.es.js.map +1 -0
  390. package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.cjs.js +2 -0
  391. package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.cjs.js.map +1 -0
  392. package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.es.js +9 -0
  393. package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.es.js.map +1 -0
  394. package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.cjs.js +2 -0
  395. package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.cjs.js.map +1 -0
  396. package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.es.js +11 -0
  397. package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.es.js.map +1 -0
  398. package/dist/node_modules/color2k/dist/index.exports.import.es.cjs.js +2 -0
  399. package/dist/node_modules/color2k/dist/index.exports.import.es.cjs.js.map +1 -0
  400. package/dist/node_modules/color2k/dist/index.exports.import.es.es.js +171 -0
  401. package/dist/node_modules/color2k/dist/index.exports.import.es.es.js.map +1 -0
  402. package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs.js +23 -0
  403. package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs.js.map +1 -0
  404. package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js +609 -0
  405. package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js.map +1 -0
  406. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.cjs.js +10 -0
  407. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.cjs.js.map +1 -0
  408. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.es.js +29 -0
  409. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.es.js.map +1 -0
  410. package/dist/node_modules/react/jsx-runtime.cjs.js +2 -0
  411. package/dist/node_modules/react/jsx-runtime.cjs.js.map +1 -0
  412. package/dist/node_modules/react/jsx-runtime.es.js +9 -0
  413. package/dist/node_modules/react/jsx-runtime.es.js.map +1 -0
  414. package/dist/node_modules/react-aria-components/dist/OverlayArrow.cjs.js +2 -0
  415. package/dist/node_modules/react-aria-components/dist/OverlayArrow.cjs.js.map +1 -0
  416. package/dist/node_modules/react-aria-components/dist/OverlayArrow.es.js +37 -0
  417. package/dist/node_modules/react-aria-components/dist/OverlayArrow.es.js.map +1 -0
  418. package/dist/node_modules/react-aria-components/dist/Tooltip.cjs.js +2 -0
  419. package/dist/node_modules/react-aria-components/dist/Tooltip.cjs.js.map +1 -0
  420. package/dist/node_modules/react-aria-components/dist/Tooltip.es.js +98 -0
  421. package/dist/node_modules/react-aria-components/dist/Tooltip.es.js.map +1 -0
  422. package/dist/node_modules/react-aria-components/dist/utils.cjs.js +2 -0
  423. package/dist/node_modules/react-aria-components/dist/utils.cjs.js.map +1 -0
  424. package/dist/node_modules/react-aria-components/dist/utils.es.js +89 -0
  425. package/dist/node_modules/react-aria-components/dist/utils.es.js.map +1 -0
  426. package/dist/style.css +1 -1
  427. package/dist/theme.cjs.js +1 -1
  428. package/dist/theme.cjs.js.map +1 -1
  429. package/dist/theme.es.js +9 -15
  430. package/dist/theme.es.js.map +1 -1
  431. package/dist/utils/color2k.cjs.js +2 -0
  432. package/dist/utils/color2k.cjs.js.map +1 -0
  433. package/dist/utils/color2k.es.js +14 -0
  434. package/dist/utils/color2k.es.js.map +1 -0
  435. package/dist/utils/copy.cjs.js +2 -0
  436. package/dist/utils/copy.cjs.js.map +1 -0
  437. package/dist/utils/copy.es.js +31 -0
  438. package/dist/utils/copy.es.js.map +1 -0
  439. package/dist/utils/image.cjs.js +2 -0
  440. package/dist/utils/image.cjs.js.map +1 -0
  441. package/dist/utils/image.es.js +28 -0
  442. package/dist/utils/image.es.js.map +1 -0
  443. package/dist/utils/navigation.cjs.js +2 -0
  444. package/dist/utils/navigation.cjs.js.map +1 -0
  445. package/dist/utils/navigation.es.js +12 -0
  446. package/dist/utils/navigation.es.js.map +1 -0
  447. package/dist/utils/palette.cjs.js +2 -0
  448. package/dist/utils/palette.cjs.js.map +1 -0
  449. package/dist/utils/palette.es.js +183 -0
  450. package/dist/utils/palette.es.js.map +1 -0
  451. package/dist/utils/string.cjs.js +2 -0
  452. package/dist/utils/string.cjs.js.map +1 -0
  453. package/dist/utils/string.es.js +8 -0
  454. package/dist/utils/string.es.js.map +1 -0
  455. package/dist/utils.cjs.js +1 -1
  456. package/dist/utils.es.js +19 -15
  457. package/dist/utils.es.js.map +1 -1
  458. package/package.json +5 -5
  459. package/dist/breakpoint-9y1_8U_b.mjs.map +0 -1
  460. package/dist/breakpoint-DtqbboOa.js +0 -2
  461. package/dist/breakpoint-DtqbboOa.js.map +0 -1
  462. package/dist/color2k-CpDB_dpw.mjs +0 -168
  463. package/dist/color2k-CpDB_dpw.mjs.map +0 -1
  464. package/dist/color2k-DCgwXUem.js +0 -2
  465. package/dist/color2k-DCgwXUem.js.map +0 -1
  466. package/dist/colors-CWaj9dFz.mjs.map +0 -1
  467. package/dist/colors-CebzFjpe.js +0 -2
  468. package/dist/colors-CmSJBHaf.js +0 -2
  469. package/dist/colors-CmSJBHaf.js.map +0 -1
  470. package/dist/colors-DL1dYffC.js +0 -2
  471. package/dist/image-CUSfY1_T.js +0 -2
  472. package/dist/image-CUSfY1_T.js.map +0 -1
  473. package/dist/image-DFyN0Kd9.mjs +0 -207
  474. package/dist/image-DFyN0Kd9.mjs.map +0 -1
  475. package/dist/navigation-BB0MBIiR.js +0 -2
  476. package/dist/navigation-BB0MBIiR.js.map +0 -1
  477. package/dist/navigation-Bj7Pex9j.mjs +0 -43
  478. package/dist/navigation-Bj7Pex9j.mjs.map +0 -1
  479. package/dist/useBreakpoint-CjRyGKN-.mjs +0 -53
  480. package/dist/useBreakpoint-CjRyGKN-.mjs.map +0 -1
  481. package/dist/useBreakpoint-DA-JqOu3.js +0 -2
  482. package/dist/useBreakpoint-DA-JqOu3.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverMenu.cjs.js","sources":["../../../src/components/Menu/PopoverMenu.tsx"],"sourcesContent":["import { DropdownMenu as RadixDropdownMenu } from \"radix-ui\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { csx } from \"../../utils/string\";\nimport { ActionMenuAction } from \"../ActionMenu/ActionMenu\";\n\nexport interface PopoverMenuProps {\n /** The trigger component */\n trigger: React.ReactNode;\n\n /** Array of menu actions/items to display\n * - type {@link ActionMenuAction}[]\n */\n items: ActionMenuAction[];\n\n /** Whether the menu is open */\n isOpen: boolean;\n\n /** Callback when the menu is opened or closed */\n onOpenChange: (open: boolean) => void;\n\n /** The key of the selected item */\n selectedKey: string;\n\n /** Callback when the selection changes */\n onSelectionChange: (key: string) => void;\n\n /** The keys of the disabled items */\n disabledKeys: string[];\n\n /** The title of the menu */\n title: string;\n}\n\n/**\n * A component that displays a popover menu.\n *\n * API:\n * - {@link PopoverMenuProps}\n */\nexport function PopoverMenu({\n trigger,\n items,\n isOpen,\n onOpenChange,\n selectedKey,\n onSelectionChange,\n disabledKeys,\n title,\n}: PopoverMenuProps) {\n const { className: themeClass, style: themeStyle } = useTheme();\n\n function renderMenuItem(props) {\n const { item, className, style, disabledKeys, onClose } = props;\n\n if (item.children && item.children.length > 0) {\n return (\n <RadixDropdownMenu.Sub key={item.key}>\n <RadixDropdownMenu.SubTrigger\n className={csx(\n \"proton-Menu__item\",\n \"proton-MenuTrigger__menu-item\"\n )}\n >\n {item.label}\n <svg\n className=\"proton-MenuTrigger__chevron\"\n viewBox=\"0 0 256 256\"\n width={16}\n height={12}\n >\n <path\n fill=\"currentColor\"\n d=\"m184.49 136.49l-80 80a12 12 0 0 1-17-17L159 128L87.51 56.49a12 12 0 1 1 17-17l80 80a12 12 0 0 1-.02 17\"\n />\n </svg>\n </RadixDropdownMenu.SubTrigger>\n\n <RadixDropdownMenu.SubContent\n sideOffset={8}\n data-has-submenu=\"true\"\n className={csx(\"proton-Menu\", \"proton-MenuTrigger__menu\")}\n >\n {item.children.map((child) =>\n renderMenuItem({\n item: child,\n className,\n style,\n disabledKeys,\n onClose,\n })\n )}\n </RadixDropdownMenu.SubContent>\n </RadixDropdownMenu.Sub>\n );\n } else {\n return (\n <RadixDropdownMenu.Item\n className={csx(\"proton-Menu__item\", \"proton-MenuTrigger__menu-item\")}\n key={item.key}\n aria-selected={selectedKey === item.key}\n disabled={disabledKeys?.includes(item.key)}\n onSelect={() => {\n item.onAction?.(item.key);\n onSelectionChange?.(item.key);\n onClose?.();\n }}\n >\n <span\n className=\"proton-MenuTrigger__label\"\n style={{ gridArea: \"label\" }}\n >\n {item.label}\n </span>\n {item.description && (\n <span\n className=\"proton-MenuTrigger__description\"\n style={{ gridArea: \"desc\" }}\n >\n {item.description}\n </span>\n )}\n </RadixDropdownMenu.Item>\n );\n }\n }\n\n return (\n <RadixDropdownMenu.Root open={isOpen} onOpenChange={onOpenChange}>\n <RadixDropdownMenu.Trigger asChild>{trigger}</RadixDropdownMenu.Trigger>\n <RadixDropdownMenu.Portal>\n <RadixDropdownMenu.Content\n className={csx(\"proton-Menu\", \"proton-MenuTrigger__menu\", themeClass)}\n style={themeStyle as React.CSSProperties}\n >\n {title && (\n <RadixDropdownMenu.Label className=\"proton-MenuTrigger__menu-header\">\n {title}\n </RadixDropdownMenu.Label>\n )}\n {items.map((item) =>\n renderMenuItem({\n item,\n className: themeClass,\n style: themeStyle as React.CSSProperties,\n disabledKeys,\n onClose: () => onOpenChange?.(false),\n })\n )}\n </RadixDropdownMenu.Content>\n </RadixDropdownMenu.Portal>\n </RadixDropdownMenu.Root>\n );\n}\n"],"names":["PopoverMenu","trigger","items","isOpen","onOpenChange","selectedKey","onSelectionChange","disabledKeys","title","themeClass","themeStyle","useTheme","renderMenuItem","props","item","className","style","onClose","jsxs","RadixDropdownMenu","csx","jsx","child","_a"],"mappings":"iPAuCO,SAASA,EAAY,CAC1B,QAAAC,EACA,MAAAC,EACA,OAAAC,EACA,aAAAC,EACA,YAAAC,EACA,kBAAAC,EACA,aAAAC,EACA,MAAAC,CACF,EAAqB,CACnB,KAAM,CAAE,UAAWC,EAAY,MAAOC,CAAA,EAAeC,EAAAA,WAErD,SAASC,EAAeC,EAAO,CAC7B,KAAM,CAAE,KAAAC,EAAM,UAAAC,EAAW,MAAAC,EAAO,aAAAT,EAAc,QAAAU,CAAY,EAAAJ,EAE1D,OAAIC,EAAK,UAAYA,EAAK,SAAS,OAAS,EAExCI,yBAACC,EAAAA,aAAkB,IAAlB,CACC,SAAA,CAAAD,EAAA,kBAAA,KAACC,EAAAA,aAAkB,WAAlB,CACC,UAAWC,EAAA,IACT,oBACA,+BACF,EAEC,SAAA,CAAKN,EAAA,MACNO,EAAA,kBAAA,IAAC,MAAA,CACC,UAAU,8BACV,QAAQ,cACR,MAAO,GACP,OAAQ,GAER,SAAAA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,wGAAA,CACJ,CAAA,CACF,CAAA,CAAA,CACF,EAEAA,EAAA,kBAAA,IAACF,EAAAA,aAAkB,WAAlB,CACC,WAAY,EACZ,mBAAiB,OACjB,UAAWC,EAAAA,IAAI,cAAe,0BAA0B,EAEvD,WAAK,SAAS,IAAKE,GAClBV,EAAe,CACb,KAAMU,EACN,UAAAP,EACA,MAAAC,EACA,aAAAT,EACA,QAAAU,CAAA,CACD,CACH,CAAA,CACF,CAAA,GAnC0BH,EAAK,GAoCjC,EAIAI,EAAA,kBAAA,KAACC,EAAAA,aAAkB,KAAlB,CACC,UAAWC,EAAAA,IAAI,oBAAqB,+BAA+B,EAEnE,gBAAef,IAAgBS,EAAK,IACpC,SAAUP,GAAAA,YAAAA,EAAc,SAASO,EAAK,KACtC,SAAU,IAAM,QACTS,EAAAT,EAAA,WAAA,MAAAS,EAAA,KAAAT,EAAWA,EAAK,KACrBR,GAAA,MAAAA,EAAoBQ,EAAK,KACfG,GAAA,MAAAA,GACZ,EAEA,SAAA,CAAAI,EAAA,kBAAA,IAAC,OAAA,CACC,UAAU,4BACV,MAAO,CAAE,SAAU,OAAQ,EAE1B,SAAKP,EAAA,KAAA,CACR,EACCA,EAAK,aACJO,EAAA,kBAAA,IAAC,OAAA,CACC,UAAU,kCACV,MAAO,CAAE,SAAU,MAAO,EAEzB,SAAKP,EAAA,WAAA,CACR,CAAA,CAAA,EArBGA,EAAK,GAAA,CA0BlB,CAEA,gCACGK,EAAAA,aAAkB,KAAlB,CAAuB,KAAMhB,EAAQ,aAAAC,EACpC,SAAA,CAAAiB,EAAA,kBAAA,IAACF,EAAkB,aAAA,QAAlB,CAA0B,QAAO,GAAE,SAAQlB,EAAA,EAC5CoB,EAAAA,kBAAAA,IAACF,EAAkB,aAAA,OAAlB,CACC,SAAAD,EAAA,kBAAA,KAACC,EAAAA,aAAkB,QAAlB,CACC,UAAWC,EAAA,IAAI,cAAe,2BAA4BX,CAAU,EACpE,MAAOC,EAEN,SAAA,CAAAF,2BACEW,EAAAA,aAAkB,MAAlB,CAAwB,UAAU,kCAChC,SACHX,EAAA,EAEDN,EAAM,IAAKY,GACVF,EAAe,CACb,KAAAE,EACA,UAAWL,EACX,MAAOC,EACP,aAAAH,EACA,QAAS,IAAMH,GAAA,YAAAA,EAAe,GAAK,CACpC,CACH,CAAA,CAAA,CAAA,EAEJ,CACF,CAAA,CAAA,CAEJ"}
@@ -0,0 +1,122 @@
1
+ import { j as r } from "../../node_modules/react/jsx-runtime.es.js";
2
+ import { DropdownMenu as s } from "radix-ui";
3
+ import { useTheme as b } from "../ThemeProvider.es.js";
4
+ import { csx as o } from "../../utils/string.es.js";
5
+ function v({
6
+ trigger: _,
7
+ items: h,
8
+ isOpen: x,
9
+ onOpenChange: t,
10
+ selectedKey: g,
11
+ onSelectionChange: a,
12
+ disabledKeys: j,
13
+ title: c
14
+ }) {
15
+ const { className: u, style: d } = b();
16
+ function p(m) {
17
+ const { item: e, className: M, style: y, disabledKeys: l, onClose: i } = m;
18
+ return e.children && e.children.length > 0 ? /* @__PURE__ */ r.jsxs(s.Sub, { children: [
19
+ /* @__PURE__ */ r.jsxs(
20
+ s.SubTrigger,
21
+ {
22
+ className: o(
23
+ "proton-Menu__item",
24
+ "proton-MenuTrigger__menu-item"
25
+ ),
26
+ children: [
27
+ e.label,
28
+ /* @__PURE__ */ r.jsx(
29
+ "svg",
30
+ {
31
+ className: "proton-MenuTrigger__chevron",
32
+ viewBox: "0 0 256 256",
33
+ width: 16,
34
+ height: 12,
35
+ children: /* @__PURE__ */ r.jsx(
36
+ "path",
37
+ {
38
+ fill: "currentColor",
39
+ d: "m184.49 136.49l-80 80a12 12 0 0 1-17-17L159 128L87.51 56.49a12 12 0 1 1 17-17l80 80a12 12 0 0 1-.02 17"
40
+ }
41
+ )
42
+ }
43
+ )
44
+ ]
45
+ }
46
+ ),
47
+ /* @__PURE__ */ r.jsx(
48
+ s.SubContent,
49
+ {
50
+ sideOffset: 8,
51
+ "data-has-submenu": "true",
52
+ className: o("proton-Menu", "proton-MenuTrigger__menu"),
53
+ children: e.children.map(
54
+ (n) => p({
55
+ item: n,
56
+ className: M,
57
+ style: y,
58
+ disabledKeys: l,
59
+ onClose: i
60
+ })
61
+ )
62
+ }
63
+ )
64
+ ] }, e.key) : /* @__PURE__ */ r.jsxs(
65
+ s.Item,
66
+ {
67
+ className: o("proton-Menu__item", "proton-MenuTrigger__menu-item"),
68
+ "aria-selected": g === e.key,
69
+ disabled: l == null ? void 0 : l.includes(e.key),
70
+ onSelect: () => {
71
+ var n;
72
+ (n = e.onAction) == null || n.call(e, e.key), a == null || a(e.key), i == null || i();
73
+ },
74
+ children: [
75
+ /* @__PURE__ */ r.jsx(
76
+ "span",
77
+ {
78
+ className: "proton-MenuTrigger__label",
79
+ style: { gridArea: "label" },
80
+ children: e.label
81
+ }
82
+ ),
83
+ e.description && /* @__PURE__ */ r.jsx(
84
+ "span",
85
+ {
86
+ className: "proton-MenuTrigger__description",
87
+ style: { gridArea: "desc" },
88
+ children: e.description
89
+ }
90
+ )
91
+ ]
92
+ },
93
+ e.key
94
+ );
95
+ }
96
+ return /* @__PURE__ */ r.jsxs(s.Root, { open: x, onOpenChange: t, children: [
97
+ /* @__PURE__ */ r.jsx(s.Trigger, { asChild: !0, children: _ }),
98
+ /* @__PURE__ */ r.jsx(s.Portal, { children: /* @__PURE__ */ r.jsxs(
99
+ s.Content,
100
+ {
101
+ className: o("proton-Menu", "proton-MenuTrigger__menu", u),
102
+ style: d,
103
+ children: [
104
+ c && /* @__PURE__ */ r.jsx(s.Label, { className: "proton-MenuTrigger__menu-header", children: c }),
105
+ h.map(
106
+ (m) => p({
107
+ item: m,
108
+ className: u,
109
+ style: d,
110
+ disabledKeys: j,
111
+ onClose: () => t == null ? void 0 : t(!1)
112
+ })
113
+ )
114
+ ]
115
+ }
116
+ ) })
117
+ ] });
118
+ }
119
+ export {
120
+ v as PopoverMenu
121
+ };
122
+ //# sourceMappingURL=PopoverMenu.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverMenu.es.js","sources":["../../../src/components/Menu/PopoverMenu.tsx"],"sourcesContent":["import { DropdownMenu as RadixDropdownMenu } from \"radix-ui\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { csx } from \"../../utils/string\";\nimport { ActionMenuAction } from \"../ActionMenu/ActionMenu\";\n\nexport interface PopoverMenuProps {\n /** The trigger component */\n trigger: React.ReactNode;\n\n /** Array of menu actions/items to display\n * - type {@link ActionMenuAction}[]\n */\n items: ActionMenuAction[];\n\n /** Whether the menu is open */\n isOpen: boolean;\n\n /** Callback when the menu is opened or closed */\n onOpenChange: (open: boolean) => void;\n\n /** The key of the selected item */\n selectedKey: string;\n\n /** Callback when the selection changes */\n onSelectionChange: (key: string) => void;\n\n /** The keys of the disabled items */\n disabledKeys: string[];\n\n /** The title of the menu */\n title: string;\n}\n\n/**\n * A component that displays a popover menu.\n *\n * API:\n * - {@link PopoverMenuProps}\n */\nexport function PopoverMenu({\n trigger,\n items,\n isOpen,\n onOpenChange,\n selectedKey,\n onSelectionChange,\n disabledKeys,\n title,\n}: PopoverMenuProps) {\n const { className: themeClass, style: themeStyle } = useTheme();\n\n function renderMenuItem(props) {\n const { item, className, style, disabledKeys, onClose } = props;\n\n if (item.children && item.children.length > 0) {\n return (\n <RadixDropdownMenu.Sub key={item.key}>\n <RadixDropdownMenu.SubTrigger\n className={csx(\n \"proton-Menu__item\",\n \"proton-MenuTrigger__menu-item\"\n )}\n >\n {item.label}\n <svg\n className=\"proton-MenuTrigger__chevron\"\n viewBox=\"0 0 256 256\"\n width={16}\n height={12}\n >\n <path\n fill=\"currentColor\"\n d=\"m184.49 136.49l-80 80a12 12 0 0 1-17-17L159 128L87.51 56.49a12 12 0 1 1 17-17l80 80a12 12 0 0 1-.02 17\"\n />\n </svg>\n </RadixDropdownMenu.SubTrigger>\n\n <RadixDropdownMenu.SubContent\n sideOffset={8}\n data-has-submenu=\"true\"\n className={csx(\"proton-Menu\", \"proton-MenuTrigger__menu\")}\n >\n {item.children.map((child) =>\n renderMenuItem({\n item: child,\n className,\n style,\n disabledKeys,\n onClose,\n })\n )}\n </RadixDropdownMenu.SubContent>\n </RadixDropdownMenu.Sub>\n );\n } else {\n return (\n <RadixDropdownMenu.Item\n className={csx(\"proton-Menu__item\", \"proton-MenuTrigger__menu-item\")}\n key={item.key}\n aria-selected={selectedKey === item.key}\n disabled={disabledKeys?.includes(item.key)}\n onSelect={() => {\n item.onAction?.(item.key);\n onSelectionChange?.(item.key);\n onClose?.();\n }}\n >\n <span\n className=\"proton-MenuTrigger__label\"\n style={{ gridArea: \"label\" }}\n >\n {item.label}\n </span>\n {item.description && (\n <span\n className=\"proton-MenuTrigger__description\"\n style={{ gridArea: \"desc\" }}\n >\n {item.description}\n </span>\n )}\n </RadixDropdownMenu.Item>\n );\n }\n }\n\n return (\n <RadixDropdownMenu.Root open={isOpen} onOpenChange={onOpenChange}>\n <RadixDropdownMenu.Trigger asChild>{trigger}</RadixDropdownMenu.Trigger>\n <RadixDropdownMenu.Portal>\n <RadixDropdownMenu.Content\n className={csx(\"proton-Menu\", \"proton-MenuTrigger__menu\", themeClass)}\n style={themeStyle as React.CSSProperties}\n >\n {title && (\n <RadixDropdownMenu.Label className=\"proton-MenuTrigger__menu-header\">\n {title}\n </RadixDropdownMenu.Label>\n )}\n {items.map((item) =>\n renderMenuItem({\n item,\n className: themeClass,\n style: themeStyle as React.CSSProperties,\n disabledKeys,\n onClose: () => onOpenChange?.(false),\n })\n )}\n </RadixDropdownMenu.Content>\n </RadixDropdownMenu.Portal>\n </RadixDropdownMenu.Root>\n );\n}\n"],"names":["PopoverMenu","trigger","items","isOpen","onOpenChange","selectedKey","onSelectionChange","disabledKeys","title","themeClass","themeStyle","useTheme","renderMenuItem","props","item","className","style","onClose","jsxs","RadixDropdownMenu","csx","jsx","child","_a"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../node_modules/react/jsx-runtime.cjs.js"),E=require("../../node_modules/@react-aria/button/dist/useButton.cjs.js"),q=require("../../node_modules/@react-aria/dialog/dist/useDialog.cjs.js"),m=require("../../node_modules/@react-aria/focus/dist/FocusScope.cjs.js"),v=require("@react-aria/utils"),S=require("../../node_modules/@react-aria/overlays/dist/usePreventScroll.cjs.js"),_=require("../../node_modules/@react-aria/overlays/dist/useModalOverlay.cjs.js"),j=require("react"),b=require("../../node_modules/@react-stately/overlays/dist/useOverlayTriggerState.cjs.js"),h=require("../../hooks/useIsClosing.cjs.js"),f=require("../Button/Button.cjs.js");;/* empty css */const y=require("../ScreenOverlay/ScreenOverlay.cjs.js"),B=require("../../hooks/useBreakpoint.cjs.js"),C=require("../../constants/breakpoint.cjs.js"),O=require("../../utils/string.cjs.js"),M=({children:s})=>e.jsxRuntimeExports.jsx("h2",{className:"proton-Modal__title",children:s}),R=({children:s})=>e.jsxRuntimeExports.jsx("h3",{className:"proton-Modal__subtitle",children:s}),g=({children:s})=>e.jsxRuntimeExports.jsx("div",{className:"proton-Modal__body",children:s}),P=s=>e.jsxRuntimeExports.jsx("div",{className:"proton-Modal__action",children:e.jsxRuntimeExports.jsx(f.Button,{...s})}),N=({children:s})=>e.jsxRuntimeExports.jsx(m.FocusScope,{autoFocus:!0,children:e.jsxRuntimeExports.jsx("div",{className:"proton-Modal__actions",children:s})}),F=({title:s,subtitle:o,body:r,onClose:n,children:c,isClosing:d,"data-testid":x})=>{const t=j.useRef(null),u=b.useOverlayTriggerState({isOpen:!0,onOpenChange:n}),{modalProps:p}=_.useModalOverlay({isDismissable:!1},u,t),{dialogProps:i}=q.useDialog({role:"dialog"},t);S.usePreventScroll();const l=j.useRef(null),{buttonProps:a}=E.useButton({onPress:n,"aria-label":"Close"},l);return e.jsxRuntimeExports.jsx(m.FocusScope,{contain:!0,restoreFocus:!0,autoFocus:!0,children:e.jsxRuntimeExports.jsxs("div",{"data-testid":x,className:O.csx("proton-Modal",d&&"proton-Modal--closing"),...v.mergeProps(p,i),ref:t,children:[e.jsxRuntimeExports.jsx("button",{name:"Close",className:"proton-Modal__close-button",...a,ref:l,children:"×"}),s&&e.jsxRuntimeExports.jsx(M,{children:s}),o&&e.jsxRuntimeExports.jsx(R,{children:o}),r&&e.jsxRuntimeExports.jsx(g,{children:r}),e.jsxRuntimeExports.jsx("div",{className:"proton-Modal__content",children:c})]})})},T=({isOpen:s,onClose:o,title:r,subtitle:n,body:c,children:d,isOverlay:x=!0,"data-testid":t})=>{const u=j.useRef(null),{isClosing:p,handleClose:i}=h.useIsClosing({onClose:o,overlayRef:u}),l=B.useBreakpoint(C.BREAKPOINTS.MEDIUM);if(!s)return null;const a=e.jsxRuntimeExports.jsx(F,{isOpen:s,title:r,subtitle:n,body:c,onClose:i,isClosing:p,"data-testid":t,children:d});return x||l?e.jsxRuntimeExports.jsx(y.ScreenOverlay,{fadeIn:!0,ref:u,onClose:i,children:a}):a},A=Object.assign(T,{Title:M,Subtitle:R,Body:g,Action:P,Actions:N});exports.Modal=A;
2
+ //# sourceMappingURL=Modal.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.cjs.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["\"use client\";\n\nimport { useButton } from \"@react-aria/button\";\nimport { useDialog } from \"@react-aria/dialog\";\nimport { FocusScope } from \"@react-aria/focus\";\nimport { useModalOverlay, usePreventScroll } from \"@react-aria/overlays\";\nimport { mergeProps } from \"@react-aria/utils\";\nimport { useRef } from \"react\";\nimport { useOverlayTriggerState } from \"@react-stately/overlays\";\nimport { BREAKPOINTS } from \"../../constants\";\nimport { useBreakpoint } from \"../../hooks\";\nimport { useIsClosing } from \"../../hooks/useIsClosing\";\nimport { csx } from \"../../utils\";\nimport { Button, ButtonProps } from \"../Button/Button\";\nimport \"./Modal.css\";\nimport { ScreenOverlay } from \"../ScreenOverlay/ScreenOverlay\";\n\nconst ModalTitle = ({ children }: { children: React.ReactNode }) => {\n return <h2 className=\"proton-Modal__title\">{children}</h2>;\n};\n\nconst ModalSubtitle = ({ children }: { children: React.ReactNode }) => {\n return <h3 className=\"proton-Modal__subtitle\">{children}</h3>;\n};\n\nconst ModalBody = ({ children }: { children: React.ReactNode }) => {\n return <div className=\"proton-Modal__body\">{children}</div>;\n};\n\nconst ModalAction = (buttonProps: ButtonProps) => {\n return (\n <div className=\"proton-Modal__action\">\n <Button {...buttonProps} />\n </div>\n );\n};\n\nconst ModalActions = ({ children }: { children: React.ReactNode }) => {\n return (\n <FocusScope autoFocus>\n <div className=\"proton-Modal__actions\">{children}</div>\n </FocusScope>\n );\n};\n\nconst ModalContent = ({\n title,\n subtitle,\n body,\n onClose,\n children,\n isClosing,\n \"data-testid\": dataTestId,\n}: ModalProps & {\n isClosing: boolean;\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n const state = useOverlayTriggerState({ isOpen: true, onOpenChange: onClose });\n const { modalProps } = useModalOverlay(\n {\n isDismissable: false, //handle dismiss behavior in useIsClosing\n },\n state,\n ref\n );\n\n const { dialogProps } = useDialog({ role: \"dialog\" }, ref);\n usePreventScroll();\n\n const closeButtonRef = useRef<HTMLButtonElement>(null);\n const { buttonProps: closeButtonProps } = useButton(\n {\n onPress: onClose,\n \"aria-label\": \"Close\",\n },\n closeButtonRef\n );\n\n return (\n <FocusScope contain restoreFocus autoFocus>\n <div\n data-testid={dataTestId}\n className={csx(\"proton-Modal\", isClosing && \"proton-Modal--closing\")}\n {...mergeProps(modalProps, dialogProps)}\n ref={ref}\n >\n <button\n name=\"Close\"\n className=\"proton-Modal__close-button\"\n {...closeButtonProps}\n ref={closeButtonRef}\n >\n ×\n </button>\n {title && <ModalTitle>{title}</ModalTitle>}\n {subtitle && <ModalSubtitle>{subtitle}</ModalSubtitle>}\n {body && <ModalBody>{body}</ModalBody>}\n <div className=\"proton-Modal__content\">{children}</div>\n </div>\n </FocusScope>\n );\n};\n\nexport interface ModalProps {\n /**\n * Optional body text content for the modal\n * */\n body?: string;\n /**\n * Content to render inside the modal\n * */\n children: React.ReactNode;\n /**\n * data-testid for the modal\n * */\n \"data-testid\"?: string;\n /**\n * Controls the visibility of the modal\n * */\n isOpen: boolean;\n /**\n * Whether to show the modal with an overlay background.\n * @default true\n * */\n isOverlay?: boolean;\n /**\n * Callback function when modal is closed\n * */\n onClose?: () => void;\n /**\n * Optional subtitle text below the modal title\n * */\n subtitle?: string;\n /**\n * Optional title text for the modal header\n * */\n title?: string;\n}\n\n/**\n * Modal component with overlay support and responsive behavior.\n *\n * API:\n * - {@link ModalProps}\n */\nconst ModalWrapper = ({\n isOpen,\n onClose,\n title,\n subtitle,\n body,\n children,\n isOverlay = true,\n \"data-testid\": dataTestId,\n}: ModalProps) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const { isClosing, handleClose } = useIsClosing({\n onClose,\n overlayRef,\n });\n const isMobile = useBreakpoint(BREAKPOINTS.MEDIUM);\n\n if (!isOpen) return null;\n\n const modalContent = (\n <ModalContent\n isOpen={isOpen}\n title={title}\n subtitle={subtitle}\n body={body}\n onClose={handleClose}\n isClosing={isClosing}\n data-testid={dataTestId}\n >\n {children}\n </ModalContent>\n );\n\n return isOverlay || isMobile ? (\n <ScreenOverlay fadeIn ref={overlayRef} onClose={handleClose}>\n {modalContent}\n </ScreenOverlay>\n ) : (\n modalContent\n );\n};\n\nexport const Modal = Object.assign(ModalWrapper, {\n /**\n * Renders a h2 styled title\n * */\n Title: ModalTitle,\n /**\n * Renders a h3 styled subtitle\n * */\n Subtitle: ModalSubtitle,\n /**\n * Renders a div styled body\n * */\n Body: ModalBody,\n /**\n * Renders a Proton Button action\n * - @prop buttonProps {@link ButtonProps}\n * */\n Action: ModalAction,\n /**\n * Renders a group of Proton Buttons\n * */\n Actions: ModalActions,\n});\n"],"names":["ModalTitle","children","jsx","ModalSubtitle","ModalBody","ModalAction","buttonProps","Button","ModalActions","FocusScope","ModalContent","title","subtitle","body","onClose","isClosing","dataTestId","ref","useRef","state","useOverlayTriggerState","modalProps","useModalOverlay","dialogProps","useDialog","usePreventScroll","closeButtonRef","closeButtonProps","useButton","jsxs","csx","mergeProps","ModalWrapper","isOpen","isOverlay","overlayRef","handleClose","useIsClosing","isMobile","useBreakpoint","BREAKPOINTS","modalContent","ScreenOverlay","Modal"],"mappings":"u8BAiBMA,EAAa,CAAC,CAAE,SAAAC,KACZC,EAAAA,kBAAAA,IAAA,KAAA,CAAG,UAAU,sBAAuB,SAAAD,CAAS,CAAA,EAGjDE,EAAgB,CAAC,CAAE,SAAAF,KACfC,EAAAA,kBAAAA,IAAA,KAAA,CAAG,UAAU,yBAA0B,SAAAD,CAAS,CAAA,EAGpDG,EAAY,CAAC,CAAE,SAAAH,KACXC,EAAAA,kBAAAA,IAAA,MAAA,CAAI,UAAU,qBAAsB,SAAAD,CAAS,CAAA,EAGjDI,EAAeC,GAEjBJ,wBAAC,OAAI,UAAU,uBACb,iCAACK,EAAQ,OAAA,CAAA,GAAGD,CAAa,CAAA,CAC3B,CAAA,EAIEE,EAAe,CAAC,CAAE,SAAAP,KAEpBC,EAAA,kBAAA,IAACO,cAAW,UAAS,GACnB,iCAAC,MAAI,CAAA,UAAU,wBAAyB,SAAAR,CAAS,CAAA,CACnD,CAAA,EAIES,EAAe,CAAC,CACpB,MAAAC,EACA,SAAAC,EACA,KAAAC,EACA,QAAAC,EACA,SAAAb,EACA,UAAAc,EACA,cAAeC,CACjB,IAEM,CACE,MAAAC,EAAMC,SAAuB,IAAI,EACjCC,EAAQC,EAAAA,uBAAuB,CAAE,OAAQ,GAAM,aAAcN,EAAS,EACtE,CAAE,WAAAO,GAAeC,EAAA,gBACrB,CACE,cAAe,EACjB,EACAH,EACAF,CAAA,EAGI,CAAE,YAAAM,GAAgBC,EAAA,UAAU,CAAE,KAAM,QAAA,EAAYP,CAAG,EACxCQ,EAAAA,mBAEX,MAAAC,EAAiBR,SAA0B,IAAI,EAC/C,CAAE,YAAaS,CAAA,EAAqBC,EAAA,UACxC,CACE,QAASd,EACT,aAAc,OAChB,EACAY,CAAA,EAGF,+BACGjB,EAAAA,WAAW,CAAA,QAAO,GAAC,aAAY,GAAC,UAAS,GACxC,SAAAoB,EAAA,kBAAA,KAAC,MAAA,CACC,cAAab,EACb,UAAWc,EAAA,IAAI,eAAgBf,GAAa,uBAAuB,EAClE,GAAGgB,EAAW,WAAAV,EAAYE,CAAW,EACtC,IAAAN,EAEA,SAAA,CAAAf,EAAA,kBAAA,IAAC,SAAA,CACC,KAAK,QACL,UAAU,6BACT,GAAGyB,EACJ,IAAKD,EACN,SAAA,GAAA,CAED,EACCf,GAAUT,EAAAA,kBAAAA,IAAAF,EAAA,CAAY,SAAMW,CAAA,CAAA,EAC5BC,GAAaV,EAAAA,kBAAAA,IAAAC,EAAA,CAAe,SAASS,CAAA,CAAA,EACrCC,GAASX,EAAAA,kBAAAA,IAAAE,EAAA,CAAW,SAAKS,CAAA,CAAA,EACzBX,EAAAA,kBAAAA,IAAA,MAAA,CAAI,UAAU,wBAAyB,SAAAD,CAAS,CAAA,CAAA,CAAA,CAErD,CAAA,CAAA,CAEJ,EA4CM+B,EAAe,CAAC,CACpB,OAAAC,EACA,QAAAnB,EACA,MAAAH,EACA,SAAAC,EACA,KAAAC,EACA,SAAAZ,EACA,UAAAiC,EAAY,GACZ,cAAelB,CACjB,IAAkB,CACV,MAAAmB,EAAajB,SAAuB,IAAI,EACxC,CAAE,UAAAH,EAAW,YAAAqB,CAAY,EAAIC,eAAa,CAC9C,QAAAvB,EACA,WAAAqB,CAAA,CACD,EACKG,EAAWC,EAAAA,cAAcC,EAAA,YAAY,MAAM,EAE7C,GAAA,CAACP,EAAe,OAAA,KAEpB,MAAMQ,EACJvC,EAAA,kBAAA,IAACQ,EAAA,CACC,OAAAuB,EACA,MAAAtB,EACA,SAAAC,EACA,KAAAC,EACA,QAASuB,EACT,UAAArB,EACA,cAAaC,EAEZ,SAAAf,CAAA,CAAA,EAIE,OAAAiC,GAAaI,EAClBpC,EAAAA,kBAAAA,IAACwC,EAAAA,cAAc,CAAA,OAAM,GAAC,IAAKP,EAAY,QAASC,EAC7C,SAAAK,CAAA,CACH,EAEAA,CAEJ,EAEaE,EAAQ,OAAO,OAAOX,EAAc,CAI/C,MAAOhC,EAIP,SAAUG,EAIV,KAAMC,EAKN,OAAQC,EAIR,QAASG,CACX,CAAC"}
@@ -0,0 +1,122 @@
1
+ import { j as o } from "../../node_modules/react/jsx-runtime.es.js";
2
+ import { useButton as $ } from "../../node_modules/@react-aria/button/dist/useButton.es.js";
3
+ import { useDialog as _ } from "../../node_modules/@react-aria/dialog/dist/useDialog.es.js";
4
+ import { FocusScope as x } from "../../node_modules/@react-aria/focus/dist/FocusScope.es.js";
5
+ import { mergeProps as h } from "@react-aria/utils";
6
+ import { usePreventScroll as g } from "../../node_modules/@react-aria/overlays/dist/usePreventScroll.es.js";
7
+ import { useModalOverlay as v } from "../../node_modules/@react-aria/overlays/dist/useModalOverlay.es.js";
8
+ import { useRef as f } from "react";
9
+ import { useOverlayTriggerState as C } from "../../node_modules/@react-stately/overlays/dist/useOverlayTriggerState.es.js";
10
+ import { useIsClosing as N } from "../../hooks/useIsClosing.es.js";
11
+ import { Button as B } from "../Button/Button.es.js";
12
+ /* empty css */
13
+ import { ScreenOverlay as P } from "../ScreenOverlay/ScreenOverlay.es.js";
14
+ import { useBreakpoint as S } from "../../hooks/useBreakpoint.es.js";
15
+ import { BREAKPOINTS as y } from "../../constants/breakpoint.es.js";
16
+ import { csx as O } from "../../utils/string.es.js";
17
+ const b = ({ children: t }) => /* @__PURE__ */ o.jsx("h2", { className: "proton-Modal__title", children: t }), M = ({ children: t }) => /* @__PURE__ */ o.jsx("h3", { className: "proton-Modal__subtitle", children: t }), j = ({ children: t }) => /* @__PURE__ */ o.jsx("div", { className: "proton-Modal__body", children: t }), A = (t) => /* @__PURE__ */ o.jsx("div", { className: "proton-Modal__action", children: /* @__PURE__ */ o.jsx(B, { ...t }) }), R = ({ children: t }) => /* @__PURE__ */ o.jsx(x, { autoFocus: !0, children: /* @__PURE__ */ o.jsx("div", { className: "proton-Modal__actions", children: t }) }), F = ({
18
+ title: t,
19
+ subtitle: s,
20
+ body: r,
21
+ onClose: a,
22
+ children: d,
23
+ isClosing: m,
24
+ "data-testid": p
25
+ }) => {
26
+ const e = f(null), n = C({ isOpen: !0, onOpenChange: a }), { modalProps: u } = v(
27
+ {
28
+ isDismissable: !1
29
+ //handle dismiss behavior in useIsClosing
30
+ },
31
+ n,
32
+ e
33
+ ), { dialogProps: l } = _({ role: "dialog" }, e);
34
+ g();
35
+ const c = f(null), { buttonProps: i } = $(
36
+ {
37
+ onPress: a,
38
+ "aria-label": "Close"
39
+ },
40
+ c
41
+ );
42
+ return /* @__PURE__ */ o.jsx(x, { contain: !0, restoreFocus: !0, autoFocus: !0, children: /* @__PURE__ */ o.jsxs(
43
+ "div",
44
+ {
45
+ "data-testid": p,
46
+ className: O("proton-Modal", m && "proton-Modal--closing"),
47
+ ...h(u, l),
48
+ ref: e,
49
+ children: [
50
+ /* @__PURE__ */ o.jsx(
51
+ "button",
52
+ {
53
+ name: "Close",
54
+ className: "proton-Modal__close-button",
55
+ ...i,
56
+ ref: c,
57
+ children: "×"
58
+ }
59
+ ),
60
+ t && /* @__PURE__ */ o.jsx(b, { children: t }),
61
+ s && /* @__PURE__ */ o.jsx(M, { children: s }),
62
+ r && /* @__PURE__ */ o.jsx(j, { children: r }),
63
+ /* @__PURE__ */ o.jsx("div", { className: "proton-Modal__content", children: d })
64
+ ]
65
+ }
66
+ ) });
67
+ }, I = ({
68
+ isOpen: t,
69
+ onClose: s,
70
+ title: r,
71
+ subtitle: a,
72
+ body: d,
73
+ children: m,
74
+ isOverlay: p = !0,
75
+ "data-testid": e
76
+ }) => {
77
+ const n = f(null), { isClosing: u, handleClose: l } = N({
78
+ onClose: s,
79
+ overlayRef: n
80
+ }), c = S(y.MEDIUM);
81
+ if (!t) return null;
82
+ const i = /* @__PURE__ */ o.jsx(
83
+ F,
84
+ {
85
+ isOpen: t,
86
+ title: r,
87
+ subtitle: a,
88
+ body: d,
89
+ onClose: l,
90
+ isClosing: u,
91
+ "data-testid": e,
92
+ children: m
93
+ }
94
+ );
95
+ return p || c ? /* @__PURE__ */ o.jsx(P, { fadeIn: !0, ref: n, onClose: l, children: i }) : i;
96
+ }, X = Object.assign(I, {
97
+ /**
98
+ * Renders a h2 styled title
99
+ * */
100
+ Title: b,
101
+ /**
102
+ * Renders a h3 styled subtitle
103
+ * */
104
+ Subtitle: M,
105
+ /**
106
+ * Renders a div styled body
107
+ * */
108
+ Body: j,
109
+ /**
110
+ * Renders a Proton Button action
111
+ * - @prop buttonProps {@link ButtonProps}
112
+ * */
113
+ Action: A,
114
+ /**
115
+ * Renders a group of Proton Buttons
116
+ * */
117
+ Actions: R
118
+ });
119
+ export {
120
+ X as Modal
121
+ };
122
+ //# sourceMappingURL=Modal.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.es.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["\"use client\";\n\nimport { useButton } from \"@react-aria/button\";\nimport { useDialog } from \"@react-aria/dialog\";\nimport { FocusScope } from \"@react-aria/focus\";\nimport { useModalOverlay, usePreventScroll } from \"@react-aria/overlays\";\nimport { mergeProps } from \"@react-aria/utils\";\nimport { useRef } from \"react\";\nimport { useOverlayTriggerState } from \"@react-stately/overlays\";\nimport { BREAKPOINTS } from \"../../constants\";\nimport { useBreakpoint } from \"../../hooks\";\nimport { useIsClosing } from \"../../hooks/useIsClosing\";\nimport { csx } from \"../../utils\";\nimport { Button, ButtonProps } from \"../Button/Button\";\nimport \"./Modal.css\";\nimport { ScreenOverlay } from \"../ScreenOverlay/ScreenOverlay\";\n\nconst ModalTitle = ({ children }: { children: React.ReactNode }) => {\n return <h2 className=\"proton-Modal__title\">{children}</h2>;\n};\n\nconst ModalSubtitle = ({ children }: { children: React.ReactNode }) => {\n return <h3 className=\"proton-Modal__subtitle\">{children}</h3>;\n};\n\nconst ModalBody = ({ children }: { children: React.ReactNode }) => {\n return <div className=\"proton-Modal__body\">{children}</div>;\n};\n\nconst ModalAction = (buttonProps: ButtonProps) => {\n return (\n <div className=\"proton-Modal__action\">\n <Button {...buttonProps} />\n </div>\n );\n};\n\nconst ModalActions = ({ children }: { children: React.ReactNode }) => {\n return (\n <FocusScope autoFocus>\n <div className=\"proton-Modal__actions\">{children}</div>\n </FocusScope>\n );\n};\n\nconst ModalContent = ({\n title,\n subtitle,\n body,\n onClose,\n children,\n isClosing,\n \"data-testid\": dataTestId,\n}: ModalProps & {\n isClosing: boolean;\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n const state = useOverlayTriggerState({ isOpen: true, onOpenChange: onClose });\n const { modalProps } = useModalOverlay(\n {\n isDismissable: false, //handle dismiss behavior in useIsClosing\n },\n state,\n ref\n );\n\n const { dialogProps } = useDialog({ role: \"dialog\" }, ref);\n usePreventScroll();\n\n const closeButtonRef = useRef<HTMLButtonElement>(null);\n const { buttonProps: closeButtonProps } = useButton(\n {\n onPress: onClose,\n \"aria-label\": \"Close\",\n },\n closeButtonRef\n );\n\n return (\n <FocusScope contain restoreFocus autoFocus>\n <div\n data-testid={dataTestId}\n className={csx(\"proton-Modal\", isClosing && \"proton-Modal--closing\")}\n {...mergeProps(modalProps, dialogProps)}\n ref={ref}\n >\n <button\n name=\"Close\"\n className=\"proton-Modal__close-button\"\n {...closeButtonProps}\n ref={closeButtonRef}\n >\n ×\n </button>\n {title && <ModalTitle>{title}</ModalTitle>}\n {subtitle && <ModalSubtitle>{subtitle}</ModalSubtitle>}\n {body && <ModalBody>{body}</ModalBody>}\n <div className=\"proton-Modal__content\">{children}</div>\n </div>\n </FocusScope>\n );\n};\n\nexport interface ModalProps {\n /**\n * Optional body text content for the modal\n * */\n body?: string;\n /**\n * Content to render inside the modal\n * */\n children: React.ReactNode;\n /**\n * data-testid for the modal\n * */\n \"data-testid\"?: string;\n /**\n * Controls the visibility of the modal\n * */\n isOpen: boolean;\n /**\n * Whether to show the modal with an overlay background.\n * @default true\n * */\n isOverlay?: boolean;\n /**\n * Callback function when modal is closed\n * */\n onClose?: () => void;\n /**\n * Optional subtitle text below the modal title\n * */\n subtitle?: string;\n /**\n * Optional title text for the modal header\n * */\n title?: string;\n}\n\n/**\n * Modal component with overlay support and responsive behavior.\n *\n * API:\n * - {@link ModalProps}\n */\nconst ModalWrapper = ({\n isOpen,\n onClose,\n title,\n subtitle,\n body,\n children,\n isOverlay = true,\n \"data-testid\": dataTestId,\n}: ModalProps) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const { isClosing, handleClose } = useIsClosing({\n onClose,\n overlayRef,\n });\n const isMobile = useBreakpoint(BREAKPOINTS.MEDIUM);\n\n if (!isOpen) return null;\n\n const modalContent = (\n <ModalContent\n isOpen={isOpen}\n title={title}\n subtitle={subtitle}\n body={body}\n onClose={handleClose}\n isClosing={isClosing}\n data-testid={dataTestId}\n >\n {children}\n </ModalContent>\n );\n\n return isOverlay || isMobile ? (\n <ScreenOverlay fadeIn ref={overlayRef} onClose={handleClose}>\n {modalContent}\n </ScreenOverlay>\n ) : (\n modalContent\n );\n};\n\nexport const Modal = Object.assign(ModalWrapper, {\n /**\n * Renders a h2 styled title\n * */\n Title: ModalTitle,\n /**\n * Renders a h3 styled subtitle\n * */\n Subtitle: ModalSubtitle,\n /**\n * Renders a div styled body\n * */\n Body: ModalBody,\n /**\n * Renders a Proton Button action\n * - @prop buttonProps {@link ButtonProps}\n * */\n Action: ModalAction,\n /**\n * Renders a group of Proton Buttons\n * */\n Actions: ModalActions,\n});\n"],"names":["ModalTitle","children","jsx","ModalSubtitle","ModalBody","ModalAction","buttonProps","Button","ModalActions","FocusScope","ModalContent","title","subtitle","body","onClose","isClosing","dataTestId","ref","useRef","state","useOverlayTriggerState","modalProps","useModalOverlay","dialogProps","useDialog","usePreventScroll","closeButtonRef","closeButtonProps","useButton","jsxs","csx","mergeProps","ModalWrapper","isOpen","isOverlay","overlayRef","handleClose","useIsClosing","isMobile","useBreakpoint","BREAKPOINTS","modalContent","ScreenOverlay","Modal"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../node_modules/react/jsx-runtime.cjs.js"),r=require("radix-ui");;/* empty css */const j=require("../ThemeProvider.cjs.js"),v=require("../../utils/string.cjs.js");function s({trigger:o,children:t,open:i,defaultOpen:n,onOpenChange:a,side:p="top",align:x="center",arrow:l=!1,constrainWidth:c=!1,"data-testid":u}){const{className:d,style:m}=j.useTheme();return e.jsxRuntimeExports.jsxs(r.Popover.Root,{open:i,defaultOpen:n,onOpenChange:a,children:[e.jsxRuntimeExports.jsx(r.Popover.Trigger,{asChild:!0,children:e.jsxRuntimeExports.jsx("div",{children:o})}),e.jsxRuntimeExports.jsx(r.Popover.Portal,{children:e.jsxRuntimeExports.jsxs(r.Popover.Content,{side:p,sideOffset:2,align:x,style:m,className:v.csx("proton-Popover",c&&"proton-Popover__constrained",d),"data-testid":u,children:[l&&e.jsxRuntimeExports.jsx(r.Popover.Arrow,{className:"arrow"}),t]})})]})}s.displayName="Popover";exports.Popover=s;
2
+ //# sourceMappingURL=Popover.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popover.cjs.js","sources":["../../../src/components/Popover/Popover.tsx"],"sourcesContent":["\"use client\";\n\nimport { Popover as RadixPopover } from \"radix-ui\";\nimport React, { CSSProperties } from \"react\";\nimport \"./Popover.css\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { csx } from \"../../utils/string\";\n\nexport type PopoverSide = \"top\" | \"right\" | \"bottom\" | \"left\";\nexport type PopoverAlign = \"start\" | \"center\" | \"end\";\n\nexport interface PopoverProps {\n /**\n * The trigger element for the popover.\n */\n trigger: React.ReactNode;\n /**\n * The content of the popover.\n */\n children: React.ReactNode;\n /**\n * Constrain the width of the popover to the width of the trigger.\n */\n constrainWidth?: boolean;\n /**\n * Control open state (controlled mode).\n */\n open?: boolean;\n /**\n * Default open state (uncontrolled mode).\n */\n defaultOpen?: boolean;\n /**\n * Callback when open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Popover side placement\n * {@link PopoverSide}\n */\n side?: PopoverSide;\n /**\n * Popover alignment\n * {@link PopoverAlign}\n */\n align?: PopoverAlign;\n /**\n * Show an arrow pointing to the trigger.\n */\n arrow?: boolean;\n /**\n * Test id for the popover content.\n */\n \"data-testid\"?: string;\n}\n\n/**\n * A popover component that handles positioning and supports controlled and uncontrolled modes.\n *\n * A popover displays interactive content in context with a trigger element.\n * A tooltip displays a description of an element on hover or focus.\n *\n * API:\n * - {@link PopoverProps}\n */\nexport function Popover({\n trigger,\n children,\n open,\n defaultOpen,\n onOpenChange,\n side = \"top\",\n align = \"center\",\n arrow = false,\n constrainWidth = false,\n \"data-testid\": testId,\n}: PopoverProps) {\n const { className: themeClass, style: themeStyle } = useTheme();\n\n return (\n <RadixPopover.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <RadixPopover.Trigger asChild>\n <div>{trigger}</div>\n </RadixPopover.Trigger>\n\n <RadixPopover.Portal>\n <RadixPopover.Content\n side={side}\n sideOffset={2}\n align={align}\n style={themeStyle as CSSProperties}\n className={csx(\n \"proton-Popover\",\n constrainWidth && \"proton-Popover__constrained\",\n themeClass\n )}\n data-testid={testId}\n >\n {arrow && <RadixPopover.Arrow className=\"arrow\" />}\n {children}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n </RadixPopover.Root>\n );\n}\n\nPopover.displayName = \"Popover\";\n"],"names":["Popover","trigger","children","open","defaultOpen","onOpenChange","side","align","arrow","constrainWidth","testId","themeClass","themeStyle","useTheme","jsxs","RadixPopover","jsx","csx"],"mappings":"uRAiEO,SAASA,EAAQ,CACtB,QAAAC,EACA,SAAAC,EACA,KAAAC,EACA,YAAAC,EACA,aAAAC,EACA,KAAAC,EAAO,MACP,MAAAC,EAAQ,SACR,MAAAC,EAAQ,GACR,eAAAC,EAAiB,GACjB,cAAeC,CACjB,EAAiB,CACf,KAAM,CAAE,UAAWC,EAAY,MAAOC,CAAA,EAAeC,EAAAA,WAGnD,OAAAC,EAAA,kBAAA,KAACC,EAAAA,QAAa,KAAb,CACC,KAAAZ,EACA,YAAAC,EACA,aAAAC,EAEA,SAAA,CAACW,EAAAA,kBAAAA,IAAAD,EAAAA,QAAa,QAAb,CAAqB,QAAO,GAC3B,SAACC,EAAA,kBAAA,IAAA,MAAA,CAAK,WAAQ,CAChB,CAAA,EAEAA,EAAAA,kBAAAA,IAACD,EAAa,QAAA,OAAb,CACC,SAAAD,EAAA,kBAAA,KAACC,EAAAA,QAAa,QAAb,CACC,KAAAT,EACA,WAAY,EACZ,MAAAC,EACA,MAAOK,EACP,UAAWK,EAAA,IACT,iBACAR,GAAkB,8BAClBE,CACF,EACA,cAAaD,EAEZ,SAAA,CAAAF,GAAUQ,EAAA,kBAAA,IAAAD,EAAA,QAAa,MAAb,CAAmB,UAAU,QAAQ,EAC/Cb,CAAA,CAAA,CAAA,EAEL,CAAA,CAAA,CAAA,CAGN,CAEAF,EAAQ,YAAc"}
@@ -0,0 +1,54 @@
1
+ import { j as e } from "../../node_modules/react/jsx-runtime.es.js";
2
+ import { Popover as o } from "radix-ui";
3
+ /* empty css */
4
+ import { useTheme as f } from "../ThemeProvider.es.js";
5
+ import { csx as h } from "../../utils/string.es.js";
6
+ function j({
7
+ trigger: r,
8
+ children: s,
9
+ open: t,
10
+ defaultOpen: a,
11
+ onOpenChange: i,
12
+ side: l = "top",
13
+ align: m = "center",
14
+ arrow: n = !1,
15
+ constrainWidth: p = !1,
16
+ "data-testid": d
17
+ }) {
18
+ const { className: c, style: x } = f();
19
+ return /* @__PURE__ */ e.jsxs(
20
+ o.Root,
21
+ {
22
+ open: t,
23
+ defaultOpen: a,
24
+ onOpenChange: i,
25
+ children: [
26
+ /* @__PURE__ */ e.jsx(o.Trigger, { asChild: !0, children: /* @__PURE__ */ e.jsx("div", { children: r }) }),
27
+ /* @__PURE__ */ e.jsx(o.Portal, { children: /* @__PURE__ */ e.jsxs(
28
+ o.Content,
29
+ {
30
+ side: l,
31
+ sideOffset: 2,
32
+ align: m,
33
+ style: x,
34
+ className: h(
35
+ "proton-Popover",
36
+ p && "proton-Popover__constrained",
37
+ c
38
+ ),
39
+ "data-testid": d,
40
+ children: [
41
+ n && /* @__PURE__ */ e.jsx(o.Arrow, { className: "arrow" }),
42
+ s
43
+ ]
44
+ }
45
+ ) })
46
+ ]
47
+ }
48
+ );
49
+ }
50
+ j.displayName = "Popover";
51
+ export {
52
+ j as Popover
53
+ };
54
+ //# sourceMappingURL=Popover.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popover.es.js","sources":["../../../src/components/Popover/Popover.tsx"],"sourcesContent":["\"use client\";\n\nimport { Popover as RadixPopover } from \"radix-ui\";\nimport React, { CSSProperties } from \"react\";\nimport \"./Popover.css\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { csx } from \"../../utils/string\";\n\nexport type PopoverSide = \"top\" | \"right\" | \"bottom\" | \"left\";\nexport type PopoverAlign = \"start\" | \"center\" | \"end\";\n\nexport interface PopoverProps {\n /**\n * The trigger element for the popover.\n */\n trigger: React.ReactNode;\n /**\n * The content of the popover.\n */\n children: React.ReactNode;\n /**\n * Constrain the width of the popover to the width of the trigger.\n */\n constrainWidth?: boolean;\n /**\n * Control open state (controlled mode).\n */\n open?: boolean;\n /**\n * Default open state (uncontrolled mode).\n */\n defaultOpen?: boolean;\n /**\n * Callback when open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Popover side placement\n * {@link PopoverSide}\n */\n side?: PopoverSide;\n /**\n * Popover alignment\n * {@link PopoverAlign}\n */\n align?: PopoverAlign;\n /**\n * Show an arrow pointing to the trigger.\n */\n arrow?: boolean;\n /**\n * Test id for the popover content.\n */\n \"data-testid\"?: string;\n}\n\n/**\n * A popover component that handles positioning and supports controlled and uncontrolled modes.\n *\n * A popover displays interactive content in context with a trigger element.\n * A tooltip displays a description of an element on hover or focus.\n *\n * API:\n * - {@link PopoverProps}\n */\nexport function Popover({\n trigger,\n children,\n open,\n defaultOpen,\n onOpenChange,\n side = \"top\",\n align = \"center\",\n arrow = false,\n constrainWidth = false,\n \"data-testid\": testId,\n}: PopoverProps) {\n const { className: themeClass, style: themeStyle } = useTheme();\n\n return (\n <RadixPopover.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <RadixPopover.Trigger asChild>\n <div>{trigger}</div>\n </RadixPopover.Trigger>\n\n <RadixPopover.Portal>\n <RadixPopover.Content\n side={side}\n sideOffset={2}\n align={align}\n style={themeStyle as CSSProperties}\n className={csx(\n \"proton-Popover\",\n constrainWidth && \"proton-Popover__constrained\",\n themeClass\n )}\n data-testid={testId}\n >\n {arrow && <RadixPopover.Arrow className=\"arrow\" />}\n {children}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n </RadixPopover.Root>\n );\n}\n\nPopover.displayName = \"Popover\";\n"],"names":["Popover","trigger","children","open","defaultOpen","onOpenChange","side","align","arrow","constrainWidth","testId","themeClass","themeStyle","useTheme","jsxs","RadixPopover","jsx","csx"],"mappings":";;;;;AAiEO,SAASA,EAAQ;AAAA,EACtB,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,gBAAAC,IAAiB;AAAA,EACjB,eAAeC;AACjB,GAAiB;AACf,QAAM,EAAE,WAAWC,GAAY,OAAOC,EAAA,IAAeC;AAGnD,SAAAC,gBAAAA,EAAA;AAAA,IAACC,EAAa;AAAA,IAAb;AAAA,MACC,MAAAZ;AAAA,MACA,aAAAC;AAAA,MACA,cAAAC;AAAA,MAEA,UAAA;AAAA,QAACW,gBAAAA,EAAAA,IAAAD,EAAa,SAAb,EAAqB,SAAO,IAC3B,UAACC,gBAAAA,EAAA,IAAA,OAAA,EAAK,aAAQ,EAChB,CAAA;AAAA,QAEAA,gBAAAA,EAAAA,IAACD,EAAa,QAAb,EACC,UAAAD,gBAAAA,EAAA;AAAA,UAACC,EAAa;AAAA,UAAb;AAAA,YACC,MAAAT;AAAA,YACA,YAAY;AAAA,YACZ,OAAAC;AAAA,YACA,OAAOK;AAAA,YACP,WAAWK;AAAA,cACT;AAAA,cACAR,KAAkB;AAAA,cAClBE;AAAA,YACF;AAAA,YACA,eAAaD;AAAA,YAEZ,UAAA;AAAA,cAAAF,KAAUQ,gBAAAA,EAAA,IAAAD,EAAa,OAAb,EAAmB,WAAU,SAAQ;AAAA,cAC/Cb;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,GAEL;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEAF,EAAQ,cAAc;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../node_modules/react/jsx-runtime.cjs.js"),n=require("react");;/* empty css */const m=require("radix-ui"),a=require("../ThemeProvider.cjs.js"),y=require("../../utils/string.cjs.js"),i=n.forwardRef(({fadeIn:o=!1,onClose:e,children:c},s)=>{const{theme:d,palette:u}=a.useTheme();return n.useEffect(()=>{if(!e)return;const r=l=>{l.key==="Escape"&&e()};return document.addEventListener("keydown",r),()=>{document.removeEventListener("keydown",r)}},[e]),t.jsxRuntimeExports.jsx(m.Portal.Root,{children:t.jsxRuntimeExports.jsx(a.ThemeProvider,{theme:d,palette:u,children:t.jsxRuntimeExports.jsx("div",{ref:s,id:"background","aria-label":"Background overlay",role:"dialog","aria-modal":"true","data-testid":"screen-overlay",className:y.csx("proton-ScreenOverlay__background","proton-ScreenOverlay__z-index",o&&"proton-ScreenOverlay__fade-in"),onClick:r=>{e&&r.target===r.currentTarget&&e()},children:c})})})});i.displayName="ProtonUIScreenOverlay";exports.ScreenOverlay=i;
2
+ //# sourceMappingURL=ScreenOverlay.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenOverlay.cjs.js","sources":["../../../src/components/ScreenOverlay/ScreenOverlay.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, useEffect } from \"react\";\nimport \"./ScreenOverlay.css\";\nimport { csx } from \"../../utils\";\nimport { Portal } from \"radix-ui\";\nimport { useTheme, ThemeProvider } from \"../ThemeProvider\";\n\ninterface ScreenOverlayProps {\n /**\n * Children to render inside the overlay.\n */\n children?: React.ReactNode;\n\n /**\n * Whether to fade in the overlay.\n */\n fadeIn?: boolean;\n\n /**\n * Callback function to handle events (click or ESC key).\n */\n onClose?: () => void;\n\n /**\n * Ref to the overlay element.\n */\n ref?: React.RefObject<HTMLDivElement>;\n}\n\n/**\n * Base Overlay component for creating modal-like backgrounds.\n *\n * API:\n * - {@link ScreenOverlayProps}\n */\nexport const ScreenOverlay = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n ({ fadeIn = false, onClose, children }, ref) => {\n const { theme, palette } = useTheme();\n\n useEffect(() => {\n if (!onClose) return;\n\n const handleEscKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") onClose();\n };\n\n document.addEventListener(\"keydown\", handleEscKey);\n return () => {\n document.removeEventListener(\"keydown\", handleEscKey);\n };\n }, [onClose]);\n\n return (\n <Portal.Root>\n <ThemeProvider theme={theme} palette={palette}>\n <div\n ref={ref}\n id=\"background\"\n aria-label=\"Background overlay\"\n role=\"dialog\"\n aria-modal=\"true\"\n data-testid=\"screen-overlay\"\n className={csx(\n \"proton-ScreenOverlay__background\",\n \"proton-ScreenOverlay__z-index\",\n fadeIn && \"proton-ScreenOverlay__fade-in\"\n )}\n onClick={(event: React.MouseEvent) => {\n if (!onClose) return;\n\n // Only trigger onClose if the click was directly on the background element\n if (event.target === event.currentTarget) {\n onClose();\n }\n }}\n >\n {children}\n </div>\n </ThemeProvider>\n </Portal.Root>\n );\n }\n);\n\nScreenOverlay.displayName = \"ProtonUIScreenOverlay\";\n"],"names":["ScreenOverlay","forwardRef","fadeIn","onClose","children","ref","theme","palette","useTheme","useEffect","handleEscKey","event","Portal","jsx","ThemeProvider","csx"],"mappings":"gTAoCaA,EAAgBC,EAAA,WAC3B,CAAC,CAAE,OAAAC,EAAS,GAAO,QAAAC,EAAS,SAAAC,CAAA,EAAYC,IAAQ,CAC9C,KAAM,CAAE,MAAAC,EAAO,QAAAC,CAAQ,EAAIC,EAAS,SAAA,EAEpCC,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACN,EAAS,OAER,MAAAO,EAAgBC,GAAyB,CACzCA,EAAM,MAAQ,UAAkBR,EAAA,CAAA,EAG7B,gBAAA,iBAAiB,UAAWO,CAAY,EAC1C,IAAM,CACF,SAAA,oBAAoB,UAAWA,CAAY,CAAA,CACtD,EACC,CAACP,CAAO,CAAC,0BAGTS,EAAAA,OAAO,KAAP,CACC,SAACC,wBAAAC,EAAAA,cAAA,CAAc,MAAAR,EAAc,QAAAC,EAC3B,SAAAM,EAAA,kBAAA,IAAC,MAAA,CACC,IAAAR,EACA,GAAG,aACH,aAAW,qBACX,KAAK,SACL,aAAW,OACX,cAAY,iBACZ,UAAWU,EAAA,IACT,mCACA,gCACAb,GAAU,+BACZ,EACA,QAAUS,GAA4B,CAC/BR,GAGDQ,EAAM,SAAWA,EAAM,eACjBR,GAEZ,EAEC,SAAAC,CAAA,CAAA,CAEL,CAAA,CACF,CAAA,CAEJ,CACF,EAEAJ,EAAc,YAAc"}
@@ -0,0 +1,44 @@
1
+ import { j as t } from "../../node_modules/react/jsx-runtime.es.js";
2
+ import { forwardRef as m, useEffect as s } from "react";
3
+ /* empty css */
4
+ import { Portal as l } from "radix-ui";
5
+ import { useTheme as f, ThemeProvider as p } from "../ThemeProvider.es.js";
6
+ import { csx as u } from "../../utils/string.es.js";
7
+ const y = m(
8
+ ({ fadeIn: o = !1, onClose: e, children: a }, n) => {
9
+ const { theme: i, palette: c } = f();
10
+ return s(() => {
11
+ if (!e) return;
12
+ const r = (d) => {
13
+ d.key === "Escape" && e();
14
+ };
15
+ return document.addEventListener("keydown", r), () => {
16
+ document.removeEventListener("keydown", r);
17
+ };
18
+ }, [e]), /* @__PURE__ */ t.jsx(l.Root, { children: /* @__PURE__ */ t.jsx(p, { theme: i, palette: c, children: /* @__PURE__ */ t.jsx(
19
+ "div",
20
+ {
21
+ ref: n,
22
+ id: "background",
23
+ "aria-label": "Background overlay",
24
+ role: "dialog",
25
+ "aria-modal": "true",
26
+ "data-testid": "screen-overlay",
27
+ className: u(
28
+ "proton-ScreenOverlay__background",
29
+ "proton-ScreenOverlay__z-index",
30
+ o && "proton-ScreenOverlay__fade-in"
31
+ ),
32
+ onClick: (r) => {
33
+ e && r.target === r.currentTarget && e();
34
+ },
35
+ children: a
36
+ }
37
+ ) }) });
38
+ }
39
+ );
40
+ y.displayName = "ProtonUIScreenOverlay";
41
+ export {
42
+ y as ScreenOverlay
43
+ };
44
+ //# sourceMappingURL=ScreenOverlay.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenOverlay.es.js","sources":["../../../src/components/ScreenOverlay/ScreenOverlay.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, useEffect } from \"react\";\nimport \"./ScreenOverlay.css\";\nimport { csx } from \"../../utils\";\nimport { Portal } from \"radix-ui\";\nimport { useTheme, ThemeProvider } from \"../ThemeProvider\";\n\ninterface ScreenOverlayProps {\n /**\n * Children to render inside the overlay.\n */\n children?: React.ReactNode;\n\n /**\n * Whether to fade in the overlay.\n */\n fadeIn?: boolean;\n\n /**\n * Callback function to handle events (click or ESC key).\n */\n onClose?: () => void;\n\n /**\n * Ref to the overlay element.\n */\n ref?: React.RefObject<HTMLDivElement>;\n}\n\n/**\n * Base Overlay component for creating modal-like backgrounds.\n *\n * API:\n * - {@link ScreenOverlayProps}\n */\nexport const ScreenOverlay = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n ({ fadeIn = false, onClose, children }, ref) => {\n const { theme, palette } = useTheme();\n\n useEffect(() => {\n if (!onClose) return;\n\n const handleEscKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") onClose();\n };\n\n document.addEventListener(\"keydown\", handleEscKey);\n return () => {\n document.removeEventListener(\"keydown\", handleEscKey);\n };\n }, [onClose]);\n\n return (\n <Portal.Root>\n <ThemeProvider theme={theme} palette={palette}>\n <div\n ref={ref}\n id=\"background\"\n aria-label=\"Background overlay\"\n role=\"dialog\"\n aria-modal=\"true\"\n data-testid=\"screen-overlay\"\n className={csx(\n \"proton-ScreenOverlay__background\",\n \"proton-ScreenOverlay__z-index\",\n fadeIn && \"proton-ScreenOverlay__fade-in\"\n )}\n onClick={(event: React.MouseEvent) => {\n if (!onClose) return;\n\n // Only trigger onClose if the click was directly on the background element\n if (event.target === event.currentTarget) {\n onClose();\n }\n }}\n >\n {children}\n </div>\n </ThemeProvider>\n </Portal.Root>\n );\n }\n);\n\nScreenOverlay.displayName = \"ProtonUIScreenOverlay\";\n"],"names":["ScreenOverlay","forwardRef","fadeIn","onClose","children","ref","theme","palette","useTheme","useEffect","handleEscKey","event","Portal","jsx","ThemeProvider","csx"],"mappings":";;;;;;AAoCO,MAAMA,IAAgBC;AAAA,EAC3B,CAAC,EAAE,QAAAC,IAAS,IAAO,SAAAC,GAAS,UAAAC,EAAA,GAAYC,MAAQ;AAC9C,UAAM,EAAE,OAAAC,GAAO,SAAAC,EAAQ,IAAIC,EAAS;AAEpC,WAAAC,EAAU,MAAM;AACd,UAAI,CAACN,EAAS;AAER,YAAAO,IAAe,CAACC,MAAyB;AACzC,QAAAA,EAAM,QAAQ,YAAkBR,EAAA;AAAA,MAAA;AAG7B,sBAAA,iBAAiB,WAAWO,CAAY,GAC1C,MAAM;AACF,iBAAA,oBAAoB,WAAWA,CAAY;AAAA,MAAA;AAAA,IACtD,GACC,CAACP,CAAO,CAAC,yBAGTS,EAAO,MAAP,EACC,UAACC,gBAAAA,MAAAC,GAAA,EAAc,OAAAR,GAAc,SAAAC,GAC3B,UAAAM,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAR;AAAA,QACA,IAAG;AAAA,QACH,cAAW;AAAA,QACX,MAAK;AAAA,QACL,cAAW;AAAA,QACX,eAAY;AAAA,QACZ,WAAWU;AAAA,UACT;AAAA,UACA;AAAA,UACAb,KAAU;AAAA,QACZ;AAAA,QACA,SAAS,CAACS,MAA4B;AACpC,UAAKR,KAGDQ,EAAM,WAAWA,EAAM,iBACjBR;QAEZ;AAAA,QAEC,UAAAC;AAAA,MAAA;AAAA,IAAA,EAEL,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEAJ,EAAc,cAAc;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../node_modules/react/jsx-runtime.cjs.js"),a=require("react"),n=require("radix-ui"),T=require("../../hooks/useBreakpoint.cjs.js"),P=require("../ActionMenu/ActionMenu.cjs.js");;/* empty css */;/* empty css */const A=require("../ThemeProvider.cjs.js"),m=require("../../utils/string.cjs.js"),C=require("../../constants/breakpoint.cjs.js"),E=a.forwardRef(({disabled:r,isOpen:i,children:o,onClick:l,isRounded:s,...x},h)=>e.jsxRuntimeExports.jsx("button",{...x,ref:h,disabled:r,onClick:l,className:m.csx("proton-Select__trigger",r&&"proton-Select__trigger--disabled",!i&&"proton-Select__trigger--closed",i&&"proton-Select__trigger--opened",s&&"proton-Select__trigger--rounded"),children:o}));E.displayName="ProtonUISelectButton";function k({label:r,name:i,isDisabled:o,disabledKeys:l,selectedKey:s,onSelectionChange:x,defaultSelectedKey:h,onOpen:S,onClose:R,items:_,isRounded:g=!1,"data-testid":f}){const[c,p]=a.useState(!1),[I,v]=a.useState(s||h||""),{className:M,style:q}=A.useTheme(),w=T.useBreakpoint(C.BREAKPOINTS.MEDIUM),N=a.useRef(null),u=a.useRef(null),d=s!==void 0?s:I,j=_.find(t=>t.key===d),b=t=>{s===void 0&&v(t),x==null||x(t),u.current&&(u.current.value=t,u.current.dispatchEvent(new Event("change",{bubbles:!0})))},y=t=>{p(t),t?S==null||S():R==null||R()};a.useEffect(()=>{s!==void 0&&v(s)},[s]);const B=_.map(t=>({key:t.key,label:t.label,to:t.to,onAction:()=>{b(t.key),p(!1)}}));return w?e.jsxRuntimeExports.jsxs("div",{className:"proton-Select","aria-label":r||i,"aria-disabled":o,children:[r&&e.jsxRuntimeExports.jsx("div",{className:"proton-Select__label","data-testid":"select-label",children:r}),e.jsxRuntimeExports.jsx("input",{ref:u,type:"hidden",name:i,value:d,"data-testid":"hidden-select-container"}),e.jsxRuntimeExports.jsxs(E,{isOpen:c,isRounded:g,ref:N,disabled:o,"data-testid":f,onClick:()=>p(!0),children:[e.jsxRuntimeExports.jsx("div",{className:"proton-Select__value",children:j?j.label:"Select an option"}),e.jsxRuntimeExports.jsx("div",{className:m.csx("proton-Select__trigger_icon",c&&"proton-Select__trigger_icon--flipped"),"aria-hidden":"true",children:e.jsxRuntimeExports.jsxs("svg",{id:"caret-down",viewBox:"0 0 512 512",children:[e.jsxRuntimeExports.jsx("title",{children:c?"caret down":"caret up"}),e.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7L86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"})]})})]}),e.jsxRuntimeExports.jsx(P.ActionMenu,{isOpen:c,onClose:()=>p(!1),actions:B,selectedKeys:[d],disabledKeys:l})]}):e.jsxRuntimeExports.jsxs("div",{className:"proton-Select","aria-label":r||i,"aria-disabled":o,children:[r&&e.jsxRuntimeExports.jsx("div",{className:"proton-Select__label","data-testid":"select-label",children:r}),e.jsxRuntimeExports.jsx("input",{ref:u,type:"hidden",name:i,value:d,"data-testid":"hidden-select-container"}),e.jsxRuntimeExports.jsxs(n.Select.Root,{value:d,onValueChange:b,onOpenChange:y,disabled:o,children:[e.jsxRuntimeExports.jsx(n.Select.Trigger,{asChild:!0,children:e.jsxRuntimeExports.jsxs(E,{isRounded:g,isOpen:c,ref:N,disabled:o,"data-testid":f,children:[e.jsxRuntimeExports.jsx(n.Select.Value,{className:"proton-Select__value",placeholder:"Select an option",children:j?j.label:"Select an option"}),e.jsxRuntimeExports.jsx(n.Select.Icon,{asChild:!0,children:e.jsxRuntimeExports.jsx("div",{className:m.csx("proton-Select__trigger_icon",c&&"proton-Select__trigger_icon--flipped"),"aria-hidden":"true",children:e.jsxRuntimeExports.jsxs("svg",{id:"caret-down",viewBox:"0 0 512 512",children:[e.jsxRuntimeExports.jsx("title",{children:c?"caret down":"caret up"}),e.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7L86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"})]})})})]})}),e.jsxRuntimeExports.jsx(n.Select.Portal,{children:e.jsxRuntimeExports.jsx(n.Select.Content,{className:m.csx("proton-Menu","proton-MenuTrigger__menu",M),style:q,position:"popper",children:e.jsxRuntimeExports.jsx(n.Select.Viewport,{children:_.map(t=>e.jsxRuntimeExports.jsx(n.Select.Item,{value:t.key,disabled:l==null?void 0:l.includes(t.key),className:"proton-Menu__item",children:e.jsxRuntimeExports.jsx(n.Select.ItemText,{children:t.label})},t.key))})})})]})]})}k.displayName="ProtonUISelect";exports.Select=k;
2
+ //# sourceMappingURL=Select.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.cjs.js","sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n forwardRef,\n ReactNode,\n RefObject,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { Select as RadixSelect } from \"radix-ui\";\n\nimport { BREAKPOINTS } from \"../../constants\";\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\nimport { csx } from \"../../utils\";\nimport { ActionMenu, ActionMenuAction } from \"../ActionMenu/ActionMenu\";\n\nimport \"./Select.css\";\nimport \"../Menu/Menu.css\";\nimport { useTheme } from \"../ThemeProvider\";\n\ninterface SelectButtonProps {\n disabled?: boolean;\n isOpen?: boolean;\n children?: ReactNode;\n onClick?: () => void;\n isRounded?: boolean;\n}\n\nconst SelectButton = forwardRef<HTMLButtonElement, SelectButtonProps>(\n (\n { disabled, isOpen, children, onClick, isRounded, ...props },\n ref: RefObject<HTMLButtonElement>\n ) => {\n return (\n <button\n {...props}\n ref={ref}\n disabled={disabled}\n onClick={onClick}\n className={csx(\n \"proton-Select__trigger\",\n disabled && \"proton-Select__trigger--disabled\",\n !isOpen && \"proton-Select__trigger--closed\",\n isOpen && \"proton-Select__trigger--opened\",\n isRounded && \"proton-Select__trigger--rounded\"\n )}\n >\n {children}\n </button>\n );\n }\n);\nSelectButton.displayName = \"ProtonUISelectButton\";\n\nexport interface SelectItem {\n /** The label to display for the item */\n label: string;\n\n /** The key of the item */\n key: string;\n\n /** The URL to navigate to when the item is clicked, turns item into an a tag */\n to?: string;\n}\n\nexport interface SelectProps {\n /** Array of keys that should be disabled\n * @example [\"Thing 1\", \"Thing 2\"]\n */\n disabledKeys?: string[];\n\n /** The key of the default selected item */\n defaultSelectedKey?: string;\n\n /** Test ID for the select */\n \"data-testid\"?: string;\n\n /** Whether the select is disabled */\n isDisabled?: boolean;\n\n /** Array of items to display\n * @example [{ key: \"thing-1\", label: \"Thing 1\" }, { key: \"thing-2\", label: \"Thing 2\" }]\n * @see {@link SelectItem}\n */\n items: SelectItem[];\n\n /** Whether the select button is rounded\n * @default false\n */\n isRounded?: boolean;\n\n /** Label to display above the select\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label#text\n */\n label?: string;\n\n /** The name of the select field */\n name: string;\n\n /** Callback fired when the menu closes */\n onClose?: () => void;\n\n /** Callback fired when the menu opens */\n onOpen?: () => void;\n\n /** Callback fired when selection changes */\n onSelectionChange?: (key: string) => void;\n\n /** Currently selected key */\n selectedKey?: string;\n}\n\n/**\n * A dropdown select menu that opens a popover on desktop and an action menu on mobile.\n * Supports controlled and uncontrolled modes.\n *\n * API:\n * - {@link SelectProps}\n */\nexport function Select({\n label,\n name,\n isDisabled,\n disabledKeys,\n selectedKey,\n onSelectionChange,\n defaultSelectedKey,\n onOpen, \n onClose,\n items,\n isRounded = false,\n \"data-testid\": testId,\n}: SelectProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [internalSelectedKey, setInternalSelectedKey] = useState(\n selectedKey || defaultSelectedKey || \"\"\n );\n const { className: themeClass, style: themeStyle } = useTheme();\n const isMobile = useBreakpoint(BREAKPOINTS.MEDIUM);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const hiddenInputRef = useRef<HTMLInputElement>(null);\n\n // Handle controlled vs uncontrolled state\n const currentSelectedKey =\n selectedKey !== undefined ? selectedKey : internalSelectedKey;\n const selectedItem = items.find((item) => item.key === currentSelectedKey);\n\n const handleValueChange = (value: string) => {\n if (selectedKey === undefined) {\n setInternalSelectedKey(value);\n }\n onSelectionChange?.(value);\n\n // Update hidden input for form submission\n if (hiddenInputRef.current) {\n hiddenInputRef.current.value = value;\n hiddenInputRef.current.dispatchEvent(\n new Event(\"change\", { bubbles: true })\n );\n }\n };\n\n const handleOpenChange = (open: boolean) => {\n setIsOpen(open);\n if (open) {\n onOpen?.();\n } else {\n onClose?.();\n }\n };\n\n // Update internal state when controlled selectedKey changes\n useEffect(() => {\n if (selectedKey !== undefined) {\n setInternalSelectedKey(selectedKey);\n }\n }, [selectedKey]);\n\n const actionItems: ActionMenuAction[] = items.map((item) => ({\n key: item.key,\n label: item.label,\n to: item.to,\n onAction: () => {\n handleValueChange(item.key);\n setIsOpen(false);\n },\n }));\n\n if (isMobile) {\n return (\n <div\n className=\"proton-Select\"\n aria-label={label || name}\n aria-disabled={isDisabled}\n >\n {label && (\n <div className=\"proton-Select__label\" data-testid=\"select-label\">\n {label}\n </div>\n )}\n\n {/* Hidden input for form submission */}\n <input\n ref={hiddenInputRef}\n type=\"hidden\"\n name={name}\n value={currentSelectedKey}\n data-testid=\"hidden-select-container\"\n />\n\n <SelectButton\n isOpen={isOpen}\n isRounded={isRounded}\n ref={triggerRef}\n disabled={isDisabled}\n data-testid={testId}\n onClick={() => setIsOpen(true)}\n >\n <div className=\"proton-Select__value\">\n {selectedItem ? selectedItem.label : \"Select an option\"}\n </div>\n <div\n className={csx(\n \"proton-Select__trigger_icon\",\n isOpen && \"proton-Select__trigger_icon--flipped\"\n )}\n aria-hidden=\"true\"\n >\n <svg id=\"caret-down\" viewBox=\"0 0 512 512\">\n <title>{isOpen ? \"caret down\" : \"caret up\"}</title>\n <path\n fill=\"currentColor\"\n d=\"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7L86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"\n />\n </svg>\n </div>\n </SelectButton>\n\n <ActionMenu\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n actions={actionItems}\n selectedKeys={[currentSelectedKey]}\n disabledKeys={disabledKeys}\n />\n </div>\n );\n }\n\n return (\n <div\n className=\"proton-Select\"\n aria-label={label || name}\n aria-disabled={isDisabled}\n >\n {label && (\n <div className=\"proton-Select__label\" data-testid=\"select-label\">\n {label}\n </div>\n )}\n\n {/* Hidden input for form submission */}\n <input\n ref={hiddenInputRef}\n type=\"hidden\"\n name={name}\n value={currentSelectedKey}\n data-testid=\"hidden-select-container\"\n />\n\n <RadixSelect.Root\n value={currentSelectedKey}\n onValueChange={handleValueChange}\n onOpenChange={handleOpenChange}\n disabled={isDisabled}\n >\n <RadixSelect.Trigger asChild>\n <SelectButton\n isRounded={isRounded}\n isOpen={isOpen}\n ref={triggerRef}\n disabled={isDisabled}\n data-testid={testId}\n >\n <RadixSelect.Value\n className=\"proton-Select__value\"\n placeholder=\"Select an option\"\n >\n {selectedItem ? selectedItem.label : \"Select an option\"}\n </RadixSelect.Value>\n <RadixSelect.Icon asChild>\n <div\n className={csx(\n \"proton-Select__trigger_icon\",\n isOpen && \"proton-Select__trigger_icon--flipped\"\n )}\n aria-hidden=\"true\"\n >\n <svg id=\"caret-down\" viewBox=\"0 0 512 512\">\n <title>{isOpen ? \"caret down\" : \"caret up\"}</title>\n <path\n fill=\"currentColor\"\n d=\"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7L86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"\n />\n </svg>\n </div>\n </RadixSelect.Icon>\n </SelectButton>\n </RadixSelect.Trigger>\n\n <RadixSelect.Portal>\n <RadixSelect.Content\n className={csx(\n \"proton-Menu\",\n \"proton-MenuTrigger__menu\",\n themeClass\n )}\n style={themeStyle as React.CSSProperties}\n position=\"popper\"\n >\n <RadixSelect.Viewport>\n {items.map((item) => (\n <RadixSelect.Item\n key={item.key}\n value={item.key}\n disabled={disabledKeys?.includes(item.key)}\n className=\"proton-Menu__item\"\n >\n <RadixSelect.ItemText>{item.label}</RadixSelect.ItemText>\n </RadixSelect.Item>\n ))}\n </RadixSelect.Viewport>\n </RadixSelect.Content>\n </RadixSelect.Portal>\n </RadixSelect.Root>\n </div>\n );\n}\n\nSelect.displayName = \"ProtonUISelect\";\n"],"names":["SelectButton","forwardRef","disabled","isOpen","children","onClick","isRounded","props","ref","jsx","csx","Select","label","name","isDisabled","disabledKeys","selectedKey","onSelectionChange","defaultSelectedKey","onOpen","onClose","items","testId","setIsOpen","useState","internalSelectedKey","setInternalSelectedKey","themeClass","themeStyle","useTheme","isMobile","useBreakpoint","BREAKPOINTS","triggerRef","useRef","hiddenInputRef","currentSelectedKey","selectedItem","item","handleValueChange","value","handleOpenChange","open","useEffect","actionItems","jsxs","ActionMenu","RadixSelect"],"mappings":"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"}