@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
@@ -4,9 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
-
8
- const {Joi, URISchema} = require('@docusaurus/utils-validation');
9
-
7
+ import {Joi, URISchema} from '@docusaurus/utils-validation';
10
8
  const DEFAULT_DOCS_CONFIG = {
11
9
  versionPersistence: 'localStorage',
12
10
  };
@@ -15,7 +13,6 @@ const DocsSchema = Joi.object({
15
13
  .equal('localStorage', 'none')
16
14
  .default(DEFAULT_DOCS_CONFIG.versionPersistence),
17
15
  }).default(DEFAULT_DOCS_CONFIG);
18
-
19
16
  const DEFAULT_COLOR_MODE_CONFIG = {
20
17
  defaultMode: 'light',
21
18
  disableSwitch: false,
@@ -27,7 +24,6 @@ const DEFAULT_COLOR_MODE_CONFIG = {
27
24
  lightIconStyle: {},
28
25
  },
29
26
  };
30
-
31
27
  const DEFAULT_CONFIG = {
32
28
  colorMode: DEFAULT_COLOR_MODE_CONFIG,
33
29
  docs: DEFAULT_DOCS_CONFIG,
@@ -40,84 +36,50 @@ const DEFAULT_CONFIG = {
40
36
  items: [],
41
37
  },
42
38
  hideableSidebar: false,
39
+ tableOfContents: {
40
+ minHeadingLevel: 2,
41
+ maxHeadingLevel: 3,
42
+ },
43
43
  };
44
44
  exports.DEFAULT_CONFIG = DEFAULT_CONFIG;
45
-
46
45
  const NavbarItemPosition = Joi.string().equal('left', 'right').default('left');
47
-
48
- const BaseNavbarItemSchema = Joi.object({
49
- to: Joi.string(),
50
- href: URISchema,
46
+ const NavbarItemBaseSchema = Joi.object({
51
47
  label: Joi.string(),
52
48
  className: Joi.string(),
53
- prependBaseUrlToHref: Joi.bool(),
54
- })
55
- // We allow any unknown attributes on the links
49
+ }) // We allow any unknown attributes on the links
56
50
  // (users may need additional attributes like target, aria-role, data-customAttribute...)
57
51
  .unknown();
58
-
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,
52
+ const DefaultNavbarItemSchema = NavbarItemBaseSchema.append({
53
+ to: Joi.string(),
54
+ href: URISchema,
65
55
  activeBasePath: Joi.string(),
66
56
  activeBaseRegex: Joi.string(),
67
- });
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({
57
+ prependBaseUrlToHref: Joi.bool(),
58
+ // This is only triggered in case of a nested dropdown
59
+ items: Joi.forbidden().messages({
60
+ 'any.unknown': 'Nested dropdowns are not allowed',
61
+ }),
62
+ })
63
+ .xor('href', 'to')
64
+ .messages({
65
+ 'object.xor': 'One and only one between "to" and "href" should be provided',
66
+ });
67
+ const DocsVersionNavbarItemSchema = NavbarItemBaseSchema.append({
73
68
  type: Joi.string().equal('docsVersion').required(),
74
- position: NavbarItemPosition,
75
- label: Joi.string(),
76
69
  to: Joi.string(),
77
70
  docsPluginId: Joi.string(),
78
- className: Joi.string(),
79
- });
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(),
89
71
  });
90
-
91
- const DocItemSchema = Joi.object({
72
+ const DocItemSchema = NavbarItemBaseSchema.append({
92
73
  type: Joi.string().equal('doc').required(),
93
- position: NavbarItemPosition,
94
74
  docId: Joi.string().required(),
95
- label: Joi.string(),
96
75
  docsPluginId: Joi.string(),
97
- activeSidebarClassName: Joi.string().default('navbar__link--active'),
98
- className: Joi.string(),
99
- });
100
-
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(),
107
- });
108
-
109
- const SearchItemSchema = Joi.object({
110
- type: Joi.string().equal('search').required(),
111
- position: NavbarItemPosition,
112
76
  });
113
77
 
