@docusaurus/theme-classic 2.0.0-beta.15a2b59f9 → 2.0.0-beta.17

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 (407) hide show
  1. package/README.md +2 -2
  2. package/lib/admonitions.css +35 -0
  3. package/{lib-next/theme/Toggle/styles.module.css → lib/deps.d.ts} +5 -9
  4. package/lib/getSwizzleConfig.js +125 -0
  5. package/lib/index.js +36 -41
  6. package/lib/prism-include-languages.js +9 -5
  7. package/lib/theme-classic.d.ts +771 -0
  8. package/lib/translations.js +40 -34
  9. package/lib/types.d.ts +0 -587
  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 +8 -16
  13. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  14. package/lib-next/theme/BackToTopButton/index.js +131 -0
  15. package/lib-next/theme/BackToTopButton/styles.module.css +44 -0
  16. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  17. package/lib-next/theme/BlogLayout/index.js +37 -0
  18. package/lib-next/theme/BlogListPage/index.js +18 -29
  19. package/lib-next/theme/BlogListPaginator/index.js +13 -16
  20. package/lib-next/theme/BlogPostAuthor/index.js +52 -0
  21. package/{lib/theme/IconEdit → lib-next/theme/BlogPostAuthor}/styles.module.css +4 -3
  22. package/lib-next/theme/BlogPostAuthors/index.js +44 -0
  23. package/{src/theme/Toggle → lib-next/theme/BlogPostAuthors}/styles.module.css +11 -7
  24. package/lib-next/theme/BlogPostItem/index.js +94 -96
  25. package/lib-next/theme/BlogPostPage/index.js +75 -39
  26. package/lib-next/theme/BlogPostPaginator/index.js +12 -19
  27. package/lib-next/theme/BlogSidebar/index.js +11 -13
  28. package/lib-next/theme/BlogSidebar/styles.module.css +4 -2
  29. package/lib-next/theme/BlogTagsListPage/index.js +15 -59
  30. package/lib-next/theme/BlogTagsPostsPage/index.js +33 -41
  31. package/lib-next/theme/CodeBlock/index.js +64 -154
  32. package/lib-next/theme/CodeBlock/styles.module.css +17 -9
  33. package/lib-next/theme/ColorModeToggle/index.js +83 -0
  34. package/lib-next/theme/ColorModeToggle/styles.module.css +51 -0
  35. package/lib-next/theme/Details/index.js +21 -0
  36. package/lib-next/theme/Details/styles.module.css +13 -0
  37. package/lib-next/theme/DocBreadcrumbs/index.js +76 -0
  38. package/lib-next/theme/DocBreadcrumbs/styles.module.css +26 -0
  39. package/lib-next/theme/DocCard/index.js +91 -0
  40. package/lib-next/theme/DocCard/styles.module.css +43 -0
  41. package/lib-next/theme/DocCardList/index.js +19 -0
  42. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +54 -0
  43. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  44. package/lib-next/theme/DocItem/index.js +53 -58
  45. package/lib-next/theme/DocItem/styles.module.css +6 -10
  46. package/lib-next/theme/DocItemFooter/index.js +79 -0
  47. package/{lib/theme/DocItem → lib-next/theme/DocItemFooter}/styles.module.css +1 -9
  48. package/lib-next/theme/DocPage/index.js +54 -55
  49. package/lib-next/theme/DocPage/styles.module.css +9 -3
  50. package/lib-next/theme/DocPaginator/index.js +15 -24
  51. package/lib-next/theme/DocSidebar/index.js +65 -286
  52. package/lib-next/theme/DocSidebar/styles.module.css +5 -22
  53. package/lib-next/theme/DocSidebarItem/index.js +264 -0
  54. package/{lib/theme/BlogPostItem → lib-next/theme/DocSidebarItem}/styles.module.css +5 -10
  55. package/lib-next/theme/DocSidebarItems/index.js +28 -0
  56. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  57. package/lib-next/theme/DocTagsListPage/index.js +35 -0
  58. package/lib-next/theme/DocVersionBadge/index.js +34 -0
  59. package/lib-next/theme/DocVersionBanner/index.js +32 -15
  60. package/lib-next/theme/EditThisPage/index.js +6 -1
  61. package/lib-next/theme/ErrorPageContent.js +35 -0
  62. package/lib-next/theme/Footer/index.js +95 -40
  63. package/lib-next/theme/Footer/styles.module.css +2 -1
  64. package/lib-next/theme/Heading/index.js +39 -48
  65. package/lib-next/theme/Heading/styles.module.css +25 -5
  66. package/lib-next/theme/IconArrow/index.js +2 -5
  67. package/lib-next/theme/IconClose/index.js +23 -0
  68. package/lib-next/theme/IconDarkMode/index.js +17 -0
  69. package/lib-next/theme/IconEdit/index.js +2 -5
  70. package/lib-next/theme/IconExternalLink/index.js +2 -5
  71. package/lib-next/theme/IconLanguage/index.js +5 -8
  72. package/lib-next/theme/IconLightMode/index.js +17 -0
  73. package/lib-next/theme/IconMenu/index.js +7 -5
  74. package/lib-next/theme/LastUpdated/index.js +3 -2
  75. package/lib-next/theme/Layout/index.js +5 -7
  76. package/lib-next/theme/LayoutHead/index.js +27 -32
  77. package/lib-next/theme/LayoutProviders/index.js +15 -9
  78. package/lib-next/theme/Logo/index.js +25 -24
  79. package/lib-next/theme/MDXComponents/index.js +59 -30
  80. package/{src/theme/hooks → lib-next/theme/MDXComponents}/styles.css +7 -2
  81. package/lib-next/theme/MDXPage/index.js +10 -12
  82. package/lib-next/theme/Navbar/index.js +199 -64
  83. package/lib-next/theme/Navbar/styles.module.css +10 -3
  84. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +35 -201
  85. package/lib-next/theme/NavbarItem/DocNavbarItem.js +11 -8
  86. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +73 -0
  87. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +34 -20
  88. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +4 -1
  89. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +156 -0
  90. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +12 -13
  91. package/{lib/theme/hooks/styles.css → lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css} +3 -2
  92. package/lib-next/theme/NavbarItem/NavbarNavLink.js +70 -0
  93. package/lib-next/theme/NavbarItem/index.js +26 -14
  94. package/lib-next/theme/{UserPreferencesContext.js → NavbarItem/utils.js} +3 -3
  95. package/lib-next/theme/NotFound.js +1 -4
  96. package/lib-next/theme/PaginatorNavLink/index.js +17 -0
  97. package/lib-next/theme/SearchBar.js +1 -1
  98. package/lib-next/theme/SearchMetadata/index.js +34 -0
  99. package/lib-next/theme/Seo/index.js +11 -7
  100. package/lib-next/theme/SkipToContent/index.js +3 -5
  101. package/lib-next/theme/SkipToContent/styles.module.css +7 -0
  102. package/lib-next/theme/TOC/index.js +12 -39
  103. package/lib-next/theme/TOC/styles.module.css +1 -1
  104. package/lib-next/theme/TOCCollapsible/index.js +54 -0
  105. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  106. package/lib-next/theme/TOCInline/index.js +10 -31
  107. package/lib-next/theme/TOCItems/index.js +85 -0
  108. package/lib-next/theme/TabItem/index.js +1 -4
  109. package/lib-next/theme/Tabs/__tests__/index.test.js +146 -0
  110. package/lib-next/theme/Tabs/index.js +108 -50
  111. package/lib-next/theme/Tabs/styles.module.css +0 -13
  112. package/lib-next/theme/Tag/index.js +24 -0
  113. package/lib-next/theme/Tag/styles.module.css +70 -0
  114. package/lib-next/theme/TagsListByLetter/index.js +40 -0
  115. package/lib-next/theme/{hooks/styles.css → TagsListByLetter/styles.module.css} +3 -2
  116. package/lib-next/theme/TagsListInline/index.js +31 -0
  117. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  118. package/lib-next/theme/ThemedImage/index.js +7 -10
  119. package/lib-next/theme/ThemedImage/styles.module.css +2 -2
  120. package/lib-next/theme/prism-include-languages.js +17 -15
  121. package/package.json +31 -31
  122. package/src/admonitions.css +35 -0
  123. package/src/deps.d.ts +13 -0
  124. package/src/getSwizzleConfig.ts +123 -0
  125. package/src/index.ts +39 -61
  126. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  127. package/src/theme/Admonition/index.tsx +106 -0
  128. package/src/theme/AnnouncementBar/index.tsx +9 -15
  129. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  130. package/src/theme/BackToTopButton/index.tsx +143 -0
  131. package/src/theme/BackToTopButton/styles.module.css +44 -0
  132. package/src/theme/BlogArchivePage/index.tsx +91 -0
  133. package/src/theme/BlogLayout/index.tsx +42 -0
  134. package/src/theme/BlogListPage/index.tsx +19 -28
  135. package/src/theme/BlogListPaginator/index.tsx +13 -15
  136. package/src/theme/BlogPostAuthor/index.tsx +54 -0
  137. package/{lib/theme/MDXPage → src/theme/BlogPostAuthor}/styles.module.css +4 -2
  138. package/src/theme/BlogPostAuthors/index.tsx +49 -0
  139. package/src/theme/BlogPostAuthors/styles.module.css +21 -0
  140. package/src/theme/BlogPostItem/index.tsx +84 -90
  141. package/src/theme/BlogPostPage/index.tsx +77 -38
  142. package/src/theme/BlogPostPaginator/index.tsx +12 -18
  143. package/src/theme/BlogSidebar/index.tsx +11 -13
  144. package/src/theme/BlogSidebar/styles.module.css +4 -2
  145. package/src/theme/BlogTagsListPage/index.tsx +15 -60
  146. package/src/theme/BlogTagsPostsPage/index.tsx +32 -40
  147. package/src/theme/CodeBlock/index.tsx +68 -156
  148. package/src/theme/CodeBlock/styles.module.css +17 -9
  149. package/src/theme/ColorModeToggle/index.tsx +92 -0
  150. package/src/theme/ColorModeToggle/styles.module.css +51 -0
  151. package/src/theme/Details/index.tsx +25 -0
  152. package/src/theme/Details/styles.module.css +13 -0
  153. package/src/theme/DocBreadcrumbs/index.tsx +91 -0
  154. package/src/theme/DocBreadcrumbs/styles.module.css +26 -0
  155. package/src/theme/DocCard/index.tsx +109 -0
  156. package/src/theme/DocCard/styles.module.css +43 -0
  157. package/src/theme/DocCardList/index.tsx +27 -0
  158. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +59 -0
  159. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  160. package/src/theme/DocItem/index.tsx +56 -58
  161. package/src/theme/DocItem/styles.module.css +6 -10
  162. package/src/theme/DocItemFooter/index.tsx +91 -0
  163. package/{lib/theme/Toggle → src/theme/DocItemFooter}/styles.module.css +9 -8
  164. package/src/theme/DocPage/index.tsx +53 -49
  165. package/src/theme/DocPage/styles.module.css +9 -3
  166. package/src/theme/DocPaginator/index.tsx +15 -23
  167. package/src/theme/DocSidebar/index.tsx +76 -298
  168. package/src/theme/DocSidebar/styles.module.css +5 -22
  169. package/src/theme/DocSidebarItem/index.tsx +283 -0
  170. package/src/theme/DocSidebarItem/styles.module.css +13 -0
  171. package/src/theme/DocSidebarItems/index.tsx +32 -0
  172. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  173. package/src/theme/DocTagsListPage/index.tsx +39 -0
  174. package/src/theme/DocVersionBadge/index.tsx +35 -0
  175. package/src/theme/DocVersionBanner/index.tsx +49 -22
  176. package/src/theme/EditThisPage/index.tsx +6 -1
  177. package/src/theme/ErrorPageContent.tsx +41 -0
  178. package/src/theme/Footer/index.tsx +109 -44
  179. package/src/theme/Footer/styles.module.css +2 -1
  180. package/src/theme/Heading/index.tsx +38 -53
  181. package/src/theme/Heading/styles.module.css +25 -5
  182. package/src/theme/IconArrow/index.tsx +2 -4
  183. package/src/theme/IconClose/index.tsx +26 -0
  184. package/src/theme/IconDarkMode/index.tsx +20 -0
  185. package/src/theme/IconEdit/index.tsx +5 -4
  186. package/src/theme/IconExternalLink/index.tsx +3 -5
  187. package/src/theme/IconLanguage/index.tsx +6 -8
  188. package/src/theme/IconLightMode/index.tsx +20 -0
  189. package/src/theme/IconMenu/index.tsx +3 -5
  190. package/src/theme/LastUpdated/index.tsx +3 -2
  191. package/src/theme/Layout/index.tsx +5 -6
  192. package/src/theme/LayoutHead/index.tsx +26 -25
  193. package/src/theme/LayoutProviders/index.tsx +15 -9
  194. package/src/theme/Logo/index.tsx +21 -19
  195. package/src/theme/MDXComponents/index.tsx +70 -32
  196. package/{lib/theme/IconExternalLink/styles.module.css → src/theme/MDXComponents/styles.css} +7 -4
  197. package/src/theme/MDXPage/index.tsx +10 -12
  198. package/src/theme/Navbar/index.tsx +208 -68
  199. package/src/theme/Navbar/styles.module.css +10 -3
  200. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +37 -207
  201. package/src/theme/NavbarItem/DocNavbarItem.tsx +17 -18
  202. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +84 -0
  203. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +39 -24
  204. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  205. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
  206. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +16 -10
  207. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  208. package/src/theme/NavbarItem/NavbarNavLink.tsx +68 -0
  209. package/src/theme/NavbarItem/index.tsx +41 -18
  210. package/src/theme/NavbarItem/utils.ts +10 -0
  211. package/src/theme/NotFound.tsx +1 -3
  212. package/src/theme/PaginatorNavLink/index.tsx +20 -0
  213. package/src/theme/SearchBar.tsx +2 -1
  214. package/src/theme/SearchMetadata/index.tsx +43 -0
  215. package/src/theme/Seo/index.tsx +7 -4
  216. package/src/theme/SkipToContent/index.tsx +3 -5
  217. package/src/theme/SkipToContent/styles.module.css +7 -0
  218. package/src/theme/TOC/index.tsx +13 -44
  219. package/src/theme/TOC/styles.module.css +1 -1
  220. package/src/theme/TOCCollapsible/index.tsx +58 -0
  221. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  222. package/src/theme/TOCInline/index.tsx +14 -35
  223. package/src/theme/TOCItems/index.tsx +100 -0
  224. package/src/theme/TabItem/index.tsx +5 -3
  225. package/src/theme/Tabs/index.tsx +115 -56
  226. package/src/theme/Tabs/styles.module.css +0 -13
  227. package/src/theme/Tag/index.tsx +29 -0
  228. package/src/theme/Tag/styles.module.css +70 -0
  229. package/src/theme/TagsListByLetter/index.tsx +43 -0
  230. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  231. package/src/theme/TagsListInline/index.tsx +35 -0
  232. package/src/theme/TagsListInline/styles.module.css +15 -0
  233. package/src/theme/ThemedImage/index.tsx +7 -9
  234. package/src/theme/ThemedImage/styles.module.css +2 -2
  235. package/src/theme/prism-include-languages.ts +20 -15
  236. package/src/theme-classic.d.ts +771 -0
  237. package/src/translations.ts +74 -54
  238. package/src/types.d.ts +0 -587
  239. package/src/validateThemeConfig.ts +381 -0
  240. package/babel.config.js +0 -35
  241. package/codeTranslations/README.md +0 -20
  242. package/codeTranslations/ar.json +0 -57
  243. package/codeTranslations/base.json +0 -112
  244. package/codeTranslations/bn.json +0 -56
  245. package/codeTranslations/da.json +0 -57
  246. package/codeTranslations/de.json +0 -57
  247. package/codeTranslations/es.json +0 -57
  248. package/codeTranslations/fa.json +0 -57
  249. package/codeTranslations/fil.json +0 -57
  250. package/codeTranslations/fr.json +0 -57
  251. package/codeTranslations/he.json +0 -57
  252. package/codeTranslations/hi.json +0 -57
  253. package/codeTranslations/ja.json +0 -57
  254. package/codeTranslations/ko.json +0 -57
  255. package/codeTranslations/pl.json +0 -57
  256. package/codeTranslations/pt-BR.json +0 -57
  257. package/codeTranslations/pt-PT.json +0 -57
  258. package/codeTranslations/ru.json +0 -57
  259. package/codeTranslations/tr.json +0 -57
  260. package/codeTranslations/vi.json +0 -57
  261. package/codeTranslations/zh-Hans.json +0 -57
  262. package/codeTranslations/zh-Hant.json +0 -57
  263. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  264. package/lib/__tests__/translations.test.js +0 -112
  265. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  266. package/lib/theme/AnnouncementBar/index.js +0 -72
  267. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  268. package/lib/theme/BlogListPage/index.js +0 -71
  269. package/lib/theme/BlogListPaginator/index.js +0 -63
  270. package/lib/theme/BlogPostItem/index.js +0 -161
  271. package/lib/theme/BlogPostPage/index.js +0 -69
  272. package/lib/theme/BlogPostPaginator/index.js +0 -64
  273. package/lib/theme/BlogSidebar/index.js +0 -51
  274. package/lib/theme/BlogSidebar/styles.module.css +0 -44
  275. package/lib/theme/BlogTagsListPage/index.js +0 -76
  276. package/lib/theme/BlogTagsPostsPage/index.js +0 -100
  277. package/lib/theme/CodeBlock/index.js +0 -253
  278. package/lib/theme/CodeBlock/styles.module.css +0 -68
  279. package/lib/theme/DocItem/index.js +0 -129
  280. package/lib/theme/DocPage/index.js +0 -173
  281. package/lib/theme/DocPage/styles.module.css +0 -80
  282. package/lib/theme/DocPaginator/index.js +0 -63
  283. package/lib/theme/DocSidebar/index.js +0 -309
  284. package/lib/theme/DocSidebar/styles.module.css +0 -124
  285. package/lib/theme/DocVersionBanner/index.js +0 -128
  286. package/lib/theme/EditThisPage/index.js +0 -31
  287. package/lib/theme/Footer/index.js +0 -115
  288. package/lib/theme/Footer/styles.module.css +0 -15
  289. package/lib/theme/Heading/index.js +0 -76
  290. package/lib/theme/Heading/styles.css +0 -23
  291. package/lib/theme/Heading/styles.module.css +0 -15
  292. package/lib/theme/IconArrow/index.js +0 -28
  293. package/lib/theme/IconEdit/index.js +0 -34
  294. package/lib/theme/IconExternalLink/index.js +0 -30
  295. package/lib/theme/IconLanguage/index.js +0 -29
  296. package/lib/theme/IconMenu/index.js +0 -30
  297. package/lib/theme/LastUpdated/index.js +0 -61
  298. package/lib/theme/Layout/index.js +0 -64
  299. package/lib/theme/Layout/styles.css +0 -27
  300. package/lib/theme/LayoutHead/index.js +0 -144
  301. package/lib/theme/LayoutProviders/index.js +0 -36
  302. package/lib/theme/Logo/index.js +0 -60
  303. package/lib/theme/MDXComponents/index.js +0 -65
  304. package/lib/theme/MDXPage/index.js +0 -66
  305. package/lib/theme/Navbar/index.js +0 -147
  306. package/lib/theme/Navbar/styles.module.css +0 -20
  307. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -209
  308. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -63
  309. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -76
  310. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  311. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  312. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  313. package/lib/theme/NavbarItem/index.js +0 -54
  314. package/lib/theme/NotFound.js +0 -57
  315. package/lib/theme/SearchBar.js +0 -15
  316. package/lib/theme/SearchMetadatas/index.js +0 -33
  317. package/lib/theme/Seo/index.js +0 -49
  318. package/lib/theme/SkipToContent/index.js +0 -71
  319. package/lib/theme/SkipToContent/styles.module.css +0 -14
  320. package/lib/theme/TOC/index.js +0 -59
  321. package/lib/theme/TOC/styles.module.css +0 -23
  322. package/lib/theme/TOCInline/index.js +0 -53
  323. package/lib/theme/TOCInline/styles.module.css +0 -12
  324. package/lib/theme/TabItem/index.js +0 -32
  325. package/lib/theme/Tabs/index.js +0 -150
  326. package/lib/theme/Tabs/styles.module.css +0 -23
  327. package/lib/theme/ThemeContext.js +0 -21
  328. package/lib/theme/ThemeProvider/index.js +0 -38
  329. package/lib/theme/ThemedImage/index.js +0 -49
  330. package/lib/theme/ThemedImage/styles.module.css +0 -18
  331. package/lib/theme/Toggle/index.js +0 -94
  332. package/lib/theme/Toggle/styles.css +0 -103
  333. package/lib/theme/UserPreferencesContext.js +0 -18
  334. package/lib/theme/UserPreferencesProvider/index.js +0 -36
  335. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  336. package/lib/theme/hooks/useDocs.js +0 -18
  337. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  338. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  339. package/lib/theme/hooks/useLocationHash.js +0 -28
  340. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  341. package/lib/theme/hooks/usePrismTheme.js +0 -36
  342. package/lib/theme/hooks/useScrollPosition.js +0 -49
  343. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  344. package/lib/theme/hooks/useTabGroupChoice.js +0 -51
  345. package/lib/theme/hooks/useTheme.js +0 -99
  346. package/lib/theme/hooks/useThemeContext.js +0 -31
  347. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  348. package/lib/theme/hooks/useWindowSize.js +0 -55
  349. package/lib/theme/prism-include-languages.js +0 -39
  350. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  351. package/lib-next/__tests__/translations.test.js +0 -128
  352. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  353. package/lib-next/index.js +0 -221
  354. package/lib-next/theme/Heading/styles.css +0 -23
  355. package/lib-next/theme/SearchMetadatas/index.js +0 -20
  356. package/lib-next/theme/ThemeContext.js +0 -9
  357. package/lib-next/theme/ThemeProvider/index.js +0 -25
  358. package/lib-next/theme/Toggle/index.js +0 -80
  359. package/lib-next/theme/Toggle/styles.css +0 -103
  360. package/lib-next/theme/UserPreferencesProvider/index.js +0 -24
  361. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  362. package/lib-next/theme/hooks/useDocs.js +0 -10
  363. package/lib-next/theme/hooks/useHideableNavbar.js +0 -79
  364. package/lib-next/theme/hooks/useKeyboardNavigation.js +0 -35
  365. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  366. package/lib-next/theme/hooks/useLockBodyScroll.js +0 -18
  367. package/lib-next/theme/hooks/usePrismTheme.js +0 -20
  368. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  369. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  370. package/lib-next/theme/hooks/useTabGroupChoice.js +0 -39
  371. package/lib-next/theme/hooks/useTheme.js +0 -82
  372. package/lib-next/theme/hooks/useThemeContext.js +0 -22
  373. package/lib-next/theme/hooks/useUserPreferencesContext.js +0 -22
  374. package/lib-next/theme/hooks/useWindowSize.js +0 -45
  375. package/lib-next/translations.js +0 -145
  376. package/lib-next/types.d.ts +0 -598
  377. package/lib-next/validateThemeConfig.js +0 -317
  378. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  379. package/src/__tests__/translations.test.ts +0 -116
  380. package/src/__tests__/validateThemeConfig.test.js +0 -333
  381. package/src/prism-include-languages.js +0 -11
  382. package/src/theme/Heading/styles.css +0 -23
  383. package/src/theme/SearchMetadatas/index.tsx +0 -28
  384. package/src/theme/ThemeContext.ts +0 -15
  385. package/src/theme/ThemeProvider/index.tsx +0 -24
  386. package/src/theme/Toggle/index.tsx +0 -100
  387. package/src/theme/Toggle/styles.css +0 -103
  388. package/src/theme/UserPreferencesContext.ts +0 -12
  389. package/src/theme/UserPreferencesProvider/index.tsx +0 -27
  390. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  391. package/src/theme/hooks/useDocs.ts +0 -11
  392. package/src/theme/hooks/useHideableNavbar.ts +0 -85
  393. package/src/theme/hooks/useKeyboardNavigation.ts +0 -39
  394. package/src/theme/hooks/useLocationHash.ts +0 -25
  395. package/src/theme/hooks/useLockBodyScroll.ts +0 -20
  396. package/src/theme/hooks/usePrismTheme.ts +0 -22
  397. package/src/theme/hooks/useScrollPosition.ts +0 -45
  398. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  399. package/src/theme/hooks/useTabGroupChoice.ts +0 -46
  400. package/src/theme/hooks/useTheme.ts +0 -92
  401. package/src/theme/hooks/useThemeContext.ts +0 -23
  402. package/src/theme/hooks/useUserPreferencesContext.ts +0 -25
  403. package/src/theme/hooks/useWindowSize.ts +0 -51
  404. package/src/validateThemeConfig.js +0 -317
  405. package/tsconfig.json +0 -12
  406. package/update-code-translations.js +0 -240
  407. package/update-code-translations.test.js +0 -33
