@docusaurus/theme-classic 2.0.0-beta.138b4c997 → 2.0.0-beta.14

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 (349) hide show
  1. package/README.md +1 -1
  2. package/lib/admonitions.css +35 -0
  3. package/lib/deps.d.ts +13 -0
  4. package/lib/index.js +16 -15
  5. package/lib/prism-include-languages.js +9 -5
  6. package/{lib-next/types.d.ts → lib/theme-classic.d.ts} +374 -150
  7. package/lib/translations.js +16 -7
  8. package/lib/types.d.ts +0 -587
  9. package/lib/validateThemeConfig.js +232 -246
  10. package/lib-next/theme/Admonition/index.js +101 -0
  11. package/lib-next/theme/AnnouncementBar/index.js +7 -12
  12. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  13. package/lib-next/theme/BackToTopButton/index.js +131 -0
  14. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  15. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  16. package/lib-next/theme/BlogLayout/index.js +40 -0
  17. package/lib-next/theme/BlogListPage/index.js +17 -25
  18. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  19. package/{lib/theme/MDXPage → lib-next/theme/BlogPostAuthor}/styles.module.css +4 -2
  20. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  21. package/{lib/theme/IconExternalLink → lib-next/theme/BlogPostAuthors}/styles.module.css +3 -4
  22. package/lib-next/theme/BlogPostItem/index.js +79 -86
  23. package/lib-next/theme/BlogPostPage/index.js +70 -35
  24. package/lib-next/theme/BlogSidebar/index.js +11 -13
  25. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  26. package/lib-next/theme/BlogTagsListPage/index.js +14 -55
  27. package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
  28. package/lib-next/theme/CodeBlock/index.js +23 -149
  29. package/lib-next/theme/CodeBlock/styles.module.css +12 -9
  30. package/lib-next/theme/Details/index.js +20 -0
  31. package/lib-next/theme/Details/styles.module.css +13 -0
  32. package/lib-next/theme/DocCard/index.js +80 -0
  33. package/lib-next/theme/DocCard/styles.module.css +43 -0
  34. package/lib-next/theme/DocCardList/index.js +19 -0
  35. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
  36. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  37. package/lib-next/theme/DocItem/index.js +40 -51
  38. package/lib-next/theme/DocItem/styles.module.css +5 -9
  39. package/lib-next/theme/DocItemFooter/index.js +79 -0
  40. package/{lib/theme/DocItem → lib-next/theme/DocItemFooter}/styles.module.css +1 -9
  41. package/lib-next/theme/DocPage/index.js +46 -49
  42. package/lib-next/theme/DocPage/styles.module.css +5 -6
  43. package/lib-next/theme/DocPaginator/index.js +5 -33
  44. package/lib-next/theme/DocPaginatorNavLink/index.js +36 -0
  45. package/lib-next/theme/DocSidebar/index.js +65 -285
  46. package/lib-next/theme/DocSidebar/styles.module.css +0 -18
  47. package/lib-next/theme/DocSidebarItem/index.js +217 -0
  48. package/{lib/theme/ThemedImage → lib-next/theme/DocSidebarItem}/styles.module.css +10 -9
  49. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  50. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  51. package/lib-next/theme/DocVersionBadge/index.js +27 -0
  52. package/lib-next/theme/DocVersionBanner/index.js +28 -14
  53. package/lib-next/theme/EditThisPage/index.js +6 -1
  54. package/lib-next/theme/ErrorPageContent.js +35 -0
  55. package/lib-next/theme/Footer/index.js +100 -40
  56. package/lib-next/theme/Heading/index.js +24 -29
  57. package/lib-next/theme/Heading/styles.css +5 -6
  58. package/lib-next/theme/Heading/styles.module.css +9 -5
  59. package/lib-next/theme/IconArrow/index.js +2 -2
  60. package/lib-next/theme/IconClose/index.js +23 -0
  61. package/lib-next/theme/IconEdit/index.js +2 -2
  62. package/lib-next/theme/IconExternalLink/index.js +2 -2
  63. package/lib-next/theme/IconLanguage/index.js +2 -2
  64. package/lib-next/theme/IconMenu/index.js +2 -2
  65. package/lib-next/theme/LastUpdated/index.js +3 -2
  66. package/lib-next/theme/Layout/index.js +3 -1
  67. package/lib-next/theme/LayoutHead/index.js +18 -23
  68. package/lib-next/theme/LayoutProviders/index.js +9 -3
  69. package/lib-next/theme/Logo/index.js +25 -21
  70. package/lib-next/theme/MDXComponents/index.js +34 -7
  71. package/{lib/theme/hooks → lib-next/theme/MDXComponents}/styles.css +3 -2
  72. package/lib-next/theme/MDXPage/index.js +10 -2
  73. package/lib-next/theme/Navbar/index.js +193 -56
  74. package/lib-next/theme/Navbar/styles.module.css +10 -3
  75. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -147
  76. package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
  77. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  78. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +158 -0
  79. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
  80. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  81. package/lib-next/theme/NavbarItem/index.js +25 -12
  82. package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
  83. package/lib-next/theme/Seo/index.js +11 -7
  84. package/lib-next/theme/SkipToContent/index.js +5 -2
  85. package/lib-next/theme/TOC/index.js +12 -36
  86. package/lib-next/theme/TOC/styles.module.css +1 -1
  87. package/lib-next/theme/TOCCollapsible/index.js +54 -0
  88. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  89. package/lib-next/theme/TOCInline/index.js +10 -28
  90. package/lib-next/theme/TOCItems/index.js +85 -0
  91. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  92. package/lib-next/theme/Tabs/index.js +103 -48
  93. package/lib-next/theme/Tabs/styles.module.css +0 -13
  94. package/lib-next/theme/Tag/index.js +27 -0
  95. package/lib-next/theme/Tag/styles.module.css +70 -0
  96. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  97. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  98. package/lib-next/theme/TagsListInline/index.js +31 -0
  99. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  100. package/lib-next/theme/ThemeProvider/index.js +10 -7
  101. package/lib-next/theme/ThemedImage/index.js +5 -5
  102. package/lib-next/theme/Toggle/index.js +34 -37
  103. package/lib-next/theme/Toggle/styles.module.css +91 -3
  104. package/lib-next/theme/UserPreferencesProvider/index.js +9 -6
  105. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  106. package/lib-next/theme/hooks/useTheme.js +4 -5
  107. package/lib-next/theme/hooks/useWindowSize.js +34 -20
  108. package/lib-next/theme/prism-include-languages.js +2 -1
  109. package/package.json +27 -25
  110. package/src/admonitions.css +35 -0
  111. package/src/deps.d.ts +13 -0
  112. package/src/index.ts +23 -20
  113. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  114. package/src/theme/Admonition/index.tsx +106 -0
  115. package/src/theme/AnnouncementBar/index.tsx +8 -12
  116. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  117. package/src/theme/BackToTopButton/index.tsx +142 -0
  118. package/src/theme/BackToTopButton/styles.module.css +42 -0
  119. package/src/theme/BlogArchivePage/index.tsx +91 -0
  120. package/src/theme/BlogLayout/index.tsx +44 -0
  121. package/src/theme/BlogListPage/index.tsx +18 -25
  122. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  123. package/{lib/theme/IconEdit → src/theme/BlogPostAuthor}/styles.module.css +4 -3
  124. package/src/theme/BlogPostAuthors/index.tsx +39 -0
  125. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  126. package/src/theme/BlogPostItem/index.tsx +70 -80
  127. package/src/theme/BlogPostPage/index.tsx +72 -35
  128. package/src/theme/BlogSidebar/index.tsx +11 -13
  129. package/src/theme/BlogSidebar/styles.module.css +2 -2
  130. package/src/theme/BlogTagsListPage/index.tsx +14 -57
  131. package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
  132. package/src/theme/CodeBlock/index.tsx +27 -151
  133. package/src/theme/CodeBlock/styles.module.css +12 -9
  134. package/src/theme/Details/index.tsx +24 -0
  135. package/src/theme/Details/styles.module.css +13 -0
  136. package/src/theme/DocCard/index.tsx +100 -0
  137. package/src/theme/DocCard/styles.module.css +43 -0
  138. package/src/theme/DocCardList/index.tsx +27 -0
  139. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
  140. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  141. package/src/theme/DocItem/index.tsx +43 -51
  142. package/src/theme/DocItem/styles.module.css +5 -9
  143. package/src/theme/DocItemFooter/index.tsx +91 -0
  144. package/{lib/theme/BlogPostItem → src/theme/DocItemFooter}/styles.module.css +8 -8
  145. package/src/theme/DocPage/index.tsx +44 -42
  146. package/src/theme/DocPage/styles.module.css +5 -6
  147. package/src/theme/DocPaginator/index.tsx +5 -33
  148. package/src/theme/DocPaginatorNavLink/index.tsx +38 -0
  149. package/src/theme/DocSidebar/index.tsx +76 -297
  150. package/src/theme/DocSidebar/styles.module.css +0 -18
  151. package/src/theme/DocSidebarItem/index.tsx +242 -0
  152. package/{lib/theme/Footer → src/theme/DocSidebarItem}/styles.module.css +10 -6
  153. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  154. package/src/theme/DocTagsListPage/index.tsx +41 -0
  155. package/src/theme/DocVersionBadge/index.tsx +30 -0
  156. package/src/theme/DocVersionBanner/index.tsx +48 -21
  157. package/src/theme/EditThisPage/index.tsx +6 -1
  158. package/src/theme/ErrorPageContent.tsx +41 -0
  159. package/src/theme/Footer/index.tsx +113 -43
  160. package/src/theme/Heading/index.tsx +24 -31
  161. package/src/theme/Heading/styles.css +5 -6
  162. package/src/theme/Heading/styles.module.css +9 -5
  163. package/src/theme/IconArrow/index.tsx +2 -2
  164. package/src/theme/IconClose/index.tsx +26 -0
  165. package/src/theme/IconEdit/index.tsx +2 -2
  166. package/src/theme/IconExternalLink/index.tsx +2 -5
  167. package/src/theme/IconLanguage/index.tsx +2 -6
  168. package/src/theme/IconMenu/index.tsx +3 -3
  169. package/src/theme/LastUpdated/index.tsx +3 -2
  170. package/src/theme/Layout/index.tsx +3 -1
  171. package/src/theme/LayoutHead/index.tsx +18 -17
  172. package/src/theme/LayoutProviders/index.tsx +9 -3
  173. package/src/theme/Logo/index.tsx +21 -17
  174. package/src/theme/MDXComponents/index.tsx +39 -5
  175. package/src/theme/MDXComponents/styles.css +11 -0
  176. package/src/theme/MDXPage/index.tsx +10 -2
  177. package/src/theme/Navbar/index.tsx +203 -61
  178. package/src/theme/Navbar/styles.module.css +10 -3
  179. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -154
  180. package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
  181. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  182. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  183. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +180 -0
  184. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
  185. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  186. package/src/theme/NavbarItem/index.tsx +41 -16
  187. package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
  188. package/src/theme/Seo/index.tsx +7 -4
  189. package/src/theme/SkipToContent/index.tsx +5 -2
  190. package/src/theme/TOC/index.tsx +12 -41
  191. package/src/theme/TOC/styles.module.css +1 -1
  192. package/src/theme/TOCCollapsible/index.tsx +58 -0
  193. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  194. package/src/theme/TOCInline/index.tsx +13 -32
  195. package/src/theme/TOCItems/index.tsx +96 -0
  196. package/src/theme/Tabs/index.tsx +110 -54
  197. package/src/theme/Tabs/styles.module.css +0 -13
  198. package/src/theme/Tag/index.tsx +31 -0
  199. package/src/theme/Tag/styles.module.css +70 -0
  200. package/src/theme/TagsListByLetter/index.tsx +45 -0
  201. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  202. package/src/theme/TagsListInline/index.tsx +35 -0
  203. package/src/theme/TagsListInline/styles.module.css +15 -0
  204. package/src/theme/ThemeProvider/index.tsx +6 -2
  205. package/src/theme/ThemedImage/index.tsx +5 -5
  206. package/src/theme/Toggle/index.tsx +36 -43
  207. package/src/theme/Toggle/styles.module.css +91 -3
  208. package/src/theme/UserPreferencesProvider/index.tsx +9 -6
  209. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  210. package/src/theme/hooks/useTabGroupChoice.ts +2 -2
  211. package/src/theme/hooks/useTheme.ts +4 -5
  212. package/src/theme/hooks/useWindowSize.ts +38 -20
  213. package/src/theme/prism-include-languages.ts +3 -2
  214. package/src/theme-classic.d.ts +822 -0
  215. package/src/translations.ts +41 -23
  216. package/src/types.d.ts +0 -587
  217. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +160 -98
  218. package/babel.config.js +0 -35
  219. package/codeTranslations/README.md +0 -20
  220. package/codeTranslations/ar.json +0 -57
  221. package/codeTranslations/base.json +0 -112
  222. package/codeTranslations/bn.json +0 -56
  223. package/codeTranslations/da.json +0 -57
  224. package/codeTranslations/de.json +0 -57
  225. package/codeTranslations/es.json +0 -57
  226. package/codeTranslations/fa.json +0 -57
  227. package/codeTranslations/fil.json +0 -57
  228. package/codeTranslations/fr.json +0 -57
  229. package/codeTranslations/he.json +0 -57
  230. package/codeTranslations/hi.json +0 -57
  231. package/codeTranslations/ja.json +0 -57
  232. package/codeTranslations/ko.json +0 -57
  233. package/codeTranslations/pl.json +0 -57
  234. package/codeTranslations/pt-BR.json +0 -57
  235. package/codeTranslations/pt-PT.json +0 -57
  236. package/codeTranslations/ru.json +0 -57
  237. package/codeTranslations/tr.json +0 -57
  238. package/codeTranslations/vi.json +0 -57
  239. package/codeTranslations/zh-Hans.json +0 -57
  240. package/codeTranslations/zh-Hant.json +0 -57
  241. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  242. package/lib/__tests__/translations.test.js +0 -112
  243. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  244. package/lib/theme/AnnouncementBar/index.js +0 -72
  245. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  246. package/lib/theme/BlogListPage/index.js +0 -71
  247. package/lib/theme/BlogListPaginator/index.js +0 -63
  248. package/lib/theme/BlogPostItem/index.js +0 -161
  249. package/lib/theme/BlogPostPage/index.js +0 -69
  250. package/lib/theme/BlogPostPaginator/index.js +0 -64
  251. package/lib/theme/BlogSidebar/index.js +0 -51
  252. package/lib/theme/BlogSidebar/styles.module.css +0 -44
  253. package/lib/theme/BlogTagsListPage/index.js +0 -76
  254. package/lib/theme/BlogTagsPostsPage/index.js +0 -100
  255. package/lib/theme/CodeBlock/index.js +0 -253
  256. package/lib/theme/CodeBlock/styles.module.css +0 -68
  257. package/lib/theme/DocItem/index.js +0 -129
  258. package/lib/theme/DocPage/index.js +0 -173
  259. package/lib/theme/DocPage/styles.module.css +0 -86
  260. package/lib/theme/DocPaginator/index.js +0 -63
  261. package/lib/theme/DocSidebar/index.js +0 -306
  262. package/lib/theme/DocSidebar/styles.module.css +0 -124
  263. package/lib/theme/DocVersionBanner/index.js +0 -128
  264. package/lib/theme/EditThisPage/index.js +0 -31
  265. package/lib/theme/Footer/index.js +0 -108
  266. package/lib/theme/Heading/index.js +0 -76
  267. package/lib/theme/Heading/styles.css +0 -23
  268. package/lib/theme/Heading/styles.module.css +0 -15
  269. package/lib/theme/IconArrow/index.js +0 -28
  270. package/lib/theme/IconEdit/index.js +0 -34
  271. package/lib/theme/IconExternalLink/index.js +0 -30
  272. package/lib/theme/IconLanguage/index.js +0 -29
  273. package/lib/theme/IconMenu/index.js +0 -30
  274. package/lib/theme/LastUpdated/index.js +0 -61
  275. package/lib/theme/Layout/index.js +0 -64
  276. package/lib/theme/Layout/styles.css +0 -27
  277. package/lib/theme/LayoutHead/index.js +0 -144
  278. package/lib/theme/LayoutProviders/index.js +0 -36
  279. package/lib/theme/Logo/index.js +0 -60
  280. package/lib/theme/MDXComponents/index.js +0 -65
  281. package/lib/theme/MDXPage/index.js +0 -66
  282. package/lib/theme/Navbar/index.js +0 -147
  283. package/lib/theme/Navbar/styles.module.css +0 -20
  284. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -209
  285. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -63
  286. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -76
  287. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  288. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  289. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  290. package/lib/theme/NavbarItem/index.js +0 -54
  291. package/lib/theme/NotFound.js +0 -57
  292. package/lib/theme/SearchBar.js +0 -15
  293. package/lib/theme/SearchMetadatas/index.js +0 -33
  294. package/lib/theme/Seo/index.js +0 -49
  295. package/lib/theme/SkipToContent/index.js +0 -63
  296. package/lib/theme/SkipToContent/styles.module.css +0 -14
  297. package/lib/theme/TOC/index.js +0 -59
  298. package/lib/theme/TOC/styles.module.css +0 -23
  299. package/lib/theme/TOCInline/index.js +0 -53
  300. package/lib/theme/TOCInline/styles.module.css +0 -12
  301. package/lib/theme/TabItem/index.js +0 -32
  302. package/lib/theme/Tabs/index.js +0 -150
  303. package/lib/theme/Tabs/styles.module.css +0 -23
  304. package/lib/theme/ThemeContext.js +0 -21
  305. package/lib/theme/ThemeProvider/index.js +0 -38
  306. package/lib/theme/ThemedImage/index.js +0 -49
  307. package/lib/theme/Toggle/index.js +0 -94
  308. package/lib/theme/Toggle/styles.css +0 -103
  309. package/lib/theme/Toggle/styles.module.css +0 -17
  310. package/lib/theme/UserPreferencesContext.js +0 -18
  311. package/lib/theme/UserPreferencesProvider/index.js +0 -36
  312. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  313. package/lib/theme/hooks/useDocs.js +0 -18
  314. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  315. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  316. package/lib/theme/hooks/useLocationHash.js +0 -28
  317. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  318. package/lib/theme/hooks/usePrismTheme.js +0 -36
  319. package/lib/theme/hooks/useScrollPosition.js +0 -49
  320. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  321. package/lib/theme/hooks/useTabGroupChoice.js +0 -51
  322. package/lib/theme/hooks/useTheme.js +0 -99
  323. package/lib/theme/hooks/useThemeContext.js +0 -31
  324. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  325. package/lib/theme/hooks/useWindowSize.js +0 -55
  326. package/lib/theme/prism-include-languages.js +0 -39
  327. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  328. package/lib-next/__tests__/translations.test.js +0 -128
  329. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  330. package/lib-next/index.js +0 -221
  331. package/lib-next/theme/Toggle/styles.css +0 -103
  332. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  333. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  334. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  335. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  336. package/lib-next/translations.js +0 -145
  337. package/lib-next/validateThemeConfig.js +0 -317
  338. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  339. package/src/__tests__/translations.test.ts +0 -116
  340. package/src/__tests__/validateThemeConfig.test.js +0 -333
  341. package/src/prism-include-languages.js +0 -11
  342. package/src/theme/Toggle/styles.css +0 -103
  343. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  344. package/src/theme/hooks/useLocationHash.ts +0 -25
  345. package/src/theme/hooks/useScrollPosition.ts +0 -45
  346. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  347. package/tsconfig.json +0 -12
  348. package/update-code-translations.js +0 -240
  349. package/update-code-translations.test.js +0 -33
