@docusaurus/theme-classic 2.0.0-beta.2 → 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 (549) 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 +42 -52
  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 +8 -16
  14. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  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/theme/Toggle → lib-next/theme/BlogPostAuthors}/styles.module.css +11 -7
  24. package/lib-next/theme/BlogPostItem/index.js +96 -98
  25. package/lib-next/theme/BlogPostItem/styles.module.css +9 -0
  26. package/lib-next/theme/BlogPostPage/index.js +84 -37
  27. package/lib-next/theme/BlogPostPaginator/index.js +27 -37
  28. package/lib-next/theme/BlogSidebar/Desktop/index.js +41 -0
  29. package/{lib/theme/BlogSidebar → lib-next/theme/BlogSidebar/Desktop}/styles.module.css +5 -4
  30. package/lib-next/theme/BlogSidebar/Mobile/index.js +36 -0
  31. package/lib-next/theme/BlogSidebar/index.js +11 -33
  32. package/lib-next/theme/BlogTagsListPage/index.js +24 -65
  33. package/lib-next/theme/BlogTagsPostsPage/index.js +45 -48
  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/{lib/theme/CodeBlock → lib-next/theme/CodeBlock/Content}/styles.module.css +45 -27
  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/theme/BlogPostItem → lib-next/theme/CodeBlock/WordWrapButton}/styles.module.css +5 -8
  45. package/lib-next/theme/CodeBlock/index.js +28 -256
  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 +98 -85
  58. package/lib-next/theme/DocItem/styles.module.css +12 -10
  59. package/lib-next/theme/DocItemFooter/index.js +79 -0
  60. package/{lib/theme/DocItem → lib-next/theme/DocItemFooter}/styles.module.css +1 -9
  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/IconExternalLink/styles.module.css → lib-next/theme/DocPage/Layout/index.module.css} +7 -4
  69. package/lib-next/theme/DocPage/index.js +39 -159
  70. package/lib-next/theme/DocPaginator/index.js +28 -40
  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 -340
  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/theme/MDXPage/styles.module.css → lib-next/theme/DocSidebarItem/Link.module.css} +2 -2
  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/DocVersionBanner/index.js +33 -16
  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 -54
  102. package/lib-next/theme/Heading/styles.module.css +25 -5
  103. package/lib-next/theme/IconArrow/index.js +2 -5
  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 +2 -5
  107. package/lib-next/theme/IconExternalLink/index.js +2 -5
  108. package/lib-next/theme/IconExternalLink/styles.module.css +0 -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 +7 -5
  113. package/lib-next/theme/LastUpdated/index.js +4 -2
  114. package/lib-next/theme/Layout/index.js +19 -16
  115. package/lib-next/theme/LayoutProviders/index.js +16 -9
  116. package/lib-next/theme/Logo/index.js +25 -24
  117. package/lib-next/theme/{ThemeContext.js → MDXComponents/A.js} +4 -2
  118. package/lib-next/theme/MDXComponents/Code.js +28 -0
  119. package/lib-next/theme/MDXComponents/Details.js +20 -0
  120. package/lib-next/theme/MDXComponents/Head.js +26 -0
  121. package/lib-next/theme/MDXComponents/Heading.js +11 -0
  122. package/lib-next/theme/MDXComponents/Img.js +24 -0
  123. package/{lib/theme/hooks/styles.css → lib-next/theme/MDXComponents/Img.module.css} +2 -2
  124. package/lib-next/theme/MDXComponents/Pre.js +18 -0
  125. package/lib-next/theme/MDXComponents/Ul.js +21 -0
  126. package/lib-next/theme/MDXComponents/index.js +22 -42
  127. package/lib-next/theme/MDXContent/index.js +12 -0
  128. package/lib-next/theme/MDXPage/index.js +37 -34
  129. package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
  130. package/lib-next/theme/Navbar/Content/index.js +75 -0
  131. package/{lib/theme/TOCInline → lib-next/theme/Navbar/Content}/styles.module.css +7 -4
  132. package/lib-next/theme/Navbar/Layout/index.js +54 -0
  133. package/{lib/theme/Navbar → lib-next/theme/Navbar/Layout}/styles.module.css +0 -6
  134. package/lib-next/theme/Navbar/Logo/index.js +17 -0
  135. package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
  136. package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
  137. package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
  138. package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
  139. package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
  140. package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
  141. package/lib-next/theme/Navbar/Search/index.js +11 -0
  142. package/lib-next/theme/Navbar/Search/styles.module.css +20 -0
  143. package/lib-next/theme/Navbar/index.js +7 -137
  144. package/lib-next/theme/NavbarItem/ComponentTypes.js +27 -0
  145. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +32 -202
  146. package/lib-next/theme/NavbarItem/DocNavbarItem.js +16 -30
  147. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +41 -0
  148. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +54 -44
  149. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +2 -6
  150. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +167 -0
  151. package/lib-next/theme/NavbarItem/HtmlNavbarItem.js +30 -0
  152. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +16 -22
  153. package/lib-next/theme/{hooks/styles.css → NavbarItem/LocaleDropdownNavbarItem/styles.module.css} +3 -2
  154. package/lib-next/theme/NavbarItem/NavbarNavLink.js +84 -0
  155. package/lib-next/theme/NavbarItem/SearchNavbarItem.js +6 -1
  156. package/lib-next/theme/NavbarItem/index.js +17 -24
  157. package/lib-next/{prism-include-languages.js → theme/NavbarItem/utils.js} +3 -4
  158. package/lib-next/theme/NotFound.js +39 -37
  159. package/lib-next/theme/PaginatorNavLink/index.js +23 -0
  160. package/lib-next/theme/SearchBar.js +1 -1
  161. package/lib-next/theme/SearchMetadata/index.js +34 -0
  162. package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +31 -50
  163. package/lib-next/theme/SkipToContent/index.js +7 -32
  164. package/lib-next/theme/SkipToContent/styles.module.css +7 -0
  165. package/lib-next/theme/TOC/index.js +12 -39
  166. package/lib-next/theme/TOC/styles.module.css +1 -1
  167. package/lib-next/theme/TOCCollapsible/CollapseButton.js +29 -0
  168. package/lib-next/theme/TOCCollapsible/CollapseButton.module.css +29 -0
  169. package/lib-next/theme/TOCCollapsible/index.js +42 -0
  170. package/lib-next/theme/TOCCollapsible/index.module.css +31 -0
  171. package/lib-next/theme/TOCInline/index.js +10 -31
  172. package/lib-next/theme/TOCItems/Tree.js +40 -0
  173. package/lib-next/theme/TOCItems/index.js +54 -0
  174. package/lib-next/theme/TabItem/index.js +4 -5
  175. package/{lib/theme/IconEdit → lib-next/theme/TabItem}/styles.module.css +2 -3
  176. package/lib-next/theme/Tabs/__tests__/index.test.js +146 -0
  177. package/lib-next/theme/Tabs/index.js +111 -53
  178. package/lib-next/theme/Tabs/styles.module.css +4 -13
  179. package/lib-next/theme/Tag/index.js +23 -0
  180. package/lib-next/theme/Tag/styles.module.css +70 -0
  181. package/lib-next/theme/TagsListByLetter/index.js +40 -0
  182. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  183. package/lib-next/theme/TagsListInline/index.js +31 -0
  184. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  185. package/lib-next/theme/ThemedImage/index.js +9 -12
  186. package/lib-next/theme/ThemedImage/styles.module.css +2 -2
  187. package/lib-next/theme/prism-include-languages.js +17 -15
  188. package/package.json +37 -32
  189. package/src/admonitions.css +39 -0
  190. package/src/deps.d.ts +13 -0
  191. package/src/getSwizzleConfig.ts +252 -0
  192. package/src/index.ts +48 -71
  193. package/src/nprogress.css +41 -0
  194. package/src/nprogress.ts +31 -0
  195. package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
  196. package/src/theme/Admonition/index.tsx +106 -0
  197. package/src/theme/AnnouncementBar/index.tsx +9 -15
  198. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  199. package/src/theme/BackToTopButton/index.tsx +34 -0
  200. package/src/theme/BackToTopButton/styles.module.css +44 -0
  201. package/src/theme/BlogArchivePage/index.tsx +92 -0
  202. package/src/theme/BlogLayout/index.tsx +38 -0
  203. package/src/theme/BlogListPage/index.tsx +45 -35
  204. package/src/theme/BlogListPaginator/index.tsx +27 -32
  205. package/src/theme/BlogPostAuthor/index.tsx +50 -0
  206. package/src/theme/BlogPostAuthors/index.tsx +49 -0
  207. package/src/theme/{Toggle → BlogPostAuthors}/styles.module.css +11 -7
  208. package/src/theme/BlogPostItem/index.tsx +86 -92
  209. package/src/theme/BlogPostItem/styles.module.css +9 -0
  210. package/src/theme/BlogPostPage/index.tsx +84 -38
  211. package/src/theme/BlogPostPaginator/index.tsx +27 -36
  212. package/src/theme/BlogSidebar/Desktop/index.tsx +45 -0
  213. package/{lib-next/theme/BlogSidebar → src/theme/BlogSidebar/Desktop}/styles.module.css +5 -4
  214. package/src/theme/BlogSidebar/Mobile/index.tsx +38 -0
  215. package/src/theme/BlogSidebar/index.tsx +10 -33
  216. package/src/theme/BlogTagsListPage/index.tsx +24 -66
  217. package/src/theme/BlogTagsPostsPage/index.tsx +49 -47
  218. package/src/theme/CodeBlock/Container/index.tsx +35 -0
  219. package/src/theme/CodeBlock/Container/styles.module.css +14 -0
  220. package/src/theme/CodeBlock/Content/Element.tsx +30 -0
  221. package/src/theme/CodeBlock/Content/String.tsx +111 -0
  222. package/{lib-next/theme/CodeBlock → src/theme/CodeBlock/Content}/styles.module.css +45 -27
  223. package/src/theme/CodeBlock/CopyButton/index.tsx +67 -0
  224. package/src/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  225. package/src/theme/CodeBlock/Line/index.tsx +48 -0
  226. package/src/theme/CodeBlock/Line/styles.module.css +51 -0
  227. package/src/theme/CodeBlock/WordWrapButton/index.tsx +49 -0
  228. package/src/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  229. package/src/theme/CodeBlock/index.tsx +29 -253
  230. package/src/theme/ColorModeToggle/index.tsx +67 -0
  231. package/src/theme/ColorModeToggle/styles.module.css +35 -0
  232. package/src/theme/Details/index.tsx +25 -0
  233. package/src/theme/Details/styles.module.css +13 -0
  234. package/src/theme/DocBreadcrumbs/index.tsx +140 -0
  235. package/src/theme/{Heading/styles.css → DocBreadcrumbs/styles.module.css} +9 -13
  236. package/src/theme/DocCard/index.tsx +116 -0
  237. package/src/theme/DocCard/styles.module.css +34 -0
  238. package/src/theme/DocCardList/index.tsx +36 -0
  239. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +86 -0
  240. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +26 -0
  241. package/src/theme/DocItem/index.tsx +91 -77
  242. package/src/theme/DocItem/styles.module.css +12 -10
  243. package/src/theme/DocItemFooter/index.tsx +91 -0
  244. package/{lib-next/theme/Toggle → src/theme/DocItemFooter}/styles.module.css +9 -8
  245. package/src/theme/DocPage/Layout/Main/index.tsx +37 -0
  246. package/src/theme/DocPage/Layout/Main/styles.module.css +28 -0
  247. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx +40 -0
  248. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  249. package/src/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  250. package/src/theme/DocPage/Layout/Sidebar/index.tsx +74 -0
  251. package/src/theme/DocPage/Layout/index.module.css +15 -0
  252. package/src/theme/DocPage/Layout/index.tsx +39 -0
  253. package/src/theme/DocPage/index.tsx +39 -165
  254. package/src/theme/DocPaginator/index.tsx +28 -39
  255. package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
  256. package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  257. package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
  258. package/src/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  259. package/src/theme/DocSidebar/Desktop/index.tsx +40 -0
  260. package/src/theme/DocSidebar/Desktop/styles.module.css +50 -0
  261. package/src/theme/DocSidebar/Mobile/index.tsx +54 -0
  262. package/src/theme/DocSidebar/index.tsx +14 -350
  263. package/src/theme/DocSidebarItem/Category.tsx +210 -0
  264. package/src/theme/DocSidebarItem/Html.module.css +13 -0
  265. package/src/theme/DocSidebarItem/Html.tsx +34 -0
  266. package/src/theme/DocSidebarItem/Link.module.css +10 -0
  267. package/src/theme/DocSidebarItem/Link.tsx +58 -0
  268. package/src/theme/DocSidebarItem/index.tsx +27 -0
  269. package/src/theme/DocSidebarItems/index.tsx +27 -0
  270. package/src/theme/DocTagDocListPage/index.tsx +96 -0
  271. package/src/theme/DocTagsListPage/index.tsx +44 -0
  272. package/src/theme/DocVersionBadge/index.tsx +35 -0
  273. package/src/theme/DocVersionBanner/index.tsx +53 -27
  274. package/src/theme/EditThisPage/index.tsx +6 -1
  275. package/src/theme/ErrorPageContent.tsx +41 -0
  276. package/src/theme/Footer/Copyright/index.tsx +20 -0
  277. package/src/theme/Footer/Layout/index.tsx +34 -0
  278. package/src/theme/Footer/LinkItem/index.tsx +36 -0
  279. package/src/theme/Footer/Links/MultiColumn/index.tsx +51 -0
  280. package/src/theme/Footer/Links/Simple/index.tsx +42 -0
  281. package/src/theme/Footer/Links/index.tsx +21 -0
  282. package/src/theme/Footer/Logo/index.tsx +41 -0
  283. package/src/theme/Footer/{styles.module.css → Logo/styles.module.css} +2 -1
  284. package/src/theme/Footer/index.tsx +13 -113
  285. package/src/theme/Heading/index.tsx +31 -58
  286. package/src/theme/Heading/styles.module.css +25 -5
  287. package/src/theme/IconArrow/index.tsx +2 -4
  288. package/src/theme/IconClose/index.tsx +26 -0
  289. package/src/theme/IconDarkMode/index.tsx +20 -0
  290. package/src/theme/IconEdit/index.tsx +5 -4
  291. package/src/theme/IconExternalLink/index.tsx +3 -5
  292. package/src/theme/IconExternalLink/styles.module.css +0 -2
  293. package/src/theme/IconHome/index.tsx +20 -0
  294. package/src/theme/IconLanguage/index.tsx +6 -8
  295. package/src/theme/IconLightMode/index.tsx +20 -0
  296. package/src/theme/IconMenu/index.tsx +3 -5
  297. package/src/theme/LastUpdated/index.tsx +4 -2
  298. package/src/theme/Layout/index.tsx +19 -15
  299. package/src/theme/LayoutProviders/index.tsx +16 -9
  300. package/src/theme/Logo/index.tsx +21 -19
  301. package/src/theme/{ThemeContext.ts → MDXComponents/A.tsx} +5 -6
  302. package/src/theme/MDXComponents/Code.tsx +37 -0
  303. package/src/theme/MDXComponents/Details.tsx +25 -0
  304. package/src/theme/MDXComponents/Head.tsx +29 -0
  305. package/src/theme/MDXComponents/Heading.tsx +14 -0
  306. package/src/theme/MDXComponents/Img.module.css +10 -0
  307. package/src/theme/MDXComponents/Img.tsx +26 -0
  308. package/src/theme/MDXComponents/Pre.tsx +22 -0
  309. package/src/theme/MDXComponents/Ul.tsx +24 -0
  310. package/src/theme/MDXComponents/index.tsx +23 -42
  311. package/src/theme/MDXContent/index.tsx +15 -0
  312. package/src/theme/MDXPage/index.tsx +37 -34
  313. package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
  314. package/src/theme/Navbar/Content/index.tsx +86 -0
  315. package/src/theme/Navbar/Content/styles.module.css +15 -0
  316. package/src/theme/Navbar/Layout/index.tsx +57 -0
  317. package/src/theme/Navbar/{styles.module.css → Layout/styles.module.css} +0 -6
  318. package/src/theme/Navbar/Logo/index.tsx +19 -0
  319. package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
  320. package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
  321. package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
  322. package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
  323. package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
  324. package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
  325. package/src/theme/Navbar/Search/index.tsx +15 -0
  326. package/src/theme/Navbar/Search/styles.module.css +20 -0
  327. package/src/theme/Navbar/index.tsx +7 -147
  328. package/src/theme/NavbarItem/ComponentTypes.tsx +32 -0
  329. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +37 -207
  330. package/src/theme/NavbarItem/DocNavbarItem.tsx +18 -38
  331. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +44 -0
  332. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +59 -51
  333. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +5 -8
  334. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +193 -0
  335. package/src/theme/NavbarItem/HtmlNavbarItem.tsx +32 -0
  336. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +19 -17
  337. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  338. package/src/theme/NavbarItem/NavbarNavLink.tsx +80 -0
  339. package/src/theme/NavbarItem/SearchNavbarItem.tsx +6 -1
  340. package/src/theme/NavbarItem/index.tsx +22 -29
  341. package/src/theme/NavbarItem/utils.ts +13 -0
  342. package/src/theme/NotFound.tsx +39 -36
  343. package/src/theme/PaginatorNavLink/index.tsx +26 -0
  344. package/src/theme/SearchBar.tsx +2 -1
  345. package/src/theme/SearchMetadata/index.tsx +43 -0
  346. package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +31 -44
  347. package/src/theme/SkipToContent/index.tsx +7 -32
  348. package/src/theme/SkipToContent/styles.module.css +7 -0
  349. package/src/theme/TOC/index.tsx +13 -44
  350. package/src/theme/TOC/styles.module.css +1 -1
  351. package/src/theme/TOCCollapsible/CollapseButton.module.css +29 -0
  352. package/src/theme/TOCCollapsible/CollapseButton.tsx +35 -0
  353. package/src/theme/TOCCollapsible/index.module.css +31 -0
  354. package/src/theme/TOCCollapsible/index.tsx +45 -0
  355. package/src/theme/TOCInline/index.tsx +14 -35
  356. package/src/theme/TOCItems/Tree.tsx +46 -0
  357. package/src/theme/TOCItems/index.tsx +61 -0
  358. package/src/theme/TabItem/index.tsx +12 -4
  359. package/src/theme/TabItem/styles.module.css +10 -0
  360. package/src/theme/Tabs/index.tsx +120 -62
  361. package/src/theme/Tabs/styles.module.css +4 -13
  362. package/src/theme/Tag/index.tsx +27 -0
  363. package/src/theme/Tag/styles.module.css +70 -0
  364. package/src/theme/TagsListByLetter/index.tsx +43 -0
  365. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  366. package/src/theme/TagsListInline/index.tsx +35 -0
  367. package/src/theme/TagsListInline/styles.module.css +15 -0
  368. package/src/theme/ThemedImage/index.tsx +10 -11
  369. package/src/theme/ThemedImage/styles.module.css +2 -2
  370. package/src/theme/prism-include-languages.ts +20 -15
  371. package/src/theme-classic.d.ts +1279 -0
  372. package/src/translations.ts +84 -58
  373. package/src/validateThemeConfig.ts +448 -0
  374. package/babel.config.js +0 -35
  375. package/codeTranslations/README.md +0 -20
  376. package/codeTranslations/ar.json +0 -57
  377. package/codeTranslations/base.json +0 -112
  378. package/codeTranslations/bn.json +0 -56
  379. package/codeTranslations/da.json +0 -57
  380. package/codeTranslations/de.json +0 -57
  381. package/codeTranslations/es.json +0 -57
  382. package/codeTranslations/fa.json +0 -57
  383. package/codeTranslations/fil.json +0 -57
  384. package/codeTranslations/fr.json +0 -57
  385. package/codeTranslations/he.json +0 -57
  386. package/codeTranslations/hi.json +0 -57
  387. package/codeTranslations/ja.json +0 -57
  388. package/codeTranslations/ko.json +0 -57
  389. package/codeTranslations/pl.json +0 -57
  390. package/codeTranslations/pt-BR.json +0 -57
  391. package/codeTranslations/pt-PT.json +0 -57
  392. package/codeTranslations/ru.json +0 -57
  393. package/codeTranslations/tr.json +0 -57
  394. package/codeTranslations/vi.json +0 -57
  395. package/codeTranslations/zh-Hans.json +0 -57
  396. package/codeTranslations/zh-Hant.json +0 -57
  397. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  398. package/lib/__tests__/translations.test.js +0 -112
  399. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  400. package/lib/theme/AnnouncementBar/index.js +0 -72
  401. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  402. package/lib/theme/BlogListPage/index.js +0 -71
  403. package/lib/theme/BlogListPaginator/index.js +0 -63
  404. package/lib/theme/BlogPostItem/index.js +0 -161
  405. package/lib/theme/BlogPostPage/index.js +0 -69
  406. package/lib/theme/BlogPostPaginator/index.js +0 -64
  407. package/lib/theme/BlogSidebar/index.js +0 -51
  408. package/lib/theme/BlogTagsListPage/index.js +0 -76
  409. package/lib/theme/BlogTagsPostsPage/index.js +0 -100
  410. package/lib/theme/CodeBlock/index.js +0 -253
  411. package/lib/theme/DocItem/index.js +0 -129
  412. package/lib/theme/DocPage/index.js +0 -173
  413. package/lib/theme/DocPage/styles.module.css +0 -86
  414. package/lib/theme/DocPaginator/index.js +0 -63
  415. package/lib/theme/DocSidebar/index.js +0 -306
  416. package/lib/theme/DocSidebar/styles.module.css +0 -124
  417. package/lib/theme/DocVersionBanner/index.js +0 -128
  418. package/lib/theme/DocVersionSuggestions/index.js +0 -111
  419. package/lib/theme/EditThisPage/index.js +0 -31
  420. package/lib/theme/Footer/index.js +0 -108
  421. package/lib/theme/Footer/styles.module.css +0 -15
  422. package/lib/theme/Heading/index.js +0 -76
  423. package/lib/theme/Heading/styles.module.css +0 -15
  424. package/lib/theme/IconArrow/index.js +0 -28
  425. package/lib/theme/IconEdit/index.js +0 -34
  426. package/lib/theme/IconExternalLink/index.js +0 -30
  427. package/lib/theme/IconLanguage/index.js +0 -29
  428. package/lib/theme/IconMenu/index.js +0 -30
  429. package/lib/theme/LastUpdated/index.js +0 -61
  430. package/lib/theme/Layout/index.js +0 -64
  431. package/lib/theme/Layout/styles.css +0 -27
  432. package/lib/theme/LayoutHead/index.js +0 -144
  433. package/lib/theme/LayoutProviders/index.js +0 -36
  434. package/lib/theme/Logo/index.js +0 -60
  435. package/lib/theme/MDXComponents/index.js +0 -65
  436. package/lib/theme/MDXPage/index.js +0 -66
  437. package/lib/theme/Navbar/index.js +0 -147
  438. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -209
  439. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -63
  440. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -76
  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 -57
  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 -49
  449. package/lib/theme/SkipToContent/index.js +0 -63
  450. package/lib/theme/SkipToContent/styles.module.css +0 -14
  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/TabItem/index.js +0 -32
  455. package/lib/theme/Tabs/index.js +0 -150
  456. package/lib/theme/Tabs/styles.module.css +0 -23
  457. package/lib/theme/ThemeContext.js +0 -21
  458. package/lib/theme/ThemeProvider/index.js +0 -38
  459. package/lib/theme/ThemedImage/index.js +0 -49
  460. package/lib/theme/ThemedImage/styles.module.css +0 -18
  461. package/lib/theme/Toggle/index.js +0 -94
  462. package/lib/theme/Toggle/styles.css +0 -103
  463. package/lib/theme/UserPreferencesContext.js +0 -18
  464. package/lib/theme/UserPreferencesProvider/index.js +0 -36
  465. package/lib/theme/hooks/useAnnouncementBar.js +0 -63
  466. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  467. package/lib/theme/hooks/useDocs.js +0 -18
  468. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  469. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  470. package/lib/theme/hooks/useLocationHash.js +0 -28
  471. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  472. package/lib/theme/hooks/usePrismTheme.js +0 -36
  473. package/lib/theme/hooks/useScrollPosition.js +0 -49
  474. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  475. package/lib/theme/hooks/useTabGroupChoice.js +0 -51
  476. package/lib/theme/hooks/useTheme.js +0 -99
  477. package/lib/theme/hooks/useThemeContext.js +0 -31
  478. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  479. package/lib/theme/hooks/useWindowSize.js +0 -55
  480. package/lib/theme/prism-include-languages.js +0 -39
  481. package/lib/types.d.ts +0 -598
  482. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  483. package/lib-next/__tests__/translations.test.js +0 -128
  484. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  485. package/lib-next/index.js +0 -221
  486. package/lib-next/theme/DocPage/styles.module.css +0 -86
  487. package/lib-next/theme/DocSidebar/styles.module.css +0 -124
  488. package/lib-next/theme/DocVersionSuggestions/index.js +0 -126
  489. package/lib-next/theme/Heading/styles.css +0 -23
  490. package/lib-next/theme/Navbar/styles.module.css +0 -20
  491. package/lib-next/theme/SearchMetadatas/index.js +0 -20
  492. package/lib-next/theme/Seo/index.js +0 -36
  493. package/lib-next/theme/ThemeProvider/index.js +0 -25
  494. package/lib-next/theme/Toggle/index.js +0 -80
  495. package/lib-next/theme/Toggle/styles.css +0 -103
  496. package/lib-next/theme/UserPreferencesContext.js +0 -9
  497. package/lib-next/theme/UserPreferencesProvider/index.js +0 -24
  498. package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
  499. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  500. package/lib-next/theme/hooks/useDocs.js +0 -10
  501. package/lib-next/theme/hooks/useHideableNavbar.js +0 -79
  502. package/lib-next/theme/hooks/useKeyboardNavigation.js +0 -35
  503. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  504. package/lib-next/theme/hooks/useLockBodyScroll.js +0 -18
  505. package/lib-next/theme/hooks/usePrismTheme.js +0 -20
  506. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  507. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  508. package/lib-next/theme/hooks/useTabGroupChoice.js +0 -39
  509. package/lib-next/theme/hooks/useTheme.js +0 -82
  510. package/lib-next/theme/hooks/useThemeContext.js +0 -22
  511. package/lib-next/theme/hooks/useUserPreferencesContext.js +0 -22
  512. package/lib-next/theme/hooks/useWindowSize.js +0 -45
  513. package/lib-next/translations.js +0 -145
  514. package/lib-next/types.d.ts +0 -598
  515. package/lib-next/validateThemeConfig.js +0 -317
  516. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  517. package/src/__tests__/translations.test.ts +0 -116
  518. package/src/__tests__/validateThemeConfig.test.js +0 -333
  519. package/src/theme/BlogSidebar/styles.module.css +0 -44
  520. package/src/theme/CodeBlock/styles.module.css +0 -68
  521. package/src/theme/DocPage/styles.module.css +0 -86
  522. package/src/theme/DocSidebar/styles.module.css +0 -124
  523. package/src/theme/SearchMetadatas/index.tsx +0 -28
  524. package/src/theme/Seo/index.tsx +0 -46
  525. package/src/theme/ThemeProvider/index.tsx +0 -24
  526. package/src/theme/Toggle/index.tsx +0 -100
  527. package/src/theme/Toggle/styles.css +0 -103
  528. package/src/theme/UserPreferencesContext.ts +0 -12
  529. package/src/theme/UserPreferencesProvider/index.tsx +0 -27
  530. package/src/theme/hooks/styles.css +0 -10
  531. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  532. package/src/theme/hooks/useDocs.ts +0 -11
  533. package/src/theme/hooks/useHideableNavbar.ts +0 -85
  534. package/src/theme/hooks/useKeyboardNavigation.ts +0 -39
  535. package/src/theme/hooks/useLocationHash.ts +0 -25
  536. package/src/theme/hooks/useLockBodyScroll.ts +0 -20
  537. package/src/theme/hooks/usePrismTheme.ts +0 -22
  538. package/src/theme/hooks/useScrollPosition.ts +0 -45
  539. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  540. package/src/theme/hooks/useTabGroupChoice.ts +0 -46
  541. package/src/theme/hooks/useTheme.ts +0 -92
  542. package/src/theme/hooks/useThemeContext.ts +0 -23
  543. package/src/theme/hooks/useUserPreferencesContext.ts +0 -25
  544. package/src/theme/hooks/useWindowSize.ts +0 -51
  545. package/src/types.d.ts +0 -598
  546. package/src/validateThemeConfig.js +0 -317
  547. package/tsconfig.json +0 -12
  548. package/update-code-translations.js +0 -240
  549. package/update-code-translations.test.js +0 -33
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import clsx from 'clsx';
9
+ import IconArrow from '@theme/IconArrow';
10
+ import {translate} from '@docusaurus/Translate';
11
+ import styles from './styles.module.css';
12
+ export default function CollapseButton({onClick}) {
13
+ return (
14
+ <button
15
+ type="button"
16
+ title={translate({
17
+ id: 'theme.docs.sidebar.collapseButtonTitle',
18
+ message: 'Collapse sidebar',
19
+ description: 'The title attribute for collapse button of doc sidebar',
20
+ })}
21
+ aria-label={translate({
22
+ id: 'theme.docs.sidebar.collapseButtonAriaLabel',
23
+ message: 'Collapse sidebar',
24
+ description: 'The title attribute for collapse button of doc sidebar',
25
+ })}
26
+ className={clsx(
27
+ 'button button--secondary button--outline',
28
+ styles.collapseSidebarButton,
29
+ )}
30
+ onClick={onClick}>
31
+ <IconArrow className={styles.collapseSidebarButtonIcon} />
32
+ </button>
33
+ );
34
+ }
@@ -0,0 +1,46 @@
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
+ :root {
9
+ --docusaurus-collapse-button-bg: transparent;
10
+ --docusaurus-collapse-button-bg-hover: rgb(0 0 0 / 10%);
11
+ }
12
+
13
+ [data-theme='dark']:root {
14
+ --docusaurus-collapse-button-bg: rgb(255 255 255 / 5%);
15
+ --docusaurus-collapse-button-bg-hover: rgb(255 255 255 / 10%);
16
+ }
17
+
18
+ @media (min-width: 997px) {
19
+ .collapseSidebarButton {
20
+ display: block !important;
21
+ background-color: var(--docusaurus-collapse-button-bg);
22
+ height: 40px;
23
+ position: sticky;
24
+ bottom: 0;
25
+ border-radius: 0;
26
+ border: 1px solid var(--ifm-toc-border-color);
27
+ }
28
+
29
+ .collapseSidebarButtonIcon {
30
+ transform: rotate(180deg);
31
+ margin-top: 4px;
32
+ }
33
+
34
+ [dir='rtl'] .collapseSidebarButtonIcon {
35
+ transform: rotate(0);
36
+ }
37
+
38
+ .collapseSidebarButton:hover,
39
+ .collapseSidebarButton:focus {
40
+ background-color: var(--docusaurus-collapse-button-bg-hover);
41
+ }
42
+ }
43
+
44
+ .collapseSidebarButton {
45
+ display: none;
46
+ }
@@ -0,0 +1,46 @@
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, {useState} from 'react';
8
+ import clsx from 'clsx';
9
+ import {
10
+ ThemeClassNames,
11
+ useAnnouncementBar,
12
+ useScrollPosition,
13
+ } from '@docusaurus/theme-common';
14
+ import DocSidebarItems from '@theme/DocSidebarItems';
15
+ import styles from './styles.module.css';
16
+
17
+ function useShowAnnouncementBar() {
18
+ const {isActive} = useAnnouncementBar();
19
+ const [showAnnouncementBar, setShowAnnouncementBar] = useState(isActive);
20
+ useScrollPosition(
21
+ ({scrollY}) => {
22
+ if (isActive) {
23
+ setShowAnnouncementBar(scrollY === 0);
24
+ }
25
+ },
26
+ [isActive],
27
+ );
28
+ return isActive && showAnnouncementBar;
29
+ }
30
+
31
+ export default function DocSidebarDesktopContent({path, sidebar, className}) {
32
+ const showAnnouncementBar = useShowAnnouncementBar();
33
+ return (
34
+ <nav
35
+ className={clsx(
36
+ 'menu thin-scrollbar',
37
+ styles.menu,
38
+ showAnnouncementBar && styles.menuWithAnnouncementBar,
39
+ className,
40
+ )}>
41
+ <ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
42
+ <DocSidebarItems items={sidebar} activePath={path} level={1} />
43
+ </ul>
44
+ </nav>
45
+ );
46
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ @media (min-width: 997px) {
9
+ .menu {
10
+ flex-grow: 1;
11
+ padding: 0.5rem;
12
+ }
13
+ @supports (scrollbar-gutter: stable) {
14
+ .menu {
15
+ padding: 0.5rem 0 0.5rem 0.5rem;
16
+ scrollbar-gutter: stable;
17
+ }
18
+ }
19
+
20
+ .menuWithAnnouncementBar {
21
+ margin-bottom: var(--docusaurus-announcement-bar-height);
22
+ }
23
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import clsx from 'clsx';
9
+ import {useThemeConfig} from '@docusaurus/theme-common';
10
+ import Logo from '@theme/Logo';
11
+ import CollapseButton from '@theme/DocSidebar/Desktop/CollapseButton';
12
+ import Content from '@theme/DocSidebar/Desktop/Content';
13
+ import styles from './styles.module.css';
14
+
15
+ function DocSidebarDesktop({path, sidebar, onCollapse, isHidden}) {
16
+ const {
17
+ navbar: {hideOnScroll},
18
+ docs: {
19
+ sidebar: {hideable},
20
+ },
21
+ } = useThemeConfig();
22
+ return (
23
+ <div
24
+ className={clsx(
25
+ styles.sidebar,
26
+ hideOnScroll && styles.sidebarWithHideableNavbar,
27
+ isHidden && styles.sidebarHidden,
28
+ )}>
29
+ {hideOnScroll && <Logo tabIndex={-1} className={styles.sidebarLogo} />}
30
+ <Content path={path} sidebar={sidebar} />
31
+ {hideable && <CollapseButton onClick={onCollapse} />}
32
+ </div>
33
+ );
34
+ }
35
+
36
+ export default React.memo(DocSidebarDesktop);
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ @media (min-width: 997px) {
9
+ .sidebar {
10
+ display: flex;
11
+ flex-direction: column;
12
+ max-height: 100vh;
13
+ height: 100%;
14
+ position: sticky;
15
+ top: 0;
16
+ padding-top: var(--ifm-navbar-height);
17
+ width: var(--doc-sidebar-width);
18
+ transition: opacity 50ms ease;
19
+ }
20
+
21
+ .sidebarWithHideableNavbar {
22
+ padding-top: 0;
23
+ }
24
+
25
+ .sidebarHidden {
26
+ opacity: 0;
27
+ height: 0;
28
+ overflow: hidden;
29
+ visibility: hidden;
30
+ }
31
+
32
+ .sidebarLogo {
33
+ display: flex !important;
34
+ align-items: center;
35
+ margin: 0 var(--ifm-navbar-padding-horizontal);
36
+ min-height: var(--ifm-navbar-height);
37
+ max-height: var(--ifm-navbar-height);
38
+ color: inherit !important;
39
+ text-decoration: none !important;
40
+ }
41
+
42
+ .sidebarLogo img {
43
+ margin-right: 0.5rem;
44
+ height: 2rem;
45
+ }
46
+ }
47
+
48
+ .sidebarLogo {
49
+ display: none;
50
+ }
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import clsx from 'clsx';
9
+ import {
10
+ NavbarSecondaryMenuFiller,
11
+ ThemeClassNames,
12
+ useNavbarMobileSidebar,
13
+ } from '@docusaurus/theme-common';
14
+ import DocSidebarItems from '@theme/DocSidebarItems';
15
+
16
+ // eslint-disable-next-line react/function-component-definition
17
+ const DocSidebarMobileSecondaryMenu = ({sidebar, path}) => {
18
+ const mobileSidebar = useNavbarMobileSidebar();
19
+ return (
20
+ <ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
21
+ <DocSidebarItems
22
+ items={sidebar}
23
+ activePath={path}
24
+ onItemClick={(item) => {
25
+ // Mobile sidebar should only be closed if the category has a link
26
+ if (item.type === 'category' && item.href) {
27
+ mobileSidebar.toggle();
28
+ }
29
+
30
+ if (item.type === 'link') {
31
+ mobileSidebar.toggle();
32
+ }
33
+ }}
34
+ level={1}
35
+ />
36
+ </ul>
37
+ );
38
+ };
39
+
40
+ function DocSidebarMobile(props) {
41
+ return (
42
+ <NavbarSecondaryMenuFiller
43
+ component={DocSidebarMobileSecondaryMenu}
44
+ props={props}
45
+ />
46
+ );
47
+ }
48
+
49
+ export default React.memo(DocSidebarMobile);
@@ -4,348 +4,21 @@
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, useCallback, useEffect, useRef, memo} from 'react';
8
- import clsx from 'clsx';
9
- import {
10
- useThemeConfig,
11
- isSamePath,
12
- usePrevious,
13
- useAnnouncementBar,
14
- } from '@docusaurus/theme-common';
15
- import useLockBodyScroll from '@theme/hooks/useLockBodyScroll';
16
- import useWindowSize, {windowSizes} from '@theme/hooks/useWindowSize';
17
- import useScrollPosition from '@theme/hooks/useScrollPosition';
18
- import Link from '@docusaurus/Link';
19
- import isInternalUrl from '@docusaurus/isInternalUrl';
20
- import Logo from '@theme/Logo';
21
- import IconArrow from '@theme/IconArrow';
22
- import IconMenu from '@theme/IconMenu';
23
- import IconExternalLink from '@theme/IconExternalLink';
24
- import {translate} from '@docusaurus/Translate';
25
- import styles from './styles.module.css';
26
- const MOBILE_TOGGLE_SIZE = 24;
7
+ import React from 'react';
8
+ import {useWindowSize} from '@docusaurus/theme-common';
9
+ import DocSidebarDesktop from '@theme/DocSidebar/Desktop';
10
+ import DocSidebarMobile from '@theme/DocSidebar/Mobile';
11
+ export default function DocSidebar(props) {
12
+ const windowSize = useWindowSize(); // Desktop sidebar visible on hydration: need SSR rendering
27
13
 
28
- const isActiveSidebarItem = (item, activePath) => {
29
- if (item.type === 'link') {
30
- return isSamePath(item.href, activePath);
31
- }
14
+ const shouldRenderSidebarDesktop =
15
+ windowSize === 'desktop' || windowSize === 'ssr'; // Mobile sidebar not visible on hydration: can avoid SSR rendering
32
16
 
33
- if (item.type === 'category') {
34
- return item.items.some((subItem) =>
35
- isActiveSidebarItem(subItem, activePath),
36
- );
37
- }
38
-
39
- return false;
40
- }; // Optimize sidebar at each "level"
41
- // TODO this item should probably not receive the "activePath" props
42
- // TODO this triggers whole sidebar re-renders on navigation
43
-
44
- const DocSidebarItems = memo(function DocSidebarItems({items, ...props}) {
45
- return items.map((item, index) => (
46
- <DocSidebarItem
47
- key={index} // sidebar is static, the index does not change
48
- item={item}
49
- {...props}
50
- />
51
- ));
52
- });
53
-
54
- function DocSidebarItem(props) {
55
- switch (props.item.type) {
56
- case 'category':
57
- return <DocSidebarItemCategory {...props} />;
58
-
59
- case 'link':
60
- default:
61
- return <DocSidebarItemLink {...props} />;
62
- }
63
- }
64
-
65
- function DocSidebarItemCategory({
66
- item,
67
- onItemClick,
68
- collapsible,
69
- activePath,
70
- ...props
71
- }) {
72
- const {items, label} = item;
73
- const isActive = isActiveSidebarItem(item, activePath);
74
- const wasActive = usePrevious(isActive); // active categories are always initialized as expanded
75
- // the default (item.collapsed) is only used for non-active categories
76
-
77
- const [collapsed, setCollapsed] = useState(() => {
78
- if (!collapsible) {
79
- return false;
80
- }
81
-
82
- return isActive ? false : item.collapsed;
83
- });
84
- const menuListRef = useRef(null);
85
- const [menuListHeight, setMenuListHeight] = useState(undefined);
86
-
87
- const handleMenuListHeight = (calc = true) => {
88
- setMenuListHeight(
89
- calc ? `${menuListRef.current?.scrollHeight}px` : undefined,
90
- );
91
- }; // If we navigate to a category, it should automatically expand itself
92
-
93
- useEffect(() => {
94
- const justBecameActive = isActive && !wasActive;
95
-
96
- if (justBecameActive && collapsed) {
97
- setCollapsed(false);
98
- }
99
- }, [isActive, wasActive, collapsed]);
100
- const handleItemClick = useCallback(
101
- (e) => {
102
- e.preventDefault();
103
-
104
- if (!menuListHeight) {
105
- handleMenuListHeight();
106
- }
107
-
108
- setTimeout(() => setCollapsed((state) => !state), 100);
109
- },
110
- [menuListHeight],
111
- );
112
-
113
- if (items.length === 0) {
114
- return null;
115
- }
116
-
117
- return (
118
- <li
119
- className={clsx('menu__list-item', {
120
- 'menu__list-item--collapsed': collapsed,
121
- })}>
122
- <a
123
- className={clsx('menu__link', {
124
- 'menu__link--sublist': collapsible,
125
- 'menu__link--active': collapsible && isActive,
126
- [styles.menuLinkText]: !collapsible,
127
- })}
128
- onClick={collapsible ? handleItemClick : undefined}
129
- href={collapsible ? '#!' : undefined}
130
- {...props}>
131
- {label}
132
- </a>
133
- <ul
134
- className="menu__list"
135
- ref={menuListRef}
136
- style={{
137
- height: menuListHeight,
138
- }}
139
- onTransitionEnd={() => {
140
- if (!collapsed) {
141
- handleMenuListHeight(false);
142
- }
143
- }}>
144
- <DocSidebarItems
145
- items={items}
146
- tabIndex={collapsed ? '-1' : '0'}
147
- onItemClick={onItemClick}
148
- collapsible={collapsible}
149
- activePath={activePath}
150
- />
151
- </ul>
152
- </li>
153
- );
154
- }
155
-
156
- function DocSidebarItemLink({
157
- item,
158
- onItemClick,
159
- activePath,
160
- collapsible: _collapsible,
161
- ...props
162
- }) {
163
- const {href, label} = item;
164
- const isActive = isActiveSidebarItem(item, activePath);
17
+ const shouldRenderSidebarMobile = windowSize === 'mobile';
165
18
  return (
166
- <li className="menu__list-item" key={label}>
167
- <Link
168
- className={clsx('menu__link', {
169
- 'menu__link--active': isActive,
170
- })}
171
- to={href}
172
- {...(isInternalUrl(href) && {
173
- isNavLink: true,
174
- exact: true,
175
- onClick: onItemClick,
176
- })}
177
- {...props}>
178
- {isInternalUrl(href) ? (
179
- label
180
- ) : (
181
- <span>
182
- {label}
183
- <IconExternalLink />
184
- </span>
185
- )}
186
- </Link>
187
- </li>
19
+ <>
20
+ {shouldRenderSidebarDesktop && <DocSidebarDesktop {...props} />}
21
+ {shouldRenderSidebarMobile && <DocSidebarMobile {...props} />}
22
+ </>
188
23
  );
189
24
  }
190
-
191
- function useShowAnnouncementBar() {
192
- const {isClosed} = useAnnouncementBar();
193
- const [showAnnouncementBar, setShowAnnouncementBar] = useState(!isClosed);
194
- useScrollPosition(({scrollY}) => {
195
- if (!isClosed) {
196
- setShowAnnouncementBar(scrollY === 0);
197
- }
198
- });
199
- return showAnnouncementBar;
200
- }
201
-
202
- function useResponsiveSidebar() {
203
- const [showResponsiveSidebar, setShowResponsiveSidebar] = useState(false);
204
- useLockBodyScroll(showResponsiveSidebar);
205
- const windowSize = useWindowSize();
206
- useEffect(() => {
207
- if (windowSize === windowSizes.desktop) {
208
- setShowResponsiveSidebar(false);
209
- }
210
- }, [windowSize]);
211
- const closeResponsiveSidebar = useCallback(
212
- (e) => {
213
- e.target.blur();
214
- setShowResponsiveSidebar(false);
215
- },
216
- [setShowResponsiveSidebar],
217
- );
218
- const toggleResponsiveSidebar = useCallback(() => {
219
- setShowResponsiveSidebar((value) => !value);
220
- }, [setShowResponsiveSidebar]);
221
- return {
222
- showResponsiveSidebar,
223
- closeResponsiveSidebar,
224
- toggleResponsiveSidebar,
225
- };
226
- }
227
-
228
- function HideableSidebarButton({onClick}) {
229
- return (
230
- <button
231
- type="button"
232
- title={translate({
233
- id: 'theme.docs.sidebar.collapseButtonTitle',
234
- message: 'Collapse sidebar',
235
- description: 'The title attribute for collapse button of doc sidebar',
236
- })}
237
- aria-label={translate({
238
- id: 'theme.docs.sidebar.collapseButtonAriaLabel',
239
- message: 'Collapse sidebar',
240
- description: 'The title attribute for collapse button of doc sidebar',
241
- })}
242
- className={clsx(
243
- 'button button--secondary button--outline',
244
- styles.collapseSidebarButton,
245
- )}
246
- onClick={onClick}>
247
- <IconArrow className={styles.collapseSidebarButtonIcon} />
248
- </button>
249
- );
250
- }
251
-
252
- function ResponsiveSidebarButton({responsiveSidebarOpened, onClick}) {
253
- return (
254
- <button
255
- aria-label={
256
- responsiveSidebarOpened
257
- ? translate({
258
- id: 'theme.docs.sidebar.responsiveCloseButtonLabel',
259
- message: 'Close menu',
260
- description:
261
- 'The ARIA label for close button of mobile doc sidebar',
262
- })
263
- : translate({
264
- id: 'theme.docs.sidebar.responsiveOpenButtonLabel',
265
- message: 'Open menu',
266
- description:
267
- 'The ARIA label for open button of mobile doc sidebar',
268
- })
269
- }
270
- aria-haspopup="true"
271
- className="button button--secondary button--sm menu__button"
272
- type="button"
273
- onClick={onClick}>
274
- {responsiveSidebarOpened ? (
275
- <span
276
- className={clsx(styles.sidebarMenuIcon, styles.sidebarMenuCloseIcon)}>
277
- &times;
278
- </span>
279
- ) : (
280
- <IconMenu
281
- className={styles.sidebarMenuIcon}
282
- height={MOBILE_TOGGLE_SIZE}
283
- width={MOBILE_TOGGLE_SIZE}
284
- />
285
- )}
286
- </button>
287
- );
288
- }
289
-
290
- function DocSidebar({
291
- path,
292
- sidebar,
293
- sidebarCollapsible = true,
294
- onCollapse,
295
- isHidden,
296
- }) {
297
- const showAnnouncementBar = useShowAnnouncementBar();
298
- const {
299
- navbar: {hideOnScroll},
300
- hideableSidebar,
301
- } = useThemeConfig();
302
- const {isClosed: isAnnouncementBarClosed} = useAnnouncementBar();
303
- const {
304
- showResponsiveSidebar,
305
- closeResponsiveSidebar,
306
- toggleResponsiveSidebar,
307
- } = useResponsiveSidebar();
308
- return (
309
- <div
310
- className={clsx(styles.sidebar, {
311
- [styles.sidebarWithHideableNavbar]: hideOnScroll,
312
- [styles.sidebarHidden]: isHidden,
313
- })}>
314
- {hideOnScroll && <Logo tabIndex={-1} className={styles.sidebarLogo} />}
315
- <nav
316
- className={clsx(
317
- 'menu',
318
- 'menu--responsive',
319
- 'thin-scrollbar',
320
- styles.menu,
321
- {
322
- 'menu--show': showResponsiveSidebar,
323
- [styles.menuWithAnnouncementBar]:
324
- !isAnnouncementBarClosed && showAnnouncementBar,
325
- },
326
- )}
327
- aria-label={translate({
328
- id: 'theme.docs.sidebar.navAriaLabel',
329
- message: 'Sidebar navigation',
330
- description: 'The ARIA label for documentation menu',
331
- })}>
332
- <ResponsiveSidebarButton
333
- responsiveSidebarOpened={showResponsiveSidebar}
334
- onClick={toggleResponsiveSidebar}
335
- />
336
-
337
- <ul className="menu__list">
338
- <DocSidebarItems
339
- items={sidebar}
340
- onItemClick={closeResponsiveSidebar}
341
- collapsible={sidebarCollapsible}
342
- activePath={path}
343
- />
344
- </ul>
345
- </nav>
346
- {hideableSidebar && <HideableSidebarButton onClick={onCollapse} />}
347
- </div>
348
- );
349
- }
350
-
351
- export default DocSidebar;