@verdaccio/ui-theme 3.1.0 → 6.0.0-6-next.11

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 (381) hide show
  1. package/.babelrc +33 -0
  2. package/.eslintrc +115 -0
  3. package/.stylelintrc +40 -0
  4. package/CHANGELOG.md +152 -554
  5. package/LICENSE +1 -1
  6. package/README.md +22 -95
  7. package/config/env.js +9 -0
  8. package/jest/api/packages.json +42 -0
  9. package/jest/identity.js +29 -0
  10. package/jest/jest.config.js +39 -0
  11. package/jest/jestEnvironment.js +1 -0
  12. package/jest/server-handlers.ts +9 -0
  13. package/jest/server.ts +6 -0
  14. package/jest/setup-env.ts +15 -0
  15. package/jest/setup.ts +31 -0
  16. package/jest/unit/components/__mocks__/api.ts +47 -0
  17. package/jest/unit/components/__mocks__/token.ts +31 -0
  18. package/jest/unit/components/store/login.ts +23 -0
  19. package/jest/unit/components/store/logo.ts +7 -0
  20. package/jest/unit/components/store/package.ts +174 -0
  21. package/jest/unit/components/store/packageMeta.ts +592 -0
  22. package/jest/unit/empty.ts +1 -0
  23. package/lib/constants.ts +9 -0
  24. package/package.json +153 -228
  25. package/src/App/App.test.tsx +123 -0
  26. package/src/App/App.tsx +54 -0
  27. package/src/App/AppError.tsx +38 -0
  28. package/src/App/AppRoute.tsx +63 -0
  29. package/src/App/Footer/Footer.test.tsx +20 -0
  30. package/src/App/Footer/Footer.tsx +111 -0
  31. package/src/App/Footer/__snapshots__/Footer.test.tsx.snap +456 -0
  32. package/src/App/Footer/index.ts +1 -0
  33. package/src/App/Footer/styles.ts +44 -0
  34. package/src/App/Header/Header.test.tsx +152 -0
  35. package/src/App/Header/Header.tsx +74 -0
  36. package/src/App/Header/HeaderGreetings.tsx +22 -0
  37. package/src/App/Header/HeaderInfoDialog.tsx +19 -0
  38. package/src/App/Header/HeaderLeft.tsx +31 -0
  39. package/src/App/Header/HeaderMenu.tsx +65 -0
  40. package/src/App/Header/HeaderRight.tsx +118 -0
  41. package/src/App/Header/HeaderToolTip.tsx +19 -0
  42. package/src/App/Header/HeaderToolTipIcon.tsx +75 -0
  43. package/src/App/Header/LanguageSwitch.tsx +125 -0
  44. package/src/App/Header/LoginDialog/LoginDialog.test.tsx +112 -0
  45. package/src/App/Header/LoginDialog/LoginDialog.tsx +81 -0
  46. package/src/App/Header/LoginDialog/LoginDialogCloseButton.tsx +32 -0
  47. package/src/App/Header/LoginDialog/LoginDialogForm.tsx +97 -0
  48. package/src/App/Header/LoginDialog/LoginDialogFormError.tsx +43 -0
  49. package/src/App/Header/LoginDialog/LoginDialogHeader.tsx +48 -0
  50. package/src/App/Header/LoginDialog/__snapshots__/LoginDialog.test.tsx.snap +3 -0
  51. package/src/App/Header/LoginDialog/index.ts +1 -0
  52. package/src/App/Header/RegistryInfoContent/RegistryInfoContent.test.tsx +27 -0
  53. package/src/App/Header/RegistryInfoContent/RegistryInfoContent.tsx +155 -0
  54. package/src/App/Header/RegistryInfoContent/index.ts +1 -0
  55. package/src/App/Header/RegistryInfoDialog/RegistryInfoDialog.tsx +30 -0
  56. package/src/App/Header/RegistryInfoDialog/index.ts +1 -0
  57. package/src/App/Header/RegistryInfoDialog/styles.ts +16 -0
  58. package/src/App/Header/RegistryInfoDialog/types.ts +7 -0
  59. package/src/App/Header/Search/Search.test.tsx +168 -0
  60. package/src/App/Header/Search/Search.tsx +127 -0
  61. package/src/App/Header/Search/SearchAdornment.tsx +18 -0
  62. package/src/App/Header/Search/__snapshots__/Search.test.tsx.snap +101 -0
  63. package/src/App/Header/Search/index.ts +1 -0
  64. package/src/App/Header/index.ts +1 -0
  65. package/src/App/Header/styles.ts +89 -0
  66. package/src/App/index.ts +1 -0
  67. package/src/App/utils/loadable.tsx +10 -0
  68. package/src/components/.eslintrc +7 -0
  69. package/src/components/ActionBar/ActionBar.test.tsx +91 -0
  70. package/src/components/ActionBar/ActionBar.tsx +45 -0
  71. package/src/components/ActionBar/ActionBarAction.tsx +75 -0
  72. package/src/components/ActionBar/__snapshots__/ActionBar.test.tsx.snap +122 -0
  73. package/src/components/ActionBar/index.ts +1 -0
  74. package/src/components/AppBar.tsx +10 -0
  75. package/src/components/Author/Author.test.tsx +75 -0
  76. package/src/components/Author/Author.tsx +47 -0
  77. package/src/components/Author/__snapshots__/Author.test.tsx.snap +353 -0
  78. package/src/components/Author/index.ts +1 -0
  79. package/src/components/Author/styles.ts +23 -0
  80. package/src/components/AutoComplete/AutoComplete.tsx +179 -0
  81. package/src/components/AutoComplete/AutoCompleteV2.tsx +296 -0
  82. package/src/components/AutoComplete/index.ts +1 -0
  83. package/src/components/AutoComplete/styles.tsx +58 -0
  84. package/src/components/AutoComplete/useAutoComplete.tsx +61 -0
  85. package/src/components/Avatar.tsx +3 -0
  86. package/src/components/Box.tsx +8 -0
  87. package/src/components/Button.tsx +10 -0
  88. package/src/components/Card.tsx +10 -0
  89. package/src/components/CardActions.tsx +13 -0
  90. package/src/components/CardContent.tsx +10 -0
  91. package/src/components/Chip.tsx +10 -0
  92. package/src/components/CircularProgress.tsx +15 -0
  93. package/src/components/CopyToClipBoard.tsx +45 -0
  94. package/src/components/Dialog.tsx +10 -0
  95. package/src/components/DialogActions.tsx +16 -0
  96. package/src/components/DialogContent.tsx +16 -0
  97. package/src/components/DialogTitle.tsx +10 -0
  98. package/src/components/Divider.tsx +10 -0
  99. package/src/components/FloatingActionButton.tsx +12 -0
  100. package/src/components/FormControl.tsx +10 -0
  101. package/src/components/FormHelperText.tsx +16 -0
  102. package/src/components/Grid.tsx +10 -0
  103. package/src/components/Heading.tsx +15 -0
  104. package/src/components/IconButton.tsx +10 -0
  105. package/src/components/Icons/.eslintrc +5 -0
  106. package/src/components/Icons/Earth.tsx +36 -0
  107. package/src/components/Icons/FileBinary.tsx +20 -0
  108. package/src/components/Icons/Law.tsx +20 -0
  109. package/src/components/Icons/License.tsx +18 -0
  110. package/src/components/Icons/Time.tsx +19 -0
  111. package/src/components/Icons/Version.tsx +20 -0
  112. package/src/components/Icons/index.ts +5 -0
  113. package/src/components/Input.tsx +10 -0
  114. package/src/components/InputAdornment/InputAdornment.tsx +16 -0
  115. package/src/components/InputAdornment/index.ts +1 -0
  116. package/src/components/InputLabel.tsx +10 -0
  117. package/src/components/Label/Label.test.tsx +15 -0
  118. package/src/components/Label/Label.tsx +35 -0
  119. package/src/components/Label/__snapshots__/Label.test.tsx.snap +14 -0
  120. package/src/components/Label/index.ts +1 -0
  121. package/src/components/Link.tsx +39 -0
  122. package/src/components/List.tsx +10 -0
  123. package/src/components/ListItem.tsx +23 -0
  124. package/src/components/ListItemText.tsx +16 -0
  125. package/src/components/Loading/Loading.test.tsx +12 -0
  126. package/src/components/Loading/Loading.tsx +17 -0
  127. package/src/components/Loading/Spinner/Spinner.test.tsx +14 -0
  128. package/src/components/Loading/Spinner/Spinner.tsx +35 -0
  129. package/src/components/Loading/Spinner/__snapshots__/Spinner.test.tsx.snap +148 -0
  130. package/src/components/Loading/Spinner/index.tsx +1 -0
  131. package/src/components/Loading/__snapshots__/Loading.test.tsx.snap +86 -0
  132. package/src/components/Loading/index.ts +1 -0
  133. package/src/components/Loading/styles.ts +17 -0
  134. package/src/components/Logo/Logo.test.tsx +12 -0
  135. package/src/components/Logo/Logo.tsx +55 -0
  136. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +19 -0
  137. package/src/components/Logo/img/logo-black-and-white.svg +1 -0
  138. package/src/components/Logo/img/logo.svg +1 -0
  139. package/src/components/Logo/index.ts +1 -0
  140. package/src/components/Menu.tsx +10 -0
  141. package/src/components/MenuItem.tsx +25 -0
  142. package/src/components/NotFound/NotFound.tsx +52 -0
  143. package/src/components/NotFound/Notfound.test.tsx +37 -0
  144. package/src/components/NotFound/__snapshots__/Notfound.test.tsx.snap +44 -0
  145. package/src/components/NotFound/img/package.svg +1 -0
  146. package/src/components/NotFound/index.ts +1 -0
  147. package/src/components/NotFound/styles.ts +40 -0
  148. package/src/components/Paper.tsx +10 -0
  149. package/src/components/SnackbarContent.tsx +15 -0
  150. package/src/components/SvgIcon.tsx +38 -0
  151. package/src/components/Tab.tsx +10 -0
  152. package/src/components/Tabs.tsx +14 -0
  153. package/src/components/Text/Text.tsx +17 -0
  154. package/src/components/Text/TextConfig.ts +7 -0
  155. package/src/components/Text/index.ts +2 -0
  156. package/src/components/TextField/TextField.test.tsx +16 -0
  157. package/src/components/TextField/TextField.tsx +23 -0
  158. package/src/components/TextField/__snapshots__/TextField.test.tsx.snap +19 -0
  159. package/src/components/TextField/index.ts +1 -0
  160. package/src/components/Toolbar.tsx +10 -0
  161. package/src/components/Tooltip.tsx +25 -0
  162. package/src/design-tokens/ResetStyles.tsx +44 -0
  163. package/src/design-tokens/StyleBaseline.tsx +14 -0
  164. package/src/design-tokens/ThemeContext.ts +13 -0
  165. package/src/design-tokens/ThemeProvider.tsx +44 -0
  166. package/src/design-tokens/emotion.ts +5 -0
  167. package/src/design-tokens/load-dayjs-locale.ts +98 -0
  168. package/src/design-tokens/theme.ts +159 -0
  169. package/src/design-tokens/useLocalStorage.ts +40 -0
  170. package/src/design-tokens/useOnClickOutside.ts +28 -0
  171. package/src/design-tokens/useTheme.ts +7 -0
  172. package/src/i18n/ABOUT_TRANSLATIONS.md +13 -0
  173. package/src/i18n/config.ts +52 -0
  174. package/src/i18n/crowdin/ui.json +170 -0
  175. package/src/i18n/deprecated_translations_dont_use/cs-CZ.json +168 -0
  176. package/src/i18n/deprecated_translations_dont_use/de-DE.json +168 -0
  177. package/src/i18n/deprecated_translations_dont_use/en-US.json +170 -0
  178. package/src/i18n/deprecated_translations_dont_use/es-ES.json +168 -0
  179. package/src/i18n/deprecated_translations_dont_use/fr-FR.json +168 -0
  180. package/src/i18n/deprecated_translations_dont_use/ja-JP.json +168 -0
  181. package/src/i18n/deprecated_translations_dont_use/km-KH.json +168 -0
  182. package/src/i18n/deprecated_translations_dont_use/pt-BR.json +168 -0
  183. package/src/i18n/deprecated_translations_dont_use/ru-RU.json +168 -0
  184. package/src/i18n/deprecated_translations_dont_use/tr-TR.json +168 -0
  185. package/src/i18n/deprecated_translations_dont_use/uk-UA.json +168 -0
  186. package/src/i18n/deprecated_translations_dont_use/zh-CN.json +168 -0
  187. package/src/i18n/deprecated_translations_dont_use/zh-TW.json +165 -0
  188. package/src/i18n/enabledLanguages.ts +35 -0
  189. package/src/index.tsx +36 -0
  190. package/src/lib/constants.ts +9 -0
  191. package/src/pages/Version/DetailContainer/Dependencies/Dependencies.test.tsx +93 -0
  192. package/src/pages/Version/DetailContainer/Dependencies/Dependencies.tsx +100 -0
  193. package/src/pages/Version/DetailContainer/Dependencies/index.ts +1 -0
  194. package/src/pages/Version/DetailContainer/Dependencies/styles.ts +26 -0
  195. package/src/pages/Version/DetailContainer/Dependencies/types.ts +7 -0
  196. package/src/pages/Version/DetailContainer/Deprecated/Deprecated.test.tsx +34 -0
  197. package/src/pages/Version/DetailContainer/Deprecated/Deprecated.tsx +31 -0
  198. package/src/pages/Version/DetailContainer/Deprecated/index.ts +1 -0
  199. package/src/pages/Version/DetailContainer/DetailContainer.test.tsx +13 -0
  200. package/src/pages/Version/DetailContainer/DetailContainer.tsx +37 -0
  201. package/src/pages/Version/DetailContainer/DetailContainerContent.tsx +41 -0
  202. package/src/pages/Version/DetailContainer/DetailContainerContentReadme.tsx +19 -0
  203. package/src/pages/Version/DetailContainer/DetailContainerTabs.tsx +36 -0
  204. package/src/pages/Version/DetailContainer/NoItems/NoItems.tsx +16 -0
  205. package/src/pages/Version/DetailContainer/NoItems/Noitems.test.tsx +16 -0
  206. package/src/pages/Version/DetailContainer/NoItems/__snapshots__/Noitems.test.tsx.snap +9 -0
  207. package/src/pages/Version/DetailContainer/NoItems/index.ts +1 -0
  208. package/src/pages/Version/DetailContainer/Readme/Readme.spec.tsx +19 -0
  209. package/src/pages/Version/DetailContainer/Readme/Readme.tsx +22 -0
  210. package/src/pages/Version/DetailContainer/Readme/__snapshots__/Readme.spec.tsx.snap +94 -0
  211. package/src/pages/Version/DetailContainer/Readme/index.ts +1 -0
  212. package/src/pages/Version/DetailContainer/Readme/types.ts +3 -0
  213. package/src/pages/Version/DetailContainer/UpLinks/UpLinks.test.tsx +58 -0
  214. package/src/pages/Version/DetailContainer/UpLinks/UpLinks.tsx +45 -0
  215. package/src/pages/Version/DetailContainer/UpLinks/__snapshots__/UpLinks.test.tsx.snap +247 -0
  216. package/src/pages/Version/DetailContainer/UpLinks/index.ts +1 -0
  217. package/src/pages/Version/DetailContainer/UpLinks/styles.ts +24 -0
  218. package/src/pages/Version/DetailContainer/Versions/Versions.test.tsx +60 -0
  219. package/src/pages/Version/DetailContainer/Versions/Versions.tsx +41 -0
  220. package/src/pages/Version/DetailContainer/Versions/VersionsHistoryList.tsx +40 -0
  221. package/src/pages/Version/DetailContainer/Versions/VersionsTagList.tsx +28 -0
  222. package/src/pages/Version/DetailContainer/Versions/__partials__/data.json +5984 -0
  223. package/src/pages/Version/DetailContainer/Versions/__snapshots__/Versions.test.tsx.snap +3 -0
  224. package/src/pages/Version/DetailContainer/Versions/index.ts +1 -0
  225. package/src/pages/Version/DetailContainer/Versions/styles.ts +30 -0
  226. package/src/pages/Version/DetailContainer/__snapshots__/DetailContainer.test.tsx.snap +103 -0
  227. package/src/pages/Version/DetailContainer/index.ts +1 -0
  228. package/src/pages/Version/DetailSidebar/DetailSidebar.tsx +55 -0
  229. package/src/pages/Version/DetailSidebar/DetailSidebarFundButton.test.tsx +111 -0
  230. package/src/pages/Version/DetailSidebar/DetailSidebarFundButton.tsx +53 -0
  231. package/src/pages/Version/DetailSidebar/DetailSidebarTitle.tsx +40 -0
  232. package/src/pages/Version/DetailSidebar/Developers/Developers.test.tsx +117 -0
  233. package/src/pages/Version/DetailSidebar/Developers/Developers.tsx +90 -0
  234. package/src/pages/Version/DetailSidebar/Developers/DevelopersTitle.tsx +32 -0
  235. package/src/pages/Version/DetailSidebar/Developers/__snapshots__/Developers.test.tsx.snap +380 -0
  236. package/src/pages/Version/DetailSidebar/Developers/get-unique-developer-values.ts +16 -0
  237. package/src/pages/Version/DetailSidebar/Developers/index.ts +1 -0
  238. package/src/pages/Version/DetailSidebar/Developers/styles.ts +31 -0
  239. package/src/pages/Version/DetailSidebar/Dist/Dist.test.tsx +78 -0
  240. package/src/pages/Version/DetailSidebar/Dist/Dist.tsx +49 -0
  241. package/src/pages/Version/DetailSidebar/Dist/__snapshots__/Dist.test.tsx.snap +602 -0
  242. package/src/pages/Version/DetailSidebar/Dist/index.ts +1 -0
  243. package/src/pages/Version/DetailSidebar/Dist/styles.ts +27 -0
  244. package/src/pages/Version/DetailSidebar/Engines/Engines.test.tsx +71 -0
  245. package/src/pages/Version/DetailSidebar/Engines/Engines.tsx +58 -0
  246. package/src/pages/Version/DetailSidebar/Engines/img/node.png +0 -0
  247. package/src/pages/Version/DetailSidebar/Engines/index.ts +1 -0
  248. package/src/pages/Version/DetailSidebar/Engines/styles.ts +14 -0
  249. package/src/pages/Version/DetailSidebar/Install/Install.test.tsx +64 -0
  250. package/src/pages/Version/DetailSidebar/Install/Install.tsx +52 -0
  251. package/src/pages/Version/DetailSidebar/Install/InstallListItem.tsx +97 -0
  252. package/src/pages/Version/DetailSidebar/Install/__partials__/data.json +5984 -0
  253. package/src/pages/Version/DetailSidebar/Install/img/npm.svg +15 -0
  254. package/src/pages/Version/DetailSidebar/Install/img/pnpm.svg +1 -0
  255. package/src/pages/Version/DetailSidebar/Install/img/yarn.svg +1 -0
  256. package/src/pages/Version/DetailSidebar/Install/index.ts +1 -0
  257. package/src/pages/Version/DetailSidebar/Repository/Repository.test.tsx +78 -0
  258. package/src/pages/Version/DetailSidebar/Repository/Repository.tsx +93 -0
  259. package/src/pages/Version/DetailSidebar/Repository/__partials__/data.json +5984 -0
  260. package/src/pages/Version/DetailSidebar/Repository/__snapshots__/Repository.test.tsx.snap +3 -0
  261. package/src/pages/Version/DetailSidebar/Repository/img/git.png +0 -0
  262. package/src/pages/Version/DetailSidebar/Repository/index.ts +1 -0
  263. package/src/pages/Version/DetailSidebar/index.ts +1 -0
  264. package/src/pages/Version/Version.test.tsx +68 -0
  265. package/src/pages/Version/Version.tsx +41 -0
  266. package/src/pages/Version/VersionContextProvider.tsx +43 -0
  267. package/src/pages/Version/VersionLayout.tsx +20 -0
  268. package/src/pages/Version/__partials__/data.json +5984 -0
  269. package/src/pages/Version/context.ts +10 -0
  270. package/src/pages/Version/get-route-package-name.ts +9 -0
  271. package/src/pages/Version/index.ts +4 -0
  272. package/src/pages/Version/version-config.ts +19 -0
  273. package/src/pages/home/Home.tsx +25 -0
  274. package/src/pages/home/PackageList/Help/Help.test.tsx +12 -0
  275. package/src/pages/home/PackageList/Help/Help.tsx +56 -0
  276. package/src/pages/home/PackageList/Help/__snapshots__/Help.test.tsx.snap +159 -0
  277. package/src/pages/home/PackageList/Help/index.ts +1 -0
  278. package/src/pages/home/PackageList/Help/styles.ts +13 -0
  279. package/src/pages/home/PackageList/Package/Package.test.tsx +56 -0
  280. package/src/pages/home/PackageList/Package/Package.tsx +253 -0
  281. package/src/pages/home/PackageList/Package/Tag/Tag.test.tsx +16 -0
  282. package/src/pages/home/PackageList/Package/Tag/Tag.tsx +11 -0
  283. package/src/pages/home/PackageList/Package/Tag/__snapshots__/Tag.test.tsx.snap +21 -0
  284. package/src/pages/home/PackageList/Package/Tag/index.ts +1 -0
  285. package/src/pages/home/PackageList/Package/Tag/styles.ts +11 -0
  286. package/src/pages/home/PackageList/Package/index.ts +1 -0
  287. package/src/pages/home/PackageList/Package/styles.ts +112 -0
  288. package/src/pages/home/PackageList/PackageList.tsx +81 -0
  289. package/src/pages/home/PackageList/Packagelist.test.tsx +60 -0
  290. package/src/pages/home/PackageList/index.ts +1 -0
  291. package/src/pages/home/index.ts +1 -0
  292. package/src/providers/API/api.test.ts +136 -0
  293. package/src/providers/API/api.ts +73 -0
  294. package/src/providers/API/storage.ts +12 -0
  295. package/src/providers/config/AppConfigurationProvider.tsx +57 -0
  296. package/src/providers/config/index.ts +1 -0
  297. package/src/store/index.ts +1 -0
  298. package/src/store/models/configuration.ts +42 -0
  299. package/src/store/models/download.ts +31 -0
  300. package/src/store/models/index.ts +17 -0
  301. package/src/store/models/login.ts +90 -0
  302. package/src/store/models/manifest.ts +91 -0
  303. package/src/store/models/packages.ts +36 -0
  304. package/src/store/models/search.ts +81 -0
  305. package/src/store/store.ts +15 -0
  306. package/src/template/favicon.ico +0 -0
  307. package/src/template/index.html +21 -0
  308. package/src/utils/.eslintrc +5 -0
  309. package/src/utils/cli-utils.test.ts +66 -0
  310. package/src/utils/cli-utils.ts +38 -0
  311. package/src/utils/colors.ts +1 -0
  312. package/src/utils/constants.ts +5 -0
  313. package/src/utils/file-size.ts +13 -0
  314. package/src/utils/i18nForTests.ts +25 -0
  315. package/src/utils/login.test.ts +71 -0
  316. package/src/utils/login.ts +44 -0
  317. package/src/utils/package.test.ts +101 -0
  318. package/src/utils/package.ts +105 -0
  319. package/src/utils/sec-utils.ts +15 -0
  320. package/src/utils/storage.ts +12 -0
  321. package/src/utils/test-react-testing-library.tsx +38 -0
  322. package/src/utils/url.test.ts +28 -0
  323. package/src/utils/url.ts +58 -0
  324. package/src/utils/windows.ts +3 -0
  325. package/static/favicon.ico +0 -0
  326. package/static/index.html +21 -0
  327. package/static/main.c57129036f278d0c7acf.js +2 -0
  328. package/static/main.c57129036f278d0c7acf.js.LICENSE.txt +1456 -0
  329. package/static/manifest.json +5 -17
  330. package/static/runtime.c57129036f278d0c7acf.js +2 -0
  331. package/static/{runtime.f6e570dfe38870a45bf5.js.LICENSE.txt → runtime.c57129036f278d0c7acf.js.LICENSE.txt} +2 -2
  332. package/static/vendors.c57129036f278d0c7acf.js +2 -0
  333. package/static/vendors.c57129036f278d0c7acf.js.LICENSE.txt +2932 -0
  334. package/tools/.eslintrc +14 -0
  335. package/tools/_verdaccio.config.yaml +59 -0
  336. package/tools/dev.server.js +48 -0
  337. package/tools/getPackageJson.js +25 -0
  338. package/tools/verdaccio.js +31 -0
  339. package/tools/webpack.config.js +82 -0
  340. package/tools/webpack.dev.config.babel.js +60 -0
  341. package/tools/webpack.prod.config.babel.js +81 -0
  342. package/tsconfig.build.json +24 -0
  343. package/tsconfig.json +27 -0
  344. package/types/custom.d.ts +9 -0
  345. package/types/files.d.ts +9 -0
  346. package/types/index.ts +12 -0
  347. package/types/jest-dom.d.ts +1 -0
  348. package/types/packageMeta.ts +82 -0
  349. package/static/238.f6e570dfe38870a45bf5.js +0 -2
  350. package/static/238.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  351. package/static/718.f6e570dfe38870a45bf5.js +0 -2
  352. package/static/718.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  353. package/static/73.f6e570dfe38870a45bf5.js +0 -2
  354. package/static/73.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  355. package/static/Dependencies.f6e570dfe38870a45bf5.js +0 -2
  356. package/static/Dependencies.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  357. package/static/Dist.f6e570dfe38870a45bf5.js +0 -2
  358. package/static/Dist.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  359. package/static/Engines.f6e570dfe38870a45bf5.js +0 -2
  360. package/static/Engines.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  361. package/static/Home.f6e570dfe38870a45bf5.js +0 -2
  362. package/static/Home.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  363. package/static/Install.f6e570dfe38870a45bf5.js +0 -2
  364. package/static/Install.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  365. package/static/NotFound.f6e570dfe38870a45bf5.js +0 -2
  366. package/static/NotFound.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  367. package/static/Provider.f6e570dfe38870a45bf5.js +0 -2
  368. package/static/Provider.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  369. package/static/Repository.f6e570dfe38870a45bf5.js +0 -2
  370. package/static/Repository.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  371. package/static/UpLinks.f6e570dfe38870a45bf5.js +0 -2
  372. package/static/UpLinks.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  373. package/static/Version.f6e570dfe38870a45bf5.js +0 -2
  374. package/static/Version.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  375. package/static/Versions.f6e570dfe38870a45bf5.js +0 -2
  376. package/static/Versions.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  377. package/static/main.f6e570dfe38870a45bf5.js +0 -2
  378. package/static/main.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -10
  379. package/static/runtime.f6e570dfe38870a45bf5.js +0 -2
  380. package/static/vendors.f6e570dfe38870a45bf5.js +0 -2
  381. package/static/vendors.f6e570dfe38870a45bf5.js.LICENSE.txt +0 -98
