@verdaccio/ui-components 5.0.0-next-9.24 → 5.0.0-next-9.26

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 (296) hide show
  1. package/README.md +20 -0
  2. package/build/api/use-data.d.ts +2 -2
  3. package/build/api/use-data.js +2 -2
  4. package/build/api/use-data.js.map +1 -1
  5. package/build/api/use-data.mjs +2 -2
  6. package/build/api/use-data.mjs.map +1 -1
  7. package/build/components/CopyClipboard/CopyToClipBoard.d.ts +1 -0
  8. package/build/components/CopyClipboard/CopyToClipBoard.js +36 -17
  9. package/build/components/CopyClipboard/CopyToClipBoard.js.map +1 -1
  10. package/build/components/CopyClipboard/CopyToClipBoard.mjs +36 -19
  11. package/build/components/CopyClipboard/CopyToClipBoard.mjs.map +1 -1
  12. package/build/components/CopyClipboard/utils.d.ts +2 -1
  13. package/build/components/CopyClipboard/utils.js +6 -4
  14. package/build/components/CopyClipboard/utils.js.map +1 -1
  15. package/build/components/CopyClipboard/utils.mjs +6 -4
  16. package/build/components/CopyClipboard/utils.mjs.map +1 -1
  17. package/build/components/DocsLink/DocsLink.d.ts +8 -0
  18. package/build/components/DocsLink/DocsLink.js +40 -0
  19. package/build/components/DocsLink/DocsLink.js.map +1 -0
  20. package/build/components/DocsLink/DocsLink.mjs +35 -0
  21. package/build/components/DocsLink/DocsLink.mjs.map +1 -0
  22. package/build/components/DocsLink/index.d.ts +1 -0
  23. package/build/components/DocsLink/index.js +3 -0
  24. package/build/components/DocsLink/index.mjs +1 -0
  25. package/build/components/Help/Help.d.ts +13 -0
  26. package/build/components/Help/Help.js +280 -36
  27. package/build/components/Help/Help.js.map +1 -1
  28. package/build/components/Help/Help.mjs +274 -39
  29. package/build/components/Help/Help.mjs.map +1 -1
  30. package/build/components/Help/styles.d.ts +29 -0
  31. package/build/components/Help/styles.js +86 -1
  32. package/build/components/Help/styles.js.map +1 -1
  33. package/build/components/Help/styles.mjs +82 -2
  34. package/build/components/Help/styles.mjs.map +1 -1
  35. package/build/components/Icons/Managers/Bun.d.ts +2 -0
  36. package/build/components/Icons/Managers/Bun2.js +18 -0
  37. package/build/components/Icons/Managers/Bun2.js.map +1 -0
  38. package/build/components/Icons/Managers/Bun2.mjs +16 -0
  39. package/build/components/Icons/Managers/Bun2.mjs.map +1 -0
  40. package/build/components/Icons/Managers/bun.js +6 -0
  41. package/build/components/Icons/Managers/bun.js.map +1 -0
  42. package/build/components/Icons/Managers/bun.mjs +6 -0
  43. package/build/components/Icons/Managers/bun.mjs.map +1 -0
  44. package/build/components/Icons/Managers/bun.svg +1 -0
  45. package/build/components/Icons/Managers/index.d.ts +1 -0
  46. package/build/components/Icons/Managers/index.js +2 -0
  47. package/build/components/Icons/Managers/index.mjs +2 -1
  48. package/build/components/Icons/index.js +3 -0
  49. package/build/components/Icons/index.mjs +3 -1
  50. package/build/components/Install/Install.d.ts +2 -0
  51. package/build/components/Install/Install.js +30 -2
  52. package/build/components/Install/Install.js.map +1 -1
  53. package/build/components/Install/Install.mjs +30 -3
  54. package/build/components/Install/Install.mjs.map +1 -1
  55. package/build/components/Install/InstallListItem.d.ts +2 -1
  56. package/build/components/Install/InstallListItem.js +17 -0
  57. package/build/components/Install/InstallListItem.js.map +1 -1
  58. package/build/components/Install/InstallListItem.mjs +17 -0
  59. package/build/components/Install/InstallListItem.mjs.map +1 -1
  60. package/build/components/Loading/PackageListSkeleton.d.ts +3 -0
  61. package/build/components/Loading/PackageListSkeleton.js +70 -0
  62. package/build/components/Loading/PackageListSkeleton.js.map +1 -0
  63. package/build/components/Loading/PackageListSkeleton.mjs +65 -0
  64. package/build/components/Loading/PackageListSkeleton.mjs.map +1 -0
  65. package/build/components/Loading/VersionSkeleton.d.ts +3 -0
  66. package/build/components/Loading/VersionSkeleton.js +119 -0
  67. package/build/components/Loading/VersionSkeleton.js.map +1 -0
  68. package/build/components/Loading/VersionSkeleton.mjs +111 -0
  69. package/build/components/Loading/VersionSkeleton.mjs.map +1 -0
  70. package/build/components/Loading/index.d.ts +2 -0
  71. package/build/components/Loading/index.js +4 -0
  72. package/build/components/Loading/index.mjs +4 -1
  73. package/build/components/Package/Package.js +5 -1
  74. package/build/components/Package/Package.js.map +1 -1
  75. package/build/components/Package/Package.mjs +6 -2
  76. package/build/components/Package/Package.mjs.map +1 -1
  77. package/build/components/Package/styles.d.ts +3 -0
  78. package/build/components/Package/styles.js +8 -0
  79. package/build/components/Package/styles.js.map +1 -1
  80. package/build/components/Package/styles.mjs +8 -1
  81. package/build/components/Package/styles.mjs.map +1 -1
  82. package/build/components/PackageList/PackageList.js +4 -4
  83. package/build/components/PackageList/PackageList.js.map +1 -1
  84. package/build/components/PackageList/PackageList.mjs +5 -5
  85. package/build/components/PackageList/PackageList.mjs.map +1 -1
  86. package/build/components/PackageList/PackageListToolbar.d.ts +15 -0
  87. package/build/components/PackageList/PackageListToolbar.js +127 -0
  88. package/build/components/PackageList/PackageListToolbar.js.map +1 -0
  89. package/build/components/PackageList/PackageListToolbar.mjs +119 -0
  90. package/build/components/PackageList/PackageListToolbar.mjs.map +1 -0
  91. package/build/components/PackageList/filterPackages.d.ts +16 -0
  92. package/build/components/PackageList/filterPackages.js +37 -0
  93. package/build/components/PackageList/filterPackages.js.map +1 -0
  94. package/build/components/PackageList/filterPackages.mjs +34 -0
  95. package/build/components/PackageList/filterPackages.mjs.map +1 -0
  96. package/build/components/RegistryInfoDialog/RegistryInfoDialog.js +18 -7
  97. package/build/components/RegistryInfoDialog/RegistryInfoDialog.js.map +1 -1
  98. package/build/components/RegistryInfoDialog/RegistryInfoDialog.mjs +18 -7
  99. package/build/components/RegistryInfoDialog/RegistryInfoDialog.mjs.map +1 -1
  100. package/build/components/RegistryInfoDialog/types.d.ts +1 -0
  101. package/build/components/Search/AutoComplete/AutoComplete.d.ts +3 -0
  102. package/build/components/Search/AutoComplete/AutoComplete.js +3 -1
  103. package/build/components/Search/AutoComplete/AutoComplete.js.map +1 -1
  104. package/build/components/Search/AutoComplete/AutoComplete.mjs +3 -1
  105. package/build/components/Search/AutoComplete/AutoComplete.mjs.map +1 -1
  106. package/build/components/Search/Search.js +28 -1
  107. package/build/components/Search/Search.js.map +1 -1
  108. package/build/components/Search/Search.mjs +31 -5
  109. package/build/components/Search/Search.mjs.map +1 -1
  110. package/build/components/Search/SearchItem.d.ts +12 -1
  111. package/build/components/Search/SearchItem.js +53 -70
  112. package/build/components/Search/SearchItem.js.map +1 -1
  113. package/build/components/Search/SearchItem.mjs +51 -67
  114. package/build/components/Search/SearchItem.mjs.map +1 -1
  115. package/build/components/Search/utils.d.ts +10 -0
  116. package/build/components/Search/utils.js +28 -1
  117. package/build/components/Search/utils.js.map +1 -1
  118. package/build/components/Search/utils.mjs +26 -2
  119. package/build/components/Search/utils.mjs.map +1 -1
  120. package/build/components/SettingsMenu/SettingsMenu.js +2 -2
  121. package/build/components/SettingsMenu/SettingsMenu.mjs +1 -1
  122. package/build/components/Versions/Versions.js +8 -2
  123. package/build/components/Versions/Versions.js.map +1 -1
  124. package/build/components/Versions/Versions.mjs +8 -2
  125. package/build/components/Versions/Versions.mjs.map +1 -1
  126. package/build/components/VisuallyHidden/index.d.ts +5 -0
  127. package/build/components/VisuallyHidden/index.js +17 -0
  128. package/build/components/VisuallyHidden/index.js.map +1 -0
  129. package/build/components/VisuallyHidden/index.mjs +15 -0
  130. package/build/components/VisuallyHidden/index.mjs.map +1 -0
  131. package/build/configuration.js +2 -1
  132. package/build/configuration.js.map +1 -1
  133. package/build/configuration.mjs +2 -1
  134. package/build/configuration.mjs.map +1 -1
  135. package/build/i18n/crowdin/ui.js +68 -11
  136. package/build/i18n/crowdin/ui.js.map +1 -1
  137. package/build/i18n/crowdin/ui.json +64 -11
  138. package/build/i18n/crowdin/ui.mjs +67 -12
  139. package/build/i18n/crowdin/ui.mjs.map +1 -1
  140. package/build/i18n/download_translations/cs-CZ/ui.js +68 -11
  141. package/build/i18n/download_translations/cs-CZ/ui.js.map +1 -1
  142. package/build/i18n/download_translations/cs-CZ/ui.json +64 -11
  143. package/build/i18n/download_translations/cs-CZ/ui.mjs +67 -12
  144. package/build/i18n/download_translations/cs-CZ/ui.mjs.map +1 -1
  145. package/build/i18n/download_translations/de-DE/ui.js +68 -11
  146. package/build/i18n/download_translations/de-DE/ui.js.map +1 -1
  147. package/build/i18n/download_translations/de-DE/ui.json +64 -11
  148. package/build/i18n/download_translations/de-DE/ui.mjs +67 -12
  149. package/build/i18n/download_translations/de-DE/ui.mjs.map +1 -1
  150. package/build/i18n/download_translations/es-ES/ui.js +68 -11
  151. package/build/i18n/download_translations/es-ES/ui.js.map +1 -1
  152. package/build/i18n/download_translations/es-ES/ui.json +64 -11
  153. package/build/i18n/download_translations/es-ES/ui.mjs +67 -12
  154. package/build/i18n/download_translations/es-ES/ui.mjs.map +1 -1
  155. package/build/i18n/download_translations/fr-FR/ui.js +68 -11
  156. package/build/i18n/download_translations/fr-FR/ui.js.map +1 -1
  157. package/build/i18n/download_translations/fr-FR/ui.json +64 -11
  158. package/build/i18n/download_translations/fr-FR/ui.mjs +67 -12
  159. package/build/i18n/download_translations/fr-FR/ui.mjs.map +1 -1
  160. package/build/i18n/download_translations/ga-IE/ui.js +68 -11
  161. package/build/i18n/download_translations/ga-IE/ui.js.map +1 -1
  162. package/build/i18n/download_translations/ga-IE/ui.json +64 -11
  163. package/build/i18n/download_translations/ga-IE/ui.mjs +67 -12
  164. package/build/i18n/download_translations/ga-IE/ui.mjs.map +1 -1
  165. package/build/i18n/download_translations/gl-ES/ui.js +68 -11
  166. package/build/i18n/download_translations/gl-ES/ui.js.map +1 -1
  167. package/build/i18n/download_translations/gl-ES/ui.json +64 -11
  168. package/build/i18n/download_translations/gl-ES/ui.mjs +67 -12
  169. package/build/i18n/download_translations/gl-ES/ui.mjs.map +1 -1
  170. package/build/i18n/download_translations/it-IT/ui.js +68 -11
  171. package/build/i18n/download_translations/it-IT/ui.js.map +1 -1
  172. package/build/i18n/download_translations/it-IT/ui.json +64 -11
  173. package/build/i18n/download_translations/it-IT/ui.mjs +67 -12
  174. package/build/i18n/download_translations/it-IT/ui.mjs.map +1 -1
  175. package/build/i18n/download_translations/ko-KR/ui.js +68 -11
  176. package/build/i18n/download_translations/ko-KR/ui.js.map +1 -1
  177. package/build/i18n/download_translations/ko-KR/ui.json +64 -11
  178. package/build/i18n/download_translations/ko-KR/ui.mjs +67 -12
  179. package/build/i18n/download_translations/ko-KR/ui.mjs.map +1 -1
  180. package/build/i18n/download_translations/pl-PL/ui.js +68 -11
  181. package/build/i18n/download_translations/pl-PL/ui.js.map +1 -1
  182. package/build/i18n/download_translations/pl-PL/ui.json +64 -11
  183. package/build/i18n/download_translations/pl-PL/ui.mjs +67 -12
  184. package/build/i18n/download_translations/pl-PL/ui.mjs.map +1 -1
  185. package/build/i18n/download_translations/pt-BR/ui.js +68 -11
  186. package/build/i18n/download_translations/pt-BR/ui.js.map +1 -1
  187. package/build/i18n/download_translations/pt-BR/ui.json +64 -11
  188. package/build/i18n/download_translations/pt-BR/ui.mjs +67 -12
  189. package/build/i18n/download_translations/pt-BR/ui.mjs.map +1 -1
  190. package/build/i18n/download_translations/ru-RU/ui.js +68 -11
  191. package/build/i18n/download_translations/ru-RU/ui.js.map +1 -1
  192. package/build/i18n/download_translations/ru-RU/ui.json +64 -11
  193. package/build/i18n/download_translations/ru-RU/ui.mjs +67 -12
  194. package/build/i18n/download_translations/ru-RU/ui.mjs.map +1 -1
  195. package/build/i18n/download_translations/sr-CS/ui.js +66 -12
  196. package/build/i18n/download_translations/sr-CS/ui.js.map +1 -1
  197. package/build/i18n/download_translations/sr-CS/ui.json +64 -11
  198. package/build/i18n/download_translations/sr-CS/ui.mjs +66 -13
  199. package/build/i18n/download_translations/sr-CS/ui.mjs.map +1 -1
  200. package/build/i18n/download_translations/tr-TR/ui.js +68 -11
  201. package/build/i18n/download_translations/tr-TR/ui.js.map +1 -1
  202. package/build/i18n/download_translations/tr-TR/ui.json +64 -11
  203. package/build/i18n/download_translations/tr-TR/ui.mjs +67 -12
  204. package/build/i18n/download_translations/tr-TR/ui.mjs.map +1 -1
  205. package/build/i18n/download_translations/vi-VN/ui.js +66 -12
  206. package/build/i18n/download_translations/vi-VN/ui.js.map +1 -1
  207. package/build/i18n/download_translations/vi-VN/ui.json +64 -11
  208. package/build/i18n/download_translations/vi-VN/ui.mjs +66 -13
  209. package/build/i18n/download_translations/vi-VN/ui.mjs.map +1 -1
  210. package/build/i18n/download_translations/yo-NG/ui.js +66 -12
  211. package/build/i18n/download_translations/yo-NG/ui.js.map +1 -1
  212. package/build/i18n/download_translations/yo-NG/ui.json +64 -11
  213. package/build/i18n/download_translations/yo-NG/ui.mjs +66 -13
  214. package/build/i18n/download_translations/yo-NG/ui.mjs.map +1 -1
  215. package/build/i18n/download_translations/zh-CN/ui.js +68 -11
  216. package/build/i18n/download_translations/zh-CN/ui.js.map +1 -1
  217. package/build/i18n/download_translations/zh-CN/ui.json +64 -11
  218. package/build/i18n/download_translations/zh-CN/ui.mjs +67 -12
  219. package/build/i18n/download_translations/zh-CN/ui.mjs.map +1 -1
  220. package/build/i18n/download_translations/zh-TW/ui.js +68 -11
  221. package/build/i18n/download_translations/zh-TW/ui.js.map +1 -1
  222. package/build/i18n/download_translations/zh-TW/ui.json +64 -11
  223. package/build/i18n/download_translations/zh-TW/ui.mjs +67 -12
  224. package/build/i18n/download_translations/zh-TW/ui.mjs.map +1 -1
  225. package/build/i18n/loadTranslationFile.d.ts +2 -2
  226. package/build/i18n/loadTranslationFile.js +2 -2
  227. package/build/i18n/loadTranslationFile.js.map +1 -1
  228. package/build/i18n/loadTranslationFile.mjs +2 -2
  229. package/build/i18n/loadTranslationFile.mjs.map +1 -1
  230. package/build/index.d.ts +1 -0
  231. package/build/index.js +8 -0
  232. package/build/index.mjs +4 -2
  233. package/build/mockServiceWorker.js +1 -0
  234. package/build/pages/Version/Version.js +2 -2
  235. package/build/pages/Version/Version.js.map +1 -1
  236. package/build/pages/Version/Version.mjs +2 -2
  237. package/build/pages/Version/Version.mjs.map +1 -1
  238. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.js +3 -1
  239. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.js.map +1 -1
  240. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.mjs +3 -1
  241. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.mjs.map +1 -1
  242. package/build/providers/ManifestsProvider/ManifestsProvider.d.ts +3 -0
  243. package/build/providers/ManifestsProvider/ManifestsProvider.js +9 -2
  244. package/build/providers/ManifestsProvider/ManifestsProvider.js.map +1 -1
  245. package/build/providers/ManifestsProvider/ManifestsProvider.mjs +10 -4
  246. package/build/providers/ManifestsProvider/ManifestsProvider.mjs.map +1 -1
  247. package/build/sections/Detail/ContainerContent.js +8 -0
  248. package/build/sections/Detail/ContainerContent.js.map +1 -1
  249. package/build/sections/Detail/ContainerContent.mjs +8 -1
  250. package/build/sections/Detail/ContainerContent.mjs.map +1 -1
  251. package/build/sections/Detail/Detail.d.ts +3 -6
  252. package/build/sections/Detail/Detail.js +13 -14
  253. package/build/sections/Detail/Detail.js.map +1 -1
  254. package/build/sections/Detail/Detail.mjs +14 -15
  255. package/build/sections/Detail/Detail.mjs.map +1 -1
  256. package/build/sections/Detail/Tabs.d.ts +3 -2
  257. package/build/sections/Detail/Tabs.js +9 -4
  258. package/build/sections/Detail/Tabs.js.map +1 -1
  259. package/build/sections/Detail/Tabs.mjs +9 -4
  260. package/build/sections/Detail/Tabs.mjs.map +1 -1
  261. package/build/sections/Footer/Footer.js +24 -3
  262. package/build/sections/Footer/Footer.js.map +1 -1
  263. package/build/sections/Footer/Footer.mjs +24 -4
  264. package/build/sections/Footer/Footer.mjs.map +1 -1
  265. package/build/sections/Footer/styles.d.ts +6 -0
  266. package/build/sections/Footer/styles.js +21 -2
  267. package/build/sections/Footer/styles.js.map +1 -1
  268. package/build/sections/Footer/styles.mjs +21 -3
  269. package/build/sections/Footer/styles.mjs.map +1 -1
  270. package/build/sections/Header/HeaderSettingsDialog.js +39 -10
  271. package/build/sections/Header/HeaderSettingsDialog.js.map +1 -1
  272. package/build/sections/Header/HeaderSettingsDialog.mjs +39 -10
  273. package/build/sections/Header/HeaderSettingsDialog.mjs.map +1 -1
  274. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.d.ts +1 -4
  275. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.js +98 -15
  276. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.js.map +1 -1
  277. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.mjs +100 -15
  278. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.mjs.map +1 -1
  279. package/build/sections/Home/Home.js +58 -2
  280. package/build/sections/Home/Home.js.map +1 -1
  281. package/build/sections/Home/Home.mjs +60 -4
  282. package/build/sections/Home/Home.mjs.map +1 -1
  283. package/build/utils/cli-utils.d.ts +10 -0
  284. package/build/utils/cli-utils.js +26 -0
  285. package/build/utils/cli-utils.js.map +1 -1
  286. package/build/utils/cli-utils.mjs +23 -1
  287. package/build/utils/cli-utils.mjs.map +1 -1
  288. package/build/utils/index.d.ts +1 -1
  289. package/build/utils/index.js +4 -0
  290. package/build/utils/index.mjs +2 -2
  291. package/build/utils/markdown.d.ts +6 -0
  292. package/build/utils/markdown.js +16 -0
  293. package/build/utils/markdown.js.map +1 -0
  294. package/build/utils/markdown.mjs +13 -0
  295. package/build/utils/markdown.mjs.map +1 -0
  296. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","names":["useTranslation","useMediaQuery","Tab","styled","MuiTabs"],"sources":["../../../src/sections/Detail/Tabs.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Tab from '@mui/material/Tab';\nimport { default as MuiTabs } from '@mui/material/Tabs';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../Theme';\n\ninterface Props {\n onChange: (event: React.ChangeEvent<{}>, newValue: number) => void;\n tabPosition: number;\n showUplinks?: boolean;\n}\n\nconst DetailContainerTabs: React.FC<Props> = ({ tabPosition, onChange, showUplinks }) => {\n const { t } = useTranslation();\n const isMobile = useMediaQuery('(max-width:599px)');\n\n return (\n <Tabs\n allowScrollButtonsMobile={true}\n onChange={onChange}\n scrollButtons={isMobile ? 'auto' : false}\n value={tabPosition}\n variant={isMobile ? 'scrollable' : 'fullWidth'}\n >\n <Tab data-testid={'readme-tab'} id={'readme-tab'} label={t('tab.readme')} />\n <Tab data-testid={'dependencies-tab'} id={'dependencies-tab'} label={t('tab.dependencies')} />\n <Tab data-testid={'versions-tab'} id={'versions-tab'} label={t('tab.versions')} />\n {showUplinks && (\n <Tab data-testid={'uplinks-tab'} id={'uplinks-tab'} label={t('tab.uplinks')} />\n )}\n </Tabs>\n );\n};\n\nexport default DetailContainerTabs;\n\nconst Tabs = styled(MuiTabs)<{ theme?: Theme }>({\n marginBottom: 16,\n});\n"],"mappings":";;;;;;;;;;;;;;AAeA,IAAM,uBAAwC,EAAE,aAAa,UAAU,kBAAkB;CACvF,MAAM,EAAE,OAAA,GAAMA,cAAAA,eAAAA,CAAe;CAC7B,MAAM,YAAA,GAAWC,4BAAAA,QAAAA,CAAc,mBAAmB;CAElD,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,MAAD;EACE,0BAA0B;EAChB;EACV,eAAe,WAAW,SAAS;EACnC,OAAO;EACP,SAAS,WAAW,eAAe;EALrC,UAAA;GAOE,iBAAA,GAAA,kBAAA,IAAA,CAACC,kBAAAA,SAAD;IAAK,eAAa;IAAc,IAAI;IAAc,OAAO,EAAE,YAAY;GAAI,CAAA;GAC3E,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,SAAD;IAAK,eAAa;IAAoB,IAAI;IAAoB,OAAO,EAAE,kBAAkB;GAAI,CAAA;GAC7F,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,SAAD;IAAK,eAAa;IAAgB,IAAI;IAAgB,OAAO,EAAE,cAAc;GAAI,CAAA;GAChF,eACC,iBAAA,GAAA,kBAAA,IAAA,CAACA,kBAAAA,SAAD;IAAK,eAAa;IAAe,IAAI;IAAe,OAAO,EAAE,aAAa;GAAI,CAAA;EAE5E;;AAEV;AAIA,IAAM,QAAA,GAAOC,gBAAAA,QAAAA,CAAOC,mBAAAA,OAAO,CAAC,CAAoB,EAC9C,cAAc,GAChB,CAAC"}
