@protonradio/proton-ui 0.11.10-beta.3 → 0.11.11

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 (613) hide show
  1. package/dist/components/ActionMenu/ActionMenu.cjs.js +1 -1
  2. package/dist/components/ActionMenu/ActionMenu.cjs.js.map +1 -1
  3. package/dist/components/ActionMenu/ActionMenu.es.js +253 -186
  4. package/dist/components/ActionMenu/ActionMenu.es.js.map +1 -1
  5. package/dist/components/ButtonWithSelect/ButtonWithSelect.cjs.js +1 -1
  6. package/dist/components/ButtonWithSelect/ButtonWithSelect.cjs.js.map +1 -1
  7. package/dist/components/ButtonWithSelect/ButtonWithSelect.es.js +7 -8
  8. package/dist/components/ButtonWithSelect/ButtonWithSelect.es.js.map +1 -1
  9. package/dist/components/Input/BaseInput/Input.cjs.js +1 -1
  10. package/dist/components/Input/BaseInput/Input.cjs.js.map +1 -1
  11. package/dist/components/Input/BaseInput/Input.es.js +67 -63
  12. package/dist/components/Input/BaseInput/Input.es.js.map +1 -1
  13. package/dist/components/Input/SearchInput/SearchInput.cjs.js +1 -1
  14. package/dist/components/Input/SearchInput/SearchInput.cjs.js.map +1 -1
  15. package/dist/components/Input/SearchInput/SearchInput.es.js +1 -1
  16. package/dist/components/Input/SearchInput/SearchInput.es.js.map +1 -1
  17. package/dist/components/Menu/MenuTrigger.cjs.js +1 -1
  18. package/dist/components/Menu/MenuTrigger.cjs.js.map +1 -1
  19. package/dist/components/Menu/MenuTrigger.es.js +65 -73
  20. package/dist/components/Menu/MenuTrigger.es.js.map +1 -1
  21. package/dist/components/Menu/PopoverMenu.cjs.js +1 -1
  22. package/dist/components/Menu/PopoverMenu.cjs.js.map +1 -1
  23. package/dist/components/Menu/PopoverMenu.es.js +110 -104
  24. package/dist/components/Menu/PopoverMenu.es.js.map +1 -1
  25. package/dist/components/Popover/Popover.cjs.js +1 -1
  26. package/dist/components/Popover/Popover.cjs.js.map +1 -1
  27. package/dist/components/Popover/Popover.es.js +44 -64
  28. package/dist/components/Popover/Popover.es.js.map +1 -1
  29. package/dist/components/Select/Select.cjs.js +1 -1
  30. package/dist/components/Select/Select.cjs.js.map +1 -1
  31. package/dist/components/Select/Select.es.js +177 -122
  32. package/dist/components/Select/Select.es.js.map +1 -1
  33. package/dist/index.cjs.js +1 -1
  34. package/dist/index.d.ts +70 -81
  35. package/dist/index.es.js +37 -38
  36. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.cjs.js +1 -1
  37. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.cjs.js.map +1 -1
  38. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.es.js +12 -16
  39. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.es.js.map +1 -1
  40. package/dist/node_modules/@react-aria/overlays/dist/Overlay.cjs.js +1 -1
  41. package/dist/node_modules/@react-aria/overlays/dist/Overlay.cjs.js.map +1 -1
  42. package/dist/node_modules/@react-aria/overlays/dist/Overlay.es.js +8 -31
  43. package/dist/node_modules/@react-aria/overlays/dist/Overlay.es.js.map +1 -1
  44. package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.cjs.js +1 -1
  45. package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.cjs.js.map +1 -1
  46. package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.es.js +36 -44
  47. package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.es.js.map +1 -1
  48. package/dist/node_modules/react-aria-components/dist/utils.cjs.js +1 -1
  49. package/dist/node_modules/react-aria-components/dist/utils.cjs.js.map +1 -1
  50. package/dist/node_modules/react-aria-components/dist/utils.es.js +36 -48
  51. package/dist/node_modules/react-aria-components/dist/utils.es.js.map +1 -1
  52. package/dist/style.css +1 -1
  53. package/package.json +1 -1
  54. package/dist/_virtual/index.cjs.js +0 -2
  55. package/dist/_virtual/index.cjs.js.map +0 -1
  56. package/dist/_virtual/index.es.js +0 -5
  57. package/dist/_virtual/index.es.js.map +0 -1
  58. package/dist/_virtual/use-sync-external-store-shim.development.cjs.js +0 -2
  59. package/dist/_virtual/use-sync-external-store-shim.development.cjs.js.map +0 -1
  60. package/dist/_virtual/use-sync-external-store-shim.development.es.js +0 -5
  61. package/dist/_virtual/use-sync-external-store-shim.development.es.js.map +0 -1
  62. package/dist/_virtual/use-sync-external-store-shim.production.cjs.js +0 -2
  63. package/dist/_virtual/use-sync-external-store-shim.production.cjs.js.map +0 -1
  64. package/dist/_virtual/use-sync-external-store-shim.production.es.js +0 -5
  65. package/dist/_virtual/use-sync-external-store-shim.production.es.js.map +0 -1
  66. package/dist/components/ListBox/ListBox.cjs.js +0 -2
  67. package/dist/components/ListBox/ListBox.cjs.js.map +0 -1
  68. package/dist/components/ListBox/ListBox.es.js +0 -25
  69. package/dist/components/ListBox/ListBox.es.js.map +0 -1
  70. package/dist/node_modules/@internationalized/string/dist/LocalizedStringDictionary.cjs.js +0 -2
  71. package/dist/node_modules/@internationalized/string/dist/LocalizedStringDictionary.cjs.js.map +0 -1
  72. package/dist/node_modules/@internationalized/string/dist/LocalizedStringDictionary.es.js +0 -48
  73. package/dist/node_modules/@internationalized/string/dist/LocalizedStringDictionary.es.js.map +0 -1
  74. package/dist/node_modules/@internationalized/string/dist/LocalizedStringFormatter.cjs.js +0 -2
  75. package/dist/node_modules/@internationalized/string/dist/LocalizedStringFormatter.cjs.js.map +0 -1
  76. package/dist/node_modules/@internationalized/string/dist/LocalizedStringFormatter.es.js +0 -33
  77. package/dist/node_modules/@internationalized/string/dist/LocalizedStringFormatter.es.js.map +0 -1
  78. package/dist/node_modules/@react-aria/collections/dist/BaseCollection.cjs.js +0 -2
  79. package/dist/node_modules/@react-aria/collections/dist/BaseCollection.cjs.js.map +0 -1
  80. package/dist/node_modules/@react-aria/collections/dist/BaseCollection.es.js +0 -135
  81. package/dist/node_modules/@react-aria/collections/dist/BaseCollection.es.js.map +0 -1
  82. package/dist/node_modules/@react-aria/collections/dist/CollectionBuilder.cjs.js +0 -2
  83. package/dist/node_modules/@react-aria/collections/dist/CollectionBuilder.cjs.js.map +0 -1
  84. package/dist/node_modules/@react-aria/collections/dist/CollectionBuilder.es.js +0 -145
  85. package/dist/node_modules/@react-aria/collections/dist/CollectionBuilder.es.js.map +0 -1
  86. package/dist/node_modules/@react-aria/collections/dist/Document.cjs.js +0 -2
  87. package/dist/node_modules/@react-aria/collections/dist/Document.cjs.js.map +0 -1
  88. package/dist/node_modules/@react-aria/collections/dist/Document.es.js +0 -220
  89. package/dist/node_modules/@react-aria/collections/dist/Document.es.js.map +0 -1
  90. package/dist/node_modules/@react-aria/collections/dist/Hidden.cjs.js +0 -2
  91. package/dist/node_modules/@react-aria/collections/dist/Hidden.cjs.js.map +0 -1
  92. package/dist/node_modules/@react-aria/collections/dist/Hidden.es.js +0 -36
  93. package/dist/node_modules/@react-aria/collections/dist/Hidden.es.js.map +0 -1
  94. package/dist/node_modules/@react-aria/collections/dist/useCachedChildren.cjs.js +0 -2
  95. package/dist/node_modules/@react-aria/collections/dist/useCachedChildren.cjs.js.map +0 -1
  96. package/dist/node_modules/@react-aria/collections/dist/useCachedChildren.es.js +0 -37
  97. package/dist/node_modules/@react-aria/collections/dist/useCachedChildren.es.js.map +0 -1
  98. package/dist/node_modules/@react-aria/focus/dist/virtualFocus.cjs.js +0 -2
  99. package/dist/node_modules/@react-aria/focus/dist/virtualFocus.cjs.js.map +0 -1
  100. package/dist/node_modules/@react-aria/focus/dist/virtualFocus.es.js +0 -32
  101. package/dist/node_modules/@react-aria/focus/dist/virtualFocus.es.js.map +0 -1
  102. package/dist/node_modules/@react-aria/i18n/dist/useCollator.cjs.js +0 -2
  103. package/dist/node_modules/@react-aria/i18n/dist/useCollator.cjs.js.map +0 -1
  104. package/dist/node_modules/@react-aria/i18n/dist/useCollator.es.js +0 -12
  105. package/dist/node_modules/@react-aria/i18n/dist/useCollator.es.js.map +0 -1
  106. package/dist/node_modules/@react-aria/i18n/dist/useLocalizedStringFormatter.cjs.js +0 -2
  107. package/dist/node_modules/@react-aria/i18n/dist/useLocalizedStringFormatter.cjs.js.map +0 -1
  108. package/dist/node_modules/@react-aria/i18n/dist/useLocalizedStringFormatter.es.js +0 -24
  109. package/dist/node_modules/@react-aria/i18n/dist/useLocalizedStringFormatter.es.js.map +0 -1
  110. package/dist/node_modules/@react-aria/interactions/dist/PressResponder.cjs.js +0 -2
  111. package/dist/node_modules/@react-aria/interactions/dist/PressResponder.cjs.js.map +0 -1
  112. package/dist/node_modules/@react-aria/interactions/dist/PressResponder.es.js +0 -15
  113. package/dist/node_modules/@react-aria/interactions/dist/PressResponder.es.js.map +0 -1
  114. package/dist/node_modules/@react-aria/interactions/dist/useHover.cjs.js +0 -2
  115. package/dist/node_modules/@react-aria/interactions/dist/useHover.cjs.js.map +0 -1
  116. package/dist/node_modules/@react-aria/interactions/dist/useHover.es.js +0 -85
  117. package/dist/node_modules/@react-aria/interactions/dist/useHover.es.js.map +0 -1
  118. package/dist/node_modules/@react-aria/interactions/dist/useLongPress.cjs.js +0 -2
  119. package/dist/node_modules/@react-aria/interactions/dist/useLongPress.cjs.js.map +0 -1
  120. package/dist/node_modules/@react-aria/interactions/dist/useLongPress.es.js +0 -50
  121. package/dist/node_modules/@react-aria/interactions/dist/useLongPress.es.js.map +0 -1
  122. package/dist/node_modules/@react-aria/listbox/dist/useListBox.cjs.js +0 -2
  123. package/dist/node_modules/@react-aria/listbox/dist/useListBox.cjs.js.map +0 -1
  124. package/dist/node_modules/@react-aria/listbox/dist/useListBox.es.js +0 -52
  125. package/dist/node_modules/@react-aria/listbox/dist/useListBox.es.js.map +0 -1
  126. package/dist/node_modules/@react-aria/listbox/dist/useOption.cjs.js +0 -2
  127. package/dist/node_modules/@react-aria/listbox/dist/useOption.cjs.js.map +0 -1
  128. package/dist/node_modules/@react-aria/listbox/dist/useOption.es.js +0 -79
  129. package/dist/node_modules/@react-aria/listbox/dist/useOption.es.js.map +0 -1
  130. package/dist/node_modules/@react-aria/listbox/dist/utils.cjs.js +0 -2
  131. package/dist/node_modules/@react-aria/listbox/dist/utils.cjs.js.map +0 -1
  132. package/dist/node_modules/@react-aria/listbox/dist/utils.es.js +0 -14
  133. package/dist/node_modules/@react-aria/listbox/dist/utils.es.js.map +0 -1
  134. package/dist/node_modules/@react-aria/live-announcer/dist/LiveAnnouncer.cjs.js +0 -2
  135. package/dist/node_modules/@react-aria/live-announcer/dist/LiveAnnouncer.cjs.js.map +0 -1
  136. package/dist/node_modules/@react-aria/live-announcer/dist/LiveAnnouncer.es.js +0 -48
  137. package/dist/node_modules/@react-aria/live-announcer/dist/LiveAnnouncer.es.js.map +0 -1
  138. package/dist/node_modules/@react-aria/menu/dist/ar-AE.cjs.js +0 -2
  139. package/dist/node_modules/@react-aria/menu/dist/ar-AE.cjs.js.map +0 -1
  140. package/dist/node_modules/@react-aria/menu/dist/ar-AE.es.js +0 -8
  141. package/dist/node_modules/@react-aria/menu/dist/ar-AE.es.js.map +0 -1
  142. package/dist/node_modules/@react-aria/menu/dist/bg-BG.cjs.js +0 -2
  143. package/dist/node_modules/@react-aria/menu/dist/bg-BG.cjs.js.map +0 -1
  144. package/dist/node_modules/@react-aria/menu/dist/bg-BG.es.js +0 -8
  145. package/dist/node_modules/@react-aria/menu/dist/bg-BG.es.js.map +0 -1
  146. package/dist/node_modules/@react-aria/menu/dist/cs-CZ.cjs.js +0 -2
  147. package/dist/node_modules/@react-aria/menu/dist/cs-CZ.cjs.js.map +0 -1
  148. package/dist/node_modules/@react-aria/menu/dist/cs-CZ.es.js +0 -8
  149. package/dist/node_modules/@react-aria/menu/dist/cs-CZ.es.js.map +0 -1
  150. package/dist/node_modules/@react-aria/menu/dist/da-DK.cjs.js +0 -2
  151. package/dist/node_modules/@react-aria/menu/dist/da-DK.cjs.js.map +0 -1
  152. package/dist/node_modules/@react-aria/menu/dist/da-DK.es.js +0 -8
  153. package/dist/node_modules/@react-aria/menu/dist/da-DK.es.js.map +0 -1
  154. package/dist/node_modules/@react-aria/menu/dist/de-DE.cjs.js +0 -2
  155. package/dist/node_modules/@react-aria/menu/dist/de-DE.cjs.js.map +0 -1
  156. package/dist/node_modules/@react-aria/menu/dist/de-DE.es.js +0 -8
  157. package/dist/node_modules/@react-aria/menu/dist/de-DE.es.js.map +0 -1
  158. package/dist/node_modules/@react-aria/menu/dist/el-GR.cjs.js +0 -2
  159. package/dist/node_modules/@react-aria/menu/dist/el-GR.cjs.js.map +0 -1
  160. package/dist/node_modules/@react-aria/menu/dist/el-GR.es.js +0 -8
  161. package/dist/node_modules/@react-aria/menu/dist/el-GR.es.js.map +0 -1
  162. package/dist/node_modules/@react-aria/menu/dist/en-US.cjs.js +0 -2
  163. package/dist/node_modules/@react-aria/menu/dist/en-US.cjs.js.map +0 -1
  164. package/dist/node_modules/@react-aria/menu/dist/en-US.es.js +0 -8
  165. package/dist/node_modules/@react-aria/menu/dist/en-US.es.js.map +0 -1
  166. package/dist/node_modules/@react-aria/menu/dist/es-ES.cjs.js +0 -2
  167. package/dist/node_modules/@react-aria/menu/dist/es-ES.cjs.js.map +0 -1
  168. package/dist/node_modules/@react-aria/menu/dist/es-ES.es.js +0 -8
  169. package/dist/node_modules/@react-aria/menu/dist/es-ES.es.js.map +0 -1
  170. package/dist/node_modules/@react-aria/menu/dist/et-EE.cjs.js +0 -2
  171. package/dist/node_modules/@react-aria/menu/dist/et-EE.cjs.js.map +0 -1
  172. package/dist/node_modules/@react-aria/menu/dist/et-EE.es.js +0 -8
  173. package/dist/node_modules/@react-aria/menu/dist/et-EE.es.js.map +0 -1
  174. package/dist/node_modules/@react-aria/menu/dist/fi-FI.cjs.js +0 -2
  175. package/dist/node_modules/@react-aria/menu/dist/fi-FI.cjs.js.map +0 -1
  176. package/dist/node_modules/@react-aria/menu/dist/fi-FI.es.js +0 -8
  177. package/dist/node_modules/@react-aria/menu/dist/fi-FI.es.js.map +0 -1
  178. package/dist/node_modules/@react-aria/menu/dist/fr-FR.cjs.js +0 -2
  179. package/dist/node_modules/@react-aria/menu/dist/fr-FR.cjs.js.map +0 -1
  180. package/dist/node_modules/@react-aria/menu/dist/fr-FR.es.js +0 -8
  181. package/dist/node_modules/@react-aria/menu/dist/fr-FR.es.js.map +0 -1
  182. package/dist/node_modules/@react-aria/menu/dist/he-IL.cjs.js +0 -2
  183. package/dist/node_modules/@react-aria/menu/dist/he-IL.cjs.js.map +0 -1
  184. package/dist/node_modules/@react-aria/menu/dist/he-IL.es.js +0 -8
  185. package/dist/node_modules/@react-aria/menu/dist/he-IL.es.js.map +0 -1
  186. package/dist/node_modules/@react-aria/menu/dist/hr-HR.cjs.js +0 -2
  187. package/dist/node_modules/@react-aria/menu/dist/hr-HR.cjs.js.map +0 -1
  188. package/dist/node_modules/@react-aria/menu/dist/hr-HR.es.js +0 -8
  189. package/dist/node_modules/@react-aria/menu/dist/hr-HR.es.js.map +0 -1
  190. package/dist/node_modules/@react-aria/menu/dist/hu-HU.cjs.js +0 -2
  191. package/dist/node_modules/@react-aria/menu/dist/hu-HU.cjs.js.map +0 -1
  192. package/dist/node_modules/@react-aria/menu/dist/hu-HU.es.js +0 -8
  193. package/dist/node_modules/@react-aria/menu/dist/hu-HU.es.js.map +0 -1
  194. package/dist/node_modules/@react-aria/menu/dist/intlStrings.cjs.js +0 -2
  195. package/dist/node_modules/@react-aria/menu/dist/intlStrings.cjs.js.map +0 -1
  196. package/dist/node_modules/@react-aria/menu/dist/intlStrings.es.js +0 -75
  197. package/dist/node_modules/@react-aria/menu/dist/intlStrings.es.js.map +0 -1
  198. package/dist/node_modules/@react-aria/menu/dist/it-IT.cjs.js +0 -2
  199. package/dist/node_modules/@react-aria/menu/dist/it-IT.cjs.js.map +0 -1
  200. package/dist/node_modules/@react-aria/menu/dist/it-IT.es.js +0 -8
  201. package/dist/node_modules/@react-aria/menu/dist/it-IT.es.js.map +0 -1
  202. package/dist/node_modules/@react-aria/menu/dist/ja-JP.cjs.js +0 -2
  203. package/dist/node_modules/@react-aria/menu/dist/ja-JP.cjs.js.map +0 -1
  204. package/dist/node_modules/@react-aria/menu/dist/ja-JP.es.js +0 -8
  205. package/dist/node_modules/@react-aria/menu/dist/ja-JP.es.js.map +0 -1
  206. package/dist/node_modules/@react-aria/menu/dist/ko-KR.cjs.js +0 -2
  207. package/dist/node_modules/@react-aria/menu/dist/ko-KR.cjs.js.map +0 -1
  208. package/dist/node_modules/@react-aria/menu/dist/ko-KR.es.js +0 -8
  209. package/dist/node_modules/@react-aria/menu/dist/ko-KR.es.js.map +0 -1
  210. package/dist/node_modules/@react-aria/menu/dist/lt-LT.cjs.js +0 -2
  211. package/dist/node_modules/@react-aria/menu/dist/lt-LT.cjs.js.map +0 -1
  212. package/dist/node_modules/@react-aria/menu/dist/lt-LT.es.js +0 -8
  213. package/dist/node_modules/@react-aria/menu/dist/lt-LT.es.js.map +0 -1
  214. package/dist/node_modules/@react-aria/menu/dist/lv-LV.cjs.js +0 -2
  215. package/dist/node_modules/@react-aria/menu/dist/lv-LV.cjs.js.map +0 -1
  216. package/dist/node_modules/@react-aria/menu/dist/lv-LV.es.js +0 -8
  217. package/dist/node_modules/@react-aria/menu/dist/lv-LV.es.js.map +0 -1
  218. package/dist/node_modules/@react-aria/menu/dist/nb-NO.cjs.js +0 -2
  219. package/dist/node_modules/@react-aria/menu/dist/nb-NO.cjs.js.map +0 -1
  220. package/dist/node_modules/@react-aria/menu/dist/nb-NO.es.js +0 -8
  221. package/dist/node_modules/@react-aria/menu/dist/nb-NO.es.js.map +0 -1
  222. package/dist/node_modules/@react-aria/menu/dist/nl-NL.cjs.js +0 -2
  223. package/dist/node_modules/@react-aria/menu/dist/nl-NL.cjs.js.map +0 -1
  224. package/dist/node_modules/@react-aria/menu/dist/nl-NL.es.js +0 -8
  225. package/dist/node_modules/@react-aria/menu/dist/nl-NL.es.js.map +0 -1
  226. package/dist/node_modules/@react-aria/menu/dist/pl-PL.cjs.js +0 -2
  227. package/dist/node_modules/@react-aria/menu/dist/pl-PL.cjs.js.map +0 -1
  228. package/dist/node_modules/@react-aria/menu/dist/pl-PL.es.js +0 -8
  229. package/dist/node_modules/@react-aria/menu/dist/pl-PL.es.js.map +0 -1
  230. package/dist/node_modules/@react-aria/menu/dist/pt-BR.cjs.js +0 -2
  231. package/dist/node_modules/@react-aria/menu/dist/pt-BR.cjs.js.map +0 -1
  232. package/dist/node_modules/@react-aria/menu/dist/pt-BR.es.js +0 -8
  233. package/dist/node_modules/@react-aria/menu/dist/pt-BR.es.js.map +0 -1
  234. package/dist/node_modules/@react-aria/menu/dist/pt-PT.cjs.js +0 -2
  235. package/dist/node_modules/@react-aria/menu/dist/pt-PT.cjs.js.map +0 -1
  236. package/dist/node_modules/@react-aria/menu/dist/pt-PT.es.js +0 -8
  237. package/dist/node_modules/@react-aria/menu/dist/pt-PT.es.js.map +0 -1
  238. package/dist/node_modules/@react-aria/menu/dist/ro-RO.cjs.js +0 -2
  239. package/dist/node_modules/@react-aria/menu/dist/ro-RO.cjs.js.map +0 -1
  240. package/dist/node_modules/@react-aria/menu/dist/ro-RO.es.js +0 -8
  241. package/dist/node_modules/@react-aria/menu/dist/ro-RO.es.js.map +0 -1
  242. package/dist/node_modules/@react-aria/menu/dist/ru-RU.cjs.js +0 -2
  243. package/dist/node_modules/@react-aria/menu/dist/ru-RU.cjs.js.map +0 -1
  244. package/dist/node_modules/@react-aria/menu/dist/ru-RU.es.js +0 -8
  245. package/dist/node_modules/@react-aria/menu/dist/ru-RU.es.js.map +0 -1
  246. package/dist/node_modules/@react-aria/menu/dist/sk-SK.cjs.js +0 -2
  247. package/dist/node_modules/@react-aria/menu/dist/sk-SK.cjs.js.map +0 -1
  248. package/dist/node_modules/@react-aria/menu/dist/sk-SK.es.js +0 -8
  249. package/dist/node_modules/@react-aria/menu/dist/sk-SK.es.js.map +0 -1
  250. package/dist/node_modules/@react-aria/menu/dist/sl-SI.cjs.js +0 -2
  251. package/dist/node_modules/@react-aria/menu/dist/sl-SI.cjs.js.map +0 -1
  252. package/dist/node_modules/@react-aria/menu/dist/sl-SI.es.js +0 -8
  253. package/dist/node_modules/@react-aria/menu/dist/sl-SI.es.js.map +0 -1
  254. package/dist/node_modules/@react-aria/menu/dist/sr-SP.cjs.js +0 -2
  255. package/dist/node_modules/@react-aria/menu/dist/sr-SP.cjs.js.map +0 -1
  256. package/dist/node_modules/@react-aria/menu/dist/sr-SP.es.js +0 -8
  257. package/dist/node_modules/@react-aria/menu/dist/sr-SP.es.js.map +0 -1
  258. package/dist/node_modules/@react-aria/menu/dist/sv-SE.cjs.js +0 -2
  259. package/dist/node_modules/@react-aria/menu/dist/sv-SE.cjs.js.map +0 -1
  260. package/dist/node_modules/@react-aria/menu/dist/sv-SE.es.js +0 -8
  261. package/dist/node_modules/@react-aria/menu/dist/sv-SE.es.js.map +0 -1
  262. package/dist/node_modules/@react-aria/menu/dist/tr-TR.cjs.js +0 -2
  263. package/dist/node_modules/@react-aria/menu/dist/tr-TR.cjs.js.map +0 -1
  264. package/dist/node_modules/@react-aria/menu/dist/tr-TR.es.js +0 -8
  265. package/dist/node_modules/@react-aria/menu/dist/tr-TR.es.js.map +0 -1
  266. package/dist/node_modules/@react-aria/menu/dist/uk-UA.cjs.js +0 -2
  267. package/dist/node_modules/@react-aria/menu/dist/uk-UA.cjs.js.map +0 -1
  268. package/dist/node_modules/@react-aria/menu/dist/uk-UA.es.js +0 -8
  269. package/dist/node_modules/@react-aria/menu/dist/uk-UA.es.js.map +0 -1
  270. package/dist/node_modules/@react-aria/menu/dist/useMenu.cjs.js +0 -2
  271. package/dist/node_modules/@react-aria/menu/dist/useMenu.cjs.js.map +0 -1
  272. package/dist/node_modules/@react-aria/menu/dist/useMenu.es.js +0 -39
  273. package/dist/node_modules/@react-aria/menu/dist/useMenu.es.js.map +0 -1
  274. package/dist/node_modules/@react-aria/menu/dist/useMenuItem.cjs.js +0 -2
  275. package/dist/node_modules/@react-aria/menu/dist/useMenuItem.cjs.js.map +0 -1
  276. package/dist/node_modules/@react-aria/menu/dist/useMenuItem.es.js +0 -145
  277. package/dist/node_modules/@react-aria/menu/dist/useMenuItem.es.js.map +0 -1
  278. package/dist/node_modules/@react-aria/menu/dist/useMenuTrigger.cjs.js +0 -2
  279. package/dist/node_modules/@react-aria/menu/dist/useMenuTrigger.cjs.js.map +0 -1
  280. package/dist/node_modules/@react-aria/menu/dist/useMenuTrigger.es.js +0 -64
  281. package/dist/node_modules/@react-aria/menu/dist/useMenuTrigger.es.js.map +0 -1
  282. package/dist/node_modules/@react-aria/menu/dist/utils.cjs.js +0 -2
  283. package/dist/node_modules/@react-aria/menu/dist/utils.cjs.js.map +0 -1
  284. package/dist/node_modules/@react-aria/menu/dist/utils.es.js +0 -5
  285. package/dist/node_modules/@react-aria/menu/dist/utils.es.js.map +0 -1
  286. package/dist/node_modules/@react-aria/menu/dist/zh-CN.cjs.js +0 -2
  287. package/dist/node_modules/@react-aria/menu/dist/zh-CN.cjs.js.map +0 -1
  288. package/dist/node_modules/@react-aria/menu/dist/zh-CN.es.js +0 -8
  289. package/dist/node_modules/@react-aria/menu/dist/zh-CN.es.js.map +0 -1
  290. package/dist/node_modules/@react-aria/menu/dist/zh-TW.cjs.js +0 -2
  291. package/dist/node_modules/@react-aria/menu/dist/zh-TW.cjs.js.map +0 -1
  292. package/dist/node_modules/@react-aria/menu/dist/zh-TW.es.js +0 -8
  293. package/dist/node_modules/@react-aria/menu/dist/zh-TW.es.js.map +0 -1
  294. package/dist/node_modules/@react-aria/overlays/dist/DismissButton.cjs.js +0 -2
  295. package/dist/node_modules/@react-aria/overlays/dist/DismissButton.cjs.js.map +0 -1
  296. package/dist/node_modules/@react-aria/overlays/dist/DismissButton.es.js +0 -26
  297. package/dist/node_modules/@react-aria/overlays/dist/DismissButton.es.js.map +0 -1
  298. package/dist/node_modules/@react-aria/overlays/dist/PortalProvider.cjs.js +0 -2
  299. package/dist/node_modules/@react-aria/overlays/dist/PortalProvider.cjs.js.map +0 -1
  300. package/dist/node_modules/@react-aria/overlays/dist/PortalProvider.es.js +0 -11
  301. package/dist/node_modules/@react-aria/overlays/dist/PortalProvider.es.js.map +0 -1
  302. package/dist/node_modules/@react-aria/overlays/dist/ar-AE.cjs.js +0 -2
  303. package/dist/node_modules/@react-aria/overlays/dist/ar-AE.cjs.js.map +0 -1
  304. package/dist/node_modules/@react-aria/overlays/dist/ar-AE.es.js +0 -8
  305. package/dist/node_modules/@react-aria/overlays/dist/ar-AE.es.js.map +0 -1
  306. package/dist/node_modules/@react-aria/overlays/dist/bg-BG.cjs.js +0 -2
  307. package/dist/node_modules/@react-aria/overlays/dist/bg-BG.cjs.js.map +0 -1
  308. package/dist/node_modules/@react-aria/overlays/dist/bg-BG.es.js +0 -8
  309. package/dist/node_modules/@react-aria/overlays/dist/bg-BG.es.js.map +0 -1
  310. package/dist/node_modules/@react-aria/overlays/dist/calculatePosition.cjs.js +0 -2
  311. package/dist/node_modules/@react-aria/overlays/dist/calculatePosition.cjs.js.map +0 -1
  312. package/dist/node_modules/@react-aria/overlays/dist/calculatePosition.es.js +0 -200
  313. package/dist/node_modules/@react-aria/overlays/dist/calculatePosition.es.js.map +0 -1
  314. package/dist/node_modules/@react-aria/overlays/dist/cs-CZ.cjs.js +0 -2
  315. package/dist/node_modules/@react-aria/overlays/dist/cs-CZ.cjs.js.map +0 -1
  316. package/dist/node_modules/@react-aria/overlays/dist/cs-CZ.es.js +0 -8
  317. package/dist/node_modules/@react-aria/overlays/dist/cs-CZ.es.js.map +0 -1
  318. package/dist/node_modules/@react-aria/overlays/dist/da-DK.cjs.js +0 -2
  319. package/dist/node_modules/@react-aria/overlays/dist/da-DK.cjs.js.map +0 -1
  320. package/dist/node_modules/@react-aria/overlays/dist/da-DK.es.js +0 -8
  321. package/dist/node_modules/@react-aria/overlays/dist/da-DK.es.js.map +0 -1
  322. package/dist/node_modules/@react-aria/overlays/dist/de-DE.cjs.js +0 -2
  323. package/dist/node_modules/@react-aria/overlays/dist/de-DE.cjs.js.map +0 -1
  324. package/dist/node_modules/@react-aria/overlays/dist/de-DE.es.js +0 -8
  325. package/dist/node_modules/@react-aria/overlays/dist/de-DE.es.js.map +0 -1
  326. package/dist/node_modules/@react-aria/overlays/dist/el-GR.cjs.js +0 -2
  327. package/dist/node_modules/@react-aria/overlays/dist/el-GR.cjs.js.map +0 -1
  328. package/dist/node_modules/@react-aria/overlays/dist/el-GR.es.js +0 -8
  329. package/dist/node_modules/@react-aria/overlays/dist/el-GR.es.js.map +0 -1
  330. package/dist/node_modules/@react-aria/overlays/dist/en-US.cjs.js +0 -2
  331. package/dist/node_modules/@react-aria/overlays/dist/en-US.cjs.js.map +0 -1
  332. package/dist/node_modules/@react-aria/overlays/dist/en-US.es.js +0 -8
  333. package/dist/node_modules/@react-aria/overlays/dist/en-US.es.js.map +0 -1
  334. package/dist/node_modules/@react-aria/overlays/dist/es-ES.cjs.js +0 -2
  335. package/dist/node_modules/@react-aria/overlays/dist/es-ES.cjs.js.map +0 -1
  336. package/dist/node_modules/@react-aria/overlays/dist/es-ES.es.js +0 -8
  337. package/dist/node_modules/@react-aria/overlays/dist/es-ES.es.js.map +0 -1
  338. package/dist/node_modules/@react-aria/overlays/dist/et-EE.cjs.js +0 -2
  339. package/dist/node_modules/@react-aria/overlays/dist/et-EE.cjs.js.map +0 -1
  340. package/dist/node_modules/@react-aria/overlays/dist/et-EE.es.js +0 -8
  341. package/dist/node_modules/@react-aria/overlays/dist/et-EE.es.js.map +0 -1
  342. package/dist/node_modules/@react-aria/overlays/dist/fi-FI.cjs.js +0 -2
  343. package/dist/node_modules/@react-aria/overlays/dist/fi-FI.cjs.js.map +0 -1
  344. package/dist/node_modules/@react-aria/overlays/dist/fi-FI.es.js +0 -8
  345. package/dist/node_modules/@react-aria/overlays/dist/fi-FI.es.js.map +0 -1
  346. package/dist/node_modules/@react-aria/overlays/dist/fr-FR.cjs.js +0 -2
  347. package/dist/node_modules/@react-aria/overlays/dist/fr-FR.cjs.js.map +0 -1
  348. package/dist/node_modules/@react-aria/overlays/dist/fr-FR.es.js +0 -8
  349. package/dist/node_modules/@react-aria/overlays/dist/fr-FR.es.js.map +0 -1
  350. package/dist/node_modules/@react-aria/overlays/dist/he-IL.cjs.js +0 -2
  351. package/dist/node_modules/@react-aria/overlays/dist/he-IL.cjs.js.map +0 -1
  352. package/dist/node_modules/@react-aria/overlays/dist/he-IL.es.js +0 -8
  353. package/dist/node_modules/@react-aria/overlays/dist/he-IL.es.js.map +0 -1
  354. package/dist/node_modules/@react-aria/overlays/dist/hr-HR.cjs.js +0 -2
  355. package/dist/node_modules/@react-aria/overlays/dist/hr-HR.cjs.js.map +0 -1
  356. package/dist/node_modules/@react-aria/overlays/dist/hr-HR.es.js +0 -8
  357. package/dist/node_modules/@react-aria/overlays/dist/hr-HR.es.js.map +0 -1
  358. package/dist/node_modules/@react-aria/overlays/dist/hu-HU.cjs.js +0 -2
  359. package/dist/node_modules/@react-aria/overlays/dist/hu-HU.cjs.js.map +0 -1
  360. package/dist/node_modules/@react-aria/overlays/dist/hu-HU.es.js +0 -8
  361. package/dist/node_modules/@react-aria/overlays/dist/hu-HU.es.js.map +0 -1
  362. package/dist/node_modules/@react-aria/overlays/dist/intlStrings.cjs.js +0 -2
  363. package/dist/node_modules/@react-aria/overlays/dist/intlStrings.cjs.js.map +0 -1
  364. package/dist/node_modules/@react-aria/overlays/dist/intlStrings.es.js +0 -75
  365. package/dist/node_modules/@react-aria/overlays/dist/intlStrings.es.js.map +0 -1
  366. package/dist/node_modules/@react-aria/overlays/dist/it-IT.cjs.js +0 -2
  367. package/dist/node_modules/@react-aria/overlays/dist/it-IT.cjs.js.map +0 -1
  368. package/dist/node_modules/@react-aria/overlays/dist/it-IT.es.js +0 -8
  369. package/dist/node_modules/@react-aria/overlays/dist/it-IT.es.js.map +0 -1
  370. package/dist/node_modules/@react-aria/overlays/dist/ja-JP.cjs.js +0 -2
  371. package/dist/node_modules/@react-aria/overlays/dist/ja-JP.cjs.js.map +0 -1
  372. package/dist/node_modules/@react-aria/overlays/dist/ja-JP.es.js +0 -8
  373. package/dist/node_modules/@react-aria/overlays/dist/ja-JP.es.js.map +0 -1
  374. package/dist/node_modules/@react-aria/overlays/dist/ko-KR.cjs.js +0 -2
  375. package/dist/node_modules/@react-aria/overlays/dist/ko-KR.cjs.js.map +0 -1
  376. package/dist/node_modules/@react-aria/overlays/dist/ko-KR.es.js +0 -8
  377. package/dist/node_modules/@react-aria/overlays/dist/ko-KR.es.js.map +0 -1
  378. package/dist/node_modules/@react-aria/overlays/dist/lt-LT.cjs.js +0 -2
  379. package/dist/node_modules/@react-aria/overlays/dist/lt-LT.cjs.js.map +0 -1
  380. package/dist/node_modules/@react-aria/overlays/dist/lt-LT.es.js +0 -8
  381. package/dist/node_modules/@react-aria/overlays/dist/lt-LT.es.js.map +0 -1
  382. package/dist/node_modules/@react-aria/overlays/dist/lv-LV.cjs.js +0 -2
  383. package/dist/node_modules/@react-aria/overlays/dist/lv-LV.cjs.js.map +0 -1
  384. package/dist/node_modules/@react-aria/overlays/dist/lv-LV.es.js +0 -8
  385. package/dist/node_modules/@react-aria/overlays/dist/lv-LV.es.js.map +0 -1
  386. package/dist/node_modules/@react-aria/overlays/dist/nb-NO.cjs.js +0 -2
  387. package/dist/node_modules/@react-aria/overlays/dist/nb-NO.cjs.js.map +0 -1
  388. package/dist/node_modules/@react-aria/overlays/dist/nb-NO.es.js +0 -8
  389. package/dist/node_modules/@react-aria/overlays/dist/nb-NO.es.js.map +0 -1
  390. package/dist/node_modules/@react-aria/overlays/dist/nl-NL.cjs.js +0 -2
  391. package/dist/node_modules/@react-aria/overlays/dist/nl-NL.cjs.js.map +0 -1
  392. package/dist/node_modules/@react-aria/overlays/dist/nl-NL.es.js +0 -8
  393. package/dist/node_modules/@react-aria/overlays/dist/nl-NL.es.js.map +0 -1
  394. package/dist/node_modules/@react-aria/overlays/dist/pl-PL.cjs.js +0 -2
  395. package/dist/node_modules/@react-aria/overlays/dist/pl-PL.cjs.js.map +0 -1
  396. package/dist/node_modules/@react-aria/overlays/dist/pl-PL.es.js +0 -8
  397. package/dist/node_modules/@react-aria/overlays/dist/pl-PL.es.js.map +0 -1
  398. package/dist/node_modules/@react-aria/overlays/dist/pt-BR.cjs.js +0 -2
  399. package/dist/node_modules/@react-aria/overlays/dist/pt-BR.cjs.js.map +0 -1
  400. package/dist/node_modules/@react-aria/overlays/dist/pt-BR.es.js +0 -8
  401. package/dist/node_modules/@react-aria/overlays/dist/pt-BR.es.js.map +0 -1
  402. package/dist/node_modules/@react-aria/overlays/dist/pt-PT.cjs.js +0 -2
  403. package/dist/node_modules/@react-aria/overlays/dist/pt-PT.cjs.js.map +0 -1
  404. package/dist/node_modules/@react-aria/overlays/dist/pt-PT.es.js +0 -8
  405. package/dist/node_modules/@react-aria/overlays/dist/pt-PT.es.js.map +0 -1
  406. package/dist/node_modules/@react-aria/overlays/dist/ro-RO.cjs.js +0 -2
  407. package/dist/node_modules/@react-aria/overlays/dist/ro-RO.cjs.js.map +0 -1
  408. package/dist/node_modules/@react-aria/overlays/dist/ro-RO.es.js +0 -8
  409. package/dist/node_modules/@react-aria/overlays/dist/ro-RO.es.js.map +0 -1
  410. package/dist/node_modules/@react-aria/overlays/dist/ru-RU.cjs.js +0 -2
  411. package/dist/node_modules/@react-aria/overlays/dist/ru-RU.cjs.js.map +0 -1
  412. package/dist/node_modules/@react-aria/overlays/dist/ru-RU.es.js +0 -8
  413. package/dist/node_modules/@react-aria/overlays/dist/ru-RU.es.js.map +0 -1
  414. package/dist/node_modules/@react-aria/overlays/dist/sk-SK.cjs.js +0 -2
  415. package/dist/node_modules/@react-aria/overlays/dist/sk-SK.cjs.js.map +0 -1
  416. package/dist/node_modules/@react-aria/overlays/dist/sk-SK.es.js +0 -8
  417. package/dist/node_modules/@react-aria/overlays/dist/sk-SK.es.js.map +0 -1
  418. package/dist/node_modules/@react-aria/overlays/dist/sl-SI.cjs.js +0 -2
  419. package/dist/node_modules/@react-aria/overlays/dist/sl-SI.cjs.js.map +0 -1
  420. package/dist/node_modules/@react-aria/overlays/dist/sl-SI.es.js +0 -8
  421. package/dist/node_modules/@react-aria/overlays/dist/sl-SI.es.js.map +0 -1
  422. package/dist/node_modules/@react-aria/overlays/dist/sr-SP.cjs.js +0 -2
  423. package/dist/node_modules/@react-aria/overlays/dist/sr-SP.cjs.js.map +0 -1
  424. package/dist/node_modules/@react-aria/overlays/dist/sr-SP.es.js +0 -8
  425. package/dist/node_modules/@react-aria/overlays/dist/sr-SP.es.js.map +0 -1
  426. package/dist/node_modules/@react-aria/overlays/dist/sv-SE.cjs.js +0 -2
  427. package/dist/node_modules/@react-aria/overlays/dist/sv-SE.cjs.js.map +0 -1
  428. package/dist/node_modules/@react-aria/overlays/dist/sv-SE.es.js +0 -8
  429. package/dist/node_modules/@react-aria/overlays/dist/sv-SE.es.js.map +0 -1
  430. package/dist/node_modules/@react-aria/overlays/dist/tr-TR.cjs.js +0 -2
  431. package/dist/node_modules/@react-aria/overlays/dist/tr-TR.cjs.js.map +0 -1
  432. package/dist/node_modules/@react-aria/overlays/dist/tr-TR.es.js +0 -8
  433. package/dist/node_modules/@react-aria/overlays/dist/tr-TR.es.js.map +0 -1
  434. package/dist/node_modules/@react-aria/overlays/dist/uk-UA.cjs.js +0 -2
  435. package/dist/node_modules/@react-aria/overlays/dist/uk-UA.cjs.js.map +0 -1
  436. package/dist/node_modules/@react-aria/overlays/dist/uk-UA.es.js +0 -8
  437. package/dist/node_modules/@react-aria/overlays/dist/uk-UA.es.js.map +0 -1
  438. package/dist/node_modules/@react-aria/overlays/dist/useCloseOnScroll.cjs.js +0 -2
  439. package/dist/node_modules/@react-aria/overlays/dist/useCloseOnScroll.cjs.js.map +0 -1
  440. package/dist/node_modules/@react-aria/overlays/dist/useCloseOnScroll.es.js +0 -26
  441. package/dist/node_modules/@react-aria/overlays/dist/useCloseOnScroll.es.js.map +0 -1
  442. package/dist/node_modules/@react-aria/overlays/dist/useOverlayPosition.cjs.js +0 -2
  443. package/dist/node_modules/@react-aria/overlays/dist/useOverlayPosition.cjs.js.map +0 -1
  444. package/dist/node_modules/@react-aria/overlays/dist/useOverlayPosition.es.js +0 -143
  445. package/dist/node_modules/@react-aria/overlays/dist/useOverlayPosition.es.js.map +0 -1
  446. package/dist/node_modules/@react-aria/overlays/dist/useOverlayTrigger.cjs.js +0 -2
  447. package/dist/node_modules/@react-aria/overlays/dist/useOverlayTrigger.cjs.js.map +0 -1
  448. package/dist/node_modules/@react-aria/overlays/dist/useOverlayTrigger.es.js +0 -27
  449. package/dist/node_modules/@react-aria/overlays/dist/useOverlayTrigger.es.js.map +0 -1
  450. package/dist/node_modules/@react-aria/overlays/dist/usePopover.cjs.js +0 -2
  451. package/dist/node_modules/@react-aria/overlays/dist/usePopover.cjs.js.map +0 -1
  452. package/dist/node_modules/@react-aria/overlays/dist/usePopover.es.js +0 -48
  453. package/dist/node_modules/@react-aria/overlays/dist/usePopover.es.js.map +0 -1
  454. package/dist/node_modules/@react-aria/overlays/dist/zh-CN.cjs.js +0 -2
  455. package/dist/node_modules/@react-aria/overlays/dist/zh-CN.cjs.js.map +0 -1
  456. package/dist/node_modules/@react-aria/overlays/dist/zh-CN.es.js +0 -8
  457. package/dist/node_modules/@react-aria/overlays/dist/zh-CN.es.js.map +0 -1
  458. package/dist/node_modules/@react-aria/overlays/dist/zh-TW.cjs.js +0 -2
  459. package/dist/node_modules/@react-aria/overlays/dist/zh-TW.cjs.js.map +0 -1
  460. package/dist/node_modules/@react-aria/overlays/dist/zh-TW.es.js +0 -8
  461. package/dist/node_modules/@react-aria/overlays/dist/zh-TW.es.js.map +0 -1
  462. package/dist/node_modules/@react-aria/select/dist/HiddenSelect.cjs.js +0 -2
  463. package/dist/node_modules/@react-aria/select/dist/HiddenSelect.cjs.js.map +0 -1
  464. package/dist/node_modules/@react-aria/select/dist/HiddenSelect.es.js +0 -105
  465. package/dist/node_modules/@react-aria/select/dist/HiddenSelect.es.js.map +0 -1
  466. package/dist/node_modules/@react-aria/select/dist/useSelect.cjs.js +0 -2
  467. package/dist/node_modules/@react-aria/select/dist/useSelect.cjs.js.map +0 -1
  468. package/dist/node_modules/@react-aria/select/dist/useSelect.es.js +0 -126
  469. package/dist/node_modules/@react-aria/select/dist/useSelect.es.js.map +0 -1
  470. package/dist/node_modules/@react-aria/selection/dist/DOMLayoutDelegate.cjs.js +0 -2
  471. package/dist/node_modules/@react-aria/selection/dist/DOMLayoutDelegate.cjs.js.map +0 -1
  472. package/dist/node_modules/@react-aria/selection/dist/DOMLayoutDelegate.es.js +0 -41
  473. package/dist/node_modules/@react-aria/selection/dist/DOMLayoutDelegate.es.js.map +0 -1
  474. package/dist/node_modules/@react-aria/selection/dist/ListKeyboardDelegate.cjs.js +0 -2
  475. package/dist/node_modules/@react-aria/selection/dist/ListKeyboardDelegate.cjs.js.map +0 -1
  476. package/dist/node_modules/@react-aria/selection/dist/ListKeyboardDelegate.es.js +0 -122
  477. package/dist/node_modules/@react-aria/selection/dist/ListKeyboardDelegate.es.js.map +0 -1
  478. package/dist/node_modules/@react-aria/selection/dist/useSelectableCollection.cjs.js +0 -2
  479. package/dist/node_modules/@react-aria/selection/dist/useSelectableCollection.cjs.js.map +0 -1
  480. package/dist/node_modules/@react-aria/selection/dist/useSelectableCollection.es.js +0 -235
  481. package/dist/node_modules/@react-aria/selection/dist/useSelectableCollection.es.js.map +0 -1
  482. package/dist/node_modules/@react-aria/selection/dist/useSelectableItem.cjs.js +0 -2
  483. package/dist/node_modules/@react-aria/selection/dist/useSelectableItem.cjs.js.map +0 -1
  484. package/dist/node_modules/@react-aria/selection/dist/useSelectableItem.es.js +0 -127
  485. package/dist/node_modules/@react-aria/selection/dist/useSelectableItem.es.js.map +0 -1
  486. package/dist/node_modules/@react-aria/selection/dist/useSelectableList.cjs.js +0 -2
  487. package/dist/node_modules/@react-aria/selection/dist/useSelectableList.cjs.js.map +0 -1
  488. package/dist/node_modules/@react-aria/selection/dist/useSelectableList.es.js +0 -37
  489. package/dist/node_modules/@react-aria/selection/dist/useSelectableList.es.js.map +0 -1
  490. package/dist/node_modules/@react-aria/selection/dist/useTypeSelect.cjs.js +0 -2
  491. package/dist/node_modules/@react-aria/selection/dist/useTypeSelect.cjs.js.map +0 -1
  492. package/dist/node_modules/@react-aria/selection/dist/useTypeSelect.es.js +0 -33
  493. package/dist/node_modules/@react-aria/selection/dist/useTypeSelect.es.js.map +0 -1
  494. package/dist/node_modules/@react-aria/selection/dist/utils.cjs.js +0 -2
  495. package/dist/node_modules/@react-aria/selection/dist/utils.cjs.js.map +0 -1
  496. package/dist/node_modules/@react-aria/selection/dist/utils.es.js +0 -24
  497. package/dist/node_modules/@react-aria/selection/dist/utils.es.js.map +0 -1
  498. package/dist/node_modules/@react-stately/collections/dist/CollectionBuilder.cjs.js +0 -2
  499. package/dist/node_modules/@react-stately/collections/dist/CollectionBuilder.cjs.js.map +0 -1
  500. package/dist/node_modules/@react-stately/collections/dist/CollectionBuilder.es.js +0 -171
  501. package/dist/node_modules/@react-stately/collections/dist/CollectionBuilder.es.js.map +0 -1
  502. package/dist/node_modules/@react-stately/collections/dist/Item.cjs.js +0 -2
  503. package/dist/node_modules/@react-stately/collections/dist/Item.cjs.js.map +0 -1
  504. package/dist/node_modules/@react-stately/collections/dist/Item.es.js +0 -38
  505. package/dist/node_modules/@react-stately/collections/dist/Item.es.js.map +0 -1
  506. package/dist/node_modules/@react-stately/collections/dist/getChildNodes.cjs.js +0 -2
  507. package/dist/node_modules/@react-stately/collections/dist/getChildNodes.cjs.js.map +0 -1
  508. package/dist/node_modules/@react-stately/collections/dist/getChildNodes.es.js +0 -34
  509. package/dist/node_modules/@react-stately/collections/dist/getChildNodes.es.js.map +0 -1
  510. package/dist/node_modules/@react-stately/collections/dist/getItemCount.cjs.js +0 -2
  511. package/dist/node_modules/@react-stately/collections/dist/getItemCount.cjs.js.map +0 -1
  512. package/dist/node_modules/@react-stately/collections/dist/getItemCount.es.js +0 -15
  513. package/dist/node_modules/@react-stately/collections/dist/getItemCount.es.js.map +0 -1
  514. package/dist/node_modules/@react-stately/collections/dist/useCollection.cjs.js +0 -2
  515. package/dist/node_modules/@react-stately/collections/dist/useCollection.cjs.js.map +0 -1
  516. package/dist/node_modules/@react-stately/collections/dist/useCollection.es.js +0 -24
  517. package/dist/node_modules/@react-stately/collections/dist/useCollection.es.js.map +0 -1
  518. package/dist/node_modules/@react-stately/list/dist/ListCollection.cjs.js +0 -2
  519. package/dist/node_modules/@react-stately/list/dist/ListCollection.cjs.js.map +0 -1
  520. package/dist/node_modules/@react-stately/list/dist/ListCollection.es.js +0 -57
  521. package/dist/node_modules/@react-stately/list/dist/ListCollection.es.js.map +0 -1
  522. package/dist/node_modules/@react-stately/list/dist/useListState.cjs.js +0 -2
  523. package/dist/node_modules/@react-stately/list/dist/useListState.cjs.js.map +0 -1
  524. package/dist/node_modules/@react-stately/list/dist/useListState.es.js +0 -70
  525. package/dist/node_modules/@react-stately/list/dist/useListState.es.js.map +0 -1
  526. package/dist/node_modules/@react-stately/list/dist/useSingleSelectListState.cjs.js +0 -2
  527. package/dist/node_modules/@react-stately/list/dist/useSingleSelectListState.cjs.js.map +0 -1
  528. package/dist/node_modules/@react-stately/list/dist/useSingleSelectListState.es.js +0 -35
  529. package/dist/node_modules/@react-stately/list/dist/useSingleSelectListState.es.js.map +0 -1
  530. package/dist/node_modules/@react-stately/menu/dist/useMenuTriggerState.cjs.js +0 -2
  531. package/dist/node_modules/@react-stately/menu/dist/useMenuTriggerState.cjs.js.map +0 -1
  532. package/dist/node_modules/@react-stately/menu/dist/useMenuTriggerState.es.js +0 -34
  533. package/dist/node_modules/@react-stately/menu/dist/useMenuTriggerState.es.js.map +0 -1
  534. package/dist/node_modules/@react-stately/select/dist/useSelectState.cjs.js +0 -2
  535. package/dist/node_modules/@react-stately/select/dist/useSelectState.cjs.js.map +0 -1
  536. package/dist/node_modules/@react-stately/select/dist/useSelectState.es.js +0 -35
  537. package/dist/node_modules/@react-stately/select/dist/useSelectState.es.js.map +0 -1
  538. package/dist/node_modules/@react-stately/selection/dist/Selection.cjs.js +0 -2
  539. package/dist/node_modules/@react-stately/selection/dist/Selection.cjs.js.map +0 -1
  540. package/dist/node_modules/@react-stately/selection/dist/Selection.es.js +0 -9
  541. package/dist/node_modules/@react-stately/selection/dist/Selection.es.js.map +0 -1
  542. package/dist/node_modules/@react-stately/selection/dist/SelectionManager.cjs.js +0 -2
  543. package/dist/node_modules/@react-stately/selection/dist/SelectionManager.cjs.js.map +0 -1
  544. package/dist/node_modules/@react-stately/selection/dist/SelectionManager.es.js +0 -285
  545. package/dist/node_modules/@react-stately/selection/dist/SelectionManager.es.js.map +0 -1
  546. package/dist/node_modules/@react-stately/selection/dist/useMultipleSelectionState.cjs.js +0 -2
  547. package/dist/node_modules/@react-stately/selection/dist/useMultipleSelectionState.cjs.js.map +0 -1
  548. package/dist/node_modules/@react-stately/selection/dist/useMultipleSelectionState.es.js +0 -58
  549. package/dist/node_modules/@react-stately/selection/dist/useMultipleSelectionState.es.js.map +0 -1
  550. package/dist/node_modules/@react-stately/tree/dist/TreeCollection.cjs.js +0 -2
  551. package/dist/node_modules/@react-stately/tree/dist/TreeCollection.cjs.js.map +0 -1
  552. package/dist/node_modules/@react-stately/tree/dist/TreeCollection.es.js +0 -53
  553. package/dist/node_modules/@react-stately/tree/dist/TreeCollection.es.js.map +0 -1
  554. package/dist/node_modules/@react-stately/tree/dist/useTreeState.cjs.js +0 -2
  555. package/dist/node_modules/@react-stately/tree/dist/useTreeState.cjs.js.map +0 -1
  556. package/dist/node_modules/@react-stately/tree/dist/useTreeState.es.js +0 -38
  557. package/dist/node_modules/@react-stately/tree/dist/useTreeState.es.js.map +0 -1
  558. package/dist/node_modules/react-aria-components/dist/Autocomplete.cjs.js +0 -2
  559. package/dist/node_modules/react-aria-components/dist/Autocomplete.cjs.js.map +0 -1
  560. package/dist/node_modules/react-aria-components/dist/Autocomplete.es.js +0 -6
  561. package/dist/node_modules/react-aria-components/dist/Autocomplete.es.js.map +0 -1
  562. package/dist/node_modules/react-aria-components/dist/Button.cjs.js +0 -2
  563. package/dist/node_modules/react-aria-components/dist/Button.cjs.js.map +0 -1
  564. package/dist/node_modules/react-aria-components/dist/Button.es.js +0 -70
  565. package/dist/node_modules/react-aria-components/dist/Button.es.js.map +0 -1
  566. package/dist/node_modules/react-aria-components/dist/Collection.cjs.js +0 -2
  567. package/dist/node_modules/react-aria-components/dist/Collection.cjs.js.map +0 -1
  568. package/dist/node_modules/react-aria-components/dist/Collection.es.js +0 -64
  569. package/dist/node_modules/react-aria-components/dist/Collection.es.js.map +0 -1
  570. package/dist/node_modules/react-aria-components/dist/Dialog.cjs.js +0 -2
  571. package/dist/node_modules/react-aria-components/dist/Dialog.cjs.js.map +0 -1
  572. package/dist/node_modules/react-aria-components/dist/Dialog.es.js +0 -6
  573. package/dist/node_modules/react-aria-components/dist/Dialog.es.js.map +0 -1
  574. package/dist/node_modules/react-aria-components/dist/Header.cjs.js +0 -2
  575. package/dist/node_modules/react-aria-components/dist/Header.cjs.js.map +0 -1
  576. package/dist/node_modules/react-aria-components/dist/Header.es.js +0 -15
  577. package/dist/node_modules/react-aria-components/dist/Header.es.js.map +0 -1
  578. package/dist/node_modules/react-aria-components/dist/Keyboard.cjs.js +0 -2
  579. package/dist/node_modules/react-aria-components/dist/Keyboard.cjs.js.map +0 -1
  580. package/dist/node_modules/react-aria-components/dist/Keyboard.es.js +0 -6
  581. package/dist/node_modules/react-aria-components/dist/Keyboard.es.js.map +0 -1
  582. package/dist/node_modules/react-aria-components/dist/Menu.cjs.js +0 -2
  583. package/dist/node_modules/react-aria-components/dist/Menu.cjs.js.map +0 -1
  584. package/dist/node_modules/react-aria-components/dist/Menu.es.js +0 -286
  585. package/dist/node_modules/react-aria-components/dist/Menu.es.js.map +0 -1
  586. package/dist/node_modules/react-aria-components/dist/Popover.cjs.js +0 -2
  587. package/dist/node_modules/react-aria-components/dist/Popover.cjs.js.map +0 -1
  588. package/dist/node_modules/react-aria-components/dist/Popover.es.js +0 -141
  589. package/dist/node_modules/react-aria-components/dist/Popover.es.js.map +0 -1
  590. package/dist/node_modules/react-aria-components/dist/ProgressBar.cjs.js +0 -2
  591. package/dist/node_modules/react-aria-components/dist/ProgressBar.cjs.js.map +0 -1
  592. package/dist/node_modules/react-aria-components/dist/ProgressBar.es.js +0 -6
  593. package/dist/node_modules/react-aria-components/dist/ProgressBar.es.js.map +0 -1
  594. package/dist/node_modules/react-aria-components/dist/Separator.cjs.js +0 -2
  595. package/dist/node_modules/react-aria-components/dist/Separator.cjs.js.map +0 -1
  596. package/dist/node_modules/react-aria-components/dist/Separator.es.js +0 -6
  597. package/dist/node_modules/react-aria-components/dist/Separator.es.js.map +0 -1
  598. package/dist/node_modules/react-aria-components/dist/Text.cjs.js +0 -2
  599. package/dist/node_modules/react-aria-components/dist/Text.cjs.js.map +0 -1
  600. package/dist/node_modules/react-aria-components/dist/Text.es.js +0 -16
  601. package/dist/node_modules/react-aria-components/dist/Text.es.js.map +0 -1
  602. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs.js +0 -10
  603. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs.js.map +0 -1
  604. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.es.js +0 -68
  605. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.es.js.map +0 -1
  606. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.cjs.js +0 -10
  607. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.cjs.js.map +0 -1
  608. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.es.js +0 -56
  609. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.es.js.map +0 -1
  610. package/dist/node_modules/use-sync-external-store/shim/index.cjs.js +0 -2
  611. package/dist/node_modules/use-sync-external-store/shim/index.cjs.js.map +0 -1
  612. package/dist/node_modules/use-sync-external-store/shim/index.es.js +0 -9
  613. package/dist/node_modules/use-sync-external-store/shim/index.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Input.es.js","sources":["../../../../src/components/Input/BaseInput/Input.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport React, { forwardRef, useEffect, useRef } from \"react\";\r\n\r\nimport { useTheme } from \"../../ThemeProvider\";\r\nimport { csx } from \"../../../utils\";\r\nimport \"./Input.css\";\r\nimport { copyTextToClipboard } from \"../../../utils/copy\";\r\n\r\nexport interface BaseInputProps {\r\n /**\r\n * onChange handler for the input\r\n */\r\n onChange?: (value: string) => void;\r\n\r\n /** Whether the input is disabled. */\r\n isDisabled?: boolean;\r\n\r\n /** Description text shown above the input. */\r\n description?: React.ReactNode | string;\r\n\r\n /**\r\n * The position of the description text.\r\n * @default \"top\"\r\n */\r\n descriptionPosition?: \"top\" | \"bottom\";\r\n\r\n /** Error state that changes the input's visual style and displays an error message. */\r\n error?: React.ReactNode | string;\r\n\r\n /**\r\n * Label for the input element.\r\n * @note When a label is provided, the input will have extra padding, and the label will float above the text input when focused or filled.\r\n */\r\n label?: string;\r\n\r\n /** Test ID for the component. */\r\n \"data-testid\"?: string;\r\n\r\n /** Content to display before the input. Typically used for icons. */\r\n prefix?: React.ReactNode;\r\n\r\n /** Content to display after the input. Typically used for icons. */\r\n suffix?: React.ReactNode;\r\n\r\n /**\r\n * Should the browser's autocomplete be enabled?\r\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete\r\n */\r\n autoComplete?: boolean;\r\n\r\n /**\r\n * Should the input be autofocused?\r\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autofocus\r\n */\r\n autoFocus?: boolean;\r\n\r\n /**\r\n * The name attribute of the input element.\r\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/name\r\n */\r\n name: string;\r\n\r\n /**\r\n * The placeholder text to display when the input is empty.\r\n * @note label takes precedence over placeholder, if both are provided.\r\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/placeholder\r\n */\r\n placeholder?: string;\r\n\r\n /**\r\n * The type attribute of the input element.\r\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/type\r\n * @default \"text\"\r\n */\r\n type?: string;\r\n\r\n /**\r\n * The value of the input.\r\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#value\r\n */\r\n value?: string;\r\n\r\n /**\r\n * Whether the input is required.\r\n * @default false\r\n */\r\n isRequired?: boolean;\r\n\r\n /**\r\n * Whether the input is read-only.\r\n * @default false\r\n */\r\n isReadOnly?: boolean;\r\n\r\n /**\r\n * Called when the input is submitted (e.g. by pressing Enter).\r\n */\r\n onSubmit?: React.FormEventHandler<HTMLInputElement>;\r\n\r\n /**\r\n * Called when the input is cleared (e.g. by pressing Escape).\r\n */\r\n onClear?: () => void;\r\n}\r\n\r\n/**\r\n * A controlled and customizable input component with support for labels, prefixes, suffixes, and error states.\r\n *\r\n * API:\r\n * - {@link BaseInputProps}\r\n */\r\nexport const Input = forwardRef<HTMLInputElement, BaseInputProps>(\r\n (\r\n {\r\n prefix,\r\n suffix,\r\n description,\r\n descriptionPosition = \"top\",\r\n isDisabled,\r\n error,\r\n onChange,\r\n label,\r\n name,\r\n placeholder,\r\n type = \"text\",\r\n value,\r\n autoFocus,\r\n autoComplete,\r\n isRequired = false,\r\n isReadOnly = false,\r\n onSubmit,\r\n onClear,\r\n \"data-testid\": testId,\r\n },\r\n forwardedRef: React.RefObject<HTMLInputElement>\r\n ) => {\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const prefixRef = useRef<HTMLDivElement>(null);\r\n const suffixRef = useRef<HTMLDivElement>(null);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const { className } = useTheme();\r\n const ref = forwardedRef || inputRef;\r\n\r\n // Control dynamic prefix and suffix widths using ResizeObserver\r\n useEffect(() => {\r\n if (!containerRef.current) return;\r\n\r\n const updateSizes = () => {\r\n if (containerRef.current) {\r\n const containerWidth = containerRef.current.offsetWidth || 200;\r\n containerRef.current.style.setProperty(\r\n \"--container-width\",\r\n `${containerWidth}px`\r\n );\r\n }\r\n\r\n if (prefixRef.current) {\r\n const prefixWidth = prefixRef.current.offsetWidth || 32;\r\n containerRef.current?.style.setProperty(\r\n \"--prefix-width\",\r\n `${prefixWidth}px`\r\n );\r\n }\r\n\r\n if (suffixRef.current) {\r\n const suffixWidth = suffixRef.current.offsetWidth || 32;\r\n containerRef.current?.style.setProperty(\r\n \"--suffix-width\",\r\n `${suffixWidth}px`\r\n );\r\n }\r\n };\r\n\r\n updateSizes();\r\n\r\n const resizeObserver = new ResizeObserver(updateSizes);\r\n\r\n if (containerRef.current) {\r\n resizeObserver.observe(containerRef.current);\r\n }\r\n if (prefixRef.current) {\r\n resizeObserver.observe(prefixRef.current);\r\n }\r\n if (suffixRef.current) {\r\n resizeObserver.observe(suffixRef.current);\r\n }\r\n\r\n return () => {\r\n resizeObserver.disconnect();\r\n };\r\n }, [prefix, suffix]);\r\n\r\n const inputId = `${name}-input`;\r\n const errorId = `${name}-error`;\r\n const descriptionId = `${name}-description`;\r\n\r\n return (\r\n <div className=\"proton-Input__container\" ref={containerRef}>\r\n {description && descriptionPosition === \"top\" && (\r\n <div\r\n id={descriptionId}\r\n className=\"proton-Input__text\"\r\n aria-live=\"polite\"\r\n >\r\n {description}\r\n </div>\r\n )}\r\n <div className=\"proton-Input__container-inner\">\r\n {prefix && (\r\n <div\r\n ref={prefixRef}\r\n className={csx(\r\n \"proton-Input__descriptor\",\r\n \"proton-Input__prefix\"\r\n )}\r\n >\r\n {prefix}\r\n </div>\r\n )}\r\n\r\n <input\r\n id={inputId}\r\n name={name}\r\n type={type}\r\n value={value}\r\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\r\n onChange?.(e.target.value);\r\n }}\r\n onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\r\n switch (e.key) {\r\n case \"Enter\":\r\n if (onSubmit) {\r\n e.preventDefault();\r\n onSubmit(e);\r\n }\r\n break;\r\n case \"Escape\":\r\n if (onClear) {\r\n e.preventDefault();\r\n onClear();\r\n }\r\n break;\r\n }\r\n }}\r\n onCopy={async () =>\r\n await copyTextToClipboard(inputRef.current?.value)\r\n }\r\n disabled={isDisabled}\r\n readOnly={isReadOnly}\r\n required={isRequired}\r\n autoFocus={autoFocus}\r\n autoComplete={autoComplete ? \"on\" : \"off\"}\r\n placeholder={label ? undefined : placeholder}\r\n aria-label={label || name}\r\n aria-invalid={Boolean(error)}\r\n aria-errormessage={typeof error === \"string\" ? error : errorId}\r\n aria-required={isRequired}\r\n aria-readonly={isReadOnly}\r\n aria-describedby={\r\n error ? errorId : description ? descriptionId : undefined\r\n }\r\n aria-disabled={isDisabled}\r\n data-testid={testId}\r\n ref={ref}\r\n className={csx(\r\n \"proton-Input\",\r\n error && \"proton-Input--error\",\r\n label && \"proton-Input__label-top\",\r\n className\r\n )}\r\n />\r\n\r\n <label\r\n htmlFor={inputId}\r\n className={csx(\r\n \"proton-Input__label\",\r\n value && \"proton-Input__label--filled\"\r\n )}\r\n >\r\n {label}\r\n {isRequired && <span aria-hidden=\"true\"> *</span>}\r\n </label>\r\n\r\n {suffix && (\r\n <div\r\n ref={suffixRef}\r\n className={csx(\r\n \"proton-Input__descriptor\",\r\n \"proton-Input__suffix\"\r\n )}\r\n >\r\n {suffix}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {error ? (\r\n <div\r\n role=\"alert\"\r\n className={csx(\"proton-Input__error\", \"proton-Input__text\")}\r\n id={errorId}\r\n >\r\n {error}\r\n </div>\r\n ) : description && descriptionPosition === \"bottom\" ? (\r\n <div\r\n id={descriptionId}\r\n className=\"proton-Input__text\"\r\n aria-live=\"polite\"\r\n >\r\n {description}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = \"ProtonUIInput\";\r\n"],"names":["Input","forwardRef","prefix","suffix","description","descriptionPosition","isDisabled","error","onChange","label","name","placeholder","type","value","autoFocus","autoComplete","isRequired","isReadOnly","onSubmit","onClear","testId","forwardedRef","inputRef","useRef","prefixRef","suffixRef","containerRef","className","useTheme","ref","useEffect","updateSizes","containerWidth","prefixWidth","_a","suffixWidth","_b","resizeObserver","inputId","errorId","descriptionId","jsxs","jsx","csx","e","copyTextToClipboard"],"mappings":"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"}
