@docusaurus/theme-classic 2.0.0-beta.138b4c997 → 2.0.0-beta.14

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