@docusaurus/theme-classic 2.0.0-beta.12faed89d → 2.0.0-beta.13

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 (350) hide show
  1. package/README.md +1 -1
  2. package/lib/__tests__/validateThemeConfig.test.js +277 -3
  3. package/lib/admonitions.css +35 -0
  4. package/lib/deps.d.ts +13 -0
  5. package/lib/index.js +16 -15
  6. package/lib/prism-include-languages.js +9 -5
  7. package/lib/theme/AnnouncementBar/index.js +8 -12
  8. package/lib/theme/AnnouncementBar/styles.module.css +23 -32
  9. package/lib/theme/BackToTopButton/index.js +140 -0
  10. package/lib/theme/BackToTopButton/styles.module.css +42 -0
  11. package/lib/theme/BlogArchivePage/index.js +89 -0
  12. package/lib/theme/BlogLayout/index.js +51 -0
  13. package/lib/theme/BlogListPage/index.js +10 -21
  14. package/lib/theme/BlogPostAuthor/index.js +51 -0
  15. package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
  16. package/lib/theme/BlogPostAuthors/index.js +47 -0
  17. package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
  18. package/lib/theme/BlogPostItem/index.js +58 -67
  19. package/lib/theme/BlogPostPage/index.js +37 -24
  20. package/lib/theme/BlogSidebar/index.js +5 -7
  21. package/lib/theme/BlogSidebar/styles.module.css +2 -2
  22. package/lib/theme/BlogTagsListPage/index.js +8 -44
  23. package/lib/theme/BlogTagsPostsPage/index.js +24 -38
  24. package/lib/theme/CodeBlock/index.js +18 -138
  25. package/lib/theme/CodeBlock/styles.module.css +6 -9
  26. package/lib/theme/Details/index.js +30 -0
  27. package/lib/theme/Details/styles.module.css +13 -0
  28. package/lib/theme/DocCard/index.js +84 -0
  29. package/lib/theme/DocCard/styles.module.css +43 -0
  30. package/lib/theme/DocCardList/index.js +28 -0
  31. package/lib/theme/DocCategoryGeneratedIndexPage/index.js +57 -0
  32. package/lib/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  33. package/lib/theme/DocItem/index.js +22 -48
  34. package/lib/theme/DocItem/styles.module.css +2 -11
  35. package/lib/theme/DocItemFooter/index.js +79 -0
  36. package/lib/theme/DocItemFooter/styles.module.css +18 -0
  37. package/lib/theme/DocPage/index.js +35 -20
  38. package/lib/theme/DocPaginator/index.js +6 -7
  39. package/lib/theme/DocSidebar/index.js +23 -22
  40. package/lib/theme/DocSidebarItem/index.js +84 -50
  41. package/lib/theme/DocSidebarItem/styles.module.css +4 -0
  42. package/lib/theme/DocTagDocListPage/index.js +89 -0
  43. package/lib/theme/DocTagsListPage/index.js +44 -0
  44. package/lib/theme/DocVersionBadge/index.js +34 -0
  45. package/lib/theme/DocVersionBanner/index.js +12 -10
  46. package/lib/theme/EditThisPage/index.js +3 -1
  47. package/lib/theme/ErrorPageContent.js +43 -0
  48. package/lib/theme/Footer/index.js +8 -4
  49. package/lib/theme/Heading/index.js +17 -22
  50. package/lib/theme/Heading/styles.css +5 -6
  51. package/lib/theme/Heading/styles.module.css +9 -5
  52. package/lib/theme/IconArrow/index.js +2 -2
  53. package/lib/theme/IconClose/index.js +31 -0
  54. package/lib/theme/IconEdit/index.js +3 -3
  55. package/lib/theme/IconExternalLink/index.js +3 -3
  56. package/lib/theme/IconLanguage/index.js +3 -3
  57. package/lib/theme/IconMenu/index.js +3 -3
  58. package/lib/theme/LastUpdated/index.js +4 -2
  59. package/lib/theme/Layout/index.js +5 -1
  60. package/lib/theme/LayoutHead/index.js +22 -17
  61. package/lib/theme/LayoutProviders/index.js +7 -5
  62. package/lib/theme/Logo/index.js +16 -14
  63. package/lib/theme/MDXComponents/index.js +45 -4
  64. package/lib/theme/MDXComponents/styles.css +11 -0
  65. package/lib/theme/MDXPage/index.js +2 -1
  66. package/lib/theme/Navbar/index.js +46 -27
  67. package/lib/theme/Navbar/styles.module.css +3 -39
  68. package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -124
  69. package/lib/theme/NavbarItem/DocNavbarItem.js +7 -8
  70. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
  71. package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
  72. package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +6 -10
  73. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  74. package/lib/theme/NavbarItem/index.js +31 -11
  75. package/lib/theme/{SearchMetadatas → SearchMetadata}/index.js +2 -2
  76. package/lib/theme/Seo/index.js +10 -7
  77. package/lib/theme/TOC/index.js +9 -30
  78. package/lib/theme/TOC/styles.module.css +1 -1
  79. package/lib/theme/TOCCollapsible/index.js +7 -5
  80. package/lib/theme/TOCCollapsible/styles.module.css +1 -0
  81. package/lib/theme/TOCInline/index.js +7 -27
  82. package/lib/theme/TOCItems/index.js +78 -0
  83. package/lib/theme/Tabs/__tests__/index.test.js +123 -0
  84. package/lib/theme/Tabs/index.js +73 -50
  85. package/lib/theme/Tabs/styles.module.css +0 -13
  86. package/lib/theme/Tag/index.js +40 -0
  87. package/lib/theme/Tag/styles.module.css +70 -0
  88. package/lib/theme/TagsListByLetter/index.js +48 -0
  89. package/lib/theme/TagsListByLetter/styles.module.css +11 -0
  90. package/lib/theme/TagsListInline/index.js +44 -0
  91. package/lib/theme/TagsListInline/styles.module.css +15 -0
  92. package/lib/theme/ThemeProvider/index.js +8 -3
  93. package/lib/theme/ThemedImage/index.js +5 -7
  94. package/lib/theme/Toggle/index.js +41 -44
  95. package/lib/theme/Toggle/styles.module.css +91 -3
  96. package/lib/theme/UserPreferencesProvider/index.js +8 -3
  97. package/lib/theme/hooks/useHideableNavbar.js +14 -32
  98. package/lib/theme/hooks/useTheme.js +3 -5
  99. package/lib/theme/hooks/useWindowSize.js +2 -7
  100. package/lib/theme/prism-include-languages.js +4 -3
  101. package/lib/theme-classic.d.ts +806 -0
  102. package/lib/translations.js +4 -4
  103. package/lib/types.d.ts +0 -629
  104. package/lib/validateThemeConfig.js +230 -248
  105. package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
  106. package/lib-next/admonitions.css +35 -0
  107. package/lib-next/deps.d.ts +13 -0
  108. package/lib-next/index.js +16 -10
  109. package/lib-next/prism-include-languages.js +0 -2
  110. package/lib-next/theme/AnnouncementBar/index.js +7 -12
  111. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  112. package/lib-next/theme/BackToTopButton/index.js +131 -0
  113. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  114. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  115. package/lib-next/theme/BlogLayout/index.js +40 -0
  116. package/lib-next/theme/BlogListPage/index.js +17 -25
  117. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  118. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  119. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  120. package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
  121. package/lib-next/theme/BlogPostItem/index.js +79 -86
  122. package/lib-next/theme/BlogPostPage/index.js +70 -35
  123. package/lib-next/theme/BlogSidebar/index.js +11 -13
  124. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  125. package/lib-next/theme/BlogTagsListPage/index.js +14 -55
  126. package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
  127. package/lib-next/theme/CodeBlock/index.js +17 -149
  128. package/lib-next/theme/CodeBlock/styles.module.css +6 -9
  129. package/lib-next/theme/Details/index.js +20 -0
  130. package/lib-next/theme/Details/styles.module.css +13 -0
  131. package/lib-next/theme/DocCard/index.js +80 -0
  132. package/lib-next/theme/DocCard/styles.module.css +43 -0
  133. package/lib-next/theme/DocCardList/index.js +19 -0
  134. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
  135. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  136. package/lib-next/theme/DocItem/index.js +30 -59
  137. package/lib-next/theme/DocItem/styles.module.css +2 -11
  138. package/lib-next/theme/DocItemFooter/index.js +79 -0
  139. package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
  140. package/lib-next/theme/DocPage/index.js +46 -23
  141. package/lib-next/theme/DocPaginator/index.js +7 -11
  142. package/lib-next/theme/DocSidebar/index.js +37 -43
  143. package/lib-next/theme/DocSidebarItem/index.js +115 -65
  144. package/lib-next/theme/DocSidebarItem/styles.module.css +4 -0
  145. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  146. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  147. package/lib-next/theme/DocVersionBadge/index.js +27 -0
  148. package/lib-next/theme/DocVersionBanner/index.js +28 -14
  149. package/lib-next/theme/EditThisPage/index.js +6 -1
  150. package/lib-next/theme/ErrorPageContent.js +35 -0
  151. package/lib-next/theme/Footer/index.js +17 -4
  152. package/lib-next/theme/Heading/index.js +25 -29
  153. package/lib-next/theme/Heading/styles.css +5 -6
  154. package/lib-next/theme/Heading/styles.module.css +9 -5
  155. package/lib-next/theme/IconArrow/index.js +2 -2
  156. package/lib-next/theme/IconClose/index.js +23 -0
  157. package/lib-next/theme/IconEdit/index.js +2 -2
  158. package/lib-next/theme/IconExternalLink/index.js +2 -2
  159. package/lib-next/theme/IconLanguage/index.js +2 -2
  160. package/lib-next/theme/IconMenu/index.js +2 -2
  161. package/lib-next/theme/LastUpdated/index.js +3 -2
  162. package/lib-next/theme/Layout/index.js +3 -1
  163. package/lib-next/theme/LayoutHead/index.js +18 -23
  164. package/lib-next/theme/LayoutProviders/index.js +8 -5
  165. package/lib-next/theme/Logo/index.js +25 -21
  166. package/lib-next/theme/MDXComponents/index.js +34 -7
  167. package/lib-next/theme/MDXComponents/styles.css +11 -0
  168. package/lib-next/theme/MDXPage/index.js +10 -2
  169. package/lib-next/theme/Navbar/index.js +62 -34
  170. package/lib-next/theme/Navbar/styles.module.css +3 -39
  171. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -143
  172. package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
  173. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  174. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +159 -0
  175. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
  176. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  177. package/lib-next/theme/NavbarItem/index.js +25 -12
  178. package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
  179. package/lib-next/theme/Seo/index.js +11 -7
  180. package/lib-next/theme/TOC/index.js +12 -36
  181. package/lib-next/theme/TOC/styles.module.css +1 -1
  182. package/lib-next/theme/TOCCollapsible/index.js +13 -4
  183. package/lib-next/theme/TOCCollapsible/styles.module.css +1 -0
  184. package/lib-next/theme/TOCInline/index.js +10 -28
  185. package/lib-next/theme/TOCItems/index.js +85 -0
  186. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  187. package/lib-next/theme/Tabs/index.js +91 -43
  188. package/lib-next/theme/Tabs/styles.module.css +0 -13
  189. package/lib-next/theme/Tag/index.js +27 -0
  190. package/lib-next/theme/Tag/styles.module.css +70 -0
  191. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  192. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  193. package/lib-next/theme/TagsListInline/index.js +31 -0
  194. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  195. package/lib-next/theme/ThemeProvider/index.js +10 -7
  196. package/lib-next/theme/ThemedImage/index.js +5 -5
  197. package/lib-next/theme/Toggle/index.js +34 -37
  198. package/lib-next/theme/Toggle/styles.module.css +91 -3
  199. package/lib-next/theme/UserPreferencesProvider/index.js +9 -6
  200. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  201. package/lib-next/theme/hooks/useTheme.js +4 -5
  202. package/lib-next/theme/hooks/useWindowSize.js +2 -6
  203. package/lib-next/theme/prism-include-languages.js +2 -1
  204. package/lib-next/theme-classic.d.ts +806 -0
  205. package/lib-next/translations.js +6 -10
  206. package/lib-next/types.d.ts +0 -629
  207. package/lib-next/validateThemeConfig.js +141 -116
  208. package/package.json +27 -24
  209. package/src/__tests__/validateThemeConfig.test.js +277 -3
  210. package/src/admonitions.css +35 -0
  211. package/src/deps.d.ts +13 -0
  212. package/src/index.ts +23 -17
  213. package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
  214. package/src/theme/AnnouncementBar/index.tsx +8 -12
  215. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  216. package/src/theme/BackToTopButton/index.tsx +142 -0
  217. package/src/theme/BackToTopButton/styles.module.css +42 -0
  218. package/src/theme/BlogArchivePage/index.tsx +91 -0
  219. package/src/theme/BlogLayout/index.tsx +44 -0
  220. package/src/theme/BlogListPage/index.tsx +18 -25
  221. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  222. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  223. package/src/theme/BlogPostAuthors/index.tsx +39 -0
  224. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  225. package/src/theme/BlogPostItem/index.tsx +70 -80
  226. package/src/theme/BlogPostPage/index.tsx +72 -35
  227. package/src/theme/BlogSidebar/index.tsx +11 -13
  228. package/src/theme/BlogSidebar/styles.module.css +2 -2
  229. package/src/theme/BlogTagsListPage/index.tsx +14 -57
  230. package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
  231. package/src/theme/CodeBlock/index.tsx +21 -151
  232. package/src/theme/CodeBlock/styles.module.css +6 -9
  233. package/src/theme/Details/index.tsx +24 -0
  234. package/src/theme/Details/styles.module.css +13 -0
  235. package/src/theme/DocCard/index.tsx +100 -0
  236. package/src/theme/DocCard/styles.module.css +43 -0
  237. package/src/theme/DocCardList/index.tsx +27 -0
  238. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
  239. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  240. package/src/theme/DocItem/index.tsx +30 -60
  241. package/src/theme/DocItem/styles.module.css +2 -11
  242. package/src/theme/DocItemFooter/index.tsx +91 -0
  243. package/src/theme/DocItemFooter/styles.module.css +18 -0
  244. package/src/theme/DocPage/index.tsx +44 -22
  245. package/src/theme/DocPaginator/index.tsx +9 -13
  246. package/src/theme/DocSidebar/index.tsx +38 -39
  247. package/src/theme/DocSidebarItem/index.tsx +108 -49
  248. package/src/theme/DocSidebarItem/styles.module.css +4 -0
  249. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  250. package/src/theme/DocTagsListPage/index.tsx +41 -0
  251. package/src/theme/DocVersionBadge/index.tsx +30 -0
  252. package/src/theme/DocVersionBanner/index.tsx +48 -21
  253. package/src/theme/EditThisPage/index.tsx +6 -1
  254. package/src/theme/ErrorPageContent.tsx +41 -0
  255. package/src/theme/Footer/index.tsx +20 -5
  256. package/src/theme/Heading/index.tsx +25 -31
  257. package/src/theme/Heading/styles.css +5 -6
  258. package/src/theme/Heading/styles.module.css +9 -5
  259. package/src/theme/IconArrow/index.tsx +2 -2
  260. package/src/theme/IconClose/index.tsx +26 -0
  261. package/src/theme/IconEdit/index.tsx +2 -2
  262. package/src/theme/IconExternalLink/index.tsx +2 -5
  263. package/src/theme/IconLanguage/index.tsx +2 -6
  264. package/src/theme/IconMenu/index.tsx +3 -3
  265. package/src/theme/LastUpdated/index.tsx +3 -2
  266. package/src/theme/Layout/index.tsx +3 -1
  267. package/src/theme/LayoutHead/index.tsx +18 -17
  268. package/src/theme/LayoutProviders/index.tsx +8 -5
  269. package/src/theme/Logo/index.tsx +21 -17
  270. package/src/theme/MDXComponents/index.tsx +39 -5
  271. package/src/theme/MDXComponents/styles.css +11 -0
  272. package/src/theme/MDXPage/index.tsx +10 -2
  273. package/src/theme/Navbar/index.tsx +62 -35
  274. package/src/theme/Navbar/styles.module.css +3 -39
  275. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -149
  276. package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
  277. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  278. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  279. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
  280. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
  281. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  282. package/src/theme/NavbarItem/index.tsx +41 -16
  283. package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
  284. package/src/theme/Seo/index.tsx +7 -4
  285. package/src/theme/TOC/index.tsx +13 -35
  286. package/src/theme/TOC/styles.module.css +1 -1
  287. package/src/theme/TOCCollapsible/index.tsx +13 -4
  288. package/src/theme/TOCCollapsible/styles.module.css +1 -0
  289. package/src/theme/TOCInline/index.tsx +13 -32
  290. package/src/theme/TOCItems/index.tsx +96 -0
  291. package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
  292. package/src/theme/Tabs/index.tsx +93 -49
  293. package/src/theme/Tabs/styles.module.css +0 -13
  294. package/src/theme/Tag/index.tsx +31 -0
  295. package/src/theme/Tag/styles.module.css +70 -0
  296. package/src/theme/TagsListByLetter/index.tsx +45 -0
  297. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  298. package/src/theme/TagsListInline/index.tsx +35 -0
  299. package/src/theme/TagsListInline/styles.module.css +15 -0
  300. package/src/theme/ThemeProvider/index.tsx +6 -2
  301. package/src/theme/ThemedImage/index.tsx +5 -5
  302. package/src/theme/Toggle/index.tsx +36 -43
  303. package/src/theme/Toggle/styles.module.css +91 -3
  304. package/src/theme/UserPreferencesProvider/index.tsx +9 -6
  305. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  306. package/src/theme/hooks/useTabGroupChoice.ts +2 -2
  307. package/src/theme/hooks/useTheme.ts +4 -5
  308. package/src/theme/hooks/useWindowSize.ts +2 -7
  309. package/src/theme/prism-include-languages.ts +3 -2
  310. package/src/theme-classic.d.ts +806 -0
  311. package/src/translations.ts +8 -10
  312. package/src/types.d.ts +0 -629
  313. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +151 -96
  314. package/tsconfig.json +1 -2
  315. package/codeTranslations/README.md +0 -20
  316. package/codeTranslations/ar.json +0 -56
  317. package/codeTranslations/base.json +0 -110
  318. package/codeTranslations/bn.json +0 -56
  319. package/codeTranslations/da.json +0 -56
  320. package/codeTranslations/de.json +0 -56
  321. package/codeTranslations/es.json +0 -56
  322. package/codeTranslations/fa.json +0 -56
  323. package/codeTranslations/fil.json +0 -56
  324. package/codeTranslations/fr.json +0 -56
  325. package/codeTranslations/he.json +0 -56
  326. package/codeTranslations/hi.json +0 -56
  327. package/codeTranslations/ja.json +0 -56
  328. package/codeTranslations/ko.json +0 -56
  329. package/codeTranslations/pl.json +0 -56
  330. package/codeTranslations/pt-BR.json +0 -56
  331. package/codeTranslations/pt-PT.json +0 -56
  332. package/codeTranslations/ru.json +0 -56
  333. package/codeTranslations/tr.json +0 -56
  334. package/codeTranslations/vi.json +0 -56
  335. package/codeTranslations/zh-Hans.json +0 -56
  336. package/codeTranslations/zh-Hant.json +0 -56
  337. package/lib/theme/Toggle/styles.css +0 -103
  338. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  339. package/lib/theme/hooks/useScrollPosition.js +0 -49
  340. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  341. package/lib-next/theme/Toggle/styles.css +0 -103
  342. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  343. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  344. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  345. package/src/theme/Toggle/styles.css +0 -103
  346. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  347. package/src/theme/hooks/useScrollPosition.ts +0 -45
  348. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  349. package/update-code-translations.js +0 -242
  350. package/update-code-translations.test.js +0 -33