1
+ {"version":3,"file":"Input.es.js","sources":["../../../../src/components/Input/BaseInput/Input.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport React, { forwardRef, useEffect, useRef } from \"react\";\r\n\r\nimport { useTheme } from \"../../ThemeProvider\";\r\nimport { csx } from \"../../../utils\";\r\nimport \"./Input.css\";\r\nimport { copyTextToClipboard } from \"../../../utils/copy\";\r\n\r\nexport interface BaseInputProps {\r\n /**\r\n * onChange handler for the input\r\n */\r\n onChange?: (value: string) => void;\r\n\r\n /** Whether the input is disabled. */\r\n isDisabled?: boolean;\r\n\r\n /** Description text shown above the input. */\r\n description?: React.ReactNode | string;\r\n\r\n /**\r\n * The position of the description text.\r\n * @default \"top\"\r\n */\r\n descriptionPosition?: \"top\" | \"bottom\";\r\n\r\n /** Error state that changes the input's visual style and displays an error message. */\r\n error?: React.ReactNode | string;\r\n\r\n /**\r\n * Label for the input element.\r\n * @note When a label is provided, the input will have extra padding, and the label will float above the text input when focused or filled.\r\n */\r\n label?: string;\r\n\r\n /** Test ID for the component. */\r\n \"data-testid\"?: string;\r\n\r\n /** Content to display before the input. Typically used for icons. */\r\n prefix?: React.ReactNode;\r\n\r\n /** Content to display after the input. Typically used for icons. */\r\n suffix?: React.ReactNode;\r\n\r\n /**\r\n * Should the browser's autocomplete be enabled?\r\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete\r\n */\r\n autoComplete?: boolean;\r\n\r\n /**\r\n * Should the input be autofocused?\r\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autofocus\r\n */\r\n autoFocus?: boolean;\r\n\r\n /**\r\n * The name attribute of the input element.\r\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/name\r\n */\r\n name: string;\r\n\r\n /**\r\n * The placeholder text to display when the input is empty.\r\n * @note label takes precedence over placeholder, if both are provided.\r\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/placeholder\r\n */\r\n placeholder?: string;\r\n\r\n /**\r\n * The type attribute of the input element.\r\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/type\r\n * @default \"text\"\r\n */\r\n type?: string;\r\n\r\n /**\r\n * The value of the input.\r\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#value\r\n */\r\n value?: string;\r\n\r\n /**\r\n * Whether the input is required.\r\n * @default false\r\n */\r\n isRequired?: boolean;\r\n\r\n /**\r\n * Whether the input is read-only.\r\n * @default false\r\n */\r\n isReadOnly?: boolean;\r\n\r\n /**\r\n * Called when the input is submitted (e.g. by pressing Enter).\r\n */\r\n onSubmit?: React.FormEventHandler<HTMLInputElement>;\r\n\r\n /**\r\n * Called when the input is cleared (e.g. by pressing Escape).\r\n */\r\n onClear?: () => void;\r\n}\r\n\r\n/**\r\n * A controlled and customizable input component with support for labels, prefixes, suffixes, and error states.\r\n *\r\n * API:\r\n * - {@link BaseInputProps}\r\n */\r\nexport const Input = forwardRef<HTMLInputElement, BaseInputProps>(\r\n (\r\n {\r\n prefix,\r\n suffix,\r\n description,\r\n descriptionPosition = \"top\",\r\n isDisabled,\r\n error,\r\n onChange,\r\n label,\r\n name,\r\n placeholder,\r\n type = \"text\",\r\n value,\r\n autoFocus,\r\n autoComplete,\r\n isRequired = false,\r\n isReadOnly = false,\r\n onSubmit,\r\n onClear,\r\n \"data-testid\": testId,\r\n },\r\n forwardedRef: React.RefObject<HTMLInputElement>\r\n ) => {\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const prefixRef = useRef<HTMLDivElement>(null);\r\n const suffixRef = useRef<HTMLDivElement>(null);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const { className } = useTheme();\r\n const ref = forwardedRef || inputRef;\r\n\r\n // Control dynamic prefix and suffix widths using ResizeObserver\r\n useEffect(() => {\r\n if (!containerRef.current) return;\r\n\r\n const updateSizes = () => {\r\n if (containerRef.current) {\r\n const containerWidth = containerRef.current.offsetWidth || 200;\r\n containerRef.current.style.setProperty(\r\n \"--container-width\",\r\n `${containerWidth}px`\r\n );\r\n }\r\n\r\n if (prefixRef.current) {\r\n const prefixWidth = prefixRef.current.offsetWidth || 32;\r\n containerRef.current?.style.setProperty(\r\n \"--prefix-width\",\r\n `${prefixWidth}px`\r\n );\r\n }\r\n\r\n if (suffixRef.current) {\r\n const suffixWidth = suffixRef.current.offsetWidth || 32;\r\n containerRef.current?.style.setProperty(\r\n \"--suffix-width\",\r\n `${suffixWidth}px`\r\n );\r\n }\r\n };\r\n\r\n updateSizes();\r\n\r\n const resizeObserver = new ResizeObserver(updateSizes);\r\n\r\n if (containerRef.current) {\r\n resizeObserver.observe(containerRef.current);\r\n }\r\n if (prefixRef.current) {\r\n resizeObserver.observe(prefixRef.current);\r\n }\r\n if (suffixRef.current) {\r\n resizeObserver.observe(suffixRef.current);\r\n }\r\n\r\n return () => {\r\n resizeObserver.disconnect();\r\n };\r\n }, [prefix, suffix]);\r\n\r\n const inputId = `${name}-input`;\r\n const errorId = `${name}-error`;\r\n const descriptionId = `${name}-description`;\r\n\r\n return (\r\n <div ref={containerRef}>\r\n {description && descriptionPosition === \"top\" && (\r\n <div\r\n id={descriptionId}\r\n className=\"proton-Input__text\"\r\n aria-live=\"polite\"\r\n >\r\n {description}\r\n </div>\r\n )}\r\n <div className={csx(\r\n \"proton-Input__container-inner\",\r\n prefix && \"proton-Input__has-prefix\",\r\n suffix && \"proton-Input__has-suffix\"\r\n )}>\r\n {prefix && (\r\n <div\r\n ref={prefixRef}\r\n className={csx(\r\n \"proton-Input__descriptor\",\r\n \"proton-Input__prefix\"\r\n )}\r\n >\r\n {prefix}\r\n </div>\r\n )}\r\n\r\n <input\r\n id={inputId}\r\n name={name}\r\n type={type}\r\n value={value}\r\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\r\n onChange?.(e.target.value);\r\n }}\r\n onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\r\n switch (e.key) {\r\n case \"Enter\":\r\n if (onSubmit) {\r\n e.preventDefault();\r\n onSubmit(e);\r\n }\r\n break;\r\n case \"Escape\":\r\n if (onClear) {\r\n e.preventDefault();\r\n onClear();\r\n }\r\n break;\r\n }\r\n }}\r\n onCopy={async () =>\r\n await copyTextToClipboard(inputRef.current?.value)\r\n }\r\n disabled={isDisabled}\r\n readOnly={isReadOnly}\r\n required={isRequired}\r\n autoFocus={autoFocus}\r\n autoComplete={autoComplete ? \"on\" : \"off\"}\r\n placeholder={label ? undefined : placeholder}\r\n aria-label={label || name}\r\n aria-invalid={Boolean(error)}\r\n aria-errormessage={typeof error === \"string\" ? error : errorId}\r\n aria-required={isRequired}\r\n aria-readonly={isReadOnly}\r\n aria-describedby={\r\n error ? errorId : description ? descriptionId : undefined\r\n }\r\n aria-disabled={isDisabled}\r\n data-testid={testId}\r\n ref={ref}\r\n className={csx(\r\n \"proton-Input\",\r\n error && \"proton-Input--error\",\r\n label && \"proton-Input__label-top\",\r\n className\r\n )}\r\n />\r\n\r\n <label\r\n htmlFor={inputId}\r\n className={csx(\r\n \"proton-Input__label\",\r\n value && \"proton-Input__label--filled\"\r\n )}\r\n >\r\n {label}\r\n {isRequired && <span aria-hidden=\"true\"> *</span>}\r\n </label>\r\n\r\n {suffix && (\r\n <div\r\n ref={suffixRef}\r\n className={csx(\r\n \"proton-Input__descriptor\",\r\n \"proton-Input__suffix\"\r\n )}\r\n >\r\n {suffix}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {error ? (\r\n <div\r\n role=\"alert\"\r\n className={csx(\"proton-Input__error\", \"proton-Input__text\")}\r\n id={errorId}\r\n >\r\n {error}\r\n </div>\r\n ) : description && descriptionPosition === \"bottom\" ? (\r\n <div\r\n id={descriptionId}\r\n className=\"proton-Input__text\"\r\n aria-live=\"polite\"\r\n >\r\n {description}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = \"ProtonUIInput\";\r\n"],"names":["Input","forwardRef","prefix","suffix","description","descriptionPosition","isDisabled","error","onChange","label","name","placeholder","type","value","autoFocus","autoComplete","isRequired","isReadOnly","onSubmit","onClear","testId","forwardedRef","inputRef","useRef","prefixRef","suffixRef","containerRef","className","useTheme","ref","useEffect","updateSizes","containerWidth","prefixWidth","_a","suffixWidth","_b","resizeObserver","inputId","errorId","descriptionId","jsxs","jsx","csx","e","copyTextToClipboard"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../node_modules/react/jsx-runtime.cjs.js"),c=require("react");;/* empty css */const E=require("../BaseInput/Input.cjs.js"),S=require("../../../utils/string.cjs.js"),v=({name:l="search",placeholder:p="Search...",autoComplete:o,isClearable:d=!0,isDisabled:h=!1,error:j,defaultValue:m,value:s,"data-testid":x="proton-SearchInput",onChange:r,onClear:i})=>{const u=c.useRef(null),[a,n]=c.useState(s??m??"");c.useEffect(()=>{s!==void 0&&n(s)},[s]);const f=e=>{n(e),r==null||r(e)},R=()=>{var e;n(""),r==null||r(""),i==null||i(),(e=u.current)==null||e.focus()};return t.jsxRuntimeExports.jsx("div",{className:"proton-SearchInput__wrapper","data-testid":x,role:"search",children:t.jsxRuntimeExports.jsx(E.Input,{type:"search",onChange:f,value:a,name:l,placeholder:p,autoComplete:o,error:j,ref:u,isDisabled:h,prefix:t.jsxRuntimeExports.jsxs("svg",{"aria-hidden":"true",width:"2.8em",height:"1.6em",viewBox:"0 0 24 24",onClick:()=>{var e;return(e=u.current)==null?void 0:e.focus()},children:[t.jsxRuntimeExports.jsx("title",{children:"Magnifying Glass"}),t.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"M10.5 18.5a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm0-1a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5.25-.75 4.5 4.5-1.25 1.25-4.5-4.5 1.25-1.25Z"})]}),suffix:d&&a.length>0?t.jsxRuntimeExports.jsx("button",{type:"button",className:S.csx("proton-SearchInput__button","proton-Input__descriptor","proton-Input__suffix"),"data-testid":`${x}-clear`,onClick:R,"aria-label":"Clear search",children:t.jsxRuntimeExports.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 50 50",width:"3.2em",height:"1.2em",children:[t.jsxRuntimeExports.jsx("title",{children:"Clear"}),t.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"m37.304 11.282l1.414 1.414l-26.022 26.02l-1.414-1.413z"}),t.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"m12.696 11.282l26.022 26.02l-1.414 1.415l-26.022-26.02z"})]})}):null})})};exports.SearchInput=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../node_modules/react/jsx-runtime.cjs.js"),c=require("react");;/* empty css */const E=require("../BaseInput/Input.cjs.js"),S=require("../../../utils/string.cjs.js"),v=({name:l="search",placeholder:p="Search...",autoComplete:o,isClearable:d=!0,isDisabled:h=!1,error:j,defaultValue:m,value:s,"data-testid":x="proton-SearchInput",onChange:r,onClear:i})=>{const u=c.useRef(null),[a,n]=c.useState(s??m??"");c.useEffect(()=>{s!==void 0&&n(s)},[s]);const f=e=>{n(e),r==null||r(e)},R=()=>{var e;n(""),r==null||r(""),i==null||i(),(e=u.current)==null||e.focus()};return t.jsxRuntimeExports.jsx("div",{className:"proton-SearchInput__wrapper","data-testid":x,role:"search",children:t.jsxRuntimeExports.jsx(E.Input,{type:"search",onChange:f,value:a,name:l,placeholder:p,autoComplete:o,error:j,ref:u,isDisabled:h,prefix:t.jsxRuntimeExports.jsxs("svg",{"aria-hidden":"true",width:"2.8em",height:"1.6em",viewBox:"0 0 24 24",onClick:()=>{var e;return(e=u.current)==null?void 0:e.focus()},children:[t.jsxRuntimeExports.jsx("title",{children:"Magnifying Glass"}),t.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"M10.5 18.5a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm0-1a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5.25-.75 4.5 4.5-1.25 1.25-4.5-4.5 1.25-1.25Z"})]}),suffix:d&&a.length>0?t.jsxRuntimeExports.jsx("button",{type:"button",className:S.csx("proton-SearchInput__button","proton-Input__descriptor","proton-Input__suffix"),"data-testid":`${x}-clear`,onClick:R,"aria-label":"Clear search",children:t.jsxRuntimeExports.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 50 50",width:"1.6em",height:"1.2em",children:[t.jsxRuntimeExports.jsx("title",{children:"Clear"}),t.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"m37.304 11.282l1.414 1.414l-26.022 26.02l-1.414-1.413z"}),t.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"m12.696 11.282l26.022 26.02l-1.414 1.415l-26.022-26.02z"})]})}):null})})};exports.SearchInput=v;
2
2
  //# sourceMappingURL=SearchInput.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchInput.cjs.js","sources":["../../../../src/components/Input/SearchInput/SearchInput.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport \"./SearchInput.css\";\r\nimport { csx } from \"../../../utils\";\r\nimport { Input, type BaseInputProps } from \"../BaseInput/Input\";\r\n\r\nexport interface SearchInputProps\r\n extends Omit<\r\n BaseInputProps,\r\n | \"prefix\"\r\n | \"suffix\"\r\n | \"value\"\r\n | \"onChange\"\r\n | \"description\"\r\n | \"descriptionPosition\"\r\n | \"label\"\r\n > {\r\n /** The initial value of the input. */\r\n defaultValue?: string;\r\n\r\n /** Should the clear button be shown when there is text? */\r\n isClearable?: boolean;\r\n\r\n /** Called when the input value changes. */\r\n onChange?: (value: string) => void;\r\n\r\n /** Called when the clear button is clicked. */\r\n onClear?: () => void;\r\n\r\n /** The current value of the input (for controlled usage) */\r\n value?: string;\r\n}\r\n\r\n/**\r\n * A search input component with optional clear functionality and URL parameter sync.\r\n *\r\n * API:\r\n * - {@link SearchInputProps}\r\n * - extends {@link BaseInputProps}\r\n */\r\nexport const SearchInput = ({\r\n name = \"search\",\r\n placeholder = \"Search...\",\r\n autoComplete,\r\n isClearable = true,\r\n isDisabled = false,\r\n error,\r\n defaultValue,\r\n value: controlledValue,\r\n \"data-testid\": testId = \"proton-SearchInput\",\r\n onChange,\r\n onClear,\r\n}: SearchInputProps) => {\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const [value, setValue] = useState(controlledValue ?? defaultValue ?? \"\");\r\n\r\n // Sync with controlled value if provided\r\n useEffect(() => {\r\n if (controlledValue !== undefined) {\r\n setValue(controlledValue);\r\n }\r\n }, [controlledValue]);\r\n\r\n const handleChange = (newValue: string) => {\r\n setValue(newValue);\r\n onChange?.(newValue);\r\n };\r\n\r\n const handleClear = () => {\r\n setValue(\"\");\r\n onChange?.(\"\");\r\n onClear?.();\r\n inputRef.current?.focus();\r\n };\r\n\r\n return (\r\n <div\r\n className=\"proton-SearchInput__wrapper\"\r\n data-testid={testId}\r\n role=\"search\"\r\n >\r\n <Input\r\n type=\"search\"\r\n onChange={handleChange}\r\n value={value}\r\n name={name}\r\n placeholder={placeholder}\r\n autoComplete={autoComplete}\r\n error={error}\r\n ref={inputRef}\r\n isDisabled={isDisabled}\r\n prefix={\r\n <svg\r\n aria-hidden=\"true\"\r\n width=\"2.8em\"\r\n height=\"1.6em\"\r\n viewBox=\"0 0 24 24\"\r\n onClick={() => inputRef.current?.focus()}\r\n >\r\n <title>Magnifying Glass</title>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M10.5 18.5a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm0-1a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5.25-.75 4.5 4.5-1.25 1.25-4.5-4.5 1.25-1.25Z\"\r\n />\r\n </svg>\r\n }\r\n suffix={\r\n isClearable && value.length > 0 ? (\r\n <button\r\n type=\"button\"\r\n className={csx(\r\n \"proton-SearchInput__button\",\r\n \"proton-Input__descriptor\",\r\n \"proton-Input__suffix\"\r\n )}\r\n data-testid={`${testId}-clear`}\r\n onClick={handleClear}\r\n aria-label=\"Clear search\"\r\n >\r\n <svg\r\n aria-hidden=\"true\"\r\n viewBox=\"0 0 50 50\"\r\n width=\"3.2em\"\r\n height=\"1.2em\"\r\n >\r\n <title>Clear</title>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m37.304 11.282l1.414 1.414l-26.022 26.02l-1.414-1.413z\"\r\n />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m12.696 11.282l26.022 26.02l-1.414 1.415l-26.022-26.02z\"\r\n />\r\n </svg>\r\n </button>\r\n ) : null\r\n }\r\n />\r\n </div>\r\n );\r\n};\r\n"],"names":["SearchInput","name","placeholder","autoComplete","isClearable","isDisabled","error","defaultValue","controlledValue","testId","onChange","onClear","inputRef","useRef","value","setValue","useState","useEffect","handleChange","newValue","handleClear","_a","jsx","Input","jsxs","csx"],"mappings":"gSAyCaA,EAAc,CAAC,CAC1B,KAAAC,EAAO,SACP,YAAAC,EAAc,YACd,aAAAC,EACA,YAAAC,EAAc,GACd,WAAAC,EAAa,GACb,MAAAC,EACA,aAAAC,EACA,MAAOC,EACP,cAAeC,EAAS,qBACxB,SAAAC,EACA,QAAAC,CACF,IAAwB,CAChB,MAAAC,EAAWC,SAAyB,IAAI,EACxC,CAACC,EAAOC,CAAQ,EAAIC,EAAS,SAAAR,GAAmBD,GAAgB,EAAE,EAGxEU,EAAAA,UAAU,IAAM,CACVT,IAAoB,QACtBO,EAASP,CAAe,CAC1B,EACC,CAACA,CAAe,CAAC,EAEd,MAAAU,EAAgBC,GAAqB,CACzCJ,EAASI,CAAQ,EACjBT,GAAA,MAAAA,EAAWS,EAAQ,EAGfC,EAAc,IAAM,OACxBL,EAAS,EAAE,EACXL,GAAA,MAAAA,EAAW,IACDC,GAAA,MAAAA,KACVU,EAAAT,EAAS,UAAT,MAAAS,EAAkB,OAAM,EAIxB,OAAAC,EAAA,kBAAA,IAAC,MAAA,CACC,UAAU,8BACV,cAAab,EACb,KAAK,SAEL,SAAAa,EAAA,kBAAA,IAACC,EAAA,MAAA,CACC,KAAK,SACL,SAAUL,EACV,MAAAJ,EACA,KAAAb,EACA,YAAAC,EACA,aAAAC,EACA,MAAAG,EACA,IAAKM,EACL,WAAAP,EACA,OACEmB,EAAA,kBAAA,KAAC,MAAA,CACC,cAAY,OACZ,MAAM,QACN,OAAO,QACP,QAAQ,YACR,QAAS,IAAM,OAAA,OAAAH,EAAAT,EAAS,UAAT,YAAAS,EAAkB,SAEjC,SAAA,CAAAC,EAAAA,kBAAAA,IAAC,SAAM,SAAgB,kBAAA,CAAA,EACvBA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,4HAAA,CACJ,CAAA,CAAA,CACF,EAEF,OACElB,GAAeU,EAAM,OAAS,EAC5BQ,EAAA,kBAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWG,EAAA,IACT,6BACA,2BACA,sBACF,EACA,cAAa,GAAGhB,CAAM,SACtB,QAASW,EACT,aAAW,eAEX,SAAAI,EAAA,kBAAA,KAAC,MAAA,CACC,cAAY,OACZ,QAAQ,YACR,MAAM,QACN,OAAO,QAEP,SAAA,CAAAF,EAAAA,kBAAAA,IAAC,SAAM,SAAK,OAAA,CAAA,EACZA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,wDAAA,CACJ,EACAA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,yDAAA,CACJ,CAAA,CAAA,CACF,CAAA,CAAA,EAEA,IAAA,CAER,CAAA,CAAA,CAGN"}
