@docusaurus/theme-classic 2.0.0-beta.8bda3b2db → 2.0.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/README.md +1 -1
  2. package/codeTranslations/ar.json +12 -7
  3. package/codeTranslations/base.json +17 -7
  4. package/codeTranslations/bn.json +11 -5
  5. package/codeTranslations/cs.json +62 -0
  6. package/codeTranslations/da.json +8 -3
  7. package/codeTranslations/de.json +8 -3
  8. package/codeTranslations/es.json +15 -10
  9. package/codeTranslations/fa.json +31 -26
  10. package/codeTranslations/fil.json +8 -3
  11. package/codeTranslations/fr.json +8 -3
  12. package/codeTranslations/he.json +9 -4
  13. package/codeTranslations/hi.json +9 -4
  14. package/codeTranslations/ja.json +8 -3
  15. package/codeTranslations/ko.json +8 -3
  16. package/codeTranslations/pl.json +8 -3
  17. package/codeTranslations/pt-BR.json +16 -11
  18. package/codeTranslations/pt-PT.json +8 -3
  19. package/codeTranslations/ru.json +10 -5
  20. package/codeTranslations/sr.json +62 -0
  21. package/codeTranslations/tr.json +9 -4
  22. package/codeTranslations/vi.json +10 -5
  23. package/codeTranslations/zh-Hans.json +9 -4
  24. package/codeTranslations/zh-Hant.json +9 -4
  25. package/lib/__tests__/validateThemeConfig.test.js +277 -3
  26. package/lib/admonitions.css +35 -0
  27. package/lib/index.js +31 -8
  28. package/lib/prism-include-languages.js +9 -5
  29. package/lib/theme/AnnouncementBar/index.js +10 -16
  30. package/lib/theme/AnnouncementBar/styles.module.css +25 -30
  31. package/lib/theme/BackToTopButton/index.js +140 -0
  32. package/lib/theme/BackToTopButton/styles.module.css +42 -0
  33. package/lib/theme/BlogArchivePage/index.js +89 -0
  34. package/lib/theme/BlogLayout/index.js +51 -0
  35. package/lib/theme/BlogListPage/index.js +10 -21
  36. package/lib/theme/BlogPostAuthor/index.js +51 -0
  37. package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
  38. package/lib/theme/BlogPostAuthors/index.js +47 -0
  39. package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
  40. package/lib/theme/BlogPostItem/index.js +58 -67
  41. package/lib/theme/BlogPostPage/index.js +37 -24
  42. package/lib/theme/BlogSidebar/styles.module.css +2 -2
  43. package/lib/theme/BlogTagsListPage/index.js +8 -44
  44. package/lib/theme/BlogTagsPostsPage/index.js +24 -38
  45. package/lib/theme/CodeBlock/index.js +45 -41
  46. package/lib/theme/CodeBlock/styles.module.css +6 -9
  47. package/lib/theme/Details/index.js +30 -0
  48. package/lib/theme/Details/styles.module.css +13 -0
  49. package/lib/theme/DocItem/index.js +29 -45
  50. package/lib/theme/DocItem/styles.module.css +5 -9
  51. package/lib/theme/DocItemFooter/index.js +79 -0
  52. package/lib/theme/DocItemFooter/styles.module.css +18 -0
  53. package/lib/theme/DocPage/index.js +25 -49
  54. package/lib/theme/DocPage/styles.module.css +8 -23
  55. package/lib/theme/DocSidebar/index.js +45 -227
  56. package/lib/theme/DocSidebar/styles.module.css +0 -18
  57. package/lib/theme/DocSidebarItem/index.js +177 -0
  58. package/lib/theme/DocSidebarItem/styles.module.css +15 -0
  59. package/lib/theme/DocTagDocListPage/index.js +89 -0
  60. package/lib/theme/DocTagsListPage/index.js +44 -0
  61. package/lib/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +37 -18
  62. package/lib/theme/EditThisPage/index.js +3 -1
  63. package/lib/theme/Footer/index.js +13 -4
  64. package/lib/theme/Heading/index.js +7 -9
  65. package/lib/theme/Heading/styles.css +4 -6
  66. package/lib/theme/Heading/styles.module.css +9 -5
  67. package/lib/theme/IconClose/index.js +31 -0
  68. package/lib/theme/LastUpdated/index.js +4 -2
  69. package/lib/theme/LayoutHead/index.js +13 -11
  70. package/lib/theme/LayoutProviders/index.js +11 -5
  71. package/lib/theme/Logo/index.js +14 -12
  72. package/lib/theme/MDXComponents/index.js +45 -4
  73. package/lib/theme/MDXComponents/styles.css +11 -0
  74. package/lib/theme/MDXPage/index.js +2 -1
  75. package/lib/theme/Navbar/index.js +164 -42
  76. package/lib/theme/Navbar/styles.module.css +10 -3
  77. package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -123
  78. package/lib/theme/NavbarItem/DocNavbarItem.js +6 -5
  79. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
  80. package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
  81. package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +5 -6
  82. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  83. package/lib/theme/NavbarItem/index.js +31 -11
  84. package/lib/theme/Seo/index.js +10 -7
  85. package/lib/theme/SkipToContent/index.js +9 -3
  86. package/lib/theme/SkipToContent/styles.module.css +1 -0
  87. package/lib/theme/TOC/index.js +9 -29
  88. package/lib/theme/TOC/styles.module.css +1 -1
  89. package/lib/theme/TOCCollapsible/index.js +53 -0
  90. package/lib/theme/TOCCollapsible/styles.module.css +50 -0
  91. package/lib/theme/TOCInline/index.js +7 -27
  92. package/lib/theme/TOCItems/index.js +78 -0
  93. package/lib/theme/Tabs/__tests__/index.test.js +123 -0
  94. package/lib/theme/Tabs/index.js +73 -50
  95. package/lib/theme/Tabs/styles.module.css +0 -13
  96. package/lib/theme/Tag/index.js +40 -0
  97. package/lib/theme/Tag/styles.module.css +70 -0
  98. package/lib/theme/TagsListByLetter/index.js +48 -0
  99. package/lib/theme/TagsListByLetter/styles.module.css +11 -0
  100. package/lib/theme/TagsListInline/index.js +44 -0
  101. package/lib/theme/TagsListInline/styles.module.css +15 -0
  102. package/lib/theme/ThemedImage/index.js +4 -5
  103. package/lib/theme/Toggle/index.js +23 -18
  104. package/lib/theme/Toggle/styles.module.css +91 -0
  105. package/lib/theme/UserPreferencesProvider/index.js +1 -9
  106. package/lib/theme/hooks/useHideableNavbar.js +14 -32
  107. package/lib/theme/hooks/useTabGroupChoice.js +2 -4
  108. package/lib/theme/hooks/useTheme.js +2 -2
  109. package/lib/theme/hooks/useWindowSize.js +33 -20
  110. package/lib/theme/prism-include-languages.js +4 -3
  111. package/lib/translations.js +4 -4
  112. package/lib/types.d.ts +338 -138
  113. package/lib/validateThemeConfig.js +226 -245
  114. package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
  115. package/lib-next/admonitions.css +35 -0
  116. package/lib-next/index.js +33 -7
  117. package/lib-next/prism-include-languages.js +0 -2
  118. package/lib-next/theme/AnnouncementBar/index.js +9 -18
  119. package/lib-next/theme/AnnouncementBar/styles.module.css +25 -30
  120. package/lib-next/theme/BackToTopButton/index.js +131 -0
  121. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  122. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  123. package/lib-next/theme/BlogLayout/index.js +40 -0
  124. package/lib-next/theme/BlogListPage/index.js +16 -24
  125. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  126. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  127. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  128. package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
  129. package/lib-next/theme/BlogPostItem/index.js +79 -86
  130. package/lib-next/theme/BlogPostPage/index.js +70 -35
  131. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  132. package/lib-next/theme/BlogTagsListPage/index.js +13 -54
  133. package/lib-next/theme/BlogTagsPostsPage/index.js +28 -38
  134. package/lib-next/theme/CodeBlock/index.js +54 -53
  135. package/lib-next/theme/CodeBlock/styles.module.css +6 -9
  136. package/lib-next/theme/Details/index.js +20 -0
  137. package/lib-next/theme/Details/styles.module.css +13 -0
  138. package/lib-next/theme/DocItem/index.js +46 -55
  139. package/lib-next/theme/DocItem/styles.module.css +5 -9
  140. package/lib-next/theme/DocItemFooter/index.js +79 -0
  141. package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
  142. package/lib-next/theme/DocPage/index.js +25 -43
  143. package/lib-next/theme/DocPage/styles.module.css +8 -23
  144. package/lib-next/theme/DocSidebar/index.js +59 -288
  145. package/lib-next/theme/DocSidebar/styles.module.css +0 -18
  146. package/lib-next/theme/DocSidebarItem/index.js +181 -0
  147. package/lib-next/theme/DocSidebarItem/styles.module.css +15 -0
  148. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  149. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  150. package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +44 -36
  151. package/lib-next/theme/EditThisPage/index.js +6 -1
  152. package/lib-next/theme/Footer/index.js +24 -4
  153. package/lib-next/theme/Heading/index.js +10 -13
  154. package/lib-next/theme/Heading/styles.css +4 -6
  155. package/lib-next/theme/Heading/styles.module.css +9 -5
  156. package/lib-next/theme/IconClose/index.js +23 -0
  157. package/lib-next/theme/LastUpdated/index.js +3 -2
  158. package/lib-next/theme/LayoutHead/index.js +9 -15
  159. package/lib-next/theme/LayoutProviders/index.js +17 -6
  160. package/lib-next/theme/Logo/index.js +23 -19
  161. package/lib-next/theme/MDXComponents/index.js +34 -7
  162. package/lib-next/theme/MDXComponents/styles.css +11 -0
  163. package/lib-next/theme/MDXPage/index.js +10 -2
  164. package/lib-next/theme/Navbar/index.js +192 -56
  165. package/lib-next/theme/Navbar/styles.module.css +10 -3
  166. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -147
  167. package/lib-next/theme/NavbarItem/DocNavbarItem.js +6 -5
  168. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  169. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +158 -0
  170. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -8
  171. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  172. package/lib-next/theme/NavbarItem/index.js +25 -12
  173. package/lib-next/theme/Seo/index.js +11 -7
  174. package/lib-next/theme/SkipToContent/index.js +5 -6
  175. package/lib-next/theme/SkipToContent/styles.module.css +1 -0
  176. package/lib-next/theme/TOC/index.js +12 -36
  177. package/lib-next/theme/TOC/styles.module.css +1 -1
  178. package/lib-next/theme/TOCCollapsible/index.js +54 -0
  179. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  180. package/lib-next/theme/TOCInline/index.js +10 -28
  181. package/lib-next/theme/TOCItems/index.js +85 -0
  182. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  183. package/lib-next/theme/Tabs/index.js +91 -43
  184. package/lib-next/theme/Tabs/styles.module.css +0 -13
  185. package/lib-next/theme/Tag/index.js +27 -0
  186. package/lib-next/theme/Tag/styles.module.css +70 -0
  187. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  188. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  189. package/lib-next/theme/TagsListInline/index.js +31 -0
  190. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  191. package/lib-next/theme/ThemedImage/index.js +5 -6
  192. package/lib-next/theme/Toggle/index.js +20 -15
  193. package/lib-next/theme/Toggle/styles.module.css +91 -0
  194. package/lib-next/theme/UserPreferencesProvider/index.js +0 -4
  195. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  196. package/lib-next/theme/hooks/useTabGroupChoice.js +2 -4
  197. package/lib-next/theme/hooks/useTheme.js +2 -2
  198. package/lib-next/theme/hooks/useWindowSize.js +34 -20
  199. package/lib-next/theme/prism-include-languages.js +2 -1
  200. package/lib-next/translations.js +6 -10
  201. package/lib-next/types.d.ts +338 -138
  202. package/lib-next/validateThemeConfig.js +134 -110
  203. package/package.json +24 -19
  204. package/src/__tests__/validateThemeConfig.test.js +277 -3
  205. package/src/admonitions.css +35 -0
  206. package/src/index.ts +44 -14
  207. package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
  208. package/src/theme/AnnouncementBar/index.tsx +10 -17
  209. package/src/theme/AnnouncementBar/styles.module.css +25 -30
  210. package/src/theme/BackToTopButton/index.tsx +142 -0
  211. package/src/theme/BackToTopButton/styles.module.css +42 -0
  212. package/src/theme/BlogArchivePage/index.tsx +91 -0
  213. package/src/theme/BlogLayout/index.tsx +44 -0
  214. package/src/theme/BlogListPage/index.tsx +17 -24
  215. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  216. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  217. package/src/theme/BlogPostAuthors/index.tsx +36 -0
  218. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  219. package/src/theme/BlogPostItem/index.tsx +70 -80
  220. package/src/theme/BlogPostPage/index.tsx +72 -35
  221. package/src/theme/BlogSidebar/styles.module.css +2 -2
  222. package/src/theme/BlogTagsListPage/index.tsx +13 -56
  223. package/src/theme/BlogTagsPostsPage/index.tsx +28 -38
  224. package/src/theme/CodeBlock/index.tsx +70 -55
  225. package/src/theme/CodeBlock/styles.module.css +6 -9
  226. package/src/theme/Details/index.tsx +24 -0
  227. package/src/theme/Details/styles.module.css +13 -0
  228. package/src/theme/DocItem/index.tsx +49 -55
  229. package/src/theme/DocItem/styles.module.css +5 -9
  230. package/src/theme/DocItemFooter/index.tsx +91 -0
  231. package/src/theme/DocItemFooter/styles.module.css +18 -0
  232. package/src/theme/DocPage/index.tsx +24 -38
  233. package/src/theme/DocPage/styles.module.css +8 -23
  234. package/src/theme/DocSidebar/index.tsx +70 -300
  235. package/src/theme/DocSidebar/styles.module.css +0 -18
  236. package/src/theme/DocSidebarItem/index.tsx +206 -0
  237. package/src/theme/DocSidebarItem/styles.module.css +15 -0
  238. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  239. package/src/theme/DocTagsListPage/index.tsx +41 -0
  240. package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +58 -44
  241. package/src/theme/EditThisPage/index.tsx +6 -1
  242. package/src/theme/Footer/index.tsx +26 -4
  243. package/src/theme/Heading/index.tsx +10 -13
  244. package/src/theme/Heading/styles.css +4 -6
  245. package/src/theme/Heading/styles.module.css +9 -5
  246. package/src/theme/IconClose/index.tsx +26 -0
  247. package/src/theme/LastUpdated/index.tsx +3 -2
  248. package/src/theme/LayoutHead/index.tsx +9 -9
  249. package/src/theme/LayoutProviders/index.tsx +17 -6
  250. package/src/theme/Logo/index.tsx +19 -15
  251. package/src/theme/MDXComponents/index.tsx +39 -5
  252. package/src/theme/MDXComponents/styles.css +11 -0
  253. package/src/theme/MDXPage/index.tsx +10 -2
  254. package/src/theme/Navbar/index.tsx +202 -61
  255. package/src/theme/Navbar/styles.module.css +10 -3
  256. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -154
  257. package/src/theme/NavbarItem/DocNavbarItem.tsx +11 -14
  258. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  259. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  260. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +180 -0
  261. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -7
  262. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  263. package/src/theme/NavbarItem/index.tsx +41 -16
  264. package/src/theme/Seo/index.tsx +7 -4
  265. package/src/theme/SkipToContent/index.tsx +5 -6
  266. package/src/theme/SkipToContent/styles.module.css +1 -0
  267. package/src/theme/TOC/index.tsx +12 -41
  268. package/src/theme/TOC/styles.module.css +1 -1
  269. package/src/theme/TOCCollapsible/index.tsx +58 -0
  270. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  271. package/src/theme/TOCInline/index.tsx +13 -32
  272. package/src/theme/TOCItems/index.tsx +96 -0
  273. package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
  274. package/src/theme/Tabs/index.tsx +93 -49
  275. package/src/theme/Tabs/styles.module.css +0 -13
  276. package/src/theme/Tag/index.tsx +31 -0
  277. package/src/theme/Tag/styles.module.css +70 -0
  278. package/src/theme/TagsListByLetter/index.tsx +45 -0
  279. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  280. package/src/theme/TagsListInline/index.tsx +35 -0
  281. package/src/theme/TagsListInline/styles.module.css +15 -0
  282. package/src/theme/ThemedImage/index.tsx +6 -6
  283. package/src/theme/Toggle/index.tsx +20 -15
  284. package/src/theme/Toggle/styles.module.css +91 -0
  285. package/src/theme/UserPreferencesProvider/index.tsx +0 -5
  286. package/src/theme/hooks/useContextualSearchFilters.ts +1 -1
  287. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  288. package/src/theme/hooks/useTabGroupChoice.ts +4 -4
  289. package/src/theme/hooks/useTheme.ts +2 -2
  290. package/src/theme/hooks/useWindowSize.ts +38 -20
  291. package/src/theme/prism-include-languages.ts +3 -2
  292. package/src/translations.ts +6 -10
  293. package/src/types.d.ts +338 -138
  294. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +144 -90
  295. package/tsconfig.json +1 -2
  296. package/update-code-translations.js +10 -6
  297. package/update-code-translations.test.js +1 -1
  298. package/update.js +151 -0
  299. package/lib/theme/Toggle/styles.css +0 -103
  300. package/lib/theme/hooks/useAnnouncementBar.js +0 -63
  301. package/lib/theme/hooks/useScrollPosition.js +0 -49
  302. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  303. package/lib-next/theme/Toggle/styles.css +0 -103
  304. package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
  305. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  306. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  307. package/src/theme/Toggle/styles.css +0 -103
  308. package/src/theme/hooks/useAnnouncementBar.ts +0 -58
  309. package/src/theme/hooks/useScrollPosition.ts +0 -45
  310. package/src/theme/hooks/useTOCHighlight.ts +0 -98
