@docusaurus/theme-classic 2.0.0-beta.16 → 2.0.0-beta.19

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 (319) hide show
  1. package/lib/admonitions.css +4 -0
  2. package/lib/default.css +3038 -0
  3. package/lib/getSwizzleConfig.js +177 -36
  4. package/lib/index.js +10 -15
  5. package/lib/nprogress.css +41 -0
  6. package/lib/nprogress.js +46 -0
  7. package/lib/theme-classic.d.ts +600 -76
  8. package/lib/translations.js +12 -2
  9. package/lib/validateThemeConfig.js +77 -28
  10. package/lib-next/theme/BackToTopButton/index.js +6 -104
  11. package/lib-next/theme/BlogArchivePage/index.js +14 -10
  12. package/lib-next/theme/BlogLayout/index.js +1 -5
  13. package/lib-next/theme/BlogListPage/index.js +34 -13
  14. package/lib-next/theme/BlogListPaginator/index.js +25 -28
  15. package/lib-next/theme/BlogPostAuthor/index.js +16 -7
  16. package/lib-next/theme/BlogPostItem/index.js +6 -6
  17. package/lib-next/theme/BlogPostItem/styles.module.css +9 -0
  18. package/lib-next/theme/BlogPostPage/index.js +56 -45
  19. package/lib-next/theme/BlogPostPaginator/index.js +25 -28
  20. package/lib-next/theme/BlogSidebar/Desktop/index.js +41 -0
  21. package/lib-next/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
  22. package/lib-next/theme/BlogSidebar/Mobile/index.js +36 -0
  23. package/lib-next/theme/BlogSidebar/index.js +11 -31
  24. package/lib-next/theme/BlogTagsListPage/index.js +17 -14
  25. package/lib-next/theme/BlogTagsPostsPage/index.js +43 -38
  26. package/lib-next/theme/CodeBlock/Container/index.js +29 -0
  27. package/lib-next/theme/CodeBlock/Container/styles.module.css +14 -0
  28. package/lib-next/theme/CodeBlock/Content/Element.js +23 -0
  29. package/lib-next/theme/CodeBlock/Content/String.js +104 -0
  30. package/lib-next/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
  31. package/lib-next/theme/CodeBlock/CopyButton/index.js +61 -0
  32. package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  33. package/lib-next/theme/CodeBlock/Line/index.js +49 -0
  34. package/lib-next/theme/CodeBlock/Line/styles.module.css +51 -0
  35. package/lib-next/theme/CodeBlock/WordWrapButton/index.js +40 -0
  36. package/lib-next/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  37. package/lib-next/theme/CodeBlock/index.js +26 -164
  38. package/lib-next/theme/ColorModeToggle/index.js +62 -0
  39. package/lib-next/theme/ColorModeToggle/styles.module.css +35 -0
  40. package/lib-next/theme/Details/index.js +1 -1
  41. package/lib-next/theme/DocBreadcrumbs/index.js +63 -19
  42. package/lib-next/theme/DocBreadcrumbs/styles.module.css +8 -15
  43. package/lib-next/theme/DocCard/index.js +17 -15
  44. package/lib-next/theme/DocCard/styles.module.css +8 -17
  45. package/lib-next/theme/DocCardList/index.js +20 -6
  46. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +30 -9
  47. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
  48. package/lib-next/theme/DocItem/index.js +85 -67
  49. package/lib-next/theme/DocItem/styles.module.css +6 -0
  50. package/lib-next/theme/DocPage/Layout/Main/index.js +29 -0
  51. package/lib-next/theme/DocPage/Layout/Main/styles.module.css +28 -0
  52. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/index.js +34 -0
  53. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  54. package/lib-next/theme/DocPage/Layout/Sidebar/index.js +68 -0
  55. package/lib-next/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  56. package/lib-next/theme/DocPage/Layout/index.js +34 -0
  57. package/lib-next/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
  58. package/lib-next/theme/DocPage/index.js +30 -149
  59. package/lib-next/theme/DocPaginator/index.js +25 -28
  60. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/index.js +34 -0
  61. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  62. package/lib-next/theme/DocSidebar/Desktop/Content/index.js +46 -0
  63. package/lib-next/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  64. package/lib-next/theme/DocSidebar/Desktop/index.js +36 -0
  65. package/lib-next/theme/DocSidebar/Desktop/styles.module.css +50 -0
  66. package/lib-next/theme/DocSidebar/Mobile/index.js +49 -0
  67. package/lib-next/theme/DocSidebar/index.js +6 -113
  68. package/lib-next/theme/DocSidebarItem/Category.js +197 -0
  69. package/lib-next/theme/DocSidebarItem/Html.js +27 -0
  70. package/lib-next/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
  71. package/lib-next/theme/DocSidebarItem/Link.js +53 -0
  72. package/lib-next/theme/DocSidebarItem/Link.module.css +10 -0
  73. package/lib-next/theme/DocSidebarItem/index.js +4 -245
  74. package/lib-next/theme/DocSidebarItems/index.js +1 -6
  75. package/lib-next/theme/DocTagDocListPage/index.js +40 -33
  76. package/lib-next/theme/DocTagsListPage/index.js +21 -16
  77. package/lib-next/theme/DocVersionBanner/index.js +2 -2
  78. package/lib-next/theme/Footer/Copyright/index.js +18 -0
  79. package/lib-next/theme/Footer/Layout/index.js +26 -0
  80. package/lib-next/theme/Footer/LinkItem/index.js +33 -0
  81. package/lib-next/theme/Footer/Links/MultiColumn/index.js +47 -0
  82. package/lib-next/theme/Footer/Links/Simple/index.js +41 -0
  83. package/lib-next/theme/Footer/Links/index.js +17 -0
  84. package/lib-next/theme/Footer/Logo/index.js +38 -0
  85. package/lib-next/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
  86. package/lib-next/theme/Footer/index.js +11 -163
  87. package/lib-next/theme/Heading/index.js +10 -24
  88. package/lib-next/theme/IconDarkMode/index.js +17 -0
  89. package/lib-next/theme/IconExternalLink/styles.module.css +0 -2
  90. package/lib-next/theme/IconHome/index.js +17 -0
  91. package/lib-next/theme/IconLanguage/index.js +3 -3
  92. package/lib-next/theme/IconLightMode/index.js +17 -0
  93. package/lib-next/theme/LastUpdated/index.js +1 -0
  94. package/lib-next/theme/Layout/index.js +15 -10
  95. package/lib-next/theme/LayoutProviders/index.js +5 -4
  96. package/lib-next/theme/MDXComponents/A.js +11 -0
  97. package/lib-next/theme/MDXComponents/Code.js +28 -0
  98. package/lib-next/theme/MDXComponents/Details.js +20 -0
  99. package/lib-next/theme/MDXComponents/Head.js +26 -0
  100. package/lib-next/theme/MDXComponents/Heading.js +11 -0
  101. package/lib-next/theme/MDXComponents/Img.js +24 -0
  102. package/{src/theme/MDXComponents/styles.css → lib-next/theme/MDXComponents/Img.module.css} +1 -6
  103. package/lib-next/theme/MDXComponents/Pre.js +18 -0
  104. package/lib-next/theme/MDXComponents/Ul.js +21 -0
  105. package/lib-next/theme/MDXComponents/index.js +22 -57
  106. package/lib-next/theme/MDXContent/index.js +12 -0
  107. package/lib-next/theme/MDXPage/index.js +33 -28
  108. package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
  109. package/lib-next/theme/Navbar/Content/index.js +75 -0
  110. package/lib-next/theme/Navbar/Content/styles.module.css +15 -0
  111. package/lib-next/theme/Navbar/Layout/index.js +54 -0
  112. package/{src/theme/Navbar → lib-next/theme/Navbar/Layout}/styles.module.css +0 -13
  113. package/lib-next/theme/Navbar/Logo/index.js +17 -0
  114. package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
  115. package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
  116. package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
  117. package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
  118. package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
  119. package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
  120. package/lib-next/theme/Navbar/Search/index.js +11 -0
  121. package/lib-next/theme/Navbar/Search/styles.module.css +20 -0
  122. package/lib-next/theme/Navbar/index.js +6 -271
  123. package/lib-next/theme/NavbarItem/ComponentTypes.js +27 -0
  124. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +2 -6
  125. package/lib-next/theme/NavbarItem/DocNavbarItem.js +11 -28
  126. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +10 -42
  127. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +25 -29
  128. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +2 -9
  129. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +14 -3
  130. package/lib-next/theme/NavbarItem/HtmlNavbarItem.js +30 -0
  131. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/index.js +5 -10
  132. package/lib-next/theme/NavbarItem/NavbarNavLink.js +49 -35
  133. package/lib-next/theme/NavbarItem/SearchNavbarItem.js +6 -1
  134. package/lib-next/theme/NavbarItem/index.js +4 -23
  135. package/lib-next/theme/NavbarItem/utils.js +2 -1
  136. package/lib-next/theme/NotFound.js +38 -33
  137. package/lib-next/theme/PaginatorNavLink/index.js +8 -2
  138. package/lib-next/theme/SearchMetadata/index.js +9 -0
  139. package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +19 -33
  140. package/lib-next/theme/SkipToContent/index.js +3 -29
  141. package/lib-next/theme/TOCCollapsible/CollapseButton.js +29 -0
  142. package/{src/theme/TOCCollapsible/styles.module.css → lib-next/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
  143. package/lib-next/theme/TOCCollapsible/index.js +4 -16
  144. package/lib-next/theme/TOCCollapsible/index.module.css +31 -0
  145. package/lib-next/theme/TOCItems/Tree.js +40 -0
  146. package/lib-next/theme/TOCItems/index.js +3 -34
  147. package/lib-next/theme/TabItem/index.js +3 -1
  148. package/lib-next/theme/TabItem/styles.module.css +10 -0
  149. package/lib-next/theme/Tabs/__tests__/index.test.js +8 -8
  150. package/lib-next/theme/Tabs/index.js +5 -5
  151. package/lib-next/theme/Tabs/styles.module.css +4 -0
  152. package/lib-next/theme/Tag/index.js +6 -7
  153. package/lib-next/theme/TagsListInline/index.js +1 -1
  154. package/lib-next/theme/ThemedImage/index.js +3 -3
  155. package/package.json +25 -20
  156. package/src/admonitions.css +4 -0
  157. package/src/getSwizzleConfig.ts +173 -22
  158. package/src/index.ts +14 -15
  159. package/src/nprogress.css +41 -0
  160. package/src/nprogress.ts +31 -0
  161. package/src/theme/BackToTopButton/index.tsx +5 -114
  162. package/src/theme/BlogArchivePage/index.tsx +18 -17
  163. package/src/theme/BlogLayout/index.tsx +1 -5
  164. package/src/theme/BlogListPage/index.tsx +32 -13
  165. package/src/theme/BlogListPaginator/index.tsx +25 -28
  166. package/src/theme/BlogPostAuthor/index.tsx +14 -8
  167. package/src/theme/BlogPostItem/index.tsx +6 -6
  168. package/src/theme/BlogPostItem/styles.module.css +9 -0
  169. package/src/theme/BlogPostPage/index.tsx +55 -48
  170. package/src/theme/BlogPostPaginator/index.tsx +25 -28
  171. package/src/theme/BlogSidebar/Desktop/index.tsx +45 -0
  172. package/src/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
  173. package/src/theme/BlogSidebar/Mobile/index.tsx +38 -0
  174. package/src/theme/BlogSidebar/index.tsx +10 -31
  175. package/src/theme/BlogTagsListPage/index.tsx +17 -14
  176. package/src/theme/BlogTagsPostsPage/index.tsx +46 -36
  177. package/src/theme/CodeBlock/Container/index.tsx +35 -0
  178. package/src/theme/CodeBlock/Container/styles.module.css +14 -0
  179. package/src/theme/CodeBlock/Content/Element.tsx +30 -0
  180. package/src/theme/CodeBlock/Content/String.tsx +111 -0
  181. package/src/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
  182. package/src/theme/CodeBlock/CopyButton/index.tsx +67 -0
  183. package/src/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  184. package/src/theme/CodeBlock/Line/index.tsx +48 -0
  185. package/src/theme/CodeBlock/Line/styles.module.css +51 -0
  186. package/src/theme/CodeBlock/WordWrapButton/index.tsx +49 -0
  187. package/src/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  188. package/src/theme/CodeBlock/index.tsx +29 -165
  189. package/src/theme/ColorModeToggle/index.tsx +67 -0
  190. package/src/theme/ColorModeToggle/styles.module.css +35 -0
  191. package/src/theme/Details/index.tsx +1 -1
  192. package/src/theme/DocBreadcrumbs/index.tsx +65 -16
  193. package/src/theme/DocBreadcrumbs/styles.module.css +8 -15
  194. package/src/theme/DocCard/index.tsx +24 -17
  195. package/src/theme/DocCard/styles.module.css +8 -17
  196. package/src/theme/DocCardList/index.tsx +19 -10
  197. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +34 -7
  198. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
  199. package/src/theme/DocItem/index.tsx +72 -56
  200. package/src/theme/DocItem/styles.module.css +6 -0
  201. package/src/theme/DocPage/Layout/Main/index.tsx +37 -0
  202. package/src/theme/DocPage/Layout/Main/styles.module.css +28 -0
  203. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx +40 -0
  204. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  205. package/src/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  206. package/src/theme/DocPage/Layout/Sidebar/index.tsx +74 -0
  207. package/src/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
  208. package/src/theme/DocPage/Layout/index.tsx +39 -0
  209. package/src/theme/DocPage/index.tsx +30 -160
  210. package/src/theme/DocPaginator/index.tsx +25 -28
  211. package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
  212. package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  213. package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
  214. package/src/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  215. package/src/theme/DocSidebar/Desktop/index.tsx +40 -0
  216. package/src/theme/DocSidebar/Desktop/styles.module.css +50 -0
  217. package/src/theme/DocSidebar/Mobile/index.tsx +54 -0
  218. package/src/theme/DocSidebar/index.tsx +6 -121
  219. package/src/theme/DocSidebarItem/Category.tsx +210 -0
  220. package/src/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
  221. package/src/theme/DocSidebarItem/Html.tsx +34 -0
  222. package/src/theme/DocSidebarItem/Link.module.css +10 -0
  223. package/src/theme/DocSidebarItem/Link.tsx +58 -0
  224. package/src/theme/DocSidebarItem/index.tsx +4 -260
  225. package/src/theme/DocSidebarItems/index.tsx +1 -6
  226. package/src/theme/DocTagDocListPage/index.tsx +40 -33
  227. package/src/theme/DocTagsListPage/index.tsx +21 -16
  228. package/src/theme/DocVersionBanner/index.tsx +5 -6
  229. package/src/theme/Footer/Copyright/index.tsx +20 -0
  230. package/src/theme/Footer/Layout/index.tsx +34 -0
  231. package/src/theme/Footer/LinkItem/index.tsx +36 -0
  232. package/src/theme/Footer/Links/MultiColumn/index.tsx +51 -0
  233. package/src/theme/Footer/Links/Simple/index.tsx +42 -0
  234. package/src/theme/Footer/Links/index.tsx +21 -0
  235. package/src/theme/Footer/Logo/index.tsx +41 -0
  236. package/src/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
  237. package/src/theme/Footer/index.tsx +12 -186
  238. package/src/theme/Heading/index.tsx +10 -22
  239. package/src/theme/IconDarkMode/index.tsx +20 -0
  240. package/src/theme/IconExternalLink/styles.module.css +0 -2
  241. package/src/theme/IconHome/index.tsx +20 -0
  242. package/src/theme/IconLanguage/index.tsx +3 -3
  243. package/src/theme/IconLightMode/index.tsx +20 -0
  244. package/src/theme/LastUpdated/index.tsx +1 -0
  245. package/src/theme/Layout/index.tsx +15 -10
  246. package/src/theme/LayoutProviders/index.tsx +5 -4
  247. package/src/theme/MDXComponents/A.tsx +14 -0
  248. package/src/theme/MDXComponents/Code.tsx +37 -0
  249. package/src/theme/MDXComponents/Details.tsx +25 -0
  250. package/src/theme/MDXComponents/Head.tsx +29 -0
  251. package/src/theme/MDXComponents/Heading.tsx +14 -0
  252. package/{lib-next/theme/MDXComponents/styles.css → src/theme/MDXComponents/Img.module.css} +1 -6
  253. package/src/theme/MDXComponents/Img.tsx +26 -0
  254. package/src/theme/MDXComponents/Pre.tsx +22 -0
  255. package/src/theme/MDXComponents/Ul.tsx +24 -0
  256. package/src/theme/MDXComponents/index.tsx +23 -66
  257. package/src/theme/MDXContent/index.tsx +15 -0
  258. package/src/theme/MDXPage/index.tsx +33 -28
  259. package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
  260. package/src/theme/Navbar/Content/index.tsx +86 -0
  261. package/src/theme/Navbar/Content/styles.module.css +15 -0
  262. package/src/theme/Navbar/Layout/index.tsx +57 -0
  263. package/{lib-next/theme/Navbar → src/theme/Navbar/Layout}/styles.module.css +0 -13
  264. package/src/theme/Navbar/Logo/index.tsx +19 -0
  265. package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
  266. package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
  267. package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
  268. package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
  269. package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
  270. package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
  271. package/src/theme/Navbar/Search/index.tsx +15 -0
  272. package/src/theme/Navbar/Search/styles.module.css +20 -0
  273. package/src/theme/Navbar/index.tsx +6 -286
  274. package/src/theme/NavbarItem/ComponentTypes.tsx +32 -0
  275. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +2 -2
  276. package/src/theme/NavbarItem/DocNavbarItem.tsx +13 -32
  277. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +9 -49
  278. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +26 -33
  279. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +3 -10
  280. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +15 -3
  281. package/src/theme/NavbarItem/HtmlNavbarItem.tsx +32 -0
  282. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx +5 -9
  283. package/src/theme/NavbarItem/NavbarNavLink.tsx +41 -29
  284. package/src/theme/NavbarItem/SearchNavbarItem.tsx +6 -1
  285. package/src/theme/NavbarItem/index.tsx +9 -39
  286. package/src/theme/NavbarItem/utils.ts +5 -2
  287. package/src/theme/NotFound.tsx +38 -33
  288. package/src/theme/PaginatorNavLink/index.tsx +8 -2
  289. package/src/theme/SearchMetadata/index.tsx +9 -0
  290. package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +19 -33
  291. package/src/theme/SkipToContent/index.tsx +3 -29
  292. package/{lib-next/theme/TOCCollapsible/styles.module.css → src/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
  293. package/src/theme/TOCCollapsible/CollapseButton.tsx +35 -0
  294. package/src/theme/TOCCollapsible/index.module.css +31 -0
  295. package/src/theme/TOCCollapsible/index.tsx +4 -17
  296. package/src/theme/TOCItems/Tree.tsx +46 -0
  297. package/src/theme/TOCItems/index.tsx +2 -41
  298. package/src/theme/TabItem/index.tsx +7 -1
  299. package/src/theme/TabItem/styles.module.css +10 -0
  300. package/src/theme/Tabs/index.tsx +8 -9
  301. package/src/theme/Tabs/styles.module.css +4 -0
  302. package/src/theme/Tag/index.tsx +6 -8
  303. package/src/theme/TagsListInline/index.tsx +1 -1
  304. package/src/theme/ThemedImage/index.tsx +4 -3
  305. package/src/theme-classic.d.ts +600 -76
  306. package/src/translations.ts +12 -6
  307. package/src/validateThemeConfig.ts +90 -39
  308. package/lib/types.d.ts +0 -11
  309. package/lib-next/theme/DocPage/styles.module.css +0 -86
  310. package/lib-next/theme/DocSidebar/styles.module.css +0 -107
  311. package/lib-next/theme/Seo/index.js +0 -40
  312. package/lib-next/theme/Toggle/index.js +0 -100
  313. package/lib-next/theme/Toggle/styles.module.css +0 -106
  314. package/src/theme/DocPage/styles.module.css +0 -86
  315. package/src/theme/DocSidebar/styles.module.css +0 -107
  316. package/src/theme/Seo/index.tsx +0 -49
  317. package/src/theme/Toggle/index.tsx +0 -117
  318. package/src/theme/Toggle/styles.module.css +0 -106
  319. package/src/types.d.ts +0 -11
@@ -0,0 +1,45 @@
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 Link from '@docusaurus/Link';
11
+ import {translate} from '@docusaurus/Translate';
12
+
13
+ import styles from './styles.module.css';
14
+ import type {Props} from '@theme/BlogSidebar/Desktop';
15
+
16
+ export default function BlogSidebarDesktop({sidebar}: Props): JSX.Element {
17
+ return (
18
+ <aside className="col col--3">
19
+ <nav
20
+ className={clsx(styles.sidebar, 'thin-scrollbar')}
21
+ aria-label={translate({
22
+ id: 'theme.blog.sidebar.navAriaLabel',
23
+ message: 'Blog recent posts navigation',
24
+ description: 'The ARIA label for recent posts in the blog sidebar',
25
+ })}>
26
+ <div className={clsx(styles.sidebarItemTitle, 'margin-bottom--md')}>
27
+ {sidebar.title}
28
+ </div>
29
+ <ul className={clsx(styles.sidebarItemList, 'clean-list')}>
30
+ {sidebar.items.map((item) => (
31
+ <li key={item.permalink} className={styles.sidebarItem}>
32
+ <Link
33
+ isNavLink
34
+ to={item.permalink}
35
+ className={styles.sidebarItemLink}
36
+ activeClassName={styles.sidebarItemLinkActive}>
37
+ {item.title}
38
+ </Link>
39
+ </li>
40
+ ))}
41
+ </ul>
42
+ </nav>
43
+ </aside>
44
+ );
45
+ }
@@ -18,9 +18,7 @@
18
18
  }
19
19
 
20
20
  .sidebarItemList {
21
- list-style: none;
22
21
  font-size: 0.9rem;
23
- padding-left: 0;
24
22
  }
25
23
 
26
24
  .sidebarItem {
@@ -29,6 +27,7 @@
29
27
 
30
28
  .sidebarItemLink {
31
29
  color: var(--ifm-font-color-base);
30
+ display: block;
32
31
  }
33
32
 
34
33
  .sidebarItemLink:hover {
@@ -0,0 +1,38 @@
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 Link from '@docusaurus/Link';
10
+ import {NavbarSecondaryMenuFiller} from '@docusaurus/theme-common';
11
+ import type {Props} from '@theme/BlogSidebar/Mobile';
12
+
13
+ function BlogSidebarMobileSecondaryMenu({sidebar}: Props): JSX.Element {
14
+ return (
15
+ <ul className="menu__list">
16
+ {sidebar.items.map((item) => (
17
+ <li key={item.permalink} className="menu__list-item">
18
+ <Link
19
+ isNavLink
20
+ to={item.permalink}
21
+ className="menu__link"
22
+ activeClassName="menu__link--active">
23
+ {item.title}
24
+ </Link>
25
+ </li>
26
+ ))}
27
+ </ul>
28
+ );
29
+ }
30
+
31
+ export default function BlogSidebarMobile(props: Props): JSX.Element {
32
+ return (
33
+ <NavbarSecondaryMenuFiller
34
+ component={BlogSidebarMobileSecondaryMenu}
35
+ props={props}
36
+ />
37
+ );
38
+ }
@@ -6,40 +6,19 @@
6
6
  */
7
7
 
8
8
  import React from 'react';
9
- import clsx from 'clsx';
10
- import Link from '@docusaurus/Link';
9
+ import BlogSidebarDesktop from '@theme/BlogSidebar/Desktop';
10
+ import BlogSidebarMobile from '@theme/BlogSidebar/Mobile';
11
+ import {useWindowSize} from '@docusaurus/theme-common';
11
12
  import type {Props} from '@theme/BlogSidebar';
12
- import styles from './styles.module.css';
13
- import {translate} from '@docusaurus/Translate';
14
13
 
15
14
  export default function BlogSidebar({sidebar}: Props): JSX.Element | null {
16
- if (sidebar.items.length === 0) {
15
+ const windowSize = useWindowSize();
16
+ if (!sidebar?.items.length) {
17
17
  return null;
18
18
  }
19
- return (
20
- <nav
21
- className={clsx(styles.sidebar, 'thin-scrollbar')}
22
- aria-label={translate({
23
- id: 'theme.blog.sidebar.navAriaLabel',
24
- message: 'Blog recent posts navigation',
25
- description: 'The ARIA label for recent posts in the blog sidebar',
26
- })}>
27
- <div className={clsx(styles.sidebarItemTitle, 'margin-bottom--md')}>
28
- {sidebar.title}
29
- </div>
30
- <ul className={styles.sidebarItemList}>
31
- {sidebar.items.map((item) => (
32
- <li key={item.permalink} className={styles.sidebarItem}>
33
- <Link
34
- isNavLink
35
- to={item.permalink}
36
- className={styles.sidebarItemLink}
37
- activeClassName={styles.sidebarItemLinkActive}>
38
- {item.title}
39
- </Link>
40
- </li>
41
- ))}
42
- </ul>
43
- </nav>
44
- );
19
+ // Mobile sidebar doesn't need to be server-rendered
20
+ if (windowSize === 'mobile') {
21
+ return <BlogSidebarMobile sidebar={sidebar} />;
22
+ }
23
+ return <BlogSidebarDesktop sidebar={sidebar} />;
45
24
  }
@@ -11,25 +11,28 @@ import BlogLayout from '@theme/BlogLayout';
11
11
  import TagsListByLetter from '@theme/TagsListByLetter';
12
12
  import type {Props} from '@theme/BlogTagsListPage';
13
13
  import {
14
+ PageMetadata,
15
+ HtmlClassNameProvider,
14
16
  ThemeClassNames,
15
17
  translateTagsPageTitle,
16
18
  } from '@docusaurus/theme-common';
19
+ import SearchMetadata from '../SearchMetadata';
20
+ import clsx from 'clsx';
17
21
 
18
- export default function BlogTagsListPage(props: Props): JSX.Element {
19
- const {tags, sidebar} = props;
22
+ export default function BlogTagsListPage({tags, sidebar}: Props): JSX.Element {
20
23
  const title = translateTagsPageTitle();
21
24
  return (
22
- <BlogLayout
23
- title={title}
24
- wrapperClassName={ThemeClassNames.wrapper.blogPages}
25
- pageClassName={ThemeClassNames.page.blogTagsListPage}
26
- searchMetadata={{
27
- // assign unique search tag to exclude this page from search results!
28
- tag: 'blog_tags_list',
29
- }}
30
- sidebar={sidebar}>
31
- <h1>{title}</h1>
32
- <TagsListByLetter tags={Object.values(tags)} />
33
- </BlogLayout>
25
+ <HtmlClassNameProvider
26
+ className={clsx(
27
+ ThemeClassNames.wrapper.blogPages,
28
+ ThemeClassNames.page.blogTagsListPage,
29
+ )}>
30
+ <PageMetadata title={title} />
31
+ <SearchMetadata tag="blog_tags_list" />
32
+ <BlogLayout sidebar={sidebar}>
33
+ <h1>{title}</h1>
34
+ <TagsListByLetter tags={tags} />
35
+ </BlogLayout>
36
+ </HtmlClassNameProvider>
34
37
  );
35
38
  }
@@ -12,8 +12,15 @@ import BlogLayout from '@theme/BlogLayout';
12
12
  import BlogPostItem from '@theme/BlogPostItem';
13
13
  import type {Props} from '@theme/BlogTagsPostsPage';
14
14
  import Translate, {translate} from '@docusaurus/Translate';
15
- import {ThemeClassNames, usePluralForm} from '@docusaurus/theme-common';
15
+ import {
16
+ PageMetadata,
17
+ HtmlClassNameProvider,
18
+ ThemeClassNames,
19
+ usePluralForm,
20
+ } from '@docusaurus/theme-common';
16
21
  import BlogListPaginator from '@theme/BlogListPaginator';
22
+ import SearchMetadata from '@theme/SearchMetadata';
23
+ import clsx from 'clsx';
17
24
 
18
25
  // Very simple pluralization: probably good enough for now
19
26
  function useBlogPostsPlural() {
@@ -33,9 +40,12 @@ function useBlogPostsPlural() {
33
40
  );
34
41
  }
35
42
 
36
- export default function BlogTagsPostsPage(props: Props): JSX.Element {
37
- const {metadata, items, sidebar, listMetadata} = props;
38
- const {allTagsPath, name: tagName, count} = metadata;
43
+ export default function BlogTagsPostsPage({
44
+ tag,
45
+ items,
46
+ sidebar,
47
+ listMetadata,
48
+ }: Props): JSX.Element {
39
49
  const blogPostsPlural = useBlogPostsPlural();
40
50
  const title = translate(
41
51
  {
@@ -43,42 +53,42 @@ export default function BlogTagsPostsPage(props: Props): JSX.Element {
43
53
  description: 'The title of the page for a blog tag',
44
54
  message: '{nPosts} tagged with "{tagName}"',
45
55
  },
46
- {nPosts: blogPostsPlural(count), tagName},
56
+ {nPosts: blogPostsPlural(tag.count), tagName: tag.label},
47
57
  );
48
58
 
49
59
  return (
50
- <BlogLayout
51
- title={title}
52
- wrapperClassName={ThemeClassNames.wrapper.blogPages}
53
- pageClassName={ThemeClassNames.page.blogTagPostListPage}
54
- searchMetadata={{
55
- // assign unique search tag to exclude this page from search results!
56
- tag: 'blog_tags_posts',
57
- }}
58
- sidebar={sidebar}>
59
- <header className="margin-bottom--xl">
60
- <h1>{title}</h1>
60
+ <HtmlClassNameProvider
61
+ className={clsx(
62
+ ThemeClassNames.wrapper.blogPages,
63
+ ThemeClassNames.page.blogTagPostListPage,
64
+ )}>
65
+ <PageMetadata title={title} />
66
+ <SearchMetadata tag="blog_tags_posts" />
67
+ <BlogLayout sidebar={sidebar}>
68
+ <header className="margin-bottom--xl">
69
+ <h1>{title}</h1>
61
70
 
62
- <Link href={allTagsPath}>
63
- <Translate
64
- id="theme.tags.tagsPageLink"
65
- description="The label of the link targeting the tag list page">
66
- View All Tags
67
- </Translate>
68
- </Link>
69
- </header>
71
+ <Link href={tag.allTagsPath}>
72
+ <Translate
73
+ id="theme.tags.tagsPageLink"
74
+ description="The label of the link targeting the tag list page">
75
+ View All Tags
76
+ </Translate>
77
+ </Link>
78
+ </header>
70
79
 
71
- {items.map(({content: BlogPostContent}) => (
72
- <BlogPostItem
73
- key={BlogPostContent.metadata.permalink}
74
- frontMatter={BlogPostContent.frontMatter}
75
- assets={BlogPostContent.assets}
76
- metadata={BlogPostContent.metadata}
77
- truncated>
78
- <BlogPostContent />
79
- </BlogPostItem>
80
- ))}
81
- <BlogListPaginator metadata={listMetadata} />
82
- </BlogLayout>
80
+ {items.map(({content: BlogPostContent}) => (
81
+ <BlogPostItem
82
+ key={BlogPostContent.metadata.permalink}
83
+ frontMatter={BlogPostContent.frontMatter}
84
+ assets={BlogPostContent.assets}
85
+ metadata={BlogPostContent.metadata}
86
+ truncated>
87
+ <BlogPostContent />
88
+ </BlogPostItem>
89
+ ))}
90
+ <BlogListPaginator metadata={listMetadata} />
91
+ </BlogLayout>
92
+ </HtmlClassNameProvider>
83
93
  );
84
94
  }
@@ -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
+ import React, {type ComponentProps} from 'react';
9
+ import clsx from 'clsx';
10
+ import {
11
+ usePrismTheme,
12
+ getPrismCssVariables,
13
+ ThemeClassNames,
14
+ } from '@docusaurus/theme-common';
15
+ import styles from './styles.module.css';
16
+
17
+ export default function CodeBlockContainer<T extends 'div' | 'pre'>({
18
+ as: As,
19
+ ...props
20
+ }: {as: T} & ComponentProps<T>): JSX.Element {
21
+ const prismTheme = usePrismTheme();
22
+ const prismCssVariables = getPrismCssVariables(prismTheme);
23
+ return (
24
+ <As
25
+ // Polymorphic components are hard to type, without `oneOf` generics
26
+ {...(props as never)}
27
+ style={prismCssVariables}
28
+ className={clsx(
29
+ props.className,
30
+ styles.codeBlockContainer,
31
+ ThemeClassNames.common.codeBlock,
32
+ )}
33
+ />
34
+ );
35
+ }
@@ -0,0 +1,14 @@
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
+ .codeBlockContainer {
9
+ background: var(--prism-background-color);
10
+ color: var(--prism-color);
11
+ margin-bottom: var(--ifm-leading);
12
+ box-shadow: var(--ifm-global-shadow-lw);
13
+ border-radius: var(--ifm-code-border-radius);
14
+ }
@@ -0,0 +1,30 @@
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 Container from '@theme/CodeBlock/Container';
10
+ import clsx from 'clsx';
11
+ import type {Props} from '@theme/CodeBlock/Content/Element';
12
+
13
+ import styles from './styles.module.css';
14
+
15
+ // <pre> tags in markdown map to CodeBlocks. They may contain JSX children. When
16
+ // the children is not a simple string, we just return a styled block without
17
+ // actually highlighting.
18
+ export default function CodeBlockJSX({
19
+ children,
20
+ className,
21
+ }: Props): JSX.Element {
22
+ return (
23
+ <Container
24
+ as="pre"
25
+ tabIndex={0}
26
+ className={clsx(styles.codeBlockStandalone, 'thin-scrollbar', className)}>
27
+ <code className={styles.codeBlockLines}>{children}</code>
28
+ </Container>
29
+ );
30
+ }
@@ -0,0 +1,111 @@
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 {
10
+ useThemeConfig,
11
+ parseCodeBlockTitle,
12
+ parseLanguage,
13
+ parseLines,
14
+ containsLineNumbers,
15
+ usePrismTheme,
16
+ useCodeWordWrap,
17
+ } from '@docusaurus/theme-common';
18
+ import clsx from 'clsx';
19
+ import Highlight, {defaultProps, type Language} from 'prism-react-renderer';
20
+ import Line from '@theme/CodeBlock/Line';
21
+ import CopyButton from '@theme/CodeBlock/CopyButton';
22
+ import WordWrapButton from '@theme/CodeBlock/WordWrapButton';
23
+ import Container from '@theme/CodeBlock/Container';
24
+ import type {Props} from '@theme/CodeBlock/Content/String';
25
+
26
+ import styles from './styles.module.css';
27
+
28
+ export default function CodeBlockString({
29
+ children,
30
+ className: blockClassName = '',
31
+ metastring,
32
+ title: titleProp,
33
+ showLineNumbers: showLineNumbersProp,
34
+ language: languageProp,
35
+ }: Props): JSX.Element {
36
+ const {
37
+ prism: {defaultLanguage, magicComments},
38
+ } = useThemeConfig();
39
+ const language =
40
+ languageProp ?? parseLanguage(blockClassName) ?? defaultLanguage;
41
+ const prismTheme = usePrismTheme();
42
+ const wordWrap = useCodeWordWrap();
43
+
44
+ // We still parse the metastring in case we want to support more syntax in the
45
+ // future. Note that MDX doesn't strip quotes when parsing metastring:
46
+ // "title=\"xyz\"" => title: "\"xyz\""
47
+ const title = parseCodeBlockTitle(metastring) || titleProp;
48
+
49
+ const {lineClassNames, code} = parseLines(children, {
50
+ metastring,
51
+ language,
52
+ magicComments,
53
+ });
54
+ const showLineNumbers =
55
+ showLineNumbersProp || containsLineNumbers(metastring);
56
+
57
+ return (
58
+ <Container
59
+ as="div"
60
+ className={clsx(
61
+ blockClassName,
62
+ language &&
63
+ !blockClassName.includes(`language-${language}`) &&
64
+ `language-${language}`,
65
+ )}>
66
+ {title && <div className={styles.codeBlockTitle}>{title}</div>}
67
+ <div className={styles.codeBlockContent}>
68
+ <Highlight
69
+ {...defaultProps}
70
+ theme={prismTheme}
71
+ code={code}
72
+ language={(language ?? 'text') as Language}>
73
+ {({className, tokens, getLineProps, getTokenProps}) => (
74
+ <pre
75
+ /* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */
76
+ tabIndex={0}
77
+ ref={wordWrap.codeBlockRef}
78
+ className={clsx(className, styles.codeBlock, 'thin-scrollbar')}>
79
+ <code
80
+ className={clsx(
81
+ styles.codeBlockLines,
82
+ showLineNumbers && styles.codeBlockLinesWithNumbering,
83
+ )}>
84
+ {tokens.map((line, i) => (
85
+ <Line
86
+ key={i}
87
+ line={line}
88
+ getLineProps={getLineProps}
89
+ getTokenProps={getTokenProps}
90
+ classNames={lineClassNames[i]}
91
+ showLineNumbers={showLineNumbers}
92
+ />
93
+ ))}
94
+ </code>
95
+ </pre>
96
+ )}
97
+ </Highlight>
98
+ <div className={styles.buttonGroup}>
99
+ {(wordWrap.isEnabled || wordWrap.isCodeScrollable) && (
100
+ <WordWrapButton
101
+ className={styles.codeButton}
102
+ onClick={() => wordWrap.toggle()}
103
+ isEnabled={wordWrap.isEnabled}
104
+ />
105
+ )}
106
+ <CopyButton className={styles.codeButton} code={code} />
107
+ </div>
108
+ </div>
109
+ </Container>
110
+ );
111
+ }
@@ -5,16 +5,11 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- .codeBlockContainer {
9
- margin-bottom: var(--ifm-leading);
10
- border-radius: var(--ifm-global-radius);
11
- box-shadow: var(--ifm-global-shadow-lw);
12
- }
13
-
14
8
  .codeBlockContent {
15
9
  position: relative;
16
10
  /* rtl:ignore */
17
11
  direction: ltr;
12
+ border-radius: inherit;
18
13
  }
19
14
 
20
15
  .codeBlockTitle {
@@ -22,14 +17,14 @@
22
17
  font-size: var(--ifm-code-font-size);
23
18
  font-weight: 500;
24
19
  padding: 0.75rem var(--ifm-pre-padding);
25
- border-top-left-radius: var(--ifm-global-radius);
26
- border-top-right-radius: var(--ifm-global-radius);
20
+ border-top-left-radius: inherit;
21
+ border-top-right-radius: inherit;
27
22
  }
28
23
 
29
24
  .codeBlock {
25
+ --ifm-pre-background: var(--prism-background-color);
30
26
  margin: 0;
31
27
  padding: 0;
32
- border-radius: var(--ifm-global-radius);
33
28
  }
34
29
 
35
30
  .codeBlockTitle + .codeBlockContent .codeBlock {
@@ -39,26 +34,6 @@
39
34
 
40
35
  .codeBlockStandalone {
41
36
  padding: 0;
42
- border-radius: var(--ifm-global-radius);
43
- }
44
-
45
- .copyButton {
46
- background: rgb(0 0 0 / 30%);
47
- border-radius: var(--ifm-global-radius);
48
- color: var(--ifm-color-white);
49
- opacity: 0;
50
- user-select: none;
51
- padding: 0.4rem 0.5rem;
52
- position: absolute;
53
- right: calc(var(--ifm-pre-padding) / 2);
54
- top: calc(var(--ifm-pre-padding) / 2);
55
- transition: opacity 200ms ease-in-out;
56
- }
57
-
58
- .copyButton:focus,
59
- .codeBlockContent:hover > .copyButton,
60
- .codeBlockTitle:hover + .codeBlockContent .copyButton {
61
- opacity: 1;
62
37
  }
63
38
 
64
39
  .codeBlockLines {
@@ -69,8 +44,43 @@
69
44
  padding: var(--ifm-pre-padding);
70
45
  }
71
46
 
47
+ .codeBlockLinesWithNumbering {
48
+ display: table;
49
+ padding: var(--ifm-pre-padding) 0;
50
+ }
51
+
72
52
  @media print {
73
53
  .codeBlockLines {
74
54
  white-space: pre-wrap;
75
55
  }
76
56
  }
57
+
58
+ .buttonGroup {
59
+ display: flex;
60
+ column-gap: 0.2rem;
61
+ position: absolute;
62
+ right: calc(var(--ifm-pre-padding) / 2);
63
+ top: calc(var(--ifm-pre-padding) / 2);
64
+ }
65
+
66
+ .buttonGroup button {
67
+ display: flex;
68
+ align-items: center;
69
+ background: var(--prism-background-color);
70
+ color: var(--prism-color);
71
+ border: 1px solid var(--ifm-color-emphasis-300);
72
+ border-radius: var(--ifm-global-radius);
73
+ padding: 0.4rem;
74
+ line-height: 0;
75
+ transition: opacity 200ms ease-in-out;
76
+ opacity: 0;
77
+ }
78
+
79
+ .buttonGroup button:focus-visible,
80
+ .buttonGroup button:hover {
81
+ opacity: 1 !important;
82
+ }
83
+
84
+ :global(.theme-code-block:hover) .buttonGroup button {
85
+ opacity: 0.4;
86
+ }
@@ -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, {useCallback, useState, useRef, useEffect} from 'react';
9
+ import clsx from 'clsx';
10
+ import copy from 'copy-text-to-clipboard';
11
+ import {translate} from '@docusaurus/Translate';
12
+ import type {Props} from '@theme/CodeBlock/CopyButton';
13
+
14
+ import styles from './styles.module.css';
15
+
16
+ export default function CopyButton({code, className}: Props): JSX.Element {
17
+ const [isCopied, setIsCopied] = useState(false);
18
+ const copyTimeout = useRef<number | undefined>(undefined);
19
+ const handleCopyCode = useCallback(() => {
20
+ copy(code);
21
+ setIsCopied(true);
22
+ copyTimeout.current = window.setTimeout(() => {
23
+ setIsCopied(false);
24
+ }, 1000);
25
+ }, [code]);
26
+
27
+ useEffect(() => () => window.clearTimeout(copyTimeout.current), []);
28
+
29
+ return (
30
+ <button
31
+ type="button"
32
+ aria-label={
33
+ isCopied
34
+ ? translate({
35
+ id: 'theme.CodeBlock.copied',
36
+ message: 'Copied',
37
+ description: 'The copied button label on code blocks',
38
+ })
39
+ : translate({
40
+ id: 'theme.CodeBlock.copyButtonAriaLabel',
41
+ message: 'Copy code to clipboard',
42
+ description: 'The ARIA label for copy code blocks button',
43
+ })
44
+ }
45
+ title={translate({
46
+ id: 'theme.CodeBlock.copy',
47
+ message: 'Copy',
48
+ description: 'The copy button label on code blocks',
49
+ })}
50
+ className={clsx(
51
+ 'clean-btn',
52
+ className,
53
+ styles.copyButton,
54
+ isCopied && styles.copyButtonCopied,
55
+ )}
56
+ onClick={handleCopyCode}>
57
+ <span className={styles.copyButtonIcons} aria-hidden="true">
58
+ <svg className={styles.copyButtonIcon} viewBox="0 0 24 24">
59
+ <path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" />
60
+ </svg>
61
+ <svg className={styles.copyButtonSuccessIcon} viewBox="0 0 24 24">
62
+ <path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" />
63
+ </svg>
64
+ </span>
65
+ </button>
66
+ );
67
+ }