@docusaurus/theme-classic 2.0.0-beta.1decd6f80 → 2.0.0-beta.20

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 (552) hide show
  1. package/README.md +2 -2
  2. package/lib/admonitions.css +39 -0
  3. package/lib/deps.d.ts +13 -0
  4. package/lib/getSwizzleConfig.js +243 -0
  5. package/lib/index.js +65 -54
  6. package/lib/nprogress.css +41 -0
  7. package/lib/nprogress.js +46 -0
  8. package/lib/prism-include-languages.js +9 -5
  9. package/lib/theme-classic.d.ts +1279 -0
  10. package/lib/translations.js +52 -36
  11. package/lib/validateThemeConfig.js +298 -248
  12. package/lib-next/theme/Admonition/index.js +101 -0
  13. package/lib-next/theme/AnnouncementBar/index.js +10 -22
  14. package/lib-next/theme/AnnouncementBar/styles.module.css +26 -35
  15. package/lib-next/theme/BackToTopButton/index.js +33 -0
  16. package/lib-next/theme/BackToTopButton/styles.module.css +44 -0
  17. package/lib-next/theme/BlogArchivePage/index.js +84 -0
  18. package/lib-next/theme/BlogLayout/index.js +33 -0
  19. package/lib-next/theme/BlogListPage/index.js +45 -35
  20. package/lib-next/theme/BlogListPaginator/index.js +27 -33
  21. package/lib-next/theme/BlogPostAuthor/index.js +49 -0
  22. package/lib-next/theme/BlogPostAuthors/index.js +44 -0
  23. package/lib-next/theme/BlogPostAuthors/styles.module.css +21 -0
  24. package/lib-next/theme/BlogPostItem/index.js +112 -97
  25. package/lib-next/theme/BlogPostItem/styles.module.css +14 -1
  26. package/lib-next/theme/BlogPostPage/index.js +84 -41
  27. package/lib-next/theme/BlogPostPaginator/index.js +28 -38
  28. package/lib-next/theme/BlogSidebar/Desktop/index.js +41 -0
  29. package/{lib/theme/BlogSidebar → lib-next/theme/BlogSidebar/Desktop}/styles.module.css +8 -9
  30. package/lib-next/theme/BlogSidebar/Mobile/index.js +36 -0
  31. package/lib-next/theme/BlogSidebar/index.js +11 -24
  32. package/lib-next/theme/BlogTagsListPage/index.js +24 -71
  33. package/lib-next/theme/BlogTagsPostsPage/index.js +55 -62
  34. package/lib-next/theme/CodeBlock/Container/index.js +29 -0
  35. package/lib-next/theme/CodeBlock/Container/styles.module.css +14 -0
  36. package/lib-next/theme/CodeBlock/Content/Element.js +23 -0
  37. package/lib-next/theme/CodeBlock/Content/String.js +104 -0
  38. package/{src/theme/CodeBlock → lib-next/theme/CodeBlock/Content}/styles.module.css +47 -32
  39. package/lib-next/theme/CodeBlock/CopyButton/index.js +61 -0
  40. package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  41. package/lib-next/theme/CodeBlock/Line/index.js +49 -0
  42. package/lib-next/theme/CodeBlock/Line/styles.module.css +51 -0
  43. package/lib-next/theme/CodeBlock/WordWrapButton/index.js +40 -0
  44. package/lib-next/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  45. package/lib-next/theme/CodeBlock/index.js +28 -255
  46. package/lib-next/theme/ColorModeToggle/index.js +62 -0
  47. package/lib-next/theme/ColorModeToggle/styles.module.css +35 -0
  48. package/lib-next/theme/Details/index.js +21 -0
  49. package/lib-next/theme/Details/styles.module.css +13 -0
  50. package/lib-next/theme/DocBreadcrumbs/index.js +120 -0
  51. package/{lib/theme/Heading/styles.css → lib-next/theme/DocBreadcrumbs/styles.module.css} +9 -13
  52. package/lib-next/theme/DocCard/index.js +93 -0
  53. package/lib-next/theme/DocCard/styles.module.css +34 -0
  54. package/lib-next/theme/DocCardList/index.js +33 -0
  55. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +75 -0
  56. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +26 -0
  57. package/lib-next/theme/DocItem/index.js +99 -86
  58. package/lib-next/theme/DocItem/styles.module.css +12 -12
  59. package/lib-next/theme/DocItemFooter/index.js +79 -0
  60. package/{lib/theme/Layout/styles.css → lib-next/theme/DocItemFooter/styles.module.css} +8 -11
  61. package/lib-next/theme/DocPage/Layout/Main/index.js +29 -0
  62. package/lib-next/theme/DocPage/Layout/Main/styles.module.css +28 -0
  63. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/index.js +34 -0
  64. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  65. package/lib-next/theme/DocPage/Layout/Sidebar/index.js +68 -0
  66. package/lib-next/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  67. package/lib-next/theme/DocPage/Layout/index.js +34 -0
  68. package/{lib/theme/BlogPostItem/styles.module.css → lib-next/theme/DocPage/Layout/index.module.css} +5 -4
  69. package/lib-next/theme/DocPage/index.js +40 -133
  70. package/lib-next/theme/DocPaginator/index.js +29 -41
  71. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/index.js +34 -0
  72. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  73. package/lib-next/theme/DocSidebar/Desktop/Content/index.js +46 -0
  74. package/lib-next/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  75. package/lib-next/theme/DocSidebar/Desktop/index.js +36 -0
  76. package/lib-next/theme/DocSidebar/Desktop/styles.module.css +50 -0
  77. package/lib-next/theme/DocSidebar/Mobile/index.js +49 -0
  78. package/lib-next/theme/DocSidebar/index.js +13 -333
  79. package/lib-next/theme/DocSidebarItem/Category.js +197 -0
  80. package/lib-next/theme/DocSidebarItem/Html.js +27 -0
  81. package/lib-next/theme/DocSidebarItem/Html.module.css +13 -0
  82. package/lib-next/theme/DocSidebarItem/Link.js +53 -0
  83. package/lib-next/theme/DocSidebarItem/Link.module.css +10 -0
  84. package/lib-next/theme/DocSidebarItem/index.js +23 -0
  85. package/lib-next/theme/DocSidebarItems/index.js +23 -0
  86. package/lib-next/theme/DocTagDocListPage/index.js +96 -0
  87. package/lib-next/theme/DocTagsListPage/index.js +40 -0
  88. package/lib-next/theme/DocVersionBadge/index.js +34 -0
  89. package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +55 -37
  90. package/lib-next/theme/EditThisPage/index.js +6 -1
  91. package/lib-next/theme/ErrorPageContent.js +35 -0
  92. package/lib-next/theme/Footer/Copyright/index.js +18 -0
  93. package/lib-next/theme/Footer/Layout/index.js +26 -0
  94. package/lib-next/theme/Footer/LinkItem/index.js +33 -0
  95. package/lib-next/theme/Footer/Links/MultiColumn/index.js +47 -0
  96. package/lib-next/theme/Footer/Links/Simple/index.js +41 -0
  97. package/lib-next/theme/Footer/Links/index.js +17 -0
  98. package/lib-next/theme/Footer/Logo/index.js +38 -0
  99. package/lib-next/theme/Footer/{styles.module.css → Logo/styles.module.css} +2 -1
  100. package/lib-next/theme/Footer/index.js +12 -100
  101. package/lib-next/theme/Heading/index.js +31 -38
  102. package/lib-next/theme/Heading/styles.module.css +27 -2
  103. package/lib-next/theme/IconArrow/index.js +3 -6
  104. package/lib-next/theme/IconClose/index.js +23 -0
  105. package/lib-next/theme/IconDarkMode/index.js +17 -0
  106. package/lib-next/theme/IconEdit/index.js +5 -10
  107. package/lib-next/theme/IconExternalLink/index.js +23 -0
  108. package/lib-next/theme/{LastUpdated → IconExternalLink}/styles.module.css +2 -2
  109. package/lib-next/theme/IconHome/index.js +17 -0
  110. package/lib-next/theme/IconLanguage/index.js +5 -8
  111. package/lib-next/theme/IconLightMode/index.js +17 -0
  112. package/lib-next/theme/IconMenu/index.js +8 -9
  113. package/lib-next/theme/LastUpdated/index.js +36 -39
  114. package/lib-next/theme/Layout/index.js +19 -16
  115. package/lib-next/theme/Layout/styles.css +6 -0
  116. package/lib-next/theme/LayoutProviders/index.js +22 -10
  117. package/lib-next/theme/Logo/index.js +21 -16
  118. package/lib-next/theme/{ThemeContext.js → MDXComponents/A.js} +4 -2
  119. package/lib-next/theme/MDXComponents/Code.js +28 -0
  120. package/lib-next/theme/MDXComponents/Details.js +20 -0
  121. package/lib-next/theme/MDXComponents/Head.js +26 -0
  122. package/lib-next/theme/MDXComponents/Heading.js +11 -0
  123. package/lib-next/theme/MDXComponents/Img.js +24 -0
  124. package/{lib/theme/LastUpdated/styles.module.css → lib-next/theme/MDXComponents/Img.module.css} +2 -2
  125. package/lib-next/theme/MDXComponents/Pre.js +18 -0
  126. package/lib-next/theme/MDXComponents/Ul.js +21 -0
  127. package/lib-next/theme/MDXComponents/index.js +22 -42
  128. package/lib-next/theme/MDXContent/index.js +12 -0
  129. package/lib-next/theme/MDXPage/index.js +38 -39
  130. package/{lib/theme/IconEdit → lib-next/theme/MDXPage}/styles.module.css +2 -3
  131. package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
  132. package/lib-next/theme/Navbar/Content/index.js +75 -0
  133. package/lib-next/theme/Navbar/Content/styles.module.css +15 -0
  134. package/lib-next/theme/Navbar/Layout/index.js +54 -0
  135. package/{src/theme/Navbar → lib-next/theme/Navbar/Layout}/styles.module.css +1 -7
  136. package/lib-next/theme/Navbar/Logo/index.js +17 -0
  137. package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
  138. package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
  139. package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
  140. package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
  141. package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
  142. package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
  143. package/lib-next/theme/Navbar/Search/index.js +11 -0
  144. package/lib-next/theme/Navbar/Search/styles.module.css +20 -0
  145. package/lib-next/theme/Navbar/index.js +7 -137
  146. package/lib-next/theme/NavbarItem/ComponentTypes.js +27 -0
  147. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +33 -186
  148. package/lib-next/theme/NavbarItem/DocNavbarItem.js +14 -14
  149. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +41 -0
  150. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +55 -45
  151. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +2 -6
  152. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +167 -0
  153. package/lib-next/theme/NavbarItem/HtmlNavbarItem.js +30 -0
  154. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +16 -22
  155. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  156. package/lib-next/theme/NavbarItem/NavbarNavLink.js +84 -0
  157. package/lib-next/theme/NavbarItem/SearchNavbarItem.js +6 -1
  158. package/lib-next/theme/NavbarItem/index.js +18 -25
  159. package/lib-next/theme/NavbarItem/utils.js +10 -0
  160. package/lib-next/theme/NotFound.js +40 -34
  161. package/lib-next/theme/PaginatorNavLink/index.js +23 -0
  162. package/lib-next/theme/SearchBar.js +1 -1
  163. package/lib-next/theme/SearchMetadata/index.js +34 -0
  164. package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +31 -46
  165. package/lib-next/theme/SkipToContent/index.js +7 -32
  166. package/lib-next/theme/SkipToContent/styles.module.css +8 -3
  167. package/lib-next/theme/TOC/index.js +12 -39
  168. package/lib-next/theme/TOC/styles.module.css +2 -2
  169. package/lib-next/theme/TOCCollapsible/CollapseButton.js +29 -0
  170. package/lib-next/theme/TOCCollapsible/CollapseButton.module.css +29 -0
  171. package/lib-next/theme/TOCCollapsible/index.js +42 -0
  172. package/lib-next/theme/TOCCollapsible/index.module.css +31 -0
  173. package/lib-next/theme/TOCInline/index.js +10 -31
  174. package/lib-next/theme/TOCItems/Tree.js +40 -0
  175. package/lib-next/theme/TOCItems/index.js +54 -0
  176. package/lib-next/theme/TabItem/index.js +4 -5
  177. package/lib-next/theme/TabItem/styles.module.css +10 -0
  178. package/lib-next/theme/Tabs/__tests__/index.test.js +146 -0
  179. package/lib-next/theme/Tabs/index.js +111 -53
  180. package/lib-next/theme/Tabs/styles.module.css +4 -13
  181. package/lib-next/theme/Tag/index.js +23 -0
  182. package/lib-next/theme/Tag/styles.module.css +70 -0
  183. package/lib-next/theme/TagsListByLetter/index.js +40 -0
  184. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  185. package/lib-next/theme/TagsListInline/index.js +31 -0
  186. package/{lib/theme/Heading → lib-next/theme/TagsListInline}/styles.module.css +7 -2
  187. package/lib-next/theme/ThemedImage/index.js +10 -14
  188. package/lib-next/theme/ThemedImage/styles.module.css +9 -2
  189. package/lib-next/theme/prism-include-languages.js +17 -15
  190. package/package.json +37 -31
  191. package/src/admonitions.css +39 -0
  192. package/src/deps.d.ts +13 -0
  193. package/src/getSwizzleConfig.ts +252 -0
  194. package/src/index.ts +76 -75
  195. package/src/nprogress.css +41 -0
  196. package/src/nprogress.ts +31 -0
  197. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  198. package/src/theme/Admonition/index.tsx +106 -0
  199. package/src/theme/AnnouncementBar/index.tsx +11 -20
  200. package/src/theme/AnnouncementBar/styles.module.css +26 -35
  201. package/src/theme/BackToTopButton/index.tsx +34 -0
  202. package/src/theme/BackToTopButton/styles.module.css +44 -0
  203. package/src/theme/BlogArchivePage/index.tsx +92 -0
  204. package/src/theme/BlogLayout/index.tsx +38 -0
  205. package/src/theme/BlogListPage/index.tsx +45 -35
  206. package/src/theme/BlogListPaginator/index.tsx +27 -32
  207. package/src/theme/BlogPostAuthor/index.tsx +50 -0
  208. package/src/theme/BlogPostAuthors/index.tsx +49 -0
  209. package/src/theme/BlogPostAuthors/styles.module.css +21 -0
  210. package/src/theme/BlogPostItem/index.tsx +103 -93
  211. package/src/theme/BlogPostItem/styles.module.css +14 -1
  212. package/src/theme/BlogPostPage/index.tsx +84 -42
  213. package/src/theme/BlogPostPaginator/index.tsx +28 -37
  214. package/src/theme/BlogSidebar/Desktop/index.tsx +45 -0
  215. package/{lib-next/theme/BlogSidebar → src/theme/BlogSidebar/Desktop}/styles.module.css +8 -9
  216. package/src/theme/BlogSidebar/Mobile/index.tsx +38 -0
  217. package/src/theme/BlogSidebar/index.tsx +10 -24
  218. package/src/theme/BlogTagsListPage/index.tsx +24 -71
  219. package/src/theme/BlogTagsPostsPage/index.tsx +57 -65
  220. package/src/theme/CodeBlock/Container/index.tsx +35 -0
  221. package/src/theme/CodeBlock/Container/styles.module.css +14 -0
  222. package/src/theme/CodeBlock/Content/Element.tsx +30 -0
  223. package/src/theme/CodeBlock/Content/String.tsx +111 -0
  224. package/{lib/theme/CodeBlock → src/theme/CodeBlock/Content}/styles.module.css +47 -32
  225. package/src/theme/CodeBlock/CopyButton/index.tsx +67 -0
  226. package/src/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  227. package/src/theme/CodeBlock/Line/index.tsx +48 -0
  228. package/src/theme/CodeBlock/Line/styles.module.css +51 -0
  229. package/src/theme/CodeBlock/WordWrapButton/index.tsx +49 -0
  230. package/src/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  231. package/src/theme/CodeBlock/index.tsx +29 -252
  232. package/src/theme/ColorModeToggle/index.tsx +67 -0
  233. package/src/theme/ColorModeToggle/styles.module.css +35 -0
  234. package/src/theme/Details/index.tsx +25 -0
  235. package/src/theme/Details/styles.module.css +13 -0
  236. package/src/theme/DocBreadcrumbs/index.tsx +140 -0
  237. package/src/theme/{Heading/styles.css → DocBreadcrumbs/styles.module.css} +9 -13
  238. package/src/theme/DocCard/index.tsx +116 -0
  239. package/src/theme/DocCard/styles.module.css +34 -0
  240. package/src/theme/DocCardList/index.tsx +36 -0
  241. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +86 -0
  242. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +26 -0
  243. package/src/theme/DocItem/index.tsx +93 -79
  244. package/src/theme/DocItem/styles.module.css +12 -12
  245. package/src/theme/DocItemFooter/index.tsx +91 -0
  246. package/src/theme/DocItemFooter/styles.module.css +18 -0
  247. package/src/theme/DocPage/Layout/Main/index.tsx +37 -0
  248. package/src/theme/DocPage/Layout/Main/styles.module.css +28 -0
  249. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx +40 -0
  250. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  251. package/src/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  252. package/src/theme/DocPage/Layout/Sidebar/index.tsx +74 -0
  253. package/{lib-next/theme/hooks/styles.css → src/theme/DocPage/Layout/index.module.css} +7 -2
  254. package/src/theme/DocPage/Layout/index.tsx +39 -0
  255. package/src/theme/DocPage/index.tsx +40 -146
  256. package/src/theme/DocPaginator/index.tsx +29 -40
  257. package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
  258. package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  259. package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
  260. package/src/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  261. package/src/theme/DocSidebar/Desktop/index.tsx +40 -0
  262. package/src/theme/DocSidebar/Desktop/styles.module.css +50 -0
  263. package/src/theme/DocSidebar/Mobile/index.tsx +54 -0
  264. package/src/theme/DocSidebar/index.tsx +14 -343
  265. package/src/theme/DocSidebarItem/Category.tsx +210 -0
  266. package/src/theme/DocSidebarItem/Html.module.css +13 -0
  267. package/src/theme/DocSidebarItem/Html.tsx +34 -0
  268. package/src/theme/DocSidebarItem/Link.module.css +10 -0
  269. package/src/theme/DocSidebarItem/Link.tsx +58 -0
  270. package/src/theme/DocSidebarItem/index.tsx +27 -0
  271. package/src/theme/DocSidebarItems/index.tsx +27 -0
  272. package/src/theme/DocTagDocListPage/index.tsx +96 -0
  273. package/src/theme/DocTagsListPage/index.tsx +44 -0
  274. package/src/theme/DocVersionBadge/index.tsx +35 -0
  275. package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +78 -49
  276. package/src/theme/EditThisPage/index.tsx +6 -1
  277. package/src/theme/ErrorPageContent.tsx +41 -0
  278. package/src/theme/Footer/Copyright/index.tsx +20 -0
  279. package/src/theme/Footer/Layout/index.tsx +34 -0
  280. package/src/theme/Footer/LinkItem/index.tsx +36 -0
  281. package/src/theme/Footer/Links/MultiColumn/index.tsx +51 -0
  282. package/src/theme/Footer/Links/Simple/index.tsx +42 -0
  283. package/src/theme/Footer/Links/index.tsx +21 -0
  284. package/src/theme/Footer/Logo/index.tsx +41 -0
  285. package/{lib/theme/Footer → src/theme/Footer/Logo}/styles.module.css +2 -1
  286. package/src/theme/Footer/index.tsx +13 -113
  287. package/src/theme/Heading/index.tsx +33 -39
  288. package/src/theme/Heading/styles.module.css +27 -2
  289. package/src/theme/IconArrow/index.tsx +3 -5
  290. package/src/theme/IconClose/index.tsx +26 -0
  291. package/src/theme/IconDarkMode/index.tsx +20 -0
  292. package/src/theme/IconEdit/index.tsx +8 -9
  293. package/src/theme/IconExternalLink/index.tsx +30 -0
  294. package/src/theme/IconExternalLink/styles.module.css +10 -0
  295. package/src/theme/IconHome/index.tsx +20 -0
  296. package/src/theme/IconLanguage/index.tsx +6 -8
  297. package/src/theme/IconLightMode/index.tsx +20 -0
  298. package/src/theme/IconMenu/index.tsx +4 -9
  299. package/src/theme/LastUpdated/index.tsx +36 -39
  300. package/src/theme/Layout/index.tsx +19 -15
  301. package/src/theme/Layout/styles.css +6 -0
  302. package/src/theme/LayoutProviders/index.tsx +22 -10
  303. package/src/theme/Logo/index.tsx +21 -15
  304. package/src/theme/{ThemeContext.ts → MDXComponents/A.tsx} +5 -6
  305. package/src/theme/MDXComponents/Code.tsx +37 -0
  306. package/src/theme/MDXComponents/Details.tsx +25 -0
  307. package/src/theme/MDXComponents/Head.tsx +29 -0
  308. package/src/theme/MDXComponents/Heading.tsx +14 -0
  309. package/src/theme/{LastUpdated/styles.module.css → MDXComponents/Img.module.css} +2 -2
  310. package/src/theme/MDXComponents/Img.tsx +26 -0
  311. package/src/theme/MDXComponents/Pre.tsx +22 -0
  312. package/src/theme/MDXComponents/Ul.tsx +24 -0
  313. package/src/theme/MDXComponents/index.tsx +23 -42
  314. package/src/theme/MDXContent/index.tsx +15 -0
  315. package/src/theme/MDXPage/index.tsx +39 -39
  316. package/src/theme/MDXPage/styles.module.css +10 -0
  317. package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
  318. package/src/theme/Navbar/Content/index.tsx +86 -0
  319. package/src/theme/Navbar/Content/styles.module.css +15 -0
  320. package/src/theme/Navbar/Layout/index.tsx +57 -0
  321. package/{lib-next/theme/Navbar → src/theme/Navbar/Layout}/styles.module.css +1 -7
  322. package/src/theme/Navbar/Logo/index.tsx +19 -0
  323. package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
  324. package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
  325. package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
  326. package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
  327. package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
  328. package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
  329. package/src/theme/Navbar/Search/index.tsx +15 -0
  330. package/src/theme/Navbar/Search/styles.module.css +20 -0
  331. package/src/theme/Navbar/index.tsx +7 -147
  332. package/src/theme/NavbarItem/ComponentTypes.tsx +32 -0
  333. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +37 -194
  334. package/src/theme/NavbarItem/DocNavbarItem.tsx +17 -18
  335. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +44 -0
  336. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +60 -51
  337. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +5 -8
  338. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +193 -0
  339. package/src/theme/NavbarItem/HtmlNavbarItem.tsx +32 -0
  340. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +19 -17
  341. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  342. package/src/theme/NavbarItem/NavbarNavLink.tsx +80 -0
  343. package/src/theme/NavbarItem/SearchNavbarItem.tsx +6 -1
  344. package/src/theme/NavbarItem/index.tsx +23 -30
  345. package/src/theme/NavbarItem/utils.ts +13 -0
  346. package/src/theme/NotFound.tsx +40 -33
  347. package/src/theme/PaginatorNavLink/index.tsx +26 -0
  348. package/src/theme/SearchBar.tsx +2 -1
  349. package/src/theme/SearchMetadata/index.tsx +43 -0
  350. package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +31 -40
  351. package/src/theme/SkipToContent/index.tsx +7 -32
  352. package/src/theme/SkipToContent/styles.module.css +8 -3
  353. package/src/theme/TOC/index.tsx +13 -44
  354. package/src/theme/TOC/styles.module.css +2 -2
  355. package/src/theme/TOCCollapsible/CollapseButton.module.css +29 -0
  356. package/src/theme/TOCCollapsible/CollapseButton.tsx +35 -0
  357. package/src/theme/TOCCollapsible/index.module.css +31 -0
  358. package/src/theme/TOCCollapsible/index.tsx +45 -0
  359. package/src/theme/TOCInline/index.tsx +14 -35
  360. package/src/theme/TOCItems/Tree.tsx +46 -0
  361. package/src/theme/TOCItems/index.tsx +61 -0
  362. package/src/theme/TabItem/index.tsx +12 -4
  363. package/src/theme/TabItem/styles.module.css +10 -0
  364. package/src/theme/Tabs/index.tsx +120 -62
  365. package/src/theme/Tabs/styles.module.css +4 -13
  366. package/src/theme/Tag/index.tsx +27 -0
  367. package/src/theme/Tag/styles.module.css +70 -0
  368. package/src/theme/TagsListByLetter/index.tsx +43 -0
  369. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  370. package/src/theme/TagsListInline/index.tsx +35 -0
  371. package/src/theme/TagsListInline/styles.module.css +15 -0
  372. package/src/theme/ThemedImage/index.tsx +12 -13
  373. package/src/theme/ThemedImage/styles.module.css +9 -2
  374. package/src/theme/prism-include-languages.ts +20 -15
  375. package/src/theme-classic.d.ts +1279 -0
  376. package/src/translations.ts +84 -58
  377. package/src/validateThemeConfig.ts +448 -0
  378. package/babel.config.js +0 -35
  379. package/codeTranslations/README.md +0 -20
  380. package/codeTranslations/ar.json +0 -55
  381. package/codeTranslations/base.json +0 -108
  382. package/codeTranslations/da.json +0 -55
  383. package/codeTranslations/de.json +0 -55
  384. package/codeTranslations/es.json +0 -55
  385. package/codeTranslations/fa.json +0 -55
  386. package/codeTranslations/fil.json +0 -55
  387. package/codeTranslations/fr.json +0 -55
  388. package/codeTranslations/he.json +0 -55
  389. package/codeTranslations/hi.json +0 -55
  390. package/codeTranslations/ja.json +0 -55
  391. package/codeTranslations/ko.json +0 -55
  392. package/codeTranslations/pl.json +0 -55
  393. package/codeTranslations/pt-BR.json +0 -55
  394. package/codeTranslations/pt-PT.json +0 -55
  395. package/codeTranslations/ru.json +0 -55
  396. package/codeTranslations/tr.json +0 -55
  397. package/codeTranslations/vi.json +0 -55
  398. package/codeTranslations/zh-Hans.json +0 -55
  399. package/codeTranslations/zh-Hant.json +0 -55
  400. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  401. package/lib/__tests__/translations.test.js +0 -112
  402. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  403. package/lib/theme/AnnouncementBar/index.js +0 -74
  404. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  405. package/lib/theme/BlogListPage/index.js +0 -71
  406. package/lib/theme/BlogListPaginator/index.js +0 -63
  407. package/lib/theme/BlogPostItem/index.js +0 -152
  408. package/lib/theme/BlogPostPage/index.js +0 -75
  409. package/lib/theme/BlogPostPaginator/index.js +0 -64
  410. package/lib/theme/BlogSidebar/index.js +0 -43
  411. package/lib/theme/BlogTagsListPage/index.js +0 -81
  412. package/lib/theme/BlogTagsPostsPage/index.js +0 -104
  413. package/lib/theme/CodeBlock/index.js +0 -253
  414. package/lib/theme/DocItem/index.js +0 -120
  415. package/lib/theme/DocItem/styles.module.css +0 -28
  416. package/lib/theme/DocPage/index.js +0 -141
  417. package/lib/theme/DocPage/styles.module.css +0 -98
  418. package/lib/theme/DocPaginator/index.js +0 -63
  419. package/lib/theme/DocSidebar/index.js +0 -307
  420. package/lib/theme/DocSidebar/styles.module.css +0 -138
  421. package/lib/theme/DocVersionSuggestions/index.js +0 -111
  422. package/lib/theme/EditThisPage/index.js +0 -31
  423. package/lib/theme/Footer/index.js +0 -108
  424. package/lib/theme/Heading/index.js +0 -60
  425. package/lib/theme/IconArrow/index.js +0 -28
  426. package/lib/theme/IconEdit/index.js +0 -34
  427. package/lib/theme/IconLanguage/index.js +0 -29
  428. package/lib/theme/IconMenu/index.js +0 -31
  429. package/lib/theme/LastUpdated/index.js +0 -65
  430. package/lib/theme/Layout/index.js +0 -64
  431. package/lib/theme/LayoutHead/index.js +0 -142
  432. package/lib/theme/LayoutProviders/index.js +0 -34
  433. package/lib/theme/Logo/index.js +0 -59
  434. package/lib/theme/MDXComponents/index.js +0 -65
  435. package/lib/theme/MDXPage/index.js +0 -68
  436. package/lib/theme/Navbar/index.js +0 -147
  437. package/lib/theme/Navbar/styles.module.css +0 -20
  438. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -195
  439. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -55
  440. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -75
  441. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  442. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  443. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  444. package/lib/theme/NavbarItem/index.js +0 -54
  445. package/lib/theme/NotFound.js +0 -50
  446. package/lib/theme/SearchBar.js +0 -15
  447. package/lib/theme/SearchMetadatas/index.js +0 -33
  448. package/lib/theme/Seo/index.js +0 -50
  449. package/lib/theme/SkipToContent/index.js +0 -61
  450. package/lib/theme/SkipToContent/styles.module.css +0 -16
  451. package/lib/theme/TOC/index.js +0 -59
  452. package/lib/theme/TOC/styles.module.css +0 -23
  453. package/lib/theme/TOCInline/index.js +0 -53
  454. package/lib/theme/TOCInline/styles.module.css +0 -12
  455. package/lib/theme/TabItem/index.js +0 -32
  456. package/lib/theme/Tabs/index.js +0 -150
  457. package/lib/theme/Tabs/styles.module.css +0 -23
  458. package/lib/theme/ThemeContext.js +0 -21
  459. package/lib/theme/ThemeProvider/index.js +0 -38
  460. package/lib/theme/ThemedImage/index.js +0 -48
  461. package/lib/theme/ThemedImage/styles.module.css +0 -11
  462. package/lib/theme/Toggle/index.js +0 -106
  463. package/lib/theme/Toggle/styles.module.css +0 -114
  464. package/lib/theme/UserPreferencesContext.js +0 -18
  465. package/lib/theme/UserPreferencesProvider/index.js +0 -44
  466. package/lib/theme/hooks/styles.css +0 -10
  467. package/lib/theme/hooks/useAnnouncementBar.js +0 -63
  468. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  469. package/lib/theme/hooks/useDocs.js +0 -18
  470. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  471. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  472. package/lib/theme/hooks/useLocationHash.js +0 -28
  473. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  474. package/lib/theme/hooks/usePrismTheme.js +0 -36
  475. package/lib/theme/hooks/useScrollPosition.js +0 -49
  476. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  477. package/lib/theme/hooks/useTabGroupChoice.js +0 -53
  478. package/lib/theme/hooks/useTheme.js +0 -99
  479. package/lib/theme/hooks/useThemeContext.js +0 -31
  480. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  481. package/lib/theme/hooks/useWindowSize.js +0 -55
  482. package/lib/theme/prism-include-languages.js +0 -39
  483. package/lib/types.d.ts +0 -600
  484. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  485. package/lib-next/__tests__/translations.test.js +0 -128
  486. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  487. package/lib-next/index.js +0 -198
  488. package/lib-next/theme/CodeBlock/styles.module.css +0 -71
  489. package/lib-next/theme/DocPage/styles.module.css +0 -98
  490. package/lib-next/theme/DocSidebar/styles.module.css +0 -138
  491. package/lib-next/theme/Heading/styles.css +0 -23
  492. package/lib-next/theme/SearchMetadatas/index.js +0 -20
  493. package/lib-next/theme/Seo/index.js +0 -37
  494. package/lib-next/theme/ThemeProvider/index.js +0 -25
  495. package/lib-next/theme/Toggle/index.js +0 -95
  496. package/lib-next/theme/Toggle/styles.module.css +0 -114
  497. package/lib-next/theme/UserPreferencesContext.js +0 -9
  498. package/lib-next/theme/UserPreferencesProvider/index.js +0 -28
  499. package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
  500. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  501. package/lib-next/theme/hooks/useDocs.js +0 -10
  502. package/lib-next/theme/hooks/useHideableNavbar.js +0 -79
  503. package/lib-next/theme/hooks/useKeyboardNavigation.js +0 -35
  504. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  505. package/lib-next/theme/hooks/useLockBodyScroll.js +0 -18
  506. package/lib-next/theme/hooks/usePrismTheme.js +0 -20
  507. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  508. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  509. package/lib-next/theme/hooks/useTabGroupChoice.js +0 -41
  510. package/lib-next/theme/hooks/useTheme.js +0 -82
  511. package/lib-next/theme/hooks/useThemeContext.js +0 -22
  512. package/lib-next/theme/hooks/useUserPreferencesContext.js +0 -22
  513. package/lib-next/theme/hooks/useWindowSize.js +0 -45
  514. package/lib-next/translations.js +0 -145
  515. package/lib-next/types.d.ts +0 -600
  516. package/lib-next/validateThemeConfig.js +0 -317
  517. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  518. package/src/__tests__/translations.test.ts +0 -116
  519. package/src/__tests__/validateThemeConfig.test.js +0 -333
  520. package/src/prism-include-languages.js +0 -11
  521. package/src/theme/BlogSidebar/styles.module.css +0 -46
  522. package/src/theme/DocPage/styles.module.css +0 -98
  523. package/src/theme/DocSidebar/styles.module.css +0 -138
  524. package/src/theme/Footer/styles.module.css +0 -15
  525. package/src/theme/SearchMetadatas/index.tsx +0 -28
  526. package/src/theme/Seo/index.tsx +0 -47
  527. package/src/theme/ThemeProvider/index.tsx +0 -24
  528. package/src/theme/Toggle/index.tsx +0 -113
  529. package/src/theme/Toggle/styles.module.css +0 -114
  530. package/src/theme/UserPreferencesContext.ts +0 -12
  531. package/src/theme/UserPreferencesProvider/index.tsx +0 -32
  532. package/src/theme/hooks/styles.css +0 -10
  533. package/src/theme/hooks/useAnnouncementBar.ts +0 -58
  534. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  535. package/src/theme/hooks/useDocs.ts +0 -11
  536. package/src/theme/hooks/useHideableNavbar.ts +0 -85
  537. package/src/theme/hooks/useKeyboardNavigation.ts +0 -39
  538. package/src/theme/hooks/useLocationHash.ts +0 -25
  539. package/src/theme/hooks/useLockBodyScroll.ts +0 -20
  540. package/src/theme/hooks/usePrismTheme.ts +0 -22
  541. package/src/theme/hooks/useScrollPosition.ts +0 -45
  542. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  543. package/src/theme/hooks/useTabGroupChoice.ts +0 -46
  544. package/src/theme/hooks/useTheme.ts +0 -92
  545. package/src/theme/hooks/useThemeContext.ts +0 -23
  546. package/src/theme/hooks/useUserPreferencesContext.ts +0 -25
  547. package/src/theme/hooks/useWindowSize.ts +0 -51
  548. package/src/types.d.ts +0 -600
  549. package/src/validateThemeConfig.js +0 -317
  550. package/tsconfig.json +0 -12
  551. package/update-code-translations.js +0 -239
  552. package/update-code-translations.test.js +0 -33