@@ -0,0 +1,296 @@
1
+ import styled from '@emotion/styled';
2
+ import { withStyles } from '@material-ui/core/styles';
3
+ import CloseIcon from '@material-ui/icons/Close';
4
+ import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
5
+ import React, {
6
+ memo,
7
+ useState,
8
+ ChangeEvent,
9
+ KeyboardEvent,
10
+ useEffect,
11
+ useRef,
12
+ useCallback,
13
+ } from 'react';
14
+ import { useTranslation } from 'react-i18next';
15
+
16
+ import { Theme } from 'verdaccio-ui/design-tokens/theme';
17
+ import { useOnClickOutside } from 'verdaccio-ui/design-tokens/useOnClickOutside';
18
+
19
+ import IconButton from '../IconButton';
20
+ import MenuItem from '../MenuItem';
21
+ import Paper from '../Paper';
22
+ import TextField from '../TextField';
23
+
24
+ import { createFilterOptions } from './useAutoComplete';
25
+
26
+ const defaultFilterOptions = createFilterOptions();
27
+
28
+ type TextFieldProps = React.ComponentProps<typeof TextField>;
29
+
30
+ interface Props<Option extends {}> extends Pick<TextFieldProps, 'variant'> {
31
+ options: Option[];
32
+ getOptionLabel: (option: Option) => string;
33
+ renderOption?: (option: Option) => React.ReactNode;
34
+ placeholder?: string;
35
+ label?: React.ReactNode;
36
+ defaultValue?: string;
37
+ inputStartAdornment?: React.ReactNode;
38
+ hasClearIcon?: boolean;
39
+ className?: string;
40
+ onClick?: (option: any) => void;
41
+ }
42
+
43
+ const AutoComplete = <Option extends {}>({
44
+ placeholder,
45
+ defaultValue = '',
46
+ label,
47
+ variant,
48
+ inputStartAdornment,
49
+ options: suggestions,
50
+ getOptionLabel,
51
+ renderOption: renderOptionProp,
52
+ className,
53
+ onClick,
54
+ hasClearIcon,
55
+ }: Props<Option>) => {
56
+ const { t } = useTranslation();
57
+ const [searchTerm, setSearchTerm] = useState(defaultValue);
58
+ const [options, setOptions] = useState(suggestions);
59
+ const [activeOption, setActiveOption] = useState(0);
60
+ const [showOptions, setShowOptions] = useState(false);
61
+
62
+ // refs
63
+ const wrapperRef = useRef<HTMLDivElement>(null);
64
+ const inputRef = useRef<HTMLInputElement>(null);
65
+ const contentRef = useRef<HTMLDivElement>(null);
66
+
67
+ const clickOutside = useCallback(() => {
68
+ setShowOptions(false);
69
+ if (!searchTerm.trim()) {
70
+ setSearchTerm(defaultValue);
71
+ }
72
+ }, [searchTerm, defaultValue]);
73
+
74
+ const filterOptions = useCallback(() => {
75
+ const filteredOptions = defaultFilterOptions(suggestions, {
76
+ inputValue: searchTerm,
77
+ getOptionLabel,
78
+ });
79
+ setOptions(filteredOptions);
80
+ }, [suggestions, searchTerm, getOptionLabel]);
81
+
82
+ const scrollIntoOption = useCallback(() => {
83
+ const option = contentRef?.current?.children[activeOption];
84
+ if (option) {
85
+ option.scrollIntoView({
86
+ behavior: 'smooth',
87
+ block: 'nearest',
88
+ inline: 'start',
89
+ });
90
+ }
91
+ }, [activeOption]);
92
+
93
+ useOnClickOutside(wrapperRef, useCallback(clickOutside, [wrapperRef, searchTerm]));
94
+
95
+ useEffect(filterOptions, [searchTerm]);
96
+
97
+ useEffect(scrollIntoOption, [activeOption]);
98
+
99
+ useEffect(() => {
100
+ setSearchTerm(defaultValue);
101
+ }, [defaultValue]);
102
+
103
+ const handleChange = useCallback((event: ChangeEvent<HTMLInputElement>) => {
104
+ setSearchTerm(event.target.value);
105
+ }, []);
106
+
107
+ const handleToggleShowOptions = useCallback(() => {
108
+ setShowOptions(!showOptions);
109
+ }, [showOptions]);
110
+
111
+ const handleClear = useCallback(() => {
112
+ setSearchTerm('');
113
+ setOptions([]);
114
+ setShowOptions(true);
115
+ if (inputRef.current) {
116
+ inputRef.current.focus();
117
+ }
118
+ }, []);
119
+
120
+ const handleClickOption = useCallback(
121
+ (option: Option) => () => {
122
+ if (onClick) {
123
+ onClick(option);
124
+ }
125
+ setSearchTerm(getOptionLabel(option));
126
+ setShowOptions(false);
127
+ if (inputRef.current) {
128
+ inputRef.current.blur();
129
+ }
130
+ },
131
+ [getOptionLabel, onClick]
132
+ );
133
+
134
+ const handleFocus = useCallback(() => {
135
+ setShowOptions(true);
136
+ }, []);
137
+
138
+ const onKeyDown = useCallback(
139
+ (event: KeyboardEvent) => {
140
+ // User pressed the enter key
141
+ if (event.keyCode === 13) {
142
+ setActiveOption(0);
143
+ setShowOptions(false);
144
+ handleClickOption(options[activeOption])();
145
+ return;
146
+ }
147
+
148
+ // User pressed the up arrow
149
+ if (event.keyCode === 38) {
150
+ if (activeOption === 0) {
151
+ return;
152
+ }
153
+ setActiveOption(activeOption - 1);
154
+ return;
155
+ }
156
+
157
+ // User pressed the down arrow
158
+ if (event.keyCode === 40) {
159
+ if (activeOption + 1 >= options.length) {
160
+ return;
161
+ }
162
+ setActiveOption(activeOption + 1);
163
+ return;
164
+ }
165
+ },
166
+ [activeOption, handleClickOption, options]
167
+ );
168
+
169
+ const renderOptions = useCallback(() => {
170
+ if (renderOptionProp) {
171
+ return options.map((option, index) => (
172
+ <Option
173
+ isSelected={index === activeOption}
174
+ key={index}
175
+ onClick={handleClickOption(option)}
176
+ tabIndex={0}>
177
+ {renderOptionProp(option)}
178
+ </Option>
179
+ ));
180
+ }
181
+
182
+ return options.map((option, index) => (
183
+ <MenuItem
184
+ component="div"
185
+ key={index}
186
+ onClick={handleClickOption(option)}
187
+ selected={index === activeOption}
188
+ tabIndex={0}>
189
+ {getOptionLabel(option)}
190
+ </MenuItem>
191
+ ));
192
+ }, [options, activeOption, getOptionLabel, renderOptionProp, handleClickOption]);
193
+
194
+ return (
195
+ <Wrapper className={className} ref={wrapperRef}>
196
+ <StyledTextField
197
+ autoComplete="off"
198
+ InputProps={{
199
+ startAdornment: inputStartAdornment,
200
+ endAdornment: (
201
+ <EndAdornment>
202
+ {hasClearIcon && searchTerm.length > 0 && (
203
+ <IconButton
204
+ color="inherit"
205
+ onClick={handleClear}
206
+ size="small"
207
+ title={t('autoComplete.clear')}>
208
+ <CloseIcon fontSize="small" />
209
+ </IconButton>
210
+ )}
211
+ <ExpandButton
212
+ color="inherit"
213
+ onClick={handleToggleShowOptions}
214
+ showOptions={showOptions}
215
+ size="small"
216
+ title={showOptions ? t('autoComplete.collapse') : t('autoComplete.expand')}>
217
+ <ExpandMoreIcon fontSize="small" />
218
+ </ExpandButton>
219
+ </EndAdornment>
220
+ ),
221
+ }}
222
+ inputRef={inputRef}
223
+ label={label}
224
+ onChange={handleChange}
225
+ onFocus={handleFocus}
226
+ onKeyDown={onKeyDown}
227
+ placeholder={placeholder}
228
+ value={searchTerm}
229
+ variant={variant}
230
+ />
231
+ {showOptions && (
232
+ <StyledPaper ref={contentRef} square={true}>
233
+ {renderOptions()}
234
+ </StyledPaper>
235
+ )}
236
+ </Wrapper>
237
+ );
238
+ };
239
+
240
+ const MemoizedAutoComplete = memo(AutoComplete) as typeof AutoComplete;
241
+
242
+ export { MemoizedAutoComplete as AutoComplete };
243
+
244
+ const Wrapper = styled('div')`
245
+ position: relative;
246
+ height: 40px;
247
+ `;
248
+
249
+ const EndAdornment = styled('div')({
250
+ display: 'flex',
251
+ });
252
+
253
+ const StyledTextField = styled(TextField)<{ theme?: Theme }>(({ theme }) => ({
254
+ height: 40,
255
+ color: theme?.palette.white,
256
+ ['& .MuiInputBase-root']: {
257
+ height: 40,
258
+ color: theme?.palette.white,
259
+ },
260
+ ['& .MuiInputBase-inputAdornedStart']: {
261
+ paddingLeft: theme?.spacing(2),
262
+ },
263
+ ['& .MuiInputBase-input']: {
264
+ paddingTop: theme?.spacing(1),
265
+ paddingBottom: theme?.spacing(1),
266
+ },
267
+ ['& .MuiOutlinedInput-notchedOutline']: {
268
+ borderColor: 'transparent',
269
+ },
270
+ ['& :hover .MuiOutlinedInput-notchedOutline']: {
271
+ borderColor: theme?.palette.white,
272
+ },
273
+ ['& :active .MuiOutlinedInput-notchedOutline']: {
274
+ borderColor: theme?.palette.white,
275
+ },
276
+ }));
277
+
278
+ const ExpandButton = styled(IconButton, {
279
+ shouldForwardProp: (prop) => prop !== 'showOptions',
280
+ })<{ showOptions: boolean }>(({ showOptions }) => ({
281
+ transform: showOptions ? 'rotate(180deg)' : 'none',
282
+ }));
283
+
284
+ const Option = styled('div')<{ isSelected: boolean }>(({ isSelected }) => ({
285
+ background: isSelected ? 'rgba(0, 0, 0, 0.08)' : 'none',
286
+ }));
287
+
288
+ const StyledPaper = withStyles((theme: Theme) => ({
289
+ root: {
290
+ marginTop: theme?.spacing(0.5),
291
+ borderRadius: 3,
292
+ maxHeight: 165,
293
+ overflowY: 'scroll',
294
+ overflowX: 'hidden',
295
+ },
296
+ }))(Paper);
@@ -0,0 +1 @@
1
+ export { default } from './AutoComplete';
@@ -0,0 +1,58 @@
1
+ import styled from '@emotion/styled';
2
+ import React from 'react';
3
+
4
+ import { Theme } from 'verdaccio-ui/design-tokens/theme';
5
+
6
+ import Paper from '../Paper';
7
+ import TextField from '../TextField';
8
+
9
+ export interface InputFieldProps {
10
+ color: string;
11
+ }
12
+
13
+ export const Wrapper = styled('div')({
14
+ width: '100%',
15
+ height: '32px',
16
+ position: 'relative',
17
+ zIndex: 1,
18
+ });
19
+
20
+ export const StyledTextField = styled(TextField)<{ theme?: Theme }>((props) => ({
21
+ '& .MuiInputBase-root': {
22
+ ':before': {
23
+ content: "''",
24
+ border: 'none',
25
+ },
26
+ ':after': {
27
+ borderColor: props.theme?.palette.white,
28
+ },
29
+ ':hover:before': {
30
+ content: 'none',
31
+ },
32
+ ':hover:after': {
33
+ content: 'none',
34
+ transform: 'scaleX(1)',
35
+ },
36
+ [`@media screen and (min-width: ${props.theme?.breakPoints.medium}px)`]: {
37
+ ':hover:after': {
38
+ content: "''",
39
+ },
40
+ },
41
+ },
42
+ '& .MuiInputBase-input': {
43
+ [`@media screen and (min-width: ${props.theme?.breakPoints.medium}px)`]: {
44
+ color: props.theme?.palette.white,
45
+ },
46
+ },
47
+ }));
48
+
49
+ /* eslint-disable verdaccio/jsx-spread */
50
+ // @ts-ignore types of color are incompatible
51
+ export const InputField: React.FC<InputFieldProps & TextFieldProps> = ({ ...others }) => (
52
+ <StyledTextField {...others} />
53
+ );
54
+
55
+ export const SuggestionContainer = styled(Paper)({
56
+ maxHeight: '500px',
57
+ overflowY: 'auto',
58
+ });
@@ -0,0 +1,61 @@
1
+ // https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript
2
+ // Give up on IE 11 support for this feature
3
+ function stripDiacritics(value: string) {
4
+ return typeof value.normalize !== 'undefined'
5
+ ? value.normalize('NFD').replace(/[\u0300-\u036f]/g, '')
6
+ : value;
7
+ }
8
+
9
+ // Based on https://github.com/netochaves/material-ui/tree/test/useAutocomplete/packages/material-ui-lab/src/useAutocomplete
10
+ type CreateFilterOptionsConfig = {
11
+ ignoreAccents?: boolean;
12
+ ignoreCase?: boolean;
13
+ limit?: number;
14
+ matchFrom?: 'any' | 'start';
15
+ trim?: boolean;
16
+ };
17
+
18
+ export interface FilterOptionsState<Option> {
19
+ inputValue: string;
20
+ getOptionLabel: (option: Option) => string;
21
+ }
22
+
23
+ function createFilterOptions(config?: CreateFilterOptionsConfig) {
24
+ const {
25
+ ignoreAccents = true,
26
+ ignoreCase = true,
27
+ trim = false,
28
+ limit,
29
+ matchFrom = 'any',
30
+ } = config || {};
31
+
32
+ return <Option extends {}>(
33
+ options: Option[],
34
+ { inputValue, getOptionLabel }: FilterOptionsState<Option>
35
+ ): Option[] => {
36
+ let input = trim ? inputValue.trim() : inputValue;
37
+ if (ignoreCase) {
38
+ input = input.toLowerCase();
39
+ }
40
+
41
+ if (ignoreAccents) {
42
+ input = stripDiacritics(input);
43
+ }
44
+
45
+ const filteredOptions = options.filter((option) => {
46
+ let candidate = getOptionLabel(option);
47
+ if (ignoreCase) {
48
+ candidate = candidate.toLowerCase();
49
+ }
50
+ if (ignoreAccents) {
51
+ candidate = stripDiacritics(candidate);
52
+ }
53
+
54
+ return matchFrom === 'start' ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;
55
+ });
56
+
57
+ return typeof limit === 'number' ? filteredOptions.slice(0, limit) : filteredOptions;
58
+ };
59
+ }
60
+
61
+ export { createFilterOptions };
@@ -0,0 +1,3 @@
1
+ import { default as MaterialUIAvatar } from '@material-ui/core/Avatar';
2
+
3
+ export default MaterialUIAvatar;
@@ -0,0 +1,8 @@
1
+ import { default as MaterialUIBox, BoxProps } from '@material-ui/core/Box';
2
+ import React from 'react';
3
+
4
+ function Box(props: BoxProps) {
5
+ return <MaterialUIBox {...props} />;
6
+ }
7
+
8
+ export default Box;
@@ -0,0 +1,10 @@
1
+ import { default as MaterialUIButton, ButtonProps } from '@material-ui/core/Button';
2
+ import React, { forwardRef } from 'react';
3
+
4
+ type ButtonRef = HTMLButtonElement;
5
+
6
+ const Button = forwardRef<ButtonRef, ButtonProps>(function Button(props, ref) {
7
+ return <MaterialUIButton {...props} ref={ref} />;
8
+ });
9
+
10
+ export default Button;
@@ -0,0 +1,10 @@
1
+ import { default as MaterialUICard, CardProps } from '@material-ui/core/Card';
2
+ import React, { forwardRef } from 'react';
3
+
4
+ type CardRef = HTMLDivElement;
5
+
6
+ const Card = forwardRef<CardRef, CardProps>(function Card(props, ref) {
7
+ return <MaterialUICard {...props} ref={ref} />;
8
+ });
9
+
10
+ export default Card;
@@ -0,0 +1,13 @@
1
+ import { default as MaterialUICardActions, CardActionsProps } from '@material-ui/core/CardActions';
2
+ import React, { forwardRef } from 'react';
3
+
4
+ type CardActionsRef = HTMLDivElement;
5
+
6
+ const CardActions = forwardRef<CardActionsRef, CardActionsProps>(function CardContentActions(
7
+ props,
8
+ ref
9
+ ) {
10
+ return <MaterialUICardActions {...props} innerRef={ref} />;
11
+ });
12
+
13
+ export default CardActions;
@@ -0,0 +1,10 @@
1
+ import { default as MaterialUICardContent, CardContentProps } from '@material-ui/core/CardContent';
2
+ import React, { forwardRef } from 'react';
3
+
4
+ type CardContentRef = HTMLElementTagNameMap[keyof HTMLElementTagNameMap];
5
+
6
+ const CardContent = forwardRef<CardContentRef, CardContentProps>(function CardContent(props, ref) {
7
+ return <MaterialUICardContent {...props} innerRef={ref} />;
8
+ });
9
+
10
+ export default CardContent;
@@ -0,0 +1,10 @@
1
+ import { default as MaterialUIChip, ChipProps } from '@material-ui/core/Chip';
2
+ import React, { forwardRef } from 'react';
3
+
4
+ type ChipRef = HTMLElementTagNameMap[keyof HTMLElementTagNameMap];
5
+
6
+ const Chip = forwardRef<ChipRef, ChipProps>(function Chip(props, ref) {
7
+ return <MaterialUIChip {...props} innerRef={ref} />;
8
+ });
9
+
10
+ export default Chip;
@@ -0,0 +1,15 @@
1
+ import {
2
+ default as MaterialUICircularProgress,
3
+ CircularProgressProps,
4
+ } from '@material-ui/core/CircularProgress';
5
+ import React, { forwardRef } from 'react';
6
+
7
+ type CircularProgressRef = HTMLDivElement;
8
+
9
+ const CircularProgress = forwardRef<CircularProgressRef, CircularProgressProps>(
10
+ function CircularProgress(props, ref) {
11
+ return <MaterialUICircularProgress {...props} ref={ref} />;
12
+ }
13
+ );
14
+
15
+ export default CircularProgress;
@@ -0,0 +1,45 @@
1
+ import styled from '@emotion/styled';
2
+ import FileCopy from '@material-ui/icons/FileCopy';
3
+ import React from 'react';
4
+ import { useTranslation } from 'react-i18next';
5
+
6
+ import { copyToClipBoardUtility } from 'verdaccio-ui/utils/cli-utils';
7
+
8
+ import IconButton from './IconButton';
9
+ import Tooltip from './Tooltip';
10
+
11
+ interface Props {
12
+ text: string;
13
+ children?: React.ReactNode;
14
+ }
15
+
16
+ function CopyToClipBoard({ text, children, ...props }: Props) {
17
+ const { t } = useTranslation();
18
+ return (
19
+ <Wrapper {...props}>
20
+ <Content>{children ?? text}</Content>
21
+ <Tooltip disableFocusListener={true} title={t('copy-to-clipboard')}>
22
+ <IconButton onClick={copyToClipBoardUtility(text)} data-testid="copy-icon">
23
+ <FileCopy />
24
+ </IconButton>
25
+ </Tooltip>
26
+ </Wrapper>
27
+ );
28
+ }
29
+
30
+ export default CopyToClipBoard;
31
+
32
+ const Wrapper = styled('div')({
33
+ display: 'flex',
34
+ alignItems: 'center',
35
+ justifyContent: 'space-between',
36
+ });
37
+
38
+ const Content = styled('span')({
39
+ display: 'inline-block',
40
+ overflow: 'hidden',
41
+ whiteSpace: 'nowrap',
42
+ textOverflow: 'ellipsis',
43
+ height: '21px',
44
+ fontSize: '1rem',
45
+ });
@@ -0,0 +1,10 @@
1
+ import { default as MaterialUIDialog, DialogProps } from '@material-ui/core/Dialog';
2
+ import React, { forwardRef } from 'react';
3
+
4
+ type DialogRef = HTMLDivElement;
5
+
6
+ const Dialog = forwardRef<DialogRef, DialogProps>(function Dialog(props, ref) {
7
+ return <MaterialUIDialog {...props} ref={ref} />;
8
+ });
9
+
10
+ export default Dialog;
@@ -0,0 +1,16 @@
1
+ import {
2
+ default as MaterialUIDialogActions,
3
+ DialogActionsProps,
4
+ } from '@material-ui/core/DialogActions';
5
+ import React, { forwardRef } from 'react';
6
+
7
+ type DialogActionsRef = HTMLDivElement;
8
+
9
+ const DialogActions = forwardRef<DialogActionsRef, DialogActionsProps>(function DialogActions(
10
+ props,
11
+ ref
12
+ ) {
13
+ return <MaterialUIDialogActions {...props} ref={ref} />;
14
+ });
15
+
16
+ export default DialogActions;
@@ -0,0 +1,16 @@
1
+ import {
2
+ default as MaterialUIDialogContent,
3
+ DialogContentProps,
4
+ } from '@material-ui/core/DialogContent';
5
+ import React, { forwardRef } from 'react';
6
+
7
+ type DialogContentRef = HTMLDivElement;
8
+
9
+ const DialogContent = forwardRef<DialogContentRef, DialogContentProps>(function DialogContent(
10
+ props,
11
+ ref
12
+ ) {
13
+ return <MaterialUIDialogContent {...props} ref={ref} />;
14
+ });
15
+
16
+ export default DialogContent;
@@ -0,0 +1,10 @@
1
+ import { default as MaterialUIDialogTitle, DialogTitleProps } from '@material-ui/core/DialogTitle';
2
+ import React, { forwardRef } from 'react';
3
+
4
+ type DialogTitleRef = HTMLDivElement;
5
+
6
+ const DialogTitle = forwardRef<DialogTitleRef, DialogTitleProps>(function DialogTitle(props, ref) {
7
+ return <MaterialUIDialogTitle {...props} ref={ref} />;
8
+ });
9
+
10
+ export default DialogTitle;
@@ -0,0 +1,10 @@
1
+ import { default as MaterialUIDivider, DividerProps } from '@material-ui/core/Divider';
2
+ import React, { forwardRef } from 'react';
3
+
4
+ type DividerRef = HTMLElementTagNameMap[keyof HTMLElementTagNameMap];
5
+
6
+ const Divider = forwardRef<DividerRef, DividerProps>(function Divider(props, ref) {
7
+ return <MaterialUIDivider {...props} innerRef={ref} />;
8
+ });
9
+
10
+ export default Divider;
@@ -0,0 +1,12 @@
1
+ import { default as MaterialUIFab, FabProps } from '@material-ui/core/Fab';
2
+ import React, { forwardRef } from 'react';
3
+
4
+ type FloatingActionButtonRef = HTMLButtonElement;
5
+
6
+ const FloatingActionButton = forwardRef<FloatingActionButtonRef, FabProps>(
7
+ function FloatingActionButton(props, ref) {
8
+ return <MaterialUIFab {...props} ref={ref} data-testid="fab" />;
9
+ }
10
+ );
11
+
12
+ export default FloatingActionButton;
@@ -0,0 +1,10 @@
1
+ import { default as MaterialUIFormControl, FormControlProps } from '@material-ui/core/FormControl';
2
+ import React, { forwardRef } from 'react';
3
+
4
+ type FormControlRef = HTMLElementTagNameMap[keyof HTMLElementTagNameMap];
5
+
6
+ const FormControl = forwardRef<FormControlRef, FormControlProps>(function FormControl(props, ref) {
7
+ return <MaterialUIFormControl {...props} innerRef={ref} />;
8
+ });
9
+
10
+ export default FormControl;
@@ -0,0 +1,16 @@
1
+ import {
2
+ default as MaterialUIFormHelperText,
3
+ FormHelperTextProps,
4
+ } from '@material-ui/core/FormHelperText';
5
+ import React, { forwardRef } from 'react';
6
+
7
+ type FormHelperTextRef = HTMLParagraphElement;
8
+
9
+ const FormHelperText = forwardRef<FormHelperTextRef, FormHelperTextProps>(function FormHelperText(
10
+ props,
11
+ ref
12
+ ) {
13
+ return <MaterialUIFormHelperText {...props} ref={ref} />;
14
+ });
15
+
16
+ export default FormHelperText;
@@ -0,0 +1,10 @@
1
+ import { default as MaterialUIGrid, GridProps } from '@material-ui/core/Grid';
2
+ import React, { forwardRef } from 'react';
3
+
4
+ type GridRef = HTMLElementTagNameMap[keyof HTMLElementTagNameMap];
5
+
6
+ const Grid = forwardRef<GridRef, GridProps>(function Grid(props, ref) {
7
+ return <MaterialUIGrid {...props} innerRef={ref} />;
8
+ });
9
+
10
+ export default Grid;