@@ -1,19 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.validateThemeConfig = validateThemeConfig;
7
+ exports.ThemeConfigSchema = void 0;
8
+
9
+ var _utilsValidation = require("@docusaurus/utils-validation");
10
+
1
11
  /**
2
12
  * Copyright (c) Facebook, Inc. and its affiliates.
3
13
  *
4
14
  * This source code is licensed under the MIT license found in the
5
15
  * LICENSE file in the root directory of this source tree.
6
16
  */
7
-
8
- const {Joi, URISchema} = require('@docusaurus/utils-validation');
9
-
10
17
  const DEFAULT_DOCS_CONFIG = {
11
- versionPersistence: 'localStorage',
18
+ versionPersistence: 'localStorage'
12
19
  };
13
- const DocsSchema = Joi.object({
14
- versionPersistence: Joi.string()
15
- .equal('localStorage', 'none')
16
- .default(DEFAULT_DOCS_CONFIG.versionPersistence),
20
+
21
+ const DocsSchema = _utilsValidation.Joi.object({
22
+ versionPersistence: _utilsValidation.Joi.string().equal('localStorage', 'none').default(DEFAULT_DOCS_CONFIG.versionPersistence)
17
23
  }).default(DEFAULT_DOCS_CONFIG);
18
24
 
19
25
  const DEFAULT_COLOR_MODE_CONFIG = {
@@ -24,294 +30,269 @@ const DEFAULT_COLOR_MODE_CONFIG = {
24
30
  darkIcon: '🌜',
25
31
  darkIconStyle: {},
26
32
  lightIcon: '🌞',
27
- lightIconStyle: {},
28
- },
33
+ lightIconStyle: {}
34
+ }
29
35
  };
30
-
31
36
  const DEFAULT_CONFIG = {
32
37
  colorMode: DEFAULT_COLOR_MODE_CONFIG,
33
38
  docs: DEFAULT_DOCS_CONFIG,
34
39
  metadatas: [],
35
40
  prism: {
36
- additionalLanguages: [],
41
+ additionalLanguages: []
37
42
  },
38
43
  navbar: {
39
44
  hideOnScroll: false,
40
- items: [],
45
+ items: []
41
46
  },
42
47
  hideableSidebar: false,
48
+ tableOfContents: {
49
+ minHeadingLevel: 2,
50
+ maxHeadingLevel: 3
51
+ }
43
52
  };
44
53
  exports.DEFAULT_CONFIG = DEFAULT_CONFIG;
45
54
 
46
- const NavbarItemPosition = Joi.string().equal('left', 'right').default('left');
55
+ const NavbarItemPosition = _utilsValidation.Joi.string().equal('left', 'right').default('left');
47
56
 
48
- const BaseNavbarItemSchema = Joi.object({
49
- to: Joi.string(),
50
- href: URISchema,
51
- label: Joi.string(),
52
- className: Joi.string(),
53
- prependBaseUrlToHref: Joi.bool(),
54
- })
55
- // We allow any unknown attributes on the links
56
- // (users may need additional attributes like target, aria-role, data-customAttribute...)
57
- .unknown();
57
+ const NavbarItemBaseSchema = _utilsValidation.Joi.object({
58
+ label: _utilsValidation.Joi.string(),
59
+ className: _utilsValidation.Joi.string()
60
+ }) // We allow any unknown attributes on the links
61
+ // (users may need additional attributes like target, aria-role, data-customAttribute...)
62
+ .unknown();
58
63
 
59
- // TODO we should probably create a custom navbar item type "dropdown"
60
- // having this recursive structure is bad because we only support 2 levels
61
- // + parent/child don't have exactly the same props
62
- const DefaultNavbarItemSchema = BaseNavbarItemSchema.append({
63
- items: Joi.array().optional().items(BaseNavbarItemSchema),
64
- position: NavbarItemPosition,
65
- activeBasePath: Joi.string(),
66
- activeBaseRegex: Joi.string(),
64
+ const DefaultNavbarItemSchema = NavbarItemBaseSchema.append({
65
+ to: _utilsValidation.Joi.string(),
66
+ href: _utilsValidation.URISchema,
67
+ activeBasePath: _utilsValidation.Joi.string(),
68
+ activeBaseRegex: _utilsValidation.Joi.string(),
69
+ prependBaseUrlToHref: _utilsValidation.Joi.bool(),
70
+ // This is only triggered in case of a nested dropdown
71
+ items: _utilsValidation.Joi.forbidden().messages({
72
+ 'any.unknown': 'Nested dropdowns are not allowed'
73
+ })
74
+ }).xor('href', 'to').messages({
75
+ 'object.xor': 'One and only one between "to" and "href" should be provided'
67
76
  });
68
- // TODO the dropdown parent item can have no href/to
69
- // should check should not apply to dropdown parent item
70
- // .xor('href', 'to');
71
-
72
- const DocsVersionNavbarItemSchema = Joi.object({
73
- type: Joi.string().equal('docsVersion').required(),
74
- position: NavbarItemPosition,
75
- label: Joi.string(),
76
- to: Joi.string(),
77
- docsPluginId: Joi.string(),
78
- className: Joi.string(),
77
+ const DocsVersionNavbarItemSchema = NavbarItemBaseSchema.append({
78
+ type: _utilsValidation.Joi.string().equal('docsVersion').required(),
79
+ to: _utilsValidation.Joi.string(),
80
+ docsPluginId: _utilsValidation.Joi.string()
79
81
  });
80
-
81
- const DocsVersionDropdownNavbarItemSchema = Joi.object({
82
- type: Joi.string().equal('docsVersionDropdown').required(),
83
- position: NavbarItemPosition,
84
- docsPluginId: Joi.string(),
85
- dropdownActiveClassDisabled: Joi.boolean(),
86
- dropdownItemsBefore: Joi.array().items(BaseNavbarItemSchema).default([]),
87
- dropdownItemsAfter: Joi.array().items(BaseNavbarItemSchema).default([]),
88
- className: Joi.string(),
82
+ const DocItemSchema = NavbarItemBaseSchema.append({
83
+ type: _utilsValidation.Joi.string().equal('doc').required(),
84
+ docId: _utilsValidation.Joi.string().required(),
85
+ docsPluginId: _utilsValidation.Joi.string()
89
86
  });
90
87
 
91
- const DocItemSchema = Joi.object({
92
- type: Joi.string().equal('doc').required(),
93
- position: NavbarItemPosition,
94
- docId: Joi.string().required(),
95
- label: Joi.string(),
96
- docsPluginId: Joi.string(),
97
- activeSidebarClassName: Joi.string().default('navbar__link--active'),
98
- className: Joi.string(),
99
- });
88
+ const itemWithType = type => {
89
+ // because equal(undefined) is not supported :/
90
+ const typeSchema = type ? _utilsValidation.Joi.string().required().equal(type) : _utilsValidation.Joi.string().forbidden();
91
+ return _utilsValidation.Joi.object({
92
+ type: typeSchema
93
+ }).unknown().required();
94
+ };
100
95
 
101
- const LocaleDropdownNavbarItemSchema = Joi.object({
102
- type: Joi.string().equal('localeDropdown').required(),
103
- position: NavbarItemPosition,
104
- dropdownItemsBefore: Joi.array().items(BaseNavbarItemSchema).default([]),
105
- dropdownItemsAfter: Joi.array().items(BaseNavbarItemSchema).default([]),
106
- className: Joi.string(),
96
+ const DropdownSubitemSchema = _utilsValidation.Joi.object({
97
+ position: _utilsValidation.Joi.forbidden()
98
+ }).when('.', {
99
+ switch: [{
100
+ is: itemWithType('docsVersion'),
101
+ then: DocsVersionNavbarItemSchema
102
+ }, {
103
+ is: itemWithType('doc'),
104
+ then: DocItemSchema
105
+ }, {
106
+ is: itemWithType(undefined),
107
+ then: DefaultNavbarItemSchema
108
+ }, {
109
+ is: _utilsValidation.Joi.alternatives().try(itemWithType('dropdown'), itemWithType('docsVersionDropdown'), itemWithType('localeDropdown'), itemWithType('search')),
110
+ then: _utilsValidation.Joi.forbidden().messages({
111
+ 'any.unknown': 'Nested dropdowns are not allowed'
112
+ })
113
+ }],
114
+ otherwise: _utilsValidation.Joi.forbidden().messages({
115
+ 'any.unknown': 'Bad navbar item type {.type}'
116
+ })
107
117
  });
108
118
 
109
- const SearchItemSchema = Joi.object({
110
- type: Joi.string().equal('search').required(),
111
- position: NavbarItemPosition,
119
+ const DropdownNavbarItemSchema = NavbarItemBaseSchema.append({
120
+ items: _utilsValidation.Joi.array().items(DropdownSubitemSchema).required()
121
+ });
122
+ const DocsVersionDropdownNavbarItemSchema = NavbarItemBaseSchema.append({
123
+ type: _utilsValidation.Joi.string().equal('docsVersionDropdown').required(),
124
+ docsPluginId: _utilsValidation.Joi.string(),
125
+ dropdownActiveClassDisabled: _utilsValidation.Joi.boolean(),
126
+ dropdownItemsBefore: _utilsValidation.Joi.array().items(DropdownSubitemSchema).default([]),
127
+ dropdownItemsAfter: _utilsValidation.Joi.array().items(DropdownSubitemSchema).default([])
128
+ });
129
+ const LocaleDropdownNavbarItemSchema = NavbarItemBaseSchema.append({
130
+ type: _utilsValidation.Joi.string().equal('localeDropdown').required(),
131
+ dropdownItemsBefore: _utilsValidation.Joi.array().items(DropdownSubitemSchema).default([]),
132
+ dropdownItemsAfter: _utilsValidation.Joi.array().items(DropdownSubitemSchema).default([])
112
133
  });
113
134
 
114
- // Can this be made easier? :/
115
- const isOfType = (type) => {
116
- let typeSchema = Joi.string().required();
117
- // because equal(undefined) is not supported :/
118
- if (type) {
119
- typeSchema = typeSchema.equal(type);
120
- }
121
- return Joi.object({
122
- type: typeSchema,
123
- })
124
- .unknown()
125
- .required();
126
- };
127
-
128
- const NavbarItemSchema = Joi.object().when({
129
- switch: [
130
- {
131
- is: isOfType('docsVersion'),
132
- then: DocsVersionNavbarItemSchema,
133
- },
134
- {
135
- is: isOfType('docsVersionDropdown'),
136
- then: DocsVersionDropdownNavbarItemSchema,
137
- },
138
- {
139
- is: isOfType('doc'),
140
- then: DocItemSchema,
141
- },
142
- {
143
- is: isOfType('localeDropdown'),
144
- then: LocaleDropdownNavbarItemSchema,
145
- },
146
- {
147
- is: isOfType('search'),
148
- then: SearchItemSchema,
149
- },
150
- {
151
- is: isOfType(undefined),
152
- then: Joi.forbidden().messages({
153
- 'any.unknown': 'Bad navbar item type {.type}',
154
- }),
155
- },
156
- ],
157
- otherwise: DefaultNavbarItemSchema,
135
+ const SearchItemSchema = _utilsValidation.Joi.object({
136
+ type: _utilsValidation.Joi.string().equal('search').required()
158
137
  });
159
138
 
160
- /*
161
- const NavbarItemSchema = Joi.object({
162
- type: Joi.string().only(['docsVersion'])
163
- })
164
- .when(Joi.object({ type: 'docsVersion' }).unknown(), {
165
- then: Joi.object({ pepperoni: Joi.boolean() })
166
- })
167
- .when(Joi.object().unknown(), {
168
- then: Joi.object({ croutons: Joi.boolean() })
139
+ const NavbarItemSchema = _utilsValidation.Joi.object({
140
+ position: NavbarItemPosition
141
+ }).when('.', {
142
+ switch: [{
143
+ is: itemWithType('docsVersion'),
144
+ then: DocsVersionNavbarItemSchema
145
+ }, {
146
+ is: itemWithType('dropdown'),
147
+ then: DropdownNavbarItemSchema
148
+ }, {
149
+ is: itemWithType('docsVersionDropdown'),
150
+ then: DocsVersionDropdownNavbarItemSchema
151
+ }, {
152
+ is: itemWithType('doc'),
153
+ then: DocItemSchema
154
+ }, {
155
+ is: itemWithType('localeDropdown'),
156
+ then: LocaleDropdownNavbarItemSchema
157
+ }, {
158
+ is: itemWithType('search'),
159
+ then: SearchItemSchema
160
+ }, {
161
+ is: itemWithType(undefined),
162
+ then: _utilsValidation.Joi.object().when('.', {
163
+ // Dropdown item can be specified without type field
164
+ is: _utilsValidation.Joi.object({
165
+ items: _utilsValidation.Joi.array().required()
166
+ }).unknown(),
167
+ then: DropdownNavbarItemSchema,
168
+ otherwise: DefaultNavbarItemSchema
169
+ })
170
+ }],
171
+ otherwise: _utilsValidation.Joi.forbidden().messages({
172
+ 'any.unknown': 'Bad navbar item type {.type}'
169
173
  })
170
-
171
- */
172
-
173
- /*
174
- const NavbarItemSchema = Joi.object().when('type', {
175
- is: Joi.valid('docsVersion'),
176
- then: DocsVersionNavbarItemSchema,
177
- otherwise: DefaultNavbarItemSchema,
178
174
  });
179
- */
180
175
 
181
- const ColorModeSchema = Joi.object({
182
- defaultMode: Joi.string()
183
- .equal('dark', 'light')
184
- .default(DEFAULT_COLOR_MODE_CONFIG.defaultMode),
185
- disableSwitch: Joi.bool().default(DEFAULT_COLOR_MODE_CONFIG.disableSwitch),
186
- respectPrefersColorScheme: Joi.bool().default(
187
- DEFAULT_COLOR_MODE_CONFIG.respectPrefersColorScheme,
188
- ),
189
- switchConfig: Joi.object({
190
- darkIcon: Joi.string().default(
191
- DEFAULT_COLOR_MODE_CONFIG.switchConfig.darkIcon,
192
- ),
193
- darkIconStyle: Joi.object().default(
194
- DEFAULT_COLOR_MODE_CONFIG.switchConfig.darkIconStyle,
195
- ),
196
- lightIcon: Joi.string().default(
197
- DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIcon,
198
- ),
199
- lightIconStyle: Joi.object().default(
200
- DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIconStyle,
201
- ),
202
- }).default(DEFAULT_COLOR_MODE_CONFIG.switchConfig),
203
- }).default(DEFAULT_COLOR_MODE_CONFIG);
176
+ const ColorModeSchema = _utilsValidation.Joi.object({
177
+ defaultMode: _utilsValidation.Joi.string().equal('dark', 'light').default(DEFAULT_COLOR_MODE_CONFIG.defaultMode),
178
+ disableSwitch: _utilsValidation.Joi.bool().default(DEFAULT_COLOR_MODE_CONFIG.disableSwitch),
179
+ respectPrefersColorScheme: _utilsValidation.Joi.bool().default(DEFAULT_COLOR_MODE_CONFIG.respectPrefersColorScheme),
180
+ switchConfig: _utilsValidation.Joi.object({
181
+ darkIcon: _utilsValidation.Joi.string().default(DEFAULT_COLOR_MODE_CONFIG.switchConfig.darkIcon),
182
+ darkIconStyle: _utilsValidation.Joi.object().default(DEFAULT_COLOR_MODE_CONFIG.switchConfig.darkIconStyle),
183
+ lightIcon: _utilsValidation.Joi.string().default(DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIcon),
184
+ lightIconStyle: _utilsValidation.Joi.object().default(DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIconStyle)
185
+ }).default(DEFAULT_COLOR_MODE_CONFIG.switchConfig)
186
+ }).default(DEFAULT_COLOR_MODE_CONFIG); // schema can probably be improved
187
+
204
188
 
205
- // schema can probably be improved
206
- const HtmlMetadataSchema = Joi.object({
207
- id: Joi.string(),
208
- name: Joi.string(),
209
- property: Joi.string(),
210
- content: Joi.string(),
211
- itemprop: Joi.string(),
189
+ const HtmlMetadataSchema = _utilsValidation.Joi.object({
190
+ id: _utilsValidation.Joi.string(),
191
+ name: _utilsValidation.Joi.string(),
192
+ property: _utilsValidation.Joi.string(),
193
+ content: _utilsValidation.Joi.string(),
194
+ itemprop: _utilsValidation.Joi.string()
212
195
  }).unknown();
213
196
 
214
- const FooterLinkItemSchema = Joi.object({
215
- to: Joi.string(),
216
- href: URISchema,
217
- html: Joi.string(),
218
- label: Joi.string(),
219
- })
220
- .xor('to', 'href', 'html')
221
- .with('to', 'label')
222
- .with('href', 'label')
223
- .nand('html', 'label')
224
- // We allow any unknown attributes on the links
225
- // (users may need additional attributes like target, aria-role, data-customAttribute...)
226
- .unknown();
197
+ const FooterLinkItemSchema = _utilsValidation.Joi.object({
198
+ to: _utilsValidation.Joi.string(),
199
+ href: _utilsValidation.URISchema,
200
+ html: _utilsValidation.Joi.string(),
201
+ label: _utilsValidation.Joi.string()
202
+ }).xor('to', 'href', 'html').with('to', 'label').with('href', 'label').nand('html', 'label') // We allow any unknown attributes on the links
203
+ // (users may need additional attributes like target, aria-role, data-customAttribute...)
204
+ .unknown();
227
205
 
228
- const CustomCssSchema = Joi.alternatives()
229
- .try(Joi.array().items(Joi.string().required()), Joi.string().required())
230
- .optional();
206
+ const CustomCssSchema = _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array().items(_utilsValidation.Joi.string().required()), _utilsValidation.Joi.string().required()).optional();
231
207
 
232
- const ThemeConfigSchema = Joi.object({
208
+ const ThemeConfigSchema = _utilsValidation.Joi.object({
233
209
  // TODO temporary (@alpha-58)
234
- disableDarkMode: Joi.any().forbidden(false).messages({
235
- 'any.unknown':
236
- 'disableDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.disableSwitch = true',
210
+ disableDarkMode: _utilsValidation.Joi.any().forbidden().messages({
211
+ 'any.unknown': 'disableDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.disableSwitch = true'
237
212
  }),
238
213
  // TODO temporary (@alpha-58)
239
- defaultDarkMode: Joi.any().forbidden(false).messages({
240
- 'any.unknown':
241
- 'defaultDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.defaultMode = "dark"',
214
+ defaultDarkMode: _utilsValidation.Joi.any().forbidden().messages({
215
+ 'any.unknown': 'defaultDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.defaultMode = "dark"'
242
216
  }),
243
217
  customCss: CustomCssSchema,
244
218
  colorMode: ColorModeSchema,
245
- image: Joi.string(),
219
+ image: _utilsValidation.Joi.string(),
246
220
  docs: DocsSchema,
247
- metadatas: Joi.array()
248
- .items(HtmlMetadataSchema)
249
- .default(DEFAULT_CONFIG.metadatas),
250
- announcementBar: Joi.object({
251
- id: Joi.string().default('announcement-bar'),
252
- content: Joi.string(),
253
- backgroundColor: Joi.string(),
254
- textColor: Joi.string(),
255
- isCloseable: Joi.bool().default(true),
221
+ metadatas: _utilsValidation.Joi.array().items(HtmlMetadataSchema).default(DEFAULT_CONFIG.metadatas),
222
+ announcementBar: _utilsValidation.Joi.object({
223
+ id: _utilsValidation.Joi.string().default('announcement-bar'),
224
+ content: _utilsValidation.Joi.string().required(),
225
+ backgroundColor: _utilsValidation.Joi.string(),
226
+ textColor: _utilsValidation.Joi.string(),
227
+ isCloseable: _utilsValidation.Joi.bool().default(true)
256
228
  }).optional(),
257
- navbar: Joi.object({
258
- style: Joi.string().equal('dark', 'primary'),
259
- hideOnScroll: Joi.bool().default(DEFAULT_CONFIG.navbar.hideOnScroll),
229
+ navbar: _utilsValidation.Joi.object({
230
+ style: _utilsValidation.Joi.string().equal('dark', 'primary'),
231
+ hideOnScroll: _utilsValidation.Joi.bool().default(DEFAULT_CONFIG.navbar.hideOnScroll),
260
232
  // TODO temporary (@alpha-58)
261
- links: Joi.any().forbidden().messages({
262
- 'any.unknown':
263
- 'themeConfig.navbar.links has been renamed as themeConfig.navbar.items',
264
- }),
265
- items: Joi.array()
266
- .items(NavbarItemSchema)
267
- .default(DEFAULT_CONFIG.navbar.items),
268
- title: Joi.string().allow('', null),
269
- logo: Joi.object({
270
- alt: Joi.string().allow(''),
271
- src: Joi.string().required(),
272
- srcDark: Joi.string(),
273
- href: Joi.string(),
274
- target: Joi.string(),
233
+ links: _utilsValidation.Joi.any().forbidden().messages({
234
+ 'any.unknown': 'themeConfig.navbar.links has been renamed as themeConfig.navbar.items'
275
235
  }),
236
+ items: _utilsValidation.Joi.array().items(NavbarItemSchema).default(DEFAULT_CONFIG.navbar.items),
237
+ title: _utilsValidation.Joi.string().allow('', null),
238
+ logo: _utilsValidation.Joi.object({
239
+ alt: _utilsValidation.Joi.string().allow(''),
240
+ src: _utilsValidation.Joi.string().required(),
241
+ srcDark: _utilsValidation.Joi.string(),
242
+ width: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.string(), _utilsValidation.Joi.number()),
243
+ height: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.string(), _utilsValidation.Joi.number()),
244
+ href: _utilsValidation.Joi.string(),
245
+ target: _utilsValidation.Joi.string()
246
+ })
276
247
  }).default(DEFAULT_CONFIG.navbar),
277
- footer: Joi.object({
278
- style: Joi.string().equal('dark', 'light').default('light'),
279
- logo: Joi.object({
280
- alt: Joi.string().allow(''),
281
- src: Joi.string(),
282
- srcDark: Joi.string(),
283
- href: Joi.string(),
248
+ footer: _utilsValidation.Joi.object({
249
+ style: _utilsValidation.Joi.string().equal('dark', 'light').default('light'),
250
+ logo: _utilsValidation.Joi.object({
251
+ alt: _utilsValidation.Joi.string().allow(''),
252
+ src: _utilsValidation.Joi.string(),
253
+ srcDark: _utilsValidation.Joi.string(),
254
+ // TODO infer this from reading the image
255
+ width: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.string(), _utilsValidation.Joi.number()),
256
+ height: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.string(), _utilsValidation.Joi.number()),
257
+ href: _utilsValidation.Joi.string()
284
258
  }),
285
- copyright: Joi.string(),
286
- links: Joi.array()
287
- .items(
288
- Joi.object({
289
- title: Joi.string().allow(null),
290
- items: Joi.array().items(FooterLinkItemSchema).default([]),
291
- }),
292
- )
293
- .default([]),
259
+ copyright: _utilsValidation.Joi.string(),
260
+ links: _utilsValidation.Joi.array().items(_utilsValidation.Joi.object({
261
+ title: _utilsValidation.Joi.string().allow(null),
262
+ items: _utilsValidation.Joi.array().items(FooterLinkItemSchema).default([])
263
+ })).default([])
294
264
  }).optional(),
295
- prism: Joi.object({
296
- theme: Joi.object({
297
- plain: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
298
- styles: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
265
+ prism: _utilsValidation.Joi.object({
266
+ theme: _utilsValidation.Joi.object({
267
+ plain: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required(),
268
+ styles: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required()
299
269
  }),
300
- darkTheme: Joi.object({
301
- plain: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
302
- styles: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
270
+ darkTheme: _utilsValidation.Joi.object({
271
+ plain: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required(),
272
+ styles: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required()
303
273
  }),
304
- defaultLanguage: Joi.string(),
305
- additionalLanguages: Joi.array()
306
- .items(Joi.string())
307
- .default(DEFAULT_CONFIG.prism.additionalLanguages),
308
- })
309
- .default(DEFAULT_CONFIG.prism)
310
- .unknown(),
311
- hideableSidebar: Joi.bool().default(DEFAULT_CONFIG.hideableSidebar),
274
+ defaultLanguage: _utilsValidation.Joi.string(),
275
+ additionalLanguages: _utilsValidation.Joi.array().items(_utilsValidation.Joi.string()).default(DEFAULT_CONFIG.prism.additionalLanguages)
276
+ }).default(DEFAULT_CONFIG.prism).unknown(),
277
+ hideableSidebar: _utilsValidation.Joi.bool().default(DEFAULT_CONFIG.hideableSidebar),
278
+ sidebarCollapsible: _utilsValidation.Joi.forbidden().messages({
279
+ 'any.unknown': 'The themeConfig.sidebarCollapsible has been moved to docs plugin options. See: https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-docs'
280
+ }),
281
+ tableOfContents: _utilsValidation.Joi.object({
282
+ minHeadingLevel: _utilsValidation.Joi.number().default(DEFAULT_CONFIG.tableOfContents.minHeadingLevel).when('maxHeadingLevel', {
283
+ is: _utilsValidation.Joi.exist(),
284
+ then: _utilsValidation.Joi.number().integer().min(2).max(6).max(_utilsValidation.Joi.ref('maxHeadingLevel')),
285
+ otherwise: _utilsValidation.Joi.number().integer().min(2).max(6)
286
+ }),
287
+ maxHeadingLevel: _utilsValidation.Joi.number().integer().min(2).max(6).default(DEFAULT_CONFIG.tableOfContents.maxHeadingLevel)
288
+ }).default(DEFAULT_CONFIG.tableOfContents)
312
289
  });
290
+
313
291
  exports.ThemeConfigSchema = ThemeConfigSchema;
314
292
 
315
- exports.validateThemeConfig = ({validate, themeConfig}) => {
293
+ function validateThemeConfig({
294
+ validate,
295
+ themeConfig
296
+ }) {
316
297
  return validate(ThemeConfigSchema, themeConfig);
317
- };
298
+ }