@docusaurus/theme-classic 2.0.0-beta.1decd6f80 → 2.0.0-beta.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (552) hide show
  1. package/README.md +2 -2
  2. package/lib/admonitions.css +39 -0
  3. package/lib/deps.d.ts +13 -0
  4. package/lib/getSwizzleConfig.js +243 -0
  5. package/lib/index.js +65 -54
  6. package/lib/nprogress.css +41 -0
  7. package/lib/nprogress.js +46 -0
  8. package/lib/prism-include-languages.js +9 -5
  9. package/lib/theme-classic.d.ts +1279 -0
  10. package/lib/translations.js +52 -36
  11. package/lib/validateThemeConfig.js +298 -248
  12. package/lib-next/theme/Admonition/index.js +101 -0
  13. package/lib-next/theme/AnnouncementBar/index.js +10 -22
  14. package/lib-next/theme/AnnouncementBar/styles.module.css +26 -35
  15. package/lib-next/theme/BackToTopButton/index.js +33 -0
  16. package/lib-next/theme/BackToTopButton/styles.module.css +44 -0
  17. package/lib-next/theme/BlogArchivePage/index.js +84 -0
  18. package/lib-next/theme/BlogLayout/index.js +33 -0
  19. package/lib-next/theme/BlogListPage/index.js +45 -35
  20. package/lib-next/theme/BlogListPaginator/index.js +27 -33
  21. package/lib-next/theme/BlogPostAuthor/index.js +49 -0
  22. package/lib-next/theme/BlogPostAuthors/index.js +44 -0
  23. package/lib-next/theme/BlogPostAuthors/styles.module.css +21 -0
  24. package/lib-next/theme/BlogPostItem/index.js +112 -97
  25. package/lib-next/theme/BlogPostItem/styles.module.css +14 -1
  26. package/lib-next/theme/BlogPostPage/index.js +84 -41
  27. package/lib-next/theme/BlogPostPaginator/index.js +28 -38
  28. package/lib-next/theme/BlogSidebar/Desktop/index.js +41 -0
  29. package/{lib/theme/BlogSidebar → lib-next/theme/BlogSidebar/Desktop}/styles.module.css +8 -9
  30. package/lib-next/theme/BlogSidebar/Mobile/index.js +36 -0
  31. package/lib-next/theme/BlogSidebar/index.js +11 -24
  32. package/lib-next/theme/BlogTagsListPage/index.js +24 -71
  33. package/lib-next/theme/BlogTagsPostsPage/index.js +55 -62
  34. package/lib-next/theme/CodeBlock/Container/index.js +29 -0
  35. package/lib-next/theme/CodeBlock/Container/styles.module.css +14 -0
  36. package/lib-next/theme/CodeBlock/Content/Element.js +23 -0
  37. package/lib-next/theme/CodeBlock/Content/String.js +104 -0
  38. package/{src/theme/CodeBlock → lib-next/theme/CodeBlock/Content}/styles.module.css +47 -32
  39. package/lib-next/theme/CodeBlock/CopyButton/index.js +61 -0
  40. package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  41. package/lib-next/theme/CodeBlock/Line/index.js +49 -0
  42. package/lib-next/theme/CodeBlock/Line/styles.module.css +51 -0
  43. package/lib-next/theme/CodeBlock/WordWrapButton/index.js +40 -0
  44. package/lib-next/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  45. package/lib-next/theme/CodeBlock/index.js +28 -255
  46. package/lib-next/theme/ColorModeToggle/index.js +62 -0
  47. package/lib-next/theme/ColorModeToggle/styles.module.css +35 -0
  48. package/lib-next/theme/Details/index.js +21 -0
  49. package/lib-next/theme/Details/styles.module.css +13 -0
  50. package/lib-next/theme/DocBreadcrumbs/index.js +120 -0
  51. package/{lib/theme/Heading/styles.css → lib-next/theme/DocBreadcrumbs/styles.module.css} +9 -13
  52. package/lib-next/theme/DocCard/index.js +93 -0
  53. package/lib-next/theme/DocCard/styles.module.css +34 -0
  54. package/lib-next/theme/DocCardList/index.js +33 -0
  55. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +75 -0
  56. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +26 -0
  57. package/lib-next/theme/DocItem/index.js +99 -86
  58. package/lib-next/theme/DocItem/styles.module.css +12 -12
  59. package/lib-next/theme/DocItemFooter/index.js +79 -0
  60. package/{lib/theme/Layout/styles.css → lib-next/theme/DocItemFooter/styles.module.css} +8 -11
  61. package/lib-next/theme/DocPage/Layout/Main/index.js +29 -0
  62. package/lib-next/theme/DocPage/Layout/Main/styles.module.css +28 -0
  63. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/index.js +34 -0
  64. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  65. package/lib-next/theme/DocPage/Layout/Sidebar/index.js +68 -0
  66. package/lib-next/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  67. package/lib-next/theme/DocPage/Layout/index.js +34 -0
  68. package/{lib/theme/BlogPostItem/styles.module.css → lib-next/theme/DocPage/Layout/index.module.css} +5 -4
  69. package/lib-next/theme/DocPage/index.js +40 -133
  70. package/lib-next/theme/DocPaginator/index.js +29 -41
  71. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/index.js +34 -0
  72. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  73. package/lib-next/theme/DocSidebar/Desktop/Content/index.js +46 -0
  74. package/lib-next/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  75. package/lib-next/theme/DocSidebar/Desktop/index.js +36 -0
  76. package/lib-next/theme/DocSidebar/Desktop/styles.module.css +50 -0
  77. package/lib-next/theme/DocSidebar/Mobile/index.js +49 -0
  78. package/lib-next/theme/DocSidebar/index.js +13 -333
  79. package/lib-next/theme/DocSidebarItem/Category.js +197 -0
  80. package/lib-next/theme/DocSidebarItem/Html.js +27 -0
  81. package/lib-next/theme/DocSidebarItem/Html.module.css +13 -0
  82. package/lib-next/theme/DocSidebarItem/Link.js +53 -0
  83. package/lib-next/theme/DocSidebarItem/Link.module.css +10 -0
  84. package/lib-next/theme/DocSidebarItem/index.js +23 -0
  85. package/lib-next/theme/DocSidebarItems/index.js +23 -0
  86. package/lib-next/theme/DocTagDocListPage/index.js +96 -0
  87. package/lib-next/theme/DocTagsListPage/index.js +40 -0
  88. package/lib-next/theme/DocVersionBadge/index.js +34 -0
  89. package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +55 -37
  90. package/lib-next/theme/EditThisPage/index.js +6 -1
  91. package/lib-next/theme/ErrorPageContent.js +35 -0
  92. package/lib-next/theme/Footer/Copyright/index.js +18 -0
  93. package/lib-next/theme/Footer/Layout/index.js +26 -0
  94. package/lib-next/theme/Footer/LinkItem/index.js +33 -0
  95. package/lib-next/theme/Footer/Links/MultiColumn/index.js +47 -0
  96. package/lib-next/theme/Footer/Links/Simple/index.js +41 -0
  97. package/lib-next/theme/Footer/Links/index.js +17 -0
  98. package/lib-next/theme/Footer/Logo/index.js +38 -0
  99. package/lib-next/theme/Footer/{styles.module.css → Logo/styles.module.css} +2 -1
  100. package/lib-next/theme/Footer/index.js +12 -100
  101. package/lib-next/theme/Heading/index.js +31 -38
  102. package/lib-next/theme/Heading/styles.module.css +27 -2
  103. package/lib-next/theme/IconArrow/index.js +3 -6
  104. package/lib-next/theme/IconClose/index.js +23 -0
  105. package/lib-next/theme/IconDarkMode/index.js +17 -0
  106. package/lib-next/theme/IconEdit/index.js +5 -10
  107. package/lib-next/theme/IconExternalLink/index.js +23 -0
  108. package/lib-next/theme/{LastUpdated → IconExternalLink}/styles.module.css +2 -2
  109. package/lib-next/theme/IconHome/index.js +17 -0
  110. package/lib-next/theme/IconLanguage/index.js +5 -8
  111. package/lib-next/theme/IconLightMode/index.js +17 -0
  112. package/lib-next/theme/IconMenu/index.js +8 -9
  113. package/lib-next/theme/LastUpdated/index.js +36 -39
  114. package/lib-next/theme/Layout/index.js +19 -16
  115. package/lib-next/theme/Layout/styles.css +6 -0
  116. package/lib-next/theme/LayoutProviders/index.js +22 -10
  117. package/lib-next/theme/Logo/index.js +21 -16
  118. package/lib-next/theme/{ThemeContext.js → MDXComponents/A.js} +4 -2
  119. package/lib-next/theme/MDXComponents/Code.js +28 -0
  120. package/lib-next/theme/MDXComponents/Details.js +20 -0
  121. package/lib-next/theme/MDXComponents/Head.js +26 -0
  122. package/lib-next/theme/MDXComponents/Heading.js +11 -0
  123. package/lib-next/theme/MDXComponents/Img.js +24 -0
  124. package/{lib/theme/LastUpdated/styles.module.css → lib-next/theme/MDXComponents/Img.module.css} +2 -2
  125. package/lib-next/theme/MDXComponents/Pre.js +18 -0
  126. package/lib-next/theme/MDXComponents/Ul.js +21 -0
  127. package/lib-next/theme/MDXComponents/index.js +22 -42
  128. package/lib-next/theme/MDXContent/index.js +12 -0
  129. package/lib-next/theme/MDXPage/index.js +38 -39
  130. package/{lib/theme/IconEdit → lib-next/theme/MDXPage}/styles.module.css +2 -3
  131. package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
  132. package/lib-next/theme/Navbar/Content/index.js +75 -0
  133. package/lib-next/theme/Navbar/Content/styles.module.css +15 -0
  134. package/lib-next/theme/Navbar/Layout/index.js +54 -0
  135. package/{src/theme/Navbar → lib-next/theme/Navbar/Layout}/styles.module.css +1 -7
  136. package/lib-next/theme/Navbar/Logo/index.js +17 -0
  137. package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
  138. package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
  139. package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
  140. package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
  141. package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
  142. package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
  143. package/lib-next/theme/Navbar/Search/index.js +11 -0
  144. package/lib-next/theme/Navbar/Search/styles.module.css +20 -0
  145. package/lib-next/theme/Navbar/index.js +7 -137
  146. package/lib-next/theme/NavbarItem/ComponentTypes.js +27 -0
  147. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +33 -186
  148. package/lib-next/theme/NavbarItem/DocNavbarItem.js +14 -14
  149. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +41 -0
  150. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +55 -45
  151. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +2 -6
  152. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +167 -0
  153. package/lib-next/theme/NavbarItem/HtmlNavbarItem.js +30 -0
  154. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +16 -22
  155. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  156. package/lib-next/theme/NavbarItem/NavbarNavLink.js +84 -0
  157. package/lib-next/theme/NavbarItem/SearchNavbarItem.js +6 -1
  158. package/lib-next/theme/NavbarItem/index.js +18 -25
  159. package/lib-next/theme/NavbarItem/utils.js +10 -0
  160. package/lib-next/theme/NotFound.js +40 -34
  161. package/lib-next/theme/PaginatorNavLink/index.js +23 -0
  162. package/lib-next/theme/SearchBar.js +1 -1
  163. package/lib-next/theme/SearchMetadata/index.js +34 -0
  164. package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +31 -46
  165. package/lib-next/theme/SkipToContent/index.js +7 -32
  166. package/lib-next/theme/SkipToContent/styles.module.css +8 -3
  167. package/lib-next/theme/TOC/index.js +12 -39
  168. package/lib-next/theme/TOC/styles.module.css +2 -2
  169. package/lib-next/theme/TOCCollapsible/CollapseButton.js +29 -0
  170. package/lib-next/theme/TOCCollapsible/CollapseButton.module.css +29 -0
  171. package/lib-next/theme/TOCCollapsible/index.js +42 -0
  172. package/lib-next/theme/TOCCollapsible/index.module.css +31 -0
  173. package/lib-next/theme/TOCInline/index.js +10 -31
  174. package/lib-next/theme/TOCItems/Tree.js +40 -0
  175. package/lib-next/theme/TOCItems/index.js +54 -0
  176. package/lib-next/theme/TabItem/index.js +4 -5
  177. package/lib-next/theme/TabItem/styles.module.css +10 -0
  178. package/lib-next/theme/Tabs/__tests__/index.test.js +146 -0
  179. package/lib-next/theme/Tabs/index.js +111 -53
  180. package/lib-next/theme/Tabs/styles.module.css +4 -13
  181. package/lib-next/theme/Tag/index.js +23 -0
  182. package/lib-next/theme/Tag/styles.module.css +70 -0
  183. package/lib-next/theme/TagsListByLetter/index.js +40 -0
  184. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  185. package/lib-next/theme/TagsListInline/index.js +31 -0
  186. package/{lib/theme/Heading → lib-next/theme/TagsListInline}/styles.module.css +7 -2
  187. package/lib-next/theme/ThemedImage/index.js +10 -14
  188. package/lib-next/theme/ThemedImage/styles.module.css +9 -2
  189. package/lib-next/theme/prism-include-languages.js +17 -15
  190. package/package.json +37 -31
  191. package/src/admonitions.css +39 -0
  192. package/src/deps.d.ts +13 -0
  193. package/src/getSwizzleConfig.ts +252 -0
  194. package/src/index.ts +76 -75
  195. package/src/nprogress.css +41 -0
  196. package/src/nprogress.ts +31 -0
  197. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  198. package/src/theme/Admonition/index.tsx +106 -0
  199. package/src/theme/AnnouncementBar/index.tsx +11 -20
  200. package/src/theme/AnnouncementBar/styles.module.css +26 -35
  201. package/src/theme/BackToTopButton/index.tsx +34 -0
  202. package/src/theme/BackToTopButton/styles.module.css +44 -0
  203. package/src/theme/BlogArchivePage/index.tsx +92 -0
  204. package/src/theme/BlogLayout/index.tsx +38 -0
  205. package/src/theme/BlogListPage/index.tsx +45 -35
  206. package/src/theme/BlogListPaginator/index.tsx +27 -32
  207. package/src/theme/BlogPostAuthor/index.tsx +50 -0
  208. package/src/theme/BlogPostAuthors/index.tsx +49 -0
  209. package/src/theme/BlogPostAuthors/styles.module.css +21 -0
  210. package/src/theme/BlogPostItem/index.tsx +103 -93
  211. package/src/theme/BlogPostItem/styles.module.css +14 -1
  212. package/src/theme/BlogPostPage/index.tsx +84 -42
  213. package/src/theme/BlogPostPaginator/index.tsx +28 -37
  214. package/src/theme/BlogSidebar/Desktop/index.tsx +45 -0
  215. package/{lib-next/theme/BlogSidebar → src/theme/BlogSidebar/Desktop}/styles.module.css +8 -9
  216. package/src/theme/BlogSidebar/Mobile/index.tsx +38 -0
  217. package/src/theme/BlogSidebar/index.tsx +10 -24
  218. package/src/theme/BlogTagsListPage/index.tsx +24 -71
  219. package/src/theme/BlogTagsPostsPage/index.tsx +57 -65
  220. package/src/theme/CodeBlock/Container/index.tsx +35 -0
  221. package/src/theme/CodeBlock/Container/styles.module.css +14 -0
  222. package/src/theme/CodeBlock/Content/Element.tsx +30 -0
  223. package/src/theme/CodeBlock/Content/String.tsx +111 -0
  224. package/{lib/theme/CodeBlock → src/theme/CodeBlock/Content}/styles.module.css +47 -32
  225. package/src/theme/CodeBlock/CopyButton/index.tsx +67 -0
  226. package/src/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  227. package/src/theme/CodeBlock/Line/index.tsx +48 -0
  228. package/src/theme/CodeBlock/Line/styles.module.css +51 -0
  229. package/src/theme/CodeBlock/WordWrapButton/index.tsx +49 -0
  230. package/src/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  231. package/src/theme/CodeBlock/index.tsx +29 -252
  232. package/src/theme/ColorModeToggle/index.tsx +67 -0
  233. package/src/theme/ColorModeToggle/styles.module.css +35 -0
  234. package/src/theme/Details/index.tsx +25 -0
  235. package/src/theme/Details/styles.module.css +13 -0
  236. package/src/theme/DocBreadcrumbs/index.tsx +140 -0
  237. package/src/theme/{Heading/styles.css → DocBreadcrumbs/styles.module.css} +9 -13
  238. package/src/theme/DocCard/index.tsx +116 -0
  239. package/src/theme/DocCard/styles.module.css +34 -0
  240. package/src/theme/DocCardList/index.tsx +36 -0
  241. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +86 -0
  242. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +26 -0
  243. package/src/theme/DocItem/index.tsx +93 -79
  244. package/src/theme/DocItem/styles.module.css +12 -12
  245. package/src/theme/DocItemFooter/index.tsx +91 -0
  246. package/src/theme/DocItemFooter/styles.module.css +18 -0
  247. package/src/theme/DocPage/Layout/Main/index.tsx +37 -0
  248. package/src/theme/DocPage/Layout/Main/styles.module.css +28 -0
  249. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx +40 -0
  250. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  251. package/src/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  252. package/src/theme/DocPage/Layout/Sidebar/index.tsx +74 -0
  253. package/{lib-next/theme/hooks/styles.css → src/theme/DocPage/Layout/index.module.css} +7 -2
  254. package/src/theme/DocPage/Layout/index.tsx +39 -0
  255. package/src/theme/DocPage/index.tsx +40 -146
  256. package/src/theme/DocPaginator/index.tsx +29 -40
  257. package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
  258. package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  259. package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
  260. package/src/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  261. package/src/theme/DocSidebar/Desktop/index.tsx +40 -0
  262. package/src/theme/DocSidebar/Desktop/styles.module.css +50 -0
  263. package/src/theme/DocSidebar/Mobile/index.tsx +54 -0
  264. package/src/theme/DocSidebar/index.tsx +14 -343
  265. package/src/theme/DocSidebarItem/Category.tsx +210 -0
  266. package/src/theme/DocSidebarItem/Html.module.css +13 -0
  267. package/src/theme/DocSidebarItem/Html.tsx +34 -0
  268. package/src/theme/DocSidebarItem/Link.module.css +10 -0
  269. package/src/theme/DocSidebarItem/Link.tsx +58 -0
  270. package/src/theme/DocSidebarItem/index.tsx +27 -0
  271. package/src/theme/DocSidebarItems/index.tsx +27 -0
  272. package/src/theme/DocTagDocListPage/index.tsx +96 -0
  273. package/src/theme/DocTagsListPage/index.tsx +44 -0
  274. package/src/theme/DocVersionBadge/index.tsx +35 -0
  275. package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +78 -49
  276. package/src/theme/EditThisPage/index.tsx +6 -1
  277. package/src/theme/ErrorPageContent.tsx +41 -0
  278. package/src/theme/Footer/Copyright/index.tsx +20 -0
  279. package/src/theme/Footer/Layout/index.tsx +34 -0
  280. package/src/theme/Footer/LinkItem/index.tsx +36 -0
  281. package/src/theme/Footer/Links/MultiColumn/index.tsx +51 -0
  282. package/src/theme/Footer/Links/Simple/index.tsx +42 -0
  283. package/src/theme/Footer/Links/index.tsx +21 -0
  284. package/src/theme/Footer/Logo/index.tsx +41 -0
  285. package/{lib/theme/Footer → src/theme/Footer/Logo}/styles.module.css +2 -1
  286. package/src/theme/Footer/index.tsx +13 -113
  287. package/src/theme/Heading/index.tsx +33 -39
  288. package/src/theme/Heading/styles.module.css +27 -2
  289. package/src/theme/IconArrow/index.tsx +3 -5
  290. package/src/theme/IconClose/index.tsx +26 -0
  291. package/src/theme/IconDarkMode/index.tsx +20 -0
  292. package/src/theme/IconEdit/index.tsx +8 -9
  293. package/src/theme/IconExternalLink/index.tsx +30 -0
  294. package/src/theme/IconExternalLink/styles.module.css +10 -0
  295. package/src/theme/IconHome/index.tsx +20 -0
  296. package/src/theme/IconLanguage/index.tsx +6 -8
  297. package/src/theme/IconLightMode/index.tsx +20 -0
  298. package/src/theme/IconMenu/index.tsx +4 -9
  299. package/src/theme/LastUpdated/index.tsx +36 -39
  300. package/src/theme/Layout/index.tsx +19 -15
  301. package/src/theme/Layout/styles.css +6 -0
  302. package/src/theme/LayoutProviders/index.tsx +22 -10
  303. package/src/theme/Logo/index.tsx +21 -15
  304. package/src/theme/{ThemeContext.ts → MDXComponents/A.tsx} +5 -6
  305. package/src/theme/MDXComponents/Code.tsx +37 -0
  306. package/src/theme/MDXComponents/Details.tsx +25 -0
  307. package/src/theme/MDXComponents/Head.tsx +29 -0
  308. package/src/theme/MDXComponents/Heading.tsx +14 -0
  309. package/src/theme/{LastUpdated/styles.module.css → MDXComponents/Img.module.css} +2 -2
  310. package/src/theme/MDXComponents/Img.tsx +26 -0
  311. package/src/theme/MDXComponents/Pre.tsx +22 -0
  312. package/src/theme/MDXComponents/Ul.tsx +24 -0
  313. package/src/theme/MDXComponents/index.tsx +23 -42
  314. package/src/theme/MDXContent/index.tsx +15 -0
  315. package/src/theme/MDXPage/index.tsx +39 -39
  316. package/src/theme/MDXPage/styles.module.css +10 -0
  317. package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
  318. package/src/theme/Navbar/Content/index.tsx +86 -0
  319. package/src/theme/Navbar/Content/styles.module.css +15 -0
  320. package/src/theme/Navbar/Layout/index.tsx +57 -0
  321. package/{lib-next/theme/Navbar → src/theme/Navbar/Layout}/styles.module.css +1 -7
  322. package/src/theme/Navbar/Logo/index.tsx +19 -0
  323. package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
  324. package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
  325. package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
  326. package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
  327. package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
  328. package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
  329. package/src/theme/Navbar/Search/index.tsx +15 -0
  330. package/src/theme/Navbar/Search/styles.module.css +20 -0
  331. package/src/theme/Navbar/index.tsx +7 -147
  332. package/src/theme/NavbarItem/ComponentTypes.tsx +32 -0
  333. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +37 -194
  334. package/src/theme/NavbarItem/DocNavbarItem.tsx +17 -18
  335. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +44 -0
  336. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +60 -51
  337. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +5 -8
  338. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +193 -0
  339. package/src/theme/NavbarItem/HtmlNavbarItem.tsx +32 -0
  340. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +19 -17
  341. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  342. package/src/theme/NavbarItem/NavbarNavLink.tsx +80 -0
  343. package/src/theme/NavbarItem/SearchNavbarItem.tsx +6 -1
  344. package/src/theme/NavbarItem/index.tsx +23 -30
  345. package/src/theme/NavbarItem/utils.ts +13 -0
  346. package/src/theme/NotFound.tsx +40 -33
  347. package/src/theme/PaginatorNavLink/index.tsx +26 -0
  348. package/src/theme/SearchBar.tsx +2 -1
  349. package/src/theme/SearchMetadata/index.tsx +43 -0
  350. package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +31 -40
  351. package/src/theme/SkipToContent/index.tsx +7 -32
  352. package/src/theme/SkipToContent/styles.module.css +8 -3
  353. package/src/theme/TOC/index.tsx +13 -44
  354. package/src/theme/TOC/styles.module.css +2 -2
  355. package/src/theme/TOCCollapsible/CollapseButton.module.css +29 -0
  356. package/src/theme/TOCCollapsible/CollapseButton.tsx +35 -0
  357. package/src/theme/TOCCollapsible/index.module.css +31 -0
  358. package/src/theme/TOCCollapsible/index.tsx +45 -0
  359. package/src/theme/TOCInline/index.tsx +14 -35
  360. package/src/theme/TOCItems/Tree.tsx +46 -0
  361. package/src/theme/TOCItems/index.tsx +61 -0
  362. package/src/theme/TabItem/index.tsx +12 -4
  363. package/src/theme/TabItem/styles.module.css +10 -0
  364. package/src/theme/Tabs/index.tsx +120 -62
  365. package/src/theme/Tabs/styles.module.css +4 -13
  366. package/src/theme/Tag/index.tsx +27 -0
  367. package/src/theme/Tag/styles.module.css +70 -0
  368. package/src/theme/TagsListByLetter/index.tsx +43 -0
  369. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  370. package/src/theme/TagsListInline/index.tsx +35 -0
  371. package/src/theme/TagsListInline/styles.module.css +15 -0
  372. package/src/theme/ThemedImage/index.tsx +12 -13
  373. package/src/theme/ThemedImage/styles.module.css +9 -2
  374. package/src/theme/prism-include-languages.ts +20 -15
  375. package/src/theme-classic.d.ts +1279 -0
  376. package/src/translations.ts +84 -58
  377. package/src/validateThemeConfig.ts +448 -0
  378. package/babel.config.js +0 -35
  379. package/codeTranslations/README.md +0 -20
  380. package/codeTranslations/ar.json +0 -55
  381. package/codeTranslations/base.json +0 -108
  382. package/codeTranslations/da.json +0 -55
  383. package/codeTranslations/de.json +0 -55
  384. package/codeTranslations/es.json +0 -55
  385. package/codeTranslations/fa.json +0 -55
  386. package/codeTranslations/fil.json +0 -55
  387. package/codeTranslations/fr.json +0 -55
  388. package/codeTranslations/he.json +0 -55
  389. package/codeTranslations/hi.json +0 -55
  390. package/codeTranslations/ja.json +0 -55
  391. package/codeTranslations/ko.json +0 -55
  392. package/codeTranslations/pl.json +0 -55
  393. package/codeTranslations/pt-BR.json +0 -55
  394. package/codeTranslations/pt-PT.json +0 -55
  395. package/codeTranslations/ru.json +0 -55
  396. package/codeTranslations/tr.json +0 -55
  397. package/codeTranslations/vi.json +0 -55
  398. package/codeTranslations/zh-Hans.json +0 -55
  399. package/codeTranslations/zh-Hant.json +0 -55
  400. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  401. package/lib/__tests__/translations.test.js +0 -112
  402. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  403. package/lib/theme/AnnouncementBar/index.js +0 -74
  404. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  405. package/lib/theme/BlogListPage/index.js +0 -71
  406. package/lib/theme/BlogListPaginator/index.js +0 -63
  407. package/lib/theme/BlogPostItem/index.js +0 -152
  408. package/lib/theme/BlogPostPage/index.js +0 -75
  409. package/lib/theme/BlogPostPaginator/index.js +0 -64
  410. package/lib/theme/BlogSidebar/index.js +0 -43
  411. package/lib/theme/BlogTagsListPage/index.js +0 -81
  412. package/lib/theme/BlogTagsPostsPage/index.js +0 -104
  413. package/lib/theme/CodeBlock/index.js +0 -253
  414. package/lib/theme/DocItem/index.js +0 -120
  415. package/lib/theme/DocItem/styles.module.css +0 -28
  416. package/lib/theme/DocPage/index.js +0 -141
  417. package/lib/theme/DocPage/styles.module.css +0 -98
  418. package/lib/theme/DocPaginator/index.js +0 -63
  419. package/lib/theme/DocSidebar/index.js +0 -307
  420. package/lib/theme/DocSidebar/styles.module.css +0 -138
  421. package/lib/theme/DocVersionSuggestions/index.js +0 -111
  422. package/lib/theme/EditThisPage/index.js +0 -31
  423. package/lib/theme/Footer/index.js +0 -108
  424. package/lib/theme/Heading/index.js +0 -60
  425. package/lib/theme/IconArrow/index.js +0 -28
  426. package/lib/theme/IconEdit/index.js +0 -34
  427. package/lib/theme/IconLanguage/index.js +0 -29
  428. package/lib/theme/IconMenu/index.js +0 -31
  429. package/lib/theme/LastUpdated/index.js +0 -65
  430. package/lib/theme/Layout/index.js +0 -64
  431. package/lib/theme/LayoutHead/index.js +0 -142
  432. package/lib/theme/LayoutProviders/index.js +0 -34
  433. package/lib/theme/Logo/index.js +0 -59
  434. package/lib/theme/MDXComponents/index.js +0 -65
  435. package/lib/theme/MDXPage/index.js +0 -68
  436. package/lib/theme/Navbar/index.js +0 -147
  437. package/lib/theme/Navbar/styles.module.css +0 -20
  438. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -195
  439. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -55
  440. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -75
  441. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  442. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  443. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  444. package/lib/theme/NavbarItem/index.js +0 -54
  445. package/lib/theme/NotFound.js +0 -50
  446. package/lib/theme/SearchBar.js +0 -15
  447. package/lib/theme/SearchMetadatas/index.js +0 -33
  448. package/lib/theme/Seo/index.js +0 -50
  449. package/lib/theme/SkipToContent/index.js +0 -61
  450. package/lib/theme/SkipToContent/styles.module.css +0 -16
  451. package/lib/theme/TOC/index.js +0 -59
  452. package/lib/theme/TOC/styles.module.css +0 -23
  453. package/lib/theme/TOCInline/index.js +0 -53
  454. package/lib/theme/TOCInline/styles.module.css +0 -12
  455. package/lib/theme/TabItem/index.js +0 -32
  456. package/lib/theme/Tabs/index.js +0 -150
  457. package/lib/theme/Tabs/styles.module.css +0 -23
  458. package/lib/theme/ThemeContext.js +0 -21
  459. package/lib/theme/ThemeProvider/index.js +0 -38
  460. package/lib/theme/ThemedImage/index.js +0 -48
  461. package/lib/theme/ThemedImage/styles.module.css +0 -11
  462. package/lib/theme/Toggle/index.js +0 -106
  463. package/lib/theme/Toggle/styles.module.css +0 -114
  464. package/lib/theme/UserPreferencesContext.js +0 -18
  465. package/lib/theme/UserPreferencesProvider/index.js +0 -44
  466. package/lib/theme/hooks/styles.css +0 -10
  467. package/lib/theme/hooks/useAnnouncementBar.js +0 -63
  468. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  469. package/lib/theme/hooks/useDocs.js +0 -18
  470. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  471. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  472. package/lib/theme/hooks/useLocationHash.js +0 -28
  473. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  474. package/lib/theme/hooks/usePrismTheme.js +0 -36
  475. package/lib/theme/hooks/useScrollPosition.js +0 -49
  476. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  477. package/lib/theme/hooks/useTabGroupChoice.js +0 -53
  478. package/lib/theme/hooks/useTheme.js +0 -99
  479. package/lib/theme/hooks/useThemeContext.js +0 -31
  480. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  481. package/lib/theme/hooks/useWindowSize.js +0 -55
  482. package/lib/theme/prism-include-languages.js +0 -39
  483. package/lib/types.d.ts +0 -600
  484. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  485. package/lib-next/__tests__/translations.test.js +0 -128
  486. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  487. package/lib-next/index.js +0 -198
  488. package/lib-next/theme/CodeBlock/styles.module.css +0 -71
  489. package/lib-next/theme/DocPage/styles.module.css +0 -98
  490. package/lib-next/theme/DocSidebar/styles.module.css +0 -138
  491. package/lib-next/theme/Heading/styles.css +0 -23
  492. package/lib-next/theme/SearchMetadatas/index.js +0 -20
  493. package/lib-next/theme/Seo/index.js +0 -37
  494. package/lib-next/theme/ThemeProvider/index.js +0 -25
  495. package/lib-next/theme/Toggle/index.js +0 -95
  496. package/lib-next/theme/Toggle/styles.module.css +0 -114
  497. package/lib-next/theme/UserPreferencesContext.js +0 -9
  498. package/lib-next/theme/UserPreferencesProvider/index.js +0 -28
  499. package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
  500. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  501. package/lib-next/theme/hooks/useDocs.js +0 -10
  502. package/lib-next/theme/hooks/useHideableNavbar.js +0 -79
  503. package/lib-next/theme/hooks/useKeyboardNavigation.js +0 -35
  504. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  505. package/lib-next/theme/hooks/useLockBodyScroll.js +0 -18
  506. package/lib-next/theme/hooks/usePrismTheme.js +0 -20
  507. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  508. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  509. package/lib-next/theme/hooks/useTabGroupChoice.js +0 -41
  510. package/lib-next/theme/hooks/useTheme.js +0 -82
  511. package/lib-next/theme/hooks/useThemeContext.js +0 -22
  512. package/lib-next/theme/hooks/useUserPreferencesContext.js +0 -22
  513. package/lib-next/theme/hooks/useWindowSize.js +0 -45
  514. package/lib-next/translations.js +0 -145
  515. package/lib-next/types.d.ts +0 -600
  516. package/lib-next/validateThemeConfig.js +0 -317
  517. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  518. package/src/__tests__/translations.test.ts +0 -116
  519. package/src/__tests__/validateThemeConfig.test.js +0 -333
  520. package/src/prism-include-languages.js +0 -11
  521. package/src/theme/BlogSidebar/styles.module.css +0 -46
  522. package/src/theme/DocPage/styles.module.css +0 -98
  523. package/src/theme/DocSidebar/styles.module.css +0 -138
  524. package/src/theme/Footer/styles.module.css +0 -15
  525. package/src/theme/SearchMetadatas/index.tsx +0 -28
  526. package/src/theme/Seo/index.tsx +0 -47
  527. package/src/theme/ThemeProvider/index.tsx +0 -24
  528. package/src/theme/Toggle/index.tsx +0 -113
  529. package/src/theme/Toggle/styles.module.css +0 -114
  530. package/src/theme/UserPreferencesContext.ts +0 -12
  531. package/src/theme/UserPreferencesProvider/index.tsx +0 -32
  532. package/src/theme/hooks/styles.css +0 -10
  533. package/src/theme/hooks/useAnnouncementBar.ts +0 -58
  534. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  535. package/src/theme/hooks/useDocs.ts +0 -11
  536. package/src/theme/hooks/useHideableNavbar.ts +0 -85
  537. package/src/theme/hooks/useKeyboardNavigation.ts +0 -39
  538. package/src/theme/hooks/useLocationHash.ts +0 -25
  539. package/src/theme/hooks/useLockBodyScroll.ts +0 -20
  540. package/src/theme/hooks/usePrismTheme.ts +0 -22
  541. package/src/theme/hooks/useScrollPosition.ts +0 -45
  542. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  543. package/src/theme/hooks/useTabGroupChoice.ts +0 -46
  544. package/src/theme/hooks/useTheme.ts +0 -92
  545. package/src/theme/hooks/useThemeContext.ts +0 -23
  546. package/src/theme/hooks/useUserPreferencesContext.ts +0 -25
  547. package/src/theme/hooks/useWindowSize.ts +0 -51
  548. package/src/types.d.ts +0 -600
  549. package/src/validateThemeConfig.js +0 -317
  550. package/tsconfig.json +0 -12
  551. package/update-code-translations.js +0 -239
  552. package/update-code-translations.test.js +0 -33