114
- // Can this be made easier? :/
115
- const isOfType = (type) => {
116
- let typeSchema = Joi.string().required();
78
+ const itemWithType = (type) => {
117
79
  // because equal(undefined) is not supported :/
118
- if (type) {
119
- typeSchema = typeSchema.equal(type);
120
- }
80
+ const typeSchema = type
81
+ ? Joi.string().required().equal(type)
82
+ : Joi.string().forbidden();
121
83
  return Joi.object({
122
84
  type: typeSchema,
123
85
  })
@@ -125,59 +87,100 @@ const isOfType = (type) => {
125
87
  .required();
126
88
  };
127
89
 
128
- const NavbarItemSchema = Joi.object().when({
90
+ const DropdownSubitemSchema = Joi.object({
91
+ position: Joi.forbidden(),
92
+ }).when('.', {
129
93
  switch: [
130
94
  {
131
- is: isOfType('docsVersion'),
95
+ is: itemWithType('docsVersion'),
132
96
  then: DocsVersionNavbarItemSchema,
133
97
  },
134
98
  {
135
- is: isOfType('docsVersionDropdown'),
99
+ is: itemWithType('doc'),
100
+ then: DocItemSchema,
101
+ },
102
+ {
103
+ is: itemWithType(undefined),
104
+ then: DefaultNavbarItemSchema,
105
+ },
106
+ {
107
+ is: Joi.alternatives().try(
108
+ itemWithType('dropdown'),
109
+ itemWithType('docsVersionDropdown'),
110
+ itemWithType('localeDropdown'),
111
+ itemWithType('search'),
112
+ ),
113
+ then: Joi.forbidden().messages({
114
+ 'any.unknown': 'Nested dropdowns are not allowed',
115
+ }),
116
+ },
117
+ ],
118
+ otherwise: Joi.forbidden().messages({
119
+ 'any.unknown': 'Bad navbar item type {.type}',
120
+ }),
121
+ });
122
+ const DropdownNavbarItemSchema = NavbarItemBaseSchema.append({
123
+ items: Joi.array().items(DropdownSubitemSchema).required(),
124
+ });
125
+ const DocsVersionDropdownNavbarItemSchema = NavbarItemBaseSchema.append({
126
+ type: Joi.string().equal('docsVersionDropdown').required(),
127
+ docsPluginId: Joi.string(),
128
+ dropdownActiveClassDisabled: Joi.boolean(),
129
+ dropdownItemsBefore: Joi.array().items(DropdownSubitemSchema).default([]),
130
+ dropdownItemsAfter: Joi.array().items(DropdownSubitemSchema).default([]),
131
+ });
132
+ const LocaleDropdownNavbarItemSchema = NavbarItemBaseSchema.append({
133
+ type: Joi.string().equal('localeDropdown').required(),
134
+ dropdownItemsBefore: Joi.array().items(DropdownSubitemSchema).default([]),
135
+ dropdownItemsAfter: Joi.array().items(DropdownSubitemSchema).default([]),
136
+ });
137
+ const SearchItemSchema = Joi.object({
138
+ type: Joi.string().equal('search').required(),
139
+ });
140
+ const NavbarItemSchema = Joi.object({
141
+ position: NavbarItemPosition,
142
+ }).when('.', {
143
+ switch: [
144
+ {
145
+ is: itemWithType('docsVersion'),
146
+ then: DocsVersionNavbarItemSchema,
147
+ },
148
+ {
149
+ is: itemWithType('dropdown'),
150
+ then: DropdownNavbarItemSchema,
151
+ },
152
+ {
153
+ is: itemWithType('docsVersionDropdown'),
136
154
  then: DocsVersionDropdownNavbarItemSchema,
137
155
  },
138
156
  {
139
- is: isOfType('doc'),
157
+ is: itemWithType('doc'),
140
158
  then: DocItemSchema,
141
159
  },
142
160
  {
143
- is: isOfType('localeDropdown'),
161
+ is: itemWithType('localeDropdown'),
144
162
  then: LocaleDropdownNavbarItemSchema,
145
163
  },
146
164
  {
147
- is: isOfType('search'),
165
+ is: itemWithType('search'),
148
166
  then: SearchItemSchema,
149
167
  },
150
168
  {
151
- is: isOfType(undefined),
152
- then: Joi.forbidden().messages({
153
- 'any.unknown': 'Bad navbar item type {.type}',
169
+ is: itemWithType(undefined),
170
+ then: Joi.object().when('.', {
171
+ // Dropdown item can be specified without type field
172
+ is: Joi.object({
173
+ items: Joi.array().required(),
174
+ }).unknown(),
175
+ then: DropdownNavbarItemSchema,
176
+ otherwise: DefaultNavbarItemSchema,
154
177
  }),
155
178
  },
156
179
  ],
157
- otherwise: DefaultNavbarItemSchema,
158
- });
159
-
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() })
169
- })
170
-
171
- */
172
-
173
- /*
174
- const NavbarItemSchema = Joi.object().when('type', {
175
- is: Joi.valid('docsVersion'),
176
- then: DocsVersionNavbarItemSchema,
177
- otherwise: DefaultNavbarItemSchema,
180
+ otherwise: Joi.forbidden().messages({
181
+ 'any.unknown': 'Bad navbar item type {.type}',
182
+ }),
178
183
  });
179
- */
180
-
181
184
  const ColorModeSchema = Joi.object({
182
185
  defaultMode: Joi.string()
183
186
  .equal('dark', 'light')
@@ -200,9 +203,8 @@ const ColorModeSchema = Joi.object({
200
203
  DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIconStyle,
201
204
  ),
202
205
  }).default(DEFAULT_COLOR_MODE_CONFIG.switchConfig),
203
- }).default(DEFAULT_COLOR_MODE_CONFIG);
206
+ }).default(DEFAULT_COLOR_MODE_CONFIG); // schema can probably be improved
204
207
 
