@docusaurus/theme-classic 2.0.0-beta.15a2b59f9 → 2.0.0-beta.17

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 (407) hide show
  1. package/README.md +2 -2
  2. package/lib/admonitions.css +35 -0
  3. package/{lib-next/theme/Toggle/styles.module.css → lib/deps.d.ts} +5 -9
  4. package/lib/getSwizzleConfig.js +125 -0
  5. package/lib/index.js +36 -41
  6. package/lib/prism-include-languages.js +9 -5
  7. package/lib/theme-classic.d.ts +771 -0
  8. package/lib/translations.js +40 -34
  9. package/lib/types.d.ts +0 -587
  10. package/lib/validateThemeConfig.js +242 -250
  11. package/lib-next/theme/Admonition/index.js +101 -0
  12. package/lib-next/theme/AnnouncementBar/index.js +8 -16
  13. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  14. package/lib-next/theme/BackToTopButton/index.js +131 -0
  15. package/lib-next/theme/BackToTopButton/styles.module.css +44 -0
  16. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  17. package/lib-next/theme/BlogLayout/index.js +37 -0
  18. package/lib-next/theme/BlogListPage/index.js +18 -29
  19. package/lib-next/theme/BlogListPaginator/index.js +13 -16
  20. package/lib-next/theme/BlogPostAuthor/index.js +52 -0
  21. package/{lib/theme/IconEdit → lib-next/theme/BlogPostAuthor}/styles.module.css +4 -3
  22. package/lib-next/theme/BlogPostAuthors/index.js +44 -0
  23. package/{src/theme/Toggle → lib-next/theme/BlogPostAuthors}/styles.module.css +11 -7
  24. package/lib-next/theme/BlogPostItem/index.js +94 -96
  25. package/lib-next/theme/BlogPostPage/index.js +75 -39
  26. package/lib-next/theme/BlogPostPaginator/index.js +12 -19
  27. package/lib-next/theme/BlogSidebar/index.js +11 -13
  28. package/lib-next/theme/BlogSidebar/styles.module.css +4 -2
  29. package/lib-next/theme/BlogTagsListPage/index.js +15 -59
  30. package/lib-next/theme/BlogTagsPostsPage/index.js +33 -41
  31. package/lib-next/theme/CodeBlock/index.js +64 -154
  32. package/lib-next/theme/CodeBlock/styles.module.css +17 -9
  33. package/lib-next/theme/ColorModeToggle/index.js +83 -0
  34. package/lib-next/theme/ColorModeToggle/styles.module.css +51 -0
  35. package/lib-next/theme/Details/index.js +21 -0
  36. package/lib-next/theme/Details/styles.module.css +13 -0
  37. package/lib-next/theme/DocBreadcrumbs/index.js +76 -0
  38. package/lib-next/theme/DocBreadcrumbs/styles.module.css +26 -0
  39. package/lib-next/theme/DocCard/index.js +91 -0
  40. package/lib-next/theme/DocCard/styles.module.css +43 -0
  41. package/lib-next/theme/DocCardList/index.js +19 -0
  42. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +54 -0
  43. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  44. package/lib-next/theme/DocItem/index.js +53 -58
  45. package/lib-next/theme/DocItem/styles.module.css +6 -10
  46. package/lib-next/theme/DocItemFooter/index.js +79 -0
  47. package/{lib/theme/DocItem → lib-next/theme/DocItemFooter}/styles.module.css +1 -9
  48. package/lib-next/theme/DocPage/index.js +54 -55
  49. package/lib-next/theme/DocPage/styles.module.css +9 -3
  50. package/lib-next/theme/DocPaginator/index.js +15 -24
  51. package/lib-next/theme/DocSidebar/index.js +65 -286
  52. package/lib-next/theme/DocSidebar/styles.module.css +5 -22
  53. package/lib-next/theme/DocSidebarItem/index.js +264 -0
  54. package/{lib/theme/BlogPostItem → lib-next/theme/DocSidebarItem}/styles.module.css +5 -10
  55. package/lib-next/theme/DocSidebarItems/index.js +28 -0
  56. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  57. package/lib-next/theme/DocTagsListPage/index.js +35 -0
  58. package/lib-next/theme/DocVersionBadge/index.js +34 -0
  59. package/lib-next/theme/DocVersionBanner/index.js +32 -15
  60. package/lib-next/theme/EditThisPage/index.js +6 -1
  61. package/lib-next/theme/ErrorPageContent.js +35 -0
  62. package/lib-next/theme/Footer/index.js +95 -40
  63. package/lib-next/theme/Footer/styles.module.css +2 -1
  64. package/lib-next/theme/Heading/index.js +39 -48
  65. package/lib-next/theme/Heading/styles.module.css +25 -5
  66. package/lib-next/theme/IconArrow/index.js +2 -5
  67. package/lib-next/theme/IconClose/index.js +23 -0
  68. package/lib-next/theme/IconDarkMode/index.js +17 -0
  69. package/lib-next/theme/IconEdit/index.js +2 -5
  70. package/lib-next/theme/IconExternalLink/index.js +2 -5
  71. package/lib-next/theme/IconLanguage/index.js +5 -8
  72. package/lib-next/theme/IconLightMode/index.js +17 -0
  73. package/lib-next/theme/IconMenu/index.js +7 -5
  74. package/lib-next/theme/LastUpdated/index.js +3 -2
  75. package/lib-next/theme/Layout/index.js +5 -7
  76. package/lib-next/theme/LayoutHead/index.js +27 -32
  77. package/lib-next/theme/LayoutProviders/index.js +15 -9
  78. package/lib-next/theme/Logo/index.js +25 -24
  79. package/lib-next/theme/MDXComponents/index.js +59 -30
  80. package/{src/theme/hooks → lib-next/theme/MDXComponents}/styles.css +7 -2
  81. package/lib-next/theme/MDXPage/index.js +10 -12
  82. package/lib-next/theme/Navbar/index.js +199 -64
  83. package/lib-next/theme/Navbar/styles.module.css +10 -3
  84. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +35 -201
  85. package/lib-next/theme/NavbarItem/DocNavbarItem.js +11 -8
  86. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +73 -0
  87. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +34 -20
  88. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +4 -1
  89. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +156 -0
  90. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +12 -13
  91. package/{lib/theme/hooks/styles.css → lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css} +3 -2
  92. package/lib-next/theme/NavbarItem/NavbarNavLink.js +70 -0
  93. package/lib-next/theme/NavbarItem/index.js +26 -14
  94. package/lib-next/theme/{UserPreferencesContext.js → NavbarItem/utils.js} +3 -3
  95. package/lib-next/theme/NotFound.js +1 -4
  96. package/lib-next/theme/PaginatorNavLink/index.js +17 -0
  97. package/lib-next/theme/SearchBar.js +1 -1
  98. package/lib-next/theme/SearchMetadata/index.js +34 -0
  99. package/lib-next/theme/Seo/index.js +11 -7
  100. package/lib-next/theme/SkipToContent/index.js +3 -5
  101. package/lib-next/theme/SkipToContent/styles.module.css +7 -0
  102. package/lib-next/theme/TOC/index.js +12 -39
  103. package/lib-next/theme/TOC/styles.module.css +1 -1
  104. package/lib-next/theme/TOCCollapsible/index.js +54 -0
  105. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  106. package/lib-next/theme/TOCInline/index.js +10 -31
  107. package/lib-next/theme/TOCItems/index.js +85 -0
  108. package/lib-next/theme/TabItem/index.js +1 -4
  109. package/lib-next/theme/Tabs/__tests__/index.test.js +146 -0
  110. package/lib-next/theme/Tabs/index.js +108 -50
  111. package/lib-next/theme/Tabs/styles.module.css +0 -13
  112. package/lib-next/theme/Tag/index.js +24 -0
  113. package/lib-next/theme/Tag/styles.module.css +70 -0
  114. package/lib-next/theme/TagsListByLetter/index.js +40 -0
  115. package/lib-next/theme/{hooks/styles.css → TagsListByLetter/styles.module.css} +3 -2
  116. package/lib-next/theme/TagsListInline/index.js +31 -0
  117. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  118. package/lib-next/theme/ThemedImage/index.js +7 -10
  119. package/lib-next/theme/ThemedImage/styles.module.css +2 -2
  120. package/lib-next/theme/prism-include-languages.js +17 -15
  121. package/package.json +31 -31
  122. package/src/admonitions.css +35 -0
  123. package/src/deps.d.ts +13 -0
  124. package/src/getSwizzleConfig.ts +123 -0
  125. package/src/index.ts +39 -61
  126. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  127. package/src/theme/Admonition/index.tsx +106 -0
  128. package/src/theme/AnnouncementBar/index.tsx +9 -15
  129. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  130. package/src/theme/BackToTopButton/index.tsx +143 -0
  131. package/src/theme/BackToTopButton/styles.module.css +44 -0
  132. package/src/theme/BlogArchivePage/index.tsx +91 -0
  133. package/src/theme/BlogLayout/index.tsx +42 -0
  134. package/src/theme/BlogListPage/index.tsx +19 -28
  135. package/src/theme/BlogListPaginator/index.tsx +13 -15
  136. package/src/theme/BlogPostAuthor/index.tsx +54 -0
  137. package/{lib/theme/MDXPage → src/theme/BlogPostAuthor}/styles.module.css +4 -2
  138. package/src/theme/BlogPostAuthors/index.tsx +49 -0
  139. package/src/theme/BlogPostAuthors/styles.module.css +21 -0
  140. package/src/theme/BlogPostItem/index.tsx +84 -90
  141. package/src/theme/BlogPostPage/index.tsx +77 -38
  142. package/src/theme/BlogPostPaginator/index.tsx +12 -18
  143. package/src/theme/BlogSidebar/index.tsx +11 -13
  144. package/src/theme/BlogSidebar/styles.module.css +4 -2
  145. package/src/theme/BlogTagsListPage/index.tsx +15 -60
  146. package/src/theme/BlogTagsPostsPage/index.tsx +32 -40
  147. package/src/theme/CodeBlock/index.tsx +68 -156
  148. package/src/theme/CodeBlock/styles.module.css +17 -9
  149. package/src/theme/ColorModeToggle/index.tsx +92 -0
  150. package/src/theme/ColorModeToggle/styles.module.css +51 -0
  151. package/src/theme/Details/index.tsx +25 -0
  152. package/src/theme/Details/styles.module.css +13 -0
  153. package/src/theme/DocBreadcrumbs/index.tsx +91 -0
  154. package/src/theme/DocBreadcrumbs/styles.module.css +26 -0
  155. package/src/theme/DocCard/index.tsx +109 -0
  156. package/src/theme/DocCard/styles.module.css +43 -0
  157. package/src/theme/DocCardList/index.tsx +27 -0
  158. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +59 -0
  159. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  160. package/src/theme/DocItem/index.tsx +56 -58
  161. package/src/theme/DocItem/styles.module.css +6 -10
  162. package/src/theme/DocItemFooter/index.tsx +91 -0
  163. package/{lib/theme/Toggle → src/theme/DocItemFooter}/styles.module.css +9 -8
  164. package/src/theme/DocPage/index.tsx +53 -49
  165. package/src/theme/DocPage/styles.module.css +9 -3
  166. package/src/theme/DocPaginator/index.tsx +15 -23
  167. package/src/theme/DocSidebar/index.tsx +76 -298
  168. package/src/theme/DocSidebar/styles.module.css +5 -22
  169. package/src/theme/DocSidebarItem/index.tsx +283 -0
  170. package/src/theme/DocSidebarItem/styles.module.css +13 -0
  171. package/src/theme/DocSidebarItems/index.tsx +32 -0
  172. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  173. package/src/theme/DocTagsListPage/index.tsx +39 -0
  174. package/src/theme/DocVersionBadge/index.tsx +35 -0
  175. package/src/theme/DocVersionBanner/index.tsx +49 -22
  176. package/src/theme/EditThisPage/index.tsx +6 -1
  177. package/src/theme/ErrorPageContent.tsx +41 -0
  178. package/src/theme/Footer/index.tsx +109 -44
  179. package/src/theme/Footer/styles.module.css +2 -1
  180. package/src/theme/Heading/index.tsx +38 -53
  181. package/src/theme/Heading/styles.module.css +25 -5
  182. package/src/theme/IconArrow/index.tsx +2 -4
  183. package/src/theme/IconClose/index.tsx +26 -0
  184. package/src/theme/IconDarkMode/index.tsx +20 -0
  185. package/src/theme/IconEdit/index.tsx +5 -4
  186. package/src/theme/IconExternalLink/index.tsx +3 -5
  187. package/src/theme/IconLanguage/index.tsx +6 -8
  188. package/src/theme/IconLightMode/index.tsx +20 -0
  189. package/src/theme/IconMenu/index.tsx +3 -5
  190. package/src/theme/LastUpdated/index.tsx +3 -2
  191. package/src/theme/Layout/index.tsx +5 -6
  192. package/src/theme/LayoutHead/index.tsx +26 -25
  193. package/src/theme/LayoutProviders/index.tsx +15 -9
  194. package/src/theme/Logo/index.tsx +21 -19
  195. package/src/theme/MDXComponents/index.tsx +70 -32
  196. package/{lib/theme/IconExternalLink/styles.module.css → src/theme/MDXComponents/styles.css} +7 -4
  197. package/src/theme/MDXPage/index.tsx +10 -12
  198. package/src/theme/Navbar/index.tsx +208 -68
  199. package/src/theme/Navbar/styles.module.css +10 -3
  200. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +37 -207
  201. package/src/theme/NavbarItem/DocNavbarItem.tsx +17 -18
  202. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +84 -0
  203. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +39 -24
  204. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  205. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
  206. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +16 -10
  207. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  208. package/src/theme/NavbarItem/NavbarNavLink.tsx +68 -0
  209. package/src/theme/NavbarItem/index.tsx +41 -18
  210. package/src/theme/NavbarItem/utils.ts +10 -0
  211. package/src/theme/NotFound.tsx +1 -3
  212. package/src/theme/PaginatorNavLink/index.tsx +20 -0
  213. package/src/theme/SearchBar.tsx +2 -1
  214. package/src/theme/SearchMetadata/index.tsx +43 -0
  215. package/src/theme/Seo/index.tsx +7 -4
  216. package/src/theme/SkipToContent/index.tsx +3 -5
  217. package/src/theme/SkipToContent/styles.module.css +7 -0
  218. package/src/theme/TOC/index.tsx +13 -44
  219. package/src/theme/TOC/styles.module.css +1 -1
  220. package/src/theme/TOCCollapsible/index.tsx +58 -0
  221. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  222. package/src/theme/TOCInline/index.tsx +14 -35
  223. package/src/theme/TOCItems/index.tsx +100 -0
  224. package/src/theme/TabItem/index.tsx +5 -3
  225. package/src/theme/Tabs/index.tsx +115 -56
  226. package/src/theme/Tabs/styles.module.css +0 -13
  227. package/src/theme/Tag/index.tsx +29 -0
  228. package/src/theme/Tag/styles.module.css +70 -0
  229. package/src/theme/TagsListByLetter/index.tsx +43 -0
  230. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  231. package/src/theme/TagsListInline/index.tsx +35 -0
  232. package/src/theme/TagsListInline/styles.module.css +15 -0
  233. package/src/theme/ThemedImage/index.tsx +7 -9
  234. package/src/theme/ThemedImage/styles.module.css +2 -2
  235. package/src/theme/prism-include-languages.ts +20 -15
  236. package/src/theme-classic.d.ts +771 -0
  237. package/src/translations.ts +74 -54
  238. package/src/types.d.ts +0 -587
  239. package/src/validateThemeConfig.ts +381 -0
  240. package/babel.config.js +0 -35
  241. package/codeTranslations/README.md +0 -20
  242. package/codeTranslations/ar.json +0 -57
  243. package/codeTranslations/base.json +0 -112
  244. package/codeTranslations/bn.json +0 -56
  245. package/codeTranslations/da.json +0 -57
  246. package/codeTranslations/de.json +0 -57
  247. package/codeTranslations/es.json +0 -57
  248. package/codeTranslations/fa.json +0 -57
  249. package/codeTranslations/fil.json +0 -57
  250. package/codeTranslations/fr.json +0 -57
  251. package/codeTranslations/he.json +0 -57
  252. package/codeTranslations/hi.json +0 -57
  253. package/codeTranslations/ja.json +0 -57
  254. package/codeTranslations/ko.json +0 -57
  255. package/codeTranslations/pl.json +0 -57
  256. package/codeTranslations/pt-BR.json +0 -57
  257. package/codeTranslations/pt-PT.json +0 -57
  258. package/codeTranslations/ru.json +0 -57
  259. package/codeTranslations/tr.json +0 -57
  260. package/codeTranslations/vi.json +0 -57
  261. package/codeTranslations/zh-Hans.json +0 -57
  262. package/codeTranslations/zh-Hant.json +0 -57
  263. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  264. package/lib/__tests__/translations.test.js +0 -112
  265. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  266. package/lib/theme/AnnouncementBar/index.js +0 -72
  267. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  268. package/lib/theme/BlogListPage/index.js +0 -71
  269. package/lib/theme/BlogListPaginator/index.js +0 -63
  270. package/lib/theme/BlogPostItem/index.js +0 -161
  271. package/lib/theme/BlogPostPage/index.js +0 -69
  272. package/lib/theme/BlogPostPaginator/index.js +0 -64
  273. package/lib/theme/BlogSidebar/index.js +0 -51
  274. package/lib/theme/BlogSidebar/styles.module.css +0 -44
  275. package/lib/theme/BlogTagsListPage/index.js +0 -76
  276. package/lib/theme/BlogTagsPostsPage/index.js +0 -100
  277. package/lib/theme/CodeBlock/index.js +0 -253
  278. package/lib/theme/CodeBlock/styles.module.css +0 -68
  279. package/lib/theme/DocItem/index.js +0 -129
  280. package/lib/theme/DocPage/index.js +0 -173
  281. package/lib/theme/DocPage/styles.module.css +0 -80
  282. package/lib/theme/DocPaginator/index.js +0 -63
  283. package/lib/theme/DocSidebar/index.js +0 -309
  284. package/lib/theme/DocSidebar/styles.module.css +0 -124
  285. package/lib/theme/DocVersionBanner/index.js +0 -128
  286. package/lib/theme/EditThisPage/index.js +0 -31
  287. package/lib/theme/Footer/index.js +0 -115
  288. package/lib/theme/Footer/styles.module.css +0 -15
  289. package/lib/theme/Heading/index.js +0 -76
  290. package/lib/theme/Heading/styles.css +0 -23
  291. package/lib/theme/Heading/styles.module.css +0 -15
  292. package/lib/theme/IconArrow/index.js +0 -28
  293. package/lib/theme/IconEdit/index.js +0 -34
  294. package/lib/theme/IconExternalLink/index.js +0 -30
  295. package/lib/theme/IconLanguage/index.js +0 -29
  296. package/lib/theme/IconMenu/index.js +0 -30
  297. package/lib/theme/LastUpdated/index.js +0 -61
  298. package/lib/theme/Layout/index.js +0 -64
  299. package/lib/theme/Layout/styles.css +0 -27
  300. package/lib/theme/LayoutHead/index.js +0 -144
  301. package/lib/theme/LayoutProviders/index.js +0 -36
  302. package/lib/theme/Logo/index.js +0 -60
  303. package/lib/theme/MDXComponents/index.js +0 -65
  304. package/lib/theme/MDXPage/index.js +0 -66
  305. package/lib/theme/Navbar/index.js +0 -147
  306. package/lib/theme/Navbar/styles.module.css +0 -20
  307. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -209
  308. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -63
  309. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -76
  310. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  311. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  312. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  313. package/lib/theme/NavbarItem/index.js +0 -54
  314. package/lib/theme/NotFound.js +0 -57
  315. package/lib/theme/SearchBar.js +0 -15
  316. package/lib/theme/SearchMetadatas/index.js +0 -33
  317. package/lib/theme/Seo/index.js +0 -49
  318. package/lib/theme/SkipToContent/index.js +0 -71
  319. package/lib/theme/SkipToContent/styles.module.css +0 -14
  320. package/lib/theme/TOC/index.js +0 -59
  321. package/lib/theme/TOC/styles.module.css +0 -23
  322. package/lib/theme/TOCInline/index.js +0 -53
  323. package/lib/theme/TOCInline/styles.module.css +0 -12
  324. package/lib/theme/TabItem/index.js +0 -32
  325. package/lib/theme/Tabs/index.js +0 -150
  326. package/lib/theme/Tabs/styles.module.css +0 -23
  327. package/lib/theme/ThemeContext.js +0 -21
  328. package/lib/theme/ThemeProvider/index.js +0 -38
  329. package/lib/theme/ThemedImage/index.js +0 -49
  330. package/lib/theme/ThemedImage/styles.module.css +0 -18
  331. package/lib/theme/Toggle/index.js +0 -94
  332. package/lib/theme/Toggle/styles.css +0 -103
  333. package/lib/theme/UserPreferencesContext.js +0 -18
  334. package/lib/theme/UserPreferencesProvider/index.js +0 -36
  335. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  336. package/lib/theme/hooks/useDocs.js +0 -18
  337. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  338. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  339. package/lib/theme/hooks/useLocationHash.js +0 -28
  340. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  341. package/lib/theme/hooks/usePrismTheme.js +0 -36
  342. package/lib/theme/hooks/useScrollPosition.js +0 -49
  343. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  344. package/lib/theme/hooks/useTabGroupChoice.js +0 -51
  345. package/lib/theme/hooks/useTheme.js +0 -99
  346. package/lib/theme/hooks/useThemeContext.js +0 -31
  347. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  348. package/lib/theme/hooks/useWindowSize.js +0 -55
  349. package/lib/theme/prism-include-languages.js +0 -39
  350. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  351. package/lib-next/__tests__/translations.test.js +0 -128
  352. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  353. package/lib-next/index.js +0 -221
  354. package/lib-next/theme/Heading/styles.css +0 -23
  355. package/lib-next/theme/SearchMetadatas/index.js +0 -20
  356. package/lib-next/theme/ThemeContext.js +0 -9
  357. package/lib-next/theme/ThemeProvider/index.js +0 -25
  358. package/lib-next/theme/Toggle/index.js +0 -80
  359. package/lib-next/theme/Toggle/styles.css +0 -103
  360. package/lib-next/theme/UserPreferencesProvider/index.js +0 -24
  361. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  362. package/lib-next/theme/hooks/useDocs.js +0 -10
  363. package/lib-next/theme/hooks/useHideableNavbar.js +0 -79
  364. package/lib-next/theme/hooks/useKeyboardNavigation.js +0 -35
  365. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  366. package/lib-next/theme/hooks/useLockBodyScroll.js +0 -18
  367. package/lib-next/theme/hooks/usePrismTheme.js +0 -20
  368. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  369. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  370. package/lib-next/theme/hooks/useTabGroupChoice.js +0 -39
  371. package/lib-next/theme/hooks/useTheme.js +0 -82
  372. package/lib-next/theme/hooks/useThemeContext.js +0 -22
  373. package/lib-next/theme/hooks/useUserPreferencesContext.js +0 -22
  374. package/lib-next/theme/hooks/useWindowSize.js +0 -45
  375. package/lib-next/translations.js +0 -145
  376. package/lib-next/types.d.ts +0 -598
  377. package/lib-next/validateThemeConfig.js +0 -317
  378. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  379. package/src/__tests__/translations.test.ts +0 -116
  380. package/src/__tests__/validateThemeConfig.test.js +0 -333
  381. package/src/prism-include-languages.js +0 -11
  382. package/src/theme/Heading/styles.css +0 -23
  383. package/src/theme/SearchMetadatas/index.tsx +0 -28
  384. package/src/theme/ThemeContext.ts +0 -15
  385. package/src/theme/ThemeProvider/index.tsx +0 -24
  386. package/src/theme/Toggle/index.tsx +0 -100
  387. package/src/theme/Toggle/styles.css +0 -103
  388. package/src/theme/UserPreferencesContext.ts +0 -12
  389. package/src/theme/UserPreferencesProvider/index.tsx +0 -27
  390. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  391. package/src/theme/hooks/useDocs.ts +0 -11
  392. package/src/theme/hooks/useHideableNavbar.ts +0 -85
  393. package/src/theme/hooks/useKeyboardNavigation.ts +0 -39
  394. package/src/theme/hooks/useLocationHash.ts +0 -25
  395. package/src/theme/hooks/useLockBodyScroll.ts +0 -20
  396. package/src/theme/hooks/usePrismTheme.ts +0 -22
  397. package/src/theme/hooks/useScrollPosition.ts +0 -45
  398. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  399. package/src/theme/hooks/useTabGroupChoice.ts +0 -46
  400. package/src/theme/hooks/useTheme.ts +0 -92
  401. package/src/theme/hooks/useThemeContext.ts +0 -23
  402. package/src/theme/hooks/useUserPreferencesContext.ts +0 -25
  403. package/src/theme/hooks/useWindowSize.ts +0 -51
  404. package/src/validateThemeConfig.js +0 -317
  405. package/tsconfig.json +0 -12
  406. package/update-code-translations.js +0 -240
  407. package/update-code-translations.test.js +0 -33