@@ -6,11 +6,11 @@
6
6
  */
7
7
 
8
8
  import React from 'react';
9
- import Link from '@docusaurus/Link';
10
9
  import Translate, {translate} from '@docusaurus/Translate';
10
+ import PaginatorNavLink from '@theme/PaginatorNavLink';
11
11
  import type {Props} from '@theme/BlogListPaginator';
12
12
 
13
- function BlogListPaginator(props: Props): JSX.Element {
13
+ export default function BlogListPaginator(props: Props): JSX.Element {
14
14
  const {metadata} = props;
15
15
  const {previousPage, nextPage} = metadata;
16
16
 
@@ -22,36 +22,31 @@ function BlogListPaginator(props: Props): JSX.Element {
22
22
  message: 'Blog list page navigation',
23
23
  description: 'The ARIA label for the blog pagination',
24
24
  })}>
25
- <div className="pagination-nav__item">
26
- {previousPage && (
27
- <Link className="pagination-nav__link" to={previousPage}>
28
- <div className="pagination-nav__label">
29
- &laquo;{' '}
30
- <Translate
31
- id="theme.blog.paginator.newerEntries"
32
- description="The label used to navigate to the newer blog posts page (previous page)">
33
- Newer Entries
34
- </Translate>
35
- </div>
36
- </Link>
37
- )}
38
- </div>
39
- <div className="pagination-nav__item pagination-nav__item--next">
40
- {nextPage && (
41
- <Link className="pagination-nav__link" to={nextPage}>
42
- <div className="pagination-nav__label">
43
- <Translate
44
- id="theme.blog.paginator.olderEntries"
45
- description="The label used to navigate to the older blog posts page (next page)">
46
- Older Entries
47
- </Translate>{' '}
48
- &raquo;
49
- </div>
50
- </Link>
51
- )}
52
- </div>
25
+ {previousPage && (
26
+ <PaginatorNavLink
27
+ permalink={previousPage}
28
+ title={
29
+ <Translate
30
+ id="theme.blog.paginator.newerEntries"
31
+ description="The label used to navigate to the newer blog posts page (previous page)">
32
+ Newer Entries
33
+ </Translate>
34
+ }
35
+ />
36
+ )}
37
+ {nextPage && (
38
+ <PaginatorNavLink
39
+ permalink={nextPage}
40
+ title={
41
+ <Translate
42
+ id="theme.blog.paginator.olderEntries"
43
+ description="The label used to navigate to the older blog posts page (next page)">
44
+ Older Entries
45
+ </Translate>
46
+ }
47
+ isNext
48
+ />
49
+ )}
53
50
  </nav>
