@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
@@ -0,0 +1,44 @@
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
+ import React from 'react';
8
+ import clsx from 'clsx';
9
+ import BlogPostAuthor from '@theme/BlogPostAuthor';
10
+ import styles from './styles.module.css'; // Component responsible for the authors layout
11
+
12
+ export default function BlogPostAuthors({authors, assets}) {
13
+ const authorsCount = authors.length;
14
+
15
+ if (authorsCount === 0) {
16
+ return null;
17
+ }
18
+
19
+ const imageOnly = authors.every(({name}) => !name);
20
+ return (
21
+ <div
22
+ className={clsx(
23
+ 'margin-top--md margin-bottom--sm',
24
+ imageOnly ? styles.imageOnlyAuthorRow : 'row',
25
+ )}>
26
+ {authors.map((author, idx) => (
27
+ <div
28
+ className={clsx(
29
+ !imageOnly && 'col col--6',
30
+ imageOnly ? styles.imageOnlyAuthorCol : styles.authorCol,
31
+ )}
32
+ key={idx}>
33
+ <BlogPostAuthor
34
+ author={{
35
+ ...author,
36
+ // Handle author images using relative paths
37
+ imageURL: assets.authorsImageUrls[idx] ?? author.imageURL,
38
+ }}
39
+ />
40
+ </div>
41
+ ))}
42
+ </div>
43
+ );
44
+ }
@@ -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
+ }
@@ -6,13 +6,16 @@
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
- import MDXComponents from '@theme/MDXComponents';
13
- import Seo from '@theme/Seo';
11
+ import {useBaseUrlUtils} from '@docusaurus/useBaseUrl';
12
+ import {usePluralForm} from '@docusaurus/theme-common';
13
+ import {blogPostContainerID} from '@docusaurus/utils-common';
14
+ import MDXContent from '@theme/MDXContent';
15
+ import EditThisPage from '@theme/EditThisPage';
14
16
  import styles from './styles.module.css';
15
- import {usePluralForm} from '@docusaurus/theme-common'; // Very simple pluralization: probably good enough for now
17
+ import TagsListInline from '@theme/TagsListInline';
18
+ import BlogPostAuthors from '@theme/BlogPostAuthors'; // Very simple pluralization: probably good enough for now
16
19
 
17
20
  function useReadingTimePlural() {
18
21
  const {selectMessage} = usePluralForm();
@@ -35,117 +38,129 @@ function useReadingTimePlural() {
35
38
  };
36
39
  }
37
40
 
