@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
@@ -5,52 +5,39 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React from 'react';
8
+ import clsx from 'clsx';
9
+ import useWindowSize from '@theme/hooks/useWindowSize';
8
10
  import DocPaginator from '@theme/DocPaginator';
9
- import DocVersionSuggestions from '@theme/DocVersionSuggestions';
11
+ import DocVersionBanner from '@theme/DocVersionBanner';
10
12
  import Seo from '@theme/Seo';
11
- import LastUpdated from '@theme/LastUpdated';
13
+ import DocItemFooter from '@theme/DocItemFooter';
12
14
  import TOC from '@theme/TOC';
13
- import EditThisPage from '@theme/EditThisPage';
15
+ import TOCCollapsible from '@theme/TOCCollapsible';
14
16
  import {MainHeading} from '@theme/Heading';
15
- import clsx from 'clsx';
16
17
  import styles from './styles.module.css';
17
- import {
18
- useActivePlugin,
19
- useVersions,
20
- useActiveVersion,
21
- } from '@theme/hooks/useDocs';
22
-
23
- function DocItem(props) {
24
- const {content: DocContent} = props;
18
+ import {ThemeClassNames} from '@docusaurus/theme-common';
19
+ export default function DocItem(props) {
20
+ const {content: DocContent, versionMetadata} = props;
25
21
  const {metadata, frontMatter} = DocContent;
26
22
  const {
27
23
  image,
28
24
  keywords,
29
25
  hide_title: hideTitle,
30
26
  hide_table_of_contents: hideTableOfContents,
27
+ toc_min_heading_level: tocMinHeadingLevel,
28
+ toc_max_heading_level: tocMaxHeadingLevel,
31
29
  } = frontMatter;
32
- const {
33
- description,
34
- title,
35
- editUrl,
36
- lastUpdatedAt,
37
- formattedLastUpdatedAt,
38
- lastUpdatedBy,
39
- } = metadata;
40
- const {pluginId} = useActivePlugin({
41
- failfast: true,
42
- });
43
- const versions = useVersions(pluginId);
44
- const version = useActiveVersion(pluginId); // If site is not versioned or only one version is included
45
- // we don't show the version badge
46
- // See https://github.com/facebook/docusaurus/issues/3362
47
-
48
- const showVersionBadge = versions.length > 1; // We only add a title if:
30
+ const {description, title} = metadata; // We only add a title if:
49
31
  // - user asks to hide it with frontmatter
50
32
  // - the markdown content does not already contain a top-level h1 heading
51
33
 
52
34
  const shouldAddTitle =
53
35
  !hideTitle && typeof DocContent.contentTitle === 'undefined';
36
+ const windowSize = useWindowSize();
37
+ const canRenderTOC =
38
+ !hideTableOfContents && DocContent.toc && DocContent.toc.length > 0;
39
+ const renderTocDesktop =
40
+ canRenderTOC && (windowSize === 'desktop' || windowSize === 'ssr');
54
41
  return (
55
42
  <>
56
43
  <Seo
@@ -67,16 +54,33 @@ function DocItem(props) {
67
54
  className={clsx('col', {
68
55
  [styles.docItemCol]: !hideTableOfContents,
69
56
  })}>
70
- <DocVersionSuggestions />
57
+ <DocVersionBanner versionMetadata={versionMetadata} />
71
58
  <div className={styles.docItemContainer}>
72
59
  <article>
73
- {showVersionBadge && (
74
- <span className="badge badge--secondary">
75
- Version: {version.label}
60
+ {versionMetadata.badge && (
61
+ <span
62
+ className={clsx(
63
+ ThemeClassNames.docs.docVersionBadge,
64
+ 'badge badge--secondary',
65
+ )}>
66
+ Version: {versionMetadata.label}
76
67
  </span>
77
68
  )}
78
69
 
79
- <div className="markdown">
70
+ {canRenderTOC && (
71
+ <TOCCollapsible
72
+ toc={DocContent.toc}
73
+ minHeadingLevel={tocMinHeadingLevel}
74
+ maxHeadingLevel={tocMaxHeadingLevel}
75
+ className={clsx(
76
+ ThemeClassNames.docs.docTocMobile,
77
+ styles.tocMobile,
78
+ )}
79
+ />
80
+ )}
81
+
82
+ <div
83
+ className={clsx(ThemeClassNames.docs.docMarkdown, 'markdown')}>
80
84
  {/*
81
85
  Title can be declared inside md content or declared through frontmatter and added manually
82
86
  To make both cases consistent, the added title is added under the same div.markdown block
@@ -87,36 +91,23 @@ function DocItem(props) {
87
91
  <DocContent />
88
92
  </div>
89
93
 
90
- {(editUrl || lastUpdatedAt || lastUpdatedBy) && (
91
- <footer className="row docusaurus-mt-lg">
92
- <div className="col">
93
- {editUrl && <EditThisPage editUrl={editUrl} />}
94
- </div>
95
-
96
- <div className={clsx('col', styles.lastUpdated)}>
97
- {(lastUpdatedAt || lastUpdatedBy) && (
98
- <LastUpdated
99
- lastUpdatedAt={lastUpdatedAt}
100
- formattedLastUpdatedAt={formattedLastUpdatedAt}
101
- lastUpdatedBy={lastUpdatedBy}
102
- />
103
- )}
104
- </div>
105
- </footer>
106
- )}
94
+ <DocItemFooter {...props} />
107
95
  </article>
108
96
 
109
97
  <DocPaginator metadata={metadata} />
110
98
  </div>
111
99
  </div>
112
- {!hideTableOfContents && DocContent.toc && (
100
+ {renderTocDesktop && (
113
101
  <div className="col col--3">
114
- <TOC toc={DocContent.toc} />
102
+ <TOC
103
+ toc={DocContent.toc}
104
+ minHeadingLevel={tocMinHeadingLevel}
105
+ maxHeadingLevel={tocMaxHeadingLevel}
106
+ className={ThemeClassNames.docs.docTocDesktop}
107
+ />
115
108
  </div>
116
109
  )}
117
110
  </div>
118
111
  </>
119
112
  );
120
113
  }
121
-
122
- export default DocItem;
@@ -5,22 +5,18 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ .docItemContainer article > *:first-child,
8
9
  .docItemContainer header + * {
9
10
  margin-top: 0;
10
11
  }
11
12
 
12
- .lastUpdated {
13
- margin-top: 0.2rem;
14
- font-style: italic;
15
- font-size: smaller;
16
- }
17
-
18
- @media only screen and (min-width: 997px) {
13
+ @media (min-width: 997px) {
19
14
  .docItemCol {
20
15
  max-width: 75% !important;
21
16
  }
22
17
 
23
- .lastUpdated {
24
- text-align: right;
18
+ /* Prevent hydration FOUC, as the mobile TOC needs to be server-rendered */
19
+ .tocMobile {
20
+ display: none;
25
21
  }
26
22
  }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import clsx from 'clsx';
9
+ import LastUpdated from '@theme/LastUpdated';
10
+ import EditThisPage from '@theme/EditThisPage';
11
+ import TagsListInline from '@theme/TagsListInline';
12
+ import styles from './styles.module.css';
13
+ import {ThemeClassNames} from '@docusaurus/theme-common';
14
+
15
+ function TagsRow(props) {
16
+ return (
17
+ <div
18
+ className={clsx(
19
+ ThemeClassNames.docs.docFooterTagsRow,
20
+ 'row margin-bottom--sm',
21
+ )}>
22
+ <div className="col">
23
+ <TagsListInline {...props} />
24
+ </div>
25
+ </div>
26
+ );
27
+ }
28
+
29
+ function EditMetaRow({
30
+ editUrl,
31
+ lastUpdatedAt,
32
+ lastUpdatedBy,
33
+ formattedLastUpdatedAt,
34
+ }) {
35
+ return (
36
+ <div className={clsx(ThemeClassNames.docs.docFooterEditMetaRow, 'row')}>
37
+ <div className="col">{editUrl && <EditThisPage editUrl={editUrl} />}</div>
38
+
39
+ <div className={clsx('col', styles.lastUpdated)}>
40
+ {(lastUpdatedAt || lastUpdatedBy) && (
41
+ <LastUpdated
42
+ lastUpdatedAt={lastUpdatedAt}
43
+ formattedLastUpdatedAt={formattedLastUpdatedAt}
44
+ lastUpdatedBy={lastUpdatedBy}
45
+ />
46
+ )}
47
+ </div>
48
+ </div>
49
+ );
50
+ }
51
+
52
+ export default function DocItemFooter(props) {
53
+ const {content: DocContent} = props;
54
+ const {metadata} = DocContent;
55
+ const {editUrl, lastUpdatedAt, formattedLastUpdatedAt, lastUpdatedBy, tags} =
56
+ metadata;
57
+ const canDisplayTagsRow = tags.length > 0;
58
+ const canDisplayEditMetaRow = !!(editUrl || lastUpdatedAt || lastUpdatedBy);
59
+ const canDisplayFooter = canDisplayTagsRow || canDisplayEditMetaRow;
60
+
61
+ if (!canDisplayFooter) {
62
+ return <></>;
63
+ }
64
+
65
+ return (
66
+ <footer
67
+ className={clsx(ThemeClassNames.docs.docFooter, 'docusaurus-mt-lg')}>
68
+ {canDisplayTagsRow && <TagsRow tags={tags} />}
69
+ {canDisplayEditMetaRow && (
70
+ <EditMetaRow
71
+ editUrl={editUrl}
72
+ lastUpdatedAt={lastUpdatedAt}
73
+ lastUpdatedBy={lastUpdatedBy}
74
+ formattedLastUpdatedAt={formattedLastUpdatedAt}
75
+ />
76
+ )}
77
+ </footer>
78
+ );
79
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ .lastUpdated {
9
+ margin-top: 0.2rem;
10
+ font-style: italic;
11
+ font-size: smaller;
12
+ }
13
+
14
+ @media (min-width: 997px) {
15
+ .lastUpdated {
16
+ text-align: right;
17
+ }
18
+ }
@@ -6,50 +6,26 @@
6
6
  */
7
7
  import React, {useState, useCallback} from 'react';
8
8
  import {MDXProvider} from '@mdx-js/react';
9
- import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
10
9
  import renderRoutes from '@docusaurus/renderRoutes';
11
10
  import Layout from '@theme/Layout';
12
11
  import DocSidebar from '@theme/DocSidebar';
13
12
  import MDXComponents from '@theme/MDXComponents';
14
13
  import NotFound from '@theme/NotFound';
15
14
  import IconArrow from '@theme/IconArrow';
15
+ import BackToTopButton from '@theme/BackToTopButton';
16
16
  import {matchPath} from '@docusaurus/router';
17
17
  import {translate} from '@docusaurus/Translate';
18
18
  import clsx from 'clsx';
19
19
  import styles from './styles.module.css';
20
20
  import {ThemeClassNames, docVersionSearchTag} from '@docusaurus/theme-common';
21
-
22
- function getSidebar({versionMetadata, currentDocRoute}) {
23
- function addTrailingSlash(str) {
24
- return str.endsWith('/') ? str : `${str}/`;
25
- }
26
-
27
- function removeTrailingSlash(str) {
28
- return str.endsWith('/') ? str.slice(0, -1) : str;
29
- }
30
-
31
- const {permalinkToSidebar, docsSidebars} = versionMetadata; // With/without trailingSlash, we should always be able to get the appropriate sidebar
32
- // note: docs plugin permalinks currently never have trailing slashes
33
- // trailingSlash is handled globally at the framework level, not plugin level
34
-
35
- const sidebarName =
36
- permalinkToSidebar[currentDocRoute.path] ||
37
- permalinkToSidebar[addTrailingSlash(currentDocRoute.path)] ||
38
- permalinkToSidebar[removeTrailingSlash(currentDocRoute.path)];
39
- const sidebar = docsSidebars[sidebarName];
40
- return {
41
- sidebar,
42
- sidebarName,
43
- };
44
- }
21
+ import Head from '@docusaurus/Head';
45
22
 
46
23
  function DocPageContent({currentDocRoute, versionMetadata, children}) {
47
- const {siteConfig, isClient} = useDocusaurusContext();
48
24
  const {pluginId, version} = versionMetadata;
49
- const {sidebarName, sidebar} = getSidebar({
50
- versionMetadata,
51
- currentDocRoute,
52
- });
25
+ const sidebarName = currentDocRoute.sidebar;
26
+ const sidebar = sidebarName
27
+ ? versionMetadata.docsSidebars[sidebarName]
28
+ : undefined;
53
29
  const [hiddenSidebarContainer, setHiddenSidebarContainer] = useState(false);
54
30
  const [hiddenSidebar, setHiddenSidebar] = useState(false);
55
31
  const toggleSidebar = useCallback(() => {
@@ -57,18 +33,19 @@ function DocPageContent({currentDocRoute, versionMetadata, children}) {
57
33
  setHiddenSidebar(false);
58
34
  }
59
35
 
60
- setHiddenSidebarContainer(!hiddenSidebarContainer);
36
+ setHiddenSidebarContainer((value) => !value);
61
37
  }, [hiddenSidebar]);
62
38
  return (
63
39
  <Layout
64
- key={isClient}
65
- wrapperClassName={ThemeClassNames.wrapper.docPages}
66
- pageClassName={ThemeClassNames.page.docPage}
40
+ wrapperClassName={ThemeClassNames.wrapper.docsPages}
41
+ pageClassName={ThemeClassNames.page.docsDocPage}
67
42
  searchMetadatas={{
68
43
  version,
69
44
  tag: docVersionSearchTag(pluginId, version),
70
45
  }}>
71
46
  <div className={styles.docPage}>
47
+ <BackToTopButton />
48
+
72
49
  {sidebar && (
73
50
  <aside
74
51
  className={clsx(styles.docSidebarContainer, {
@@ -93,9 +70,6 @@ function DocPageContent({currentDocRoute, versionMetadata, children}) {
93
70
  }
94
71
  sidebar={sidebar}
95
72
  path={currentDocRoute.path}
96
- sidebarCollapsible={
97
- siteConfig.themeConfig?.sidebarCollapsible ?? true
98
- }
99
73
  onCollapse={toggleSidebar}
100
74
  isHidden={hiddenSidebar}
101
75
  />
@@ -156,15 +130,23 @@ function DocPage(props) {
156
130
  );
157
131
 
158
132
  if (!currentDocRoute) {
159
- return <NotFound {...props} />;
133
+ return <NotFound />;
160
134
  }
161
135
 
162
136
  return (
163
- <DocPageContent
164
- currentDocRoute={currentDocRoute}
165
- versionMetadata={versionMetadata}>
166
- {renderRoutes(docRoutes)}
167
- </DocPageContent>
137
+ <>
138
+ <Head>
139
+ {/* TODO we should add a core addRoute({htmlClassName}) generic plugin option */}
140
+ <html className={versionMetadata.className} />
141
+ </Head>
142
+ <DocPageContent
143
+ currentDocRoute={currentDocRoute}
144
+ versionMetadata={versionMetadata}>
145
+ {renderRoutes(docRoutes, {
146
+ versionMetadata,
147
+ })}
148
+ </DocPageContent>
149
+ </>
168
150
  );
169
151
  }
170
152
 
@@ -7,6 +7,7 @@
7
7
 
8
8
  :root {
9
9
  --doc-sidebar-width: 300px;
10
+ --doc-sidebar-hidden-width: 30px;
10
11
  }
11
12
 
12
13
  :global(.docs-wrapper) {
@@ -19,6 +20,10 @@
19
20
  width: 100%;
20
21
  }
21
22
 
23
+ .docSidebarContainer {
24
+ display: none;
25
+ }
26
+
22
27
  @media (min-width: 997px) {
23
28
  .docMainContainer {
24
29
  flex-grow: 1;
@@ -26,10 +31,11 @@
26
31
  }
27
32
 
28
33
  .docMainContainerEnhanced {
29
- max-width: none;
34
+ max-width: calc(100% - var(--doc-sidebar-hidden-width));
30
35
  }
31
36
 
32
37
  .docSidebarContainer {
38
+ display: block;
33
39
  width: var(--doc-sidebar-width);
34
40
  margin-top: calc(-1 * var(--ifm-navbar-height));
35
41
  border-right: 1px solid var(--ifm-toc-border-color);
@@ -39,7 +45,7 @@
39
45
  }
40
46
 
41
47
  .docSidebarContainerHidden {
42
- width: 30px;
48
+ width: var(--doc-sidebar-hidden-width);
43
49
  cursor: pointer;
44
50
  }
45
51
 
@@ -77,24 +83,3 @@
77
83
  ) !important;
78
84
  }
79
85
  }
80
-
81
- @media (max-width: 996px) {
82
- .docSidebarContainer {
83
- margin-top: 0;
84
- }
85
- }
86
-
87
- @media (min-width: 997px) and (max-width: 1320px) {
88
- .docItemWrapper {
89
- max-width: calc(
90
- var(--ifm-container-width) - var(--doc-sidebar-width) -
91
- var(--ifm-spacing-horizontal) * 2
92
- );
93
- }
94
-
95
- .docItemWrapperEnhanced {
96
- max-width: calc(
97
- var(--ifm-container-width) - var(--ifm-spacing-horizontal) * 2
98
- );
99
- }
100
- }