@@ -6,44 +6,32 @@
6
6
  */
7
7
 
8
8
  import React from 'react';
9
+ import clsx from 'clsx';
10
+ import useWindowSize from '@theme/hooks/useWindowSize';
9
11
  import DocPaginator from '@theme/DocPaginator';
10
12
  import DocVersionBanner from '@theme/DocVersionBanner';
13
+ import DocVersionBadge from '@theme/DocVersionBadge';
11
14
  import Seo from '@theme/Seo';
12
- import LastUpdated from '@theme/LastUpdated';
13
15
  import type {Props} from '@theme/DocItem';
16
+ import DocItemFooter from '@theme/DocItemFooter';
14
17
  import TOC from '@theme/TOC';
15
- import EditThisPage from '@theme/EditThisPage';
18
+ import TOCCollapsible from '@theme/TOCCollapsible';
16
19
  import {MainHeading} from '@theme/Heading';
17
-
18
- import clsx from 'clsx';
19
20
  import styles from './styles.module.css';
20
- import {useActivePlugin, useVersions} from '@theme/hooks/useDocs';
21
+ import {ThemeClassNames} from '@docusaurus/theme-common';
21
22
 
22
- function DocItem(props: Props): JSX.Element {
23
- const {content: DocContent, versionMetadata} = props;
23
+ export default function DocItem(props: Props): JSX.Element {
24
+ const {content: DocContent} = props;
24
25
  const {metadata, frontMatter} = DocContent;
25
26
  const {
26
27
  image,
27
28
  keywords,
28
29
  hide_title: hideTitle,
29
30
  hide_table_of_contents: hideTableOfContents,
31
+ toc_min_heading_level: tocMinHeadingLevel,
32
+ toc_max_heading_level: tocMaxHeadingLevel,
30
33
  } = frontMatter;
31
- const {
32
- description,
33
- title,
34
- editUrl,
35
- lastUpdatedAt,
36
- formattedLastUpdatedAt,
37
- lastUpdatedBy,
38
- } = metadata;
39
-
40
- const {pluginId} = useActivePlugin({failfast: true});
41
- const versions = useVersions(pluginId);
42
-
43
- // If site is not versioned or only one version is included
44
- // we don't show the version badge
45
- // See https://github.com/facebook/docusaurus/issues/3362
46
- const showVersionBadge = versions.length > 1;
34
+ const {description, title} = metadata;
47
35
 
48
36
  // We only add a title if:
49
37
  // - user asks to hide it with frontmatter
@@ -51,6 +39,14 @@ function DocItem(props: Props): JSX.Element {
51
39
  const shouldAddTitle =
52
40
  !hideTitle && typeof DocContent.contentTitle === 'undefined';
53
41
 
42
+ const windowSize = useWindowSize();
43
+
44
+ const canRenderTOC =
45
+ !hideTableOfContents && DocContent.toc && DocContent.toc.length > 0;
46
+
47
+ const renderTocDesktop =
48
+ canRenderTOC && (windowSize === 'desktop' || windowSize === 'ssr');
49
+
54
50
  return (
55
51
  <>
56
52
  <Seo {...{title, description, keywords, image}} />
@@ -60,16 +56,25 @@ function DocItem(props: Props): JSX.Element {
60
56
  className={clsx('col', {
61
57
  [styles.docItemCol]: !hideTableOfContents,
62
58
  })}>
63
- <DocVersionBanner versionMetadata={versionMetadata} />
59
+ <DocVersionBanner />
64
60
  <div className={styles.docItemContainer}>
65
61
  <article>
66
- {showVersionBadge && (
67
- <span className="badge badge--secondary">
68
- Version: {versionMetadata.label}
69
- </span>
62
+ <DocVersionBadge />
63
+
64
+ {canRenderTOC && (
65
+ <TOCCollapsible
66
+ toc={DocContent.toc}
67
+ minHeadingLevel={tocMinHeadingLevel}
68
+ maxHeadingLevel={tocMaxHeadingLevel}
69
+ className={clsx(
70
+ ThemeClassNames.docs.docTocMobile,
71
+ styles.tocMobile,
72
+ )}
73
+ />
70
74
  )}
71
75
 
72
- <div className="markdown">
76
+ <div
77
+ className={clsx(ThemeClassNames.docs.docMarkdown, 'markdown')}>
73
78
  {/*
74
79
  Title can be declared inside md content or declared through frontmatter and added manually
75
80
  To make both cases consistent, the added title is added under the same div.markdown block
@@ -80,36 +85,23 @@ function DocItem(props: Props): JSX.Element {
80
85
  <DocContent />
81
86
  </div>
82
87
 
83
- {(editUrl || lastUpdatedAt || lastUpdatedBy) && (
84
- <footer className="row docusaurus-mt-lg">
85
- <div className="col">
86
- {editUrl && <EditThisPage editUrl={editUrl} />}
87
- </div>
88
-
89
- <div className={clsx('col', styles.lastUpdated)}>
90
- {(lastUpdatedAt || lastUpdatedBy) && (
91
- <LastUpdated
92
- lastUpdatedAt={lastUpdatedAt}
93
- formattedLastUpdatedAt={formattedLastUpdatedAt}
94
- lastUpdatedBy={lastUpdatedBy}
95
- />
96
- )}
97
- </div>
98
- </footer>
99
- )}
88
+ <DocItemFooter {...props} />
100
89
  </article>
101
90
 
102
- <DocPaginator metadata={metadata} />
91
+ <DocPaginator previous={metadata.previous} next={metadata.next} />
103
92
  </div>
104
93
  </div>
105
- {!hideTableOfContents && DocContent.toc && (
94
+ {renderTocDesktop && (
106
95
  <div className="col col--3">
107
- <TOC toc={DocContent.toc} />
96
+ <TOC
97
+ toc={DocContent.toc}
98
+ minHeadingLevel={tocMinHeadingLevel}
99
+ maxHeadingLevel={tocMaxHeadingLevel}
100
+ className={ThemeClassNames.docs.docTocDesktop}
101
+ />
108
102
  </div>
109
103
  )}
110
104
  </div>
111
105
  </>
112
106
  );
113
107
  }
114
-
115
- 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,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
+ }
@@ -5,14 +5,14 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- .blogPostTitle {
9
- font-size: 3rem;
8
+ .lastUpdated {
9
+ margin-top: 0.2rem;
10
+ font-style: italic;
11
+ font-size: smaller;
10
12
  }
11
13
 
12
- .blogPostData {
13
- font-size: 0.9rem;
14
- }
15
-
16
- .blogPostDetailsFull {
17
- flex-direction: column;
14
+ @media (min-width: 997px) {
15
+ .lastUpdated {
16
+ text-align: right;
17
+ }
18
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,50 +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
- function getSidebar({versionMetadata, currentDocRoute}) {
35
- function addTrailingSlash(str: string): string {
36
- return str.endsWith('/') ? str : `${str}/`;
37
- }
38
- function removeTrailingSlash(str: string): string {
39
- return str.endsWith('/') ? str.slice(0, -1) : str;
40
- }
41
-
42
- const {permalinkToSidebar, docsSidebars} = versionMetadata;
43
-
44
- // With/without trailingSlash, we should always be able to get the appropriate sidebar
45
- // note: docs plugin permalinks currently never have trailing slashes
46
- // trailingSlash is handled globally at the framework level, not plugin level
47
- const sidebarName =
48
- permalinkToSidebar[currentDocRoute.path] ||
49
- permalinkToSidebar[addTrailingSlash(currentDocRoute.path)] ||
50
- permalinkToSidebar[removeTrailingSlash(currentDocRoute.path)];
51
-
52
- const sidebar = docsSidebars[sidebarName];
53
- return {sidebar, sidebarName};
54
- }
55
-
56
42
  function DocPageContent({
57
43
  currentDocRoute,
58
44
  versionMetadata,
59
45
  children,
46
+ sidebarName,
60
47
  }: DocPageContentProps): JSX.Element {
61
- const {siteConfig, isClient} = useDocusaurusContext();
48
+ const sidebar = useDocsSidebar();
62
49
  const {pluginId, version} = versionMetadata;
63
- const {sidebarName, sidebar} = getSidebar({versionMetadata, currentDocRoute});
64
-
65
50
  const [hiddenSidebarContainer, setHiddenSidebarContainer] = useState(false);
66
51
  const [hiddenSidebar, setHiddenSidebar] = useState(false);
67
52
  const toggleSidebar = useCallback(() => {
@@ -69,19 +54,20 @@ function DocPageContent({
69
54
  setHiddenSidebar(false);
70
55
  }
71
56
 
72
- setHiddenSidebarContainer(!hiddenSidebarContainer);
57
+ setHiddenSidebarContainer((value) => !value);
73
58
  }, [hiddenSidebar]);
74
59
 
75
60
  return (
76
61
  <Layout
77
- key={isClient}
78
- wrapperClassName={ThemeClassNames.wrapper.docPages}
79
- pageClassName={ThemeClassNames.page.docPage}
80
- searchMetadatas={{
62
+ wrapperClassName={ThemeClassNames.wrapper.docsPages}
63
+ pageClassName={ThemeClassNames.page.docsDocPage}
64
+ searchMetadata={{
81
65
  version,
82
66
  tag: docVersionSearchTag(pluginId, version),
83
67
  }}>
84
68
  <div className={styles.docPage}>
69
+ <BackToTopButton />
70
+
85
71
  {sidebar && (
86
72
  <aside
87
73
  className={clsx(styles.docSidebarContainer, {
@@ -106,9 +92,6 @@ function DocPageContent({
106
92
  }
107
93
  sidebar={sidebar}
108
94
  path={currentDocRoute.path}
109
- sidebarCollapsible={
110
- siteConfig.themeConfig?.sidebarCollapsible ?? true
111
- }
112
95
  onCollapse={toggleSidebar}
113
96
  isHidden={hiddenSidebar}
114
97
  />
@@ -168,14 +151,33 @@ function DocPage(props: Props): JSX.Element {
168
151
  matchPath(location.pathname, docRoute),
169
152
  );
170
153
  if (!currentDocRoute) {
171
- return <NotFound {...props} />;
154
+ return <NotFound />;
172
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
+
173
164
  return (
174
- <DocPageContent
175
- currentDocRoute={currentDocRoute}
176
- versionMetadata={versionMetadata}>
177
- {renderRoutes(docRoutes, {versionMetadata})}
178
- </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
+ </>
179
181
  );
180
182
  }
181
183
 
@@ -20,6 +20,10 @@
20
20
  width: 100%;
21
21
  }
22
22
 
23
+ .docSidebarContainer {
24
+ display: none;
25
+ }
26
+
23
27
  @media (min-width: 997px) {
24
28
  .docMainContainer {
25
29
  flex-grow: 1;
@@ -31,6 +35,7 @@
31
35
  }
32
36
 
33
37
  .docSidebarContainer {
38
+ display: block;
34
39
  width: var(--doc-sidebar-width);
35
40
  margin-top: calc(-1 * var(--ifm-navbar-height));
36
41
  border-right: 1px solid var(--ifm-toc-border-color);
@@ -78,9 +83,3 @@
78
83
  ) !important;
79
84
  }
80
85
  }
81
-
82
- @media (max-width: 996px) {
83
- .docSidebarContainer {
84
- display: none;
85
- }
86
- }
@@ -6,12 +6,12 @@
6
6
  */
7
7
 
8
8
  import React from 'react';
9
- import Link from '@docusaurus/Link';
10
- import Translate, {translate} from '@docusaurus/Translate';
9
+ import {translate} from '@docusaurus/Translate';
10
+ import DocPaginatorNavLink from '@theme/DocPaginatorNavLink';
11
11
  import type {Props} from '@theme/DocPaginator';
12
12
 
13
13
  function DocPaginator(props: Props): JSX.Element {
14
- const {metadata} = props;
14
+ const {previous, next} = props;
15
15
 
16
16
  return (
17
17
  <nav
@@ -22,38 +22,10 @@ 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}>
29
- <div className="pagination-nav__sublabel">
30
- <Translate
31
- id="theme.docs.paginator.previous"
32
- description="The label used to navigate to the previous doc">
33
- Previous
34
- </Translate>
35
- </div>
36
- <div className="pagination-nav__label">
37
- &laquo; {metadata.previous.title}
38
- </div>
39
- </Link>
40
- )}
25
+ {previous && <DocPaginatorNavLink navLink={previous} />}
41
26
  </div>
42
27
  <div className="pagination-nav__item pagination-nav__item--next">
43
- {metadata.next && (
44
- <Link className="pagination-nav__link" to={metadata.next.permalink}>
45
- <div className="pagination-nav__sublabel">
46
- <Translate
47
- id="theme.docs.paginator.next"
48
- description="The label used to navigate to the next doc">
49
- Next
50
- </Translate>
51
- </div>
52
- <div className="pagination-nav__label">
53
- {metadata.next.title} &raquo;
54
- </div>
55
- </Link>
56
- )}
28
+ {next && <DocPaginatorNavLink navLink={next} next />}
57
29
  </div>
58
30
  </nav>
59
31
  );
@@ -0,0 +1,38 @@
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
+ import Link from '@docusaurus/Link';
11
+ import Translate from '@docusaurus/Translate';
12
+ import type {Props} from '@theme/DocPaginatorNavLink';
13
+
14
+ function DocPaginatorNavLink(props: Props): JSX.Element {
15
+ const {navLink, next} = props;
16
+ return (
17
+ <Link className={clsx('pagination-nav__link')} to={navLink.permalink}>
18
+ <div className="pagination-nav__sublabel">
19
+ {next ? (
20
+ <Translate
21
+ id="theme.docs.paginator.next"
22
+ description="The label used to navigate to the next doc">
23
+ Next
24
+ </Translate>
25
+ ) : (
26
+ <Translate
27
+ id="theme.docs.paginator.previous"
28
+ description="The label used to navigate to the previous doc">
29
+ Previous
30
+ </Translate>
31
+ )}
32
+ </div>
33
+ <div className="pagination-nav__label">{navLink.title}</div>
34
+ </Link>
35
+ );
36
+ }
37
+
38
+ export default DocPaginatorNavLink;