@docusaurus/theme-classic 2.0.0-beta.1 → 2.0.0-beta.10

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 (367) hide show
  1. package/README.md +1 -1
  2. package/lib/__tests__/validateThemeConfig.test.js +277 -3
  3. package/lib/admonitions.css +35 -0
  4. package/lib/deps.d.ts +13 -0
  5. package/lib/index.js +41 -16
  6. package/lib/prism-include-languages.js +9 -5
  7. package/lib/theme/AnnouncementBar/index.js +10 -16
  8. package/lib/theme/AnnouncementBar/styles.module.css +25 -30
  9. package/lib/theme/BackToTopButton/index.js +140 -0
  10. package/lib/theme/BackToTopButton/styles.module.css +42 -0
  11. package/lib/theme/BlogArchivePage/index.js +89 -0
  12. package/lib/theme/BlogLayout/index.js +51 -0
  13. package/lib/theme/BlogListPage/index.js +10 -21
  14. package/lib/theme/BlogPostAuthor/index.js +51 -0
  15. package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
  16. package/lib/theme/BlogPostAuthors/index.js +47 -0
  17. package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
  18. package/lib/theme/BlogPostItem/index.js +58 -67
  19. package/lib/theme/BlogPostPage/index.js +37 -24
  20. package/lib/theme/BlogSidebar/index.js +5 -7
  21. package/lib/theme/BlogSidebar/styles.module.css +2 -2
  22. package/lib/theme/BlogTagsListPage/index.js +8 -44
  23. package/lib/theme/BlogTagsPostsPage/index.js +24 -38
  24. package/lib/theme/CodeBlock/index.js +18 -138
  25. package/lib/theme/CodeBlock/styles.module.css +6 -9
  26. package/lib/theme/Details/index.js +30 -0
  27. package/lib/theme/Details/styles.module.css +13 -0
  28. package/lib/theme/DocCard/index.js +84 -0
  29. package/lib/theme/DocCard/styles.module.css +43 -0
  30. package/lib/theme/DocCardList/index.js +28 -0
  31. package/lib/theme/DocCategoryGeneratedIndexPage/index.js +57 -0
  32. package/lib/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  33. package/lib/theme/DocItem/index.js +29 -46
  34. package/lib/theme/DocItem/styles.module.css +5 -9
  35. package/lib/theme/DocItemFooter/index.js +79 -0
  36. package/lib/theme/DocItemFooter/styles.module.css +18 -0
  37. package/lib/theme/DocPage/index.js +35 -52
  38. package/lib/theme/DocPage/styles.module.css +8 -23
  39. package/lib/theme/DocPaginator/index.js +6 -7
  40. package/lib/theme/DocSidebar/index.js +53 -235
  41. package/lib/theme/DocSidebar/styles.module.css +0 -18
  42. package/lib/theme/DocSidebarItem/index.js +209 -0
  43. package/lib/theme/DocSidebarItem/styles.module.css +19 -0
  44. package/lib/theme/DocTagDocListPage/index.js +89 -0
  45. package/lib/theme/DocTagsListPage/index.js +44 -0
  46. package/lib/theme/DocVersionBadge/index.js +34 -0
  47. package/lib/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +39 -20
  48. package/lib/theme/EditThisPage/index.js +3 -1
  49. package/lib/theme/ErrorPageContent.js +43 -0
  50. package/lib/theme/Footer/index.js +16 -5
  51. package/lib/theme/Heading/index.js +17 -22
  52. package/lib/theme/Heading/styles.css +5 -6
  53. package/lib/theme/Heading/styles.module.css +9 -5
  54. package/lib/theme/IconArrow/index.js +2 -2
  55. package/lib/theme/IconClose/index.js +31 -0
  56. package/lib/theme/IconEdit/index.js +3 -3
  57. package/lib/theme/IconExternalLink/index.js +3 -3
  58. package/lib/theme/IconLanguage/index.js +3 -3
  59. package/lib/theme/IconMenu/index.js +3 -3
  60. package/lib/theme/LastUpdated/index.js +4 -2
  61. package/lib/theme/Layout/index.js +5 -1
  62. package/lib/theme/LayoutHead/index.js +22 -17
  63. package/lib/theme/LayoutProviders/index.js +11 -5
  64. package/lib/theme/Logo/index.js +16 -14
  65. package/lib/theme/MDXComponents/index.js +45 -4
  66. package/lib/theme/MDXComponents/styles.css +11 -0
  67. package/lib/theme/MDXPage/index.js +2 -1
  68. package/lib/theme/Navbar/index.js +162 -42
  69. package/lib/theme/Navbar/styles.module.css +10 -3
  70. package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -123
  71. package/lib/theme/NavbarItem/DocNavbarItem.js +7 -8
  72. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
  73. package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
  74. package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +6 -10
  75. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  76. package/lib/theme/NavbarItem/index.js +31 -11
  77. package/lib/theme/{SearchMetadatas → SearchMetadata}/index.js +2 -2
  78. package/lib/theme/Seo/index.js +10 -7
  79. package/lib/theme/SkipToContent/index.js +12 -4
  80. package/lib/theme/SkipToContent/styles.module.css +1 -0
  81. package/lib/theme/TOC/index.js +9 -29
  82. package/lib/theme/TOC/styles.module.css +1 -1
  83. package/lib/theme/TOCCollapsible/index.js +53 -0
  84. package/lib/theme/TOCCollapsible/styles.module.css +50 -0
  85. package/lib/theme/TOCInline/index.js +7 -27
  86. package/lib/theme/TOCItems/index.js +78 -0
  87. package/lib/theme/Tabs/__tests__/index.test.js +123 -0
  88. package/lib/theme/Tabs/index.js +73 -50
  89. package/lib/theme/Tabs/styles.module.css +0 -13
  90. package/lib/theme/Tag/index.js +40 -0
  91. package/lib/theme/Tag/styles.module.css +70 -0
  92. package/lib/theme/TagsListByLetter/index.js +48 -0
  93. package/lib/theme/TagsListByLetter/styles.module.css +11 -0
  94. package/lib/theme/TagsListInline/index.js +44 -0
  95. package/lib/theme/TagsListInline/styles.module.css +15 -0
  96. package/lib/theme/ThemeProvider/index.js +8 -3
  97. package/lib/theme/ThemedImage/index.js +6 -7
  98. package/lib/theme/Toggle/index.js +41 -44
  99. package/lib/theme/Toggle/styles.module.css +91 -3
  100. package/lib/theme/UserPreferencesProvider/index.js +9 -12
  101. package/lib/theme/hooks/useHideableNavbar.js +14 -32
  102. package/lib/theme/hooks/useTabGroupChoice.js +2 -4
  103. package/lib/theme/hooks/useTheme.js +3 -5
  104. package/lib/theme/hooks/useWindowSize.js +33 -20
  105. package/lib/theme/prism-include-languages.js +4 -3
  106. package/lib/theme-classic.d.ts +806 -0
  107. package/lib/translations.js +4 -4
  108. package/lib/types.d.ts +0 -599
  109. package/lib/validateThemeConfig.js +230 -246
  110. package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
  111. package/lib-next/admonitions.css +35 -0
  112. package/lib-next/deps.d.ts +13 -0
  113. package/lib-next/index.js +45 -13
  114. package/lib-next/prism-include-languages.js +0 -2
  115. package/lib-next/theme/AnnouncementBar/index.js +9 -18
  116. package/lib-next/theme/AnnouncementBar/styles.module.css +25 -30
  117. package/lib-next/theme/BackToTopButton/index.js +131 -0
  118. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  119. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  120. package/lib-next/theme/BlogLayout/index.js +40 -0
  121. package/lib-next/theme/BlogListPage/index.js +17 -25
  122. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  123. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  124. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  125. package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
  126. package/lib-next/theme/BlogPostItem/index.js +79 -86
  127. package/lib-next/theme/BlogPostPage/index.js +70 -35
  128. package/lib-next/theme/BlogSidebar/index.js +11 -13
  129. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  130. package/lib-next/theme/BlogTagsListPage/index.js +14 -55
  131. package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
  132. package/lib-next/theme/CodeBlock/index.js +17 -149
  133. package/lib-next/theme/CodeBlock/styles.module.css +6 -9
  134. package/lib-next/theme/Details/index.js +20 -0
  135. package/lib-next/theme/Details/styles.module.css +13 -0
  136. package/lib-next/theme/DocCard/index.js +80 -0
  137. package/lib-next/theme/DocCard/styles.module.css +43 -0
  138. package/lib-next/theme/DocCardList/index.js +19 -0
  139. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
  140. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  141. package/lib-next/theme/DocItem/index.js +40 -56
  142. package/lib-next/theme/DocItem/styles.module.css +5 -9
  143. package/lib-next/theme/DocItemFooter/index.js +79 -0
  144. package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
  145. package/lib-next/theme/DocPage/index.js +46 -47
  146. package/lib-next/theme/DocPage/styles.module.css +8 -23
  147. package/lib-next/theme/DocPaginator/index.js +7 -11
  148. package/lib-next/theme/DocSidebar/index.js +69 -295
  149. package/lib-next/theme/DocSidebar/styles.module.css +0 -18
  150. package/lib-next/theme/DocSidebarItem/index.js +217 -0
  151. package/lib-next/theme/DocSidebarItem/styles.module.css +19 -0
  152. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  153. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  154. package/lib-next/theme/DocVersionBadge/index.js +27 -0
  155. package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +51 -36
  156. package/lib-next/theme/EditThisPage/index.js +6 -1
  157. package/lib-next/theme/ErrorPageContent.js +35 -0
  158. package/lib-next/theme/Footer/index.js +27 -5
  159. package/lib-next/theme/Heading/index.js +25 -29
  160. package/lib-next/theme/Heading/styles.css +5 -6
  161. package/lib-next/theme/Heading/styles.module.css +9 -5
  162. package/lib-next/theme/IconArrow/index.js +2 -2
  163. package/lib-next/theme/IconClose/index.js +23 -0
  164. package/lib-next/theme/IconEdit/index.js +2 -2
  165. package/lib-next/theme/IconExternalLink/index.js +2 -2
  166. package/lib-next/theme/IconLanguage/index.js +2 -2
  167. package/lib-next/theme/IconMenu/index.js +2 -2
  168. package/lib-next/theme/LastUpdated/index.js +3 -2
  169. package/lib-next/theme/Layout/index.js +3 -1
  170. package/lib-next/theme/LayoutHead/index.js +18 -23
  171. package/lib-next/theme/LayoutProviders/index.js +17 -6
  172. package/lib-next/theme/Logo/index.js +25 -21
  173. package/lib-next/theme/MDXComponents/index.js +34 -7
  174. package/lib-next/theme/MDXComponents/styles.css +11 -0
  175. package/lib-next/theme/MDXPage/index.js +10 -2
  176. package/lib-next/theme/Navbar/index.js +193 -56
  177. package/lib-next/theme/Navbar/styles.module.css +10 -3
  178. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -147
  179. package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
  180. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  181. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +159 -0
  182. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
  183. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  184. package/lib-next/theme/NavbarItem/index.js +25 -12
  185. package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
  186. package/lib-next/theme/Seo/index.js +11 -7
  187. package/lib-next/theme/SkipToContent/index.js +7 -8
  188. package/lib-next/theme/SkipToContent/styles.module.css +1 -0
  189. package/lib-next/theme/TOC/index.js +12 -36
  190. package/lib-next/theme/TOC/styles.module.css +1 -1
  191. package/lib-next/theme/TOCCollapsible/index.js +54 -0
  192. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  193. package/lib-next/theme/TOCInline/index.js +10 -28
  194. package/lib-next/theme/TOCItems/index.js +85 -0
  195. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  196. package/lib-next/theme/Tabs/index.js +91 -43
  197. package/lib-next/theme/Tabs/styles.module.css +0 -13
  198. package/lib-next/theme/Tag/index.js +27 -0
  199. package/lib-next/theme/Tag/styles.module.css +70 -0
  200. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  201. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  202. package/lib-next/theme/TagsListInline/index.js +31 -0
  203. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  204. package/lib-next/theme/ThemeProvider/index.js +10 -7
  205. package/lib-next/theme/ThemedImage/index.js +7 -8
  206. package/lib-next/theme/Toggle/index.js +34 -37
  207. package/lib-next/theme/Toggle/styles.module.css +91 -3
  208. package/lib-next/theme/UserPreferencesProvider/index.js +9 -10
  209. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  210. package/lib-next/theme/hooks/useTabGroupChoice.js +2 -4
  211. package/lib-next/theme/hooks/useTheme.js +4 -5
  212. package/lib-next/theme/hooks/useWindowSize.js +34 -20
  213. package/lib-next/theme/prism-include-languages.js +2 -1
  214. package/lib-next/theme-classic.d.ts +806 -0
  215. package/lib-next/translations.js +6 -10
  216. package/lib-next/types.d.ts +0 -599
  217. package/lib-next/validateThemeConfig.js +141 -114
  218. package/package.json +28 -25
  219. package/src/__tests__/validateThemeConfig.test.js +277 -3
  220. package/src/admonitions.css +35 -0
  221. package/src/deps.d.ts +13 -0
  222. package/src/index.ts +55 -22
  223. package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
  224. package/src/theme/AnnouncementBar/index.tsx +10 -17
  225. package/src/theme/AnnouncementBar/styles.module.css +25 -30
  226. package/src/theme/BackToTopButton/index.tsx +142 -0
  227. package/src/theme/BackToTopButton/styles.module.css +42 -0
  228. package/src/theme/BlogArchivePage/index.tsx +91 -0
  229. package/src/theme/BlogLayout/index.tsx +44 -0
  230. package/src/theme/BlogListPage/index.tsx +18 -25
  231. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  232. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  233. package/src/theme/BlogPostAuthors/index.tsx +39 -0
  234. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  235. package/src/theme/BlogPostItem/index.tsx +70 -80
  236. package/src/theme/BlogPostPage/index.tsx +72 -35
  237. package/src/theme/BlogSidebar/index.tsx +11 -13
  238. package/src/theme/BlogSidebar/styles.module.css +2 -2
  239. package/src/theme/BlogTagsListPage/index.tsx +14 -57
  240. package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
  241. package/src/theme/CodeBlock/index.tsx +21 -151
  242. package/src/theme/CodeBlock/styles.module.css +6 -9
  243. package/src/theme/Details/index.tsx +24 -0
  244. package/src/theme/Details/styles.module.css +13 -0
  245. package/src/theme/DocCard/index.tsx +100 -0
  246. package/src/theme/DocCard/styles.module.css +43 -0
  247. package/src/theme/DocCardList/index.tsx +27 -0
  248. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
  249. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  250. package/src/theme/DocItem/index.tsx +43 -56
  251. package/src/theme/DocItem/styles.module.css +5 -9
  252. package/src/theme/DocItemFooter/index.tsx +91 -0
  253. package/src/theme/DocItemFooter/styles.module.css +18 -0
  254. package/src/theme/DocPage/index.tsx +44 -42
  255. package/src/theme/DocPage/styles.module.css +8 -23
  256. package/src/theme/DocPaginator/index.tsx +9 -13
  257. package/src/theme/DocSidebar/index.tsx +80 -307
  258. package/src/theme/DocSidebar/styles.module.css +0 -18
  259. package/src/theme/DocSidebarItem/index.tsx +242 -0
  260. package/src/theme/DocSidebarItem/styles.module.css +19 -0
  261. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  262. package/src/theme/DocTagsListPage/index.tsx +41 -0
  263. package/src/theme/DocVersionBadge/index.tsx +30 -0
  264. package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +74 -44
  265. package/src/theme/EditThisPage/index.tsx +6 -1
  266. package/src/theme/ErrorPageContent.tsx +41 -0
  267. package/src/theme/Footer/index.tsx +30 -6
  268. package/src/theme/Heading/index.tsx +25 -31
  269. package/src/theme/Heading/styles.css +5 -6
  270. package/src/theme/Heading/styles.module.css +9 -5
  271. package/src/theme/IconArrow/index.tsx +2 -2
  272. package/src/theme/IconClose/index.tsx +26 -0
  273. package/src/theme/IconEdit/index.tsx +2 -2
  274. package/src/theme/IconExternalLink/index.tsx +2 -5
  275. package/src/theme/IconLanguage/index.tsx +2 -6
  276. package/src/theme/IconMenu/index.tsx +3 -3
  277. package/src/theme/LastUpdated/index.tsx +3 -2
  278. package/src/theme/Layout/index.tsx +3 -1
  279. package/src/theme/LayoutHead/index.tsx +18 -17
  280. package/src/theme/LayoutProviders/index.tsx +17 -6
  281. package/src/theme/Logo/index.tsx +21 -17
  282. package/src/theme/MDXComponents/index.tsx +39 -5
  283. package/src/theme/MDXComponents/styles.css +11 -0
  284. package/src/theme/MDXPage/index.tsx +10 -2
  285. package/src/theme/Navbar/index.tsx +203 -61
  286. package/src/theme/Navbar/styles.module.css +10 -3
  287. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -154
  288. package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
  289. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  290. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  291. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
  292. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
  293. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  294. package/src/theme/NavbarItem/index.tsx +41 -16
  295. package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
  296. package/src/theme/Seo/index.tsx +7 -4
  297. package/src/theme/SkipToContent/index.tsx +7 -8
  298. package/src/theme/SkipToContent/styles.module.css +1 -0
  299. package/src/theme/TOC/index.tsx +12 -41
  300. package/src/theme/TOC/styles.module.css +1 -1
  301. package/src/theme/TOCCollapsible/index.tsx +58 -0
  302. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  303. package/src/theme/TOCInline/index.tsx +13 -32
  304. package/src/theme/TOCItems/index.tsx +96 -0
  305. package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
  306. package/src/theme/Tabs/index.tsx +93 -49
  307. package/src/theme/Tabs/styles.module.css +0 -13
  308. package/src/theme/Tag/index.tsx +31 -0
  309. package/src/theme/Tag/styles.module.css +70 -0
  310. package/src/theme/TagsListByLetter/index.tsx +45 -0
  311. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  312. package/src/theme/TagsListInline/index.tsx +35 -0
  313. package/src/theme/TagsListInline/styles.module.css +15 -0
  314. package/src/theme/ThemeProvider/index.tsx +6 -2
  315. package/src/theme/ThemedImage/index.tsx +8 -8
  316. package/src/theme/Toggle/index.tsx +36 -43
  317. package/src/theme/Toggle/styles.module.css +91 -3
  318. package/src/theme/UserPreferencesProvider/index.tsx +9 -11
  319. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  320. package/src/theme/hooks/useTabGroupChoice.ts +4 -4
  321. package/src/theme/hooks/useTheme.ts +4 -5
  322. package/src/theme/hooks/useWindowSize.ts +38 -20
  323. package/src/theme/prism-include-languages.ts +3 -2
  324. package/src/theme-classic.d.ts +806 -0
  325. package/src/translations.ts +8 -10
  326. package/src/types.d.ts +0 -599
  327. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +151 -94
  328. package/tsconfig.json +1 -2
  329. package/codeTranslations/README.md +0 -20
  330. package/codeTranslations/ar.json +0 -57
  331. package/codeTranslations/base.json +0 -112
  332. package/codeTranslations/bn.json +0 -56
  333. package/codeTranslations/da.json +0 -57
  334. package/codeTranslations/de.json +0 -57
  335. package/codeTranslations/es.json +0 -57
  336. package/codeTranslations/fa.json +0 -57
  337. package/codeTranslations/fil.json +0 -57
  338. package/codeTranslations/fr.json +0 -57
  339. package/codeTranslations/he.json +0 -57
  340. package/codeTranslations/hi.json +0 -57
  341. package/codeTranslations/ja.json +0 -57
  342. package/codeTranslations/ko.json +0 -57
  343. package/codeTranslations/pl.json +0 -57
  344. package/codeTranslations/pt-BR.json +0 -57
  345. package/codeTranslations/pt-PT.json +0 -57
  346. package/codeTranslations/ru.json +0 -57
  347. package/codeTranslations/tr.json +0 -57
  348. package/codeTranslations/vi.json +0 -57
  349. package/codeTranslations/zh-Hans.json +0 -57
  350. package/codeTranslations/zh-Hant.json +0 -57
  351. package/lib/theme/Toggle/styles.css +0 -103
  352. package/lib/theme/hooks/useAnnouncementBar.js +0 -63
  353. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  354. package/lib/theme/hooks/useScrollPosition.js +0 -49
  355. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  356. package/lib-next/theme/Toggle/styles.css +0 -103
  357. package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
  358. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  359. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  360. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  361. package/src/theme/Toggle/styles.css +0 -103
  362. package/src/theme/hooks/useAnnouncementBar.ts +0 -58
  363. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  364. package/src/theme/hooks/useScrollPosition.ts +0 -45
  365. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  366. package/update-code-translations.js +0 -239
  367. package/update-code-translations.test.js +0 -33
