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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/lib/admonitions.css +4 -0
  2. package/lib/default.css +3038 -0
  3. package/lib/getSwizzleConfig.js +177 -36
  4. package/lib/index.js +10 -15
  5. package/lib/nprogress.css +41 -0
  6. package/lib/nprogress.js +46 -0
  7. package/lib/theme-classic.d.ts +600 -76
  8. package/lib/translations.js +12 -2
  9. package/lib/validateThemeConfig.js +77 -28
  10. package/lib-next/theme/BackToTopButton/index.js +6 -104
  11. package/lib-next/theme/BlogArchivePage/index.js +14 -10
  12. package/lib-next/theme/BlogLayout/index.js +1 -5
  13. package/lib-next/theme/BlogListPage/index.js +34 -13
  14. package/lib-next/theme/BlogListPaginator/index.js +25 -28
  15. package/lib-next/theme/BlogPostAuthor/index.js +16 -7
  16. package/lib-next/theme/BlogPostItem/index.js +6 -6
  17. package/lib-next/theme/BlogPostItem/styles.module.css +9 -0
  18. package/lib-next/theme/BlogPostPage/index.js +56 -45
  19. package/lib-next/theme/BlogPostPaginator/index.js +25 -28
  20. package/lib-next/theme/BlogSidebar/Desktop/index.js +41 -0
  21. package/lib-next/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
  22. package/lib-next/theme/BlogSidebar/Mobile/index.js +36 -0
  23. package/lib-next/theme/BlogSidebar/index.js +11 -31
  24. package/lib-next/theme/BlogTagsListPage/index.js +17 -14
  25. package/lib-next/theme/BlogTagsPostsPage/index.js +43 -38
  26. package/lib-next/theme/CodeBlock/Container/index.js +29 -0
  27. package/lib-next/theme/CodeBlock/Container/styles.module.css +14 -0
  28. package/lib-next/theme/CodeBlock/Content/Element.js +23 -0
  29. package/lib-next/theme/CodeBlock/Content/String.js +104 -0
  30. package/lib-next/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
  31. package/lib-next/theme/CodeBlock/CopyButton/index.js +61 -0
  32. package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  33. package/lib-next/theme/CodeBlock/Line/index.js +49 -0
  34. package/lib-next/theme/CodeBlock/Line/styles.module.css +51 -0
  35. package/lib-next/theme/CodeBlock/WordWrapButton/index.js +40 -0
  36. package/lib-next/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  37. package/lib-next/theme/CodeBlock/index.js +26 -164
  38. package/lib-next/theme/ColorModeToggle/index.js +62 -0
  39. package/lib-next/theme/ColorModeToggle/styles.module.css +35 -0
  40. package/lib-next/theme/Details/index.js +1 -1
  41. package/lib-next/theme/DocBreadcrumbs/index.js +63 -19
  42. package/lib-next/theme/DocBreadcrumbs/styles.module.css +8 -15
  43. package/lib-next/theme/DocCard/index.js +17 -15
  44. package/lib-next/theme/DocCard/styles.module.css +8 -17
  45. package/lib-next/theme/DocCardList/index.js +20 -6
  46. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +30 -9
  47. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
  48. package/lib-next/theme/DocItem/index.js +85 -67
  49. package/lib-next/theme/DocItem/styles.module.css +6 -0
  50. package/lib-next/theme/DocPage/Layout/Main/index.js +29 -0
  51. package/lib-next/theme/DocPage/Layout/Main/styles.module.css +28 -0
  52. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/index.js +34 -0
  53. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  54. package/lib-next/theme/DocPage/Layout/Sidebar/index.js +68 -0
  55. package/lib-next/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  56. package/lib-next/theme/DocPage/Layout/index.js +34 -0
  57. package/lib-next/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
  58. package/lib-next/theme/DocPage/index.js +30 -149
  59. package/lib-next/theme/DocPaginator/index.js +25 -28
  60. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/index.js +34 -0
  61. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  62. package/lib-next/theme/DocSidebar/Desktop/Content/index.js +46 -0
  63. package/lib-next/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  64. package/lib-next/theme/DocSidebar/Desktop/index.js +36 -0
  65. package/lib-next/theme/DocSidebar/Desktop/styles.module.css +50 -0
  66. package/lib-next/theme/DocSidebar/Mobile/index.js +49 -0
  67. package/lib-next/theme/DocSidebar/index.js +6 -113
  68. package/lib-next/theme/DocSidebarItem/Category.js +197 -0
  69. package/lib-next/theme/DocSidebarItem/Html.js +27 -0
  70. package/lib-next/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
  71. package/lib-next/theme/DocSidebarItem/Link.js +53 -0
  72. package/lib-next/theme/DocSidebarItem/Link.module.css +10 -0
  73. package/lib-next/theme/DocSidebarItem/index.js +4 -245
  74. package/lib-next/theme/DocSidebarItems/index.js +1 -6
  75. package/lib-next/theme/DocTagDocListPage/index.js +40 -33
  76. package/lib-next/theme/DocTagsListPage/index.js +21 -16
  77. package/lib-next/theme/DocVersionBanner/index.js +2 -2
  78. package/lib-next/theme/Footer/Copyright/index.js +18 -0
  79. package/lib-next/theme/Footer/Layout/index.js +26 -0
  80. package/lib-next/theme/Footer/LinkItem/index.js +33 -0
  81. package/lib-next/theme/Footer/Links/MultiColumn/index.js +47 -0
  82. package/lib-next/theme/Footer/Links/Simple/index.js +41 -0
  83. package/lib-next/theme/Footer/Links/index.js +17 -0
  84. package/lib-next/theme/Footer/Logo/index.js +38 -0
  85. package/lib-next/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
  86. package/lib-next/theme/Footer/index.js +11 -163
  87. package/lib-next/theme/Heading/index.js +10 -24
  88. package/lib-next/theme/IconDarkMode/index.js +17 -0
  89. package/lib-next/theme/IconExternalLink/styles.module.css +0 -2
  90. package/lib-next/theme/IconHome/index.js +17 -0
  91. package/lib-next/theme/IconLanguage/index.js +3 -3
  92. package/lib-next/theme/IconLightMode/index.js +17 -0
  93. package/lib-next/theme/LastUpdated/index.js +1 -0
  94. package/lib-next/theme/Layout/index.js +15 -10
  95. package/lib-next/theme/LayoutProviders/index.js +5 -4
  96. package/lib-next/theme/MDXComponents/A.js +11 -0
  97. package/lib-next/theme/MDXComponents/Code.js +28 -0
  98. package/lib-next/theme/MDXComponents/Details.js +20 -0
  99. package/lib-next/theme/MDXComponents/Head.js +26 -0
  100. package/lib-next/theme/MDXComponents/Heading.js +11 -0
  101. package/lib-next/theme/MDXComponents/Img.js +24 -0
  102. package/{src/theme/MDXComponents/styles.css → lib-next/theme/MDXComponents/Img.module.css} +1 -6
  103. package/lib-next/theme/MDXComponents/Pre.js +18 -0
  104. package/lib-next/theme/MDXComponents/Ul.js +21 -0
  105. package/lib-next/theme/MDXComponents/index.js +22 -57
  106. package/lib-next/theme/MDXContent/index.js +12 -0
  107. package/lib-next/theme/MDXPage/index.js +33 -28
  108. package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
  109. package/lib-next/theme/Navbar/Content/index.js +75 -0
  110. package/lib-next/theme/Navbar/Content/styles.module.css +15 -0
  111. package/lib-next/theme/Navbar/Layout/index.js +54 -0
  112. package/{src/theme/Navbar → lib-next/theme/Navbar/Layout}/styles.module.css +0 -13
  113. package/lib-next/theme/Navbar/Logo/index.js +17 -0
  114. package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
  115. package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
  116. package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
  117. package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
  118. package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
  119. package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
  120. package/lib-next/theme/Navbar/Search/index.js +11 -0
  121. package/lib-next/theme/Navbar/Search/styles.module.css +20 -0
  122. package/lib-next/theme/Navbar/index.js +6 -271
  123. package/lib-next/theme/NavbarItem/ComponentTypes.js +27 -0
  124. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +2 -6
  125. package/lib-next/theme/NavbarItem/DocNavbarItem.js +11 -28
  126. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +10 -42
  127. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +25 -29
  128. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +2 -9
  129. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +14 -3
  130. package/lib-next/theme/NavbarItem/HtmlNavbarItem.js +30 -0
  131. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/index.js +5 -10
  132. package/lib-next/theme/NavbarItem/NavbarNavLink.js +49 -35
  133. package/lib-next/theme/NavbarItem/SearchNavbarItem.js +6 -1
  134. package/lib-next/theme/NavbarItem/index.js +4 -23
  135. package/lib-next/theme/NavbarItem/utils.js +2 -1
  136. package/lib-next/theme/NotFound.js +38 -33
  137. package/lib-next/theme/PaginatorNavLink/index.js +8 -2
  138. package/lib-next/theme/SearchMetadata/index.js +9 -0
  139. package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +19 -33
  140. package/lib-next/theme/SkipToContent/index.js +3 -29
  141. package/lib-next/theme/TOCCollapsible/CollapseButton.js +29 -0
  142. package/{src/theme/TOCCollapsible/styles.module.css → lib-next/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
  143. package/lib-next/theme/TOCCollapsible/index.js +4 -16
  144. package/lib-next/theme/TOCCollapsible/index.module.css +31 -0
  145. package/lib-next/theme/TOCItems/Tree.js +40 -0
  146. package/lib-next/theme/TOCItems/index.js +3 -34
  147. package/lib-next/theme/TabItem/index.js +3 -1
  148. package/lib-next/theme/TabItem/styles.module.css +10 -0
  149. package/lib-next/theme/Tabs/__tests__/index.test.js +8 -8
  150. package/lib-next/theme/Tabs/index.js +5 -5
  151. package/lib-next/theme/Tabs/styles.module.css +4 -0
  152. package/lib-next/theme/Tag/index.js +6 -7
  153. package/lib-next/theme/TagsListInline/index.js +1 -1
  154. package/lib-next/theme/ThemedImage/index.js +3 -3
  155. package/package.json +25 -20
  156. package/src/admonitions.css +4 -0
  157. package/src/getSwizzleConfig.ts +173 -22
  158. package/src/index.ts +14 -15
  159. package/src/nprogress.css +41 -0
  160. package/src/nprogress.ts +31 -0
  161. package/src/theme/BackToTopButton/index.tsx +5 -114
  162. package/src/theme/BlogArchivePage/index.tsx +18 -17
  163. package/src/theme/BlogLayout/index.tsx +1 -5
  164. package/src/theme/BlogListPage/index.tsx +32 -13
  165. package/src/theme/BlogListPaginator/index.tsx +25 -28
  166. package/src/theme/BlogPostAuthor/index.tsx +14 -8
  167. package/src/theme/BlogPostItem/index.tsx +6 -6
  168. package/src/theme/BlogPostItem/styles.module.css +9 -0
  169. package/src/theme/BlogPostPage/index.tsx +55 -48
  170. package/src/theme/BlogPostPaginator/index.tsx +25 -28
  171. package/src/theme/BlogSidebar/Desktop/index.tsx +45 -0
  172. package/src/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
  173. package/src/theme/BlogSidebar/Mobile/index.tsx +38 -0
  174. package/src/theme/BlogSidebar/index.tsx +10 -31
  175. package/src/theme/BlogTagsListPage/index.tsx +17 -14
  176. package/src/theme/BlogTagsPostsPage/index.tsx +46 -36
  177. package/src/theme/CodeBlock/Container/index.tsx +35 -0
  178. package/src/theme/CodeBlock/Container/styles.module.css +14 -0
  179. package/src/theme/CodeBlock/Content/Element.tsx +30 -0
  180. package/src/theme/CodeBlock/Content/String.tsx +111 -0
  181. package/src/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
  182. package/src/theme/CodeBlock/CopyButton/index.tsx +67 -0
  183. package/src/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  184. package/src/theme/CodeBlock/Line/index.tsx +48 -0
  185. package/src/theme/CodeBlock/Line/styles.module.css +51 -0
  186. package/src/theme/CodeBlock/WordWrapButton/index.tsx +49 -0
  187. package/src/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  188. package/src/theme/CodeBlock/index.tsx +29 -165
  189. package/src/theme/ColorModeToggle/index.tsx +67 -0
  190. package/src/theme/ColorModeToggle/styles.module.css +35 -0
  191. package/src/theme/Details/index.tsx +1 -1
  192. package/src/theme/DocBreadcrumbs/index.tsx +65 -16
  193. package/src/theme/DocBreadcrumbs/styles.module.css +8 -15
  194. package/src/theme/DocCard/index.tsx +24 -17
  195. package/src/theme/DocCard/styles.module.css +8 -17
  196. package/src/theme/DocCardList/index.tsx +19 -10
  197. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +34 -7
  198. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
  199. package/src/theme/DocItem/index.tsx +72 -56
  200. package/src/theme/DocItem/styles.module.css +6 -0
  201. package/src/theme/DocPage/Layout/Main/index.tsx +37 -0
  202. package/src/theme/DocPage/Layout/Main/styles.module.css +28 -0
  203. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx +40 -0
  204. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  205. package/src/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  206. package/src/theme/DocPage/Layout/Sidebar/index.tsx +74 -0
  207. package/src/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
  208. package/src/theme/DocPage/Layout/index.tsx +39 -0
  209. package/src/theme/DocPage/index.tsx +30 -160
  210. package/src/theme/DocPaginator/index.tsx +25 -28
  211. package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
  212. package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  213. package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
  214. package/src/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  215. package/src/theme/DocSidebar/Desktop/index.tsx +40 -0
  216. package/src/theme/DocSidebar/Desktop/styles.module.css +50 -0
  217. package/src/theme/DocSidebar/Mobile/index.tsx +54 -0
  218. package/src/theme/DocSidebar/index.tsx +6 -121
  219. package/src/theme/DocSidebarItem/Category.tsx +210 -0
  220. package/src/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
  221. package/src/theme/DocSidebarItem/Html.tsx +34 -0
  222. package/src/theme/DocSidebarItem/Link.module.css +10 -0
  223. package/src/theme/DocSidebarItem/Link.tsx +58 -0
  224. package/src/theme/DocSidebarItem/index.tsx +4 -260
  225. package/src/theme/DocSidebarItems/index.tsx +1 -6
  226. package/src/theme/DocTagDocListPage/index.tsx +40 -33
  227. package/src/theme/DocTagsListPage/index.tsx +21 -16
  228. package/src/theme/DocVersionBanner/index.tsx +5 -6
  229. package/src/theme/Footer/Copyright/index.tsx +20 -0
  230. package/src/theme/Footer/Layout/index.tsx +34 -0
  231. package/src/theme/Footer/LinkItem/index.tsx +36 -0
  232. package/src/theme/Footer/Links/MultiColumn/index.tsx +51 -0
  233. package/src/theme/Footer/Links/Simple/index.tsx +42 -0
  234. package/src/theme/Footer/Links/index.tsx +21 -0
  235. package/src/theme/Footer/Logo/index.tsx +41 -0
  236. package/src/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
  237. package/src/theme/Footer/index.tsx +12 -186
  238. package/src/theme/Heading/index.tsx +10 -22
  239. package/src/theme/IconDarkMode/index.tsx +20 -0
  240. package/src/theme/IconExternalLink/styles.module.css +0 -2
  241. package/src/theme/IconHome/index.tsx +20 -0
  242. package/src/theme/IconLanguage/index.tsx +3 -3
  243. package/src/theme/IconLightMode/index.tsx +20 -0
  244. package/src/theme/LastUpdated/index.tsx +1 -0
  245. package/src/theme/Layout/index.tsx +15 -10
  246. package/src/theme/LayoutProviders/index.tsx +5 -4
  247. package/src/theme/MDXComponents/A.tsx +14 -0
  248. package/src/theme/MDXComponents/Code.tsx +37 -0
  249. package/src/theme/MDXComponents/Details.tsx +25 -0
  250. package/src/theme/MDXComponents/Head.tsx +29 -0
  251. package/src/theme/MDXComponents/Heading.tsx +14 -0
  252. package/{lib-next/theme/MDXComponents/styles.css → src/theme/MDXComponents/Img.module.css} +1 -6
  253. package/src/theme/MDXComponents/Img.tsx +26 -0
  254. package/src/theme/MDXComponents/Pre.tsx +22 -0
  255. package/src/theme/MDXComponents/Ul.tsx +24 -0
  256. package/src/theme/MDXComponents/index.tsx +23 -66
  257. package/src/theme/MDXContent/index.tsx +15 -0
  258. package/src/theme/MDXPage/index.tsx +33 -28
  259. package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
  260. package/src/theme/Navbar/Content/index.tsx +86 -0
  261. package/src/theme/Navbar/Content/styles.module.css +15 -0
  262. package/src/theme/Navbar/Layout/index.tsx +57 -0
  263. package/{lib-next/theme/Navbar → src/theme/Navbar/Layout}/styles.module.css +0 -13
  264. package/src/theme/Navbar/Logo/index.tsx +19 -0
  265. package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
  266. package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
  267. package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
  268. package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
  269. package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
  270. package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
  271. package/src/theme/Navbar/Search/index.tsx +15 -0
  272. package/src/theme/Navbar/Search/styles.module.css +20 -0
  273. package/src/theme/Navbar/index.tsx +6 -286
  274. package/src/theme/NavbarItem/ComponentTypes.tsx +32 -0
  275. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +2 -2
  276. package/src/theme/NavbarItem/DocNavbarItem.tsx +13 -32
  277. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +9 -49
  278. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +26 -33
  279. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +3 -10
  280. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +15 -3
  281. package/src/theme/NavbarItem/HtmlNavbarItem.tsx +32 -0
  282. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx +5 -9
  283. package/src/theme/NavbarItem/NavbarNavLink.tsx +41 -29
  284. package/src/theme/NavbarItem/SearchNavbarItem.tsx +6 -1
  285. package/src/theme/NavbarItem/index.tsx +9 -39
  286. package/src/theme/NavbarItem/utils.ts +5 -2
  287. package/src/theme/NotFound.tsx +38 -33
  288. package/src/theme/PaginatorNavLink/index.tsx +8 -2
  289. package/src/theme/SearchMetadata/index.tsx +9 -0
  290. package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +19 -33
  291. package/src/theme/SkipToContent/index.tsx +3 -29
  292. package/{lib-next/theme/TOCCollapsible/styles.module.css → src/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
  293. package/src/theme/TOCCollapsible/CollapseButton.tsx +35 -0
  294. package/src/theme/TOCCollapsible/index.module.css +31 -0
  295. package/src/theme/TOCCollapsible/index.tsx +4 -17
  296. package/src/theme/TOCItems/Tree.tsx +46 -0
  297. package/src/theme/TOCItems/index.tsx +2 -41
  298. package/src/theme/TabItem/index.tsx +7 -1
  299. package/src/theme/TabItem/styles.module.css +10 -0
  300. package/src/theme/Tabs/index.tsx +8 -9
  301. package/src/theme/Tabs/styles.module.css +4 -0
  302. package/src/theme/Tag/index.tsx +6 -8
  303. package/src/theme/TagsListInline/index.tsx +1 -1
  304. package/src/theme/ThemedImage/index.tsx +4 -3
  305. package/src/theme-classic.d.ts +600 -76
  306. package/src/translations.ts +12 -6
  307. package/src/validateThemeConfig.ts +90 -39
  308. package/lib/types.d.ts +0 -11
  309. package/lib-next/theme/DocPage/styles.module.css +0 -86
  310. package/lib-next/theme/DocSidebar/styles.module.css +0 -107
  311. package/lib-next/theme/Seo/index.js +0 -40
  312. package/lib-next/theme/Toggle/index.js +0 -100
  313. package/lib-next/theme/Toggle/styles.module.css +0 -106
  314. package/src/theme/DocPage/styles.module.css +0 -86
  315. package/src/theme/DocSidebar/styles.module.css +0 -107
  316. package/src/theme/Seo/index.tsx +0 -49
  317. package/src/theme/Toggle/index.tsx +0 -117
  318. package/src/theme/Toggle/styles.module.css +0 -106
  319. package/src/types.d.ts +0 -11
@@ -0,0 +1,31 @@
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 nprogress from 'nprogress';
9
+ import './nprogress.css';
10
+ import type {ClientModule} from '@docusaurus/types';
11
+
12
+ nprogress.configure({showSpinner: false});
13
+
14
+ const delay = 200;
15
+
16
+ const clientModule: ClientModule = {
17
+ onRouteUpdate({location, previousLocation}) {
18
+ if (previousLocation && location.pathname !== previousLocation.pathname) {
19
+ const progressBarTimeout = window.setTimeout(() => {
20
+ nprogress.start();
21
+ }, delay);
22
+ return () => window.clearTimeout(progressBarTimeout);
23
+ }
24
+ return undefined;
25
+ },
26
+ onRouteDidUpdate() {
27
+ nprogress.done();
28
+ },
29
+ };
30
+
31
+ export default clientModule;
@@ -5,122 +5,15 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import React, {useRef, useState} from 'react';
8
+ import React from 'react';
9
9
  import clsx from 'clsx';
10
10
  import {translate} from '@docusaurus/Translate';
11
+ import {ThemeClassNames, useBackToTopButton} from '@docusaurus/theme-common';
11
12
 
12
13
  import styles from './styles.module.css';
13
- import {
14
- ThemeClassNames,
15
- useScrollPosition,
16
- useLocationChange,
17
- } from '@docusaurus/theme-common';
18
-
19
- const threshold = 300;
20
-
21
- // Not all have support for smooth scrolling (particularly Safari mobile iOS)
22
- // TODO proper detection is currently unreliable!
23
- // see https://github.com/wessberg/scroll-behavior-polyfill/issues/16
24
- const SupportsNativeSmoothScrolling = false;
25
- // const SupportsNativeSmoothScrolling =
26
- // ExecutionEnvironment.canUseDOM &&
27
- // 'scrollBehavior' in document.documentElement.style;
28
-
29
- type CancelScrollTop = () => void;
30
-
31
- function smoothScrollTopNative(): CancelScrollTop {
32
- window.scrollTo({top: 0, behavior: 'smooth'});
33
- return () => {
34
- // Nothing to cancel, it's natively cancelled if user tries to scroll down
35
- };
36
- }
37
-
38
- function smoothScrollTopPolyfill(): CancelScrollTop {
39
- let raf: number | null = null;
40
- function rafRecursion() {
41
- const currentScroll = document.documentElement.scrollTop;
42
- if (currentScroll > 0) {
43
- raf = requestAnimationFrame(rafRecursion);
44
- window.scrollTo(0, Math.floor(currentScroll * 0.85));
45
- }
46
- }
47
- rafRecursion();
48
-
49
- // Break the recursion. Prevents the user from "fighting" against that
50
- // recursion producing a weird UX
51
- return () => raf && cancelAnimationFrame(raf);
52
- }
53
-
54
- type UseSmoothScrollTopReturn = {
55
- // We use a cancel function because the non-native smooth scroll-top
56
- // implementation must be interrupted if user scroll down
57
- smoothScrollTop: () => void;
58
- cancelScrollToTop: CancelScrollTop;
59
- };
60
-
61
- function useSmoothScrollToTop(): UseSmoothScrollTopReturn {
62
- const lastCancelRef = useRef<CancelScrollTop | null>(null);
63
-
64
- function smoothScrollTop(): void {
65
- lastCancelRef.current = SupportsNativeSmoothScrolling
66
- ? smoothScrollTopNative()
67
- : smoothScrollTopPolyfill();
68
- }
69
-
70
- return {
71
- smoothScrollTop,
72
- cancelScrollToTop: () => lastCancelRef.current?.(),
73
- };
74
- }
75
14
 
76
15
  export default function BackToTopButton(): JSX.Element {
77
- const [show, setShow] = useState(false);
78
- const isFocusedAnchor = useRef(false);
79
- const {smoothScrollTop, cancelScrollToTop} = useSmoothScrollToTop();
80
-
81
- useScrollPosition(({scrollY: scrollTop}, lastPosition) => {
82
- const lastScrollTop = lastPosition?.scrollY;
83
-
84
- // No lastScrollTop means component is just being mounted.
85
- // Not really a scroll event from the user, so we ignore it
86
- if (!lastScrollTop) {
87
- return;
88
- }
89
-
90
- if (isFocusedAnchor.current) {
91
- isFocusedAnchor.current = false;
92
- return;
93
- }
94
-
95
- const isScrollingUp = scrollTop < lastScrollTop;
96
-
97
- if (!isScrollingUp) {
98
- cancelScrollToTop();
99
- }
100
-
101
- if (scrollTop < threshold) {
102
- setShow(false);
103
- return;
104
- }
105
-
106
- if (isScrollingUp) {
107
- const documentHeight = document.documentElement.scrollHeight;
108
- const windowHeight = window.innerHeight;
109
- if (scrollTop + windowHeight < documentHeight) {
110
- setShow(true);
111
- }
112
- } else {
113
- setShow(false);
114
- }
115
- });
116
-
117
- useLocationChange((locationChangeEvent) => {
118
- if (locationChangeEvent.location.hash) {
119
- isFocusedAnchor.current = true;
120
- setShow(false);
121
- }
122
- });
123
-
16
+ const {shown, scrollToTop} = useBackToTopButton({threshold: 300});
124
17
  return (
125
18
  <button
126
19
  aria-label={translate({
@@ -132,12 +25,10 @@ export default function BackToTopButton(): JSX.Element {
132
25
  'clean-btn',
133
26
  ThemeClassNames.common.backToTopButton,
134
27
  styles.backToTopButton,
135
- {
136
- [styles.backToTopButtonShow]: show,
137
- },
28
+ shown && styles.backToTopButtonShow,
138
29
  )}
139
30
  type="button"
140
- onClick={() => smoothScrollTop()}
31
+ onClick={scrollToTop}
141
32
  />
142
33
  );
143
34
  }
@@ -10,6 +10,7 @@ import Layout from '@theme/Layout';
10
10
  import Link from '@docusaurus/Link';
11
11
  import type {ArchiveBlogPost, Props} from '@theme/BlogArchivePage';
12
12
  import {translate} from '@docusaurus/Translate';
13
+ import {PageMetadata} from '@docusaurus/theme-common';
13
14
 
14
15
  type YearProp = {
15
16
  year: string;
@@ -50,14 +51,11 @@ function YearsSection({years}: {years: YearProp[]}) {
50
51
  }
51
52
 
52
53
  function listPostsByYears(blogPosts: readonly ArchiveBlogPost[]): YearProp[] {
53
- const postsByYear: Map<string, ArchiveBlogPost[]> = blogPosts.reduceRight(
54
- (posts, post) => {
55
- const year = post.metadata.date.split('-')[0];
56
- const yearPosts = posts.get(year) || [];
57
- return posts.set(year, [post, ...yearPosts]);
58
- },
59
- new Map(),
60
- );
54
+ const postsByYear = blogPosts.reduceRight((posts, post) => {
55
+ const year = post.metadata.date.split('-')[0]!;
56
+ const yearPosts = posts.get(year) ?? [];
57
+ return posts.set(year, [post, ...yearPosts]);
58
+ }, new Map<string, ArchiveBlogPost[]>());
61
59
 
62
60
  return Array.from(postsByYear, ([year, posts]) => ({
63
61
  year,
@@ -78,14 +76,17 @@ export default function BlogArchive({archive}: Props): JSX.Element {
78
76
  });
79
77
  const years = listPostsByYears(archive.blogPosts);
80
78
  return (
81
- <Layout title={title} description={description}>
82
- <header className="hero hero--primary">
83
- <div className="container">
84
- <h1 className="hero__title">{title}</h1>
85
- <p className="hero__subtitle">{description}</p>
86
- </div>
87
- </header>
88
- <main>{years.length > 0 && <YearsSection years={years} />}</main>
89
- </Layout>
79
+ <>
80
+ <PageMetadata title={title} description={description} />
81
+ <Layout>
82
+ <header className="hero hero--primary">
83
+ <div className="container">
84
+ <h1 className="hero__title">{title}</h1>
85
+ <p className="hero__subtitle">{description}</p>
86
+ </div>
87
+ </header>
88
+ <main>{years.length > 0 && <YearsSection years={years} />}</main>
89
+ </Layout>
90
+ </>
90
91
  );
91
92
  }
@@ -20,11 +20,7 @@ export default function BlogLayout(props: Props): JSX.Element {
20
20
  <Layout {...layoutProps}>
21
21
  <div className="container margin-vert--lg">
22
22
  <div className="row">
23
- {hasSidebar && (
24
- <aside className="col col--3">
25
- <BlogSidebar sidebar={sidebar!} />
26
- </aside>
27
- )}
23
+ <BlogSidebar sidebar={sidebar} />
28
24
  <main
29
25
  className={clsx('col', {
30
26
  'col--7': hasSidebar,
@@ -12,28 +12,34 @@ import BlogLayout from '@theme/BlogLayout';
12
12
  import BlogPostItem from '@theme/BlogPostItem';
13
13
  import BlogListPaginator from '@theme/BlogListPaginator';
14
14
  import type {Props} from '@theme/BlogListPage';
15
- import {ThemeClassNames} from '@docusaurus/theme-common';
15
+ import {
16
+ PageMetadata,
17
+ HtmlClassNameProvider,
18
+ ThemeClassNames,
19
+ } from '@docusaurus/theme-common';
20
+ import SearchMetadata from '@theme/SearchMetadata';
21
+ import clsx from 'clsx';
16
22
 
17
- export default function BlogListPage(props: Props): JSX.Element {
18
- const {metadata, items, sidebar} = props;
23
+ function BlogListPageMetadata(props: Props): JSX.Element {
24
+ const {metadata} = props;
19
25
  const {
20
26
  siteConfig: {title: siteTitle},
21
27
  } = useDocusaurusContext();
22
28
  const {blogDescription, blogTitle, permalink} = metadata;
23
29
  const isBlogOnlyMode = permalink === '/';
24
30
  const title = isBlogOnlyMode ? siteTitle : blogTitle;
31
+ return (
32
+ <>
33
+ <PageMetadata title={title} description={blogDescription} />
34
+ <SearchMetadata tag="blog_posts_list" />
35
+ </>
36
+ );
37
+ }
25
38
 
39
+ function BlogListPageContent(props: Props): JSX.Element {
40
+ const {metadata, items, sidebar} = props;
26
41
  return (
27
- <BlogLayout
28
- title={title}
29
- description={blogDescription}
30
- wrapperClassName={ThemeClassNames.wrapper.blogPages}
31
- pageClassName={ThemeClassNames.page.blogListPage}
32
- searchMetadata={{
33
- // assign unique search tag to exclude this page from search results!
34
- tag: 'blog_posts_list',
35
- }}
36
- sidebar={sidebar}>
42
+ <BlogLayout sidebar={sidebar}>
37
43
  {items.map(({content: BlogPostContent}) => (
38
44
  <BlogPostItem
39
45
  key={BlogPostContent.metadata.permalink}
@@ -48,3 +54,16 @@ export default function BlogListPage(props: Props): JSX.Element {
48
54
  </BlogLayout>
49
55
  );
50
56
  }
57
+
58
+ export default function BlogListPage(props: Props): JSX.Element {
59
+ return (
60
+ <HtmlClassNameProvider
61
+ className={clsx(
62
+ ThemeClassNames.wrapper.blogPages,
63
+ ThemeClassNames.page.blogListPage,
64
+ )}>
65
+ <BlogListPageMetadata {...props} />
66
+ <BlogListPageContent {...props} />
67
+ </HtmlClassNameProvider>
68
+ );
69
+ }
@@ -22,34 +22,31 @@ export default 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
- <PaginatorNavLink
28
- permalink={previousPage}
29
- title={
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
- }
36
- />
37
- )}
38
- </div>
39
- <div className="pagination-nav__item pagination-nav__item--next">
40
- {nextPage && (
41
- <PaginatorNavLink
42
- permalink={nextPage}
43
- title={
44
- <Translate
45
- id="theme.blog.paginator.olderEntries"
46
- description="The label used to navigate to the older blog posts page (next page)">
47
- Older Entries
48
- </Translate>
49
- }
50
- />
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
  }
@@ -6,19 +6,25 @@
6
6
  */
7
7
 
8
8
  import React from 'react';
9
- import Link from '@docusaurus/Link';
9
+ import Link, {type Props as LinkProps} from '@docusaurus/Link';
10
10
  import type {Props} from '@theme/BlogPostAuthor';
11
11
 
12
- import styles from './styles.module.css';
12
+ function MaybeLink(props: LinkProps): JSX.Element {
13
+ if (props.href) {
14
+ return <Link {...props} />;
15
+ }
16
+ return <>{props.children}</>;
17
+ }
13
18
 
14
19
  export default function BlogPostAuthor({author}: Props): JSX.Element {
15
- const {name, title, url, imageURL} = author;
20
+ const {name, title, url, imageURL, email} = author;
21
+ const link = url || (email && `mailto:${email}`) || undefined;
16
22
  return (
17
23
  <div className="avatar margin-bottom--sm">
18
24
  {imageURL && (
19
- <Link className="avatar__photo-link avatar__photo" href={url}>
20
- <img className={styles.image} src={imageURL} alt={name} />
21
- </Link>
25
+ <MaybeLink href={link} className="avatar__photo-link">
26
+ <img className="avatar__photo" src={imageURL} alt={name} />
27
+ </MaybeLink>
22
28
  )}
23
29
 
24
30
  {name && (
@@ -28,9 +34,9 @@ export default function BlogPostAuthor({author}: Props): JSX.Element {
28
34
  itemScope
29
35
  itemType="https://schema.org/Person">
30
36
  <div className="avatar__name">
31
- <Link href={url} itemProp="url">
37
+ <MaybeLink href={link} itemProp="url">
32
38
  <span itemProp="name">{name}</span>
33
- </Link>
39
+ </MaybeLink>
34
40
  </div>
35
41
  {title && (
36
42
  <small className="avatar__subtitle" itemProp="description">
@@ -7,13 +7,12 @@
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
12
  import {useBaseUrlUtils} from '@docusaurus/useBaseUrl';
14
13
  import {usePluralForm} from '@docusaurus/theme-common';
15
14
  import {blogPostContainerID} from '@docusaurus/utils-common';
16
- import MDXComponents from '@theme/MDXComponents';
15
+ import MDXContent from '@theme/MDXContent';
17
16
  import EditThisPage from '@theme/EditThisPage';
18
17
  import type {Props} from '@theme/BlogPostItem';
19
18
 
@@ -108,14 +107,15 @@ export default function BlogPostItem(props: Props): JSX.Element {
108
107
  id={isBlogPostPage ? blogPostContainerID : undefined}
109
108
  className="markdown"
110
109
  itemProp="articleBody">
111
- <MDXProvider components={MDXComponents}>{children}</MDXProvider>
110
+ <MDXContent>{children}</MDXContent>
112
111
  </div>
113
112
 
114
113
  {(tagsExists || truncated) && (
115
114
  <footer
116
- className={clsx('row docusaurus-mt-lg', {
117
- [styles.blogPostDetailsFull]: isBlogPostPage,
118
- })}>
115
+ className={clsx(
116
+ 'row docusaurus-mt-lg',
117
+ isBlogPostPage && styles.blogPostDetailsFull,
118
+ )}>
119
119
  {tagsExists && (
120
120
  <div className={clsx('col', {'col--9': truncatedPost})}>
121
121
  <TagsListInline tags={tags} />
@@ -9,6 +9,15 @@
9
9
  font-size: 3rem;
10
10
  }
11
11
 
12
+ /**
13
+ Blog post title should be smaller on smaller devices
14
+ **/
15
+ @media (max-width: 576px) {
16
+ .blogPostTitle {
17
+ font-size: 2rem;
18
+ }
19
+ }
20
+
12
21
  .blogPostData {
13
22
  font-size: 0.9rem;
14
23
  }
@@ -6,40 +6,63 @@
6
6
  */
7
7
 
8
8
  import React from 'react';
9
- import Seo from '@theme/Seo';
10
9
  import BlogLayout from '@theme/BlogLayout';
11
10
  import BlogPostItem from '@theme/BlogPostItem';
12
11
  import BlogPostPaginator from '@theme/BlogPostPaginator';
13
12
  import type {Props} from '@theme/BlogPostPage';
14
- import {ThemeClassNames} from '@docusaurus/theme-common';
13
+ import {
14
+ PageMetadata,
15
+ HtmlClassNameProvider,
16
+ ThemeClassNames,
17
+ } from '@docusaurus/theme-common';
15
18
  import TOC from '@theme/TOC';
19
+ import clsx from 'clsx';
16
20
 
17
- export default function BlogPostPage(props: Props): JSX.Element {
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;
27
+ return (
28
+ <PageMetadata
29
+ title={title}
30
+ description={description}
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
+ />
44
+ )}
45
+ {tags.length > 0 && (
46
+ <meta
47
+ property="article:tag"
48
+ content={tags.map((tag) => tag.label).join(',')}
49
+ />
50
+ )}
51
+ </PageMetadata>
52
+ );
53
+ }
54
+
55
+ function BlogPostPageContent(props: Props): JSX.Element {
18
56
  const {content: BlogPostContents, sidebar} = props;
19
57
  const {assets, metadata} = BlogPostContents;
20
- const {
21
- title,
22
- description,
23
- nextItem,
24
- prevItem,
25
- date,
26
- tags,
27
- authors,
28
- frontMatter,
29
- } = metadata;
58
+ const {nextItem, prevItem, frontMatter} = metadata;
30
59
  const {
31
60
  hide_table_of_contents: hideTableOfContents,
32
- keywords,
33
61
  toc_min_heading_level: tocMinHeadingLevel,
34
62
  toc_max_heading_level: tocMaxHeadingLevel,
35
63
  } = frontMatter;
36
-
37
- const image = assets.image ?? frontMatter.image;
38
-
39
64
  return (
40
65
  <BlogLayout
41
- wrapperClassName={ThemeClassNames.wrapper.blogPages}
42
- pageClassName={ThemeClassNames.page.blogPostPage}
43
66
  sidebar={sidebar}
44
67
  toc={
45
68
  !hideTableOfContents &&
@@ -52,35 +75,6 @@ export default function BlogPostPage(props: Props): JSX.Element {
52
75
  />
53
76
  ) : undefined
54
77
  }>
55
- <Seo
56
- // TODO refactor needed: it's a bit annoying but Seo MUST be inside
57
- // BlogLayout, otherwise default image (set by BlogLayout) would shadow
58
- // the custom blog post image
59
- title={title}
60
- description={description}
61
- keywords={keywords}
62
- image={image}>
63
- <meta property="og:type" content="article" />
64
- <meta property="article:published_time" content={date} />
65
-
66
- {/* TODO double check those article meta array syntaxes, see https://ogp.me/#array */}
67
- {authors.some((author) => author.url) && (
68
- <meta
69
- property="article:author"
70
- content={authors
71
- .map((author) => author.url)
72
- .filter(Boolean)
73
- .join(',')}
74
- />
75
- )}
76
- {tags.length > 0 && (
77
- <meta
78
- property="article:tag"
79
- content={tags.map((tag) => tag.label).join(',')}
80
- />
81
- )}
82
- </Seo>
83
-
84
78
  <BlogPostItem
85
79
  frontMatter={frontMatter}
86
80
  assets={assets}
@@ -95,3 +89,16 @@ export default function BlogPostPage(props: Props): JSX.Element {
95
89
  </BlogLayout>
96
90
  );
97
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
+ }
@@ -21,34 +21,31 @@ export default function BlogPostPaginator(props: Props): JSX.Element {
21
21
  message: 'Blog post page navigation',
22
22
  description: 'The ARIA label for the blog posts pagination',
23
23
  })}>
24
- <div className="pagination-nav__item">
25
- {prevItem && (
26
- <PaginatorNavLink
27
- {...prevItem}
28
- subLabel={
29
- <Translate
30
- id="theme.blog.post.paginator.newerPost"
31
- description="The blog post button label to navigate to the newer/previous post">
32
- Newer Post
33
- </Translate>
34
- }
35
- />
36
- )}
37
- </div>
38
- <div className="pagination-nav__item pagination-nav__item--next">
39
- {nextItem && (
40
- <PaginatorNavLink
41
- {...nextItem}
42
- subLabel={
43
- <Translate
44
- id="theme.blog.post.paginator.olderPost"
45
- description="The blog post button label to navigate to the older/next post">
46
- Older Post
47
- </Translate>
48
- }
49
- />
50
- )}
51
- </div>
24
+ {prevItem && (
25
+ <PaginatorNavLink
26
+ {...prevItem}
27
+ subLabel={
28
+ <Translate
29
+ id="theme.blog.post.paginator.newerPost"
30
+ description="The blog post button label to navigate to the newer/previous post">
31
+ Newer Post
32
+ </Translate>
33
+ }
34
+ />
35
+ )}
36
+ {nextItem && (
37
+ <PaginatorNavLink
38
+ {...nextItem}
39
+ subLabel={
40
+ <Translate
41
+ id="theme.blog.post.paginator.olderPost"
42
+ description="The blog post button label to navigate to the older/next post">
43
+ Older Post
44
+ </Translate>
45
+ }
46
+ isNext
47
+ />
48
+ )}
52
49
  </nav>
53
50
  );
54
51
  }