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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/README.md +2 -2
  2. package/lib/admonitions.css +35 -0
  3. package/lib/deps.d.ts +13 -0
  4. package/lib/getSwizzleConfig.js +236 -0
  5. package/lib/index.js +63 -52
  6. package/lib/prism-include-languages.js +9 -5
  7. package/lib/theme-classic.d.ts +997 -0
  8. package/lib/translations.js +52 -36
  9. package/lib/types.d.ts +0 -589
  10. package/lib/validateThemeConfig.js +242 -250
  11. package/lib-next/theme/Admonition/index.js +101 -0
  12. package/lib-next/theme/AnnouncementBar/index.js +10 -22
  13. package/lib-next/theme/AnnouncementBar/styles.module.css +26 -35
  14. package/lib-next/theme/BackToTopButton/index.js +129 -0
  15. package/lib-next/theme/BackToTopButton/styles.module.css +44 -0
  16. package/lib-next/theme/BlogArchivePage/index.js +84 -0
  17. package/lib-next/theme/BlogLayout/index.js +37 -0
  18. package/lib-next/theme/BlogListPage/index.js +45 -35
  19. package/lib-next/theme/BlogListPaginator/index.js +13 -16
  20. package/lib-next/theme/BlogPostAuthor/index.js +52 -0
  21. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  22. package/lib-next/theme/BlogPostAuthors/index.js +44 -0
  23. package/lib-next/theme/BlogPostAuthors/styles.module.css +21 -0
  24. package/lib-next/theme/BlogPostItem/index.js +112 -97
  25. package/lib-next/theme/BlogPostItem/styles.module.css +5 -1
  26. package/lib-next/theme/BlogPostPage/index.js +84 -41
  27. package/lib-next/theme/BlogPostPaginator/index.js +13 -20
  28. package/lib-next/theme/BlogSidebar/index.js +23 -16
  29. package/lib-next/theme/BlogSidebar/styles.module.css +8 -8
  30. package/lib-next/theme/BlogTagsListPage/index.js +24 -70
  31. package/lib-next/theme/BlogTagsPostsPage/index.js +57 -62
  32. package/lib-next/theme/CodeBlock/CopyButton/index.js +60 -0
  33. package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +66 -0
  34. package/lib-next/theme/CodeBlock/index.js +74 -195
  35. package/lib-next/theme/CodeBlock/styles.module.css +13 -28
  36. package/lib-next/theme/ColorModeToggle/index.js +62 -0
  37. package/lib-next/theme/ColorModeToggle/styles.module.css +35 -0
  38. package/lib-next/theme/Details/index.js +21 -0
  39. package/lib-next/theme/Details/styles.module.css +13 -0
  40. package/lib-next/theme/DocBreadcrumbs/index.js +93 -0
  41. package/{lib/theme/Heading → lib-next/theme/DocBreadcrumbs}/styles.module.css +3 -2
  42. package/lib-next/theme/DocCard/index.js +93 -0
  43. package/lib-next/theme/DocCard/styles.module.css +34 -0
  44. package/lib-next/theme/DocCardList/index.js +31 -0
  45. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +75 -0
  46. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  47. package/lib-next/theme/DocItem/index.js +99 -86
  48. package/lib-next/theme/DocItem/styles.module.css +7 -13
  49. package/lib-next/theme/DocItemFooter/index.js +79 -0
  50. package/{lib/theme/Layout/styles.css → lib-next/theme/DocItemFooter/styles.module.css} +8 -11
  51. package/lib-next/theme/DocPage/index.js +124 -99
  52. package/lib-next/theme/DocPage/styles.module.css +14 -30
  53. package/lib-next/theme/DocPaginator/index.js +16 -25
  54. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/index.js +34 -0
  55. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +44 -0
  56. package/lib-next/theme/DocSidebar/Desktop/Content/index.js +46 -0
  57. package/{lib/theme/Footer → lib-next/theme/DocSidebar/Desktop/Content}/styles.module.css +8 -6
  58. package/lib-next/theme/DocSidebar/Desktop/index.js +34 -0
  59. package/lib-next/theme/DocSidebar/Desktop/styles.module.css +50 -0
  60. package/lib-next/theme/DocSidebar/Mobile/index.js +49 -0
  61. package/lib-next/theme/DocSidebar/index.js +13 -333
  62. package/lib-next/theme/DocSidebarItem/index.js +265 -0
  63. package/lib-next/theme/DocSidebarItem/styles.module.css +17 -0
  64. package/lib-next/theme/DocSidebarItems/index.js +28 -0
  65. package/lib-next/theme/DocTagDocListPage/index.js +96 -0
  66. package/lib-next/theme/DocTagsListPage/index.js +40 -0
  67. package/lib-next/theme/DocVersionBadge/index.js +34 -0
  68. package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +54 -36
  69. package/lib-next/theme/EditThisPage/index.js +6 -1
  70. package/lib-next/theme/ErrorPageContent.js +35 -0
  71. package/lib-next/theme/Footer/Copyright/index.js +18 -0
  72. package/lib-next/theme/Footer/Layout/index.js +26 -0
  73. package/lib-next/theme/Footer/LinkItem/index.js +33 -0
  74. package/lib-next/theme/Footer/Links/MultiColumn/index.js +47 -0
  75. package/lib-next/theme/Footer/Links/Simple/index.js +41 -0
  76. package/lib-next/theme/Footer/Links/index.js +17 -0
  77. package/lib-next/theme/Footer/Logo/index.js +38 -0
  78. package/{src/theme/Footer → lib-next/theme/Footer/Logo}/styles.module.css +2 -1
  79. package/lib-next/theme/Footer/index.js +12 -100
  80. package/lib-next/theme/Heading/index.js +42 -33
  81. package/lib-next/theme/Heading/styles.module.css +27 -2
  82. package/lib-next/theme/IconArrow/index.js +3 -6
  83. package/lib-next/theme/IconClose/index.js +23 -0
  84. package/lib-next/theme/IconDarkMode/index.js +17 -0
  85. package/lib-next/theme/IconEdit/index.js +5 -10
  86. package/lib-next/theme/IconExternalLink/index.js +23 -0
  87. package/lib-next/theme/{LastUpdated → IconExternalLink}/styles.module.css +2 -2
  88. package/lib-next/theme/IconLanguage/index.js +5 -8
  89. package/lib-next/theme/IconLightMode/index.js +17 -0
  90. package/lib-next/theme/IconMenu/index.js +8 -9
  91. package/lib-next/theme/LastUpdated/index.js +35 -39
  92. package/lib-next/theme/Layout/index.js +19 -16
  93. package/lib-next/theme/Layout/styles.css +6 -0
  94. package/lib-next/theme/LayoutProviders/index.js +22 -10
  95. package/lib-next/theme/Logo/index.js +21 -16
  96. package/lib-next/theme/{ThemeContext.js → MDXComponents/A.js} +4 -2
  97. package/lib-next/theme/MDXComponents/Code.js +28 -0
  98. package/lib-next/theme/MDXComponents/Details.js +20 -0
  99. package/lib-next/theme/MDXComponents/Head.js +26 -0
  100. package/lib-next/theme/{hooks/styles.css → MDXComponents/Heading.js} +4 -3
  101. package/lib-next/theme/MDXComponents/Img.js +24 -0
  102. package/{lib/theme/LastUpdated/styles.module.css → lib-next/theme/MDXComponents/Img.module.css} +2 -2
  103. package/lib-next/theme/MDXComponents/Pre.js +18 -0
  104. package/lib-next/theme/MDXComponents/Ul.js +23 -0
  105. package/lib-next/theme/MDXComponents/Ul.module.css +11 -0
  106. package/lib-next/theme/MDXComponents/index.js +22 -42
  107. package/lib-next/theme/MDXContent/index.js +12 -0
  108. package/lib-next/theme/MDXPage/index.js +38 -39
  109. package/{lib/theme/IconEdit → lib-next/theme/MDXPage}/styles.module.css +2 -3
  110. package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
  111. package/lib-next/theme/Navbar/Content/index.js +70 -0
  112. package/lib-next/theme/Navbar/Content/styles.module.css +15 -0
  113. package/lib-next/theme/Navbar/Layout/index.js +54 -0
  114. package/{src/theme/Navbar → lib-next/theme/Navbar/Layout}/styles.module.css +1 -7
  115. package/lib-next/theme/Navbar/Logo/index.js +17 -0
  116. package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
  117. package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
  118. package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
  119. package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
  120. package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
  121. package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
  122. package/lib-next/theme/Navbar/index.js +7 -137
  123. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +33 -186
  124. package/lib-next/theme/NavbarItem/DocNavbarItem.js +31 -14
  125. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +73 -0
  126. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +38 -24
  127. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +4 -1
  128. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +164 -0
  129. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +12 -13
  130. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  131. package/lib-next/theme/NavbarItem/NavbarNavLink.js +66 -0
  132. package/lib-next/theme/NavbarItem/index.js +27 -15
  133. package/lib-next/theme/{UserPreferencesContext.js → NavbarItem/utils.js} +3 -3
  134. package/lib-next/theme/NotFound.js +40 -34
  135. package/lib-next/theme/PaginatorNavLink/index.js +17 -0
  136. package/lib-next/theme/SearchBar.js +1 -1
  137. package/lib-next/theme/SearchMetadata/index.js +34 -0
  138. package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +25 -45
  139. package/lib-next/theme/SkipToContent/index.js +9 -8
  140. package/lib-next/theme/SkipToContent/styles.module.css +8 -3
  141. package/lib-next/theme/TOC/index.js +12 -39
  142. package/lib-next/theme/TOC/styles.module.css +2 -2
  143. package/lib-next/theme/TOCCollapsible/index.js +52 -0
  144. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  145. package/lib-next/theme/TOCInline/index.js +10 -31
  146. package/lib-next/theme/TOCItems/index.js +85 -0
  147. package/lib-next/theme/TabItem/index.js +1 -4
  148. package/lib-next/theme/Tabs/__tests__/index.test.js +146 -0
  149. package/lib-next/theme/Tabs/index.js +108 -50
  150. package/lib-next/theme/Tabs/styles.module.css +0 -13
  151. package/lib-next/theme/Tag/index.js +24 -0
  152. package/lib-next/theme/Tag/styles.module.css +70 -0
  153. package/lib-next/theme/TagsListByLetter/index.js +40 -0
  154. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  155. package/lib-next/theme/TagsListInline/index.js +31 -0
  156. package/{lib/theme/BlogPostItem → lib-next/theme/TagsListInline}/styles.module.css +5 -4
  157. package/lib-next/theme/ThemedImage/index.js +10 -14
  158. package/lib-next/theme/ThemedImage/styles.module.css +9 -2
  159. package/lib-next/theme/prism-include-languages.js +17 -15
  160. package/package.json +32 -31
  161. package/src/admonitions.css +35 -0
  162. package/src/deps.d.ts +13 -0
  163. package/src/getSwizzleConfig.ts +244 -0
  164. package/src/index.ts +72 -72
  165. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  166. package/src/theme/Admonition/index.tsx +106 -0
  167. package/src/theme/AnnouncementBar/index.tsx +11 -20
  168. package/src/theme/AnnouncementBar/styles.module.css +26 -35
  169. package/src/theme/BackToTopButton/index.tsx +141 -0
  170. package/src/theme/BackToTopButton/styles.module.css +44 -0
  171. package/src/theme/BlogArchivePage/index.tsx +92 -0
  172. package/src/theme/BlogLayout/index.tsx +42 -0
  173. package/src/theme/BlogListPage/index.tsx +45 -35
  174. package/src/theme/BlogListPaginator/index.tsx +13 -15
  175. package/src/theme/BlogPostAuthor/index.tsx +54 -0
  176. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  177. package/src/theme/BlogPostAuthors/index.tsx +49 -0
  178. package/src/theme/BlogPostAuthors/styles.module.css +21 -0
  179. package/src/theme/BlogPostItem/index.tsx +103 -93
  180. package/src/theme/BlogPostItem/styles.module.css +5 -1
  181. package/src/theme/BlogPostPage/index.tsx +84 -42
  182. package/src/theme/BlogPostPaginator/index.tsx +13 -19
  183. package/src/theme/BlogSidebar/index.tsx +23 -16
  184. package/src/theme/BlogSidebar/styles.module.css +8 -8
  185. package/src/theme/BlogTagsListPage/index.tsx +24 -70
  186. package/src/theme/BlogTagsPostsPage/index.tsx +54 -65
  187. package/src/theme/CodeBlock/CopyButton/index.tsx +66 -0
  188. package/src/theme/CodeBlock/CopyButton/styles.module.css +66 -0
  189. package/src/theme/CodeBlock/index.tsx +77 -196
  190. package/src/theme/CodeBlock/styles.module.css +13 -28
  191. package/src/theme/ColorModeToggle/index.tsx +67 -0
  192. package/src/theme/ColorModeToggle/styles.module.css +35 -0
  193. package/src/theme/Details/index.tsx +25 -0
  194. package/src/theme/Details/styles.module.css +13 -0
  195. package/src/theme/DocBreadcrumbs/index.tsx +110 -0
  196. package/src/theme/DocBreadcrumbs/styles.module.css +11 -0
  197. package/src/theme/DocCard/index.tsx +116 -0
  198. package/src/theme/DocCard/styles.module.css +34 -0
  199. package/src/theme/DocCardList/index.tsx +38 -0
  200. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +86 -0
  201. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  202. package/src/theme/DocItem/index.tsx +93 -79
  203. package/src/theme/DocItem/styles.module.css +7 -13
  204. package/src/theme/DocItemFooter/index.tsx +91 -0
  205. package/src/theme/DocItemFooter/styles.module.css +18 -0
  206. package/src/theme/DocPage/index.tsx +124 -101
  207. package/src/theme/DocPage/styles.module.css +14 -30
  208. package/src/theme/DocPaginator/index.tsx +16 -24
  209. package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
  210. package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +44 -0
  211. package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
  212. package/src/theme/DocSidebar/Desktop/Content/styles.module.css +17 -0
  213. package/src/theme/DocSidebar/Desktop/index.tsx +38 -0
  214. package/src/theme/DocSidebar/Desktop/styles.module.css +50 -0
  215. package/src/theme/DocSidebar/Mobile/index.tsx +54 -0
  216. package/src/theme/DocSidebar/index.tsx +14 -343
  217. package/src/theme/DocSidebarItem/index.tsx +282 -0
  218. package/src/theme/DocSidebarItem/styles.module.css +17 -0
  219. package/src/theme/DocSidebarItems/index.tsx +32 -0
  220. package/src/theme/DocTagDocListPage/index.tsx +97 -0
  221. package/src/theme/DocTagsListPage/index.tsx +44 -0
  222. package/src/theme/DocVersionBadge/index.tsx +35 -0
  223. package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +76 -47
  224. package/src/theme/EditThisPage/index.tsx +6 -1
  225. package/src/theme/ErrorPageContent.tsx +41 -0
  226. package/src/theme/Footer/Copyright/index.tsx +20 -0
  227. package/src/theme/Footer/Layout/index.tsx +34 -0
  228. package/src/theme/Footer/LinkItem/index.tsx +36 -0
  229. package/src/theme/Footer/Links/MultiColumn/index.tsx +51 -0
  230. package/src/theme/Footer/Links/Simple/index.tsx +42 -0
  231. package/src/theme/Footer/Links/index.tsx +21 -0
  232. package/src/theme/Footer/Logo/index.tsx +41 -0
  233. package/{lib-next/theme/Footer → src/theme/Footer/Logo}/styles.module.css +2 -1
  234. package/src/theme/Footer/index.tsx +13 -113
  235. package/src/theme/Heading/index.tsx +43 -35
  236. package/src/theme/Heading/styles.module.css +27 -2
  237. package/src/theme/IconArrow/index.tsx +3 -5
  238. package/src/theme/IconClose/index.tsx +26 -0
  239. package/src/theme/IconDarkMode/index.tsx +20 -0
  240. package/src/theme/IconEdit/index.tsx +8 -9
  241. package/src/theme/IconExternalLink/index.tsx +30 -0
  242. package/src/theme/IconExternalLink/styles.module.css +10 -0
  243. package/src/theme/IconLanguage/index.tsx +6 -8
  244. package/src/theme/IconLightMode/index.tsx +20 -0
  245. package/src/theme/IconMenu/index.tsx +4 -9
  246. package/src/theme/LastUpdated/index.tsx +35 -39
  247. package/src/theme/Layout/index.tsx +19 -15
  248. package/src/theme/Layout/styles.css +6 -0
  249. package/src/theme/LayoutProviders/index.tsx +22 -10
  250. package/src/theme/Logo/index.tsx +21 -15
  251. package/src/theme/{ThemeContext.ts → MDXComponents/A.tsx} +5 -6
  252. package/src/theme/MDXComponents/Code.tsx +37 -0
  253. package/src/theme/MDXComponents/Details.tsx +26 -0
  254. package/src/theme/MDXComponents/Head.tsx +29 -0
  255. package/src/theme/MDXComponents/Heading.tsx +14 -0
  256. package/src/theme/{LastUpdated/styles.module.css → MDXComponents/Img.module.css} +2 -2
  257. package/src/theme/MDXComponents/Img.tsx +26 -0
  258. package/src/theme/MDXComponents/Pre.tsx +22 -0
  259. package/src/theme/MDXComponents/Ul.module.css +11 -0
  260. package/src/theme/MDXComponents/Ul.tsx +28 -0
  261. package/src/theme/MDXComponents/index.tsx +23 -42
  262. package/src/theme/MDXContent/index.tsx +15 -0
  263. package/src/theme/MDXPage/index.tsx +39 -39
  264. package/src/theme/MDXPage/styles.module.css +10 -0
  265. package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
  266. package/src/theme/Navbar/Content/index.tsx +81 -0
  267. package/src/theme/Navbar/Content/styles.module.css +15 -0
  268. package/src/theme/Navbar/Layout/index.tsx +57 -0
  269. package/{lib/theme/Navbar → src/theme/Navbar/Layout}/styles.module.css +1 -7
  270. package/src/theme/Navbar/Logo/index.tsx +19 -0
  271. package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
  272. package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
  273. package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
  274. package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
  275. package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
  276. package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
  277. package/src/theme/Navbar/index.tsx +7 -147
  278. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +37 -194
  279. package/src/theme/NavbarItem/DocNavbarItem.tsx +33 -15
  280. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +84 -0
  281. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +44 -28
  282. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  283. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +190 -0
  284. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +17 -11
  285. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  286. package/src/theme/NavbarItem/NavbarNavLink.tsx +64 -0
  287. package/src/theme/NavbarItem/index.tsx +41 -19
  288. package/src/theme/NavbarItem/utils.ts +10 -0
  289. package/src/theme/NotFound.tsx +40 -33
  290. package/src/theme/PaginatorNavLink/index.tsx +20 -0
  291. package/src/theme/SearchBar.tsx +2 -1
  292. package/src/theme/SearchMetadata/index.tsx +43 -0
  293. package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +25 -38
  294. package/src/theme/SkipToContent/index.tsx +9 -8
  295. package/src/theme/SkipToContent/styles.module.css +8 -3
  296. package/src/theme/TOC/index.tsx +13 -44
  297. package/src/theme/TOC/styles.module.css +2 -2
  298. package/src/theme/TOCCollapsible/index.tsx +56 -0
  299. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  300. package/src/theme/TOCInline/index.tsx +14 -35
  301. package/src/theme/TOCItems/index.tsx +100 -0
  302. package/src/theme/TabItem/index.tsx +5 -3
  303. package/src/theme/Tabs/index.tsx +117 -59
  304. package/src/theme/Tabs/styles.module.css +0 -13
  305. package/src/theme/Tag/index.tsx +29 -0
  306. package/src/theme/Tag/styles.module.css +70 -0
  307. package/src/theme/TagsListByLetter/index.tsx +43 -0
  308. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  309. package/src/theme/TagsListInline/index.tsx +35 -0
  310. package/src/theme/TagsListInline/styles.module.css +15 -0
  311. package/src/theme/ThemedImage/index.tsx +12 -13
  312. package/src/theme/ThemedImage/styles.module.css +9 -2
  313. package/src/theme/prism-include-languages.ts +20 -15
  314. package/src/theme-classic.d.ts +997 -0
  315. package/src/translations.ts +84 -58
  316. package/src/types.d.ts +0 -589
  317. package/src/validateThemeConfig.ts +381 -0
  318. package/babel.config.js +0 -35
  319. package/codeTranslations/README.md +0 -20
  320. package/codeTranslations/ar.json +0 -55
  321. package/codeTranslations/base.json +0 -108
  322. package/codeTranslations/da.json +0 -55
  323. package/codeTranslations/de.json +0 -55
  324. package/codeTranslations/es.json +0 -55
  325. package/codeTranslations/fa.json +0 -55
  326. package/codeTranslations/fil.json +0 -55
  327. package/codeTranslations/fr.json +0 -55
  328. package/codeTranslations/he.json +0 -55
  329. package/codeTranslations/hi.json +0 -55
  330. package/codeTranslations/ja.json +0 -55
  331. package/codeTranslations/ko.json +0 -55
  332. package/codeTranslations/pl.json +0 -55
  333. package/codeTranslations/pt-BR.json +0 -55
  334. package/codeTranslations/pt-PT.json +0 -55
  335. package/codeTranslations/ru.json +0 -55
  336. package/codeTranslations/tr.json +0 -55
  337. package/codeTranslations/vi.json +0 -55
  338. package/codeTranslations/zh-Hans.json +0 -55
  339. package/codeTranslations/zh-Hant.json +0 -55
  340. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  341. package/lib/__tests__/translations.test.js +0 -112
  342. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  343. package/lib/theme/AnnouncementBar/index.js +0 -74
  344. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  345. package/lib/theme/BlogListPage/index.js +0 -71
  346. package/lib/theme/BlogListPaginator/index.js +0 -63
  347. package/lib/theme/BlogPostItem/index.js +0 -152
  348. package/lib/theme/BlogPostPage/index.js +0 -75
  349. package/lib/theme/BlogPostPaginator/index.js +0 -64
  350. package/lib/theme/BlogSidebar/index.js +0 -43
  351. package/lib/theme/BlogSidebar/styles.module.css +0 -46
  352. package/lib/theme/BlogTagsListPage/index.js +0 -81
  353. package/lib/theme/BlogTagsPostsPage/index.js +0 -104
  354. package/lib/theme/CodeBlock/index.js +0 -253
  355. package/lib/theme/CodeBlock/styles.module.css +0 -71
  356. package/lib/theme/DocItem/index.js +0 -120
  357. package/lib/theme/DocItem/styles.module.css +0 -28
  358. package/lib/theme/DocPage/index.js +0 -141
  359. package/lib/theme/DocPage/styles.module.css +0 -98
  360. package/lib/theme/DocPaginator/index.js +0 -63
  361. package/lib/theme/DocSidebar/index.js +0 -307
  362. package/lib/theme/DocSidebar/styles.module.css +0 -138
  363. package/lib/theme/DocVersionSuggestions/index.js +0 -111
  364. package/lib/theme/EditThisPage/index.js +0 -31
  365. package/lib/theme/Footer/index.js +0 -108
  366. package/lib/theme/Heading/index.js +0 -60
  367. package/lib/theme/Heading/styles.css +0 -23
  368. package/lib/theme/IconArrow/index.js +0 -28
  369. package/lib/theme/IconEdit/index.js +0 -34
  370. package/lib/theme/IconLanguage/index.js +0 -29
  371. package/lib/theme/IconMenu/index.js +0 -31
  372. package/lib/theme/LastUpdated/index.js +0 -65
  373. package/lib/theme/Layout/index.js +0 -64
  374. package/lib/theme/LayoutHead/index.js +0 -144
  375. package/lib/theme/LayoutProviders/index.js +0 -34
  376. package/lib/theme/Logo/index.js +0 -59
  377. package/lib/theme/MDXComponents/index.js +0 -65
  378. package/lib/theme/MDXPage/index.js +0 -68
  379. package/lib/theme/Navbar/index.js +0 -147
  380. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -195
  381. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -55
  382. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -75
  383. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  384. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  385. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  386. package/lib/theme/NavbarItem/index.js +0 -54
  387. package/lib/theme/NotFound.js +0 -50
  388. package/lib/theme/SearchBar.js +0 -15
  389. package/lib/theme/SearchMetadatas/index.js +0 -33
  390. package/lib/theme/Seo/index.js +0 -49
  391. package/lib/theme/SkipToContent/index.js +0 -61
  392. package/lib/theme/SkipToContent/styles.module.css +0 -16
  393. package/lib/theme/TOC/index.js +0 -59
  394. package/lib/theme/TOC/styles.module.css +0 -23
  395. package/lib/theme/TOCInline/index.js +0 -53
  396. package/lib/theme/TOCInline/styles.module.css +0 -12
  397. package/lib/theme/TabItem/index.js +0 -32
  398. package/lib/theme/Tabs/index.js +0 -150
  399. package/lib/theme/Tabs/styles.module.css +0 -23
  400. package/lib/theme/ThemeContext.js +0 -21
  401. package/lib/theme/ThemeProvider/index.js +0 -38
  402. package/lib/theme/ThemedImage/index.js +0 -48
  403. package/lib/theme/ThemedImage/styles.module.css +0 -11
  404. package/lib/theme/Toggle/index.js +0 -106
  405. package/lib/theme/Toggle/styles.module.css +0 -114
  406. package/lib/theme/UserPreferencesContext.js +0 -18
  407. package/lib/theme/UserPreferencesProvider/index.js +0 -44
  408. package/lib/theme/hooks/styles.css +0 -10
  409. package/lib/theme/hooks/useAnnouncementBar.js +0 -63
  410. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  411. package/lib/theme/hooks/useDocs.js +0 -18
  412. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  413. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  414. package/lib/theme/hooks/useLocationHash.js +0 -28
  415. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  416. package/lib/theme/hooks/usePrismTheme.js +0 -36
  417. package/lib/theme/hooks/useScrollPosition.js +0 -49
  418. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  419. package/lib/theme/hooks/useTabGroupChoice.js +0 -53
  420. package/lib/theme/hooks/useTheme.js +0 -99
  421. package/lib/theme/hooks/useThemeContext.js +0 -31
  422. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  423. package/lib/theme/hooks/useWindowSize.js +0 -55
  424. package/lib/theme/prism-include-languages.js +0 -39
  425. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  426. package/lib-next/__tests__/translations.test.js +0 -128
  427. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  428. package/lib-next/index.js +0 -198
  429. package/lib-next/theme/DocSidebar/styles.module.css +0 -138
  430. package/lib-next/theme/Heading/styles.css +0 -23
  431. package/lib-next/theme/Navbar/styles.module.css +0 -20
  432. package/lib-next/theme/SearchMetadatas/index.js +0 -20
  433. package/lib-next/theme/Seo/index.js +0 -36
  434. package/lib-next/theme/ThemeProvider/index.js +0 -25
  435. package/lib-next/theme/Toggle/index.js +0 -95
  436. package/lib-next/theme/Toggle/styles.module.css +0 -114
  437. package/lib-next/theme/UserPreferencesProvider/index.js +0 -28
  438. package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
  439. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  440. package/lib-next/theme/hooks/useDocs.js +0 -10
  441. package/lib-next/theme/hooks/useHideableNavbar.js +0 -79
  442. package/lib-next/theme/hooks/useKeyboardNavigation.js +0 -35
  443. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  444. package/lib-next/theme/hooks/useLockBodyScroll.js +0 -18
  445. package/lib-next/theme/hooks/usePrismTheme.js +0 -20
  446. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  447. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  448. package/lib-next/theme/hooks/useTabGroupChoice.js +0 -41
  449. package/lib-next/theme/hooks/useTheme.js +0 -82
  450. package/lib-next/theme/hooks/useThemeContext.js +0 -22
  451. package/lib-next/theme/hooks/useUserPreferencesContext.js +0 -22
  452. package/lib-next/theme/hooks/useWindowSize.js +0 -45
  453. package/lib-next/translations.js +0 -145
  454. package/lib-next/types.d.ts +0 -600
  455. package/lib-next/validateThemeConfig.js +0 -317
  456. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  457. package/src/__tests__/translations.test.ts +0 -116
  458. package/src/__tests__/validateThemeConfig.test.js +0 -333
  459. package/src/prism-include-languages.js +0 -11
  460. package/src/theme/DocSidebar/styles.module.css +0 -138
  461. package/src/theme/Heading/styles.css +0 -23
  462. package/src/theme/SearchMetadatas/index.tsx +0 -28
  463. package/src/theme/Seo/index.tsx +0 -46
  464. package/src/theme/ThemeProvider/index.tsx +0 -24
  465. package/src/theme/Toggle/index.tsx +0 -113
  466. package/src/theme/Toggle/styles.module.css +0 -114
  467. package/src/theme/UserPreferencesContext.ts +0 -12
  468. package/src/theme/UserPreferencesProvider/index.tsx +0 -32
  469. package/src/theme/hooks/styles.css +0 -10
  470. package/src/theme/hooks/useAnnouncementBar.ts +0 -58
  471. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  472. package/src/theme/hooks/useDocs.ts +0 -11
  473. package/src/theme/hooks/useHideableNavbar.ts +0 -85
  474. package/src/theme/hooks/useKeyboardNavigation.ts +0 -39
  475. package/src/theme/hooks/useLocationHash.ts +0 -25
  476. package/src/theme/hooks/useLockBodyScroll.ts +0 -20
  477. package/src/theme/hooks/usePrismTheme.ts +0 -22
  478. package/src/theme/hooks/useScrollPosition.ts +0 -45
  479. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  480. package/src/theme/hooks/useTabGroupChoice.ts +0 -46
  481. package/src/theme/hooks/useTheme.ts +0 -92
  482. package/src/theme/hooks/useThemeContext.ts +0 -23
  483. package/src/theme/hooks/useUserPreferencesContext.ts +0 -25
  484. package/src/theme/hooks/useWindowSize.ts +0 -51
  485. package/src/validateThemeConfig.js +0 -317
  486. package/tsconfig.json +0 -12
  487. package/update-code-translations.js +0 -239
  488. package/update-code-translations.test.js +0 -33
