@protonradio/proton-ui 0.11.10 → 0.11.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. package/dist/_virtual/jsx-runtime.cjs.js +2 -0
  2. package/dist/_virtual/jsx-runtime.cjs.js.map +1 -0
  3. package/dist/_virtual/jsx-runtime.es.js +5 -0
  4. package/dist/_virtual/jsx-runtime.es.js.map +1 -0
  5. package/dist/_virtual/react-jsx-runtime.development.cjs.js +2 -0
  6. package/dist/_virtual/react-jsx-runtime.development.cjs.js.map +1 -0
  7. package/dist/_virtual/react-jsx-runtime.development.es.js +5 -0
  8. package/dist/_virtual/react-jsx-runtime.development.es.js.map +1 -0
  9. package/dist/_virtual/react-jsx-runtime.production.min.cjs.js +2 -0
  10. package/dist/_virtual/react-jsx-runtime.production.min.cjs.js.map +1 -0
  11. package/dist/_virtual/react-jsx-runtime.production.min.es.js +5 -0
  12. package/dist/_virtual/react-jsx-runtime.production.min.es.js.map +1 -0
  13. package/dist/assets/svg/icons.svg.cjs.js +2 -0
  14. package/dist/assets/svg/icons.svg.cjs.js.map +1 -0
  15. package/dist/assets/svg/icons.svg.es.js +5 -0
  16. package/dist/assets/svg/icons.svg.es.js.map +1 -0
  17. package/dist/components/ActionMenu/ActionMenu.cjs.js +2 -0
  18. package/dist/components/ActionMenu/ActionMenu.cjs.js.map +1 -0
  19. package/dist/components/ActionMenu/ActionMenu.es.js +277 -0
  20. package/dist/components/ActionMenu/ActionMenu.es.js.map +1 -0
  21. package/dist/components/Badge/Badge.cjs.js +2 -0
  22. package/dist/components/Badge/Badge.cjs.js.map +1 -0
  23. package/dist/components/Badge/Badge.es.js +25 -0
  24. package/dist/components/Badge/Badge.es.js.map +1 -0
  25. package/dist/components/Banner/Banner.cjs.js +2 -0
  26. package/dist/components/Banner/Banner.cjs.js.map +1 -0
  27. package/dist/components/Banner/Banner.es.js +131 -0
  28. package/dist/components/Banner/Banner.es.js.map +1 -0
  29. package/dist/components/Button/Button.cjs.js +2 -0
  30. package/dist/components/Button/Button.cjs.js.map +1 -0
  31. package/dist/components/Button/Button.es.js +99 -0
  32. package/dist/components/Button/Button.es.js.map +1 -0
  33. package/dist/components/ButtonGroup/ButtonGroup.cjs.js +2 -0
  34. package/dist/components/ButtonGroup/ButtonGroup.cjs.js.map +1 -0
  35. package/dist/components/ButtonGroup/ButtonGroup.es.js +51 -0
  36. package/dist/components/ButtonGroup/ButtonGroup.es.js.map +1 -0
  37. package/dist/components/ButtonWithSelect/ButtonWithSelect.cjs.js +2 -0
  38. package/dist/components/ButtonWithSelect/ButtonWithSelect.cjs.js.map +1 -0
  39. package/dist/components/ButtonWithSelect/ButtonWithSelect.es.js +80 -0
  40. package/dist/components/ButtonWithSelect/ButtonWithSelect.es.js.map +1 -0
  41. package/dist/components/DataTable/DataTable.cjs.js +2 -0
  42. package/dist/components/DataTable/DataTable.cjs.js.map +1 -0
  43. package/dist/components/DataTable/DataTable.es.js +137 -0
  44. package/dist/components/DataTable/DataTable.es.js.map +1 -0
  45. package/dist/components/Dialog/Dialog.cjs.js +2 -0
  46. package/dist/components/Dialog/Dialog.cjs.js.map +1 -0
  47. package/dist/components/Dialog/Dialog.es.js +15 -0
  48. package/dist/components/Dialog/Dialog.es.js.map +1 -0
  49. package/dist/components/Elevation/Elevation.cjs.js +2 -0
  50. package/dist/components/Elevation/Elevation.cjs.js.map +1 -0
  51. package/dist/components/Elevation/Elevation.es.js +33 -0
  52. package/dist/components/Elevation/Elevation.es.js.map +1 -0
  53. package/dist/components/Icon/Icon.cjs.js +2 -0
  54. package/dist/components/Icon/Icon.cjs.js.map +1 -0
  55. package/dist/components/Icon/Icon.es.js +42 -0
  56. package/dist/components/Icon/Icon.es.js.map +1 -0
  57. package/dist/components/ImageBackground/ImageBackground.cjs.js +2 -0
  58. package/dist/components/ImageBackground/ImageBackground.cjs.js.map +1 -0
  59. package/dist/components/ImageBackground/ImageBackground.es.js +55 -0
  60. package/dist/components/ImageBackground/ImageBackground.es.js.map +1 -0
  61. package/dist/components/Input/BaseInput/Input.cjs.js +2 -0
  62. package/dist/components/Input/BaseInput/Input.cjs.js.map +1 -0
  63. package/dist/components/Input/BaseInput/Input.es.js +186 -0
  64. package/dist/components/Input/BaseInput/Input.es.js.map +1 -0
  65. package/dist/components/Input/CopyInput/CopyInput.cjs.js +2 -0
  66. package/dist/components/Input/CopyInput/CopyInput.cjs.js.map +1 -0
  67. package/dist/components/Input/CopyInput/CopyInput.es.js +83 -0
  68. package/dist/components/Input/CopyInput/CopyInput.es.js.map +1 -0
  69. package/dist/components/Input/SearchInput/SearchInput.cjs.js +2 -0
  70. package/dist/components/Input/SearchInput/SearchInput.cjs.js.map +1 -0
  71. package/dist/components/Input/SearchInput/SearchInput.es.js +118 -0
  72. package/dist/components/Input/SearchInput/SearchInput.es.js.map +1 -0
  73. package/dist/components/Menu/MenuTrigger.cjs.js +2 -0
  74. package/dist/components/Menu/MenuTrigger.cjs.js.map +1 -0
  75. package/dist/components/Menu/MenuTrigger.es.js +89 -0
  76. package/dist/components/Menu/MenuTrigger.es.js.map +1 -0
  77. package/dist/components/Menu/PopoverMenu.cjs.js +2 -0
  78. package/dist/components/Menu/PopoverMenu.cjs.js.map +1 -0
  79. package/dist/components/Menu/PopoverMenu.es.js +122 -0
  80. package/dist/components/Menu/PopoverMenu.es.js.map +1 -0
  81. package/dist/components/Modal/Modal.cjs.js +2 -0
  82. package/dist/components/Modal/Modal.cjs.js.map +1 -0
  83. package/dist/components/Modal/Modal.es.js +122 -0
  84. package/dist/components/Modal/Modal.es.js.map +1 -0
  85. package/dist/components/Popover/Popover.cjs.js +2 -0
  86. package/dist/components/Popover/Popover.cjs.js.map +1 -0
  87. package/dist/components/Popover/Popover.es.js +54 -0
  88. package/dist/components/Popover/Popover.es.js.map +1 -0
  89. package/dist/components/ScreenOverlay/ScreenOverlay.cjs.js +2 -0
  90. package/dist/components/ScreenOverlay/ScreenOverlay.cjs.js.map +1 -0
  91. package/dist/components/ScreenOverlay/ScreenOverlay.es.js +44 -0
  92. package/dist/components/ScreenOverlay/ScreenOverlay.es.js.map +1 -0
  93. package/dist/components/Select/Select.cjs.js +2 -0
  94. package/dist/components/Select/Select.cjs.js.map +1 -0
  95. package/dist/components/Select/Select.es.js +228 -0
  96. package/dist/components/Select/Select.es.js.map +1 -0
  97. package/dist/components/Switch/Switch.cjs.js +2 -0
  98. package/dist/components/Switch/Switch.cjs.js.map +1 -0
  99. package/dist/components/Switch/Switch.es.js +40 -0
  100. package/dist/components/Switch/Switch.es.js.map +1 -0
  101. package/dist/components/Table/Collection/CompoundComponents.cjs.js +2 -0
  102. package/dist/components/Table/Collection/CompoundComponents.cjs.js.map +1 -0
  103. package/dist/components/Table/Collection/CompoundComponents.es.js +9 -0
  104. package/dist/components/Table/Collection/CompoundComponents.es.js.map +1 -0
  105. package/dist/components/Table/Collection/collectionParser.cjs.js +2 -0
  106. package/dist/components/Table/Collection/collectionParser.cjs.js.map +1 -0
  107. package/dist/components/Table/Collection/collectionParser.es.js +54 -0
  108. package/dist/components/Table/Collection/collectionParser.es.js.map +1 -0
  109. package/dist/components/Table/Collection/useTableCollection.cjs.js +2 -0
  110. package/dist/components/Table/Collection/useTableCollection.cjs.js.map +1 -0
  111. package/dist/components/Table/Collection/useTableCollection.es.js +59 -0
  112. package/dist/components/Table/Collection/useTableCollection.es.js.map +1 -0
  113. package/dist/components/Table/Table.cjs.js +2 -0
  114. package/dist/components/Table/Table.cjs.js.map +1 -0
  115. package/dist/components/Table/Table.es.js +89 -0
  116. package/dist/components/Table/Table.es.js.map +1 -0
  117. package/dist/components/Text/TextEllipsis/TextEllipsis.cjs.js +2 -0
  118. package/dist/components/Text/TextEllipsis/TextEllipsis.cjs.js.map +1 -0
  119. package/dist/components/Text/TextEllipsis/TextEllipsis.es.js +30 -0
  120. package/dist/components/Text/TextEllipsis/TextEllipsis.es.js.map +1 -0
  121. package/dist/components/Text/TextEmphasis/TextEmphasis.cjs.js +2 -0
  122. package/dist/components/Text/TextEmphasis/TextEmphasis.cjs.js.map +1 -0
  123. package/dist/components/Text/TextEmphasis/TextEmphasis.es.js +54 -0
  124. package/dist/components/Text/TextEmphasis/TextEmphasis.es.js.map +1 -0
  125. package/dist/components/ThemeProvider.cjs.js +2 -0
  126. package/dist/components/ThemeProvider.cjs.js.map +1 -0
  127. package/dist/components/ThemeProvider.es.js +42 -0
  128. package/dist/components/ThemeProvider.es.js.map +1 -0
  129. package/dist/components/Tombstone/Tombstone.cjs.js +2 -0
  130. package/dist/components/Tombstone/Tombstone.cjs.js.map +1 -0
  131. package/dist/components/Tombstone/Tombstone.es.js +35 -0
  132. package/dist/components/Tombstone/Tombstone.es.js.map +1 -0
  133. package/dist/components/Tooltip/Tooltip.cjs.js +2 -0
  134. package/dist/components/Tooltip/Tooltip.cjs.js.map +1 -0
  135. package/dist/components/Tooltip/Tooltip.es.js +78 -0
  136. package/dist/components/Tooltip/Tooltip.es.js.map +1 -0
  137. package/dist/components/Waveform/Waveform.cjs.js +2 -0
  138. package/dist/components/Waveform/Waveform.cjs.js.map +1 -0
  139. package/dist/components/Waveform/Waveform.es.js +163 -0
  140. package/dist/components/Waveform/Waveform.es.js.map +1 -0
  141. package/dist/components/Waveform/WaveformBar.cjs.js +2 -0
  142. package/dist/components/Waveform/WaveformBar.cjs.js.map +1 -0
  143. package/dist/components/Waveform/WaveformBar.es.js +74 -0
  144. package/dist/components/Waveform/WaveformBar.es.js.map +1 -0
  145. package/dist/constants/breakpoint.cjs.js +2 -0
  146. package/dist/constants/breakpoint.cjs.js.map +1 -0
  147. package/dist/{breakpoint-9y1_8U_b.mjs → constants/breakpoint.es.js} +2 -2
  148. package/dist/constants/breakpoint.es.js.map +1 -0
  149. package/dist/constants/placement.cjs.js +2 -0
  150. package/dist/constants/placement.cjs.js.map +1 -0
  151. package/dist/constants/placement.es.js +28 -0
  152. package/dist/constants/placement.es.js.map +1 -0
  153. package/dist/constants.cjs.js +1 -1
  154. package/dist/constants.cjs.js.map +1 -1
  155. package/dist/constants.es.js +3 -26
  156. package/dist/constants.es.js.map +1 -1
  157. package/dist/dark.cjs.js +1 -1
  158. package/dist/dark.cjs.js.map +1 -1
  159. package/dist/dark.es.js +8 -55
  160. package/dist/dark.es.js.map +1 -1
  161. package/dist/design/colors.cjs.js +2 -0
  162. package/dist/design/colors.cjs.js.map +1 -0
  163. package/dist/{colors-CWaj9dFz.mjs → design/colors.es.js} +7 -7
  164. package/dist/design/colors.es.js.map +1 -0
  165. package/dist/design/darkTheme/colors.cjs.js +2 -0
  166. package/dist/{colors-Ceyo4oCJ.mjs.map → design/darkTheme/colors.cjs.js.map} +1 -1
  167. package/dist/{colors-Ceyo4oCJ.mjs → design/darkTheme/colors.es.js} +13 -13
  168. package/dist/{colors-CebzFjpe.js.map → design/darkTheme/colors.es.js.map} +1 -1
  169. package/dist/design/darkTheme/stylesheet.cjs.js +2 -0
  170. package/dist/design/darkTheme/stylesheet.cjs.js.map +1 -0
  171. package/dist/design/darkTheme/stylesheet.es.js +52 -0
  172. package/dist/design/darkTheme/stylesheet.es.js.map +1 -0
  173. package/dist/design/generateStylesheet.cjs.js +2 -0
  174. package/dist/design/generateStylesheet.cjs.js.map +1 -0
  175. package/dist/design/generateStylesheet.es.js +26 -0
  176. package/dist/design/generateStylesheet.es.js.map +1 -0
  177. package/dist/design/lightTheme/colors.cjs.js +2 -0
  178. package/dist/{colors-DMkDnu4U.mjs.map → design/lightTheme/colors.cjs.js.map} +1 -1
  179. package/dist/{colors-DMkDnu4U.mjs → design/lightTheme/colors.es.js} +11 -11
  180. package/dist/{colors-DL1dYffC.js.map → design/lightTheme/colors.es.js.map} +1 -1
  181. package/dist/design/lightTheme/stylesheet.cjs.js +2 -0
  182. package/dist/design/lightTheme/stylesheet.cjs.js.map +1 -0
  183. package/dist/design/lightTheme/stylesheet.es.js +52 -0
  184. package/dist/design/lightTheme/stylesheet.es.js.map +1 -0
  185. package/dist/design/theme.cjs.js +2 -0
  186. package/dist/design/theme.cjs.js.map +1 -0
  187. package/dist/design/theme.es.js +12 -0
  188. package/dist/design/theme.es.js.map +1 -0
  189. package/dist/hooks/useBreakpoint.cjs.js +2 -0
  190. package/dist/hooks/useBreakpoint.cjs.js.map +1 -0
  191. package/dist/hooks/useBreakpoint.es.js +17 -0
  192. package/dist/hooks/useBreakpoint.es.js.map +1 -0
  193. package/dist/hooks/useIsClosing.cjs.js +2 -0
  194. package/dist/hooks/useIsClosing.cjs.js.map +1 -0
  195. package/dist/hooks/useIsClosing.es.js +30 -0
  196. package/dist/hooks/useIsClosing.es.js.map +1 -0
  197. package/dist/hooks/useLockBodyScroll.cjs.js +2 -0
  198. package/dist/hooks/useLockBodyScroll.cjs.js.map +1 -0
  199. package/dist/hooks/useLockBodyScroll.es.js +14 -0
  200. package/dist/hooks/useLockBodyScroll.es.js.map +1 -0
  201. package/dist/hooks/usePalette.cjs.js +2 -0
  202. package/dist/hooks/usePalette.cjs.js.map +1 -0
  203. package/dist/hooks/usePalette.es.js +37 -0
  204. package/dist/hooks/usePalette.es.js.map +1 -0
  205. package/dist/hooks.cjs.js +1 -1
  206. package/dist/hooks.cjs.js.map +1 -1
  207. package/dist/hooks.es.js +8 -37
  208. package/dist/hooks.es.js.map +1 -1
  209. package/dist/index.cjs.js +1 -36
  210. package/dist/index.cjs.js.map +1 -1
  211. package/dist/index.d.ts +0 -1
  212. package/dist/index.es.js +60 -5421
  213. package/dist/index.es.js.map +1 -1
  214. package/dist/light.cjs.js +1 -1
  215. package/dist/light.cjs.js.map +1 -1
  216. package/dist/light.es.js +8 -55
  217. package/dist/light.es.js.map +1 -1
  218. package/dist/node_modules/@react-aria/button/dist/useButton.cjs.js +2 -0
  219. package/dist/node_modules/@react-aria/button/dist/useButton.cjs.js.map +1 -0
  220. package/dist/node_modules/@react-aria/button/dist/useButton.es.js +55 -0
  221. package/dist/node_modules/@react-aria/button/dist/useButton.es.js.map +1 -0
  222. package/dist/node_modules/@react-aria/dialog/dist/useDialog.cjs.js +2 -0
  223. package/dist/node_modules/@react-aria/dialog/dist/useDialog.cjs.js.map +1 -0
  224. package/dist/node_modules/@react-aria/dialog/dist/useDialog.es.js +44 -0
  225. package/dist/node_modules/@react-aria/dialog/dist/useDialog.es.js.map +1 -0
  226. package/dist/node_modules/@react-aria/focus/dist/FocusScope.cjs.js +2 -0
  227. package/dist/node_modules/@react-aria/focus/dist/FocusScope.cjs.js.map +1 -0
  228. package/dist/node_modules/@react-aria/focus/dist/FocusScope.es.js +437 -0
  229. package/dist/node_modules/@react-aria/focus/dist/FocusScope.es.js.map +1 -0
  230. package/dist/node_modules/@react-aria/form/dist/useFormValidation.cjs.js +2 -0
  231. package/dist/node_modules/@react-aria/form/dist/useFormValidation.cjs.js.map +1 -0
  232. package/dist/node_modules/@react-aria/form/dist/useFormValidation.es.js +78 -0
  233. package/dist/node_modules/@react-aria/form/dist/useFormValidation.es.js.map +1 -0
  234. package/dist/node_modules/@react-aria/i18n/dist/context.cjs.js +2 -0
  235. package/dist/node_modules/@react-aria/i18n/dist/context.cjs.js.map +1 -0
  236. package/dist/node_modules/@react-aria/i18n/dist/context.es.js +11 -0
  237. package/dist/node_modules/@react-aria/i18n/dist/context.es.js.map +1 -0
  238. package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.cjs.js +2 -0
  239. package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.cjs.js.map +1 -0
  240. package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.es.js +30 -0
  241. package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.es.js.map +1 -0
  242. package/dist/node_modules/@react-aria/i18n/dist/utils.cjs.js +2 -0
  243. package/dist/node_modules/@react-aria/i18n/dist/utils.cjs.js.map +1 -0
  244. package/dist/node_modules/@react-aria/i18n/dist/utils.es.js +45 -0
  245. package/dist/node_modules/@react-aria/i18n/dist/utils.es.js.map +1 -0
  246. package/dist/node_modules/@react-aria/interactions/dist/context.cjs.js +2 -0
  247. package/dist/node_modules/@react-aria/interactions/dist/context.cjs.js.map +1 -0
  248. package/dist/node_modules/@react-aria/interactions/dist/context.es.js +10 -0
  249. package/dist/node_modules/@react-aria/interactions/dist/context.es.js.map +1 -0
  250. package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.cjs.js +2 -0
  251. package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.cjs.js.map +1 -0
  252. package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.es.js +29 -0
  253. package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.es.js.map +1 -0
  254. package/dist/node_modules/@react-aria/interactions/dist/focusSafely.cjs.js +2 -0
  255. package/dist/node_modules/@react-aria/interactions/dist/focusSafely.cjs.js.map +1 -0
  256. package/dist/node_modules/@react-aria/interactions/dist/focusSafely.es.js +15 -0
  257. package/dist/node_modules/@react-aria/interactions/dist/focusSafely.es.js.map +1 -0
  258. package/dist/node_modules/@react-aria/interactions/dist/textSelection.cjs.js +2 -0
  259. package/dist/node_modules/@react-aria/interactions/dist/textSelection.cjs.js.map +1 -0
  260. package/dist/node_modules/@react-aria/interactions/dist/textSelection.es.js +35 -0
  261. package/dist/node_modules/@react-aria/interactions/dist/textSelection.es.js.map +1 -0
  262. package/dist/node_modules/@react-aria/interactions/dist/useFocus.cjs.js +2 -0
  263. package/dist/node_modules/@react-aria/interactions/dist/useFocus.cjs.js.map +1 -0
  264. package/dist/node_modules/@react-aria/interactions/dist/useFocus.es.js +30 -0
  265. package/dist/node_modules/@react-aria/interactions/dist/useFocus.es.js.map +1 -0
  266. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.cjs.js +2 -0
  267. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.cjs.js.map +1 -0
  268. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.es.js +63 -0
  269. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.es.js.map +1 -0
  270. package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.cjs.js +2 -0
  271. package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.cjs.js.map +1 -0
  272. package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.es.js +56 -0
  273. package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.es.js.map +1 -0
  274. package/dist/node_modules/@react-aria/interactions/dist/useFocusable.cjs.js +2 -0
  275. package/dist/node_modules/@react-aria/interactions/dist/useFocusable.cjs.js.map +1 -0
  276. package/dist/node_modules/@react-aria/interactions/dist/useFocusable.es.js +42 -0
  277. package/dist/node_modules/@react-aria/interactions/dist/useFocusable.es.js.map +1 -0
  278. package/dist/node_modules/@react-aria/interactions/dist/useInteractOutside.cjs.js +2 -0
  279. package/dist/node_modules/@react-aria/interactions/dist/useInteractOutside.cjs.js.map +1 -0
  280. package/dist/node_modules/@react-aria/interactions/dist/useInteractOutside.es.js +51 -0
  281. package/dist/node_modules/@react-aria/interactions/dist/useInteractOutside.es.js.map +1 -0
  282. package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.cjs.js +2 -0
  283. package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.cjs.js.map +1 -0
  284. package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.es.js +13 -0
  285. package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.es.js.map +1 -0
  286. package/dist/node_modules/@react-aria/interactions/dist/usePress.cjs.js +8 -0
  287. package/dist/node_modules/@react-aria/interactions/dist/usePress.cjs.js.map +1 -0
  288. package/dist/node_modules/@react-aria/interactions/dist/usePress.es.js +386 -0
  289. package/dist/node_modules/@react-aria/interactions/dist/usePress.es.js.map +1 -0
  290. package/dist/node_modules/@react-aria/interactions/dist/utils.cjs.js +2 -0
  291. package/dist/node_modules/@react-aria/interactions/dist/utils.cjs.js.map +1 -0
  292. package/dist/node_modules/@react-aria/interactions/dist/utils.es.js +92 -0
  293. package/dist/node_modules/@react-aria/interactions/dist/utils.es.js.map +1 -0
  294. package/dist/node_modules/@react-aria/label/dist/useField.cjs.js +2 -0
  295. package/dist/node_modules/@react-aria/label/dist/useField.cjs.js.map +1 -0
  296. package/dist/node_modules/@react-aria/label/dist/useField.es.js +36 -0
  297. package/dist/node_modules/@react-aria/label/dist/useField.es.js.map +1 -0
  298. package/dist/node_modules/@react-aria/label/dist/useLabel.cjs.js +2 -0
  299. package/dist/node_modules/@react-aria/label/dist/useLabel.cjs.js.map +1 -0
  300. package/dist/node_modules/@react-aria/label/dist/useLabel.es.js +23 -0
  301. package/dist/node_modules/@react-aria/label/dist/useLabel.es.js.map +1 -0
  302. package/dist/node_modules/@react-aria/overlays/dist/Overlay.cjs.js +2 -0
  303. package/dist/node_modules/@react-aria/overlays/dist/Overlay.cjs.js.map +1 -0
  304. package/dist/node_modules/@react-aria/overlays/dist/Overlay.es.js +16 -0
  305. package/dist/node_modules/@react-aria/overlays/dist/Overlay.es.js.map +1 -0
  306. package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.cjs.js +2 -0
  307. package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.cjs.js.map +1 -0
  308. package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.es.js +70 -0
  309. package/dist/node_modules/@react-aria/overlays/dist/ariaHideOutside.es.js.map +1 -0
  310. package/dist/node_modules/@react-aria/overlays/dist/useModalOverlay.cjs.js +2 -0
  311. package/dist/node_modules/@react-aria/overlays/dist/useModalOverlay.cjs.js.map +1 -0
  312. package/dist/node_modules/@react-aria/overlays/dist/useModalOverlay.es.js +32 -0
  313. package/dist/node_modules/@react-aria/overlays/dist/useModalOverlay.es.js.map +1 -0
  314. package/dist/node_modules/@react-aria/overlays/dist/useOverlay.cjs.js +2 -0
  315. package/dist/node_modules/@react-aria/overlays/dist/useOverlay.cjs.js.map +1 -0
  316. package/dist/node_modules/@react-aria/overlays/dist/useOverlay.es.js +53 -0
  317. package/dist/node_modules/@react-aria/overlays/dist/useOverlay.es.js.map +1 -0
  318. package/dist/node_modules/@react-aria/overlays/dist/usePreventScroll.cjs.js +2 -0
  319. package/dist/node_modules/@react-aria/overlays/dist/usePreventScroll.cjs.js.map +1 -0
  320. package/dist/node_modules/@react-aria/overlays/dist/usePreventScroll.es.js +100 -0
  321. package/dist/node_modules/@react-aria/overlays/dist/usePreventScroll.es.js.map +1 -0
  322. package/dist/node_modules/@react-aria/radio/dist/useRadio.cjs.js +2 -0
  323. package/dist/node_modules/@react-aria/radio/dist/useRadio.cjs.js.map +1 -0
  324. package/dist/node_modules/@react-aria/radio/dist/useRadio.es.js +70 -0
  325. package/dist/node_modules/@react-aria/radio/dist/useRadio.es.js.map +1 -0
  326. package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.cjs.js +2 -0
  327. package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.cjs.js.map +1 -0
  328. package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.es.js +80 -0
  329. package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.es.js.map +1 -0
  330. package/dist/node_modules/@react-aria/radio/dist/utils.cjs.js +2 -0
  331. package/dist/node_modules/@react-aria/radio/dist/utils.cjs.js.map +1 -0
  332. package/dist/node_modules/@react-aria/radio/dist/utils.es.js +5 -0
  333. package/dist/node_modules/@react-aria/radio/dist/utils.es.js.map +1 -0
  334. package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.cjs.js +2 -0
  335. package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.cjs.js.map +1 -0
  336. package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.es.js +19 -0
  337. package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.es.js.map +1 -0
  338. package/dist/node_modules/@react-aria/switch/dist/useSwitch.cjs.js +2 -0
  339. package/dist/node_modules/@react-aria/switch/dist/useSwitch.cjs.js.map +1 -0
  340. package/dist/node_modules/@react-aria/switch/dist/useSwitch.es.js +20 -0
  341. package/dist/node_modules/@react-aria/switch/dist/useSwitch.es.js.map +1 -0
  342. package/dist/node_modules/@react-aria/toggle/dist/useToggle.cjs.js +2 -0
  343. package/dist/node_modules/@react-aria/toggle/dist/useToggle.cjs.js.map +1 -0
  344. package/dist/node_modules/@react-aria/toggle/dist/useToggle.es.js +60 -0
  345. package/dist/node_modules/@react-aria/toggle/dist/useToggle.es.js.map +1 -0
  346. package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.cjs.js +2 -0
  347. package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.cjs.js.map +1 -0
  348. package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.es.js +41 -0
  349. package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.es.js.map +1 -0
  350. package/dist/node_modules/@react-stately/form/dist/useFormValidationState.cjs.js +2 -0
  351. package/dist/node_modules/@react-stately/form/dist/useFormValidationState.cjs.js.map +1 -0
  352. package/dist/node_modules/@react-stately/form/dist/useFormValidationState.es.js +110 -0
  353. package/dist/node_modules/@react-stately/form/dist/useFormValidationState.es.js.map +1 -0
  354. package/dist/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.cjs.js +2 -0
  355. package/dist/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.cjs.js.map +1 -0
  356. package/dist/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.es.js +30 -0
  357. package/dist/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.es.js.map +1 -0
  358. package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.cjs.js +2 -0
  359. package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.cjs.js.map +1 -0
  360. package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.es.js +35 -0
  361. package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.es.js.map +1 -0
  362. package/dist/node_modules/@react-stately/toggle/dist/useToggleState.cjs.js +2 -0
  363. package/dist/node_modules/@react-stately/toggle/dist/useToggleState.cjs.js.map +1 -0
  364. package/dist/node_modules/@react-stately/toggle/dist/useToggleState.es.js +22 -0
  365. package/dist/node_modules/@react-stately/toggle/dist/useToggleState.es.js.map +1 -0
  366. package/dist/node_modules/@react-stately/utils/dist/useControlledState.cjs.js +2 -0
  367. package/dist/node_modules/@react-stately/utils/dist/useControlledState.cjs.js.map +1 -0
  368. package/dist/node_modules/@react-stately/utils/dist/useControlledState.es.js +31 -0
  369. package/dist/node_modules/@react-stately/utils/dist/useControlledState.es.js.map +1 -0
  370. package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.cjs.js +2 -0
  371. package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.cjs.js.map +1 -0
  372. package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.es.js +9 -0
  373. package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.es.js.map +1 -0
  374. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.cjs.js +2 -0
  375. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.cjs.js.map +1 -0
  376. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.es.js +8 -0
  377. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.es.js.map +1 -0
  378. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.cjs.js +2 -0
  379. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.cjs.js.map +1 -0
  380. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.es.js +13 -0
  381. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.es.js.map +1 -0
  382. package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.cjs.js +2 -0
  383. package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.cjs.js.map +1 -0
  384. package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.es.js +9 -0
  385. package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.es.js.map +1 -0
  386. package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.cjs.js +2 -0
  387. package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.cjs.js.map +1 -0
  388. package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.es.js +11 -0
  389. package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.es.js.map +1 -0
  390. package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.cjs.js +2 -0
  391. package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.cjs.js.map +1 -0
  392. package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.es.js +9 -0
  393. package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.es.js.map +1 -0
  394. package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.cjs.js +2 -0
  395. package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.cjs.js.map +1 -0
  396. package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.es.js +11 -0
  397. package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.es.js.map +1 -0
  398. package/dist/node_modules/color2k/dist/index.exports.import.es.cjs.js +2 -0
  399. package/dist/node_modules/color2k/dist/index.exports.import.es.cjs.js.map +1 -0
  400. package/dist/node_modules/color2k/dist/index.exports.import.es.es.js +171 -0
  401. package/dist/node_modules/color2k/dist/index.exports.import.es.es.js.map +1 -0
  402. package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs.js +23 -0
  403. package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs.js.map +1 -0
  404. package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js +609 -0
  405. package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js.map +1 -0
  406. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.cjs.js +10 -0
  407. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.cjs.js.map +1 -0
  408. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.es.js +29 -0
  409. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.es.js.map +1 -0
  410. package/dist/node_modules/react/jsx-runtime.cjs.js +2 -0
  411. package/dist/node_modules/react/jsx-runtime.cjs.js.map +1 -0
  412. package/dist/node_modules/react/jsx-runtime.es.js +9 -0
  413. package/dist/node_modules/react/jsx-runtime.es.js.map +1 -0
  414. package/dist/node_modules/react-aria-components/dist/OverlayArrow.cjs.js +2 -0
  415. package/dist/node_modules/react-aria-components/dist/OverlayArrow.cjs.js.map +1 -0
  416. package/dist/node_modules/react-aria-components/dist/OverlayArrow.es.js +37 -0
  417. package/dist/node_modules/react-aria-components/dist/OverlayArrow.es.js.map +1 -0
  418. package/dist/node_modules/react-aria-components/dist/Tooltip.cjs.js +2 -0
  419. package/dist/node_modules/react-aria-components/dist/Tooltip.cjs.js.map +1 -0
  420. package/dist/node_modules/react-aria-components/dist/Tooltip.es.js +98 -0
  421. package/dist/node_modules/react-aria-components/dist/Tooltip.es.js.map +1 -0
  422. package/dist/node_modules/react-aria-components/dist/utils.cjs.js +2 -0
  423. package/dist/node_modules/react-aria-components/dist/utils.cjs.js.map +1 -0
  424. package/dist/node_modules/react-aria-components/dist/utils.es.js +89 -0
  425. package/dist/node_modules/react-aria-components/dist/utils.es.js.map +1 -0
  426. package/dist/style.css +1 -1
  427. package/dist/theme.cjs.js +1 -1
  428. package/dist/theme.cjs.js.map +1 -1
  429. package/dist/theme.es.js +9 -15
  430. package/dist/theme.es.js.map +1 -1
  431. package/dist/utils/color2k.cjs.js +2 -0
  432. package/dist/utils/color2k.cjs.js.map +1 -0
  433. package/dist/utils/color2k.es.js +14 -0
  434. package/dist/utils/color2k.es.js.map +1 -0
  435. package/dist/utils/copy.cjs.js +2 -0
  436. package/dist/utils/copy.cjs.js.map +1 -0
  437. package/dist/utils/copy.es.js +31 -0
  438. package/dist/utils/copy.es.js.map +1 -0
  439. package/dist/utils/image.cjs.js +2 -0
  440. package/dist/utils/image.cjs.js.map +1 -0
  441. package/dist/utils/image.es.js +28 -0
  442. package/dist/utils/image.es.js.map +1 -0
  443. package/dist/utils/navigation.cjs.js +2 -0
  444. package/dist/utils/navigation.cjs.js.map +1 -0
  445. package/dist/utils/navigation.es.js +12 -0
  446. package/dist/utils/navigation.es.js.map +1 -0
  447. package/dist/utils/palette.cjs.js +2 -0
  448. package/dist/utils/palette.cjs.js.map +1 -0
  449. package/dist/utils/palette.es.js +183 -0
  450. package/dist/utils/palette.es.js.map +1 -0
  451. package/dist/utils/string.cjs.js +2 -0
  452. package/dist/utils/string.cjs.js.map +1 -0
  453. package/dist/utils/string.es.js +8 -0
  454. package/dist/utils/string.es.js.map +1 -0
  455. package/dist/utils.cjs.js +1 -1
  456. package/dist/utils.es.js +19 -15
  457. package/dist/utils.es.js.map +1 -1
  458. package/package.json +5 -5
  459. package/dist/breakpoint-9y1_8U_b.mjs.map +0 -1
  460. package/dist/breakpoint-DtqbboOa.js +0 -2
  461. package/dist/breakpoint-DtqbboOa.js.map +0 -1
  462. package/dist/color2k-CpDB_dpw.mjs +0 -168
  463. package/dist/color2k-CpDB_dpw.mjs.map +0 -1
  464. package/dist/color2k-DCgwXUem.js +0 -2
  465. package/dist/color2k-DCgwXUem.js.map +0 -1
  466. package/dist/colors-CWaj9dFz.mjs.map +0 -1
  467. package/dist/colors-CebzFjpe.js +0 -2
  468. package/dist/colors-CmSJBHaf.js +0 -2
  469. package/dist/colors-CmSJBHaf.js.map +0 -1
  470. package/dist/colors-DL1dYffC.js +0 -2
  471. package/dist/image-CUSfY1_T.js +0 -2
  472. package/dist/image-CUSfY1_T.js.map +0 -1
  473. package/dist/image-DFyN0Kd9.mjs +0 -207
  474. package/dist/image-DFyN0Kd9.mjs.map +0 -1
  475. package/dist/navigation-BB0MBIiR.js +0 -2
  476. package/dist/navigation-BB0MBIiR.js.map +0 -1
  477. package/dist/navigation-Bj7Pex9j.mjs +0 -43
  478. package/dist/navigation-Bj7Pex9j.mjs.map +0 -1
  479. package/dist/useBreakpoint-CjRyGKN-.mjs +0 -53
  480. package/dist/useBreakpoint-CjRyGKN-.mjs.map +0 -1
  481. package/dist/useBreakpoint-DA-JqOu3.js +0 -2
  482. package/dist/useBreakpoint-DA-JqOu3.js.map +0 -1