@@ -10,13 +10,16 @@ import clsx from 'clsx';
10
10
  import {MDXProvider} from '@mdx-js/react';
11
11
  import Translate, {translate} from '@docusaurus/Translate';
12
12
  import Link from '@docusaurus/Link';
13
+ import {useBaseUrlUtils} from '@docusaurus/useBaseUrl';
13
14
  import {usePluralForm} from '@docusaurus/theme-common';
15
+ import {blogPostContainerID} from '@docusaurus/utils-common';
14
16
  import MDXComponents from '@theme/MDXComponents';
15
- import Seo from '@theme/Seo';
16
17
  import EditThisPage from '@theme/EditThisPage';
17
18
  import type {Props} from '@theme/BlogPostItem';
18
19
 
19
20
  import styles from './styles.module.css';
21
+ import TagsListInline from '@theme/TagsListInline';
22
+ import BlogPostAuthors from '@theme/BlogPostAuthors';
20
23
 
21
24
  // Very simple pluralization: probably good enough for now
22
25
  function useReadingTimePlural() {
@@ -38,11 +41,13 @@ function useReadingTimePlural() {
38
41
  };
39
42
  }
40
43
 
41
- function BlogPostItem(props: Props): JSX.Element {
44
+ export default function BlogPostItem(props: Props): JSX.Element {
42
45
  const readingTimePlural = useReadingTimePlural();
46
+ const {withBaseUrl} = useBaseUrlUtils();
43
47
  const {
44
48
  children,
45
49
  frontMatter,
50
+ assets,
46
51
  metadata,
47
52
  truncated,
48
53
  isBlogPostPage = false,
@@ -55,113 +60,102 @@ function BlogPostItem(props: Props): JSX.Element {
55
60
  readingTime,
56
61
  title,
57
62
  editUrl,
63
+ authors,
58
64
  } = metadata;
59
- const {author, image, keywords} = frontMatter;
60
65
 
61
- const authorURL = frontMatter.author_url || frontMatter.authorURL;
62
- const authorTitle = frontMatter.author_title || frontMatter.authorTitle;
63
- const authorImageURL =
64
- frontMatter.author_image_url || frontMatter.authorImageURL;
66
+ const image = assets.image ?? frontMatter.image;
67
+ const truncatedPost = !isBlogPostPage && truncated;
68
+ const tagsExists = tags.length > 0;
69
+ const TitleHeading = isBlogPostPage ? 'h1' : 'h2';
65
70
 
66
- const renderPostHeader = () => {
67
- const TitleHeading = isBlogPostPage ? 'h1' : 'h2';
68
-
69
- return (
71
+ return (
72
+ <article
73
+ className={!isBlogPostPage ? 'margin-bottom--xl' : undefined}
74
+ itemProp="blogPost"
75
+ itemScope
76
+ itemType="http://schema.org/BlogPosting">
70
77
  <header>
71
- <TitleHeading className={styles.blogPostTitle}>
72
- {isBlogPostPage ? title : <Link to={permalink}>{title}</Link>}
78
+ <TitleHeading className={styles.blogPostTitle} itemProp="headline">
79
+ {isBlogPostPage ? (
80
+ title
81
+ ) : (
82
+ <Link itemProp="url" to={permalink}>
83
+ {title}
84
+ </Link>
85
+ )}
73
86
  </TitleHeading>
74
87
  <div className={clsx(styles.blogPostData, 'margin-vert--md')}>
75
- <time dateTime={date}>{formattedDate}</time>
88
+ <time dateTime={date} itemProp="datePublished">
89
+ {formattedDate}
90
+ </time>
76
91
 
77
- {readingTime && (
92
+ {typeof readingTime !== 'undefined' && (
78
93
  <>
79
94
  {' · '}
80
95
  {readingTimePlural(readingTime)}
81
96
  </>
82
97
  )}
83
98
  </div>
84
- <div className="avatar margin-vert--md">
85
- {authorImageURL && (
86
- <Link className="avatar__photo-link avatar__photo" href={authorURL}>
87
- <img src={authorImageURL} alt={author} />
88
- </Link>
89
- )}
90
- <div className="avatar__intro">
91
- {author && (
92
- <>
93
- <div className="avatar__name">
94
- <Link href={authorURL}>{author}</Link>
95
- </div>
96
- <small className="avatar__subtitle">{authorTitle}</small>
97
- </>
98
- )}
99
- </div>
100
- </div>
99
+ <BlogPostAuthors authors={authors} assets={assets} />
101
100
  </header>
102
- );
103
- };
104
101
 
105
- return (
106
- <>
107
- <Seo {...{keywords, image}} />
102
+ {image && (
103
+ <meta itemProp="image" content={withBaseUrl(image, {absolute: true})} />
104
+ )}
108
105
 
109
- <article className={!isBlogPostPage ? 'margin-bottom--xl' : undefined}>
110
- {renderPostHeader()}
111
- <div className="markdown">
112
- <MDXProvider components={MDXComponents}>{children}</MDXProvider>
113
- </div>
114
- {(tags.length > 0 || truncated) && (
115
- <footer
116
- className={clsx('row docusaurus-mt-lg', {
117
- [styles.blogPostDetailsFull]: isBlogPostPage,
118
- })}>
119
- {tags.length > 0 && (
120
- <div className="col">
106
+ <div
107
+ // This ID is used for the feed generation to locate the main content
108
+ id={isBlogPostPage ? blogPostContainerID : undefined}
109
+ className="markdown"
110
+ itemProp="articleBody">
111
+ <MDXProvider components={MDXComponents}>{children}</MDXProvider>
112
+ </div>
113
+
114
+ {(tagsExists || truncated) && (
115
+ <footer
116
+ className={clsx('row docusaurus-mt-lg', {
117
+ [styles.blogPostDetailsFull]: isBlogPostPage,
118
+ })}>
119
+ {tagsExists && (
120
+ <div className={clsx('col', {'col--9': truncatedPost})}>
121
+ <TagsListInline tags={tags} />
122
+ </div>
123
+ )}
124
+
125
+ {isBlogPostPage && editUrl && (
126
+ <div className="col margin-top--sm">
127
+ <EditThisPage editUrl={editUrl} />
128
+ </div>
129
+ )}
130
+
131
+ {truncatedPost && (
132
+ <div
133
+ className={clsx('col text--right', {
134
+ 'col--3': tagsExists,
135
+ })}>
136
+ <Link
137
+ to={metadata.permalink}
138
+ aria-label={translate(
139
+ {
140
+ message: 'Read more about {title}',
141
+ id: 'theme.blog.post.readMoreLabel',
142
+ description:
143
+ 'The ARIA label for the link to full blog posts from excerpts',
144
+ },
145
+ {title},
146
+ )}>
121
147
  <b>
122
148
  <Translate
123
- id="theme.tags.tagsListLabel"
124
- description="The label alongside a tag list">
125
- Tags:
149
+ id="theme.blog.post.readMore"
150
+ description="The label used in blog post item excerpts to link to full blog posts">
151
+ Read More
126
152
  </Translate>
127
153
  </b>
128
- {tags.map(({label, permalink: tagPermalink}) => (
129
- <Link
130
- key={tagPermalink}
131
- className="margin-horiz--sm"
132
- to={tagPermalink}>
133
- {label}
134
- </Link>
135
- ))}
136
- </div>
137
- )}
138
-
139
- {isBlogPostPage && editUrl && (
140
- <div className="col margin-top--sm">
141
- <EditThisPage editUrl={editUrl} />
142
- </div>
143
- )}
144
-
145
- {!isBlogPostPage && truncated && (
146
- <div className="col text--right">
147
- <Link
148
- to={metadata.permalink}
149
- aria-label={`Read more about ${title}`}>
150
- <b>
151
- <Translate
152
- id="theme.blog.post.readMore"
153
- description="The label used in blog post item excerpts to link to full blog posts">
154
- Read More
155
- </Translate>
156
- </b>
157
- </Link>
158
- </div>
159
- )}
160
- </footer>
161
- )}
162
- </article>
163
- </>
154
+ </Link>
155
+ </div>
156
+ )}
157
+ </footer>
158
+ )}
159
+ </article>
164
160
  );
165
161
  }
166
-
167
- export default BlogPostItem;
@@ -6,53 +6,92 @@
6
6
  */
7
7
 
8
8
  import React from 'react';
9
- import Layout from '@theme/Layout';
9
+ import Seo from '@theme/Seo';
10
+ import BlogLayout from '@theme/BlogLayout';
10
11
  import BlogPostItem from '@theme/BlogPostItem';
11
12
  import BlogPostPaginator from '@theme/BlogPostPaginator';
12
13
  import type {Props} from '@theme/BlogPostPage';
13
- import BlogSidebar from '@theme/BlogSidebar';
14
- import TOC from '@theme/TOC';
15
14
  import {ThemeClassNames} from '@docusaurus/theme-common';
15
+ import TOC from '@theme/TOC';
16
16
 
17
- function BlogPostPage(props: Props): JSX.Element {
17
+ export default function BlogPostPage(props: Props): JSX.Element {
18
18
  const {content: BlogPostContents, sidebar} = props;
19
- const {frontMatter, metadata} = BlogPostContents;
20
- const {title, description, nextItem, prevItem} = metadata;
21
- const {hide_table_of_contents: hideTableOfContents} = frontMatter;
19
+ const {assets, metadata} = BlogPostContents;
20
+ const {
21
+ title,
22
+ description,
23
+ nextItem,
24
+ prevItem,
25
+ date,
26
+ tags,
27
+ authors,
28
+ frontMatter,
29
+ } = metadata;
30
+ const {
31
+ hide_table_of_contents: hideTableOfContents,
32
+ keywords,
33
+ toc_min_heading_level: tocMinHeadingLevel,
34
+ toc_max_heading_level: tocMaxHeadingLevel,
35
+ } = frontMatter;
36
+
37
+ const image = assets.image ?? frontMatter.image;
22
38
 
23
39
  return (
24
- <Layout
25
- title={title}
26
- description={description}
40
+ <BlogLayout
27
41
  wrapperClassName={ThemeClassNames.wrapper.blogPages}
28
- pageClassName={ThemeClassNames.page.blogPostPage}>
29
- {BlogPostContents && (
30
- <div className="container margin-vert--lg">
31
- <div className="row">
32
- <aside className="col col--3">
33
- <BlogSidebar sidebar={sidebar} />
34
- </aside>
35
- <main className="col col--7">
36
- <BlogPostItem
37
- frontMatter={frontMatter}
38
- metadata={metadata}
39
- isBlogPostPage>
40
- <BlogPostContents />
41
- </BlogPostItem>
42
- {(nextItem || prevItem) && (
43
- <BlogPostPaginator nextItem={nextItem} prevItem={prevItem} />
44
- )}
45
- </main>
46
- {!hideTableOfContents && BlogPostContents.toc && (
47
- <div className="col col--2">
48
- <TOC toc={BlogPostContents.toc} />
49
- </div>
50
- )}
51
- </div>
52
- </div>
42
+ pageClassName={ThemeClassNames.page.blogPostPage}
43
+ sidebar={sidebar}
44
+ toc={
45
+ !hideTableOfContents &&
46
+ BlogPostContents.toc &&
47
+ BlogPostContents.toc.length > 0 ? (
48
+ <TOC
49
+ toc={BlogPostContents.toc}
50
+ minHeadingLevel={tocMinHeadingLevel}
51
+ maxHeadingLevel={tocMaxHeadingLevel}
52
+ />
53
+ ) : undefined
54
+ }>
55
+ <Seo
56
+ // TODO refactor needed: it's a bit annoying but Seo MUST be inside
57
+ // BlogLayout, otherwise default image (set by BlogLayout) would shadow
58
+ // the custom blog post image
59
+ title={title}
60
+ description={description}
61
+ keywords={keywords}
62
+ image={image}>
63
+ <meta property="og:type" content="article" />
64
+ <meta property="article:published_time" content={date} />
65
+
66
+ {/* TODO double check those article meta array syntaxes, see https://ogp.me/#array */}
67
+ {authors.some((author) => author.url) && (
68
+ <meta
69
+ property="article:author"
70
+ content={authors
71
+ .map((author) => author.url)
72
+ .filter(Boolean)
73
+ .join(',')}
74
+ />
75
+ )}
76
+ {tags.length > 0 && (
77
+ <meta
78
+ property="article:tag"
79
+ content={tags.map((tag) => tag.label).join(',')}
80
+ />
81
+ )}
82
+ </Seo>
83
+
84
+ <BlogPostItem
85
+ frontMatter={frontMatter}
86
+ assets={assets}
87
+ metadata={metadata}
88
+ isBlogPostPage>
89
+ <BlogPostContents />
90
+ </BlogPostItem>
91
+
92
+ {(nextItem || prevItem) && (
93
+ <BlogPostPaginator nextItem={nextItem} prevItem={prevItem} />
53
94
  )}
54
- </Layout>
95
+ </BlogLayout>
55
96
  );
56
97
  }
57
-
58
- export default BlogPostPage;
@@ -7,10 +7,10 @@
7
7
 
8
8
  import React from 'react';
9
9
  import Translate, {translate} from '@docusaurus/Translate';
10
- import Link from '@docusaurus/Link';
10
+ import PaginatorNavLink from '@theme/PaginatorNavLink';
11
11
  import type {Props} from '@theme/BlogPostPaginator';
12
12
 
13
- function BlogPostPaginator(props: Props): JSX.Element {
13
+ export default function BlogPostPaginator(props: Props): JSX.Element {
14
14
  const {nextItem, prevItem} = props;
15
15
 
16
16
  return (
@@ -23,38 +23,32 @@ function BlogPostPaginator(props: Props): JSX.Element {
23
23
  })}>
24
24
  <div className="pagination-nav__item">
25
25
  {prevItem && (
26
- <Link className="pagination-nav__link" to={prevItem.permalink}>
27
- <div className="pagination-nav__sublabel">
26
+ <PaginatorNavLink
27
+ {...prevItem}
28
+ subLabel={
28
29
  <Translate
29
30
  id="theme.blog.post.paginator.newerPost"
30
31
  description="The blog post button label to navigate to the newer/previous post">
31
32
  Newer Post
32
33
  </Translate>
33
- </div>
34
- <div className="pagination-nav__label">
35
- &laquo; {prevItem.title}
36
- </div>
37
- </Link>
34
+ }
35
+ />
38
36
  )}
39
37
  </div>
40
38
  <div className="pagination-nav__item pagination-nav__item--next">
41
39
  {nextItem && (
42
- <Link className="pagination-nav__link" to={nextItem.permalink}>
43
- <div className="pagination-nav__sublabel">
40
+ <PaginatorNavLink
41
+ {...nextItem}
42
+ subLabel={
44
43
  <Translate
45
44
  id="theme.blog.post.paginator.olderPost"
46
45
  description="The blog post button label to navigate to the older/next post">
47
46
  Older Post
48
47
  </Translate>
49
- </div>
50
- <div className="pagination-nav__label">
51
- {nextItem.title} &raquo;
52
- </div>
53
- </Link>
48
+ }
49
+ />
54
50
  )}
55
51
  </div>
56
52
  </nav>
57
53
  );
58
54
  }
59
-
60
- export default BlogPostPaginator;
@@ -28,19 +28,17 @@ export default function BlogSidebar({sidebar}: Props): JSX.Element | null {
28
28
  {sidebar.title}
29
29
  </div>
30
30
  <ul className={styles.sidebarItemList}>
31
- {sidebar.items.map((item) => {
32
- return (
33
- <li key={item.permalink} className={styles.sidebarItem}>
34
- <Link
35
- isNavLink
36
- to={item.permalink}
37
- className={styles.sidebarItemLink}
38
- activeClassName={styles.sidebarItemLinkActive}>
39
- {item.title}
40
- </Link>
41
- </li>
42
- );
43
- })}
31
+ {sidebar.items.map((item) => (
32
+ <li key={item.permalink} className={styles.sidebarItem}>
33
+ <Link
34
+ isNavLink
35
+ to={item.permalink}
36
+ className={styles.sidebarItemLink}
37
+ activeClassName={styles.sidebarItemLinkActive}>
38
+ {item.title}
39
+ </Link>
40
+ </li>
41
+ ))}
44
42
  </ul>
45
43
  </nav>
46
44
  );
@@ -30,14 +30,16 @@
30
30
  .sidebarItemLink {
31
31
  color: var(--ifm-font-color-base);
32
32
  }
33
+
33
34
  .sidebarItemLink:hover {
34
35
  text-decoration: none;
35
36
  }
37
+
36
38
  .sidebarItemLinkActive {
37
- color: var(--ifm-color-primary);
39
+ color: var(--ifm-color-primary) !important;
38
40
  }
39
41
 
40
- @media only screen and (max-width: 996px) {
42
+ @media (max-width: 996px) {
41
43
  .sidebar {
42
44
  display: none;
43
45
  }
@@ -7,74 +7,29 @@
7
7
 
8
8
  import React from 'react';
9
9
 
10
- import Layout from '@theme/Layout';
11
- import Link from '@docusaurus/Link';
10
+ import BlogLayout from '@theme/BlogLayout';
11
+ import TagsListByLetter from '@theme/TagsListByLetter';
12
12
  import type {Props} from '@theme/BlogTagsListPage';
13
- import BlogSidebar from '@theme/BlogSidebar';
14
- import {translate} from '@docusaurus/Translate';
15
- import {ThemeClassNames} from '@docusaurus/theme-common';
13
+ import {
14
+ ThemeClassNames,
15
+ translateTagsPageTitle,
16
+ } from '@docusaurus/theme-common';
16
17
 
17
- function getCategoryOfTag(tag: string) {
18
- // tag's category should be customizable
19
- return tag[0].toUpperCase();
20
- }
21
-
22
- function BlogTagsListPage(props: Props): JSX.Element {
18
+ export default function BlogTagsListPage(props: Props): JSX.Element {
23
19
  const {tags, sidebar} = props;
24
- const title = translate({
25
- id: 'theme.tags.tagsPageTitle',
26
- message: 'Tags',
27
- description: 'The title of the tag list page',
28
- });
29
-
30
- const tagCategories: {[category: string]: string[]} = {};
31
- Object.keys(tags).forEach((tag) => {
32
- const category = getCategoryOfTag(tag);
33
- tagCategories[category] = tagCategories[category] || [];
34
- tagCategories[category].push(tag);
35
- });
36
- const tagsList = Object.entries(tagCategories).sort(([a], [b]) =>
37
- a.localeCompare(b),
38
- );
39
- const tagsSection = tagsList
40
- .map(([category, tagsForCategory]) => (
41
- <article key={category}>
42
- <h2>{category}</h2>
43
- {tagsForCategory.map((tag) => (
44
- <Link
45
- className="padding-right--md"
46
- href={tags[tag].permalink}
47
- key={tag}>
48
- {tags[tag].name} ({tags[tag].count})
49
- </Link>
50
- ))}
51
- <hr />
52
- </article>
53
- ))
54
- .filter((item) => item != null);
55
-
20
+ const title = translateTagsPageTitle();
56
21
  return (
57
- <Layout
22
+ <BlogLayout
58
23
  title={title}
59
24
  wrapperClassName={ThemeClassNames.wrapper.blogPages}
60
25
  pageClassName={ThemeClassNames.page.blogTagsListPage}
61
- searchMetadatas={{
26
+ searchMetadata={{
62
27
  // assign unique search tag to exclude this page from search results!
63
28
  tag: 'blog_tags_list',
64
- }}>
65
- <div className="container margin-vert--lg">
66
- <div className="row">
67
- <aside className="col col--3">
68
- <BlogSidebar sidebar={sidebar} />
69
- </aside>
70
- <main className="col col--7">
71
- <h1>{title}</h1>
72
- <section className="margin-vert--lg">{tagsSection}</section>
73
- </main>
74
- </div>
75
- </div>
76
- </Layout>
29
+ }}
30
+ sidebar={sidebar}>
31
+ <h1>{title}</h1>
32
+ <TagsListByLetter tags={Object.values(tags)} />
33
+ </BlogLayout>
77
34
  );
78
35
  }
79
-
80
- export default BlogTagsListPage;
@@ -7,13 +7,13 @@
7
7
 
8
8
  import React from 'react';
9
9
 
10
- import Layout from '@theme/Layout';
11
- import BlogPostItem from '@theme/BlogPostItem';
12
10
  import Link from '@docusaurus/Link';
11
+ import BlogLayout from '@theme/BlogLayout';
12
+ import BlogPostItem from '@theme/BlogPostItem';
13
13
  import type {Props} from '@theme/BlogTagsPostsPage';
14
- import BlogSidebar from '@theme/BlogSidebar';
15
14
  import Translate, {translate} from '@docusaurus/Translate';
16
15
  import {ThemeClassNames, usePluralForm} from '@docusaurus/theme-common';
16
+ import BlogListPaginator from '@theme/BlogListPaginator';
17
17
 
18
18
  // Very simple pluralization: probably good enough for now
19
19
  function useBlogPostsPlural() {
@@ -33,8 +33,8 @@ function useBlogPostsPlural() {
33
33
  );
34
34
  }
35
35
 
36
- function BlogTagsPostPage(props: Props): JSX.Element {
37
- const {metadata, items, sidebar} = props;
36
+ export default function BlogTagsPostsPage(props: Props): JSX.Element {
37
+ const {metadata, items, sidebar, listMetadata} = props;
38
38
  const {allTagsPath, name: tagName, count} = metadata;
39
39
  const blogPostsPlural = useBlogPostsPlural();
40
40
  const title = translate(
@@ -47,46 +47,38 @@ function BlogTagsPostPage(props: Props): JSX.Element {
47
47
  );
48
48
 
49
49
  return (
50
- <Layout
50
+ <BlogLayout
51
51
  title={title}
52
52
  wrapperClassName={ThemeClassNames.wrapper.blogPages}
53
- pageClassName={ThemeClassNames.page.blogTagsPostPage}
54
- searchMetadatas={{
53
+ pageClassName={ThemeClassNames.page.blogTagPostListPage}
54
+ searchMetadata={{
55
55
  // assign unique search tag to exclude this page from search results!
56
56
  tag: 'blog_tags_posts',
57
- }}>
58
- <div className="container margin-vert--lg">
59
- <div className="row">
60
- <aside className="col col--3">
61
- <BlogSidebar sidebar={sidebar} />
62
- </aside>
63
- <main className="col col--7">
64
- <header className="margin-bottom--xl">
65
- <h1>{title}</h1>
57
+ }}
58
+ sidebar={sidebar}>
59
+ <header className="margin-bottom--xl">
60
+ <h1>{title}</h1>
66
61
 
67
- <Link href={allTagsPath}>
68
- <Translate
69
- id="theme.tags.tagsPageLink"
70
- description="The label of the link targeting the tag list page">
71
- View All Tags
72
- </Translate>
73
- </Link>
74
- </header>
62
+ <Link href={allTagsPath}>
63
+ <Translate
64
+ id="theme.tags.tagsPageLink"
65
+ description="The label of the link targeting the tag list page">
66
+ View All Tags
67
+ </Translate>
68
+ </Link>
69
+ </header>
75
70
 
76
- {items.map(({content: BlogPostContent}) => (
77
- <BlogPostItem
78
- key={BlogPostContent.metadata.permalink}
79
- frontMatter={BlogPostContent.frontMatter}
80
- metadata={BlogPostContent.metadata}
81
- truncated>
82
- <BlogPostContent />
83
- </BlogPostItem>
84
- ))}
85
- </main>
86
- </div>
87
- </div>
88
- </Layout>
71
+ {items.map(({content: BlogPostContent}) => (
72
+ <BlogPostItem
73
+ key={BlogPostContent.metadata.permalink}
74
+ frontMatter={BlogPostContent.frontMatter}
75
+ assets={BlogPostContent.assets}
76
+ metadata={BlogPostContent.metadata}
77
+ truncated>
78
+ <BlogPostContent />
79
+ </BlogPostItem>
80
+ ))}
81
+ <BlogListPaginator metadata={listMetadata} />
82
+ </BlogLayout>
89
83
  );
90
84
  }
91
-
92
- export default BlogTagsPostPage;