@verdaccio/ui-components 5.0.0-next-9.21 → 5.0.0-next-9.23

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 (310) hide show
  1. package/build/Theme/ResetStyles.js.map +1 -1
  2. package/build/Theme/ResetStyles.mjs.map +1 -1
  3. package/build/Theme/StyleBaseline.js.map +1 -1
  4. package/build/Theme/StyleBaseline.mjs.map +1 -1
  5. package/build/Theme/ThemeProvider.js.map +1 -1
  6. package/build/Theme/ThemeProvider.mjs.map +1 -1
  7. package/build/Theme/colors.js.map +1 -1
  8. package/build/Theme/modes.js.map +1 -1
  9. package/build/Theme/theme.js.map +1 -1
  10. package/build/api/use-data-mutation.d.ts +1 -1
  11. package/build/api/use-data-mutation.js.map +1 -1
  12. package/build/api/use-data-mutation.mjs.map +1 -1
  13. package/build/api/use-data.d.ts +1 -1
  14. package/build/api/use-data.js.map +1 -1
  15. package/build/api/use-data.mjs.map +1 -1
  16. package/build/components/ActionBar/ActionBar.js.map +1 -1
  17. package/build/components/ActionBar/ActionBar.mjs.map +1 -1
  18. package/build/components/ActionBar/ActionBarAction.js.map +1 -1
  19. package/build/components/ActionBar/index.mjs +1 -2
  20. package/build/components/AppRoute/AppRoute.js.map +1 -1
  21. package/build/components/AppRoute/AppRoute.mjs.map +1 -1
  22. package/build/components/Author/Author.js.map +1 -1
  23. package/build/components/Author/index.mjs +1 -2
  24. package/build/components/Author/styles.js.map +1 -1
  25. package/build/components/CopyClipboard/CopyToClipBoard.js.map +1 -1
  26. package/build/components/Dependencies/Dependencies.js.map +1 -1
  27. package/build/components/Dependencies/DependencyBlock.js.map +1 -1
  28. package/build/components/Dependencies/DependencyBlock.mjs.map +1 -1
  29. package/build/components/Dependencies/index.mjs +1 -2
  30. package/build/components/Deprecated/Deprecated.js.map +1 -1
  31. package/build/components/Deprecated/index.mjs +1 -2
  32. package/build/components/Developers/Developers.js.map +1 -1
  33. package/build/components/Developers/Developers.mjs.map +1 -1
  34. package/build/components/Developers/Title.js.map +1 -1
  35. package/build/components/Distribution/Dist.js.map +1 -1
  36. package/build/components/Distribution/Dist.mjs.map +1 -1
  37. package/build/components/Distribution/index.mjs +1 -2
  38. package/build/components/Distribution/styles.js.map +1 -1
  39. package/build/components/Engines/Engines.js.map +1 -1
  40. package/build/components/Engines/index.mjs +1 -2
  41. package/build/components/Engines/styles.js.map +1 -1
  42. package/build/components/ErrorBoundary/ErrorBoundary.js.map +1 -1
  43. package/build/components/ErrorBoundary/index.mjs +1 -2
  44. package/build/components/Forbidden/Forbidden.js.map +1 -1
  45. package/build/components/Forbidden/index.mjs +1 -2
  46. package/build/components/FundButton/FundButton.js.map +1 -1
  47. package/build/components/FundButton/FundButton.mjs.map +1 -1
  48. package/build/components/FundButton/index.mjs +1 -2
  49. package/build/components/GenericError/GenericError.js.map +1 -1
  50. package/build/components/GenericError/index.mjs +1 -2
  51. package/build/components/HeaderInfoDialog/HeaderInfoDialog.js.map +1 -1
  52. package/build/components/HeaderInfoDialog/index.mjs +1 -2
  53. package/build/components/Heading/Heading.js.map +1 -1
  54. package/build/components/Heading/Heading.mjs.map +1 -1
  55. package/build/components/Heading/index.mjs +1 -2
  56. package/build/components/Help/Help.js.map +1 -1
  57. package/build/components/Help/Help.mjs.map +1 -1
  58. package/build/components/Help/index.mjs +1 -2
  59. package/build/components/Help/styles.js.map +1 -1
  60. package/build/components/Icons/DevsIcons/CommonJS2.js.map +1 -1
  61. package/build/components/Icons/DevsIcons/CommonJS2.mjs.map +1 -1
  62. package/build/components/Icons/DevsIcons/ES6Module2.js.map +1 -1
  63. package/build/components/Icons/DevsIcons/ES6Module2.mjs.map +1 -1
  64. package/build/components/Icons/DevsIcons/Git2.js.map +1 -1
  65. package/build/components/Icons/DevsIcons/Git2.mjs.map +1 -1
  66. package/build/components/Icons/DevsIcons/NodeJS2.js.map +1 -1
  67. package/build/components/Icons/DevsIcons/NodeJS2.mjs.map +1 -1
  68. package/build/components/Icons/DevsIcons/TypeScript2.js.map +1 -1
  69. package/build/components/Icons/DevsIcons/TypeScript2.mjs.map +1 -1
  70. package/build/components/Icons/Earth.js.map +1 -1
  71. package/build/components/Icons/FileBinary.js.map +1 -1
  72. package/build/components/Icons/Law.js.map +1 -1
  73. package/build/components/Icons/License.d.ts +2 -4
  74. package/build/components/Icons/License.js.map +1 -1
  75. package/build/components/Icons/License.mjs.map +1 -1
  76. package/build/components/Icons/Managers/Npm2.js.map +1 -1
  77. package/build/components/Icons/Managers/Npm2.mjs.map +1 -1
  78. package/build/components/Icons/Managers/Pnpm2.js.map +1 -1
  79. package/build/components/Icons/Managers/Pnpm2.mjs.map +1 -1
  80. package/build/components/Icons/Managers/Yarn2.js.map +1 -1
  81. package/build/components/Icons/Managers/Yarn2.mjs.map +1 -1
  82. package/build/components/Icons/SvgIcon.js.map +1 -1
  83. package/build/components/Icons/Time.js.map +1 -1
  84. package/build/components/Icons/Version.js.map +1 -1
  85. package/build/components/Install/Install.js.map +1 -1
  86. package/build/components/Install/Install.mjs.map +1 -1
  87. package/build/components/Install/InstallListItem.js.map +1 -1
  88. package/build/components/Install/index.mjs +1 -2
  89. package/build/components/Keywords/KeywordListItems.js.map +1 -1
  90. package/build/components/Keywords/Keywords.js.map +1 -1
  91. package/build/components/Keywords/index.mjs +1 -2
  92. package/build/components/Label/Label.js.map +1 -1
  93. package/build/components/Label/index.mjs +1 -2
  94. package/build/components/Link/Link.js.map +1 -1
  95. package/build/components/Link/Link.mjs.map +1 -1
  96. package/build/components/Link/index.mjs +1 -2
  97. package/build/components/LinkExternal/LinkExternal.js.map +1 -1
  98. package/build/components/LinkExternal/index.mjs +1 -2
  99. package/build/components/Loading/Loading.js.map +1 -1
  100. package/build/components/Loading/Spinner/Spinner.js.map +1 -1
  101. package/build/components/Loading/Spinner/index.mjs +1 -2
  102. package/build/components/Loading/index.mjs +1 -2
  103. package/build/components/Loading/styles.js.map +1 -1
  104. package/build/components/LoginDialog/LoginDialog.d.ts +1 -0
  105. package/build/components/LoginDialog/LoginDialog.js +11 -2
  106. package/build/components/LoginDialog/LoginDialog.js.map +1 -1
  107. package/build/components/LoginDialog/LoginDialog.mjs +10 -2
  108. package/build/components/LoginDialog/LoginDialog.mjs.map +1 -1
  109. package/build/components/LoginDialog/LoginDialogCloseButton.js.map +1 -1
  110. package/build/components/LoginDialog/LoginDialogForm.js.map +1 -1
  111. package/build/components/LoginDialog/LoginDialogFormError.js.map +1 -1
  112. package/build/components/LoginDialog/index.mjs +1 -2
  113. package/build/components/LoginForm/Login.js +0 -23
  114. package/build/components/LoginForm/Login.js.map +1 -1
  115. package/build/components/LoginForm/Login.mjs +0 -21
  116. package/build/components/LoginForm/Login.mjs.map +1 -1
  117. package/build/components/LoginForm/PasswordField.js.map +1 -1
  118. package/build/components/LoginForm/UsernameField.js.map +1 -1
  119. package/build/components/LoginForm/styles.js.map +1 -1
  120. package/build/components/LoginForm/useLoginForm.js.map +1 -1
  121. package/build/components/Logo/Logo.js.map +1 -1
  122. package/build/components/Logo/Logo.mjs.map +1 -1
  123. package/build/components/Logo/index.mjs +1 -2
  124. package/build/components/MenuItem/MenuItem.js.map +1 -1
  125. package/build/components/MenuItem/MenuItem.mjs.map +1 -1
  126. package/build/components/MenuItem/index.mjs +1 -2
  127. package/build/components/NoItems/NoItems.js.map +1 -1
  128. package/build/components/NoItems/index.mjs +1 -2
  129. package/build/components/NotFound/NotFound.js.map +1 -1
  130. package/build/components/NotFound/index.mjs +1 -2
  131. package/build/components/Package/Package.js.map +1 -1
  132. package/build/components/Package/Package.mjs.map +1 -1
  133. package/build/components/Package/index.mjs +1 -2
  134. package/build/components/Package/styles.js.map +1 -1
  135. package/build/components/Package/styles.mjs.map +1 -1
  136. package/build/components/PackageList/PackageList.js.map +1 -1
  137. package/build/components/PackageList/PackageList.mjs.map +1 -1
  138. package/build/components/PackageList/index.mjs +1 -2
  139. package/build/components/Person/Person.js.map +1 -1
  140. package/build/components/Person/Person.mjs.map +1 -1
  141. package/build/components/Person/PersonTooltip.js.map +1 -1
  142. package/build/components/Person/PersonTooltip.mjs.map +1 -1
  143. package/build/components/Person/index.mjs +1 -2
  144. package/build/components/Person/utils.mjs.map +1 -1
  145. package/build/components/RawViewer/RawViewer.js.map +1 -1
  146. package/build/components/RawViewer/index.mjs +1 -2
  147. package/build/components/Readme/Readme.js.map +1 -1
  148. package/build/components/Readme/index.mjs +1 -2
  149. package/build/components/Readme/utils.js.map +1 -1
  150. package/build/components/RegistryInfoDialog/RegistryInfoDialog.js.map +1 -1
  151. package/build/components/RegistryInfoDialog/index.mjs +1 -2
  152. package/build/components/RegistryInfoDialog/styles.js.map +1 -1
  153. package/build/components/Repository/Repository.js.map +1 -1
  154. package/build/components/Repository/Repository.mjs.map +1 -1
  155. package/build/components/Repository/index.mjs +1 -2
  156. package/build/components/Search/AutoComplete/AutoComplete.js.map +1 -1
  157. package/build/components/Search/AutoComplete/index.mjs +1 -2
  158. package/build/components/Search/AutoComplete/styles.js.map +1 -1
  159. package/build/components/Search/Search.js.map +1 -1
  160. package/build/components/Search/Search.mjs.map +1 -1
  161. package/build/components/Search/SearchItem.js.map +1 -1
  162. package/build/components/Search/index.mjs +1 -2
  163. package/build/components/Search/styles.js.map +1 -1
  164. package/build/components/SettingsMenu/SettingsMenu.js.map +1 -1
  165. package/build/components/SettingsMenu/SettingsMenu.mjs.map +1 -1
  166. package/build/components/SettingsMenu/index.mjs +1 -2
  167. package/build/components/SideBarTitle/SideBarTitle.js.map +1 -1
  168. package/build/components/SideBarTitle/SideBarTitle.mjs.map +1 -1
  169. package/build/components/SideBarTitle/index.mjs +1 -2
  170. package/build/components/UpLinks/UpLinks.js.map +1 -1
  171. package/build/components/UpLinks/UpLinks.mjs.map +1 -1
  172. package/build/components/UpLinks/UplinkLink.js.map +1 -1
  173. package/build/components/UpLinks/UplinkLink.mjs.map +1 -1
  174. package/build/components/UpLinks/index.mjs +1 -2
  175. package/build/components/UpLinks/styles.js.map +1 -1
  176. package/build/components/UpLinks/styles.mjs.map +1 -1
  177. package/build/components/Versions/HistoryList.js.map +1 -1
  178. package/build/components/Versions/HistoryList.mjs.map +1 -1
  179. package/build/components/Versions/TagList.js.map +1 -1
  180. package/build/components/Versions/Versions.js.map +1 -1
  181. package/build/components/Versions/Versions.mjs.map +1 -1
  182. package/build/components/Versions/index.mjs +1 -2
  183. package/build/components/Versions/styles.js.map +1 -1
  184. package/build/components/Versions/styles.mjs.map +1 -1
  185. package/build/hooks/useLocalStorage.js.map +1 -1
  186. package/build/layouts/Security/Dialog.js.map +1 -1
  187. package/build/layouts/Version/Version.js.map +1 -1
  188. package/build/layouts/Version/Version.mjs.map +1 -1
  189. package/build/layouts/Version/index.mjs +1 -2
  190. package/build/pages/Front/Home.js.map +1 -1
  191. package/build/pages/Front/index.mjs +1 -2
  192. package/build/pages/Security/AddUser.js.map +1 -1
  193. package/build/pages/Security/ChangePassword.js.map +1 -1
  194. package/build/pages/Security/Login.js.map +1 -1
  195. package/build/pages/Security/Success.js.map +1 -1
  196. package/build/pages/Stage/StageDetail.js.map +1 -1
  197. package/build/pages/Stage/StageList.js.map +1 -1
  198. package/build/pages/Version/Version.js.map +1 -1
  199. package/build/pages/Version/index.mjs +1 -2
  200. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.js.map +1 -1
  201. package/build/providers/AppConfigurationProvider/index.mjs +1 -2
  202. package/build/providers/AuthProvider/AuthProvider.js +1 -1
  203. package/build/providers/AuthProvider/AuthProvider.js.map +1 -1
  204. package/build/providers/AuthProvider/AuthProvider.mjs +1 -1
  205. package/build/providers/AuthProvider/AuthProvider.mjs.map +1 -1
  206. package/build/providers/AuthProvider/index.mjs +1 -2
  207. package/build/providers/AuthProvider/utils.js.map +1 -1
  208. package/build/providers/DownloadProvider/DownloadProvider.js.map +1 -1
  209. package/build/providers/DownloadProvider/index.mjs +1 -2
  210. package/build/providers/ManifestsProvider/ManifestsProvider.js +1 -1
  211. package/build/providers/ManifestsProvider/ManifestsProvider.js.map +1 -1
  212. package/build/providers/ManifestsProvider/ManifestsProvider.mjs +1 -1
  213. package/build/providers/ManifestsProvider/ManifestsProvider.mjs.map +1 -1
  214. package/build/providers/ManifestsProvider/index.mjs +1 -2
  215. package/build/providers/PersistenceSettingProvider/PersistenceSettingProvider.js.map +1 -1
  216. package/build/providers/PersistenceSettingProvider/index.mjs +1 -2
  217. package/build/providers/SearchProvider/SearchProvider.js +1 -1
  218. package/build/providers/SearchProvider/SearchProvider.js.map +1 -1
  219. package/build/providers/SearchProvider/SearchProvider.mjs +1 -1
  220. package/build/providers/SearchProvider/SearchProvider.mjs.map +1 -1
  221. package/build/providers/SearchProvider/index.mjs +1 -2
  222. package/build/providers/TranslatorProvider/TranslatorProvider.js.map +1 -1
  223. package/build/providers/TranslatorProvider/index.mjs +1 -2
  224. package/build/providers/VersionProvider/VersionProvider.js +1 -1
  225. package/build/providers/VersionProvider/VersionProvider.js.map +1 -1
  226. package/build/providers/VersionProvider/VersionProvider.mjs +1 -1
  227. package/build/providers/VersionProvider/VersionProvider.mjs.map +1 -1
  228. package/build/providers/VersionProvider/index.mjs +1 -2
  229. package/build/sections/Detail/ContainerContent.js.map +1 -1
  230. package/build/sections/Detail/ContainerContent.mjs.map +1 -1
  231. package/build/sections/Detail/Detail.js.map +1 -1
  232. package/build/sections/Detail/Detail.mjs.map +1 -1
  233. package/build/sections/Detail/ReadmeSection.js.map +1 -1
  234. package/build/sections/Detail/Tabs.js.map +1 -1
  235. package/build/sections/Detail/Tabs.mjs.map +1 -1
  236. package/build/sections/Detail/index.mjs +1 -2
  237. package/build/sections/Footer/Footer.js.map +1 -1
  238. package/build/sections/Footer/Footer.mjs.map +1 -1
  239. package/build/sections/Footer/index.mjs +1 -2
  240. package/build/sections/Footer/styles.js.map +1 -1
  241. package/build/sections/Header/Header.js.map +1 -1
  242. package/build/sections/Header/Header.mjs.map +1 -1
  243. package/build/sections/Header/HeaderGreetings.js.map +1 -1
  244. package/build/sections/Header/HeaderGreetings.mjs.map +1 -1
  245. package/build/sections/Header/HeaderLeft.js.map +1 -1
  246. package/build/sections/Header/HeaderLeft.mjs.map +1 -1
  247. package/build/sections/Header/HeaderMenu.js +10 -0
  248. package/build/sections/Header/HeaderMenu.js.map +1 -1
  249. package/build/sections/Header/HeaderMenu.mjs +10 -0
  250. package/build/sections/Header/HeaderMenu.mjs.map +1 -1
  251. package/build/sections/Header/HeaderRight.js.map +1 -1
  252. package/build/sections/Header/HeaderRight.mjs.map +1 -1
  253. package/build/sections/Header/HeaderSettingsDialog.js.map +1 -1
  254. package/build/sections/Header/HeaderToolTip.js.map +1 -1
  255. package/build/sections/Header/HeaderToolTipIcon.js.map +1 -1
  256. package/build/sections/Header/HeaderToolTipIcon.mjs.map +1 -1
  257. package/build/sections/Header/LanguageSwitch.js.map +1 -1
  258. package/build/sections/Header/LanguageSwitch.mjs.map +1 -1
  259. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.js.map +1 -1
  260. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.mjs.map +1 -1
  261. package/build/sections/Header/RegistryInfoContent/index.mjs +1 -2
  262. package/build/sections/Header/RegistryInfoContent/styles.js.map +1 -1
  263. package/build/sections/Header/index.mjs +1 -2
  264. package/build/sections/Header/styles.js.map +1 -1
  265. package/build/sections/Home/Home.js.map +1 -1
  266. package/build/sections/Home/index.mjs +1 -2
  267. package/build/sections/Security/AddUser.js.map +1 -1
  268. package/build/sections/Security/AddUser.mjs.map +1 -1
  269. package/build/sections/Security/ChangePassword.js +41 -16
  270. package/build/sections/Security/ChangePassword.js.map +1 -1
  271. package/build/sections/Security/ChangePassword.mjs +41 -16
  272. package/build/sections/Security/ChangePassword.mjs.map +1 -1
  273. package/build/sections/Security/Login.js.map +1 -1
  274. package/build/sections/Security/Login.mjs.map +1 -1
  275. package/build/sections/Security/Success.js.map +1 -1
  276. package/build/sections/Security/styles.js.map +1 -1
  277. package/build/sections/Security/utils.js.map +1 -1
  278. package/build/sections/SideBar/Sidebar.js.map +1 -1
  279. package/build/sections/SideBar/Sidebar.mjs.map +1 -1
  280. package/build/sections/SideBar/index.mjs +1 -2
  281. package/build/sections/Stage/StageActions.js.map +1 -1
  282. package/build/sections/Stage/StageActions.mjs.map +1 -1
  283. package/build/sections/Stage/StageDetail.js.map +1 -1
  284. package/build/sections/Stage/StageDetail.mjs.map +1 -1
  285. package/build/sections/Stage/StageList.js.map +1 -1
  286. package/build/sections/Stage/StageList.mjs.map +1 -1
  287. package/build/sections/Stage/useRequireSession.js.map +1 -1
  288. package/build/sections/Stage/useRequireSession.mjs.map +1 -1
  289. package/build/sections/Stage/useStage.js.map +1 -1
  290. package/build/sections/Stage/useStage.mjs.map +1 -1
  291. package/build/store/api.js.map +1 -1
  292. package/build/store/api.mjs.map +1 -1
  293. package/build/store/index.mjs +1 -2
  294. package/build/store/storage.js.map +1 -1
  295. package/build/utils/loadable.js.map +1 -1
  296. package/build/utils/schemas.d.ts +0 -2
  297. package/build/utils/schemas.js +0 -1
  298. package/build/utils/schemas.js.map +1 -1
  299. package/build/utils/schemas.mjs +0 -1
  300. package/build/utils/schemas.mjs.map +1 -1
  301. package/build/utils/token.js.map +1 -1
  302. package/build/utils/url.js.map +1 -1
  303. package/build/utils/url.mjs.map +1 -1
  304. package/build/utils/utils.js.map +1 -1
  305. package/package.json +21 -21
  306. package/build/store/routes.d.ts +0 -12
  307. package/build/store/routes.js +0 -18
  308. package/build/store/routes.js.map +0 -1
  309. package/build/store/routes.mjs +0 -18
  310. package/build/store/routes.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.js","names":[],"sources":["../../../src/sections/Footer/Footer.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport * as FlagsIcon from 'country-flag-icons/react/3x2';\nimport React from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../';\nimport { Logo, useConfig } from '../../';\nimport { Earth } from '../../components/Icons';\nimport { Inner, Left, Love, Right, Wrapper } from './styles';\n\nfunction goToVerdaccioWebsite(): void {\n window.open('https://verdaccio.org', '_blank');\n}\n\nconst Footer = () => {\n const { t } = useTranslation();\n const { configOptions } = useConfig();\n return (\n <Wrapper data-testid=\"footer\">\n <Inner>\n <Left>\n <Trans components={[<Love key=\"love\" />]} i18nKey=\"footer.made-with-love-on\" />\n <ToolTip>\n <StyledEarth />\n <Flags data-flags=\"true\">\n <Icon>\n <FlagsIcon.ES title={t('flag.spain')} />\n </Icon>\n <Icon>\n <FlagsIcon.NI title={t('flag.nicaragua')} />\n </Icon>\n <Icon>\n <FlagsIcon.IN title={t('flag.india')} />\n </Icon>\n <Icon>\n <FlagsIcon.BR title={t('flag.brazil')} />\n </Icon>\n <Icon>\n <FlagsIcon.CN title={t('flag.china')} />\n </Icon>\n <Icon>\n <FlagsIcon.AU title={t('flag.australia')} />\n </Icon>\n <Icon>\n <FlagsIcon.DE title={t('flag.germany')} />\n </Icon>\n <Icon>\n <FlagsIcon.TW title={t('flag.taiwan')} />\n </Icon>\n <Icon>\n <FlagsIcon.AT title={t('flag.austria')} />\n </Icon>\n <Icon>\n <FlagsIcon.CA title={t('flag.canada')} />\n </Icon>\n </Flags>\n </ToolTip>\n </Left>\n <Right>\n {configOptions?.version && (\n <>\n <PoweredBy data-testid=\"version-footer\">{t('footer.powered-by')}</PoweredBy>\n <Logo\n isDefault={true}\n onClick={goToVerdaccioWebsite}\n size=\"x-small\"\n title={configOptions.version}\n />\n </>\n )}\n </Right>\n </Inner>\n </Wrapper>\n );\n};\n\nexport default Footer;\n\nconst PoweredBy = styled('span')(() => ({\n paddingRight: '5px',\n}));\n\nconst StyledEarth = styled(Earth)<{ theme?: Theme }>(({ theme }) => ({\n margin: theme.spacing(0, 1),\n}));\n\nconst Flags = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n display: 'inline-grid',\n gridTemplateColumns: 'repeat(10, max-content)',\n gridGap: theme.spacing(0, 1),\n position: 'absolute',\n background: theme.palette.greyAthens,\n padding: '1px 4px',\n borderRadius: 3,\n height: 20,\n alignItems: 'center',\n visibility: 'hidden',\n top: -2,\n ':before': {\n content: \"''\",\n position: 'absolute',\n top: '29%',\n left: -4,\n marginLeft: -5,\n border: '5px solid',\n borderColor: `${theme.palette.greyAthens} transparent transparent transparent`,\n transform: 'rotate(90deg)',\n },\n}));\n\nconst Icon = styled('div')({\n width: '10px',\n});\n\nconst ToolTip = styled('span')({\n position: 'relative',\n height: '18px',\n ':hover': {\n '& [data-flags=\"true\"]': {\n visibility: 'visible',\n },\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"Footer.js","names":["useTranslation","useConfig","Wrapper","Inner","Left","Trans","Love","FlagsIcon","Right","_Fragment","Logo","styled","Earth"],"sources":["../../../src/sections/Footer/Footer.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport * as FlagsIcon from 'country-flag-icons/react/3x2';\nimport React from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../';\nimport { Logo, useConfig } from '../../';\nimport { Earth } from '../../components/Icons';\nimport { Inner, Left, Love, Right, Wrapper } from './styles';\n\nfunction goToVerdaccioWebsite(): void {\n window.open('https://verdaccio.org', '_blank');\n}\n\nconst Footer = () => {\n const { t } = useTranslation();\n const { configOptions } = useConfig();\n return (\n <Wrapper data-testid=\"footer\">\n <Inner>\n <Left>\n <Trans components={[<Love key=\"love\" />]} i18nKey=\"footer.made-with-love-on\" />\n <ToolTip>\n <StyledEarth />\n <Flags data-flags=\"true\">\n <Icon>\n <FlagsIcon.ES title={t('flag.spain')} />\n </Icon>\n <Icon>\n <FlagsIcon.NI title={t('flag.nicaragua')} />\n </Icon>\n <Icon>\n <FlagsIcon.IN title={t('flag.india')} />\n </Icon>\n <Icon>\n <FlagsIcon.BR title={t('flag.brazil')} />\n </Icon>\n <Icon>\n <FlagsIcon.CN title={t('flag.china')} />\n </Icon>\n <Icon>\n <FlagsIcon.AU title={t('flag.australia')} />\n </Icon>\n <Icon>\n <FlagsIcon.DE title={t('flag.germany')} />\n </Icon>\n <Icon>\n <FlagsIcon.TW title={t('flag.taiwan')} />\n </Icon>\n <Icon>\n <FlagsIcon.AT title={t('flag.austria')} />\n </Icon>\n <Icon>\n <FlagsIcon.CA title={t('flag.canada')} />\n </Icon>\n </Flags>\n </ToolTip>\n </Left>\n <Right>\n {configOptions?.version && (\n <>\n <PoweredBy data-testid=\"version-footer\">{t('footer.powered-by')}</PoweredBy>\n <Logo\n isDefault={true}\n onClick={goToVerdaccioWebsite}\n size=\"x-small\"\n title={configOptions.version}\n />\n </>\n )}\n </Right>\n </Inner>\n </Wrapper>\n );\n};\n\nexport default Footer;\n\nconst PoweredBy = styled('span')(() => ({\n paddingRight: '5px',\n}));\n\nconst StyledEarth = styled(Earth)<{ theme?: Theme }>(({ theme }) => ({\n margin: theme.spacing(0, 1),\n}));\n\nconst Flags = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n display: 'inline-grid',\n gridTemplateColumns: 'repeat(10, max-content)',\n gridGap: theme.spacing(0, 1),\n position: 'absolute',\n background: theme.palette.greyAthens,\n padding: '1px 4px',\n borderRadius: 3,\n height: 20,\n alignItems: 'center',\n visibility: 'hidden',\n top: -2,\n ':before': {\n content: \"''\",\n position: 'absolute',\n top: '29%',\n left: -4,\n marginLeft: -5,\n border: '5px solid',\n borderColor: `${theme.palette.greyAthens} transparent transparent transparent`,\n transform: 'rotate(90deg)',\n },\n}));\n\nconst Icon = styled('div')({\n width: '10px',\n});\n\nconst ToolTip = styled('span')({\n position: 'relative',\n height: '18px',\n ':hover': {\n '& [data-flags=\"true\"]': {\n visibility: 'visible',\n },\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.mjs","names":[],"sources":["../../../src/sections/Footer/Footer.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport * as FlagsIcon from 'country-flag-icons/react/3x2';\nimport React from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../';\nimport { Logo, useConfig } from '../../';\nimport { Earth } from '../../components/Icons';\nimport { Inner, Left, Love, Right, Wrapper } from './styles';\n\nfunction goToVerdaccioWebsite(): void {\n window.open('https://verdaccio.org', '_blank');\n}\n\nconst Footer = () => {\n const { t } = useTranslation();\n const { configOptions } = useConfig();\n return (\n <Wrapper data-testid=\"footer\">\n <Inner>\n <Left>\n <Trans components={[<Love key=\"love\" />]} i18nKey=\"footer.made-with-love-on\" />\n <ToolTip>\n <StyledEarth />\n <Flags data-flags=\"true\">\n <Icon>\n <FlagsIcon.ES title={t('flag.spain')} />\n </Icon>\n <Icon>\n <FlagsIcon.NI title={t('flag.nicaragua')} />\n </Icon>\n <Icon>\n <FlagsIcon.IN title={t('flag.india')} />\n </Icon>\n <Icon>\n <FlagsIcon.BR title={t('flag.brazil')} />\n </Icon>\n <Icon>\n <FlagsIcon.CN title={t('flag.china')} />\n </Icon>\n <Icon>\n <FlagsIcon.AU title={t('flag.australia')} />\n </Icon>\n <Icon>\n <FlagsIcon.DE title={t('flag.germany')} />\n </Icon>\n <Icon>\n <FlagsIcon.TW title={t('flag.taiwan')} />\n </Icon>\n <Icon>\n <FlagsIcon.AT title={t('flag.austria')} />\n </Icon>\n <Icon>\n <FlagsIcon.CA title={t('flag.canada')} />\n </Icon>\n </Flags>\n </ToolTip>\n </Left>\n <Right>\n {configOptions?.version && (\n <>\n <PoweredBy data-testid=\"version-footer\">{t('footer.powered-by')}</PoweredBy>\n <Logo\n isDefault={true}\n onClick={goToVerdaccioWebsite}\n size=\"x-small\"\n title={configOptions.version}\n />\n </>\n )}\n </Right>\n </Inner>\n </Wrapper>\n );\n};\n\nexport default Footer;\n\nconst PoweredBy = styled('span')(() => ({\n paddingRight: '5px',\n}));\n\nconst StyledEarth = styled(Earth)<{ theme?: Theme }>(({ theme }) => ({\n margin: theme.spacing(0, 1),\n}));\n\nconst Flags = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n display: 'inline-grid',\n gridTemplateColumns: 'repeat(10, max-content)',\n gridGap: theme.spacing(0, 1),\n position: 'absolute',\n background: theme.palette.greyAthens,\n padding: '1px 4px',\n borderRadius: 3,\n height: 20,\n alignItems: 'center',\n visibility: 'hidden',\n top: -2,\n ':before': {\n content: \"''\",\n position: 'absolute',\n top: '29%',\n left: -4,\n marginLeft: -5,\n border: '5px solid',\n borderColor: `${theme.palette.greyAthens} transparent transparent transparent`,\n transform: 'rotate(90deg)',\n },\n}));\n\nconst Icon = styled('div')({\n width: '10px',\n});\n\nconst ToolTip = styled('span')({\n position: 'relative',\n height: '18px',\n ':hover': {\n '& [data-flags=\"true\"]': {\n visibility: 'visible',\n },\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"Footer.mjs","names":["_Fragment"],"sources":["../../../src/sections/Footer/Footer.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport * as FlagsIcon from 'country-flag-icons/react/3x2';\nimport React from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../';\nimport { Logo, useConfig } from '../../';\nimport { Earth } from '../../components/Icons';\nimport { Inner, Left, Love, Right, Wrapper } from './styles';\n\nfunction goToVerdaccioWebsite(): void {\n window.open('https://verdaccio.org', '_blank');\n}\n\nconst Footer = () => {\n const { t } = useTranslation();\n const { configOptions } = useConfig();\n return (\n <Wrapper data-testid=\"footer\">\n <Inner>\n <Left>\n <Trans components={[<Love key=\"love\" />]} i18nKey=\"footer.made-with-love-on\" />\n <ToolTip>\n <StyledEarth />\n <Flags data-flags=\"true\">\n <Icon>\n <FlagsIcon.ES title={t('flag.spain')} />\n </Icon>\n <Icon>\n <FlagsIcon.NI title={t('flag.nicaragua')} />\n </Icon>\n <Icon>\n <FlagsIcon.IN title={t('flag.india')} />\n </Icon>\n <Icon>\n <FlagsIcon.BR title={t('flag.brazil')} />\n </Icon>\n <Icon>\n <FlagsIcon.CN title={t('flag.china')} />\n </Icon>\n <Icon>\n <FlagsIcon.AU title={t('flag.australia')} />\n </Icon>\n <Icon>\n <FlagsIcon.DE title={t('flag.germany')} />\n </Icon>\n <Icon>\n <FlagsIcon.TW title={t('flag.taiwan')} />\n </Icon>\n <Icon>\n <FlagsIcon.AT title={t('flag.austria')} />\n </Icon>\n <Icon>\n <FlagsIcon.CA title={t('flag.canada')} />\n </Icon>\n </Flags>\n </ToolTip>\n </Left>\n <Right>\n {configOptions?.version && (\n <>\n <PoweredBy data-testid=\"version-footer\">{t('footer.powered-by')}</PoweredBy>\n <Logo\n isDefault={true}\n onClick={goToVerdaccioWebsite}\n size=\"x-small\"\n title={configOptions.version}\n />\n </>\n )}\n </Right>\n </Inner>\n </Wrapper>\n );\n};\n\nexport default Footer;\n\nconst PoweredBy = styled('span')(() => ({\n paddingRight: '5px',\n}));\n\nconst StyledEarth = styled(Earth)<{ theme?: Theme }>(({ theme }) => ({\n margin: theme.spacing(0, 1),\n}));\n\nconst Flags = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n display: 'inline-grid',\n gridTemplateColumns: 'repeat(10, max-content)',\n gridGap: theme.spacing(0, 1),\n position: 'absolute',\n background: theme.palette.greyAthens,\n padding: '1px 4px',\n borderRadius: 3,\n height: 20,\n alignItems: 'center',\n visibility: 'hidden',\n top: -2,\n ':before': {\n content: \"''\",\n position: 'absolute',\n top: '29%',\n left: -4,\n marginLeft: -5,\n border: '5px solid',\n borderColor: `${theme.palette.greyAthens} transparent transparent transparent`,\n transform: 'rotate(90deg)',\n },\n}));\n\nconst Icon = styled('div')({\n width: '10px',\n});\n\nconst ToolTip = styled('span')({\n position: 'relative',\n height: '18px',\n ':hover': {\n '& [data-flags=\"true\"]': {\n visibility: 'visible',\n },\n },\n});\n"],"mappings":"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"}