1
+ {"version":3,"file":"SearchInput.cjs.js","sources":["../../../../src/components/Input/SearchInput/SearchInput.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport \"./SearchInput.css\";\r\nimport { csx } from \"../../../utils\";\r\nimport { Input, type BaseInputProps } from \"../BaseInput/Input\";\r\n\r\nexport interface SearchInputProps\r\n extends Omit<\r\n BaseInputProps,\r\n | \"prefix\"\r\n | \"suffix\"\r\n | \"value\"\r\n | \"onChange\"\r\n | \"description\"\r\n | \"descriptionPosition\"\r\n | \"label\"\r\n > {\r\n /** The initial value of the input. */\r\n defaultValue?: string;\r\n\r\n /** Should the clear button be shown when there is text? */\r\n isClearable?: boolean;\r\n\r\n /** Called when the input value changes. */\r\n onChange?: (value: string) => void;\r\n\r\n /** Called when the clear button is clicked. */\r\n onClear?: () => void;\r\n\r\n /** The current value of the input (for controlled usage) */\r\n value?: string;\r\n}\r\n\r\n/**\r\n * A search input component with optional clear functionality and URL parameter sync.\r\n *\r\n * API:\r\n * - {@link SearchInputProps}\r\n * - extends {@link BaseInputProps}\r\n */\r\nexport const SearchInput = ({\r\n name = \"search\",\r\n placeholder = \"Search...\",\r\n autoComplete,\r\n isClearable = true,\r\n isDisabled = false,\r\n error,\r\n defaultValue,\r\n value: controlledValue,\r\n \"data-testid\": testId = \"proton-SearchInput\",\r\n onChange,\r\n onClear,\r\n}: SearchInputProps) => {\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const [value, setValue] = useState(controlledValue ?? defaultValue ?? \"\");\r\n\r\n // Sync with controlled value if provided\r\n useEffect(() => {\r\n if (controlledValue !== undefined) {\r\n setValue(controlledValue);\r\n }\r\n }, [controlledValue]);\r\n\r\n const handleChange = (newValue: string) => {\r\n setValue(newValue);\r\n onChange?.(newValue);\r\n };\r\n\r\n const handleClear = () => {\r\n setValue(\"\");\r\n onChange?.(\"\");\r\n onClear?.();\r\n inputRef.current?.focus();\r\n };\r\n\r\n return (\r\n <div\r\n className=\"proton-SearchInput__wrapper\"\r\n data-testid={testId}\r\n role=\"search\"\r\n >\r\n <Input\r\n type=\"search\"\r\n onChange={handleChange}\r\n value={value}\r\n name={name}\r\n placeholder={placeholder}\r\n autoComplete={autoComplete}\r\n error={error}\r\n ref={inputRef}\r\n isDisabled={isDisabled}\r\n prefix={\r\n <svg\r\n aria-hidden=\"true\"\r\n width=\"2.8em\"\r\n height=\"1.6em\"\r\n viewBox=\"0 0 24 24\"\r\n onClick={() => inputRef.current?.focus()}\r\n >\r\n <title>Magnifying Glass</title>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M10.5 18.5a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm0-1a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5.25-.75 4.5 4.5-1.25 1.25-4.5-4.5 1.25-1.25Z\"\r\n />\r\n </svg>\r\n }\r\n suffix={\r\n isClearable && value.length > 0 ? (\r\n <button\r\n type=\"button\"\r\n className={csx(\r\n \"proton-SearchInput__button\",\r\n \"proton-Input__descriptor\",\r\n \"proton-Input__suffix\"\r\n )}\r\n data-testid={`${testId}-clear`}\r\n onClick={handleClear}\r\n aria-label=\"Clear search\"\r\n >\r\n <svg\r\n aria-hidden=\"true\"\r\n viewBox=\"0 0 50 50\"\r\n width=\"1.6em\"\r\n height=\"1.2em\"\r\n >\r\n <title>Clear</title>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m37.304 11.282l1.414 1.414l-26.022 26.02l-1.414-1.413z\"\r\n />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m12.696 11.282l26.022 26.02l-1.414 1.415l-26.022-26.02z\"\r\n />\r\n </svg>\r\n </button>\r\n ) : null\r\n }\r\n />\r\n </div>\r\n );\r\n};\r\n"],"names":["SearchInput","name","placeholder","autoComplete","isClearable","isDisabled","error","defaultValue","controlledValue","testId","onChange","onClear","inputRef","useRef","value","setValue","useState","useEffect","handleChange","newValue","handleClear","_a","jsx","Input","jsxs","csx"],"mappings":"gSAyCaA,EAAc,CAAC,CAC1B,KAAAC,EAAO,SACP,YAAAC,EAAc,YACd,aAAAC,EACA,YAAAC,EAAc,GACd,WAAAC,EAAa,GACb,MAAAC,EACA,aAAAC,EACA,MAAOC,EACP,cAAeC,EAAS,qBACxB,SAAAC,EACA,QAAAC,CACF,IAAwB,CAChB,MAAAC,EAAWC,SAAyB,IAAI,EACxC,CAACC,EAAOC,CAAQ,EAAIC,EAAS,SAAAR,GAAmBD,GAAgB,EAAE,EAGxEU,EAAAA,UAAU,IAAM,CACVT,IAAoB,QACtBO,EAASP,CAAe,CAC1B,EACC,CAACA,CAAe,CAAC,EAEd,MAAAU,EAAgBC,GAAqB,CACzCJ,EAASI,CAAQ,EACjBT,GAAA,MAAAA,EAAWS,EAAQ,EAGfC,EAAc,IAAM,OACxBL,EAAS,EAAE,EACXL,GAAA,MAAAA,EAAW,IACDC,GAAA,MAAAA,KACVU,EAAAT,EAAS,UAAT,MAAAS,EAAkB,OAAM,EAIxB,OAAAC,EAAA,kBAAA,IAAC,MAAA,CACC,UAAU,8BACV,cAAab,EACb,KAAK,SAEL,SAAAa,EAAA,kBAAA,IAACC,EAAA,MAAA,CACC,KAAK,SACL,SAAUL,EACV,MAAAJ,EACA,KAAAb,EACA,YAAAC,EACA,aAAAC,EACA,MAAAG,EACA,IAAKM,EACL,WAAAP,EACA,OACEmB,EAAA,kBAAA,KAAC,MAAA,CACC,cAAY,OACZ,MAAM,QACN,OAAO,QACP,QAAQ,YACR,QAAS,IAAM,OAAA,OAAAH,EAAAT,EAAS,UAAT,YAAAS,EAAkB,SAEjC,SAAA,CAAAC,EAAAA,kBAAAA,IAAC,SAAM,SAAgB,kBAAA,CAAA,EACvBA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,4HAAA,CACJ,CAAA,CAAA,CACF,EAEF,OACElB,GAAeU,EAAM,OAAS,EAC5BQ,EAAA,kBAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWG,EAAA,IACT,6BACA,2BACA,sBACF,EACA,cAAa,GAAGhB,CAAM,SACtB,QAASW,EACT,aAAW,eAEX,SAAAI,EAAA,kBAAA,KAAC,MAAA,CACC,cAAY,OACZ,QAAQ,YACR,MAAM,QACN,OAAO,QAEP,SAAA,CAAAF,EAAAA,kBAAAA,IAAC,SAAM,SAAK,OAAA,CAAA,EACZA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,wDAAA,CACJ,EACAA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,yDAAA,CACJ,CAAA,CAAA,CACF,CAAA,CAAA,EAEA,IAAA,CAER,CAAA,CAAA,CAGN"}
@@ -84,7 +84,7 @@ const z = ({
84
84
  {
85
85
  "aria-hidden": "true",
86
86
  viewBox: "0 0 50 50",
87
- width: "3.2em",
87
+ width: "1.6em",
88
88
  height: "1.2em",
89
89
  children: [
90
90
  /* @__PURE__ */ t.jsx("title", { children: "Clear" }),
@@ -1 +1 @@
1
- {"version":3,"file":"SearchInput.es.js","sources":["../../../../src/components/Input/SearchInput/SearchInput.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport \"./SearchInput.css\";\r\nimport { csx } from \"../../../utils\";\r\nimport { Input, type BaseInputProps } from \"../BaseInput/Input\";\r\n\r\nexport interface SearchInputProps\r\n extends Omit<\r\n BaseInputProps,\r\n | \"prefix\"\r\n | \"suffix\"\r\n | \"value\"\r\n | \"onChange\"\r\n | \"description\"\r\n | \"descriptionPosition\"\r\n | \"label\"\r\n > {\r\n /** The initial value of the input. */\r\n defaultValue?: string;\r\n\r\n /** Should the clear button be shown when there is text? */\r\n isClearable?: boolean;\r\n\r\n /** Called when the input value changes. */\r\n onChange?: (value: string) => void;\r\n\r\n /** Called when the clear button is clicked. */\r\n onClear?: () => void;\r\n\r\n /** The current value of the input (for controlled usage) */\r\n value?: string;\r\n}\r\n\r\n/**\r\n * A search input component with optional clear functionality and URL parameter sync.\r\n *\r\n * API:\r\n * - {@link SearchInputProps}\r\n * - extends {@link BaseInputProps}\r\n */\r\nexport const SearchInput = ({\r\n name = \"search\",\r\n placeholder = \"Search...\",\r\n autoComplete,\r\n isClearable = true,\r\n isDisabled = false,\r\n error,\r\n defaultValue,\r\n value: controlledValue,\r\n \"data-testid\": testId = \"proton-SearchInput\",\r\n onChange,\r\n onClear,\r\n}: SearchInputProps) => {\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const [value, setValue] = useState(controlledValue ?? defaultValue ?? \"\");\r\n\r\n // Sync with controlled value if provided\r\n useEffect(() => {\r\n if (controlledValue !== undefined) {\r\n setValue(controlledValue);\r\n }\r\n }, [controlledValue]);\r\n\r\n const handleChange = (newValue: string) => {\r\n setValue(newValue);\r\n onChange?.(newValue);\r\n };\r\n\r\n const handleClear = () => {\r\n setValue(\"\");\r\n onChange?.(\"\");\r\n onClear?.();\r\n inputRef.current?.focus();\r\n };\r\n\r\n return (\r\n <div\r\n className=\"proton-SearchInput__wrapper\"\r\n data-testid={testId}\r\n role=\"search\"\r\n >\r\n <Input\r\n type=\"search\"\r\n onChange={handleChange}\r\n value={value}\r\n name={name}\r\n placeholder={placeholder}\r\n autoComplete={autoComplete}\r\n error={error}\r\n ref={inputRef}\r\n isDisabled={isDisabled}\r\n prefix={\r\n <svg\r\n aria-hidden=\"true\"\r\n width=\"2.8em\"\r\n height=\"1.6em\"\r\n viewBox=\"0 0 24 24\"\r\n onClick={() => inputRef.current?.focus()}\r\n >\r\n <title>Magnifying Glass</title>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M10.5 18.5a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm0-1a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5.25-.75 4.5 4.5-1.25 1.25-4.5-4.5 1.25-1.25Z\"\r\n />\r\n </svg>\r\n }\r\n suffix={\r\n isClearable && value.length > 0 ? (\r\n <button\r\n type=\"button\"\r\n className={csx(\r\n \"proton-SearchInput__button\",\r\n \"proton-Input__descriptor\",\r\n \"proton-Input__suffix\"\r\n )}\r\n data-testid={`${testId}-clear`}\r\n onClick={handleClear}\r\n aria-label=\"Clear search\"\r\n >\r\n <svg\r\n aria-hidden=\"true\"\r\n viewBox=\"0 0 50 50\"\r\n width=\"3.2em\"\r\n height=\"1.2em\"\r\n >\r\n <title>Clear</title>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m37.304 11.282l1.414 1.414l-26.022 26.02l-1.414-1.413z\"\r\n />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m12.696 11.282l26.022 26.02l-1.414 1.415l-26.022-26.02z\"\r\n />\r\n </svg>\r\n </button>\r\n ) : null\r\n }\r\n />\r\n </div>\r\n );\r\n};\r\n"],"names":["SearchInput","name","placeholder","autoComplete","isClearable","isDisabled","error","defaultValue","controlledValue","testId","onChange","onClear","inputRef","useRef","value","setValue","useState","useEffect","handleChange","newValue","handleClear","_a","jsx","Input","jsxs","csx"],"mappings":";;;;;AAyCO,MAAMA,IAAc,CAAC;AAAA,EAC1B,MAAAC,IAAO;AAAA,EACP,aAAAC,IAAc;AAAA,EACd,cAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,YAAAC,IAAa;AAAA,EACb,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAOC;AAAA,EACP,eAAeC,IAAS;AAAA,EACxB,UAAAC;AAAA,EACA,SAAAC;AACF,MAAwB;AAChB,QAAAC,IAAWC,EAAyB,IAAI,GACxC,CAACC,GAAOC,CAAQ,IAAIC,EAASR,KAAmBD,KAAgB,EAAE;AAGxE,EAAAU,EAAU,MAAM;AACd,IAAIT,MAAoB,UACtBO,EAASP,CAAe;AAAA,EAC1B,GACC,CAACA,CAAe,CAAC;AAEd,QAAAU,IAAe,CAACC,MAAqB;AACzC,IAAAJ,EAASI,CAAQ,GACjBT,KAAA,QAAAA,EAAWS;AAAA,EAAQ,GAGfC,IAAc,MAAM;;AACxB,IAAAL,EAAS,EAAE,GACXL,KAAA,QAAAA,EAAW,KACDC,KAAA,QAAAA,MACVU,IAAAT,EAAS,YAAT,QAAAS,EAAkB;AAAA,EAAM;AAIxB,SAAAC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAab;AAAA,MACb,MAAK;AAAA,MAEL,UAAAa,gBAAAA,EAAA;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,UAAUL;AAAA,UACV,OAAAJ;AAAA,UACA,MAAAb;AAAA,UACA,aAAAC;AAAA,UACA,cAAAC;AAAA,UACA,OAAAG;AAAA,UACA,KAAKM;AAAA,UACL,YAAAP;AAAA,UACA,QACEmB,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,eAAY;AAAA,cACZ,OAAM;AAAA,cACN,QAAO;AAAA,cACP,SAAQ;AAAA,cACR,SAAS,MAAM;;AAAA,wBAAAH,IAAAT,EAAS,YAAT,gBAAAS,EAAkB;AAAA;AAAA,cAEjC,UAAA;AAAA,gBAAAC,gBAAAA,EAAAA,IAAC,WAAM,UAAgB,mBAAA,CAAA;AAAA,gBACvBA,gBAAAA,EAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,GAAE;AAAA,kBAAA;AAAA,gBACJ;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,UAEF,QACElB,KAAeU,EAAM,SAAS,IAC5BQ,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAWG;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,cACA,eAAa,GAAGhB,CAAM;AAAA,cACtB,SAASW;AAAA,cACT,cAAW;AAAA,cAEX,UAAAI,gBAAAA,EAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,eAAY;AAAA,kBACZ,SAAQ;AAAA,kBACR,OAAM;AAAA,kBACN,QAAO;AAAA,kBAEP,UAAA;AAAA,oBAAAF,gBAAAA,EAAAA,IAAC,WAAM,UAAK,QAAA,CAAA;AAAA,oBACZA,gBAAAA,EAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,GAAE;AAAA,sBAAA;AAAA,oBACJ;AAAA,oBACAA,gBAAAA,EAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,GAAE;AAAA,sBAAA;AAAA,oBACJ;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,UAAA,IAEA;AAAA,QAAA;AAAA,MAER;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"SearchInput.es.js","sources":["../../../../src/components/Input/SearchInput/SearchInput.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport \"./SearchInput.css\";\r\nimport { csx } from \"../../../utils\";\r\nimport { Input, type BaseInputProps } from \"../BaseInput/Input\";\r\n\r\nexport interface SearchInputProps\r\n extends Omit<\r\n BaseInputProps,\r\n | \"prefix\"\r\n | \"suffix\"\r\n | \"value\"\r\n | \"onChange\"\r\n | \"description\"\r\n | \"descriptionPosition\"\r\n | \"label\"\r\n > {\r\n /** The initial value of the input. */\r\n defaultValue?: string;\r\n\r\n /** Should the clear button be shown when there is text? */\r\n isClearable?: boolean;\r\n\r\n /** Called when the input value changes. */\r\n onChange?: (value: string) => void;\r\n\r\n /** Called when the clear button is clicked. */\r\n onClear?: () => void;\r\n\r\n /** The current value of the input (for controlled usage) */\r\n value?: string;\r\n}\r\n\r\n/**\r\n * A search input component with optional clear functionality and URL parameter sync.\r\n *\r\n * API:\r\n * - {@link SearchInputProps}\r\n * - extends {@link BaseInputProps}\r\n */\r\nexport const SearchInput = ({\r\n name = \"search\",\r\n placeholder = \"Search...\",\r\n autoComplete,\r\n isClearable = true,\r\n isDisabled = false,\r\n error,\r\n defaultValue,\r\n value: controlledValue,\r\n \"data-testid\": testId = \"proton-SearchInput\",\r\n onChange,\r\n onClear,\r\n}: SearchInputProps) => {\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const [value, setValue] = useState(controlledValue ?? defaultValue ?? \"\");\r\n\r\n // Sync with controlled value if provided\r\n useEffect(() => {\r\n if (controlledValue !== undefined) {\r\n setValue(controlledValue);\r\n }\r\n }, [controlledValue]);\r\n\r\n const handleChange = (newValue: string) => {\r\n setValue(newValue);\r\n onChange?.(newValue);\r\n };\r\n\r\n const handleClear = () => {\r\n setValue(\"\");\r\n onChange?.(\"\");\r\n onClear?.();\r\n inputRef.current?.focus();\r\n };\r\n\r\n return (\r\n <div\r\n className=\"proton-SearchInput__wrapper\"\r\n data-testid={testId}\r\n role=\"search\"\r\n >\r\n <Input\r\n type=\"search\"\r\n onChange={handleChange}\r\n value={value}\r\n name={name}\r\n placeholder={placeholder}\r\n autoComplete={autoComplete}\r\n error={error}\r\n ref={inputRef}\r\n isDisabled={isDisabled}\r\n prefix={\r\n <svg\r\n aria-hidden=\"true\"\r\n width=\"2.8em\"\r\n height=\"1.6em\"\r\n viewBox=\"0 0 24 24\"\r\n onClick={() => inputRef.current?.focus()}\r\n >\r\n <title>Magnifying Glass</title>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M10.5 18.5a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm0-1a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5.25-.75 4.5 4.5-1.25 1.25-4.5-4.5 1.25-1.25Z\"\r\n />\r\n </svg>\r\n }\r\n suffix={\r\n isClearable && value.length > 0 ? (\r\n <button\r\n type=\"button\"\r\n className={csx(\r\n \"proton-SearchInput__button\",\r\n \"proton-Input__descriptor\",\r\n \"proton-Input__suffix\"\r\n )}\r\n data-testid={`${testId}-clear`}\r\n onClick={handleClear}\r\n aria-label=\"Clear search\"\r\n >\r\n <svg\r\n aria-hidden=\"true\"\r\n viewBox=\"0 0 50 50\"\r\n width=\"1.6em\"\r\n height=\"1.2em\"\r\n >\r\n <title>Clear</title>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m37.304 11.282l1.414 1.414l-26.022 26.02l-1.414-1.413z\"\r\n />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m12.696 11.282l26.022 26.02l-1.414 1.415l-26.022-26.02z\"\r\n />\r\n </svg>\r\n </button>\r\n ) : null\r\n }\r\n />\r\n </div>\r\n );\r\n};\r\n"],"names":["SearchInput","name","placeholder","autoComplete","isClearable","isDisabled","error","defaultValue","controlledValue","testId","onChange","onClear","inputRef","useRef","value","setValue","useState","useEffect","handleChange","newValue","handleClear","_a","jsx","Input","jsxs","csx"],"mappings":";;;;;AAyCO,MAAMA,IAAc,CAAC;AAAA,EAC1B,MAAAC,IAAO;AAAA,EACP,aAAAC,IAAc;AAAA,EACd,cAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,YAAAC,IAAa;AAAA,EACb,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAOC;AAAA,EACP,eAAeC,IAAS;AAAA,EACxB,UAAAC;AAAA,EACA,SAAAC;AACF,MAAwB;AAChB,QAAAC,IAAWC,EAAyB,IAAI,GACxC,CAACC,GAAOC,CAAQ,IAAIC,EAASR,KAAmBD,KAAgB,EAAE;AAGxE,EAAAU,EAAU,MAAM;AACd,IAAIT,MAAoB,UACtBO,EAASP,CAAe;AAAA,EAC1B,GACC,CAACA,CAAe,CAAC;AAEd,QAAAU,IAAe,CAACC,MAAqB;AACzC,IAAAJ,EAASI,CAAQ,GACjBT,KAAA,QAAAA,EAAWS;AAAA,EAAQ,GAGfC,IAAc,MAAM;;AACxB,IAAAL,EAAS,EAAE,GACXL,KAAA,QAAAA,EAAW,KACDC,KAAA,QAAAA,MACVU,IAAAT,EAAS,YAAT,QAAAS,EAAkB;AAAA,EAAM;AAIxB,SAAAC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAab;AAAA,MACb,MAAK;AAAA,MAEL,UAAAa,gBAAAA,EAAA;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,UAAUL;AAAA,UACV,OAAAJ;AAAA,UACA,MAAAb;AAAA,UACA,aAAAC;AAAA,UACA,cAAAC;AAAA,UACA,OAAAG;AAAA,UACA,KAAKM;AAAA,UACL,YAAAP;AAAA,UACA,QACEmB,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,eAAY;AAAA,cACZ,OAAM;AAAA,cACN,QAAO;AAAA,cACP,SAAQ;AAAA,cACR,SAAS,MAAM;;AAAA,wBAAAH,IAAAT,EAAS,YAAT,gBAAAS,EAAkB;AAAA;AAAA,cAEjC,UAAA;AAAA,gBAAAC,gBAAAA,EAAAA,IAAC,WAAM,UAAgB,mBAAA,CAAA;AAAA,gBACvBA,gBAAAA,EAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,GAAE;AAAA,kBAAA;AAAA,gBACJ;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,UAEF,QACElB,KAAeU,EAAM,SAAS,IAC5BQ,gBAAAA,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAWG;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,cACA,eAAa,GAAGhB,CAAM;AAAA,cACtB,SAASW;AAAA,cACT,cAAW;AAAA,cAEX,UAAAI,gBAAAA,EAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,eAAY;AAAA,kBACZ,SAAQ;AAAA,kBACR,OAAM;AAAA,kBACN,QAAO;AAAA,kBAEP,UAAA;AAAA,oBAAAF,gBAAAA,EAAAA,IAAC,WAAM,UAAK,QAAA,CAAA;AAAA,oBACZA,gBAAAA,EAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,GAAE;AAAA,sBAAA;AAAA,oBACJ;AAAA,oBACAA,gBAAAA,EAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,GAAE;AAAA,sBAAA;AAAA,oBACJ;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,UAAA,IAEA;AAAA,QAAA;AAAA,MAER;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../node_modules/react/jsx-runtime.cjs.js"),g=require("react"),v=require("../../node_modules/react-aria-components/dist/Button.cjs.js"),B=require("../../hooks/useBreakpoint.cjs.js"),P=require("../ActionMenu/ActionMenu.cjs.js");;/* empty css */const b=require("../../node_modules/@react-aria/menu/dist/useMenuTrigger.cjs.js"),A=require("../../node_modules/@react-stately/menu/dist/useMenuTriggerState.cjs.js"),O=require("./PopoverMenu.cjs.js"),k=require("../../utils/string.cjs.js"),I=require("../../constants/breakpoint.cjs.js");function w({renderTrigger:r,size:T=24,title:x,items:p,disabled:a,onClose:s,triggerTestId:d="MenuTrigger-Trigger",menuTestId:q,onSelectionChange:u,selectedKey:o,disabledKeys:m}){const M=g.useMemo(()=>p.map(i=>({...i,id:i.key})),[p]),j=B.useBreakpoint(I.BREAKPOINTS.SMALL),f=A.useMenuTriggerState({}),{isOpen:t,setOpen:c}=f,n=g.useRef(null),{menuTriggerProps:E,menuProps:z}=b.useMenuTrigger({},f,n);function l(i){const R=Array.from(i)[0];R&&(u==null||u(R))}const h=e.jsxRuntimeExports.jsx(v.Button,{...E,"data-testid":d,isDisabled:a,className:k.csx("proton-MenuTrigger__button"),ref:n,children:e.jsxRuntimeExports.jsx(y,{size:T})}),S=r?r({isOpen:t,setIsOpen:c,disabled:a,triggerRef:n}):h;return g.useEffect(()=>()=>{t&&(s==null||s())},[t,s]),e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[S,t&&j&&e.jsxRuntimeExports.jsx(P.ActionMenu,{actions:M,title:x,isOpen:t,onClose:()=>c(!1),showCancel:!0,"data-testid":q,selectionMode:"single",onSelectionChange:l,selectedKeys:o?[o]:void 0,disabledKeys:m}),t&&!j&&e.jsxRuntimeExports.jsx(O.PopoverMenu,{isOpen:t,setIsOpen:c,items:M,selectedKey:o,disabledKeys:m,title:x,onSelectionChange:l,triggerRef:n})]})}const y=({size:r})=>e.jsxRuntimeExports.jsx("svg",{viewBox:"0 0 24 24",width:r,height:r,children:e.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"M4 14c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm8 0c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm8 0c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"})});exports.MenuTrigger=w;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../node_modules/react/jsx-runtime.cjs.js"),c=require("react"),q=require("../../hooks/useBreakpoint.cjs.js"),b=require("../ActionMenu/ActionMenu.cjs.js"),v=require("./PopoverMenu.cjs.js");;/* empty css */;/* empty css */const T=require("../../constants/breakpoint.cjs.js");function k({renderTrigger:r,size:R=24,title:x,items:a,disabled:p,onClose:i,triggerTestId:f="MenuTrigger-Trigger",menuTestId:d,onSelectionChange:o,selectedKey:u,disabledKeys:g}){const E=q.useBreakpoint(T.BREAKPOINTS.SMALL),[s,n]=c.useState(!1),h=c.useRef(null),m=c.useMemo(()=>a.map(t=>({...t,id:t.key})),[a]),j=t=>{o==null||o(t),n(!1)},l=r?r({isOpen:s,disabled:p,setIsOpen:n}):e.jsxRuntimeExports.jsx("button",{"data-testid":f,disabled:p,className:"proton-MenuTrigger__button",ref:h,onClick:()=>n(!s),type:"button",children:e.jsxRuntimeExports.jsx(A,{size:R})});return E?e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[l,s&&e.jsxRuntimeExports.jsx(b.ActionMenu,{actions:m,title:x,isOpen:s,onClose:()=>{n(!1),i==null||i()},showCancel:!0,"data-testid":d,selectionMode:"single",onSelectionChange:t=>{const M=Array.from(t)[0];M&&j(M)},selectedKeys:u?[u]:void 0,disabledKeys:g})]}):e.jsxRuntimeExports.jsx(v.PopoverMenu,{trigger:l,items:m,isOpen:s,onOpenChange:n,selectedKey:u,onSelectionChange:j,disabledKeys:g,title:x})}const A=({size:r})=>e.jsxRuntimeExports.jsx("svg",{viewBox:"0 0 24 24",width:r,height:r,children:e.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"M4 14c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm8 0c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm8 0c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"})});exports.MenuTrigger=k;
2
2
  //# sourceMappingURL=MenuTrigger.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuTrigger.cjs.js","sources":["../../../src/components/Menu/MenuTrigger.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { ReactNode, useEffect, useMemo, useRef } from \"react\";\r\n\r\nimport { Button as AriaButton, Selection } from \"react-aria-components\";\r\nimport { BREAKPOINTS } from \"../../constants\";\r\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\r\nimport { ActionMenu, ActionMenuAction } from \"../ActionMenu/ActionMenu\";\r\n\r\nimport { csx } from \"../../utils\";\r\n\r\nimport \"./MenuTrigger.css\";\r\n\r\nimport { useMenuTrigger } from \"@react-aria/menu\";\r\nimport { useMenuTriggerState } from \"@react-stately/menu\";\r\nimport { PopoverMenu } from \"./PopoverMenu\";\r\n\r\ninterface TriggerProps {\r\n disabled?: boolean;\r\n isOpen?: boolean;\r\n setIsOpen?: (isOpen: boolean) => void;\r\n triggerRef: React.RefObject<HTMLButtonElement>;\r\n}\r\n\r\nexport interface MenuProps {\r\n /** Custom trigger component. If not provided, defaults to ellipsis icon.\r\n * - @prop triggerProps {@link TriggerProps}\r\n */\r\n renderTrigger?: (triggerProps: TriggerProps) => ReactNode;\r\n\r\n /** Size of the trigger icon\r\n * @default 24\r\n */\r\n size?: number;\r\n\r\n /** Title of the parent menu */\r\n title?: string;\r\n\r\n /** Array of menu actions/items to display\r\n * - type {@link ActionMenuAction}[]\r\n */\r\n items: ActionMenuAction[];\r\n\r\n /** Whether the menu is disabled\r\n * @default false\r\n */\r\n disabled?: boolean;\r\n\r\n /** Callback when menu closes */\r\n onClose?: () => void;\r\n\r\n /** Test ID for the trigger component */\r\n triggerTestId?: string;\r\n\r\n /** Test ID for the menu */\r\n menuTestId?: string;\r\n\r\n /** Callback when a menu item is selected */\r\n onSelectionChange?: (key: string) => void;\r\n\r\n /** The key of the selected item */\r\n selectedKey?: string;\r\n\r\n /** The keys of the disabled items */\r\n disabledKeys?: string[];\r\n}\r\n\r\n/**\r\n * A component that displays either a popover menu or an action menu\r\n * depending on the screen size when the menu trigger is pressed.\r\n *\r\n * API:\r\n * - {@link MenuProps}\r\n */\r\nexport function MenuTrigger({\r\n renderTrigger,\r\n size = 24,\r\n title,\r\n items,\r\n disabled,\r\n onClose,\r\n triggerTestId = \"MenuTrigger-Trigger\",\r\n menuTestId,\r\n onSelectionChange,\r\n selectedKey,\r\n disabledKeys,\r\n}: MenuProps) {\r\n const menuItems = useMemo(\r\n () => items.map((item) => ({ ...item, id: item.key })),\r\n [items]\r\n );\r\n const isMobile = useBreakpoint(BREAKPOINTS.SMALL);\r\n\r\n const menuState = useMenuTriggerState({});\r\n const { isOpen, setOpen: setIsOpen } = menuState;\r\n const triggerRef = useRef(null);\r\n const { menuTriggerProps, menuProps } = useMenuTrigger<ActionMenuAction>(\r\n {},\r\n menuState,\r\n triggerRef\r\n );\r\n\r\n function handleSingleSelectionChange(key: Selection) {\r\n const nextKey = Array.from(key)[0];\r\n if (nextKey) {\r\n onSelectionChange?.(nextKey as string);\r\n }\r\n }\r\n\r\n const defaultTrigger = (\r\n <AriaButton\r\n {...menuTriggerProps}\r\n data-testid={triggerTestId}\r\n isDisabled={disabled}\r\n className={csx(\"proton-MenuTrigger__button\")}\r\n ref={triggerRef}\r\n >\r\n <EllipsisIcon size={size} />\r\n </AriaButton>\r\n );\r\n\r\n const TriggerComponent = renderTrigger\r\n ? renderTrigger({\r\n isOpen,\r\n setIsOpen,\r\n disabled,\r\n triggerRef,\r\n })\r\n : defaultTrigger;\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (isOpen) {\r\n onClose?.();\r\n }\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n return (\r\n <>\r\n {TriggerComponent}\r\n\r\n {isOpen && isMobile && (\r\n <ActionMenu\r\n actions={menuItems}\r\n title={title}\r\n isOpen={isOpen}\r\n onClose={() => setIsOpen(false)}\r\n showCancel\r\n data-testid={menuTestId}\r\n selectionMode=\"single\"\r\n onSelectionChange={handleSingleSelectionChange}\r\n selectedKeys={selectedKey ? [selectedKey] : undefined}\r\n disabledKeys={disabledKeys}\r\n />\r\n )}\r\n\r\n {isOpen && !isMobile && (\r\n <PopoverMenu\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n items={menuItems}\r\n selectedKey={selectedKey}\r\n disabledKeys={disabledKeys}\r\n title={title}\r\n onSelectionChange={handleSingleSelectionChange}\r\n triggerRef={triggerRef}\r\n />\r\n )}\r\n </>\r\n );\r\n}\r\n\r\nconst EllipsisIcon = ({ size }: { size: number }) => (\r\n <svg viewBox=\"0 0 24 24\" width={size} height={size}>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M4 14c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm8 0c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm8 0c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z\"\r\n />\r\n </svg>\r\n);\r\n"],"names":["MenuTrigger","renderTrigger","size","title","items","disabled","onClose","triggerTestId","menuTestId","onSelectionChange","selectedKey","disabledKeys","menuItems","useMemo","item","isMobile","useBreakpoint","BREAKPOINTS","menuState","useMenuTriggerState","isOpen","setIsOpen","triggerRef","useRef","menuTriggerProps","menuProps","useMenuTrigger","handleSingleSelectionChange","key","nextKey","defaultTrigger","jsx","AriaButton","csx","EllipsisIcon","TriggerComponent","useEffect","jsxs","Fragment","ActionMenu","PopoverMenu"],"mappings":"woBA0EO,SAASA,EAAY,CAC1B,cAAAC,EACA,KAAAC,EAAO,GACP,MAAAC,EACA,MAAAC,EACA,SAAAC,EACA,QAAAC,EACA,cAAAC,EAAgB,sBAChB,WAAAC,EACA,kBAAAC,EACA,YAAAC,EACA,aAAAC,CACF,EAAc,CACZ,MAAMC,EAAYC,EAAA,QAChB,IAAMT,EAAM,IAAKU,IAAU,CAAE,GAAGA,EAAM,GAAIA,EAAK,GAAA,EAAM,EACrD,CAACV,CAAK,CAAA,EAEFW,EAAWC,EAAAA,cAAcC,EAAA,YAAY,KAAK,EAE1CC,EAAYC,sBAAoB,CAAA,CAAE,EAClC,CAAE,OAAAC,EAAQ,QAASC,CAAA,EAAcH,EACjCI,EAAaC,SAAO,IAAI,EACxB,CAAE,iBAAAC,EAAkB,UAAAC,CAAA,EAAcC,EAAA,eACtC,CAAC,EACDR,EACAI,CAAA,EAGF,SAASK,EAA4BC,EAAgB,CACnD,MAAMC,EAAU,MAAM,KAAKD,CAAG,EAAE,CAAC,EAC7BC,IACFpB,GAAA,MAAAA,EAAoBoB,GAExB,CAEA,MAAMC,EACJC,EAAA,kBAAA,IAACC,EAAA,OAAA,CACE,GAAGR,EACJ,cAAajB,EACb,WAAYF,EACZ,UAAW4B,MAAI,4BAA4B,EAC3C,IAAKX,EAEL,SAAAS,EAAA,kBAAA,IAACG,GAAa,KAAAhC,CAAY,CAAA,CAAA,CAAA,EAIxBiC,EAAmBlC,EACrBA,EAAc,CACZ,OAAAmB,EACA,UAAAC,EACA,SAAAhB,EACA,WAAAiB,CACD,CAAA,EACDQ,EAEJM,OAAAA,EAAAA,UAAU,IACD,IAAM,CACPhB,IACQd,GAAA,MAAAA,IACZ,EAED,CAACc,EAAQd,CAAO,CAAC,EAIf+B,EAAA,kBAAA,KAAAC,6BAAA,CAAA,SAAA,CAAAH,EAEAf,GAAUL,GACTgB,EAAA,kBAAA,IAACQ,EAAA,WAAA,CACC,QAAS3B,EACT,MAAAT,EACA,OAAAiB,EACA,QAAS,IAAMC,EAAU,EAAK,EAC9B,WAAU,GACV,cAAab,EACb,cAAc,SACd,kBAAmBmB,EACnB,aAAcjB,EAAc,CAACA,CAAW,EAAI,OAC5C,aAAAC,CAAA,CACF,EAGDS,GAAU,CAACL,GACVgB,EAAA,kBAAA,IAACS,EAAA,YAAA,CACC,OAAApB,EACA,UAAAC,EACA,MAAOT,EACP,YAAAF,EACA,aAAAC,EACA,MAAAR,EACA,kBAAmBwB,EACnB,WAAAL,CAAA,CACF,CAEJ,CAAA,CAAA,CAEJ,CAEA,MAAMY,EAAe,CAAC,CAAE,KAAAhC,CACtB,IAAA6B,EAAA,kBAAA,IAAC,MAAI,CAAA,QAAQ,YAAY,MAAO7B,EAAM,OAAQA,EAC5C,SAAA6B,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,mJAAA,CACJ,EACF"}
