@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
@@ -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
+ }
@@ -0,0 +1,15 @@
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 type {Props} from '@theme/Navbar/Search';
10
+
11
+ import styles from './styles.module.css';
12
+
13
+ export default function NavbarSearch({children}: Props): JSX.Element {
14
+ return <div className={styles.searchBox}>{children}</div>;
15
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ @media (max-width: 996px) {
9
+ .searchBox {
10
+ position: absolute;
11
+ right: var(--ifm-navbar-padding-horizontal);
12
+ }
13
+ }
14
+
15
+ @media (min-width: 997px) {
16
+ .searchBox {
17
+ padding: var(--ifm-navbar-item-padding-vertical)
18
+ var(--ifm-navbar-item-padding-horizontal);
19
+ }
20
+ }
@@ -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;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
9
+ import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
10
+ import LocaleDropdownNavbarItem from '@theme/NavbarItem/LocaleDropdownNavbarItem';
11
+ import SearchNavbarItem from '@theme/NavbarItem/SearchNavbarItem';
12
+ import HtmlNavbarItem from '@theme/NavbarItem/HtmlNavbarItem';
13
+ import DocNavbarItem from '@theme/NavbarItem/DocNavbarItem';
14
+ import DocSidebarNavbarItem from '@theme/NavbarItem/DocSidebarNavbarItem';
15
+ import DocsVersionNavbarItem from '@theme/NavbarItem/DocsVersionNavbarItem';
16
+ import DocsVersionDropdownNavbarItem from '@theme/NavbarItem/DocsVersionDropdownNavbarItem';
17
+
18
+ import type {ComponentTypesObject} from '@theme/NavbarItem/ComponentTypes';
19
+
20
+ const ComponentTypes: ComponentTypesObject = {
21
+ default: DefaultNavbarItem,
22
+ localeDropdown: LocaleDropdownNavbarItem,
23
+ search: SearchNavbarItem,
24
+ dropdown: DropdownNavbarItem,
25
+ html: HtmlNavbarItem,
26
+ doc: DocNavbarItem,
27
+ docSidebar: DocSidebarNavbarItem,
28
+ docsVersion: DocsVersionNavbarItem,
29
+ docsVersionDropdown: DocsVersionDropdownNavbarItem,
30
+ };
31
+
32
+ export default ComponentTypes;
@@ -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;