@verdaccio/ui-components 2.0.0-6-next.8 → 2.0.0-6-next.10

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 (305) hide show
  1. package/.babelrc +1 -9
  2. package/CHANGELOG.md +12 -0
  3. package/build/Theme/ResetStyles.js +34 -37
  4. package/build/Theme/StyleBaseline.js +4 -6
  5. package/build/Theme/ThemeProvider.js +24 -34
  6. package/build/Theme/colors.js +1 -1
  7. package/build/Theme/index.js +9 -10
  8. package/build/Theme/theme.js +26 -28
  9. package/build/__mocks__/react-markdown.js +6 -5
  10. package/build/__mocks__/remark-plugin.js +1 -1
  11. package/build/components/ActionBar/ActionBar.js +23 -36
  12. package/build/components/ActionBar/ActionBarAction.js +45 -58
  13. package/build/components/ActionBar/index.js +3 -3
  14. package/build/components/Author/Author.js +26 -21
  15. package/build/components/Author/index.js +3 -3
  16. package/build/components/Author/styles.js +5 -5
  17. package/build/components/CopyClipboard/CopyToClipBoard.js +21 -23
  18. package/build/components/CopyClipboard/index.js +4 -4
  19. package/build/components/CopyClipboard/utils.js +14 -16
  20. package/build/components/Dependencies/Dependencies.js +68 -66
  21. package/build/components/Dependencies/index.js +3 -3
  22. package/build/components/Dependencies/styles.js +9 -11
  23. package/build/components/Deprecated/Deprecated.js +12 -15
  24. package/build/components/Deprecated/index.js +3 -3
  25. package/build/components/Developers/Developers.js +30 -45
  26. package/build/components/Developers/Title.js +22 -21
  27. package/build/components/Developers/get-unique-developer-values.js +3 -13
  28. package/build/components/Developers/index.js +5 -6
  29. package/build/components/Developers/styles.js +7 -7
  30. package/build/components/Distribution/Dist.js +28 -23
  31. package/build/components/Distribution/index.js +3 -3
  32. package/build/components/Distribution/styles.js +7 -7
  33. package/build/components/Distribution/utils.js +0 -1
  34. package/build/components/Distribution/utilts.spec.js +18 -0
  35. package/build/components/Engines/Engines.js +46 -36
  36. package/build/components/Engines/index.js +3 -3
  37. package/build/components/Engines/styles.js +4 -4
  38. package/build/components/ErrorBoundary/ErrorBoundary.js +29 -50
  39. package/build/components/ErrorBoundary/index.js +3 -3
  40. package/build/components/FundButton/FundButton.js +28 -29
  41. package/build/components/FundButton/index.js +3 -3
  42. package/build/components/HeaderInfoDialog/HeaderInfoDialog.js +33 -44
  43. package/build/components/HeaderInfoDialog/index.js +3 -3
  44. package/build/components/Heading/Heading.js +10 -14
  45. package/build/components/Heading/index.js +3 -3
  46. package/build/components/Help/Help.js +22 -21
  47. package/build/components/Help/index.js +3 -3
  48. package/build/components/Help/styles.js +2 -2
  49. package/build/components/Icons/DevsIcons/CommonJS.js +9 -10
  50. package/build/components/Icons/DevsIcons/ES6Module.js +9 -10
  51. package/build/components/Icons/DevsIcons/Git.js +9 -10
  52. package/build/components/Icons/DevsIcons/NodeJS.js +9 -10
  53. package/build/components/Icons/DevsIcons/TypeScript.js +9 -10
  54. package/build/components/Icons/DevsIcons/index.js +5 -5
  55. package/build/components/Icons/Earth.js +11 -11
  56. package/build/components/Icons/FileBinary.js +4 -4
  57. package/build/components/Icons/Law.js +4 -4
  58. package/build/components/Icons/License.js +5 -5
  59. package/build/components/Icons/License.js.map +1 -1
  60. package/build/components/Icons/Managers/Npm.js +9 -10
  61. package/build/components/Icons/Managers/Pnpm.js +9 -10
  62. package/build/components/Icons/Managers/Yarn.js +9 -10
  63. package/build/components/Icons/Managers/index.js +3 -3
  64. package/build/components/Icons/SvgIcon.js +14 -22
  65. package/build/components/Icons/Time.js +6 -6
  66. package/build/components/Icons/Version.js +4 -4
  67. package/build/components/Icons/index.js +8 -8
  68. package/build/components/Install/Install.js +40 -26
  69. package/build/components/Install/InstallListItem.js +49 -40
  70. package/build/components/Install/index.js +3 -3
  71. package/build/components/Label/Label.js +13 -18
  72. package/build/components/Label/index.js +3 -3
  73. package/build/components/Link/Link.js +16 -15
  74. package/build/components/Link/index.js +3 -3
  75. package/build/components/Loading/Loading.js +10 -12
  76. package/build/components/Loading/Spinner/Spinner.js +27 -37
  77. package/build/components/Loading/Spinner/index.js +3 -3
  78. package/build/components/Loading/index.js +3 -3
  79. package/build/components/Loading/styles.js +11 -12
  80. package/build/components/LoginDialog/LoginDialog.js +44 -83
  81. package/build/components/LoginDialog/LoginDialogCloseButton.js +20 -19
  82. package/build/components/LoginDialog/LoginDialogForm.js +41 -40
  83. package/build/components/LoginDialog/LoginDialogFormError.js +26 -28
  84. package/build/components/LoginDialog/LoginDialogHeader.js +29 -29
  85. package/build/components/LoginDialog/index.js +3 -3
  86. package/build/components/Logo/Logo.js +35 -36
  87. package/build/components/Logo/index.js +3 -3
  88. package/build/components/MenuItem/MenuItem.js +8 -9
  89. package/build/components/MenuItem/index.js +3 -3
  90. package/build/components/NoItems/NoItems.js +10 -21
  91. package/build/components/NoItems/index.js +3 -3
  92. package/build/components/NotFound/NotFound.js +25 -26
  93. package/build/components/NotFound/index.js +3 -3
  94. package/build/components/Package/Package.js +112 -152
  95. package/build/components/Package/Tag/Tag.js +6 -7
  96. package/build/components/Package/Tag/index.js +3 -3
  97. package/build/components/Package/Tag/styles.js +2 -2
  98. package/build/components/Package/index.js +5 -6
  99. package/build/components/Package/styles.js +65 -70
  100. package/build/components/PackageList/PackageList.js +56 -52
  101. package/build/components/PackageList/index.js +3 -3
  102. package/build/components/RawViewer/RawViewer.js +23 -22
  103. package/build/components/RawViewer/index.js +3 -3
  104. package/build/components/Readme/Readme.js +21 -21
  105. package/build/components/Readme/Readme.js.map +1 -1
  106. package/build/components/Readme/Readme.spec.js +6 -6
  107. package/build/components/Readme/Readme.spec.js.map +1 -1
  108. package/build/components/Readme/index.js +3 -3
  109. package/build/components/Readme/utils.js +7 -8
  110. package/build/components/RegistryInfoDialog/RegistryInfoDialog.js +14 -14
  111. package/build/components/RegistryInfoDialog/index.js +3 -3
  112. package/build/components/RegistryInfoDialog/styles.js +17 -19
  113. package/build/components/Repository/Repository.js +37 -36
  114. package/build/components/Repository/index.js +3 -3
  115. package/build/components/Search/AutoComplete/AutoComplete.js +26 -35
  116. package/build/components/Search/AutoComplete/index.js +3 -3
  117. package/build/components/Search/AutoComplete/styles.js +15 -16
  118. package/build/components/Search/Search.js +54 -54
  119. package/build/components/Search/SearchItem.js +57 -65
  120. package/build/components/Search/index.js +3 -3
  121. package/build/components/Search/styles.js +16 -17
  122. package/build/components/SettingsMenu/SettingsMenu.js +68 -0
  123. package/build/components/SettingsMenu/index.js +14 -0
  124. package/build/components/SideBarTittle/SideBarTittle.js +33 -31
  125. package/build/components/SideBarTittle/index.js +3 -3
  126. package/build/components/SideBarTittle/utils.js +4 -4
  127. package/build/components/TextField/TextField.js +18 -23
  128. package/build/components/TextField/index.js +3 -3
  129. package/build/components/UpLinks/UpLinks.js +18 -16
  130. package/build/components/UpLinks/index.js +3 -3
  131. package/build/components/UpLinks/styles.js +20 -22
  132. package/build/components/Versions/HistoryList.js +25 -25
  133. package/build/components/Versions/TagList.js +19 -22
  134. package/build/components/Versions/Versions.js +21 -20
  135. package/build/components/Versions/index.js +3 -3
  136. package/build/components/Versions/styles.js +19 -21
  137. package/build/hooks/index.js +5 -5
  138. package/build/hooks/useLocalStorage.js +18 -27
  139. package/build/hooks/useOnClickOutside.js +5 -5
  140. package/build/index.js +104 -97
  141. package/build/layouts/Version/Version.js +8 -8
  142. package/build/layouts/Version/index.js +3 -3
  143. package/build/providers/AppConfigurationProvider/AppConfigurationProvider.js +18 -31
  144. package/build/providers/AppConfigurationProvider/index.js +5 -6
  145. package/build/providers/PersistenceSettingProvider/PersistenceSettingProvider.js +38 -0
  146. package/build/providers/PersistenceSettingProvider/index.js +21 -0
  147. package/build/providers/TranslatorProvider/TranslatorProvider.js +26 -51
  148. package/build/providers/TranslatorProvider/TranslatorProvider.spec.js +54 -0
  149. package/build/providers/TranslatorProvider/index.js +6 -7
  150. package/build/providers/VersionProvider/VersionProvider.js +32 -34
  151. package/build/providers/VersionProvider/index.js +5 -6
  152. package/build/providers/index.js +3 -3
  153. package/build/sections/Detail/ContainerContent.js +24 -35
  154. package/build/sections/Detail/Detail.js +21 -30
  155. package/build/sections/Detail/ReadmeSection.js +7 -6
  156. package/build/sections/Detail/Tabs.js +16 -14
  157. package/build/sections/Detail/index.js +3 -3
  158. package/build/sections/Footer/Footer.js +55 -57
  159. package/build/sections/Footer/index.js +3 -3
  160. package/build/sections/Footer/styles.js +41 -47
  161. package/build/sections/Header/Header.js +36 -70
  162. package/build/sections/Header/HeaderGreetings.js +10 -8
  163. package/build/sections/Header/HeaderLeft.js +11 -12
  164. package/build/sections/Header/HeaderMenu.js +18 -17
  165. package/build/sections/Header/HeaderRight.js +41 -51
  166. package/build/sections/Header/HeaderSettingsDialog.js +48 -57
  167. package/build/sections/Header/HeaderToolTip.js +10 -11
  168. package/build/sections/Header/HeaderToolTipIcon.js +19 -19
  169. package/build/sections/Header/LanguageSwitch.js +51 -56
  170. package/build/sections/Header/RegistryInfoContent/RegistryInfoContent.js +72 -71
  171. package/build/sections/Header/RegistryInfoContent/index.js +3 -3
  172. package/build/sections/Header/RegistryInfoContent/styles.js +13 -16
  173. package/build/sections/Header/RegistryInfoDialog/RegistryInfoDialog.js +14 -14
  174. package/build/sections/Header/RegistryInfoDialog/index.js +3 -3
  175. package/build/sections/Header/RegistryInfoDialog/styles.js +17 -19
  176. package/build/sections/Header/index.js +3 -3
  177. package/build/sections/Header/styles.js +35 -38
  178. package/build/sections/Home/Home.js +11 -14
  179. package/build/sections/Home/index.js +3 -3
  180. package/build/sections/SideBar/Sidebar.js +38 -54
  181. package/build/sections/SideBar/index.js +3 -3
  182. package/build/sections/index.js +5 -5
  183. package/build/src/components/ActionBar/ActionBar.stories.d.ts +11 -6
  184. package/build/src/components/ActionBar/ActionBarAction.d.ts +1 -34
  185. package/build/src/components/Author/styles.d.ts +1 -20
  186. package/build/src/components/Dependencies/Dependencies.stories.d.ts +8 -6
  187. package/build/src/components/Dependencies/styles.d.ts +2 -30
  188. package/build/src/components/Deprecated/Deprecated.d.ts +1 -11
  189. package/build/src/components/Developers/Developers.d.ts +1 -34
  190. package/build/src/components/Developers/styles.d.ts +1 -34
  191. package/build/src/components/Distribution/Dist.stories.d.ts +4 -1
  192. package/build/src/components/Distribution/styles.d.ts +3 -76
  193. package/build/src/components/Distribution/utils.d.ts +2 -1
  194. package/build/src/components/Engines/styles.d.ts +1 -21
  195. package/build/src/components/FundButton/FundButton.stories.d.ts +7 -5
  196. package/build/src/components/Help/styles.d.ts +1 -10
  197. package/build/src/components/Icons/Earth.d.ts +2 -2
  198. package/build/src/components/Icons/FileBinary.d.ts +2 -2
  199. package/build/src/components/Icons/Law.d.ts +2 -2
  200. package/build/src/components/Icons/License.d.ts +2 -2
  201. package/build/src/components/Icons/SvgIcon.d.ts +1 -1
  202. package/build/src/components/Icons/Time.d.ts +2 -2
  203. package/build/src/components/Icons/Version.d.ts +2 -2
  204. package/build/src/components/Install/Install.stories.d.ts +9 -5
  205. package/build/src/components/MenuItem/MenuItem.d.ts +1 -1
  206. package/build/src/components/NoItems/NoItems.d.ts +0 -1
  207. package/build/src/components/Package/styles.d.ts +3 -61
  208. package/build/src/components/RegistryInfoDialog/styles.d.ts +1 -11
  209. package/build/src/components/Repository/Repository.stories.d.ts +8 -6
  210. package/build/src/components/Search/AutoComplete/styles.d.ts +1 -1
  211. package/build/src/components/Search/Search.d.ts +1 -1
  212. package/build/src/components/Search/styles.d.ts +2 -16
  213. package/build/src/components/SettingsMenu/SettingsMenu.d.ts +6 -0
  214. package/build/src/components/SettingsMenu/index.d.ts +1 -0
  215. package/build/src/components/SideBarTittle/SideBarTittle.stories.d.ts +9 -0
  216. package/build/src/components/TextField/TextField.d.ts +1 -1
  217. package/build/src/components/Versions/types.d.ts +0 -2
  218. package/build/src/index.d.ts +1 -0
  219. package/build/src/layouts/Version/Version.stories.d.ts +7 -6
  220. package/build/src/providers/PersistenceSettingProvider/PersistenceSettingProvider.d.ts +6 -0
  221. package/build/src/providers/PersistenceSettingProvider/index.d.ts +1 -0
  222. package/build/src/providers/TranslatorProvider/TranslatorProvider.d.ts +2 -1
  223. package/build/src/providers/TranslatorProvider/TranslatorProvider.spec.d.ts +1 -0
  224. package/build/src/providers/VersionProvider/VersionProvider.d.ts +0 -2
  225. package/build/src/sections/Header/LanguageSwitch.d.ts +3 -23
  226. package/build/src/sections/Header/RegistryInfoDialog/styles.d.ts +1 -11
  227. package/build/src/sections/Header/styles.d.ts +8 -166
  228. package/build/src/types/packageMeta.d.ts +6 -6
  229. package/build/store/api.js +35 -52
  230. package/build/store/index.js +9 -9
  231. package/build/store/models/configuration.js +12 -34
  232. package/build/store/models/download.js +22 -46
  233. package/build/store/models/index.js +1 -1
  234. package/build/store/models/login.js +55 -79
  235. package/build/store/models/manifest.js +52 -78
  236. package/build/store/models/packages.js +22 -51
  237. package/build/store/models/search.js +59 -87
  238. package/build/store/storage.js +5 -5
  239. package/build/store/store.js +3 -3
  240. package/build/test/i18n-config.js +5 -5
  241. package/build/test/test-react-testing-library.js +19 -24
  242. package/build/utils/__partials__/packageMeta.js +1 -1
  243. package/build/utils/cli-utils.js +27 -20
  244. package/build/utils/index.js +10 -11
  245. package/build/utils/loadable.js +9 -12
  246. package/build/utils/routes.js +4 -4
  247. package/build/utils/url.js +9 -9
  248. package/build/utils/utils.js +18 -22
  249. package/package.json +22 -19
  250. package/src/Theme/ThemeProvider.tsx +0 -1
  251. package/src/components/ActionBar/ActionBar.stories.tsx +60 -46
  252. package/src/components/Author/Author.stories.tsx +1 -1
  253. package/src/components/CopyClipboard/CopyToClipBoard.stories.tsx +1 -1
  254. package/src/components/CopyClipboard/CopyToClipBoard.tsx +2 -2
  255. package/src/components/Dependencies/Dependencies.stories.tsx +151 -51
  256. package/src/components/Dependencies/Dependencies.tsx +61 -51
  257. package/src/components/Deprecated/Deprecated.stories.tsx +1 -1
  258. package/src/components/Deprecated/Deprecated.tsx +1 -1
  259. package/src/components/Developers/Developers.stories.tsx +1 -1
  260. package/src/components/Distribution/Dist.stories.tsx +46 -3
  261. package/src/components/Distribution/Dist.test.tsx +33 -6
  262. package/src/components/Distribution/Dist.tsx +13 -5
  263. package/src/components/Distribution/utils.ts +3 -2
  264. package/src/components/Distribution/utilts.spec.ts +17 -0
  265. package/src/components/Engines/Engines.stories.tsx +1 -1
  266. package/src/components/FundButton/FundButton.stories.tsx +48 -17
  267. package/src/components/Help/Help.stories.tsx +1 -1
  268. package/src/components/Icons/Icons.stories.tsx +1 -1
  269. package/src/components/Install/Install.stories.tsx +79 -26
  270. package/src/components/Install/Install.tsx +28 -14
  271. package/src/components/Install/InstallListItem.tsx +24 -8
  272. package/src/components/Loading/Loading.stories.tsx +1 -1
  273. package/src/components/LoginDialog/LoginDialog.stories.tsx +1 -1
  274. package/src/components/NoItems/NoItems.stories.tsx +1 -1
  275. package/src/components/NoItems/NoItems.tsx +5 -6
  276. package/src/components/Package/Package.tsx +1 -1
  277. package/src/components/Repository/Repository.stories.tsx +39 -12
  278. package/src/components/Repository/Repository.tsx +2 -4
  279. package/src/components/Search/Search.stories.tsx +1 -1
  280. package/src/components/SettingsMenu/SettingsMenu.tsx +67 -0
  281. package/src/components/SettingsMenu/index.ts +1 -0
  282. package/src/components/SideBarTittle/SideBarTittle.stories.tsx +68 -0
  283. package/src/components/UpLinks/Uplinks.stories.tsx +1 -1
  284. package/src/components/Versions/types.ts +0 -2
  285. package/src/index.ts +2 -0
  286. package/src/layouts/Version/Version.stories.tsx +35 -20
  287. package/src/providers/AppConfigurationProvider/AppConfigurationProvider.tsx +0 -1
  288. package/src/providers/PersistenceSettingProvider/PersistenceSettingProvider.tsx +57 -0
  289. package/src/providers/PersistenceSettingProvider/index.ts +1 -0
  290. package/src/providers/TranslatorProvider/TranslatorProvider.spec.tsx +52 -0
  291. package/src/providers/TranslatorProvider/TranslatorProvider.tsx +2 -1
  292. package/src/providers/VersionProvider/VersionProvider.test.tsx +1 -1
  293. package/src/providers/VersionProvider/VersionProvider.tsx +0 -2
  294. package/src/sections/Detail/Detail.stories.tsx +1 -1
  295. package/src/sections/Header/Header.stories.tsx +1 -1
  296. package/src/sections/Home/Home.stories.tsx +1 -1
  297. package/src/sections/SideBar/Sidebar.stories.tsx +1 -1
  298. package/src/sections/SideBar/Sidebar.test.tsx +0 -1
  299. package/src/test/test-react-testing-library.tsx +17 -12
  300. package/src/types/index.d.ts +2 -0
  301. package/src/types/packageMeta.ts +6 -6
  302. package/src/utils/url.test.ts +4 -0
  303. package/src/utils/url.ts +1 -1
  304. package/tsconfig.build.json +1 -0
  305. package/tsconfig.json +0 -1
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  import { default as Uplinks } from '.';
4
4
 