38
- function BlogPostItem(props) {
41
+ export default function BlogPostItem(props) {
39
42
  const readingTimePlural = useReadingTimePlural();
43
+ const {withBaseUrl} = useBaseUrlUtils();
40
44
  const {
41
45
  children,
42
46
  frontMatter,
47
+ assets,
43
48
  metadata,
44
49
  truncated,
45
50
  isBlogPostPage = false,
46
51
  } = props;
47
- const {date, formattedDate, permalink, tags, readingTime} = metadata;
48
- const {author, title, image, keywords} = frontMatter;
49
- const authorURL = frontMatter.author_url || frontMatter.authorURL;
50
- const authorTitle = frontMatter.author_title || frontMatter.authorTitle;
51
- const authorImageURL =
52
- frontMatter.author_image_url || frontMatter.authorImageURL;
53
-
54
- const renderPostHeader = () => {
55
- const TitleHeading = isBlogPostPage ? 'h1' : 'h2';
56
- return (
52
+ const {
53
+ date,
54
+ formattedDate,
55
+ permalink,
56
+ tags,
57
+ readingTime,
58
+ title,
59
+ editUrl,
60
+ authors,
61
+ } = metadata;
62
+ const image = assets.image ?? frontMatter.image;
63
+ const truncatedPost = !isBlogPostPage && truncated;
64
+ const tagsExists = tags.length > 0;
65
+ const TitleHeading = isBlogPostPage ? 'h1' : 'h2';
66
+ return (
67
+ <article
68
+ className={!isBlogPostPage ? 'margin-bottom--xl' : undefined}
69
+ itemProp="blogPost"
70
+ itemScope
71
+ itemType="http://schema.org/BlogPosting">
57
72
  <header>
58
- <TitleHeading
59
- className={clsx('margin-bottom--sm', styles.blogPostTitle)}>
60
- {isBlogPostPage ? title : <Link to={permalink}>{title}</Link>}
73
+ <TitleHeading className={styles.blogPostTitle} itemProp="headline">
74
+ {isBlogPostPage ? (
75
+ title
76
+ ) : (
77
+ <Link itemProp="url" to={permalink}>
78
+ {title}
79
+ </Link>
80
+ )}
61
81
  </TitleHeading>
62
- <div className="margin-vert--md">
63
- <time dateTime={date} className={styles.blogPostDate}>
82
+ <div className={clsx(styles.blogPostData, 'margin-vert--md')}>
83
+ <time dateTime={date} itemProp="datePublished">
64
84
  {formattedDate}
65
- {readingTime && (
66
- <>
67
- {' · '}
68
- {readingTimePlural(readingTime)}
69
- </>
70
- )}
71
85
  </time>
72
- </div>
73
- <div className="avatar margin-vert--md">
74
- {authorImageURL && (
75
- <Link className="avatar__photo-link avatar__photo" href={authorURL}>
76
- <img src={authorImageURL} alt={author} />
77
- </Link>
86
+
87
+ {typeof readingTime !== 'undefined' && (
88
+ <>
89
+ {' · '}
90
+ {readingTimePlural(readingTime)}
91
+ </>
78
92
  )}
79
- <div className="avatar__intro">
80
- {author && (
81
- <>
82
- <h4 className="avatar__name">
83
- <Link href={authorURL}>{author}</Link>
84
- </h4>
85
- <small className="avatar__subtitle">{authorTitle}</small>
86
- </>
87
- )}
88
- </div>
89
93
  </div>
94
+ <BlogPostAuthors authors={authors} assets={assets} />
90
95
  </header>
91
- );
92
- };
93
96
 
94
- return (
95
- <>
96
- <Seo
97
- {...{
98
- keywords,
99
- image,
100
- }}
101
- />
97
+ {image && (
98
+ <meta
99
+ itemProp="image"
100
+ content={withBaseUrl(image, {
101
+ absolute: true,
102
+ })}
103
+ />
104
+ )}
102
105
 
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>
106
+ <div // 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
121
+ className={clsx('col', {
122
+ 'col--9': truncatedPost,
123
+ })}>
124
+ <TagsListInline tags={tags} />
125
+ </div>
126
+ )}
127
+
128
+ {isBlogPostPage && editUrl && (
129
+ <div className="col margin-top--sm">
130
+ <EditThisPage editUrl={editUrl} />
131
+ </div>
132
+ )}
133
+
134
+ {truncatedPost && (
135
+ <div
136
+ className={clsx('col text--right', {
137
+ 'col--3': tagsExists,
138
+ })}>
139
+ <Link
140
+ to={metadata.permalink}
141
+ aria-label={translate(
142
+ {
143
+ message: 'Read more about {title}',
144
+ id: 'theme.blog.post.readMoreLabel',
145
+ description:
146
+ 'The ARIA label for the link to full blog posts from excerpts',
147
+ },
148
+ {
149
+ title,
150
+ },
151
+ )}>
152
+ <b>
113
153
  <Translate
114
- id="theme.tags.tagsListLabel"
115
- description="The label alongside a tag list">
116
- Tags:
154
+ id="theme.blog.post.readMore"
155
+ description="The label used in blog post item excerpts to link to full blog posts">
156
+ Read More
117
157
  </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
- </>
158
+ </b>
159
+ </Link>
160
+ </div>
161
+ )}
162
+ </footer>
163
+ )}
164
+ </article>
148
165
  );
149
166
  }
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
+ }
@@ -5,55 +5,98 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React from 'react';
8
- import Layout from '@theme/Layout';
8
+ import BlogLayout from '@theme/BlogLayout';
9
9
  import BlogPostItem from '@theme/BlogPostItem';
10
10
  import BlogPostPaginator from '@theme/BlogPostPaginator';
11
- import BlogSidebar from '@theme/BlogSidebar';
11
+ import {
12
+ PageMetadata,
13
+ HtmlClassNameProvider,
14
+ ThemeClassNames,
15
+ } from '@docusaurus/theme-common';
12
16
  import TOC from '@theme/TOC';
13
- import EditThisPage from '@theme/EditThisPage';
14
- import {ThemeClassNames} from '@docusaurus/theme-common';
17
+ import clsx from 'clsx';
15
18
 