@@ -0,0 +1,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,341 +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 {useThemeConfig, isSamePath} from '@docusaurus/theme-common';
10
- import useUserPreferencesContext from '@theme/hooks/useUserPreferencesContext';
11
- import useLockBodyScroll from '@theme/hooks/useLockBodyScroll';
12
- import useWindowSize, {windowSizes} from '@theme/hooks/useWindowSize';
13
- import useScrollPosition from '@theme/hooks/useScrollPosition';
14
- import Link from '@docusaurus/Link';
15
- import isInternalUrl from '@docusaurus/isInternalUrl';
16
- import Logo from '@theme/Logo';
17
- import IconArrow from '@theme/IconArrow';
18
- import IconMenu from '@theme/IconMenu';
19
- import {translate} from '@docusaurus/Translate';
20
- import styles from './styles.module.css';
21
- 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
22
13
 
23
- function usePrevious(value) {
24
- const ref = useRef(value);
25
- useEffect(() => {
26
- ref.current = value;
27
- }, [value]);
28
- return ref.current;
29
- }
30
-
31
- const isActiveSidebarItem = (item, activePath) => {
32
- if (item.type === 'link') {
33
- return isSamePath(item.href, activePath);
34
- }
35
-
36
- if (item.type === 'category') {
37
- return item.items.some((subItem) =>
38
- isActiveSidebarItem(subItem, activePath),
39
- );
40
- }
41
-
42
- return false;
43
- }; // Optimize sidebar at each "level"
44
- // TODO this item should probably not receive the "activePath" props
45
- // TODO this triggers whole sidebar re-renders on navigation
46
-
47
- const DocSidebarItems = memo(function DocSidebarItems({items, ...props}) {
48
- return items.map((item, index) => (
49
- <DocSidebarItem
50
- key={index} // sidebar is static, the index does not change
51
- item={item}
52
- {...props}
53
- />
54
- ));
55
- });
56
-
57
- function DocSidebarItem(props) {
58
- switch (props.item.type) {
59
- case 'category':
60
- return <DocSidebarItemCategory {...props} />;
61
-
62
- case 'link':
63
- default:
64
- return <DocSidebarItemLink {...props} />;
65
- }
66
- }
67
-
68
- function DocSidebarItemCategory({
69
- item,
70
- onItemClick,
71
- collapsible,
72
- activePath,
73
- ...props
74
- }) {
75
- const {items, label} = item;
76
- const isActive = isActiveSidebarItem(item, activePath);
77
- const wasActive = usePrevious(isActive); // active categories are always initialized as expanded
78
- // the default (item.collapsed) is only used for non-active categories
79
-
80
- const [collapsed, setCollapsed] = useState(() => {
81
- if (!collapsible) {
82
- return false;
83
- }
84
-
85
- return isActive ? false : item.collapsed;
86
- });
87
- const menuListRef = useRef(null);
88
- const [menuListHeight, setMenuListHeight] = useState(undefined);
89
-
90
- const handleMenuListHeight = (calc = true) => {
91
- setMenuListHeight(
92
- calc ? `${menuListRef.current?.scrollHeight}px` : undefined,
93
- );
94
- }; // If we navigate to a category, it should automatically expand itself
95
-
96
- useEffect(() => {
97
- const justBecameActive = isActive && !wasActive;
98
-
99
- if (justBecameActive && collapsed) {
100
- setCollapsed(false);
101
- }
102
- }, [isActive, wasActive, collapsed]);
103
- const handleItemClick = useCallback(
104
- (e) => {
105
- e.preventDefault();
106
-
107
- if (!menuListHeight) {
108
- handleMenuListHeight();
109
- }
110
-
111
- setTimeout(() => setCollapsed((state) => !state), 100);
112
- },
113
- [menuListHeight],
114
- );
115
-
116
- if (items.length === 0) {
117
- return null;
118
- }
14
+ const shouldRenderSidebarDesktop =
15
+ windowSize === 'desktop' || windowSize === 'ssr'; // Mobile sidebar not visible on hydration: can avoid SSR rendering
119
16
 
17
+ const shouldRenderSidebarMobile = windowSize === 'mobile';
120
18
  return (
121
- <li
122
- className={clsx('menu__list-item', {
123
- 'menu__list-item--collapsed': collapsed,
124
- })}>
125
- <a
126
- className={clsx('menu__link', {
127
- 'menu__link--sublist': collapsible,
128
- 'menu__link--active': collapsible && isActive,
129
- [styles.menuLinkText]: !collapsible,
130
- })}
131
- onClick={collapsible ? handleItemClick : undefined}
132
- href={collapsible ? '#!' : undefined}
133
- {...props}>
134
- {label}
135
- </a>
136
- <ul
137
- className="menu__list"
138
- ref={menuListRef}
139
- style={{
140
- height: menuListHeight,
141
- }}
142
- onTransitionEnd={() => {
143
- if (!collapsed) {
144
- handleMenuListHeight(false);
145
- }
146
- }}>
147
- <DocSidebarItems
148
- items={items}
149
- tabIndex={collapsed ? '-1' : '0'}
150
- onItemClick={onItemClick}
151
- collapsible={collapsible}
152
- activePath={activePath}
153
- />
154
- </ul>
155
- </li>
19
+ <>
20
+ {shouldRenderSidebarDesktop && <DocSidebarDesktop {...props} />}
21
+ {shouldRenderSidebarMobile && <DocSidebarMobile {...props} />}
22
+ </>
156
23
  );
157
24
  }
