@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
@@ -6,28 +6,19 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import clsx from 'clsx';
9
- import {useThemeConfig} from '@docusaurus/theme-common';
10
- import useUserPreferencesContext from '@theme/hooks/useUserPreferencesContext';
9
+ import {useThemeConfig, useAnnouncementBar} from '@docusaurus/theme-common';
11
10
  import {translate} from '@docusaurus/Translate';
11
+ import IconClose from '@theme/IconClose';
12
12
  import styles from './styles.module.css';
13
-
14
- function AnnouncementBar() {
15
- const {
16
- isAnnouncementBarClosed,
17
- closeAnnouncementBar,
18
- } = useUserPreferencesContext();
13
+ export default function AnnouncementBar() {
14
+ const {isActive, close} = useAnnouncementBar();
19
15
  const {announcementBar} = useThemeConfig();
20
16
 
21
- if (!announcementBar) {
17
+ if (!isActive) {
22
18
  return null;
23
19
  }
24
20
 
25
21
  const {content, backgroundColor, textColor, isCloseable} = announcementBar;
26
-
27
- if (!content || (isCloseable && isAnnouncementBarClosed)) {
28
- return null;
29
- }
30
-
31
22
  return (
32
23
  <div
33
24
  className={styles.announcementBar}
@@ -36,10 +27,9 @@ function AnnouncementBar() {
36
27
  color: textColor,
37
28
  }}
38
29
  role="banner">
30
+ {isCloseable && <div className={styles.announcementBarPlaceholder} />}
39
31
  <div
40
- className={clsx(styles.announcementBarContent, {
41
- [styles.announcementBarCloseable]: isCloseable,
42
- })} // Developer provided the HTML, so assume it's safe.
32
+ className={styles.announcementBarContent} // Developer provided the HTML, so assume it's safe.
43
33
  // eslint-disable-next-line react/no-danger
44
34
  dangerouslySetInnerHTML={{
45
35
  __html: content,
@@ -48,18 +38,16 @@ function AnnouncementBar() {
48
38
  {isCloseable ? (
49
39
  <button
50
40
  type="button"
51
- className={styles.announcementBarClose}
52
- onClick={closeAnnouncementBar}
41
+ className={clsx('clean-btn close', styles.announcementBarClose)}
42
+ onClick={close}
53
43
  aria-label={translate({
54
44
  id: 'theme.AnnouncementBar.closeButtonAriaLabel',
55
45
  message: 'Close',
56
46
  description: 'The ARIA label for close button of announcement bar',
57
47
  })}>
58
- <span aria-hidden="true">×</span>
48
+ <IconClose width={14} height={14} strokeWidth={3.1} />
59
49
  </button>
60
50
  ) : null}
61
51
  </div>
62
52
  );
63
53
  }
64
-
65
- export default AnnouncementBar;
@@ -10,59 +10,39 @@
10
10
  }
11
11
 
12
12
  .announcementBar {
13
- position: relative;
14
- width: 100%;
13
+ display: flex;
14
+ align-items: center;
15
15
  height: var(--docusaurus-announcement-bar-height);
16
- background-color: var(--ifm-color-primary);
16
+ background-color: var(--ifm-color-white);
17
17
  color: var(--ifm-color-black);
18
+ border-bottom: 1px solid var(--ifm-color-emphasis-100);
18
19
  }
19
20
 
20
- @media print {
21
- .announcementBar {
22
- display: none;
23
- }
21
+ html[data-announcement-bar-initially-dismissed='true'] .announcementBar {
22
+ display: none;
24
23
  }
25
24
 
26
- @media screen and (min-width: 1024px) {
27
- :root {
28
- --docusaurus-announcement-bar-height: 30px;
29
- }
25
+ .announcementBarPlaceholder {
26
+ flex: 0 0 10px;
30
27
  }
31
28
 
32
29
  .announcementBarClose {
33
- position: absolute;
34
- right: 0;
35
- top: 0;
36
- width: 55px;
37
- font-size: 1.25rem;
30
+ flex: 0 0 30px;
31
+ align-self: stretch;
38
32
  padding: 0;
39
- border: none;
40
- cursor: pointer;
41
- background: none;
42
- color: inherit;
43
- height: 100%;
33
+ line-height: 0;
44
34
  }
45
35
 
46
36
  .announcementBarContent {
37
+ flex: 1 1 auto;
47
38
  font-size: 85%;
48
- width: 100%;
49
39
  text-align: center;
50
40
  padding: 5px 0;
51
41
  }
52
42
 
53
- .announcementBarCloseable {
54
- margin-right: 55px;
55
- }
56
-
57
- @media screen and (max-width: 576px) {
58
- .announcementBarClose {
59
- width: 35px;
60
- }
61
- .announcementBarContent {
62
- width: auto;
63
- }
64
- .announcementBarCloseable {
65
- margin-right: 35px;
43
+ @media print {
44
+ .announcementBar {
45
+ display: none;
66
46
  }
67
47
  }
68
48
 
@@ -70,3 +50,14 @@
70
50
  color: inherit;
71
51
  text-decoration: underline;
72
52
  }
53
+
54
+ @media (min-width: 997px) {
55
+ :root {
56
+ --docusaurus-announcement-bar-height: 30px;
57
+ }
58
+
59
+ .announcementBarPlaceholder,
60
+ .announcementBarClose {
61
+ flex-basis: 50px;
62
+ }
63
+ }
@@ -0,0 +1,131 @@
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, {useRef, useState} from 'react';
8
+ import clsx from 'clsx';
9
+ import {translate} from '@docusaurus/Translate';
10
+ import styles from './styles.module.css';
11
+ import {
12
+ ThemeClassNames,
13
+ useScrollPosition,
14
+ useLocationChange,
15
+ } from '@docusaurus/theme-common';
16
+ const threshold = 300; // Not all have support for smooth scrolling (particularly Safari mobile iOS)
17
+ // TODO proper detection is currently unreliable!
18
+ // see https://github.com/wessberg/scroll-behavior-polyfill/issues/16
19
+
20
+ const SupportsNativeSmoothScrolling = false; // const SupportsNativeSmoothScrolling =
21
+ // ExecutionEnvironment.canUseDOM &&
22
+ // 'scrollBehavior' in document.documentElement.style;
23
+
24
+ function smoothScrollTopNative() {
25
+ window.scrollTo({
26
+ top: 0,
27
+ behavior: 'smooth',
28
+ });
29
+ return () => {
30
+ // Nothing to cancel, it's natively cancelled if user tries to scroll down
31
+ };
32
+ }
33
+
34
+ function smoothScrollTopPolyfill() {
35
+ let raf = null;
36
+
37
+ function rafRecursion() {
38
+ const currentScroll = document.documentElement.scrollTop;
39
+
40
+ if (currentScroll > 0) {
41
+ raf = requestAnimationFrame(rafRecursion);
42
+ window.scrollTo(0, Math.floor(currentScroll * 0.85));
43
+ }
44
+ }
45
+
46
+ rafRecursion(); // Break the recursion. Prevents the user from "fighting" against that
47
+ // recursion producing a weird UX
48
+
49
+ return () => raf && cancelAnimationFrame(raf);
50
+ }
51
+
52
+ function useSmoothScrollToTop() {
53
+ const lastCancelRef = useRef(null);
54
+
55
+ function smoothScrollTop() {
56
+ lastCancelRef.current = SupportsNativeSmoothScrolling
57
+ ? smoothScrollTopNative()
58
+ : smoothScrollTopPolyfill();
59
+ }
60
+
61
+ return {
62
+ smoothScrollTop,
63
+ cancelScrollToTop: () => lastCancelRef.current?.(),
64
+ };
65
+ }
66
+
67
+ export default function BackToTopButton() {
68
+ const [show, setShow] = useState(false);
69
+ const isFocusedAnchor = useRef(false);
70
+ const {smoothScrollTop, cancelScrollToTop} = useSmoothScrollToTop();
71
+ useScrollPosition(({scrollY: scrollTop}, lastPosition) => {
72
+ const lastScrollTop = lastPosition?.scrollY; // No lastScrollTop means component is just being mounted.
73
+ // Not really a scroll event from the user, so we ignore it
74
+
75
+ if (!lastScrollTop) {
76
+ return;
77
+ }
78
+
79
+ if (isFocusedAnchor.current) {
80
+ isFocusedAnchor.current = false;
81
+ return;
82
+ }
83
+
84
+ const isScrollingUp = scrollTop < lastScrollTop;
85
+
86
+ if (!isScrollingUp) {
87
+ cancelScrollToTop();
88
+ }
89
+
90
+ if (scrollTop < threshold) {
91
+ setShow(false);
92
+ return;
93
+ }
94
+
95
+ if (isScrollingUp) {
96
+ const documentHeight = document.documentElement.scrollHeight;
97
+ const windowHeight = window.innerHeight;
98
+
99
+ if (scrollTop + windowHeight < documentHeight) {
100
+ setShow(true);
101
+ }
102
+ } else {
103
+ setShow(false);
104
+ }
105
+ });
106
+ useLocationChange((locationChangeEvent) => {
107
+ if (locationChangeEvent.location.hash) {
108
+ isFocusedAnchor.current = true;
109
+ setShow(false);
110
+ }
111
+ });
112
+ return (
113
+ <button
114
+ aria-label={translate({
115
+ id: 'theme.BackToTopButton.buttonAriaLabel',
116
+ message: 'Scroll back to top',
117
+ description: 'The ARIA label for the back to top button',
118
+ })}
119
+ className={clsx(
120
+ 'clean-btn',
121
+ ThemeClassNames.common.backToTopButton,
122
+ styles.backToTopButton,
123
+ {
124
+ [styles.backToTopButtonShow]: show,
125
+ },
126
+ )}
127
+ type="button"
128
+ onClick={() => smoothScrollTop()}
129
+ />
130
+ );
131
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ .backToTopButton {
9
+ position: fixed;
10
+ right: 1.3rem;
11
+ bottom: 1.3rem;
12
+ border-radius: 50%;
13
+ background-color: var(--ifm-color-emphasis-200);
14
+ width: 3rem;
15
+ height: 3rem;
16
+ z-index: calc(var(--ifm-z-index-fixed) - 1);
17
+ box-shadow: var(--ifm-global-shadow-lw);
18
+ transition: all var(--ifm-transition-fast)
19
+ var(--ifm-transition-timing-default);
20
+ opacity: 0;
21
+ transform: scale(0);
22
+ visibility: hidden;
23
+ }
24
+
25
+ .backToTopButton::after {
26
+ content: ' ';
27
+ display: inline-block;
28
+ mask: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem no-repeat;
29
+ background-color: var(--ifm-color-emphasis-1000);
30
+ width: 100%;
31
+ height: 100%;
32
+ }
33
+
34
+ @media (hover: hover) {
35
+ .backToTopButton:hover {
36
+ background-color: var(--ifm-color-emphasis-300);
37
+ }
38
+ }
39
+
40
+ .backToTopButtonShow {
41
+ opacity: 1;
42
+ transform: scale(1);
43
+ visibility: visible;
44
+ }
@@ -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 Layout from '@theme/Layout';
9
+ import Link from '@docusaurus/Link';
10
+ import {translate} from '@docusaurus/Translate';
11
+
12
+ function Year({year, posts}) {
13
+ return (
14
+ <>
15
+ <h3>{year}</h3>
16
+ <ul>
17
+ {posts.map((post) => (
18
+ <li key={post.metadata.date}>
19
+ <Link to={post.metadata.permalink}>
20
+ {post.metadata.formattedDate} - {post.metadata.title}
21
+ </Link>
22
+ </li>
23
+ ))}
24
+ </ul>
25
+ </>
26
+ );
27
+ }
28
+
29
+ function YearsSection({years}) {
30
+ return (
31
+ <section className="margin-vert--lg">
32
+ <div className="container">
33
+ <div className="row">
34
+ {years.map((_props, idx) => (
35
+ <div key={idx} className="col col--4 margin-vert--lg">
36
+ <Year {..._props} />
37
+ </div>
38
+ ))}
39
+ </div>
40
+ </div>
41
+ </section>
42
+ );
43
+ }
44
+
45
+ function listPostsByYears(blogPosts) {
46
+ const postsByYear = blogPosts.reduceRight((posts, post) => {
47
+ const year = post.metadata.date.split('-')[0];
48
+ const yearPosts = posts.get(year) || [];
49
+ return posts.set(year, [post, ...yearPosts]);
50
+ }, new Map());
51
+ return Array.from(postsByYear, ([year, posts]) => ({
52
+ year,
53
+ posts,
54
+ }));
55
+ }
56
+
57
+ export default function BlogArchive({archive}) {
58
+ const title = translate({
59
+ id: 'theme.blog.archive.title',
60
+ message: 'Archive',
61
+ description: 'The page & hero title of the blog archive page',
62
+ });
63
+ const description = translate({
64
+ id: 'theme.blog.archive.description',
65
+ message: 'Archive',
66
+ description: 'The page & hero description of the blog archive page',
67
+ });
68
+ const years = listPostsByYears(archive.blogPosts);
69
+ return (
70
+ <Layout title={title} description={description}>
71
+ <header className="hero hero--primary">
72
+ <div className="container">
73
+ <h1 className="hero__title">{title}</h1>
74
+ <p className="hero__subtitle">{description}</p>
75
+ </div>
76
+ </header>
77
+ <main>{years.length > 0 && <YearsSection years={years} />}</main>
78
+ </Layout>
79
+ );
80
+ }
@@ -0,0 +1,37 @@
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 Layout from '@theme/Layout';
10
+ import BlogSidebar from '@theme/BlogSidebar';
11
+ export default function BlogLayout(props) {
12
+ const {sidebar, toc, children, ...layoutProps} = props;
13
+ const hasSidebar = sidebar && sidebar.items.length > 0;
14
+ return (
15
+ <Layout {...layoutProps}>
16
+ <div className="container margin-vert--lg">
17
+ <div className="row">
18
+ {hasSidebar && (
19
+ <aside className="col col--3">
20
+ <BlogSidebar sidebar={sidebar} />
21
+ </aside>
22
+ )}
23
+ <main
24
+ className={clsx('col', {
25
+ 'col--7': hasSidebar,
26
+ 'col--9 col--offset-1': !hasSidebar,
27
+ })}
28
+ itemScope
29
+ itemType="http://schema.org/Blog">
30
+ {children}
31
+ </main>
32
+ {toc && <div className="col col--2">{toc}</div>}
33
+ </div>
34
+ </div>
35
+ </Layout>
36
+ );
37
+ }
@@ -6,13 +6,11 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
9
- import Layout from '@theme/Layout';
9
+ import BlogLayout from '@theme/BlogLayout';
10
10
  import BlogPostItem from '@theme/BlogPostItem';
11
11
  import BlogListPaginator from '@theme/BlogListPaginator';
12
- import BlogSidebar from '@theme/BlogSidebar';
13
12
  import {ThemeClassNames} from '@docusaurus/theme-common';
14
-
15
- function BlogListPage(props) {
13
+ export default function BlogListPage(props) {
16
14
  const {metadata, items, sidebar} = props;
17
15
  const {
18
16
  siteConfig: {title: siteTitle},
@@ -21,36 +19,27 @@ function BlogListPage(props) {
21
19
  const isBlogOnlyMode = permalink === '/';
22
20
  const title = isBlogOnlyMode ? siteTitle : blogTitle;
23
21
  return (
24
- <Layout
22
+ <BlogLayout
25
23
  title={title}
26
24
  description={blogDescription}
27
25
  wrapperClassName={ThemeClassNames.wrapper.blogPages}
28
26
  pageClassName={ThemeClassNames.page.blogListPage}
29
- searchMetadatas={{
27
+ searchMetadata={{
30
28
  // assign unique search tag to exclude this page from search results!
31
29
  tag: 'blog_posts_list',
32
- }}>
33
- <div className="container margin-vert--lg">
34
- <div className="row">
35
- <div className="col col--3">
36
- <BlogSidebar sidebar={sidebar} />
37
- </div>
38
- <main className="col col--7">
39
- {items.map(({content: BlogPostContent}) => (
40
- <BlogPostItem
41
- key={BlogPostContent.metadata.permalink}
42
- frontMatter={BlogPostContent.frontMatter}
43
- metadata={BlogPostContent.metadata}
44
- truncated={BlogPostContent.metadata.truncated}>
45
- <BlogPostContent />
46
- </BlogPostItem>
47
- ))}
48
- <BlogListPaginator metadata={metadata} />
49
- </main>
50
- </div>
51
- </div>
52
- </Layout>
30
+ }}
31
+ sidebar={sidebar}>
32
+ {items.map(({content: BlogPostContent}) => (
33
+ <BlogPostItem
34
+ key={BlogPostContent.metadata.permalink}
35
+ frontMatter={BlogPostContent.frontMatter}
36
+ assets={BlogPostContent.assets}
37
+ metadata={BlogPostContent.metadata}
38
+ truncated={BlogPostContent.metadata.truncated}>
39
+ <BlogPostContent />
40
+ </BlogPostItem>
41
+ ))}
42
+ <BlogListPaginator metadata={metadata} />
43
+ </BlogLayout>
53
44
  );
54
45
  }
55
-
56
- export default BlogListPage;
@@ -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 Link from '@docusaurus/Link';
9
8
  import Translate, {translate} from '@docusaurus/Translate';
10
-
11
- function BlogListPaginator(props) {
9
+ import PaginatorNavLink from '@theme/PaginatorNavLink';
10
+ export default function BlogListPaginator(props) {
12
11
  const {metadata} = props;
13
12
  const {previousPage, nextPage} = metadata;
14
13
  return (
@@ -21,34 +20,32 @@ function BlogListPaginator(props) {
21
20
  })}>
22
21
  <div className="pagination-nav__item">
23
22
  {previousPage && (
24
- <Link className="pagination-nav__link" to={previousPage}>
25
- <div className="pagination-nav__label">
26
- &laquo;{' '}
23
+ <PaginatorNavLink
24
+ permalink={previousPage}
25
+ title={
27
26
  <Translate
28
27
  id="theme.blog.paginator.newerEntries"
29
28
  description="The label used to navigate to the newer blog posts page (previous page)">
30
29
  Newer Entries
31
30
  </Translate>
32
- </div>
33
- </Link>
31
+ }
32
+ />
34
33
  )}
35
34
  </div>
36
35
  <div className="pagination-nav__item pagination-nav__item--next">
37
36
  {nextPage && (
38
- <Link className="pagination-nav__link" to={nextPage}>
39
- <div className="pagination-nav__label">
37
+ <PaginatorNavLink
38
+ permalink={nextPage}
39
+ title={
40
40
  <Translate
41
41
  id="theme.blog.paginator.olderEntries"
42
42
  description="The label used to navigate to the older blog posts page (next page)">
43
43
  Older Entries
44
- </Translate>{' '}
45
- &raquo;
46
- </div>
47
- </Link>
44
+ </Translate>
45
+ }
46
+ />
48
47
  )}
49
48
  </div>
50
49
  </nav>
51
50
  );
52
51
  }
53
-
54
- export default BlogListPaginator;
@@ -0,0 +1,40 @@
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 styles from './styles.module.css';
10
+ export default function BlogPostAuthor({author}) {
11
+ const {name, title, url, imageURL} = author;
12
+ return (
13
+ <div className="avatar margin-bottom--sm">
14
+ {imageURL && (
15
+ <Link className="avatar__photo-link avatar__photo" href={url}>
16
+ <img className={styles.image} src={imageURL} alt={name} />
17
+ </Link>
18
+ )}
19
+
20
+ {name && (
21
+ <div
22
+ className="avatar__intro"
23
+ itemProp="author"
24
+ itemScope
25
+ itemType="https://schema.org/Person">
26
+ <div className="avatar__name">
27
+ <Link href={url} itemProp="url">
28
+ <span itemProp="name">{name}</span>
29
+ </Link>
30
+ </div>
31
+ {title && (
32
+ <small className="avatar__subtitle" itemProp="description">
33
+ {title}
34
+ </small>
35
+ )}
36
+ </div>
37
+ )}
38
+ </div>
39
+ );
40
+ }
@@ -5,7 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- .iconEdit {
9
- margin-right: 0.3em;
10
- vertical-align: sub;
8
+ .image {
9
+ width: 100%;
10
+ height: 100%;
11
+ object-fit: cover;
11
12
  }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import clsx from 'clsx';
9
+ import BlogPostAuthor from '@theme/BlogPostAuthor';
10
+ import styles from './styles.module.css'; // Component responsible for the authors layout
11
+
12
+ export default function BlogPostAuthors({authors, assets}) {
13
+ const authorsCount = authors.length;
14
+
15
+ if (authorsCount === 0) {
16
+ return null;
17
+ }
18
+
19
+ const imageOnly = authors.every(({name}) => !name);
20
+ return (
21
+ <div
22
+ className={clsx(
23
+ 'margin-top--md margin-bottom--sm',
24
+ imageOnly ? styles.imageOnlyAuthorRow : 'row',
25
+ )}>
26
+ {authors.map((author, idx) => (
27
+ <div
28
+ className={clsx(
29
+ !imageOnly && 'col col--6',
30
+ imageOnly ? styles.imageOnlyAuthorCol : styles.authorCol,
31
+ )}
32
+ key={idx}>
33
+ <BlogPostAuthor
34
+ author={{
35
+ ...author,
36
+ // Handle author images using relative paths
37
+ imageURL: assets.authorsImageUrls[idx] ?? author.imageURL,
38
+ }}
39
+ />
40
+ </div>
41
+ ))}
42
+ </div>
43
+ );
44
+ }