@@ -7,6 +7,7 @@
7
7
 
8
8
  :root {
9
9
  --doc-sidebar-width: 300px;
10
+ --doc-sidebar-hidden-width: 30px;
10
11
  }
11
12
 
12
13
  :global(.docs-wrapper) {
@@ -19,6 +20,10 @@
19
20
  width: 100%;
20
21
  }
21
22
 
23
+ .docSidebarContainer {
24
+ display: none;
25
+ }
26
+
22
27
  @media (min-width: 997px) {
23
28
  .docMainContainer {
24
29
  flex-grow: 1;
@@ -26,10 +31,11 @@
26
31
  }
27
32
 
28
33
  .docMainContainerEnhanced {
29
- max-width: none;
34
+ max-width: calc(100% - var(--doc-sidebar-hidden-width));
30
35
  }
31
36
 
32
37
  .docSidebarContainer {
38
+ display: block;
33
39
  width: var(--doc-sidebar-width);
34
40
  margin-top: calc(-1 * var(--ifm-navbar-height));
35
41
  border-right: 1px solid var(--ifm-toc-border-color);
@@ -39,7 +45,7 @@
39
45
  }
40
46
 
41
47
  .docSidebarContainerHidden {
42
- width: 30px;
48
+ width: var(--doc-sidebar-hidden-width);
43
49
  cursor: pointer;
44
50
  }
45
51
 
@@ -77,24 +83,3 @@
77
83
  ) !important;