@@ -5,6 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- body:not(.navigation-with-keyboard) *:not(input):focus {
9
- outline: none;
8
+ .iconLanguage {
9
+ vertical-align: text-bottom;
10
+ margin-right: 5px;
10
11
  }
@@ -0,0 +1,70 @@
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 Link from '@docusaurus/Link';
9
+ import useBaseUrl from '@docusaurus/useBaseUrl';
10
+ import IconExternalLink from '@theme/IconExternalLink';
11
+ import isInternalUrl from '@docusaurus/isInternalUrl';
12
+ import {isRegexpStringMatch} from '@docusaurus/theme-common';
13
+ const dropdownLinkActiveClass = 'dropdown__link--active';
14
+ export default function NavbarNavLink({
15
+ activeBasePath,
16
+ activeBaseRegex,
17
+ to,
18
+ href,
19
+ label,
20
+ activeClassName = '',
21
+ prependBaseUrlToHref,
22
+ ...props
23
+ }) {
24
+ // TODO all this seems hacky
25
+ // {to: 'version'} should probably be forbidden, in favor of {to: '/version'}
26
+ const toUrl = useBaseUrl(to);
27
+ const activeBaseUrl = useBaseUrl(activeBasePath);
28
+ const normalizedHref = useBaseUrl(href, {
29
+ forcePrependBaseUrl: true,
30
+ });
31
+ const isExternalLink = label && href && !isInternalUrl(href);
32
+ const isDropdownLink = activeClassName === dropdownLinkActiveClass;
33
+ return (
34
+ <Link
35
+ {...(href
36
+ ? {
37
+ href: prependBaseUrlToHref ? normalizedHref : href,
38
+ }
39
+ : {
40
+ isNavLink: true,
41
+ activeClassName: !props.className?.includes(activeClassName)
42
+ ? activeClassName
43
+ : '',
44
+ to: toUrl,
45
+ ...(activeBasePath || activeBaseRegex
46
+ ? {
47
+ isActive: (_match, location) =>
48
+ activeBaseRegex
49
+ ? isRegexpStringMatch(activeBaseRegex, location.pathname)
50
+ : location.pathname.startsWith(activeBaseUrl),
51
+ }
52
+ : null),
53
+ })}
54
+ {...props}>
55
+ {isExternalLink ? (
56
+ <span>
57
+ {label}
58
+ <IconExternalLink
59
+ {...(isDropdownLink && {
60
+ width: 12,
61
+ height: 12,
62
+ })}
63
+ />
64
+ </span>
65
+ ) : (
66
+ label
67
+ )}
68
+ </Link>
69
+ );
70
+ }
@@ -6,36 +6,48 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
9
+ import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
9
10
  import LocaleDropdownNavbarItem from '@theme/NavbarItem/LocaleDropdownNavbarItem';
10
11
  import SearchNavbarItem from '@theme/NavbarItem/SearchNavbarItem';
11
12
  const NavbarItemComponents = {
12
13
  default: () => DefaultNavbarItem,
13
14
  localeDropdown: () => LocaleDropdownNavbarItem,
14
15
  search: () => SearchNavbarItem,
15
- // Need to lazy load these items as we don't know for sure the docs plugin is loaded
16
- // See https://github.com/facebook/docusaurus/issues/3360
17
- docsVersion: () =>
18
- // eslint-disable-next-line @typescript-eslint/no-var-requires, global-require
19
- require('@theme/NavbarItem/DocsVersionNavbarItem').default,
16
+ dropdown: () => DropdownNavbarItem,
17
+ // Need to lazy load these items as we don't know for sure the docs plugin is
18
+ // loaded. See https://github.com/facebook/docusaurus/issues/3360
19
+
20
+ /* eslint-disable @typescript-eslint/no-var-requires, global-require */
21
+ docsVersion: () => require('@theme/NavbarItem/DocsVersionNavbarItem').default,
20
22
  docsVersionDropdown: () =>
21
- // eslint-disable-next-line @typescript-eslint/no-var-requires, global-require
22
23
  require('@theme/NavbarItem/DocsVersionDropdownNavbarItem').default,
23
- doc: () =>
24
- // eslint-disable-next-line @typescript-eslint/no-var-requires, global-require
25
- require('@theme/NavbarItem/DocNavbarItem').default,
24
+ doc: () => require('@theme/NavbarItem/DocNavbarItem').default,
25
+ docSidebar: () => require('@theme/NavbarItem/DocSidebarNavbarItem').default,
26
+ /* eslint-enable @typescript-eslint/no-var-requires, global-require */
26
27
  };
27
28
 
28
- const getNavbarItemComponent = (type = 'default') => {
29
- const navbarItemComponent = NavbarItemComponents[type];
29
+ const getNavbarItemComponent = (type) => {
30
+ const navbarItemComponentFn = NavbarItemComponents[type];
30
31
 
31
- if (!navbarItemComponent) {
32
+ if (!navbarItemComponentFn) {
32
33
  throw new Error(`No NavbarItem component found for type "${type}".`);
33
34
  }
34
35
 
35
- return navbarItemComponent();
36
+ return navbarItemComponentFn();
36
37
  };
37
38
 
39
+ function getComponentType(type, isDropdown) {
40
+ // Backward compatibility: navbar item with no type set
41
+ // but containing dropdown items should use the type "dropdown"
42
+ if (!type || type === 'default') {
43
+ return isDropdown ? 'dropdown' : 'default';
44
+ }
45
+
46
+ return type;
47
+ }
48
+
38
49
  export default function NavbarItem({type, ...props}) {
39
- const NavbarItemComponent = getNavbarItemComponent(type);
50
+ const componentType = getComponentType(type, props.items !== undefined);
51
+ const NavbarItemComponent = getNavbarItemComponent(componentType);
40
52
  return <NavbarItemComponent {...props} />;
41
53
  }
@@ -4,6 +4,6 @@
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 {createContext} from 'react';
8
- const UserPreferencesContext = createContext(undefined);
9
- export default UserPreferencesContext;
7
+ // eslint-disable-next-line import/no-named-export
8
+ export const getInfimaActiveClassName = (mobile) =>
9
+ mobile ? 'menu__link--active' : 'navbar__link--active';
@@ -7,8 +7,7 @@
7
7
  import React from 'react';
8
8
  import Layout from '@theme/Layout';
9
9
  import Translate, {translate} from '@docusaurus/Translate';
10
-
11
- function NotFound() {
10
+ export default function NotFound() {
12
11
  return (
13
12
  <Layout
14
13
  title={translate({
@@ -46,5 +45,3 @@ function NotFound() {
46
45
  </Layout>
47
46
  );
48
47
  }
49
-
50
- export default NotFound;
@@ -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
+ import React from 'react';
8
+ import Link from '@docusaurus/Link';
9
+ export default function PaginatorNavLink(props) {
10
+ const {permalink, title, subLabel} = props;
11
+ return (
12
+ <Link className="pagination-nav__link" to={permalink}>
13
+ {subLabel && <div className="pagination-nav__sublabel">{subLabel}</div>}
14
+ <div className="pagination-nav__label">{title}</div>
15
+ </Link>
16
+ );
17
+ }
@@ -5,7 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  // By default, the classic theme does not provide any SearchBar implementation
8
- // If you swizzled this file, it is your responsibility to provide an implementation
8
+ // If you swizzled this, it is your responsibility to provide an implementation
9
9
  // Tip: swizzle the SearchBar from the Algolia theme for inspiration:
10
10
  // npm run swizzle @docusaurus/theme-search-algolia SearchBar
11
11
  export {default} from '@docusaurus/Noop';
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import Head from '@docusaurus/Head';
9
+ // Note: we bias toward using Algolia metadata on purpose
10
+ // Not doing so leads to confusion in the community,
11
+ // as it requires to first crawl the site with the Algolia plugin enabled first
12
+ // - https://github.com/facebook/docusaurus/issues/6693
13
+ // - https://github.com/facebook/docusaurus/issues/4555
14
+ export default function SearchMetadata({locale, version, tag}) {
15
+ // Seems safe to consider here the locale is the language, as the existing
16
+ // docsearch:language filter is afaik a regular string-based filter
17
+ const language = locale;
18
+ return (
19
+ <Head>
20
+ {/*
21
+ Docusaurus metadata, used by third-party search plugin
22
+ See https://github.com/cmfcmf/docusaurus-search-local/issues/99
23
+ */}
24
+ {locale && <meta name="docusaurus_locale" content={locale} />}
25
+ {version && <meta name="docusaurus_version" content={version} />}
26
+ {tag && <meta name="docusaurus_tag" content={tag} />}
27
+
28
+ {/* Algolia DocSearch metadata */}
29
+ {language && <meta name="docsearch:language" content={language} />}
30
+ {version && <meta name="docsearch:version" content={version} />}
31
+ {tag && <meta name="docsearch:docusaurus_tag" content={tag} />}
32
+ </Head>
33
+ );
34
+ }
@@ -6,14 +6,16 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import Head from '@docusaurus/Head';
9
- import {useThemeConfig, useTitleFormatter} from '@docusaurus/theme-common';
10
- import useBaseUrl from '@docusaurus/useBaseUrl';
11
- export default function Seo({title, description, keywords, image}) {
12
- const {image: defaultImage} = useThemeConfig();
9
+ import {useTitleFormatter} from '@docusaurus/theme-common';
10
+ import {useBaseUrlUtils} from '@docusaurus/useBaseUrl';
11
+ export default function Seo({title, description, keywords, image, children}) {
13
12
  const pageTitle = useTitleFormatter(title);
14
- const pageImage = useBaseUrl(image || defaultImage, {
15
- absolute: true,
16
- });
13
+ const {withBaseUrl} = useBaseUrlUtils();
14
+ const pageImage = image
15
+ ? withBaseUrl(image, {
16
+ absolute: true,
17
+ })
18
+ : undefined;
17
19
  return (
18
20
  <Head>
19
21
  {title && <title>{pageTitle}</title>}
@@ -31,6 +33,8 @@ export default function Seo({title, description, keywords, image}) {
31
33
 
32
34
  {pageImage && <meta property="og:image" content={pageImage} />}
33
35
  {pageImage && <meta name="twitter:image" content={pageImage} />}
36
+
37
+ {children}
34
38
  </Head>
35
39
  );
36
40
  }
@@ -16,7 +16,7 @@ function programmaticFocus(el) {
16
16
  el.removeAttribute('tabindex');
17
17
  }
18
18
 
19
- function SkipToContent() {
19
+ export default function SkipToContent() {
20
20
  const containerRef = useRef(null);
21
21
  const {action} = useHistory();
22
22
 
@@ -32,12 +32,12 @@ function SkipToContent() {
32
32
  };
33
33
 
34
34
  useLocationChange(({location}) => {
35
- if (containerRef.current && !location.hash && action !== 'POP') {
35
+ if (containerRef.current && !location.hash && action === 'PUSH') {
36
36
  programmaticFocus(containerRef.current);
37
37
  }
38
38
  });
39
39
  return (
40
- <div ref={containerRef}>
40
+ <div ref={containerRef} role="region">
41
41
  {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}
42
42
  <a href="#" className={styles.skipToContent} onClick={handleSkip}>
43
43
  <Translate
@@ -49,5 +49,3 @@ function SkipToContent() {
49
49
  </div>
50
50
  );
51
51
  }
52
-
53
- export default SkipToContent;
@@ -1,3 +1,10 @@
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
+
1
8
  .skipToContent {
2
9
  position: fixed;
3
10
  top: 1rem;
@@ -6,47 +6,20 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import clsx from 'clsx';
9
- import useTOCHighlight from '@theme/hooks/useTOCHighlight';
10
- import styles from './styles.module.css';
11
- const LINK_CLASS_NAME = 'table-of-contents__link';
12
- const ACTIVE_LINK_CLASS_NAME = 'table-of-contents__link--active';
13
- const TOP_OFFSET = 100;
14
- /* eslint-disable jsx-a11y/control-has-associated-label */
9
+ import TOCItems from '@theme/TOCItems';
10
+ import styles from './styles.module.css'; // Using a custom className
11
+ // This prevents TOCInline/TOCCollapsible getting highlighted by mistake
15
12
 
16
- function Headings({toc, isChild}) {
17
- if (!toc.length) {
18
- return null;
19
- }
20
-
21
- return (
22
- <ul
23
- className={
24
- isChild ? '' : 'table-of-contents table-of-contents__left-border'
25
- }>
26
- {toc.map((heading) => (
27
- <li key={heading.id}>
28
- <a
29
- href={`#${heading.id}`}
30
- className={LINK_CLASS_NAME} // Developer provided the HTML, so assume it's safe.
31
- // eslint-disable-next-line react/no-danger
32
- dangerouslySetInnerHTML={{
33
- __html: heading.value,
34
- }}
35
- />
36
- <Headings isChild toc={heading.children} />
37
- </li>
38
- ))}
39
- </ul>
40
- );
41
- }
42
-
43
- function TOC({toc}) {
44
- useTOCHighlight(LINK_CLASS_NAME, ACTIVE_LINK_CLASS_NAME, TOP_OFFSET);
13
+ const LINK_CLASS_NAME = 'table-of-contents__link toc-highlight';
14
+ const LINK_ACTIVE_CLASS_NAME = 'table-of-contents__link--active';
15
+ export default function TOC({className, ...props}) {
45
16
  return (
46
- <div className={clsx(styles.tableOfContents, 'thin-scrollbar')}>
47
- <Headings toc={toc} />
17
+ <div className={clsx(styles.tableOfContents, 'thin-scrollbar', className)}>
18
+ <TOCItems
19
+ {...props}
20
+ linkClassName={LINK_CLASS_NAME}
21
+ linkActiveClassName={LINK_ACTIVE_CLASS_NAME}
22
+ />
48
23
  </div>
49
24
  );
50
25
  }
51
-
52
- export default TOC;
@@ -12,7 +12,7 @@
12
12
  top: calc(var(--ifm-navbar-height) + 1rem);
13
13
  }
14
14
 
15
- @media only screen and (max-width: 996px) {
15
+ @media (max-width: 996px) {
16
16
  .tableOfContents {
17
17
  display: none;
18
18
  }
@@ -0,0 +1,54 @@
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 Translate from '@docusaurus/Translate';
10
+ import {useCollapsible, Collapsible} from '@docusaurus/theme-common';
11
+ import styles from './styles.module.css';
12
+ import TOCItems from '@theme/TOCItems';
13
+ export default function TOCCollapsible({
14
+ toc,
15
+ className,
16
+ minHeadingLevel,
17
+ maxHeadingLevel,
18
+ }) {
19
+ const {collapsed, toggleCollapsed} = useCollapsible({
20
+ initialState: true,
21
+ });
22
+ return (
23
+ <div
24
+ className={clsx(
25
+ styles.tocCollapsible,
26
+ {
27
+ [styles.tocCollapsibleExpanded]: !collapsed,
28
+ },
29
+ className,
30
+ )}>
31
+ <button
32
+ type="button"
33
+ className={clsx('clean-btn', styles.tocCollapsibleButton)}
34
+ onClick={toggleCollapsed}>
35
+ <Translate
36
+ id="theme.TOCCollapsible.toggleButtonLabel"
37
+ description="The label used by the button on the collapsible TOC component">
38
+ On this page
39
+ </Translate>
40
+ </button>
41
+
42
+ <Collapsible
43
+ lazy
44
+ className={styles.tocCollapsibleContent}
45
+ collapsed={collapsed}>
46
+ <TOCItems
47
+ toc={toc}
48
+ minHeadingLevel={minHeadingLevel}
49
+ maxHeadingLevel={maxHeadingLevel}
50
+ />
51
+ </Collapsible>
52
+ </div>
53
+ );
54
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ .tocCollapsible {
9
+ background-color: var(--ifm-menu-color-background-active);
10
+ border-radius: var(--ifm-global-radius);
11
+ margin: 1rem 0;
12
+ }
13
+
14
+ .tocCollapsibleButton {
15
+ font-size: inherit;
16
+ display: flex;
17
+ justify-content: space-between;
18
+ align-items: center;
19
+ padding: 0.4rem 0.8rem;
20
+ width: 100%;
21
+ }
22
+
23
+ .tocCollapsibleButton::after {
24
+ content: '';
25
+ background: var(--ifm-menu-link-sublist-icon) 50% 50% / 2rem 2rem no-repeat;
26
+ filter: var(--ifm-menu-link-sublist-icon-filter);
27
+ height: 1.25rem;
28
+ width: 1.25rem;
29
+ transform: rotate(180deg);
30
+ transition: transform var(--ifm-transition-fast);
31
+ }
32
+
33
+ .tocCollapsibleContent > ul {
34
+ border-left: none;
35
+ border-top: 1px solid var(--ifm-color-emphasis-300);
36
+ padding: 0.2rem 0;
37
+ font-size: 15px;
38
+ }
39
+
40
+ .tocCollapsibleContent ul li {
41
+ margin: 0.4rem 0.8rem;
42
+ }
43
+
44
+ .tocCollapsibleContent a {
45
+ display: block;
46
+ }
47
+
48
+ .tocCollapsibleExpanded .tocCollapsibleButton::after {
49
+ transform: none;
50
+ }
@@ -5,39 +5,18 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React from 'react';
8
- import clsx from 'clsx';
9
8
  import styles from './styles.module.css';
10
-
11
- /* eslint-disable jsx-a11y/control-has-associated-label */
12
- function HeadingsInline({toc, isChild}) {
13
- if (!toc.length) {
14
- return null;
15
- }
16
-
9
+ import TOCItems from '@theme/TOCItems';
10
+ export default function TOCInline({toc, minHeadingLevel, maxHeadingLevel}) {
17
11
  return (
18
- <ul className={isChild ? '' : 'table-of-contents'}>
19
- {toc.map((heading) => (
20
- <li key={heading.id}>
21
- <a
22
- href={`#${heading.id}`} // Developer provided the HTML, so assume it's safe.
23
- // eslint-disable-next-line react/no-danger
24
- dangerouslySetInnerHTML={{
25
- __html: heading.value,
26
- }}
27
- />
28
- <HeadingsInline isChild toc={heading.children} />
29
- </li>
30
- ))}
31
- </ul>
32
- );
33
- }
34
-
35
- function TOCInline({toc}) {
36
- return (
37
- <div className={clsx(styles.tableOfContentsInline)}>
38
- <HeadingsInline toc={toc} />
12
+ <div className={styles.tableOfContentsInline}>
13
+ <TOCItems
14
+ toc={toc}
15
+ minHeadingLevel={minHeadingLevel}
16
+ maxHeadingLevel={maxHeadingLevel}
17
+ className="table-of-contents"
18
+ linkClassName={null}
19
+ />
39
20
  </div>
40
21
  );
41
22
  }
42
-
43
- export default TOCInline;
@@ -0,0 +1,85 @@
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, {useMemo} from 'react';
8
+ import {
9
+ useThemeConfig,
10
+ useTOCHighlight,
11
+ useFilteredAndTreeifiedTOC,
12
+ } from '@docusaurus/theme-common'; // Recursive component rendering the toc tree
13
+
14
+ /* eslint-disable jsx-a11y/control-has-associated-label */
15
+
16
+ function TOCItemList({toc, className, linkClassName, isChild}) {
17
+ if (!toc.length) {
18
+ return null;
19
+ }
20
+
21
+ return (
22
+ <ul className={isChild ? undefined : className}>
23
+ {toc.map((heading) => (
24
+ <li key={heading.id}>
25
+ <a
26
+ href={`#${heading.id}`}
27
+ className={linkClassName ?? undefined} // Developer provided the HTML, so assume it's safe.
28
+ // eslint-disable-next-line react/no-danger
29
+ dangerouslySetInnerHTML={{
30
+ __html: heading.value,
31
+ }}
32
+ />
33
+ <TOCItemList
34
+ isChild
35
+ toc={heading.children}
36
+ className={className}
37
+ linkClassName={linkClassName}
38
+ />
39
+ </li>
40
+ ))}
41
+ </ul>
42
+ );
43
+ }
44
+
45
+ export default function TOCItems({
46
+ toc,
47
+ className = 'table-of-contents table-of-contents__left-border',
48
+ linkClassName = 'table-of-contents__link',
49
+ linkActiveClassName = undefined,
50
+ minHeadingLevel: minHeadingLevelOption,
51
+ maxHeadingLevel: maxHeadingLevelOption,
52
+ ...props
53
+ }) {
54
+ const themeConfig = useThemeConfig();
55
+ const minHeadingLevel =
56
+ minHeadingLevelOption ?? themeConfig.tableOfContents.minHeadingLevel;
57
+ const maxHeadingLevel =
58
+ maxHeadingLevelOption ?? themeConfig.tableOfContents.maxHeadingLevel;
59
+ const tocTree = useFilteredAndTreeifiedTOC({
60
+ toc,
61
+ minHeadingLevel,
62
+ maxHeadingLevel,
63
+ });
64
+ const tocHighlightConfig = useMemo(() => {
65
+ if (linkClassName && linkActiveClassName) {
66
+ return {
67
+ linkClassName,
68
+ linkActiveClassName,
69
+ minHeadingLevel,
70
+ maxHeadingLevel,
71
+ };
72
+ }
73
+
74
+ return undefined;
75
+ }, [linkClassName, linkActiveClassName, minHeadingLevel, maxHeadingLevel]);
76
+ useTOCHighlight(tocHighlightConfig);
77
+ return (
78
+ <TOCItemList
79
+ toc={tocTree}
80
+ className={className}
81
+ linkClassName={linkClassName}
82
+ {...props}
83
+ />
84
+ );
85
+ }
@@ -5,8 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React from 'react';
8
-
9
- function TabItem({children, hidden, className}) {
8
+ export default function TabItem({children, hidden, className}) {
10
9
  return (
11
10
  <div
12
11
  role="tabpanel"
@@ -18,5 +17,3 @@ function TabItem({children, hidden, className}) {
18
17
  </div>
19
18
  );
20
19
  }
21
-
22
- export default TabItem;