@@ -5,264 +5,41 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import React, {useEffect, useState, useRef} from 'react';
9
- import clsx from 'clsx';
10
- import Highlight, {defaultProps, Language} from 'prism-react-renderer';
11
- import copy from 'copy-text-to-clipboard';
12
- import rangeParser from 'parse-numeric-range';
13
- import usePrismTheme from '@theme/hooks/usePrismTheme';
8
+ import React, {isValidElement, type ReactNode} from 'react';
9
+ import useIsBrowser from '@docusaurus/useIsBrowser';
14
10
  import type {Props} from '@theme/CodeBlock';
15
- import Translate, {translate} from '@docusaurus/Translate';
11
+ import ElementContent from '@theme/CodeBlock/Content/Element';
12
+ import StringContent from '@theme/CodeBlock/Content/String';
16
13
 
17
- import styles from './styles.module.css';
18
-
19
- import {useThemeConfig, parseCodeBlockTitle} from '@docusaurus/theme-common';
20
-
21
- const highlightLinesRangeRegex = /{([\d,-]+)}/;
22
- const getHighlightDirectiveRegex = (
23
- languages = ['js', 'jsBlock', 'jsx', 'python', 'html'],
24
- ) => {
25
- // supported types of comments
26
- const comments = {
27
- js: {
28
- start: '\\/\\/',
29
- end: '',
30
- },
31
- jsBlock: {
32
- start: '\\/\\*',
33
- end: '\\*\\/',
34
- },
35
- jsx: {
36
- start: '\\{\\s*\\/\\*',
37
- end: '\\*\\/\\s*\\}',
38
- },
39
- python: {
40
- start: '#',
41
- end: '',
42
- },
43
- html: {
44
- start: '<!--',
45
- end: '-->',
46
- },
47
- };
48
- // supported directives
49
- const directives = [
50
- 'highlight-next-line',
51
- 'highlight-start',
52
- 'highlight-end',
53
- ].join('|');
54
- // to be more reliable, the opening and closing comment must match
55
- const commentPattern = languages
56
- .map(
57
- (lang) =>
58
- `(?:${comments[lang].start}\\s*(${directives})\\s*${comments[lang].end})`,
59
- )
60
- .join('|');
61
- // white space is allowed, but otherwise it should be on it's own line
62
- return new RegExp(`^\\s*(?:${commentPattern})\\s*$`);
63
- };
64
- // select comment styles based on language
65
- const highlightDirectiveRegex = (lang) => {
66
- switch (lang) {
67
- case 'js':
68
- case 'javascript':
69
- case 'ts':
70
- case 'typescript':
71
- return getHighlightDirectiveRegex(['js', 'jsBlock']);
72
-
73
- case 'jsx':
74
- case 'tsx':
75
- return getHighlightDirectiveRegex(['js', 'jsBlock', 'jsx']);
76
-
77
- case 'html':
78
- return getHighlightDirectiveRegex(['js', 'jsBlock', 'html']);
79
-
80
- case 'python':
81
- case 'py':
82
- return getHighlightDirectiveRegex(['python']);
83
-
84
- default:
85
- // all comment types
86
- return getHighlightDirectiveRegex();
14
+ /**
15
+ * Best attempt to make the children a plain string so it is copyable. If there
16
+ * are react elements, we will not be able to copy the content, and it will
17
+ * return `children` as-is; otherwise, it concatenates the string children
18
+ * together.
19
+ */
20
+ function maybeStringifyChildren(children: ReactNode): ReactNode {
21
+ if (React.Children.toArray(children).some((el) => isValidElement(el))) {
22
+ return children;
87
23
  }
88
- };
24
+ // The children is now guaranteed to be one/more plain strings
25
+ return Array.isArray(children) ? children.join('') : (children as string);
26
+ }
89
27
 
90
28
  export default function CodeBlock({
91
- children,
92
- className: languageClassName,
93
- metastring,
94
- title,
29
+ children: rawChildren,
30
+ ...props
95
31
  }: Props): JSX.Element {
96
- const {prism} = useThemeConfig();
97
-
98
- const [showCopied, setShowCopied] = useState(false);
99
- const [mounted, setMounted] = useState(false);
100
- // The Prism theme on SSR is always the default theme but the site theme
101
- // can be in a different mode. React hydration doesn't update DOM styles
102
- // that come from SSR. Hence force a re-render after mounting to apply the
103
- // current relevant styles. There will be a flash seen of the original
104
- // styles seen using this current approach but that's probably ok. Fixing
105
- // the flash will require changing the theming approach and is not worth it
106
- // at this point.
107
- useEffect(() => {
108
- setMounted(true);
109
- }, []);
110
-
111
- // TODO: the title is provided by MDX as props automatically
112
- // so we probably don't need to parse the metastring
113
- // (note: title="xyz" => title prop still has the quotes)
114
- const codeBlockTitle = parseCodeBlockTitle(metastring) || title;
115
-
116
- const button = useRef(null);
117
- let highlightLines: number[] = [];
118
-
119
- const prismTheme = usePrismTheme();
120
-
121
- // In case interleaved Markdown (e.g. when using CodeBlock as standalone component).
122
- const content = Array.isArray(children) ? children.join('') : children;
123
-
124
- if (metastring && highlightLinesRangeRegex.test(metastring)) {
125
- // Tested above
126
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
127
- const highlightLinesRange = metastring.match(highlightLinesRangeRegex)![1];
128
- highlightLines = rangeParser(highlightLinesRange).filter((n) => n > 0);
129
- }
130
-
131
- let language =
132
- languageClassName &&
133
- // Force Prism's language union type to `any` because it does not contain all available languages
134
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
135
- ((languageClassName.replace(/language-/, '') as Language) as any);
136
-
137
- if (!language && prism.defaultLanguage) {
138
- language = prism.defaultLanguage;
139
- }
140
-
141
- // only declaration OR directive highlight can be used for a block
142
- let code = content.replace(/\n$/, '');
143
- if (highlightLines.length === 0 && language !== undefined) {
144
- let range = '';
145
- const directiveRegex = highlightDirectiveRegex(language);
146
- // go through line by line
147
- const lines = content.replace(/\n$/, '').split('\n');
148
- let blockStart;
149
- // loop through lines
150
- for (let index = 0; index < lines.length; ) {
151
- const line = lines[index];
152
- // adjust for 0-index
153
- const lineNumber = index + 1;
154
- const match = line.match(directiveRegex);
155
- if (match !== null) {
156
- const directive = match
157
- .slice(1)
158
- .reduce(
159
- (final: string | undefined, item) => final || item,
160
- undefined,
161
- );
162
- switch (directive) {
163
- case 'highlight-next-line':
164
- range += `${lineNumber},`;
165
- break;
166
-
167
- case 'highlight-start':
168
- blockStart = lineNumber;
169
- break;
170
-
171
- case 'highlight-end':
172
- range += `${blockStart}-${lineNumber - 1},`;
173
- break;
174
-
175
- default:
176
- break;
177
- }
178
- lines.splice(index, 1);
179
- } else {
180
- // lines without directives are unchanged
181
- index += 1;
182
- }
183
- }
184
- highlightLines = rangeParser(range);
185
- code = lines.join('\n');
186
- }
187
-
188
- const handleCopyCode = () => {
189
- copy(code);
190
- setShowCopied(true);
191
-
192
- setTimeout(() => setShowCopied(false), 2000);
193
- };
194
-
32
+ // The Prism theme on SSR is always the default theme but the site theme can
33
+ // be in a different mode. React hydration doesn't update DOM styles that come
34
+ // from SSR. Hence force a re-render after mounting to apply the current
35
+ // relevant styles.
36
+ const isBrowser = useIsBrowser();
37
+ const children = maybeStringifyChildren(rawChildren);
38
+ const CodeBlockComp =
39
+ typeof children === 'string' ? StringContent : ElementContent;
195
40
  return (
196
- <Highlight
197
- {...defaultProps}
198
- key={String(mounted)}
199
- theme={prismTheme}
200
- code={code}
201
- language={language}>
202
- {({className, style, tokens, getLineProps, getTokenProps}) => (
203
- <div className={styles.codeBlockContainer}>
204
- {codeBlockTitle && (
205
- <div style={style} className={styles.codeBlockTitle}>
206
- {codeBlockTitle}
207
- </div>
208
- )}
209
- <div className={clsx(styles.codeBlockContent, language)}>
210
- <div
211
- /* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */
212
- tabIndex={0}
213
- className={clsx(className, styles.codeBlock, 'thin-scrollbar', {
214
- [styles.codeBlockWithTitle]: codeBlockTitle,
215
- })}>
216
- <div className={styles.codeBlockLines} style={style}>
217
- {tokens.map((line, i) => {
218
- if (line.length === 1 && line[0].content === '') {
219
- line[0].content = '\n'; // eslint-disable-line no-param-reassign
220
- }
221
-
222
- const lineProps = getLineProps({line, key: i});
223
-
224
- if (highlightLines.includes(i + 1)) {
225
- lineProps.className = `${lineProps.className} docusaurus-highlight-code-line`;
226
- }
227
-
228
- return (
229
- <div key={i} {...lineProps}>
230
- {line.map((token, key) => (
231
- <span key={key} {...getTokenProps({token, key})} />
232
- ))}
233
- </div>
234
- );
235
- })}
236
- </div>
237
- </div>
238
-
239
- <button
240
- ref={button}
241
- type="button"
242
- aria-label={translate({
243
- id: 'theme.CodeBlock.copyButtonAriaLabel',
244
- message: 'Copy code to clipboard',
245
- description: 'The ARIA label for copy code blocks button',
246
- })}
247
- className={clsx(styles.copyButton)}
248
- onClick={handleCopyCode}>
249
- {showCopied ? (
250
- <Translate
251
- id="theme.CodeBlock.copied"
252
- description="The copied button label on code blocks">
253
- Copied
254
- </Translate>
255
- ) : (
256
- <Translate
257
- id="theme.CodeBlock.copy"
258
- description="The copy button label on code blocks">
259
- Copy
260
- </Translate>
261
- )}
262
- </button>
263
- </div>
264
- </div>
265
- )}
266
- </Highlight>
41
+ <CodeBlockComp key={String(isBrowser)} {...props}>
42
+ {children as string}
43
+ </CodeBlockComp>
267
44
  );
268
45
  }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+ import type {Props} from '@theme/ColorModeToggle';
10
+ import useIsBrowser from '@docusaurus/useIsBrowser';
11
+ import {translate} from '@docusaurus/Translate';
12
+ import IconLightMode from '@theme/IconLightMode';
13
+ import IconDarkMode from '@theme/IconDarkMode';
14
+
15
+ import clsx from 'clsx';
16
+ import styles from './styles.module.css';
17
+
18
+ function ColorModeToggle({className, value, onChange}: Props): JSX.Element {
19
+ const isBrowser = useIsBrowser();
20
+
21
+ const title = translate(
22
+ {
23
+ message: 'Switch between dark and light mode (currently {mode})',
24
+ id: 'theme.colorToggle.ariaLabel',
25
+ description: 'The ARIA label for the navbar color mode toggle',
26
+ },
27
+ {
28
+ mode:
29
+ value === 'dark'
30
+ ? translate({
31
+ message: 'dark mode',
32
+ id: 'theme.colorToggle.ariaLabel.mode.dark',
33
+ description: 'The name for the dark color mode',
34
+ })
35
+ : translate({
36
+ message: 'light mode',
37
+ id: 'theme.colorToggle.ariaLabel.mode.light',
38
+ description: 'The name for the light color mode',
39
+ }),
40
+ },
41
+ );
42
+
43
+ return (
44
+ <div className={clsx(styles.toggle, className)}>
45
+ <button
46
+ className={clsx(
47
+ 'clean-btn',
48
+ styles.toggleButton,
49
+ !isBrowser && styles.toggleButtonDisabled,
50
+ )}
51
+ type="button"
52
+ onClick={() => onChange(value === 'dark' ? 'light' : 'dark')}
53
+ disabled={!isBrowser}
54
+ title={title}
55
+ aria-label={title}>
56
+ <IconLightMode
57
+ className={clsx(styles.toggleIcon, styles.lightToggleIcon)}
58
+ />
59
+ <IconDarkMode
60
+ className={clsx(styles.toggleIcon, styles.darkToggleIcon)}
61
+ />
62
+ </button>
63
+ </div>
64
+ );
65
+ }
66
+
67
+ export default React.memo(ColorModeToggle);
@@ -0,0 +1,35 @@
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
+ .toggle {
9
+ width: 2rem;
10
+ height: 2rem;
11
+ }
12
+
13
+ .toggleButton {
14
+ -webkit-tap-highlight-color: transparent;
15
+ align-items: center;
16
+ display: flex;
17
+ justify-content: center;
18
+ width: 100%;
19
+ height: 100%;
20
+ border-radius: 50%;
21
+ transition: background var(--ifm-transition-fast);
22
+ }
23
+
24
+ .toggleButton:hover {
25
+ background: var(--ifm-color-emphasis-200);
26
+ }
27
+
28
+ [data-theme='light'] .darkToggleIcon,
29
+ [data-theme='dark'] .lightToggleIcon {
30
+ display: none;
31
+ }
32
+
33
+ .toggleButtonDisabled {
34
+ cursor: not-allowed;
35
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+ import clsx from 'clsx';
10
+ import {Details as DetailsGeneric} from '@docusaurus/theme-common/Details';
11
+ import type {Props} from '@theme/Details';
12
+ import styles from './styles.module.css';
13
+
14
+ // Should we have a custom details/summary comp in Infima instead of reusing
15
+ // alert classes?
16
+ const InfimaClasses = 'alert alert--info';
17
+
18
+ export default function Details({...props}: Props): JSX.Element {
19
+ return (
20
+ <DetailsGeneric
21
+ {...props}
22
+ className={clsx(InfimaClasses, styles.details, props.className)}
23
+ />
24
+ );
25
+ }
@@ -0,0 +1,13 @@
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
+ .details {
9
+ --docusaurus-details-decoration-color: var(--ifm-alert-border-color);
10
+ --docusaurus-details-transition: transform var(--ifm-transition-fast) ease;
11
+ margin: 0 0 var(--ifm-spacing-vertical);
12
+ border: 1px solid var(--ifm-alert-border-color);
13
+ }
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React, {type ReactNode} from 'react';
9
+ import {
10
+ ThemeClassNames,
11
+ useSidebarBreadcrumbs,
12
+ useHomePageRoute,
13
+ } from '@docusaurus/theme-common';
14
+ import styles from './styles.module.css';
15
+ import clsx from 'clsx';
16
+ import Link from '@docusaurus/Link';
17
+ import useBaseUrl from '@docusaurus/useBaseUrl';
18
+ import {translate} from '@docusaurus/Translate';
19
+ import IconHome from '@theme/IconHome';
20
+
21
+ // TODO move to design system folder
22
+ function BreadcrumbsItemLink({
23
+ children,
24
+ href,
25
+ isLast,
26
+ }: {
27
+ children: ReactNode;
28
+ href: string | undefined;
29
+ isLast: boolean;
30
+ }): JSX.Element {
31
+ const className = 'breadcrumbs__link';
32
+ if (isLast) {
33
+ return (
34
+ <span className={className} itemProp="name">
35
+ {children}
36
+ </span>
37
+ );
38
+ }
39
+ return href ? (
40
+ <Link className={className} href={href} itemProp="item">
41
+ <span itemProp="name">{children}</span>
42
+ </Link>
43
+ ) : (
44
+ // TODO Google search console doesn't like breadcrumb items without href.
45
+ // The schema doesn't seem to require `id` for each `item`, although Google
46
+ // insist to infer one, even if it's invalid. Removing `itemProp="item
47
+ // name"` for now, since I don't know how to properly fix it.
48
+ // See https://github.com/facebook/docusaurus/issues/7241
49
+ <span className={className}>{children}</span>
50
+ );
51
+ }
52
+
53
+ // TODO move to design system folder
54
+ function BreadcrumbsItem({
55
+ children,
56
+ active,
57
+ index,
58
+ addMicrodata,
59
+ }: {
60
+ children: ReactNode;
61
+ active?: boolean;
62
+ index: number;
63
+ addMicrodata: boolean;
64
+ }): JSX.Element {
65
+ return (
66
+ <li
67
+ {...(addMicrodata && {
68
+ itemScope: true,
69
+ itemProp: 'itemListElement',
70
+ itemType: 'https://schema.org/ListItem',
71
+ })}
72
+ className={clsx('breadcrumbs__item', {
73
+ 'breadcrumbs__item--active': active,
74
+ })}>
75
+ {children}
76
+ <meta itemProp="position" content={String(index + 1)} />
77
+ </li>
78
+ );
79
+ }
80
+
81
+ function HomeBreadcrumbItem() {
82
+ const homeHref = useBaseUrl('/');
83
+ return (
84
+ <li className="breadcrumbs__item">
85
+ <Link
86
+ aria-label={translate({
87
+ id: 'theme.docs.breadcrumbs.home',
88
+ message: 'Home page',
89
+ description: 'The ARIA label for the home page in the breadcrumbs',
90
+ })}
91
+ className={clsx('breadcrumbs__link', styles.breadcrumbsItemLink)}
92
+ href={homeHref}>
93
+ <IconHome className={styles.breadcrumbHomeIcon} />
94
+ </Link>
95
+ </li>
96
+ );
97
+ }
98
+
99
+ export default function DocBreadcrumbs(): JSX.Element | null {
100
+ const breadcrumbs = useSidebarBreadcrumbs();
101
+ const homePageRoute = useHomePageRoute();
102
+
103
+ if (!breadcrumbs) {
104
+ return null;
105
+ }
106
+
107
+ return (
108
+ <nav
109
+ className={clsx(
110
+ ThemeClassNames.docs.docBreadcrumbs,
111
+ styles.breadcrumbsContainer,
112
+ )}
113
+ aria-label={translate({
114
+ id: 'theme.docs.breadcrumbs.navAriaLabel',
115
+ message: 'Breadcrumbs',
116
+ description: 'The ARIA label for the breadcrumbs',
117
+ })}>
118
+ <ul
119
+ className="breadcrumbs"
120
+ itemScope
121
+ itemType="https://schema.org/BreadcrumbList">
122
+ {homePageRoute && <HomeBreadcrumbItem />}
123
+ {breadcrumbs.map((item, idx) => {
124
+ const isLast = idx === breadcrumbs.length - 1;
125
+ return (
126
+ <BreadcrumbsItem
127
+ key={idx}
128
+ active={isLast}
129
+ index={idx}
130
+ addMicrodata={!!item.href}>
131
+ <BreadcrumbsItemLink href={item.href} isLast={isLast}>
132
+ {item.label}
133
+ </BreadcrumbsItemLink>
134
+ </BreadcrumbsItem>
135
+ );
136
+ })}
137
+ </ul>
138
+ </nav>
139
+ );
140
+ }
@@ -5,19 +5,15 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- .anchor {
9
- display: block;
10
- position: relative;
11
- top: -0.5rem;
12
- }
13
-
14
- .hash-link {
15
- opacity: 0;
16
- padding-left: 0.5rem;
17
- transition: opacity var(--ifm-transition-fast);
8
+ .breadcrumbsContainer {
9
+ --ifm-breadcrumb-size-multiplier: 0.8;
10
+ margin-bottom: 0.8rem;
18
11
  }
19
12
 
20
- .hash-link:focus,
21
- *:hover > .hash-link {
22
- opacity: 1;
13
+ .breadcrumbHomeIcon {
14
+ position: relative;
15
+ top: 1px;
16
+ vertical-align: top;
17
+ height: 1.1rem;
18
+ width: 1.1rem;
23
19
  }