54
51
  );
55
52
  }
56
-
57
- export default BlogListPaginator;
@@ -0,0 +1,50 @@
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 Link, {type Props as LinkProps} from '@docusaurus/Link';
10
+ import type {Props} from '@theme/BlogPostAuthor';
11
+
12
+ function MaybeLink(props: LinkProps): JSX.Element {
13
+ if (props.href) {
14
+ return <Link {...props} />;
15
+ }
16
+ return <>{props.children}</>;
17
+ }
18
+
19
+ export default function BlogPostAuthor({author}: Props): JSX.Element {
20
+ const {name, title, url, imageURL, email} = author;
21
+ const link = url || (email && `mailto:${email}`) || undefined;
22
+ return (
23
+ <div className="avatar margin-bottom--sm">
24
+ {imageURL && (
25
+ <MaybeLink href={link} className="avatar__photo-link">
26
+ <img className="avatar__photo" src={imageURL} alt={name} />
27
+ </MaybeLink>
28
+ )}
29
+
30
+ {name && (
31
+ <div
32
+ className="avatar__intro"
33
+ itemProp="author"
34
+ itemScope
35
+ itemType="https://schema.org/Person">
36
+ <div className="avatar__name">
37
+ <MaybeLink href={link} itemProp="url">
38
+ <span itemProp="name">{name}</span>
39
+ </MaybeLink>
40
+ </div>
41
+ {title && (
42
+ <small className="avatar__subtitle" itemProp="description">
43
+ {title}
44
+ </small>
45
+ )}
46
+ </div>
47
+ )}
48
+ </div>
49
+ );
50
+ }
@@ -0,0 +1,49 @@
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 type {Props} from '@theme/BlogPostAuthors';
11
+ import BlogPostAuthor from '@theme/BlogPostAuthor';
12
+
13
+ import styles from './styles.module.css';
14
+
15
+ // Component responsible for the authors layout
16
+ export default function BlogPostAuthors({
17
+ authors,
18
+ assets,
19
+ }: Props): JSX.Element | null {
20
+ const authorsCount = authors.length;
21
+ if (authorsCount === 0) {
22
+ return null;
23
+ }
24
+ const imageOnly = authors.every(({name}) => !name);
25
+ return (
26
+ <div
27
+ className={clsx(
28
+ 'margin-top--md margin-bottom--sm',
29
+ imageOnly ? styles.imageOnlyAuthorRow : 'row',
30
+ )}>
31
+ {authors.map((author, idx) => (
32
+ <div
33
+ className={clsx(
34
+ !imageOnly && 'col col--6',
35
+ imageOnly ? styles.imageOnlyAuthorCol : styles.authorCol,
36
+ )}
37
+ key={idx}>
38
+ <BlogPostAuthor
39
+ author={{
40
+ ...author,
41
+ // Handle author images using relative paths
42
+ imageURL: assets.authorsImageUrls[idx] ?? author.imageURL,
43
+ }}
44
+ />
45
+ </div>
46
+ ))}
47
+ </div>
48
+ );
49
+ }
@@ -0,0 +1,21 @@
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
+ .authorCol {
9
+ max-width: inherit !important;
10
+ flex-grow: 1 !important;
11
+ }
12
+
13
+ .imageOnlyAuthorRow {
14
+ display: flex;
15
+ flex-flow: row wrap;
16
+ }
17
+
18
+ .imageOnlyAuthorCol {
19
+ margin-left: 0.3rem;
20
+ margin-right: 0.3rem;
21
+ }
@@ -7,16 +7,18 @@
7
7
 
