@docusaurus/theme-classic 2.0.0-beta.15a2b59f9 → 2.0.0-beta.17

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-next/theme/Toggle/styles.module.css → lib/deps.d.ts} +5 -9
  4. package/lib/getSwizzleConfig.js +125 -0
  5. package/lib/index.js +36 -41
  6. package/lib/prism-include-languages.js +9 -5
  7. package/lib/theme-classic.d.ts +771 -0
  8. package/lib/translations.js +40 -34
  9. package/lib/types.d.ts +0 -587
  10. package/lib/validateThemeConfig.js +242 -250
  11. package/lib-next/theme/Admonition/index.js +101 -0
  12. package/lib-next/theme/AnnouncementBar/index.js +8 -16
  13. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  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 +52 -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/{src/theme/Toggle → lib-next/theme/BlogPostAuthors}/styles.module.css +11 -7
  24. package/lib-next/theme/BlogPostItem/index.js +94 -96
  25. package/lib-next/theme/BlogPostPage/index.js +75 -39
  26. package/lib-next/theme/BlogPostPaginator/index.js +12 -19
  27. package/lib-next/theme/BlogSidebar/index.js +11 -13
  28. package/lib-next/theme/BlogSidebar/styles.module.css +4 -2
  29. package/lib-next/theme/BlogTagsListPage/index.js +15 -59
  30. package/lib-next/theme/BlogTagsPostsPage/index.js +33 -41
  31. package/lib-next/theme/CodeBlock/index.js +64 -154
  32. package/lib-next/theme/CodeBlock/styles.module.css +17 -9
  33. package/lib-next/theme/ColorModeToggle/index.js +83 -0
  34. package/lib-next/theme/ColorModeToggle/styles.module.css +51 -0
  35. package/lib-next/theme/Details/index.js +21 -0
  36. package/lib-next/theme/Details/styles.module.css +13 -0
  37. package/lib-next/theme/DocBreadcrumbs/index.js +76 -0
  38. package/lib-next/theme/DocBreadcrumbs/styles.module.css +26 -0
  39. package/lib-next/theme/DocCard/index.js +91 -0
  40. package/lib-next/theme/DocCard/styles.module.css +43 -0
  41. package/lib-next/theme/DocCardList/index.js +19 -0
  42. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +54 -0
  43. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  44. package/lib-next/theme/DocItem/index.js +53 -58
  45. package/lib-next/theme/DocItem/styles.module.css +6 -10
  46. package/lib-next/theme/DocItemFooter/index.js +79 -0
  47. package/{lib/theme/DocItem → lib-next/theme/DocItemFooter}/styles.module.css +1 -9
  48. package/lib-next/theme/DocPage/index.js +54 -55
  49. package/lib-next/theme/DocPage/styles.module.css +9 -3
  50. package/lib-next/theme/DocPaginator/index.js +15 -24
  51. package/lib-next/theme/DocSidebar/index.js +65 -286
  52. package/lib-next/theme/DocSidebar/styles.module.css +5 -22
  53. package/lib-next/theme/DocSidebarItem/index.js +264 -0
  54. package/{lib/theme/BlogPostItem → lib-next/theme/DocSidebarItem}/styles.module.css +5 -10
  55. package/lib-next/theme/DocSidebarItems/index.js +28 -0
  56. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  57. package/lib-next/theme/DocTagsListPage/index.js +35 -0
  58. package/lib-next/theme/DocVersionBadge/index.js +34 -0
  59. package/lib-next/theme/DocVersionBanner/index.js +32 -15
  60. package/lib-next/theme/EditThisPage/index.js +6 -1
  61. package/lib-next/theme/ErrorPageContent.js +35 -0
  62. package/lib-next/theme/Footer/index.js +95 -40
  63. package/lib-next/theme/Footer/styles.module.css +2 -1
  64. package/lib-next/theme/Heading/index.js +39 -48
  65. package/lib-next/theme/Heading/styles.module.css +25 -5
  66. package/lib-next/theme/IconArrow/index.js +2 -5
  67. package/lib-next/theme/IconClose/index.js +23 -0
  68. package/lib-next/theme/IconDarkMode/index.js +17 -0
  69. package/lib-next/theme/IconEdit/index.js +2 -5
  70. package/lib-next/theme/IconExternalLink/index.js +2 -5
  71. package/lib-next/theme/IconLanguage/index.js +5 -8
  72. package/lib-next/theme/IconLightMode/index.js +17 -0
  73. package/lib-next/theme/IconMenu/index.js +7 -5
  74. package/lib-next/theme/LastUpdated/index.js +3 -2
  75. package/lib-next/theme/Layout/index.js +5 -7
  76. package/lib-next/theme/LayoutHead/index.js +27 -32
  77. package/lib-next/theme/LayoutProviders/index.js +15 -9
  78. package/lib-next/theme/Logo/index.js +25 -24
  79. package/lib-next/theme/MDXComponents/index.js +59 -30
  80. package/{src/theme/hooks → lib-next/theme/MDXComponents}/styles.css +7 -2
  81. package/lib-next/theme/MDXPage/index.js +10 -12
  82. package/lib-next/theme/Navbar/index.js +199 -64
  83. package/lib-next/theme/Navbar/styles.module.css +10 -3
  84. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +35 -201
  85. package/lib-next/theme/NavbarItem/DocNavbarItem.js +11 -8
  86. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +73 -0
  87. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +34 -20
  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/theme/hooks/styles.css → lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css} +3 -2
  92. package/lib-next/theme/NavbarItem/NavbarNavLink.js +70 -0
  93. package/lib-next/theme/NavbarItem/index.js +26 -14
  94. package/lib-next/theme/{UserPreferencesContext.js → NavbarItem/utils.js} +3 -3
  95. package/lib-next/theme/NotFound.js +1 -4
  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 +34 -0
  99. package/lib-next/theme/Seo/index.js +11 -7
  100. package/lib-next/theme/SkipToContent/index.js +3 -5
  101. package/lib-next/theme/SkipToContent/styles.module.css +7 -0
  102. package/lib-next/theme/TOC/index.js +12 -39
  103. package/lib-next/theme/TOC/styles.module.css +1 -1
  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/{hooks/styles.css → TagsListByLetter/styles.module.css} +3 -2
  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 +7 -10
  119. package/lib-next/theme/ThemedImage/styles.module.css +2 -2
  120. package/lib-next/theme/prism-include-languages.js +17 -15
  121. package/package.json +31 -31
  122. package/src/admonitions.css +35 -0
  123. package/src/deps.d.ts +13 -0
  124. package/src/getSwizzleConfig.ts +123 -0
  125. package/src/index.ts +39 -61
  126. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  127. package/src/theme/Admonition/index.tsx +106 -0
  128. package/src/theme/AnnouncementBar/index.tsx +9 -15
  129. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  130. package/src/theme/BackToTopButton/index.tsx +143 -0
  131. package/src/theme/BackToTopButton/styles.module.css +44 -0
  132. package/src/theme/BlogArchivePage/index.tsx +91 -0
  133. package/src/theme/BlogLayout/index.tsx +42 -0
  134. package/src/theme/BlogListPage/index.tsx +19 -28
  135. package/src/theme/BlogListPaginator/index.tsx +13 -15
  136. package/src/theme/BlogPostAuthor/index.tsx +54 -0
  137. package/{lib/theme/MDXPage → src/theme/BlogPostAuthor}/styles.module.css +4 -2
  138. package/src/theme/BlogPostAuthors/index.tsx +49 -0
  139. package/src/theme/BlogPostAuthors/styles.module.css +21 -0
  140. package/src/theme/BlogPostItem/index.tsx +84 -90
  141. package/src/theme/BlogPostPage/index.tsx +77 -38
  142. package/src/theme/BlogPostPaginator/index.tsx +12 -18
  143. package/src/theme/BlogSidebar/index.tsx +11 -13
  144. package/src/theme/BlogSidebar/styles.module.css +4 -2
  145. package/src/theme/BlogTagsListPage/index.tsx +15 -60
  146. package/src/theme/BlogTagsPostsPage/index.tsx +32 -40
  147. package/src/theme/CodeBlock/index.tsx +68 -156
  148. package/src/theme/CodeBlock/styles.module.css +17 -9
  149. package/src/theme/ColorModeToggle/index.tsx +92 -0
  150. package/src/theme/ColorModeToggle/styles.module.css +51 -0
  151. package/src/theme/Details/index.tsx +25 -0
  152. package/src/theme/Details/styles.module.css +13 -0
  153. package/src/theme/DocBreadcrumbs/index.tsx +91 -0
  154. package/src/theme/DocBreadcrumbs/styles.module.css +26 -0
  155. package/src/theme/DocCard/index.tsx +109 -0
  156. package/src/theme/DocCard/styles.module.css +43 -0
  157. package/src/theme/DocCardList/index.tsx +27 -0
  158. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +59 -0
  159. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  160. package/src/theme/DocItem/index.tsx +56 -58
  161. package/src/theme/DocItem/styles.module.css +6 -10
  162. package/src/theme/DocItemFooter/index.tsx +91 -0
  163. package/{lib/theme/Toggle → src/theme/DocItemFooter}/styles.module.css +9 -8
  164. package/src/theme/DocPage/index.tsx +53 -49
  165. package/src/theme/DocPage/styles.module.css +9 -3
  166. package/src/theme/DocPaginator/index.tsx +15 -23
  167. package/src/theme/DocSidebar/index.tsx +76 -298
  168. package/src/theme/DocSidebar/styles.module.css +5 -22
  169. package/src/theme/DocSidebarItem/index.tsx +283 -0
  170. package/src/theme/DocSidebarItem/styles.module.css +13 -0
  171. package/src/theme/DocSidebarItems/index.tsx +32 -0
  172. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  173. package/src/theme/DocTagsListPage/index.tsx +39 -0
  174. package/src/theme/DocVersionBadge/index.tsx +35 -0
  175. package/src/theme/DocVersionBanner/index.tsx +49 -22
  176. package/src/theme/EditThisPage/index.tsx +6 -1
  177. package/src/theme/ErrorPageContent.tsx +41 -0
  178. package/src/theme/Footer/index.tsx +109 -44
  179. package/src/theme/Footer/styles.module.css +2 -1
  180. package/src/theme/Heading/index.tsx +38 -53
  181. package/src/theme/Heading/styles.module.css +25 -5
  182. package/src/theme/IconArrow/index.tsx +2 -4
  183. package/src/theme/IconClose/index.tsx +26 -0
  184. package/src/theme/IconDarkMode/index.tsx +20 -0
  185. package/src/theme/IconEdit/index.tsx +5 -4
  186. package/src/theme/IconExternalLink/index.tsx +3 -5
  187. package/src/theme/IconLanguage/index.tsx +6 -8
  188. package/src/theme/IconLightMode/index.tsx +20 -0
  189. package/src/theme/IconMenu/index.tsx +3 -5
  190. package/src/theme/LastUpdated/index.tsx +3 -2
  191. package/src/theme/Layout/index.tsx +5 -6
  192. package/src/theme/LayoutHead/index.tsx +26 -25
  193. package/src/theme/LayoutProviders/index.tsx +15 -9
  194. package/src/theme/Logo/index.tsx +21 -19
  195. package/src/theme/MDXComponents/index.tsx +70 -32
  196. package/{lib/theme/IconExternalLink/styles.module.css → src/theme/MDXComponents/styles.css} +7 -4
  197. package/src/theme/MDXPage/index.tsx +10 -12
  198. package/src/theme/Navbar/index.tsx +208 -68
  199. package/src/theme/Navbar/styles.module.css +10 -3
  200. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +37 -207
  201. package/src/theme/NavbarItem/DocNavbarItem.tsx +17 -18
  202. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +84 -0
  203. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +39 -24
  204. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  205. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
  206. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +16 -10
  207. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  208. package/src/theme/NavbarItem/NavbarNavLink.tsx +68 -0
  209. package/src/theme/NavbarItem/index.tsx +41 -18
  210. package/src/theme/NavbarItem/utils.ts +10 -0
  211. package/src/theme/NotFound.tsx +1 -3
  212. package/src/theme/PaginatorNavLink/index.tsx +20 -0
  213. package/src/theme/SearchBar.tsx +2 -1
  214. package/src/theme/SearchMetadata/index.tsx +43 -0
  215. package/src/theme/Seo/index.tsx +7 -4
  216. package/src/theme/SkipToContent/index.tsx +3 -5
  217. package/src/theme/SkipToContent/styles.module.css +7 -0
  218. package/src/theme/TOC/index.tsx +13 -44
  219. package/src/theme/TOC/styles.module.css +1 -1
  220. package/src/theme/TOCCollapsible/index.tsx +58 -0
  221. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  222. package/src/theme/TOCInline/index.tsx +14 -35
  223. package/src/theme/TOCItems/index.tsx +100 -0
  224. package/src/theme/TabItem/index.tsx +5 -3
  225. package/src/theme/Tabs/index.tsx +115 -56
  226. package/src/theme/Tabs/styles.module.css +0 -13
  227. package/src/theme/Tag/index.tsx +29 -0
  228. package/src/theme/Tag/styles.module.css +70 -0
  229. package/src/theme/TagsListByLetter/index.tsx +43 -0
  230. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  231. package/src/theme/TagsListInline/index.tsx +35 -0
  232. package/src/theme/TagsListInline/styles.module.css +15 -0
  233. package/src/theme/ThemedImage/index.tsx +7 -9
  234. package/src/theme/ThemedImage/styles.module.css +2 -2
  235. package/src/theme/prism-include-languages.ts +20 -15
  236. package/src/theme-classic.d.ts +771 -0
  237. package/src/translations.ts +74 -54
  238. package/src/types.d.ts +0 -587
  239. package/src/validateThemeConfig.ts +381 -0
  240. package/babel.config.js +0 -35
  241. package/codeTranslations/README.md +0 -20
  242. package/codeTranslations/ar.json +0 -57
  243. package/codeTranslations/base.json +0 -112
  244. package/codeTranslations/bn.json +0 -56
  245. package/codeTranslations/da.json +0 -57
  246. package/codeTranslations/de.json +0 -57
  247. package/codeTranslations/es.json +0 -57
  248. package/codeTranslations/fa.json +0 -57
  249. package/codeTranslations/fil.json +0 -57
  250. package/codeTranslations/fr.json +0 -57
  251. package/codeTranslations/he.json +0 -57
  252. package/codeTranslations/hi.json +0 -57
  253. package/codeTranslations/ja.json +0 -57
  254. package/codeTranslations/ko.json +0 -57
  255. package/codeTranslations/pl.json +0 -57
  256. package/codeTranslations/pt-BR.json +0 -57
  257. package/codeTranslations/pt-PT.json +0 -57
  258. package/codeTranslations/ru.json +0 -57
  259. package/codeTranslations/tr.json +0 -57
  260. package/codeTranslations/vi.json +0 -57
  261. package/codeTranslations/zh-Hans.json +0 -57
  262. package/codeTranslations/zh-Hant.json +0 -57
  263. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  264. package/lib/__tests__/translations.test.js +0 -112
  265. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  266. package/lib/theme/AnnouncementBar/index.js +0 -72
  267. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  268. package/lib/theme/BlogListPage/index.js +0 -71
  269. package/lib/theme/BlogListPaginator/index.js +0 -63
  270. package/lib/theme/BlogPostItem/index.js +0 -161
  271. package/lib/theme/BlogPostPage/index.js +0 -69
  272. package/lib/theme/BlogPostPaginator/index.js +0 -64
  273. package/lib/theme/BlogSidebar/index.js +0 -51
  274. package/lib/theme/BlogSidebar/styles.module.css +0 -44
  275. package/lib/theme/BlogTagsListPage/index.js +0 -76
  276. package/lib/theme/BlogTagsPostsPage/index.js +0 -100
  277. package/lib/theme/CodeBlock/index.js +0 -253
  278. package/lib/theme/CodeBlock/styles.module.css +0 -68
  279. package/lib/theme/DocItem/index.js +0 -129
  280. package/lib/theme/DocPage/index.js +0 -173
  281. package/lib/theme/DocPage/styles.module.css +0 -80
  282. package/lib/theme/DocPaginator/index.js +0 -63
  283. package/lib/theme/DocSidebar/index.js +0 -309
  284. package/lib/theme/DocSidebar/styles.module.css +0 -124
  285. package/lib/theme/DocVersionBanner/index.js +0 -128
  286. package/lib/theme/EditThisPage/index.js +0 -31
  287. package/lib/theme/Footer/index.js +0 -115
  288. package/lib/theme/Footer/styles.module.css +0 -15
  289. package/lib/theme/Heading/index.js +0 -76
  290. package/lib/theme/Heading/styles.css +0 -23
  291. package/lib/theme/Heading/styles.module.css +0 -15
  292. package/lib/theme/IconArrow/index.js +0 -28
  293. package/lib/theme/IconEdit/index.js +0 -34
  294. package/lib/theme/IconExternalLink/index.js +0 -30
  295. package/lib/theme/IconLanguage/index.js +0 -29
  296. package/lib/theme/IconMenu/index.js +0 -30
  297. package/lib/theme/LastUpdated/index.js +0 -61
  298. package/lib/theme/Layout/index.js +0 -64
  299. package/lib/theme/Layout/styles.css +0 -27
  300. package/lib/theme/LayoutHead/index.js +0 -144
  301. package/lib/theme/LayoutProviders/index.js +0 -36
  302. package/lib/theme/Logo/index.js +0 -60
  303. package/lib/theme/MDXComponents/index.js +0 -65
  304. package/lib/theme/MDXPage/index.js +0 -66
  305. package/lib/theme/Navbar/index.js +0 -147
  306. package/lib/theme/Navbar/styles.module.css +0 -20
  307. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -209
  308. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -63
  309. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -76
  310. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  311. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  312. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  313. package/lib/theme/NavbarItem/index.js +0 -54
  314. package/lib/theme/NotFound.js +0 -57
  315. package/lib/theme/SearchBar.js +0 -15
  316. package/lib/theme/SearchMetadatas/index.js +0 -33
  317. package/lib/theme/Seo/index.js +0 -49
  318. package/lib/theme/SkipToContent/index.js +0 -71
  319. package/lib/theme/SkipToContent/styles.module.css +0 -14
  320. package/lib/theme/TOC/index.js +0 -59
  321. package/lib/theme/TOC/styles.module.css +0 -23
  322. package/lib/theme/TOCInline/index.js +0 -53
  323. package/lib/theme/TOCInline/styles.module.css +0 -12
  324. package/lib/theme/TabItem/index.js +0 -32
  325. package/lib/theme/Tabs/index.js +0 -150
  326. package/lib/theme/Tabs/styles.module.css +0 -23
  327. package/lib/theme/ThemeContext.js +0 -21
  328. package/lib/theme/ThemeProvider/index.js +0 -38
  329. package/lib/theme/ThemedImage/index.js +0 -49
  330. package/lib/theme/ThemedImage/styles.module.css +0 -18
  331. package/lib/theme/Toggle/index.js +0 -94
  332. package/lib/theme/Toggle/styles.css +0 -103
  333. package/lib/theme/UserPreferencesContext.js +0 -18
  334. package/lib/theme/UserPreferencesProvider/index.js +0 -36
  335. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  336. package/lib/theme/hooks/useDocs.js +0 -18
  337. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  338. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  339. package/lib/theme/hooks/useLocationHash.js +0 -28
  340. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  341. package/lib/theme/hooks/usePrismTheme.js +0 -36
  342. package/lib/theme/hooks/useScrollPosition.js +0 -49
  343. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  344. package/lib/theme/hooks/useTabGroupChoice.js +0 -51
  345. package/lib/theme/hooks/useTheme.js +0 -99
  346. package/lib/theme/hooks/useThemeContext.js +0 -31
  347. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  348. package/lib/theme/hooks/useWindowSize.js +0 -55
  349. package/lib/theme/prism-include-languages.js +0 -39
  350. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  351. package/lib-next/__tests__/translations.test.js +0 -128
  352. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  353. package/lib-next/index.js +0 -221
  354. package/lib-next/theme/Heading/styles.css +0 -23
  355. package/lib-next/theme/SearchMetadatas/index.js +0 -20
  356. package/lib-next/theme/ThemeContext.js +0 -9
  357. package/lib-next/theme/ThemeProvider/index.js +0 -25
  358. package/lib-next/theme/Toggle/index.js +0 -80
  359. package/lib-next/theme/Toggle/styles.css +0 -103
  360. package/lib-next/theme/UserPreferencesProvider/index.js +0 -24
  361. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  362. package/lib-next/theme/hooks/useDocs.js +0 -10
  363. package/lib-next/theme/hooks/useHideableNavbar.js +0 -79
  364. package/lib-next/theme/hooks/useKeyboardNavigation.js +0 -35
  365. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  366. package/lib-next/theme/hooks/useLockBodyScroll.js +0 -18
  367. package/lib-next/theme/hooks/usePrismTheme.js +0 -20
  368. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  369. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  370. package/lib-next/theme/hooks/useTabGroupChoice.js +0 -39
  371. package/lib-next/theme/hooks/useTheme.js +0 -82
  372. package/lib-next/theme/hooks/useThemeContext.js +0 -22
  373. package/lib-next/theme/hooks/useUserPreferencesContext.js +0 -22
  374. package/lib-next/theme/hooks/useWindowSize.js +0 -45
  375. package/lib-next/translations.js +0 -145
  376. package/lib-next/types.d.ts +0 -598
  377. package/lib-next/validateThemeConfig.js +0 -317
  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/Toggle/index.tsx +0 -100
  387. package/src/theme/Toggle/styles.css +0 -103
  388. package/src/theme/UserPreferencesContext.ts +0 -12
  389. package/src/theme/UserPreferencesProvider/index.tsx +0 -27
  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 -240
  407. package/update-code-translations.test.js +0 -33