1
+ {"version":3,"file":"Tabs.js","names":["useTranslation","useMediaQuery","Tab","TabPosition","styled","MuiTabs"],"sources":["../../../src/sections/Detail/Tabs.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Tab from '@mui/material/Tab';\nimport { default as MuiTabs } from '@mui/material/Tabs';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../Theme';\nimport { TabPosition } from './ContainerContent';\n\ninterface Props {\n onChange: (event: React.SyntheticEvent, newValue: TabPosition) => void;\n tabPosition: TabPosition;\n showUplinks?: boolean;\n}\n\nconst DetailContainerTabs: React.FC<Props> = ({ tabPosition, onChange, showUplinks }) => {\n const { t } = useTranslation();\n const isMobile = useMediaQuery('(max-width:599px)');\n\n return (\n <Tabs\n allowScrollButtonsMobile={true}\n onChange={onChange}\n scrollButtons={isMobile ? 'auto' : false}\n value={tabPosition}\n variant={isMobile ? 'scrollable' : 'fullWidth'}\n >\n <Tab\n data-testid={'readme-tab'}\n id={'readme-tab'}\n label={t('tab.readme')}\n value={TabPosition.README}\n />\n <Tab\n data-testid={'dependencies-tab'}\n id={'dependencies-tab'}\n label={t('tab.dependencies')}\n value={TabPosition.DEPENDENCIES}\n />\n <Tab\n data-testid={'versions-tab'}\n id={'versions-tab'}\n label={t('tab.versions')}\n value={TabPosition.VERSIONS}\n />\n {showUplinks && (\n <Tab\n data-testid={'uplinks-tab'}\n id={'uplinks-tab'}\n label={t('tab.uplinks')}\n value={TabPosition.UPLINKS}\n />\n )}\n </Tabs>\n );\n};\n\nexport default DetailContainerTabs;\n\nconst Tabs = styled(MuiTabs)<{ theme?: Theme }>({\n marginBottom: 16,\n});\n"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAM,uBAAwC,EAAE,aAAa,UAAU,kBAAkB;CACvF,MAAM,EAAE,OAAA,GAAMA,cAAAA,eAAAA,CAAe;CAC7B,MAAM,YAAA,GAAWC,4BAAAA,QAAAA,CAAc,mBAAmB;CAElD,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,MAAD;EACE,0BAA0B;EAChB;EACV,eAAe,WAAW,SAAS;EACnC,OAAO;EACP,SAAS,WAAW,eAAe;EALrC,UAAA;GAOE,iBAAA,GAAA,kBAAA,IAAA,CAACC,kBAAAA,SAAD;IACE,eAAa;IACb,IAAI;IACJ,OAAO,EAAE,YAAY;IACrB,OAAOC,yBAAAA,YAAY;GACpB,CAAA;GACD,iBAAA,GAAA,kBAAA,IAAA,CAACD,kBAAAA,SAAD;IACE,eAAa;IACb,IAAI;IACJ,OAAO,EAAE,kBAAkB;IAC3B,OAAOC,yBAAAA,YAAY;GACpB,CAAA;GACD,iBAAA,GAAA,kBAAA,IAAA,CAACD,kBAAAA,SAAD;IACE,eAAa;IACb,IAAI;IACJ,OAAO,EAAE,cAAc;IACvB,OAAOC,yBAAAA,YAAY;GACpB,CAAA;GACA,eACC,iBAAA,GAAA,kBAAA,IAAA,CAACD,kBAAAA,SAAD;IACE,eAAa;IACb,IAAI;IACJ,OAAO,EAAE,aAAa;IACtB,OAAOC,yBAAAA,YAAY;GACpB,CAAA;EAEC;;AAEV;AAIA,IAAM,QAAA,GAAOC,gBAAAA,QAAAA,CAAOC,mBAAAA,OAAO,CAAC,CAAoB,EAC9C,cAAc,GAChB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { TabPosition } from "./ContainerContent.mjs";
1
2
  import styled from "@emotion/styled";
2
3
  import "react";
3
4
  import { useTranslation } from "react-i18next";
@@ -19,22 +20,26 @@ var DetailContainerTabs = ({ tabPosition, onChange, showUplinks }) => {
19
20
  /* @__PURE__ */ jsx(Tab, {
20
21
  "data-testid": "readme-tab",
21
22
  id: "readme-tab",
22
- label: t("tab.readme")
23
+ label: t("tab.readme"),
24
+ value: TabPosition.README
23
25
  }),
24
26
  /* @__PURE__ */ jsx(Tab, {
25
27
  "data-testid": "dependencies-tab",
26
28
  id: "dependencies-tab",
27
- label: t("tab.dependencies")
29
+ label: t("tab.dependencies"),
30
+ value: TabPosition.DEPENDENCIES
28
31
  }),
29
32
  /* @__PURE__ */ jsx(Tab, {
30
33
  "data-testid": "versions-tab",
31
34
  id: "versions-tab",
32
- label: t("tab.versions")
35
+ label: t("tab.versions"),
36
+ value: TabPosition.VERSIONS
33
37
  }),
34
38
  showUplinks && /* @__PURE__ */ jsx(Tab, {
35
39
  "data-testid": "uplinks-tab",
36
40
  id: "uplinks-tab",
37
- label: t("tab.uplinks")
41
+ label: t("tab.uplinks"),
42
+ value: TabPosition.UPLINKS
38
43
  })
39
44
  ]
40
45
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.mjs","names":["Tabs","MuiTabs"],"sources":["../../../src/sections/Detail/Tabs.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Tab from '@mui/material/Tab';\nimport { default as MuiTabs } from '@mui/material/Tabs';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../Theme';\n\ninterface Props {\n onChange: (event: React.ChangeEvent<{}>, newValue: number) => void;\n tabPosition: number;\n showUplinks?: boolean;\n}\n\nconst DetailContainerTabs: React.FC<Props> = ({ tabPosition, onChange, showUplinks }) => {\n const { t } = useTranslation();\n const isMobile = useMediaQuery('(max-width:599px)');\n\n return (\n <Tabs\n allowScrollButtonsMobile={true}\n onChange={onChange}\n scrollButtons={isMobile ? 'auto' : false}\n value={tabPosition}\n variant={isMobile ? 'scrollable' : 'fullWidth'}\n >\n <Tab data-testid={'readme-tab'} id={'readme-tab'} label={t('tab.readme')} />\n <Tab data-testid={'dependencies-tab'} id={'dependencies-tab'} label={t('tab.dependencies')} />\n <Tab data-testid={'versions-tab'} id={'versions-tab'} label={t('tab.versions')} />\n {showUplinks && (\n <Tab data-testid={'uplinks-tab'} id={'uplinks-tab'} label={t('tab.uplinks')} />\n )}\n </Tabs>\n );\n};\n\nexport default DetailContainerTabs;\n\nconst Tabs = styled(MuiTabs)<{ theme?: Theme }>({\n marginBottom: 16,\n});\n"],"mappings":";;;;;;;;AAeA,IAAM,uBAAwC,EAAE,aAAa,UAAU,kBAAkB;CACvF,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,WAAW,cAAc,mBAAmB;CAElD,OACE,qBAACA,QAAD;EACE,0BAA0B;EAChB;EACV,eAAe,WAAW,SAAS;EACnC,OAAO;EACP,SAAS,WAAW,eAAe;EALrC,UAAA;GAOE,oBAAC,KAAD;IAAK,eAAa;IAAc,IAAI;IAAc,OAAO,EAAE,YAAY;GAAI,CAAA;GAC3E,oBAAC,KAAD;IAAK,eAAa;IAAoB,IAAI;IAAoB,OAAO,EAAE,kBAAkB;GAAI,CAAA;GAC7F,oBAAC,KAAD;IAAK,eAAa;IAAgB,IAAI;IAAgB,OAAO,EAAE,cAAc;GAAI,CAAA;GAChF,eACC,oBAAC,KAAD;IAAK,eAAa;IAAe,IAAI;IAAe,OAAO,EAAE,aAAa;GAAI,CAAA;EAE5E;;AAEV;AAIA,IAAMA,SAAO,OAAOC,IAAO,CAAC,CAAoB,EAC9C,cAAc,GAChB,CAAC"}
1
+ {"version":3,"file":"Tabs.mjs","names":["Tabs","MuiTabs"],"sources":["../../../src/sections/Detail/Tabs.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport Tab from '@mui/material/Tab';\nimport { default as MuiTabs } from '@mui/material/Tabs';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Theme } from '../../Theme';\nimport { TabPosition } from './ContainerContent';\n\ninterface Props {\n onChange: (event: React.SyntheticEvent, newValue: TabPosition) => void;\n tabPosition: TabPosition;\n showUplinks?: boolean;\n}\n\nconst DetailContainerTabs: React.FC<Props> = ({ tabPosition, onChange, showUplinks }) => {\n const { t } = useTranslation();\n const isMobile = useMediaQuery('(max-width:599px)');\n\n return (\n <Tabs\n allowScrollButtonsMobile={true}\n onChange={onChange}\n scrollButtons={isMobile ? 'auto' : false}\n value={tabPosition}\n variant={isMobile ? 'scrollable' : 'fullWidth'}\n >\n <Tab\n data-testid={'readme-tab'}\n id={'readme-tab'}\n label={t('tab.readme')}\n value={TabPosition.README}\n />\n <Tab\n data-testid={'dependencies-tab'}\n id={'dependencies-tab'}\n label={t('tab.dependencies')}\n value={TabPosition.DEPENDENCIES}\n />\n <Tab\n data-testid={'versions-tab'}\n id={'versions-tab'}\n label={t('tab.versions')}\n value={TabPosition.VERSIONS}\n />\n {showUplinks && (\n <Tab\n data-testid={'uplinks-tab'}\n id={'uplinks-tab'}\n label={t('tab.uplinks')}\n value={TabPosition.UPLINKS}\n />\n )}\n </Tabs>\n );\n};\n\nexport default DetailContainerTabs;\n\nconst Tabs = styled(MuiTabs)<{ theme?: Theme }>({\n marginBottom: 16,\n});\n"],"mappings":";;;;;;;;;AAgBA,IAAM,uBAAwC,EAAE,aAAa,UAAU,kBAAkB;CACvF,MAAM,EAAE,MAAM,eAAe;CAC7B,MAAM,WAAW,cAAc,mBAAmB;CAElD,OACE,qBAACA,QAAD;EACE,0BAA0B;EAChB;EACV,eAAe,WAAW,SAAS;EACnC,OAAO;EACP,SAAS,WAAW,eAAe;EALrC,UAAA;GAOE,oBAAC,KAAD;IACE,eAAa;IACb,IAAI;IACJ,OAAO,EAAE,YAAY;IACrB,OAAO,YAAY;GACpB,CAAA;GACD,oBAAC,KAAD;IACE,eAAa;IACb,IAAI;IACJ,OAAO,EAAE,kBAAkB;IAC3B,OAAO,YAAY;GACpB,CAAA;GACD,oBAAC,KAAD;IACE,eAAa;IACb,IAAI;IACJ,OAAO,EAAE,cAAc;IACvB,OAAO,YAAY;GACpB,CAAA;GACA,eACC,oBAAC,KAAD;IACE,eAAa;IACb,IAAI;IACJ,OAAO,EAAE,aAAa;IACtB,OAAO,YAAY;GACpB,CAAA;EAEC;;AAEV;AAIA,IAAMA,SAAO,OAAOC,IAAO,CAAC,CAAoB,EAC9C,cAAc,GAChB,CAAC"}
@@ -3,6 +3,7 @@ const require_AppConfigurationProvider = require("../../providers/AppConfigurati
3
3
  const require_Earth = require("../../components/Icons/Earth.js");
4
4
  require("../../components/Icons/index.js");
5
5
  const require_Logo = require("../../components/Logo/Logo.js");
6
+ const require_markdown = require("../../utils/markdown.js");
6
7
  const require_styles = require("./styles.js");
7
8
  require("../../index.js");
8
9
  let _emotion_styled = require("@emotion/styled");
@@ -11,6 +12,8 @@ let react = require("react");
11
12
  react = require_runtime.__toESM(react);
12
13
  let react_i18next = require("react-i18next");
13
14
  let react_jsx_runtime = require("react/jsx-runtime");
15
+ let react_markdown = require("react-markdown");
16
+ react_markdown = require_runtime.__toESM(react_markdown);
14
17
  let country_flag_icons_react_3x2 = require("country-flag-icons/react/3x2");
15
18
  country_flag_icons_react_3x2 = require_runtime.__toESM(country_flag_icons_react_3x2);
16
19
  //#region src/sections/Footer/Footer.tsx
@@ -20,9 +23,18 @@ function goToVerdaccioWebsite() {
20
23
  var Footer = () => {
21
24
  const { t } = (0, react_i18next.useTranslation)();
22
25
  const { configOptions } = require_AppConfigurationProvider.useConfig();
26
+ const customFooter = configOptions?.footer?.trim();
27
+ const poweredBy = configOptions?.poweredBy;
28
+ const customPoweredBy = typeof poweredBy === "string" ? poweredBy.trim() : "";
23
29
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_styles.Wrapper, {
24
30
  "data-testid": "footer",
25
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_styles.Inner, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_styles.Left, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_i18next.Trans, {
31
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_styles.Inner, { children: [customFooter ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_styles.CustomContent, {
32
+ "data-testid": "footer-custom",
33
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_markdown.default, {
34
+ components: require_markdown.externalLinkComponents,
35
+ children: customFooter
36
+ })
37
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_styles.Left, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_i18next.Trans, {
26
38
  components: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_styles.Love, {}, "love")],
27
39
  i18nKey: "footer.made-with-love-on"
28
40
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(ToolTip, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(StyledEarth, {}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Flags, {
@@ -39,7 +51,13 @@ var Footer = () => {
39
51
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(country_flag_icons_react_3x2.AT, { title: t("flag.austria") }) }),
40
52
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(country_flag_icons_react_3x2.CA, { title: t("flag.canada") }) })
41
53
  ]
42
- })] })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_styles.Right, { children: configOptions?.version && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PoweredBy, {
54
+ })] })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_styles.Right, { children: customPoweredBy ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_styles.CustomContent, {
55
+ "data-testid": "footer-powered-by-custom",
56
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_markdown.default, {
57
+ components: require_markdown.externalLinkComponents,
58
+ children: customPoweredBy
59
+ })
60
+ }) : poweredBy !== false && configOptions?.version && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PoweredBy, {
43
61
  "data-testid": "version-footer",
44
62
  children: t("footer.powered-by")
45
63
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Logo.default, {
@@ -50,7 +68,10 @@ var Footer = () => {
50
68
  })] }) })] })