@@ -1,2 +1 @@
1
- import Footer from "./Footer.mjs";
2
- export { Footer as default };
1
+ export { default } from "./Footer.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","names":[],"sources":["../../../src/sections/Footer/styles.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { common } from '@mui/material/colors';\n\nimport type { Theme } from '../../';\n\nexport const Wrapper = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n background: theme.palette.mode === 'light' ? theme.palette.snow : theme.palette.cyanBlue,\n borderTop: `1px solid ${theme.palette.greyGainsboro}`,\n color: theme.palette.mode === 'dark' ? common.white : theme.palette.nobel01,\n fontSize: '14px',\n padding: '20px',\n}));\n\nexport const Inner = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n paddingLeft: 16,\n paddingRight: 16,\n width: '100%',\n [`@media (min-width: ${theme.breakPoints.medium}px)`]: {\n minWidth: 400,\n maxWidth: 800,\n margin: 'auto',\n justifyContent: 'space-between',\n },\n [`@media (min-width: ${theme.breakPoints.large}px)`]: {\n maxWidth: 1240,\n },\n}));\n\nexport const Left = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n alignItems: 'center',\n display: 'none',\n [`@media (min-width: ${theme.breakPoints.medium}px)`]: {\n display: 'flex',\n },\n marginLeft: 1,\n}));\n\nexport const Right = styled(Left)({\n display: 'flex',\n marginRight: 1,\n});\n\nexport const Love = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n color: theme.palette.love,\n padding: '0 5px',\n}));\n"],"mappings":";;;;;AAKA,IAAa,WAAA,GAAU,gBAAA,QAAA,CAAO,KAAK,CAAC,EAAqB,EAAE,aAAa;CACtE,YAAY,MAAM,QAAQ,SAAS,UAAU,MAAM,QAAQ,OAAO,MAAM,QAAQ;CAChF,WAAW,aAAa,MAAM,QAAQ;CACtC,OAAO,MAAM,QAAQ,SAAS,SAAS,qBAAA,OAAO,QAAQ,MAAM,QAAQ;CACpE,UAAU;CACV,SAAS;AACX,EAAE;AAEF,IAAa,SAAA,GAAQ,gBAAA,QAAA,CAAO,KAAK,CAAC,EAAqB,EAAE,aAAa;CACpE,SAAS;CACT,YAAY;CACZ,gBAAgB;CAChB,aAAa;CACb,cAAc;CACd,OAAO;EACN,sBAAsB,MAAM,YAAY,OAAO,OAAO;EACrD,UAAU;EACV,UAAU;EACV,QAAQ;EACR,gBAAgB;CAClB;EACC,sBAAsB,MAAM,YAAY,MAAM,OAAO,EACpD,UAAU,KACZ;AACF,EAAE;AAEF,IAAa,QAAA,GAAO,gBAAA,QAAA,CAAO,KAAK,CAAC,EAAqB,EAAE,aAAa;CACnE,YAAY;CACZ,SAAS;EACR,sBAAsB,MAAM,YAAY,OAAO,OAAO,EACrD,SAAS,OACX;CACA,YAAY;AACd,EAAE;AAEF,IAAa,SAAA,GAAQ,gBAAA,QAAA,CAAO,IAAI,CAAC,CAAC;CAChC,SAAS;CACT,aAAa;AACf,CAAC;AAED,IAAa,QAAA,GAAO,gBAAA,QAAA,CAAO,MAAM,CAAC,EAAqB,EAAE,aAAa;CACpE,OAAO,MAAM,QAAQ;CACrB,SAAS;AACX,EAAE"}
1
+ {"version":3,"file":"styles.js","names":["styled","common"],"sources":["../../../src/sections/Footer/styles.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { common } from '@mui/material/colors';\n\nimport type { Theme } from '../../';\n\nexport const Wrapper = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n background: theme.palette.mode === 'light' ? theme.palette.snow : theme.palette.cyanBlue,\n borderTop: `1px solid ${theme.palette.greyGainsboro}`,\n color: theme.palette.mode === 'dark' ? common.white : theme.palette.nobel01,\n fontSize: '14px',\n padding: '20px',\n}));\n\nexport const Inner = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n paddingLeft: 16,\n paddingRight: 16,\n width: '100%',\n [`@media (min-width: ${theme.breakPoints.medium}px)`]: {\n minWidth: 400,\n maxWidth: 800,\n margin: 'auto',\n justifyContent: 'space-between',\n },\n [`@media (min-width: ${theme.breakPoints.large}px)`]: {\n maxWidth: 1240,\n },\n}));\n\nexport const Left = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n alignItems: 'center',\n display: 'none',\n [`@media (min-width: ${theme.breakPoints.medium}px)`]: {\n display: 'flex',\n },\n marginLeft: 1,\n}));\n\nexport const Right = styled(Left)({\n display: 'flex',\n marginRight: 1,\n});\n\nexport const Love = styled('span')<{ theme?: Theme }>(({ theme }) => ({\n color: theme.palette.love,\n padding: '0 5px',\n}));\n"],"mappings":";;;;;AAKA,IAAa,WAAA,GAAUA,gBAAAA,QAAAA,CAAO,KAAK,CAAC,EAAqB,EAAE,aAAa;CACtE,YAAY,MAAM,QAAQ,SAAS,UAAU,MAAM,QAAQ,OAAO,MAAM,QAAQ;CAChF,WAAW,aAAa,MAAM,QAAQ;CACtC,OAAO,MAAM,QAAQ,SAAS,SAASC,qBAAAA,OAAO,QAAQ,MAAM,QAAQ;CACpE,UAAU;CACV,SAAS;AACX,EAAE;AAEF,IAAa,SAAA,GAAQD,gBAAAA,QAAAA,CAAO,KAAK,CAAC,EAAqB,EAAE,aAAa;CACpE,SAAS;CACT,YAAY;CACZ,gBAAgB;CAChB,aAAa;CACb,cAAc;CACd,OAAO;EACN,sBAAsB,MAAM,YAAY,OAAO,OAAO;EACrD,UAAU;EACV,UAAU;EACV,QAAQ;EACR,gBAAgB;CAClB;EACC,sBAAsB,MAAM,YAAY,MAAM,OAAO,EACpD,UAAU,KACZ;AACF,EAAE;AAEF,IAAa,QAAA,GAAOA,gBAAAA,QAAAA,CAAO,KAAK,CAAC,EAAqB,EAAE,aAAa;CACnE,YAAY;CACZ,SAAS;EACR,sBAAsB,MAAM,YAAY,OAAO,OAAO,EACrD,SAAS,OACX;CACA,YAAY;AACd,EAAE;AAEF,IAAa,SAAA,GAAQA,gBAAAA,QAAAA,CAAO,IAAI,CAAC,CAAC;CAChC,SAAS;CACT,aAAa;AACf,CAAC;AAED,IAAa,QAAA,GAAOA,gBAAAA,QAAAA,CAAO,MAAM,CAAC,EAAqB,EAAE,aAAa;CACpE,OAAO,MAAM,QAAQ;CACrB,SAAS;AACX,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","names":[],"sources":["../../../src/sections/Header/Header.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { LoginDialog, Search, useAuth, useConfig } from '../../';\nimport { tokenExpireInMs } from '../../utils/token';\nimport HeaderLeft from './HeaderLeft';\nimport HeaderRight from './HeaderRight';\nimport HeaderSettingsDialog from './HeaderSettingsDialog';\nimport { InnerMobileNavBar, InnerNavBar, MobileNavBar, NavBar } from './styles';\n\ntype Props = {\n HeaderInfoDialog?: React.FC<any>;\n isPlainHeader?: boolean;\n};\n\nconst Header: React.FC<Props> = ({ HeaderInfoDialog, isPlainHeader }) => {\n const { t } = useTranslation();\n const [isInfoDialogOpen, setOpenInfoDialog] = useState<boolean>(false);\n const [isSettingsDialogOpen, setSettingsDialogOpen] = useState<boolean>(false);\n const [showMobileNavBar, setShowMobileNavBar] = useState<boolean>(false);\n const [showLoginModal, setShowLoginModal] = useState<boolean>(false);\n const { configOptions } = useConfig();\n const { userState, logOutUser } = useAuth();\n\n // Use a ref to always have the latest logout in the timer callback\n const logOutUserRef = useRef(logOutUser);\n useEffect(() => {\n logOutUserRef.current = logOutUser;\n }, [logOutUser]);\n\n // log out exactly when the token expires; polling reloaded the page at an\n // arbitrary moment up to a minute later, mid-interaction\n useEffect(() => {\n const token = userState?.token;\n if (!token) {\n return;\n }\n let timer: ReturnType<typeof setTimeout> | undefined;\n const arm = () => {\n const remaining = tokenExpireInMs(token);\n if (remaining === null || remaining <= 0) {\n logOutUserRef.current?.();\n return;\n }\n // setTimeout overflows above 2^31-1 ms; re-arm for far-away expiries\n timer = setTimeout(arm, Math.min(remaining, 2 ** 31 - 1));\n };\n arm();\n return () => clearTimeout(timer);\n }, [userState?.token]);\n\n const handleLogout = () => {\n logOutUser?.();\n setShowLoginModal(false);\n };\n if (isPlainHeader) {\n return (\n <NavBar data-testid=\"header\" position=\"static\">\n <InnerNavBar data-testid=\"inner-nav-bar\">\n <HeaderLeft showSearch={false} />\n <HeaderRight\n hasLogin={false}\n onLogout={() => {}}\n onOpenRegistryInfoDialog={() => {}}\n onOpenSettingsDialog={() => {}}\n onToggleLogin={() => {}}\n onToggleMobileNav={() => {}}\n showInfo={false}\n showSearch={false}\n showSettings={false}\n showThemeSwitch={false}\n username={''}\n />\n </InnerNavBar>\n </NavBar>\n );\n }\n\n return (\n <>\n <NavBar data-testid=\"header\" position=\"static\">\n <InnerNavBar data-testid=\"inner-nav-bar\">\n <HeaderLeft showSearch={configOptions.showSearch} />\n <HeaderRight\n hasLogin={configOptions?.login}\n onLogout={handleLogout}\n onOpenRegistryInfoDialog={() => setOpenInfoDialog(true)}\n onOpenSettingsDialog={() => setSettingsDialogOpen(true)}\n onToggleLogin={() => setShowLoginModal(!showLoginModal)}\n onToggleMobileNav={() => setShowMobileNavBar(!showMobileNavBar)}\n showInfo={configOptions.showInfo}\n showSearch={configOptions.showSearch}\n showSettings={configOptions.showSettings}\n showThemeSwitch={configOptions.showThemeSwitch}\n username={userState?.username}\n />\n </InnerNavBar>\n <HeaderSettingsDialog\n isOpen={isSettingsDialogOpen}\n onCloseDialog={() => setSettingsDialogOpen(false)}\n />\n {HeaderInfoDialog ? (\n <HeaderInfoDialog\n dialogTitle={t('dialog.registry-info.title')}\n isOpen={isInfoDialogOpen}\n onCloseDialog={() => setOpenInfoDialog(false)}\n />\n ) : null}\n </NavBar>\n {showMobileNavBar && (\n <MobileNavBar data-testid=\"mobile-nav-bar\">\n <InnerMobileNavBar>\n <Search />\n </InnerMobileNavBar>\n <Button color=\"inherit\" onClick={() => setShowMobileNavBar(false)}>\n {t('button.cancel')}\n </Button>\n </MobileNavBar>\n )}\n {!userState?.username && (\n <LoginDialog onClose={() => setShowLoginModal(false)} open={showLoginModal} />\n )}\n </>\n );\n};\n\nexport default Header;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Header.js","names":["useTranslation","useState","useConfig","useAuth","useRef","tokenExpireInMs","NavBar","InnerNavBar","HeaderLeft","HeaderRight","_Fragment","HeaderSettingsDialog","MobileNavBar","InnerMobileNavBar","Search","Button","LoginDialog"],"sources":["../../../src/sections/Header/Header.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { LoginDialog, Search, useAuth, useConfig } from '../../';\nimport { tokenExpireInMs } from '../../utils/token';\nimport HeaderLeft from './HeaderLeft';\nimport HeaderRight from './HeaderRight';\nimport HeaderSettingsDialog from './HeaderSettingsDialog';\nimport { InnerMobileNavBar, InnerNavBar, MobileNavBar, NavBar } from './styles';\n\ntype Props = {\n HeaderInfoDialog?: React.FC<any>;\n isPlainHeader?: boolean;\n};\n\nconst Header: React.FC<Props> = ({ HeaderInfoDialog, isPlainHeader }) => {\n const { t } = useTranslation();\n const [isInfoDialogOpen, setOpenInfoDialog] = useState<boolean>(false);\n const [isSettingsDialogOpen, setSettingsDialogOpen] = useState<boolean>(false);\n const [showMobileNavBar, setShowMobileNavBar] = useState<boolean>(false);\n const [showLoginModal, setShowLoginModal] = useState<boolean>(false);\n const { configOptions } = useConfig();\n const { userState, logOutUser } = useAuth();\n\n // Use a ref to always have the latest logout in the timer callback\n const logOutUserRef = useRef(logOutUser);\n useEffect(() => {\n logOutUserRef.current = logOutUser;\n }, [logOutUser]);\n\n // log out exactly when the token expires; polling reloaded the page at an\n // arbitrary moment up to a minute later, mid-interaction\n useEffect(() => {\n const token = userState?.token;\n if (!token) {\n return;\n }\n let timer: ReturnType<typeof setTimeout> | undefined;\n const arm = () => {\n const remaining = tokenExpireInMs(token);\n if (remaining === null || remaining <= 0) {\n logOutUserRef.current?.();\n return;\n }\n // setTimeout overflows above 2^31-1 ms; re-arm for far-away expiries\n timer = setTimeout(arm, Math.min(remaining, 2 ** 31 - 1));\n };\n arm();\n return () => clearTimeout(timer);\n }, [userState?.token]);\n\n const handleLogout = () => {\n logOutUser?.();\n setShowLoginModal(false);\n };\n if (isPlainHeader) {\n return (\n <NavBar data-testid=\"header\" position=\"static\">\n <InnerNavBar data-testid=\"inner-nav-bar\">\n <HeaderLeft showSearch={false} />\n <HeaderRight\n hasLogin={false}\n onLogout={() => {}}\n onOpenRegistryInfoDialog={() => {}}\n onOpenSettingsDialog={() => {}}\n onToggleLogin={() => {}}\n onToggleMobileNav={() => {}}\n showInfo={false}\n showSearch={false}\n showSettings={false}\n showThemeSwitch={false}\n username={''}\n />\n </InnerNavBar>\n </NavBar>\n );\n }\n\n return (\n <>\n <NavBar data-testid=\"header\" position=\"static\">\n <InnerNavBar data-testid=\"inner-nav-bar\">\n <HeaderLeft showSearch={configOptions.showSearch} />\n <HeaderRight\n hasLogin={configOptions?.login}\n onLogout={handleLogout}\n onOpenRegistryInfoDialog={() => setOpenInfoDialog(true)}\n onOpenSettingsDialog={() => setSettingsDialogOpen(true)}\n onToggleLogin={() => setShowLoginModal(!showLoginModal)}\n onToggleMobileNav={() => setShowMobileNavBar(!showMobileNavBar)}\n showInfo={configOptions.showInfo}\n showSearch={configOptions.showSearch}\n showSettings={configOptions.showSettings}\n showThemeSwitch={configOptions.showThemeSwitch}\n username={userState?.username}\n />\n </InnerNavBar>\n <HeaderSettingsDialog\n isOpen={isSettingsDialogOpen}\n onCloseDialog={() => setSettingsDialogOpen(false)}\n />\n {HeaderInfoDialog ? (\n <HeaderInfoDialog\n dialogTitle={t('dialog.registry-info.title')}\n isOpen={isInfoDialogOpen}\n onCloseDialog={() => setOpenInfoDialog(false)}\n />\n ) : null}\n </NavBar>\n {showMobileNavBar && (\n <MobileNavBar data-testid=\"mobile-nav-bar\">\n <InnerMobileNavBar>\n <Search />\n </InnerMobileNavBar>\n <Button color=\"inherit\" onClick={() => setShowMobileNavBar(false)}>\n {t('button.cancel')}\n </Button>\n </MobileNavBar>\n )}\n {!userState?.username && (\n <LoginDialog onClose={() => setShowLoginModal(false)} open={showLoginModal} />\n )}\n </>\n );\n};\n\nexport default Header;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Header.mjs","names":[],"sources":["../../../src/sections/Header/Header.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { LoginDialog, Search, useAuth, useConfig } from '../../';\nimport { tokenExpireInMs } from '../../utils/token';\nimport HeaderLeft from './HeaderLeft';\nimport HeaderRight from './HeaderRight';\nimport HeaderSettingsDialog from './HeaderSettingsDialog';\nimport { InnerMobileNavBar, InnerNavBar, MobileNavBar, NavBar } from './styles';\n\ntype Props = {\n HeaderInfoDialog?: React.FC<any>;\n isPlainHeader?: boolean;\n};\n\nconst Header: React.FC<Props> = ({ HeaderInfoDialog, isPlainHeader }) => {\n const { t } = useTranslation();\n const [isInfoDialogOpen, setOpenInfoDialog] = useState<boolean>(false);\n const [isSettingsDialogOpen, setSettingsDialogOpen] = useState<boolean>(false);\n const [showMobileNavBar, setShowMobileNavBar] = useState<boolean>(false);\n const [showLoginModal, setShowLoginModal] = useState<boolean>(false);\n const { configOptions } = useConfig();\n const { userState, logOutUser } = useAuth();\n\n // Use a ref to always have the latest logout in the timer callback\n const logOutUserRef = useRef(logOutUser);\n useEffect(() => {\n logOutUserRef.current = logOutUser;\n }, [logOutUser]);\n\n // log out exactly when the token expires; polling reloaded the page at an\n // arbitrary moment up to a minute later, mid-interaction\n useEffect(() => {\n const token = userState?.token;\n if (!token) {\n return;\n }\n let timer: ReturnType<typeof setTimeout> | undefined;\n const arm = () => {\n const remaining = tokenExpireInMs(token);\n if (remaining === null || remaining <= 0) {\n logOutUserRef.current?.();\n return;\n }\n // setTimeout overflows above 2^31-1 ms; re-arm for far-away expiries\n timer = setTimeout(arm, Math.min(remaining, 2 ** 31 - 1));\n };\n arm();\n return () => clearTimeout(timer);\n }, [userState?.token]);\n\n const handleLogout = () => {\n logOutUser?.();\n setShowLoginModal(false);\n };\n if (isPlainHeader) {\n return (\n <NavBar data-testid=\"header\" position=\"static\">\n <InnerNavBar data-testid=\"inner-nav-bar\">\n <HeaderLeft showSearch={false} />\n <HeaderRight\n hasLogin={false}\n onLogout={() => {}}\n onOpenRegistryInfoDialog={() => {}}\n onOpenSettingsDialog={() => {}}\n onToggleLogin={() => {}}\n onToggleMobileNav={() => {}}\n showInfo={false}\n showSearch={false}\n showSettings={false}\n showThemeSwitch={false}\n username={''}\n />\n </InnerNavBar>\n </NavBar>\n );\n }\n\n return (\n <>\n <NavBar data-testid=\"header\" position=\"static\">\n <InnerNavBar data-testid=\"inner-nav-bar\">\n <HeaderLeft showSearch={configOptions.showSearch} />\n <HeaderRight\n hasLogin={configOptions?.login}\n onLogout={handleLogout}\n onOpenRegistryInfoDialog={() => setOpenInfoDialog(true)}\n onOpenSettingsDialog={() => setSettingsDialogOpen(true)}\n onToggleLogin={() => setShowLoginModal(!showLoginModal)}\n onToggleMobileNav={() => setShowMobileNavBar(!showMobileNavBar)}\n showInfo={configOptions.showInfo}\n showSearch={configOptions.showSearch}\n showSettings={configOptions.showSettings}\n showThemeSwitch={configOptions.showThemeSwitch}\n username={userState?.username}\n />\n </InnerNavBar>\n <HeaderSettingsDialog\n isOpen={isSettingsDialogOpen}\n onCloseDialog={() => setSettingsDialogOpen(false)}\n />\n {HeaderInfoDialog ? (\n <HeaderInfoDialog\n dialogTitle={t('dialog.registry-info.title')}\n isOpen={isInfoDialogOpen}\n onCloseDialog={() => setOpenInfoDialog(false)}\n />\n ) : null}\n </NavBar>\n {showMobileNavBar && (\n <MobileNavBar data-testid=\"mobile-nav-bar\">\n <InnerMobileNavBar>\n <Search />\n </InnerMobileNavBar>\n <Button color=\"inherit\" onClick={() => setShowMobileNavBar(false)}>\n {t('button.cancel')}\n </Button>\n </MobileNavBar>\n )}\n {!userState?.username && (\n <LoginDialog onClose={() => setShowLoginModal(false)} open={showLoginModal} />\n )}\n </>\n );\n};\n\nexport default Header;\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAM,UAA2B,EAAE,kBAAkB,oBAAoB;CACvE,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,CAAC,kBAAkB,qBAAqB,SAAkB,KAAK;CACrE,MAAM,CAAC,sBAAsB,yBAAyB,SAAkB,KAAK;CAC7E,MAAM,CAAC,kBAAkB,uBAAuB,SAAkB,KAAK;CACvE,MAAM,CAAC,gBAAgB,qBAAqB,SAAkB,KAAK;CACnE,MAAM,EAAE,kBAAkB,UAAU;CACpC,MAAM,EAAE,WAAW,eAAe,QAAQ;CAG1C,MAAM,gBAAgB,OAAO,UAAU;CACvC,gBAAgB;EACd,cAAc,UAAU;CAC1B,GAAG,CAAC,UAAU,CAAC;CAIf,gBAAgB;EACd,MAAM,QAAQ,WAAW;EACzB,IAAI,CAAC,OACH;EAEF,IAAI;EACJ,MAAM,YAAY;GAChB,MAAM,YAAY,gBAAgB,KAAK;GACvC,IAAI,cAAc,QAAQ,aAAa,GAAG;IACxC,cAAc,UAAU;IACxB;GACF;GAEA,QAAQ,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC;EAC1D;EACA,IAAI;EACJ,aAAa,aAAa,KAAK;CACjC,GAAG,CAAC,WAAW,KAAK,CAAC;CAErB,MAAM,qBAAqB;EACzB,aAAa;EACb,kBAAkB,KAAK;CACzB;CACA,IAAI,eACF,OACE,oBAAC,QAAD;EAAQ,eAAY;EAAS,UAAS;EACpC,UAAA,qBAAC,aAAD;GAAa,eAAY;GAAzB,UAAA,CACE,oBAAC,YAAD,EAAY,YAAY,MAAQ,CAAA,GAChC,oBAAC,aAAD;IACE,UAAU;IACV,gBAAgB,CAAC;IACjB,gCAAgC,CAAC;IACjC,4BAA4B,CAAC;IAC7B,qBAAqB,CAAC;IACtB,yBAAyB,CAAC;IAC1B,UAAU;IACV,YAAY;IACZ,cAAc;IACd,iBAAiB;IACjB,UAAU;GACX,CAAA,CACU;;CACP,CAAA;CAIZ,OACE,qBAAA,YAAA,EAAA,UAAA;EACE,qBAAC,QAAD;GAAQ,eAAY;GAAS,UAAS;GAAtC,UAAA;IACE,qBAAC,aAAD;KAAa,eAAY;KAAzB,UAAA,CACE,oBAAC,YAAD,EAAY,YAAY,cAAc,WAAa,CAAA,GACnD,oBAAC,aAAD;MACE,UAAU,eAAe;MACzB,UAAU;MACV,gCAAgC,kBAAkB,IAAI;MACtD,4BAA4B,sBAAsB,IAAI;MACtD,qBAAqB,kBAAkB,CAAC,cAAc;MACtD,yBAAyB,oBAAoB,CAAC,gBAAgB;MAC9D,UAAU,cAAc;MACxB,YAAY,cAAc;MAC1B,cAAc,cAAc;MAC5B,iBAAiB,cAAc;MAC/B,UAAU,WAAW;KACtB,CAAA,CACU;;IACb,oBAAC,sBAAD;KACE,QAAQ;KACR,qBAAqB,sBAAsB,KAAK;IACjD,CAAA;IACA,mBACC,oBAAC,kBAAD;KACE,aAAa,EAAE,4BAA4B;KAC3C,QAAQ;KACR,qBAAqB,kBAAkB,KAAK;IAC7C,CAAA,IACC;GACE;;EACP,oBACC,qBAAC,cAAD;GAAc,eAAY;GAA1B,UAAA,CACE,oBAAC,mBAAD,EAAA,UACE,oBAAC,QAAD,CAAS,CAAA,EACQ,CAAA,GACnB,oBAAC,QAAD;IAAQ,OAAM;IAAU,eAAe,oBAAoB,KAAK;IAC7D,UAAA,EAAE,eAAe;GACZ,CAAA,CACI;;EAEf,CAAC,WAAW,YACX,oBAAC,aAAD;GAAa,eAAe,kBAAkB,KAAK;GAAG,MAAM;EAAiB,CAAA;CAE/E,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"Header.mjs","names":["_Fragment"],"sources":["../../../src/sections/Header/Header.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { LoginDialog, Search, useAuth, useConfig } from '../../';\nimport { tokenExpireInMs } from '../../utils/token';\nimport HeaderLeft from './HeaderLeft';\nimport HeaderRight from './HeaderRight';\nimport HeaderSettingsDialog from './HeaderSettingsDialog';\nimport { InnerMobileNavBar, InnerNavBar, MobileNavBar, NavBar } from './styles';\n\ntype Props = {\n HeaderInfoDialog?: React.FC<any>;\n isPlainHeader?: boolean;\n};\n\nconst Header: React.FC<Props> = ({ HeaderInfoDialog, isPlainHeader }) => {\n const { t } = useTranslation();\n const [isInfoDialogOpen, setOpenInfoDialog] = useState<boolean>(false);\n const [isSettingsDialogOpen, setSettingsDialogOpen] = useState<boolean>(false);\n const [showMobileNavBar, setShowMobileNavBar] = useState<boolean>(false);\n const [showLoginModal, setShowLoginModal] = useState<boolean>(false);\n const { configOptions } = useConfig();\n const { userState, logOutUser } = useAuth();\n\n // Use a ref to always have the latest logout in the timer callback\n const logOutUserRef = useRef(logOutUser);\n useEffect(() => {\n logOutUserRef.current = logOutUser;\n }, [logOutUser]);\n\n // log out exactly when the token expires; polling reloaded the page at an\n // arbitrary moment up to a minute later, mid-interaction\n useEffect(() => {\n const token = userState?.token;\n if (!token) {\n return;\n }\n let timer: ReturnType<typeof setTimeout> | undefined;\n const arm = () => {\n const remaining = tokenExpireInMs(token);\n if (remaining === null || remaining <= 0) {\n logOutUserRef.current?.();\n return;\n }\n // setTimeout overflows above 2^31-1 ms; re-arm for far-away expiries\n timer = setTimeout(arm, Math.min(remaining, 2 ** 31 - 1));\n };\n arm();\n return () => clearTimeout(timer);\n }, [userState?.token]);\n\n const handleLogout = () => {\n logOutUser?.();\n setShowLoginModal(false);\n };\n if (isPlainHeader) {\n return (\n <NavBar data-testid=\"header\" position=\"static\">\n <InnerNavBar data-testid=\"inner-nav-bar\">\n <HeaderLeft showSearch={false} />\n <HeaderRight\n hasLogin={false}\n onLogout={() => {}}\n onOpenRegistryInfoDialog={() => {}}\n onOpenSettingsDialog={() => {}}\n onToggleLogin={() => {}}\n onToggleMobileNav={() => {}}\n showInfo={false}\n showSearch={false}\n showSettings={false}\n showThemeSwitch={false}\n username={''}\n />\n </InnerNavBar>\n </NavBar>\n );\n }\n\n return (\n <>\n <NavBar data-testid=\"header\" position=\"static\">\n <InnerNavBar data-testid=\"inner-nav-bar\">\n <HeaderLeft showSearch={configOptions.showSearch} />\n <HeaderRight\n hasLogin={configOptions?.login}\n onLogout={handleLogout}\n onOpenRegistryInfoDialog={() => setOpenInfoDialog(true)}\n onOpenSettingsDialog={() => setSettingsDialogOpen(true)}\n onToggleLogin={() => setShowLoginModal(!showLoginModal)}\n onToggleMobileNav={() => setShowMobileNavBar(!showMobileNavBar)}\n showInfo={configOptions.showInfo}\n showSearch={configOptions.showSearch}\n showSettings={configOptions.showSettings}\n showThemeSwitch={configOptions.showThemeSwitch}\n username={userState?.username}\n />\n </InnerNavBar>\n <HeaderSettingsDialog\n isOpen={isSettingsDialogOpen}\n onCloseDialog={() => setSettingsDialogOpen(false)}\n />\n {HeaderInfoDialog ? (\n <HeaderInfoDialog\n dialogTitle={t('dialog.registry-info.title')}\n isOpen={isInfoDialogOpen}\n onCloseDialog={() => setOpenInfoDialog(false)}\n />\n ) : null}\n </NavBar>\n {showMobileNavBar && (\n <MobileNavBar data-testid=\"mobile-nav-bar\">\n <InnerMobileNavBar>\n <Search />\n </InnerMobileNavBar>\n <Button color=\"inherit\" onClick={() => setShowMobileNavBar(false)}>\n {t('button.cancel')}\n </Button>\n </MobileNavBar>\n )}\n {!userState?.username && (\n <LoginDialog onClose={() => setShowLoginModal(false)} open={showLoginModal} />\n )}\n </>\n );\n};\n\nexport default Header;\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAM,UAA2B,EAAE,kBAAkB,oBAAoB;CACvE,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,CAAC,kBAAkB,qBAAqB,SAAkB,KAAK;CACrE,MAAM,CAAC,sBAAsB,yBAAyB,SAAkB,KAAK;CAC7E,MAAM,CAAC,kBAAkB,uBAAuB,SAAkB,KAAK;CACvE,MAAM,CAAC,gBAAgB,qBAAqB,SAAkB,KAAK;CACnE,MAAM,EAAE,kBAAkB,UAAU;CACpC,MAAM,EAAE,WAAW,eAAe,QAAQ;CAG1C,MAAM,gBAAgB,OAAO,UAAU;CACvC,gBAAgB;EACd,cAAc,UAAU;CAC1B,GAAG,CAAC,UAAU,CAAC;CAIf,gBAAgB;EACd,MAAM,QAAQ,WAAW;EACzB,IAAI,CAAC,OACH;EAEF,IAAI;EACJ,MAAM,YAAY;GAChB,MAAM,YAAY,gBAAgB,KAAK;GACvC,IAAI,cAAc,QAAQ,aAAa,GAAG;IACxC,cAAc,UAAU;IACxB;GACF;GAEA,QAAQ,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC;EAC1D;EACA,IAAI;EACJ,aAAa,aAAa,KAAK;CACjC,GAAG,CAAC,WAAW,KAAK,CAAC;CAErB,MAAM,qBAAqB;EACzB,aAAa;EACb,kBAAkB,KAAK;CACzB;CACA,IAAI,eACF,OACE,oBAAC,QAAD;EAAQ,eAAY;EAAS,UAAS;EACpC,UAAA,qBAAC,aAAD;GAAa,eAAY;GAAzB,UAAA,CACE,oBAAC,YAAD,EAAY,YAAY,MAAQ,CAAA,GAChC,oBAAC,aAAD;IACE,UAAU;IACV,gBAAgB,CAAC;IACjB,gCAAgC,CAAC;IACjC,4BAA4B,CAAC;IAC7B,qBAAqB,CAAC;IACtB,yBAAyB,CAAC;IAC1B,UAAU;IACV,YAAY;IACZ,cAAc;IACd,iBAAiB;IACjB,UAAU;GACX,CAAA,CACU;;CACP,CAAA;CAIZ,OACE,qBAAAA,YAAA,EAAA,UAAA;EACE,qBAAC,QAAD;GAAQ,eAAY;GAAS,UAAS;GAAtC,UAAA;IACE,qBAAC,aAAD;KAAa,eAAY;KAAzB,UAAA,CACE,oBAAC,YAAD,EAAY,YAAY,cAAc,WAAa,CAAA,GACnD,oBAAC,aAAD;MACE,UAAU,eAAe;MACzB,UAAU;MACV,gCAAgC,kBAAkB,IAAI;MACtD,4BAA4B,sBAAsB,IAAI;MACtD,qBAAqB,kBAAkB,CAAC,cAAc;MACtD,yBAAyB,oBAAoB,CAAC,gBAAgB;MAC9D,UAAU,cAAc;MACxB,YAAY,cAAc;MAC1B,cAAc,cAAc;MAC5B,iBAAiB,cAAc;MAC/B,UAAU,WAAW;KACtB,CAAA,CACU;;IACb,oBAAC,sBAAD;KACE,QAAQ;KACR,qBAAqB,sBAAsB,KAAK;IACjD,CAAA;IACA,mBACC,oBAAC,kBAAD;KACE,aAAa,EAAE,4BAA4B;KAC3C,QAAQ;KACR,qBAAqB,kBAAkB,KAAK;IAC7C,CAAA,IACC;GACE;;EACP,oBACC,qBAAC,cAAD;GAAc,eAAY;GAA1B,UAAA,CACE,oBAAC,mBAAD,EAAA,UACE,oBAAC,QAAD,CAAS,CAAA,EACQ,CAAA,GACnB,oBAAC,QAAD;IAAQ,OAAM;IAAU,eAAe,oBAAoB,KAAK;IAC7D,UAAA,EAAE,eAAe;GACZ,CAAA,CACI;;EAEf,CAAC,WAAW,YACX,oBAAC,aAAD;GAAa,eAAe,kBAAkB,KAAK;GAAG,MAAM;EAAiB,CAAA;CAE/E,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderGreetings.js","names":[],"sources":["../../../src/sections/Header/HeaderGreetings.tsx"],"sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { Label } from '../../';\nimport { Greetings } from './styles';\n\ninterface Props {\n username: string;\n}\n\nconst HeaderGreetings: React.FC<Props> = ({ username }) => {\n const { t } = useTranslation();\n return (\n <>\n <Greetings>{t('header.greetings')}</Greetings>\n <Label data-testid=\"greetings-label\" text={username} weight=\"bold\" />\n </>\n );\n};\n\nexport default HeaderGreetings;\n"],"mappings":";;;;;;;;;AAUA,IAAM,mBAAoC,EAAE,eAAe;CACzD,MAAM,EAAE,OAAA,GAAM,cAAA,eAAA,CAAe;CAC7B,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAA,WAAD,EAAA,UAAY,EAAE,kBAAkB,EAAa,CAAA,GAC7C,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAA,SAAD;EAAO,eAAY;EAAkB,MAAM;EAAU,QAAO;CAAQ,CAAA,CACpE,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"HeaderGreetings.js","names":["useTranslation","_Fragment","Greetings","Label"],"sources":["../../../src/sections/Header/HeaderGreetings.tsx"],"sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { Label } from '../../';\nimport { Greetings } from './styles';\n\ninterface Props {\n username: string;\n}\n\nconst HeaderGreetings: React.FC<Props> = ({ username }) => {\n const { t } = useTranslation();\n return (\n <>\n <Greetings>{t('header.greetings')}</Greetings>\n <Label data-testid=\"greetings-label\" text={username} weight=\"bold\" />\n </>\n );\n};\n\nexport default HeaderGreetings;\n"],"mappings":";;;;;;;;;AAUA,IAAM,mBAAoC,EAAE,eAAe;CACzD,MAAM,EAAE,OAAA,GAAMA,cAAAA,eAAAA,CAAe;CAC7B,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAC,kBAAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,WAAD,EAAA,UAAY,EAAE,kBAAkB,EAAa,CAAA,GAC7C,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,SAAD;EAAO,eAAY;EAAkB,MAAM;EAAU,QAAO;CAAQ,CAAA,CACpE,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderGreetings.mjs","names":[],"sources":["../../../src/sections/Header/HeaderGreetings.tsx"],"sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { Label } from '../../';\nimport { Greetings } from './styles';\n\ninterface Props {\n username: string;\n}\n\nconst HeaderGreetings: React.FC<Props> = ({ username }) => {\n const { t } = useTranslation();\n return (\n <>\n <Greetings>{t('header.greetings')}</Greetings>\n <Label data-testid=\"greetings-label\" text={username} weight=\"bold\" />\n </>\n );\n};\n\nexport default HeaderGreetings;\n"],"mappings":";;;;;;;AAUA,IAAM,mBAAoC,EAAE,eAAe;CACzD,MAAM,EAAE,MAAM,eAAe;CAC7B,OACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,WAAD,EAAA,UAAY,EAAE,kBAAkB,EAAa,CAAA,GAC7C,oBAAC,OAAD;EAAO,eAAY;EAAkB,MAAM;EAAU,QAAO;CAAQ,CAAA,CACpE,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"HeaderGreetings.mjs","names":["_Fragment"],"sources":["../../../src/sections/Header/HeaderGreetings.tsx"],"sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { Label } from '../../';\nimport { Greetings } from './styles';\n\ninterface Props {\n username: string;\n}\n\nconst HeaderGreetings: React.FC<Props> = ({ username }) => {\n const { t } = useTranslation();\n return (\n <>\n <Greetings>{t('header.greetings')}</Greetings>\n <Label data-testid=\"greetings-label\" text={username} weight=\"bold\" />\n </>\n );\n};\n\nexport default HeaderGreetings;\n"],"mappings":";;;;;;;AAUA,IAAM,mBAAoC,EAAE,eAAe;CACzD,MAAM,EAAE,MAAM,eAAe;CAC7B,OACE,qBAAAA,YAAA,EAAA,UAAA,CACE,oBAAC,WAAD,EAAA,UAAY,EAAE,kBAAkB,EAAa,CAAA,GAC7C,oBAAC,OAAD;EAAO,eAAY;EAAkB,MAAM;EAAU,QAAO;CAAQ,CAAA,CACpE,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderLeft.js","names":[],"sources":["../../../src/sections/Header/HeaderLeft.tsx"],"sourcesContent":["import Toolbar from '@mui/material/Toolbar';\nimport React from 'react';\nimport { Link as RouterLink } from 'react-router';\n\nimport { Logo, Search } from '../../';\nimport { SearchWrapper } from './styles';\n\ninterface Props {\n showSearch?: boolean;\n}\n\nconst HeaderLeft: React.FC<Props> = ({ showSearch }) => (\n <Toolbar\n sx={{\n display: 'flex',\n padding: 0,\n marginLeft: 1,\n flex: 1,\n '@media (min-width: 600px)': {\n padding: 0,\n marginLeft: 1,\n marginRight: '20px',\n },\n }}\n >\n <RouterLink to={'/'}>\n <Logo />\n </RouterLink>\n {showSearch && (\n <SearchWrapper data-testid=\"search-container\">\n <Search />\n </SearchWrapper>\n )}\n </Toolbar>\n);\n\nexport default HeaderLeft;\n"],"mappings":";;;;;;;;;;;;AAWA,IAAM,cAA+B,EAAE,iBACrC,iBAAA,GAAA,kBAAA,KAAA,CAAC,sBAAA,SAAD;CACE,IAAI;EACF,SAAS;EACT,SAAS;EACT,YAAY;EACZ,MAAM;EACN,6BAA6B;GAC3B,SAAS;GACT,YAAY;GACZ,aAAa;EACf;CACF;CAXF,UAAA,CAaE,iBAAA,GAAA,kBAAA,IAAA,CAAC,aAAA,MAAD;EAAY,IAAI;EACd,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,aAAA,SAAD,CAAO,CAAA;CACG,CAAA,GACX,cACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAA,eAAD;EAAe,eAAY;EACzB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAA,SAAD,CAAS,CAAA;CACI,CAAA,CAEV"}
1
+ {"version":3,"file":"HeaderLeft.js","names":["Toolbar","RouterLink","Logo","SearchWrapper","Search"],"sources":["../../../src/sections/Header/HeaderLeft.tsx"],"sourcesContent":["import Toolbar from '@mui/material/Toolbar';\nimport React from 'react';\nimport { Link as RouterLink } from 'react-router';\n\nimport { Logo, Search } from '../../';\nimport { SearchWrapper } from './styles';\n\ninterface Props {\n showSearch?: boolean;\n}\n\nconst HeaderLeft: React.FC<Props> = ({ showSearch }) => (\n <Toolbar\n sx={{\n display: 'flex',\n padding: 0,\n marginLeft: 1,\n flex: 1,\n '@media (min-width: 600px)': {\n padding: 0,\n marginLeft: 1,\n marginRight: '20px',\n },\n }}\n >\n <RouterLink to={'/'}>\n <Logo />\n </RouterLink>\n {showSearch && (\n <SearchWrapper data-testid=\"search-container\">\n <Search />\n </SearchWrapper>\n )}\n </Toolbar>\n);\n\nexport default HeaderLeft;\n"],"mappings":";;;;;;;;;;;;AAWA,IAAM,cAA+B,EAAE,iBACrC,iBAAA,GAAA,kBAAA,KAAA,CAACA,sBAAAA,SAAD;CACE,IAAI;EACF,SAAS;EACT,SAAS;EACT,YAAY;EACZ,MAAM;EACN,6BAA6B;GAC3B,SAAS;GACT,YAAY;GACZ,aAAa;EACf;CACF;CAXF,UAAA,CAaE,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,MAAD;EAAY,IAAI;EACd,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,SAAD,CAAO,CAAA;CACG,CAAA,GACX,cACC,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,eAAD;EAAe,eAAY;EACzB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,SAAD,CAAS,CAAA;CACI,CAAA,CAEV"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderLeft.mjs","names":[],"sources":["../../../src/sections/Header/HeaderLeft.tsx"],"sourcesContent":["import Toolbar from '@mui/material/Toolbar';\nimport React from 'react';\nimport { Link as RouterLink } from 'react-router';\n\nimport { Logo, Search } from '../../';\nimport { SearchWrapper } from './styles';\n\ninterface Props {\n showSearch?: boolean;\n}\n\nconst HeaderLeft: React.FC<Props> = ({ showSearch }) => (\n <Toolbar\n sx={{\n display: 'flex',\n padding: 0,\n marginLeft: 1,\n flex: 1,\n '@media (min-width: 600px)': {\n padding: 0,\n marginLeft: 1,\n marginRight: '20px',\n },\n }}\n >\n <RouterLink to={'/'}>\n <Logo />\n </RouterLink>\n {showSearch && (\n <SearchWrapper data-testid=\"search-container\">\n <Search />\n </SearchWrapper>\n )}\n </Toolbar>\n);\n\nexport default HeaderLeft;\n"],"mappings":";;;;;;;;;AAWA,IAAM,cAA+B,EAAE,iBACrC,qBAAC,SAAD;CACE,IAAI;EACF,SAAS;EACT,SAAS;EACT,YAAY;EACZ,MAAM;EACN,6BAA6B;GAC3B,SAAS;GACT,YAAY;GACZ,aAAa;EACf;CACF;CAXF,UAAA,CAaE,oBAAC,MAAD;EAAY,IAAI;EACd,UAAA,oBAAC,MAAD,CAAO,CAAA;CACG,CAAA,GACX,cACC,oBAAC,eAAD;EAAe,eAAY;EACzB,UAAA,oBAAC,QAAD,CAAS,CAAA;CACI,CAAA,CAEV"}
1
+ {"version":3,"file":"HeaderLeft.mjs","names":["RouterLink"],"sources":["../../../src/sections/Header/HeaderLeft.tsx"],"sourcesContent":["import Toolbar from '@mui/material/Toolbar';\nimport React from 'react';\nimport { Link as RouterLink } from 'react-router';\n\nimport { Logo, Search } from '../../';\nimport { SearchWrapper } from './styles';\n\ninterface Props {\n showSearch?: boolean;\n}\n\nconst HeaderLeft: React.FC<Props> = ({ showSearch }) => (\n <Toolbar\n sx={{\n display: 'flex',\n padding: 0,\n marginLeft: 1,\n flex: 1,\n '@media (min-width: 600px)': {\n padding: 0,\n marginLeft: 1,\n marginRight: '20px',\n },\n }}\n >\n <RouterLink to={'/'}>\n <Logo />\n </RouterLink>\n {showSearch && (\n <SearchWrapper data-testid=\"search-container\">\n <Search />\n </SearchWrapper>\n )}\n </Toolbar>\n);\n\nexport default HeaderLeft;\n"],"mappings":";;;;;;;;;AAWA,IAAM,cAA+B,EAAE,iBACrC,qBAAC,SAAD;CACE,IAAI;EACF,SAAS;EACT,SAAS;EACT,YAAY;EACZ,MAAM;EACN,6BAA6B;GAC3B,SAAS;GACT,YAAY;GACZ,aAAa;EACf;CACF;CAXF,UAAA,CAaE,oBAACA,MAAD;EAAY,IAAI;EACd,UAAA,oBAAC,MAAD,CAAO,CAAA;CACG,CAAA,GACX,cACC,oBAAC,eAAD;EAAe,eAAY;EACzB,UAAA,oBAAC,QAAD,CAAS,CAAA;CACI,CAAA,CAEV"}
@@ -23,6 +23,7 @@ var HeaderMenu = ({ onLogout, username, isMenuOpen = false, anchorEl, onLoggedIn
23
23
  const navigate = (0, react_router.useNavigate)();
24
24
  const { configOptions } = require_AppConfigurationProvider.useConfig();
25
25
  const stageEnabled = configOptions?.flags?.stage;
26
+ const changePasswordEnabled = configOptions?.flags?.changePassword;
26
27
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_IconButton.default, {
27
28
  color: "inherit",
28
29
  "data-testid": "logInDialogIcon",
@@ -44,6 +45,15 @@ var HeaderMenu = ({ onLogout, username, isMenuOpen = false, anchorEl, onLoggedIn
44
45
  },
45
46
  children: [
46
47
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuItem.default, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_HeaderGreetings.default, { username }) }),
48
+ changePasswordEnabled && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuItem.default, {
49
+ "data-testid": "changePasswordMenuItem",
50
+ id: "changePasswordMenuItem",
51
+ onClick: () => {
52
+ onLoggedInMenuClose();
53
+ navigate(require_routes.Route.CHANGE_PASSWORD);
54
+ },
55
+ children: t("security.changePassword.title")
56
+ }),
47
57
  stageEnabled && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuItem.default, {
48
58
  "data-testid": "stagedPackagesMenuItem",
49
59
  id: "stagedPackagesMenuItem",
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderMenu.js","names":[],"sources":["../../../src/sections/Header/HeaderMenu.tsx"],"sourcesContent":["import AccountCircle from '@mui/icons-material/AccountCircle';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport type { MouseEvent } from 'react';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router';\n\nimport { MenuItem } from '../../';\nimport { useConfig } from '../../providers/AppConfigurationProvider/AppConfigurationProvider';\nimport { Route } from '../../utils';\nimport HeaderGreetings from './HeaderGreetings';\n\n// Workaround: MUI v7 MenuProps type resolution breaks inherited PopoverProps.\nconst TypedMenu = Menu as React.FC<any>;\n\ninterface Props {\n username: string;\n isMenuOpen: boolean;\n anchorEl?: Element | null | undefined;\n onLogout: () => void;\n onLoggedInMenu: (event: MouseEvent<HTMLButtonElement>) => void;\n onLoggedInMenuClose: () => void;\n}\n\nconst HeaderMenu: React.FC<Props> = ({\n onLogout,\n username,\n isMenuOpen = false,\n anchorEl,\n onLoggedInMenu,\n onLoggedInMenuClose,\n}) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { configOptions } = useConfig();\n const stageEnabled = configOptions?.flags?.stage;\n return (\n <>\n <IconButton\n color=\"inherit\"\n data-testid=\"logInDialogIcon\"\n id=\"header--button-account\"\n onClick={onLoggedInMenu}\n size=\"large\"\n >\n <AccountCircle />\n </IconButton>\n <TypedMenu\n anchorEl={anchorEl}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n onClose={onLoggedInMenuClose}\n open={isMenuOpen}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <MenuItem>\n <HeaderGreetings username={username} />\n </MenuItem>\n {stageEnabled && (\n <MenuItem\n data-testid=\"stagedPackagesMenuItem\"\n id=\"stagedPackagesMenuItem\"\n onClick={() => {\n onLoggedInMenuClose();\n navigate(Route.STAGE);\n }}\n >\n {t('stage.menu')}\n </MenuItem>\n )}\n <MenuItem data-testid=\"logOutDialogIcon\" id=\"logOutDialogIcon\" onClick={onLogout}>\n {t('button.logout')}\n </MenuItem>\n </TypedMenu>\n </>\n );\n};\n\nexport default HeaderMenu;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAcA,IAAM,YAAY,mBAAA;AAWlB,IAAM,cAA+B,EACnC,UACA,UACA,aAAa,OACb,UACA,gBACA,0BACI;CACJ,MAAM,EAAE,OAAA,GAAM,cAAA,eAAA,CAAe;CAC7B,MAAM,YAAA,GAAW,aAAA,YAAA,CAAY;CAC7B,MAAM,EAAE,kBAAkB,iCAAA,UAAU;CACpC,MAAM,eAAe,eAAe,OAAO;CAC3C,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,yBAAA,SAAD;EACE,OAAM;EACN,eAAY;EACZ,IAAG;EACH,SAAS;EACT,MAAK;EAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,kCAAA,SAAD,CAAgB,CAAA;CACN,CAAA,GACZ,iBAAA,GAAA,kBAAA,KAAA,CAAC,WAAD;EACY;EACV,cAAc;GACZ,UAAU;GACV,YAAY;EACd;EACA,SAAS;EACT,MAAM;EACN,iBAAiB;GACf,UAAU;GACV,YAAY;EACd;EAXF,UAAA;GAaE,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,wBAAA,SAAD,EAA2B,SAAW,CAAA,EAC9B,CAAA;GACT,gBACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAA,SAAD;IACE,eAAY;IACZ,IAAG;IACH,eAAe;KACb,oBAAoB;KACpB,SAAS,eAAA,MAAM,KAAK;IACtB;IAEC,UAAA,EAAE,YAAY;GACP,CAAA;GAEZ,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAA,SAAD;IAAU,eAAY;IAAmB,IAAG;IAAmB,SAAS;IACrE,UAAA,EAAE,eAAe;GACV,CAAA;EACD;CACX,CAAA,CAAA,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"HeaderMenu.js","names":["Menu","useTranslation","useNavigate","useConfig","_Fragment","IconButton","AccountCircle","MenuItem","HeaderGreetings","Route"],"sources":["../../../src/sections/Header/HeaderMenu.tsx"],"sourcesContent":["import AccountCircle from '@mui/icons-material/AccountCircle';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport type { MouseEvent } from 'react';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router';\n\nimport { MenuItem } from '../../';\nimport { useConfig } from '../../providers/AppConfigurationProvider/AppConfigurationProvider';\nimport { Route } from '../../utils';\nimport HeaderGreetings from './HeaderGreetings';\n\n// Workaround: MUI v7 MenuProps type resolution breaks inherited PopoverProps.\nconst TypedMenu = Menu as React.FC<any>;\n\ninterface Props {\n username: string;\n isMenuOpen: boolean;\n anchorEl?: Element | null | undefined;\n onLogout: () => void;\n onLoggedInMenu: (event: MouseEvent<HTMLButtonElement>) => void;\n onLoggedInMenuClose: () => void;\n}\n\nconst HeaderMenu: React.FC<Props> = ({\n onLogout,\n username,\n isMenuOpen = false,\n anchorEl,\n onLoggedInMenu,\n onLoggedInMenuClose,\n}) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { configOptions } = useConfig();\n const stageEnabled = configOptions?.flags?.stage;\n const changePasswordEnabled = configOptions?.flags?.changePassword;\n return (\n <>\n <IconButton\n color=\"inherit\"\n data-testid=\"logInDialogIcon\"\n id=\"header--button-account\"\n onClick={onLoggedInMenu}\n size=\"large\"\n >\n <AccountCircle />\n </IconButton>\n <TypedMenu\n anchorEl={anchorEl}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n onClose={onLoggedInMenuClose}\n open={isMenuOpen}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <MenuItem>\n <HeaderGreetings username={username} />\n </MenuItem>\n {changePasswordEnabled && (\n <MenuItem\n data-testid=\"changePasswordMenuItem\"\n id=\"changePasswordMenuItem\"\n onClick={() => {\n onLoggedInMenuClose();\n navigate(Route.CHANGE_PASSWORD);\n }}\n >\n {t('security.changePassword.title')}\n </MenuItem>\n )}\n {stageEnabled && (\n <MenuItem\n data-testid=\"stagedPackagesMenuItem\"\n id=\"stagedPackagesMenuItem\"\n onClick={() => {\n onLoggedInMenuClose();\n navigate(Route.STAGE);\n }}\n >\n {t('stage.menu')}\n </MenuItem>\n )}\n <MenuItem data-testid=\"logOutDialogIcon\" id=\"logOutDialogIcon\" onClick={onLogout}>\n {t('button.logout')}\n </MenuItem>\n </TypedMenu>\n </>\n );\n};\n\nexport default HeaderMenu;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAcA,IAAM,YAAYA,mBAAAA;AAWlB,IAAM,cAA+B,EACnC,UACA,UACA,aAAa,OACb,UACA,gBACA,0BACI;CACJ,MAAM,EAAE,OAAA,GAAMC,cAAAA,eAAAA,CAAe;CAC7B,MAAM,YAAA,GAAWC,aAAAA,YAAAA,CAAY;CAC7B,MAAM,EAAE,kBAAkBC,iCAAAA,UAAU;CACpC,MAAM,eAAe,eAAe,OAAO;CAC3C,MAAM,wBAAwB,eAAe,OAAO;CACpD,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAC,kBAAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,yBAAAA,SAAD;EACE,OAAM;EACN,eAAY;EACZ,IAAG;EACH,SAAS;EACT,MAAK;EAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,kCAAAA,SAAD,CAAgB,CAAA;CACN,CAAA,GACZ,iBAAA,GAAA,kBAAA,KAAA,CAAC,WAAD;EACY;EACV,cAAc;GACZ,UAAU;GACV,YAAY;EACd;EACA,SAAS;EACT,MAAM;EACN,iBAAiB;GACf,UAAU;GACV,YAAY;EACd;EAXF,UAAA;GAaE,iBAAA,GAAA,kBAAA,IAAA,CAACC,iBAAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,wBAAAA,SAAD,EAA2B,SAAW,CAAA,EAC9B,CAAA;GACT,yBACC,iBAAA,GAAA,kBAAA,IAAA,CAACD,iBAAAA,SAAD;IACE,eAAY;IACZ,IAAG;IACH,eAAe;KACb,oBAAoB;KACpB,SAASE,eAAAA,MAAM,eAAe;IAChC;IAEC,UAAA,EAAE,+BAA+B;GAC1B,CAAA;GAEX,gBACC,iBAAA,GAAA,kBAAA,IAAA,CAACF,iBAAAA,SAAD;IACE,eAAY;IACZ,IAAG;IACH,eAAe;KACb,oBAAoB;KACpB,SAASE,eAAAA,MAAM,KAAK;IACtB;IAEC,UAAA,EAAE,YAAY;GACP,CAAA;GAEZ,iBAAA,GAAA,kBAAA,IAAA,CAACF,iBAAAA,SAAD;IAAU,eAAY;IAAmB,IAAG;IAAmB,SAAS;IACrE,UAAA,EAAE,eAAe;GACV,CAAA;EACD;CACX,CAAA,CAAA,EAAA,CAAA;AAEN"}
@@ -18,6 +18,7 @@ var HeaderMenu = ({ onLogout, username, isMenuOpen = false, anchorEl, onLoggedIn
18
18
  const navigate = useNavigate();
19
19
  const { configOptions } = useConfig();
20
20
  const stageEnabled = configOptions?.flags?.stage;
21
+ const changePasswordEnabled = configOptions?.flags?.changePassword;
21
22
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(IconButton, {
22
23
  color: "inherit",
23
24
  "data-testid": "logInDialogIcon",
@@ -39,6 +40,15 @@ var HeaderMenu = ({ onLogout, username, isMenuOpen = false, anchorEl, onLoggedIn
39
40
  },
40
41
  children: [
41
42
  /* @__PURE__ */ jsx(MenuItem, { children: /* @__PURE__ */ jsx(HeaderGreetings, { username }) }),
43
+ changePasswordEnabled && /* @__PURE__ */ jsx(MenuItem, {
44
+ "data-testid": "changePasswordMenuItem",
45
+ id: "changePasswordMenuItem",
46
+ onClick: () => {
47
+ onLoggedInMenuClose();
48
+ navigate(Route$1.CHANGE_PASSWORD);
49
+ },
50
+ children: t("security.changePassword.title")
51
+ }),
42
52
  stageEnabled && /* @__PURE__ */ jsx(MenuItem, {
43
53
  "data-testid": "stagedPackagesMenuItem",
44
54
  id: "stagedPackagesMenuItem",
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderMenu.mjs","names":[],"sources":["../../../src/sections/Header/HeaderMenu.tsx"],"sourcesContent":["import AccountCircle from '@mui/icons-material/AccountCircle';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport type { MouseEvent } from 'react';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router';\n\nimport { MenuItem } from '../../';\nimport { useConfig } from '../../providers/AppConfigurationProvider/AppConfigurationProvider';\nimport { Route } from '../../utils';\nimport HeaderGreetings from './HeaderGreetings';\n\n// Workaround: MUI v7 MenuProps type resolution breaks inherited PopoverProps.\nconst TypedMenu = Menu as React.FC<any>;\n\ninterface Props {\n username: string;\n isMenuOpen: boolean;\n anchorEl?: Element | null | undefined;\n onLogout: () => void;\n onLoggedInMenu: (event: MouseEvent<HTMLButtonElement>) => void;\n onLoggedInMenuClose: () => void;\n}\n\nconst HeaderMenu: React.FC<Props> = ({\n onLogout,\n username,\n isMenuOpen = false,\n anchorEl,\n onLoggedInMenu,\n onLoggedInMenuClose,\n}) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { configOptions } = useConfig();\n const stageEnabled = configOptions?.flags?.stage;\n return (\n <>\n <IconButton\n color=\"inherit\"\n data-testid=\"logInDialogIcon\"\n id=\"header--button-account\"\n onClick={onLoggedInMenu}\n size=\"large\"\n >\n <AccountCircle />\n </IconButton>\n <TypedMenu\n anchorEl={anchorEl}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n onClose={onLoggedInMenuClose}\n open={isMenuOpen}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <MenuItem>\n <HeaderGreetings username={username} />\n </MenuItem>\n {stageEnabled && (\n <MenuItem\n data-testid=\"stagedPackagesMenuItem\"\n id=\"stagedPackagesMenuItem\"\n onClick={() => {\n onLoggedInMenuClose();\n navigate(Route.STAGE);\n }}\n >\n {t('stage.menu')}\n </MenuItem>\n )}\n <MenuItem data-testid=\"logOutDialogIcon\" id=\"logOutDialogIcon\" onClick={onLogout}>\n {t('button.logout')}\n </MenuItem>\n </TypedMenu>\n </>\n );\n};\n\nexport default HeaderMenu;\n"],"mappings":";;;;;;;;;;;;;;AAcA,IAAM,YAAY;AAWlB,IAAM,cAA+B,EACnC,UACA,UACA,aAAa,OACb,UACA,gBACA,0BACI;CACJ,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,WAAW,YAAY;CAC7B,MAAM,EAAE,kBAAkB,UAAU;CACpC,MAAM,eAAe,eAAe,OAAO;CAC3C,OACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,YAAD;EACE,OAAM;EACN,eAAY;EACZ,IAAG;EACH,SAAS;EACT,MAAK;EAEL,UAAA,oBAAC,eAAD,CAAgB,CAAA;CACN,CAAA,GACZ,qBAAC,WAAD;EACY;EACV,cAAc;GACZ,UAAU;GACV,YAAY;EACd;EACA,SAAS;EACT,MAAM;EACN,iBAAiB;GACf,UAAU;GACV,YAAY;EACd;EAXF,UAAA;GAaE,oBAAC,UAAD,EAAA,UACE,oBAAC,iBAAD,EAA2B,SAAW,CAAA,EAC9B,CAAA;GACT,gBACC,oBAAC,UAAD;IACE,eAAY;IACZ,IAAG;IACH,eAAe;KACb,oBAAoB;KACpB,SAAS,QAAM,KAAK;IACtB;IAEC,UAAA,EAAE,YAAY;GACP,CAAA;GAEZ,oBAAC,UAAD;IAAU,eAAY;IAAmB,IAAG;IAAmB,SAAS;IACrE,UAAA,EAAE,eAAe;GACV,CAAA;EACD;CACX,CAAA,CAAA,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"HeaderMenu.mjs","names":["_Fragment","Route"],"sources":["../../../src/sections/Header/HeaderMenu.tsx"],"sourcesContent":["import AccountCircle from '@mui/icons-material/AccountCircle';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport type { MouseEvent } from 'react';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router';\n\nimport { MenuItem } from '../../';\nimport { useConfig } from '../../providers/AppConfigurationProvider/AppConfigurationProvider';\nimport { Route } from '../../utils';\nimport HeaderGreetings from './HeaderGreetings';\n\n// Workaround: MUI v7 MenuProps type resolution breaks inherited PopoverProps.\nconst TypedMenu = Menu as React.FC<any>;\n\ninterface Props {\n username: string;\n isMenuOpen: boolean;\n anchorEl?: Element | null | undefined;\n onLogout: () => void;\n onLoggedInMenu: (event: MouseEvent<HTMLButtonElement>) => void;\n onLoggedInMenuClose: () => void;\n}\n\nconst HeaderMenu: React.FC<Props> = ({\n onLogout,\n username,\n isMenuOpen = false,\n anchorEl,\n onLoggedInMenu,\n onLoggedInMenuClose,\n}) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { configOptions } = useConfig();\n const stageEnabled = configOptions?.flags?.stage;\n const changePasswordEnabled = configOptions?.flags?.changePassword;\n return (\n <>\n <IconButton\n color=\"inherit\"\n data-testid=\"logInDialogIcon\"\n id=\"header--button-account\"\n onClick={onLoggedInMenu}\n size=\"large\"\n >\n <AccountCircle />\n </IconButton>\n <TypedMenu\n anchorEl={anchorEl}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n onClose={onLoggedInMenuClose}\n open={isMenuOpen}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <MenuItem>\n <HeaderGreetings username={username} />\n </MenuItem>\n {changePasswordEnabled && (\n <MenuItem\n data-testid=\"changePasswordMenuItem\"\n id=\"changePasswordMenuItem\"\n onClick={() => {\n onLoggedInMenuClose();\n navigate(Route.CHANGE_PASSWORD);\n }}\n >\n {t('security.changePassword.title')}\n </MenuItem>\n )}\n {stageEnabled && (\n <MenuItem\n data-testid=\"stagedPackagesMenuItem\"\n id=\"stagedPackagesMenuItem\"\n onClick={() => {\n onLoggedInMenuClose();\n navigate(Route.STAGE);\n }}\n >\n {t('stage.menu')}\n </MenuItem>\n )}\n <MenuItem data-testid=\"logOutDialogIcon\" id=\"logOutDialogIcon\" onClick={onLogout}>\n {t('button.logout')}\n </MenuItem>\n </TypedMenu>\n </>\n );\n};\n\nexport default HeaderMenu;\n"],"mappings":";;;;;;;;;;;;;;AAcA,IAAM,YAAY;AAWlB,IAAM,cAA+B,EACnC,UACA,UACA,aAAa,OACb,UACA,gBACA,0BACI;CACJ,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,WAAW,YAAY;CAC7B,MAAM,EAAE,kBAAkB,UAAU;CACpC,MAAM,eAAe,eAAe,OAAO;CAC3C,MAAM,wBAAwB,eAAe,OAAO;CACpD,OACE,qBAAAA,YAAA,EAAA,UAAA,CACE,oBAAC,YAAD;EACE,OAAM;EACN,eAAY;EACZ,IAAG;EACH,SAAS;EACT,MAAK;EAEL,UAAA,oBAAC,eAAD,CAAgB,CAAA;CACN,CAAA,GACZ,qBAAC,WAAD;EACY;EACV,cAAc;GACZ,UAAU;GACV,YAAY;EACd;EACA,SAAS;EACT,MAAM;EACN,iBAAiB;GACf,UAAU;GACV,YAAY;EACd;EAXF,UAAA;GAaE,oBAAC,UAAD,EAAA,UACE,oBAAC,iBAAD,EAA2B,SAAW,CAAA,EAC9B,CAAA;GACT,yBACC,oBAAC,UAAD;IACE,eAAY;IACZ,IAAG;IACH,eAAe;KACb,oBAAoB;KACpB,SAASC,QAAM,eAAe;IAChC;IAEC,UAAA,EAAE,+BAA+B;GAC1B,CAAA;GAEX,gBACC,oBAAC,UAAD;IACE,eAAY;IACZ,IAAG;IACH,eAAe;KACb,oBAAoB;KACpB,SAASA,QAAM,KAAK;IACtB;IAEC,UAAA,EAAE,YAAY;GACP,CAAA;GAEZ,oBAAC,UAAD;IAAU,eAAY;IAAmB,IAAG;IAAmB,SAAS;IACrE,UAAA,EAAE,eAAe;GACV,CAAA;EACD;CACX,CAAA,CAAA,EAAA,CAAA;AAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderRight.js","names":[],"sources":["../../../src/sections/Header/HeaderRight.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport Toolbar from '@mui/material/Toolbar';\nimport type { MouseEvent } from 'react';\nimport React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { useCustomTheme } from '../../';\nimport HeaderMenu from './HeaderMenu';\nimport HeaderToolTip from './HeaderToolTip';\n\ninterface Props {\n showSearch?: boolean;\n username?: string | null;\n hasLogin?: boolean;\n showInfo?: boolean;\n showSettings?: boolean;\n showThemeSwitch?: boolean;\n onToggleLogin: () => void;\n onOpenRegistryInfoDialog: () => void;\n onOpenSettingsDialog: () => void;\n onToggleMobileNav: () => void;\n onLogout: () => void;\n}\n\nconst HeaderRight: React.FC<Props> = ({\n showSearch,\n username,\n onToggleLogin,\n hasLogin,\n showInfo,\n showSettings,\n showThemeSwitch,\n onLogout,\n onToggleMobileNav,\n onOpenRegistryInfoDialog,\n onOpenSettingsDialog,\n}) => {\n // @ts-ignore\n const { isDarkMode, setIsDarkMode } = useCustomTheme();\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [isMenuOpen, setIsMenuOpen] = useState<boolean>(false);\n const hideLoginSection = hasLogin === false;\n\n const { t } = useTranslation();\n\n useEffect(() => {\n setIsMenuOpen(Boolean(anchorEl));\n }, [anchorEl]);\n\n /**\n * opens popover menu for logged in user.\n */\n const handleLoggedInMenu = (event: MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n /**\n * closes popover menu for logged in user\n */\n const handleLoggedInMenuClose = () => {\n setAnchorEl(null);\n };\n\n /**\n * close/open popover menu for logged in users.\n */\n const handleToggleLogin = () => {\n setAnchorEl(null);\n onToggleLogin();\n };\n\n const handleToggleDarkLightMode = () => {\n setTimeout(() => {\n setIsDarkMode(!isDarkMode);\n }, 300);\n };\n\n return (\n <Toolbar\n data-testid=\"header-right\"\n sx={{\n display: 'flex',\n padding: 0,\n marginRight: 0,\n '@media (min-width: 600px)': {\n padding: 0,\n marginRight: 0,\n },\n }}\n >\n {showSearch === true && (\n <HeaderToolTip\n onClick={onToggleMobileNav}\n title={t('search.packages')}\n tooltipIconType={'search'}\n />\n )}\n\n {showSettings === true && (\n <HeaderToolTip\n onClick={onOpenSettingsDialog}\n title={t('header.settings')}\n tooltipIconType={'settings'}\n />\n )}\n {showInfo === true && (\n <HeaderToolTip\n onClick={onOpenRegistryInfoDialog}\n title={t('header.registry-info')}\n tooltipIconType={'info'}\n />\n )}\n {showThemeSwitch === true && (\n <HeaderToolTip\n onClick={handleToggleDarkLightMode}\n title={t('header.documentation')}\n tooltipIconType={isDarkMode ? 'dark-mode' : 'light-mode'}\n />\n )}\n\n {!hideLoginSection && (\n <>\n {username ? (\n <HeaderMenu\n anchorEl={anchorEl}\n isMenuOpen={isMenuOpen}\n onLoggedInMenu={handleLoggedInMenu}\n onLoggedInMenuClose={handleLoggedInMenuClose}\n onLogout={onLogout}\n username={username}\n />\n ) : (\n <Button color=\"inherit\" data-testid=\"header--button-login\" onClick={handleToggleLogin}>\n {t('button.login')}\n </Button>\n )}\n </>\n )}\n </Toolbar>\n );\n};\n\nexport default HeaderRight;\n"],"mappings":";;;;;;;;;;;;;;AAwBA,IAAM,eAAgC,EACpC,YACA,UACA,eACA,UACA,UACA,cACA,iBACA,UACA,mBACA,0BACA,2BACI;CAEJ,MAAM,EAAE,YAAY,kBAAkB,sBAAA,eAAe;CACrD,MAAM,CAAC,UAAU,gBAAA,GAAe,MAAA,SAAA,CAA6B,IAAI;CACjE,MAAM,CAAC,YAAY,kBAAA,GAAiB,MAAA,SAAA,CAAkB,KAAK;CAC3D,MAAM,mBAAmB,aAAa;CAEtC,MAAM,EAAE,OAAA,GAAM,cAAA,eAAA,CAAe;CAE7B,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,cAAc,QAAQ,QAAQ,CAAC;CACjC,GAAG,CAAC,QAAQ,CAAC;;;;CAKb,MAAM,sBAAsB,UAAyC;EACnE,YAAY,MAAM,aAAa;CACjC;;;;CAKA,MAAM,gCAAgC;EACpC,YAAY,IAAI;CAClB;;;;CAKA,MAAM,0BAA0B;EAC9B,YAAY,IAAI;EAChB,cAAc;CAChB;CAEA,MAAM,kCAAkC;EACtC,iBAAiB;GACf,cAAc,CAAC,UAAU;EAC3B,GAAG,GAAG;CACR;CAEA,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,sBAAA,SAAD;EACE,eAAY;EACZ,IAAI;GACF,SAAS;GACT,SAAS;GACT,aAAa;GACb,6BAA6B;IAC3B,SAAS;IACT,aAAa;GACf;EACF;EAVF,UAAA;GAYG,eAAe,QACd,iBAAA,GAAA,kBAAA,IAAA,CAAC,sBAAA,SAAD;IACE,SAAS;IACT,OAAO,EAAE,iBAAiB;IAC1B,iBAAiB;GAClB,CAAA;GAGF,iBAAiB,QAChB,iBAAA,GAAA,kBAAA,IAAA,CAAC,sBAAA,SAAD;IACE,SAAS;IACT,OAAO,EAAE,iBAAiB;IAC1B,iBAAiB;GAClB,CAAA;GAEF,aAAa,QACZ,iBAAA,GAAA,kBAAA,IAAA,CAAC,sBAAA,SAAD;IACE,SAAS;IACT,OAAO,EAAE,sBAAsB;IAC/B,iBAAiB;GAClB,CAAA;GAEF,oBAAoB,QACnB,iBAAA,GAAA,kBAAA,IAAA,CAAC,sBAAA,SAAD;IACE,SAAS;IACT,OAAO,EAAE,sBAAsB;IAC/B,iBAAiB,aAAa,cAAc;GAC7C,CAAA;GAGF,CAAC,oBACA,iBAAA,GAAA,kBAAA,IAAA,CAAA,kBAAA,UAAA,EAAA,UACG,WACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,mBAAA,SAAD;IACY;IACE;IACZ,gBAAgB;IAChB,qBAAqB;IACX;IACA;GACX,CAAA,IAED,iBAAA,GAAA,kBAAA,IAAA,CAAC,qBAAA,SAAD;IAAQ,OAAM;IAAU,eAAY;IAAuB,SAAS;IACjE,UAAA,EAAE,cAAc;GACX,CAAA,EAEV,CAAA;EAEG;;AAEb"}
1
+ {"version":3,"file":"HeaderRight.js","names":["useCustomTheme","useState","useTranslation","Toolbar","HeaderToolTip","_Fragment","HeaderMenu","Button"],"sources":["../../../src/sections/Header/HeaderRight.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport Toolbar from '@mui/material/Toolbar';\nimport type { MouseEvent } from 'react';\nimport React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { useCustomTheme } from '../../';\nimport HeaderMenu from './HeaderMenu';\nimport HeaderToolTip from './HeaderToolTip';\n\ninterface Props {\n showSearch?: boolean;\n username?: string | null;\n hasLogin?: boolean;\n showInfo?: boolean;\n showSettings?: boolean;\n showThemeSwitch?: boolean;\n onToggleLogin: () => void;\n onOpenRegistryInfoDialog: () => void;\n onOpenSettingsDialog: () => void;\n onToggleMobileNav: () => void;\n onLogout: () => void;\n}\n\nconst HeaderRight: React.FC<Props> = ({\n showSearch,\n username,\n onToggleLogin,\n hasLogin,\n showInfo,\n showSettings,\n showThemeSwitch,\n onLogout,\n onToggleMobileNav,\n onOpenRegistryInfoDialog,\n onOpenSettingsDialog,\n}) => {\n // @ts-ignore\n const { isDarkMode, setIsDarkMode } = useCustomTheme();\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [isMenuOpen, setIsMenuOpen] = useState<boolean>(false);\n const hideLoginSection = hasLogin === false;\n\n const { t } = useTranslation();\n\n useEffect(() => {\n setIsMenuOpen(Boolean(anchorEl));\n }, [anchorEl]);\n\n /**\n * opens popover menu for logged in user.\n */\n const handleLoggedInMenu = (event: MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n /**\n * closes popover menu for logged in user\n */\n const handleLoggedInMenuClose = () => {\n setAnchorEl(null);\n };\n\n /**\n * close/open popover menu for logged in users.\n */\n const handleToggleLogin = () => {\n setAnchorEl(null);\n onToggleLogin();\n };\n\n const handleToggleDarkLightMode = () => {\n setTimeout(() => {\n setIsDarkMode(!isDarkMode);\n }, 300);\n };\n\n return (\n <Toolbar\n data-testid=\"header-right\"\n sx={{\n display: 'flex',\n padding: 0,\n marginRight: 0,\n '@media (min-width: 600px)': {\n padding: 0,\n marginRight: 0,\n },\n }}\n >\n {showSearch === true && (\n <HeaderToolTip\n onClick={onToggleMobileNav}\n title={t('search.packages')}\n tooltipIconType={'search'}\n />\n )}\n\n {showSettings === true && (\n <HeaderToolTip\n onClick={onOpenSettingsDialog}\n title={t('header.settings')}\n tooltipIconType={'settings'}\n />\n )}\n {showInfo === true && (\n <HeaderToolTip\n onClick={onOpenRegistryInfoDialog}\n title={t('header.registry-info')}\n tooltipIconType={'info'}\n />\n )}\n {showThemeSwitch === true && (\n <HeaderToolTip\n onClick={handleToggleDarkLightMode}\n title={t('header.documentation')}\n tooltipIconType={isDarkMode ? 'dark-mode' : 'light-mode'}\n />\n )}\n\n {!hideLoginSection && (\n <>\n {username ? (\n <HeaderMenu\n anchorEl={anchorEl}\n isMenuOpen={isMenuOpen}\n onLoggedInMenu={handleLoggedInMenu}\n onLoggedInMenuClose={handleLoggedInMenuClose}\n onLogout={onLogout}\n username={username}\n />\n ) : (\n <Button color=\"inherit\" data-testid=\"header--button-login\" onClick={handleToggleLogin}>\n {t('button.login')}\n </Button>\n )}\n </>\n )}\n </Toolbar>\n );\n};\n\nexport default HeaderRight;\n"],"mappings":";;;;;;;;;;;;;;AAwBA,IAAM,eAAgC,EACpC,YACA,UACA,eACA,UACA,UACA,cACA,iBACA,UACA,mBACA,0BACA,2BACI;CAEJ,MAAM,EAAE,YAAY,kBAAkBA,sBAAAA,eAAe;CACrD,MAAM,CAAC,UAAU,gBAAA,GAAeC,MAAAA,SAAAA,CAA6B,IAAI;CACjE,MAAM,CAAC,YAAY,kBAAA,GAAiBA,MAAAA,SAAAA,CAAkB,KAAK;CAC3D,MAAM,mBAAmB,aAAa;CAEtC,MAAM,EAAE,OAAA,GAAMC,cAAAA,eAAAA,CAAe;CAE7B,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,cAAc,QAAQ,QAAQ,CAAC;CACjC,GAAG,CAAC,QAAQ,CAAC;;;;CAKb,MAAM,sBAAsB,UAAyC;EACnE,YAAY,MAAM,aAAa;CACjC;;;;CAKA,MAAM,gCAAgC;EACpC,YAAY,IAAI;CAClB;;;;CAKA,MAAM,0BAA0B;EAC9B,YAAY,IAAI;EAChB,cAAc;CAChB;CAEA,MAAM,kCAAkC;EACtC,iBAAiB;GACf,cAAc,CAAC,UAAU;EAC3B,GAAG,GAAG;CACR;CAEA,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,sBAAAA,SAAD;EACE,eAAY;EACZ,IAAI;GACF,SAAS;GACT,SAAS;GACT,aAAa;GACb,6BAA6B;IAC3B,SAAS;IACT,aAAa;GACf;EACF;EAVF,UAAA;GAYG,eAAe,QACd,iBAAA,GAAA,kBAAA,IAAA,CAACC,sBAAAA,SAAD;IACE,SAAS;IACT,OAAO,EAAE,iBAAiB;IAC1B,iBAAiB;GAClB,CAAA;GAGF,iBAAiB,QAChB,iBAAA,GAAA,kBAAA,IAAA,CAACA,sBAAAA,SAAD;IACE,SAAS;IACT,OAAO,EAAE,iBAAiB;IAC1B,iBAAiB;GAClB,CAAA;GAEF,aAAa,QACZ,iBAAA,GAAA,kBAAA,IAAA,CAACA,sBAAAA,SAAD;IACE,SAAS;IACT,OAAO,EAAE,sBAAsB;IAC/B,iBAAiB;GAClB,CAAA;GAEF,oBAAoB,QACnB,iBAAA,GAAA,kBAAA,IAAA,CAACA,sBAAAA,SAAD;IACE,SAAS;IACT,OAAO,EAAE,sBAAsB;IAC/B,iBAAiB,aAAa,cAAc;GAC7C,CAAA;GAGF,CAAC,oBACA,iBAAA,GAAA,kBAAA,IAAA,CAAAC,kBAAAA,UAAA,EAAA,UACG,WACC,iBAAA,GAAA,kBAAA,IAAA,CAACC,mBAAAA,SAAD;IACY;IACE;IACZ,gBAAgB;IAChB,qBAAqB;IACX;IACA;GACX,CAAA,IAED,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,SAAD;IAAQ,OAAM;IAAU,eAAY;IAAuB,SAAS;IACjE,UAAA,EAAE,cAAc;GACX,CAAA,EAEV,CAAA;EAEG;;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderRight.mjs","names":[],"sources":["../../../src/sections/Header/HeaderRight.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport Toolbar from '@mui/material/Toolbar';\nimport type { MouseEvent } from 'react';\nimport React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { useCustomTheme } from '../../';\nimport HeaderMenu from './HeaderMenu';\nimport HeaderToolTip from './HeaderToolTip';\n\ninterface Props {\n showSearch?: boolean;\n username?: string | null;\n hasLogin?: boolean;\n showInfo?: boolean;\n showSettings?: boolean;\n showThemeSwitch?: boolean;\n onToggleLogin: () => void;\n onOpenRegistryInfoDialog: () => void;\n onOpenSettingsDialog: () => void;\n onToggleMobileNav: () => void;\n onLogout: () => void;\n}\n\nconst HeaderRight: React.FC<Props> = ({\n showSearch,\n username,\n onToggleLogin,\n hasLogin,\n showInfo,\n showSettings,\n showThemeSwitch,\n onLogout,\n onToggleMobileNav,\n onOpenRegistryInfoDialog,\n onOpenSettingsDialog,\n}) => {\n // @ts-ignore\n const { isDarkMode, setIsDarkMode } = useCustomTheme();\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [isMenuOpen, setIsMenuOpen] = useState<boolean>(false);\n const hideLoginSection = hasLogin === false;\n\n const { t } = useTranslation();\n\n useEffect(() => {\n setIsMenuOpen(Boolean(anchorEl));\n }, [anchorEl]);\n\n /**\n * opens popover menu for logged in user.\n */\n const handleLoggedInMenu = (event: MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n /**\n * closes popover menu for logged in user\n */\n const handleLoggedInMenuClose = () => {\n setAnchorEl(null);\n };\n\n /**\n * close/open popover menu for logged in users.\n */\n const handleToggleLogin = () => {\n setAnchorEl(null);\n onToggleLogin();\n };\n\n const handleToggleDarkLightMode = () => {\n setTimeout(() => {\n setIsDarkMode(!isDarkMode);\n }, 300);\n };\n\n return (\n <Toolbar\n data-testid=\"header-right\"\n sx={{\n display: 'flex',\n padding: 0,\n marginRight: 0,\n '@media (min-width: 600px)': {\n padding: 0,\n marginRight: 0,\n },\n }}\n >\n {showSearch === true && (\n <HeaderToolTip\n onClick={onToggleMobileNav}\n title={t('search.packages')}\n tooltipIconType={'search'}\n />\n )}\n\n {showSettings === true && (\n <HeaderToolTip\n onClick={onOpenSettingsDialog}\n title={t('header.settings')}\n tooltipIconType={'settings'}\n />\n )}\n {showInfo === true && (\n <HeaderToolTip\n onClick={onOpenRegistryInfoDialog}\n title={t('header.registry-info')}\n tooltipIconType={'info'}\n />\n )}\n {showThemeSwitch === true && (\n <HeaderToolTip\n onClick={handleToggleDarkLightMode}\n title={t('header.documentation')}\n tooltipIconType={isDarkMode ? 'dark-mode' : 'light-mode'}\n />\n )}\n\n {!hideLoginSection && (\n <>\n {username ? (\n <HeaderMenu\n anchorEl={anchorEl}\n isMenuOpen={isMenuOpen}\n onLoggedInMenu={handleLoggedInMenu}\n onLoggedInMenuClose={handleLoggedInMenuClose}\n onLogout={onLogout}\n username={username}\n />\n ) : (\n <Button color=\"inherit\" data-testid=\"header--button-login\" onClick={handleToggleLogin}>\n {t('button.login')}\n </Button>\n )}\n </>\n )}\n </Toolbar>\n );\n};\n\nexport default HeaderRight;\n"],"mappings":";;;;;;;;;;AAwBA,IAAM,eAAgC,EACpC,YACA,UACA,eACA,UACA,UACA,cACA,iBACA,UACA,mBACA,0BACA,2BACI;CAEJ,MAAM,EAAE,YAAY,kBAAkB,eAAe;CACrD,MAAM,CAAC,UAAU,eAAe,SAA6B,IAAI;CACjE,MAAM,CAAC,YAAY,iBAAiB,SAAkB,KAAK;CAC3D,MAAM,mBAAmB,aAAa;CAEtC,MAAM,EAAE,MAAM,eAAe;CAE7B,gBAAgB;EACd,cAAc,QAAQ,QAAQ,CAAC;CACjC,GAAG,CAAC,QAAQ,CAAC;;;;CAKb,MAAM,sBAAsB,UAAyC;EACnE,YAAY,MAAM,aAAa;CACjC;;;;CAKA,MAAM,gCAAgC;EACpC,YAAY,IAAI;CAClB;;;;CAKA,MAAM,0BAA0B;EAC9B,YAAY,IAAI;EAChB,cAAc;CAChB;CAEA,MAAM,kCAAkC;EACtC,iBAAiB;GACf,cAAc,CAAC,UAAU;EAC3B,GAAG,GAAG;CACR;CAEA,OACE,qBAAC,SAAD;EACE,eAAY;EACZ,IAAI;GACF,SAAS;GACT,SAAS;GACT,aAAa;GACb,6BAA6B;IAC3B,SAAS;IACT,aAAa;GACf;EACF;EAVF,UAAA;GAYG,eAAe,QACd,oBAAC,eAAD;IACE,SAAS;IACT,OAAO,EAAE,iBAAiB;IAC1B,iBAAiB;GAClB,CAAA;GAGF,iBAAiB,QAChB,oBAAC,eAAD;IACE,SAAS;IACT,OAAO,EAAE,iBAAiB;IAC1B,iBAAiB;GAClB,CAAA;GAEF,aAAa,QACZ,oBAAC,eAAD;IACE,SAAS;IACT,OAAO,EAAE,sBAAsB;IAC/B,iBAAiB;GAClB,CAAA;GAEF,oBAAoB,QACnB,oBAAC,eAAD;IACE,SAAS;IACT,OAAO,EAAE,sBAAsB;IAC/B,iBAAiB,aAAa,cAAc;GAC7C,CAAA;GAGF,CAAC,oBACA,oBAAA,YAAA,EAAA,UACG,WACC,oBAAC,YAAD;IACY;IACE;IACZ,gBAAgB;IAChB,qBAAqB;IACX;IACA;GACX,CAAA,IAED,oBAAC,QAAD;IAAQ,OAAM;IAAU,eAAY;IAAuB,SAAS;IACjE,UAAA,EAAE,cAAc;GACX,CAAA,EAEV,CAAA;EAEG;;AAEb"}
1
+ {"version":3,"file":"HeaderRight.mjs","names":["_Fragment"],"sources":["../../../src/sections/Header/HeaderRight.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport Toolbar from '@mui/material/Toolbar';\nimport type { MouseEvent } from 'react';\nimport React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { useCustomTheme } from '../../';\nimport HeaderMenu from './HeaderMenu';\nimport HeaderToolTip from './HeaderToolTip';\n\ninterface Props {\n showSearch?: boolean;\n username?: string | null;\n hasLogin?: boolean;\n showInfo?: boolean;\n showSettings?: boolean;\n showThemeSwitch?: boolean;\n onToggleLogin: () => void;\n onOpenRegistryInfoDialog: () => void;\n onOpenSettingsDialog: () => void;\n onToggleMobileNav: () => void;\n onLogout: () => void;\n}\n\nconst HeaderRight: React.FC<Props> = ({\n showSearch,\n username,\n onToggleLogin,\n hasLogin,\n showInfo,\n showSettings,\n showThemeSwitch,\n onLogout,\n onToggleMobileNav,\n onOpenRegistryInfoDialog,\n onOpenSettingsDialog,\n}) => {\n // @ts-ignore\n const { isDarkMode, setIsDarkMode } = useCustomTheme();\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [isMenuOpen, setIsMenuOpen] = useState<boolean>(false);\n const hideLoginSection = hasLogin === false;\n\n const { t } = useTranslation();\n\n useEffect(() => {\n setIsMenuOpen(Boolean(anchorEl));\n }, [anchorEl]);\n\n /**\n * opens popover menu for logged in user.\n */\n const handleLoggedInMenu = (event: MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n /**\n * closes popover menu for logged in user\n */\n const handleLoggedInMenuClose = () => {\n setAnchorEl(null);\n };\n\n /**\n * close/open popover menu for logged in users.\n */\n const handleToggleLogin = () => {\n setAnchorEl(null);\n onToggleLogin();\n };\n\n const handleToggleDarkLightMode = () => {\n setTimeout(() => {\n setIsDarkMode(!isDarkMode);\n }, 300);\n };\n\n return (\n <Toolbar\n data-testid=\"header-right\"\n sx={{\n display: 'flex',\n padding: 0,\n marginRight: 0,\n '@media (min-width: 600px)': {\n padding: 0,\n marginRight: 0,\n },\n }}\n >\n {showSearch === true && (\n <HeaderToolTip\n onClick={onToggleMobileNav}\n title={t('search.packages')}\n tooltipIconType={'search'}\n />\n )}\n\n {showSettings === true && (\n <HeaderToolTip\n onClick={onOpenSettingsDialog}\n title={t('header.settings')}\n tooltipIconType={'settings'}\n />\n )}\n {showInfo === true && (\n <HeaderToolTip\n onClick={onOpenRegistryInfoDialog}\n title={t('header.registry-info')}\n tooltipIconType={'info'}\n />\n )}\n {showThemeSwitch === true && (\n <HeaderToolTip\n onClick={handleToggleDarkLightMode}\n title={t('header.documentation')}\n tooltipIconType={isDarkMode ? 'dark-mode' : 'light-mode'}\n />\n )}\n\n {!hideLoginSection && (\n <>\n {username ? (\n <HeaderMenu\n anchorEl={anchorEl}\n isMenuOpen={isMenuOpen}\n onLoggedInMenu={handleLoggedInMenu}\n onLoggedInMenuClose={handleLoggedInMenuClose}\n onLogout={onLogout}\n username={username}\n />\n ) : (\n <Button color=\"inherit\" data-testid=\"header--button-login\" onClick={handleToggleLogin}>\n {t('button.login')}\n </Button>\n )}\n </>\n )}\n </Toolbar>\n );\n};\n\nexport default HeaderRight;\n"],"mappings":";;;;;;;;;;AAwBA,IAAM,eAAgC,EACpC,YACA,UACA,eACA,UACA,UACA,cACA,iBACA,UACA,mBACA,0BACA,2BACI;CAEJ,MAAM,EAAE,YAAY,kBAAkB,eAAe;CACrD,MAAM,CAAC,UAAU,eAAe,SAA6B,IAAI;CACjE,MAAM,CAAC,YAAY,iBAAiB,SAAkB,KAAK;CAC3D,MAAM,mBAAmB,aAAa;CAEtC,MAAM,EAAE,MAAM,eAAe;CAE7B,gBAAgB;EACd,cAAc,QAAQ,QAAQ,CAAC;CACjC,GAAG,CAAC,QAAQ,CAAC;;;;CAKb,MAAM,sBAAsB,UAAyC;EACnE,YAAY,MAAM,aAAa;CACjC;;;;CAKA,MAAM,gCAAgC;EACpC,YAAY,IAAI;CAClB;;;;CAKA,MAAM,0BAA0B;EAC9B,YAAY,IAAI;EAChB,cAAc;CAChB;CAEA,MAAM,kCAAkC;EACtC,iBAAiB;GACf,cAAc,CAAC,UAAU;EAC3B,GAAG,GAAG;CACR;CAEA,OACE,qBAAC,SAAD;EACE,eAAY;EACZ,IAAI;GACF,SAAS;GACT,SAAS;GACT,aAAa;GACb,6BAA6B;IAC3B,SAAS;IACT,aAAa;GACf;EACF;EAVF,UAAA;GAYG,eAAe,QACd,oBAAC,eAAD;IACE,SAAS;IACT,OAAO,EAAE,iBAAiB;IAC1B,iBAAiB;GAClB,CAAA;GAGF,iBAAiB,QAChB,oBAAC,eAAD;IACE,SAAS;IACT,OAAO,EAAE,iBAAiB;IAC1B,iBAAiB;GAClB,CAAA;GAEF,aAAa,QACZ,oBAAC,eAAD;IACE,SAAS;IACT,OAAO,EAAE,sBAAsB;IAC/B,iBAAiB;GAClB,CAAA;GAEF,oBAAoB,QACnB,oBAAC,eAAD;IACE,SAAS;IACT,OAAO,EAAE,sBAAsB;IAC/B,iBAAiB,aAAa,cAAc;GAC7C,CAAA;GAGF,CAAC,oBACA,oBAAAA,YAAA,EAAA,UACG,WACC,oBAAC,YAAD;IACY;IACE;IACZ,gBAAgB;IAChB,qBAAqB;IACX;IACA;GACX,CAAA,IAED,oBAAC,QAAD;IAAQ,OAAM;IAAU,eAAY;IAAuB,SAAS;IACjE,UAAA,EAAE,cAAc;GACX,CAAA,EAEV,CAAA;EAEG;;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderSettingsDialog.js","names":[],"sources":["../../../src/sections/Header/HeaderSettingsDialog.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Box from '@mui/material/Box';\nimport Tab from '@mui/material/Tab';\nimport Tabs from '@mui/material/Tabs';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ReactMarkdown from 'react-markdown';\n\nimport type { Theme } from '../../';\nimport RegistryInfoDialog from '../../components/RegistryInfoDialog';\nimport { getConfiguration } from '../../configuration';\nimport LanguageSwitch from './LanguageSwitch';\nimport RegistryInfoContent from './RegistryInfoContent';\n\ninterface Props {\n isOpen: boolean;\n onCloseDialog: () => void;\n}\n\nfunction a11yProps(index) {\n return {\n id: `simple-tab-${index}`,\n 'aria-controls': `simple-tabpanel-${index}`,\n };\n}\n\nfunction TabPanel(props) {\n const { children, value, index, ...other } = props;\n\n return (\n <div\n aria-labelledby={`simple-tab-${index}`}\n hidden={value !== index}\n id={`simple-tabpanel-${index}`}\n role=\"tabpanel\"\n {...other}\n >\n {value === index && <Box sx={{ paddingTop: 3 }}>{children}</Box>}\n </div>\n );\n}\n\nconst TextContent = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n padding: '10px 0',\n backgroundColor: theme.palette.background.default,\n}));\n\nconst HeaderSettingsDialog: React.FC<Props> = ({ onCloseDialog, isOpen }) => {\n const [value, setValue] = React.useState(0);\n\n const handleChange = (_event, newValue) => {\n setValue(newValue);\n };\n const configStore = getConfiguration();\n const { scope, base } = configStore;\n const { t } = useTranslation();\n return (\n <RegistryInfoDialog onClose={onCloseDialog} open={isOpen} title={t('dialog.settings.title')}>\n <Box sx={{ width: '100%' }}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <Tabs aria-label=\"basic tabs example\" onChange={handleChange} value={value}>\n <Tab label={t('packageManagers.title')} {...a11yProps(0)} />\n <Tab label={t('language.title')} {...a11yProps(1)} />\n </Tabs>\n </Box>\n <TabPanel index={0} value={value}>\n <RegistryInfoContent registryUrl={base} scope={scope} />\n </TabPanel>\n <TabPanel index={1} value={value}>\n <TextContent>{t('language.description')}</TextContent>\n <LanguageSwitch />\n <ReactMarkdown>{t('language.contribute')}</ReactMarkdown>\n </TabPanel>\n </Box>\n </RegistryInfoDialog>\n );\n};\n\nexport default HeaderSettingsDialog;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAmBA,SAAS,UAAU,OAAO;CACxB,OAAO;EACL,IAAI,cAAc;EAClB,iBAAiB,mBAAmB;CACtC;AACF;AAEA,SAAS,SAAS,OAAO;CACvB,MAAM,EAAE,UAAU,OAAO,OAAO,GAAG,UAAU;CAE7C,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,mBAAiB,cAAc;EAC/B,QAAQ,UAAU;EAClB,IAAI,mBAAmB;EACvB,MAAK;EACL,GAAI;EAEH,UAAA,UAAU,SAAS,iBAAA,GAAA,kBAAA,IAAA,CAAC,kBAAA,SAAD;GAAK,IAAI,EAAE,YAAY,EAAE;GAAI;EAAc,CAAA;CAC5D,CAAA;AAET;AAEA,IAAM,eAAA,GAAc,gBAAA,QAAA,CAAO,KAAK,CAAC,EAAqB,EAAE,aAAa;CACnE,SAAS;CACT,iBAAiB,MAAM,QAAQ,WAAW;AAC5C,EAAE;AAEF,IAAM,wBAAyC,EAAE,eAAe,aAAa;CAC3E,MAAM,CAAC,OAAO,YAAY,MAAA,QAAM,SAAS,CAAC;CAE1C,MAAM,gBAAgB,QAAQ,aAAa;EACzC,SAAS,QAAQ;CACnB;CAEA,MAAM,EAAE,OAAO,SADK,sBAAA,iBACI;CACxB,MAAM,EAAE,OAAA,GAAM,cAAA,eAAA,CAAe;CAC7B,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,2BAAA,SAAD;EAAoB,SAAS;EAAe,MAAM;EAAQ,OAAO,EAAE,uBAAuB;EACxF,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,kBAAA,SAAD;GAAK,IAAI,EAAE,OAAO,OAAO;GAAzB,UAAA;IACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,kBAAA,SAAD;KAAK,IAAI;MAAE,cAAc;MAAG,aAAa;KAAU;KACjD,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,mBAAA,SAAD;MAAM,cAAW;MAAqB,UAAU;MAAqB;MAArE,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,kBAAA,SAAD;OAAK,OAAO,EAAE,uBAAuB;OAAG,GAAI,UAAU,CAAC;MAAI,CAAA,GAC3D,iBAAA,GAAA,kBAAA,IAAA,CAAC,kBAAA,SAAD;OAAK,OAAO,EAAE,gBAAgB;OAAG,GAAI,UAAU,CAAC;MAAI,CAAA,CAChD;;IACH,CAAA;IACL,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;KAAU,OAAO;KAAU;KACzB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,4BAAA,SAAD;MAAqB,aAAa;MAAa;KAAQ,CAAA;IAC/C,CAAA;IACV,iBAAA,GAAA,kBAAA,KAAA,CAAC,UAAD;KAAU,OAAO;KAAU;KAA3B,UAAA;MACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,aAAD,EAAA,UAAc,EAAE,sBAAsB,EAAe,CAAA;MACrD,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAA,SAAD,CAAiB,CAAA;MACjB,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAA,SAAD,EAAA,UAAgB,EAAE,qBAAqB,EAAiB,CAAA;KAChD;;GACP;;CACa,CAAA;AAExB"}
1
+ {"version":3,"file":"HeaderSettingsDialog.js","names":["Box","styled","React","getConfiguration","useTranslation","RegistryInfoDialog","Tabs","Tab","RegistryInfoContent","LanguageSwitch","ReactMarkdown"],"sources":["../../../src/sections/Header/HeaderSettingsDialog.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Box from '@mui/material/Box';\nimport Tab from '@mui/material/Tab';\nimport Tabs from '@mui/material/Tabs';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ReactMarkdown from 'react-markdown';\n\nimport type { Theme } from '../../';\nimport RegistryInfoDialog from '../../components/RegistryInfoDialog';\nimport { getConfiguration } from '../../configuration';\nimport LanguageSwitch from './LanguageSwitch';\nimport RegistryInfoContent from './RegistryInfoContent';\n\ninterface Props {\n isOpen: boolean;\n onCloseDialog: () => void;\n}\n\nfunction a11yProps(index) {\n return {\n id: `simple-tab-${index}`,\n 'aria-controls': `simple-tabpanel-${index}`,\n };\n}\n\nfunction TabPanel(props) {\n const { children, value, index, ...other } = props;\n\n return (\n <div\n aria-labelledby={`simple-tab-${index}`}\n hidden={value !== index}\n id={`simple-tabpanel-${index}`}\n role=\"tabpanel\"\n {...other}\n >\n {value === index && <Box sx={{ paddingTop: 3 }}>{children}</Box>}\n </div>\n );\n}\n\nconst TextContent = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n padding: '10px 0',\n backgroundColor: theme.palette.background.default,\n}));\n\nconst HeaderSettingsDialog: React.FC<Props> = ({ onCloseDialog, isOpen }) => {\n const [value, setValue] = React.useState(0);\n\n const handleChange = (_event, newValue) => {\n setValue(newValue);\n };\n const configStore = getConfiguration();\n const { scope, base } = configStore;\n const { t } = useTranslation();\n return (\n <RegistryInfoDialog onClose={onCloseDialog} open={isOpen} title={t('dialog.settings.title')}>\n <Box sx={{ width: '100%' }}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <Tabs aria-label=\"basic tabs example\" onChange={handleChange} value={value}>\n <Tab label={t('packageManagers.title')} {...a11yProps(0)} />\n <Tab label={t('language.title')} {...a11yProps(1)} />\n </Tabs>\n </Box>\n <TabPanel index={0} value={value}>\n <RegistryInfoContent registryUrl={base} scope={scope} />\n </TabPanel>\n <TabPanel index={1} value={value}>\n <TextContent>{t('language.description')}</TextContent>\n <LanguageSwitch />\n <ReactMarkdown>{t('language.contribute')}</ReactMarkdown>\n </TabPanel>\n </Box>\n </RegistryInfoDialog>\n );\n};\n\nexport default HeaderSettingsDialog;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAmBA,SAAS,UAAU,OAAO;CACxB,OAAO;EACL,IAAI,cAAc;EAClB,iBAAiB,mBAAmB;CACtC;AACF;AAEA,SAAS,SAAS,OAAO;CACvB,MAAM,EAAE,UAAU,OAAO,OAAO,GAAG,UAAU;CAE7C,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,mBAAiB,cAAc;EAC/B,QAAQ,UAAU;EAClB,IAAI,mBAAmB;EACvB,MAAK;EACL,GAAI;EAEH,UAAA,UAAU,SAAS,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,SAAD;GAAK,IAAI,EAAE,YAAY,EAAE;GAAI;EAAc,CAAA;CAC5D,CAAA;AAET;AAEA,IAAM,eAAA,GAAcC,gBAAAA,QAAAA,CAAO,KAAK,CAAC,EAAqB,EAAE,aAAa;CACnE,SAAS;CACT,iBAAiB,MAAM,QAAQ,WAAW;AAC5C,EAAE;AAEF,IAAM,wBAAyC,EAAE,eAAe,aAAa;CAC3E,MAAM,CAAC,OAAO,YAAYC,MAAAA,QAAM,SAAS,CAAC;CAE1C,MAAM,gBAAgB,QAAQ,aAAa;EACzC,SAAS,QAAQ;CACnB;CAEA,MAAM,EAAE,OAAO,SADKC,sBAAAA,iBACI;CACxB,MAAM,EAAE,OAAA,GAAMC,cAAAA,eAAAA,CAAe;CAC7B,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,2BAAAA,SAAD;EAAoB,SAAS;EAAe,MAAM;EAAQ,OAAO,EAAE,uBAAuB;EACxF,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACL,kBAAAA,SAAD;GAAK,IAAI,EAAE,OAAO,OAAO;GAAzB,UAAA;IACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,SAAD;KAAK,IAAI;MAAE,cAAc;MAAG,aAAa;KAAU;KACjD,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACM,mBAAAA,SAAD;MAAM,cAAW;MAAqB,UAAU;MAAqB;MAArE,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,kBAAAA,SAAD;OAAK,OAAO,EAAE,uBAAuB;OAAG,GAAI,UAAU,CAAC;MAAI,CAAA,GAC3D,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,SAAD;OAAK,OAAO,EAAE,gBAAgB;OAAG,GAAI,UAAU,CAAC;MAAI,CAAA,CAChD;;IACH,CAAA;IACL,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;KAAU,OAAO;KAAU;KACzB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,4BAAAA,SAAD;MAAqB,aAAa;MAAa;KAAQ,CAAA;IAC/C,CAAA;IACV,iBAAA,GAAA,kBAAA,KAAA,CAAC,UAAD;KAAU,OAAO;KAAU;KAA3B,UAAA;MACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,aAAD,EAAA,UAAc,EAAE,sBAAsB,EAAe,CAAA;MACrD,iBAAA,GAAA,kBAAA,IAAA,CAACC,uBAAAA,SAAD,CAAiB,CAAA;MACjB,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,SAAD,EAAA,UAAgB,EAAE,qBAAqB,EAAiB,CAAA;KAChD;;GACP;;CACa,CAAA;AAExB"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderToolTip.js","names":[],"sources":["../../../src/sections/Header/HeaderToolTip.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { TooltipIconType } from './HeaderToolTipIcon';\nimport HeaderToolTipIcon from './HeaderToolTipIcon';\n\ninterface Props {\n title: string;\n tooltipIconType: TooltipIconType;\n onClick?: () => void;\n}\n\nconst HeaderToolTip: React.FC<Props> = ({ tooltipIconType, onClick }) => (\n <HeaderToolTipIcon onClick={onClick} tooltipIconType={tooltipIconType} />\n);\n\nexport default HeaderToolTip;\n"],"mappings":";;;;;;AAWA,IAAM,iBAAkC,EAAE,iBAAiB,cACzD,iBAAA,GAAA,kBAAA,IAAA,CAAC,0BAAA,SAAD;CAA4B;CAA0B;AAAkB,CAAA"}
1
+ {"version":3,"file":"HeaderToolTip.js","names":["HeaderToolTipIcon"],"sources":["../../../src/sections/Header/HeaderToolTip.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { TooltipIconType } from './HeaderToolTipIcon';\nimport HeaderToolTipIcon from './HeaderToolTipIcon';\n\ninterface Props {\n title: string;\n tooltipIconType: TooltipIconType;\n onClick?: () => void;\n}\n\nconst HeaderToolTip: React.FC<Props> = ({ tooltipIconType, onClick }) => (\n <HeaderToolTipIcon onClick={onClick} tooltipIconType={tooltipIconType} />\n);\n\nexport default HeaderToolTip;\n"],"mappings":";;;;;;AAWA,IAAM,iBAAkC,EAAE,iBAAiB,cACzD,iBAAA,GAAA,kBAAA,IAAA,CAACA,0BAAAA,SAAD;CAA4B;CAA0B;AAAkB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderToolTipIcon.js","names":[],"sources":["../../../src/sections/Header/HeaderToolTipIcon.tsx"],"sourcesContent":["import Info from '@mui/icons-material/Info';\nimport NightsStay from '@mui/icons-material/NightsStay';\nimport Search from '@mui/icons-material/Search';\nimport Settings from '@mui/icons-material/Settings';\nimport WbSunny from '@mui/icons-material/WbSunny';\nimport React from 'react';\n\nimport { IconSearchButton, InfoButton, SettingsButtom, SwitchThemeButton } from './styles';\n\nexport type TooltipIconType = 'search' | 'info' | 'dark-mode' | 'light-mode' | 'settings';\ninterface Props {\n tooltipIconType: TooltipIconType;\n onClick?: () => void;\n}\n\ntype HeaderToolTipIconRef = HTMLButtonElement;\n\nconst HeaderToolTipIcon = function HeaderToolTipIcon({\n ref,\n tooltipIconType,\n onClick,\n}: Props & { ref?: React.RefObject<HeaderToolTipIconRef | null> }) {\n switch (tooltipIconType) {\n case 'info':\n return (\n <InfoButton\n color=\"inherit\"\n data-testid={'header--tooltip-info'}\n id=\"header--button-registryInfo\"\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <Info />\n </InfoButton>\n );\n case 'settings':\n return (\n <SettingsButtom\n color=\"inherit\"\n data-testid={'header--tooltip-settings'}\n id=\"header--button-settings\"\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <Settings />\n </SettingsButtom>\n );\n case 'search':\n return (\n <IconSearchButton\n data-testid=\"header--tooltip-search\"\n color=\"inherit\"\n onClick={onClick}\n ref={ref}\n >\n <Search />\n </IconSearchButton>\n );\n case 'dark-mode':\n return (\n <SwitchThemeButton\n color=\"inherit\"\n data-testid={'header--button--dark'}\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <NightsStay />\n </SwitchThemeButton>\n );\n\n case 'light-mode':\n return (\n <SwitchThemeButton\n color=\"inherit\"\n data-testid={'header--button--light'}\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <WbSunny />\n </SwitchThemeButton>\n );\n default:\n return null;\n }\n};\n\nexport default HeaderToolTipIcon;\n"],"mappings":";;;;;;;;;;;;;;;;AAiBA,IAAM,oBAAoB,SAAS,kBAAkB,EACnD,KACA,iBACA,WACiE;CACjE,QAAQ,iBAAR;EACE,KAAK,QACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAA,YAAD;GACE,OAAM;GACN,eAAa;GACb,IAAG;GACM;GACJ;GACL,MAAK;GAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,yBAAA,SAAD,CAAO,CAAA;EACG,CAAA;EAEhB,KAAK,YACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAA,gBAAD;GACE,OAAM;GACN,eAAa;GACb,IAAG;GACM;GACJ;GACL,MAAK;GAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,6BAAA,SAAD,CAAW,CAAA;EACG,CAAA;EAEpB,KAAK,UACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAA,kBAAD;GACE,eAAY;GACZ,OAAM;GACG;GACJ;GAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,2BAAA,SAAD,CAAS,CAAA;EACO,CAAA;EAEtB,KAAK,aACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAA,mBAAD;GACE,OAAM;GACN,eAAa;GACJ;GACJ;GACL,MAAK;GAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,+BAAA,SAAD,CAAa,CAAA;EACI,CAAA;EAGvB,KAAK,cACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAA,mBAAD;GACE,OAAM;GACN,eAAa;GACJ;GACJ;GACL,MAAK;GAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,4BAAA,SAAD,CAAU,CAAA;EACO,CAAA;EAEvB,SACE,OAAO;CACX;AACF"}
1
+ {"version":3,"file":"HeaderToolTipIcon.js","names":["InfoButton","Info","SettingsButtom","Settings","IconSearchButton","Search","SwitchThemeButton","NightsStay","WbSunny"],"sources":["../../../src/sections/Header/HeaderToolTipIcon.tsx"],"sourcesContent":["import Info from '@mui/icons-material/Info';\nimport NightsStay from '@mui/icons-material/NightsStay';\nimport Search from '@mui/icons-material/Search';\nimport Settings from '@mui/icons-material/Settings';\nimport WbSunny from '@mui/icons-material/WbSunny';\nimport React from 'react';\n\nimport { IconSearchButton, InfoButton, SettingsButtom, SwitchThemeButton } from './styles';\n\nexport type TooltipIconType = 'search' | 'info' | 'dark-mode' | 'light-mode' | 'settings';\ninterface Props {\n tooltipIconType: TooltipIconType;\n onClick?: () => void;\n}\n\ntype HeaderToolTipIconRef = HTMLButtonElement;\n\nconst HeaderToolTipIcon = function HeaderToolTipIcon({\n ref,\n tooltipIconType,\n onClick,\n}: Props & { ref?: React.RefObject<HeaderToolTipIconRef | null> }) {\n switch (tooltipIconType) {\n case 'info':\n return (\n <InfoButton\n color=\"inherit\"\n data-testid={'header--tooltip-info'}\n id=\"header--button-registryInfo\"\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <Info />\n </InfoButton>\n );\n case 'settings':\n return (\n <SettingsButtom\n color=\"inherit\"\n data-testid={'header--tooltip-settings'}\n id=\"header--button-settings\"\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <Settings />\n </SettingsButtom>\n );\n case 'search':\n return (\n <IconSearchButton\n data-testid=\"header--tooltip-search\"\n color=\"inherit\"\n onClick={onClick}\n ref={ref}\n >\n <Search />\n </IconSearchButton>\n );\n case 'dark-mode':\n return (\n <SwitchThemeButton\n color=\"inherit\"\n data-testid={'header--button--dark'}\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <NightsStay />\n </SwitchThemeButton>\n );\n\n case 'light-mode':\n return (\n <SwitchThemeButton\n color=\"inherit\"\n data-testid={'header--button--light'}\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <WbSunny />\n </SwitchThemeButton>\n );\n default:\n return null;\n }\n};\n\nexport default HeaderToolTipIcon;\n"],"mappings":";;;;;;;;;;;;;;;;AAiBA,IAAM,oBAAoB,SAAS,kBAAkB,EACnD,KACA,iBACA,WACiE;CACjE,QAAQ,iBAAR;EACE,KAAK,QACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,eAAAA,YAAD;GACE,OAAM;GACN,eAAa;GACb,IAAG;GACM;GACJ;GACL,MAAK;GAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,yBAAAA,SAAD,CAAO,CAAA;EACG,CAAA;EAEhB,KAAK,YACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,gBAAD;GACE,OAAM;GACN,eAAa;GACb,IAAG;GACM;GACJ;GACL,MAAK;GAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,SAAD,CAAW,CAAA;EACG,CAAA;EAEpB,KAAK,UACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,kBAAD;GACE,eAAY;GACZ,OAAM;GACG;GACJ;GAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,2BAAAA,SAAD,CAAS,CAAA;EACO,CAAA;EAEtB,KAAK,aACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,mBAAD;GACE,OAAM;GACN,eAAa;GACJ;GACJ;GACL,MAAK;GAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,+BAAAA,SAAD,CAAa,CAAA;EACI,CAAA;EAGvB,KAAK,cACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACD,eAAAA,mBAAD;GACE,OAAM;GACN,eAAa;GACJ;GACJ;GACL,MAAK;GAEL,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACE,4BAAAA,SAAD,CAAU,CAAA;EACO,CAAA;EAEvB,SACE,OAAO;CACX;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderToolTipIcon.mjs","names":[],"sources":["../../../src/sections/Header/HeaderToolTipIcon.tsx"],"sourcesContent":["import Info from '@mui/icons-material/Info';\nimport NightsStay from '@mui/icons-material/NightsStay';\nimport Search from '@mui/icons-material/Search';\nimport Settings from '@mui/icons-material/Settings';\nimport WbSunny from '@mui/icons-material/WbSunny';\nimport React from 'react';\n\nimport { IconSearchButton, InfoButton, SettingsButtom, SwitchThemeButton } from './styles';\n\nexport type TooltipIconType = 'search' | 'info' | 'dark-mode' | 'light-mode' | 'settings';\ninterface Props {\n tooltipIconType: TooltipIconType;\n onClick?: () => void;\n}\n\ntype HeaderToolTipIconRef = HTMLButtonElement;\n\nconst HeaderToolTipIcon = function HeaderToolTipIcon({\n ref,\n tooltipIconType,\n onClick,\n}: Props & { ref?: React.RefObject<HeaderToolTipIconRef | null> }) {\n switch (tooltipIconType) {\n case 'info':\n return (\n <InfoButton\n color=\"inherit\"\n data-testid={'header--tooltip-info'}\n id=\"header--button-registryInfo\"\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <Info />\n </InfoButton>\n );\n case 'settings':\n return (\n <SettingsButtom\n color=\"inherit\"\n data-testid={'header--tooltip-settings'}\n id=\"header--button-settings\"\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <Settings />\n </SettingsButtom>\n );\n case 'search':\n return (\n <IconSearchButton\n data-testid=\"header--tooltip-search\"\n color=\"inherit\"\n onClick={onClick}\n ref={ref}\n >\n <Search />\n </IconSearchButton>\n );\n case 'dark-mode':\n return (\n <SwitchThemeButton\n color=\"inherit\"\n data-testid={'header--button--dark'}\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <NightsStay />\n </SwitchThemeButton>\n );\n\n case 'light-mode':\n return (\n <SwitchThemeButton\n color=\"inherit\"\n data-testid={'header--button--light'}\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <WbSunny />\n </SwitchThemeButton>\n );\n default:\n return null;\n }\n};\n\nexport default HeaderToolTipIcon;\n"],"mappings":";;;;;;;;;AAiBA,IAAM,oBAAoB,SAAS,kBAAkB,EACnD,KACA,iBACA,WACiE;CACjE,QAAQ,iBAAR;EACE,KAAK,QACH,OACE,oBAAC,YAAD;GACE,OAAM;GACN,eAAa;GACb,IAAG;GACM;GACJ;GACL,MAAK;GAEL,UAAA,oBAAC,MAAD,CAAO,CAAA;EACG,CAAA;EAEhB,KAAK,YACH,OACE,oBAAC,gBAAD;GACE,OAAM;GACN,eAAa;GACb,IAAG;GACM;GACJ;GACL,MAAK;GAEL,UAAA,oBAAC,UAAD,CAAW,CAAA;EACG,CAAA;EAEpB,KAAK,UACH,OACE,oBAAC,kBAAD;GACE,eAAY;GACZ,OAAM;GACG;GACJ;GAEL,UAAA,oBAAC,WAAD,CAAS,CAAA;EACO,CAAA;EAEtB,KAAK,aACH,OACE,oBAAC,mBAAD;GACE,OAAM;GACN,eAAa;GACJ;GACJ;GACL,MAAK;GAEL,UAAA,oBAAC,YAAD,CAAa,CAAA;EACI,CAAA;EAGvB,KAAK,cACH,OACE,oBAAC,mBAAD;GACE,OAAM;GACN,eAAa;GACJ;GACJ;GACL,MAAK;GAEL,UAAA,oBAAC,SAAD,CAAU,CAAA;EACO,CAAA;EAEvB,SACE,OAAO;CACX;AACF"}
1
+ {"version":3,"file":"HeaderToolTipIcon.mjs","names":["Search"],"sources":["../../../src/sections/Header/HeaderToolTipIcon.tsx"],"sourcesContent":["import Info from '@mui/icons-material/Info';\nimport NightsStay from '@mui/icons-material/NightsStay';\nimport Search from '@mui/icons-material/Search';\nimport Settings from '@mui/icons-material/Settings';\nimport WbSunny from '@mui/icons-material/WbSunny';\nimport React from 'react';\n\nimport { IconSearchButton, InfoButton, SettingsButtom, SwitchThemeButton } from './styles';\n\nexport type TooltipIconType = 'search' | 'info' | 'dark-mode' | 'light-mode' | 'settings';\ninterface Props {\n tooltipIconType: TooltipIconType;\n onClick?: () => void;\n}\n\ntype HeaderToolTipIconRef = HTMLButtonElement;\n\nconst HeaderToolTipIcon = function HeaderToolTipIcon({\n ref,\n tooltipIconType,\n onClick,\n}: Props & { ref?: React.RefObject<HeaderToolTipIconRef | null> }) {\n switch (tooltipIconType) {\n case 'info':\n return (\n <InfoButton\n color=\"inherit\"\n data-testid={'header--tooltip-info'}\n id=\"header--button-registryInfo\"\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <Info />\n </InfoButton>\n );\n case 'settings':\n return (\n <SettingsButtom\n color=\"inherit\"\n data-testid={'header--tooltip-settings'}\n id=\"header--button-settings\"\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <Settings />\n </SettingsButtom>\n );\n case 'search':\n return (\n <IconSearchButton\n data-testid=\"header--tooltip-search\"\n color=\"inherit\"\n onClick={onClick}\n ref={ref}\n >\n <Search />\n </IconSearchButton>\n );\n case 'dark-mode':\n return (\n <SwitchThemeButton\n color=\"inherit\"\n data-testid={'header--button--dark'}\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <NightsStay />\n </SwitchThemeButton>\n );\n\n case 'light-mode':\n return (\n <SwitchThemeButton\n color=\"inherit\"\n data-testid={'header--button--light'}\n onClick={onClick}\n ref={ref}\n size=\"large\"\n >\n <WbSunny />\n </SwitchThemeButton>\n );\n default:\n return null;\n }\n};\n\nexport default HeaderToolTipIcon;\n"],"mappings":";;;;;;;;;AAiBA,IAAM,oBAAoB,SAAS,kBAAkB,EACnD,KACA,iBACA,WACiE;CACjE,QAAQ,iBAAR;EACE,KAAK,QACH,OACE,oBAAC,YAAD;GACE,OAAM;GACN,eAAa;GACb,IAAG;GACM;GACJ;GACL,MAAK;GAEL,UAAA,oBAAC,MAAD,CAAO,CAAA;EACG,CAAA;EAEhB,KAAK,YACH,OACE,oBAAC,gBAAD;GACE,OAAM;GACN,eAAa;GACb,IAAG;GACM;GACJ;GACL,MAAK;GAEL,UAAA,oBAAC,UAAD,CAAW,CAAA;EACG,CAAA;EAEpB,KAAK,UACH,OACE,oBAAC,kBAAD;GACE,eAAY;GACZ,OAAM;GACG;GACJ;GAEL,UAAA,oBAACA,WAAD,CAAS,CAAA;EACO,CAAA;EAEtB,KAAK,aACH,OACE,oBAAC,mBAAD;GACE,OAAM;GACN,eAAa;GACJ;GACJ;GACL,MAAK;GAEL,UAAA,oBAAC,YAAD,CAAa,CAAA;EACI,CAAA;EAGvB,KAAK,cACH,OACE,oBAAC,mBAAD;GACE,OAAM;GACN,eAAa;GACJ;GACJ;GACL,MAAK;GAEL,UAAA,oBAAC,SAAD,CAAU,CAAA;EACO,CAAA;EAEvB,SACE,OAAO;CACX;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"LanguageSwitch.js","names":[],"sources":["../../../src/sections/Header/LanguageSwitch.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport i18next from 'i18next';\nimport React, { useCallback, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../';\nimport { useLanguage } from '../../';\n\nexport const CardSelected = styled(Card)<{ theme?: Theme }>(({ theme }) => {\n return {\n backgroundColor: theme.palette.grey['600'],\n opacity: '0.9',\n color: theme.palette.error.contrastText,\n fontWeight: 'bold',\n };\n});\n\nexport const CardUnSelected = styled(Card)<{ theme?: Theme }>(({ theme }) => {\n return {\n cursor: 'pointer',\n ':hover': {\n backgroundColor: theme.palette.greyGainsboro,\n },\n };\n});\n\nconst LanguageContent = ({ translation, icon }) => (\n <>\n <CardContent>\n <Typography display=\"block\" gutterBottom={true} variant=\"caption\">\n {translation}\n </Typography>\n </CardContent>\n <CardContent>{icon}</CardContent>\n </>\n);\n\nconst LanguageSwitch = () => {\n const { language, setLanguage, listLanguages } = useLanguage();\n const listConverted = listLanguages.reduce(\n (prev, item) => {\n prev[item.lng] = {\n translation: item.menuKey,\n icon: item.icon,\n };\n return prev;\n },\n {} as Record<string, { translation: string; icon: any }>\n );\n\n const [languages] = useState<string[]>(Object.keys(i18next.options?.resources || {}));\n const { t } = useTranslation();\n const currentLanguage = language;\n const getCurrentLngDetails = useCallback(\n (language: string) => {\n const lng = listConverted[language] || listConverted['en-US'];\n return {\n icon: <lng.icon />,\n translation: t(lng.translation),\n };\n },\n [listConverted, t]\n );\n const handleChangeLanguage = useCallback(\n (language: string) => {\n setLanguage(language);\n },\n [setLanguage]\n );\n\n return (\n <div>\n <Grid columns={{ xs: 12, sm: 12, md: 12 }} container={true} spacing={{ xs: 1, md: 1 }}>\n {languages.map((language, index) => {\n const { icon, translation } = getCurrentLngDetails(language);\n return (\n <Grid key={index} size={{ sm: 2, xs: 6 }}>\n {language === currentLanguage ? (\n <CardSelected sx={{ maxWidth: 80 }}>\n <LanguageContent icon={icon} translation={translation} />\n </CardSelected>\n ) : (\n <CardUnSelected onClick={() => handleChangeLanguage(language)}>\n <LanguageContent icon={icon} translation={translation} />\n </CardUnSelected>\n )}\n </Grid>\n );\n })}\n </Grid>\n </div>\n );\n};\n\nexport default LanguageSwitch;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAYA,IAAa,gBAAA,GAAe,gBAAA,QAAA,CAAO,mBAAA,OAAI,CAAC,EAAqB,EAAE,YAAY;CACzE,OAAO;EACL,iBAAiB,MAAM,QAAQ,KAAK;EACpC,SAAS;EACT,OAAO,MAAM,QAAQ,MAAM;EAC3B,YAAY;CACd;AACF,CAAC;AAED,IAAa,kBAAA,GAAiB,gBAAA,QAAA,CAAO,mBAAA,OAAI,CAAC,EAAqB,EAAE,YAAY;CAC3E,OAAO;EACL,QAAQ;EACR,UAAU,EACR,iBAAiB,MAAM,QAAQ,cACjC;CACF;AACF,CAAC;AAED,IAAM,mBAAmB,EAAE,aAAa,WACtC,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,0BAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,yBAAA,SAAD;CAAY,SAAQ;CAAQ,cAAc;CAAM,SAAQ;CACrD,UAAA;AACS,CAAA,EACD,CAAA,GACb,iBAAA,GAAA,kBAAA,IAAA,CAAC,0BAAA,SAAD,EAAA,UAAc,KAAkB,CAAA,CAChC,EAAA,CAAA;AAGJ,IAAM,uBAAuB;CAC3B,MAAM,EAAE,UAAU,aAAa,kBAAkB,2BAAA,YAAY;CAC7D,MAAM,gBAAgB,cAAc,QACjC,MAAM,SAAS;EACd,KAAK,KAAK,OAAO;GACf,aAAa,KAAK;GAClB,MAAM,KAAK;EACb;EACA,OAAO;CACT,GACA,CAAC,CACH;CAEA,MAAM,CAAC,cAAA,GAAa,MAAA,SAAA,CAAmB,OAAO,KAAK,QAAA,QAAQ,SAAS,aAAa,CAAC,CAAC,CAAC;CACpF,MAAM,EAAE,OAAA,GAAM,cAAA,eAAA,CAAe;CAC7B,MAAM,kBAAkB;CACxB,MAAM,wBAAA,GAAuB,MAAA,YAAA,EAC1B,aAAqB;EACpB,MAAM,MAAM,cAAc,aAAa,cAAc;EACrD,OAAO;GACL,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAAC,IAAI,MAAL,CAAW,CAAA;GACjB,aAAa,EAAE,IAAI,WAAW;EAChC;CACF,GACA,CAAC,eAAe,CAAC,CACnB;CACA,MAAM,wBAAA,GAAuB,MAAA,YAAA,EAC1B,aAAqB;EACpB,YAAY,QAAQ;CACtB,GACA,CAAC,WAAW,CACd;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,mBAAA,SAAD;EAAM,SAAS;GAAE,IAAI;GAAI,IAAI;GAAI,IAAI;EAAG;EAAG,WAAW;EAAM,SAAS;GAAE,IAAI;GAAG,IAAI;EAAE;EACjF,UAAA,UAAU,KAAK,UAAU,UAAU;GAClC,MAAM,EAAE,MAAM,gBAAgB,qBAAqB,QAAQ;GAC3D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,mBAAA,SAAD;IAAkB,MAAM;KAAE,IAAI;KAAG,IAAI;IAAE;IACpC,UAAA,aAAa,kBACZ,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAD;KAAc,IAAI,EAAE,UAAU,GAAG;KAC/B,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAD;MAAuB;MAAmB;KAAc,CAAA;IAC5C,CAAA,IAEd,iBAAA,GAAA,kBAAA,IAAA,CAAC,gBAAD;KAAgB,eAAe,qBAAqB,QAAQ;KAC1D,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAD;MAAuB;MAAmB;KAAc,CAAA;IAC1C,CAAA;GAEd,GAVK,KAUL;EAEV,CAAC;CACG,CAAA,EACH,CAAA;AAET"}
1
+ {"version":3,"file":"LanguageSwitch.js","names":["styled","Card","_Fragment","CardContent","Typography","useLanguage","useState","useTranslation","useCallback","Grid"],"sources":["../../../src/sections/Header/LanguageSwitch.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport i18next from 'i18next';\nimport React, { useCallback, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../';\nimport { useLanguage } from '../../';\n\nexport const CardSelected = styled(Card)<{ theme?: Theme }>(({ theme }) => {\n return {\n backgroundColor: theme.palette.grey['600'],\n opacity: '0.9',\n color: theme.palette.error.contrastText,\n fontWeight: 'bold',\n };\n});\n\nexport const CardUnSelected = styled(Card)<{ theme?: Theme }>(({ theme }) => {\n return {\n cursor: 'pointer',\n ':hover': {\n backgroundColor: theme.palette.greyGainsboro,\n },\n };\n});\n\nconst LanguageContent = ({ translation, icon }) => (\n <>\n <CardContent>\n <Typography display=\"block\" gutterBottom={true} variant=\"caption\">\n {translation}\n </Typography>\n </CardContent>\n <CardContent>{icon}</CardContent>\n </>\n);\n\nconst LanguageSwitch = () => {\n const { language, setLanguage, listLanguages } = useLanguage();\n const listConverted = listLanguages.reduce(\n (prev, item) => {\n prev[item.lng] = {\n translation: item.menuKey,\n icon: item.icon,\n };\n return prev;\n },\n {} as Record<string, { translation: string; icon: any }>\n );\n\n const [languages] = useState<string[]>(Object.keys(i18next.options?.resources || {}));\n const { t } = useTranslation();\n const currentLanguage = language;\n const getCurrentLngDetails = useCallback(\n (language: string) => {\n const lng = listConverted[language] || listConverted['en-US'];\n return {\n icon: <lng.icon />,\n translation: t(lng.translation),\n };\n },\n [listConverted, t]\n );\n const handleChangeLanguage = useCallback(\n (language: string) => {\n setLanguage(language);\n },\n [setLanguage]\n );\n\n return (\n <div>\n <Grid columns={{ xs: 12, sm: 12, md: 12 }} container={true} spacing={{ xs: 1, md: 1 }}>\n {languages.map((language, index) => {\n const { icon, translation } = getCurrentLngDetails(language);\n return (\n <Grid key={index} size={{ sm: 2, xs: 6 }}>\n {language === currentLanguage ? (\n <CardSelected sx={{ maxWidth: 80 }}>\n <LanguageContent icon={icon} translation={translation} />\n </CardSelected>\n ) : (\n <CardUnSelected onClick={() => handleChangeLanguage(language)}>\n <LanguageContent icon={icon} translation={translation} />\n </CardUnSelected>\n )}\n </Grid>\n );\n })}\n </Grid>\n </div>\n );\n};\n\nexport default LanguageSwitch;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAYA,IAAa,gBAAA,GAAeA,gBAAAA,QAAAA,CAAOC,mBAAAA,OAAI,CAAC,EAAqB,EAAE,YAAY;CACzE,OAAO;EACL,iBAAiB,MAAM,QAAQ,KAAK;EACpC,SAAS;EACT,OAAO,MAAM,QAAQ,MAAM;EAC3B,YAAY;CACd;AACF,CAAC;AAED,IAAa,kBAAA,GAAiBD,gBAAAA,QAAAA,CAAOC,mBAAAA,OAAI,CAAC,EAAqB,EAAE,YAAY;CAC3E,OAAO;EACL,QAAQ;EACR,UAAU,EACR,iBAAiB,MAAM,QAAQ,cACjC;CACF;AACF,CAAC;AAED,IAAM,mBAAmB,EAAE,aAAa,WACtC,iBAAA,GAAA,kBAAA,KAAA,CAAAC,kBAAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,0BAAAA,SAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,yBAAAA,SAAD;CAAY,SAAQ;CAAQ,cAAc;CAAM,SAAQ;CACrD,UAAA;AACS,CAAA,EACD,CAAA,GACb,iBAAA,GAAA,kBAAA,IAAA,CAACD,0BAAAA,SAAD,EAAA,UAAc,KAAkB,CAAA,CAChC,EAAA,CAAA;AAGJ,IAAM,uBAAuB;CAC3B,MAAM,EAAE,UAAU,aAAa,kBAAkBE,2BAAAA,YAAY;CAC7D,MAAM,gBAAgB,cAAc,QACjC,MAAM,SAAS;EACd,KAAK,KAAK,OAAO;GACf,aAAa,KAAK;GAClB,MAAM,KAAK;EACb;EACA,OAAO;CACT,GACA,CAAC,CACH;CAEA,MAAM,CAAC,cAAA,GAAaC,MAAAA,SAAAA,CAAmB,OAAO,KAAK,QAAA,QAAQ,SAAS,aAAa,CAAC,CAAC,CAAC;CACpF,MAAM,EAAE,OAAA,GAAMC,cAAAA,eAAAA,CAAe;CAC7B,MAAM,kBAAkB;CACxB,MAAM,wBAAA,GAAuBC,MAAAA,YAAAA,EAC1B,aAAqB;EACpB,MAAM,MAAM,cAAc,aAAa,cAAc;EACrD,OAAO;GACL,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAAC,IAAI,MAAL,CAAW,CAAA;GACjB,aAAa,EAAE,IAAI,WAAW;EAChC;CACF,GACA,CAAC,eAAe,CAAC,CACnB;CACA,MAAM,wBAAA,GAAuBA,MAAAA,YAAAA,EAC1B,aAAqB;EACpB,YAAY,QAAQ;CACtB,GACA,CAAC,WAAW,CACd;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,mBAAAA,SAAD;EAAM,SAAS;GAAE,IAAI;GAAI,IAAI;GAAI,IAAI;EAAG;EAAG,WAAW;EAAM,SAAS;GAAE,IAAI;GAAG,IAAI;EAAE;EACjF,UAAA,UAAU,KAAK,UAAU,UAAU;GAClC,MAAM,EAAE,MAAM,gBAAgB,qBAAqB,QAAQ;GAC3D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,mBAAAA,SAAD;IAAkB,MAAM;KAAE,IAAI;KAAG,IAAI;IAAE;IACpC,UAAA,aAAa,kBACZ,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAD;KAAc,IAAI,EAAE,UAAU,GAAG;KAC/B,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAD;MAAuB;MAAmB;KAAc,CAAA;IAC5C,CAAA,IAEd,iBAAA,GAAA,kBAAA,IAAA,CAAC,gBAAD;KAAgB,eAAe,qBAAqB,QAAQ;KAC1D,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAD;MAAuB;MAAmB;KAAc,CAAA;IAC1C,CAAA;GAEd,GAVK,KAUL;EAEV,CAAC;CACG,CAAA,EACH,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"LanguageSwitch.mjs","names":[],"sources":["../../../src/sections/Header/LanguageSwitch.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport i18next from 'i18next';\nimport React, { useCallback, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../';\nimport { useLanguage } from '../../';\n\nexport const CardSelected = styled(Card)<{ theme?: Theme }>(({ theme }) => {\n return {\n backgroundColor: theme.palette.grey['600'],\n opacity: '0.9',\n color: theme.palette.error.contrastText,\n fontWeight: 'bold',\n };\n});\n\nexport const CardUnSelected = styled(Card)<{ theme?: Theme }>(({ theme }) => {\n return {\n cursor: 'pointer',\n ':hover': {\n backgroundColor: theme.palette.greyGainsboro,\n },\n };\n});\n\nconst LanguageContent = ({ translation, icon }) => (\n <>\n <CardContent>\n <Typography display=\"block\" gutterBottom={true} variant=\"caption\">\n {translation}\n </Typography>\n </CardContent>\n <CardContent>{icon}</CardContent>\n </>\n);\n\nconst LanguageSwitch = () => {\n const { language, setLanguage, listLanguages } = useLanguage();\n const listConverted = listLanguages.reduce(\n (prev, item) => {\n prev[item.lng] = {\n translation: item.menuKey,\n icon: item.icon,\n };\n return prev;\n },\n {} as Record<string, { translation: string; icon: any }>\n );\n\n const [languages] = useState<string[]>(Object.keys(i18next.options?.resources || {}));\n const { t } = useTranslation();\n const currentLanguage = language;\n const getCurrentLngDetails = useCallback(\n (language: string) => {\n const lng = listConverted[language] || listConverted['en-US'];\n return {\n icon: <lng.icon />,\n translation: t(lng.translation),\n };\n },\n [listConverted, t]\n );\n const handleChangeLanguage = useCallback(\n (language: string) => {\n setLanguage(language);\n },\n [setLanguage]\n );\n\n return (\n <div>\n <Grid columns={{ xs: 12, sm: 12, md: 12 }} container={true} spacing={{ xs: 1, md: 1 }}>\n {languages.map((language, index) => {\n const { icon, translation } = getCurrentLngDetails(language);\n return (\n <Grid key={index} size={{ sm: 2, xs: 6 }}>\n {language === currentLanguage ? (\n <CardSelected sx={{ maxWidth: 80 }}>\n <LanguageContent icon={icon} translation={translation} />\n </CardSelected>\n ) : (\n <CardUnSelected onClick={() => handleChangeLanguage(language)}>\n <LanguageContent icon={icon} translation={translation} />\n </CardUnSelected>\n )}\n </Grid>\n );\n })}\n </Grid>\n </div>\n );\n};\n\nexport default LanguageSwitch;\n"],"mappings":";;;;;;;;;;;;AAYA,IAAa,eAAe,OAAO,IAAI,CAAC,EAAqB,EAAE,YAAY;CACzE,OAAO;EACL,iBAAiB,MAAM,QAAQ,KAAK;EACpC,SAAS;EACT,OAAO,MAAM,QAAQ,MAAM;EAC3B,YAAY;CACd;AACF,CAAC;AAED,IAAa,iBAAiB,OAAO,IAAI,CAAC,EAAqB,EAAE,YAAY;CAC3E,OAAO;EACL,QAAQ;EACR,UAAU,EACR,iBAAiB,MAAM,QAAQ,cACjC;CACF;AACF,CAAC;AAED,IAAM,mBAAmB,EAAE,aAAa,WACtC,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UACE,oBAAC,YAAD;CAAY,SAAQ;CAAQ,cAAc;CAAM,SAAQ;CACrD,UAAA;AACS,CAAA,EACD,CAAA,GACb,oBAAC,aAAD,EAAA,UAAc,KAAkB,CAAA,CAChC,EAAA,CAAA;AAGJ,IAAM,uBAAuB;CAC3B,MAAM,EAAE,UAAU,aAAa,kBAAkB,YAAY;CAC7D,MAAM,gBAAgB,cAAc,QACjC,MAAM,SAAS;EACd,KAAK,KAAK,OAAO;GACf,aAAa,KAAK;GAClB,MAAM,KAAK;EACb;EACA,OAAO;CACT,GACA,CAAC,CACH;CAEA,MAAM,CAAC,aAAa,SAAmB,OAAO,KAAK,QAAQ,SAAS,aAAa,CAAC,CAAC,CAAC;CACpF,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,kBAAkB;CACxB,MAAM,uBAAuB,aAC1B,aAAqB;EACpB,MAAM,MAAM,cAAc,aAAa,cAAc;EACrD,OAAO;GACL,MAAM,oBAAC,IAAI,MAAL,CAAW,CAAA;GACjB,aAAa,EAAE,IAAI,WAAW;EAChC;CACF,GACA,CAAC,eAAe,CAAC,CACnB;CACA,MAAM,uBAAuB,aAC1B,aAAqB;EACpB,YAAY,QAAQ;CACtB,GACA,CAAC,WAAW,CACd;CAEA,OACE,oBAAC,OAAD,EAAA,UACE,oBAAC,MAAD;EAAM,SAAS;GAAE,IAAI;GAAI,IAAI;GAAI,IAAI;EAAG;EAAG,WAAW;EAAM,SAAS;GAAE,IAAI;GAAG,IAAI;EAAE;EACjF,UAAA,UAAU,KAAK,UAAU,UAAU;GAClC,MAAM,EAAE,MAAM,gBAAgB,qBAAqB,QAAQ;GAC3D,OACE,oBAAC,MAAD;IAAkB,MAAM;KAAE,IAAI;KAAG,IAAI;IAAE;IACpC,UAAA,aAAa,kBACZ,oBAAC,cAAD;KAAc,IAAI,EAAE,UAAU,GAAG;KAC/B,UAAA,oBAAC,iBAAD;MAAuB;MAAmB;KAAc,CAAA;IAC5C,CAAA,IAEd,oBAAC,gBAAD;KAAgB,eAAe,qBAAqB,QAAQ;KAC1D,UAAA,oBAAC,iBAAD;MAAuB;MAAmB;KAAc,CAAA;IAC1C,CAAA;GAEd,GAVK,KAUL;EAEV,CAAC;CACG,CAAA,EACH,CAAA;AAET"}
1
+ {"version":3,"file":"LanguageSwitch.mjs","names":["_Fragment"],"sources":["../../../src/sections/Header/LanguageSwitch.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport i18next from 'i18next';\nimport React, { useCallback, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../';\nimport { useLanguage } from '../../';\n\nexport const CardSelected = styled(Card)<{ theme?: Theme }>(({ theme }) => {\n return {\n backgroundColor: theme.palette.grey['600'],\n opacity: '0.9',\n color: theme.palette.error.contrastText,\n fontWeight: 'bold',\n };\n});\n\nexport const CardUnSelected = styled(Card)<{ theme?: Theme }>(({ theme }) => {\n return {\n cursor: 'pointer',\n ':hover': {\n backgroundColor: theme.palette.greyGainsboro,\n },\n };\n});\n\nconst LanguageContent = ({ translation, icon }) => (\n <>\n <CardContent>\n <Typography display=\"block\" gutterBottom={true} variant=\"caption\">\n {translation}\n </Typography>\n </CardContent>\n <CardContent>{icon}</CardContent>\n </>\n);\n\nconst LanguageSwitch = () => {\n const { language, setLanguage, listLanguages } = useLanguage();\n const listConverted = listLanguages.reduce(\n (prev, item) => {\n prev[item.lng] = {\n translation: item.menuKey,\n icon: item.icon,\n };\n return prev;\n },\n {} as Record<string, { translation: string; icon: any }>\n );\n\n const [languages] = useState<string[]>(Object.keys(i18next.options?.resources || {}));\n const { t } = useTranslation();\n const currentLanguage = language;\n const getCurrentLngDetails = useCallback(\n (language: string) => {\n const lng = listConverted[language] || listConverted['en-US'];\n return {\n icon: <lng.icon />,\n translation: t(lng.translation),\n };\n },\n [listConverted, t]\n );\n const handleChangeLanguage = useCallback(\n (language: string) => {\n setLanguage(language);\n },\n [setLanguage]\n );\n\n return (\n <div>\n <Grid columns={{ xs: 12, sm: 12, md: 12 }} container={true} spacing={{ xs: 1, md: 1 }}>\n {languages.map((language, index) => {\n const { icon, translation } = getCurrentLngDetails(language);\n return (\n <Grid key={index} size={{ sm: 2, xs: 6 }}>\n {language === currentLanguage ? (\n <CardSelected sx={{ maxWidth: 80 }}>\n <LanguageContent icon={icon} translation={translation} />\n </CardSelected>\n ) : (\n <CardUnSelected onClick={() => handleChangeLanguage(language)}>\n <LanguageContent icon={icon} translation={translation} />\n </CardUnSelected>\n )}\n </Grid>\n );\n })}\n </Grid>\n </div>\n );\n};\n\nexport default LanguageSwitch;\n"],"mappings":";;;;;;;;;;;;AAYA,IAAa,eAAe,OAAO,IAAI,CAAC,EAAqB,EAAE,YAAY;CACzE,OAAO;EACL,iBAAiB,MAAM,QAAQ,KAAK;EACpC,SAAS;EACT,OAAO,MAAM,QAAQ,MAAM;EAC3B,YAAY;CACd;AACF,CAAC;AAED,IAAa,iBAAiB,OAAO,IAAI,CAAC,EAAqB,EAAE,YAAY;CAC3E,OAAO;EACL,QAAQ;EACR,UAAU,EACR,iBAAiB,MAAM,QAAQ,cACjC;CACF;AACF,CAAC;AAED,IAAM,mBAAmB,EAAE,aAAa,WACtC,qBAAAA,YAAA,EAAA,UAAA,CACE,oBAAC,aAAD,EAAA,UACE,oBAAC,YAAD;CAAY,SAAQ;CAAQ,cAAc;CAAM,SAAQ;CACrD,UAAA;AACS,CAAA,EACD,CAAA,GACb,oBAAC,aAAD,EAAA,UAAc,KAAkB,CAAA,CAChC,EAAA,CAAA;AAGJ,IAAM,uBAAuB;CAC3B,MAAM,EAAE,UAAU,aAAa,kBAAkB,YAAY;CAC7D,MAAM,gBAAgB,cAAc,QACjC,MAAM,SAAS;EACd,KAAK,KAAK,OAAO;GACf,aAAa,KAAK;GAClB,MAAM,KAAK;EACb;EACA,OAAO;CACT,GACA,CAAC,CACH;CAEA,MAAM,CAAC,aAAa,SAAmB,OAAO,KAAK,QAAQ,SAAS,aAAa,CAAC,CAAC,CAAC;CACpF,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,kBAAkB;CACxB,MAAM,uBAAuB,aAC1B,aAAqB;EACpB,MAAM,MAAM,cAAc,aAAa,cAAc;EACrD,OAAO;GACL,MAAM,oBAAC,IAAI,MAAL,CAAW,CAAA;GACjB,aAAa,EAAE,IAAI,WAAW;EAChC;CACF,GACA,CAAC,eAAe,CAAC,CACnB;CACA,MAAM,uBAAuB,aAC1B,aAAqB;EACpB,YAAY,QAAQ;CACtB,GACA,CAAC,WAAW,CACd;CAEA,OACE,oBAAC,OAAD,EAAA,UACE,oBAAC,MAAD;EAAM,SAAS;GAAE,IAAI;GAAI,IAAI;GAAI,IAAI;EAAG;EAAG,WAAW;EAAM,SAAS;GAAE,IAAI;GAAG,IAAI;EAAE;EACjF,UAAA,UAAU,KAAK,UAAU,UAAU;GAClC,MAAM,EAAE,MAAM,gBAAgB,qBAAqB,QAAQ;GAC3D,OACE,oBAAC,MAAD;IAAkB,MAAM;KAAE,IAAI;KAAG,IAAI;IAAE;IACpC,UAAA,aAAa,kBACZ,oBAAC,cAAD;KAAc,IAAI,EAAE,UAAU,GAAG;KAC/B,UAAA,oBAAC,iBAAD;MAAuB;MAAmB;KAAc,CAAA;IAC5C,CAAA,IAEd,oBAAC,gBAAD;KAAgB,eAAe,qBAAqB,QAAQ;KAC1D,UAAA,oBAAC,iBAAD;MAAuB;MAAmB;KAAc,CAAA;IAC1C,CAAA;GAEd,GAVK,KAUL;EAEV,CAAC;CACG,CAAA,EACH,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryInfoContent.js","names":[],"sources":["../../../../src/sections/Header/RegistryInfoContent/RegistryInfoContent.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport Accordion from '@mui/material/Accordion';\nimport AccordionDetails from '@mui/material/AccordionDetails';\nimport AccordionSummary from '@mui/material/AccordionSummary';\nimport Box from '@mui/material/Box';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport type { FC } from 'react';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ReactMarkdown from 'react-markdown';\n\nimport {\n CopyClipboard,\n getCLIChangePassword,\n getCLISBerryYamlRegistry,\n getCLISetConfigRegistry,\n getCLISetRegistry,\n useConfig,\n} from '../../../';\nimport { Description, TextContent } from './styles';\n\nexport const NODE_MANAGER = {\n npm: 'npm',\n yarn: 'yarn',\n pnpm: 'pnpm',\n};\n\nconst renderNpmTab = (scope: string | undefined, registryUrl: string): React.JSX.Element => {\n return (\n <Box display=\"flex\" flexDirection=\"column\">\n <CopyClipboard\n dataTestId=\"copy\"\n text={getCLISetConfigRegistry(`${NODE_MANAGER.npm} set`, scope, registryUrl)}\n />\n <CopyClipboard\n dataTestId=\"copy\"\n text={getCLISetRegistry(`${NODE_MANAGER.npm} adduser`, registryUrl)}\n />\n <CopyClipboard dataTestId=\"copy\" text={getCLIChangePassword(NODE_MANAGER.npm, registryUrl)} />\n </Box>\n );\n};\n\nconst renderPnpmTab = (scope: string | undefined, registryUrl: string): React.JSX.Element => {\n return (\n <Box display=\"flex\" flexDirection=\"column\">\n <CopyClipboard\n dataTestId=\"copy\"\n text={getCLISetConfigRegistry(`${NODE_MANAGER.pnpm} set`, scope, registryUrl)}\n />\n <CopyClipboard\n dataTestId=\"copy\"\n text={getCLISetRegistry(`${NODE_MANAGER.pnpm} adduser`, registryUrl)}\n />\n <CopyClipboard\n dataTestId=\"copy\"\n text={getCLIChangePassword(NODE_MANAGER.pnpm, registryUrl)}\n />\n </Box>\n );\n};\n\nconst renderYarnTab = (scope: string | undefined, registryUrl: string): React.JSX.Element => {\n return (\n <Box display=\"flex\" flexDirection=\"column\">\n <CopyClipboard\n dataTestId=\"copy\"\n text={getCLISetConfigRegistry(`${NODE_MANAGER.yarn} config set`, scope, registryUrl)}\n />\n </Box>\n );\n};\n\nconst renderYarnBerryTab = (scope: string | undefined, registryUrl: string): React.JSX.Element => {\n return (\n <Box display=\"flex\" flexDirection=\"column\">\n <CopyClipboard dataTestId=\"copy\" text={getCLISBerryYamlRegistry(scope, registryUrl)} />\n </Box>\n );\n};\n\nexport const AccordionContainer = styled('div')({\n padding: 0,\n paddingLeft: 0,\n paddingRight: 0,\n});\n\nexport const CommandContainer = styled('div')({\n padding: 5,\n});\n\nexport const LinkContainer = styled('div')({\n margin: 10,\n marginLeft: 0,\n});\n\nexport type Props = {\n registryUrl: string;\n scope: string | undefined;\n};\n\nconst RegistryInfoContent: FC<Props> = ({ scope, registryUrl }) => {\n const { t } = useTranslation();\n const { configOptions } = useConfig();\n\n const hasNpm = configOptions?.pkgManagers?.includes('npm');\n const hasYarn = configOptions?.pkgManagers?.includes('yarn');\n const hasPnpm = configOptions?.pkgManagers?.includes('pnpm');\n // TODO: we can improve this logic, expanding only one accordion based on which package manager is enabled\n // feel free to contribute here\n return (\n <>\n <TextContent>{t('packageManagers.description')}</TextContent>\n <AccordionContainer>\n <Accordion disabled={!hasNpm}>\n <AccordionSummary\n aria-controls=\"panel1a-content\"\n expandIcon={<ExpandMoreIcon />}\n id=\"panel1a-header\"\n >\n <Typography sx={{ fontSize: '1rem', fontWeight: 'bold' }}>{'npm'}</Typography>\n </AccordionSummary>\n <AccordionDetails>\n <CommandContainer data-testid={'tab-content'}>\n {renderNpmTab(scope, registryUrl)}\n </CommandContainer>\n </AccordionDetails>\n </Accordion>\n <Accordion disabled={!hasYarn}>\n <AccordionSummary\n aria-controls=\"panel2a-content\"\n expandIcon={<ExpandMoreIcon />}\n id=\"panel2a-header\"\n >\n <Typography sx={{ fontSize: '1rem', fontWeight: 'bold' }}>{'yarn'}</Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Description>\n <ReactMarkdown>{t('packageManagers.yarnclassicDetails')}</ReactMarkdown>\n </Description>\n <CommandContainer data-testid={'tab-content'}>\n {renderYarnTab(scope, registryUrl)}\n </CommandContainer>\n <Description>\n <ReactMarkdown>{t('packageManagers.yarnBerryDetails')}</ReactMarkdown>\n </Description>\n <CommandContainer data-testid={'tab-content'}>\n {renderYarnBerryTab(scope, registryUrl)}\n </CommandContainer>\n </AccordionDetails>\n </Accordion>\n\n <Accordion disabled={!hasPnpm}>\n <AccordionSummary\n aria-controls=\"panel3a-content\"\n expandIcon={<ExpandMoreIcon />}\n id=\"panel3a-header\"\n >\n <Typography sx={{ fontSize: '1rem', fontWeight: 'bold' }}>{'pnpm'}</Typography>\n </AccordionSummary>\n <AccordionDetails>\n <CommandContainer data-testid={'tab-content'}>\n {renderPnpmTab(scope, registryUrl)}\n </CommandContainer>\n </AccordionDetails>\n </Accordion>\n\n <LinkContainer>\n <Link href=\"https://verdaccio.org/docs/cli-registry\" target=\"_blank\">\n <Typography>{t('header.registry-info-link')}</Typography>\n </Link>\n </LinkContainer>\n </AccordionContainer>\n </>\n );\n};\n\nexport default RegistryInfoContent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"RegistryInfoContent.js","names":["Box","CopyClipboard","getCLISetConfigRegistry","getCLISetRegistry","getCLIChangePassword","getCLISBerryYamlRegistry","styled","useTranslation","useConfig","_Fragment","TextContent","Accordion","AccordionSummary","ExpandMoreIcon","Typography","AccordionDetails","Description","ReactMarkdown","Link"],"sources":["../../../../src/sections/Header/RegistryInfoContent/RegistryInfoContent.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport Accordion from '@mui/material/Accordion';\nimport AccordionDetails from '@mui/material/AccordionDetails';\nimport AccordionSummary from '@mui/material/AccordionSummary';\nimport Box from '@mui/material/Box';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport type { FC } from 'react';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ReactMarkdown from 'react-markdown';\n\nimport {\n CopyClipboard,\n getCLIChangePassword,\n getCLISBerryYamlRegistry,\n getCLISetConfigRegistry,\n getCLISetRegistry,\n useConfig,\n} from '../../../';\nimport { Description, TextContent } from './styles';\n\nexport const NODE_MANAGER = {\n npm: 'npm',\n yarn: 'yarn',\n pnpm: 'pnpm',\n};\n\nconst renderNpmTab = (scope: string | undefined, registryUrl: string): React.JSX.Element => {\n return (\n <Box display=\"flex\" flexDirection=\"column\">\n <CopyClipboard\n dataTestId=\"copy\"\n text={getCLISetConfigRegistry(`${NODE_MANAGER.npm} set`, scope, registryUrl)}\n />\n <CopyClipboard\n dataTestId=\"copy\"\n text={getCLISetRegistry(`${NODE_MANAGER.npm} adduser`, registryUrl)}\n />\n <CopyClipboard dataTestId=\"copy\" text={getCLIChangePassword(NODE_MANAGER.npm, registryUrl)} />\n </Box>\n );\n};\n\nconst renderPnpmTab = (scope: string | undefined, registryUrl: string): React.JSX.Element => {\n return (\n <Box display=\"flex\" flexDirection=\"column\">\n <CopyClipboard\n dataTestId=\"copy\"\n text={getCLISetConfigRegistry(`${NODE_MANAGER.pnpm} set`, scope, registryUrl)}\n />\n <CopyClipboard\n dataTestId=\"copy\"\n text={getCLISetRegistry(`${NODE_MANAGER.pnpm} adduser`, registryUrl)}\n />\n <CopyClipboard\n dataTestId=\"copy\"\n text={getCLIChangePassword(NODE_MANAGER.pnpm, registryUrl)}\n />\n </Box>\n );\n};\n\nconst renderYarnTab = (scope: string | undefined, registryUrl: string): React.JSX.Element => {\n return (\n <Box display=\"flex\" flexDirection=\"column\">\n <CopyClipboard\n dataTestId=\"copy\"\n text={getCLISetConfigRegistry(`${NODE_MANAGER.yarn} config set`, scope, registryUrl)}\n />\n </Box>\n );\n};\n\nconst renderYarnBerryTab = (scope: string | undefined, registryUrl: string): React.JSX.Element => {\n return (\n <Box display=\"flex\" flexDirection=\"column\">\n <CopyClipboard dataTestId=\"copy\" text={getCLISBerryYamlRegistry(scope, registryUrl)} />\n </Box>\n );\n};\n\nexport const AccordionContainer = styled('div')({\n padding: 0,\n paddingLeft: 0,\n paddingRight: 0,\n});\n\nexport const CommandContainer = styled('div')({\n padding: 5,\n});\n\nexport const LinkContainer = styled('div')({\n margin: 10,\n marginLeft: 0,\n});\n\nexport type Props = {\n registryUrl: string;\n scope: string | undefined;\n};\n\nconst RegistryInfoContent: FC<Props> = ({ scope, registryUrl }) => {\n const { t } = useTranslation();\n const { configOptions } = useConfig();\n\n const hasNpm = configOptions?.pkgManagers?.includes('npm');\n const hasYarn = configOptions?.pkgManagers?.includes('yarn');\n const hasPnpm = configOptions?.pkgManagers?.includes('pnpm');\n // TODO: we can improve this logic, expanding only one accordion based on which package manager is enabled\n // feel free to contribute here\n return (\n <>\n <TextContent>{t('packageManagers.description')}</TextContent>\n <AccordionContainer>\n <Accordion disabled={!hasNpm}>\n <AccordionSummary\n aria-controls=\"panel1a-content\"\n expandIcon={<ExpandMoreIcon />}\n id=\"panel1a-header\"\n >\n <Typography sx={{ fontSize: '1rem', fontWeight: 'bold' }}>{'npm'}</Typography>\n </AccordionSummary>\n <AccordionDetails>\n <CommandContainer data-testid={'tab-content'}>\n {renderNpmTab(scope, registryUrl)}\n </CommandContainer>\n </AccordionDetails>\n </Accordion>\n <Accordion disabled={!hasYarn}>\n <AccordionSummary\n aria-controls=\"panel2a-content\"\n expandIcon={<ExpandMoreIcon />}\n id=\"panel2a-header\"\n >\n <Typography sx={{ fontSize: '1rem', fontWeight: 'bold' }}>{'yarn'}</Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Description>\n <ReactMarkdown>{t('packageManagers.yarnclassicDetails')}</ReactMarkdown>\n </Description>\n <CommandContainer data-testid={'tab-content'}>\n {renderYarnTab(scope, registryUrl)}\n </CommandContainer>\n <Description>\n <ReactMarkdown>{t('packageManagers.yarnBerryDetails')}</ReactMarkdown>\n </Description>\n <CommandContainer data-testid={'tab-content'}>\n {renderYarnBerryTab(scope, registryUrl)}\n </CommandContainer>\n </AccordionDetails>\n </Accordion>\n\n <Accordion disabled={!hasPnpm}>\n <AccordionSummary\n aria-controls=\"panel3a-content\"\n expandIcon={<ExpandMoreIcon />}\n id=\"panel3a-header\"\n >\n <Typography sx={{ fontSize: '1rem', fontWeight: 'bold' }}>{'pnpm'}</Typography>\n </AccordionSummary>\n <AccordionDetails>\n <CommandContainer data-testid={'tab-content'}>\n {renderPnpmTab(scope, registryUrl)}\n </CommandContainer>\n </AccordionDetails>\n </Accordion>\n\n <LinkContainer>\n <Link href=\"https://verdaccio.org/docs/cli-registry\" target=\"_blank\">\n <Typography>{t('header.registry-info-link')}</Typography>\n </Link>\n </LinkContainer>\n </AccordionContainer>\n </>\n );\n};\n\nexport default RegistryInfoContent;\n"],"mappings":"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"}