@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,89 @@
1
+ import { j as a } from "../../node_modules/react/jsx-runtime.es.js";
2
+ import { useMemo as p } from "react";
3
+ import { parseTableChildren as m } from "./Collection/collectionParser.es.js";
4
+ import { TableHeader as b, TableColumn as T, TableBody as u, TableRow as x, TableCell as h } from "./Collection/CompoundComponents.es.js";
5
+ import { useTableCollection as y } from "./Collection/useTableCollection.es.js";
6
+ /* empty css */
7
+ const _ = ({ children: s, name: i }) => {
8
+ const c = p(
9
+ () => m(s),
10
+ [s]
11
+ ), o = y(c);
12
+ return /* @__PURE__ */ a.jsxs(
13
+ "table",
14
+ {
15
+ className: "proton-Table",
16
+ role: "table",
17
+ "aria-rowcount": o.getTotalRowCount,
18
+ "aria-colcount": o.columns.length,
19
+ "aria-label": i,
20
+ children: [
21
+ /* @__PURE__ */ a.jsx("caption", { className: "proton-Table__caption", children: i }),
22
+ /* @__PURE__ */ a.jsx(
23
+ "thead",
24
+ {
25
+ className: "proton-Table__rowGroup--header",
26
+ role: "rowgroup",
27
+ style: o.isHeaderHidden ? { display: "none" } : void 0,
28
+ children: /* @__PURE__ */ a.jsx("tr", { className: "proton-Table__header-row", role: "row", "aria-rowindex": 1, children: o.columns.map((e, t) => /* @__PURE__ */ a.jsx(
29
+ "th",
30
+ {
31
+ className: "proton-Table__header",
32
+ role: "columnheader",
33
+ scope: "col",
34
+ "aria-colindex": t + 1,
35
+ "aria-sort": e.ariaSort,
36
+ children: e.header
37
+ },
38
+ e.key
39
+ )) })
40
+ }
41
+ ),
42
+ /* @__PURE__ */ a.jsx("tbody", { className: "proton-Table__body", role: "rowgroup", children: o.rows.map((e, t) => /* @__PURE__ */ a.jsx(
43
+ "tr",
44
+ {
45
+ className: "proton-Table__row",
46
+ role: "row",
47
+ "aria-rowindex": o.getRowAriaIndex(t),
48
+ onClick: e == null ? void 0 : e.onClick,
49
+ tabIndex: e != null && e.onClick ? 0 : void 0,
50
+ onKeyDown: e != null && e.onClick ? (l) => {
51
+ var r;
52
+ (l.key === "Enter" || l.key === " ") && (l.preventDefault(), (r = e.onClick) == null || r.call(e));
53
+ } : void 0,
54
+ children: o.columns.map((l, r) => {
55
+ const n = e.cells.find((d) => d.columnKey === l.key);
56
+ return /* @__PURE__ */ a.jsx(
57
+ "td",
58
+ {
59
+ className: "proton-Table__cell",
60
+ role: "cell",
61
+ "aria-colindex": r + 1,
62
+ colSpan: n == null ? void 0 : n.colSpan,
63
+ children: (n == null ? void 0 : n.value) || ""
64
+ },
65
+ l.key
66
+ );
67
+ })
68
+ },
69
+ e.key
70
+ )) })
71
+ ]
72
+ }
73
+ );
74
+ }, v = Object.assign(_, {
75
+ /** Table header: {@link TableHeaderProps} */
76
+ Header: b,
77
+ /** Table column: {@link TableColumnProps} */
78
+ Column: T,
79
+ /** Table body: {@link TableBodyProps} */
80
+ Body: u,
81
+ /** Table row: {@link TableRowProps} */
82
+ Row: x,
83
+ /** Table cell: {@link TableCellProps} */
84
+ Cell: h
85
+ });
86
+ export {
87
+ v as Table
88
+ };
89
+ //# sourceMappingURL=Table.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.es.js","sources":["../../../src/components/Table/Table.tsx"],"sourcesContent":["import { ReactElement, useMemo } from \"react\";\nimport { parseTableChildren } from \"./Collection/collectionParser\";\nimport {\n TableHeader,\n TableColumn,\n TableBody,\n TableRow,\n TableCell,\n TableHeaderProps,\n TableColumnProps,\n TableBodyProps,\n TableRowProps,\n TableCellProps,\n} from \"./Collection/CompoundComponents\";\nimport { useTableCollection } from \"./Collection/useTableCollection\";\nimport type {\n TableData,\n TableColumnData,\n TableRowData,\n TableCellData,\n} from \"./types\";\nimport \"./Table.css\";\n\nexport type { TableColumnData, TableCellData, TableRowData, TableData };\n\nexport interface TableProps {\n children: [ReactElement<TableHeaderProps>, ReactElement<TableBodyProps>];\n /** Table name/caption for accessibility. Provides essential context for screen readers about table content. */\n name: string;\n}\n\nconst TableComponent = ({ children, name }: TableProps) => {\n const tableData: TableData = useMemo(\n () => parseTableChildren(children),\n [children]\n );\n const collection = useTableCollection(tableData);\n\n return (\n <table\n className=\"proton-Table\"\n role=\"table\"\n aria-rowcount={collection.getTotalRowCount}\n aria-colcount={collection.columns.length}\n aria-label={name}\n >\n <caption className=\"proton-Table__caption\">{name}</caption>\n\n {/* Header */}\n <thead\n className=\"proton-Table__rowGroup--header\"\n role=\"rowgroup\"\n style={collection.isHeaderHidden ? { display: \"none\" } : undefined}\n >\n <tr className=\"proton-Table__header-row\" role=\"row\" aria-rowindex={1}>\n {collection.columns.map((column, index) => (\n <th\n key={column.key}\n className=\"proton-Table__header\"\n role=\"columnheader\"\n scope=\"col\"\n aria-colindex={index + 1}\n aria-sort={column.ariaSort}\n >\n {column.header}\n </th>\n ))}\n </tr>\n </thead>\n\n {/* Body */}\n <tbody className=\"proton-Table__body\" role=\"rowgroup\">\n {collection.rows.map((row, rowIndex) => (\n <tr\n key={row.key}\n className=\"proton-Table__row\"\n role=\"row\"\n aria-rowindex={collection.getRowAriaIndex(rowIndex)}\n onClick={row?.onClick}\n tabIndex={row?.onClick ? 0 : undefined}\n onKeyDown={\n row?.onClick\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n // Enable keyboard navigation\n e.preventDefault();\n row.onClick?.();\n }\n }\n : undefined\n }\n >\n {collection.columns.map((column, colIndex) => {\n const cell = row.cells.find((c) => c.columnKey === column.key);\n return (\n <td\n key={column.key}\n className=\"proton-Table__cell\"\n role=\"cell\"\n aria-colindex={colIndex + 1}\n colSpan={cell?.colSpan}\n >\n {cell?.value || \"\"}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n );\n};\n\n/**\n * Base Table component that renders data in rows and columns using collections.\n *\n * - Built-in keyboard navigation for interactive rows.\n * - Full ARIA table semantics with proper roles, labels, and indices.\n *\n * API:\n * - {@link TableProps}\n *\n * @example\n * ```tsx\n * <Table caption=\"Employee Directory\">\n * <Table.Header>\n * <Table.Column id=\"name\">Name</Table.Column>\n * </Table.Header>\n * <Table.Body>\n * <Table.Row key=\"1\">\n * <Table.Cell>Joe</Table.Cell>\n * </Table.Row>\n * </Table.Body>\n * </Table>\n * ```\n */\nconst Table = Object.assign(TableComponent, {\n /** Table header: {@link TableHeaderProps} */\n Header: TableHeader,\n /** Table column: {@link TableColumnProps} */\n Column: TableColumn,\n /** Table body: {@link TableBodyProps} */\n Body: TableBody,\n /** Table row: {@link TableRowProps} */\n Row: TableRow,\n /** Table cell: {@link TableCellProps} */\n Cell: TableCell,\n});\n\nexport { Table };\nexport type {\n TableHeaderProps,\n TableColumnProps,\n TableBodyProps,\n TableRowProps,\n TableCellProps,\n};\n"],"names":["TableComponent","children","name","tableData","useMemo","parseTableChildren","collection","useTableCollection","jsxs","jsx","column","index","row","rowIndex","e","_a","colIndex","cell","c","Table","TableHeader","TableColumn","TableBody","TableRow","TableCell"],"mappings":";;;;;;AA+BA,MAAMA,IAAiB,CAAC,EAAE,UAAAC,GAAU,MAAAC,QAAuB;AACzD,QAAMC,IAAuBC;AAAA,IAC3B,MAAMC,EAAmBJ,CAAQ;AAAA,IACjC,CAACA,CAAQ;AAAA,EAAA,GAELK,IAAaC,EAAmBJ,CAAS;AAG7C,SAAAK,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,iBAAeF,EAAW;AAAA,MAC1B,iBAAeA,EAAW,QAAQ;AAAA,MAClC,cAAYJ;AAAA,MAEZ,UAAA;AAAA,QAACO,gBAAAA,EAAA,IAAA,WAAA,EAAQ,WAAU,yBAAyB,UAAKP,GAAA;AAAA,QAGjDO,gBAAAA,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,OAAOH,EAAW,iBAAiB,EAAE,SAAS,OAAW,IAAA;AAAA,YAEzD,UAACG,gBAAAA,EAAA,IAAA,MAAA,EAAG,WAAU,4BAA2B,MAAK,OAAM,iBAAe,GAChE,UAAWH,EAAA,QAAQ,IAAI,CAACI,GAAQC,MAC/BF,gBAAAA,EAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,WAAU;AAAA,gBACV,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,iBAAeE,IAAQ;AAAA,gBACvB,aAAWD,EAAO;AAAA,gBAEjB,UAAOA,EAAA;AAAA,cAAA;AAAA,cAPHA,EAAO;AAAA,YASf,CAAA,GACH;AAAA,UAAA;AAAA,QACF;AAAA,QAGAD,gBAAAA,EAAAA,IAAC,SAAM,EAAA,WAAU,sBAAqB,MAAK,YACxC,UAAAH,EAAW,KAAK,IAAI,CAACM,GAAKC,MACzBJ,gBAAAA,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,iBAAeH,EAAW,gBAAgBO,CAAQ;AAAA,YAClD,SAASD,KAAA,gBAAAA,EAAK;AAAA,YACd,UAAUA,KAAA,QAAAA,EAAK,UAAU,IAAI;AAAA,YAC7B,WACEA,KAAA,QAAAA,EAAK,UACD,CAACE,MAAM;;AACL,eAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SAEjCA,EAAE,eAAe,IACjBC,IAAAH,EAAI,YAAJ,QAAAG,EAAA,KAAAH;AAAA,YAGJ,IAAA;AAAA,YAGL,UAAWN,EAAA,QAAQ,IAAI,CAACI,GAAQM,MAAa;AACtC,oBAAAC,IAAOL,EAAI,MAAM,KAAK,CAACM,MAAMA,EAAE,cAAcR,EAAO,GAAG;AAE3D,qBAAAD,gBAAAA,EAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,WAAU;AAAA,kBACV,MAAK;AAAA,kBACL,iBAAeO,IAAW;AAAA,kBAC1B,SAASC,KAAA,gBAAAA,EAAM;AAAA,kBAEd,kCAAM,UAAS;AAAA,gBAAA;AAAA,gBANXP,EAAO;AAAA,cAAA;AAAA,YAOd,CAEH;AAAA,UAAA;AAAA,UA/BIE,EAAI;AAAA,QAiCZ,CAAA,GACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GAyBMO,IAAQ,OAAO,OAAOnB,GAAgB;AAAA;AAAA,EAE1C,QAAQoB;AAAA;AAAA,EAER,QAAQC;AAAA;AAAA,EAER,MAAMC;AAAA;AAAA,EAEN,KAAKC;AAAA;AAAA,EAEL,MAAMC;AACR,CAAC;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../../../node_modules/react/jsx-runtime.cjs.js");;/* empty css */const o=require("../../../utils/string.cjs.js"),p=({children:e,maxWidth:i,singleLine:s=!0,lines:t=1,title:l,"data-testid":r})=>n.jsxRuntimeExports.jsx("div",{className:o.csx("proton-TextEllipsis",s||t===1?"proton-TextEllipsis--single-line":t>1?"proton-TextEllipsis--multi-line":""),style:{maxWidth:i,WebkitLineClamp:t},title:l,"data-testid":r,children:e});exports.TextEllipsis=p;
2
+ //# sourceMappingURL=TextEllipsis.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextEllipsis.cjs.js","sources":["../../../../src/components/Text/TextEllipsis/TextEllipsis.tsx"],"sourcesContent":["\"use client\";\n\nimport { ReactNode } from \"react\";\nimport { csx } from \"../../../utils\";\nimport \"./TextEllipsis.css\";\n\ninterface TextEllipsisProps {\n /**\n * The content to display within the text ellipsis.\n */\n children: ReactNode;\n\n /**\n * The maximum width of the text container in any valid CSS unit (px, rem, em, %, etc.).\n * When the container width is less than this value, text will be truncated with an ellipsis.\n */\n maxWidth?: string | number;\n\n /**\n * Whether to truncate the text to a single line. Default is true.\n * If false, the text will wrap to multiple lines.\n */\n singleLine?: boolean;\n\n /**\n * The number of lines to show before truncating with an ellipsis.\n * Only applies when singleLine is false.\n */\n lines?: number;\n\n /**\n * The title attribute to show on hover. If not provided and singleLine is true,\n * the children will be used as the title (if children is a string).\n */\n title?: string;\n\n /**\n * A test ID.\n */\n \"data-testid\"?: string;\n}\n\n/**\n * A component that displays text with an ellipsis when it overflows its container.\n *\n * API:\n * - {@link TextEllipsisProps}\n */\nexport const TextEllipsis = ({\n children,\n maxWidth,\n singleLine = true,\n lines = 1,\n title,\n \"data-testid\": testId,\n}: TextEllipsisProps) => {\n return (\n <div\n className={csx(\n \"proton-TextEllipsis\",\n singleLine || lines === 1\n ? \"proton-TextEllipsis--single-line\"\n : lines > 1\n ? \"proton-TextEllipsis--multi-line\"\n : \"\"\n )}\n style={{\n maxWidth: maxWidth,\n WebkitLineClamp: lines,\n }}\n title={title}\n data-testid={testId}\n >\n {children}\n </div>\n );\n};\n"],"names":["TextEllipsis","children","maxWidth","singleLine","lines","title","testId","jsx","csx"],"mappings":"uOAgDaA,EAAe,CAAC,CAC3B,SAAAC,EACA,SAAAC,EACA,WAAAC,EAAa,GACb,MAAAC,EAAQ,EACR,MAAAC,EACA,cAAeC,CACjB,IAEIC,EAAA,kBAAA,IAAC,MAAA,CACC,UAAWC,EAAA,IACT,sBACAL,GAAcC,IAAU,EACpB,mCACAA,EAAQ,EACN,kCACA,EACR,EACA,MAAO,CACL,SAAAF,EACA,gBAAiBE,CACnB,EACA,MAAAC,EACA,cAAaC,EAEZ,SAAAL,CAAA,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { j as p } from "../../../node_modules/react/jsx-runtime.es.js";
2
+ /* empty css */
3
+ import { csx as r } from "../../../utils/string.es.js";
4
+ const n = ({
5
+ children: i,
6
+ maxWidth: s,
7
+ singleLine: e = !0,
8
+ lines: t = 1,
9
+ title: o,
10
+ "data-testid": l
11
+ }) => /* @__PURE__ */ p.jsx(
12
+ "div",
13
+ {
14
+ className: r(
15
+ "proton-TextEllipsis",
16
+ e || t === 1 ? "proton-TextEllipsis--single-line" : t > 1 ? "proton-TextEllipsis--multi-line" : ""
17
+ ),
18
+ style: {
19
+ maxWidth: s,
20
+ WebkitLineClamp: t
21
+ },
22
+ title: o,
23
+ "data-testid": l,
24
+ children: i
25
+ }
26
+ );
27
+ export {
28
+ n as TextEllipsis
29
+ };
30
+ //# sourceMappingURL=TextEllipsis.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextEllipsis.es.js","sources":["../../../../src/components/Text/TextEllipsis/TextEllipsis.tsx"],"sourcesContent":["\"use client\";\n\nimport { ReactNode } from \"react\";\nimport { csx } from \"../../../utils\";\nimport \"./TextEllipsis.css\";\n\ninterface TextEllipsisProps {\n /**\n * The content to display within the text ellipsis.\n */\n children: ReactNode;\n\n /**\n * The maximum width of the text container in any valid CSS unit (px, rem, em, %, etc.).\n * When the container width is less than this value, text will be truncated with an ellipsis.\n */\n maxWidth?: string | number;\n\n /**\n * Whether to truncate the text to a single line. Default is true.\n * If false, the text will wrap to multiple lines.\n */\n singleLine?: boolean;\n\n /**\n * The number of lines to show before truncating with an ellipsis.\n * Only applies when singleLine is false.\n */\n lines?: number;\n\n /**\n * The title attribute to show on hover. If not provided and singleLine is true,\n * the children will be used as the title (if children is a string).\n */\n title?: string;\n\n /**\n * A test ID.\n */\n \"data-testid\"?: string;\n}\n\n/**\n * A component that displays text with an ellipsis when it overflows its container.\n *\n * API:\n * - {@link TextEllipsisProps}\n */\nexport const TextEllipsis = ({\n children,\n maxWidth,\n singleLine = true,\n lines = 1,\n title,\n \"data-testid\": testId,\n}: TextEllipsisProps) => {\n return (\n <div\n className={csx(\n \"proton-TextEllipsis\",\n singleLine || lines === 1\n ? \"proton-TextEllipsis--single-line\"\n : lines > 1\n ? \"proton-TextEllipsis--multi-line\"\n : \"\"\n )}\n style={{\n maxWidth: maxWidth,\n WebkitLineClamp: lines,\n }}\n title={title}\n data-testid={testId}\n >\n {children}\n </div>\n );\n};\n"],"names":["TextEllipsis","children","maxWidth","singleLine","lines","title","testId","jsx","csx"],"mappings":";;;AAgDO,MAAMA,IAAe,CAAC;AAAA,EAC3B,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,OAAAC,IAAQ;AAAA,EACR,OAAAC;AAAA,EACA,eAAeC;AACjB,MAEIC,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAL,KAAcC,MAAU,IACpB,qCACAA,IAAQ,IACN,oCACA;AAAA,IACR;AAAA,IACA,OAAO;AAAA,MACL,UAAAF;AAAA,MACA,iBAAiBE;AAAA,IACnB;AAAA,IACA,OAAAC;AAAA,IACA,eAAaC;AAAA,IAEZ,UAAAL;AAAA,EAAA;AAAA;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../node_modules/react/jsx-runtime.cjs.js");;/* empty css */const m=require("../../ThemeProvider.cjs.js"),u=require("../../Tooltip/Tooltip.cjs.js"),x=require("../../../utils/navigation.cjs.js"),c=require("../../../utils/string.cjs.js"),p=({to:e,children:n,tooltipProps:s,"data-testid":i})=>{const{className:a}=m.useTheme(),o=s?t.jsxRuntimeExports.jsx(u.TooltipTrigger,{delay:50,closeDelay:75,...s,children:n}):n;if(e){const r=x.isUrlExternal(e);return t.jsxRuntimeExports.jsx("span",{className:c.csx("proton-TextEmphasis",s&&"proton-TextEmphasis--tooltip",a),children:t.jsxRuntimeExports.jsx("a",{"data-testid":i,href:e,target:r?"_blank":void 0,rel:r?"noopener noreferrer":void 0,onClick:r?void 0:l=>x.handleInternalNavigation(l,e),children:o})})}return t.jsxRuntimeExports.jsx("span",{className:c.csx("proton-TextEmphasis",s&&"proton-TextEmphasis--tooltip",a),"data-testid":i,children:o})};exports.TextEmphasis=p;
2
+ //# sourceMappingURL=TextEmphasis.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextEmphasis.cjs.js","sources":["../../../../src/components/Text/TextEmphasis/TextEmphasis.tsx"],"sourcesContent":["\"use client\";\n\nimport { ReactNode } from \"react\";\nimport \"./TextEmphasis.css\";\n\nimport { csx } from \"../../../utils\";\nimport { useTheme } from \"../../ThemeProvider\";\nimport { TooltipTrigger, TooltipTriggerProps } from \"../../Tooltip/Tooltip\";\nimport {\n handleInternalNavigation,\n isUrlExternal,\n} from \"../../../utils/navigation\";\n\ninterface TextEmphasisProps extends React.HTMLAttributes<HTMLSpanElement> {\n /**\n * The URL that the text emphasis should link to. Turns the element into an `a` tag.\n */\n to?: string;\n /**\n * The content to display within the text emphasis.\n */\n children: ReactNode;\n /**\n * Props to pass to the tooltip trigger. When provided, the text emphasis will be wrapped in a tooltip trigger.\n */\n tooltipProps?: Omit<TooltipTriggerProps, \"children\">;\n /**\n * A test ID.\n */\n \"data-testid\"?: string;\n}\n\n/**\n * A component that displays text with emphasis. Provide tooltipProps to wrap the text in a tooltip trigger.\n *\n * API:\n * - {@link TextEmphasisProps}\n * - extends {@link React.HTMLAttributes}\n */\nexport const TextEmphasis = ({\n to,\n children,\n tooltipProps,\n \"data-testid\": testId,\n}: TextEmphasisProps) => {\n const { className: themeClassName } = useTheme();\n\n const content = tooltipProps ? (\n <TooltipTrigger delay={50} closeDelay={75} {...tooltipProps}>\n {children}\n </TooltipTrigger>\n ) : (\n children\n );\n\n if (to) {\n const isExternal = isUrlExternal(to);\n return (\n <span\n className={csx(\n \"proton-TextEmphasis\",\n tooltipProps && \"proton-TextEmphasis--tooltip\",\n themeClassName\n )}\n >\n <a\n data-testid={testId}\n href={to}\n target={isExternal ? \"_blank\" : undefined}\n rel={isExternal ? \"noopener noreferrer\" : undefined}\n onClick={\n !isExternal ? (e) => handleInternalNavigation(e, to) : undefined\n }\n >\n {content}\n </a>\n </span>\n );\n }\n\n return (\n <span\n className={csx(\n \"proton-TextEmphasis\",\n tooltipProps && \"proton-TextEmphasis--tooltip\",\n themeClassName\n )}\n data-testid={testId}\n >\n {content}\n </span>\n );\n};\n"],"names":["TextEmphasis","to","children","tooltipProps","testId","themeClassName","useTheme","content","jsx","TooltipTrigger","isExternal","isUrlExternal","csx","e","handleInternalNavigation"],"mappings":"uWAuCaA,EAAe,CAAC,CAC3B,GAAAC,EACA,SAAAC,EACA,aAAAC,EACA,cAAeC,CACjB,IAAyB,CACvB,KAAM,CAAE,UAAWC,CAAe,EAAIC,EAAS,SAAA,EAEzCC,EAAUJ,EACdK,EAAA,kBAAA,IAACC,EAAe,eAAA,CAAA,MAAO,GAAI,WAAY,GAAK,GAAGN,EAC5C,SAAAD,CACH,CAAA,EAEAA,EAGF,GAAID,EAAI,CACA,MAAAS,EAAaC,gBAAcV,CAAE,EAEjC,OAAAO,EAAA,kBAAA,IAAC,OAAA,CACC,UAAWI,EAAA,IACT,sBACAT,GAAgB,+BAChBE,CACF,EAEA,SAAAG,EAAA,kBAAA,IAAC,IAAA,CACC,cAAaJ,EACb,KAAMH,EACN,OAAQS,EAAa,SAAW,OAChC,IAAKA,EAAa,sBAAwB,OAC1C,QACGA,EAAsD,OAAxCG,GAAMC,EAAyB,yBAAAD,EAAGZ,CAAE,EAGpD,SAAAM,CAAA,CACH,CAAA,CAAA,CAGN,CAGE,OAAAC,EAAA,kBAAA,IAAC,OAAA,CACC,UAAWI,EAAA,IACT,sBACAT,GAAgB,+BAChBE,CACF,EACA,cAAaD,EAEZ,SAAAG,CAAA,CAAA,CAGP"}
@@ -0,0 +1,54 @@
1
+ import { j as s } from "../../../node_modules/react/jsx-runtime.es.js";
2
+ /* empty css */
3
+ import { useTheme as p } from "../../ThemeProvider.es.js";
4
+ import { TooltipTrigger as x } from "../../Tooltip/Tooltip.es.js";
5
+ import { isUrlExternal as c, handleInternalNavigation as d } from "../../../utils/navigation.es.js";
6
+ import { csx as m } from "../../../utils/string.es.js";
7
+ const g = ({
8
+ to: e,
9
+ children: a,
10
+ tooltipProps: t,
11
+ "data-testid": o
12
+ }) => {
13
+ const { className: n } = p(), i = t ? /* @__PURE__ */ s.jsx(x, { delay: 50, closeDelay: 75, ...t, children: a }) : a;
14
+ if (e) {
15
+ const r = c(e);
16
+ return /* @__PURE__ */ s.jsx(
17
+ "span",
18
+ {
19
+ className: m(
20
+ "proton-TextEmphasis",
21
+ t && "proton-TextEmphasis--tooltip",
22
+ n
23
+ ),
24
+ children: /* @__PURE__ */ s.jsx(
25
+ "a",
26
+ {
27
+ "data-testid": o,
28
+ href: e,
29
+ target: r ? "_blank" : void 0,
30
+ rel: r ? "noopener noreferrer" : void 0,
31
+ onClick: r ? void 0 : (l) => d(l, e),
32
+ children: i
33
+ }
34
+ )
35
+ }
36
+ );
37
+ }
38
+ return /* @__PURE__ */ s.jsx(
39
+ "span",
40
+ {
41
+ className: m(
42
+ "proton-TextEmphasis",
43
+ t && "proton-TextEmphasis--tooltip",
44
+ n
45
+ ),
46
+ "data-testid": o,
47
+ children: i
48
+ }
49
+ );
50
+ };
51
+ export {
52
+ g as TextEmphasis
53
+ };
54
+ //# sourceMappingURL=TextEmphasis.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextEmphasis.es.js","sources":["../../../../src/components/Text/TextEmphasis/TextEmphasis.tsx"],"sourcesContent":["\"use client\";\n\nimport { ReactNode } from \"react\";\nimport \"./TextEmphasis.css\";\n\nimport { csx } from \"../../../utils\";\nimport { useTheme } from \"../../ThemeProvider\";\nimport { TooltipTrigger, TooltipTriggerProps } from \"../../Tooltip/Tooltip\";\nimport {\n handleInternalNavigation,\n isUrlExternal,\n} from \"../../../utils/navigation\";\n\ninterface TextEmphasisProps extends React.HTMLAttributes<HTMLSpanElement> {\n /**\n * The URL that the text emphasis should link to. Turns the element into an `a` tag.\n */\n to?: string;\n /**\n * The content to display within the text emphasis.\n */\n children: ReactNode;\n /**\n * Props to pass to the tooltip trigger. When provided, the text emphasis will be wrapped in a tooltip trigger.\n */\n tooltipProps?: Omit<TooltipTriggerProps, \"children\">;\n /**\n * A test ID.\n */\n \"data-testid\"?: string;\n}\n\n/**\n * A component that displays text with emphasis. Provide tooltipProps to wrap the text in a tooltip trigger.\n *\n * API:\n * - {@link TextEmphasisProps}\n * - extends {@link React.HTMLAttributes}\n */\nexport const TextEmphasis = ({\n to,\n children,\n tooltipProps,\n \"data-testid\": testId,\n}: TextEmphasisProps) => {\n const { className: themeClassName } = useTheme();\n\n const content = tooltipProps ? (\n <TooltipTrigger delay={50} closeDelay={75} {...tooltipProps}>\n {children}\n </TooltipTrigger>\n ) : (\n children\n );\n\n if (to) {\n const isExternal = isUrlExternal(to);\n return (\n <span\n className={csx(\n \"proton-TextEmphasis\",\n tooltipProps && \"proton-TextEmphasis--tooltip\",\n themeClassName\n )}\n >\n <a\n data-testid={testId}\n href={to}\n target={isExternal ? \"_blank\" : undefined}\n rel={isExternal ? \"noopener noreferrer\" : undefined}\n onClick={\n !isExternal ? (e) => handleInternalNavigation(e, to) : undefined\n }\n >\n {content}\n </a>\n </span>\n );\n }\n\n return (\n <span\n className={csx(\n \"proton-TextEmphasis\",\n tooltipProps && \"proton-TextEmphasis--tooltip\",\n themeClassName\n )}\n data-testid={testId}\n >\n {content}\n </span>\n );\n};\n"],"names":["TextEmphasis","to","children","tooltipProps","testId","themeClassName","useTheme","content","jsx","TooltipTrigger","isExternal","isUrlExternal","csx","e","handleInternalNavigation"],"mappings":";;;;;;AAuCO,MAAMA,IAAe,CAAC;AAAA,EAC3B,IAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,eAAeC;AACjB,MAAyB;AACvB,QAAM,EAAE,WAAWC,EAAe,IAAIC,EAAS,GAEzCC,IAAUJ,IACdK,gBAAAA,EAAA,IAACC,GAAe,EAAA,OAAO,IAAI,YAAY,IAAK,GAAGN,GAC5C,UAAAD,EACH,CAAA,IAEAA;AAGF,MAAID,GAAI;AACA,UAAAS,IAAaC,EAAcV,CAAE;AAEjC,WAAAO,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWI;AAAA,UACT;AAAA,UACAT,KAAgB;AAAA,UAChBE;AAAA,QACF;AAAA,QAEA,UAAAG,gBAAAA,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,eAAaJ;AAAA,YACb,MAAMH;AAAA,YACN,QAAQS,IAAa,WAAW;AAAA,YAChC,KAAKA,IAAa,wBAAwB;AAAA,YAC1C,SACGA,IAAsD,SAAzC,CAACG,MAAMC,EAAyBD,GAAGZ,CAAE;AAAA,YAGpD,UAAAM;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AAGE,SAAAC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWI;AAAA,QACT;AAAA,QACAT,KAAgB;AAAA,QAChBE;AAAA,MACF;AAAA,MACA,eAAaD;AAAA,MAEZ,UAAAG;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../node_modules/react/jsx-runtime.cjs.js"),t=require("react"),h=require("../design/lightTheme/colors.cjs.js"),l=require("../design/generateStylesheet.cjs.js"),d=require("../design/theme.cjs.js"),u=t.createContext(void 0),T=()=>{const e=t.useContext(u);if(e===void 0)throw new Error("useTheme must be used within a ThemeProvider");return e},x=({theme:e,children:i,palette:r=h.LIGHT_PALETTE})=>{const s=t.useRef(null),o=d.THEME_CLASSES[e],n=t.useMemo(()=>l.generateStylesheet(r,e),[r,e]);return t.useEffect(()=>{s.current&&(s.current.className=o,Object.entries(n).forEach(([a,m])=>{s.current.style.setProperty(a,m)}))},[e,o,r,n]),c.jsxRuntimeExports.jsx(u.Provider,{value:{theme:e,style:n,palette:r,className:o,hasPalette:!!r},children:c.jsxRuntimeExports.jsx("div",{ref:s,children:i})})};exports.ThemeProvider=x;exports.useTheme=T;
2
+ //# sourceMappingURL=ThemeProvider.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider.cjs.js","sources":["../../src/components/ThemeProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport React, {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\n\nimport { THEME_CLASSES } from \"../design\";\nimport { LIGHT_PALETTE } from \"../design/lightTheme/colors\";\nimport { ProtonPalette, ProtonStyleSheet, ProtonTheme } from \"../design/types\";\nimport { generateStylesheet } from \"../design/generateStylesheet\";\n\ninterface ThemeContextType {\n theme: ProtonTheme;\n className: string;\n style: ProtonStyleSheet;\n palette: ProtonPalette;\n hasPalette?: boolean;\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport const useTheme = () => {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\n\ninterface ThemeProviderProps {\n theme: ProtonTheme;\n children: ReactNode;\n palette?: ProtonPalette;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n theme,\n children,\n palette = LIGHT_PALETTE,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const themeClass = THEME_CLASSES[theme];\n const themeVariables = useMemo(\n () => generateStylesheet(palette, theme),\n [palette, theme]\n );\n\n useEffect(() => {\n // Apply the theme class and css variables to the container div so that it is only scoped\n // to the ThemeProvider children.\n if (containerRef.current) {\n containerRef.current.className = themeClass;\n\n Object.entries(themeVariables).forEach(([key, value]) => {\n containerRef.current!.style.setProperty(key, value as string);\n });\n }\n }, [theme, themeClass, palette, themeVariables]);\n\n return (\n <ThemeContext.Provider\n value={{\n theme,\n style: themeVariables,\n palette,\n className: themeClass,\n hasPalette: Boolean(palette),\n }}\n >\n <div ref={containerRef}>{children}</div>\n </ThemeContext.Provider>\n );\n};\n"],"names":["ThemeContext","createContext","useTheme","context","useContext","ThemeProvider","theme","children","palette","LIGHT_PALETTE","containerRef","useRef","themeClass","THEME_CLASSES","themeVariables","useMemo","generateStylesheet","useEffect","key","value","jsx"],"mappings":"oSAwBMA,EAAeC,EAAAA,cAA4C,MAAS,EAE7DC,EAAW,IAAM,CACtB,MAAAC,EAAUC,aAAWJ,CAAY,EACvC,GAAIG,IAAY,OACR,MAAA,IAAI,MAAM,8CAA8C,EAEzD,OAAAA,CACT,EAQaE,EAA8C,CAAC,CAAA,MAC1DC,EACA,SAAAC,EACA,QAAAC,EAAUC,EAAA,aACZ,IAAM,CACE,MAAAC,EAAeC,SAAuB,IAAI,EAC1CC,EAAaC,gBAAcP,CAAK,EAChCQ,EAAiBC,EAAA,QACrB,IAAMC,EAAmB,mBAAAR,EAASF,CAAK,EACvC,CAACE,EAASF,CAAK,CAAA,EAGjBW,OAAAA,EAAAA,UAAU,IAAM,CAGVP,EAAa,UACfA,EAAa,QAAQ,UAAYE,EAE1B,OAAA,QAAQE,CAAc,EAAE,QAAQ,CAAC,CAACI,EAAKC,CAAK,IAAM,CACvDT,EAAa,QAAS,MAAM,YAAYQ,EAAKC,CAAe,CAAA,CAC7D,IAEF,CAACb,EAAOM,EAAYJ,EAASM,CAAc,CAAC,EAG7CM,EAAA,kBAAA,IAACpB,EAAa,SAAb,CACC,MAAO,CAAA,MACLM,EACA,MAAOQ,EACP,QAAAN,EACA,UAAWI,EACX,WAAY,EAAQJ,CACtB,EAEA,SAACY,EAAA,kBAAA,IAAA,MAAA,CAAI,IAAKV,EAAe,SAAAH,EAAS,CAAA,CAAA,CAGxC"}
@@ -0,0 +1,42 @@
1
+ import { j as n } from "../node_modules/react/jsx-runtime.es.js";
2
+ import { createContext as a, useContext as f, useRef as h, useMemo as l, useEffect as x } from "react";
3
+ import { LIGHT_PALETTE as E } from "../design/lightTheme/colors.es.js";
4
+ import { generateStylesheet as T } from "../design/generateStylesheet.es.js";
5
+ import { THEME_CLASSES as d } from "../design/theme.es.js";
6
+ const i = a(void 0), y = () => {
7
+ const e = f(i);
8
+ if (e === void 0)
9
+ throw new Error("useTheme must be used within a ThemeProvider");
10
+ return e;
11
+ }, S = ({
12
+ theme: e,
13
+ children: c,
14
+ palette: r = E
15
+ }) => {
16
+ const o = h(null), t = d[e], s = l(
17
+ () => T(r, e),
18
+ [r, e]
19
+ );
20
+ return x(() => {
21
+ o.current && (o.current.className = t, Object.entries(s).forEach(([m, u]) => {
22
+ o.current.style.setProperty(m, u);
23
+ }));
24
+ }, [e, t, r, s]), /* @__PURE__ */ n.jsx(
25
+ i.Provider,
26
+ {
27
+ value: {
28
+ theme: e,
29
+ style: s,
30
+ palette: r,
31
+ className: t,
32
+ hasPalette: !!r
33
+ },
34
+ children: /* @__PURE__ */ n.jsx("div", { ref: o, children: c })
35
+ }
36
+ );
37
+ };
38
+ export {
39
+ S as ThemeProvider,
40
+ y as useTheme
41
+ };
42
+ //# sourceMappingURL=ThemeProvider.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider.es.js","sources":["../../src/components/ThemeProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport React, {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\n\nimport { THEME_CLASSES } from \"../design\";\nimport { LIGHT_PALETTE } from \"../design/lightTheme/colors\";\nimport { ProtonPalette, ProtonStyleSheet, ProtonTheme } from \"../design/types\";\nimport { generateStylesheet } from \"../design/generateStylesheet\";\n\ninterface ThemeContextType {\n theme: ProtonTheme;\n className: string;\n style: ProtonStyleSheet;\n palette: ProtonPalette;\n hasPalette?: boolean;\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport const useTheme = () => {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\n\ninterface ThemeProviderProps {\n theme: ProtonTheme;\n children: ReactNode;\n palette?: ProtonPalette;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n theme,\n children,\n palette = LIGHT_PALETTE,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const themeClass = THEME_CLASSES[theme];\n const themeVariables = useMemo(\n () => generateStylesheet(palette, theme),\n [palette, theme]\n );\n\n useEffect(() => {\n // Apply the theme class and css variables to the container div so that it is only scoped\n // to the ThemeProvider children.\n if (containerRef.current) {\n containerRef.current.className = themeClass;\n\n Object.entries(themeVariables).forEach(([key, value]) => {\n containerRef.current!.style.setProperty(key, value as string);\n });\n }\n }, [theme, themeClass, palette, themeVariables]);\n\n return (\n <ThemeContext.Provider\n value={{\n theme,\n style: themeVariables,\n palette,\n className: themeClass,\n hasPalette: Boolean(palette),\n }}\n >\n <div ref={containerRef}>{children}</div>\n </ThemeContext.Provider>\n );\n};\n"],"names":["ThemeContext","createContext","useTheme","context","useContext","ThemeProvider","theme","children","palette","LIGHT_PALETTE","containerRef","useRef","themeClass","THEME_CLASSES","themeVariables","useMemo","generateStylesheet","useEffect","key","value","jsx"],"mappings":";;;;;AAwBA,MAAMA,IAAeC,EAA4C,MAAS,GAE7DC,IAAW,MAAM;AACtB,QAAAC,IAAUC,EAAWJ,CAAY;AACvC,MAAIG,MAAY;AACR,UAAA,IAAI,MAAM,8CAA8C;AAEzD,SAAAA;AACT,GAQaE,IAA8C,CAAC;AAAA,EAC1D,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC,IAAUC;AACZ,MAAM;AACE,QAAAC,IAAeC,EAAuB,IAAI,GAC1CC,IAAaC,EAAcP,CAAK,GAChCQ,IAAiBC;AAAA,IACrB,MAAMC,EAAmBR,GAASF,CAAK;AAAA,IACvC,CAACE,GAASF,CAAK;AAAA,EAAA;AAGjB,SAAAW,EAAU,MAAM;AAGd,IAAIP,EAAa,YACfA,EAAa,QAAQ,YAAYE,GAE1B,OAAA,QAAQE,CAAc,EAAE,QAAQ,CAAC,CAACI,GAAKC,CAAK,MAAM;AACvD,MAAAT,EAAa,QAAS,MAAM,YAAYQ,GAAKC,CAAe;AAAA,IAAA,CAC7D;AAAA,KAEF,CAACb,GAAOM,GAAYJ,GAASM,CAAc,CAAC,GAG7CM,gBAAAA,EAAA;AAAA,IAACpB,EAAa;AAAA,IAAb;AAAA,MACC,OAAO;AAAA,QACL,OAAAM;AAAA,QACA,OAAOQ;AAAA,QACP,SAAAN;AAAA,QACA,WAAWI;AAAA,QACX,YAAY,EAAQJ;AAAA,MACtB;AAAA,MAEA,UAACY,gBAAAA,EAAA,IAAA,OAAA,EAAI,KAAKV,GAAe,UAAAH,GAAS;AAAA,IAAA;AAAA,EAAA;AAGxC;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../node_modules/react/jsx-runtime.cjs.js");;/* empty css */const u=require("../ThemeProvider.cjs.js"),t=require("../../utils/color2k.cjs.js"),i=require("../../utils/string.cjs.js"),a=({width:o="100%",height:s="1.5rem",borderRadius:r="4px"})=>{const{hasPalette:n,palette:e}=u.useTheme(),m={"--tombstone-custom-background":e.PRIMARY.MEDIUM,"--tombstone-custom-primary":t.transparentize(e.PRIMARY.DARK,.9),"--tombstone-custom-secondary":t.transparentize(e.SECONDARY.DARK,.7)};return c.jsxRuntimeExports.jsx("div",{className:i.csx("proton-Tombstone",n&&"proton-Tombstone--custom"),style:{...m,width:o,height:s,borderRadius:r}})};exports.Tombstone=a;
2
+ //# sourceMappingURL=Tombstone.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tombstone.cjs.js","sources":["../../../src/components/Tombstone/Tombstone.tsx"],"sourcesContent":["\"use client\";\n\nimport \"./Tombstone.css\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { csx, transparentize } from \"../../utils\";\n\nexport interface TombstoneProps {\n /**\n * The border radius of the tombstone.\n * @default \"4px\"\n */\n borderRadius?: string;\n /**\n * The height of the tombstone.\n * @default \"1.5rem\"\n */\n height?: string;\n /**\n * The width of the tombstone.\n * @default \"100%\"\n */\n width?: string;\n}\n\n/**\n * A component that displays a loading tombstone. For use as a placeholder while loading content.\n *\n * API:\n * - {@link TombstoneProps}\n */\nexport const Tombstone = ({\n width = \"100%\",\n height = \"1.5rem\",\n borderRadius = \"4px\",\n}: TombstoneProps) => {\n const { hasPalette, palette } = useTheme();\n\n const style = {\n \"--tombstone-custom-background\": palette.PRIMARY.MEDIUM,\n \"--tombstone-custom-primary\": transparentize(palette.PRIMARY.DARK, 0.9),\n \"--tombstone-custom-secondary\": transparentize(palette.SECONDARY.DARK, 0.7),\n } as React.CSSProperties;\n\n return (\n <div\n className={csx(\n \"proton-Tombstone\",\n hasPalette && \"proton-Tombstone--custom\"\n )}\n style={{\n ...style,\n width,\n height,\n borderRadius,\n }}\n />\n );\n};\n"],"names":["Tombstone","width","height","borderRadius","hasPalette","palette","useTheme","style","transparentize","jsx","csx"],"mappings":"2SA8BaA,EAAY,CAAC,CACxB,MAAAC,EAAQ,OACR,OAAAC,EAAS,SACT,aAAAC,EAAe,KACjB,IAAsB,CACpB,KAAM,CAAE,WAAAC,EAAY,QAAAC,CAAQ,EAAIC,EAAS,SAAA,EAEnCC,EAAQ,CACZ,gCAAiCF,EAAQ,QAAQ,OACjD,6BAA8BG,EAAAA,eAAeH,EAAQ,QAAQ,KAAM,EAAG,EACtE,+BAAgCG,EAAAA,eAAeH,EAAQ,UAAU,KAAM,EAAG,CAAA,EAI1E,OAAAI,EAAA,kBAAA,IAAC,MAAA,CACC,UAAWC,EAAA,IACT,mBACAN,GAAc,0BAChB,EACA,MAAO,CACL,GAAGG,EACH,MAAAN,EACA,OAAAC,EACA,aAAAC,CACF,CAAA,CAAA,CAGN"}
@@ -0,0 +1,35 @@
1
+ import { j as p } from "../../node_modules/react/jsx-runtime.es.js";
2
+ /* empty css */
3
+ import { useTheme as a } from "../ThemeProvider.es.js";
4
+ import { transparentize as t } from "../../utils/color2k.es.js";
5
+ import { csx as c } from "../../utils/string.es.js";
6
+ const l = ({
7
+ width: s = "100%",
8
+ height: m = "1.5rem",
9
+ borderRadius: e = "4px"
10
+ }) => {
11
+ const { hasPalette: r, palette: o } = a(), n = {
12
+ "--tombstone-custom-background": o.PRIMARY.MEDIUM,
13
+ "--tombstone-custom-primary": t(o.PRIMARY.DARK, 0.9),
14
+ "--tombstone-custom-secondary": t(o.SECONDARY.DARK, 0.7)
15
+ };
16
+ return /* @__PURE__ */ p.jsx(
17
+ "div",
18
+ {
19
+ className: c(
20
+ "proton-Tombstone",
21
+ r && "proton-Tombstone--custom"
22
+ ),
23
+ style: {
24
+ ...n,
25
+ width: s,
26
+ height: m,
27
+ borderRadius: e
28
+ }
29
+ }
30
+ );
31
+ };
32
+ export {
33
+ l as Tombstone
34
+ };
35
+ //# sourceMappingURL=Tombstone.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tombstone.es.js","sources":["../../../src/components/Tombstone/Tombstone.tsx"],"sourcesContent":["\"use client\";\n\nimport \"./Tombstone.css\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { csx, transparentize } from \"../../utils\";\n\nexport interface TombstoneProps {\n /**\n * The border radius of the tombstone.\n * @default \"4px\"\n */\n borderRadius?: string;\n /**\n * The height of the tombstone.\n * @default \"1.5rem\"\n */\n height?: string;\n /**\n * The width of the tombstone.\n * @default \"100%\"\n */\n width?: string;\n}\n\n/**\n * A component that displays a loading tombstone. For use as a placeholder while loading content.\n *\n * API:\n * - {@link TombstoneProps}\n */\nexport const Tombstone = ({\n width = \"100%\",\n height = \"1.5rem\",\n borderRadius = \"4px\",\n}: TombstoneProps) => {\n const { hasPalette, palette } = useTheme();\n\n const style = {\n \"--tombstone-custom-background\": palette.PRIMARY.MEDIUM,\n \"--tombstone-custom-primary\": transparentize(palette.PRIMARY.DARK, 0.9),\n \"--tombstone-custom-secondary\": transparentize(palette.SECONDARY.DARK, 0.7),\n } as React.CSSProperties;\n\n return (\n <div\n className={csx(\n \"proton-Tombstone\",\n hasPalette && \"proton-Tombstone--custom\"\n )}\n style={{\n ...style,\n width,\n height,\n borderRadius,\n }}\n />\n );\n};\n"],"names":["Tombstone","width","height","borderRadius","hasPalette","palette","useTheme","style","transparentize","jsx","csx"],"mappings":";;;;;AA8BO,MAAMA,IAAY,CAAC;AAAA,EACxB,OAAAC,IAAQ;AAAA,EACR,QAAAC,IAAS;AAAA,EACT,cAAAC,IAAe;AACjB,MAAsB;AACpB,QAAM,EAAE,YAAAC,GAAY,SAAAC,EAAQ,IAAIC,EAAS,GAEnCC,IAAQ;AAAA,IACZ,iCAAiCF,EAAQ,QAAQ;AAAA,IACjD,8BAA8BG,EAAeH,EAAQ,QAAQ,MAAM,GAAG;AAAA,IACtE,gCAAgCG,EAAeH,EAAQ,UAAU,MAAM,GAAG;AAAA,EAAA;AAI1E,SAAAI,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAN,KAAc;AAAA,MAChB;AAAA,MACA,OAAO;AAAA,QACL,GAAGG;AAAA,QACH,OAAAN;AAAA,QACA,QAAAC;AAAA,QACA,cAAAC;AAAA,MACF;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"),h=require("../../node_modules/react-aria-components/dist/OverlayArrow.cjs.js"),T=require("../../node_modules/react-aria-components/dist/Tooltip.cjs.js"),R=require("react-aria"),a=require("react"),d=require("../ThemeProvider.cjs.js");;/* empty css */;/* empty css */const m=require("../../utils/string.cjs.js");function v({children:t,arrow:n,...u}){const{style:r,className:o}=d.useTheme();return e.jsxRuntimeExports.jsxs(T.Tooltip,{...u,className:m.csx("proton__Tooltip","proton-Dialog",o),style:r,children:[n&&e.jsxRuntimeExports.jsx(h.OverlayArrow,{className:m.csx("proton__TooltipArrow",o),children:e.jsxRuntimeExports.jsx("svg",{width:8,height:8,viewBox:"0 0 8 8",children:e.jsxRuntimeExports.jsx("path",{d:"M0 0 L4 4 L8 0"})})}),t]})}function E({children:t,delay:n=500,closeDelay:u=500,isDisabled:r,defaultOpen:o,onOpenChange:x,disableTriggerClick:p,content:j,...g}){const[l,s]=a.useState(!1),i=a.useRef(!1),f=a.useRef(!1);return j===""?null:e.jsxRuntimeExports.jsxs(T.TooltipTrigger,{delay:n,closeDelay:u,isDisabled:r,isOpen:l,defaultOpen:o,onOpenChange:c=>{c&&!i.current&&(f.current=!0),x&&x(c),i.current||s(c),i.current=!1},children:[p?e.jsxRuntimeExports.jsx("span",{className:"proton__TooltipTrigger","aria-label":"Show tooltip",children:t}):e.jsxRuntimeExports.jsx(R.Focusable,{children:e.jsxRuntimeExports.jsx("div",{role:"button","aria-label":"Show tooltip",className:"proton__TooltipTrigger","data-hovered":l,onMouseEnter:()=>{r||s(!0)},onMouseLeave:()=>{r||s(!1)},onClick:()=>{p||r||f.current||(i.current=!0,s(!l))},children:t})}),e.jsxRuntimeExports.jsx(v,{...g,children:j})]})}exports.TooltipTrigger=E;
2
+ //# sourceMappingURL=Tooltip.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.cjs.js","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n Tooltip as AriaTooltip,\n TooltipProps as AriaTooltipProps,\n TooltipTrigger as AriaTooltipTrigger,\n Focusable,\n OverlayArrow,\n TooltipTriggerComponentProps,\n} from \"react-aria-components\";\n\nimport { useRef, useState } from \"react\";\nimport { useTheme } from \"../ThemeProvider\";\n\nimport { csx } from \"../../utils\";\nimport \"../Dialog/Dialog.css\";\nimport \"./Tooltip.css\";\n\nexport interface TooltipProps extends Omit<AriaTooltipProps, \"children\"> {\n children: React.ReactNode;\n arrow?: boolean;\n}\n\nfunction Tooltip({ children, arrow, ...props }: TooltipProps) {\n const { style, className } = useTheme();\n\n return (\n <AriaTooltip\n {...props}\n className={csx(\"proton__Tooltip\", \"proton-Dialog\", className)}\n style={style as React.CSSProperties}\n >\n {arrow && (\n <OverlayArrow className={csx(\"proton__TooltipArrow\", className)}>\n <svg width={8} height={8} viewBox=\"0 0 8 8\">\n <path d=\"M0 0 L4 4 L8 0\" />\n </svg>\n </OverlayArrow>\n )}\n\n {children}\n </AriaTooltip>\n );\n}\n\nexport interface TooltipTriggerProps\n extends TooltipProps,\n TooltipTriggerComponentProps {\n children: React.ReactNode;\n /**\n * The content to display in the tooltip. Zero-length titles string are never displayed.\n */\n content: string | React.ReactNode;\n /**\n * Whether to disable the trigger click feature.\n */\n disableTriggerClick?: boolean;\n}\n\n/**\n * Proton's TooltipTrigger component deviates from the Aria TooltipTrigger in that on mobile,\n * the trigger also opens the tooltip on click as well as hover & focus. This is to improve\n * accessibility and usability on mobile.\n *\n * If you wish to disable the trigger click feature, you can set the `disableTriggerClick` prop.\n * This is useful when using an info only Tooltip that might wrap a clickable element.\n *\n * API:\n * - {@link TooltipTriggerProps}\n * - extends {@link TooltipProps}\n * - extends {@link TooltipTriggerComponentProps}\n *\n * @example\n * ```tsx\n <TooltipTrigger content={...} placement=\"top\" arrow isDisabled={disabled}>\n {children}\n </TooltipTrigger>\n * ```\n */\nexport function TooltipTrigger({\n children,\n // trigger props\n delay = 500,\n closeDelay = 500,\n isDisabled,\n defaultOpen,\n onOpenChange,\n disableTriggerClick,\n // tooltip props\n content,\n ...tooltipProps\n}: TooltipTriggerProps) {\n const [isOpen, setIsOpen] = useState(false);\n const triggerClickRef = useRef<boolean>(false);\n const hasHovered = useRef<boolean>(false);\n\n if (content === \"\") return null;\n\n return (\n <AriaTooltipTrigger\n delay={delay}\n closeDelay={closeDelay}\n isDisabled={isDisabled}\n isOpen={isOpen}\n defaultOpen={defaultOpen}\n onOpenChange={(openState) => {\n // When opened via hover, we want to disable the trigger click feature as it causes\n // the tooltip state to get out of sync with the trigger state.\n if (openState && !triggerClickRef.current) hasHovered.current = true;\n\n if (onOpenChange) onOpenChange(openState);\n\n // If the tooltip is clicked, it manually calls setIsOpen, so we don't want to call\n // it again here.\n if (!triggerClickRef.current) setIsOpen(openState);\n triggerClickRef.current = false;\n }}\n >\n {disableTriggerClick ? (\n <span className=\"proton__TooltipTrigger\" aria-label=\"Show tooltip\">\n {children}\n </span>\n ) : (\n <Focusable>\n <div\n role=\"button\"\n aria-label=\"Show tooltip\"\n className=\"proton__TooltipTrigger\"\n data-hovered={isOpen}\n onMouseEnter={() => {\n if (!isDisabled) {\n setIsOpen(true);\n }\n }}\n onMouseLeave={() => {\n if (!isDisabled) {\n setIsOpen(false);\n }\n }}\n onClick={() => {\n if (disableTriggerClick || isDisabled) return;\n\n // Once hovered it's safe to assume the user isn't trying to use via a touch device,\n // so we can safely disable the trigger click feature.\n if (hasHovered.current) return;\n\n triggerClickRef.current = true;\n setIsOpen(!isOpen);\n }}\n >\n {children}\n </div>\n </Focusable>\n )}\n <Tooltip {...tooltipProps}>{content}</Tooltip>\n </AriaTooltipTrigger>\n );\n}\n"],"names":["Tooltip","children","arrow","props","style","className","useTheme","jsxs","AriaTooltip","csx","jsx","OverlayArrow","TooltipTrigger","delay","closeDelay","isDisabled","defaultOpen","onOpenChange","disableTriggerClick","content","tooltipProps","isOpen","setIsOpen","useState","triggerClickRef","useRef","hasHovered","AriaTooltipTrigger","openState","Focusable"],"mappings":"4eAuBA,SAASA,EAAQ,CAAE,SAAAC,EAAU,MAAAC,EAAO,GAAGC,GAAuB,CAC5D,KAAM,CAAE,MAAAC,EAAO,UAAAC,CAAU,EAAIC,EAAS,SAAA,EAGpC,OAAAC,EAAA,kBAAA,KAACC,EAAA,QAAA,CACE,GAAGL,EACJ,UAAWM,EAAA,IAAI,kBAAmB,gBAAiBJ,CAAS,EAC5D,MAAAD,EAEC,SAAA,CACCF,GAAAQ,EAAA,kBAAA,IAACC,gBAAa,UAAWF,EAAA,IAAI,uBAAwBJ,CAAS,EAC5D,iCAAC,MAAI,CAAA,MAAO,EAAG,OAAQ,EAAG,QAAQ,UAChC,SAAAK,EAAAA,kBAAAA,IAAC,QAAK,EAAE,iBAAiB,EAC3B,CACF,CAAA,EAGDT,CAAA,CAAA,CAAA,CAGP,CAoCO,SAASW,EAAe,CAC7B,SAAAX,EAEA,MAAAY,EAAQ,IACR,WAAAC,EAAa,IACb,WAAAC,EACA,YAAAC,EACA,aAAAC,EACA,oBAAAC,EAEA,QAAAC,EACA,GAAGC,CACL,EAAwB,CACtB,KAAM,CAACC,EAAQC,CAAS,EAAIC,WAAS,EAAK,EACpCC,EAAkBC,SAAgB,EAAK,EACvCC,EAAaD,SAAgB,EAAK,EAEpC,OAAAN,IAAY,GAAW,KAGzBZ,EAAA,kBAAA,KAACoB,EAAA,eAAA,CACC,MAAAd,EACA,WAAAC,EACA,WAAAC,EACA,OAAAM,EACA,YAAAL,EACA,aAAeY,GAAc,CAGvBA,GAAa,CAACJ,EAAgB,YAAoB,QAAU,IAE5DP,KAA2BW,CAAS,EAInCJ,EAAgB,SAASF,EAAUM,CAAS,EACjDJ,EAAgB,QAAU,EAC5B,EAEC,SAAA,CACCN,EAAAR,EAAAA,kBAAAA,IAAC,QAAK,UAAU,yBAAyB,aAAW,eACjD,SAAAT,CACH,CAAA,EAEAS,EAAAA,kBAAAA,IAACmB,EAAAA,UACC,CAAA,SAAAnB,EAAA,kBAAA,IAAC,MAAA,CACC,KAAK,SACL,aAAW,eACX,UAAU,yBACV,eAAcW,EACd,aAAc,IAAM,CACbN,GACHO,EAAU,EAAI,CAElB,EACA,aAAc,IAAM,CACbP,GACHO,EAAU,EAAK,CAEnB,EACA,QAAS,IAAM,CACTJ,GAAuBH,GAIvBW,EAAW,UAEfF,EAAgB,QAAU,GAC1BF,EAAU,CAACD,CAAM,EACnB,EAEC,SAAApB,CAAA,CAAA,EAEL,EAEDS,EAAA,kBAAA,IAAAV,EAAA,CAAS,GAAGoB,EAAe,SAAQD,CAAA,CAAA,CAAA,CAAA,CAAA,CAG1C"}
@@ -0,0 +1,78 @@
1
+ import { j as r } from "../../node_modules/react/jsx-runtime.es.js";
2
+ import { OverlayArrow as T } from "../../node_modules/react-aria-components/dist/OverlayArrow.es.js";
3
+ import { TooltipTrigger as g, Tooltip as j } from "../../node_modules/react-aria-components/dist/Tooltip.es.js";
4
+ import { Focusable as $ } from "react-aria";
5
+ import { useState as _, useRef as x } from "react";
6
+ import { useTheme as v } from "../ThemeProvider.es.js";
7
+ /* empty css */
8
+ /* empty css */
9
+ import { csx as d } from "../../utils/string.es.js";
10
+ function w({ children: e, arrow: n, ...l }) {
11
+ const { style: o, className: t } = v();
12
+ return /* @__PURE__ */ r.jsxs(
13
+ j,
14
+ {
15
+ ...l,
16
+ className: d("proton__Tooltip", "proton-Dialog", t),
17
+ style: o,
18
+ children: [
19
+ n && /* @__PURE__ */ r.jsx(T, { className: d("proton__TooltipArrow", t), children: /* @__PURE__ */ r.jsx("svg", { width: 8, height: 8, viewBox: "0 0 8 8", children: /* @__PURE__ */ r.jsx("path", { d: "M0 0 L4 4 L8 0" }) }) }),
20
+ e
21
+ ]
22
+ }
23
+ );
24
+ }
25
+ function k({
26
+ children: e,
27
+ // trigger props
28
+ delay: n = 500,
29
+ closeDelay: l = 500,
30
+ isDisabled: o,
31
+ defaultOpen: t,
32
+ onOpenChange: c,
33
+ disableTriggerClick: f,
34
+ // tooltip props
35
+ content: u,
36
+ ...h
37
+ }) {
38
+ const [a, s] = _(!1), i = x(!1), m = x(!1);
39
+ return u === "" ? null : /* @__PURE__ */ r.jsxs(
40
+ g,
41
+ {
42
+ delay: n,
43
+ closeDelay: l,
44
+ isDisabled: o,
45
+ isOpen: a,
46
+ defaultOpen: t,
47
+ onOpenChange: (p) => {
48
+ p && !i.current && (m.current = !0), c && c(p), i.current || s(p), i.current = !1;
49
+ },
50
+ children: [
51
+ f ? /* @__PURE__ */ r.jsx("span", { className: "proton__TooltipTrigger", "aria-label": "Show tooltip", children: e }) : /* @__PURE__ */ r.jsx($, { children: /* @__PURE__ */ r.jsx(
52
+ "div",
53
+ {
54
+ role: "button",
55
+ "aria-label": "Show tooltip",
56
+ className: "proton__TooltipTrigger",
57
+ "data-hovered": a,
58
+ onMouseEnter: () => {
59
+ o || s(!0);
60
+ },
61
+ onMouseLeave: () => {
62
+ o || s(!1);
63
+ },
64
+ onClick: () => {
65
+ f || o || m.current || (i.current = !0, s(!a));
66
+ },
67
+ children: e
68
+ }
69
+ ) }),
70
+ /* @__PURE__ */ r.jsx(w, { ...h, children: u })
71
+ ]
72
+ }
73
+ );
74
+ }
75
+ export {
76
+ k as TooltipTrigger
77
+ };
78
+ //# sourceMappingURL=Tooltip.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.es.js","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n Tooltip as AriaTooltip,\n TooltipProps as AriaTooltipProps,\n TooltipTrigger as AriaTooltipTrigger,\n Focusable,\n OverlayArrow,\n TooltipTriggerComponentProps,\n} from \"react-aria-components\";\n\nimport { useRef, useState } from \"react\";\nimport { useTheme } from \"../ThemeProvider\";\n\nimport { csx } from \"../../utils\";\nimport \"../Dialog/Dialog.css\";\nimport \"./Tooltip.css\";\n\nexport interface TooltipProps extends Omit<AriaTooltipProps, \"children\"> {\n children: React.ReactNode;\n arrow?: boolean;\n}\n\nfunction Tooltip({ children, arrow, ...props }: TooltipProps) {\n const { style, className } = useTheme();\n\n return (\n <AriaTooltip\n {...props}\n className={csx(\"proton__Tooltip\", \"proton-Dialog\", className)}\n style={style as React.CSSProperties}\n >\n {arrow && (\n <OverlayArrow className={csx(\"proton__TooltipArrow\", className)}>\n <svg width={8} height={8} viewBox=\"0 0 8 8\">\n <path d=\"M0 0 L4 4 L8 0\" />\n </svg>\n </OverlayArrow>\n )}\n\n {children}\n </AriaTooltip>\n );\n}\n\nexport interface TooltipTriggerProps\n extends TooltipProps,\n TooltipTriggerComponentProps {\n children: React.ReactNode;\n /**\n * The content to display in the tooltip. Zero-length titles string are never displayed.\n */\n content: string | React.ReactNode;\n /**\n * Whether to disable the trigger click feature.\n */\n disableTriggerClick?: boolean;\n}\n\n/**\n * Proton's TooltipTrigger component deviates from the Aria TooltipTrigger in that on mobile,\n * the trigger also opens the tooltip on click as well as hover & focus. This is to improve\n * accessibility and usability on mobile.\n *\n * If you wish to disable the trigger click feature, you can set the `disableTriggerClick` prop.\n * This is useful when using an info only Tooltip that might wrap a clickable element.\n *\n * API:\n * - {@link TooltipTriggerProps}\n * - extends {@link TooltipProps}\n * - extends {@link TooltipTriggerComponentProps}\n *\n * @example\n * ```tsx\n <TooltipTrigger content={...} placement=\"top\" arrow isDisabled={disabled}>\n {children}\n </TooltipTrigger>\n * ```\n */\nexport function TooltipTrigger({\n children,\n // trigger props\n delay = 500,\n closeDelay = 500,\n isDisabled,\n defaultOpen,\n onOpenChange,\n disableTriggerClick,\n // tooltip props\n content,\n ...tooltipProps\n}: TooltipTriggerProps) {\n const [isOpen, setIsOpen] = useState(false);\n const triggerClickRef = useRef<boolean>(false);\n const hasHovered = useRef<boolean>(false);\n\n if (content === \"\") return null;\n\n return (\n <AriaTooltipTrigger\n delay={delay}\n closeDelay={closeDelay}\n isDisabled={isDisabled}\n isOpen={isOpen}\n defaultOpen={defaultOpen}\n onOpenChange={(openState) => {\n // When opened via hover, we want to disable the trigger click feature as it causes\n // the tooltip state to get out of sync with the trigger state.\n if (openState && !triggerClickRef.current) hasHovered.current = true;\n\n if (onOpenChange) onOpenChange(openState);\n\n // If the tooltip is clicked, it manually calls setIsOpen, so we don't want to call\n // it again here.\n if (!triggerClickRef.current) setIsOpen(openState);\n triggerClickRef.current = false;\n }}\n >\n {disableTriggerClick ? (\n <span className=\"proton__TooltipTrigger\" aria-label=\"Show tooltip\">\n {children}\n </span>\n ) : (\n <Focusable>\n <div\n role=\"button\"\n aria-label=\"Show tooltip\"\n className=\"proton__TooltipTrigger\"\n data-hovered={isOpen}\n onMouseEnter={() => {\n if (!isDisabled) {\n setIsOpen(true);\n }\n }}\n onMouseLeave={() => {\n if (!isDisabled) {\n setIsOpen(false);\n }\n }}\n onClick={() => {\n if (disableTriggerClick || isDisabled) return;\n\n // Once hovered it's safe to assume the user isn't trying to use via a touch device,\n // so we can safely disable the trigger click feature.\n if (hasHovered.current) return;\n\n triggerClickRef.current = true;\n setIsOpen(!isOpen);\n }}\n >\n {children}\n </div>\n </Focusable>\n )}\n <Tooltip {...tooltipProps}>{content}</Tooltip>\n </AriaTooltipTrigger>\n );\n}\n"],"names":["Tooltip","children","arrow","props","style","className","useTheme","jsxs","AriaTooltip","csx","jsx","OverlayArrow","TooltipTrigger","delay","closeDelay","isDisabled","defaultOpen","onOpenChange","disableTriggerClick","content","tooltipProps","isOpen","setIsOpen","useState","triggerClickRef","useRef","hasHovered","AriaTooltipTrigger","openState","Focusable"],"mappings":";;;;;;;;;AAuBA,SAASA,EAAQ,EAAE,UAAAC,GAAU,OAAAC,GAAO,GAAGC,KAAuB;AAC5D,QAAM,EAAE,OAAAC,GAAO,WAAAC,EAAU,IAAIC,EAAS;AAGpC,SAAAC,gBAAAA,EAAA;AAAA,IAACC;AAAAA,IAAA;AAAA,MACE,GAAGL;AAAA,MACJ,WAAWM,EAAI,mBAAmB,iBAAiBJ,CAAS;AAAA,MAC5D,OAAAD;AAAA,MAEC,UAAA;AAAA,QACCF,KAAAQ,gBAAAA,EAAA,IAACC,KAAa,WAAWF,EAAI,wBAAwBJ,CAAS,GAC5D,gCAAC,OAAI,EAAA,OAAO,GAAG,QAAQ,GAAG,SAAQ,WAChC,UAAAK,gBAAAA,EAAAA,IAAC,UAAK,GAAE,kBAAiB,GAC3B,EACF,CAAA;AAAA,QAGDT;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAoCO,SAASW,EAAe;AAAA,EAC7B,UAAAX;AAAA;AAAA,EAEA,OAAAY,IAAQ;AAAA,EACR,YAAAC,IAAa;AAAA,EACb,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,qBAAAC;AAAA;AAAA,EAEA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAwB;AACtB,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAK,GACpCC,IAAkBC,EAAgB,EAAK,GACvCC,IAAaD,EAAgB,EAAK;AAEpC,SAAAN,MAAY,KAAW,OAGzBZ,gBAAAA,EAAA;AAAA,IAACoB;AAAAA,IAAA;AAAA,MACC,OAAAd;AAAA,MACA,YAAAC;AAAA,MACA,YAAAC;AAAA,MACA,QAAAM;AAAA,MACA,aAAAL;AAAA,MACA,cAAc,CAACY,MAAc;AAG3B,QAAIA,KAAa,CAACJ,EAAgB,cAAoB,UAAU,KAE5DP,OAA2BW,CAAS,GAInCJ,EAAgB,WAASF,EAAUM,CAAS,GACjDJ,EAAgB,UAAU;AAAA,MAC5B;AAAA,MAEC,UAAA;AAAA,QACCN,IAAAR,gBAAAA,EAAAA,IAAC,UAAK,WAAU,0BAAyB,cAAW,gBACjD,UAAAT,EACH,CAAA,IAEAS,gBAAAA,EAAAA,IAACmB,GACC,EAAA,UAAAnB,gBAAAA,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAW;AAAA,YACX,WAAU;AAAA,YACV,gBAAcW;AAAA,YACd,cAAc,MAAM;AAClB,cAAKN,KACHO,EAAU,EAAI;AAAA,YAElB;AAAA,YACA,cAAc,MAAM;AAClB,cAAKP,KACHO,EAAU,EAAK;AAAA,YAEnB;AAAA,YACA,SAAS,MAAM;AACb,cAAIJ,KAAuBH,KAIvBW,EAAW,YAEfF,EAAgB,UAAU,IAC1BF,EAAU,CAACD,CAAM;AAAA,YACnB;AAAA,YAEC,UAAApB;AAAA,UAAA;AAAA,QAAA,GAEL;AAAA,QAEDS,gBAAAA,EAAA,IAAAV,GAAA,EAAS,GAAGoB,GAAe,UAAQD,EAAA,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG1C;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../../node_modules/react/jsx-runtime.cjs.js"),v=require("react"),H=require("../ThemeProvider.cjs.js");;/* empty css */const L=require("./WaveformBar.cjs.js"),$=require("../../utils/string.cjs.js"),X=K(100);function F({data:e,resolution:t=2,startDuration:s,endDuration:a,currentTime:m=0,showTimestamps:g=!1,totalDuration:l,disabled:f,disabledMessage:d,onClick:h,"data-testid":p}){var P;const{className:_}=H.useTheme(),o=v.useRef(null),[W,B]=v.useState([]),[j,b]=v.useState(null),[w,I]=v.useState(!1),[N,q]=v.useState(!1),y=e||X,M=t;v.useEffect(()=>{if(!o.current)return;const r=i=>{const x=Math.floor(i/(t+M)),R=G(y,x);B(R)},n=o.current.clientWidth;r(n);const c=new ResizeObserver(i=>{i&&i[0]&&r(i[0].contentRect.width)});return c.observe(o.current),()=>c.disconnect()},[y,t,M]),v.useEffect(()=>{const r=setTimeout(()=>I(!0),50),n=setTimeout(()=>q(!0),500);return()=>{clearTimeout(r),clearTimeout(n)}},[]);const A=r=>{if(!o.current)return;const n=o.current.getBoundingClientRect(),i=(r.clientX-n.left)/n.width*l;b(i)},z=()=>{b(null)},O=t+M,E=(r,n)=>{var x;const c=r/l*100;return(n==="start"?Math.floor(c/100*W.length):Math.ceil(c/100*W.length))*O/((x=o.current)==null?void 0:x.clientWidth)*100},V=(P=o.current)==null?void 0:P.clientWidth,S=v.useMemo(()=>f&&d?d:e?null:"Waveform Unavailable",[f,d,e]);return u.jsxRuntimeExports.jsxs("div",{className:$.csx("proton-Waveform",_),"data-testid":p,children:[g&&u.jsxRuntimeExports.jsx(T,{direction:"left",seconds:m}),u.jsxRuntimeExports.jsxs("div",{ref:o,className:"proton-Waveform__container",onMouseMove:A,onMouseLeave:z,onClick:r=>{if(!o.current||f)return;const n=o.current.getBoundingClientRect(),i=(r.clientX-n.left)/n.width*l;h==null||h(i,r)},"data-disabled":f,"data-testid":"waveform-container",children:[s!==void 0&&a!==void 0&&u.jsxRuntimeExports.jsx("div",{className:"proton-Waveform__active-region",style:{left:o.current?`calc(${E(s,"start")}%`:"0%",right:o.current?`calc(${100-E(a,"end")}% - 2px)`:"0%"}}),j!==null&&u.jsxRuntimeExports.jsx("div",{className:"proton-Waveform__hover-line",style:{left:`${j/l*100}%`}}),W.map((r,n)=>{const c=n/W.length*l,i=s!==void 0&&a!==void 0&&(c<s||c>a),x=m===0?!1:c<=m,R=j!==null&&c<=j;return u.jsxRuntimeExports.jsx(L.WaveformBar,{amplitude:r,isDisabled:f||i,isPlayed:x,isHovered:R,isVisible:w,hasAnimated:N,resolution:t,spacing:M,index:n},n)})]}),S&&u.jsxRuntimeExports.jsx("div",{className:"proton-Waveform__bar-unavailable",style:{fontSize:V<325?"0.85rem":"1rem"},children:S}),g&&u.jsxRuntimeExports.jsx(T,{direction:"right",seconds:l})]})}function T({direction:e,seconds:t}){return u.jsxRuntimeExports.jsx("div",{className:$.csx("proton-Waveform__timestamp",`proton-Waveform__timestamp--${e}`),children:U(t)})}function U(e){const t=Math.floor(e/60),s=Math.floor(e%60);return`${t}:${s<10?"0":""}${s.toFixed(0)}`}function G(e,t){const s=e.length,a=s/t,m=new Array(t).fill(0).map((g,l)=>{const f=l*a,d=Math.floor(f),h=Math.min(d+1,s-1),p=f-d;return e[d]*(1-p)+e[h]*p});return J(m)}function J(e){const t=Math.min(...e),s=Math.max(...e);return e.map(a=>{const m=(a-t)/(s-t);return Math.max(m*.8+.1,.1)})}function K(e){return Array.from({length:e},(t,s)=>{const m=s/(e-1)*6*2*Math.PI-Math.PI/2;return Math.sin(m)*.5+.5})}exports.Waveform=F;
2
+ //# sourceMappingURL=Waveform.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Waveform.cjs.js","sources":["../../../src/components/Waveform/Waveform.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { csx } from \"../../utils\";\nimport { useTheme } from \"../ThemeProvider\";\nimport \"./Waveform.css\";\nimport { WaveformBar } from \"./WaveformBar\";\n\nexport interface WaveformProps {\n /**\n * Array of normalized amplitude values (0-1) representing the waveform.\n * If not provided, uses a sample sine wave.\n */\n data?: number[];\n\n /**\n * Current playback position in seconds.\n */\n currentTime?: number;\n\n /**\n * Test ID for testing purposes.\n */\n \"data-testid\"?: string;\n\n /**\n * Whether the entire waveform is disabled.\n */\n disabled?: boolean;\n\n /**\n * Reason for the waveform being disabled.\n */\n disabledMessage?: string;\n\n /**\n * End time to display until in seconds.\n */\n endDuration?: number;\n\n /**\n * Click handler that receives the clicked position (0-1) and event.\n */\n onClick?: (position: number, e: React.MouseEvent<HTMLDivElement>) => void;\n\n /**\n * Width in pixels of each waveform bar.\n */\n resolution?: number;\n\n /**\n * Whether to show timestamp markers.\n */\n showTimestamps?: boolean;\n\n /**\n * Start time to display from in seconds.\n */\n startDuration?: number;\n\n /**\n * Total duration of the audio in seconds.\n */\n totalDuration: number;\n}\n\nconst sampleWaveform = generateSampleWaveformData(100);\n\n/**\n * A waveform visualization component that displays audio data with interactive features.\n *\n * API:\n * - {@link WaveformProps}\n */\nexport function Waveform({\n data: waveformData,\n resolution = 2,\n startDuration,\n endDuration,\n currentTime = 0,\n showTimestamps = false,\n totalDuration,\n disabled,\n disabledMessage,\n onClick,\n \"data-testid\": testId,\n}: WaveformProps) {\n const { className } = useTheme();\n const containerRef = useRef<HTMLDivElement>(null);\n const [processedWaveform, setProcessedWaveform] = useState<number[]>([]);\n const [hoverPosition, setHoverPosition] = useState<number | null>(null);\n const [isVisible, setIsVisible] = useState(false);\n const [hasAnimated, setHasAnimated] = useState(false);\n\n const waveform = waveformData || sampleWaveform;\n\n const spacing = resolution;\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const processWaveform = (width: number) => {\n const numBars = Math.floor(width / (resolution + spacing));\n const processed = resampleData(waveform, numBars);\n setProcessedWaveform(processed);\n };\n\n const initialWidth = containerRef.current.clientWidth;\n processWaveform(initialWidth);\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries && entries[0]) {\n processWaveform(entries[0].contentRect.width);\n }\n });\n\n resizeObserver.observe(containerRef.current);\n\n return () => resizeObserver.disconnect();\n }, [waveform, resolution, spacing]);\n\n useEffect(() => {\n const visibilityTimer = setTimeout(() => setIsVisible(true), 50);\n const animationTimer = setTimeout(() => setHasAnimated(true), 500);\n\n return () => {\n clearTimeout(visibilityTimer);\n clearTimeout(animationTimer);\n };\n }, []);\n\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const position = (x / rect.width) * totalDuration;\n setHoverPosition(position);\n };\n\n const handleMouseLeave = () => {\n setHoverPosition(null);\n };\n\n // Calculate the width of a single bar including spacing\n const barTotalWidth = resolution + spacing;\n\n // Find the nearest bar boundaries for start and end durations\n const getBarPosition = (time: number, direction: \"start\" | \"end\") => {\n const position = (time / totalDuration) * 100;\n const barIndex =\n direction === \"start\"\n ? Math.floor((position / 100) * processedWaveform.length)\n : Math.ceil((position / 100) * processedWaveform.length);\n\n return (\n ((barIndex * barTotalWidth) / containerRef.current?.clientWidth!) * 100\n );\n };\n\n const containerWidth = containerRef.current?.clientWidth;\n const waveformMessage = useMemo(() => {\n if (disabled && disabledMessage) return disabledMessage;\n if (!waveformData) return \"Waveform Unavailable\";\n\n return null;\n }, [disabled, disabledMessage, waveformData]);\n\n return (\n <div className={csx(\"proton-Waveform\", className)} data-testid={testId}>\n {showTimestamps && (\n <TimestampBlock direction=\"left\" seconds={currentTime} />\n )}\n <div\n ref={containerRef}\n className=\"proton-Waveform__container\"\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n onClick={(e) => {\n if (!containerRef.current || disabled) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const position = (x / rect.width) * totalDuration;\n onClick?.(position, e);\n }}\n data-disabled={disabled}\n data-testid=\"waveform-container\"\n >\n {startDuration !== undefined && endDuration !== undefined && (\n <div\n className=\"proton-Waveform__active-region\"\n style={{\n left: containerRef.current\n ? `calc(${getBarPosition(startDuration, \"start\")}%`\n : \"0%\",\n right: containerRef.current\n ? `calc(${100 - getBarPosition(endDuration, \"end\")}% - 2px)`\n : \"0%\",\n }}\n />\n )}\n {hoverPosition !== null && (\n <div\n className=\"proton-Waveform__hover-line\"\n style={{\n left: `${(hoverPosition / totalDuration) * 100}%`,\n }}\n />\n )}\n {processedWaveform.map((amplitude, index) => {\n const position = (index / processedWaveform.length) * totalDuration;\n const isBarOutsideActiveRegion =\n startDuration !== undefined &&\n endDuration !== undefined &&\n (position < startDuration || position > endDuration);\n const isPlayed = currentTime === 0 ? false : position <= currentTime;\n const isHovered = hoverPosition !== null && position <= hoverPosition;\n\n return (\n <WaveformBar\n key={index}\n amplitude={amplitude}\n isDisabled={disabled || isBarOutsideActiveRegion}\n isPlayed={isPlayed}\n isHovered={isHovered}\n isVisible={isVisible}\n hasAnimated={hasAnimated}\n resolution={resolution}\n spacing={spacing}\n index={index}\n />\n );\n })}\n </div>\n\n {waveformMessage && (\n <div\n className=\"proton-Waveform__bar-unavailable\"\n style={{\n fontSize: containerWidth < 325 ? \"0.85rem\" : \"1rem\",\n }}\n >\n {waveformMessage}\n </div>\n )}\n\n {showTimestamps && (\n <TimestampBlock direction=\"right\" seconds={totalDuration} />\n )}\n </div>\n );\n}\n\nfunction TimestampBlock({\n direction,\n seconds,\n}: {\n direction: \"left\" | \"right\";\n seconds: number;\n}) {\n return (\n <div\n className={csx(\n \"proton-Waveform__timestamp\",\n `proton-Waveform__timestamp--${direction}`\n )}\n >\n {formatTimestamp(seconds)}\n </div>\n );\n}\n\n/** Formats seconds into MM:SS timestamp string\n * @param {number} seconds - Number of seconds to format\n * @returns {string} Formatted timestamp string in MM:SS format\n */\n\nfunction formatTimestamp(seconds: number) {\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${minutes}:${\n remainingSeconds < 10 ? \"0\" : \"\"\n }${remainingSeconds.toFixed(0)}`;\n}\n\n/** Takes an array of waveform data and rescales it to any length\n * @param {array} initialData - original waveform data\n * @param {number} finalArrayLength - How long do you want the returned array?\n * @param {number} height - Height of the waveform container\n */\n\nfunction resampleData(initialData: number[], finalArrayLength: number) {\n const initialArrayLength = initialData.length;\n // How many samples from the original data do we skip per new sample?\n const step = initialArrayLength / finalArrayLength;\n\n // Create new array with desired length\n const resampledData = new Array(finalArrayLength)\n .fill(0)\n .map((_, newIndex) => {\n // Calculate position in original array\n const position = newIndex * step;\n const leftIndex = Math.floor(position);\n const rightIndex = Math.min(leftIndex + 1, initialArrayLength - 1);\n\n // Calculate weights for interpolation\n const fraction = position - leftIndex;\n\n // Linear interpolation between adjacent samples\n const newVal =\n initialData[leftIndex] * (1 - fraction) +\n initialData[rightIndex] * fraction;\n\n return newVal;\n });\n\n return scaleData(resampledData);\n}\n\n/** Takes an array of waveform data and scales it based on the desired pixel height\n * @param {array} data – Array of waveform data\n * @param {number} height - Height of the waveform container\n */\nfunction scaleData(data: number[]) {\n const min = Math.min(...data);\n const max = Math.max(...data);\n\n return data.map((item) => {\n // Normalize to 0-1 range first\n const normalized = (item - min) / (max - min);\n // Then scale to desired height (using 0.1 as minimum to ensure visibility)\n return Math.max(normalized * 0.8 + 0.1, 0.1);\n });\n}\n\n/** Generates a sample sine wave waveform data array\n * @param {number} length - Length of the waveform data array\n * @returns {number[]} Array of normalized amplitude values (0-1) representing the waveform\n */\n\nfunction generateSampleWaveformData(length: number) {\n return Array.from({ length }, (_, i) => {\n const cycles = 6;\n // Create 3 complete cycles (6π total) starting at -π/2 (trough)\n const phase = (i / (length - 1)) * cycles * 2 * Math.PI - Math.PI / 2;\n return Math.sin(phase) * 0.5 + 0.5;\n });\n}\n"],"names":["sampleWaveform","generateSampleWaveformData","Waveform","waveformData","resolution","startDuration","endDuration","currentTime","showTimestamps","totalDuration","disabled","disabledMessage","onClick","testId","className","useTheme","containerRef","useRef","processedWaveform","setProcessedWaveform","useState","hoverPosition","setHoverPosition","isVisible","setIsVisible","hasAnimated","setHasAnimated","waveform","spacing","useEffect","processWaveform","width","numBars","processed","resampleData","initialWidth","resizeObserver","entries","visibilityTimer","animationTimer","handleMouseMove","e","rect","position","handleMouseLeave","barTotalWidth","getBarPosition","time","direction","_a","containerWidth","waveformMessage","useMemo","jsxs","csx","jsx","TimestampBlock","amplitude","index","isBarOutsideActiveRegion","isPlayed","isHovered","WaveformBar","seconds","formatTimestamp","minutes","remainingSeconds","initialData","finalArrayLength","initialArrayLength","step","resampledData","_","newIndex","leftIndex","rightIndex","fraction","scaleData","data","min","max","item","normalized","length","i","phase"],"mappings":"uTAkEMA,EAAiBC,EAA2B,GAAG,EAQ9C,SAASC,EAAS,CACvB,KAAMC,EACN,WAAAC,EAAa,EACb,cAAAC,EACA,YAAAC,EACA,YAAAC,EAAc,EACd,eAAAC,EAAiB,GACjB,cAAAC,EACA,SAAAC,EACA,gBAAAC,EACA,QAAAC,EACA,cAAeC,CACjB,EAAkB,OACV,KAAA,CAAE,UAAAC,GAAcC,EAAAA,WAChBC,EAAeC,SAAuB,IAAI,EAC1C,CAACC,EAAmBC,CAAoB,EAAIC,EAAA,SAAmB,CAAE,CAAA,EACjE,CAACC,EAAeC,CAAgB,EAAIF,WAAwB,IAAI,EAChE,CAACG,EAAWC,CAAY,EAAIJ,WAAS,EAAK,EAC1C,CAACK,EAAaC,CAAc,EAAIN,WAAS,EAAK,EAE9CO,EAAWxB,GAAgBH,EAE3B4B,EAAUxB,EAEhByB,EAAAA,UAAU,IAAM,CACV,GAAA,CAACb,EAAa,QAAS,OAErB,MAAAc,EAAmBC,GAAkB,CACzC,MAAMC,EAAU,KAAK,MAAMD,GAAS3B,EAAawB,EAAQ,EACnDK,EAAYC,EAAaP,EAAUK,CAAO,EAChDb,EAAqBc,CAAS,CAAA,EAG1BE,EAAenB,EAAa,QAAQ,YAC1Cc,EAAgBK,CAAY,EAE5B,MAAMC,EAAiB,IAAI,eAAgBC,GAAY,CACjDA,GAAWA,EAAQ,CAAC,GACtBP,EAAgBO,EAAQ,CAAC,EAAE,YAAY,KAAK,CAC9C,CACD,EAEc,OAAAD,EAAA,QAAQpB,EAAa,OAAO,EAEpC,IAAMoB,EAAe,YAC3B,EAAA,CAACT,EAAUvB,EAAYwB,CAAO,CAAC,EAElCC,EAAAA,UAAU,IAAM,CACd,MAAMS,EAAkB,WAAW,IAAMd,EAAa,EAAI,EAAG,EAAE,EACzDe,EAAiB,WAAW,IAAMb,EAAe,EAAI,EAAG,GAAG,EAEjE,MAAO,IAAM,CACX,aAAaY,CAAe,EAC5B,aAAaC,CAAc,CAAA,CAE/B,EAAG,CAAE,CAAA,EAEC,MAAAC,EAAmBC,GAAwC,CAC3D,GAAA,CAACzB,EAAa,QAAS,OACrB,MAAA0B,EAAO1B,EAAa,QAAQ,sBAAsB,EAElD2B,GADIF,EAAE,QAAUC,EAAK,MACLA,EAAK,MAASjC,EACpCa,EAAiBqB,CAAQ,CAAA,EAGrBC,EAAmB,IAAM,CAC7BtB,EAAiB,IAAI,CAAA,EAIjBuB,EAAgBzC,EAAawB,EAG7BkB,EAAiB,CAACC,EAAcC,IAA+B,OAC7D,MAAAL,EAAYI,EAAOtC,EAAiB,IAM1C,OAJEuC,IAAc,QACV,KAAK,MAAOL,EAAW,IAAOzB,EAAkB,MAAM,EACtD,KAAK,KAAMyB,EAAW,IAAOzB,EAAkB,MAAM,GAG5C2B,IAAiBI,EAAAjC,EAAa,UAAb,YAAAiC,EAAsB,aAAgB,GAAA,EAIlEC,GAAiBD,EAAAjC,EAAa,UAAb,YAAAiC,EAAsB,YACvCE,EAAkBC,EAAAA,QAAQ,IAC1B1C,GAAYC,EAAwBA,EACnCR,EAEE,KAFmB,uBAGzB,CAACO,EAAUC,EAAiBR,CAAY,CAAC,EAG1C,OAAAkD,yBAAC,OAAI,UAAWC,EAAA,IAAI,kBAAmBxC,CAAS,EAAG,cAAaD,EAC7D,SAAA,CAAAL,GACE+C,EAAA,kBAAA,IAAAC,EAAA,CAAe,UAAU,OAAO,QAASjD,EAAa,EAEzD8C,EAAA,kBAAA,KAAC,MAAA,CACC,IAAKrC,EACL,UAAU,6BACV,YAAawB,EACb,aAAcI,EACd,QAAUH,GAAM,CACV,GAAA,CAACzB,EAAa,SAAWN,EAAU,OACjC,MAAAgC,EAAO1B,EAAa,QAAQ,sBAAsB,EAElD2B,GADIF,EAAE,QAAUC,EAAK,MACLA,EAAK,MAASjC,EACpCG,GAAA,MAAAA,EAAU+B,EAAUF,EACtB,EACA,gBAAe/B,EACf,cAAY,qBAEX,SAAA,CAAkBL,IAAA,QAAaC,IAAgB,QAC9CiD,EAAA,kBAAA,IAAC,MAAA,CACC,UAAU,iCACV,MAAO,CACL,KAAMvC,EAAa,QACf,QAAQ8B,EAAezC,EAAe,OAAO,CAAC,IAC9C,KACJ,MAAOW,EAAa,QAChB,QAAQ,IAAM8B,EAAexC,EAAa,KAAK,CAAC,WAChD,IACN,CAAA,CACF,EAEDe,IAAkB,MACjBkC,EAAA,kBAAA,IAAC,MAAA,CACC,UAAU,8BACV,MAAO,CACL,KAAM,GAAIlC,EAAgBZ,EAAiB,GAAG,GAChD,CAAA,CACF,EAEDS,EAAkB,IAAI,CAACuC,EAAWC,IAAU,CACrC,MAAAf,EAAYe,EAAQxC,EAAkB,OAAUT,EAChDkD,EACJtD,IAAkB,QAClBC,IAAgB,SACfqC,EAAWtC,GAAiBsC,EAAWrC,GACpCsD,EAAWrD,IAAgB,EAAI,GAAQoC,GAAYpC,EACnDsD,EAAYxC,IAAkB,MAAQsB,GAAYtB,EAGtD,OAAAkC,EAAA,kBAAA,IAACO,EAAA,YAAA,CAEC,UAAAL,EACA,WAAY/C,GAAYiD,EACxB,SAAAC,EACA,UAAAC,EACA,UAAAtC,EACA,YAAAE,EACA,WAAArB,EACA,QAAAwB,EACA,MAAA8B,CAAA,EATKA,CAAA,CAUP,CAEH,CAAA,CAAA,CACH,EAECP,GACCI,EAAA,kBAAA,IAAC,MAAA,CACC,UAAU,mCACV,MAAO,CACL,SAAUL,EAAiB,IAAM,UAAY,MAC/C,EAEC,SAAAC,CAAA,CACH,EAGD3C,GACE+C,EAAA,kBAAA,IAAAC,EAAA,CAAe,UAAU,QAAQ,QAAS/C,EAAe,CAE9D,CAAA,CAAA,CAEJ,CAEA,SAAS+C,EAAe,CACtB,UAAAR,EACA,QAAAe,CACF,EAGG,CAEC,OAAAR,EAAA,kBAAA,IAAC,MAAA,CACC,UAAWD,EAAA,IACT,6BACA,+BAA+BN,CAAS,EAC1C,EAEC,WAAgBe,CAAO,CAAA,CAAA,CAG9B,CAOA,SAASC,EAAgBD,EAAiB,CACxC,MAAME,EAAU,KAAK,MAAMF,EAAU,EAAE,EACjCG,EAAmB,KAAK,MAAMH,EAAU,EAAE,EACzC,MAAA,GAAGE,CAAO,IACfC,EAAmB,GAAK,IAAM,EAChC,GAAGA,EAAiB,QAAQ,CAAC,CAAC,EAChC,CAQA,SAAShC,EAAaiC,EAAuBC,EAA0B,CACrE,MAAMC,EAAqBF,EAAY,OAEjCG,EAAOD,EAAqBD,EAG5BG,EAAgB,IAAI,MAAMH,CAAgB,EAC7C,KAAK,CAAC,EACN,IAAI,CAACI,EAAGC,IAAa,CAEpB,MAAM9B,EAAW8B,EAAWH,EACtBI,EAAY,KAAK,MAAM/B,CAAQ,EAC/BgC,EAAa,KAAK,IAAID,EAAY,EAAGL,EAAqB,CAAC,EAG3DO,EAAWjC,EAAW+B,EAOrB,OAHLP,EAAYO,CAAS,GAAK,EAAIE,GAC9BT,EAAYQ,CAAU,EAAIC,CAErB,CACR,EAEH,OAAOC,EAAUN,CAAa,CAChC,CAMA,SAASM,EAAUC,EAAgB,CACjC,MAAMC,EAAM,KAAK,IAAI,GAAGD,CAAI,EACtBE,EAAM,KAAK,IAAI,GAAGF,CAAI,EAErB,OAAAA,EAAK,IAAKG,GAAS,CAElB,MAAAC,GAAcD,EAAOF,IAAQC,EAAMD,GAEzC,OAAO,KAAK,IAAIG,EAAa,GAAM,GAAK,EAAG,CAAA,CAC5C,CACH,CAOA,SAASjF,EAA2BkF,EAAgB,CAClD,OAAO,MAAM,KAAK,CAAE,OAAAA,GAAU,CAACX,EAAGY,IAAM,CAGhC,MAAAC,EAASD,GAAKD,EAAS,GAAM,EAAS,EAAI,KAAK,GAAK,KAAK,GAAK,EACpE,OAAO,KAAK,IAAIE,CAAK,EAAI,GAAM,EAAA,CAChC,CACH"}