@docusaurus/theme-classic 2.0.0-beta.13 → 2.0.0-beta.15

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 (299) hide show
  1. package/README.md +1 -1
  2. package/lib/index.js +7 -16
  3. package/lib/theme-classic.d.ts +111 -188
  4. package/lib/translations.js +13 -4
  5. package/lib/validateThemeConfig.js +18 -4
  6. package/lib-next/theme/Admonition/index.js +101 -0
  7. package/lib-next/theme/BackToTopButton/styles.module.css +1 -1
  8. package/lib-next/theme/BlogListPaginator/index.js +12 -12
  9. package/lib-next/theme/BlogPostAuthor/index.js +1 -1
  10. package/lib-next/theme/BlogPostAuthors/index.js +12 -2
  11. package/lib-next/theme/BlogPostAuthors/styles.module.css +10 -0
  12. package/lib-next/theme/BlogPostItem/index.js +12 -15
  13. package/lib-next/theme/BlogPostPage/index.js +10 -7
  14. package/lib-next/theme/BlogPostPaginator/index.js +11 -15
  15. package/lib-next/theme/BlogSidebar/styles.module.css +2 -0
  16. package/lib-next/theme/CodeBlock/index.js +51 -10
  17. package/lib-next/theme/CodeBlock/styles.module.css +18 -7
  18. package/lib-next/theme/DocCard/styles.module.css +3 -3
  19. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +6 -3
  20. package/lib-next/theme/DocItem/index.js +9 -6
  21. package/lib-next/theme/DocItem/styles.module.css +2 -2
  22. package/lib-next/theme/DocPage/index.js +7 -3
  23. package/lib-next/theme/DocPage/styles.module.css +1 -0
  24. package/lib-next/theme/DocPaginator/index.js +11 -13
  25. package/lib-next/theme/DocSidebar/index.js +2 -2
  26. package/lib-next/theme/DocSidebar/styles.module.css +1 -0
  27. package/lib-next/theme/DocSidebarItem/index.js +43 -21
  28. package/lib-next/theme/DocSidebarItem/styles.module.css +1 -0
  29. package/lib-next/theme/DocSidebarItems/index.js +28 -0
  30. package/{lib/theme/DocSidebarItem → lib-next/theme/DocSidebarItems}/styles.module.css +1 -0
  31. package/lib-next/theme/DocVersionBanner/index.js +4 -1
  32. package/lib-next/theme/Footer/index.js +73 -35
  33. package/lib-next/theme/Footer/styles.module.css +2 -1
  34. package/lib-next/theme/Heading/index.js +39 -43
  35. package/lib-next/theme/Heading/styles.css +1 -1
  36. package/lib-next/theme/Layout/index.js +1 -2
  37. package/lib-next/theme/LayoutHead/index.js +5 -9
  38. package/lib-next/theme/LayoutProviders/index.js +6 -6
  39. package/lib-next/theme/MDXComponents/index.js +18 -31
  40. package/lib-next/theme/MDXComponents/styles.css +4 -0
  41. package/lib-next/theme/MDXPage/index.js +3 -10
  42. package/lib-next/theme/Navbar/index.js +6 -6
  43. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +4 -66
  44. package/lib-next/theme/NavbarItem/DocNavbarItem.js +5 -2
  45. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +73 -0
  46. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +5 -3
  47. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +4 -1
  48. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +6 -7
  49. package/lib-next/theme/NavbarItem/NavbarNavLink.js +70 -0
  50. package/lib-next/theme/NavbarItem/index.js +1 -2
  51. package/lib-next/theme/{UserPreferencesContext.js → NavbarItem/utils.js} +3 -3
  52. package/lib-next/theme/PaginatorNavLink/index.js +20 -0
  53. package/lib-next/theme/SkipToContent/index.js +1 -1
  54. package/lib-next/theme/SkipToContent/styles.module.css +7 -0
  55. package/lib-next/theme/TOCCollapsible/styles.module.css +2 -2
  56. package/lib-next/theme/Tabs/__tests__/index.test.js +8 -6
  57. package/lib-next/theme/Tabs/index.js +20 -10
  58. package/lib-next/theme/Tag/styles.module.css +4 -4
  59. package/lib-next/theme/ThemedImage/index.js +2 -2
  60. package/lib-next/theme/Toggle/styles.module.css +16 -15
  61. package/lib-next/theme/prism-include-languages.js +10 -3
  62. package/package.json +17 -19
  63. package/src/index.ts +12 -26
  64. package/src/theme/Admonition/index.tsx +106 -0
  65. package/src/theme/BackToTopButton/styles.module.css +1 -1
  66. package/src/theme/BlogListPaginator/index.tsx +12 -12
  67. package/src/theme/BlogPostAuthor/index.tsx +1 -1
  68. package/src/theme/BlogPostAuthors/index.tsx +12 -2
  69. package/src/theme/BlogPostAuthors/styles.module.css +10 -0
  70. package/src/theme/BlogPostItem/index.tsx +13 -15
  71. package/src/theme/BlogPostPage/index.tsx +10 -7
  72. package/src/theme/BlogPostPaginator/index.tsx +11 -15
  73. package/src/theme/BlogSidebar/styles.module.css +2 -0
  74. package/src/theme/CodeBlock/index.tsx +52 -11
  75. package/src/theme/CodeBlock/styles.module.css +18 -7
  76. package/src/theme/DocCard/index.tsx +2 -2
  77. package/src/theme/DocCard/styles.module.css +3 -3
  78. package/src/theme/DocCardList/index.tsx +1 -1
  79. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +7 -3
  80. package/src/theme/DocItem/index.tsx +9 -6
  81. package/src/theme/DocItem/styles.module.css +2 -2
  82. package/src/theme/DocItemFooter/index.tsx +1 -1
  83. package/src/theme/DocPage/index.tsx +8 -4
  84. package/src/theme/DocPage/styles.module.css +1 -0
  85. package/src/theme/DocPaginator/index.tsx +13 -15
  86. package/src/theme/DocSidebar/index.tsx +3 -3
  87. package/src/theme/DocSidebar/styles.module.css +1 -0
  88. package/src/theme/DocSidebarItem/index.tsx +34 -23
  89. package/src/theme/DocSidebarItem/styles.module.css +1 -0
  90. package/src/theme/DocSidebarItems/index.tsx +32 -0
  91. package/{lib/theme/DocItemFooter → src/theme/DocSidebarItems}/styles.module.css +10 -8
  92. package/src/theme/DocVersionBanner/index.tsx +3 -3
  93. package/src/theme/Footer/index.tsx +84 -38
  94. package/src/theme/Footer/styles.module.css +2 -1
  95. package/src/theme/Heading/index.tsx +39 -47
  96. package/src/theme/Heading/styles.css +1 -1
  97. package/src/theme/Layout/index.tsx +1 -2
  98. package/src/theme/LayoutHead/index.tsx +4 -8
  99. package/src/theme/LayoutProviders/index.tsx +6 -6
  100. package/src/theme/MDXComponents/index.tsx +26 -37
  101. package/src/theme/MDXComponents/styles.css +4 -0
  102. package/src/theme/MDXPage/index.tsx +3 -11
  103. package/src/theme/Navbar/index.tsx +7 -7
  104. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +6 -62
  105. package/src/theme/NavbarItem/DocNavbarItem.tsx +8 -5
  106. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +84 -0
  107. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +9 -6
  108. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +2 -2
  109. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +6 -7
  110. package/src/theme/NavbarItem/NavbarNavLink.tsx +68 -0
  111. package/src/theme/NavbarItem/index.tsx +3 -5
  112. package/{lib-next/theme/hooks/styles.css → src/theme/NavbarItem/utils.ts} +3 -3
  113. package/src/theme/PaginatorNavLink/index.tsx +22 -0
  114. package/src/theme/SkipToContent/index.tsx +1 -1
  115. package/src/theme/SkipToContent/styles.module.css +7 -0
  116. package/src/theme/TOCCollapsible/styles.module.css +2 -2
  117. package/src/theme/TOCItems/index.tsx +2 -2
  118. package/src/theme/Tabs/index.tsx +25 -10
  119. package/src/theme/Tag/styles.module.css +4 -4
  120. package/src/theme/TagsListByLetter/index.tsx +1 -1
  121. package/src/theme/ThemedImage/index.tsx +2 -2
  122. package/src/theme/Toggle/index.tsx +1 -1
  123. package/src/theme/Toggle/styles.module.css +16 -15
  124. package/src/theme/prism-include-languages.ts +10 -3
  125. package/src/theme-classic.d.ts +111 -188
  126. package/src/translations.ts +36 -16
  127. package/src/validateThemeConfig.ts +25 -4
  128. package/babel.config.js +0 -35
  129. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  130. package/lib/__tests__/translations.test.js +0 -112
  131. package/lib/__tests__/validateThemeConfig.test.js +0 -607
  132. package/lib/theme/AnnouncementBar/index.js +0 -68
  133. package/lib/theme/AnnouncementBar/styles.module.css +0 -63
  134. package/lib/theme/BackToTopButton/index.js +0 -140
  135. package/lib/theme/BackToTopButton/styles.module.css +0 -42
  136. package/lib/theme/BlogArchivePage/index.js +0 -89
  137. package/lib/theme/BlogLayout/index.js +0 -51
  138. package/lib/theme/BlogListPage/index.js +0 -60
  139. package/lib/theme/BlogListPaginator/index.js +0 -63
  140. package/lib/theme/BlogPostAuthor/index.js +0 -51
  141. package/lib/theme/BlogPostAuthor/styles.module.css +0 -12
  142. package/lib/theme/BlogPostAuthors/index.js +0 -47
  143. package/lib/theme/BlogPostAuthors/styles.module.css +0 -11
  144. package/lib/theme/BlogPostItem/index.js +0 -152
  145. package/lib/theme/BlogPostItem/styles.module.css +0 -18
  146. package/lib/theme/BlogPostPage/index.js +0 -82
  147. package/lib/theme/BlogPostPaginator/index.js +0 -64
  148. package/lib/theme/BlogSidebar/index.js +0 -49
  149. package/lib/theme/BlogSidebar/styles.module.css +0 -44
  150. package/lib/theme/BlogTagsListPage/index.js +0 -40
  151. package/lib/theme/BlogTagsPostsPage/index.js +0 -86
  152. package/lib/theme/CodeBlock/index.js +0 -133
  153. package/lib/theme/CodeBlock/styles.module.css +0 -65
  154. package/lib/theme/Details/index.js +0 -30
  155. package/lib/theme/Details/styles.module.css +0 -13
  156. package/lib/theme/DocCard/index.js +0 -84
  157. package/lib/theme/DocCard/styles.module.css +0 -43
  158. package/lib/theme/DocCardList/index.js +0 -28
  159. package/lib/theme/DocCategoryGeneratedIndexPage/index.js +0 -57
  160. package/lib/theme/DocCategoryGeneratedIndexPage/styles.module.css +0 -18
  161. package/lib/theme/DocItem/index.js +0 -112
  162. package/lib/theme/DocItem/styles.module.css +0 -22
  163. package/lib/theme/DocItemFooter/index.js +0 -79
  164. package/lib/theme/DocPage/index.js +0 -154
  165. package/lib/theme/DocPage/styles.module.css +0 -85
  166. package/lib/theme/DocPaginator/index.js +0 -62
  167. package/lib/theme/DocSidebar/index.js +0 -134
  168. package/lib/theme/DocSidebar/styles.module.css +0 -106
  169. package/lib/theme/DocSidebarItem/index.js +0 -209
  170. package/lib/theme/DocTagDocListPage/index.js +0 -89
  171. package/lib/theme/DocTagsListPage/index.js +0 -44
  172. package/lib/theme/DocVersionBadge/index.js +0 -34
  173. package/lib/theme/DocVersionBanner/index.js +0 -130
  174. package/lib/theme/EditThisPage/index.js +0 -33
  175. package/lib/theme/ErrorPageContent.js +0 -43
  176. package/lib/theme/Footer/index.js +0 -119
  177. package/lib/theme/Footer/styles.module.css +0 -15
  178. package/lib/theme/Heading/index.js +0 -71
  179. package/lib/theme/Heading/styles.css +0 -22
  180. package/lib/theme/Heading/styles.module.css +0 -19
  181. package/lib/theme/IconArrow/index.js +0 -28
  182. package/lib/theme/IconClose/index.js +0 -31
  183. package/lib/theme/IconEdit/index.js +0 -34
  184. package/lib/theme/IconEdit/styles.module.css +0 -11
  185. package/lib/theme/IconExternalLink/index.js +0 -30
  186. package/lib/theme/IconExternalLink/styles.module.css +0 -12
  187. package/lib/theme/IconLanguage/index.js +0 -29
  188. package/lib/theme/IconMenu/index.js +0 -30
  189. package/lib/theme/LastUpdated/index.js +0 -63
  190. package/lib/theme/Layout/index.js +0 -68
  191. package/lib/theme/Layout/styles.css +0 -27
  192. package/lib/theme/LayoutHead/index.js +0 -149
  193. package/lib/theme/LayoutProviders/index.js +0 -40
  194. package/lib/theme/Logo/index.js +0 -62
  195. package/lib/theme/MDXComponents/index.js +0 -106
  196. package/lib/theme/MDXComponents/styles.css +0 -11
  197. package/lib/theme/MDXPage/index.js +0 -67
  198. package/lib/theme/MDXPage/styles.module.css +0 -10
  199. package/lib/theme/Navbar/index.js +0 -267
  200. package/lib/theme/Navbar/styles.module.css +0 -27
  201. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -113
  202. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -62
  203. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -83
  204. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  205. package/lib/theme/NavbarItem/DropdownNavbarItem.js +0 -155
  206. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/index.js +0 -68
  207. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +0 -11
  208. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  209. package/lib/theme/NavbarItem/index.js +0 -74
  210. package/lib/theme/NotFound.js +0 -57
  211. package/lib/theme/SearchBar.js +0 -15
  212. package/lib/theme/SearchMetadata/index.js +0 -33
  213. package/lib/theme/Seo/index.js +0 -52
  214. package/lib/theme/SkipToContent/index.js +0 -71
  215. package/lib/theme/SkipToContent/styles.module.css +0 -14
  216. package/lib/theme/TOC/index.js +0 -39
  217. package/lib/theme/TOC/styles.module.css +0 -23
  218. package/lib/theme/TOCCollapsible/index.js +0 -53
  219. package/lib/theme/TOCCollapsible/styles.module.css +0 -50
  220. package/lib/theme/TOCInline/index.js +0 -33
  221. package/lib/theme/TOCInline/styles.module.css +0 -12
  222. package/lib/theme/TOCItems/index.js +0 -78
  223. package/lib/theme/TabItem/index.js +0 -32
  224. package/lib/theme/Tabs/__tests__/index.test.js +0 -123
  225. package/lib/theme/Tabs/index.js +0 -173
  226. package/lib/theme/Tabs/styles.module.css +0 -10
  227. package/lib/theme/Tag/index.js +0 -40
  228. package/lib/theme/Tag/styles.module.css +0 -70
  229. package/lib/theme/TagsListByLetter/index.js +0 -48
  230. package/lib/theme/TagsListByLetter/styles.module.css +0 -11
  231. package/lib/theme/TagsListInline/index.js +0 -44
  232. package/lib/theme/TagsListInline/styles.module.css +0 -15
  233. package/lib/theme/ThemeContext.js +0 -21
  234. package/lib/theme/ThemeProvider/index.js +0 -43
  235. package/lib/theme/ThemedImage/index.js +0 -47
  236. package/lib/theme/ThemedImage/styles.module.css +0 -18
  237. package/lib/theme/Toggle/index.js +0 -91
  238. package/lib/theme/Toggle/styles.module.css +0 -105
  239. package/lib/theme/UserPreferencesContext.js +0 -18
  240. package/lib/theme/UserPreferencesProvider/index.js +0 -41
  241. package/lib/theme/hooks/styles.css +0 -10
  242. package/lib/theme/hooks/useDocs.js +0 -18
  243. package/lib/theme/hooks/useHideableNavbar.js +0 -74
  244. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  245. package/lib/theme/hooks/useLocationHash.js +0 -28
  246. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  247. package/lib/theme/hooks/usePrismTheme.js +0 -36
  248. package/lib/theme/hooks/useTabGroupChoice.js +0 -51
  249. package/lib/theme/hooks/useTheme.js +0 -97
  250. package/lib/theme/hooks/useThemeContext.js +0 -31
  251. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  252. package/lib/theme/hooks/useWindowSize.js +0 -68
  253. package/lib/theme/prism-include-languages.js +0 -40
  254. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  255. package/lib-next/__tests__/translations.test.js +0 -128
  256. package/lib-next/__tests__/validateThemeConfig.test.js +0 -607
  257. package/lib-next/admonitions.css +0 -35
  258. package/lib-next/deps.d.ts +0 -13
  259. package/lib-next/index.js +0 -227
  260. package/lib-next/prism-include-languages.js +0 -9
  261. package/lib-next/theme/ThemeContext.js +0 -9
  262. package/lib-next/theme/ThemeProvider/index.js +0 -28
  263. package/lib-next/theme/UserPreferencesProvider/index.js +0 -27
  264. package/lib-next/theme/hooks/useDocs.js +0 -10
  265. package/lib-next/theme/hooks/useHideableNavbar.js +0 -66
  266. package/lib-next/theme/hooks/useKeyboardNavigation.js +0 -35
  267. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  268. package/lib-next/theme/hooks/useLockBodyScroll.js +0 -18
  269. package/lib-next/theme/hooks/usePrismTheme.js +0 -20
  270. package/lib-next/theme/hooks/useTabGroupChoice.js +0 -39
  271. package/lib-next/theme/hooks/useTheme.js +0 -81
  272. package/lib-next/theme/hooks/useThemeContext.js +0 -22
  273. package/lib-next/theme/hooks/useUserPreferencesContext.js +0 -22
  274. package/lib-next/theme/hooks/useWindowSize.js +0 -59
  275. package/lib-next/theme-classic.d.ts +0 -806
  276. package/lib-next/translations.js +0 -141
  277. package/lib-next/types.d.ts +0 -11
  278. package/lib-next/validateThemeConfig.js +0 -344
  279. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  280. package/src/__tests__/translations.test.ts +0 -116
  281. package/src/__tests__/validateThemeConfig.test.js +0 -607
  282. package/src/theme/Tabs/__tests__/index.test.tsx +0 -129
  283. package/src/theme/ThemeContext.ts +0 -15
  284. package/src/theme/ThemeProvider/index.tsx +0 -28
  285. package/src/theme/UserPreferencesContext.ts +0 -12
  286. package/src/theme/UserPreferencesProvider/index.tsx +0 -30
  287. package/src/theme/hooks/styles.css +0 -10
  288. package/src/theme/hooks/useDocs.ts +0 -11
  289. package/src/theme/hooks/useHideableNavbar.ts +0 -72
  290. package/src/theme/hooks/useKeyboardNavigation.ts +0 -39
  291. package/src/theme/hooks/useLocationHash.ts +0 -25
  292. package/src/theme/hooks/useLockBodyScroll.ts +0 -20
  293. package/src/theme/hooks/usePrismTheme.ts +0 -22
  294. package/src/theme/hooks/useTabGroupChoice.ts +0 -46
  295. package/src/theme/hooks/useTheme.ts +0 -91
  296. package/src/theme/hooks/useThemeContext.ts +0 -23
  297. package/src/theme/hooks/useUserPreferencesContext.ts +0 -25
  298. package/src/theme/hooks/useWindowSize.ts +0 -69
  299. package/tsconfig.json +0 -11