1
+ {"version":3,"file":"MenuTrigger.cjs.js","sources":["../../../src/components/Menu/MenuTrigger.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { ReactNode, useMemo, useRef, useState } from \"react\";\r\n\r\nimport { BREAKPOINTS } from \"../../constants\";\r\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\r\nimport { ActionMenu, ActionMenuAction } from \"../ActionMenu/ActionMenu\";\r\nimport { PopoverMenu } from \"./PopoverMenu\";\r\n\r\nimport \"./MenuTrigger.css\";\r\nimport \"./Menu.css\";\r\n\r\nexport interface MenuTriggerProps {\r\n disabled?: boolean;\r\n isOpen?: boolean;\r\n setIsOpen: (isOpen: boolean) => void;\r\n}\r\n\r\nexport interface MenuProps {\r\n /** Custom trigger component. If not provided, defaults to ellipsis icon.\r\n * - @prop triggerProps {@link TriggerProps}\r\n */\r\n renderTrigger?: (triggerProps: MenuTriggerProps) => ReactNode;\r\n\r\n /** Size of the trigger icon\r\n * @default 24\r\n */\r\n size?: number;\r\n\r\n /** Title of the parent menu */\r\n title?: string;\r\n\r\n /** Array of menu actions/items to display\r\n * - type {@link ActionMenuAction}[]\r\n */\r\n items: ActionMenuAction[];\r\n\r\n /** Whether the menu is disabled\r\n * @default false\r\n */\r\n disabled?: boolean;\r\n\r\n /** Callback when the menu closes */\r\n onClose?: () => void;\r\n\r\n /** Test ID for the trigger button */\r\n triggerTestId?: string;\r\n\r\n /** Test ID for the menu */\r\n menuTestId?: string;\r\n\r\n /** Callback when the selection changes */\r\n onSelectionChange?: (key: string) => void;\r\n\r\n /** The key of the selected item */\r\n selectedKey?: string;\r\n\r\n /** The keys of the disabled items */\r\n disabledKeys?: string[];\r\n}\r\n\r\n/**\r\n * An uncontrolled component that displays either a popover menu or an action menu\r\n * depending on the screen size when the menu trigger is pressed.\r\n *\r\n * API:\r\n * - {@link MenuProps}\r\n */\r\nexport function MenuTrigger({\r\n renderTrigger,\r\n size = 24,\r\n title,\r\n items,\r\n disabled,\r\n onClose,\r\n triggerTestId = \"MenuTrigger-Trigger\",\r\n menuTestId,\r\n onSelectionChange,\r\n selectedKey,\r\n disabledKeys,\r\n}: MenuProps) {\r\n const isMobile = useBreakpoint(BREAKPOINTS.SMALL);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const triggerRef = useRef<HTMLButtonElement>(null);\r\n\r\n const menuItems = useMemo(\r\n () => items.map((item) => ({ ...item, id: item.key })),\r\n [items]\r\n );\r\n\r\n const handleSelectionChange = (key: string) => {\r\n onSelectionChange?.(key);\r\n setIsOpen(false);\r\n };\r\n\r\n const triggerButton = renderTrigger ? (\r\n renderTrigger({\r\n isOpen,\r\n disabled,\r\n setIsOpen,\r\n })\r\n ) : (\r\n <button\r\n data-testid={triggerTestId}\r\n disabled={disabled}\r\n className=\"proton-MenuTrigger__button\"\r\n ref={triggerRef}\r\n onClick={() => setIsOpen(!isOpen)}\r\n type=\"button\"\r\n >\r\n <EllipsisIcon size={size} />\r\n </button>\r\n );\r\n\r\n if (isMobile) {\r\n return (\r\n <>\r\n {triggerButton}\r\n {isOpen && (\r\n <ActionMenu\r\n actions={menuItems}\r\n title={title}\r\n isOpen={isOpen}\r\n onClose={() => {\r\n setIsOpen(false);\r\n onClose?.();\r\n }}\r\n showCancel\r\n data-testid={menuTestId}\r\n selectionMode=\"single\"\r\n onSelectionChange={(keys) => {\r\n const nextKey = Array.from(keys)[0];\r\n if (nextKey) handleSelectionChange(nextKey as string);\r\n }}\r\n selectedKeys={selectedKey ? [selectedKey] : undefined}\r\n disabledKeys={disabledKeys}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n return (\r\n <PopoverMenu\r\n trigger={triggerButton}\r\n items={menuItems}\r\n isOpen={isOpen}\r\n onOpenChange={setIsOpen}\r\n selectedKey={selectedKey}\r\n onSelectionChange={handleSelectionChange}\r\n disabledKeys={disabledKeys}\r\n title={title}\r\n />\r\n );\r\n}\r\n\r\nconst EllipsisIcon = ({ size }: { size: number }) => (\r\n <svg viewBox=\"0 0 24 24\" width={size} height={size}>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M4 14c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm8 0c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm8 0c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z\"\r\n />\r\n </svg>\r\n);\r\n"],"names":["MenuTrigger","renderTrigger","size","title","items","disabled","onClose","triggerTestId","menuTestId","onSelectionChange","selectedKey","disabledKeys","isMobile","useBreakpoint","BREAKPOINTS","isOpen","setIsOpen","useState","triggerRef","useRef","menuItems","useMemo","item","handleSelectionChange","key","triggerButton","jsx","EllipsisIcon","jsxs","Fragment","ActionMenu","keys","nextKey","PopoverMenu"],"mappings":"qZAoEO,SAASA,EAAY,CAC1B,cAAAC,EACA,KAAAC,EAAO,GACP,MAAAC,EACA,MAAAC,EACA,SAAAC,EACA,QAAAC,EACA,cAAAC,EAAgB,sBAChB,WAAAC,EACA,kBAAAC,EACA,YAAAC,EACA,aAAAC,CACF,EAAc,CACN,MAAAC,EAAWC,EAAAA,cAAcC,EAAA,YAAY,KAAK,EAC1C,CAACC,EAAQC,CAAS,EAAIC,WAAS,EAAK,EACpCC,EAAaC,SAA0B,IAAI,EAE3CC,EAAYC,EAAA,QAChB,IAAMjB,EAAM,IAAKkB,IAAU,CAAE,GAAGA,EAAM,GAAIA,EAAK,GAAA,EAAM,EACrD,CAAClB,CAAK,CAAA,EAGFmB,EAAyBC,GAAgB,CAC7Cf,GAAA,MAAAA,EAAoBe,GACpBR,EAAU,EAAK,CAAA,EAGXS,EAAgBxB,EACpBA,EAAc,CACZ,OAAAc,EACA,SAAAV,EACA,UAAAW,CACD,CAAA,EAEDU,EAAA,kBAAA,IAAC,SAAA,CACC,cAAanB,EACb,SAAAF,EACA,UAAU,6BACV,IAAKa,EACL,QAAS,IAAMF,EAAU,CAACD,CAAM,EAChC,KAAK,SAEL,SAAAW,EAAA,kBAAA,IAACC,GAAa,KAAAzB,CAAY,CAAA,CAAA,CAAA,EAI9B,OAAIU,EAGGgB,EAAA,kBAAA,KAAAC,6BAAA,CAAA,SAAA,CAAAJ,EACAV,GACCW,EAAA,kBAAA,IAACI,EAAA,WAAA,CACC,QAASV,EACT,MAAAjB,EACA,OAAAY,EACA,QAAS,IAAM,CACbC,EAAU,EAAK,EACLV,GAAA,MAAAA,GACZ,EACA,WAAU,GACV,cAAaE,EACb,cAAc,SACd,kBAAoBuB,GAAS,CAC3B,MAAMC,EAAU,MAAM,KAAKD,CAAI,EAAE,CAAC,EAC9BC,KAA+BA,CAAiB,CACtD,EACA,aAActB,EAAc,CAACA,CAAW,EAAI,OAC5C,aAAAC,CAAA,CACF,CAEJ,CAAA,CAAA,EAKFe,EAAA,kBAAA,IAACO,EAAA,YAAA,CACC,QAASR,EACT,MAAOL,EACP,OAAAL,EACA,aAAcC,EACd,YAAAN,EACA,kBAAmBa,EACnB,aAAAZ,EACA,MAAAR,CAAA,CAAA,CAGN,CAEA,MAAMwB,EAAe,CAAC,CAAE,KAAAzB,CACtB,IAAAwB,EAAA,kBAAA,IAAC,MAAI,CAAA,QAAQ,YAAY,MAAOxB,EAAM,OAAQA,EAC5C,SAAAwB,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,mJAAA,CACJ,EACF"}
@@ -1,90 +1,82 @@
1
- import { j as e } from "../../node_modules/react/jsx-runtime.es.js";
2
- import { useMemo as A, useRef as B, useEffect as E } from "react";
3
- import { Button as I } from "../../node_modules/react-aria-components/dist/Button.es.js";
1
+ import { j as t } from "../../node_modules/react/jsx-runtime.es.js";
2
+ import { useState as A, useRef as B, useMemo as I } from "react";
4
3
  import { useBreakpoint as O } from "../../hooks/useBreakpoint.es.js";
