@docusaurus/theme-classic 2.0.0-beta.15d451942 → 2.0.0-beta.16

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