@docusaurus/theme-classic 2.0.0-beta.16 → 2.0.0-beta.19

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 (319) hide show
  1. package/lib/admonitions.css +4 -0
  2. package/lib/default.css +3038 -0
  3. package/lib/getSwizzleConfig.js +177 -36
  4. package/lib/index.js +10 -15
  5. package/lib/nprogress.css +41 -0
  6. package/lib/nprogress.js +46 -0
  7. package/lib/theme-classic.d.ts +600 -76
  8. package/lib/translations.js +12 -2
  9. package/lib/validateThemeConfig.js +77 -28
  10. package/lib-next/theme/BackToTopButton/index.js +6 -104
  11. package/lib-next/theme/BlogArchivePage/index.js +14 -10
  12. package/lib-next/theme/BlogLayout/index.js +1 -5
  13. package/lib-next/theme/BlogListPage/index.js +34 -13
  14. package/lib-next/theme/BlogListPaginator/index.js +25 -28
  15. package/lib-next/theme/BlogPostAuthor/index.js +16 -7
  16. package/lib-next/theme/BlogPostItem/index.js +6 -6
  17. package/lib-next/theme/BlogPostItem/styles.module.css +9 -0
  18. package/lib-next/theme/BlogPostPage/index.js +56 -45
  19. package/lib-next/theme/BlogPostPaginator/index.js +25 -28
  20. package/lib-next/theme/BlogSidebar/Desktop/index.js +41 -0
  21. package/lib-next/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
  22. package/lib-next/theme/BlogSidebar/Mobile/index.js +36 -0
  23. package/lib-next/theme/BlogSidebar/index.js +11 -31
  24. package/lib-next/theme/BlogTagsListPage/index.js +17 -14
  25. package/lib-next/theme/BlogTagsPostsPage/index.js +43 -38
  26. package/lib-next/theme/CodeBlock/Container/index.js +29 -0
  27. package/lib-next/theme/CodeBlock/Container/styles.module.css +14 -0
  28. package/lib-next/theme/CodeBlock/Content/Element.js +23 -0
  29. package/lib-next/theme/CodeBlock/Content/String.js +104 -0
  30. package/lib-next/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
  31. package/lib-next/theme/CodeBlock/CopyButton/index.js +61 -0
  32. package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  33. package/lib-next/theme/CodeBlock/Line/index.js +49 -0
  34. package/lib-next/theme/CodeBlock/Line/styles.module.css +51 -0
  35. package/lib-next/theme/CodeBlock/WordWrapButton/index.js +40 -0
  36. package/lib-next/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  37. package/lib-next/theme/CodeBlock/index.js +26 -164
  38. package/lib-next/theme/ColorModeToggle/index.js +62 -0
  39. package/lib-next/theme/ColorModeToggle/styles.module.css +35 -0
  40. package/lib-next/theme/Details/index.js +1 -1
  41. package/lib-next/theme/DocBreadcrumbs/index.js +63 -19
  42. package/lib-next/theme/DocBreadcrumbs/styles.module.css +8 -15
  43. package/lib-next/theme/DocCard/index.js +17 -15
  44. package/lib-next/theme/DocCard/styles.module.css +8 -17
  45. package/lib-next/theme/DocCardList/index.js +20 -6
  46. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +30 -9
  47. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
  48. package/lib-next/theme/DocItem/index.js +85 -67
  49. package/lib-next/theme/DocItem/styles.module.css +6 -0
  50. package/lib-next/theme/DocPage/Layout/Main/index.js +29 -0
  51. package/lib-next/theme/DocPage/Layout/Main/styles.module.css +28 -0
  52. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/index.js +34 -0
  53. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  54. package/lib-next/theme/DocPage/Layout/Sidebar/index.js +68 -0
  55. package/lib-next/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  56. package/lib-next/theme/DocPage/Layout/index.js +34 -0
  57. package/lib-next/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
  58. package/lib-next/theme/DocPage/index.js +30 -149
  59. package/lib-next/theme/DocPaginator/index.js +25 -28
  60. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/index.js +34 -0
  61. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  62. package/lib-next/theme/DocSidebar/Desktop/Content/index.js +46 -0
  63. package/lib-next/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  64. package/lib-next/theme/DocSidebar/Desktop/index.js +36 -0
  65. package/lib-next/theme/DocSidebar/Desktop/styles.module.css +50 -0
  66. package/lib-next/theme/DocSidebar/Mobile/index.js +49 -0
  67. package/lib-next/theme/DocSidebar/index.js +6 -113
  68. package/lib-next/theme/DocSidebarItem/Category.js +197 -0
  69. package/lib-next/theme/DocSidebarItem/Html.js +27 -0
  70. package/lib-next/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
  71. package/lib-next/theme/DocSidebarItem/Link.js +53 -0
  72. package/lib-next/theme/DocSidebarItem/Link.module.css +10 -0
  73. package/lib-next/theme/DocSidebarItem/index.js +4 -245
  74. package/lib-next/theme/DocSidebarItems/index.js +1 -6
  75. package/lib-next/theme/DocTagDocListPage/index.js +40 -33
  76. package/lib-next/theme/DocTagsListPage/index.js +21 -16
  77. package/lib-next/theme/DocVersionBanner/index.js +2 -2
  78. package/lib-next/theme/Footer/Copyright/index.js +18 -0
  79. package/lib-next/theme/Footer/Layout/index.js +26 -0
  80. package/lib-next/theme/Footer/LinkItem/index.js +33 -0
  81. package/lib-next/theme/Footer/Links/MultiColumn/index.js +47 -0
  82. package/lib-next/theme/Footer/Links/Simple/index.js +41 -0
  83. package/lib-next/theme/Footer/Links/index.js +17 -0
  84. package/lib-next/theme/Footer/Logo/index.js +38 -0
  85. package/lib-next/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
  86. package/lib-next/theme/Footer/index.js +11 -163
  87. package/lib-next/theme/Heading/index.js +10 -24
  88. package/lib-next/theme/IconDarkMode/index.js +17 -0
  89. package/lib-next/theme/IconExternalLink/styles.module.css +0 -2
  90. package/lib-next/theme/IconHome/index.js +17 -0
  91. package/lib-next/theme/IconLanguage/index.js +3 -3
  92. package/lib-next/theme/IconLightMode/index.js +17 -0
  93. package/lib-next/theme/LastUpdated/index.js +1 -0
  94. package/lib-next/theme/Layout/index.js +15 -10
  95. package/lib-next/theme/LayoutProviders/index.js +5 -4
  96. package/lib-next/theme/MDXComponents/A.js +11 -0
  97. package/lib-next/theme/MDXComponents/Code.js +28 -0
  98. package/lib-next/theme/MDXComponents/Details.js +20 -0
  99. package/lib-next/theme/MDXComponents/Head.js +26 -0
  100. package/lib-next/theme/MDXComponents/Heading.js +11 -0
  101. package/lib-next/theme/MDXComponents/Img.js +24 -0
  102. package/{src/theme/MDXComponents/styles.css → lib-next/theme/MDXComponents/Img.module.css} +1 -6
  103. package/lib-next/theme/MDXComponents/Pre.js +18 -0
  104. package/lib-next/theme/MDXComponents/Ul.js +21 -0
  105. package/lib-next/theme/MDXComponents/index.js +22 -57
  106. package/lib-next/theme/MDXContent/index.js +12 -0
  107. package/lib-next/theme/MDXPage/index.js +33 -28
  108. package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
  109. package/lib-next/theme/Navbar/Content/index.js +75 -0
  110. package/lib-next/theme/Navbar/Content/styles.module.css +15 -0
  111. package/lib-next/theme/Navbar/Layout/index.js +54 -0
  112. package/{src/theme/Navbar → lib-next/theme/Navbar/Layout}/styles.module.css +0 -13
  113. package/lib-next/theme/Navbar/Logo/index.js +17 -0
  114. package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
  115. package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
  116. package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
  117. package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
  118. package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
  119. package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
  120. package/lib-next/theme/Navbar/Search/index.js +11 -0
  121. package/lib-next/theme/Navbar/Search/styles.module.css +20 -0
  122. package/lib-next/theme/Navbar/index.js +6 -271
  123. package/lib-next/theme/NavbarItem/ComponentTypes.js +27 -0
  124. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +2 -6
  125. package/lib-next/theme/NavbarItem/DocNavbarItem.js +11 -28
  126. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +10 -42
  127. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +25 -29
  128. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +2 -9
  129. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +14 -3
  130. package/lib-next/theme/NavbarItem/HtmlNavbarItem.js +30 -0
  131. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/index.js +5 -10
  132. package/lib-next/theme/NavbarItem/NavbarNavLink.js +49 -35
  133. package/lib-next/theme/NavbarItem/SearchNavbarItem.js +6 -1
  134. package/lib-next/theme/NavbarItem/index.js +4 -23
  135. package/lib-next/theme/NavbarItem/utils.js +2 -1
  136. package/lib-next/theme/NotFound.js +38 -33
  137. package/lib-next/theme/PaginatorNavLink/index.js +8 -2
  138. package/lib-next/theme/SearchMetadata/index.js +9 -0
  139. package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +19 -33
  140. package/lib-next/theme/SkipToContent/index.js +3 -29
  141. package/lib-next/theme/TOCCollapsible/CollapseButton.js +29 -0
  142. package/{src/theme/TOCCollapsible/styles.module.css → lib-next/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
  143. package/lib-next/theme/TOCCollapsible/index.js +4 -16
  144. package/lib-next/theme/TOCCollapsible/index.module.css +31 -0
  145. package/lib-next/theme/TOCItems/Tree.js +40 -0
  146. package/lib-next/theme/TOCItems/index.js +3 -34
  147. package/lib-next/theme/TabItem/index.js +3 -1
  148. package/lib-next/theme/TabItem/styles.module.css +10 -0
  149. package/lib-next/theme/Tabs/__tests__/index.test.js +8 -8
  150. package/lib-next/theme/Tabs/index.js +5 -5
  151. package/lib-next/theme/Tabs/styles.module.css +4 -0
  152. package/lib-next/theme/Tag/index.js +6 -7
  153. package/lib-next/theme/TagsListInline/index.js +1 -1
  154. package/lib-next/theme/ThemedImage/index.js +3 -3
  155. package/package.json +25 -20
  156. package/src/admonitions.css +4 -0
  157. package/src/getSwizzleConfig.ts +173 -22
  158. package/src/index.ts +14 -15
  159. package/src/nprogress.css +41 -0
  160. package/src/nprogress.ts +31 -0
  161. package/src/theme/BackToTopButton/index.tsx +5 -114
  162. package/src/theme/BlogArchivePage/index.tsx +18 -17
  163. package/src/theme/BlogLayout/index.tsx +1 -5
  164. package/src/theme/BlogListPage/index.tsx +32 -13
  165. package/src/theme/BlogListPaginator/index.tsx +25 -28
  166. package/src/theme/BlogPostAuthor/index.tsx +14 -8
  167. package/src/theme/BlogPostItem/index.tsx +6 -6
  168. package/src/theme/BlogPostItem/styles.module.css +9 -0
  169. package/src/theme/BlogPostPage/index.tsx +55 -48
  170. package/src/theme/BlogPostPaginator/index.tsx +25 -28
  171. package/src/theme/BlogSidebar/Desktop/index.tsx +45 -0
  172. package/src/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
  173. package/src/theme/BlogSidebar/Mobile/index.tsx +38 -0
  174. package/src/theme/BlogSidebar/index.tsx +10 -31
  175. package/src/theme/BlogTagsListPage/index.tsx +17 -14
  176. package/src/theme/BlogTagsPostsPage/index.tsx +46 -36
  177. package/src/theme/CodeBlock/Container/index.tsx +35 -0
  178. package/src/theme/CodeBlock/Container/styles.module.css +14 -0
  179. package/src/theme/CodeBlock/Content/Element.tsx +30 -0
  180. package/src/theme/CodeBlock/Content/String.tsx +111 -0
  181. package/src/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
  182. package/src/theme/CodeBlock/CopyButton/index.tsx +67 -0
  183. package/src/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  184. package/src/theme/CodeBlock/Line/index.tsx +48 -0
  185. package/src/theme/CodeBlock/Line/styles.module.css +51 -0
  186. package/src/theme/CodeBlock/WordWrapButton/index.tsx +49 -0
  187. package/src/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  188. package/src/theme/CodeBlock/index.tsx +29 -165
  189. package/src/theme/ColorModeToggle/index.tsx +67 -0
  190. package/src/theme/ColorModeToggle/styles.module.css +35 -0
  191. package/src/theme/Details/index.tsx +1 -1
  192. package/src/theme/DocBreadcrumbs/index.tsx +65 -16
  193. package/src/theme/DocBreadcrumbs/styles.module.css +8 -15
  194. package/src/theme/DocCard/index.tsx +24 -17
  195. package/src/theme/DocCard/styles.module.css +8 -17
  196. package/src/theme/DocCardList/index.tsx +19 -10
  197. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +34 -7
  198. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
  199. package/src/theme/DocItem/index.tsx +72 -56
  200. package/src/theme/DocItem/styles.module.css +6 -0
  201. package/src/theme/DocPage/Layout/Main/index.tsx +37 -0
  202. package/src/theme/DocPage/Layout/Main/styles.module.css +28 -0
  203. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx +40 -0
  204. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  205. package/src/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  206. package/src/theme/DocPage/Layout/Sidebar/index.tsx +74 -0
  207. package/src/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
  208. package/src/theme/DocPage/Layout/index.tsx +39 -0
  209. package/src/theme/DocPage/index.tsx +30 -160
  210. package/src/theme/DocPaginator/index.tsx +25 -28
  211. package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
  212. package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  213. package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
  214. package/src/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  215. package/src/theme/DocSidebar/Desktop/index.tsx +40 -0
  216. package/src/theme/DocSidebar/Desktop/styles.module.css +50 -0
  217. package/src/theme/DocSidebar/Mobile/index.tsx +54 -0
  218. package/src/theme/DocSidebar/index.tsx +6 -121
  219. package/src/theme/DocSidebarItem/Category.tsx +210 -0
  220. package/src/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
  221. package/src/theme/DocSidebarItem/Html.tsx +34 -0
  222. package/src/theme/DocSidebarItem/Link.module.css +10 -0
  223. package/src/theme/DocSidebarItem/Link.tsx +58 -0
  224. package/src/theme/DocSidebarItem/index.tsx +4 -260
  225. package/src/theme/DocSidebarItems/index.tsx +1 -6
  226. package/src/theme/DocTagDocListPage/index.tsx +40 -33
  227. package/src/theme/DocTagsListPage/index.tsx +21 -16
  228. package/src/theme/DocVersionBanner/index.tsx +5 -6
  229. package/src/theme/Footer/Copyright/index.tsx +20 -0
  230. package/src/theme/Footer/Layout/index.tsx +34 -0
  231. package/src/theme/Footer/LinkItem/index.tsx +36 -0
  232. package/src/theme/Footer/Links/MultiColumn/index.tsx +51 -0
  233. package/src/theme/Footer/Links/Simple/index.tsx +42 -0
  234. package/src/theme/Footer/Links/index.tsx +21 -0
  235. package/src/theme/Footer/Logo/index.tsx +41 -0
  236. package/src/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
  237. package/src/theme/Footer/index.tsx +12 -186
  238. package/src/theme/Heading/index.tsx +10 -22
  239. package/src/theme/IconDarkMode/index.tsx +20 -0
  240. package/src/theme/IconExternalLink/styles.module.css +0 -2
  241. package/src/theme/IconHome/index.tsx +20 -0
  242. package/src/theme/IconLanguage/index.tsx +3 -3
  243. package/src/theme/IconLightMode/index.tsx +20 -0
  244. package/src/theme/LastUpdated/index.tsx +1 -0
  245. package/src/theme/Layout/index.tsx +15 -10
  246. package/src/theme/LayoutProviders/index.tsx +5 -4
  247. package/src/theme/MDXComponents/A.tsx +14 -0
  248. package/src/theme/MDXComponents/Code.tsx +37 -0
  249. package/src/theme/MDXComponents/Details.tsx +25 -0
  250. package/src/theme/MDXComponents/Head.tsx +29 -0
  251. package/src/theme/MDXComponents/Heading.tsx +14 -0
  252. package/{lib-next/theme/MDXComponents/styles.css → src/theme/MDXComponents/Img.module.css} +1 -6
  253. package/src/theme/MDXComponents/Img.tsx +26 -0
  254. package/src/theme/MDXComponents/Pre.tsx +22 -0
  255. package/src/theme/MDXComponents/Ul.tsx +24 -0
  256. package/src/theme/MDXComponents/index.tsx +23 -66
  257. package/src/theme/MDXContent/index.tsx +15 -0
  258. package/src/theme/MDXPage/index.tsx +33 -28
  259. package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
  260. package/src/theme/Navbar/Content/index.tsx +86 -0
  261. package/src/theme/Navbar/Content/styles.module.css +15 -0
  262. package/src/theme/Navbar/Layout/index.tsx +57 -0
  263. package/{lib-next/theme/Navbar → src/theme/Navbar/Layout}/styles.module.css +0 -13
  264. package/src/theme/Navbar/Logo/index.tsx +19 -0
  265. package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
  266. package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
  267. package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
  268. package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
  269. package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
  270. package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
  271. package/src/theme/Navbar/Search/index.tsx +15 -0
  272. package/src/theme/Navbar/Search/styles.module.css +20 -0
  273. package/src/theme/Navbar/index.tsx +6 -286
  274. package/src/theme/NavbarItem/ComponentTypes.tsx +32 -0
  275. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +2 -2
  276. package/src/theme/NavbarItem/DocNavbarItem.tsx +13 -32
  277. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +9 -49
  278. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +26 -33
  279. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +3 -10
  280. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +15 -3
  281. package/src/theme/NavbarItem/HtmlNavbarItem.tsx +32 -0
  282. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx +5 -9
  283. package/src/theme/NavbarItem/NavbarNavLink.tsx +41 -29
  284. package/src/theme/NavbarItem/SearchNavbarItem.tsx +6 -1
  285. package/src/theme/NavbarItem/index.tsx +9 -39
  286. package/src/theme/NavbarItem/utils.ts +5 -2
  287. package/src/theme/NotFound.tsx +38 -33
  288. package/src/theme/PaginatorNavLink/index.tsx +8 -2
  289. package/src/theme/SearchMetadata/index.tsx +9 -0
  290. package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +19 -33
  291. package/src/theme/SkipToContent/index.tsx +3 -29
  292. package/{lib-next/theme/TOCCollapsible/styles.module.css → src/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
  293. package/src/theme/TOCCollapsible/CollapseButton.tsx +35 -0
  294. package/src/theme/TOCCollapsible/index.module.css +31 -0
  295. package/src/theme/TOCCollapsible/index.tsx +4 -17
  296. package/src/theme/TOCItems/Tree.tsx +46 -0
  297. package/src/theme/TOCItems/index.tsx +2 -41
  298. package/src/theme/TabItem/index.tsx +7 -1
  299. package/src/theme/TabItem/styles.module.css +10 -0
  300. package/src/theme/Tabs/index.tsx +8 -9
  301. package/src/theme/Tabs/styles.module.css +4 -0
  302. package/src/theme/Tag/index.tsx +6 -8
  303. package/src/theme/TagsListInline/index.tsx +1 -1
  304. package/src/theme/ThemedImage/index.tsx +4 -3
  305. package/src/theme-classic.d.ts +600 -76
  306. package/src/translations.ts +12 -6
  307. package/src/validateThemeConfig.ts +90 -39
  308. package/lib/types.d.ts +0 -11
  309. package/lib-next/theme/DocPage/styles.module.css +0 -86
  310. package/lib-next/theme/DocSidebar/styles.module.css +0 -107
  311. package/lib-next/theme/Seo/index.js +0 -40
  312. package/lib-next/theme/Toggle/index.js +0 -100
  313. package/lib-next/theme/Toggle/styles.module.css +0 -106
  314. package/src/theme/DocPage/styles.module.css +0 -86
  315. package/src/theme/DocSidebar/styles.module.css +0 -107
  316. package/src/theme/Seo/index.tsx +0 -49
  317. package/src/theme/Toggle/index.tsx +0 -117
  318. package/src/theme/Toggle/styles.module.css +0 -106
  319. package/src/types.d.ts +0 -11
@@ -45,6 +45,10 @@ function getNavbarTranslationFile(navbar) {
45
45
  function translateNavbar(navbar, navbarTranslations) {
46
46
  var _navbarTranslations$t;
47
47
 
48
+ if (!navbarTranslations) {
49
+ return navbar;
50
+ }
51
+
48
52
  return { ...navbar,
49
53
  title: ((_navbarTranslations$t = navbarTranslations.title) === null || _navbarTranslations$t === void 0 ? void 0 : _navbarTranslations$t.message) ?? navbar.title,
50
54
  // TODO handle properly all the navbar item types here!
@@ -93,6 +97,10 @@ function getFooterTranslationFile(footer) {
93
97
  function translateFooter(footer, footerTranslations) {
94
98
  var _footerTranslations$c;
95
99
 
100
+ if (!footerTranslations) {
101
+ return footer;
102
+ }
103
+
96
104
  const links = isMultiColumnFooterLinks(footer.links) ? footer.links.map(link => {
97
105
  var _footerTranslations$;
98
106
 
@@ -137,10 +145,12 @@ function translateThemeConfig({
137
145
  themeConfig,
138
146
  translationFiles
139
147
  }) {
148
+ var _translationFilesMap$, _translationFilesMap$2;
149
+
140
150
  const translationFilesMap = _lodash.default.keyBy(translationFiles, f => f.path);
141
151
 
142
152
  return { ...themeConfig,
143
- navbar: translateNavbar(themeConfig.navbar, translationFilesMap.navbar.content),
144
- footer: themeConfig.footer ? translateFooter(themeConfig.footer, translationFilesMap.footer.content) : undefined
153
+ navbar: translateNavbar(themeConfig.navbar, (_translationFilesMap$ = translationFilesMap.navbar) === null || _translationFilesMap$ === void 0 ? void 0 : _translationFilesMap$.content),
154
+ footer: themeConfig.footer ? translateFooter(themeConfig.footer, (_translationFilesMap$2 = translationFilesMap.footer) === null || _translationFilesMap$2 === void 0 ? void 0 : _translationFilesMap$2.content) : undefined
145
155
  };
146
156
  }
@@ -6,8 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.ThemeConfigSchema = exports.DEFAULT_CONFIG = void 0;
7
7
  exports.validateThemeConfig = validateThemeConfig;
8
8
 
9
+ var _palenight = _interopRequireDefault(require("prism-react-renderer/themes/palenight"));
10
+
9
11
  var _utilsValidation = require("@docusaurus/utils-validation");
10
12
 
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+
11
15
  /**
12
16
  * Copyright (c) Facebook, Inc. and its affiliates.
13
17
  *
@@ -15,37 +19,46 @@ var _utilsValidation = require("@docusaurus/utils-validation");
15
19
  * LICENSE file in the root directory of this source tree.
16
20
  */
17
21
  const DEFAULT_DOCS_CONFIG = {
18
- versionPersistence: 'localStorage'
22
+ versionPersistence: 'localStorage',
23
+ sidebar: {
24
+ hideable: false,
25
+ autoCollapseCategories: false
26
+ }
19
27
  };
20
28
 
21
29
  const DocsSchema = _utilsValidation.Joi.object({
22
- versionPersistence: _utilsValidation.Joi.string().equal('localStorage', 'none').default(DEFAULT_DOCS_CONFIG.versionPersistence)
30
+ versionPersistence: _utilsValidation.Joi.string().equal('localStorage', 'none').default(DEFAULT_DOCS_CONFIG.versionPersistence),
31
+ sidebar: _utilsValidation.Joi.object({
32
+ hideable: _utilsValidation.Joi.bool().default(DEFAULT_DOCS_CONFIG.sidebar.hideable),
33
+ autoCollapseCategories: _utilsValidation.Joi.bool().default(DEFAULT_DOCS_CONFIG.sidebar.autoCollapseCategories)
34
+ }).default(DEFAULT_DOCS_CONFIG.sidebar)
23
35
  }).default(DEFAULT_DOCS_CONFIG);
24
36
 
25
37
  const DEFAULT_COLOR_MODE_CONFIG = {
26
38
  defaultMode: 'light',
27
39
  disableSwitch: false,
28
- respectPrefersColorScheme: false,
29
- switchConfig: {
30
- darkIcon: '🌜',
31
- darkIconStyle: {},
32
- lightIcon: '🌞',
33
- lightIconStyle: {}
34
- }
40
+ respectPrefersColorScheme: false
35
41
  };
36
42
  const DEFAULT_CONFIG = {
37
43
  colorMode: DEFAULT_COLOR_MODE_CONFIG,
38
44
  docs: DEFAULT_DOCS_CONFIG,
39
45
  metadata: [],
40
46
  prism: {
41
- additionalLanguages: []
47
+ additionalLanguages: [],
48
+ theme: _palenight.default,
49
+ magicComments: [{
50
+ className: 'theme-code-block-highlighted-line',
51
+ line: 'highlight-next-line',
52
+ block: {
53
+ start: 'highlight-start',
54
+ end: 'highlight-end'
55
+ }
56
+ }]
42
57
  },
43
58
  navbar: {
44
59
  hideOnScroll: false,
45
60
  items: []
46
61
  },
47
- hideableSidebar: false,
48
- autoCollapseSidebarCategories: false,
49
62
  tableOfContents: {
50
63
  minHeadingLevel: 2,
51
64
  maxHeadingLevel: 3
@@ -57,8 +70,9 @@ const NavbarItemPosition = _utilsValidation.Joi.string().equal('left', 'right').
57
70
 
58
71
  const NavbarItemBaseSchema = _utilsValidation.Joi.object({
59
72
  label: _utilsValidation.Joi.string(),
73
+ html: _utilsValidation.Joi.string(),
60
74
  className: _utilsValidation.Joi.string()
61
- }) // We allow any unknown attributes on the links (users may need additional
75
+ }).nand('html', 'label') // We allow any unknown attributes on the links (users may need additional
62
76
  // attributes like target, aria-role, data-customAttribute...)
63
77
  .unknown();
64
78
 
@@ -91,9 +105,24 @@ const DocSidebarItemSchema = NavbarItemBaseSchema.append({
91
105
  docsPluginId: _utilsValidation.Joi.string()
92
106
  });
93
107
 
108
+ const HtmlNavbarItemSchema = _utilsValidation.Joi.object({
109
+ className: _utilsValidation.Joi.string(),
110
+ type: _utilsValidation.Joi.string().equal('html').required(),
111
+ value: _utilsValidation.Joi.string().required()
112
+ }); // A temporary workaround to allow users to add custom navbar items
113
+ // See https://github.com/facebook/docusaurus/issues/7227
114
+
115
+
116
+ const CustomNavbarItemRegexp = /custom-.*/;
117
+
118
+ const CustomNavbarItemSchema = _utilsValidation.Joi.object({
119
+ type: _utilsValidation.Joi.string().regex(CustomNavbarItemRegexp).required()
120
+ }).unknown();
121
+
94
122
  const itemWithType = type => {
95
- // because equal(undefined) is not supported :/
96
- const typeSchema = type ? _utilsValidation.Joi.string().required().equal(type) : _utilsValidation.Joi.string().forbidden();
123
+ // Because equal(undefined) is not supported :/
124
+ const typeSchema = // eslint-disable-next-line no-nested-ternary
125
+ type instanceof RegExp ? _utilsValidation.Joi.string().required().regex(type) : type ? _utilsValidation.Joi.string().required().equal(type) : _utilsValidation.Joi.string().forbidden();
97
126
  return _utilsValidation.Joi.object({
98
127
  type: typeSchema
99
128
  }).unknown().required();
@@ -114,6 +143,12 @@ const DropdownSubitemSchema = _utilsValidation.Joi.object({
114
143
  }, {
115
144
  is: itemWithType(undefined),
116
145
  then: DefaultNavbarItemSchema
146
+ }, {
147
+ is: itemWithType('html'),
148
+ then: HtmlNavbarItemSchema
149
+ }, {
150
+ is: itemWithType(CustomNavbarItemRegexp),
151
+ then: CustomNavbarItemSchema
117
152
  }, {
118
153
  is: _utilsValidation.Joi.alternatives().try(itemWithType('dropdown'), itemWithType('docsVersionDropdown'), itemWithType('localeDropdown'), itemWithType('search')),
119
154
  then: _utilsValidation.Joi.forbidden().messages({
@@ -169,6 +204,12 @@ const NavbarItemSchema = _utilsValidation.Joi.object({
169
204
  }, {
170
205
  is: itemWithType('search'),
171
206
  then: SearchItemSchema
207
+ }, {
208
+ is: itemWithType('html'),
209
+ then: HtmlNavbarItemSchema
210
+ }, {
211
+ is: itemWithType(CustomNavbarItemRegexp),
212
+ then: CustomNavbarItemSchema
172
213
  }, {
173
214
  is: itemWithType(undefined),
174
215
  then: _utilsValidation.Joi.object().when('.', {
@@ -189,14 +230,10 @@ const ColorModeSchema = _utilsValidation.Joi.object({
189
230
  defaultMode: _utilsValidation.Joi.string().equal('dark', 'light').default(DEFAULT_COLOR_MODE_CONFIG.defaultMode),
190
231
  disableSwitch: _utilsValidation.Joi.bool().default(DEFAULT_COLOR_MODE_CONFIG.disableSwitch),
191
232
  respectPrefersColorScheme: _utilsValidation.Joi.bool().default(DEFAULT_COLOR_MODE_CONFIG.respectPrefersColorScheme),
192
- switchConfig: _utilsValidation.Joi.object({
193
- darkIcon: _utilsValidation.Joi.string().default(DEFAULT_COLOR_MODE_CONFIG.switchConfig.darkIcon),
194
- darkIconStyle: _utilsValidation.Joi.object().default(DEFAULT_COLOR_MODE_CONFIG.switchConfig.darkIconStyle),
195
- lightIcon: _utilsValidation.Joi.string().default(DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIcon),
196
- lightIconStyle: _utilsValidation.Joi.object().default(DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIconStyle)
197
- }).default(DEFAULT_COLOR_MODE_CONFIG.switchConfig)
198
- }).default(DEFAULT_COLOR_MODE_CONFIG); // schema can probably be improved
199
-
233
+ switchConfig: _utilsValidation.Joi.any().forbidden().messages({
234
+ 'any.unknown': 'colorMode.switchConfig is deprecated. If you want to customize the icons for light and dark mode, swizzle IconLightMode, IconDarkMode, or ColorModeToggle instead.'
235
+ })
236
+ }).default(DEFAULT_COLOR_MODE_CONFIG);
200
237
 
201
238
  const HtmlMetadataSchema = _utilsValidation.Joi.object({
202
239
  id: _utilsValidation.Joi.string(),
@@ -266,7 +303,7 @@ const ThemeConfigSchema = _utilsValidation.Joi.object({
266
303
  style: _utilsValidation.Joi.string().equal('dark', 'light').default('light'),
267
304
  logo: _utilsValidation.Joi.object({
268
305
  alt: _utilsValidation.Joi.string().allow(''),
269
- src: _utilsValidation.Joi.string(),
306
+ src: _utilsValidation.Joi.string().required(),
270
307
  srcDark: _utilsValidation.Joi.string(),
271
308
  // TODO infer this from reading the image
272
309
  width: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.string(), _utilsValidation.Joi.number()),
@@ -285,16 +322,28 @@ const ThemeConfigSchema = _utilsValidation.Joi.object({
285
322
  theme: _utilsValidation.Joi.object({
286
323
  plain: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required(),
287
324
  styles: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required()
288
- }),
325
+ }).default(DEFAULT_CONFIG.prism.theme),
289
326
  darkTheme: _utilsValidation.Joi.object({
290
327
  plain: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required(),
291
328
  styles: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required()
292
329
  }),
293
330
  defaultLanguage: _utilsValidation.Joi.string(),
294
- additionalLanguages: _utilsValidation.Joi.array().items(_utilsValidation.Joi.string()).default(DEFAULT_CONFIG.prism.additionalLanguages)
331
+ additionalLanguages: _utilsValidation.Joi.array().items(_utilsValidation.Joi.string()).default(DEFAULT_CONFIG.prism.additionalLanguages),
332
+ magicComments: _utilsValidation.Joi.array().items(_utilsValidation.Joi.object({
333
+ className: _utilsValidation.Joi.string().required(),
334
+ line: _utilsValidation.Joi.string(),
335
+ block: _utilsValidation.Joi.object({
336
+ start: _utilsValidation.Joi.string().required(),
337
+ end: _utilsValidation.Joi.string().required()
338
+ })
339
+ }).or('line', 'block')).default(DEFAULT_CONFIG.prism.magicComments)
295
340
  }).default(DEFAULT_CONFIG.prism).unknown(),
296
- hideableSidebar: _utilsValidation.Joi.bool().default(DEFAULT_CONFIG.hideableSidebar),
297
- autoCollapseSidebarCategories: _utilsValidation.Joi.bool().default(DEFAULT_CONFIG.autoCollapseSidebarCategories),
341
+ hideableSidebar: _utilsValidation.Joi.forbidden().messages({
342
+ 'any.unknown': 'themeConfig.hideableSidebar has been moved to themeConfig.docs.sidebar.hideable.'
343
+ }),
344
+ autoCollapseSidebarCategories: _utilsValidation.Joi.forbidden().messages({
345
+ 'any.unknown': 'themeConfig.autoCollapseSidebarCategories has been moved to themeConfig.docs.sidebar.autoCollapseCategories.'
346
+ }),
298
347
  sidebarCollapsible: _utilsValidation.Joi.forbidden().messages({
299
348
  'any.unknown': 'The themeConfig.sidebarCollapsible has been moved to docs plugin options. See: https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-docs'
300
349
  }),
@@ -4,110 +4,14 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import React, {useRef, useState} from 'react';
7
+ import React from 'react';
8
8
  import clsx from 'clsx';
9
9
  import {translate} from '@docusaurus/Translate';
10
+ import {ThemeClassNames, useBackToTopButton} from '@docusaurus/theme-common';
10
11
  import styles from './styles.module.css';
11
- import {
12
- ThemeClassNames,
13
- useScrollPosition,
14
- useLocationChange,
15
- } from '@docusaurus/theme-common';
16
- const threshold = 300; // Not all have support for smooth scrolling (particularly Safari mobile iOS)
17
- // TODO proper detection is currently unreliable!
18
- // see https://github.com/wessberg/scroll-behavior-polyfill/issues/16
19
-
20
- const SupportsNativeSmoothScrolling = false; // const SupportsNativeSmoothScrolling =
21
- // ExecutionEnvironment.canUseDOM &&
22
- // 'scrollBehavior' in document.documentElement.style;
23
-
24
- function smoothScrollTopNative() {
25
- window.scrollTo({
26
- top: 0,
27
- behavior: 'smooth',
28
- });
29
- return () => {
30
- // Nothing to cancel, it's natively cancelled if user tries to scroll down
31
- };
32
- }
33
-
34
- function smoothScrollTopPolyfill() {
35
- let raf = null;
36
-
37
- function rafRecursion() {
38
- const currentScroll = document.documentElement.scrollTop;
39
-
40
- if (currentScroll > 0) {
41
- raf = requestAnimationFrame(rafRecursion);
42
- window.scrollTo(0, Math.floor(currentScroll * 0.85));
43
- }
44
- }
45
-
46
- rafRecursion(); // Break the recursion. Prevents the user from "fighting" against that
47
- // recursion producing a weird UX
48
-
49
- return () => raf && cancelAnimationFrame(raf);
50
- }
51
-
52
- function useSmoothScrollToTop() {
53
- const lastCancelRef = useRef(null);
54
-
55
- function smoothScrollTop() {
56
- lastCancelRef.current = SupportsNativeSmoothScrolling
57
- ? smoothScrollTopNative()
58
- : smoothScrollTopPolyfill();
59
- }
60
-
61
- return {
62
- smoothScrollTop,
63
- cancelScrollToTop: () => lastCancelRef.current?.(),
64
- };
65
- }
66
-
67
12
  export default function BackToTopButton() {
68
- const [show, setShow] = useState(false);
69
- const isFocusedAnchor = useRef(false);
70
- const {smoothScrollTop, cancelScrollToTop} = useSmoothScrollToTop();
71
- useScrollPosition(({scrollY: scrollTop}, lastPosition) => {
72
- const lastScrollTop = lastPosition?.scrollY; // No lastScrollTop means component is just being mounted.
73
- // Not really a scroll event from the user, so we ignore it
74
-
75
- if (!lastScrollTop) {
76
- return;
77
- }
78
-
79
- if (isFocusedAnchor.current) {
80
- isFocusedAnchor.current = false;
81
- return;
82
- }
83
-
84
- const isScrollingUp = scrollTop < lastScrollTop;
85
-
86
- if (!isScrollingUp) {
87
- cancelScrollToTop();
88
- }
89
-
90
- if (scrollTop < threshold) {
91
- setShow(false);
92
- return;
93
- }
94
-
95
- if (isScrollingUp) {
96
- const documentHeight = document.documentElement.scrollHeight;
97
- const windowHeight = window.innerHeight;
98
-
99
- if (scrollTop + windowHeight < documentHeight) {
100
- setShow(true);
101
- }
102
- } else {
103
- setShow(false);
104
- }
105
- });
106
- useLocationChange((locationChangeEvent) => {
107
- if (locationChangeEvent.location.hash) {
108
- isFocusedAnchor.current = true;
109
- setShow(false);
110
- }
13
+ const {shown, scrollToTop} = useBackToTopButton({
14
+ threshold: 300,
111
15
  });
112
16
  return (
113
17
  <button
@@ -120,12 +24,10 @@ export default function BackToTopButton() {
120
24
  'clean-btn',
121
25
  ThemeClassNames.common.backToTopButton,
122
26
  styles.backToTopButton,
123
- {
124
- [styles.backToTopButtonShow]: show,
125
- },
27
+ shown && styles.backToTopButtonShow,
126
28
  )}
127
29
  type="button"
128
- onClick={() => smoothScrollTop()}
30
+ onClick={scrollToTop}
129
31
  />
130
32
  );
131
33
  }
@@ -8,6 +8,7 @@ import React from 'react';
8
8
  import Layout from '@theme/Layout';
9
9
  import Link from '@docusaurus/Link';
10
10
  import {translate} from '@docusaurus/Translate';
11
+ import {PageMetadata} from '@docusaurus/theme-common';
11
12
 
12
13
  function Year({year, posts}) {
13
14
  return (
@@ -45,7 +46,7 @@ function YearsSection({years}) {
45
46
  function listPostsByYears(blogPosts) {
46
47
  const postsByYear = blogPosts.reduceRight((posts, post) => {
47
48
  const year = post.metadata.date.split('-')[0];
48
- const yearPosts = posts.get(year) || [];
49
+ const yearPosts = posts.get(year) ?? [];
49
50
  return posts.set(year, [post, ...yearPosts]);
50
51
  }, new Map());
51
52
  return Array.from(postsByYear, ([year, posts]) => ({
@@ -67,14 +68,17 @@ export default function BlogArchive({archive}) {
67
68
  });
68
69
  const years = listPostsByYears(archive.blogPosts);
69
70
  return (
70
- <Layout title={title} description={description}>
71
- <header className="hero hero--primary">
72
- <div className="container">
73
- <h1 className="hero__title">{title}</h1>
74
- <p className="hero__subtitle">{description}</p>
75
- </div>
76
- </header>
77
- <main>{years.length > 0 && <YearsSection years={years} />}</main>
78
- </Layout>
71
+ <>
72
+ <PageMetadata title={title} description={description} />
73
+ <Layout>
74
+ <header className="hero hero--primary">
75
+ <div className="container">
76
+ <h1 className="hero__title">{title}</h1>
77
+ <p className="hero__subtitle">{description}</p>
78
+ </div>
79
+ </header>
80
+ <main>{years.length > 0 && <YearsSection years={years} />}</main>
81
+ </Layout>
82
+ </>
79
83
  );
80
84
  }
@@ -15,11 +15,7 @@ export default function BlogLayout(props) {
15
15
  <Layout {...layoutProps}>
16
16
  <div className="container margin-vert--lg">
17
17
  <div className="row">
18
- {hasSidebar && (
19
- <aside className="col col--3">
20
- <BlogSidebar sidebar={sidebar} />
21
- </aside>
22
- )}
18
+ <BlogSidebar sidebar={sidebar} />
23
19
  <main
24
20
  className={clsx('col', {
25
21
  'col--7': hasSidebar,
@@ -9,9 +9,16 @@ import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
9
9
  import BlogLayout from '@theme/BlogLayout';
10
10
  import BlogPostItem from '@theme/BlogPostItem';
11
11
  import BlogListPaginator from '@theme/BlogListPaginator';
12
- import {ThemeClassNames} from '@docusaurus/theme-common';
13
- export default function BlogListPage(props) {
14
- const {metadata, items, sidebar} = props;
12
+ import {
13
+ PageMetadata,
14
+ HtmlClassNameProvider,
15
+ ThemeClassNames,
16
+ } from '@docusaurus/theme-common';
17
+ import SearchMetadata from '@theme/SearchMetadata';
18
+ import clsx from 'clsx';
19
+
20
+ function BlogListPageMetadata(props) {
21
+ const {metadata} = props;
15
22
  const {
16
23
  siteConfig: {title: siteTitle},
17
24
  } = useDocusaurusContext();
@@ -19,16 +26,17 @@ export default function BlogListPage(props) {
19
26
  const isBlogOnlyMode = permalink === '/';
20
27
  const title = isBlogOnlyMode ? siteTitle : blogTitle;
21
28
  return (
22
- <BlogLayout
23
- title={title}
24
- description={blogDescription}
25
- wrapperClassName={ThemeClassNames.wrapper.blogPages}
26
- pageClassName={ThemeClassNames.page.blogListPage}
27
- searchMetadata={{
28
- // assign unique search tag to exclude this page from search results!
29
- tag: 'blog_posts_list',
30
- }}
31
- sidebar={sidebar}>
29
+ <>
30
+ <PageMetadata title={title} description={blogDescription} />
31
+ <SearchMetadata tag="blog_posts_list" />
32
+ </>
33
+ );
34
+ }
35
+
36
+ function BlogListPageContent(props) {
37
+ const {metadata, items, sidebar} = props;
38
+ return (
39
+ <BlogLayout sidebar={sidebar}>
32
40
  {items.map(({content: BlogPostContent}) => (
33
41
  <BlogPostItem
34
42
  key={BlogPostContent.metadata.permalink}
@@ -43,3 +51,16 @@ export default function BlogListPage(props) {
43
51
  </BlogLayout>
44
52
  );
45
53
  }
54
+
55
+ export default function BlogListPage(props) {
56
+ return (
57
+ <HtmlClassNameProvider
58
+ className={clsx(
59
+ ThemeClassNames.wrapper.blogPages,
60
+ ThemeClassNames.page.blogListPage,
61
+ )}>
62
+ <BlogListPageMetadata {...props} />
63
+ <BlogListPageContent {...props} />
64
+ </HtmlClassNameProvider>
65
+ );
66
+ }
@@ -18,34 +18,31 @@ export default function BlogListPaginator(props) {
18
18
  message: 'Blog list page navigation',
19
19
  description: 'The ARIA label for the blog pagination',
20
20
  })}>
21
- <div className="pagination-nav__item">
22
- {previousPage && (
23
- <PaginatorNavLink
24
- permalink={previousPage}
25
- title={
26
- <Translate
27
- id="theme.blog.paginator.newerEntries"
28
- description="The label used to navigate to the newer blog posts page (previous page)">
29
- Newer Entries
30
- </Translate>
31
- }
32
- />
33
- )}
34
- </div>
35
- <div className="pagination-nav__item pagination-nav__item--next">
36
- {nextPage && (
37
- <PaginatorNavLink
38
- permalink={nextPage}
39
- title={
40
- <Translate
41
- id="theme.blog.paginator.olderEntries"
42
- description="The label used to navigate to the older blog posts page (next page)">
43
- Older Entries
44
- </Translate>
45
- }
46
- />
47
- )}
48
- </div>
21
+ {previousPage && (
22
+ <PaginatorNavLink
23
+ permalink={previousPage}
24
+ title={
25
+ <Translate
26
+ id="theme.blog.paginator.newerEntries"
27
+ description="The label used to navigate to the newer blog posts page (previous page)">
28
+ Newer Entries
29
+ </Translate>
30
+ }
31
+ />
32
+ )}
33
+ {nextPage && (
34
+ <PaginatorNavLink
35
+ permalink={nextPage}
36
+ title={
37
+ <Translate
38
+ id="theme.blog.paginator.olderEntries"
39
+ description="The label used to navigate to the older blog posts page (next page)">
40
+ Older Entries
41
+ </Translate>
42
+ }
43
+ isNext
44
+ />
45
+ )}
49
46
  </nav>
50
47
  );
51
48
  }
@@ -6,15 +6,24 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import Link from '@docusaurus/Link';
9
- import styles from './styles.module.css';
9
+
10
+ function MaybeLink(props) {
11
+ if (props.href) {
12
+ return <Link {...props} />;
13
+ }
14
+
15
+ return <>{props.children}</>;
16
+ }
17
+
10
18
  export default function BlogPostAuthor({author}) {
11
- const {name, title, url, imageURL} = author;
19
+ const {name, title, url, imageURL, email} = author;
20
+ const link = url || (email && `mailto:${email}`) || undefined;
12
21
  return (
13
22
  <div className="avatar margin-bottom--sm">
14
23
  {imageURL && (
15
- <Link className="avatar__photo-link avatar__photo" href={url}>
16
- <img className={styles.image} src={imageURL} alt={name} />
17
- </Link>
24
+ <MaybeLink href={link} className="avatar__photo-link">
25
+ <img className="avatar__photo" src={imageURL} alt={name} />
26
+ </MaybeLink>
18
27
  )}
19
28
 
20
29
  {name && (
@@ -24,9 +33,9 @@ export default function BlogPostAuthor({author}) {
24
33
  itemScope
25
34
  itemType="https://schema.org/Person">
26
35
  <div className="avatar__name">
27
- <Link href={url} itemProp="url">
36
+ <MaybeLink href={link} itemProp="url">
28
37
  <span itemProp="name">{name}</span>
29
- </Link>
38
+ </MaybeLink>
30
39
  </div>
31
40
  {title && (
32
41
  <small className="avatar__subtitle" itemProp="description">
@@ -6,13 +6,12 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import clsx from 'clsx';
9
- import {MDXProvider} from '@mdx-js/react';
10
9
  import Translate, {translate} from '@docusaurus/Translate';
11
10
  import Link from '@docusaurus/Link';
12
11
  import {useBaseUrlUtils} from '@docusaurus/useBaseUrl';
13
12
  import {usePluralForm} from '@docusaurus/theme-common';
14
13
  import {blogPostContainerID} from '@docusaurus/utils-common';
15
- import MDXComponents from '@theme/MDXComponents';
14
+ import MDXContent from '@theme/MDXContent';
16
15
  import EditThisPage from '@theme/EditThisPage';
17
16
  import styles from './styles.module.css';
18
17
  import TagsListInline from '@theme/TagsListInline';
@@ -108,14 +107,15 @@ export default function BlogPostItem(props) {
108
107
  id={isBlogPostPage ? blogPostContainerID : undefined}
109
108
  className="markdown"
110
109
  itemProp="articleBody">
111
- <MDXProvider components={MDXComponents}>{children}</MDXProvider>
110
+ <MDXContent>{children}</MDXContent>
112
111
  </div>
113
112
 
114
113
  {(tagsExists || truncated) && (
115
114
  <footer
116
- className={clsx('row docusaurus-mt-lg', {
117
- [styles.blogPostDetailsFull]: isBlogPostPage,
118
- })}>
115
+ className={clsx(
116
+ 'row docusaurus-mt-lg',
117
+ isBlogPostPage && styles.blogPostDetailsFull,
118
+ )}>
119
119
  {tagsExists && (
120
120
  <div
121
121
  className={clsx('col', {
@@ -9,6 +9,15 @@
9
9
  font-size: 3rem;
10
10
  }
11
11
 
12
+ /**
13
+ Blog post title should be smaller on smaller devices
14
+ **/
15
+ @media (max-width: 576px) {
16
+ .blogPostTitle {
17
+ font-size: 2rem;
18
+ }
19
+ }
20
+
12
21
  .blogPostData {
13
22
  font-size: 0.9rem;
14
23
  }