@@ -53,14 +53,6 @@
53
53
  padding: 0.5rem;
54
54
  }
55
55
 
56
- .menuLinkText {
57
- cursor: initial;
58
- }
59
-
60
- .menuLinkText:hover {
61
- background: none;
62
- }
63
-
64
56
  .menuWithAnnouncementBar {
65
57
  margin-bottom: var(--docusaurus-announcement-bar-height);
66
58
  }
@@ -79,16 +71,17 @@
79
71
  transform: rotate(180deg);
80
72
  margin-top: 4px;
81
73
  }
82
- html[dir='rtl'] .collapseSidebarButtonIcon {
74
+
75
+ [dir='rtl'] .collapseSidebarButtonIcon {
83
76
  transform: rotate(0);
84
77
  }
85
78
 
86
- html[data-theme='dark'] .collapseSidebarButton {
79
+ [data-theme='dark'] .collapseSidebarButton {
87
80
  background-color: var(--collapse-button-bg-color-dark);
88
81
  }
89
82
 
90
- html[data-theme='dark'] .collapseSidebarButton:hover,
91
- html[data-theme='dark'] .collapseSidebarButton:focus {
83
+ [data-theme='dark'] .collapseSidebarButton:hover,
84
+ [data-theme='dark'] .collapseSidebarButton:focus {
92
85
  background-color: var(--ifm-color-emphasis-200);
93
86
  }
94
87
  }
@@ -112,13 +105,3 @@
112
105
  line-height: 0.9;
113
106
  width: 24px;
114
107
  }
115
-
116
- :global(.menu__list) :global(.menu__list) {
117
- overflow-y: hidden;
118
- will-change: height;
119
- transition: height var(--ifm-transition-fast) linear;
120
- }
121
-
122
- :global(.menu__list-item--collapsed) :global(.menu__list) {
123
- height: 0 !important;
124
- }
@@ -0,0 +1,283 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React, {useEffect, useMemo} from 'react';
9
+ import clsx from 'clsx';
10
+ import {
11
+ isActiveSidebarItem,
12
+ usePrevious,
13
+ Collapsible,
14
+ useCollapsible,
15
+ findFirstCategoryLink,
16
+ ThemeClassNames,
17
+ useThemeConfig,
18
+ useDocSidebarItemsExpandedState,
19
+ isSamePath,
20
+ } from '@docusaurus/theme-common';
21
+ import Link from '@docusaurus/Link';
22
+ import isInternalUrl from '@docusaurus/isInternalUrl';
23
+ import {translate} from '@docusaurus/Translate';
24
+ import IconExternalLink from '@theme/IconExternalLink';
25
+
26
+ import DocSidebarItems from '@theme/DocSidebarItems';
27
+ import type {Props} from '@theme/DocSidebarItem';
28
+ import type {
29
+ PropSidebarItemCategory,
30
+ PropSidebarItemLink,
31
+ } from '@docusaurus/plugin-content-docs';
32
+
33
+ import styles from './styles.module.css';
34
+ import useIsBrowser from '@docusaurus/useIsBrowser';
35
+ import type {SidebarItemHtml} from '@docusaurus/plugin-content-docs/src/sidebars/types';
36
+
37
+ export default function DocSidebarItem({
38
+ item,
39
+ ...props
40
+ }: Props): JSX.Element | null {
41
+ switch (item.type) {
42
+ case 'category':
43
+ return <DocSidebarItemCategory item={item} {...props} />;
44
+ case 'html':
45
+ return <DocSidebarItemHtml item={item} {...props} />;
46
+ case 'link':
47
+ default:
48
+ return <DocSidebarItemLink item={item} {...props} />;
49
+ }
50
+ }
51
+
52
+ // If we navigate to a category and it becomes active, it should automatically
53
+ // expand itself
54
+ function useAutoExpandActiveCategory({
55
+ isActive,
56
+ collapsed,
57
+ setCollapsed,
58
+ }: {
59
+ isActive: boolean;
60
+ collapsed: boolean;
61
+ setCollapsed: (b: boolean) => void;
62
+ }) {
63
+ const wasActive = usePrevious(isActive);
64
+ useEffect(() => {
65
+ const justBecameActive = isActive && !wasActive;
66
+ if (justBecameActive && collapsed) {
67
+ setCollapsed(false);
68
+ }
69
+ }, [isActive, wasActive, collapsed, setCollapsed]);
70
+ }
71
+
72
+ /**
73
+ * When a collapsible category has no link, we still link it to its first child
74
+ * during SSR as a temporary fallback. This allows to be able to navigate inside
75
+ * the category even when JS fails to load, is delayed or simply disabled
76
+ * React hydration becomes an optional progressive enhancement
77
+ * see https://github.com/facebookincubator/infima/issues/36#issuecomment-772543188
78
+ * see https://github.com/facebook/docusaurus/issues/3030
79
+ */
80
+ function useCategoryHrefWithSSRFallback(
81
+ item: PropSidebarItemCategory,
82
+ ): string | undefined {
83
+ const isBrowser = useIsBrowser();
84
+ return useMemo(() => {
85
+ if (item.href) {
86
+ return item.href;
87
+ }
88
+ // In these cases, it's not necessary to render a fallback
89
+ // We skip the "findFirstCategoryLink" computation
90
+ if (isBrowser || !item.collapsible) {
91
+ return undefined;
92
+ }
93
+ return findFirstCategoryLink(item);
94
+ }, [item, isBrowser]);
95
+ }
96
+
97
+ function DocSidebarItemCategory({
98
+ item,
99
+ onItemClick,
100
+ activePath,
101
+ level,
102
+ index,
103
+ ...props
104
+ }: Props & {item: PropSidebarItemCategory}) {
105
+ const {items, label, collapsible, className, href} = item;
106
+ const hrefWithSSRFallback = useCategoryHrefWithSSRFallback(item);
107
+
108
+ const isActive = isActiveSidebarItem(item, activePath);
109
+ const isCurrentPage = isSamePath(href, activePath);
110
+
111
+ const {collapsed, setCollapsed} = useCollapsible({
112
+ // active categories are always initialized as expanded
113
+ // the default (item.collapsed) is only used for non-active categories
114
+ initialState: () => {
115
+ if (!collapsible) {
116
+ return false;
117
+ }
118
+ return isActive ? false : item.collapsed;
119
+ },
120
+ });
121
+
122
+ useAutoExpandActiveCategory({isActive, collapsed, setCollapsed});
123
+ const {expandedItem, setExpandedItem} = useDocSidebarItemsExpandedState();
124
+ function updateCollapsed(toCollapsed: boolean = !collapsed) {
125
+ setExpandedItem(toCollapsed ? null : index);
126
+ setCollapsed(toCollapsed);
127
+ }
128
+ const {autoCollapseSidebarCategories} = useThemeConfig();
129
+ useEffect(() => {
130
+ if (
131
+ collapsible &&
132
+ expandedItem &&
133
+ expandedItem !== index &&
134
+ autoCollapseSidebarCategories
135
+ ) {
136
+ setCollapsed(true);
137
+ }
138
+ }, [
139
+ collapsible,
140
+ expandedItem,
141
+ index,
142
+ setCollapsed,
143
+ autoCollapseSidebarCategories,
144
+ ]);
145
+
146
+ return (
147
+ <li
148
+ className={clsx(
149
+ ThemeClassNames.docs.docSidebarItemCategory,
150
+ ThemeClassNames.docs.docSidebarItemCategoryLevel(level),
151
+ 'menu__list-item',
152
+ {
153
+ 'menu__list-item--collapsed': collapsed,
154
+ },
155
+ className,
156
+ )}>
157
+ <div
158
+ className={clsx('menu__list-item-collapsible', {
159
+ 'menu__list-item-collapsible--active': isCurrentPage,
160
+ })}>
161
+ <Link
162
+ className={clsx('menu__link', {
163
+ 'menu__link--sublist': collapsible && !href,
164
+ 'menu__link--active': isActive,
165
+ })}
166
+ onClick={
167
+ collapsible
168
+ ? (e) => {
169
+ onItemClick?.(item);
170
+ if (href) {
171
+ updateCollapsed(false);
172
+ } else {
173
+ e.preventDefault();
174
+ updateCollapsed();
175
+ }
176
+ }
177
+ : () => {
178
+ onItemClick?.(item);
179
+ }
180
+ }
181
+ aria-current={isCurrentPage ? 'page' : undefined}
182
+ href={collapsible ? hrefWithSSRFallback ?? '#' : hrefWithSSRFallback}
183
+ {...props}>
184
+ {label}
185
+ </Link>
186
+ {href && collapsible && (
187
+ <button
188
+ aria-label={translate(
189
+ {
190
+ id: 'theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel',
191
+ message: "Toggle the collapsible sidebar category '{label}'",
192
+ description:
193
+ 'The ARIA label to toggle the collapsible sidebar category',
194
+ },
195
+ {label},
196
+ )}
197
+ type="button"
198
+ className="clean-btn menu__caret"
199
+ onClick={(e) => {
200
+ e.preventDefault();
201
+ updateCollapsed();
202
+ }}
203
+ />
204
+ )}
205
+ </div>
206
+
207
+ <Collapsible lazy as="ul" className="menu__list" collapsed={collapsed}>
208
+ <DocSidebarItems
209
+ items={items}
210
+ tabIndex={collapsed ? -1 : 0}
211
+ onItemClick={onItemClick}
212
+ activePath={activePath}
213
+ level={level + 1}
214
+ />
215
+ </Collapsible>
216
+ </li>
217
+ );
218
+ }
219
+
220
+ function DocSidebarItemHtml({
221
+ item,
222
+ level,
223
+ index,
224
+ }: Props & {item: SidebarItemHtml}) {
225
+ const {value, defaultStyle, className} = item;
226
+ return (
227
+ <li
228
+ className={clsx(
229
+ ThemeClassNames.docs.docSidebarItemLink,
230
+ ThemeClassNames.docs.docSidebarItemLinkLevel(level),
231
+ defaultStyle && `${styles.menuHtmlItem} menu__list-item`,
232
+ className,
233
+ )}
234
+ key={index}
235
+ // eslint-disable-next-line react/no-danger
236
+ dangerouslySetInnerHTML={{
237
+ __html: value,
238
+ }}
239
+ />
240
+ );
241
+ }
242
+
243
+ function DocSidebarItemLink({
244
+ item,
245
+ onItemClick,
246
+ activePath,
247
+ level,
248
+ index,
249
+ ...props
250
+ }: Props & {item: PropSidebarItemLink}) {
251
+ const {href, label, className} = item;
252
+ const isActive = isActiveSidebarItem(item, activePath);
253
+ return (
254
+ <li
255
+ className={clsx(
256
+ ThemeClassNames.docs.docSidebarItemLink,
257
+ ThemeClassNames.docs.docSidebarItemLinkLevel(level),
258
+ 'menu__list-item',
259
+ className,
260
+ )}
261
+ key={label}>
262
+ <Link
263
+ className={clsx('menu__link', {
264
+ 'menu__link--active': isActive,
265
+ })}
266
+ aria-current={isActive ? 'page' : undefined}
267
+ to={href}
268
+ {...(isInternalUrl(href) && {
269
+ onClick: onItemClick ? () => onItemClick(item) : undefined,
270
+ })}
271
+ {...props}>
272
+ {isInternalUrl(href) ? (
273
+ label
274
+ ) : (
275
+ <span>
276
+ {label}
277
+ <IconExternalLink />
278
+ </span>
279
+ )}
280
+ </Link>
281
+ </li>
282
+ );
283
+ }
@@ -0,0 +1,13 @@
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
+ .menuHtmlItem {
10
+ padding: var(--ifm-menu-link-padding-vertical)
11
+ var(--ifm-menu-link-padding-horizontal);
12
+ }
13
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React, {memo} from 'react';
9
+ import DocSidebarItem from '@theme/DocSidebarItem';
10
+ import {DocSidebarItemsExpandedStateProvider} from '@docusaurus/theme-common';
11
+
12
+ import type {Props} from '@theme/DocSidebarItems';
13
+
14
+ // TODO this item should probably not receive the "activePath" props
15
+ // TODO this triggers whole sidebar re-renders on navigation
16
+ function DocSidebarItems({items, ...props}: Props): JSX.Element {
17
+ return (
18
+ <DocSidebarItemsExpandedStateProvider>
19
+ {items.map((item, index) => (
20
+ <DocSidebarItem
21
+ key={index} // sidebar is static, the index does not change
22
+ item={item}
23
+ index={index}
24
+ {...props}
25
+ />
26
+ ))}
27
+ </DocSidebarItemsExpandedStateProvider>
28
+ );
29
+ }
30
+
31
+ // Optimize sidebar at each "level"
32
+ export default memo(DocSidebarItems);
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+
10
+ import Layout from '@theme/Layout';
11
+ import Link from '@docusaurus/Link';
12
+ import {ThemeClassNames, usePluralForm} from '@docusaurus/theme-common';
13
+ import type {PropTagDocListDoc} from '@docusaurus/plugin-content-docs';
14
+ import Translate, {translate} from '@docusaurus/Translate';
15
+ import type {Props} from '@theme/DocTagDocListPage';
16
+
17
+ // Very simple pluralization: probably good enough for now
18
+ function useNDocsTaggedPlural() {
19
+ const {selectMessage} = usePluralForm();
20
+ return (count: number) =>
21
+ selectMessage(
22
+ count,
23
+ translate(
24
+ {
25
+ id: 'theme.docs.tagDocListPageTitle.nDocsTagged',
26
+ description:
27
+ 'Pluralized label for "{count} docs tagged". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',
28
+ message: 'One doc tagged|{count} docs tagged',
29
+ },
30
+ {count},
31
+ ),
32
+ );
33
+ }
34
+
35
+ function DocItem({doc}: {doc: PropTagDocListDoc}): JSX.Element {
36
+ return (
37
+ <article className="margin-vert--lg">
38
+ <Link to={doc.permalink}>
39
+ <h2>{doc.title}</h2>
40
+ </Link>
41
+ {doc.description && <p>{doc.description}</p>}
42
+ </article>
43
+ );
44
+ }
45
+
46
+ export default function DocTagDocListPage({tag}: Props): JSX.Element {
47
+ const nDocsTaggedPlural = useNDocsTaggedPlural();
48
+ const title = translate(
49
+ {
50
+ id: 'theme.docs.tagDocListPageTitle',
51
+ description: 'The title of the page for a docs tag',
52
+ message: '{nDocsTagged} with "{tagName}"',
53
+ },
54
+ {nDocsTagged: nDocsTaggedPlural(tag.docs.length), tagName: tag.name},
55
+ );
56
+
57
+ return (
58
+ <Layout
59
+ title={title}
60
+ wrapperClassName={ThemeClassNames.wrapper.docsPages}
61
+ pageClassName={ThemeClassNames.page.docsTagDocListPage}
62
+ searchMetadata={{
63
+ // assign unique search tag to exclude this page from search results!
64
+ tag: 'doc_tag_doc_list',
65
+ }}>
66
+ <div className="container margin-vert--lg">
67
+ <div className="row">
68
+ <main className="col col--8 col--offset-2">
69
+ <header className="margin-bottom--xl">
70
+ <h1>{title}</h1>
71
+ <Link href={tag.allTagsPath}>
72
+ <Translate
73
+ id="theme.tags.tagsPageLink"
74
+ description="The label of the link targeting the tag list page">
75
+ View All Tags
76
+ </Translate>
77
+ </Link>
78
+ </header>
79
+ <section className="margin-vert--lg">
80
+ {tag.docs.map((doc) => (
81
+ <DocItem key={doc.id} doc={doc} />
82
+ ))}
83
+ </section>
84
+ </main>
85
+ </div>
86
+ </div>
87
+ </Layout>
88
+ );
89
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+
10
+ import Layout from '@theme/Layout';
11
+ import {
12
+ ThemeClassNames,
13
+ translateTagsPageTitle,
14
+ } from '@docusaurus/theme-common';
15
+ import TagsListByLetter from '@theme/TagsListByLetter';
16
+ import type {Props} from '@theme/DocTagsListPage';
17
+
18
+ export default function DocTagsListPage({tags}: Props): JSX.Element {
19
+ const title = translateTagsPageTitle();
20
+ return (
21
+ <Layout
22
+ title={title}
23
+ wrapperClassName={ThemeClassNames.wrapper.docsPages}
24
+ pageClassName={ThemeClassNames.page.docsTagsListPage}
25
+ searchMetadata={{
26
+ // assign unique search tag to exclude this page from search results!
27
+ tag: 'doc_tags_list',
28
+ }}>
29
+ <div className="container margin-vert--lg">
30
+ <div className="row">
31
+ <main className="col col--8 col--offset-2">
32
+ <h1>{title}</h1>
33
+ <TagsListByLetter tags={tags} />
34
+ </main>
35
+ </div>
36
+ </div>
37
+ </Layout>
38
+ );
39
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+ import Translate from '@docusaurus/Translate';
10
+ import {ThemeClassNames, useDocsVersion} from '@docusaurus/theme-common';
11
+ import clsx from 'clsx';
12
+ import type {Props} from '@theme/DocVersionBadge';
13
+
14
+ export default function DocVersionBadge({
15
+ className,
16
+ }: Props): JSX.Element | null {
17
+ const versionMetadata = useDocsVersion();
18
+ if (versionMetadata.badge) {
19
+ return (
20
+ <span
21
+ className={clsx(
22
+ className,
23
+ ThemeClassNames.docs.docVersionBadge,
24
+ 'badge badge--secondary',
25
+ )}>
26
+ <Translate
27
+ id="theme.docs.versionBadge.label"
28
+ values={{versionLabel: versionMetadata.label}}>
29
+ {'Version: {versionLabel}'}
30
+ </Translate>
31
+ </span>
32
+ );
33
+ }
34
+ return null;
35
+ }
@@ -5,18 +5,31 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import React, {ComponentType} from 'react';
8
+ import React, {type ComponentType} from 'react';
9
9
  import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
10
10
  import Link from '@docusaurus/Link';
11
11
  import Translate from '@docusaurus/Translate';
12
- import {useActivePlugin, useDocVersionSuggestions} from '@theme/hooks/useDocs';
13
- import {useDocsPreferredVersion} from '@docusaurus/theme-common';
12
+ import {
13
+ useActivePlugin,
14
+ useDocVersionSuggestions,
15
+ type GlobalVersion,
16
+ } from '@docusaurus/plugin-content-docs/client';
17
+ import {
18
+ ThemeClassNames,
19
+ useDocsPreferredVersion,
20
+ useDocsVersion,
21
+ } from '@docusaurus/theme-common';
14
22
 
15
23
  import type {Props} from '@theme/DocVersionBanner';
24
+ import clsx from 'clsx';
25
+ import type {
26
+ VersionBanner,
27
+ PropVersionMetadata,
28
+ } from '@docusaurus/plugin-content-docs';
16
29
 
17
30
  type BannerLabelComponentProps = {
18
31
  siteTitle: string;
19
- versionMetadata: Props['versionMetadata'];
32
+ versionMetadata: PropVersionMetadata;
20
33
  };
21
34
 
22
35
  function UnreleasedVersionLabel({
@@ -58,7 +71,7 @@ function UnmaintainedVersionLabel({
58
71
  }
59
72
 
60
73
  const BannerLabelComponents: Record<
61
- Props['versionMetadata']['banner'],
74
+ VersionBanner,
62
75
  ComponentType<BannerLabelComponentProps>
63
76
  > = {
64
77
  unreleased: UnreleasedVersionLabel,
@@ -67,7 +80,7 @@ const BannerLabelComponents: Record<
67
80
 
68
81
  function BannerLabel(props: BannerLabelComponentProps) {
69
82
  const BannerLabelComponent =
70
- BannerLabelComponents[props.versionMetadata.banner];
83
+ BannerLabelComponents[props.versionMetadata.banner!];
71
84
  return <BannerLabelComponent {...props} />;
72
85
  }
73
86
 
@@ -105,21 +118,24 @@ function LatestVersionSuggestionLabel({
105
118
  );
106
119
  }
107
120
 
108
- function DocVersionBannerEnabled({versionMetadata}: Props): JSX.Element {
121
+ function DocVersionBannerEnabled({
122
+ className,
123
+ versionMetadata,
124
+ }: Props & {
125
+ versionMetadata: PropVersionMetadata;
126
+ }): JSX.Element {
109
127
  const {
110
128
  siteConfig: {title: siteTitle},
111
129
  } = useDocusaurusContext();
112
- const {pluginId} = useActivePlugin({failfast: true});
130
+ const {pluginId} = useActivePlugin({failfast: true})!;
113
131
 
114
- const getVersionMainDoc = (version) =>
115
- version.docs.find((doc) => doc.id === version.mainDocId);
132
+ const getVersionMainDoc = (version: GlobalVersion) =>
133
+ version.docs.find((doc) => doc.id === version.mainDocId)!;
116
134
 
117
135
  const {savePreferredVersionName} = useDocsPreferredVersion(pluginId);
118
136
 
119
- const {
120
- latestDocSuggestion,
121
- latestVersionSuggestion,
122
- } = useDocVersionSuggestions(pluginId);
137
+ const {latestDocSuggestion, latestVersionSuggestion} =
138
+ useDocVersionSuggestions(pluginId);
123
139
 
124
140
  // try to link to same doc in latest version (not always possible)
125
141
  // fallback to main doc of latest version
@@ -127,7 +143,13 @@ function DocVersionBannerEnabled({versionMetadata}: Props): JSX.Element {
127
143
  latestDocSuggestion ?? getVersionMainDoc(latestVersionSuggestion);
128
144
 
129
145
  return (
130
- <div className="alert alert--warning margin-bottom--md" role="alert">
146
+ <div
147
+ className={clsx(
148
+ className,
149
+ ThemeClassNames.docs.docVersionBanner,
150
+ 'alert alert--warning margin-bottom--md',
151
+ )}
152
+ role="alert">
131
153
  <div>
132
154
  <BannerLabel siteTitle={siteTitle} versionMetadata={versionMetadata} />
133
155
  </div>
@@ -142,12 +164,17 @@ function DocVersionBannerEnabled({versionMetadata}: Props): JSX.Element {
142
164
  );
143
165
  }
144
166
 
145
- function DocVersionBanner({versionMetadata}: Props): JSX.Element {
146
- if (versionMetadata.banner === 'none') {
147
- return <></>;
148
- } else {
149
- return <DocVersionBannerEnabled versionMetadata={versionMetadata} />;
167
+ export default function DocVersionBanner({
168
+ className,
169
+ }: Props): JSX.Element | null {
170
+ const versionMetadata = useDocsVersion();
171
+ if (versionMetadata.banner) {
172
+ return (
173
+ <DocVersionBannerEnabled
174
+ className={className}
175
+ versionMetadata={versionMetadata}
176
+ />
177
+ );
150
178
  }
179
+ return null;
151
180
  }
152
-
153
- export default DocVersionBanner;
@@ -10,10 +10,15 @@ import Translate from '@docusaurus/Translate';
10
10
 
11
11
  import type {Props} from '@theme/EditThisPage';
12
12
  import IconEdit from '@theme/IconEdit';
13
+ import {ThemeClassNames} from '@docusaurus/theme-common';
13
14
 
14
15
  export default function EditThisPage({editUrl}: Props): JSX.Element {
15
16
  return (
16
- <a href={editUrl} target="_blank" rel="noreferrer noopener">
17
+ <a
18
+ href={editUrl}
19
+ target="_blank"
20
+ rel="noreferrer noopener"
21
+ className={ThemeClassNames.common.editThisPage}>
17
22
  <IconEdit />
18
23
  <Translate
19
24
  id="theme.common.editThisPage"