@docusaurus/theme-classic 2.0.0-beta.12faed89d → 2.0.0-beta.13

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 (350) hide show
  1. package/README.md +1 -1
  2. package/lib/__tests__/validateThemeConfig.test.js +277 -3
  3. package/lib/admonitions.css +35 -0
  4. package/lib/deps.d.ts +13 -0
  5. package/lib/index.js +16 -15
  6. package/lib/prism-include-languages.js +9 -5
  7. package/lib/theme/AnnouncementBar/index.js +8 -12
  8. package/lib/theme/AnnouncementBar/styles.module.css +23 -32
  9. package/lib/theme/BackToTopButton/index.js +140 -0
  10. package/lib/theme/BackToTopButton/styles.module.css +42 -0
  11. package/lib/theme/BlogArchivePage/index.js +89 -0
  12. package/lib/theme/BlogLayout/index.js +51 -0
  13. package/lib/theme/BlogListPage/index.js +10 -21
  14. package/lib/theme/BlogPostAuthor/index.js +51 -0
  15. package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
  16. package/lib/theme/BlogPostAuthors/index.js +47 -0
  17. package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
  18. package/lib/theme/BlogPostItem/index.js +58 -67
  19. package/lib/theme/BlogPostPage/index.js +37 -24
  20. package/lib/theme/BlogSidebar/index.js +5 -7
  21. package/lib/theme/BlogSidebar/styles.module.css +2 -2
  22. package/lib/theme/BlogTagsListPage/index.js +8 -44
  23. package/lib/theme/BlogTagsPostsPage/index.js +24 -38
  24. package/lib/theme/CodeBlock/index.js +18 -138
  25. package/lib/theme/CodeBlock/styles.module.css +6 -9
  26. package/lib/theme/Details/index.js +30 -0
  27. package/lib/theme/Details/styles.module.css +13 -0
  28. package/lib/theme/DocCard/index.js +84 -0
  29. package/lib/theme/DocCard/styles.module.css +43 -0
  30. package/lib/theme/DocCardList/index.js +28 -0
  31. package/lib/theme/DocCategoryGeneratedIndexPage/index.js +57 -0
  32. package/lib/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  33. package/lib/theme/DocItem/index.js +22 -48
  34. package/lib/theme/DocItem/styles.module.css +2 -11
  35. package/lib/theme/DocItemFooter/index.js +79 -0
  36. package/lib/theme/DocItemFooter/styles.module.css +18 -0
  37. package/lib/theme/DocPage/index.js +35 -20
  38. package/lib/theme/DocPaginator/index.js +6 -7
  39. package/lib/theme/DocSidebar/index.js +23 -22
  40. package/lib/theme/DocSidebarItem/index.js +84 -50
  41. package/lib/theme/DocSidebarItem/styles.module.css +4 -0
  42. package/lib/theme/DocTagDocListPage/index.js +89 -0
  43. package/lib/theme/DocTagsListPage/index.js +44 -0
  44. package/lib/theme/DocVersionBadge/index.js +34 -0
  45. package/lib/theme/DocVersionBanner/index.js +12 -10
  46. package/lib/theme/EditThisPage/index.js +3 -1
  47. package/lib/theme/ErrorPageContent.js +43 -0
  48. package/lib/theme/Footer/index.js +8 -4
  49. package/lib/theme/Heading/index.js +17 -22
  50. package/lib/theme/Heading/styles.css +5 -6
  51. package/lib/theme/Heading/styles.module.css +9 -5
  52. package/lib/theme/IconArrow/index.js +2 -2
  53. package/lib/theme/IconClose/index.js +31 -0
  54. package/lib/theme/IconEdit/index.js +3 -3
  55. package/lib/theme/IconExternalLink/index.js +3 -3
  56. package/lib/theme/IconLanguage/index.js +3 -3
  57. package/lib/theme/IconMenu/index.js +3 -3
  58. package/lib/theme/LastUpdated/index.js +4 -2
  59. package/lib/theme/Layout/index.js +5 -1
  60. package/lib/theme/LayoutHead/index.js +22 -17
  61. package/lib/theme/LayoutProviders/index.js +7 -5
  62. package/lib/theme/Logo/index.js +16 -14
  63. package/lib/theme/MDXComponents/index.js +45 -4
  64. package/lib/theme/MDXComponents/styles.css +11 -0
  65. package/lib/theme/MDXPage/index.js +2 -1
  66. package/lib/theme/Navbar/index.js +46 -27
  67. package/lib/theme/Navbar/styles.module.css +3 -39
  68. package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -124
  69. package/lib/theme/NavbarItem/DocNavbarItem.js +7 -8
  70. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
  71. package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
  72. package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +6 -10
  73. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  74. package/lib/theme/NavbarItem/index.js +31 -11
  75. package/lib/theme/{SearchMetadatas → SearchMetadata}/index.js +2 -2
  76. package/lib/theme/Seo/index.js +10 -7
  77. package/lib/theme/TOC/index.js +9 -30
  78. package/lib/theme/TOC/styles.module.css +1 -1
  79. package/lib/theme/TOCCollapsible/index.js +7 -5
  80. package/lib/theme/TOCCollapsible/styles.module.css +1 -0
  81. package/lib/theme/TOCInline/index.js +7 -27
  82. package/lib/theme/TOCItems/index.js +78 -0
  83. package/lib/theme/Tabs/__tests__/index.test.js +123 -0
  84. package/lib/theme/Tabs/index.js +73 -50
  85. package/lib/theme/Tabs/styles.module.css +0 -13
  86. package/lib/theme/Tag/index.js +40 -0
  87. package/lib/theme/Tag/styles.module.css +70 -0
  88. package/lib/theme/TagsListByLetter/index.js +48 -0
  89. package/lib/theme/TagsListByLetter/styles.module.css +11 -0
  90. package/lib/theme/TagsListInline/index.js +44 -0
  91. package/lib/theme/TagsListInline/styles.module.css +15 -0
  92. package/lib/theme/ThemeProvider/index.js +8 -3
  93. package/lib/theme/ThemedImage/index.js +5 -7
  94. package/lib/theme/Toggle/index.js +41 -44
  95. package/lib/theme/Toggle/styles.module.css +91 -3
  96. package/lib/theme/UserPreferencesProvider/index.js +8 -3
  97. package/lib/theme/hooks/useHideableNavbar.js +14 -32
  98. package/lib/theme/hooks/useTheme.js +3 -5
  99. package/lib/theme/hooks/useWindowSize.js +2 -7
  100. package/lib/theme/prism-include-languages.js +4 -3
  101. package/lib/theme-classic.d.ts +806 -0
  102. package/lib/translations.js +4 -4
  103. package/lib/types.d.ts +0 -629
  104. package/lib/validateThemeConfig.js +230 -248
  105. package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
  106. package/lib-next/admonitions.css +35 -0
  107. package/lib-next/deps.d.ts +13 -0
  108. package/lib-next/index.js +16 -10
  109. package/lib-next/prism-include-languages.js +0 -2
  110. package/lib-next/theme/AnnouncementBar/index.js +7 -12
  111. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  112. package/lib-next/theme/BackToTopButton/index.js +131 -0
  113. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  114. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  115. package/lib-next/theme/BlogLayout/index.js +40 -0
  116. package/lib-next/theme/BlogListPage/index.js +17 -25
  117. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  118. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  119. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  120. package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
  121. package/lib-next/theme/BlogPostItem/index.js +79 -86
  122. package/lib-next/theme/BlogPostPage/index.js +70 -35
  123. package/lib-next/theme/BlogSidebar/index.js +11 -13
  124. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  125. package/lib-next/theme/BlogTagsListPage/index.js +14 -55
  126. package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
  127. package/lib-next/theme/CodeBlock/index.js +17 -149
  128. package/lib-next/theme/CodeBlock/styles.module.css +6 -9
  129. package/lib-next/theme/Details/index.js +20 -0
  130. package/lib-next/theme/Details/styles.module.css +13 -0
  131. package/lib-next/theme/DocCard/index.js +80 -0
  132. package/lib-next/theme/DocCard/styles.module.css +43 -0
  133. package/lib-next/theme/DocCardList/index.js +19 -0
  134. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
  135. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  136. package/lib-next/theme/DocItem/index.js +30 -59
  137. package/lib-next/theme/DocItem/styles.module.css +2 -11
  138. package/lib-next/theme/DocItemFooter/index.js +79 -0
  139. package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
  140. package/lib-next/theme/DocPage/index.js +46 -23
  141. package/lib-next/theme/DocPaginator/index.js +7 -11
  142. package/lib-next/theme/DocSidebar/index.js +37 -43
  143. package/lib-next/theme/DocSidebarItem/index.js +115 -65
  144. package/lib-next/theme/DocSidebarItem/styles.module.css +4 -0
  145. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  146. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  147. package/lib-next/theme/DocVersionBadge/index.js +27 -0
  148. package/lib-next/theme/DocVersionBanner/index.js +28 -14
  149. package/lib-next/theme/EditThisPage/index.js +6 -1
  150. package/lib-next/theme/ErrorPageContent.js +35 -0
  151. package/lib-next/theme/Footer/index.js +17 -4
  152. package/lib-next/theme/Heading/index.js +25 -29
  153. package/lib-next/theme/Heading/styles.css +5 -6
  154. package/lib-next/theme/Heading/styles.module.css +9 -5
  155. package/lib-next/theme/IconArrow/index.js +2 -2
  156. package/lib-next/theme/IconClose/index.js +23 -0
  157. package/lib-next/theme/IconEdit/index.js +2 -2
  158. package/lib-next/theme/IconExternalLink/index.js +2 -2
  159. package/lib-next/theme/IconLanguage/index.js +2 -2
  160. package/lib-next/theme/IconMenu/index.js +2 -2
  161. package/lib-next/theme/LastUpdated/index.js +3 -2
  162. package/lib-next/theme/Layout/index.js +3 -1
  163. package/lib-next/theme/LayoutHead/index.js +18 -23
  164. package/lib-next/theme/LayoutProviders/index.js +8 -5
  165. package/lib-next/theme/Logo/index.js +25 -21
  166. package/lib-next/theme/MDXComponents/index.js +34 -7
  167. package/lib-next/theme/MDXComponents/styles.css +11 -0
  168. package/lib-next/theme/MDXPage/index.js +10 -2
  169. package/lib-next/theme/Navbar/index.js +62 -34
  170. package/lib-next/theme/Navbar/styles.module.css +3 -39
  171. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -143
  172. package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
  173. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  174. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +159 -0
  175. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
  176. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  177. package/lib-next/theme/NavbarItem/index.js +25 -12
  178. package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
  179. package/lib-next/theme/Seo/index.js +11 -7
  180. package/lib-next/theme/TOC/index.js +12 -36
  181. package/lib-next/theme/TOC/styles.module.css +1 -1
  182. package/lib-next/theme/TOCCollapsible/index.js +13 -4
  183. package/lib-next/theme/TOCCollapsible/styles.module.css +1 -0
  184. package/lib-next/theme/TOCInline/index.js +10 -28
  185. package/lib-next/theme/TOCItems/index.js +85 -0
  186. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  187. package/lib-next/theme/Tabs/index.js +91 -43
  188. package/lib-next/theme/Tabs/styles.module.css +0 -13
  189. package/lib-next/theme/Tag/index.js +27 -0
  190. package/lib-next/theme/Tag/styles.module.css +70 -0
  191. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  192. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  193. package/lib-next/theme/TagsListInline/index.js +31 -0
  194. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  195. package/lib-next/theme/ThemeProvider/index.js +10 -7
  196. package/lib-next/theme/ThemedImage/index.js +5 -5
  197. package/lib-next/theme/Toggle/index.js +34 -37
  198. package/lib-next/theme/Toggle/styles.module.css +91 -3
  199. package/lib-next/theme/UserPreferencesProvider/index.js +9 -6
  200. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  201. package/lib-next/theme/hooks/useTheme.js +4 -5
  202. package/lib-next/theme/hooks/useWindowSize.js +2 -6
  203. package/lib-next/theme/prism-include-languages.js +2 -1
  204. package/lib-next/theme-classic.d.ts +806 -0
  205. package/lib-next/translations.js +6 -10
  206. package/lib-next/types.d.ts +0 -629
  207. package/lib-next/validateThemeConfig.js +141 -116
  208. package/package.json +27 -24
  209. package/src/__tests__/validateThemeConfig.test.js +277 -3
  210. package/src/admonitions.css +35 -0
  211. package/src/deps.d.ts +13 -0
  212. package/src/index.ts +23 -17
  213. package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
  214. package/src/theme/AnnouncementBar/index.tsx +8 -12
  215. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  216. package/src/theme/BackToTopButton/index.tsx +142 -0
  217. package/src/theme/BackToTopButton/styles.module.css +42 -0
  218. package/src/theme/BlogArchivePage/index.tsx +91 -0
  219. package/src/theme/BlogLayout/index.tsx +44 -0
  220. package/src/theme/BlogListPage/index.tsx +18 -25
  221. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  222. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  223. package/src/theme/BlogPostAuthors/index.tsx +39 -0
  224. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  225. package/src/theme/BlogPostItem/index.tsx +70 -80
  226. package/src/theme/BlogPostPage/index.tsx +72 -35
  227. package/src/theme/BlogSidebar/index.tsx +11 -13
  228. package/src/theme/BlogSidebar/styles.module.css +2 -2
  229. package/src/theme/BlogTagsListPage/index.tsx +14 -57
  230. package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
  231. package/src/theme/CodeBlock/index.tsx +21 -151
  232. package/src/theme/CodeBlock/styles.module.css +6 -9
  233. package/src/theme/Details/index.tsx +24 -0
  234. package/src/theme/Details/styles.module.css +13 -0
  235. package/src/theme/DocCard/index.tsx +100 -0
  236. package/src/theme/DocCard/styles.module.css +43 -0
  237. package/src/theme/DocCardList/index.tsx +27 -0
  238. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
  239. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  240. package/src/theme/DocItem/index.tsx +30 -60
  241. package/src/theme/DocItem/styles.module.css +2 -11
  242. package/src/theme/DocItemFooter/index.tsx +91 -0
  243. package/src/theme/DocItemFooter/styles.module.css +18 -0
  244. package/src/theme/DocPage/index.tsx +44 -22
  245. package/src/theme/DocPaginator/index.tsx +9 -13
  246. package/src/theme/DocSidebar/index.tsx +38 -39
  247. package/src/theme/DocSidebarItem/index.tsx +108 -49
  248. package/src/theme/DocSidebarItem/styles.module.css +4 -0
  249. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  250. package/src/theme/DocTagsListPage/index.tsx +41 -0
  251. package/src/theme/DocVersionBadge/index.tsx +30 -0
  252. package/src/theme/DocVersionBanner/index.tsx +48 -21
  253. package/src/theme/EditThisPage/index.tsx +6 -1
  254. package/src/theme/ErrorPageContent.tsx +41 -0
  255. package/src/theme/Footer/index.tsx +20 -5
  256. package/src/theme/Heading/index.tsx +25 -31
  257. package/src/theme/Heading/styles.css +5 -6
  258. package/src/theme/Heading/styles.module.css +9 -5
  259. package/src/theme/IconArrow/index.tsx +2 -2
  260. package/src/theme/IconClose/index.tsx +26 -0
  261. package/src/theme/IconEdit/index.tsx +2 -2
  262. package/src/theme/IconExternalLink/index.tsx +2 -5
  263. package/src/theme/IconLanguage/index.tsx +2 -6
  264. package/src/theme/IconMenu/index.tsx +3 -3
  265. package/src/theme/LastUpdated/index.tsx +3 -2
  266. package/src/theme/Layout/index.tsx +3 -1
  267. package/src/theme/LayoutHead/index.tsx +18 -17
  268. package/src/theme/LayoutProviders/index.tsx +8 -5
  269. package/src/theme/Logo/index.tsx +21 -17
  270. package/src/theme/MDXComponents/index.tsx +39 -5
  271. package/src/theme/MDXComponents/styles.css +11 -0
  272. package/src/theme/MDXPage/index.tsx +10 -2
  273. package/src/theme/Navbar/index.tsx +62 -35
  274. package/src/theme/Navbar/styles.module.css +3 -39
  275. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -149
  276. package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
  277. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  278. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  279. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
  280. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
  281. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  282. package/src/theme/NavbarItem/index.tsx +41 -16
  283. package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
  284. package/src/theme/Seo/index.tsx +7 -4
  285. package/src/theme/TOC/index.tsx +13 -35
  286. package/src/theme/TOC/styles.module.css +1 -1
  287. package/src/theme/TOCCollapsible/index.tsx +13 -4
  288. package/src/theme/TOCCollapsible/styles.module.css +1 -0
  289. package/src/theme/TOCInline/index.tsx +13 -32
  290. package/src/theme/TOCItems/index.tsx +96 -0
  291. package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
  292. package/src/theme/Tabs/index.tsx +93 -49
  293. package/src/theme/Tabs/styles.module.css +0 -13
  294. package/src/theme/Tag/index.tsx +31 -0
  295. package/src/theme/Tag/styles.module.css +70 -0
  296. package/src/theme/TagsListByLetter/index.tsx +45 -0
  297. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  298. package/src/theme/TagsListInline/index.tsx +35 -0
  299. package/src/theme/TagsListInline/styles.module.css +15 -0
  300. package/src/theme/ThemeProvider/index.tsx +6 -2
  301. package/src/theme/ThemedImage/index.tsx +5 -5
  302. package/src/theme/Toggle/index.tsx +36 -43
  303. package/src/theme/Toggle/styles.module.css +91 -3
  304. package/src/theme/UserPreferencesProvider/index.tsx +9 -6
  305. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  306. package/src/theme/hooks/useTabGroupChoice.ts +2 -2
  307. package/src/theme/hooks/useTheme.ts +4 -5
  308. package/src/theme/hooks/useWindowSize.ts +2 -7
  309. package/src/theme/prism-include-languages.ts +3 -2
  310. package/src/theme-classic.d.ts +806 -0
  311. package/src/translations.ts +8 -10
  312. package/src/types.d.ts +0 -629
  313. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +151 -96
  314. package/tsconfig.json +1 -2
  315. package/codeTranslations/README.md +0 -20
  316. package/codeTranslations/ar.json +0 -56
  317. package/codeTranslations/base.json +0 -110
  318. package/codeTranslations/bn.json +0 -56
  319. package/codeTranslations/da.json +0 -56
  320. package/codeTranslations/de.json +0 -56
  321. package/codeTranslations/es.json +0 -56
  322. package/codeTranslations/fa.json +0 -56
  323. package/codeTranslations/fil.json +0 -56
  324. package/codeTranslations/fr.json +0 -56
  325. package/codeTranslations/he.json +0 -56
  326. package/codeTranslations/hi.json +0 -56
  327. package/codeTranslations/ja.json +0 -56
  328. package/codeTranslations/ko.json +0 -56
  329. package/codeTranslations/pl.json +0 -56
  330. package/codeTranslations/pt-BR.json +0 -56
  331. package/codeTranslations/pt-PT.json +0 -56
  332. package/codeTranslations/ru.json +0 -56
  333. package/codeTranslations/tr.json +0 -56
  334. package/codeTranslations/vi.json +0 -56
  335. package/codeTranslations/zh-Hans.json +0 -56
  336. package/codeTranslations/zh-Hant.json +0 -56
  337. package/lib/theme/Toggle/styles.css +0 -103
  338. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  339. package/lib/theme/hooks/useScrollPosition.js +0 -49
  340. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  341. package/lib-next/theme/Toggle/styles.css +0 -103
  342. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  343. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  344. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  345. package/src/theme/Toggle/styles.css +0 -103
  346. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  347. package/src/theme/hooks/useScrollPosition.ts +0 -45
  348. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  349. package/update-code-translations.js +0 -242
  350. package/update-code-translations.test.js +0 -33
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import Link from '@docusaurus/Link';
9
+ import {findFirstCategoryLink, useDocById} from '@docusaurus/theme-common';
10
+ import clsx from 'clsx';
11
+ import styles from './styles.module.css';
12
+ import isInternalUrl from '@docusaurus/isInternalUrl';
13
+
14
+ function CardContainer({href, children}) {
15
+ const className = clsx(
16
+ 'card margin-bottom--lg padding--lg',
17
+ styles.cardContainer,
18
+ href && styles.cardContainerLink,
19
+ );
20
+ return href ? (
21
+ <Link href={href} className={className}>
22
+ {children}
23
+ </Link>
24
+ ) : (
25
+ <div className={className}>{children}</div>
26
+ );
27
+ }
28
+
29
+ function CardLayout({href, icon, title, description}) {
30
+ return (
31
+ <CardContainer href={href}>
32
+ <h2 className={clsx('text--truncate', styles.cardTitle)} title={title}>
33
+ {icon} {title}
34
+ </h2>
35
+ <div
36
+ className={clsx('text--truncate', styles.cardDescription)}
37
+ title={description}>
38
+ {description}
39
+ </div>
40
+ </CardContainer>
41
+ );
42
+ }
43
+
44
+ function CardCategory({item}) {
45
+ const href = findFirstCategoryLink(item);
46
+ return (
47
+ <CardLayout
48
+ href={href}
49
+ icon="🗃️"
50
+ title={item.label}
51
+ description={`${item.items.length} items`}
52
+ />
53
+ );
54
+ }
55
+
56
+ function CardLink({item}) {
57
+ const icon = isInternalUrl(item.href) ? '📄️' : '🔗';
58
+ const doc = useDocById(item.docId ?? undefined);
59
+ return (
60
+ <CardLayout
61
+ href={item.href}
62
+ icon={icon}
63
+ title={item.label}
64
+ description={doc?.description}
65
+ />
66
+ );
67
+ }
68
+
69
+ export default function DocCard({item}) {
70
+ switch (item.type) {
71
+ case 'link':
72
+ return <CardLink item={item} />;
73
+
74
+ case 'category':
75
+ return <CardCategory item={item} />;
76
+
77
+ default:
78
+ throw new Error(`unknown item type ${JSON.stringify(item)}`);
79
+ }
80
+ }
@@ -0,0 +1,43 @@
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
+ .cardContainer {
9
+ height: 8rem;
10
+
11
+ color: var(--ifm-color-emphasis-800);
12
+ --ifm-link-color: var(--ifm-color-emphasis-800);
13
+ --ifm-link-hover-color: var(--ifm-color-emphasis-800);
14
+ --ifm-link-hover-decoration: none;
15
+
16
+ /* box-shadow: var(--ifm-global-shadow-lw); */
17
+ box-shadow: 0 1.5px 3px 0 rgba(0, 0, 0, 0.15);
18
+ border: 1px solid var(--ifm-color-emphasis-200);
19
+ transition: box-shadow var(--ifm-transition-fast) ease,
20
+ background-color var(--ifm-transition-fast) ease;
21
+ }
22
+
23
+ .cardContainer.cardContainerLink:hover {
24
+ /* box-shadow: var(--ifm-global-shadow-md); */
25
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
26
+ }
27
+ html[data-theme='dark'] .cardContainer.cardContainerLink:hover {
28
+ --ifm-card-background-color: #2d2d2d; /* original, non-hovered color is #242526 */
29
+ }
30
+
31
+ .cardContainer:not(.cardContainerLink) {
32
+ cursor: not-allowed;
33
+ }
34
+
35
+ .cardTitle {
36
+ font-size: 1.2rem;
37
+ min-height: 1.2rem;
38
+ }
39
+
40
+ .cardDescription {
41
+ font-size: 0.8rem;
42
+ min-height: 0.8rem;
43
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import DocCard from '@theme/DocCard';
9
+ export default function DocCardList({items}) {
10
+ return (
11
+ <div className="row">
12
+ {items.map((item, index) => (
13
+ <article key={index} className="col col--6">
14
+ <DocCard item={item} />
15
+ </article>
16
+ ))}
17
+ </div>
18
+ );
19
+ }
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import {useCurrentSidebarCategory} from '@docusaurus/theme-common';
9
+ import DocCardList from '@theme/DocCardList';
10
+ import DocPaginator from '@theme/DocPaginator';
11
+ import Seo from '@theme/Seo';
12
+ import DocVersionBanner from '@theme/DocVersionBanner';
13
+ import DocVersionBadge from '@theme/DocVersionBadge';
14
+ import {MainHeading} from '@theme/Heading';
15
+ import styles from './styles.module.css';
16
+ export default function DocCategoryGeneratedIndexPage({
17
+ categoryGeneratedIndex,
18
+ }) {
19
+ const category = useCurrentSidebarCategory();
20
+ return (
21
+ <>
22
+ <Seo
23
+ title={categoryGeneratedIndex.title}
24
+ description={categoryGeneratedIndex.description}
25
+ />
26
+ <div className={styles.generatedIndexPage}>
27
+ <DocVersionBanner />
28
+ <DocVersionBadge />
29
+ <header>
30
+ <MainHeading className={styles.title}>
31
+ {categoryGeneratedIndex.title}
32
+ </MainHeading>
33
+ {categoryGeneratedIndex.description && (
34
+ <p>{categoryGeneratedIndex.description}</p>
35
+ )}
36
+ </header>
37
+ <main className="margin-top--lg">
38
+ <DocCardList items={category.items} />
39
+ </main>
40
+ <footer className="margin-top--lg">
41
+ <DocPaginator
42
+ previous={categoryGeneratedIndex.navigation.previous}
43
+ next={categoryGeneratedIndex.navigation.next}
44
+ />
45
+ </footer>
46
+ </div>
47
+ </>
48
+ );
49
+ }
@@ -0,0 +1,18 @@
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
+ @media (min-width: 997px) {
9
+ .generatedIndexPage {
10
+ max-width: 75% !important;
11
+ }
12
+ }
13
+
14
+ /* Duplicated from .markdown h1 */
15
+ .title {
16
+ --ifm-h1-font-size: 3rem;
17
+ margin-bottom: calc(1.25 * var(--ifm-leading));
18
+ }
@@ -6,57 +6,39 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import clsx from 'clsx';
9
- import {useActivePlugin, useVersions} from '@theme/hooks/useDocs';
10
9
  import useWindowSize from '@theme/hooks/useWindowSize';
11
10
  import DocPaginator from '@theme/DocPaginator';
12
11
  import DocVersionBanner from '@theme/DocVersionBanner';
12
+ import DocVersionBadge from '@theme/DocVersionBadge';
13
13
  import Seo from '@theme/Seo';
14
- import LastUpdated from '@theme/LastUpdated';
14
+ import DocItemFooter from '@theme/DocItemFooter';
15
15
  import TOC from '@theme/TOC';
16
16
  import TOCCollapsible from '@theme/TOCCollapsible';
17
- import EditThisPage from '@theme/EditThisPage';
18
17
  import {MainHeading} from '@theme/Heading';
19
18
  import styles from './styles.module.css';
20
-
21
- function DocItem(props) {
22
- const {content: DocContent, versionMetadata} = props;
19
+ import {ThemeClassNames} from '@docusaurus/theme-common';
20
+ export default function DocItem(props) {
21
+ const {content: DocContent} = props;
23
22
  const {metadata, frontMatter} = DocContent;
24
23
  const {
25
24
  image,
26
25
  keywords,
27
26
  hide_title: hideTitle,
28
27
  hide_table_of_contents: hideTableOfContents,
28
+ toc_min_heading_level: tocMinHeadingLevel,
29
+ toc_max_heading_level: tocMaxHeadingLevel,
29
30
  } = frontMatter;
30
- const {
31
- description,
32
- title,
33
- editUrl,
34
- lastUpdatedAt,
35
- formattedLastUpdatedAt,
36
- lastUpdatedBy,
37
- } = metadata;
38
- const {pluginId} = useActivePlugin({
39
- failfast: true,
40
- });
41
- const versions = useVersions(pluginId); // If site is not versioned or only one version is included
42
- // we don't show the version badge
43
- // See https://github.com/facebook/docusaurus/issues/3362
44
-
45
- const showVersionBadge = versions.length > 1; // We only add a title if:
31
+ const {description, title} = metadata; // We only add a title if:
46
32
  // - user asks to hide it with frontmatter
47
33
  // - the markdown content does not already contain a top-level h1 heading
48
34
 
49
35
  const shouldAddTitle =
50
36
  !hideTitle && typeof DocContent.contentTitle === 'undefined';
51
37
  const windowSize = useWindowSize();
52
- const renderTocMobile =
53
- !hideTableOfContents &&
54
- DocContent.toc &&
55
- (windowSize === 'mobile' || windowSize === 'ssr');
38
+ const canRenderTOC =
39
+ !hideTableOfContents && DocContent.toc && DocContent.toc.length > 0;
56
40
  const renderTocDesktop =
57
- !hideTableOfContents &&
58
- DocContent.toc &&
59
- (windowSize === 'desktop' || windowSize === 'ssr');
41
+ canRenderTOC && (windowSize === 'desktop' || windowSize === 'ssr');
60
42
  return (
61
43
  <>
62
44
  <Seo
@@ -73,23 +55,25 @@ function DocItem(props) {
73
55
  className={clsx('col', {
74
56
  [styles.docItemCol]: !hideTableOfContents,
75
57
  })}>
76
- <DocVersionBanner versionMetadata={versionMetadata} />
58
+ <DocVersionBanner />
77
59
  <div className={styles.docItemContainer}>
78
60
  <article>
79
- {showVersionBadge && (
80
- <span className="badge badge--secondary">
81
- Version: {versionMetadata.label}
82
- </span>
83
- )}
61
+ <DocVersionBadge />
84
62
 
85
- {renderTocMobile && (
63
+ {canRenderTOC && (
86
64
  <TOCCollapsible
87
65
  toc={DocContent.toc}
88
- className={styles.tocMobile}
66
+ minHeadingLevel={tocMinHeadingLevel}
67
+ maxHeadingLevel={tocMaxHeadingLevel}
68
+ className={clsx(
69
+ ThemeClassNames.docs.docTocMobile,
70
+ styles.tocMobile,
71
+ )}
89
72
  />
90
73
  )}
91
74
 
92
- <div className="markdown">
75
+ <div
76
+ className={clsx(ThemeClassNames.docs.docMarkdown, 'markdown')}>
93
77
  {/*
94
78
  Title can be declared inside md content or declared through frontmatter and added manually
95
79
  To make both cases consistent, the added title is added under the same div.markdown block
@@ -100,36 +84,23 @@ function DocItem(props) {
100
84
  <DocContent />
101
85
  </div>
102
86
 
103
- {(editUrl || lastUpdatedAt || lastUpdatedBy) && (
104
- <footer className="row docusaurus-mt-lg">
105
- <div className="col">
106
- {editUrl && <EditThisPage editUrl={editUrl} />}
107
- </div>
108
-
109
- <div className={clsx('col', styles.lastUpdated)}>
110
- {(lastUpdatedAt || lastUpdatedBy) && (
111
- <LastUpdated
112
- lastUpdatedAt={lastUpdatedAt}
113
- formattedLastUpdatedAt={formattedLastUpdatedAt}
114
- lastUpdatedBy={lastUpdatedBy}
115
- />
116
- )}
117
- </div>
118
- </footer>
119
- )}
87
+ <DocItemFooter {...props} />
120
88
  </article>
121
89
 
122
- <DocPaginator metadata={metadata} />
90
+ <DocPaginator previous={metadata.previous} next={metadata.next} />
123
91
  </div>
124
92
  </div>
125
93
  {renderTocDesktop && (
126
94
  <div className="col col--3">
127
- <TOC toc={DocContent.toc} />
95
+ <TOC
96
+ toc={DocContent.toc}
97
+ minHeadingLevel={tocMinHeadingLevel}
98
+ maxHeadingLevel={tocMaxHeadingLevel}
99
+ className={ThemeClassNames.docs.docTocDesktop}
100
+ />
128
101
  </div>
129
102
  )}
130
103
  </div>
131
104
  </>
132
105
  );
133
106
  }
134
-
135
- export default DocItem;
@@ -5,25 +5,16 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ .docItemContainer article > *:first-child,
8
9
  .docItemContainer header + * {
9
10
  margin-top: 0;
10
11
  }
11
12
 
12
- .lastUpdated {
13
- margin-top: 0.2rem;
14
- font-style: italic;
15
- font-size: smaller;
16
- }
17
-
18
- @media only screen and (min-width: 997px) {
13
+ @media (min-width: 997px) {
19
14
  .docItemCol {
20
15
  max-width: 75% !important;
21
16
  }
22
17
 
23
- .lastUpdated {
24
- text-align: right;
25
- }
26
-
27
18
  /* Prevent hydration FOUC, as the mobile TOC needs to be server-rendered */
28
19
  .tocMobile {
29
20
  display: none;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import clsx from 'clsx';
9
+ import LastUpdated from '@theme/LastUpdated';
10
+ import EditThisPage from '@theme/EditThisPage';
11
+ import TagsListInline from '@theme/TagsListInline';
12
+ import styles from './styles.module.css';
13
+ import {ThemeClassNames} from '@docusaurus/theme-common';
14
+
15
+ function TagsRow(props) {
16
+ return (
17
+ <div
18
+ className={clsx(
19
+ ThemeClassNames.docs.docFooterTagsRow,
20
+ 'row margin-bottom--sm',
21
+ )}>
22
+ <div className="col">
23
+ <TagsListInline {...props} />
24
+ </div>
25
+ </div>
26
+ );
27
+ }
28
+
29
+ function EditMetaRow({
30
+ editUrl,
31
+ lastUpdatedAt,
32
+ lastUpdatedBy,
33
+ formattedLastUpdatedAt,
34
+ }) {
35
+ return (
36
+ <div className={clsx(ThemeClassNames.docs.docFooterEditMetaRow, 'row')}>
37
+ <div className="col">{editUrl && <EditThisPage editUrl={editUrl} />}</div>
38
+
39
+ <div className={clsx('col', styles.lastUpdated)}>
40
+ {(lastUpdatedAt || lastUpdatedBy) && (
41
+ <LastUpdated
42
+ lastUpdatedAt={lastUpdatedAt}
43
+ formattedLastUpdatedAt={formattedLastUpdatedAt}
44
+ lastUpdatedBy={lastUpdatedBy}
45
+ />
46
+ )}
47
+ </div>
48
+ </div>
49
+ );
50
+ }
51
+
52
+ export default function DocItemFooter(props) {
53
+ const {content: DocContent} = props;
54
+ const {metadata} = DocContent;
55
+ const {editUrl, lastUpdatedAt, formattedLastUpdatedAt, lastUpdatedBy, tags} =
56
+ metadata;
57
+ const canDisplayTagsRow = tags.length > 0;
58
+ const canDisplayEditMetaRow = !!(editUrl || lastUpdatedAt || lastUpdatedBy);
59
+ const canDisplayFooter = canDisplayTagsRow || canDisplayEditMetaRow;
60
+
61
+ if (!canDisplayFooter) {
62
+ return null;
63
+ }
64
+
65
+ return (
66
+ <footer
67
+ className={clsx(ThemeClassNames.docs.docFooter, 'docusaurus-mt-lg')}>
68
+ {canDisplayTagsRow && <TagsRow tags={tags} />}
69
+ {canDisplayEditMetaRow && (
70
+ <EditMetaRow
71
+ editUrl={editUrl}
72
+ lastUpdatedAt={lastUpdatedAt}
73
+ lastUpdatedBy={lastUpdatedBy}
74
+ formattedLastUpdatedAt={formattedLastUpdatedAt}
75
+ />
76
+ )}
77
+ </footer>
78
+ );
79
+ }
@@ -0,0 +1,18 @@
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
+ .lastUpdated {
9
+ margin-top: 0.2rem;
10
+ font-style: italic;
11
+ font-size: smaller;
12
+ }
13
+
14
+ @media (min-width: 997px) {
15
+ .lastUpdated {
16
+ text-align: right;
17
+ }
18
+ }
@@ -6,26 +6,34 @@
6
6
  */
7
7
  import React, {useState, useCallback} from 'react';
8
8
  import {MDXProvider} from '@mdx-js/react';
9
- import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
10
9
  import renderRoutes from '@docusaurus/renderRoutes';
11
10
  import Layout from '@theme/Layout';
12
11
  import DocSidebar from '@theme/DocSidebar';
13
12
  import MDXComponents from '@theme/MDXComponents';
14
13
  import NotFound from '@theme/NotFound';
15
14
  import IconArrow from '@theme/IconArrow';
15
+ import BackToTopButton from '@theme/BackToTopButton';
16
16
  import {matchPath} from '@docusaurus/router';
17
17
  import {translate} from '@docusaurus/Translate';
18
18
  import clsx from 'clsx';
19
19
  import styles from './styles.module.css';
20
- import {ThemeClassNames, docVersionSearchTag} from '@docusaurus/theme-common';
20
+ import {
21
+ ThemeClassNames,
22
+ docVersionSearchTag,
23
+ DocsSidebarProvider,
24
+ useDocsSidebar,
25
+ DocsVersionProvider,
26
+ } from '@docusaurus/theme-common';
27
+ import Head from '@docusaurus/Head';
21
28
 
22
- function DocPageContent({currentDocRoute, versionMetadata, children}) {
23
- const {siteConfig, isClient} = useDocusaurusContext();
29
+ function DocPageContent({
30
+ currentDocRoute,
31
+ versionMetadata,
32
+ children,
33
+ sidebarName,
34
+ }) {
35
+ const sidebar = useDocsSidebar();
24
36
  const {pluginId, version} = versionMetadata;
25
- const sidebarName = currentDocRoute.sidebar;
26
- const sidebar = sidebarName
27
- ? versionMetadata.docsSidebars[sidebarName]
28
- : undefined;
29
37
  const [hiddenSidebarContainer, setHiddenSidebarContainer] = useState(false);
30
38
  const [hiddenSidebar, setHiddenSidebar] = useState(false);
31
39
  const toggleSidebar = useCallback(() => {
@@ -33,18 +41,19 @@ function DocPageContent({currentDocRoute, versionMetadata, children}) {
33
41
  setHiddenSidebar(false);
34
42
  }
35
43
 
36
- setHiddenSidebarContainer(!hiddenSidebarContainer);
44
+ setHiddenSidebarContainer((value) => !value);
37
45
  }, [hiddenSidebar]);
38
46
  return (
39
47
  <Layout
40
- key={isClient}
41
- wrapperClassName={ThemeClassNames.wrapper.docPages}
42
- pageClassName={ThemeClassNames.page.docPage}
43
- searchMetadatas={{
48
+ wrapperClassName={ThemeClassNames.wrapper.docsPages}
49
+ pageClassName={ThemeClassNames.page.docsDocPage}
50
+ searchMetadata={{
44
51
  version,
45
52
  tag: docVersionSearchTag(pluginId, version),
46
53
  }}>
47
54
  <div className={styles.docPage}>
55
+ <BackToTopButton />
56
+
48
57
  {sidebar && (
49
58
  <aside
50
59
  className={clsx(styles.docSidebarContainer, {
@@ -69,7 +78,6 @@ function DocPageContent({currentDocRoute, versionMetadata, children}) {
69
78
  }
70
79
  sidebar={sidebar}
71
80
  path={currentDocRoute.path}
72
- sidebarCollapsible={siteConfig.themeConfig.sidebarCollapsible}
73
81
  onCollapse={toggleSidebar}
74
82
  isHidden={hiddenSidebar}
75
83
  />
@@ -130,17 +138,32 @@ function DocPage(props) {
130
138
  );
131
139
 
132
140
  if (!currentDocRoute) {
133
- return <NotFound {...props} />;
134
- }
141
+ return <NotFound />;
142
+ } // For now, the sidebarName is added as route config: not ideal!
135
143
 
144
+ const sidebarName = currentDocRoute.sidebar;
145
+ const sidebar = sidebarName
146
+ ? versionMetadata.docsSidebars[sidebarName]
147
+ : null;
136
148
  return (
137
- <DocPageContent
138
- currentDocRoute={currentDocRoute}
139
- versionMetadata={versionMetadata}>
140
- {renderRoutes(docRoutes, {
141
- versionMetadata,
142
- })}
143
- </DocPageContent>
149
+ <>
150
+ <Head>
151
+ {/* TODO we should add a core addRoute({htmlClassName}) generic plugin option */}
152
+ <html className={versionMetadata.className} />
153
+ </Head>
154
+ <DocsVersionProvider version={versionMetadata}>
155
+ <DocsSidebarProvider sidebar={sidebar}>
156
+ <DocPageContent
157
+ currentDocRoute={currentDocRoute}
158
+ versionMetadata={versionMetadata}
159
+ sidebarName={sidebarName}>
160
+ {renderRoutes(docRoutes, {
161
+ versionMetadata,
162
+ })}
163
+ </DocPageContent>
164
+ </DocsSidebarProvider>
165
+ </DocsVersionProvider>
166
+ </>
144
167
  );
145
168
  }
146
169
 
@@ -9,7 +9,7 @@ import Link from '@docusaurus/Link';
9
9
  import Translate, {translate} from '@docusaurus/Translate';
10
10
 
11
11
  function DocPaginator(props) {
12
- const {metadata} = props;
12
+ const {previous, next} = props;
13
13
  return (
14
14
  <nav
15
15
  className="pagination-nav docusaurus-mt-lg"
@@ -19,10 +19,8 @@ function DocPaginator(props) {
19
19
  description: 'The ARIA label for the docs pagination',
20
20
  })}>
21
21
  <div className="pagination-nav__item">
22
- {metadata.previous && (
23
- <Link
24
- className="pagination-nav__link"
25
- to={metadata.previous.permalink}>
22
+ {previous && (
23
+ <Link className="pagination-nav__link" to={previous.permalink}>
26
24
  <div className="pagination-nav__sublabel">
27
25
  <Translate
28
26
  id="theme.docs.paginator.previous"
@@ -31,14 +29,14 @@ function DocPaginator(props) {
31
29
  </Translate>
32
30
  </div>
33
31
  <div className="pagination-nav__label">
34
- &laquo; {metadata.previous.title}
32
+ &laquo; {previous.title}
35
33
  </div>
36
34
  </Link>
37
35
  )}
38
36
  </div>
39
37
  <div className="pagination-nav__item pagination-nav__item--next">
40
- {metadata.next && (
41
- <Link className="pagination-nav__link" to={metadata.next.permalink}>
38
+ {next && (
39
+ <Link className="pagination-nav__link" to={next.permalink}>
42
40
  <div className="pagination-nav__sublabel">
43
41
  <Translate
44
42
  id="theme.docs.paginator.next"
@@ -46,9 +44,7 @@ function DocPaginator(props) {
46
44
  Next
47
45
  </Translate>
48
46
  </div>
49
- <div className="pagination-nav__label">
50
- {metadata.next.title} &raquo;
51
- </div>
47
+ <div className="pagination-nav__label">{next.title} &raquo;</div>
52
48
  </Link>
53
49
  )}
54
50
  </div>