8
8
  import React from 'react';
9
9
  import clsx from 'clsx';
10
- import {MDXProvider} from '@mdx-js/react';
11
10
  import Translate, {translate} from '@docusaurus/Translate';
12
11
  import Link from '@docusaurus/Link';
13
- import MDXComponents from '@theme/MDXComponents';
14
- import Seo from '@theme/Seo';
12
+ import {useBaseUrlUtils} from '@docusaurus/useBaseUrl';
13
+ import {usePluralForm} from '@docusaurus/theme-common';
14
+ import {blogPostContainerID} from '@docusaurus/utils-common';
15
+ import MDXContent from '@theme/MDXContent';
16
+ import EditThisPage from '@theme/EditThisPage';
15
17
  import type {Props} from '@theme/BlogPostItem';
16
18
 
17
19
  import styles from './styles.module.css';
18
-
19
- import {usePluralForm} from '@docusaurus/theme-common';
20
+ import TagsListInline from '@theme/TagsListInline';
21
+ import BlogPostAuthors from '@theme/BlogPostAuthors';
20
22
 
21
23
  // Very simple pluralization: probably good enough for now
22
24
  function useReadingTimePlural() {
@@ -38,114 +40,122 @@ function useReadingTimePlural() {
38
40
  };
39
41
  }
