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

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 (488) 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 +236 -0
  5. package/lib/index.js +63 -52
  6. package/lib/prism-include-languages.js +9 -5
  7. package/lib/theme-classic.d.ts +997 -0
  8. package/lib/translations.js +52 -36
  9. package/lib/types.d.ts +0 -589
  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 +10 -22
  13. package/lib-next/theme/AnnouncementBar/styles.module.css +26 -35
  14. package/lib-next/theme/BackToTopButton/index.js +129 -0
  15. package/lib-next/theme/BackToTopButton/styles.module.css +44 -0
  16. package/lib-next/theme/BlogArchivePage/index.js +84 -0
  17. package/lib-next/theme/BlogLayout/index.js +37 -0
  18. package/lib-next/theme/BlogListPage/index.js +45 -35
  19. package/lib-next/theme/BlogListPaginator/index.js +13 -16
  20. package/lib-next/theme/BlogPostAuthor/index.js +52 -0
  21. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  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 +112 -97
  25. package/lib-next/theme/BlogPostItem/styles.module.css +5 -1
  26. package/lib-next/theme/BlogPostPage/index.js +84 -41
  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 +24 -70
  31. package/lib-next/theme/BlogTagsPostsPage/index.js +57 -62
  32. package/lib-next/theme/CodeBlock/CopyButton/index.js +60 -0
  33. package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +66 -0
  34. package/lib-next/theme/CodeBlock/index.js +74 -195
  35. package/lib-next/theme/CodeBlock/styles.module.css +13 -28
  36. package/lib-next/theme/ColorModeToggle/index.js +62 -0
  37. package/lib-next/theme/ColorModeToggle/styles.module.css +35 -0
  38. package/lib-next/theme/Details/index.js +21 -0
  39. package/lib-next/theme/Details/styles.module.css +13 -0
  40. package/lib-next/theme/DocBreadcrumbs/index.js +93 -0
  41. package/{lib/theme/Heading → lib-next/theme/DocBreadcrumbs}/styles.module.css +3 -2
  42. package/lib-next/theme/DocCard/index.js +93 -0
  43. package/lib-next/theme/DocCard/styles.module.css +34 -0
  44. package/lib-next/theme/DocCardList/index.js +31 -0
  45. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +75 -0
  46. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  47. package/lib-next/theme/DocItem/index.js +99 -86
  48. package/lib-next/theme/DocItem/styles.module.css +7 -13
  49. package/lib-next/theme/DocItemFooter/index.js +79 -0
  50. package/{lib/theme/Layout/styles.css → lib-next/theme/DocItemFooter/styles.module.css} +8 -11
  51. package/lib-next/theme/DocPage/index.js +124 -99
  52. package/lib-next/theme/DocPage/styles.module.css +14 -30
  53. package/lib-next/theme/DocPaginator/index.js +16 -25
  54. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/index.js +34 -0
  55. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +44 -0
  56. package/lib-next/theme/DocSidebar/Desktop/Content/index.js +46 -0
  57. package/{lib/theme/Footer → lib-next/theme/DocSidebar/Desktop/Content}/styles.module.css +8 -6
  58. package/lib-next/theme/DocSidebar/Desktop/index.js +34 -0
  59. package/lib-next/theme/DocSidebar/Desktop/styles.module.css +50 -0
  60. package/lib-next/theme/DocSidebar/Mobile/index.js +49 -0
  61. package/lib-next/theme/DocSidebar/index.js +13 -333
  62. package/lib-next/theme/DocSidebarItem/index.js +265 -0
  63. package/lib-next/theme/DocSidebarItem/styles.module.css +17 -0
  64. package/lib-next/theme/DocSidebarItems/index.js +28 -0
  65. package/lib-next/theme/DocTagDocListPage/index.js +96 -0
  66. package/lib-next/theme/DocTagsListPage/index.js +40 -0
  67. package/lib-next/theme/DocVersionBadge/index.js +34 -0
  68. package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +54 -36
  69. package/lib-next/theme/EditThisPage/index.js +6 -1
  70. package/lib-next/theme/ErrorPageContent.js +35 -0
  71. package/lib-next/theme/Footer/Copyright/index.js +18 -0
  72. package/lib-next/theme/Footer/Layout/index.js +26 -0
  73. package/lib-next/theme/Footer/LinkItem/index.js +33 -0
  74. package/lib-next/theme/Footer/Links/MultiColumn/index.js +47 -0
  75. package/lib-next/theme/Footer/Links/Simple/index.js +41 -0
  76. package/lib-next/theme/Footer/Links/index.js +17 -0
  77. package/lib-next/theme/Footer/Logo/index.js +38 -0
  78. package/{src/theme/Footer → lib-next/theme/Footer/Logo}/styles.module.css +2 -1
  79. package/lib-next/theme/Footer/index.js +12 -100
  80. package/lib-next/theme/Heading/index.js +42 -33
  81. package/lib-next/theme/Heading/styles.module.css +27 -2
  82. package/lib-next/theme/IconArrow/index.js +3 -6
  83. package/lib-next/theme/IconClose/index.js +23 -0
  84. package/lib-next/theme/IconDarkMode/index.js +17 -0
  85. package/lib-next/theme/IconEdit/index.js +5 -10
  86. package/lib-next/theme/IconExternalLink/index.js +23 -0
  87. package/lib-next/theme/{LastUpdated → IconExternalLink}/styles.module.css +2 -2
  88. package/lib-next/theme/IconLanguage/index.js +5 -8
  89. package/lib-next/theme/IconLightMode/index.js +17 -0
  90. package/lib-next/theme/IconMenu/index.js +8 -9
  91. package/lib-next/theme/LastUpdated/index.js +35 -39
  92. package/lib-next/theme/Layout/index.js +19 -16
  93. package/lib-next/theme/Layout/styles.css +6 -0
  94. package/lib-next/theme/LayoutProviders/index.js +22 -10
  95. package/lib-next/theme/Logo/index.js +21 -16
  96. package/lib-next/theme/{ThemeContext.js → MDXComponents/A.js} +4 -2
  97. package/lib-next/theme/MDXComponents/Code.js +28 -0
  98. package/lib-next/theme/MDXComponents/Details.js +20 -0
  99. package/lib-next/theme/MDXComponents/Head.js +26 -0
  100. package/lib-next/theme/{hooks/styles.css → MDXComponents/Heading.js} +4 -3
  101. package/lib-next/theme/MDXComponents/Img.js +24 -0
  102. package/{lib/theme/LastUpdated/styles.module.css → lib-next/theme/MDXComponents/Img.module.css} +2 -2
  103. package/lib-next/theme/MDXComponents/Pre.js +18 -0
  104. package/lib-next/theme/MDXComponents/Ul.js +23 -0
  105. package/lib-next/theme/MDXComponents/Ul.module.css +11 -0
  106. package/lib-next/theme/MDXComponents/index.js +22 -42
  107. package/lib-next/theme/MDXContent/index.js +12 -0
  108. package/lib-next/theme/MDXPage/index.js +38 -39
  109. package/{lib/theme/IconEdit → lib-next/theme/MDXPage}/styles.module.css +2 -3
  110. package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
  111. package/lib-next/theme/Navbar/Content/index.js +70 -0
  112. package/lib-next/theme/Navbar/Content/styles.module.css +15 -0
  113. package/lib-next/theme/Navbar/Layout/index.js +54 -0
  114. package/{src/theme/Navbar → lib-next/theme/Navbar/Layout}/styles.module.css +1 -7
  115. package/lib-next/theme/Navbar/Logo/index.js +17 -0
  116. package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
  117. package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
  118. package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
  119. package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
  120. package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
  121. package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
  122. package/lib-next/theme/Navbar/index.js +7 -137
  123. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +33 -186
  124. package/lib-next/theme/NavbarItem/DocNavbarItem.js +31 -14
  125. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +73 -0
  126. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +38 -24
  127. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +4 -1
  128. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +164 -0
  129. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +12 -13
  130. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  131. package/lib-next/theme/NavbarItem/NavbarNavLink.js +66 -0
  132. package/lib-next/theme/NavbarItem/index.js +27 -15
  133. package/lib-next/theme/{UserPreferencesContext.js → NavbarItem/utils.js} +3 -3
  134. package/lib-next/theme/NotFound.js +40 -34
  135. package/lib-next/theme/PaginatorNavLink/index.js +17 -0
  136. package/lib-next/theme/SearchBar.js +1 -1
  137. package/lib-next/theme/SearchMetadata/index.js +34 -0
  138. package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +25 -45
  139. package/lib-next/theme/SkipToContent/index.js +9 -8
  140. package/lib-next/theme/SkipToContent/styles.module.css +8 -3
  141. package/lib-next/theme/TOC/index.js +12 -39
  142. package/lib-next/theme/TOC/styles.module.css +2 -2
  143. package/lib-next/theme/TOCCollapsible/index.js +52 -0
  144. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  145. package/lib-next/theme/TOCInline/index.js +10 -31
  146. package/lib-next/theme/TOCItems/index.js +85 -0
  147. package/lib-next/theme/TabItem/index.js +1 -4
  148. package/lib-next/theme/Tabs/__tests__/index.test.js +146 -0
  149. package/lib-next/theme/Tabs/index.js +108 -50
  150. package/lib-next/theme/Tabs/styles.module.css +0 -13
  151. package/lib-next/theme/Tag/index.js +24 -0
  152. package/lib-next/theme/Tag/styles.module.css +70 -0
  153. package/lib-next/theme/TagsListByLetter/index.js +40 -0
  154. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  155. package/lib-next/theme/TagsListInline/index.js +31 -0
  156. package/{lib/theme/BlogPostItem → lib-next/theme/TagsListInline}/styles.module.css +5 -4
  157. package/lib-next/theme/ThemedImage/index.js +10 -14
  158. package/lib-next/theme/ThemedImage/styles.module.css +9 -2
  159. package/lib-next/theme/prism-include-languages.js +17 -15
  160. package/package.json +32 -31
  161. package/src/admonitions.css +35 -0
  162. package/src/deps.d.ts +13 -0
  163. package/src/getSwizzleConfig.ts +244 -0
  164. package/src/index.ts +72 -72
  165. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  166. package/src/theme/Admonition/index.tsx +106 -0
  167. package/src/theme/AnnouncementBar/index.tsx +11 -20
  168. package/src/theme/AnnouncementBar/styles.module.css +26 -35
  169. package/src/theme/BackToTopButton/index.tsx +141 -0
  170. package/src/theme/BackToTopButton/styles.module.css +44 -0
  171. package/src/theme/BlogArchivePage/index.tsx +92 -0
  172. package/src/theme/BlogLayout/index.tsx +42 -0
  173. package/src/theme/BlogListPage/index.tsx +45 -35
  174. package/src/theme/BlogListPaginator/index.tsx +13 -15
  175. package/src/theme/BlogPostAuthor/index.tsx +54 -0
  176. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  177. package/src/theme/BlogPostAuthors/index.tsx +49 -0
  178. package/src/theme/BlogPostAuthors/styles.module.css +21 -0
  179. package/src/theme/BlogPostItem/index.tsx +103 -93
  180. package/src/theme/BlogPostItem/styles.module.css +5 -1
  181. package/src/theme/BlogPostPage/index.tsx +84 -42
  182. package/src/theme/BlogPostPaginator/index.tsx +13 -19
  183. package/src/theme/BlogSidebar/index.tsx +23 -16
  184. package/src/theme/BlogSidebar/styles.module.css +8 -8
  185. package/src/theme/BlogTagsListPage/index.tsx +24 -70
  186. package/src/theme/BlogTagsPostsPage/index.tsx +54 -65
  187. package/src/theme/CodeBlock/CopyButton/index.tsx +66 -0
  188. package/src/theme/CodeBlock/CopyButton/styles.module.css +66 -0
  189. package/src/theme/CodeBlock/index.tsx +77 -196
  190. package/src/theme/CodeBlock/styles.module.css +13 -28
  191. package/src/theme/ColorModeToggle/index.tsx +67 -0
  192. package/src/theme/ColorModeToggle/styles.module.css +35 -0
  193. package/src/theme/Details/index.tsx +25 -0
  194. package/src/theme/Details/styles.module.css +13 -0
  195. package/src/theme/DocBreadcrumbs/index.tsx +110 -0
  196. package/src/theme/DocBreadcrumbs/styles.module.css +11 -0
  197. package/src/theme/DocCard/index.tsx +116 -0
  198. package/src/theme/DocCard/styles.module.css +34 -0
  199. package/src/theme/DocCardList/index.tsx +38 -0
  200. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +86 -0
  201. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  202. package/src/theme/DocItem/index.tsx +93 -79
  203. package/src/theme/DocItem/styles.module.css +7 -13
  204. package/src/theme/DocItemFooter/index.tsx +91 -0
  205. package/src/theme/DocItemFooter/styles.module.css +18 -0
  206. package/src/theme/DocPage/index.tsx +124 -101
  207. package/src/theme/DocPage/styles.module.css +14 -30
  208. package/src/theme/DocPaginator/index.tsx +16 -24
  209. package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
  210. package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +44 -0
  211. package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
  212. package/src/theme/DocSidebar/Desktop/Content/styles.module.css +17 -0
  213. package/src/theme/DocSidebar/Desktop/index.tsx +38 -0
  214. package/src/theme/DocSidebar/Desktop/styles.module.css +50 -0
  215. package/src/theme/DocSidebar/Mobile/index.tsx +54 -0
  216. package/src/theme/DocSidebar/index.tsx +14 -343
  217. package/src/theme/DocSidebarItem/index.tsx +282 -0
  218. package/src/theme/DocSidebarItem/styles.module.css +17 -0
  219. package/src/theme/DocSidebarItems/index.tsx +32 -0
  220. package/src/theme/DocTagDocListPage/index.tsx +97 -0
  221. package/src/theme/DocTagsListPage/index.tsx +44 -0
  222. package/src/theme/DocVersionBadge/index.tsx +35 -0
  223. package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +76 -47
  224. package/src/theme/EditThisPage/index.tsx +6 -1
  225. package/src/theme/ErrorPageContent.tsx +41 -0
  226. package/src/theme/Footer/Copyright/index.tsx +20 -0
  227. package/src/theme/Footer/Layout/index.tsx +34 -0
  228. package/src/theme/Footer/LinkItem/index.tsx +36 -0
  229. package/src/theme/Footer/Links/MultiColumn/index.tsx +51 -0
  230. package/src/theme/Footer/Links/Simple/index.tsx +42 -0
  231. package/src/theme/Footer/Links/index.tsx +21 -0
  232. package/src/theme/Footer/Logo/index.tsx +41 -0
  233. package/{lib-next/theme/Footer → src/theme/Footer/Logo}/styles.module.css +2 -1
  234. package/src/theme/Footer/index.tsx +13 -113
  235. package/src/theme/Heading/index.tsx +43 -35
  236. package/src/theme/Heading/styles.module.css +27 -2
  237. package/src/theme/IconArrow/index.tsx +3 -5
  238. package/src/theme/IconClose/index.tsx +26 -0
  239. package/src/theme/IconDarkMode/index.tsx +20 -0
  240. package/src/theme/IconEdit/index.tsx +8 -9
  241. package/src/theme/IconExternalLink/index.tsx +30 -0
  242. package/src/theme/IconExternalLink/styles.module.css +10 -0
  243. package/src/theme/IconLanguage/index.tsx +6 -8
  244. package/src/theme/IconLightMode/index.tsx +20 -0
  245. package/src/theme/IconMenu/index.tsx +4 -9
  246. package/src/theme/LastUpdated/index.tsx +35 -39
  247. package/src/theme/Layout/index.tsx +19 -15
  248. package/src/theme/Layout/styles.css +6 -0
  249. package/src/theme/LayoutProviders/index.tsx +22 -10
  250. package/src/theme/Logo/index.tsx +21 -15
  251. package/src/theme/{ThemeContext.ts → MDXComponents/A.tsx} +5 -6
  252. package/src/theme/MDXComponents/Code.tsx +37 -0
  253. package/src/theme/MDXComponents/Details.tsx +26 -0
  254. package/src/theme/MDXComponents/Head.tsx +29 -0
  255. package/src/theme/MDXComponents/Heading.tsx +14 -0
  256. package/src/theme/{LastUpdated/styles.module.css → MDXComponents/Img.module.css} +2 -2
  257. package/src/theme/MDXComponents/Img.tsx +26 -0
  258. package/src/theme/MDXComponents/Pre.tsx +22 -0
  259. package/src/theme/MDXComponents/Ul.module.css +11 -0
  260. package/src/theme/MDXComponents/Ul.tsx +28 -0
  261. package/src/theme/MDXComponents/index.tsx +23 -42
  262. package/src/theme/MDXContent/index.tsx +15 -0
  263. package/src/theme/MDXPage/index.tsx +39 -39
  264. package/src/theme/MDXPage/styles.module.css +10 -0
  265. package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
  266. package/src/theme/Navbar/Content/index.tsx +81 -0
  267. package/src/theme/Navbar/Content/styles.module.css +15 -0
  268. package/src/theme/Navbar/Layout/index.tsx +57 -0
  269. package/{lib/theme/Navbar → src/theme/Navbar/Layout}/styles.module.css +1 -7
  270. package/src/theme/Navbar/Logo/index.tsx +19 -0
  271. package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
  272. package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
  273. package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
  274. package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
  275. package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
  276. package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
  277. package/src/theme/Navbar/index.tsx +7 -147
  278. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +37 -194
  279. package/src/theme/NavbarItem/DocNavbarItem.tsx +33 -15
  280. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +84 -0
  281. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +44 -28
  282. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  283. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +190 -0
  284. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +17 -11
  285. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  286. package/src/theme/NavbarItem/NavbarNavLink.tsx +64 -0
  287. package/src/theme/NavbarItem/index.tsx +41 -19
  288. package/src/theme/NavbarItem/utils.ts +10 -0
  289. package/src/theme/NotFound.tsx +40 -33
  290. package/src/theme/PaginatorNavLink/index.tsx +20 -0
  291. package/src/theme/SearchBar.tsx +2 -1
  292. package/src/theme/SearchMetadata/index.tsx +43 -0
  293. package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +25 -38
  294. package/src/theme/SkipToContent/index.tsx +9 -8
  295. package/src/theme/SkipToContent/styles.module.css +8 -3
  296. package/src/theme/TOC/index.tsx +13 -44
  297. package/src/theme/TOC/styles.module.css +2 -2
  298. package/src/theme/TOCCollapsible/index.tsx +56 -0
  299. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  300. package/src/theme/TOCInline/index.tsx +14 -35
  301. package/src/theme/TOCItems/index.tsx +100 -0
  302. package/src/theme/TabItem/index.tsx +5 -3
  303. package/src/theme/Tabs/index.tsx +117 -59
  304. package/src/theme/Tabs/styles.module.css +0 -13
  305. package/src/theme/Tag/index.tsx +29 -0
  306. package/src/theme/Tag/styles.module.css +70 -0
  307. package/src/theme/TagsListByLetter/index.tsx +43 -0
  308. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  309. package/src/theme/TagsListInline/index.tsx +35 -0
  310. package/src/theme/TagsListInline/styles.module.css +15 -0
  311. package/src/theme/ThemedImage/index.tsx +12 -13
  312. package/src/theme/ThemedImage/styles.module.css +9 -2
  313. package/src/theme/prism-include-languages.ts +20 -15
  314. package/src/theme-classic.d.ts +997 -0
  315. package/src/translations.ts +84 -58
  316. package/src/types.d.ts +0 -589
  317. package/src/validateThemeConfig.ts +381 -0
  318. package/babel.config.js +0 -35
  319. package/codeTranslations/README.md +0 -20
  320. package/codeTranslations/ar.json +0 -55
  321. package/codeTranslations/base.json +0 -108
  322. package/codeTranslations/da.json +0 -55
  323. package/codeTranslations/de.json +0 -55
  324. package/codeTranslations/es.json +0 -55
  325. package/codeTranslations/fa.json +0 -55
  326. package/codeTranslations/fil.json +0 -55
  327. package/codeTranslations/fr.json +0 -55
  328. package/codeTranslations/he.json +0 -55
  329. package/codeTranslations/hi.json +0 -55
  330. package/codeTranslations/ja.json +0 -55
  331. package/codeTranslations/ko.json +0 -55
  332. package/codeTranslations/pl.json +0 -55
  333. package/codeTranslations/pt-BR.json +0 -55
  334. package/codeTranslations/pt-PT.json +0 -55
  335. package/codeTranslations/ru.json +0 -55
  336. package/codeTranslations/tr.json +0 -55
  337. package/codeTranslations/vi.json +0 -55
  338. package/codeTranslations/zh-Hans.json +0 -55
  339. package/codeTranslations/zh-Hant.json +0 -55
  340. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  341. package/lib/__tests__/translations.test.js +0 -112
  342. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  343. package/lib/theme/AnnouncementBar/index.js +0 -74
  344. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  345. package/lib/theme/BlogListPage/index.js +0 -71
  346. package/lib/theme/BlogListPaginator/index.js +0 -63
  347. package/lib/theme/BlogPostItem/index.js +0 -152
  348. package/lib/theme/BlogPostPage/index.js +0 -75
  349. package/lib/theme/BlogPostPaginator/index.js +0 -64
  350. package/lib/theme/BlogSidebar/index.js +0 -43
  351. package/lib/theme/BlogSidebar/styles.module.css +0 -46
  352. package/lib/theme/BlogTagsListPage/index.js +0 -81
  353. package/lib/theme/BlogTagsPostsPage/index.js +0 -104
  354. package/lib/theme/CodeBlock/index.js +0 -253
  355. package/lib/theme/CodeBlock/styles.module.css +0 -71
  356. package/lib/theme/DocItem/index.js +0 -120
  357. package/lib/theme/DocItem/styles.module.css +0 -28
  358. package/lib/theme/DocPage/index.js +0 -141
  359. package/lib/theme/DocPage/styles.module.css +0 -98
  360. package/lib/theme/DocPaginator/index.js +0 -63
  361. package/lib/theme/DocSidebar/index.js +0 -307
  362. package/lib/theme/DocSidebar/styles.module.css +0 -138
  363. package/lib/theme/DocVersionSuggestions/index.js +0 -111
  364. package/lib/theme/EditThisPage/index.js +0 -31
  365. package/lib/theme/Footer/index.js +0 -108
  366. package/lib/theme/Heading/index.js +0 -60
  367. package/lib/theme/Heading/styles.css +0 -23
  368. package/lib/theme/IconArrow/index.js +0 -28
  369. package/lib/theme/IconEdit/index.js +0 -34
  370. package/lib/theme/IconLanguage/index.js +0 -29
  371. package/lib/theme/IconMenu/index.js +0 -31
  372. package/lib/theme/LastUpdated/index.js +0 -65
  373. package/lib/theme/Layout/index.js +0 -64
  374. package/lib/theme/LayoutHead/index.js +0 -144
  375. package/lib/theme/LayoutProviders/index.js +0 -34
  376. package/lib/theme/Logo/index.js +0 -59
  377. package/lib/theme/MDXComponents/index.js +0 -65
  378. package/lib/theme/MDXPage/index.js +0 -68
  379. package/lib/theme/Navbar/index.js +0 -147
  380. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -195
  381. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -55
  382. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -75
  383. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  384. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  385. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  386. package/lib/theme/NavbarItem/index.js +0 -54
  387. package/lib/theme/NotFound.js +0 -50
  388. package/lib/theme/SearchBar.js +0 -15
  389. package/lib/theme/SearchMetadatas/index.js +0 -33
  390. package/lib/theme/Seo/index.js +0 -49
  391. package/lib/theme/SkipToContent/index.js +0 -61
  392. package/lib/theme/SkipToContent/styles.module.css +0 -16
  393. package/lib/theme/TOC/index.js +0 -59
  394. package/lib/theme/TOC/styles.module.css +0 -23
  395. package/lib/theme/TOCInline/index.js +0 -53
  396. package/lib/theme/TOCInline/styles.module.css +0 -12
  397. package/lib/theme/TabItem/index.js +0 -32
  398. package/lib/theme/Tabs/index.js +0 -150
  399. package/lib/theme/Tabs/styles.module.css +0 -23
  400. package/lib/theme/ThemeContext.js +0 -21
  401. package/lib/theme/ThemeProvider/index.js +0 -38
  402. package/lib/theme/ThemedImage/index.js +0 -48
  403. package/lib/theme/ThemedImage/styles.module.css +0 -11
  404. package/lib/theme/Toggle/index.js +0 -106
  405. package/lib/theme/Toggle/styles.module.css +0 -114
  406. package/lib/theme/UserPreferencesContext.js +0 -18
  407. package/lib/theme/UserPreferencesProvider/index.js +0 -44
  408. package/lib/theme/hooks/styles.css +0 -10
  409. package/lib/theme/hooks/useAnnouncementBar.js +0 -63
  410. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  411. package/lib/theme/hooks/useDocs.js +0 -18
  412. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  413. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  414. package/lib/theme/hooks/useLocationHash.js +0 -28
  415. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  416. package/lib/theme/hooks/usePrismTheme.js +0 -36
  417. package/lib/theme/hooks/useScrollPosition.js +0 -49
  418. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  419. package/lib/theme/hooks/useTabGroupChoice.js +0 -53
  420. package/lib/theme/hooks/useTheme.js +0 -99
  421. package/lib/theme/hooks/useThemeContext.js +0 -31
  422. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  423. package/lib/theme/hooks/useWindowSize.js +0 -55
  424. package/lib/theme/prism-include-languages.js +0 -39
  425. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  426. package/lib-next/__tests__/translations.test.js +0 -128
  427. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  428. package/lib-next/index.js +0 -198
  429. package/lib-next/theme/DocSidebar/styles.module.css +0 -138
  430. package/lib-next/theme/Heading/styles.css +0 -23
  431. package/lib-next/theme/Navbar/styles.module.css +0 -20
  432. package/lib-next/theme/SearchMetadatas/index.js +0 -20
  433. package/lib-next/theme/Seo/index.js +0 -36
  434. package/lib-next/theme/ThemeProvider/index.js +0 -25
  435. package/lib-next/theme/Toggle/index.js +0 -95
  436. package/lib-next/theme/Toggle/styles.module.css +0 -114
  437. package/lib-next/theme/UserPreferencesProvider/index.js +0 -28
  438. package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
  439. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  440. package/lib-next/theme/hooks/useDocs.js +0 -10
  441. package/lib-next/theme/hooks/useHideableNavbar.js +0 -79
  442. package/lib-next/theme/hooks/useKeyboardNavigation.js +0 -35
  443. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  444. package/lib-next/theme/hooks/useLockBodyScroll.js +0 -18
  445. package/lib-next/theme/hooks/usePrismTheme.js +0 -20
  446. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  447. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  448. package/lib-next/theme/hooks/useTabGroupChoice.js +0 -41
  449. package/lib-next/theme/hooks/useTheme.js +0 -82
  450. package/lib-next/theme/hooks/useThemeContext.js +0 -22
  451. package/lib-next/theme/hooks/useUserPreferencesContext.js +0 -22
  452. package/lib-next/theme/hooks/useWindowSize.js +0 -45
  453. package/lib-next/translations.js +0 -145
  454. package/lib-next/types.d.ts +0 -600
  455. package/lib-next/validateThemeConfig.js +0 -317
  456. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  457. package/src/__tests__/translations.test.ts +0 -116
  458. package/src/__tests__/validateThemeConfig.test.js +0 -333
  459. package/src/prism-include-languages.js +0 -11
  460. package/src/theme/DocSidebar/styles.module.css +0 -138
  461. package/src/theme/Heading/styles.css +0 -23
  462. package/src/theme/SearchMetadatas/index.tsx +0 -28
  463. package/src/theme/Seo/index.tsx +0 -46
  464. package/src/theme/ThemeProvider/index.tsx +0 -24
  465. package/src/theme/Toggle/index.tsx +0 -113
  466. package/src/theme/Toggle/styles.module.css +0 -114
  467. package/src/theme/UserPreferencesContext.ts +0 -12
  468. package/src/theme/UserPreferencesProvider/index.tsx +0 -32
  469. package/src/theme/hooks/styles.css +0 -10
  470. package/src/theme/hooks/useAnnouncementBar.ts +0 -58
  471. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  472. package/src/theme/hooks/useDocs.ts +0 -11
  473. package/src/theme/hooks/useHideableNavbar.ts +0 -85
  474. package/src/theme/hooks/useKeyboardNavigation.ts +0 -39
  475. package/src/theme/hooks/useLocationHash.ts +0 -25
  476. package/src/theme/hooks/useLockBodyScroll.ts +0 -20
  477. package/src/theme/hooks/usePrismTheme.ts +0 -22
  478. package/src/theme/hooks/useScrollPosition.ts +0 -45
  479. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  480. package/src/theme/hooks/useTabGroupChoice.ts +0 -46
  481. package/src/theme/hooks/useTheme.ts +0 -92
  482. package/src/theme/hooks/useThemeContext.ts +0 -23
  483. package/src/theme/hooks/useUserPreferencesContext.ts +0 -25
  484. package/src/theme/hooks/useWindowSize.ts +0 -51
  485. package/src/validateThemeConfig.js +0 -317
  486. package/tsconfig.json +0 -12
  487. package/update-code-translations.js +0 -239
  488. package/update-code-translations.test.js +0 -33