158
-
159
- function DocSidebarItemLink({
160
- item,
161
- onItemClick,
162
- activePath,
163
- collapsible: _collapsible,
164
- ...props
165
- }) {
166
- const {href, label} = item;
167
- const isActive = isActiveSidebarItem(item, activePath);
168
- return (
169
- <li className="menu__list-item" key={label}>
170
- <Link
171
- className={clsx('menu__link', {
172
- 'menu__link--active': isActive,
173
- [styles.menuLinkExternal]: !isInternalUrl(href),
174
- })}
175
- to={href}
176
- {...(isInternalUrl(href) && {
177
- isNavLink: true,
178
- exact: true,
179
- onClick: onItemClick,
180
- })}
181
- {...props}>
182
- {label}
183
- </Link>
184
- </li>
185
- );
186
- }
187
-
188
- function useShowAnnouncementBar() {
189
- const {isAnnouncementBarClosed} = useUserPreferencesContext();
190
- const [showAnnouncementBar, setShowAnnouncementBar] = useState(
191
- !isAnnouncementBarClosed,
192
- );
193
- useScrollPosition(({scrollY}) => {
194
- if (!isAnnouncementBarClosed) {
195
- setShowAnnouncementBar(scrollY === 0);
196
- }
197
- });
198
- return showAnnouncementBar;
199
- }
200
-
201
- function useResponsiveSidebar() {
202
- const [showResponsiveSidebar, setShowResponsiveSidebar] = useState(false);
203
- useLockBodyScroll(showResponsiveSidebar);
204
- const windowSize = useWindowSize();
205
- useEffect(() => {
206
- if (windowSize === windowSizes.desktop) {
207
- setShowResponsiveSidebar(false);
208
- }
209
- }, [windowSize]);
210
- const closeResponsiveSidebar = useCallback(
211
- (e) => {
212
- e.target.blur();
213
- setShowResponsiveSidebar(false);
214
- },
215
- [setShowResponsiveSidebar],
216
- );
217
- const toggleResponsiveSidebar = useCallback(() => {
218
- setShowResponsiveSidebar((value) => !value);
219
- }, [setShowResponsiveSidebar]);
220
- return {
221
- showResponsiveSidebar,
222
- closeResponsiveSidebar,
223
- toggleResponsiveSidebar,
224
- };
225
- }
226
-
227
- function HideableSidebarButton({onClick}) {
228
- return (
229
- <button
230
- type="button"
231
- title={translate({
232
- id: 'theme.docs.sidebar.collapseButtonTitle',
233
- message: 'Collapse sidebar',
234
- description: 'The title attribute for collapse button of doc sidebar',
235
- })}
236
- aria-label={translate({
237
- id: 'theme.docs.sidebar.collapseButtonAriaLabel',
238
- message: 'Collapse sidebar',
239
- description: 'The title attribute for collapse button of doc sidebar',
240
- })}
241
- className={clsx(
242
- 'button button--secondary button--outline',
243
- styles.collapseSidebarButton,
244
- )}
245
- onClick={onClick}>
246
- <IconArrow className={styles.collapseSidebarButtonIcon} />
247
- </button>
248
- );
249
- }
250
-
251
- function ResponsiveSidebarButton({responsiveSidebarOpened, onClick}) {
252
- return (
253
- <button
254
- aria-label={
255
- responsiveSidebarOpened
256
- ? translate({
257
- id: 'theme.docs.sidebar.responsiveCloseButtonLabel',
258
- message: 'Close menu',
259
- description:
260
- 'The ARIA label for close button of mobile doc sidebar',
261
- })
262
- : translate({
263
- id: 'theme.docs.sidebar.responsiveOpenButtonLabel',
264
- message: 'Open menu',
265
- description:
266
- 'The ARIA label for open button of mobile doc sidebar',
267
- })
268
- }
269
- aria-haspopup="true"
270
- className="button button--secondary button--sm menu__button"
271
- type="button"
272
- onClick={onClick}>
273
- {responsiveSidebarOpened ? (
274
- <span
275
- className={clsx(styles.sidebarMenuIcon, styles.sidebarMenuCloseIcon)}>
276
- &times;
277
- </span>
278
- ) : (
279
- <IconMenu
280
- className={styles.sidebarMenuIcon}
281
- height={MOBILE_TOGGLE_SIZE}
282
- width={MOBILE_TOGGLE_SIZE}
283
- />
284
- )}
285
- </button>
286
- );
287
- }
288
-
289
- function DocSidebar({
290
- path,
291
- sidebar,
292
- sidebarCollapsible = true,
293
- onCollapse,
294
- isHidden,
295
- }) {
296
- const showAnnouncementBar = useShowAnnouncementBar();
297
- const {
298
- navbar: {hideOnScroll},
299
- hideableSidebar,
300
- } = useThemeConfig();
301
- const {isAnnouncementBarClosed} = useUserPreferencesContext();
302
- const {
303
- showResponsiveSidebar,
304
- closeResponsiveSidebar,
305
- toggleResponsiveSidebar,
306
- } = useResponsiveSidebar();
307
- return (
308
- <div
309
- className={clsx(styles.sidebar, {
310
- [styles.sidebarWithHideableNavbar]: hideOnScroll,
311
- [styles.sidebarHidden]: isHidden,
312
- })}>
313
- {hideOnScroll && <Logo tabIndex={-1} className={styles.sidebarLogo} />}
314
- <div
315
- className={clsx(
316
- 'menu',
317
- 'menu--responsive',
318
- 'thin-scrollbar',
319
- styles.menu,
320
- {
321
- 'menu--show': showResponsiveSidebar,
322
- [styles.menuWithAnnouncementBar]:
323
- !isAnnouncementBarClosed && showAnnouncementBar,
324
- },
325
- )}>
326
- <ResponsiveSidebarButton
327
- responsiveSidebarOpened={showResponsiveSidebar}
328
- onClick={toggleResponsiveSidebar}
329
- />
330
- <ul className="menu__list">
331
- <DocSidebarItems
332
- items={sidebar}
333
- onItemClick={closeResponsiveSidebar}
334
- collapsible={sidebarCollapsible}
335
- activePath={path}
336
- />
337
- </ul>
338
- </div>
339
- {hideableSidebar && <HideableSidebarButton onClick={onCollapse} />}
340
- </div>
341
- );
342
- }
343
-
344
- export default DocSidebar;
@@ -0,0 +1,265 @@
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, {useEffect, useMemo} from 'react';
8
+ import clsx from 'clsx';
9
+ import {
10
+ isActiveSidebarItem,
11
+ usePrevious,
12
+ Collapsible,
13
+ useCollapsible,
14
+ findFirstCategoryLink,
15
+ ThemeClassNames,
16
+ useThemeConfig,
17
+ useDocSidebarItemsExpandedState,
18
+ isSamePath,
19
+ } from '@docusaurus/theme-common';
20
+ import Link from '@docusaurus/Link';
21
+ import isInternalUrl from '@docusaurus/isInternalUrl';
22
+ import {translate} from '@docusaurus/Translate';
23
+ import IconExternalLink from '@theme/IconExternalLink';
24
+ import DocSidebarItems from '@theme/DocSidebarItems';
25
+ import styles from './styles.module.css';
26
+ import useIsBrowser from '@docusaurus/useIsBrowser';
27
+ export default function DocSidebarItem({item, ...props}) {
28
+ switch (item.type) {
29
+ case 'category':
30
+ return <DocSidebarItemCategory item={item} {...props} />;
31
+
32
+ case 'html':
33
+ return <DocSidebarItemHtml item={item} {...props} />;
34
+
35
+ case 'link':
36
+ default:
37
+ return <DocSidebarItemLink item={item} {...props} />;
38
+ }
39
+ } // If we navigate to a category and it becomes active, it should automatically
40
+ // expand itself
41
+
42
+ function useAutoExpandActiveCategory({isActive, collapsed, setCollapsed}) {
43
+ const wasActive = usePrevious(isActive);
44
+ useEffect(() => {
45
+ const justBecameActive = isActive && !wasActive;
46
+
47
+ if (justBecameActive && collapsed) {
48
+ setCollapsed(false);
49
+ }
50
+ }, [isActive, wasActive, collapsed, setCollapsed]);
51
+ }
52
+ /**
53
+ * When a collapsible category has no link, we still link it to its first child
54
+ * during SSR as a temporary fallback. This allows to be able to navigate inside
55
+ * the category even when JS fails to load, is delayed or simply disabled
56
+ * React hydration becomes an optional progressive enhancement
57
+ * see https://github.com/facebookincubator/infima/issues/36#issuecomment-772543188
58
+ * see https://github.com/facebook/docusaurus/issues/3030
59
+ */
60
+
61
+ function useCategoryHrefWithSSRFallback(item) {
62
+ const isBrowser = useIsBrowser();
63
+ return useMemo(() => {
64
+ if (item.href) {
65
+ return item.href;
66
+ } // In these cases, it's not necessary to render a fallback
67
+ // We skip the "findFirstCategoryLink" computation
68
+
69
+ if (isBrowser || !item.collapsible) {
70
+ return undefined;
71
+ }
72
+
73
+ return findFirstCategoryLink(item);
74
+ }, [item, isBrowser]);
75
+ }
76
+
77
+ function DocSidebarItemCategory({
78
+ item,
79
+ onItemClick,
80
+ activePath,
81
+ level,
82
+ index,
83
+ ...props
84
+ }) {
85
+ const {items, label, collapsible, className, href} = item;
86
+ const hrefWithSSRFallback = useCategoryHrefWithSSRFallback(item);
87
+ const isActive = isActiveSidebarItem(item, activePath);
88
+ const isCurrentPage = isSamePath(href, activePath);
89
+ const {collapsed, setCollapsed} = useCollapsible({
90
+ // active categories are always initialized as expanded
91
+ // the default (item.collapsed) is only used for non-active categories
92
+ initialState: () => {
93
+ if (!collapsible) {
94
+ return false;
95
+ }
96
+
97
+ return isActive ? false : item.collapsed;
98
+ },
99
+ });
100
+ useAutoExpandActiveCategory({
101
+ isActive,
102
+ collapsed,
103
+ setCollapsed,
104
+ });
105
+ const {expandedItem, setExpandedItem} = useDocSidebarItemsExpandedState();
106
+
107
+ function updateCollapsed(toCollapsed = !collapsed) {
108
+ setExpandedItem(toCollapsed ? null : index);
109
+ setCollapsed(toCollapsed);
110
+ }
111
+
112
+ const {autoCollapseSidebarCategories} = useThemeConfig();
113
+ useEffect(() => {
114
+ if (
115
+ collapsible &&
116
+ expandedItem &&
117
+ expandedItem !== index &&
118
+ autoCollapseSidebarCategories
119
+ ) {
120
+ setCollapsed(true);
121
+ }
122
+ }, [
123
+ collapsible,
124
+ expandedItem,
125
+ index,
126
+ setCollapsed,
127
+ autoCollapseSidebarCategories,
128
+ ]);
129
+ return (
130
+ <li
131
+ className={clsx(
132
+ ThemeClassNames.docs.docSidebarItemCategory,
133
+ ThemeClassNames.docs.docSidebarItemCategoryLevel(level),
134
+ 'menu__list-item',
135
+ {
136
+ 'menu__list-item--collapsed': collapsed,
137
+ },
138
+ className,
139
+ )}>
140
+ <div
141
+ className={clsx('menu__list-item-collapsible', {
142
+ 'menu__list-item-collapsible--active': isCurrentPage,
143
+ })}>
144
+ <Link
145
+ className={clsx('menu__link', {
146
+ 'menu__link--sublist': collapsible,
147
+ 'menu__link--sublist-caret': !href,
148
+ 'menu__link--active': isActive,
149
+ })}
150
+ onClick={
151
+ collapsible
152
+ ? (e) => {
153
+ onItemClick?.(item);
154
+
155
+ if (href) {
156
+ updateCollapsed(false);
157
+ } else {
158
+ e.preventDefault();
159
+ updateCollapsed();
160
+ }
161
+ }
162
+ : () => {
163
+ onItemClick?.(item);
164
+ }
165
+ }
166
+ aria-current={isCurrentPage ? 'page' : undefined}
167
+ aria-expanded={collapsible ? !collapsed : undefined}
168
+ href={collapsible ? hrefWithSSRFallback ?? '#' : hrefWithSSRFallback}
169
+ {...props}>
170
+ {label}
171
+ </Link>
172
+ {href && collapsible && (
173
+ <button
174
+ aria-label={translate(
175
+ {
176
+ id: 'theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel',
177
+ message: "Toggle the collapsible sidebar category '{label}'",
178
+ description:
179
+ 'The ARIA label to toggle the collapsible sidebar category',
180
+ },
181
+ {
182
+ label,
183
+ },
184
+ )}
185
+ type="button"
186
+ className="clean-btn menu__caret"
187
+ onClick={(e) => {
188
+ e.preventDefault();
189
+ updateCollapsed();
190
+ }}
191
+ />
192
+ )}
193
+ </div>
194
+
195
+ <Collapsible lazy as="ul" className="menu__list" collapsed={collapsed}>
196
+ <DocSidebarItems
197
+ items={items}
198
+ tabIndex={collapsed ? -1 : 0}
199
+ onItemClick={onItemClick}
200
+ activePath={activePath}
201
+ level={level + 1}
202
+ />
203
+ </Collapsible>
204
+ </li>
205
+ );
206
+ }
207
+
208
+ function DocSidebarItemHtml({item, level, index}) {
209
+ const {value, defaultStyle, className} = item;
210
+ return (
211
+ <li
212
+ className={clsx(
213
+ ThemeClassNames.docs.docSidebarItemLink,
214
+ ThemeClassNames.docs.docSidebarItemLinkLevel(level),
215
+ defaultStyle && `${styles.menuHtmlItem} menu__list-item`,
216
+ className,
217
+ )}
218
+ key={index} // eslint-disable-next-line react/no-danger
219
+ dangerouslySetInnerHTML={{
220
+ __html: value,
221
+ }}
222
+ />
223
+ );
224
+ }
225
+
226
+ function DocSidebarItemLink({
227
+ item,
228
+ onItemClick,
229
+ activePath,
230
+ level,
231
+ index,
232
+ ...props
233
+ }) {
234
+ const {href, label, className} = item;
235
+ const isActive = isActiveSidebarItem(item, activePath);
236
+ const isInternalLink = isInternalUrl(href);
237
+ return (
238
+ <li
239
+ className={clsx(
240
+ ThemeClassNames.docs.docSidebarItemLink,
241
+ ThemeClassNames.docs.docSidebarItemLinkLevel(level),
242
+ 'menu__list-item',
243
+ className,
244
+ )}
245
+ key={label}>
246
+ <Link
247
+ className={clsx(
248
+ 'menu__link',
249
+ !isInternalLink && styles.menuExternalLink,
250
+ {
251
+ 'menu__link--active': isActive,
252
+ },
253
+ )}
254
+ aria-current={isActive ? 'page' : undefined}
255
+ to={href}
256
+ {...(isInternalLink && {
257
+ onClick: onItemClick ? () => onItemClick(item) : undefined,
258
+ })}
259
+ {...props}>
260
+ {label}
261
+ {!isInternalLink && <IconExternalLink />}
262
+ </Link>
263
+ </li>
264
+ );
265
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ @media (min-width: 997px) {
9
+ .menuHtmlItem {
10
+ padding: var(--ifm-menu-link-padding-vertical)
11
+ var(--ifm-menu-link-padding-horizontal);
12
+ }
13
+ }
14
+
15
+ .menuExternalLink {
16
+ align-items: center;
17
+ }