@@ -7,46 +7,31 @@
7
7
 
8
8
  import React from 'react';
9
9
  import clsx from 'clsx';
10
-
11
- import {useActivePlugin, useVersions} from '@theme/hooks/useDocs';
12
10
  import useWindowSize from '@theme/hooks/useWindowSize';
13
11
  import DocPaginator from '@theme/DocPaginator';
14
12
  import DocVersionBanner from '@theme/DocVersionBanner';
13
+ import DocVersionBadge from '@theme/DocVersionBadge';
15
14
  import Seo from '@theme/Seo';
16
- import LastUpdated from '@theme/LastUpdated';
17
15
  import type {Props} from '@theme/DocItem';
16
+ import DocItemFooter from '@theme/DocItemFooter';
18
17
  import TOC from '@theme/TOC';
19
18
  import TOCCollapsible from '@theme/TOCCollapsible';
20
- import EditThisPage from '@theme/EditThisPage';
21
19
  import {MainHeading} from '@theme/Heading';
22
-
23
20
  import styles from './styles.module.css';
21
+ import {ThemeClassNames} from '@docusaurus/theme-common';
24
22
 
25
- function DocItem(props: Props): JSX.Element {
26
- const {content: DocContent, versionMetadata} = props;
23
+ export default function DocItem(props: Props): JSX.Element {
24
+ const {content: DocContent} = props;
27
25
  const {metadata, frontMatter} = DocContent;
28
26
  const {
29
27
  image,
30
28
  keywords,
31
29
  hide_title: hideTitle,
32
30
  hide_table_of_contents: hideTableOfContents,
31
+ toc_min_heading_level: tocMinHeadingLevel,
32
+ toc_max_heading_level: tocMaxHeadingLevel,
33
33
  } = frontMatter;
34
- const {
35
- description,
36
- title,
37
- editUrl,
38
- lastUpdatedAt,
39
- formattedLastUpdatedAt,
40
- lastUpdatedBy,
41
- } = metadata;
42
-
43
- const {pluginId} = useActivePlugin({failfast: true});
44
- const versions = useVersions(pluginId);
45
-
46
- // If site is not versioned or only one version is included
47
- // we don't show the version badge
48
- // See https://github.com/facebook/docusaurus/issues/3362
49
- const showVersionBadge = versions.length > 1;
34
+ const {description, title} = metadata;
50
35
 
51
36
  // We only add a title if:
52
37
  // - user asks to hide it with frontmatter
@@ -56,15 +41,11 @@ function DocItem(props: Props): JSX.Element {
56
41
 
57
42
  const windowSize = useWindowSize();
58
43
 
59
- const renderTocMobile =
60
- !hideTableOfContents &&
61
- DocContent.toc &&
62
- (windowSize === 'mobile' || windowSize === 'ssr');
44
+ const canRenderTOC =
45
+ !hideTableOfContents && DocContent.toc && DocContent.toc.length > 0;
63
46
 
64
47
  const renderTocDesktop =
65
- !hideTableOfContents &&
66
- DocContent.toc &&
67
- (windowSize === 'desktop' || windowSize === 'ssr');
48
+ canRenderTOC && (windowSize === 'desktop' || windowSize === 'ssr');
68
49
 
69
50
  return (
70
51
  <>
@@ -75,23 +56,25 @@ function DocItem(props: Props): JSX.Element {
75
56
  className={clsx('col', {
76
57
  [styles.docItemCol]: !hideTableOfContents,
77
58
  })}>
78
- <DocVersionBanner versionMetadata={versionMetadata} />
59
+ <DocVersionBanner />
79
60
  <div className={styles.docItemContainer}>
80
61
  <article>
81
- {showVersionBadge && (
82
- <span className="badge badge--secondary">
83
- Version: {versionMetadata.label}
84
- </span>
85
- )}
62
+ <DocVersionBadge />
86
63
 
87
- {renderTocMobile && (
64
+ {canRenderTOC && (
88
65
  <TOCCollapsible
89
66
  toc={DocContent.toc}
90
- className={styles.tocMobile}
67
+ minHeadingLevel={tocMinHeadingLevel}
68
+ maxHeadingLevel={tocMaxHeadingLevel}
69
+ className={clsx(
70
+ ThemeClassNames.docs.docTocMobile,
71
+ styles.tocMobile,
72
+ )}
91
73
  />
92
74
  )}
93
75
 
94
- <div className="markdown">
76
+ <div
77
+ className={clsx(ThemeClassNames.docs.docMarkdown, 'markdown')}>
95
78
  {/*
96
79
  Title can be declared inside md content or declared through frontmatter and added manually
97
80
  To make both cases consistent, the added title is added under the same div.markdown block
@@ -102,36 +85,23 @@ function DocItem(props: Props): JSX.Element {
102
85
  <DocContent />
103
86
  </div>
104
87
 
105
- {(editUrl || lastUpdatedAt || lastUpdatedBy) && (
106
- <footer className="row docusaurus-mt-lg">
107
- <div className="col">
108
- {editUrl && <EditThisPage editUrl={editUrl} />}
109
- </div>
110
-
111
- <div className={clsx('col', styles.lastUpdated)}>
112
- {(lastUpdatedAt || lastUpdatedBy) && (
113
- <LastUpdated
114
- lastUpdatedAt={lastUpdatedAt}
115
- formattedLastUpdatedAt={formattedLastUpdatedAt}
116
- lastUpdatedBy={lastUpdatedBy}
117
- />
118
- )}
119
- </div>
120
- </footer>
121
- )}
88
+ <DocItemFooter {...props} />
122
89
  </article>
123
90
 
124
- <DocPaginator metadata={metadata} />
91
+ <DocPaginator previous={metadata.previous} next={metadata.next} />
125
92
  </div>
126
93
  </div>
127
94
  {renderTocDesktop && (
128
95
  <div className="col col--3">
129
- <TOC toc={DocContent.toc} />
96
+ <TOC
97
+ toc={DocContent.toc}
98
+ minHeadingLevel={tocMinHeadingLevel}
99
+ maxHeadingLevel={tocMaxHeadingLevel}
100
+ className={ThemeClassNames.docs.docTocDesktop}
101
+ />
130
102
  </div>
131
103
  )}
132
104
  </div>
133
105
  </>
134
106
  );
135
107
  }
136
-
137
- export default DocItem;
@@ -5,25 +5,16 @@
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;
25
- }
26
-
27
18
  /* Prevent hydration FOUC, as the mobile TOC needs to be server-rendered */
28
19
  .tocMobile {
29
20
  display: none;
@@ -0,0 +1,91 @@
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
+ import React from 'react';
9
+ import clsx from 'clsx';
10
+
11
+ import LastUpdated from '@theme/LastUpdated';
12
+ import type {Props} from '@theme/DocItem';
13
+ import EditThisPage from '@theme/EditThisPage';
14
+ import TagsListInline, {
15
+ Props as TagsListInlineProps,
16
+ } from '@theme/TagsListInline';
17
+
18
+ import styles from './styles.module.css';
19
+ import {ThemeClassNames} from '@docusaurus/theme-common';
20
+
21
+ function TagsRow(props: TagsListInlineProps) {
22
+ return (
23
+ <div
24
+ className={clsx(
25
+ ThemeClassNames.docs.docFooterTagsRow,
26
+ 'row margin-bottom--sm',
27
+ )}>
28
+ <div className="col">
29
+ <TagsListInline {...props} />
30
+ </div>
31
+ </div>
32
+ );
33
+ }
34
+
35
+ type EditMetaRowProps = Pick<
36
+ Props['content']['metadata'],
37
+ 'editUrl' | 'lastUpdatedAt' | 'lastUpdatedBy' | 'formattedLastUpdatedAt'
38
+ >;
39
+ function EditMetaRow({
40
+ editUrl,
41
+ lastUpdatedAt,
42
+ lastUpdatedBy,
43
+ formattedLastUpdatedAt,
44
+ }: EditMetaRowProps) {
45
+ return (
46
+ <div className={clsx(ThemeClassNames.docs.docFooterEditMetaRow, 'row')}>
47
+ <div className="col">{editUrl && <EditThisPage editUrl={editUrl} />}</div>
48
+
49
+ <div className={clsx('col', styles.lastUpdated)}>
50
+ {(lastUpdatedAt || lastUpdatedBy) && (
51
+ <LastUpdated
52
+ lastUpdatedAt={lastUpdatedAt}
53
+ formattedLastUpdatedAt={formattedLastUpdatedAt}
54
+ lastUpdatedBy={lastUpdatedBy}
55
+ />
56
+ )}
57
+ </div>
58
+ </div>
59
+ );
60
+ }
61
+
62
+ export default function DocItemFooter(props: Props): JSX.Element | null {
63
+ const {content: DocContent} = props;
64
+ const {metadata} = DocContent;
65
+ const {editUrl, lastUpdatedAt, formattedLastUpdatedAt, lastUpdatedBy, tags} =
66
+ metadata;
67
+
68
+ const canDisplayTagsRow = tags.length > 0;
69
+ const canDisplayEditMetaRow = !!(editUrl || lastUpdatedAt || lastUpdatedBy);
70
+
71
+ const canDisplayFooter = canDisplayTagsRow || canDisplayEditMetaRow;
72
+
73
+ if (!canDisplayFooter) {
74
+ return null;
75
+ }
76
+
77
+ return (
78
+ <footer
79
+ className={clsx(ThemeClassNames.docs.docFooter, 'docusaurus-mt-lg')}>
80
+ {canDisplayTagsRow && <TagsRow tags={tags} />}
81
+ {canDisplayEditMetaRow && (
82
+ <EditMetaRow
83
+ editUrl={editUrl}
84
+ lastUpdatedAt={lastUpdatedAt}
85
+ lastUpdatedBy={lastUpdatedBy}
86
+ formattedLastUpdatedAt={formattedLastUpdatedAt}
87
+ />
88
+ )}
89
+ </footer>
90
+ );
91
+ }
@@ -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
+ }
@@ -8,9 +8,8 @@
8
8
  import React, {ReactNode, useState, useCallback} from 'react';
9
9
  import {MDXProvider} from '@mdx-js/react';
10
10
 
11
- import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
12
11
  import renderRoutes from '@docusaurus/renderRoutes';
13
- import type {PropVersionMetadata} from '@docusaurus/plugin-content-docs-types';
12
+ import type {PropVersionMetadata} from '@docusaurus/plugin-content-docs';
14
13
  import Layout from '@theme/Layout';
15
14
  import DocSidebar from '@theme/DocSidebar';
16
15
  import MDXComponents from '@theme/MDXComponents';
@@ -18,32 +17,36 @@ import NotFound from '@theme/NotFound';
18
17
  import type {DocumentRoute} from '@theme/DocItem';
19
18
  import type {Props} from '@theme/DocPage';
20
19
  import IconArrow from '@theme/IconArrow';
20
+ import BackToTopButton from '@theme/BackToTopButton';
21
21
  import {matchPath} from '@docusaurus/router';
22
22
  import {translate} from '@docusaurus/Translate';
23
23
 
24
24
  import clsx from 'clsx';
25
25
  import styles from './styles.module.css';
26
- import {ThemeClassNames, docVersionSearchTag} from '@docusaurus/theme-common';
26
+ import {
27
+ ThemeClassNames,
28
+ docVersionSearchTag,
29
+ DocsSidebarProvider,
30
+ useDocsSidebar,
31
+ DocsVersionProvider,
32
+ } from '@docusaurus/theme-common';
33
+ import Head from '@docusaurus/Head';
27
34
 
28
35
  type DocPageContentProps = {
29
36
  readonly currentDocRoute: DocumentRoute;
30
37
  readonly versionMetadata: PropVersionMetadata;
31
38
  readonly children: ReactNode;
39
+ readonly sidebarName: string | undefined;
32
40
  };
33
41
 
34
42
  function DocPageContent({
35
43
  currentDocRoute,
36
44
  versionMetadata,
37
45
  children,
46
+ sidebarName,
38
47
  }: DocPageContentProps): JSX.Element {
39
- const {siteConfig, isClient} = useDocusaurusContext();
48
+ const sidebar = useDocsSidebar();
40
49
  const {pluginId, version} = versionMetadata;
41
-
42
- const sidebarName = currentDocRoute.sidebar;
43
- const sidebar = sidebarName
44
- ? versionMetadata.docsSidebars[sidebarName]
45
- : undefined;
46
-
47
50
  const [hiddenSidebarContainer, setHiddenSidebarContainer] = useState(false);
48
51
  const [hiddenSidebar, setHiddenSidebar] = useState(false);
49
52
  const toggleSidebar = useCallback(() => {
@@ -51,19 +54,20 @@ function DocPageContent({
51
54
  setHiddenSidebar(false);
52
55
  }
53
56
 
54
- setHiddenSidebarContainer(!hiddenSidebarContainer);
57
+ setHiddenSidebarContainer((value) => !value);
55
58
  }, [hiddenSidebar]);
56
59
 
57
60
  return (
58
61
  <Layout
59
- key={isClient}
60
- wrapperClassName={ThemeClassNames.wrapper.docPages}
61
- pageClassName={ThemeClassNames.page.docPage}
62
- searchMetadatas={{
62
+ wrapperClassName={ThemeClassNames.wrapper.docsPages}
63
+ pageClassName={ThemeClassNames.page.docsDocPage}
64
+ searchMetadata={{
63
65
  version,
64
66
  tag: docVersionSearchTag(pluginId, version),
65
67
  }}>
66
68
  <div className={styles.docPage}>
69
+ <BackToTopButton />
70
+
67
71
  {sidebar && (
68
72
  <aside
69
73
  className={clsx(styles.docSidebarContainer, {
@@ -88,7 +92,6 @@ function DocPageContent({
88
92
  }
89
93
  sidebar={sidebar}
90
94
  path={currentDocRoute.path}
91
- sidebarCollapsible={siteConfig.themeConfig.sidebarCollapsible}
92
95
  onCollapse={toggleSidebar}
93
96
  isHidden={hiddenSidebar}
94
97
  />
@@ -148,14 +151,33 @@ function DocPage(props: Props): JSX.Element {
148
151
  matchPath(location.pathname, docRoute),
149
152
  );
150
153
  if (!currentDocRoute) {
151
- return <NotFound {...props} />;
154
+ return <NotFound />;
152
155
  }
156
+
157
+ // For now, the sidebarName is added as route config: not ideal!
158
+ const sidebarName = currentDocRoute.sidebar;
159
+
160
+ const sidebar = sidebarName
161
+ ? versionMetadata.docsSidebars[sidebarName]
162
+ : null;
163
+
153
164
  return (
154
- <DocPageContent
155
- currentDocRoute={currentDocRoute}
156
- versionMetadata={versionMetadata}>
157
- {renderRoutes(docRoutes, {versionMetadata})}
158
- </DocPageContent>
165
+ <>
166
+ <Head>
167
+ {/* TODO we should add a core addRoute({htmlClassName}) generic plugin option */}
168
+ <html className={versionMetadata.className} />
169
+ </Head>
170
+ <DocsVersionProvider version={versionMetadata}>
171
+ <DocsSidebarProvider sidebar={sidebar}>
172
+ <DocPageContent
173
+ currentDocRoute={currentDocRoute}
174
+ versionMetadata={versionMetadata}
175
+ sidebarName={sidebarName}>
176
+ {renderRoutes(docRoutes, {versionMetadata})}
177
+ </DocPageContent>
178
+ </DocsSidebarProvider>
179
+ </DocsVersionProvider>
180
+ </>
159
181
  );
160
182
  }
161
183
 
@@ -8,10 +8,10 @@
8
8
  import React from 'react';
9
9
  import Link from '@docusaurus/Link';
10
10
  import Translate, {translate} from '@docusaurus/Translate';
11
- import type {Props} from '@theme/DocPaginator';
11
+ import type {PropNavigation} from '@docusaurus/plugin-content-docs';
12
12
 
13
- function DocPaginator(props: Props): JSX.Element {
14
- const {metadata} = props;
13
+ function DocPaginator(props: PropNavigation): JSX.Element {
14
+ const {previous, next} = props;
15
15
 
16
16
  return (
17
17
  <nav
@@ -22,10 +22,8 @@ function DocPaginator(props: Props): JSX.Element {
22
22
  description: 'The ARIA label for the docs pagination',
23
23
  })}>
24
24
  <div className="pagination-nav__item">
25
- {metadata.previous && (
26
- <Link
27
- className="pagination-nav__link"
28
- to={metadata.previous.permalink}>
25
+ {previous && (
26
+ <Link className="pagination-nav__link" to={previous.permalink}>
29
27
  <div className="pagination-nav__sublabel">
30
28
  <Translate
31
29
  id="theme.docs.paginator.previous"
@@ -34,14 +32,14 @@ function DocPaginator(props: Props): JSX.Element {
34
32
  </Translate>
35
33
  </div>
36
34
  <div className="pagination-nav__label">
37
- &laquo; {metadata.previous.title}
35
+ &laquo; {previous.title}
38
36
  </div>
39
37
  </Link>
40
38
  )}
41
39
  </div>
42
40
  <div className="pagination-nav__item pagination-nav__item--next">
43
- {metadata.next && (
44
- <Link className="pagination-nav__link" to={metadata.next.permalink}>
41
+ {next && (
42
+ <Link className="pagination-nav__link" to={next.permalink}>
45
43
  <div className="pagination-nav__sublabel">
46
44
  <Translate
47
45
  id="theme.docs.paginator.next"
@@ -49,9 +47,7 @@ function DocPaginator(props: Props): JSX.Element {
49
47
  Next
50
48
  </Translate>
51
49
  </div>
52
- <div className="pagination-nav__label">
53
- {metadata.next.title} &raquo;
54
- </div>
50
+ <div className="pagination-nav__label">{next.title} &raquo;</div>
55
51
  </Link>
56
52
  )}
57
53
  </div>
@@ -12,9 +12,10 @@ import {
12
12
  useAnnouncementBar,
13
13
  MobileSecondaryMenuFiller,
14
14
  MobileSecondaryMenuComponent,
15
+ ThemeClassNames,
16
+ useScrollPosition,
15
17
  } from '@docusaurus/theme-common';
16
18
  import useWindowSize from '@theme/hooks/useWindowSize';
17
- import useScrollPosition from '@theme/hooks/useScrollPosition';
18
19
  import Logo from '@theme/Logo';
19
20
  import IconArrow from '@theme/IconArrow';
20
21
  import {translate} from '@docusaurus/Translate';
@@ -24,17 +25,21 @@ import type {Props} from '@theme/DocSidebar';
24
25
  import styles from './styles.module.css';
25
26
 
26
27
  function useShowAnnouncementBar() {
27
- const {isClosed} = useAnnouncementBar();
28
- const [showAnnouncementBar, setShowAnnouncementBar] = useState(!isClosed);
29
- useScrollPosition(({scrollY}) => {
30
- if (!isClosed) {
31
- setShowAnnouncementBar(scrollY === 0);
32
- }
33
- });
34
- return showAnnouncementBar;
28
+ const {isActive} = useAnnouncementBar();
29
+ const [showAnnouncementBar, setShowAnnouncementBar] = useState(isActive);
30
+
31
+ useScrollPosition(
32
+ ({scrollY}) => {
33
+ if (isActive) {
34
+ setShowAnnouncementBar(scrollY === 0);
35
+ }
36
+ },
37
+ [isActive],
38
+ );
39
+ return isActive && showAnnouncementBar;
35
40
  }
36
41
 
37
- function HideableSidebarButton({onClick}) {
42
+ function HideableSidebarButton({onClick}: {onClick: React.MouseEventHandler}) {
38
43
  return (
39
44
  <button
40
45
  type="button"
@@ -58,19 +63,12 @@ function HideableSidebarButton({onClick}) {
58
63
  );
59
64
  }
60
65
 
61
- function DocSidebarDesktop({
62
- path,
63
- sidebar,
64
- sidebarCollapsible,
65
- onCollapse,
66
- isHidden,
67
- }: Props) {
66
+ function DocSidebarDesktop({path, sidebar, onCollapse, isHidden}: Props) {
68
67
  const showAnnouncementBar = useShowAnnouncementBar();
69
68
  const {
70
69
  navbar: {hideOnScroll},
71
70
  hideableSidebar,
72
71
  } = useThemeConfig();
73
- const {isClosed: isAnnouncementBarClosed} = useAnnouncementBar();
74
72
 
75
73
  return (
76
74
  <div
@@ -81,15 +79,10 @@ function DocSidebarDesktop({
81
79
  {hideOnScroll && <Logo tabIndex={-1} className={styles.sidebarLogo} />}
82
80
  <nav
83
81
  className={clsx('menu thin-scrollbar', styles.menu, {
84
- [styles.menuWithAnnouncementBar]:
85
- !isAnnouncementBarClosed && showAnnouncementBar,
82
+ [styles.menuWithAnnouncementBar]: showAnnouncementBar,
86
83
  })}>
87
- <ul className="menu__list">
88
- <DocSidebarItems
89
- items={sidebar}
90
- collapsible={sidebarCollapsible}
91
- activePath={path}
92
- />
84
+ <ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
85
+ <DocSidebarItems items={sidebar} activePath={path} level={1} />
93
86
  </ul>
94
87
  </nav>
95
88
  {hideableSidebar && <HideableSidebarButton onClick={onCollapse} />}
@@ -97,23 +90,29 @@ function DocSidebarDesktop({
97
90
  );
98
91
  }
99
92
 
93
+ // eslint-disable-next-line react/function-component-definition
100
94
  const DocSidebarMobileSecondaryMenu: MobileSecondaryMenuComponent<Props> = ({
101
95
  toggleSidebar,
102
96
  sidebar,
103
- sidebarCollapsible,
104
97
  path,
105
- }) => {
106
- return (
107
- <ul className="menu__list">
108
- <DocSidebarItems
109
- items={sidebar}
110
- collapsible={sidebarCollapsible}
111
- activePath={path}
112
- onItemClick={() => toggleSidebar()}
113
- />
114
- </ul>
115
- );
116
- };
98
+ }) => (
99
+ <ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
100
+ <DocSidebarItems
101
+ items={sidebar}
102
+ activePath={path}
103
+ onItemClick={(item) => {
104
+ // Mobile sidebar should only be closed if the category has a link
105
+ if (item.type === 'category' && item.href) {
106
+ toggleSidebar();
107
+ }
108
+ if (item.type === 'link') {
109
+ toggleSidebar();
110
+ }
111
+ }}
112
+ level={1}
113
+ />
114
+ </ul>
115
+ );
117
116
 
118
117
  function DocSidebarMobile(props: Props) {
119
118
  return (