@@ -0,0 +1,31 @@
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 clsx from 'clsx';
10
+ import type {Props} from '@theme/Navbar/MobileSidebar/Layout';
11
+ import {useNavbarSecondaryMenu} from '@docusaurus/theme-common';
12
+
13
+ export default function NavbarMobileSidebarLayout({
14
+ header,
15
+ primaryMenu,
16
+ secondaryMenu,
17
+ }: Props): JSX.Element {
18
+ const {shown: secondaryMenuShown} = useNavbarSecondaryMenu();
19
+ return (
20
+ <div className="navbar-sidebar">
21
+ {header}
22
+ <div
23
+ className={clsx('navbar-sidebar__items', {
24
+ 'navbar-sidebar__items--show-secondary': secondaryMenuShown,
25
+ })}>
26
+ <div className="navbar-sidebar__item menu">{primaryMenu}</div>
27
+ <div className="navbar-sidebar__item menu">{secondaryMenu}</div>
28
+ </div>
29
+ </div>
30
+ );
31
+ }
@@ -0,0 +1,38 @@
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 {useNavbarMobileSidebar, useThemeConfig} from '@docusaurus/theme-common';
10
+ import type {Props as NavbarItemConfig} from '@theme/NavbarItem';
11
+ import NavbarItem from '../../../NavbarItem';
12
+
13
+ function useNavbarItems() {
14
+ // TODO temporary casting until ThemeConfig type is improved
15
+ return useThemeConfig().navbar.items as NavbarItemConfig[];
16
+ }
17
+
18
+ // The primary menu displays the navbar items
19
+ export default function NavbarMobilePrimaryMenu(): JSX.Element {
20
+ const mobileSidebar = useNavbarMobileSidebar();
21
+
22
+ // TODO how can the order be defined for mobile?
23
+ // Should we allow providing a different list of items?
24
+ const items = useNavbarItems();
25
+
26
+ return (
27
+ <ul className="menu__list">
28
+ {items.map((item, i) => (
29
+ <NavbarItem
30
+ mobile
31
+ {...item}
32
+ onClick={() => mobileSidebar.toggle()}
33
+ key={i}
34
+ />
35
+ ))}
36
+ </ul>
37
+ );
38
+ }
@@ -0,0 +1,38 @@
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, {type ComponentProps} from 'react';
9
+ import {useNavbarSecondaryMenu, useThemeConfig} from '@docusaurus/theme-common';
10
+ import Translate from '@docusaurus/Translate';
11
+
12
+ function SecondaryMenuBackButton(props: ComponentProps<'button'>) {
13
+ return (
14
+ <button {...props} type="button" className="clean-btn navbar-sidebar__back">
15
+ <Translate
16
+ id="theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel"
17
+ description="The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)">
18
+ ← Back to main menu
19
+ </Translate>
20
+ </button>
21
+ );
22
+ }
23
+
24
+ // The secondary menu slides from the right and shows contextual information
25
+ // such as the docs sidebar
26
+ export default function NavbarMobileSidebarSecondaryMenu(): JSX.Element | null {
27
+ const isPrimaryMenuEmpty = useThemeConfig().navbar.items.length === 0;
28
+ const secondaryMenu = useNavbarSecondaryMenu();
29
+ return (
30
+ <>
31
+ {/* edge-case: prevent returning to the primaryMenu when it's empty */}
32
+ {!isPrimaryMenuEmpty && (
33
+ <SecondaryMenuBackButton onClick={() => secondaryMenu.hide()} />
34
+ )}
35
+ {secondaryMenu.content}
36
+ </>
37
+ );
38
+ }
@@ -0,0 +1,25 @@
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 IconMenu from '@theme/IconMenu';
10
+ import {useNavbarMobileSidebar} from '@docusaurus/theme-common';
11
+
12
+ export default function MobileSidebarToggle(): JSX.Element {
13
+ const mobileSidebar = useNavbarMobileSidebar();
14
+ return (
15
+ <button
16
+ onClick={mobileSidebar.toggle}
17
+ onKeyDown={mobileSidebar.toggle}
18
+ aria-label="Navigation bar toggle"
19
+ className="navbar__toggle clean-btn"
20
+ type="button"
21
+ tabIndex={0}>
22
+ <IconMenu />
23
+ </button>
24
+ );
25
+ }
@@ -0,0 +1,33 @@
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 NavbarMobileSidebarLayout from '@theme/Navbar/MobileSidebar/Layout';
10
+ import NavbarMobileSidebarHeader from '@theme/Navbar/MobileSidebar/Header';
11
+ import {
12
+ useLockBodyScroll,
13
+ useNavbarMobileSidebar,
14
+ } from '@docusaurus/theme-common';
15
+ import NavbarMobileSidebarPrimaryMenu from '@theme/Navbar/MobileSidebar/PrimaryMenu';
16
+ import NavbarMobileSidebarSecondaryMenu from '@theme/Navbar/MobileSidebar/SecondaryMenu';
17
+
18
+ export default function NavbarMobileSidebar(): JSX.Element | null {
19
+ const mobileSidebar = useNavbarMobileSidebar();
20
+ useLockBodyScroll(mobileSidebar.shown);
21
+
22
+ if (!mobileSidebar.shouldRender) {
23
+ return null;
24
+ }
25
+
26
+ return (
27
+ <NavbarMobileSidebarLayout
28
+ header={<NavbarMobileSidebarHeader />}
29
+ primaryMenu={<NavbarMobileSidebarPrimaryMenu />}
30
+ secondaryMenu={<NavbarMobileSidebarSecondaryMenu />}
31
+ />
32
+ );
33
+ }
@@ -5,154 +5,14 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import React, {useCallback, useState, useEffect} from 'react';
9
- import clsx from 'clsx';
10
-
11
- import SearchBar from '@theme/SearchBar';
12
- import Toggle from '@theme/Toggle';
13
- import useThemeContext from '@theme/hooks/useThemeContext';
14
- import {useThemeConfig} from '@docusaurus/theme-common';
15
- import useHideableNavbar from '@theme/hooks/useHideableNavbar';
16
- import useLockBodyScroll from '@theme/hooks/useLockBodyScroll';
17
- import useWindowSize, {windowSizes} from '@theme/hooks/useWindowSize';
18
- import NavbarItem from '@theme/NavbarItem';
19
- import Logo from '@theme/Logo';
20
- import IconMenu from '@theme/IconMenu';
21
-
22
- import styles from './styles.module.css';
23
-
24
- // retrocompatible with v1
25
- const DefaultNavItemPosition = 'right';
26
-
27
- // If split links by left/right
28
- // if position is unspecified, fallback to right (as v1)
29
- function splitNavItemsByPosition(items) {
30
- const leftItems = items.filter(
31
- (item) => (item.position ?? DefaultNavItemPosition) === 'left',
32
- );
33
- const rightItems = items.filter(
34
- (item) => (item.position ?? DefaultNavItemPosition) === 'right',
35
- );
36
- return {
37
- leftItems,
38
- rightItems,
39
- };
40
- }
41
-
42
- function Navbar(): JSX.Element {
43
- const {
44
- navbar: {items, hideOnScroll, style},
45
- colorMode: {disableSwitch: disableColorModeSwitch},
46
- } = useThemeConfig();
47
- const [sidebarShown, setSidebarShown] = useState(false);
48
- const {isDarkTheme, setLightTheme, setDarkTheme} = useThemeContext();
49
- const {navbarRef, isNavbarVisible} = useHideableNavbar(hideOnScroll);
50
-
51
- useLockBodyScroll(sidebarShown);
52
-
53
- const showSidebar = useCallback(() => {
54
- setSidebarShown(true);
55
- }, [setSidebarShown]);
56
- const hideSidebar = useCallback(() => {
57
- setSidebarShown(false);
58
- }, [setSidebarShown]);
59
-
60
- const onToggleChange = useCallback(
61
- (e) => (e.target.checked ? setDarkTheme() : setLightTheme()),
62
- [setLightTheme, setDarkTheme],
63
- );
64
-
65
- const windowSize = useWindowSize();
66
-
67
- useEffect(() => {
68
- if (windowSize === windowSizes.desktop) {
69
- setSidebarShown(false);
70
- }
71
- }, [windowSize]);
72
-
73
- const hasSearchNavbarItem = items.some((item) => item.type === 'search');
74
- const {leftItems, rightItems} = splitNavItemsByPosition(items);
8
+ import React from 'react';
9
+ import NavbarLayout from '@theme/Navbar/Layout';
10
+ import NavbarContent from '@theme/Navbar/Content';
75
11
 
12
+ export default function Navbar(): JSX.Element {
76
13
  return (
77
- <nav
78
- ref={navbarRef}
79
- className={clsx('navbar', 'navbar--fixed-top', {
80
- 'navbar--dark': style === 'dark',
81
- 'navbar--primary': style === 'primary',
82
- 'navbar-sidebar--show': sidebarShown,
83
- [styles.navbarHideable]: hideOnScroll,
84
- [styles.navbarHidden]: hideOnScroll && !isNavbarVisible,
85
- })}>
86
- <div className="navbar__inner">
87
- <div className="navbar__items">
88
- {items != null && items.length !== 0 && (
89
- <button
90
- aria-label="Navigation bar toggle"
91
- className="navbar__toggle"
92
- type="button"
93
- tabIndex={0}
94
- onClick={showSidebar}
95
- onKeyDown={showSidebar}>
96
- <IconMenu />
97
- </button>
98
- )}
99
- <Logo
100
- className="navbar__brand"
101
- imageClassName="navbar__logo"
102
- titleClassName={clsx('navbar__title')}
103
- />
104
- {leftItems.map((item, i) => (
105
- <NavbarItem {...item} key={i} />
106
- ))}
107
- </div>
108
- <div className="navbar__items navbar__items--right">
109
- {rightItems.map((item, i) => (
110
- <NavbarItem {...item} key={i} />
111
- ))}
112
- {!disableColorModeSwitch && (
113
- <Toggle
114
- className={styles.displayOnlyInLargeViewport}
115
- checked={isDarkTheme}
116
- onChange={onToggleChange}
117
- />
118
- )}
119
- {!hasSearchNavbarItem && <SearchBar />}
120
- </div>
121
- </div>
122
- <div
123
- role="presentation"
124
- className="navbar-sidebar__backdrop"
125
- onClick={hideSidebar}
126
- />
127
- <div className="navbar-sidebar">
128
- <div className="navbar-sidebar__brand">
129
- <Logo
130
- className="navbar__brand"
131
- imageClassName="navbar__logo"
132
- titleClassName="navbar__title"
133
- onClick={hideSidebar}
134
- />
135
- {!disableColorModeSwitch && sidebarShown && (
136
- <Toggle checked={isDarkTheme} onChange={onToggleChange} />
137
- )}
138
- </div>
139
- <div className="navbar-sidebar__items">
140
- <div className="menu">
141
- <ul className="menu__list">
142
- {items.map((item, i) => (
143
- <NavbarItem
144
- mobile
145
- {...(item as any)} // TODO fix typing
146
- onClick={hideSidebar}
147
- key={i}
148
- />
149
- ))}
150
- </ul>
151
- </div>
152
- </div>
153
- </div>
154
- </nav>
14
+ <NavbarLayout>
15
+ <NavbarContent />
16
+ </NavbarLayout>
155
17
  );
156
18
  }
157
-
158
- export default Navbar;
@@ -5,221 +5,64 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import React, {useState, useRef, useEffect} from 'react';
8
+ import React from 'react';
9
9
  import clsx from 'clsx';
10
- import Link from '@docusaurus/Link';
11
- import useBaseUrl from '@docusaurus/useBaseUrl';
12
- import {useLocation} from '@docusaurus/router';
13
- import {isSamePath} from '@docusaurus/theme-common';
10
+
11
+ import NavbarNavLink from '@theme/NavbarItem/NavbarNavLink';
12
+
14
13
  import type {
15
- NavLinkProps,
16
14
  DesktopOrMobileNavBarItemProps,
17
15
  Props,
18
16
  } from '@theme/NavbarItem/DefaultNavbarItem';
19
17
 
20
- function NavLink({
21
- activeBasePath,
22
- activeBaseRegex,
23
- to,
24
- href,
25
- label,
26
- activeClassName = 'navbar__link--active',
27
- prependBaseUrlToHref,
28
- ...props
29
- }: NavLinkProps) {
30
- // TODO all this seems hacky
31
- // {to: 'version'} should probably be forbidden, in favor of {to: '/version'}
32
- const toUrl = useBaseUrl(to);
33
- const activeBaseUrl = useBaseUrl(activeBasePath);
34
- const normalizedHref = useBaseUrl(href, {forcePrependBaseUrl: true});
35
-
36
- return (
37
- <Link
38
- {...(href
39
- ? {
40
- href: prependBaseUrlToHref ? normalizedHref : href,
41
- }
42
- : {
43
- isNavLink: true,
44
- activeClassName,
45
- to: toUrl,
46
- ...(activeBasePath || activeBaseRegex
47
- ? {
48
- isActive: (_match, location) =>
49
- activeBaseRegex
50
- ? new RegExp(activeBaseRegex).test(location.pathname)
51
- : location.pathname.startsWith(activeBaseUrl),
52
- }
53
- : null),
54
- })}
55
- {...props}>
56
- {label}
57
- </Link>
58
- );
59
- }
18
+ import {getInfimaActiveClassName} from '@theme/NavbarItem/utils';
60
19
 
61
- function NavItemDesktop({
62
- items,
63
- position,
20
+ function DefaultNavbarItemDesktop({
64
21
  className,
22
+ isDropdownItem = false,
65
23
  ...props
66
24
  }: DesktopOrMobileNavBarItemProps) {
67
- const dropdownRef = useRef<HTMLDivElement>(null);
68
- const dropdownMenuRef = useRef<HTMLUListElement>(null);
69
- const [showDropdown, setShowDropdown] = useState(false);
70
-
71
- useEffect(() => {
72
- const handleClickOutside = (event) => {
73
- if (!dropdownRef.current || dropdownRef.current.contains(event.target)) {
74
- return;
75
- }
76
-
77
- setShowDropdown(false);
78
- };
79
-
80
- document.addEventListener('mousedown', handleClickOutside);
81
- document.addEventListener('touchstart', handleClickOutside);
82
-
83
- return () => {
84
- document.removeEventListener('mousedown', handleClickOutside);
85
- document.removeEventListener('touchstart', handleClickOutside);
86
- };
87
- }, [dropdownRef]);
88
-
89
- const navLinkClassNames = (extraClassName?: string, isDropdownItem = false) =>
90
- clsx(
91
- {
92
- 'navbar__item navbar__link': !isDropdownItem,
93
- dropdown__link: isDropdownItem,
94
- },
95
- extraClassName,
96
- );
25
+ const element = (
26
+ <NavbarNavLink
27
+ className={clsx(
28
+ isDropdownItem ? 'dropdown__link' : 'navbar__item navbar__link',
29
+ className,
30
+ )}
31
+ {...props}
32
+ />
33
+ );
97
34
 
98
- if (!items) {
99
- return <NavLink className={navLinkClassNames(className)} {...props} />;
35
+ if (isDropdownItem) {
36
+ return <li>{element}</li>;
100
37
  }
101
38
 
102
- return (
103
- <div
104
- ref={dropdownRef}
105
- className={clsx('navbar__item', 'dropdown', 'dropdown--hoverable', {
106
- 'dropdown--left': position === 'left',
107
- 'dropdown--right': position === 'right',
108
- 'dropdown--show': showDropdown,
109
- })}>
110
- <NavLink
111
- className={navLinkClassNames(className)}
112
- {...props}
113
- onClick={props.to ? undefined : (e) => e.preventDefault()}
114
- onKeyDown={(e) => {
115
- if (e.key === 'Enter') {
116
- e.preventDefault();
117
- setShowDropdown(!showDropdown);
118
- }
119
- }}>
120
- {props.children ?? props.label}
121
- </NavLink>
122
- <ul ref={dropdownMenuRef} className="dropdown__menu">
123
- {items.map(({className: childItemClassName, ...childItemProps}, i) => (
124
- <li key={i}>
125
- <NavLink
126
- onKeyDown={(e) => {
127
- if (i === items.length - 1 && e.key === 'Tab') {
128
- e.preventDefault();
129
-
130
- setShowDropdown(false);
131
-
132
- const nextNavbarItem = (dropdownRef.current as HTMLElement)
133
- .nextElementSibling;
134
-
135
- if (nextNavbarItem) {
136
- (nextNavbarItem as HTMLElement).focus();
137
- }
138
- }
139
- }}
140
- activeClassName="dropdown__link--active"
141
- className={navLinkClassNames(childItemClassName, true)}
142
- {...childItemProps}
143
- />
144
- </li>
145
- ))}
146
- </ul>
147
- </div>
148
- );
39
+ return element;
149
40
  }
150
41
 
151
- function NavItemMobile({
152
- items,
42
+ function DefaultNavbarItemMobile({
153
43
  className,
154
- position: _position, // Need to destructure position from props so that it doesn't get passed on.
44
+ isDropdownItem,
155
45
  ...props
156
46
  }: DesktopOrMobileNavBarItemProps) {
157
- const menuListRef = useRef<HTMLUListElement>(null);
158
- const {pathname} = useLocation();
159
- const [collapsed, setCollapsed] = useState(
160
- () => !items?.some((item) => isSamePath(item.to, pathname)) ?? true,
161
- );
162
-
163
- const navLinkClassNames = (extraClassName?: string, isSubList = false) =>
164
- clsx(
165
- 'menu__link',
166
- {
167
- 'menu__link--sublist': isSubList,
168
- },
169
- extraClassName,
170
- );
171
-
172
- if (!items) {
173
- return (
174
- <li className="menu__list-item">
175
- <NavLink className={navLinkClassNames(className)} {...props} />
176
- </li>
177
- );
178
- }
179
-
180
- const menuListHeight = menuListRef.current?.scrollHeight
181
- ? `${menuListRef.current?.scrollHeight}px`
182
- : undefined;
183
-
184
47
  return (
185
- <li
186
- className={clsx('menu__list-item', {
187
- 'menu__list-item--collapsed': collapsed,
188
- })}>
189
- <NavLink
190
- role="button"
191
- className={navLinkClassNames(className, true)}
192
- {...props}
193
- onClick={(e) => {
194
- e.preventDefault();
195
- setCollapsed((state) => !state);
196
- }}>
197
- {props.children ?? props.label}
198
- </NavLink>
199
- <ul
200
- className="menu__list"
201
- ref={menuListRef}
202
- style={{
203
- height: !collapsed ? menuListHeight : undefined,
204
- }}>
205
- {items.map(({className: childItemClassName, ...childItemProps}, i) => (
206
- <li className="menu__list-item" key={i}>
207
- <NavLink
208
- activeClassName="menu__link--active"
209
- className={navLinkClassNames(childItemClassName)}
210
- {...childItemProps}
211
- onClick={props.onClick}
212
- />
213
- </li>
214
- ))}
215
- </ul>
48
+ <li className="menu__list-item">
49
+ <NavbarNavLink className={clsx('menu__link', className)} {...props} />
216
50
  </li>
217
51
  );
218
52
  }
219
53
 
220
- function DefaultNavbarItem({mobile = false, ...props}: Props): JSX.Element {
221
- const Comp = mobile ? NavItemMobile : NavItemDesktop;
222
- return <Comp {...props} />;
54
+ export default function DefaultNavbarItem({
55
+ mobile = false,
56
+ position, // Need to destructure position from props so that it doesn't get passed on.
57
+ ...props
58
+ }: Props): JSX.Element {
59
+ const Comp = mobile ? DefaultNavbarItemMobile : DefaultNavbarItemDesktop;
60
+ return (
61
+ <Comp
62
+ {...props}
63
+ activeClassName={
64
+ props.activeClassName ?? getInfimaActiveClassName(mobile)
65
+ }
66
+ />
67
+ );
223
68
  }
224
-
225
- export default DefaultNavbarItem;
@@ -7,14 +7,33 @@
7
7
 
8
8
  import React from 'react';
9
9
  import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
10
- import {useLatestVersion, useActiveDocContext} from '@theme/hooks/useDocs';
10
+ import {
11
+ useLatestVersion,
12
+ useActiveDocContext,
13
+ } from '@docusaurus/plugin-content-docs/client';
11
14
  import clsx from 'clsx';
15
+ import {getInfimaActiveClassName} from '@theme/NavbarItem/utils';
12
16
  import type {Props} from '@theme/NavbarItem/DocNavbarItem';
13
- import {useDocsPreferredVersion} from '@docusaurus/theme-common';
17
+ import {useDocsPreferredVersion, uniq} from '@docusaurus/theme-common';
18
+ import type {GlobalVersion} from '@docusaurus/plugin-content-docs/client';
19
+
20
+ function getDocInVersions(versions: GlobalVersion[], docId: string) {
21
+ const allDocs = versions.flatMap((version) => version.docs);
22
+ const doc = allDocs.find((versionDoc) => versionDoc.id === docId);
23
+ if (!doc) {
24
+ const docIds = allDocs.map((versionDoc) => versionDoc.id).join('\n- ');
25
+ throw new Error(
26
+ `DocNavbarItem: couldn't find any doc with id "${docId}" in version${
27
+ versions.length ? 's' : ''
28
+ } ${versions.map((version) => version.name).join(', ')}".
29
+ Available doc ids are:\n- ${docIds}`,
30
+ );
31
+ }
32
+ return doc;
33
+ }
14
34
 
15
35
  export default function DocNavbarItem({
16
36
  docId,
17
- activeSidebarClassName,
18
37
  label: staticLabel,
19
38
  docsPluginId,
20
39
  ...props
@@ -23,25 +42,24 @@ export default function DocNavbarItem({
23
42
  const {preferredVersion} = useDocsPreferredVersion(docsPluginId);
24
43
  const latestVersion = useLatestVersion(docsPluginId);
25
44
 
26
- const version = activeVersion ?? preferredVersion ?? latestVersion;
27
-
28
- const doc = version.docs.find((versionDoc) => versionDoc.id === docId);
29
- if (!doc) {
30
- const docIds = version.docs.map((versionDoc) => versionDoc.id).join('\n- ');
31
- throw new Error(
32
- `DocNavbarItem: couldn't find any doc with id=${docId} in version ${version.name}.
33
- Available docIds=\n- ${docIds}`,
34
- );
35
- }
45
+ // Versions used to look for the doc to link to, ordered + no duplicate
46
+ const versions = uniq(
47
+ [activeVersion, preferredVersion, latestVersion].filter(
48
+ Boolean,
49
+ ) as GlobalVersion[],
50
+ );
51
+ const doc = getDocInVersions(versions, docId);
52
+ const activeDocInfimaClassName = getInfimaActiveClassName(props.mobile);
36
53
 
37
54
  return (
38
55
  <DefaultNavbarItem
39
56
  exact
40
57
  {...props}
41
58
  className={clsx(props.className, {
42
- [activeSidebarClassName]:
43
- activeDoc && activeDoc.sidebar === doc.sidebar,
59
+ [activeDocInfimaClassName]:
60
+ activeDoc?.sidebar && activeDoc.sidebar === doc.sidebar,
44
61
  })}
62
+ activeClassName={activeDocInfimaClassName}
45
63
  label={staticLabel ?? doc.id}
46
64
  to={doc.path}
47
65
  />