5
- import { ActionMenu as P } from "../ActionMenu/ActionMenu.es.js";
4
+ import { ActionMenu as R } from "../ActionMenu/ActionMenu.es.js";
5
+ import { PopoverMenu as T } from "./PopoverMenu.es.js";
6
6
  /* empty css */
7
- import { useMenuTrigger as R } from "../../node_modules/@react-aria/menu/dist/useMenuTrigger.es.js";
8
- import { useMenuTriggerState as S } from "../../node_modules/@react-stately/menu/dist/useMenuTriggerState.es.js";
9
- import { PopoverMenu as w } from "./PopoverMenu.es.js";
10
- import { csx as k } from "../../utils/string.es.js";
11
- import { BREAKPOINTS as z } from "../../constants/breakpoint.es.js";
12
- function V({
13
- renderTrigger: t,
14
- size: j = 24,
15
- title: p,
7
+ /* empty css */
8
+ import { BREAKPOINTS as k } from "../../constants/breakpoint.es.js";
9
+ function _({
10
+ renderTrigger: e,
11
+ size: M = 24,
12
+ title: c,
16
13
  items: u,
17
- disabled: f,
18
- onClose: o,
19
- triggerTestId: T = "MenuTrigger-Trigger",
20
- menuTestId: $,
21
- onSelectionChange: n,
22
- selectedKey: c,
14
+ disabled: p,
15
+ onClose: n,
16
+ triggerTestId: h = "MenuTrigger-Trigger",
17
+ menuTestId: j,
18
+ onSelectionChange: i,
19
+ selectedKey: m,
23
20
  disabledKeys: a
24
21
  }) {
25
- const g = A(
26
- () => u.map((i) => ({ ...i, id: i.key })),
22
+ const d = O(k.SMALL), [o, s] = A(!1), v = B(null), f = I(
23
+ () => u.map((r) => ({ ...r, id: r.key })),
27
24
  [u]
28
- ), d = O(z.SMALL), x = S({}), { isOpen: r, setOpen: m } = x, s = B(null), { menuTriggerProps: h, menuProps: N } = R(
29
- {},
30
- x,
31
- s
32
- );
33
- function M(i) {
34
- const l = Array.from(i)[0];
35
- l && (n == null || n(l));
36
- }
37
- const b = /* @__PURE__ */ e.jsx(
38
- I,
25
+ ), g = (r) => {
26
+ i == null || i(r), s(!1);
27
+ }, l = e ? e({
28
+ isOpen: o,
29
+ disabled: p,
30
+ setIsOpen: s
31
+ }) : /* @__PURE__ */ t.jsx(
32
+ "button",
39
33
  {
40
- ...h,
41
- "data-testid": T,
42
- isDisabled: f,
43
- className: k("proton-MenuTrigger__button"),
44
- ref: s,
45
- children: /* @__PURE__ */ e.jsx(L, { size: j })
34
+ "data-testid": h,
35
+ disabled: p,
36
+ className: "proton-MenuTrigger__button",
37
+ ref: v,
38
+ onClick: () => s(!o),
39
+ type: "button",
40
+ children: /* @__PURE__ */ t.jsx(w, { size: M })
46
41
  }
47
- ), v = t ? t({
48
- isOpen: r,
49
- setIsOpen: m,
50
- disabled: f,
51
- triggerRef: s
52
- }) : b;
53
- return E(() => () => {
54
- r && (o == null || o());
55
- }, [r, o]), /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
56
- v,
57
- r && d && /* @__PURE__ */ e.jsx(
58
- P,
42
+ );
43
+ return d ? /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
44
+ l,
45
+ o && /* @__PURE__ */ t.jsx(
46
+ R,
59
47
  {
60
- actions: g,
61
- title: p,
62
- isOpen: r,
63
- onClose: () => m(!1),
48
+ actions: f,
49
+ title: c,
50
+ isOpen: o,
51
+ onClose: () => {
52
+ s(!1), n == null || n();
53
+ },
64
54
  showCancel: !0,
65
- "data-testid": $,
55
+ "data-testid": j,
66
56
  selectionMode: "single",
67
- onSelectionChange: M,
68
- selectedKeys: c ? [c] : void 0,
57
+ onSelectionChange: (r) => {
58
+ const x = Array.from(r)[0];
59
+ x && g(x);
60
+ },
61
+ selectedKeys: m ? [m] : void 0,
69
62
  disabledKeys: a
70
63
  }
71
- ),
72
- r && !d && /* @__PURE__ */ e.jsx(
73
- w,
74
- {
75
- isOpen: r,
76
- setIsOpen: m,
77
- items: g,
78
- selectedKey: c,
79
- disabledKeys: a,
80
- title: p,
81
- onSelectionChange: M,
82
- triggerRef: s
83
- }
84
64
  )
85
- ] });
65
+ ] }) : /* @__PURE__ */ t.jsx(
66
+ T,
67
+ {
68
+ trigger: l,
69
+ items: f,
70
+ isOpen: o,
71
+ onOpenChange: s,
72
+ selectedKey: m,
73
+ onSelectionChange: g,
74
+ disabledKeys: a,
75
+ title: c
76
+ }
77
+ );
86
78
  }