5
5
  export default {
6
- title: 'Uplinks',
6
+ title: 'Components/Detail/Uplinks',
7
7
  };
8
8
 
9
9
  export const UplinksAll: any = () => {
@@ -1,7 +1,6 @@
1
1
  import { PackageMetaInterface } from '../../types/packageMeta';
2
2
 
3
3
  export interface DetailContextProps {
4
- enableLoading: () => void;
5
4
  hasNotBeenFound: boolean;
6
5
  isLoading: boolean;
7
6
  packageMeta: PackageMetaInterface;
@@ -11,7 +10,6 @@ export interface DetailContextProps {
11
10
  }
12
11
 
13
12
  export interface VersionPageConsumerProps {
14
- enableLoading: () => void;
15
13
  packageMeta: PackageMetaInterface;
16
14
  packageName: string;
17
15
  packageVersion?: string;
package/src/index.ts CHANGED
@@ -42,6 +42,8 @@ export { VersionLayout } from './layouts/Version';
42
42
 
43
43
  // providers
44
44
  export { default as AppConfigurationProvider } from './providers/AppConfigurationProvider';
45
+ export { default as PersistenceSettingProvider } from './providers/PersistenceSettingProvider';
46
+
45
47
  export * from './providers/AppConfigurationProvider';
46
48
  export { TranslatorProvider, useLanguage, LanguageItem } from './providers/TranslatorProvider';
47
49
  export * from './providers/TranslatorProvider';
@@ -1,29 +1,44 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
1
2
  import React from 'react';
2
3
  import { MemoryRouter, Route } from 'react-router';
3
4
 
4
5
  import { VersionProvider } from '../../providers';
5
6
  import VersionLayout from './Version';
6
7
 
7
- export default {
8
- title: 'VersionLayout',
8
+ const meta: Meta<typeof VersionLayout> = {
9
+ title: 'Layout/Version',
10
+ component: VersionLayout,
9
11
  };
10
12
 
11
- export const VersionLayoutStorybook: any = () => (
12
- <MemoryRouter initialEntries={[`/-/web/detail/storybook`]}>
13
- <Route exact={true} path="/-/web/detail/:package">
14
- <VersionProvider>
15
- <VersionLayout />
16
- </VersionProvider>
17
- </Route>
18
- </MemoryRouter>
19
- );
13
+ export default meta;
14
+ type Story = StoryObj<typeof VersionLayout>;
20
15
 
21
- export const VersionLayoutJquery: any = () => (
22
- <MemoryRouter initialEntries={[`/-/web/detail/jquery`]}>
23
- <Route exact={true} path="/-/web/detail/:package">
24
- <VersionProvider>
25
- <VersionLayout />
26
- </VersionProvider>
27
- </Route>
28
- </MemoryRouter>
29
- );
16
+ export const Primary: Story = {
17
+ name: 'Storybook',
18
+ render: () => {
19
+ return (
20
+ <MemoryRouter initialEntries={[`/-/web/detail/storybook`]}>
21
+ <Route exact={true} path="/-/web/detail/:package">
22
+ <VersionProvider>
23
+ <VersionLayout />
24
+ </VersionProvider>
25
+ </Route>
26
+ </MemoryRouter>
27
+ );
28
+ },
29
+ };
30
+
31
+ export const jQuery: Story = {
32
+ name: 'jQuery',
33
+ render: () => {
34
+ return (
35
+ <MemoryRouter initialEntries={[`/-/web/detail/jquery`]}>
36
+ <Route exact={true} path="/-/web/detail/:package">
37
+ <VersionProvider>
38
+ <VersionLayout />
39
+ </VersionProvider>
40
+ </Route>
41
+ </MemoryRouter>
42
+ );
43
+ },
44
+ };
@@ -54,7 +54,6 @@ const AppConfigurationContext = createContext<ConfigProviderProps>(defaultValues
54
54
  const AppConfigurationProvider: FunctionComponent<{ children: React.ReactElement<any> }> = ({
55
55
  children,
56
56
  }) => {
57
- // Read only
58
57
  const [configOptions] = useState<TemplateUIOptions>(getConfiguration());
59
58
 
60
59
  const value = useMemo(
@@ -0,0 +1,57 @@
1
+ import React, {
2
+ FunctionComponent,
3
+ createContext,
4
+ useCallback,
5
+ useContext,
6
+ useMemo,
7
+ useState,
8
+ } from 'react';
9
+
10
+ import useLocalStorage from '../../hooks/useLocalStorage';
11
+
12
+ type PersistenceSettingsProps = {
13
+ isGlobal?: boolean;
14
+ };
15
+
16
+ const defaultValues: PersistenceSettingsProps = {
17
+ isGlobal: false,
18
+ };
19
+
20
+ const PersistenceSettingContext = createContext<any>(defaultValues);
21
+
22
+ const PersistenceSettingProvider: FunctionComponent<{ children: React.ReactElement<any> }> = ({
23
+ children,
24
+ }) => {
25
+ // get the initial state from the local storage
26
+ const [settings, setSettings] = useLocalStorage(`settings-ui-verdaccio`, {});
27
+
28
+ const [localSettings, setLocalSettings] = useState<PersistenceSettingsProps>(
29
+ settings ? settings : {}
30
+ );
31
+
32
+ const updateSettings = useCallback(
33
+ (newSettings: React.SetStateAction<PersistenceSettingsProps>) => {
34
+ setLocalSettings(newSettings);
35
+ setSettings(newSettings);
36
+ },
37
+ [setSettings]
38
+ );
39
+
40
+ const value = useMemo(
41
+ () => ({
42
+ localSettings: localSettings ? localSettings : {},
43
+ updateSettings,
44
+ }),
45
+ [localSettings, updateSettings]
46
+ );
47
+
48
+ return (
49
+ <PersistenceSettingContext.Provider value={value}>
50
+ {children}
51
+ </PersistenceSettingContext.Provider>
52
+ );
53
+ };
54
+
55
+ export default PersistenceSettingProvider;
56
+
57
+ export const useSettings = () => useContext(PersistenceSettingContext);
@@ -0,0 +1 @@
1
+ export { default, useSettings } from './PersistenceSettingProvider';
@@ -0,0 +1,52 @@
1
+ import { render } from '@testing-library/react';
2
+ import i18n from 'i18next';
3
+ import React from 'react';
4
+ import { initReactI18next } from 'react-i18next';
5
+ import { useTranslation } from 'react-i18next';
6
+
7
+ import TranslatorProvider, { useLanguage } from './TranslatorProvider';
8
+
9
+ i18n.use(initReactI18next).init({
10
+ lng: 'en-US',
11
+ fallbackLng: 'en-US',
12
+ whitelist: ['en-US'],
13
+ load: 'currentOnly',
14
+ react: {
15
+ useSuspense: false,
16
+ },
17
+ resources: {
18
+ 'en-US': {
19
+ translation: {
20
+ 'copy-to-clipboard': 'Copy to clipboard',
21
+ 'author-anonymous': 'Anonymous',
22
+ 'author-unknown': 'Unknown',
23
+ },
24
+ },
25
+ },
26
+ debug: false,
27
+ interpolation: {
28
+ escapeValue: false,
29
+ },
30
+ });
31
+
32
+ const RandomComponent = () => {
33
+ const { language } = useLanguage();
34
+ const { t } = useTranslation();
35
+ return (
36
+ <div>
37
+ <div>{language}</div>
38
+ <div>{t('copy-to-clipboard')}</div>
39
+ </div>
40
+ );
41
+ };
42
+
43
+ test('should provide translation', () => {
44
+ const mount = jest.fn();
45
+ const { getByText } = render(
46
+ <TranslatorProvider i18n={i18n} listLanguages={[]} onMount={mount}>
47
+ <RandomComponent />
48
+ </TranslatorProvider>
49
+ );
50
+ expect(getByText('en-US')).toBeInTheDocument();
51
+ expect(getByText('Copy to clipboard')).toBeInTheDocument();
52
+ });
@@ -1,3 +1,4 @@
1
+ import { i18n } from 'i18next';
1
2
  import React, { FunctionComponent, createContext, useCallback, useContext, useEffect } from 'react';
2
3
  import { I18nextProvider } from 'react-i18next';
3
4
 
@@ -24,7 +25,7 @@ const I18nTranslatorContext = createContext<TranslatorProviderProps>({
24
25
  */
25
26
  const TranslatorProvider: FunctionComponent<{
26
27
  children: React.ReactElement<any>;
27
- i18n: any;
28
+ i18n: i18n;
28
29
  listLanguages: any;
29
30
  onMount: () => {};
30
31
  }> = ({ children, onMount, i18n, listLanguages }) => {
@@ -16,7 +16,7 @@ function CustomComponent() {
16
16
  const { packageMeta, packageName, packageVersion } = useVersion();
17
17
  return (
18
18
  <div>
19
- <div>{packageMeta?.latest?.license}</div>
19
+ <div>{packageMeta?.latest?.license as string}</div>
20
20
  <div>{packageName}</div>
21
21
  <div>{packageVersion}</div>
22
22
  </div>
@@ -15,7 +15,6 @@ function getRouterPackageName(packageName: string, scope?: string): string {
15
15
  }
16
16
 
17
17
  export interface DetailContextProps {
18
- enableLoading: () => void;
19
18
  hasNotBeenFound: boolean;
20
19
  isLoading: boolean;
21
20
  packageMeta: PackageMetaInterface;
@@ -25,7 +24,6 @@ export interface DetailContextProps {
25
24
  }
26
25
 
27
26
  export interface VersionPageConsumerProps {
28
- enableLoading: () => void;
29
27
  packageMeta: PackageMetaInterface;
30
28
  packageName: string;
31
29
  packageVersion?: string;
@@ -5,7 +5,7 @@ import { VersionProvider } from '../../providers';
5
5
  import Detail from './Detail';
6
6
 
7
7
  export default {
8
- title: 'Detail',
8
+ title: 'Sections/Detail',
9
9
  };
10
10
 
11
11
  export const DetailStorybook: any = () => (
@@ -6,7 +6,7 @@ import { VersionProvider } from '../../providers';
6
6
  import Header from './Header';
7
7
 
8
8
  export default {
9
- title: 'Header',
9
+ title: 'Sections/Header',
10
10
  };
11
11
 
12
12
  function CustomInfoDialog({ onCloseDialog, title, isOpen }) {
@@ -4,7 +4,7 @@ import { MemoryRouter, Route } from 'react-router';
4
4
  import Home from './Home';
5
5
 
6
6
  export default {
7
- title: 'Home',
7
+ title: 'Sections/Home',
8
8
  };
9
9
 
10
10
  export const HomeDefault: any = () => (
@@ -5,7 +5,7 @@ import { VersionProvider } from '../../providers';
5
5
  import DetailSidebar from './Sidebar';
6
6
 
7
7
  export default {
8
- title: 'Sidebar',
8
+ title: 'Sections/Sidebar',
9
9
  };
10
10
 
11
11
  export const SidebarLatestPackage: any = () => (
@@ -43,7 +43,6 @@ const packageMeta = {
43
43
  // const detailContextValue = {
44
44
  // packageName: 'foo',
45
45
  // readMe: 'test',
46
- // enableLoading: () => {},
47
46
  // isLoading: false,
48
47
  // hasNotBeenFound: false,
49
48
  // packageMeta: ,
@@ -6,6 +6,7 @@ import { Provider } from 'react-redux';
6
6
 
7
7
  import { ThemeProvider } from '../Theme';
8
8
  import AppConfigurationProvider from '../providers/AppConfigurationProvider';
9
+ import PersistenceSettingProvider from '../providers/PersistenceSettingProvider';
9
10
  import { Store } from '../store/store';
10
11
  import i18nConfig from './i18n-config';
11
12
 
@@ -13,13 +14,15 @@ const renderWithStore = (ui: React.ReactElement<any>, store: Store) =>
13
14
  render(ui, {
14
15
  wrapper: ({ children }) => (
15
16
  <Provider store={store}>
16
- <AppConfigurationProvider>
17
- <StyledEngineProvider injectFirst={true}>
18
- <ThemeProvider>
19
- <I18nextProvider i18n={i18nConfig}>{children}</I18nextProvider>
20
- </ThemeProvider>
21
- </StyledEngineProvider>
22
- </AppConfigurationProvider>
17
+ <PersistenceSettingProvider>
18
+ <AppConfigurationProvider>
19
+ <StyledEngineProvider injectFirst={true}>
20
+ <ThemeProvider>
21
+ <I18nextProvider i18n={i18nConfig}>{children}</I18nextProvider>
22
+ </ThemeProvider>
23
+ </StyledEngineProvider>
24
+ </AppConfigurationProvider>
25
+ </PersistenceSettingProvider>
23
26
  </Provider>
24
27
  ),
25
28
  });
@@ -27,11 +30,13 @@ const renderWithStore = (ui: React.ReactElement<any>, store: Store) =>
27
30
  const customRender = (node: React.ReactElement, ...options: any) => {
28
31
  return render(
29
32
  <AppConfigurationProvider>
30
- <StyledEngineProvider injectFirst={true}>
31
- <ThemeProvider>
32
- <I18nextProvider i18n={i18nConfig}>{node}</I18nextProvider>
33
- </ThemeProvider>
34
- </StyledEngineProvider>
33
+ <PersistenceSettingProvider>
34
+ <StyledEngineProvider injectFirst={true}>
35
+ <ThemeProvider>
36
+ <I18nextProvider i18n={i18nConfig}>{node}</I18nextProvider>
37
+ </ThemeProvider>
38
+ </StyledEngineProvider>
39
+ </PersistenceSettingProvider>
35
40
  </AppConfigurationProvider>,
36
41
  ...options
37
42
  );
@@ -0,0 +1,2 @@
1
+ declare module 'unist';
2
+ declare module 'hast';
@@ -4,7 +4,7 @@ export type Latest = {
4
4
  author?: Author;
5
5
  deprecated?: string;
6
6
  name: string;
7
- dist: {
7
+ dist?: {
8
8
  fileCount: number;
9
9
  unpackedSize: number;
10
10
  tarball?: string;
@@ -15,7 +15,7 @@ export type Latest = {
15
15
  pnpm?: string;
16
16
  yarn?: string;
17
17
  };
18
- license?: Partial<LicenseInterface> | string;
18
+ license?: undefined | LicenseInterface | string;
19
19
  version: string;
20
20
  homepage?: string;
21
21
  bugs?: {
@@ -50,12 +50,12 @@ export interface Developer {
50
50
 
51
51
  interface Funding {
52
52
  type?: string;
53
- url: string;
53
+ url?: string;
54
54
  }
55
55
 
56
- interface LicenseInterface {
57
- type: string;
58
- url: string;
56
+ export interface LicenseInterface {
57
+ type?: string;
58
+ url?: string;
59
59
  }
60
60
 
61
61
  export interface DistTags {
@@ -16,6 +16,10 @@ describe('utils', () => {
16
16
  test('isEmail() - should return false if invalid', () => {
17
17
  expect(isEmail('')).toBeFalsy();
18
18
  });
19
+
20
+ test('git repo is valid', () => {
21
+ expect(isURL('git://github.com/verdaccio/ui.git')).toBeTruthy();
22
+ });
19
23
  });
20
24
 
21
25
  describe('extractFileName', () => {
package/src/utils/url.ts CHANGED
@@ -3,7 +3,7 @@ import isURLValidator from 'validator/lib/isURL';
3
3
 
4
4
  export function isURL(url: string): boolean {
5
5
  return isURLValidator(url || '', {
6
- protocols: ['http', 'https', 'git+https'],
6
+ protocols: ['http', 'https', 'git+https', 'git'],
7
7
  require_protocol: true,
8
8
  require_tld: false,
9
9
  });
@@ -13,6 +13,7 @@
13
13
  "jsx": "react"
14
14
  },
15
15
  "include": ["src/**/*", "./src/types/index.d.ts"],
16
+ "types": ["node", "jest", "@testing-library/jest-dom"],
16
17
  "typedocOptions": {
17
18
  "categoryOrder": ["Model", "Component", "Provider", "*"],
18
19
  "defaultCategory": "Component",
package/tsconfig.json CHANGED
@@ -13,7 +13,6 @@
13
13
  "allowJs": true
14
14
  },
15
15
  "types": ["node", "jest", "@testing-library/jest-dom"],
16
- "include": ["src/**/*", "./src/types/index.d.ts"],
17
16
  "references": [
18
17
  {
19
18
  "path": "../core/types"