40
42
 
41
- function BlogPostItem(props: Props): JSX.Element {
43
+ export default function BlogPostItem(props: Props): JSX.Element {
42
44
  const readingTimePlural = useReadingTimePlural();
45
+ const {withBaseUrl} = useBaseUrlUtils();
43
46
  const {
44
47
  children,
45
48
  frontMatter,
49
+ assets,
46
50
  metadata,
47
51
  truncated,
48
52
  isBlogPostPage = false,
49
53
  } = props;
50
- const {date, formattedDate, permalink, tags, readingTime} = metadata;
51
- const {author, title, image, keywords} = frontMatter;
52
-
53
- const authorURL = frontMatter.author_url || frontMatter.authorURL;
54
- const authorTitle = frontMatter.author_title || frontMatter.authorTitle;
55
- const authorImageURL =
56
- frontMatter.author_image_url || frontMatter.authorImageURL;
54
+ const {
55
+ date,
56
+ formattedDate,
57
+ permalink,
58
+ tags,
59
+ readingTime,
60
+ title,
61
+ editUrl,
62
+ authors,
63
+ } = metadata;
57
64
 
58
- const renderPostHeader = () => {
59
- const TitleHeading = isBlogPostPage ? 'h1' : 'h2';
65
+ const image = assets.image ?? frontMatter.image;
66
+ const truncatedPost = !isBlogPostPage && truncated;
67
+ const tagsExists = tags.length > 0;
68
+ const TitleHeading = isBlogPostPage ? 'h1' : 'h2';
60
69
 
61
- return (
70
+ return (
71
+ <article
72
+ className={!isBlogPostPage ? 'margin-bottom--xl' : undefined}
73
+ itemProp="blogPost"
74
+ itemScope
75
+ itemType="http://schema.org/BlogPosting">
62
76
  <header>
63
- <TitleHeading
64
- className={clsx('margin-bottom--sm', styles.blogPostTitle)}>
65
- {isBlogPostPage ? title : <Link to={permalink}>{title}</Link>}
77
+ <TitleHeading className={styles.blogPostTitle} itemProp="headline">
78
+ {isBlogPostPage ? (
79
+ title
80
+ ) : (
81
+ <Link itemProp="url" to={permalink}>
82
+ {title}
83
+ </Link>
84
+ )}
66
85
  </TitleHeading>
67
- <div className="margin-vert--md">
68
- <time dateTime={date} className={styles.blogPostDate}>
86
+ <div className={clsx(styles.blogPostData, 'margin-vert--md')}>
87
+ <time dateTime={date} itemProp="datePublished">
69
88
  {formattedDate}
70
- {readingTime && (
71
- <>
72
- {' · '}
73
- {readingTimePlural(readingTime)}
74
- </>
75
- )}
76
89
  </time>
77
- </div>
78
- <div className="avatar margin-vert--md">
79
- {authorImageURL && (
80
- <Link className="avatar__photo-link avatar__photo" href={authorURL}>
81
- <img src={authorImageURL} alt={author} />
82
- </Link>
90
+
91
+ {typeof readingTime !== 'undefined' && (
92
+ <>
93
+ {' · '}
94
+ {readingTimePlural(readingTime)}
95
+ </>
83
96
  )}
84
- <div className="avatar__intro">
85
- {author && (
86
- <>
87
- <h4 className="avatar__name">
88
- <Link href={authorURL}>{author}</Link>
89
- </h4>
90
- <small className="avatar__subtitle">{authorTitle}</small>
91
- </>
92
- )}
93
- </div>
94
97
  </div>
98
+ <BlogPostAuthors authors={authors} assets={assets} />
95
99
  </header>
96
- );
97
- };
98
100
 
99
- return (
100
- <>
101
- <Seo {...{keywords, image}} />
101
+ {image && (
102
+ <meta itemProp="image" content={withBaseUrl(image, {absolute: true})} />
103
+ )}
102
104
 
103
- <article className={!isBlogPostPage ? 'margin-bottom--xl' : undefined}>
104
- {renderPostHeader()}
105
- <div className="markdown">
106
- <MDXProvider components={MDXComponents}>{children}</MDXProvider>
107
- </div>
108
- {(tags.length > 0 || truncated) && (
109
- <footer className="row margin-vert--lg">
110
- {tags.length > 0 && (
111
- <div className="col">
112
- <strong>
105
+ <div
106
+ // This ID is used for the feed generation to locate the main content
107
+ id={isBlogPostPage ? blogPostContainerID : undefined}
108
+ className="markdown"
109
+ itemProp="articleBody">
110
+ <MDXContent>{children}</MDXContent>
111
+ </div>
112
+
113
+ {(tagsExists || truncated) && (
114
+ <footer
115
+ className={clsx(
116
+ 'row docusaurus-mt-lg',
117
+ isBlogPostPage && styles.blogPostDetailsFull,
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
+ )}>
147
+ <b>
113
148
  <Translate
114
- id="theme.tags.tagsListLabel"
115
- description="The label alongside a tag list">
116
- 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
117
152
  </Translate>
118
- </strong>
119
- {tags.map(({label, permalink: tagPermalink}) => (
120
- <Link
121
- key={tagPermalink}
122
- className="margin-horiz--sm"
123
- to={tagPermalink}>
124
- {label}
125
- </Link>
126
- ))}
127
- </div>
128
- )}
129
- {truncated && (
130
- <div className="col text--right">
131
- <Link
132
- to={metadata.permalink}
133
- aria-label={`Read more about ${title}`}>
134
- <strong>
135
- <Translate
136
- id="theme.blog.post.readMore"
137
- description="The label used in blog post item excerpts to link to full blog posts">
138
- Read More
139
- </Translate>
140
- </strong>
141
- </Link>
142
- </div>
143
- )}
144
- </footer>
145
- )}
146
- </article>
147
- </>
153
+ </b>
154
+ </Link>
155
+ </div>
156
+ )}
157
+ </footer>
158
+ )}
159
+ </article>
148
160
  );
149
161
  }
150
-
151
- export default BlogPostItem;
@@ -9,6 +9,19 @@
9
9
  font-size: 3rem;
10
10
  }
11
11
 
12
- .blogPostDate {
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
+
21
+ .blogPostData {
13
22
  font-size: 0.9rem;
14
23
  }
24
+
25
+ .blogPostDetailsFull {
26
+ flex-direction: column;
27
+ }
@@ -6,57 +6,99 @@
6
6
  */
7
7
 
8
8
  import React from 'react';
9
- import Layout from '@theme/Layout';
9
+ import BlogLayout from '@theme/BlogLayout';
10
10
  import BlogPostItem from '@theme/BlogPostItem';
11
11
  import BlogPostPaginator from '@theme/BlogPostPaginator';
12
12
  import type {Props} from '@theme/BlogPostPage';
13
- import BlogSidebar from '@theme/BlogSidebar';
13
+ import {
14
+ PageMetadata,
15
+ HtmlClassNameProvider,
16
+ ThemeClassNames,
17
+ } from '@docusaurus/theme-common';
14
18
  import TOC from '@theme/TOC';
15
- import EditThisPage from '@theme/EditThisPage';
16
- import {ThemeClassNames} from '@docusaurus/theme-common';
17
-
18
- function BlogPostPage(props: Props): JSX.Element {
19
- const {content: BlogPostContents, sidebar} = props;
20
- const {frontMatter, metadata} = BlogPostContents;
21
- const {title, description, nextItem, prevItem, editUrl} = metadata;
22
- const {hide_table_of_contents: hideTableOfContents} = frontMatter;
19
+ import clsx from 'clsx';
23
20
 
21
+ function BlogPostPageMetadata(props: Props): JSX.Element {
22
+ const {content: BlogPostContents} = props;
23
+ const {assets, metadata} = BlogPostContents;
24
+ const {title, description, date, tags, authors, frontMatter} = metadata;
25
+ const {keywords} = frontMatter;
26
+ const image = assets.image ?? frontMatter.image;
24
27
  return (
25
- <Layout
28
+ <PageMetadata
26
29
  title={title}
27
30
  description={description}
28
- wrapperClassName={ThemeClassNames.wrapper.blogPages}
29
- pageClassName={ThemeClassNames.page.blogPostPage}>
30
- {BlogPostContents && (
31
- <div className="container margin-vert--lg">
32
- <div className="row">
33
- <div className="col col--3">
34
- <BlogSidebar sidebar={sidebar} />
35
- </div>
36
- <main className="col col--7">
37
- <BlogPostItem
38
- frontMatter={frontMatter}
39
- metadata={metadata}
40
- isBlogPostPage>
41
- <BlogPostContents />
42
- </BlogPostItem>
43
- <div>{editUrl && <EditThisPage editUrl={editUrl} />}</div>
44
- {(nextItem || prevItem) && (
45
- <div className="margin-vert--xl">
46
- <BlogPostPaginator nextItem={nextItem} prevItem={prevItem} />
47
- </div>
48
- )}
49
- </main>
50
- {!hideTableOfContents && BlogPostContents.toc && (
51
- <div className="col col--2">
52
- <TOC toc={BlogPostContents.toc} />
53
- </div>
54
- )}
55
- </div>
56
- </div>
31
+ keywords={keywords}
32
+ image={image}>
33
+ <meta property="og:type" content="article" />
34
+ <meta property="article:published_time" content={date} />
35
+ {/* TODO double check those article meta array syntaxes, see https://ogp.me/#array */}
36
+ {authors.some((author) => author.url) && (
37
+ <meta
38
+ property="article:author"
39
+ content={authors
40
+ .map((author) => author.url)
41
+ .filter(Boolean)
42
+ .join(',')}
43
+ />
57
44
  )}
58
- </Layout>
45
+ {tags.length > 0 && (
46
+ <meta
47
+ property="article:tag"
48
+ content={tags.map((tag) => tag.label).join(',')}
49
+ />
50
+ )}
51
+ </PageMetadata>
59
52
  );
60
53
  }
61
54
 
62
- export default BlogPostPage;
55
+ function BlogPostPageContent(props: Props): JSX.Element {
56
+ const {content: BlogPostContents, sidebar} = props;
57
+ const {assets, metadata} = BlogPostContents;
58
+ const {nextItem, prevItem, frontMatter} = metadata;
59
+ const {
60
+ hide_table_of_contents: hideTableOfContents,
61
+ toc_min_heading_level: tocMinHeadingLevel,
62
+ toc_max_heading_level: tocMaxHeadingLevel,
63
+ } = frontMatter;
64
+ return (
65
+ <BlogLayout
66
+ sidebar={sidebar}
67
+ toc={
68
+ !hideTableOfContents &&
69
+ BlogPostContents.toc &&
70
+ BlogPostContents.toc.length > 0 ? (
71
+ <TOC
72
+ toc={BlogPostContents.toc}
73
+ minHeadingLevel={tocMinHeadingLevel}
74
+ maxHeadingLevel={tocMaxHeadingLevel}
75
+ />
76
+ ) : undefined
77
+ }>
78
+ <BlogPostItem
79
+ frontMatter={frontMatter}
80
+ assets={assets}
81
+ metadata={metadata}
82
+ isBlogPostPage>
83
+ <BlogPostContents />
84
+ </BlogPostItem>
85
+
86
+ {(nextItem || prevItem) && (
87
+ <BlogPostPaginator nextItem={nextItem} prevItem={prevItem} />
88
+ )}
89
+ </BlogLayout>
90
+ );
91
+ }
92
+
93
+ export default function BlogPostPage(props: Props): JSX.Element {
94
+ return (
95
+ <HtmlClassNameProvider
96
+ className={clsx(
97
+ ThemeClassNames.wrapper.blogPages,
98
+ ThemeClassNames.page.blogPostPage,
99
+ )}>
100
+ <BlogPostPageMetadata {...props} />
101
+ <BlogPostPageContent {...props} />
102
+ </HtmlClassNameProvider>
103
+ );
104
+ }