51
69
  });
52
70
  };
53
- var PoweredBy = (0, _emotion_styled.default)("span")(() => ({ paddingRight: "5px" }));
71
+ var PoweredBy = (0, _emotion_styled.default)("span")(() => ({
72
+ paddingRight: "5px",
73
+ whiteSpace: "nowrap"
74
+ }));
54
75
  var StyledEarth = (0, _emotion_styled.default)(require_Earth.Earth)(({ theme }) => ({ margin: theme.spacing(0, 1) }));
55
76
  var Flags = (0, _emotion_styled.default)("span")(({ theme }) => ({
56
77
  display: "inline-grid",
@@ -1 +1 @@
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
+ {"version":3,"file":"Footer.js","names":["useTranslation","useConfig","Wrapper","Inner","CustomContent","ReactMarkdown","externalLinkComponents","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';\nimport ReactMarkdown from 'react-markdown';\n\nimport type { Theme } from '../../';\nimport { Logo, useConfig } from '../../';\nimport { Earth } from '../../components/Icons';\nimport { externalLinkComponents } from '../../utils/markdown';\nimport { CustomContent, 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 const customFooter = configOptions?.footer?.trim();\n const poweredBy = configOptions?.poweredBy;\n const customPoweredBy = typeof poweredBy === 'string' ? poweredBy.trim() : '';\n return (\n <Wrapper data-testid=\"footer\">\n <Inner>\n {customFooter ? (\n <CustomContent data-testid=\"footer-custom\">\n <ReactMarkdown components={externalLinkComponents}>{customFooter}</ReactMarkdown>\n </CustomContent>\n ) : (\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 )}\n <Right>\n {customPoweredBy ? (\n <CustomContent data-testid=\"footer-powered-by-custom\">\n <ReactMarkdown components={externalLinkComponents}>{customPoweredBy}</ReactMarkdown>\n </CustomContent>\n ) : (\n poweredBy !== false &&\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 )}\n </Right>\n </Inner>\n </Wrapper>\n );\n};\n\nexport default Footer;\n\nconst PoweredBy = styled('span')(() => ({\n paddingRight: '5px',\n whiteSpace: 'nowrap',\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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"}
@@ -2,12 +2,14 @@ import { useConfig } from "../../providers/AppConfigurationProvider/AppConfigura
2
2
  import { Earth } from "../../components/Icons/Earth.mjs";
3
3
  import "../../components/Icons/index.mjs";
4
4
  import Logo from "../../components/Logo/Logo.mjs";
5
- import { Inner, Left, Love, Right, Wrapper } from "./styles.mjs";
5
+ import { externalLinkComponents } from "../../utils/markdown.mjs";
6
+ import { CustomContent, Inner, Left, Love, Right, Wrapper } from "./styles.mjs";
6
7
  import "../../index.mjs";
7
8
  import styled from "@emotion/styled";
8
9
  import "react";
9
10
  import { Trans, useTranslation } from "react-i18next";
10
11
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
12
+ import ReactMarkdown from "react-markdown";
11
13
  import * as FlagsIcon from "country-flag-icons/react/3x2";
12
14
  //#region src/sections/Footer/Footer.tsx
13
15
  function goToVerdaccioWebsite() {
@@ -16,9 +18,18 @@ function goToVerdaccioWebsite() {
16
18
  var Footer = () => {
17
19
  const { t } = useTranslation();
18
20
  const { configOptions } = useConfig();
21
+ const customFooter = configOptions?.footer?.trim();
22
+ const poweredBy = configOptions?.poweredBy;
23
+ const customPoweredBy = typeof poweredBy === "string" ? poweredBy.trim() : "";
19
24
  return /* @__PURE__ */ jsx(Wrapper, {
20
25
  "data-testid": "footer",
21
- children: /* @__PURE__ */ jsxs(Inner, { children: [/* @__PURE__ */ jsxs(Left, { children: [/* @__PURE__ */ jsx(Trans, {
26
+ children: /* @__PURE__ */ jsxs(Inner, { children: [customFooter ? /* @__PURE__ */ jsx(CustomContent, {
27
+ "data-testid": "footer-custom",
28
+ children: /* @__PURE__ */ jsx(ReactMarkdown, {
29
+ components: externalLinkComponents,
30
+ children: customFooter
31
+ })
32
+ }) : /* @__PURE__ */ jsxs(Left, { children: [/* @__PURE__ */ jsx(Trans, {
22
33
  components: [/* @__PURE__ */ jsx(Love, {}, "love")],
23
34
  i18nKey: "footer.made-with-love-on"
24
35
  }), /* @__PURE__ */ jsxs(ToolTip, { children: [/* @__PURE__ */ jsx(StyledEarth, {}), /* @__PURE__ */ jsxs(Flags, {
@@ -35,7 +46,13 @@ var Footer = () => {
35
46
  /* @__PURE__ */ jsx(Icon, { children: /* @__PURE__ */ jsx(FlagsIcon.AT, { title: t("flag.austria") }) }),
36
47
  /* @__PURE__ */ jsx(Icon, { children: /* @__PURE__ */ jsx(FlagsIcon.CA, { title: t("flag.canada") }) })
37
48
  ]
38
- })] })] }), /* @__PURE__ */ jsx(Right, { children: configOptions?.version && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(PoweredBy, {
49
+ })] })] }), /* @__PURE__ */ jsx(Right, { children: customPoweredBy ? /* @__PURE__ */ jsx(CustomContent, {
50
+ "data-testid": "footer-powered-by-custom",
51
+ children: /* @__PURE__ */ jsx(ReactMarkdown, {
52
+ components: externalLinkComponents,
53
+ children: customPoweredBy
54
+ })
55
+ }) : poweredBy !== false && configOptions?.version && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(PoweredBy, {
39
56
  "data-testid": "version-footer",
40
57
  children: t("footer.powered-by")
41
58
  }), /* @__PURE__ */ jsx(Logo, {
@@ -46,7 +63,10 @@ var Footer = () => {
46
63
  })] }) })] })
47
64
  });
48
65
  };
49
- var PoweredBy = styled("span")(() => ({ paddingRight: "5px" }));
66
+ var PoweredBy = styled("span")(() => ({
67
+ paddingRight: "5px",
68
+ whiteSpace: "nowrap"
69
+ }));
50
70
  var StyledEarth = styled(Earth)(({ theme }) => ({ margin: theme.spacing(0, 1) }));
51
71
  var Flags = styled("span")(({ theme }) => ({
52
72
  display: "inline-grid",
@@ -1 +1 @@
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
+ {"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';\nimport ReactMarkdown from 'react-markdown';\n\nimport type { Theme } from '../../';\nimport { Logo, useConfig } from '../../';\nimport { Earth } from '../../components/Icons';\nimport { externalLinkComponents } from '../../utils/markdown';\nimport { CustomContent, 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 const customFooter = configOptions?.footer?.trim();\n const poweredBy = configOptions?.poweredBy;\n const customPoweredBy = typeof poweredBy === 'string' ? poweredBy.trim() : '';\n return (\n <Wrapper data-testid=\"footer\">\n <Inner>\n {customFooter ? (\n <CustomContent data-testid=\"footer-custom\">\n <ReactMarkdown components={externalLinkComponents}>{customFooter}</ReactMarkdown>\n </CustomContent>\n ) : (\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 )}\n <Right>\n {customPoweredBy ? (\n <CustomContent data-testid=\"footer-powered-by-custom\">\n <ReactMarkdown components={externalLinkComponents}>{customPoweredBy}</ReactMarkdown>\n </CustomContent>\n ) : (\n poweredBy !== false &&\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 )}\n </Right>\n </Inner>\n </Wrapper>\n );\n};\n\nexport default Footer;\n\nconst PoweredBy = styled('span')(() => ({\n paddingRight: '5px',\n whiteSpace: 'nowrap',\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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"}
@@ -31,3 +31,9 @@ export declare const Love: import("@emotion/styled").StyledComponent<{
31
31
  } & {
32
32
  theme?: Theme;
33
33
  }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
34
+ export declare const CustomContent: import("@emotion/styled").StyledComponent<{
35
+ theme?: import("@emotion/react").Theme;
36
+ as?: React.ElementType;
37
+ } & {
38
+ theme?: Theme;
39
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -13,11 +13,13 @@ var Wrapper = (0, _emotion_styled.default)("div")(({ theme }) => ({
13
13
  var Inner = (0, _emotion_styled.default)("div")(({ theme }) => ({
14
14
  display: "flex",
15
15
  alignItems: "center",
16
+ flexWrap: "wrap",
17
+ gap: theme.spacing(1, 2),
16
18
  justifyContent: "flex-end",
17
- paddingLeft: 16,
18
- paddingRight: 16,
19
19
  width: "100%",
20
20
  [`@media (min-width: ${theme.breakPoints.medium}px)`]: {
21
+ paddingLeft: 16,
22
+ paddingRight: 16,
21
23
  minWidth: 400,
22
24
  maxWidth: 800,
23
25
  margin: "auto",
@@ -39,7 +41,24 @@ var Love = (0, _emotion_styled.default)("span")(({ theme }) => ({
39
41
  color: theme.palette.love,
40
42
  padding: "0 5px"
41
43
  }));
44
+ var CustomContent = (0, _emotion_styled.default)("div")(({ theme }) => ({
45
+ display: "flex",
46
+ flexWrap: "wrap",
47
+ alignItems: "center",
48
+ gap: theme.spacing(1),
49
+ minWidth: 0,
50
+ marginRight: "auto",
51
+ p: { margin: 0 },
52
+ img: {
53
+ maxHeight: 32,
54
+ maxWidth: 200,
55
+ verticalAlign: "middle",
56
+ marginRight: theme.spacing(1)
57
+ },
58
+ a: { color: theme.palette.mode === "dark" ? _mui_material_colors.common.white : theme.palette.primary.main }
59
+ }));
42
60
  //#endregion
61
+ exports.CustomContent = CustomContent;
43
62
  exports.Inner = Inner;
44
63
  exports.Left = Left;
45
64
  exports.Love = Love;
@@ -1 +1 @@
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
+ {"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 flexWrap: 'wrap',\n gap: theme.spacing(1, 2),\n justifyContent: 'flex-end',\n width: '100%',\n [`@media (min-width: ${theme.breakPoints.medium}px)`]: {\n paddingLeft: 16,\n paddingRight: 16,\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\nexport const CustomContent = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: theme.spacing(1),\n minWidth: 0,\n // keeps it on the left also when the powered-by wraps below it\n marginRight: 'auto',\n p: {\n margin: 0,\n },\n img: {\n maxHeight: 32,\n maxWidth: 200,\n verticalAlign: 'middle',\n marginRight: theme.spacing(1),\n },\n a: {\n color: theme.palette.mode === 'dark' ? common.white : theme.palette.primary.main,\n },\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,UAAU;CACV,KAAK,MAAM,QAAQ,GAAG,CAAC;CACvB,gBAAgB;CAChB,OAAO;EACN,sBAAsB,MAAM,YAAY,OAAO,OAAO;EACrD,aAAa;EACb,cAAc;EACd,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;AAEF,IAAa,iBAAA,GAAgBA,gBAAAA,QAAAA,CAAO,KAAK,CAAC,EAAqB,EAAE,aAAa;CAC5E,SAAS;CACT,UAAU;CACV,YAAY;CACZ,KAAK,MAAM,QAAQ,CAAC;CACpB,UAAU;CAEV,aAAa;CACb,GAAG,EACD,QAAQ,EACV;CACA,KAAK;EACH,WAAW;EACX,UAAU;EACV,eAAe;EACf,aAAa,MAAM,QAAQ,CAAC;CAC9B;CACA,GAAG,EACD,OAAO,MAAM,QAAQ,SAAS,SAASC,qBAAAA,OAAO,QAAQ,MAAM,QAAQ,QAAQ,KAC9E;AACF,EAAE"}
@@ -11,11 +11,13 @@ var Wrapper = styled("div")(({ theme }) => ({
11
11
  var Inner = styled("div")(({ theme }) => ({
12
12
  display: "flex",
13
13
  alignItems: "center",
14
+ flexWrap: "wrap",
15
+ gap: theme.spacing(1, 2),
14
16
  justifyContent: "flex-end",
15
- paddingLeft: 16,
16
- paddingRight: 16,
17
17
  width: "100%",
18
18
  [`@media (min-width: ${theme.breakPoints.medium}px)`]: {
19
+ paddingLeft: 16,
20
+ paddingRight: 16,
19
21
  minWidth: 400,
20
22
  maxWidth: 800,
21
23
  margin: "auto",
@@ -37,7 +39,23 @@ var Love = styled("span")(({ theme }) => ({
37
39
  color: theme.palette.love,
38
40
  padding: "0 5px"
39
41
  }));
42
+ var CustomContent = styled("div")(({ theme }) => ({
43
+ display: "flex",
44
+ flexWrap: "wrap",
45
+ alignItems: "center",
46
+ gap: theme.spacing(1),
47
+ minWidth: 0,
48
+ marginRight: "auto",
49
+ p: { margin: 0 },
50
+ img: {
51
+ maxHeight: 32,
52
+ maxWidth: 200,
53
+ verticalAlign: "middle",
54
+ marginRight: theme.spacing(1)
55
+ },
56
+ a: { color: theme.palette.mode === "dark" ? common.white : theme.palette.primary.main }
57
+ }));
40
58
  //#endregion
41
- export { Inner, Left, Love, Right, Wrapper };
59
+ export { CustomContent, Inner, Left, Love, Right, Wrapper };
42
60
 
43
61
  //# sourceMappingURL=styles.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.mjs","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,UAAU,OAAO,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,OAAO,QAAQ,MAAM,QAAQ;CACpE,UAAU;CACV,SAAS;AACX,EAAE;AAEF,IAAa,QAAQ,OAAO,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,OAAO,OAAO,KAAK,CAAC,EAAqB,EAAE,aAAa;CACnE,YAAY;CACZ,SAAS;EACR,sBAAsB,MAAM,YAAY,OAAO,OAAO,EACrD,SAAS,OACX;CACA,YAAY;AACd,EAAE;AAEF,IAAa,QAAQ,OAAO,IAAI,CAAC,CAAC;CAChC,SAAS;CACT,aAAa;AACf,CAAC;AAED,IAAa,OAAO,OAAO,MAAM,CAAC,EAAqB,EAAE,aAAa;CACpE,OAAO,MAAM,QAAQ;CACrB,SAAS;AACX,EAAE"}
1
+ {"version":3,"file":"styles.mjs","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 flexWrap: 'wrap',\n gap: theme.spacing(1, 2),\n justifyContent: 'flex-end',\n width: '100%',\n [`@media (min-width: ${theme.breakPoints.medium}px)`]: {\n paddingLeft: 16,\n paddingRight: 16,\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\nexport const CustomContent = styled('div')<{ theme?: Theme }>(({ theme }) => ({\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: theme.spacing(1),\n minWidth: 0,\n // keeps it on the left also when the powered-by wraps below it\n marginRight: 'auto',\n p: {\n margin: 0,\n },\n img: {\n maxHeight: 32,\n maxWidth: 200,\n verticalAlign: 'middle',\n marginRight: theme.spacing(1),\n },\n a: {\n color: theme.palette.mode === 'dark' ? common.white : theme.palette.primary.main,\n },\n}));\n"],"mappings":";;;AAKA,IAAa,UAAU,OAAO,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,OAAO,QAAQ,MAAM,QAAQ;CACpE,UAAU;CACV,SAAS;AACX,EAAE;AAEF,IAAa,QAAQ,OAAO,KAAK,CAAC,EAAqB,EAAE,aAAa;CACpE,SAAS;CACT,YAAY;CACZ,UAAU;CACV,KAAK,MAAM,QAAQ,GAAG,CAAC;CACvB,gBAAgB;CAChB,OAAO;EACN,sBAAsB,MAAM,YAAY,OAAO,OAAO;EACrD,aAAa;EACb,cAAc;EACd,UAAU;EACV,UAAU;EACV,QAAQ;EACR,gBAAgB;CAClB;EACC,sBAAsB,MAAM,YAAY,MAAM,OAAO,EACpD,UAAU,KACZ;AACF,EAAE;AAEF,IAAa,OAAO,OAAO,KAAK,CAAC,EAAqB,EAAE,aAAa;CACnE,YAAY;CACZ,SAAS;EACR,sBAAsB,MAAM,YAAY,OAAO,OAAO,EACrD,SAAS,OACX;CACA,YAAY;AACd,EAAE;AAEF,IAAa,QAAQ,OAAO,IAAI,CAAC,CAAC;CAChC,SAAS;CACT,aAAa;AACf,CAAC;AAED,IAAa,OAAO,OAAO,MAAM,CAAC,EAAqB,EAAE,aAAa;CACpE,OAAO,MAAM,QAAQ;CACrB,SAAS;AACX,EAAE;AAEF,IAAa,gBAAgB,OAAO,KAAK,CAAC,EAAqB,EAAE,aAAa;CAC5E,SAAS;CACT,UAAU;CACV,YAAY;CACZ,KAAK,MAAM,QAAQ,CAAC;CACpB,UAAU;CAEV,aAAa;CACb,GAAG,EACD,QAAQ,EACV;CACA,KAAK;EACH,WAAW;EACX,UAAU;EACV,eAAe;EACf,aAAa,MAAM,QAAQ,CAAC;CAC9B;CACA,GAAG,EACD,OAAO,MAAM,QAAQ,SAAS,SAAS,OAAO,QAAQ,MAAM,QAAQ,QAAQ,KAC9E;AACF,EAAE"}
@@ -1,7 +1,13 @@
1
1
  const require_runtime = require("../../_virtual/_rolldown/runtime.js");
2
+ const require_AppConfigurationProvider = require("../../providers/AppConfigurationProvider/AppConfigurationProvider.js");
2
3
  const require_configuration = require("../../configuration.js");
4
+ require("../../providers/index.js");
5
+ const require_DocsLink = require("../../components/DocsLink/DocsLink.js");
6
+ require("../../components/DocsLink/index.js");
3
7
  const require_RegistryInfoDialog = require("../../components/RegistryInfoDialog/RegistryInfoDialog.js");
4
8
  require("../../components/RegistryInfoDialog/index.js");
9
+ const require_markdown = require("../../utils/markdown.js");
10
+ const require_Help = require("../../components/Help/Help.js");
5
11
  const require_LanguageSwitch = require("./LanguageSwitch.js");
6
12
  const require_RegistryInfoContent = require("./RegistryInfoContent/RegistryInfoContent.js");
7
13
  require("./RegistryInfoContent/index.js");
@@ -35,7 +41,10 @@ function TabPanel(props) {
35
41
  role: "tabpanel",
36
42
  ...other,
37
43
  children: value === index && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_Box.default, {
38
- sx: { paddingTop: 3 },
44
+ sx: {
45
+ paddingTop: 3,
46
+ paddingBottom: 3
47
+ },
39
48
  children
40
49
  })
41
50
  });
@@ -51,7 +60,10 @@ var HeaderSettingsDialog = ({ onCloseDialog, isOpen }) => {
51
60
  };
52
61
  const { scope, base } = require_configuration.getConfiguration();
53
62
  const { t } = (0, react_i18next.useTranslation)();
63
+ const { configOptions } = require_AppConfigurationProvider.useConfig();
64
+ const customHelp = configOptions.help?.trim();
54
65
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_RegistryInfoDialog.default, {
66
+ docsUrl: require_DocsLink.VERDACCIO_DOCS_URL,
55
67
  onClose: onCloseDialog,
56
68
  open: isOpen,
57
69
  title: t("dialog.settings.title"),
@@ -67,13 +79,21 @@ var HeaderSettingsDialog = ({ onCloseDialog, isOpen }) => {
67
79
  "aria-label": "basic tabs example",
68
80
  onChange: handleChange,
69
81
  value,
70
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_Tab.default, {
71
- label: t("packageManagers.title"),
72
- ...a11yProps(0)
73
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_Tab.default, {
74
- label: t("language.title"),
75
- ...a11yProps(1)
76
- })]
82
+ children: [
83
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_Tab.default, {
84
+ label: t("packageManagers.title"),
85
+ ...a11yProps(0)
86
+ }),
87
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_Tab.default, {
88
+ "data-testid": "settings-publish-tab",
89
+ label: t("help.settings-tab"),
90
+ ...a11yProps(1)
91
+ }),
92
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_mui_material_Tab.default, {
93
+ label: t("language.title"),
94
+ ...a11yProps(2)
95
+ })
96
+ ]
77
97
  })
78
98
  }),
79
99
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TabPanel, {
@@ -84,13 +104,22 @@ var HeaderSettingsDialog = ({ onCloseDialog, isOpen }) => {
84
104
  scope
85
105
  })
86
106
  }),
87
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(TabPanel, {
107
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TabPanel, {
108
+ "data-testid": "settings-publish",
88
109
  index: 1,
89
110
  value,
111
+ children: customHelp ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Help.CustomHelp, { markdown: customHelp }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Help.HelpGuide, {})
112
+ }),
113
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(TabPanel, {
114
+ index: 2,
115
+ value,
90
116
  children: [
91
117
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TextContent, { children: t("language.description") }),
92
118
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_LanguageSwitch.default, {}),
93
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_markdown.default, { children: t("language.contribute") })
119
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_markdown.default, {
120
+ components: require_markdown.externalLinkComponents,
121
+ children: t("language.contribute")
122
+ })
94
123
  ]
95
124
  })
96
125
  ]
@@ -1 +1 @@
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
+ {"version":3,"file":"HeaderSettingsDialog.js","names":["Box","styled","React","getConfiguration","useTranslation","useConfig","RegistryInfoDialog","VERDACCIO_DOCS_URL","Tabs","Tab","RegistryInfoContent","CustomHelp","HelpGuide","LanguageSwitch","ReactMarkdown","externalLinkComponents"],"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 { VERDACCIO_DOCS_URL } from '../../components/DocsLink';\nimport { CustomHelp, HelpGuide } from '../../components/Help/Help';\nimport RegistryInfoDialog from '../../components/RegistryInfoDialog';\nimport { getConfiguration } from '../../configuration';\nimport { useConfig } from '../../providers';\nimport { externalLinkComponents } from '../../utils/markdown';\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, paddingBottom: 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 const { configOptions } = useConfig();\n const customHelp = configOptions.help?.trim();\n return (\n <RegistryInfoDialog\n docsUrl={VERDACCIO_DOCS_URL}\n onClose={onCloseDialog}\n open={isOpen}\n title={t('dialog.settings.title')}\n >\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\n data-testid=\"settings-publish-tab\"\n label={t('help.settings-tab')}\n {...a11yProps(1)}\n />\n <Tab label={t('language.title')} {...a11yProps(2)} />\n </Tabs>\n </Box>\n <TabPanel index={0} value={value}>\n <RegistryInfoContent registryUrl={base} scope={scope} />\n </TabPanel>\n {/* the welcome guide stays reachable once the registry has packages */}\n <TabPanel data-testid=\"settings-publish\" index={1} value={value}>\n {customHelp ? <CustomHelp markdown={customHelp} /> : <HelpGuide />}\n </TabPanel>\n <TabPanel index={2} value={value}>\n <TextContent>{t('language.description')}</TextContent>\n <LanguageSwitch />\n <ReactMarkdown components={externalLinkComponents}>\n {t('language.contribute')}\n </ReactMarkdown>\n </TabPanel>\n </Box>\n </RegistryInfoDialog>\n );\n};\n\nexport default HeaderSettingsDialog;\n"],"mappings":"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"}
@@ -1,6 +1,12 @@
1
+ import { useConfig } from "../../providers/AppConfigurationProvider/AppConfigurationProvider.mjs";
1
2
  import { getConfiguration } from "../../configuration.mjs";
3
+ import "../../providers/index.mjs";
4
+ import { VERDACCIO_DOCS_URL } from "../../components/DocsLink/DocsLink.mjs";
5
+ import "../../components/DocsLink/index.mjs";
2
6
  import RegistryInfoDialog from "../../components/RegistryInfoDialog/RegistryInfoDialog.mjs";
3
7
  import "../../components/RegistryInfoDialog/index.mjs";
8
+ import { externalLinkComponents } from "../../utils/markdown.mjs";
9
+ import { CustomHelp, HelpGuide } from "../../components/Help/Help.mjs";
4
10
  import LanguageSwitch from "./LanguageSwitch.mjs";
5
11
  import RegistryInfoContent from "./RegistryInfoContent/RegistryInfoContent.mjs";
6
12
  import "./RegistryInfoContent/index.mjs";
@@ -28,7 +34,10 @@ function TabPanel(props) {
28
34
  role: "tabpanel",
29
35
  ...other,
30
36
  children: value === index && /* @__PURE__ */ jsx(Box, {
31
- sx: { paddingTop: 3 },
37
+ sx: {
38
+ paddingTop: 3,
39
+ paddingBottom: 3
40
+ },
32
41
  children
33
42
  })
34
43
  });
@@ -44,7 +53,10 @@ var HeaderSettingsDialog = ({ onCloseDialog, isOpen }) => {
44
53
  };
45
54
  const { scope, base } = getConfiguration();
46
55
  const { t } = useTranslation();
56
+ const { configOptions } = useConfig();
57
+ const customHelp = configOptions.help?.trim();
47
58
  return /* @__PURE__ */ jsx(RegistryInfoDialog, {
59
+ docsUrl: VERDACCIO_DOCS_URL,
48
60
  onClose: onCloseDialog,
49
61
  open: isOpen,
50
62
  title: t("dialog.settings.title"),
@@ -60,13 +72,21 @@ var HeaderSettingsDialog = ({ onCloseDialog, isOpen }) => {
60
72
  "aria-label": "basic tabs example",
61
73
  onChange: handleChange,
62
74
  value,
63
- children: [/* @__PURE__ */ jsx(Tab, {
64
- label: t("packageManagers.title"),
65
- ...a11yProps(0)
66
- }), /* @__PURE__ */ jsx(Tab, {
67
- label: t("language.title"),
68
- ...a11yProps(1)
69
- })]
75
+ children: [
76
+ /* @__PURE__ */ jsx(Tab, {
77
+ label: t("packageManagers.title"),
78
+ ...a11yProps(0)
79
+ }),
80
+ /* @__PURE__ */ jsx(Tab, {
81
+ "data-testid": "settings-publish-tab",
82
+ label: t("help.settings-tab"),
83
+ ...a11yProps(1)
84
+ }),
85
+ /* @__PURE__ */ jsx(Tab, {
86
+ label: t("language.title"),
87
+ ...a11yProps(2)
88
+ })
89
+ ]
70
90
  })
71
91
  }),
72
92
  /* @__PURE__ */ jsx(TabPanel, {
@@ -77,13 +97,22 @@ var HeaderSettingsDialog = ({ onCloseDialog, isOpen }) => {
77
97
  scope
78
98
  })
79
99
  }),
80
- /* @__PURE__ */ jsxs(TabPanel, {
100
+ /* @__PURE__ */ jsx(TabPanel, {
101
+ "data-testid": "settings-publish",
81
102
  index: 1,
82
103
  value,
104
+ children: customHelp ? /* @__PURE__ */ jsx(CustomHelp, { markdown: customHelp }) : /* @__PURE__ */ jsx(HelpGuide, {})
105
+ }),
106
+ /* @__PURE__ */ jsxs(TabPanel, {
107
+ index: 2,
108
+ value,
83
109
  children: [
84
110
  /* @__PURE__ */ jsx(TextContent, { children: t("language.description") }),
85
111
  /* @__PURE__ */ jsx(LanguageSwitch, {}),
86
- /* @__PURE__ */ jsx(ReactMarkdown, { children: t("language.contribute") })
112
+ /* @__PURE__ */ jsx(ReactMarkdown, {
113
+ components: externalLinkComponents,
114
+ children: t("language.contribute")
115
+ })
87
116
  ]
88
117
  })
89
118
  ]