@docusaurus/theme-classic 2.0.0-beta.1decd6f80 → 2.0.0-beta.20

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