@@ -0,0 +1,137 @@
1
+ import { j as t } from "../../node_modules/react/jsx-runtime.es.js";
2
+ import { useMemo as T } from "react";
3
+ import { Table as r } from "../Table/Table.es.js";
4
+ import { Elevation as N } from "../Elevation/Elevation.es.js";
5
+ import { Tombstone as B } from "../Tombstone/Tombstone.es.js";
6
+ import { Icon as R } from "../Icon/Icon.es.js";
7
+ /* empty css */
8
+ function z(i) {
9
+ const {
10
+ columns: c,
11
+ data: d = [],
12
+ loading: j = !1,
13
+ tombstoneComponent: m,
14
+ error: n = !1,
15
+ name: l,
16
+ onRowClick: x,
17
+ emptyMessage: g = "Data Unavailable",
18
+ errorMessage: S,
19
+ loadingRows: u = 5,
20
+ "data-testid": h
21
+ } = i, v = "sortableColumns" in i ? i.sortableColumns : [], b = "sortedBy" in i ? i.sortedBy : void 0, C = "sortDirection" in i ? i.sortDirection : void 0, p = "onSort" in i ? i.onSort : void 0, o = T(
22
+ () => c.filter((e) => !e.hidden),
23
+ [c]
24
+ ), D = (e) => {
25
+ if (!p) return;
26
+ const s = b === e.id && C === "ASC" ? "DESC" : "ASC";
27
+ p(e.id, s);
28
+ }, _ = (e) => b !== e ? "none" : C === "ASC" ? "ascending" : "descending";
29
+ if (n) {
30
+ const e = typeof n == "string" ? n : S || "An error occurred";
31
+ return /* @__PURE__ */ t.jsx(
32
+ f,
33
+ {
34
+ columns: o,
35
+ message: e,
36
+ name: l,
37
+ testId: h,
38
+ isError: !0
39
+ }
40
+ );
41
+ }
42
+ return j ? /* @__PURE__ */ t.jsx(
43
+ "div",
44
+ {
45
+ className: "proton-DataTable",
46
+ "data-testid": h,
47
+ "aria-busy": "true",
48
+ "aria-label": `Loading ${l}...`,
49
+ children: /* @__PURE__ */ t.jsxs(r, { name: l, children: [
50
+ /* @__PURE__ */ t.jsx(r.Header, { children: o.map((e) => /* @__PURE__ */ t.jsx(r.Column, { id: e.id, children: e.header }, e.id)) }),
51
+ /* @__PURE__ */ t.jsx(r.Body, { children: Array.from({ length: u }).map((e, a) => /* @__PURE__ */ t.jsx(r.Row, { children: o.map((s) => /* @__PURE__ */ t.jsx(r.Cell, { children: m || /* @__PURE__ */ t.jsx(
52
+ B,
53
+ {
54
+ height: "1rem",
55
+ width: (
56
+ // cascading tombstone widths
57
+ a % 3 === 0 ? "80%" : a % 3 === 1 ? "60%" : "90%"
58
+ )
59
+ }
60
+ ) }, s.id)) }, `loading-${a}`)) })
61
+ ] })
62
+ }
63
+ ) : !d || d.length === 0 ? /* @__PURE__ */ t.jsx(
64
+ f,
65
+ {
66
+ columns: o,
67
+ message: g,
68
+ name: l,
69
+ testId: h
70
+ }
71
+ ) : /* @__PURE__ */ t.jsx("div", { className: "proton-DataTable", "data-testid": h, children: /* @__PURE__ */ t.jsxs(r, { name: l, children: [
72
+ /* @__PURE__ */ t.jsx(r.Header, { children: o.map((e) => {
73
+ const a = v.includes(e.id), s = _(e.id);
74
+ return /* @__PURE__ */ t.jsx(
75
+ r.Column,
76
+ {
77
+ id: e.id,
78
+ ...a && { "aria-sort": s },
79
+ children: /* @__PURE__ */ t.jsxs("span", { className: "proton-DataTable__header-content", children: [
80
+ e.header,
81
+ a && /* @__PURE__ */ t.jsx(
82
+ "button",
83
+ {
84
+ className: "proton-DataTable__sort-button",
85
+ onClick: () => D(e),
86
+ "aria-label": `Sort by ${e.header}: ${s}`,
87
+ type: "button",
88
+ children: /* @__PURE__ */ t.jsx(
89
+ R,
90
+ {
91
+ id: "chevron-up",
92
+ size: 12,
93
+ color: s === "ascending" ? "var(--proton-color__primary)" : "currentColor"
94
+ }
95
+ )
96
+ }
97
+ )
98
+ ] })
99
+ },
100
+ e.id
101
+ );
102
+ }) }),
103
+ /* @__PURE__ */ t.jsx(r.Body, { children: d.map((e, a) => {
104
+ const s = ((e == null ? void 0 : e.id) || (e == null ? void 0 : e.key)) ?? a;
105
+ return /* @__PURE__ */ t.jsx(
106
+ r.Row,
107
+ {
108
+ onClick: x ? () => x(e) : void 0,
109
+ children: o.map((y) => /* @__PURE__ */ t.jsx(r.Cell, { children: y.cell(e) }, y.id))
110
+ },
111
+ s
112
+ );
113
+ }) })
114
+ ] }) });
115
+ }
116
+ const f = ({
117
+ columns: i,
118
+ message: c,
119
+ name: d,
120
+ testId: j,
121
+ isError: m = !1
122
+ }) => /* @__PURE__ */ t.jsx("div", { className: "proton-DataTable", "data-testid": j, children: /* @__PURE__ */ t.jsxs(r, { name: d, children: [
123
+ /* @__PURE__ */ t.jsx(r.Header, { children: i == null ? void 0 : i.map((n) => /* @__PURE__ */ t.jsx(r.Column, { id: n.id, children: n.header }, n.id)) }),
124
+ /* @__PURE__ */ t.jsx(r.Body, { children: /* @__PURE__ */ t.jsx(r.Row, { children: /* @__PURE__ */ t.jsx(r.Cell, { colSpan: (i == null ? void 0 : i.length) || 1, children: /* @__PURE__ */ t.jsx(
125
+ "div",
126
+ {
127
+ className: "proton-DataTable__message-cell",
128
+ role: m ? "alert" : "status",
129
+ "aria-live": "polite",
130
+ children: /* @__PURE__ */ t.jsx(N, { children: /* @__PURE__ */ t.jsx("div", { className: "proton-DataTable__empty-cell", children: c }) })
131
+ }
132
+ ) }) }) })
133
+ ] }) });
134
+ export {
135
+ z as DataTable
136
+ };
137
+ //# sourceMappingURL=DataTable.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTable.es.js","sources":["../../../src/components/DataTable/DataTable.tsx"],"sourcesContent":["\"use client\";\n\nimport { AriaAttributes, ReactNode, useMemo } from \"react\";\nimport { Table } from \"../Table/Table\";\nimport { Elevation } from \"../Elevation/Elevation\";\nimport { Tombstone } from \"../Tombstone/Tombstone\";\nimport { Icon } from \"../Icon/Icon\";\nimport \"./DataTable.css\";\n\nexport type SortDirection = \"ASC\" | \"DESC\";\n\ntype SortingConfig<T> =\n | {\n /** When sorting is enabled, all these props must be provided together. */\n sortableColumns: string[];\n sortedBy: string;\n sortDirection: SortDirection;\n onSort: (columnId: string, direction: SortDirection) => void;\n }\n | {\n /** When no sorting is needed, none of these props should be provided */\n sortableColumns?: never;\n sortedBy?: never;\n sortDirection?: never;\n onSort?: never;\n };\n\nexport interface DataTableColumn<T> {\n /** id for the column */\n id: string;\n /** Header text or component */\n header: ReactNode;\n /** Function to render cell content from row data */\n cell: (row: T) => ReactNode;\n /** Whether this column should be hidden */\n hidden?: boolean;\n}\n\ninterface BaseDataTableProps<T = any> {\n /** Array of column definitions\n * - {@link DataTableColumn}\n */\n columns: DataTableColumn<T>[];\n /** Array of data objects to display. Can be empty array for loading/empty states */\n data?: T[] | null;\n /** Loading state */\n loading?: boolean;\n /** Tombstone component to use when loading */\n tombstoneComponent?: ReactNode;\n /** Error state */\n error?: boolean | string;\n /** Table name/caption for accessibility. This provides essential context for screen readers. */\n name: string;\n /** Callback when a row is clicked */\n onRowClick?: (row: T) => void;\n /** Custom empty state message */\n emptyMessage?: string;\n /** Custom error message */\n errorMessage?: string;\n /** Number of skeleton rows to show in loading state */\n loadingRows?: number;\n /** Test ID for testing purposes */\n \"data-testid\"?: string;\n}\n\nexport type DataTableProps<T = any> = BaseDataTableProps<T> & SortingConfig<T>;\n\n/**\n * DataTable is a declarative wrapper around the base Table component that provides:\n *\n * API:\n * - {@link DataTableProps}\n * - {@link SortingConfig}\n */\nexport function DataTable<T = any>(props: DataTableProps<T>) {\n const {\n columns,\n data = [],\n loading = false,\n tombstoneComponent,\n error = false,\n name,\n onRowClick,\n emptyMessage = \"Data Unavailable\",\n errorMessage,\n loadingRows = 5,\n \"data-testid\": testId,\n } = props;\n\n const sortableColumns =\n \"sortableColumns\" in props ? props.sortableColumns : [];\n const sortedBy = \"sortedBy\" in props ? props.sortedBy : undefined;\n const sortDirection =\n \"sortDirection\" in props ? props.sortDirection : undefined;\n const onSort = \"onSort\" in props ? props.onSort : undefined;\n\n const visibleColumns = useMemo(\n () => columns.filter((col) => !col.hidden),\n [columns]\n );\n\n const handleSortClick = (column: DataTableColumn<T>) => {\n if (!onSort) return;\n\n const isCurrentlySorted = sortedBy === column.id;\n const newDirection =\n isCurrentlySorted && sortDirection === \"ASC\" ? \"DESC\" : \"ASC\";\n\n onSort(column.id, newDirection);\n };\n\n const getSortState = (columnId: string): AriaAttributes[\"aria-sort\"] => {\n if (sortedBy !== columnId) return \"none\";\n return sortDirection === \"ASC\" ? \"ascending\" : \"descending\";\n };\n\n if (error) {\n const message =\n typeof error === \"string\" ? error : errorMessage || \"An error occurred\";\n return (\n <EmptyState\n columns={visibleColumns}\n message={message}\n name={name}\n testId={testId}\n isError\n />\n );\n }\n\n if (loading) {\n return (\n <div\n className=\"proton-DataTable\"\n data-testid={testId}\n aria-busy=\"true\"\n aria-label={`Loading ${name}...`}\n >\n <Table name={name}>\n <Table.Header>\n {visibleColumns.map((column) => (\n <Table.Column key={column.id} id={column.id}>\n {column.header}\n </Table.Column>\n ))}\n </Table.Header>\n <Table.Body>\n {Array.from({ length: loadingRows }).map((_, index) => (\n <Table.Row key={`loading-${index}`}>\n {visibleColumns.map((column) => (\n <Table.Cell key={column.id}>\n {tombstoneComponent || (\n <Tombstone\n height=\"1rem\"\n width={\n // cascading tombstone widths\n index % 3 === 0\n ? \"80%\"\n : index % 3 === 1\n ? \"60%\"\n : \"90%\"\n }\n />\n )}\n </Table.Cell>\n ))}\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </div>\n );\n }\n\n if (!data || data.length === 0) {\n return (\n <EmptyState\n columns={visibleColumns}\n message={emptyMessage}\n name={name}\n testId={testId}\n />\n );\n }\n\n return (\n <div className=\"proton-DataTable\" data-testid={testId}>\n <Table name={name}>\n <Table.Header>\n {visibleColumns.map((column) => {\n const isSortable = sortableColumns.includes(column.id);\n const sortState = getSortState(column.id);\n\n return (\n <Table.Column\n key={column.id}\n id={column.id}\n {...(isSortable && { \"aria-sort\": sortState })}\n >\n <span className=\"proton-DataTable__header-content\">\n {column.header}\n {isSortable && (\n <button\n className=\"proton-DataTable__sort-button\"\n onClick={() => handleSortClick(column)}\n aria-label={`Sort by ${column.header}: ${sortState}`}\n type=\"button\"\n >\n <Icon\n id={\"chevron-up\"}\n size={12}\n color={\n sortState === \"ascending\"\n ? \"var(--proton-color__primary)\"\n : \"currentColor\"\n }\n />\n </button>\n )}\n </span>\n </Table.Column>\n );\n })}\n </Table.Header>\n <Table.Body>\n {data.map((row, index) => {\n // Generate a key from the row data or use index as fallback\n const rowKey = ((row as any)?.id || (row as any)?.key) ?? index;\n\n return (\n <Table.Row\n key={rowKey}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n >\n {visibleColumns.map((column) => (\n <Table.Cell key={column.id}>{column.cell(row)}</Table.Cell>\n ))}\n </Table.Row>\n );\n })}\n </Table.Body>\n </Table>\n </div>\n );\n}\n\nconst EmptyState = ({\n columns,\n message,\n name,\n testId,\n isError = false,\n}: Partial<DataTableProps> & {\n testId?: string;\n message: string;\n isError?: boolean;\n}) => {\n return (\n <div className=\"proton-DataTable\" data-testid={testId}>\n <Table name={name}>\n <Table.Header>\n {columns?.map((column) => (\n <Table.Column key={column.id} id={column.id}>\n {column.header}\n </Table.Column>\n ))}\n </Table.Header>\n <Table.Body>\n <Table.Row>\n <Table.Cell colSpan={columns?.length || 1}>\n <div\n className=\"proton-DataTable__message-cell\"\n role={isError ? \"alert\" : \"status\"}\n aria-live=\"polite\"\n >\n <Elevation>\n <div className=\"proton-DataTable__empty-cell\">{message}</div>\n </Elevation>\n </div>\n </Table.Cell>\n </Table.Row>\n </Table.Body>\n </Table>\n </div>\n );\n};\n"],"names":["DataTable","props","columns","data","loading","tombstoneComponent","error","name","onRowClick","emptyMessage","errorMessage","loadingRows","testId","sortableColumns","sortedBy","sortDirection","onSort","visibleColumns","useMemo","col","handleSortClick","column","newDirection","getSortState","columnId","message","jsx","EmptyState","jsxs","Table","_","index","Tombstone","isSortable","sortState","Icon","row","rowKey","isError","Elevation"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../node_modules/react/jsx-runtime.cjs.js"),a=require("react"),n=require("../../node_modules/@react-aria/dialog/dist/useDialog.cjs.js");;/* empty css */function u({title:e,children:s,...i}){let r=a.useRef(null),{dialogProps:t,titleProps:l}=n.useDialog(i,r);return o.jsxRuntimeExports.jsxs("div",{...t,ref:r,className:"proton-Dialog",children:[e&&o.jsxRuntimeExports.jsx("h3",{...l,className:"proton-Dialog__header",children:e}),s]})}exports.Dialog=u;
2
+ //# sourceMappingURL=Dialog.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog.cjs.js","sources":["../../../src/components/Dialog/Dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRef } from \"react\";\nimport { type AriaDialogProps, useDialog } from \"@react-aria/dialog\";\n\nimport \"./Dialog.css\";\n\ninterface DialogProps extends AriaDialogProps {\n title?: React.ReactNode;\n children: React.ReactNode;\n}\n\n/**\n * Intended use in overlay containers such as modals or popovers.\n *\n * API:\n * - {@link DialogProps}\n * - extends {@link AriaDialogProps}\n */\nexport function Dialog({ title, children, ...props }: DialogProps) {\n let ref = useRef(null);\n let { dialogProps, titleProps } = useDialog(props, ref);\n\n return (\n <div {...dialogProps} ref={ref} className=\"proton-Dialog\">\n {title && (\n <h3 {...titleProps} className=\"proton-Dialog__header\">\n {title}\n </h3>\n )}\n {children}\n </div>\n );\n}\n"],"names":["Dialog","title","children","props","ref","useRef","dialogProps","titleProps","useDialog"],"mappings":"0QAmBO,SAASA,EAAO,CAAE,MAAAC,EAAO,SAAAC,EAAU,GAAGC,GAAsB,CAC7D,IAAAC,EAAMC,SAAO,IAAI,EACjB,CAAE,YAAAC,EAAa,WAAAC,CAAA,EAAeC,EAAAA,UAAUL,EAAOC,CAAG,EAEtD,gCACG,MAAK,CAAA,GAAGE,EAAa,IAAAF,EAAU,UAAU,gBACvC,SAAA,CAAAH,2BACE,KAAI,CAAA,GAAGM,EAAY,UAAU,wBAC3B,SACHN,EAAA,EAEDC,CACH,CAAA,CAAA,CAEJ"}
@@ -0,0 +1,15 @@
1
+ import { j as r } from "../../node_modules/react/jsx-runtime.es.js";
2
+ import { useRef as a } from "react";
3
+ import { useDialog as p } from "../../node_modules/@react-aria/dialog/dist/useDialog.es.js";
4
+ /* empty css */
5
+ function u({ title: o, children: s, ...i }) {
6
+ let e = a(null), { dialogProps: t, titleProps: l } = p(i, e);
7
+ return /* @__PURE__ */ r.jsxs("div", { ...t, ref: e, className: "proton-Dialog", children: [
8
+ o && /* @__PURE__ */ r.jsx("h3", { ...l, className: "proton-Dialog__header", children: o }),
9
+ s
10
+ ] });
11
+ }
12
+ export {
13
+ u as Dialog
14
+ };
15
+ //# sourceMappingURL=Dialog.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog.es.js","sources":["../../../src/components/Dialog/Dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRef } from \"react\";\nimport { type AriaDialogProps, useDialog } from \"@react-aria/dialog\";\n\nimport \"./Dialog.css\";\n\ninterface DialogProps extends AriaDialogProps {\n title?: React.ReactNode;\n children: React.ReactNode;\n}\n\n/**\n * Intended use in overlay containers such as modals or popovers.\n *\n * API:\n * - {@link DialogProps}\n * - extends {@link AriaDialogProps}\n */\nexport function Dialog({ title, children, ...props }: DialogProps) {\n let ref = useRef(null);\n let { dialogProps, titleProps } = useDialog(props, ref);\n\n return (\n <div {...dialogProps} ref={ref} className=\"proton-Dialog\">\n {title && (\n <h3 {...titleProps} className=\"proton-Dialog__header\">\n {title}\n </h3>\n )}\n {children}\n </div>\n );\n}\n"],"names":["Dialog","title","children","props","ref","useRef","dialogProps","titleProps","useDialog"],"mappings":";;;;AAmBO,SAASA,EAAO,EAAE,OAAAC,GAAO,UAAAC,GAAU,GAAGC,KAAsB;AAC7D,MAAAC,IAAMC,EAAO,IAAI,GACjB,EAAE,aAAAC,GAAa,YAAAC,EAAA,IAAeC,EAAUL,GAAOC,CAAG;AAEtD,gCACG,OAAK,EAAA,GAAGE,GAAa,KAAAF,GAAU,WAAU,iBACvC,UAAA;AAAA,IAAAH,2BACE,MAAI,EAAA,GAAGM,GAAY,WAAU,yBAC3B,UACHN,GAAA;AAAA,IAEDC;AAAA,EACH,EAAA,CAAA;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../../node_modules/react/jsx-runtime.cjs.js"),e=require("../../node_modules/color2k/dist/index.exports.import.es.cjs.js"),m=require("../ThemeProvider.cjs.js");;/* empty css */const x=({children:o,hasPrimaryGradient:i=!1,"data-testid":s})=>{const{hasPalette:l,palette:n,style:c}=m.useTheme(),t=c["--proton-control__background-color-light"];let r=t,a=e.transparentize(t,.01);if(l&&(r=e.transparentize(t,.1),a=e.transparentize(t,.12),i)){const d=e.transparentize(n.PRIMARY.MEDIUM_LIGHT,.88),p=e.transparentize(n.PRIMARY.LIGHT,.84);r=e.mix(r,d,.15),a=e.mix(a,p,.15)}return u.jsxRuntimeExports.jsx("div",{className:"proton-Elevation","data-testid":s,role:"presentation","aria-label":"Elevated content area",style:{background:`linear-gradient(to top left, ${r}, ${a})`},children:o})};exports.Elevation=x;
2
+ //# sourceMappingURL=Elevation.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Elevation.cjs.js","sources":["../../../src/components/Elevation/Elevation.tsx"],"sourcesContent":["\"use client\";\n\nimport { ReactNode } from \"react\";\nimport { transparentize, mix } from \"color2k\";\nimport { useTheme } from \"../ThemeProvider\";\nimport \"./Elevation.css\";\n\nexport interface ElevationProps {\n /**\n * The content to be displayed within the elevation.\n */\n children?: ReactNode;\n /**\n * The data-testid attribute for testing purposes.\n */\n \"data-testid\"?: string;\n /**\n * Whether the elevation should have a background gradient.\n * @important only works in custom dark mode\n * @default false\n */\n hasPrimaryGradient?: boolean;\n}\n\n/**\n * Elevation component creates a visual elevation effect using the theme-aware background color.\n *\n * This component is designed to be used as a visual layer that sits on top of other content\n * to create a sense of depth or hierarchy in the UI. It uses the `--proton-control__background-color-light`\n * CSS variable which is theme-aware and will adapt to light, dark themes.\n *\n * API:\n * - {@link ElevationProps}\n */\nexport const Elevation = ({\n children,\n hasPrimaryGradient = false,\n \"data-testid\": dataTestId,\n}: ElevationProps) => {\n const { hasPalette, palette, style } = useTheme();\n\n const defaultBg = style[\"--proton-control__background-color-light\"];\n let primaryDark = defaultBg;\n let secondaryDark = transparentize(defaultBg, 0.01);\n\n if (hasPalette) {\n primaryDark = transparentize(defaultBg, 0.1);\n secondaryDark = transparentize(defaultBg, 0.12);\n if (hasPrimaryGradient) {\n const basePrimary = transparentize(palette.PRIMARY.MEDIUM_LIGHT, 0.88);\n const baseSecondary = transparentize(palette.PRIMARY.LIGHT, 0.84);\n primaryDark = mix(primaryDark, basePrimary, 0.15);\n secondaryDark = mix(secondaryDark, baseSecondary, 0.15);\n }\n }\n\n return (\n <div\n className=\"proton-Elevation\"\n data-testid={dataTestId}\n role=\"presentation\"\n aria-label=\"Elevated content area\"\n style={{\n background: `linear-gradient(to top left, ${primaryDark}, ${secondaryDark})`,\n }}\n >\n {children}\n </div>\n );\n};\n"],"names":["Elevation","children","hasPrimaryGradient","dataTestId","hasPalette","palette","style","useTheme","defaultBg","primaryDark","secondaryDark","transparentize","basePrimary","baseSecondary","mix","jsx"],"mappings":"kSAkCO,MAAMA,EAAY,CAAC,CACxB,SAAAC,EACA,mBAAAC,EAAqB,GACrB,cAAeC,CACjB,IAAsB,CACpB,KAAM,CAAE,WAAAC,EAAY,QAAAC,EAAS,MAAAC,GAAUC,EAAS,SAAA,EAE1CC,EAAYF,EAAM,0CAA0C,EAClE,IAAIG,EAAcD,EACdE,EAAgBC,EAAAA,eAAeH,EAAW,GAAI,EAElD,GAAIJ,IACYK,EAAAE,EAAA,eAAeH,EAAW,EAAG,EAC3BE,EAAAC,EAAA,eAAeH,EAAW,GAAI,EAC1CN,GAAoB,CACtB,MAAMU,EAAcD,EAAAA,eAAeN,EAAQ,QAAQ,aAAc,GAAI,EAC/DQ,EAAgBF,EAAAA,eAAeN,EAAQ,QAAQ,MAAO,GAAI,EAClDI,EAAAK,EAAAA,IAAIL,EAAaG,EAAa,GAAI,EAChCF,EAAAI,EAAAA,IAAIJ,EAAeG,EAAe,GAAI,CACxD,CAIA,OAAAE,EAAA,kBAAA,IAAC,MAAA,CACC,UAAU,mBACV,cAAaZ,EACb,KAAK,eACL,aAAW,wBACX,MAAO,CACL,WAAY,gCAAgCM,CAAW,KAAKC,CAAa,GAC3E,EAEC,SAAAT,CAAA,CAAA,CAGP"}
@@ -0,0 +1,33 @@
1
+ import { j as f } from "../../node_modules/react/jsx-runtime.es.js";
2
+ import { transparentize as t, mix as n } from "../../node_modules/color2k/dist/index.exports.import.es.es.js";
3
+ import { useTheme as u } from "../ThemeProvider.es.js";
4
+ /* empty css */
5
+ const E = ({
6
+ children: s,
7
+ hasPrimaryGradient: i = !1,
8
+ "data-testid": l
9
+ }) => {
10
+ const { hasPalette: c, palette: r, style: m } = u(), e = m["--proton-control__background-color-light"];
11
+ let a = e, o = t(e, 0.01);
12
+ if (c && (a = t(e, 0.1), o = t(e, 0.12), i)) {
13
+ const p = t(r.PRIMARY.MEDIUM_LIGHT, 0.88), d = t(r.PRIMARY.LIGHT, 0.84);
14
+ a = n(a, p, 0.15), o = n(o, d, 0.15);
15
+ }
16
+ return /* @__PURE__ */ f.jsx(
17
+ "div",
18
+ {
19
+ className: "proton-Elevation",
20
+ "data-testid": l,
21
+ role: "presentation",
22
+ "aria-label": "Elevated content area",
23
+ style: {
24
+ background: `linear-gradient(to top left, ${a}, ${o})`
25
+ },
26
+ children: s
27
+ }
28
+ );
29
+ };
30
+ export {
31
+ E as Elevation
32
+ };
33
+ //# sourceMappingURL=Elevation.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Elevation.es.js","sources":["../../../src/components/Elevation/Elevation.tsx"],"sourcesContent":["\"use client\";\n\nimport { ReactNode } from \"react\";\nimport { transparentize, mix } from \"color2k\";\nimport { useTheme } from \"../ThemeProvider\";\nimport \"./Elevation.css\";\n\nexport interface ElevationProps {\n /**\n * The content to be displayed within the elevation.\n */\n children?: ReactNode;\n /**\n * The data-testid attribute for testing purposes.\n */\n \"data-testid\"?: string;\n /**\n * Whether the elevation should have a background gradient.\n * @important only works in custom dark mode\n * @default false\n */\n hasPrimaryGradient?: boolean;\n}\n\n/**\n * Elevation component creates a visual elevation effect using the theme-aware background color.\n *\n * This component is designed to be used as a visual layer that sits on top of other content\n * to create a sense of depth or hierarchy in the UI. It uses the `--proton-control__background-color-light`\n * CSS variable which is theme-aware and will adapt to light, dark themes.\n *\n * API:\n * - {@link ElevationProps}\n */\nexport const Elevation = ({\n children,\n hasPrimaryGradient = false,\n \"data-testid\": dataTestId,\n}: ElevationProps) => {\n const { hasPalette, palette, style } = useTheme();\n\n const defaultBg = style[\"--proton-control__background-color-light\"];\n let primaryDark = defaultBg;\n let secondaryDark = transparentize(defaultBg, 0.01);\n\n if (hasPalette) {\n primaryDark = transparentize(defaultBg, 0.1);\n secondaryDark = transparentize(defaultBg, 0.12);\n if (hasPrimaryGradient) {\n const basePrimary = transparentize(palette.PRIMARY.MEDIUM_LIGHT, 0.88);\n const baseSecondary = transparentize(palette.PRIMARY.LIGHT, 0.84);\n primaryDark = mix(primaryDark, basePrimary, 0.15);\n secondaryDark = mix(secondaryDark, baseSecondary, 0.15);\n }\n }\n\n return (\n <div\n className=\"proton-Elevation\"\n data-testid={dataTestId}\n role=\"presentation\"\n aria-label=\"Elevated content area\"\n style={{\n background: `linear-gradient(to top left, ${primaryDark}, ${secondaryDark})`,\n }}\n >\n {children}\n </div>\n );\n};\n"],"names":["Elevation","children","hasPrimaryGradient","dataTestId","hasPalette","palette","style","useTheme","defaultBg","primaryDark","secondaryDark","transparentize","basePrimary","baseSecondary","mix","jsx"],"mappings":";;;;AAkCO,MAAMA,IAAY,CAAC;AAAA,EACxB,UAAAC;AAAA,EACA,oBAAAC,IAAqB;AAAA,EACrB,eAAeC;AACjB,MAAsB;AACpB,QAAM,EAAE,YAAAC,GAAY,SAAAC,GAAS,OAAAC,MAAUC,EAAS,GAE1CC,IAAYF,EAAM,0CAA0C;AAClE,MAAIG,IAAcD,GACdE,IAAgBC,EAAeH,GAAW,IAAI;AAElD,MAAIJ,MACYK,IAAAE,EAAeH,GAAW,GAAG,GAC3BE,IAAAC,EAAeH,GAAW,IAAI,GAC1CN,IAAoB;AACtB,UAAMU,IAAcD,EAAeN,EAAQ,QAAQ,cAAc,IAAI,GAC/DQ,IAAgBF,EAAeN,EAAQ,QAAQ,OAAO,IAAI;AAClD,IAAAI,IAAAK,EAAIL,GAAaG,GAAa,IAAI,GAChCF,IAAAI,EAAIJ,GAAeG,GAAe,IAAI;AAAA,EACxD;AAIA,SAAAE,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAaZ;AAAA,MACb,MAAK;AAAA,MACL,cAAW;AAAA,MACX,OAAO;AAAA,QACL,YAAY,gCAAgCM,CAAW,KAAKC,CAAa;AAAA,MAC3E;AAAA,MAEC,UAAAT;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../node_modules/react/jsx-runtime.cjs.js"),o=require("../../assets/svg/icons.svg.cjs.js");function s(t){let i={height:t.size||void 0,width:t.size||void 0,color:t.color||void 0};return t.id==="chevron-right"?e.jsxRuntimeExports.jsx(n,{direction:"right",...i}):t.id==="chevron-left"?e.jsxRuntimeExports.jsx(n,{direction:"left",...i}):t.id==="chevron-up"?e.jsxRuntimeExports.jsx(n,{direction:"up",...i}):t.id==="chevron-down"?e.jsxRuntimeExports.jsx(n,{direction:"down",...i}):e.jsxRuntimeExports.jsx("svg",{style:i,...t,children:e.jsxRuntimeExports.jsx("use",{href:`${o.default}#${t.id}`})})}function n({direction:t,...i}){const r={right:0,down:90,left:180,up:270};return e.jsxRuntimeExports.jsx("svg",{viewBox:"0 0 16 16",style:{transform:`rotate(${r[t]}deg)`},...i,children:e.jsxRuntimeExports.jsx("path",{fill:"currentColor",d:"M5.74 3.2a.75.75 0 0 0-.04 1.06L9.227 8L5.7 11.74a.75.75 0 1 0 1.1 1.02l4-4.25a.75.75 0 0 0 0-1.02l-4-4.25a.75.75 0 0 0-1.06-.04"})})}exports.Icon=s;
2
+ //# sourceMappingURL=Icon.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.cjs.js","sources":["../../../src/components/Icon/Icon.tsx"],"sourcesContent":["import { SVGProps } from \"react\";\nimport iconURL from \"../../../assets/svg/icons.svg\";\n\ntype IconID =\n | \"external-link\"\n | \"caret-down\"\n | \"caret-right\"\n | \"chevron-right\"\n | \"chevron-left\"\n | \"chevron-up\"\n | \"chevron-down\";\n\n/*\n *\n * 🚧 UNDER CONSTRUCTION 🚧\n *\n */\n\nexport interface IconProps {\n /**\n * The spritesheet ID defined in the Icons spritesheet.\n */\n id: IconID;\n\n /**\n * The desired width/height of the icon. Accepts any valid CSS unit.\n */\n size?: number | string;\n\n /**\n * The stroke color of the icon.\n */\n color?: string;\n}\n\n/**\n * An icon component that displays SVG icons from a sprite sheet or inline.\n *\n * API:\n * - {@link IconProps}\n */\nexport function Icon(props: IconProps) {\n let iconStyle = {\n height: props.size || undefined,\n width: props.size || undefined,\n color: props.color || undefined,\n };\n\n if (props.id === \"chevron-right\") {\n return <Chevron direction=\"right\" {...iconStyle} />;\n }\n\n if (props.id === \"chevron-left\") {\n return <Chevron direction=\"left\" {...iconStyle} />;\n }\n\n if (props.id === \"chevron-up\") {\n return <Chevron direction=\"up\" {...iconStyle} />;\n }\n\n if (props.id === \"chevron-down\") {\n return <Chevron direction=\"down\" {...iconStyle} />;\n }\n\n return (\n <svg style={iconStyle} {...props}>\n <use href={`${iconURL}#${props.id}`} />\n </svg>\n );\n}\n\nfunction Chevron({\n direction,\n ...props\n}: {\n direction: \"right\" | \"left\" | \"up\" | \"down\";\n} & SVGProps<SVGSVGElement>) {\n const rotateMap = {\n right: 0,\n down: 90,\n left: 180,\n up: 270,\n };\n\n return (\n <svg\n viewBox=\"0 0 16 16\"\n style={{\n transform: `rotate(${rotateMap[direction]}deg)`,\n }}\n {...props}\n >\n {/* NOTE: this is the path for the \"right\" direction */}\n <path\n fill=\"currentColor\"\n d=\"M5.74 3.2a.75.75 0 0 0-.04 1.06L9.227 8L5.7 11.74a.75.75 0 1 0 1.1 1.02l4-4.25a.75.75 0 0 0 0-1.02l-4-4.25a.75.75 0 0 0-1.06-.04\"\n />\n </svg>\n );\n}\n"],"names":["Icon","props","iconStyle","jsx","Chevron","iconURL","direction","rotateMap"],"mappings":"8LAyCO,SAASA,EAAKC,EAAkB,CACrC,IAAIC,EAAY,CACd,OAAQD,EAAM,MAAQ,OACtB,MAAOA,EAAM,MAAQ,OACrB,MAAOA,EAAM,OAAS,MAAA,EAGpB,OAAAA,EAAM,KAAO,gBACPE,EAAAA,kBAAAA,IAAAC,EAAA,CAAQ,UAAU,QAAS,GAAGF,CAAW,CAAA,EAG/CD,EAAM,KAAO,eACPE,EAAAA,kBAAAA,IAAAC,EAAA,CAAQ,UAAU,OAAQ,GAAGF,CAAW,CAAA,EAG9CD,EAAM,KAAO,aACPE,EAAAA,kBAAAA,IAAAC,EAAA,CAAQ,UAAU,KAAM,GAAGF,CAAW,CAAA,EAG5CD,EAAM,KAAO,eACPE,EAAAA,kBAAAA,IAAAC,EAAA,CAAQ,UAAU,OAAQ,GAAGF,CAAW,CAAA,EAI/CC,EAAA,kBAAA,IAAA,MAAA,CAAI,MAAOD,EAAY,GAAGD,EACzB,SAAAE,wBAAC,MAAI,CAAA,KAAM,GAAGE,EAAAA,OAAO,IAAIJ,EAAM,EAAE,GAAI,CACvC,CAAA,CAEJ,CAEA,SAASG,EAAQ,CACf,UAAAE,EACA,GAAGL,CACL,EAE6B,CAC3B,MAAMM,EAAY,CAChB,MAAO,EACP,KAAM,GACN,KAAM,IACN,GAAI,GAAA,EAIJ,OAAAJ,EAAA,kBAAA,IAAC,MAAA,CACC,QAAQ,YACR,MAAO,CACL,UAAW,UAAUI,EAAUD,CAAS,CAAC,MAC3C,EACC,GAAGL,EAGJ,SAAAE,EAAA,kBAAA,IAAC,OAAA,CACC,KAAK,eACL,EAAE,kIAAA,CACJ,CAAA,CAAA,CAGN"}
@@ -0,0 +1,42 @@
1
+ import { j as t } from "../../node_modules/react/jsx-runtime.es.js";
2
+ import o from "../../assets/svg/icons.svg.es.js";
3
+ function l(i) {
4
+ let e = {
5
+ height: i.size || void 0,
6
+ width: i.size || void 0,
7
+ color: i.color || void 0
8
+ };
9
+ return i.id === "chevron-right" ? /* @__PURE__ */ t.jsx(r, { direction: "right", ...e }) : i.id === "chevron-left" ? /* @__PURE__ */ t.jsx(r, { direction: "left", ...e }) : i.id === "chevron-up" ? /* @__PURE__ */ t.jsx(r, { direction: "up", ...e }) : i.id === "chevron-down" ? /* @__PURE__ */ t.jsx(r, { direction: "down", ...e }) : /* @__PURE__ */ t.jsx("svg", { style: e, ...i, children: /* @__PURE__ */ t.jsx("use", { href: `${o}#${i.id}` }) });
10
+ }
11
+ function r({
12
+ direction: i,
13
+ ...e
14
+ }) {
15
+ const n = {
16
+ right: 0,
17
+ down: 90,
18
+ left: 180,
19
+ up: 270
20
+ };
21
+ return /* @__PURE__ */ t.jsx(
22
+ "svg",
23
+ {
24
+ viewBox: "0 0 16 16",
25
+ style: {
26
+ transform: `rotate(${n[i]}deg)`
27
+ },
28
+ ...e,
29
+ children: /* @__PURE__ */ t.jsx(
30
+ "path",
31
+ {
32
+ fill: "currentColor",
33
+ d: "M5.74 3.2a.75.75 0 0 0-.04 1.06L9.227 8L5.7 11.74a.75.75 0 1 0 1.1 1.02l4-4.25a.75.75 0 0 0 0-1.02l-4-4.25a.75.75 0 0 0-1.06-.04"
34
+ }
35
+ )
36
+ }
37
+ );
38
+ }
39
+ export {
40
+ l as Icon
41
+ };
42
+ //# sourceMappingURL=Icon.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.es.js","sources":["../../../src/components/Icon/Icon.tsx"],"sourcesContent":["import { SVGProps } from \"react\";\nimport iconURL from \"../../../assets/svg/icons.svg\";\n\ntype IconID =\n | \"external-link\"\n | \"caret-down\"\n | \"caret-right\"\n | \"chevron-right\"\n | \"chevron-left\"\n | \"chevron-up\"\n | \"chevron-down\";\n\n/*\n *\n * 🚧 UNDER CONSTRUCTION 🚧\n *\n */\n\nexport interface IconProps {\n /**\n * The spritesheet ID defined in the Icons spritesheet.\n */\n id: IconID;\n\n /**\n * The desired width/height of the icon. Accepts any valid CSS unit.\n */\n size?: number | string;\n\n /**\n * The stroke color of the icon.\n */\n color?: string;\n}\n\n/**\n * An icon component that displays SVG icons from a sprite sheet or inline.\n *\n * API:\n * - {@link IconProps}\n */\nexport function Icon(props: IconProps) {\n let iconStyle = {\n height: props.size || undefined,\n width: props.size || undefined,\n color: props.color || undefined,\n };\n\n if (props.id === \"chevron-right\") {\n return <Chevron direction=\"right\" {...iconStyle} />;\n }\n\n if (props.id === \"chevron-left\") {\n return <Chevron direction=\"left\" {...iconStyle} />;\n }\n\n if (props.id === \"chevron-up\") {\n return <Chevron direction=\"up\" {...iconStyle} />;\n }\n\n if (props.id === \"chevron-down\") {\n return <Chevron direction=\"down\" {...iconStyle} />;\n }\n\n return (\n <svg style={iconStyle} {...props}>\n <use href={`${iconURL}#${props.id}`} />\n </svg>\n );\n}\n\nfunction Chevron({\n direction,\n ...props\n}: {\n direction: \"right\" | \"left\" | \"up\" | \"down\";\n} & SVGProps<SVGSVGElement>) {\n const rotateMap = {\n right: 0,\n down: 90,\n left: 180,\n up: 270,\n };\n\n return (\n <svg\n viewBox=\"0 0 16 16\"\n style={{\n transform: `rotate(${rotateMap[direction]}deg)`,\n }}\n {...props}\n >\n {/* NOTE: this is the path for the \"right\" direction */}\n <path\n fill=\"currentColor\"\n d=\"M5.74 3.2a.75.75 0 0 0-.04 1.06L9.227 8L5.7 11.74a.75.75 0 1 0 1.1 1.02l4-4.25a.75.75 0 0 0 0-1.02l-4-4.25a.75.75 0 0 0-1.06-.04\"\n />\n </svg>\n );\n}\n"],"names":["Icon","props","iconStyle","jsx","Chevron","iconURL","direction","rotateMap"],"mappings":";;AAyCO,SAASA,EAAKC,GAAkB;AACrC,MAAIC,IAAY;AAAA,IACd,QAAQD,EAAM,QAAQ;AAAA,IACtB,OAAOA,EAAM,QAAQ;AAAA,IACrB,OAAOA,EAAM,SAAS;AAAA,EAAA;AAGpB,SAAAA,EAAM,OAAO,kBACPE,gBAAAA,EAAAA,IAAAC,GAAA,EAAQ,WAAU,SAAS,GAAGF,EAAW,CAAA,IAG/CD,EAAM,OAAO,iBACPE,gBAAAA,EAAAA,IAAAC,GAAA,EAAQ,WAAU,QAAQ,GAAGF,EAAW,CAAA,IAG9CD,EAAM,OAAO,eACPE,gBAAAA,EAAAA,IAAAC,GAAA,EAAQ,WAAU,MAAM,GAAGF,EAAW,CAAA,IAG5CD,EAAM,OAAO,iBACPE,gBAAAA,EAAAA,IAAAC,GAAA,EAAQ,WAAU,QAAQ,GAAGF,EAAW,CAAA,IAI/CC,gBAAAA,EAAA,IAAA,OAAA,EAAI,OAAOD,GAAY,GAAGD,GACzB,UAAAE,gBAAAA,MAAC,OAAI,EAAA,MAAM,GAAGE,CAAO,IAAIJ,EAAM,EAAE,IAAI,EACvC,CAAA;AAEJ;AAEA,SAASG,EAAQ;AAAA,EACf,WAAAE;AAAA,EACA,GAAGL;AACL,GAE6B;AAC3B,QAAMM,IAAY;AAAA,IAChB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,IAAI;AAAA,EAAA;AAIJ,SAAAJ,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,OAAO;AAAA,QACL,WAAW,UAAUI,EAAUD,CAAS,CAAC;AAAA,MAC3C;AAAA,MACC,GAAGL;AAAA,MAGJ,UAAAE,gBAAAA,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,GAAE;AAAA,QAAA;AAAA,MACJ;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../../node_modules/react/jsx-runtime.cjs.js");;/* empty css */const c=require("../ThemeProvider.cjs.js"),u=require("../../node_modules/color2k/dist/index.exports.import.es.cjs.js"),l=r=>{const[s,e,n]=r,t=s+e+n;if(t<65){const o=t/100;return`rgba(255, 255, 255, ${Math.max(.14,.36-o)})`}return""};function g({image:r,imageUrl:s="",onLoad:e}){const{palette:n}=c.useTheme(),t=u.parseToRgba(n.BASE_COLOR),o=l(t);return a.jsxRuntimeExports.jsxs("div",{id:"image-background","aria-label":"Background overlay",role:"dialog","aria-modal":"true",className:"proton-ScreenOverlay__background",children:[r?a.jsxRuntimeExports.jsx("div",{"aria-hidden":"true",children:r}):a.jsxRuntimeExports.jsx("img",{alt:"",src:s,className:"proton-ScreenOverlay__image",onLoad:i=>e==null?void 0:e(i.currentTarget),"aria-hidden":"true"}),a.jsxRuntimeExports.jsx("div",{className:"proton-ScreenOverlay__blur","aria-hidden":"true",style:{background:o}})]})}exports.ImageBackground=g;
2
+ //# sourceMappingURL=ImageBackground.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageBackground.cjs.js","sources":["../../../src/components/ImageBackground/ImageBackground.tsx"],"sourcesContent":["\"use client\";\n\nimport \"../ScreenOverlay/ScreenOverlay.css\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { parseToRgba } from \"color2k\";\n\ninterface ImageBackgroundProps {\n /**\n * Manually display a background image. Useful for server-side rendering.\n * @important When using this prop, you must style your own image component appropriately.\n * The component will be placed directly in the background without additional styling.\n */\n image?: React.ReactNode;\n /**\n * The URL of the image to display in the background.\n * @important Client-side only. Cannot be used in Server Components.\n * When using this prop, the image will be automatically styled with the background effect.\n */\n imageUrl?: string;\n /**\n * Callback function to handle the image load event.\n * @important Client-side only. Cannot be used in Server Components.\n */\n onLoad?: (image: HTMLImageElement) => void;\n}\n\n/**\n * Calculates a background color with appropriate opacity based on the brightness of the base color.\n * For dark colors (sum of RGB values < 65), returns a white overlay with variable opacity.\n * For brighter colors, returns an empty string (no overlay needed).\n */\nconst getBgWhiteOverlayColor = (color: [number, number, number, number]) => {\n const [r, g, b] = color;\n const brightness = r + g + b;\n\n // Only apply white overlay for dark backgrounds\n if (brightness < 65) {\n // Calculate opacity inversely proportional to brightness\n // Brighter colors get less opacity, with a minimum of 0.1\n const brightnessPercentage = brightness / 100;\n const opacity = Math.max(0.14, 0.36 - brightnessPercentage);\n\n return `rgba(255, 255, 255, ${opacity})`;\n }\n\n return \"\";\n};\n\n/**\n * ImageOverlay component for displaying an image with a blur effect.\n *\n * API:\n * - {@link ImageBackgroundProps}\n */\nexport function ImageBackground({\n image,\n imageUrl = \"\",\n onLoad,\n}: ImageBackgroundProps) {\n const { palette } = useTheme();\n const baseColor = parseToRgba(palette.BASE_COLOR);\n const backgroundColor = getBgWhiteOverlayColor(baseColor);\n\n return (\n <div\n id=\"image-background\"\n aria-label=\"Background overlay\"\n role=\"dialog\"\n aria-modal=\"true\"\n className=\"proton-ScreenOverlay__background\"\n >\n {image ? (\n <div aria-hidden=\"true\">{image}</div>\n ) : (\n <img\n alt=\"\" // Decorative image\n src={imageUrl}\n className=\"proton-ScreenOverlay__image\"\n onLoad={(event) => onLoad?.(event.currentTarget)}\n aria-hidden=\"true\"\n />\n )}\n <div\n className=\"proton-ScreenOverlay__blur\"\n aria-hidden=\"true\"\n style={{\n background: backgroundColor,\n }}\n />\n </div>\n );\n}\n"],"names":["getBgWhiteOverlayColor","color","r","g","b","brightness","brightnessPercentage","ImageBackground","image","imageUrl","onLoad","palette","useTheme","baseColor","parseToRgba","backgroundColor","jsxs","jsx","event"],"mappings":"2TA+BMA,EAA0BC,GAA4C,CAC1E,KAAM,CAACC,EAAGC,EAAGC,CAAC,EAAIH,EACZI,EAAaH,EAAIC,EAAIC,EAG3B,GAAIC,EAAa,GAAI,CAGnB,MAAMC,EAAuBD,EAAa,IAG1C,MAAO,uBAFS,KAAK,IAAI,IAAM,IAAOC,CAAoB,CAErB,GACvC,CAEO,MAAA,EACT,EAQO,SAASC,EAAgB,CAC9B,MAAAC,EACA,SAAAC,EAAW,GACX,OAAAC,CACF,EAAyB,CACjB,KAAA,CAAE,QAAAC,GAAYC,EAAAA,WACdC,EAAYC,EAAAA,YAAYH,EAAQ,UAAU,EAC1CI,EAAkBf,EAAuBa,CAAS,EAGtD,OAAAG,EAAA,kBAAA,KAAC,MAAA,CACC,GAAG,mBACH,aAAW,qBACX,KAAK,SACL,aAAW,OACX,UAAU,mCAET,SAAA,CAAAR,EACES,EAAAA,kBAAAA,IAAA,MAAA,CAAI,cAAY,OAAQ,UAAM,CAAA,EAE/BA,EAAA,kBAAA,IAAC,MAAA,CACC,IAAI,GACJ,IAAKR,EACL,UAAU,8BACV,OAASS,GAAUR,GAAA,YAAAA,EAASQ,EAAM,eAClC,cAAY,MAAA,CACd,EAEFD,EAAA,kBAAA,IAAC,MAAA,CACC,UAAU,6BACV,cAAY,OACZ,MAAO,CACL,WAAYF,CACd,CAAA,CACF,CAAA,CAAA,CAAA,CAGN"}
@@ -0,0 +1,55 @@
1
+ import { j as t } from "../../node_modules/react/jsx-runtime.es.js";
2
+ /* empty css */
3
+ import { useTheme as c } from "../ThemeProvider.es.js";
4
+ import { parseToRgba as l } from "../../node_modules/color2k/dist/index.exports.import.es.es.js";
5
+ const g = (e) => {
6
+ const [o, r, n] = e, a = o + r + n;
7
+ if (a < 65) {
8
+ const s = a / 100;
9
+ return `rgba(255, 255, 255, ${Math.max(0.14, 0.36 - s)})`;
10
+ }
11
+ return "";
12
+ };
13
+ function b({
14
+ image: e,
15
+ imageUrl: o = "",
16
+ onLoad: r
17
+ }) {
18
+ const { palette: n } = c(), a = l(n.BASE_COLOR), s = g(a);
19
+ return /* @__PURE__ */ t.jsxs(
20
+ "div",
21
+ {
22
+ id: "image-background",
23
+ "aria-label": "Background overlay",
24
+ role: "dialog",
25
+ "aria-modal": "true",
26
+ className: "proton-ScreenOverlay__background",
27
+ children: [
28
+ e ? /* @__PURE__ */ t.jsx("div", { "aria-hidden": "true", children: e }) : /* @__PURE__ */ t.jsx(
29
+ "img",
30
+ {
31
+ alt: "",
32
+ src: o,
33
+ className: "proton-ScreenOverlay__image",
34
+ onLoad: (i) => r == null ? void 0 : r(i.currentTarget),
35
+ "aria-hidden": "true"
36
+ }
37
+ ),
38
+ /* @__PURE__ */ t.jsx(
39
+ "div",
40
+ {
41
+ className: "proton-ScreenOverlay__blur",
42
+ "aria-hidden": "true",
43
+ style: {
44
+ background: s
45
+ }
46
+ }
47
+ )
48
+ ]
49
+ }
50
+ );
51
+ }
52
+ export {
53
+ b as ImageBackground
54
+ };
55
+ //# sourceMappingURL=ImageBackground.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageBackground.es.js","sources":["../../../src/components/ImageBackground/ImageBackground.tsx"],"sourcesContent":["\"use client\";\n\nimport \"../ScreenOverlay/ScreenOverlay.css\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { parseToRgba } from \"color2k\";\n\ninterface ImageBackgroundProps {\n /**\n * Manually display a background image. Useful for server-side rendering.\n * @important When using this prop, you must style your own image component appropriately.\n * The component will be placed directly in the background without additional styling.\n */\n image?: React.ReactNode;\n /**\n * The URL of the image to display in the background.\n * @important Client-side only. Cannot be used in Server Components.\n * When using this prop, the image will be automatically styled with the background effect.\n */\n imageUrl?: string;\n /**\n * Callback function to handle the image load event.\n * @important Client-side only. Cannot be used in Server Components.\n */\n onLoad?: (image: HTMLImageElement) => void;\n}\n\n/**\n * Calculates a background color with appropriate opacity based on the brightness of the base color.\n * For dark colors (sum of RGB values < 65), returns a white overlay with variable opacity.\n * For brighter colors, returns an empty string (no overlay needed).\n */\nconst getBgWhiteOverlayColor = (color: [number, number, number, number]) => {\n const [r, g, b] = color;\n const brightness = r + g + b;\n\n // Only apply white overlay for dark backgrounds\n if (brightness < 65) {\n // Calculate opacity inversely proportional to brightness\n // Brighter colors get less opacity, with a minimum of 0.1\n const brightnessPercentage = brightness / 100;\n const opacity = Math.max(0.14, 0.36 - brightnessPercentage);\n\n return `rgba(255, 255, 255, ${opacity})`;\n }\n\n return \"\";\n};\n\n/**\n * ImageOverlay component for displaying an image with a blur effect.\n *\n * API:\n * - {@link ImageBackgroundProps}\n */\nexport function ImageBackground({\n image,\n imageUrl = \"\",\n onLoad,\n}: ImageBackgroundProps) {\n const { palette } = useTheme();\n const baseColor = parseToRgba(palette.BASE_COLOR);\n const backgroundColor = getBgWhiteOverlayColor(baseColor);\n\n return (\n <div\n id=\"image-background\"\n aria-label=\"Background overlay\"\n role=\"dialog\"\n aria-modal=\"true\"\n className=\"proton-ScreenOverlay__background\"\n >\n {image ? (\n <div aria-hidden=\"true\">{image}</div>\n ) : (\n <img\n alt=\"\" // Decorative image\n src={imageUrl}\n className=\"proton-ScreenOverlay__image\"\n onLoad={(event) => onLoad?.(event.currentTarget)}\n aria-hidden=\"true\"\n />\n )}\n <div\n className=\"proton-ScreenOverlay__blur\"\n aria-hidden=\"true\"\n style={{\n background: backgroundColor,\n }}\n />\n </div>\n );\n}\n"],"names":["getBgWhiteOverlayColor","color","r","g","b","brightness","brightnessPercentage","ImageBackground","image","imageUrl","onLoad","palette","useTheme","baseColor","parseToRgba","backgroundColor","jsxs","jsx","event"],"mappings":";;;;AA+BA,MAAMA,IAAyB,CAACC,MAA4C;AAC1E,QAAM,CAACC,GAAGC,GAAGC,CAAC,IAAIH,GACZI,IAAaH,IAAIC,IAAIC;AAG3B,MAAIC,IAAa,IAAI;AAGnB,UAAMC,IAAuBD,IAAa;AAG1C,WAAO,uBAFS,KAAK,IAAI,MAAM,OAAOC,CAAoB,CAErB;AAAA,EACvC;AAEO,SAAA;AACT;AAQO,SAASC,EAAgB;AAAA,EAC9B,OAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,QAAAC;AACF,GAAyB;AACjB,QAAA,EAAE,SAAAC,MAAYC,KACdC,IAAYC,EAAYH,EAAQ,UAAU,GAC1CI,IAAkBf,EAAuBa,CAAS;AAGtD,SAAAG,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAG;AAAA,MACH,cAAW;AAAA,MACX,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAU;AAAA,MAET,UAAA;AAAA,QAAAR,IACES,gBAAAA,EAAAA,IAAA,OAAA,EAAI,eAAY,QAAQ,YAAM,CAAA,IAE/BA,gBAAAA,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAI;AAAA,YACJ,KAAKR;AAAA,YACL,WAAU;AAAA,YACV,QAAQ,CAACS,MAAUR,KAAA,gBAAAA,EAASQ,EAAM;AAAA,YAClC,eAAY;AAAA,UAAA;AAAA,QACd;AAAA,QAEFD,gBAAAA,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA,YACZ,OAAO;AAAA,cACL,YAAYF;AAAA,YACd;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../node_modules/react/jsx-runtime.cjs.js"),s=require("react"),B=require("../../ThemeProvider.cjs.js");;/* empty css */const F=require("../../../utils/copy.cjs.js"),o=require("../../../utils/string.cjs.js"),W=s.forwardRef(({prefix:l,suffix:d,description:i,descriptionPosition:j="top",isDisabled:v,error:n,onChange:_,label:x,name:u,placeholder:P,type:T="text",value:R,autoFocus:g,autoComplete:k,isRequired:h=!1,isReadOnly:y=!1,onSubmit:b,onClear:E,"data-testid":z},O)=>{const N=s.useRef(null),c=s.useRef(null),p=s.useRef(null),r=s.useRef(null),{className:S}=B.useTheme(),D=O||N;s.useEffect(()=>{if(!r.current)return;const t=()=>{var $,q;if(r.current){const a=r.current.offsetWidth||200;r.current.style.setProperty("--container-width",`${a}px`)}if(c.current){const a=c.current.offsetWidth||32;($=r.current)==null||$.style.setProperty("--prefix-width",`${a}px`)}if(p.current){const a=p.current.offsetWidth||32;(q=r.current)==null||q.style.setProperty("--suffix-width",`${a}px`)}};t();const f=new ResizeObserver(t);return r.current&&f.observe(r.current),c.current&&f.observe(c.current),p.current&&f.observe(p.current),()=>{f.disconnect()}},[l,d]);const w=`${u}-input`,m=`${u}-error`,I=`${u}-description`;return e.jsxRuntimeExports.jsxs("div",{ref:r,children:[i&&j==="top"&&e.jsxRuntimeExports.jsx("div",{id:I,className:"proton-Input__text","aria-live":"polite",children:i}),e.jsxRuntimeExports.jsxs("div",{className:o.csx("proton-Input__container-inner",l&&"proton-Input__has-prefix",d&&"proton-Input__has-suffix"),children:[l&&e.jsxRuntimeExports.jsx("div",{ref:c,className:o.csx("proton-Input__descriptor","proton-Input__prefix"),children:l}),e.jsxRuntimeExports.jsx("input",{id:w,name:u,type:T,value:R,onChange:t=>{_==null||_(t.target.value)},onKeyDown:t=>{switch(t.key){case"Enter":b&&(t.preventDefault(),b(t));break;case"Escape":E&&(t.preventDefault(),E());break}},onCopy:async()=>{var t;return await F.copyTextToClipboard((t=N.current)==null?void 0:t.value)},disabled:v,readOnly:y,required:h,autoFocus:g,autoComplete:k?"on":"off",placeholder:x?void 0:P,"aria-label":x||u,"aria-invalid":!!n,"aria-errormessage":typeof n=="string"?n:m,"aria-required":h,"aria-readonly":y,"aria-describedby":n?m:i?I:void 0,"aria-disabled":v,"data-testid":z,ref:D,className:o.csx("proton-Input",n&&"proton-Input--error",x&&"proton-Input__label-top",S)}),e.jsxRuntimeExports.jsxs("label",{htmlFor:w,className:o.csx("proton-Input__label",R&&"proton-Input__label--filled"),children:[x,h&&e.jsxRuntimeExports.jsx("span",{"aria-hidden":"true",children:" *"})]}),d&&e.jsxRuntimeExports.jsx("div",{ref:p,className:o.csx("proton-Input__descriptor","proton-Input__suffix"),children:d})]}),n?e.jsxRuntimeExports.jsx("div",{role:"alert",className:o.csx("proton-Input__error","proton-Input__text"),id:m,children:n}):i&&j==="bottom"?e.jsxRuntimeExports.jsx("div",{id:I,className:"proton-Input__text","aria-live":"polite",children:i}):null]})});W.displayName="ProtonUIInput";exports.Input=W;
2
+ //# sourceMappingURL=Input.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.cjs.js","sources":["../../../../src/components/Input/BaseInput/Input.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { forwardRef, useEffect, useRef } from \"react\";\n\nimport { useTheme } from \"../../ThemeProvider\";\nimport { csx } from \"../../../utils\";\nimport \"./Input.css\";\nimport { copyTextToClipboard } from \"../../../utils/copy\";\n\nexport interface BaseInputProps {\n /**\n * onChange handler for the input\n */\n onChange?: (value: string) => void;\n\n /** Whether the input is disabled. */\n isDisabled?: boolean;\n\n /** Description text shown above the input. */\n description?: React.ReactNode | string;\n\n /**\n * The position of the description text.\n * @default \"top\"\n */\n descriptionPosition?: \"top\" | \"bottom\";\n\n /** Error state that changes the input's visual style and displays an error message. */\n error?: React.ReactNode | string;\n\n /**\n * Label for the input element.\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.\n */\n label?: string;\n\n /** Test ID for the component. */\n \"data-testid\"?: string;\n\n /** Content to display before the input. Typically used for icons. */\n prefix?: React.ReactNode;\n\n /** Content to display after the input. Typically used for icons. */\n suffix?: React.ReactNode;\n\n /**\n * Should the browser's autocomplete be enabled?\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete\n */\n autoComplete?: boolean;\n\n /**\n * Should the input be autofocused?\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autofocus\n */\n autoFocus?: boolean;\n\n /**\n * The name attribute of the input element.\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/name\n */\n name: string;\n\n /**\n * The placeholder text to display when the input is empty.\n * @note label takes precedence over placeholder, if both are provided.\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/placeholder\n */\n placeholder?: string;\n\n /**\n * The type attribute of the input element.\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/type\n * @default \"text\"\n */\n type?: string;\n\n /**\n * The value of the input.\n * @external https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#value\n */\n value?: string;\n\n /**\n * Whether the input is required.\n * @default false\n */\n isRequired?: boolean;\n\n /**\n * Whether the input is read-only.\n * @default false\n */\n isReadOnly?: boolean;\n\n /**\n * Called when the input is submitted (e.g. by pressing Enter).\n */\n onSubmit?: React.FormEventHandler<HTMLInputElement>;\n\n /**\n * Called when the input is cleared (e.g. by pressing Escape).\n */\n onClear?: () => void;\n}\n\n/**\n * A controlled and customizable input component with support for labels, prefixes, suffixes, and error states.\n *\n * API:\n * - {@link BaseInputProps}\n */\nexport const Input = forwardRef<HTMLInputElement, BaseInputProps>(\n (\n {\n prefix,\n suffix,\n description,\n descriptionPosition = \"top\",\n isDisabled,\n error,\n onChange,\n label,\n name,\n placeholder,\n type = \"text\",\n value,\n autoFocus,\n autoComplete,\n isRequired = false,\n isReadOnly = false,\n onSubmit,\n onClear,\n \"data-testid\": testId,\n },\n forwardedRef: React.RefObject<HTMLInputElement>\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const prefixRef = useRef<HTMLDivElement>(null);\n const suffixRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const { className } = useTheme();\n const ref = forwardedRef || inputRef;\n\n // Control dynamic prefix and suffix widths using ResizeObserver\n useEffect(() => {\n if (!containerRef.current) return;\n\n const updateSizes = () => {\n if (containerRef.current) {\n const containerWidth = containerRef.current.offsetWidth || 200;\n containerRef.current.style.setProperty(\n \"--container-width\",\n `${containerWidth}px`\n );\n }\n\n if (prefixRef.current) {\n const prefixWidth = prefixRef.current.offsetWidth || 32;\n containerRef.current?.style.setProperty(\n \"--prefix-width\",\n `${prefixWidth}px`\n );\n }\n\n if (suffixRef.current) {\n const suffixWidth = suffixRef.current.offsetWidth || 32;\n containerRef.current?.style.setProperty(\n \"--suffix-width\",\n `${suffixWidth}px`\n );\n }\n };\n\n updateSizes();\n\n const resizeObserver = new ResizeObserver(updateSizes);\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n if (prefixRef.current) {\n resizeObserver.observe(prefixRef.current);\n }\n if (suffixRef.current) {\n resizeObserver.observe(suffixRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [prefix, suffix]);\n\n const inputId = `${name}-input`;\n const errorId = `${name}-error`;\n const descriptionId = `${name}-description`;\n\n return (\n <div ref={containerRef}>\n {description && descriptionPosition === \"top\" && (\n <div\n id={descriptionId}\n className=\"proton-Input__text\"\n aria-live=\"polite\"\n >\n {description}\n </div>\n )}\n <div className={csx(\n \"proton-Input__container-inner\",\n prefix && \"proton-Input__has-prefix\",\n suffix && \"proton-Input__has-suffix\"\n )}>\n {prefix && (\n <div\n ref={prefixRef}\n className={csx(\n \"proton-Input__descriptor\",\n \"proton-Input__prefix\"\n )}\n >\n {prefix}\n </div>\n )}\n\n <input\n id={inputId}\n name={name}\n type={type}\n value={value}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.value);\n }}\n onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\n switch (e.key) {\n case \"Enter\":\n if (onSubmit) {\n e.preventDefault();\n onSubmit(e);\n }\n break;\n case \"Escape\":\n if (onClear) {\n e.preventDefault();\n onClear();\n }\n break;\n }\n }}\n onCopy={async () =>\n await copyTextToClipboard(inputRef.current?.value)\n }\n disabled={isDisabled}\n readOnly={isReadOnly}\n required={isRequired}\n autoFocus={autoFocus}\n autoComplete={autoComplete ? \"on\" : \"off\"}\n placeholder={label ? undefined : placeholder}\n aria-label={label || name}\n aria-invalid={Boolean(error)}\n aria-errormessage={typeof error === \"string\" ? error : errorId}\n aria-required={isRequired}\n aria-readonly={isReadOnly}\n aria-describedby={\n error ? errorId : description ? descriptionId : undefined\n }\n aria-disabled={isDisabled}\n data-testid={testId}\n ref={ref}\n className={csx(\n \"proton-Input\",\n error && \"proton-Input--error\",\n label && \"proton-Input__label-top\",\n className\n )}\n />\n\n <label\n htmlFor={inputId}\n className={csx(\n \"proton-Input__label\",\n value && \"proton-Input__label--filled\"\n )}\n >\n {label}\n {isRequired && <span aria-hidden=\"true\"> *</span>}\n </label>\n\n {suffix && (\n <div\n ref={suffixRef}\n className={csx(\n \"proton-Input__descriptor\",\n \"proton-Input__suffix\"\n )}\n >\n {suffix}\n </div>\n )}\n </div>\n\n {error ? (\n <div\n role=\"alert\"\n className={csx(\"proton-Input__error\", \"proton-Input__text\")}\n id={errorId}\n >\n {error}\n </div>\n ) : description && descriptionPosition === \"bottom\" ? (\n <div\n id={descriptionId}\n className=\"proton-Input__text\"\n aria-live=\"polite\"\n >\n {description}\n </div>\n ) : null}\n </div>\n );\n }\n);\n\nInput.displayName = \"ProtonUIInput\";\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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"}