205
- // schema can probably be improved
206
208
  const HtmlMetadataSchema = Joi.object({
207
209
  id: Joi.string(),
208
210
  name: Joi.string(),
@@ -210,7 +212,6 @@ const HtmlMetadataSchema = Joi.object({
210
212
  content: Joi.string(),
211
213
  itemprop: Joi.string(),
212
214
  }).unknown();
213
-
214
215
  const FooterLinkItemSchema = Joi.object({
215
216
  to: Joi.string(),
216
217
  href: URISchema,
@@ -220,23 +221,20 @@ const FooterLinkItemSchema = Joi.object({
220
221
  .xor('to', 'href', 'html')
221
222
  .with('to', 'label')
222
223
  .with('href', 'label')
223
- .nand('html', 'label')
224
- // We allow any unknown attributes on the links
224
+ .nand('html', 'label') // We allow any unknown attributes on the links
225
225
  // (users may need additional attributes like target, aria-role, data-customAttribute...)
226
226
  .unknown();
227
-
228
227
  const CustomCssSchema = Joi.alternatives()
229
228
  .try(Joi.array().items(Joi.string().required()), Joi.string().required())
230
229
  .optional();
231
-
232
230
  const ThemeConfigSchema = Joi.object({
233
231
  // TODO temporary (@alpha-58)
234
- disableDarkMode: Joi.any().forbidden(false).messages({
232
+ disableDarkMode: Joi.any().forbidden().messages({
235
233
  'any.unknown':
236
234
  'disableDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.disableSwitch = true',
237
235
  }),
238
236
  // TODO temporary (@alpha-58)
239
- defaultDarkMode: Joi.any().forbidden(false).messages({
237
+ defaultDarkMode: Joi.any().forbidden().messages({
240
238
  'any.unknown':
241
239
  'defaultDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.defaultMode = "dark"',
242
240
  }),
@@ -249,7 +247,7 @@ const ThemeConfigSchema = Joi.object({
249
247
  .default(DEFAULT_CONFIG.metadatas),
250
248
  announcementBar: Joi.object({
251
249
  id: Joi.string().default('announcement-bar'),
252
- content: Joi.string(),
250
+ content: Joi.string().required(),
253
251
  backgroundColor: Joi.string(),
254
252
  textColor: Joi.string(),
255
253
  isCloseable: Joi.bool().default(true),
@@ -270,6 +268,8 @@ const ThemeConfigSchema = Joi.object({
270
268
  alt: Joi.string().allow(''),
271
269
  src: Joi.string().required(),
272
270
  srcDark: Joi.string(),
271
+ width: Joi.alternatives().try(Joi.string(), Joi.number()),
272
+ height: Joi.alternatives().try(Joi.string(), Joi.number()),
273
273
  href: Joi.string(),
274
274
  target: Joi.string(),
275
275
  }),
@@ -280,6 +280,9 @@ const ThemeConfigSchema = Joi.object({
280
280
  alt: Joi.string().allow(''),
281
281
  src: Joi.string(),
282
282
  srcDark: Joi.string(),
283
+ // TODO infer this from reading the image
284
+ width: Joi.alternatives().try(Joi.string(), Joi.number()),
285
+ height: Joi.alternatives().try(Joi.string(), Joi.number()),
283
286
  href: Joi.string(),
284
287
  }),
285
288
  copyright: Joi.string(),
@@ -309,9 +312,30 @@ const ThemeConfigSchema = Joi.object({
309
312
  .default(DEFAULT_CONFIG.prism)
310
313
  .unknown(),
311
314
  hideableSidebar: Joi.bool().default(DEFAULT_CONFIG.hideableSidebar),
315
+ sidebarCollapsible: Joi.forbidden().messages({
316
+ 'any.unknown':
317
+ 'The themeConfig.sidebarCollapsible has been moved to docs plugin options. See: https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-docs',
318
+ }),
319
+ tableOfContents: Joi.object({
320
+ minHeadingLevel: Joi.number()
321
+ .default(DEFAULT_CONFIG.tableOfContents.minHeadingLevel)
322
+ .when('maxHeadingLevel', {
323
+ is: Joi.exist(),
324
+ then: Joi.number()
325
+ .integer()
326
+ .min(2)
327
+ .max(6)
328
+ .max(Joi.ref('maxHeadingLevel')),
329
+ otherwise: Joi.number().integer().min(2).max(6),
330
+ }),
331
+ maxHeadingLevel: Joi.number()
332
+ .integer()
333
+ .min(2)
334
+ .max(6)
335
+ .default(DEFAULT_CONFIG.tableOfContents.maxHeadingLevel),
336
+ }).default(DEFAULT_CONFIG.tableOfContents),
312
337
  });
313
- exports.ThemeConfigSchema = ThemeConfigSchema;
314
-
315
- exports.validateThemeConfig = ({validate, themeConfig}) => {
338
+ export {ThemeConfigSchema};
339
+ export function validateThemeConfig({validate, themeConfig}) {
316
340
  return validate(ThemeConfigSchema, themeConfig);
317
- };
341
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docusaurus/theme-classic",
3
- "version": "2.0.0-beta.8bda3b2db",
3
+ "version": "2.0.0-beta.9",
4
4
  "description": "Classic theme for Docusaurus",
5
5
  "main": "lib/index.js",
6
6
  "types": "src/types.d.ts",
@@ -15,7 +15,7 @@
15
15
  "license": "MIT",
16
16
  "scripts": {
17
17
  "build": "tsc --noEmit && yarn babel:lib && yarn babel:lib-next && yarn prettier:lib-next",
18
- "watch": "concurrently -n \"lib,lib-next\" --kill-others \"yarn babel:lib --watch\" \"yarn babel:lib-next --watch\"",
18
+ "watch": "concurrently --names \"lib,lib-next,tsc\" --kill-others \"yarn babel:lib --watch\" \"yarn babel:lib-next --watch\" \"yarn tsc --watch\"",
19
19
  "babel:lib": "cross-env BABEL_ENV=lib babel src -d lib --extensions \".tsx,.ts\" --ignore \"**/*.d.ts\" --copy-files",
20
20
  "babel:lib-next": "cross-env BABEL_ENV=lib-next babel src -d lib-next --extensions \".tsx,.ts\" --ignore \"**/*.d.ts\" --copy-files",
21
21
  "prettier": "prettier --config ../../.prettierrc --ignore-path ../../.prettierignore --write \"**/*.{js,ts,jsx,tsc}\"",
@@ -23,41 +23,46 @@
23
23
  "update-code-translations": "node -e 'require(\"./update-code-translations.js\").run()'"
24
24
  },
25
25
  "dependencies": {
26
- "@docusaurus/core": "2.0.0-beta.8bda3b2db",
27
- "@docusaurus/plugin-content-blog": "2.0.0-beta.8bda3b2db",
28
- "@docusaurus/plugin-content-docs": "2.0.0-beta.8bda3b2db",
29
- "@docusaurus/plugin-content-pages": "2.0.0-beta.8bda3b2db",
30
- "@docusaurus/theme-common": "2.0.0-beta.8bda3b2db",
31
- "@docusaurus/types": "2.0.0-beta.8bda3b2db",
32
- "@docusaurus/utils": "2.0.0-beta.8bda3b2db",
33
- "@docusaurus/utils-common": "2.0.0-beta.8bda3b2db",
34
- "@docusaurus/utils-validation": "2.0.0-beta.8bda3b2db",
26
+ "@docusaurus/core": "2.0.0-beta.9",
27
+ "@docusaurus/plugin-content-blog": "2.0.0-beta.9",
28
+ "@docusaurus/plugin-content-docs": "2.0.0-beta.9",
29
+ "@docusaurus/plugin-content-pages": "2.0.0-beta.9",
30
+ "@docusaurus/theme-common": "2.0.0-beta.9",
31
+ "@docusaurus/types": "2.0.0-beta.9",
32
+ "@docusaurus/utils": "2.0.0-beta.9",
33
+ "@docusaurus/utils-common": "2.0.0-beta.9",
34
+ "@docusaurus/utils-validation": "2.0.0-beta.9",
35
35
  "@mdx-js/mdx": "^1.6.21",
36
36
  "@mdx-js/react": "^1.6.21",
37
- "chalk": "^4.1.1",
37
+ "chalk": "^4.1.2",
38
38
  "clsx": "^1.1.1",
39
39
  "copy-text-to-clipboard": "^3.0.1",
40
40
  "fs-extra": "^10.0.0",
41
41
  "globby": "^11.0.2",
42
- "infima": "0.2.0-alpha.26",
42
+ "infima": "0.2.0-alpha.34",
43
43
  "lodash": "^4.17.20",
44
- "parse-numeric-range": "^1.2.0",
45
- "postcss": "^8.2.15",
44
+ "parse-numeric-range": "^1.3.0",
45
+ "postcss": "^8.3.7",
46
46
  "prism-react-renderer": "^1.2.1",
47
47
  "prismjs": "^1.23.0",
48
48
  "prop-types": "^15.7.2",
49
49
  "react-router-dom": "^5.2.0",
50
- "rtlcss": "^3.1.2"
50
+ "rtlcss": "^3.3.0"
51
51
  },
52
52
  "devDependencies": {
53
- "@docusaurus/module-type-aliases": "2.0.0-beta.8bda3b2db"
53
+ "@docusaurus/module-type-aliases": "2.0.0-beta.9",
54
+ "@types/mdx-js__react": "^1.5.4",
55
+ "@types/parse-numeric-range": "^0.0.1",
56
+ "@types/rtlcss": "^3.1.1",
57
+ "react-test-renderer": "^17.0.2",
58
+ "utility-types": "^3.10.0"
54
59
  },
55
60
  "peerDependencies": {
56
61
  "react": "^16.8.4 || ^17.0.0",
57
62
  "react-dom": "^16.8.4 || ^17.0.0"
58
63
  },
59
64
  "engines": {
60
- "node": ">=12.13.0"
65
+ "node": ">=14"
61
66
  },
62
- "gitHead": "11a61b194f840ae0d554849a71c0d9447ef770af"
67
+ "gitHead": "8a491fc29ad002f90e97f5b5fe4178ac8fa0c4d7"
63
68
  }