78
84
  }
79
85
  }
80
-
81
- @media (max-width: 996px) {
82
- .docSidebarContainer {
83
- margin-top: 0;
84
- }
85
- }
86
-
87
- @media (min-width: 997px) and (max-width: 1320px) {
88
- .docItemWrapper {
89
- max-width: calc(
90
- var(--ifm-container-width) - var(--doc-sidebar-width) -
91
- var(--ifm-spacing-horizontal) * 2
92
- );
93
- }
94
-
95
- .docItemWrapperEnhanced {
96
- max-width: calc(
97
- var(--ifm-container-width) - var(--ifm-spacing-horizontal) * 2
98
- );
99
- }
100
- }
@@ -25,7 +25,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
25
25
  */
26
26
  function DocPaginator(props) {
27
27
  const {
28
- metadata
28
+ previous,
29
+ next
29
30
  } = props;
30
31
  return <nav className="pagination-nav docusaurus-mt-lg" aria-label={(0, _Translate.translate)({
31
32
  id: 'theme.docs.paginator.navAriaLabel',
@@ -33,27 +34,25 @@ function DocPaginator(props) {
33
34
  description: 'The ARIA label for the docs pagination'
34
35
  })}>
35
36
  <div className="pagination-nav__item">
36
- {metadata.previous && <_Link.default className="pagination-nav__link" to={metadata.previous.permalink}>
37
+ {previous && <_Link.default className="pagination-nav__link" to={previous.permalink}>
37
38
  <div className="pagination-nav__sublabel">
38
39
  <_Translate.default id="theme.docs.paginator.previous" description="The label used to navigate to the previous doc">
39
40
  Previous
40
41
  </_Translate.default>
41
42
  </div>
42
43
  <div className="pagination-nav__label">
43
- &laquo; {metadata.previous.title}
44
+ &laquo; {previous.title}
44
45
  </div>
45
46
  </_Link.default>}
46
47
  </div>
47
48
  <div className="pagination-nav__item pagination-nav__item--next">
48
- {metadata.next && <_Link.default className="pagination-nav__link" to={metadata.next.permalink}>
49
+ {next && <_Link.default className="pagination-nav__link" to={next.permalink}>
49
50
  <div className="pagination-nav__sublabel">
50
51
  <_Translate.default id="theme.docs.paginator.next" description="The label used to navigate to the next doc">
51
52
  Next
52
53
  </_Translate.default>
53
54
  </div>
54
- <div className="pagination-nav__label">
55
- {metadata.next.title} &raquo;
56
- </div>
55
+ <div className="pagination-nav__label">{next.title} &raquo;</div>
57
56
  </_Link.default>}
58
57
  </div>
59
58
  </nav>;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.default = DocSidebar;
7
7
 
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
 
@@ -11,28 +11,16 @@ var _clsx = _interopRequireDefault(require("clsx"));
11
11
 
12
12
  var _themeCommon = require("@docusaurus/theme-common");
13
13
 
14
- var _useUserPreferencesContext = _interopRequireDefault(require("@theme/hooks/useUserPreferencesContext"));
15
-
16
- var _useLockBodyScroll = _interopRequireDefault(require("@theme/hooks/useLockBodyScroll"));
17
-
18
- var _useWindowSize = _interopRequireWildcard(require("@theme/hooks/useWindowSize"));
19
-
20
- var _useScrollPosition = _interopRequireDefault(require("@theme/hooks/useScrollPosition"));
21
-
22
- var _Link = _interopRequireDefault(require("@docusaurus/Link"));
23
-
24
- var _isInternalUrl = _interopRequireDefault(require("@docusaurus/isInternalUrl"));
14
+ var _useWindowSize = _interopRequireDefault(require("@theme/hooks/useWindowSize"));
25
15
 
26
16
  var _Logo = _interopRequireDefault(require("@theme/Logo"));
27
17
 
28
18
  var _IconArrow = _interopRequireDefault(require("@theme/IconArrow"));
29
19
 
30
- var _IconMenu = _interopRequireDefault(require("@theme/IconMenu"));
31
-
32
- var _IconExternalLink = _interopRequireDefault(require("@theme/IconExternalLink"));
33
-
34
20
  var _Translate = require("@docusaurus/Translate");
35
21
 
22
+ var _DocSidebarItem = require("@theme/DocSidebarItem");
23
+
36
24
  var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
37
25
 
38
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -47,189 +35,19 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
47
35
  * This source code is licensed under the MIT license found in the
48
36
  * LICENSE file in the root directory of this source tree.
49
37
  */
50
- const MOBILE_TOGGLE_SIZE = 24;
51
-
52
- function usePrevious(value) {
53
- const ref = (0, _react.useRef)(value);
54
- (0, _react.useEffect)(() => {
55
- ref.current = value;
56
- }, [value]);
57
- return ref.current;
58
- }
59
-
60
- const isActiveSidebarItem = (item, activePath) => {
61
- if (item.type === 'link') {
62
- return (0, _themeCommon.isSamePath)(item.href, activePath);
63
- }
64
-
65
- if (item.type === 'category') {
66
- return item.items.some(subItem => isActiveSidebarItem(subItem, activePath));
67
- }
68
-
69
- return false;
70
- }; // Optimize sidebar at each "level"
71
- // TODO this item should probably not receive the "activePath" props
72
- // TODO this triggers whole sidebar re-renders on navigation
73
-
74
-
75
- const DocSidebarItems = (0, _react.memo)(function DocSidebarItems({
76
- items,
77
- ...props
78
- }) {
79
- return items.map((item, index) => <DocSidebarItem key={index} // sidebar is static, the index does not change
80
- item={item} {...props} />);
81
- });
82
-
83
- function DocSidebarItem(props) {
84
- switch (props.item.type) {
85
- case 'category':
86
- return <DocSidebarItemCategory {...props} />;
87
-
88
- case 'link':
89
- default:
90
- return <DocSidebarItemLink {...props} />;
91
- }
92
- }
93
-
94
- function DocSidebarItemCategory({
95
- item,
96
- onItemClick,
97
- collapsible,
98
- activePath,
99
- ...props
100
- }) {
101
- const {
102
- items,
103
- label
104
- } = item;
105
- const isActive = isActiveSidebarItem(item, activePath);
106
- const wasActive = usePrevious(isActive); // active categories are always initialized as expanded
107
- // the default (item.collapsed) is only used for non-active categories
108
-
109
- const [collapsed, setCollapsed] = (0, _react.useState)(() => {
110
- if (!collapsible) {
111
- return false;
112
- }
113
-
114
- return isActive ? false : item.collapsed;
115
- });
116
- const menuListRef = (0, _react.useRef)(null);
117
- const [menuListHeight, setMenuListHeight] = (0, _react.useState)(undefined);
118
-
119
- const handleMenuListHeight = (calc = true) => {
120
- var _menuListRef$current;
121
-
122
- setMenuListHeight(calc ? `${(_menuListRef$current = menuListRef.current) === null || _menuListRef$current === void 0 ? void 0 : _menuListRef$current.scrollHeight}px` : undefined);
123
- }; // If we navigate to a category, it should automatically expand itself
124
-
125
-
126
- (0, _react.useEffect)(() => {
127
- const justBecameActive = isActive && !wasActive;
128
-
129
- if (justBecameActive && collapsed) {
130
- setCollapsed(false);
131
- }
132
- }, [isActive, wasActive, collapsed]);
133
- const handleItemClick = (0, _react.useCallback)(e => {
134
- e.preventDefault();
135
-
136
- if (!menuListHeight) {
137
- handleMenuListHeight();
138
- }
139
-
140
- setTimeout(() => setCollapsed(state => !state), 100);
141
- }, [menuListHeight]);
142
-
143
- if (items.length === 0) {
144
- return null;
145
- }
146
-
147
- return <li className={(0, _clsx.default)('menu__list-item', {
148
- 'menu__list-item--collapsed': collapsed
149
- })}>
150
- <a className={(0, _clsx.default)('menu__link', {
151
- 'menu__link--sublist': collapsible,
152
- 'menu__link--active': collapsible && isActive,
153
- [_stylesModule.default.menuLinkText]: !collapsible
154
- })} onClick={collapsible ? handleItemClick : undefined} href={collapsible ? '#!' : undefined} {...props}>
155
- {label}
156
- </a>
157
- <ul className="menu__list" ref={menuListRef} style={{
158
- height: menuListHeight
159
- }} onTransitionEnd={() => {
160
- if (!collapsed) {
161
- handleMenuListHeight(false);
162
- }
163
- }}>
164
- <DocSidebarItems items={items} tabIndex={collapsed ? '-1' : '0'} onItemClick={onItemClick} collapsible={collapsible} activePath={activePath} />
165
- </ul>
166
- </li>;
167
- }
168
-
169
- function DocSidebarItemLink({
170
- item,
171
- onItemClick,
172
- activePath,
173
- collapsible: _collapsible,
174
- ...props
175
- }) {
176
- const {
177
- href,
178
- label
179
- } = item;
180
- const isActive = isActiveSidebarItem(item, activePath);
181
- return <li className="menu__list-item" key={label}>
182
- <_Link.default className={(0, _clsx.default)('menu__link', {
183
- 'menu__link--active': isActive
184
- })} to={href} {...(0, _isInternalUrl.default)(href) && {
185
- isNavLink: true,
186
- exact: true,
187
- onClick: onItemClick
188
- }} {...props}>
189
- {(0, _isInternalUrl.default)(href) ? label : <span>
190
- {label}
191
- <_IconExternalLink.default />
192
- </span>}
193
- </_Link.default>
194
- </li>;
195
- }
196
-
197
38
  function useShowAnnouncementBar() {
198
39
  const {
199
- isAnnouncementBarClosed
200
- } = (0, _useUserPreferencesContext.default)();
201
- const [showAnnouncementBar, setShowAnnouncementBar] = (0, _react.useState)(!isAnnouncementBarClosed);
202
- (0, _useScrollPosition.default)(({
40
+ isActive
41
+ } = (0, _themeCommon.useAnnouncementBar)();
42
+ const [showAnnouncementBar, setShowAnnouncementBar] = (0, _react.useState)(isActive);
43
+ (0, _themeCommon.useScrollPosition)(({
203
44
  scrollY
204
45
  }) => {
205
- if (!isAnnouncementBarClosed) {
46
+ if (isActive) {
206
47
  setShowAnnouncementBar(scrollY === 0);
207
48
  }
208
- });
209
- return showAnnouncementBar;
210
- }
211
-
212
- function useResponsiveSidebar() {
213
- const [showResponsiveSidebar, setShowResponsiveSidebar] = (0, _react.useState)(false);
214
- (0, _useLockBodyScroll.default)(showResponsiveSidebar);
215
- const windowSize = (0, _useWindowSize.default)();
216
- (0, _react.useEffect)(() => {
217
- if (windowSize === _useWindowSize.windowSizes.desktop) {
218
- setShowResponsiveSidebar(false);
219
- }
220
- }, [windowSize]);
221
- const closeResponsiveSidebar = (0, _react.useCallback)(e => {
222
- e.target.blur();
223
- setShowResponsiveSidebar(false);
224
- }, [setShowResponsiveSidebar]);
225
- const toggleResponsiveSidebar = (0, _react.useCallback)(() => {
226
- setShowResponsiveSidebar(value => !value);
227
- }, [setShowResponsiveSidebar]);
228
- return {
229
- showResponsiveSidebar,
230
- closeResponsiveSidebar,
231
- toggleResponsiveSidebar
232
- };
49
+ }, [isActive]);
50
+ return isActive && showAnnouncementBar;
233
51
  }
234
52
 
235
53
  function HideableSidebarButton({
@@ -248,29 +66,9 @@ function HideableSidebarButton({
248
66
  </button>;
249
67
  }
250
68
 
251
- function ResponsiveSidebarButton({
252
- responsiveSidebarOpened,
253
- onClick
254
- }) {
255
- return <button aria-label={responsiveSidebarOpened ? (0, _Translate.translate)({
256
- id: 'theme.docs.sidebar.responsiveCloseButtonLabel',
257
- message: 'Close menu',
258
- description: 'The ARIA label for close button of mobile doc sidebar'
259
- }) : (0, _Translate.translate)({
260
- id: 'theme.docs.sidebar.responsiveOpenButtonLabel',
261
- message: 'Open menu',
262
- description: 'The ARIA label for open button of mobile doc sidebar'
263
- })} aria-haspopup="true" className="button button--secondary button--sm menu__button" type="button" onClick={onClick}>
264
- {responsiveSidebarOpened ? <span className={(0, _clsx.default)(_stylesModule.default.sidebarMenuIcon, _stylesModule.default.sidebarMenuCloseIcon)}>
265
- &times;
266
- </span> : <_IconMenu.default className={_stylesModule.default.sidebarMenuIcon} height={MOBILE_TOGGLE_SIZE} width={MOBILE_TOGGLE_SIZE} />}
267
- </button>;
268
- }
269
-
270
- function DocSidebar({
69
+ function DocSidebarDesktop({
271
70
  path,
272
71
  sidebar,
273
- sidebarCollapsible = true,
274
72
  onCollapse,
275
73
  isHidden
276
74
  }) {
@@ -281,36 +79,56 @@ function DocSidebar({
281
79
  },
282
80
  hideableSidebar
283
81
  } = (0, _themeCommon.useThemeConfig)();
284
- const {
285
- isAnnouncementBarClosed
286
- } = (0, _useUserPreferencesContext.default)();
287
- const {
288
- showResponsiveSidebar,
289
- closeResponsiveSidebar,
290
- toggleResponsiveSidebar
291
- } = useResponsiveSidebar();
292
82
  return <div className={(0, _clsx.default)(_stylesModule.default.sidebar, {
293
83
  [_stylesModule.default.sidebarWithHideableNavbar]: hideOnScroll,
294
84
  [_stylesModule.default.sidebarHidden]: isHidden
295
85
  })}>
296
86
  {hideOnScroll && <_Logo.default tabIndex={-1} className={_stylesModule.default.sidebarLogo} />}
297
- <nav className={(0, _clsx.default)('menu', 'menu--responsive', 'thin-scrollbar', _stylesModule.default.menu, {
298
- 'menu--show': showResponsiveSidebar,
299
- [_stylesModule.default.menuWithAnnouncementBar]: !isAnnouncementBarClosed && showAnnouncementBar
300
- })} aria-label={(0, _Translate.translate)({
301
- id: 'theme.docs.sidebar.navAriaLabel',
302
- message: 'Sidebar navigation',
303
- description: 'The ARIA label for documentation menu'
87
+ <nav className={(0, _clsx.default)('menu thin-scrollbar', _stylesModule.default.menu, {
88
+ [_stylesModule.default.menuWithAnnouncementBar]: showAnnouncementBar
304
89
  })}>
305
- <ResponsiveSidebarButton responsiveSidebarOpened={showResponsiveSidebar} onClick={toggleResponsiveSidebar} />
306
-
307
- <ul className="menu__list">
308
- <DocSidebarItems items={sidebar} onItemClick={closeResponsiveSidebar} collapsible={sidebarCollapsible} activePath={path} />
90
+ <ul className={(0, _clsx.default)(_themeCommon.ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
91
+ <_DocSidebarItem.DocSidebarItems items={sidebar} activePath={path} level={1} />
309
92
  </ul>
310
93
  </nav>
311
94
  {hideableSidebar && <HideableSidebarButton onClick={onCollapse} />}
312
95
  </div>;
96
+ } // eslint-disable-next-line react/function-component-definition
97
+
98
+
99
+ const DocSidebarMobileSecondaryMenu = ({
100
+ toggleSidebar,
101
+ sidebar,
102
+ path
103
+ }) => <ul className={(0, _clsx.default)(_themeCommon.ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
104
+ <_DocSidebarItem.DocSidebarItems items={sidebar} activePath={path} onItemClick={item => {
105
+ // Mobile sidebar should only be closed if the category has a link
106
+ if (item.type === 'category' && item.href) {
107
+ toggleSidebar();
108
+ }
109
+
110
+ if (item.type === 'link') {
111
+ toggleSidebar();
112
+ }
113
+ }} level={1} />
114
+ </ul>;
115
+
116
+ function DocSidebarMobile(props) {
117
+ return <_themeCommon.MobileSecondaryMenuFiller component={DocSidebarMobileSecondaryMenu} props={props} />;
313
118
  }
314
119
 
315
- var _default = DocSidebar;
316
- exports.default = _default;
120
+ const DocSidebarDesktopMemo = _react.default.memo(DocSidebarDesktop);
121
+
122
+ const DocSidebarMobileMemo = _react.default.memo(DocSidebarMobile);
123
+
124
+ function DocSidebar(props) {
125
+ const windowSize = (0, _useWindowSize.default)(); // Desktop sidebar visible on hydration: need SSR rendering
126
+
127
+ const shouldRenderSidebarDesktop = windowSize === 'desktop' || windowSize === 'ssr'; // Mobile sidebar not visible on hydration: can avoid SSR rendering
128
+
129
+ const shouldRenderSidebarMobile = windowSize === 'mobile';
130
+ return <>
131
+ {shouldRenderSidebarDesktop && <DocSidebarDesktopMemo {...props} />}
132
+ {shouldRenderSidebarMobile && <DocSidebarMobileMemo {...props} />}
133
+ </>;
134
+ }
@@ -53,14 +53,6 @@
53
53
  padding: 0.5rem;
54
54
  }
55
55
 
56
- .menuLinkText {
57
- cursor: initial;
58
- }
59
-
60
- .menuLinkText:hover {
61
- background: none;
62
- }
63
-
64
56
  .menuWithAnnouncementBar {
65
57
  margin-bottom: var(--docusaurus-announcement-bar-height);
66
58
  }
@@ -112,13 +104,3 @@
112
104
  line-height: 0.9;
113
105
  width: 24px;
114
106
  }
115
-
116
- :global(.menu__list) :global(.menu__list) {
117
- overflow-y: hidden;
118
- will-change: height;
119
- transition: height var(--ifm-transition-fast) linear;
120
- }
121
-
122
- :global(.menu__list-item--collapsed) :global(.menu__list) {
123
- height: 0 !important;
124
- }
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DocSidebarItems = void 0;
7
+ exports.default = DocSidebarItem;
8
+
9
+ var _react = _interopRequireWildcard(require("react"));
10
+
11
+ var _clsx = _interopRequireDefault(require("clsx"));
12
+
13
+ var _themeCommon = require("@docusaurus/theme-common");
14
+
15
+ var _Link = _interopRequireDefault(require("@docusaurus/Link"));
16
+
17
+ var _isInternalUrl = _interopRequireDefault(require("@docusaurus/isInternalUrl"));
18
+
19
+ var _Translate = require("@docusaurus/Translate");
20
+
21
+ var _IconExternalLink = _interopRequireDefault(require("@theme/IconExternalLink"));
22
+
23
+ var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
24
+
25
+ var _useIsBrowser = _interopRequireDefault(require("@docusaurus/useIsBrowser"));
26
+
27
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
+
29
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
30
+
31
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
32
+
33
+ /**
34
+ * Copyright (c) Facebook, Inc. and its affiliates.
35
+ *
36
+ * This source code is licensed under the MIT license found in the
37
+ * LICENSE file in the root directory of this source tree.
38
+ */
39
+ // Optimize sidebar at each "level"
40
+ // TODO this item should probably not receive the "activePath" props
41
+ // TODO this triggers whole sidebar re-renders on navigation
42
+ const DocSidebarItems = (0, _react.memo)(({
43
+ items,
44
+ ...props
45
+ }) => <>
46
+ {items.map((item, index) => <DocSidebarItem key={index} // sidebar is static, the index does not change
47
+ item={item} {...props} />)}
48
+ </>);
49
+ exports.DocSidebarItems = DocSidebarItems;
50
+
51
+ function DocSidebarItem({
52
+ item,
53
+ ...props
54
+ }) {
55
+ switch (item.type) {
56
+ case 'category':
57
+ if (item.items.length === 0) {
58
+ return null;
59
+ }
60
+
61
+ return <DocSidebarItemCategory item={item} {...props} />;
62
+
63
+ case 'link':
64
+ default:
65
+ return <DocSidebarItemLink item={item} {...props} />;
66
+ }
67
+ } // If we navigate to a category and it becomes active, it should automatically expand itself
68
+
69
+
70
+ function useAutoExpandActiveCategory({
71
+ isActive,
72
+ collapsed,
73
+ setCollapsed
74
+ }) {
75
+ const wasActive = (0, _themeCommon.usePrevious)(isActive);
76
+ (0, _react.useEffect)(() => {
77
+ const justBecameActive = isActive && !wasActive;
78
+
79
+ if (justBecameActive && collapsed) {
80
+ setCollapsed(false);
81
+ }
82
+ }, [isActive, wasActive, collapsed, setCollapsed]);
83
+ } // When a collapsible category has no link, we still link it to its first child during SSR as a temporary fallback
84
+ // This allows to be able to navigate inside the category even when JS fails to load, is delayed or simply disabled
85
+ // React hydration becomes an optional progressive enhancement
86
+ // see https://github.com/facebookincubator/infima/issues/36#issuecomment-772543188
87
+ // see https://github.com/facebook/docusaurus/issues/3030
88
+
89
+
90
+ function useCategoryHrefWithSSRFallback(item) {
91
+ const isBrowser = (0, _useIsBrowser.default)();
92
+ return (0, _react.useMemo)(() => {
93
+ if (item.href) {
94
+ return item.href;
95
+ } // In these cases, it's not necessary to render a fallback
96
+ // We skip the "findFirstCategoryLink" computation
97
+
98
+
99
+ if (isBrowser || !item.collapsible) {
100
+ return undefined;
101
+ }
102
+
103
+ return (0, _themeCommon.findFirstCategoryLink)(item);
104
+ }, [item, isBrowser]);
105
+ }
106
+
107
+ function DocSidebarItemCategory({
108
+ item,
109
+ onItemClick,
110
+ activePath,
111
+ level,
112
+ ...props
113
+ }) {
114
+ const {
115
+ items,
116
+ label,
117
+ collapsible,
118
+ className,
119
+ href
120
+ } = item;
121
+ const hrefWithSSRFallback = useCategoryHrefWithSSRFallback(item);
122
+ const isActive = (0, _themeCommon.isActiveSidebarItem)(item, activePath);
123
+ const {
124
+ collapsed,
125
+ setCollapsed,
126
+ toggleCollapsed
127
+ } = (0, _themeCommon.useCollapsible)({
128
+ // active categories are always initialized as expanded
129
+ // the default (item.collapsed) is only used for non-active categories
130
+ initialState: () => {
131
+ if (!collapsible) {
132
+ return false;
133
+ }
134
+
135
+ return isActive ? false : item.collapsed;
136
+ }
137
+ });
138
+ useAutoExpandActiveCategory({
139
+ isActive,
140
+ collapsed,
141
+ setCollapsed
142
+ });
143
+ return <li className={(0, _clsx.default)(_themeCommon.ThemeClassNames.docs.docSidebarItemCategory, _themeCommon.ThemeClassNames.docs.docSidebarItemCategoryLevel(level), 'menu__list-item', {
144
+ 'menu__list-item--collapsed': collapsed
145
+ }, className)}>
146
+ <div className="menu__list-item-collapsible">
147
+ <_Link.default className={(0, _clsx.default)('menu__link', {
148
+ 'menu__link--sublist': collapsible && !href,
149
+ 'menu__link--active': isActive,
150
+ [_stylesModule.default.menuLinkText]: !collapsible,
151
+ [_stylesModule.default.hasHref]: !!hrefWithSSRFallback
152
+ })} onClick={collapsible ? e => {
153
+ onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item);
154
+
155
+ if (href) {
156
+ setCollapsed(false);
157
+ } else {
158
+ e.preventDefault();
159
+ toggleCollapsed();
160
+ }
161
+ } : () => {
162
+ onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item);
163
+ }} href={collapsible ? hrefWithSSRFallback !== null && hrefWithSSRFallback !== void 0 ? hrefWithSSRFallback : '#' : hrefWithSSRFallback} {...props}>
164
+ {label}
165
+ </_Link.default>
166
+ {href && collapsible && <button aria-label={(0, _Translate.translate)({
167
+ id: 'theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel',
168
+ message: "Toggle the collapsible sidebar category '{label}'",
169
+ description: 'The ARIA label to toggle the collapsible sidebar category'
170
+ }, {
171
+ label
172
+ })} type="button" className="clean-btn menu__caret" onClick={e => {
173
+ e.preventDefault();
174
+ toggleCollapsed();
175
+ }} />}
176
+ </div>
177
+
178
+ <_themeCommon.Collapsible lazy as="ul" className="menu__list" collapsed={collapsed}>
179
+ <DocSidebarItems items={items} tabIndex={collapsed ? -1 : 0} onItemClick={onItemClick} activePath={activePath} level={level + 1} />
180
+ </_themeCommon.Collapsible>
181
+ </li>;
182
+ }
183
+
184
+ function DocSidebarItemLink({
185
+ item,
186
+ onItemClick,
187
+ activePath,
188
+ level,
189
+ ...props
190
+ }) {
191
+ const {
192
+ href,
193
+ label,
194
+ className
195
+ } = item;
196
+ const isActive = (0, _themeCommon.isActiveSidebarItem)(item, activePath);
197
+ return <li className={(0, _clsx.default)(_themeCommon.ThemeClassNames.docs.docSidebarItemLink, _themeCommon.ThemeClassNames.docs.docSidebarItemLinkLevel(level), 'menu__list-item', className)} key={label}>
198
+ <_Link.default className={(0, _clsx.default)('menu__link', {
199
+ 'menu__link--active': isActive
200
+ })} aria-current={isActive ? 'page' : undefined} to={href} {...(0, _isInternalUrl.default)(href) && {
201
+ onClick: onItemClick ? () => onItemClick(item) : undefined
202
+ }} {...props}>
203
+ {(0, _isInternalUrl.default)(href) ? label : <span>
204
+ {label}
205
+ <_IconExternalLink.default />
206
+ </span>}
207
+ </_Link.default>
208
+ </li>;
209
+ }