package/README.md CHANGED
@@ -24,7 +24,7 @@ module.exports = {
24
24
 
25
25
  ## Swizzling components
26
26
 
27
- ```shell
27
+ ```bash
28
28
  $ npm swizzle @docusaurus/theme-classic [component name]
29
29
  ```
30
30
 
package/lib/index.js CHANGED
@@ -101,8 +101,7 @@ function getInfimaCSSFile(direction) {
101
101
  return `infima/dist/css/default/default${direction === 'rtl' ? '-rtl' : ''}.css`;
102
102
  }
103
103
 
104
- function docusaurusThemeClassic(context, // TODO: LoadContext is missing some of properties
105
- options) {
104
+ function docusaurusThemeClassic(context, options) {
106
105
  const {
107
106
  siteConfig: {
108
107
  themeConfig: roughlyTypedThemeConfig
@@ -129,21 +128,12 @@ options) {
129
128
  return {
130
129
  name: 'docusaurus-theme-classic',
131
130
 
132
- /*
133
- Does not seem needed: webpack can already hot reload theme files
134
- getPathsToWatch() {
135
- return [
136
- path.join(__dirname, '..', 'lib'),
137
- path.join(__dirname, '..', 'lib-next'),
138
- ];
139
- },
140
- */
141
131
  getThemePath() {
142
- return _path.default.join(__dirname, '..', 'lib-next', 'theme');
132
+ return _path.default.join(__dirname, '../lib-next/theme');
143
133
  },
144
134
 
145
135
  getTypeScriptThemePath() {
146
- return _path.default.resolve(__dirname, '..', 'src', 'theme');
136
+ return _path.default.resolve(__dirname, '../src/theme');
147
137
  },
148
138
 
149
139
  getTranslationFiles: async () => (0, _translations.getTranslationFiles)({
@@ -178,9 +168,10 @@ options) {
178
168
  configureWebpack() {
179
169
  const prismLanguages = additionalLanguages.map(lang => `prism-${lang}`).join('|');
180
170
  return {
181
- ignoreWarnings: [// See https://github.com/facebook/docusaurus/pull/3382
182
- e => e.message.includes("Can't resolve '@theme-init/hooks/useDocs")],
183
- plugins: [new ContextReplacementPlugin(/prismjs[\\/]components$/, new RegExp(`^./(${prismLanguages})$`))]
171
+ plugins: [// This allows better optimization by only bundling those components
172
+ // that the user actually needs, because the modules are dynamically
173
+ // required and can't be known during compile time.
174
+ new ContextReplacementPlugin(/prismjs[\\/]components$/, new RegExp(`^./(${prismLanguages})$`))]
184
175
  };
185
176
  },
186
177
 
@@ -6,7 +6,21 @@
6
6
  */
7
7
 
8
8
  declare module '@docusaurus/theme-classic' {
9
- export type Options = Partial<import('./index').PluginOptions>;
9
+ export type Options = {
10
+ customCss?: string | string[];
11
+ };
12
+ }
13
+
14
+ declare module '@theme/Admonition' {
15
+ import type {ReactNode} from 'react';
16
+
17
+ export interface Props {
18
+ readonly children: ReactNode;
19
+ readonly type: 'note' | 'tip' | 'danger' | 'info' | 'caution';
20
+ readonly icon?: ReactNode;
21
+ readonly title?: string;
22
+ }
23
+ export default function Admonition(props: Props): JSX.Element;
10
24
  }
11
25
 
12
26
  declare module '@theme/AnnouncementBar' {
@@ -30,7 +44,8 @@ declare module '@theme/BlogListPaginator' {
30
44
  }
31
45
 
32
46
  declare module '@theme/BlogPostItem' {
33
- import type {FrontMatter, Assets, Metadata} from '@theme/BlogPostPage';
47
+ import type {FrontMatter, Metadata} from '@theme/BlogPostPage';
48
+ import type {Assets} from '@docusaurus/plugin-content-blog';
34
49
 
35
50
  export interface Props {
36
51
  readonly frontMatter: FrontMatter;
@@ -56,7 +71,8 @@ declare module '@theme/BlogPostAuthor' {
56
71
  }
57
72
 
58
73
  declare module '@theme/BlogPostAuthors' {
59
- import type {Metadata, Assets} from '@theme/BlogPostPage';
74
+ import type {Metadata} from '@theme/BlogPostPage';
75
+ import type {Assets} from '@docusaurus/plugin-content-blog';
60
76
 
61
77
  export interface Props {
62
78
  readonly authors: Metadata['authors'];
@@ -93,13 +109,14 @@ declare module '@theme/BlogLayout' {
93
109
  }
94
110
 
95
111
  declare module '@theme/CodeBlock' {
96
- import {ReactElement} from 'react';
112
+ import type {ReactElement} from 'react';
97
113
 
98
114
  export interface Props {
99
115
  readonly children: string | ReactElement;
100
116
  readonly className?: string;
101
117
  readonly metastring?: string;
102
118
  readonly title?: string;
119
+ readonly language?: string;
103
120
  }
104
121
 
105
122
  const CodeBlock: (props: Props) => JSX.Element;
@@ -109,13 +126,10 @@ declare module '@theme/CodeBlock' {
109
126
  declare module '@theme/DocPaginator' {
110
127
  import type {PropNavigation} from '@docusaurus/plugin-content-docs';
111
128
 
112
- type PageInfo = {readonly permalink: string; readonly title: string};
113
-
114
129
  // May be simpler to provide a {navigation: PropNavigation} prop?
115
130
  export interface Props extends PropNavigation {}
116
131
 
117
- const DocPaginator: (props: Props) => JSX.Element;
118
- export default DocPaginator;
132
+ export default function DocPaginator(props: Props): JSX.Element;
119
133
  }
120
134
 
121
135
  declare module '@theme/DocSidebar' {
@@ -137,23 +151,27 @@ declare module '@theme/DocSidebar' {
137
151
  declare module '@theme/DocSidebarItem' {
138
152
  import type {PropSidebarItem} from '@docusaurus/plugin-content-docs';
139
153
 
140
- type DocSidebarPropsBase = {
154
+ export interface Props {
141
155
  readonly activePath: string;
142
156
  readonly onItemClick?: (item: PropSidebarItem) => void;
143
157
  readonly level: number;
144
158
  readonly tabIndex?: number;
145
- };
146
-
147
- export interface Props extends DocSidebarPropsBase {
148
159
  readonly item: PropSidebarItem;
160
+ readonly index: number;
149
161
  }
150
- const DocSidebarItem: (props: Props) => JSX.Element;
151
- export default DocSidebarItem;
152
162
 
153
- export type DocSidebarItemsProps = DocSidebarPropsBase & {
163
+ export default function DocSidebarItem(props: Props): JSX.Element;
164
+ }
165
+
166
+ declare module '@theme/DocSidebarItems' {
167
+ import type {Props as DocSidebarItemProps} from '@theme/DocSidebarItem';
168
+ import type {PropSidebarItem} from '@docusaurus/plugin-content-docs';
169
+
170
+ export type Props = Omit<DocSidebarItemProps, 'item' | 'index'> & {
154
171
  readonly items: readonly PropSidebarItem[];
155
172
  };
156
- export const DocSidebarItems: (props: DocSidebarItemsProps) => JSX.Element;
173
+
174
+ export default function DocSidebarItems(props: Props): JSX.Element;
157
175
  }
158
176
 
159
177
  declare module '@theme/DocVersionSuggestions' {
@@ -170,7 +188,7 @@ declare module '@theme/EditThisPage' {
170
188
  }
171
189
 
172
190
  declare module '@theme/ErrorPageContent' {
173
- import ErrorComponent from '@theme/Error';
191
+ import type ErrorComponent from '@theme/Error';
174
192
 
175
193
  const ErrorPageContent: typeof ErrorComponent;
176
194
  export default ErrorPageContent;
@@ -184,111 +202,20 @@ declare module '@theme/Footer' {
184
202
  declare module '@theme/Heading' {
185
203
  import type {ComponentProps} from 'react';
186
204
 
187
- export type HeadingType = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
188
- export interface Props extends ComponentProps<HeadingType> {}
189
-
190
- const Heading: (Tag: HeadingType) => (props: Props) => JSX.Element;
191
- export default Heading;
192
- export const MainHeading: (props: Props) => JSX.Element;
193
- }
194
-
195
- declare module '@theme/hooks/useHideableNavbar' {
196
- export type useHideableNavbarReturns = {
197
- readonly navbarRef: (node: HTMLElement | null) => void;
198
- readonly isNavbarVisible: boolean;
199
- };
200
-
201
- const useHideableNavbar: (hideOnScroll: boolean) => useHideableNavbarReturns;
202
- export default useHideableNavbar;
203
- }
204
-
205
- declare module '@theme/hooks/useLocationHash' {
206
- import type {Dispatch, SetStateAction} from 'react';
207
-
208
- export type useLocationHashReturns = readonly [
209
- string,
210
- Dispatch<SetStateAction<string>>,
211
- ];
212
-
213
- const useLocationHash: (initialHash: string) => useLocationHashReturns;
214
- export default useLocationHash;
215
- }
216
-
217
- declare module '@theme/hooks/useLockBodyScroll' {
218
- const useLockBodyScroll: (lock?: boolean) => void;
219
- export default useLockBodyScroll;
220
- }
221
-
222
- declare module '@theme/hooks/usePrismTheme' {
223
- import defaultTheme from 'prism-react-renderer/themes/palenight';
224
-
225
- const usePrismTheme: () => typeof defaultTheme;
226
- export default usePrismTheme;
227
- }
228
-
229
- declare module '@theme/hooks/useTabGroupChoice' {
230
- export type useTabGroupChoiceReturns = {
231
- readonly tabGroupChoices: {readonly [groupId: string]: string};
232
- readonly setTabGroupChoices: (groupId: string, newChoice: string) => void;
233
- };
234
-
235
- const useTabGroupChoice: () => useTabGroupChoiceReturns;
236
- export default useTabGroupChoice;
237
- }
238
-
239
- declare module '@theme/hooks/useTheme' {
240
- export type useThemeReturns = {
241
- readonly isDarkTheme: boolean;
242
- readonly setLightTheme: () => void;
243
- readonly setDarkTheme: () => void;
244
- };
245
-
246
- const useTheme: () => useThemeReturns;
247
- export default useTheme;
248
- }
249
-
250
- declare module '@theme/hooks/useThemeContext' {
251
- export type ThemeContextProps = {
252
- isDarkTheme: boolean;
253
- setLightTheme: () => void;
254
- setDarkTheme: () => void;
255
- };
256
-
257
- export default function useThemeContext(): ThemeContextProps;
258
- }
259
-
260
- declare module '@theme/hooks/useUserPreferencesContext' {
261
- export type UserPreferencesContextProps = {
262
- tabGroupChoices: {readonly [groupId: string]: string};
263
- setTabGroupChoices: (groupId: string, newChoice: string) => void;
264
- };
265
-
266
- export default function useUserPreferencesContext(): UserPreferencesContextProps;
267
- }
205
+ type HeadingType = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
268
206
 
269
- declare module '@theme/hooks/useWindowSize' {
270
- export const windowSizes: {
271
- desktop: 'desktop';
272
- mobile: 'mobile';
273
- ssr: 'ssr';
274
- };
275
-
276
- export type WindowSize = keyof typeof windowSizes;
277
-
278
- export default function useWindowSize(): WindowSize;
279
- }
280
-
281
- declare module '@theme/hooks/useKeyboardNavigation' {
282
- const useKeyboardNavigation: () => void;
207
+ export interface Props extends ComponentProps<HeadingType> {
208
+ as: HeadingType;
209
+ }
283
210
 
284
- export default useKeyboardNavigation;
211
+ export default function Heading(props: Props): JSX.Element;
285
212
  }
286
213
 
287
214
  declare module '@theme/Layout' {
288
215
  import type {ReactNode} from 'react';
289
216
 
290
217
  export interface Props {
291
- readonly children: ReactNode;
218
+ readonly children?: ReactNode;
292
219
  readonly title?: string;
293
220
  readonly noFooter?: boolean;
294
221
  readonly description?: string;
@@ -303,8 +230,7 @@ declare module '@theme/Layout' {
303
230
  };
304
231
  }
305
232
 
306
- const Layout: (props: Props) => JSX.Element;
307
- export default Layout;
233
+ export default function Layout(props: Props): JSX.Element;
308
234
  }
309
235
 
310
236
  declare module '@theme/LayoutHead' {
@@ -312,8 +238,17 @@ declare module '@theme/LayoutHead' {
312
238
 
313
239
  export interface Props extends Omit<LayoutProps, 'children'> {}
314
240
 
315
- const LayoutHead: (props: Props) => JSX.Element;
316
- export default LayoutHead;
241
+ export default function LayoutHead(props: Props): JSX.Element;
242
+ }
243
+
244
+ declare module '@theme/LayoutProviders' {
245
+ import type {ReactNode} from 'react';
246
+
247
+ export interface Props {
248
+ readonly children: ReactNode;
249
+ }
250
+
251
+ export default function LayoutProviders(props: Props): JSX.Element;
317
252
  }
318
253
 
319
254
  declare module '@theme/SearchMetadata' {
@@ -372,18 +307,9 @@ declare module '@theme/Navbar' {
372
307
  }
373
308
 
374
309
  declare module '@theme/NavbarItem/DefaultNavbarItem' {
375
- import type {ReactNode} from 'react';
376
- import type {LinkProps} from '@docusaurus/Link';
310
+ import type {Props as NavbarNavLinkProps} from '@theme/NavbarItem/NavbarNavLink';
377
311
 
378
- export type NavLinkProps = LinkProps & {
379
- readonly activeBasePath?: string;
380
- readonly activeBaseRegex?: string;
381
- readonly exact?: boolean;
382
- readonly label?: ReactNode;
383
- readonly prependBaseUrlToHref?: string;
384
- };
385
-
386
- export type DesktopOrMobileNavBarItemProps = NavLinkProps & {
312
+ export type DesktopOrMobileNavBarItemProps = NavbarNavLinkProps & {
387
313
  readonly isDropdownItem?: boolean;
388
314
  readonly className?: string;
389
315
  readonly position?: 'left' | 'right';
@@ -393,17 +319,30 @@ declare module '@theme/NavbarItem/DefaultNavbarItem' {
393
319
  readonly mobile?: boolean;
394
320
  }
395
321
 
396
- export const NavLink: (props: NavLinkProps) => JSX.Element;
322
+ export default function DefaultNavbarItem(props: Props): JSX.Element;
323
+ }
324
+
325
+ declare module '@theme/NavbarItem/NavbarNavLink' {
326
+ import type {ReactNode} from 'react';
327
+ import type {LinkProps} from '@docusaurus/Link';
328
+
329
+ export type Props = LinkProps & {
330
+ readonly activeBasePath?: string;
331
+ readonly activeBaseRegex?: string;
332
+ readonly exact?: boolean;
333
+ readonly label?: ReactNode;
334
+ readonly prependBaseUrlToHref?: string;
335
+ };
397
336
 
398
- const DefaultNavbarItem: (props: Props) => JSX.Element;
399
- export default DefaultNavbarItem;
337
+ export default function NavbarNavLink(props: Props): JSX.Element;
400
338
  }
401
339
 
402
340
  declare module '@theme/NavbarItem/DropdownNavbarItem' {
403
- import type {NavLinkProps} from '@theme/NavbarItem/DefaultNavbarItem';
341
+ import type {Props as NavbarNavLinkProps} from '@theme/NavbarItem/NavbarNavLink';
342
+
404
343
  import type {LinkLikeNavbarItemProps} from '@theme/NavbarItem';
405
344
 
406
- export type DesktopOrMobileNavBarItemProps = NavLinkProps & {
345
+ export type DesktopOrMobileNavBarItemProps = NavbarNavLinkProps & {
407
346
  readonly position?: 'left' | 'right';
408
347
  readonly items: readonly LinkLikeNavbarItemProps[];
409
348
  readonly className?: string;
@@ -477,10 +416,23 @@ declare module '@theme/NavbarItem/DocNavbarItem' {
477
416
  export default DocsSidebarNavbarItem;
478
417
  }
479
418
 
419
+ declare module '@theme/NavbarItem/DocSidebarNavbarItem' {
420
+ import type {Props as DefaultNavbarItemProps} from '@theme/NavbarItem/DefaultNavbarItem';
421
+
422
+ export interface Props extends DefaultNavbarItemProps {
423
+ readonly sidebarId: string;
424
+ readonly docsPluginId?: string;
425
+ }
426
+
427
+ const DocSidebarNavbarItem: (props: Props) => JSX.Element;
428
+ export default DocSidebarNavbarItem;
429
+ }
430
+
480
431
  declare module '@theme/NavbarItem' {
481
432
  import type {ComponentProps} from 'react';
482
433
  import type {Props as DefaultNavbarItemProps} from '@theme/NavbarItem/DefaultNavbarItem';
483
434
  import type {Props as DocNavbarItemProps} from '@theme/NavbarItem/DocNavbarItem';
435
+ import type {Props as DocSidebarNavbarItemProps} from '@theme/NavbarItem/DocSidebarNavbarItem';
484
436
  import type {Props as DocsVersionNavbarItemProps} from '@theme/NavbarItem/DocsVersionNavbarItem';
485
437
  import type {Props as DropdownNavbarItemProps} from '@theme/NavbarItem/DropdownNavbarItem';
486
438
  import type {Props as DocsVersionDropdownNavbarItemProps} from '@theme/NavbarItem/DocsVersionDropdownNavbarItem';
@@ -490,7 +442,8 @@ declare module '@theme/NavbarItem' {
490
442
  export type LinkLikeNavbarItemProps =
491
443
  | ({readonly type?: 'default'} & DefaultNavbarItemProps)
492
444
  | ({readonly type: 'doc'} & DocNavbarItemProps)
493
- | ({readonly type: 'docsVersion'} & DocsVersionNavbarItemProps);
445
+ | ({readonly type: 'docsVersion'} & DocsVersionNavbarItemProps)
446
+ | ({readonly type: 'docSidebar'} & DocSidebarNavbarItemProps);
494
447
 
495
448
  export type Props = ComponentProps<'a'> & {
496
449
  readonly position?: 'left' | 'right';
@@ -512,6 +465,22 @@ declare module '@theme/NavbarItem' {
512
465
  export default NavbarItem;
513
466
  }
514
467
 
468
+ declare module '@theme/NavbarItem/utils' {
469
+ export function getInfimaActiveClassName(mobile?: boolean): string;
470
+ }
471
+
472
+ declare module '@theme/PaginatorNavLink' {
473
+ import type {ReactNode} from 'react';
474
+ import type {PropNavigationLink} from '@docusaurus/plugin-content-docs';
475
+
476
+ export interface Props extends Omit<PropNavigationLink, 'title'> {
477
+ readonly title: ReactNode;
478
+ readonly subLabel?: JSX.Element;
479
+ }
480
+
481
+ export default function PaginatorNavLink(props: Props): JSX.Element;
482
+ }
483
+
515
484
  declare module '@theme/SearchBar' {
516
485
  export default function SearchBar(): JSX.Element;
517
486
  }
@@ -526,6 +495,7 @@ declare module '@theme/TabItem' {
526
495
  readonly label?: string;
527
496
  readonly hidden?: boolean;
528
497
  readonly className?: string;
498
+ readonly attributes?: Record<string, unknown>;
529
499
  }
530
500
 
531
501
  const TabItem: (props: Props) => JSX.Element;
@@ -541,7 +511,11 @@ declare module '@theme/Tabs' {
541
511
  readonly block?: boolean;
542
512
  readonly children: readonly ReactElement<TabItemProps>[];
543
513
  readonly defaultValue?: string | null;
544
- readonly values?: readonly {value: string; label?: string}[];
514
+ readonly values?: readonly {
515
+ value: string;
516
+ label?: string;
517
+ attributes?: Record<string, unknown>;
518
+ }[];
545
519
  readonly groupId?: string;
546
520
  readonly className?: string;
547
521
  }
@@ -565,23 +539,12 @@ declare module '@theme/ThemedImage' {
565
539
  }
566
540
 
567
541
  declare module '@theme/Details' {
568
- import {Details, DetailsProps} from '@docusaurus/theme-common';
542
+ import {Details, type DetailsProps} from '@docusaurus/theme-common';
569
543
 
570
544
  export interface Props extends DetailsProps {}
571
545
  export default Details;
572
546
  }
573
547
 
574
- declare module '@theme/ThemeProvider' {
575
- import type {ReactNode} from 'react';
576
-
577
- export interface Props {
578
- readonly children: ReactNode;
579
- }
580
-
581
- const ThemeProvider: (props: Props) => JSX.Element;
582
- export default ThemeProvider;
583
- }
584
-
585
548
  declare module '@theme/TOCItems' {
586
549
  import type {TOCItem} from '@docusaurus/types';
587
550
 
@@ -662,46 +625,6 @@ declare module '@theme/Toggle' {
662
625
  export default Toggle;
663
626
  }
664
627
 
665
- declare module '@theme/UserPreferencesProvider' {
666
- import type {ReactNode} from 'react';
667
-
668
- export interface Props {
669
- readonly children: ReactNode;
670
- }
671
-
672
- const UserPreferencesProvider: (props: Props) => JSX.Element;
673
- export default UserPreferencesProvider;
674
- }
675
-
676
- declare module '@theme/LayoutProviders' {
677
- import type {ReactNode} from 'react';
678
-
679
- export interface Props {
680
- readonly children: ReactNode;
681
- }
682
-
683
- const LayoutProviders: (props: Props) => JSX.Element;
684
- export default LayoutProviders;
685
- }
686
-
687
- declare module '@theme/ThemeContext' {
688
- import type {Context} from 'react';
689
- import type {ThemeContextProps} from '@theme/hooks/useThemeContext';
690
-
691
- const ThemeContext: Context<ThemeContextProps | undefined>;
692
- export default ThemeContext;
693
- }
694
-
695
- declare module '@theme/UserPreferencesContext' {
696
- import type {Context} from 'react';
697
- import type {UserPreferencesContextProps} from '@theme/hooks/useUserPreferencesContext';
698
-
699
- const UserPreferencesContext: Context<
700
- UserPreferencesContextProps | undefined
701
- >;
702
- export default UserPreferencesContext;
703
- }
704
-
705
628
  declare module '@theme/Logo' {
706
629
  import type {ComponentProps} from 'react';
707
630
 
@@ -68,13 +68,16 @@ function translateNavbar(navbar, navbarTranslations) {
68
68
  };
69
69
  }
70
70
 
71
+ function isMultiColumnFooterLinks(links) {
72
+ return links.length > 0 && 'title' in links[0];
73
+ }
74
+
71
75
  function getFooterTranslationFile(footer) {
72
- // TODO POC code
73
- const footerLinkTitles = (0, _lodash.chain)(footer.links.filter(link => !!link.title)).keyBy(link => `link.title.${link.title}`).mapValues(link => ({
76
+ const footerLinkTitles = (0, _lodash.chain)(isMultiColumnFooterLinks(footer.links) ? footer.links.filter(link => !!link.title) : []).keyBy(link => `link.title.${link.title}`).mapValues(link => ({
74
77
  message: link.title,
75
78
  description: `The title of the footer links column with title=${link.title} in the footer`
76
79
  })).value();
77
- const footerLinkLabels = (0, _lodash.chain)(footer.links.flatMap(link => link.items).filter(link => !!link.label)).keyBy(linkItem => `link.item.label.${linkItem.label}`).mapValues(linkItem => {
80
+ const footerLinkLabels = (0, _lodash.chain)(isMultiColumnFooterLinks(footer.links) ? footer.links.flatMap(link => link.items).filter(link => !!link.label) : footer.links.filter(link => !!link.label)).keyBy(linkItem => `link.item.label.${linkItem.label}`).mapValues(linkItem => {
78
81
  var _linkItem$to;
79
82
 
80
83
  return {
@@ -94,7 +97,7 @@ function getFooterTranslationFile(footer) {
94
97
  function translateFooter(footer, footerTranslations) {
95
98
  var _footerTranslations$c, _footerTranslations$c2;
96
99
 
97
- const links = footer.links.map(link => {
100
+ const links = isMultiColumnFooterLinks(footer.links) ? footer.links.map(link => {
98
101
  var _footerTranslations$$, _footerTranslations$;
99
102
 
100
103
  return { ...link,
@@ -107,6 +110,12 @@ function translateFooter(footer, footerTranslations) {
107
110
  };
108
111
  })
109
112
  };
113
+ }) : footer.links.map(link => {
114
+ var _footerTranslations$$3, _footerTranslations$3;
115
+
116
+ return { ...link,
117
+ label: (_footerTranslations$$3 = (_footerTranslations$3 = footerTranslations[`link.item.label.${link.label}`]) === null || _footerTranslations$3 === void 0 ? void 0 : _footerTranslations$3.message) !== null && _footerTranslations$$3 !== void 0 ? _footerTranslations$$3 : link.label
118
+ };
110
119
  });
111
120
  const copyright = (_footerTranslations$c = (_footerTranslations$c2 = footerTranslations.copyright) === null || _footerTranslations$c2 === void 0 ? void 0 : _footerTranslations$c2.message) !== null && _footerTranslations$c !== void 0 ? _footerTranslations$c : footer.copyright;
112
121
  return { ...footer,
@@ -45,6 +45,7 @@ const DEFAULT_CONFIG = {
45
45
  items: []
46
46
  },
47
47
  hideableSidebar: false,
48
+ autoCollapseSidebarCategories: false,
48
49
  tableOfContents: {
49
50
  minHeadingLevel: 2,
50
51
  maxHeadingLevel: 3
@@ -84,6 +85,11 @@ const DocItemSchema = NavbarItemBaseSchema.append({
84
85
  docId: _utilsValidation.Joi.string().required(),
85
86
  docsPluginId: _utilsValidation.Joi.string()
86
87
  });
88
+ const DocSidebarItemSchema = NavbarItemBaseSchema.append({
89
+ type: _utilsValidation.Joi.string().equal('docSidebar').required(),
90
+ sidebarId: _utilsValidation.Joi.string().required(),
91
+ docsPluginId: _utilsValidation.Joi.string()
92
+ });
87
93
 
88
94
  const itemWithType = type => {
89
95
  // because equal(undefined) is not supported :/
@@ -151,6 +157,9 @@ const NavbarItemSchema = _utilsValidation.Joi.object({
151
157
  }, {
152
158
  is: itemWithType('doc'),
153
159
  then: DocItemSchema
160
+ }, {
161
+ is: itemWithType('docSidebar'),
162
+ then: DocSidebarItemSchema
154
163
  }, {
155
164
  is: itemWithType('localeDropdown'),
156
165
  then: LocaleDropdownNavbarItemSchema
@@ -219,8 +228,10 @@ const ThemeConfigSchema = _utilsValidation.Joi.object({
219
228
  image: _utilsValidation.Joi.string(),
220
229
  docs: DocsSchema,
221
230
  metadata: _utilsValidation.Joi.array().items(HtmlMetadataSchema).default(DEFAULT_CONFIG.metadata),
231
+ // cSpell:ignore metadatas
222
232
  metadatas: _utilsValidation.Joi.any().forbidden().messages({
223
- 'any.unknown': 'themeConfig.metadatas has been renamed as themeConfig.metadata. See https://github.com/facebook/docusaurus/pull/5871'
233
+ 'any.unknown': // cSpell:ignore metadatas
234
+ 'themeConfig.metadatas has been renamed as themeConfig.metadata. See https://github.com/facebook/docusaurus/pull/5871'
224
235
  }),
225
236
  announcementBar: _utilsValidation.Joi.object({
226
237
  id: _utilsValidation.Joi.string().default('announcement-bar'),
@@ -260,10 +271,12 @@ const ThemeConfigSchema = _utilsValidation.Joi.object({
260
271
  href: _utilsValidation.Joi.string()
261
272
  }),
262
273
  copyright: _utilsValidation.Joi.string(),
263
- links: _utilsValidation.Joi.array().items(_utilsValidation.Joi.object({
264
- title: _utilsValidation.Joi.string().allow(null),
274
+ links: _utilsValidation.Joi.alternatives(_utilsValidation.Joi.array().items(_utilsValidation.Joi.object({
275
+ title: _utilsValidation.Joi.string().allow(null).default(null),
265
276
  items: _utilsValidation.Joi.array().items(FooterLinkItemSchema).default([])
266
- })).default([])
277
+ })), _utilsValidation.Joi.array().items(FooterLinkItemSchema)).messages({
278
+ 'alternatives.match': `The footer must be either simple or multi-column, and not a mix of the two. See: https://docusaurus.io/docs/api/themes/configuration#footer-links`
279
+ }).default([])
267
280
  }).optional(),
268
281
  prism: _utilsValidation.Joi.object({
269
282
  theme: _utilsValidation.Joi.object({
@@ -278,6 +291,7 @@ const ThemeConfigSchema = _utilsValidation.Joi.object({
278
291
  additionalLanguages: _utilsValidation.Joi.array().items(_utilsValidation.Joi.string()).default(DEFAULT_CONFIG.prism.additionalLanguages)
279
292
  }).default(DEFAULT_CONFIG.prism).unknown(),
280
293
  hideableSidebar: _utilsValidation.Joi.bool().default(DEFAULT_CONFIG.hideableSidebar),
294
+ autoCollapseSidebarCategories: _utilsValidation.Joi.bool().default(DEFAULT_CONFIG.autoCollapseSidebarCategories),
281
295
  sidebarCollapsible: _utilsValidation.Joi.forbidden().messages({
282
296
  'any.unknown': 'The themeConfig.sidebarCollapsible has been moved to docs plugin options. See: https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-docs'
283
297
  }),