16
- function BlogPostPage(props) {
17
- const {content: BlogPostContents, sidebar} = props;
18
- const {frontMatter, metadata} = BlogPostContents;
19
- const {title, description, nextItem, prevItem, editUrl} = metadata;
20
- const {hide_table_of_contents: hideTableOfContents} = frontMatter;
19
+ function BlogPostPageMetadata(props) {
20
+ const {content: BlogPostContents} = props;
21
+ const {assets, metadata} = BlogPostContents;
22
+ const {title, description, date, tags, authors, frontMatter} = metadata;
23
+ const {keywords} = frontMatter;
24
+ const image = assets.image ?? frontMatter.image;
21
25
  return (
22
- <Layout
26
+ <PageMetadata
23
27
  title={title}
24
28
  description={description}
25
- wrapperClassName={ThemeClassNames.wrapper.blogPages}
26
- pageClassName={ThemeClassNames.page.blogPostPage}>
27
- {BlogPostContents && (
28
- <div className="container margin-vert--lg">
29
- <div className="row">
30
- <div className="col col--3">
31
- <BlogSidebar sidebar={sidebar} />
32
- </div>
33
- <main className="col col--7">
34
- <BlogPostItem
35
- frontMatter={frontMatter}
36
- metadata={metadata}
37
- isBlogPostPage>
38
- <BlogPostContents />
39
- </BlogPostItem>
40
- <div>{editUrl && <EditThisPage editUrl={editUrl} />}</div>
41
- {(nextItem || prevItem) && (
42
- <div className="margin-vert--xl">
43
- <BlogPostPaginator nextItem={nextItem} prevItem={prevItem} />
44
- </div>
45
- )}
46
- </main>
47
- {!hideTableOfContents && BlogPostContents.toc && (
48
- <div className="col col--2">
49
- <TOC toc={BlogPostContents.toc} />
50
- </div>
51
- )}
52
- </div>
53
- </div>
29
+ keywords={keywords}
30
+ image={image}>
31
+ <meta property="og:type" content="article" />
32
+ <meta property="article:published_time" content={date} />
33
+ {/* TODO double check those article meta array syntaxes, see https://ogp.me/#array */}
34
+ {authors.some((author) => author.url) && (
35
+ <meta
36
+ property="article:author"
37
+ content={authors
38
+ .map((author) => author.url)
39
+ .filter(Boolean)
40
+ .join(',')}
41
+ />
42
+ )}
43
+ {tags.length > 0 && (
44
+ <meta
45
+ property="article:tag"
46
+ content={tags.map((tag) => tag.label).join(',')}
47
+ />
48
+ )}
49
+ </PageMetadata>
50
+ );
51
+ }
52
+
53
+ function BlogPostPageContent(props) {
54
+ const {content: BlogPostContents, sidebar} = props;
55
+ const {assets, metadata} = BlogPostContents;
56
+ const {nextItem, prevItem, frontMatter} = metadata;
57
+ const {
58
+ hide_table_of_contents: hideTableOfContents,
59
+ toc_min_heading_level: tocMinHeadingLevel,
60
+ toc_max_heading_level: tocMaxHeadingLevel,
61
+ } = frontMatter;
62
+ return (
63
+ <BlogLayout
64
+ sidebar={sidebar}
65
+ toc={
66
+ !hideTableOfContents &&
67
+ BlogPostContents.toc &&
68
+ BlogPostContents.toc.length > 0 ? (
69
+ <TOC
70
+ toc={BlogPostContents.toc}
71
+ minHeadingLevel={tocMinHeadingLevel}
72
+ maxHeadingLevel={tocMaxHeadingLevel}
73
+ />
74
+ ) : undefined
75
+ }>
76
+ <BlogPostItem
77
+ frontMatter={frontMatter}
78
+ assets={assets}
79
+ metadata={metadata}
80
+ isBlogPostPage>
81
+ <BlogPostContents />
82
+ </BlogPostItem>
83
+
84
+ {(nextItem || prevItem) && (
85
+ <BlogPostPaginator nextItem={nextItem} prevItem={prevItem} />
54
86
  )}
55
- </Layout>
87
+ </BlogLayout>
56
88
  );
57
89
  }
58
90
 
59
- export default BlogPostPage;
91
+ export default function BlogPostPage(props) {
92
+ return (
93
+ <HtmlClassNameProvider
94
+ className={clsx(
95
+ ThemeClassNames.wrapper.blogPages,
96
+ ThemeClassNames.page.blogPostPage,
97
+ )}>
98
+ <BlogPostPageMetadata {...props} />
99
+ <BlogPostPageContent {...props} />
100
+ </HtmlClassNameProvider>
101
+ );
102
+ }
@@ -6,52 +6,42 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import Translate, {translate} from '@docusaurus/Translate';
9
- import Link from '@docusaurus/Link';
10
-
11
- function BlogPostPaginator(props) {
9
+ import PaginatorNavLink from '@theme/PaginatorNavLink';
10
+ export default function BlogPostPaginator(props) {
12
11
  const {nextItem, prevItem} = props;
13
12
  return (
14
13
  <nav
15
- className="pagination-nav"
14
+ className="pagination-nav docusaurus-mt-lg"
16
15
  aria-label={translate({
17
16
  id: 'theme.blog.post.paginator.navAriaLabel',
18
17
  message: 'Blog post page navigation',
19
18
  description: 'The ARIA label for the blog posts pagination',
20
19
  })}>
21
- <div className="pagination-nav__item">
22
- {prevItem && (
23
- <Link className="pagination-nav__link" to={prevItem.permalink}>
24
- <div className="pagination-nav__sublabel">
25
- <Translate
26
- id="theme.blog.post.paginator.newerPost"
27
- description="The blog post button label to navigate to the newer/previous post">
28
- Newer Post
29
- </Translate>
30
- </div>
31
- <div className="pagination-nav__label">
32
- &laquo; {prevItem.title}
33
- </div>
34
- </Link>
35
- )}
36
- </div>
37
- <div className="pagination-nav__item pagination-nav__item--next">
38
- {nextItem && (
39
- <Link className="pagination-nav__link" to={nextItem.permalink}>
40
- <div className="pagination-nav__sublabel">
41
- <Translate
42
- id="theme.blog.post.paginator.olderPost"
43
- description="The blog post button label to navigate to the older/next post">
44
- Older Post
45
- </Translate>
46
- </div>
47
- <div className="pagination-nav__label">
48
- {nextItem.title} &raquo;
49
- </div>
50
- </Link>
51
- )}
52
- </div>
20
+ {prevItem && (
21
+ <PaginatorNavLink
22
+ {...prevItem}
23
+ subLabel={
24
+ <Translate
25
+ id="theme.blog.post.paginator.newerPost"
26
+ description="The blog post button label to navigate to the newer/previous post">
27
+ Newer Post
28
+ </Translate>
29
+ }
30
+ />
31
+ )}
32
+ {nextItem && (
33
+ <PaginatorNavLink
34
+ {...nextItem}
35
+ subLabel={
36
+ <Translate
37
+ id="theme.blog.post.paginator.olderPost"
38
+ description="The blog post button label to navigate to the older/next post">
39
+ Older Post
40
+ </Translate>
41
+ }
42
+ isNext
43
+ />
44
+ )}
53
45
  </nav>
54
46
  );
55
47
  }
56
-
57
- export default BlogPostPaginator;
@@ -0,0 +1,41 @@
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
+ import React from 'react';
8
+ import clsx from 'clsx';
9
+ import Link from '@docusaurus/Link';
10
+ import {translate} from '@docusaurus/Translate';
11
+ import styles from './styles.module.css';
12
+ export default function BlogSidebarDesktop({sidebar}) {
13
+ return (
14
+ <aside className="col col--3">
15
+ <nav
16
+ className={clsx(styles.sidebar, 'thin-scrollbar')}
17
+ aria-label={translate({
18
+ id: 'theme.blog.sidebar.navAriaLabel',
19
+ message: 'Blog recent posts navigation',
20
+ description: 'The ARIA label for recent posts in the blog sidebar',
21
+ })}>
22
+ <div className={clsx(styles.sidebarItemTitle, 'margin-bottom--md')}>
23
+ {sidebar.title}
24
+ </div>
25
+ <ul className={clsx(styles.sidebarItemList, 'clean-list')}>
26
+ {sidebar.items.map((item) => (
27
+ <li key={item.permalink} className={styles.sidebarItem}>
28
+ <Link
29
+ isNavLink
30
+ to={item.permalink}
31
+ className={styles.sidebarItemLink}
32
+ activeClassName={styles.sidebarItemLinkActive}>
33
+ {item.title}
34
+ </Link>
35
+ </li>
36
+ ))}
37
+ </ul>
38
+ </nav>
39
+ </aside>
40
+ );
41
+ }
@@ -6,7 +6,6 @@
6
6
  */
7
7
 
8
8
  .sidebar {
9
- display: inherit;
10
9
  max-height: calc(100vh - (var(--ifm-navbar-height) + 2rem));
11
10
  overflow-y: auto;
12
11
  position: sticky;
@@ -14,32 +13,32 @@
14
13
  }
15
14
 
16
15
  .sidebarItemTitle {
17
- margin-bottom: 0.5rem;
16
+ font-size: var(--ifm-h3-font-size);
17
+ font-weight: var(--ifm-font-weight-bold);
18
18
  }
19
19
 
20
20
  .sidebarItemList {
21
- overflow-y: auto;
22
21
  font-size: 0.9rem;
23
- padding-left: 0;
24
22
  }
25
23
 
26
24
  .sidebarItem {
27
- list-style-type: none;
28
- margin: 0.8rem 0;
25
+ margin-top: 0.7rem;
29
26
  }
30
27
 
31
28
  .sidebarItemLink {
32
29
  color: var(--ifm-font-color-base);
30
+ display: block;
33
31
  }
32
+
34
33
  .sidebarItemLink:hover {
35
- color: var(--ifm-color-primary);
36
34
  text-decoration: none;
37
35
  }
36
+
38
37
  .sidebarItemLinkActive {
39
- color: var(--ifm-color-primary);
38
+ color: var(--ifm-color-primary) !important;
40
39
  }
41
40
 
42
- @media only screen and (max-width: 996px) {
41
+ @media (max-width: 996px) {
43
42
  .sidebar {
44
43
  display: none;
45
44
  }