87
- const L = ({ size: t }) => /* @__PURE__ */ e.jsx("svg", { viewBox: "0 0 24 24", width: t, height: t, children: /* @__PURE__ */ e.jsx(
79
+ const w = ({ size: e }) => /* @__PURE__ */ t.jsx("svg", { viewBox: "0 0 24 24", width: e, height: e, children: /* @__PURE__ */ t.jsx(
88
80
  "path",
89
81
  {
90
82
  fill: "currentColor",
@@ -92,6 +84,6 @@ const L = ({ size: t }) => /* @__PURE__ */ e.jsx("svg", { viewBox: "0 0 24 24",
92
84
  }
93
85
  ) });
94
86
  export {
95
- V as MenuTrigger
87
+ _ as MenuTrigger
96
88
  };
97
89
  //# sourceMappingURL=MenuTrigger.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuTrigger.es.js","sources":["../../../src/components/Menu/MenuTrigger.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { ReactNode, useEffect, useMemo, useRef } from \"react\";\r\n\r\nimport { Button as AriaButton, Selection } from \"react-aria-components\";\r\nimport { BREAKPOINTS } from \"../../constants\";\r\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\r\nimport { ActionMenu, ActionMenuAction } from \"../ActionMenu/ActionMenu\";\r\n\r\nimport { csx } from \"../../utils\";\r\n\r\nimport \"./MenuTrigger.css\";\r\n\r\nimport { useMenuTrigger } from \"@react-aria/menu\";\r\nimport { useMenuTriggerState } from \"@react-stately/menu\";\r\nimport { PopoverMenu } from \"./PopoverMenu\";\r\n\r\ninterface TriggerProps {\r\n disabled?: boolean;\r\n isOpen?: boolean;\r\n setIsOpen?: (isOpen: boolean) => void;\r\n triggerRef: React.RefObject<HTMLButtonElement>;\r\n}\r\n\r\nexport interface MenuProps {\r\n /** Custom trigger component. If not provided, defaults to ellipsis icon.\r\n * - @prop triggerProps {@link TriggerProps}\r\n */\r\n renderTrigger?: (triggerProps: TriggerProps) => ReactNode;\r\n\r\n /** Size of the trigger icon\r\n * @default 24\r\n */\r\n size?: number;\r\n\r\n /** Title of the parent menu */\r\n title?: string;\r\n\r\n /** Array of menu actions/items to display\r\n * - type {@link ActionMenuAction}[]\r\n */\r\n items: ActionMenuAction[];\r\n\r\n /** Whether the menu is disabled\r\n * @default false\r\n */\r\n disabled?: boolean;\r\n\r\n /** Callback when menu closes */\r\n onClose?: () => void;\r\n\r\n /** Test ID for the trigger component */\r\n triggerTestId?: string;\r\n\r\n /** Test ID for the menu */\r\n menuTestId?: string;\r\n\r\n /** Callback when a menu item is selected */\r\n onSelectionChange?: (key: string) => void;\r\n\r\n /** The key of the selected item */\r\n selectedKey?: string;\r\n\r\n /** The keys of the disabled items */\r\n disabledKeys?: string[];\r\n}\r\n\r\n/**\r\n * A component that displays either a popover menu or an action menu\r\n * depending on the screen size when the menu trigger is pressed.\r\n *\r\n * API:\r\n * - {@link MenuProps}\r\n */\r\nexport function MenuTrigger({\r\n renderTrigger,\r\n size = 24,\r\n title,\r\n items,\r\n disabled,\r\n onClose,\r\n triggerTestId = \"MenuTrigger-Trigger\",\r\n menuTestId,\r\n onSelectionChange,\r\n selectedKey,\r\n disabledKeys,\r\n}: MenuProps) {\r\n const menuItems = useMemo(\r\n () => items.map((item) => ({ ...item, id: item.key })),\r\n [items]\r\n );\r\n const isMobile = useBreakpoint(BREAKPOINTS.SMALL);\r\n\r\n const menuState = useMenuTriggerState({});\r\n const { isOpen, setOpen: setIsOpen } = menuState;\r\n const triggerRef = useRef(null);\r\n const { menuTriggerProps, menuProps } = useMenuTrigger<ActionMenuAction>(\r\n {},\r\n menuState,\r\n triggerRef\r\n );\r\n\r\n function handleSingleSelectionChange(key: Selection) {\r\n const nextKey = Array.from(key)[0];\r\n if (nextKey) {\r\n onSelectionChange?.(nextKey as string);\r\n }\r\n }\r\n\r\n const defaultTrigger = (\r\n <AriaButton\r\n {...menuTriggerProps}\r\n data-testid={triggerTestId}\r\n isDisabled={disabled}\r\n className={csx(\"proton-MenuTrigger__button\")}\r\n ref={triggerRef}\r\n >\r\n <EllipsisIcon size={size} />\r\n </AriaButton>\r\n );\r\n\r\n const TriggerComponent = renderTrigger\r\n ? renderTrigger({\r\n isOpen,\r\n setIsOpen,\r\n disabled,\r\n triggerRef,\r\n })\r\n : defaultTrigger;\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (isOpen) {\r\n onClose?.();\r\n }\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n return (\r\n <>\r\n {TriggerComponent}\r\n\r\n {isOpen && isMobile && (\r\n <ActionMenu\r\n actions={menuItems}\r\n title={title}\r\n isOpen={isOpen}\r\n onClose={() => setIsOpen(false)}\r\n showCancel\r\n data-testid={menuTestId}\r\n selectionMode=\"single\"\r\n onSelectionChange={handleSingleSelectionChange}\r\n selectedKeys={selectedKey ? [selectedKey] : undefined}\r\n disabledKeys={disabledKeys}\r\n />\r\n )}\r\n\r\n {isOpen && !isMobile && (\r\n <PopoverMenu\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n items={menuItems}\r\n selectedKey={selectedKey}\r\n disabledKeys={disabledKeys}\r\n title={title}\r\n onSelectionChange={handleSingleSelectionChange}\r\n triggerRef={triggerRef}\r\n />\r\n )}\r\n </>\r\n );\r\n}\r\n\r\nconst EllipsisIcon = ({ size }: { size: number }) => (\r\n <svg viewBox=\"0 0 24 24\" width={size} height={size}>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M4 14c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm8 0c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm8 0c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z\"\r\n />\r\n </svg>\r\n);\r\n"],"names":["MenuTrigger","renderTrigger","size","title","items","disabled","onClose","triggerTestId","menuTestId","onSelectionChange","selectedKey","disabledKeys","menuItems","useMemo","item","isMobile","useBreakpoint","BREAKPOINTS","menuState","useMenuTriggerState","isOpen","setIsOpen","triggerRef","useRef","menuTriggerProps","menuProps","useMenuTrigger","handleSingleSelectionChange","key","nextKey","defaultTrigger","jsx","AriaButton","csx","EllipsisIcon","TriggerComponent","useEffect","jsxs","Fragment","ActionMenu","PopoverMenu"],"mappings":";;;;;;;;;;;AA0EO,SAASA,EAAY;AAAA,EAC1B,eAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,YAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AACF,GAAc;AACZ,QAAMC,IAAYC;AAAA,IAChB,MAAMT,EAAM,IAAI,CAACU,OAAU,EAAE,GAAGA,GAAM,IAAIA,EAAK,IAAA,EAAM;AAAA,IACrD,CAACV,CAAK;AAAA,EAAA,GAEFW,IAAWC,EAAcC,EAAY,KAAK,GAE1CC,IAAYC,EAAoB,CAAA,CAAE,GAClC,EAAE,QAAAC,GAAQ,SAASC,EAAA,IAAcH,GACjCI,IAAaC,EAAO,IAAI,GACxB,EAAE,kBAAAC,GAAkB,WAAAC,EAAA,IAAcC;AAAAA,IACtC,CAAC;AAAA,IACDR;AAAA,IACAI;AAAA,EAAA;AAGF,WAASK,EAA4BC,GAAgB;AACnD,UAAMC,IAAU,MAAM,KAAKD,CAAG,EAAE,CAAC;AACjC,IAAIC,MACFpB,KAAA,QAAAA,EAAoBoB;AAAA,EAExB;AAEA,QAAMC,IACJC,gBAAAA,EAAA;AAAA,IAACC;AAAAA,IAAA;AAAA,MACE,GAAGR;AAAA,MACJ,eAAajB;AAAA,MACb,YAAYF;AAAA,MACZ,WAAW4B,EAAI,4BAA4B;AAAA,MAC3C,KAAKX;AAAA,MAEL,UAAAS,gBAAAA,EAAA,IAACG,KAAa,MAAAhC,EAAY,CAAA;AAAA,IAAA;AAAA,EAAA,GAIxBiC,IAAmBlC,IACrBA,EAAc;AAAA,IACZ,QAAAmB;AAAA,IACA,WAAAC;AAAA,IACA,UAAAhB;AAAA,IACA,YAAAiB;AAAA,EACD,CAAA,IACDQ;AAEJ,SAAAM,EAAU,MACD,MAAM;AACX,IAAIhB,MACQd,KAAA,QAAAA;AAAA,EACZ,GAED,CAACc,GAAQd,CAAO,CAAC,GAIf+B,gBAAAA,EAAA,KAAAC,YAAA,EAAA,UAAA;AAAA,IAAAH;AAAA,IAEAf,KAAUL,KACTgB,gBAAAA,EAAA;AAAA,MAACQ;AAAA,MAAA;AAAA,QACC,SAAS3B;AAAA,QACT,OAAAT;AAAA,QACA,QAAAiB;AAAA,QACA,SAAS,MAAMC,EAAU,EAAK;AAAA,QAC9B,YAAU;AAAA,QACV,eAAab;AAAA,QACb,eAAc;AAAA,QACd,mBAAmBmB;AAAA,QACnB,cAAcjB,IAAc,CAACA,CAAW,IAAI;AAAA,QAC5C,cAAAC;AAAA,MAAA;AAAA,IACF;AAAA,IAGDS,KAAU,CAACL,KACVgB,gBAAAA,EAAA;AAAA,MAACS;AAAA,MAAA;AAAA,QACC,QAAApB;AAAA,QACA,WAAAC;AAAA,QACA,OAAOT;AAAA,QACP,aAAAF;AAAA,QACA,cAAAC;AAAA,QACA,OAAAR;AAAA,QACA,mBAAmBwB;AAAA,QACnB,YAAAL;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ,EAAA,CAAA;AAEJ;AAEA,MAAMY,IAAe,CAAC,EAAE,MAAAhC,EACtB,MAAA6B,gBAAAA,EAAA,IAAC,OAAI,EAAA,SAAQ,aAAY,OAAO7B,GAAM,QAAQA,GAC5C,UAAA6B,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,GAAE;AAAA,EAAA;AACJ,GACF;"}
1
+ {"version":3,"file":"MenuTrigger.es.js","sources":["../../../src/components/Menu/MenuTrigger.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { ReactNode, useMemo, useRef, useState } from \"react\";\r\n\r\nimport { BREAKPOINTS } from \"../../constants\";\r\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\r\nimport { ActionMenu, ActionMenuAction } from \"../ActionMenu/ActionMenu\";\r\nimport { PopoverMenu } from \"./PopoverMenu\";\r\n\r\nimport \"./MenuTrigger.css\";\r\nimport \"./Menu.css\";\r\n\r\nexport interface MenuTriggerProps {\r\n disabled?: boolean;\r\n isOpen?: boolean;\r\n setIsOpen: (isOpen: boolean) => void;\r\n}\r\n\r\nexport interface MenuProps {\r\n /** Custom trigger component. If not provided, defaults to ellipsis icon.\r\n * - @prop triggerProps {@link TriggerProps}\r\n */\r\n renderTrigger?: (triggerProps: MenuTriggerProps) => ReactNode;\r\n\r\n /** Size of the trigger icon\r\n * @default 24\r\n */\r\n size?: number;\r\n\r\n /** Title of the parent menu */\r\n title?: string;\r\n\r\n /** Array of menu actions/items to display\r\n * - type {@link ActionMenuAction}[]\r\n */\r\n items: ActionMenuAction[];\r\n\r\n /** Whether the menu is disabled\r\n * @default false\r\n */\r\n disabled?: boolean;\r\n\r\n /** Callback when the menu closes */\r\n onClose?: () => void;\r\n\r\n /** Test ID for the trigger button */\r\n triggerTestId?: string;\r\n\r\n /** Test ID for the menu */\r\n menuTestId?: string;\r\n\r\n /** Callback when the selection changes */\r\n onSelectionChange?: (key: string) => void;\r\n\r\n /** The key of the selected item */\r\n selectedKey?: string;\r\n\r\n /** The keys of the disabled items */\r\n disabledKeys?: string[];\r\n}\r\n\r\n/**\r\n * An uncontrolled component that displays either a popover menu or an action menu\r\n * depending on the screen size when the menu trigger is pressed.\r\n *\r\n * API:\r\n * - {@link MenuProps}\r\n */\r\nexport function MenuTrigger({\r\n renderTrigger,\r\n size = 24,\r\n title,\r\n items,\r\n disabled,\r\n onClose,\r\n triggerTestId = \"MenuTrigger-Trigger\",\r\n menuTestId,\r\n onSelectionChange,\r\n selectedKey,\r\n disabledKeys,\r\n}: MenuProps) {\r\n const isMobile = useBreakpoint(BREAKPOINTS.SMALL);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const triggerRef = useRef<HTMLButtonElement>(null);\r\n\r\n const menuItems = useMemo(\r\n () => items.map((item) => ({ ...item, id: item.key })),\r\n [items]\r\n );\r\n\r\n const handleSelectionChange = (key: string) => {\r\n onSelectionChange?.(key);\r\n setIsOpen(false);\r\n };\r\n\r\n const triggerButton = renderTrigger ? (\r\n renderTrigger({\r\n isOpen,\r\n disabled,\r\n setIsOpen,\r\n })\r\n ) : (\r\n <button\r\n data-testid={triggerTestId}\r\n disabled={disabled}\r\n className=\"proton-MenuTrigger__button\"\r\n ref={triggerRef}\r\n onClick={() => setIsOpen(!isOpen)}\r\n type=\"button\"\r\n >\r\n <EllipsisIcon size={size} />\r\n </button>\r\n );\r\n\r\n if (isMobile) {\r\n return (\r\n <>\r\n {triggerButton}\r\n {isOpen && (\r\n <ActionMenu\r\n actions={menuItems}\r\n title={title}\r\n isOpen={isOpen}\r\n onClose={() => {\r\n setIsOpen(false);\r\n onClose?.();\r\n }}\r\n showCancel\r\n data-testid={menuTestId}\r\n selectionMode=\"single\"\r\n onSelectionChange={(keys) => {\r\n const nextKey = Array.from(keys)[0];\r\n if (nextKey) handleSelectionChange(nextKey as string);\r\n }}\r\n selectedKeys={selectedKey ? [selectedKey] : undefined}\r\n disabledKeys={disabledKeys}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n return (\r\n <PopoverMenu\r\n trigger={triggerButton}\r\n items={menuItems}\r\n isOpen={isOpen}\r\n onOpenChange={setIsOpen}\r\n selectedKey={selectedKey}\r\n onSelectionChange={handleSelectionChange}\r\n disabledKeys={disabledKeys}\r\n title={title}\r\n />\r\n );\r\n}\r\n\r\nconst EllipsisIcon = ({ size }: { size: number }) => (\r\n <svg viewBox=\"0 0 24 24\" width={size} height={size}>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M4 14c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm8 0c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm8 0c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z\"\r\n />\r\n </svg>\r\n);\r\n"],"names":["MenuTrigger","renderTrigger","size","title","items","disabled","onClose","triggerTestId","menuTestId","onSelectionChange","selectedKey","disabledKeys","isMobile","useBreakpoint","BREAKPOINTS","isOpen","setIsOpen","useState","triggerRef","useRef","menuItems","useMemo","item","handleSelectionChange","key","triggerButton","jsx","EllipsisIcon","jsxs","Fragment","ActionMenu","keys","nextKey","PopoverMenu"],"mappings":";;;;;;;;AAoEO,SAASA,EAAY;AAAA,EAC1B,eAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,YAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AACF,GAAc;AACN,QAAAC,IAAWC,EAAcC,EAAY,KAAK,GAC1C,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAK,GACpCC,IAAaC,EAA0B,IAAI,GAE3CC,IAAYC;AAAA,IAChB,MAAMjB,EAAM,IAAI,CAACkB,OAAU,EAAE,GAAGA,GAAM,IAAIA,EAAK,IAAA,EAAM;AAAA,IACrD,CAAClB,CAAK;AAAA,EAAA,GAGFmB,IAAwB,CAACC,MAAgB;AAC7C,IAAAf,KAAA,QAAAA,EAAoBe,IACpBR,EAAU,EAAK;AAAA,EAAA,GAGXS,IAAgBxB,IACpBA,EAAc;AAAA,IACZ,QAAAc;AAAA,IACA,UAAAV;AAAA,IACA,WAAAW;AAAA,EACD,CAAA,IAEDU,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAanB;AAAA,MACb,UAAAF;AAAA,MACA,WAAU;AAAA,MACV,KAAKa;AAAA,MACL,SAAS,MAAMF,EAAU,CAACD,CAAM;AAAA,MAChC,MAAK;AAAA,MAEL,UAAAW,gBAAAA,EAAA,IAACC,KAAa,MAAAzB,EAAY,CAAA;AAAA,IAAA;AAAA,EAAA;AAI9B,SAAIU,IAGGgB,gBAAAA,EAAA,KAAAC,YAAA,EAAA,UAAA;AAAA,IAAAJ;AAAA,IACAV,KACCW,gBAAAA,EAAA;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,SAASV;AAAA,QACT,OAAAjB;AAAA,QACA,QAAAY;AAAA,QACA,SAAS,MAAM;AACb,UAAAC,EAAU,EAAK,GACLV,KAAA,QAAAA;AAAA,QACZ;AAAA,QACA,YAAU;AAAA,QACV,eAAaE;AAAA,QACb,eAAc;AAAA,QACd,mBAAmB,CAACuB,MAAS;AAC3B,gBAAMC,IAAU,MAAM,KAAKD,CAAI,EAAE,CAAC;AAC9B,UAAAC,OAA+BA,CAAiB;AAAA,QACtD;AAAA,QACA,cAActB,IAAc,CAACA,CAAW,IAAI;AAAA,QAC5C,cAAAC;AAAA,MAAA;AAAA,IACF;AAAA,EAEJ,EAAA,CAAA,IAKFe,gBAAAA,EAAA;AAAA,IAACO;AAAA,IAAA;AAAA,MACC,SAASR;AAAA,MACT,OAAOL;AAAA,MACP,QAAAL;AAAA,MACA,cAAcC;AAAA,MACd,aAAAN;AAAA,MACA,mBAAmBa;AAAA,MACnB,cAAAZ;AAAA,MACA,OAAAR;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,MAAMwB,IAAe,CAAC,EAAE,MAAAzB,EACtB,MAAAwB,gBAAAA,EAAA,IAAC,OAAI,EAAA,SAAQ,aAAY,OAAOxB,GAAM,QAAQA,GAC5C,UAAAwB,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,GAAE;AAAA,EAAA;AACJ,GACF;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../node_modules/react/jsx-runtime.cjs.js"),R=require("../../node_modules/react-aria-components/dist/Header.cjs.js"),x=require("../../node_modules/react-aria-components/dist/Menu.cjs.js"),d=require("../../node_modules/react-aria-components/dist/Popover.cjs.js"),p=require("../../node_modules/react-aria-components/dist/Text.cjs.js"),E=require("../ThemeProvider.cjs.js"),c=require("../../utils/string.cjs.js");function M({items:n,isOpen:e,setIsOpen:r,onSelectionChange:m,selectedKey:i,disabledKeys:t,title:u,triggerRef:l}){const{className:o,style:a}=E.useTheme();return s.jsxRuntimeExports.jsx(d.Popover,{className:c.csx("proton-Popover",o),style:a,triggerRef:l,isOpen:e,onOpenChange:r,children:s.jsxRuntimeExports.jsx(x.Menu,{items:n,className:c.csx("proton-ListBox","proton-MenuTrigger__menu"),selectionMode:"single",onSelectionChange:m,selectedKeys:new Set([i]),disabledKeys:t,onClose:()=>r(!1),autoFocus:!0,children:s.jsxRuntimeExports.jsxs(x.MenuSection,{children:[u&&s.jsxRuntimeExports.jsx(R.Header,{className:"proton-MenuTrigger__menu-header",children:u}),n.map(g=>h({item:g,className:o,style:a,disabledKeys:t,onClose:()=>r(!1)}))]})})})}function h(n){var l;const{item:e,className:r,style:m,disabledKeys:i,onClose:t}=n;let u=((l=e.label)==null?void 0:l.toString())||"";return e.children?s.jsxRuntimeExports.jsxs(x.SubmenuTrigger,{children:[s.jsxRuntimeExports.jsx(j,{textValue:u,children:e.label}),s.jsxRuntimeExports.jsx(d.Popover,{className:c.csx("proton-Popover",r),style:m,children:s.jsxRuntimeExports.jsx(x.Menu,{items:e.children,className:"proton-ListBox proton-MenuTrigger__menu",disabledKeys:i,onClose:t,children:o=>h({...n,item:o})})})]},e.key):s.jsxRuntimeExports.jsxs(j,{textValue:u,onAction:()=>{var o;(o=e.onAction)==null||o.call(e,e.key),t==null||t()},isDisabled:i==null?void 0:i.includes(e.key),id:e.key,children:[s.jsxRuntimeExports.jsx(p.Text,{slot:"label",children:e.label}),s.jsxRuntimeExports.jsx(p.Text,{slot:"description",children:e.description})]},e.key)}function j(n){return s.jsxRuntimeExports.jsx(x.MenuItem,{...n,className:({isFocused:e,isOpen:r})=>c.csx("proton-ListBox__item proton-MenuTrigger__menu-item",e&&"focused",r&&"open"),children:({hasSubmenu:e})=>s.jsxRuntimeExports.jsxs(s.jsxRuntimeExports.Fragment,{children:[n.children,e&&s.jsxRuntimeExports.jsx("svg",{className:"proton-MenuTrigger__chevron",viewBox:"0 0 256 256",children:s.jsxRuntimeExports.jsx("path",{fill:"currentColor",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"})})]})})}exports.PopoverMenu=M;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../node_modules/react/jsx-runtime.cjs.js"),s=require("radix-ui"),R=require("../ThemeProvider.cjs.js"),u=require("../../utils/string.cjs.js");function b({trigger:p,items:j,isOpen:M,onOpenChange:n,selectedKey:_,onSelectionChange:l,disabledKeys:g,title:c}){const{className:x,style:m}=R.useTheme();function a(d){const{item:e,className:h,style:y,disabledKeys:t,onClose:o}=d;return e.children&&e.children.length>0?r.jsxRuntimeExports.jsxs(s.DropdownMenu.Sub,{children:[r.jsxRuntimeExports.jsxs(s.DropdownMenu.SubTrigger,{className:u.csx("proton-Menu__item","proton-MenuTrigger__menu-item"),children:[e.label,r.jsxRuntimeExports.jsx("svg",{className:"proton-MenuTrigger__chevron",viewBox:"0 0 256 256",width:16,height:12,children:r.jsxRuntimeExports.jsx("path",{fill:"currentColor",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"})})]}),r.jsxRuntimeExports.jsx(s.DropdownMenu.SubContent,{sideOffset:8,"data-has-submenu":"true",className:u.csx("proton-Menu","proton-MenuTrigger__menu"),children:e.children.map(i=>a({item:i,className:h,style:y,disabledKeys:t,onClose:o}))})]},e.key):r.jsxRuntimeExports.jsxs(s.DropdownMenu.Item,{className:u.csx("proton-Menu__item","proton-MenuTrigger__menu-item"),"aria-selected":_===e.key,disabled:t==null?void 0:t.includes(e.key),onSelect:()=>{var i;(i=e.onAction)==null||i.call(e,e.key),l==null||l(e.key),o==null||o()},children:[r.jsxRuntimeExports.jsx("span",{className:"proton-MenuTrigger__label",style:{gridArea:"label"},children:e.label}),e.description&&r.jsxRuntimeExports.jsx("span",{className:"proton-MenuTrigger__description",style:{gridArea:"desc"},children:e.description})]},e.key)}return r.jsxRuntimeExports.jsxs(s.DropdownMenu.Root,{open:M,onOpenChange:n,children:[r.jsxRuntimeExports.jsx(s.DropdownMenu.Trigger,{asChild:!0,children:p}),r.jsxRuntimeExports.jsx(s.DropdownMenu.Portal,{children:r.jsxRuntimeExports.jsxs(s.DropdownMenu.Content,{className:u.csx("proton-Menu","proton-MenuTrigger__menu",x),style:m,children:[c&&r.jsxRuntimeExports.jsx(s.DropdownMenu.Label,{className:"proton-MenuTrigger__menu-header",children:c}),j.map(d=>a({item:d,className:x,style:m,disabledKeys:g,onClose:()=>n==null?void 0:n(!1)}))]})})]})}exports.PopoverMenu=b;
2
2
  //# sourceMappingURL=PopoverMenu.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PopoverMenu.cjs.js","sources":["../../../src/components/Menu/PopoverMenu.tsx"],"sourcesContent":["import {\r\n Menu as AriaMenu,\r\n Header as AriaMenuHeader,\r\n MenuItem as AriaMenuItem,\r\n MenuItemProps as AriaMenuItemProps,\r\n Popover as AriaPopover,\r\n SubmenuTrigger as AriaSubmenuTrigger,\r\n MenuSection,\r\n Selection,\r\n Text,\r\n} from \"react-aria-components\";\r\n\r\nimport { csx } from \"../../utils\";\r\nimport { ActionMenuAction } from \"../ActionMenu/ActionMenu\";\r\nimport { useTheme } from \"../ThemeProvider\";\r\n\r\ninterface PopoverMenuProps {\r\n /** The keys of the disabled items */\r\n disabledKeys?: string[];\r\n\r\n /** Whether the menu is open */\r\n isOpen: boolean;\r\n\r\n /** Array of menu actions/items to display\r\n * - type {@link ActionMenuAction}[]\r\n */\r\n items: ActionMenuAction[];\r\n\r\n /** Callback when a menu item is selected\r\n * - @prop keys {@link Selection}\r\n */\r\n onSelectionChange?: (keys: Selection) => void;\r\n\r\n /** Callback when the menu is opened or closed */\r\n setIsOpen: (isOpen: boolean) => void;\r\n\r\n /** The key of the selected item */\r\n selectedKey?: string;\r\n\r\n /** Title of the parent menu */\r\n title?: string;\r\n\r\n /** Reference to the trigger button */\r\n triggerRef: React.RefObject<HTMLButtonElement>;\r\n}\r\n\r\n/**\r\n * A popover menu component that displays a list of items.\r\n *\r\n * API:\r\n * - {@link PopoverMenuProps}\r\n */\r\nexport function PopoverMenu({\r\n items,\r\n isOpen,\r\n setIsOpen,\r\n onSelectionChange,\r\n selectedKey,\r\n disabledKeys,\r\n title,\r\n triggerRef,\r\n}: PopoverMenuProps) {\r\n const { className: themeClass, style: themeStyle } = useTheme();\r\n\r\n return (\r\n <AriaPopover\r\n className={csx(\"proton-Popover\", themeClass)}\r\n style={themeStyle as React.CSSProperties}\r\n triggerRef={triggerRef}\r\n isOpen={isOpen}\r\n onOpenChange={setIsOpen}\r\n >\r\n <AriaMenu\r\n items={items}\r\n className={csx(\"proton-ListBox\", \"proton-MenuTrigger__menu\")}\r\n selectionMode=\"single\"\r\n onSelectionChange={onSelectionChange}\r\n selectedKeys={new Set([selectedKey])}\r\n disabledKeys={disabledKeys}\r\n onClose={() => setIsOpen(false)}\r\n autoFocus\r\n >\r\n <MenuSection>\r\n {title && (\r\n <AriaMenuHeader className=\"proton-MenuTrigger__menu-header\">\r\n {title}\r\n </AriaMenuHeader>\r\n )}\r\n\r\n {items.map((item) => {\r\n return renderSubmenu({\r\n item,\r\n className: themeClass,\r\n style: themeStyle as React.CSSProperties,\r\n disabledKeys,\r\n onClose: () => setIsOpen(false),\r\n });\r\n })}\r\n </MenuSection>\r\n </AriaMenu>\r\n </AriaPopover>\r\n );\r\n}\r\n\r\nfunction renderSubmenu(props: {\r\n item: ActionMenuAction;\r\n className: string;\r\n style: React.CSSProperties;\r\n disabledKeys?: string[];\r\n onClose?: () => void;\r\n}) {\r\n const { item, className, style, disabledKeys, onClose } = props;\r\n let textValue = item.label?.toString() || \"\";\r\n if (item.children) {\r\n return (\r\n <AriaSubmenuTrigger key={item.key}>\r\n <MenuItem textValue={textValue}>{item.label}</MenuItem>\r\n <AriaPopover className={csx(\"proton-Popover\", className)} style={style}>\r\n <AriaMenu\r\n items={item.children}\r\n className=\"proton-ListBox proton-MenuTrigger__menu\"\r\n disabledKeys={disabledKeys}\r\n onClose={onClose}\r\n >\r\n {(child) =>\r\n renderSubmenu({\r\n ...props,\r\n item: child as ActionMenuAction,\r\n })\r\n }\r\n </AriaMenu>\r\n </AriaPopover>\r\n </AriaSubmenuTrigger>\r\n );\r\n } else {\r\n return (\r\n <MenuItem\r\n textValue={textValue}\r\n onAction={() => {\r\n item.onAction?.(item.key);\r\n onClose?.();\r\n }}\r\n key={item.key}\r\n isDisabled={disabledKeys?.includes(item.key)}\r\n id={item.key}\r\n >\r\n <Text slot=\"label\">{item.label}</Text>\r\n <Text slot=\"description\">{item.description}</Text>\r\n </MenuItem>\r\n );\r\n }\r\n}\r\n\r\nfunction MenuItem(props: AriaMenuItemProps) {\r\n return (\r\n <AriaMenuItem\r\n {...props}\r\n className={({ isFocused, isOpen }) =>\r\n csx(\r\n \"proton-ListBox__item proton-MenuTrigger__menu-item\",\r\n isFocused && \"focused\",\r\n isOpen && \"open\"\r\n )\r\n }\r\n >\r\n {({ hasSubmenu }) => (\r\n <>\r\n {props.children}\r\n {hasSubmenu && (\r\n <svg className=\"proton-MenuTrigger__chevron\" viewBox=\"0 0 256 256\">\r\n <path\r\n fill=\"currentColor\"\r\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\"\r\n />\r\n </svg>\r\n )}\r\n </>\r\n )}\r\n </AriaMenuItem>\r\n );\r\n}\r\n"],"names":["PopoverMenu","items","isOpen","setIsOpen","onSelectionChange","selectedKey","disabledKeys","title","triggerRef","themeClass","themeStyle","useTheme","jsx","AriaPopover","csx","AriaMenu","MenuSection","AriaMenuHeader","item","renderSubmenu","props","className","style","onClose","textValue","_a","AriaSubmenuTrigger","MenuItem","child","jsxs","Text","AriaMenuItem","isFocused","hasSubmenu","Fragment"],"mappings":"4fAoDO,SAASA,EAAY,CAC1B,MAAAC,EACA,OAAAC,EACA,UAAAC,EACA,kBAAAC,EACA,YAAAC,EACA,aAAAC,EACA,MAAAC,EACA,WAAAC,CACF,EAAqB,CACnB,KAAM,CAAE,UAAWC,EAAY,MAAOC,CAAA,EAAeC,EAAAA,WAGnD,OAAAC,EAAA,kBAAA,IAACC,EAAA,QAAA,CACC,UAAWC,EAAAA,IAAI,iBAAkBL,CAAU,EAC3C,MAAOC,EACP,WAAAF,EACA,OAAAN,EACA,aAAcC,EAEd,SAAAS,EAAA,kBAAA,IAACG,EAAA,KAAA,CACC,MAAAd,EACA,UAAWa,EAAAA,IAAI,iBAAkB,0BAA0B,EAC3D,cAAc,SACd,kBAAAV,EACA,aAAc,IAAI,IAAI,CAACC,CAAW,CAAC,EACnC,aAAAC,EACA,QAAS,IAAMH,EAAU,EAAK,EAC9B,UAAS,GAET,kCAACa,cACE,CAAA,SAAA,CAAAT,GACEK,EAAA,kBAAA,IAAAK,SAAA,CAAe,UAAU,kCACvB,SACHV,EAAA,EAGDN,EAAM,IAAKiB,GACHC,EAAc,CACnB,KAAAD,EACA,UAAWT,EACX,MAAOC,EACP,aAAAJ,EACA,QAAS,IAAMH,EAAU,EAAK,CAAA,CAC/B,CACF,CAAA,EACH,CAAA,CACF,CAAA,CAAA,CAGN,CAEA,SAASgB,EAAcC,EAMpB,OACD,KAAM,CAAE,KAAAF,EAAM,UAAAG,EAAW,MAAAC,EAAO,aAAAhB,EAAc,QAAAiB,CAAY,EAAAH,EAC1D,IAAII,IAAYC,EAAAP,EAAK,QAAL,YAAAO,EAAY,aAAc,GAC1C,OAAIP,EAAK,kCAEJQ,iBACC,CAAA,SAAA,CAACd,EAAA,kBAAA,IAAAe,EAAA,CAAS,UAAAH,EAAuB,SAAAN,EAAK,MAAM,0BAC3CL,EAAAA,QAAY,CAAA,UAAWC,MAAI,iBAAkBO,CAAS,EAAG,MAAAC,EACxD,SAAAV,EAAA,kBAAA,IAACG,EAAA,KAAA,CACC,MAAOG,EAAK,SACZ,UAAU,0CACV,aAAAZ,EACA,QAAAiB,EAEC,SAACK,GACAT,EAAc,CACZ,GAAGC,EACH,KAAMQ,CAAA,CACP,CAAA,CAAA,EAGP,CAAA,GAhBuBV,EAAK,GAiB9B,EAIAW,EAAA,kBAAA,KAACF,EAAA,CACC,UAAAH,EACA,SAAU,IAAM,QACTC,EAAAP,EAAA,WAAA,MAAAO,EAAA,KAAAP,EAAWA,EAAK,KACXK,GAAA,MAAAA,GACZ,EAEA,WAAYjB,GAAA,YAAAA,EAAc,SAASY,EAAK,KACxC,GAAIA,EAAK,IAET,SAAA,CAAAN,EAAA,kBAAA,IAACkB,EAAK,KAAA,CAAA,KAAK,QAAS,SAAAZ,EAAK,MAAM,EAC9BN,EAAA,kBAAA,IAAAkB,EAAA,KAAA,CAAK,KAAK,cAAe,WAAK,YAAY,CAAA,CAAA,EALtCZ,EAAK,GAAA,CASlB,CAEA,SAASS,EAASP,EAA0B,CAExC,OAAAR,EAAA,kBAAA,IAACmB,EAAA,SAAA,CACE,GAAGX,EACJ,UAAW,CAAC,CAAE,UAAAY,EAAW,OAAA9B,CACvB,IAAAY,EAAA,IACE,qDACAkB,GAAa,UACb9B,GAAU,MACZ,EAGD,SAAC,CAAA,CAAE,WAAA+B,CAAW,IAEVJ,EAAAA,kBAAAA,KAAAK,EAAAA,kBAAAA,SAAA,CAAA,SAAA,CAAMd,EAAA,SACNa,GACErB,EAAAA,kBAAAA,IAAA,MAAA,CAAI,UAAU,8BAA8B,QAAQ,cACnD,SAAAA,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,wGAAA,CAAA,EAEN,CAAA,EAEJ,CAAA,CAAA,CAIR"}
1
+ {"version":3,"file":"PopoverMenu.cjs.js","sources":["../../../src/components/Menu/PopoverMenu.tsx"],"sourcesContent":["import { DropdownMenu as RadixDropdownMenu } from \"radix-ui\";\r\nimport { useTheme } from \"../ThemeProvider\";\r\nimport { csx } from \"../../utils/string\";\r\nimport { ActionMenuAction } from \"../ActionMenu/ActionMenu\";\r\n\r\nexport interface PopoverMenuProps {\r\n /** The trigger component */\r\n trigger: React.ReactNode;\r\n\r\n /** Array of menu actions/items to display\r\n * - type {@link ActionMenuAction}[]\r\n */\r\n items: ActionMenuAction[];\r\n\r\n /** Whether the menu is open */\r\n isOpen: boolean;\r\n\r\n /** Callback when the menu is opened or closed */\r\n onOpenChange: (open: boolean) => void;\r\n\r\n /** The key of the selected item */\r\n selectedKey: string;\r\n\r\n /** Callback when the selection changes */\r\n onSelectionChange: (key: string) => void;\r\n\r\n /** The keys of the disabled items */\r\n disabledKeys: string[];\r\n\r\n /** The title of the menu */\r\n title: string;\r\n}\r\n\r\n/**\r\n * A component that displays a popover menu.\r\n *\r\n * API:\r\n * - {@link PopoverMenuProps}\r\n */\r\nexport function PopoverMenu({\r\n trigger,\r\n items,\r\n isOpen,\r\n onOpenChange,\r\n selectedKey,\r\n onSelectionChange,\r\n disabledKeys,\r\n title,\r\n}: PopoverMenuProps) {\r\n const { className: themeClass, style: themeStyle } = useTheme();\r\n\r\n function renderMenuItem(props) {\r\n const { item, className, style, disabledKeys, onClose } = props;\r\n\r\n if (item.children && item.children.length > 0) {\r\n return (\r\n <RadixDropdownMenu.Sub key={item.key}>\r\n <RadixDropdownMenu.SubTrigger\r\n className={csx(\r\n \"proton-Menu__item\",\r\n \"proton-MenuTrigger__menu-item\"\r\n )}\r\n >\r\n {item.label}\r\n <svg\r\n className=\"proton-MenuTrigger__chevron\"\r\n viewBox=\"0 0 256 256\"\r\n width={16}\r\n height={12}\r\n >\r\n <path\r\n fill=\"currentColor\"\r\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\"\r\n />\r\n </svg>\r\n </RadixDropdownMenu.SubTrigger>\r\n\r\n <RadixDropdownMenu.SubContent\r\n sideOffset={8}\r\n data-has-submenu=\"true\"\r\n className={csx(\"proton-Menu\", \"proton-MenuTrigger__menu\")}\r\n >\r\n {item.children.map((child) =>\r\n renderMenuItem({\r\n item: child,\r\n className,\r\n style,\r\n disabledKeys,\r\n onClose,\r\n })\r\n )}\r\n </RadixDropdownMenu.SubContent>\r\n </RadixDropdownMenu.Sub>\r\n );\r\n } else {\r\n return (\r\n <RadixDropdownMenu.Item\r\n className={csx(\"proton-Menu__item\", \"proton-MenuTrigger__menu-item\")}\r\n key={item.key}\r\n aria-selected={selectedKey === item.key}\r\n disabled={disabledKeys?.includes(item.key)}\r\n onSelect={() => {\r\n item.onAction?.(item.key);\r\n onSelectionChange?.(item.key);\r\n onClose?.();\r\n }}\r\n >\r\n <span\r\n className=\"proton-MenuTrigger__label\"\r\n style={{ gridArea: \"label\" }}\r\n >\r\n {item.label}\r\n </span>\r\n {item.description && (\r\n <span\r\n className=\"proton-MenuTrigger__description\"\r\n style={{ gridArea: \"desc\" }}\r\n >\r\n {item.description}\r\n </span>\r\n )}\r\n </RadixDropdownMenu.Item>\r\n );\r\n }\r\n }\r\n\r\n return (\r\n <RadixDropdownMenu.Root open={isOpen} onOpenChange={onOpenChange}>\r\n <RadixDropdownMenu.Trigger asChild>{trigger}</RadixDropdownMenu.Trigger>\r\n <RadixDropdownMenu.Portal>\r\n <RadixDropdownMenu.Content\r\n className={csx(\"proton-Menu\", \"proton-MenuTrigger__menu\", themeClass)}\r\n style={themeStyle as React.CSSProperties}\r\n >\r\n {title && (\r\n <RadixDropdownMenu.Label className=\"proton-MenuTrigger__menu-header\">\r\n {title}\r\n </RadixDropdownMenu.Label>\r\n )}\r\n {items.map((item) =>\r\n renderMenuItem({\r\n item,\r\n className: themeClass,\r\n style: themeStyle as React.CSSProperties,\r\n disabledKeys,\r\n onClose: () => onOpenChange?.(false),\r\n })\r\n )}\r\n </RadixDropdownMenu.Content>\r\n </RadixDropdownMenu.Portal>\r\n </RadixDropdownMenu.Root>\r\n );\r\n}\r\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"}