@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.
- package/lib/admonitions.css +4 -0
- package/lib/default.css +3038 -0
- package/lib/getSwizzleConfig.js +177 -36
- package/lib/index.js +10 -15
- package/lib/nprogress.css +41 -0
- package/lib/nprogress.js +46 -0
- package/lib/theme-classic.d.ts +600 -76
- package/lib/translations.js +12 -2
- package/lib/validateThemeConfig.js +77 -28
- package/lib-next/theme/BackToTopButton/index.js +6 -104
- package/lib-next/theme/BlogArchivePage/index.js +14 -10
- package/lib-next/theme/BlogLayout/index.js +1 -5
- package/lib-next/theme/BlogListPage/index.js +34 -13
- package/lib-next/theme/BlogListPaginator/index.js +25 -28
- package/lib-next/theme/BlogPostAuthor/index.js +16 -7
- package/lib-next/theme/BlogPostItem/index.js +6 -6
- package/lib-next/theme/BlogPostItem/styles.module.css +9 -0
- package/lib-next/theme/BlogPostPage/index.js +56 -45
- package/lib-next/theme/BlogPostPaginator/index.js +25 -28
- package/lib-next/theme/BlogSidebar/Desktop/index.js +41 -0
- package/lib-next/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
- package/lib-next/theme/BlogSidebar/Mobile/index.js +36 -0
- package/lib-next/theme/BlogSidebar/index.js +11 -31
- package/lib-next/theme/BlogTagsListPage/index.js +17 -14
- package/lib-next/theme/BlogTagsPostsPage/index.js +43 -38
- package/lib-next/theme/CodeBlock/Container/index.js +29 -0
- package/lib-next/theme/CodeBlock/Container/styles.module.css +14 -0
- package/lib-next/theme/CodeBlock/Content/Element.js +23 -0
- package/lib-next/theme/CodeBlock/Content/String.js +104 -0
- package/lib-next/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
- package/lib-next/theme/CodeBlock/CopyButton/index.js +61 -0
- package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +47 -0
- package/lib-next/theme/CodeBlock/Line/index.js +49 -0
- package/lib-next/theme/CodeBlock/Line/styles.module.css +51 -0
- package/lib-next/theme/CodeBlock/WordWrapButton/index.js +40 -0
- package/lib-next/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
- package/lib-next/theme/CodeBlock/index.js +26 -164
- package/lib-next/theme/ColorModeToggle/index.js +62 -0
- package/lib-next/theme/ColorModeToggle/styles.module.css +35 -0
- package/lib-next/theme/Details/index.js +1 -1
- package/lib-next/theme/DocBreadcrumbs/index.js +63 -19
- package/lib-next/theme/DocBreadcrumbs/styles.module.css +8 -15
- package/lib-next/theme/DocCard/index.js +17 -15
- package/lib-next/theme/DocCard/styles.module.css +8 -17
- package/lib-next/theme/DocCardList/index.js +20 -6
- package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +30 -9
- package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
- package/lib-next/theme/DocItem/index.js +85 -67
- package/lib-next/theme/DocItem/styles.module.css +6 -0
- package/lib-next/theme/DocPage/Layout/Main/index.js +29 -0
- package/lib-next/theme/DocPage/Layout/Main/styles.module.css +28 -0
- package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/index.js +34 -0
- package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
- package/lib-next/theme/DocPage/Layout/Sidebar/index.js +68 -0
- package/lib-next/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
- package/lib-next/theme/DocPage/Layout/index.js +34 -0
- package/lib-next/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
- package/lib-next/theme/DocPage/index.js +30 -149
- package/lib-next/theme/DocPaginator/index.js +25 -28
- package/lib-next/theme/DocSidebar/Desktop/CollapseButton/index.js +34 -0
- package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
- package/lib-next/theme/DocSidebar/Desktop/Content/index.js +46 -0
- package/lib-next/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
- package/lib-next/theme/DocSidebar/Desktop/index.js +36 -0
- package/lib-next/theme/DocSidebar/Desktop/styles.module.css +50 -0
- package/lib-next/theme/DocSidebar/Mobile/index.js +49 -0
- package/lib-next/theme/DocSidebar/index.js +6 -113
- package/lib-next/theme/DocSidebarItem/Category.js +197 -0
- package/lib-next/theme/DocSidebarItem/Html.js +27 -0
- package/lib-next/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
- package/lib-next/theme/DocSidebarItem/Link.js +53 -0
- package/lib-next/theme/DocSidebarItem/Link.module.css +10 -0
- package/lib-next/theme/DocSidebarItem/index.js +4 -245
- package/lib-next/theme/DocSidebarItems/index.js +1 -6
- package/lib-next/theme/DocTagDocListPage/index.js +40 -33
- package/lib-next/theme/DocTagsListPage/index.js +21 -16
- package/lib-next/theme/DocVersionBanner/index.js +2 -2
- package/lib-next/theme/Footer/Copyright/index.js +18 -0
- package/lib-next/theme/Footer/Layout/index.js +26 -0
- package/lib-next/theme/Footer/LinkItem/index.js +33 -0
- package/lib-next/theme/Footer/Links/MultiColumn/index.js +47 -0
- package/lib-next/theme/Footer/Links/Simple/index.js +41 -0
- package/lib-next/theme/Footer/Links/index.js +17 -0
- package/lib-next/theme/Footer/Logo/index.js +38 -0
- package/lib-next/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
- package/lib-next/theme/Footer/index.js +11 -163
- package/lib-next/theme/Heading/index.js +10 -24
- package/lib-next/theme/IconDarkMode/index.js +17 -0
- package/lib-next/theme/IconExternalLink/styles.module.css +0 -2
- package/lib-next/theme/IconHome/index.js +17 -0
- package/lib-next/theme/IconLanguage/index.js +3 -3
- package/lib-next/theme/IconLightMode/index.js +17 -0
- package/lib-next/theme/LastUpdated/index.js +1 -0
- package/lib-next/theme/Layout/index.js +15 -10
- package/lib-next/theme/LayoutProviders/index.js +5 -4
- package/lib-next/theme/MDXComponents/A.js +11 -0
- package/lib-next/theme/MDXComponents/Code.js +28 -0
- package/lib-next/theme/MDXComponents/Details.js +20 -0
- package/lib-next/theme/MDXComponents/Head.js +26 -0
- package/lib-next/theme/MDXComponents/Heading.js +11 -0
- package/lib-next/theme/MDXComponents/Img.js +24 -0
- package/{src/theme/MDXComponents/styles.css → lib-next/theme/MDXComponents/Img.module.css} +1 -6
- package/lib-next/theme/MDXComponents/Pre.js +18 -0
- package/lib-next/theme/MDXComponents/Ul.js +21 -0
- package/lib-next/theme/MDXComponents/index.js +22 -57
- package/lib-next/theme/MDXContent/index.js +12 -0
- package/lib-next/theme/MDXPage/index.js +33 -28
- package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
- package/lib-next/theme/Navbar/Content/index.js +75 -0
- package/lib-next/theme/Navbar/Content/styles.module.css +15 -0
- package/lib-next/theme/Navbar/Layout/index.js +54 -0
- package/{src/theme/Navbar → lib-next/theme/Navbar/Layout}/styles.module.css +0 -13
- package/lib-next/theme/Navbar/Logo/index.js +17 -0
- package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
- package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
- package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
- package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
- package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
- package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
- package/lib-next/theme/Navbar/Search/index.js +11 -0
- package/lib-next/theme/Navbar/Search/styles.module.css +20 -0
- package/lib-next/theme/Navbar/index.js +6 -271
- package/lib-next/theme/NavbarItem/ComponentTypes.js +27 -0
- package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +2 -6
- package/lib-next/theme/NavbarItem/DocNavbarItem.js +11 -28
- package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +10 -42
- package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +25 -29
- package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +2 -9
- package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +14 -3
- package/lib-next/theme/NavbarItem/HtmlNavbarItem.js +30 -0
- package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/index.js +5 -10
- package/lib-next/theme/NavbarItem/NavbarNavLink.js +49 -35
- package/lib-next/theme/NavbarItem/SearchNavbarItem.js +6 -1
- package/lib-next/theme/NavbarItem/index.js +4 -23
- package/lib-next/theme/NavbarItem/utils.js +2 -1
- package/lib-next/theme/NotFound.js +38 -33
- package/lib-next/theme/PaginatorNavLink/index.js +8 -2
- package/lib-next/theme/SearchMetadata/index.js +9 -0
- package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +19 -33
- package/lib-next/theme/SkipToContent/index.js +3 -29
- package/lib-next/theme/TOCCollapsible/CollapseButton.js +29 -0
- package/{src/theme/TOCCollapsible/styles.module.css → lib-next/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
- package/lib-next/theme/TOCCollapsible/index.js +4 -16
- package/lib-next/theme/TOCCollapsible/index.module.css +31 -0
- package/lib-next/theme/TOCItems/Tree.js +40 -0
- package/lib-next/theme/TOCItems/index.js +3 -34
- package/lib-next/theme/TabItem/index.js +3 -1
- package/lib-next/theme/TabItem/styles.module.css +10 -0
- package/lib-next/theme/Tabs/__tests__/index.test.js +8 -8
- package/lib-next/theme/Tabs/index.js +5 -5
- package/lib-next/theme/Tabs/styles.module.css +4 -0
- package/lib-next/theme/Tag/index.js +6 -7
- package/lib-next/theme/TagsListInline/index.js +1 -1
- package/lib-next/theme/ThemedImage/index.js +3 -3
- package/package.json +25 -20
- package/src/admonitions.css +4 -0
- package/src/getSwizzleConfig.ts +173 -22
- package/src/index.ts +14 -15
- package/src/nprogress.css +41 -0
- package/src/nprogress.ts +31 -0
- package/src/theme/BackToTopButton/index.tsx +5 -114
- package/src/theme/BlogArchivePage/index.tsx +18 -17
- package/src/theme/BlogLayout/index.tsx +1 -5
- package/src/theme/BlogListPage/index.tsx +32 -13
- package/src/theme/BlogListPaginator/index.tsx +25 -28
- package/src/theme/BlogPostAuthor/index.tsx +14 -8
- package/src/theme/BlogPostItem/index.tsx +6 -6
- package/src/theme/BlogPostItem/styles.module.css +9 -0
- package/src/theme/BlogPostPage/index.tsx +55 -48
- package/src/theme/BlogPostPaginator/index.tsx +25 -28
- package/src/theme/BlogSidebar/Desktop/index.tsx +45 -0
- package/src/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
- package/src/theme/BlogSidebar/Mobile/index.tsx +38 -0
- package/src/theme/BlogSidebar/index.tsx +10 -31
- package/src/theme/BlogTagsListPage/index.tsx +17 -14
- package/src/theme/BlogTagsPostsPage/index.tsx +46 -36
- package/src/theme/CodeBlock/Container/index.tsx +35 -0
- package/src/theme/CodeBlock/Container/styles.module.css +14 -0
- package/src/theme/CodeBlock/Content/Element.tsx +30 -0
- package/src/theme/CodeBlock/Content/String.tsx +111 -0
- package/src/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
- package/src/theme/CodeBlock/CopyButton/index.tsx +67 -0
- package/src/theme/CodeBlock/CopyButton/styles.module.css +47 -0
- package/src/theme/CodeBlock/Line/index.tsx +48 -0
- package/src/theme/CodeBlock/Line/styles.module.css +51 -0
- package/src/theme/CodeBlock/WordWrapButton/index.tsx +49 -0
- package/src/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
- package/src/theme/CodeBlock/index.tsx +29 -165
- package/src/theme/ColorModeToggle/index.tsx +67 -0
- package/src/theme/ColorModeToggle/styles.module.css +35 -0
- package/src/theme/Details/index.tsx +1 -1
- package/src/theme/DocBreadcrumbs/index.tsx +65 -16
- package/src/theme/DocBreadcrumbs/styles.module.css +8 -15
- package/src/theme/DocCard/index.tsx +24 -17
- package/src/theme/DocCard/styles.module.css +8 -17
- package/src/theme/DocCardList/index.tsx +19 -10
- package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +34 -7
- package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
- package/src/theme/DocItem/index.tsx +72 -56
- package/src/theme/DocItem/styles.module.css +6 -0
- package/src/theme/DocPage/Layout/Main/index.tsx +37 -0
- package/src/theme/DocPage/Layout/Main/styles.module.css +28 -0
- package/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx +40 -0
- package/src/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
- package/src/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
- package/src/theme/DocPage/Layout/Sidebar/index.tsx +74 -0
- package/src/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
- package/src/theme/DocPage/Layout/index.tsx +39 -0
- package/src/theme/DocPage/index.tsx +30 -160
- package/src/theme/DocPaginator/index.tsx +25 -28
- package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
- package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
- package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
- package/src/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
- package/src/theme/DocSidebar/Desktop/index.tsx +40 -0
- package/src/theme/DocSidebar/Desktop/styles.module.css +50 -0
- package/src/theme/DocSidebar/Mobile/index.tsx +54 -0
- package/src/theme/DocSidebar/index.tsx +6 -121
- package/src/theme/DocSidebarItem/Category.tsx +210 -0
- package/src/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
- package/src/theme/DocSidebarItem/Html.tsx +34 -0
- package/src/theme/DocSidebarItem/Link.module.css +10 -0
- package/src/theme/DocSidebarItem/Link.tsx +58 -0
- package/src/theme/DocSidebarItem/index.tsx +4 -260
- package/src/theme/DocSidebarItems/index.tsx +1 -6
- package/src/theme/DocTagDocListPage/index.tsx +40 -33
- package/src/theme/DocTagsListPage/index.tsx +21 -16
- package/src/theme/DocVersionBanner/index.tsx +5 -6
- package/src/theme/Footer/Copyright/index.tsx +20 -0
- package/src/theme/Footer/Layout/index.tsx +34 -0
- package/src/theme/Footer/LinkItem/index.tsx +36 -0
- package/src/theme/Footer/Links/MultiColumn/index.tsx +51 -0
- package/src/theme/Footer/Links/Simple/index.tsx +42 -0
- package/src/theme/Footer/Links/index.tsx +21 -0
- package/src/theme/Footer/Logo/index.tsx +41 -0
- package/src/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
- package/src/theme/Footer/index.tsx +12 -186
- package/src/theme/Heading/index.tsx +10 -22
- package/src/theme/IconDarkMode/index.tsx +20 -0
- package/src/theme/IconExternalLink/styles.module.css +0 -2
- package/src/theme/IconHome/index.tsx +20 -0
- package/src/theme/IconLanguage/index.tsx +3 -3
- package/src/theme/IconLightMode/index.tsx +20 -0
- package/src/theme/LastUpdated/index.tsx +1 -0
- package/src/theme/Layout/index.tsx +15 -10
- package/src/theme/LayoutProviders/index.tsx +5 -4
- package/src/theme/MDXComponents/A.tsx +14 -0
- package/src/theme/MDXComponents/Code.tsx +37 -0
- package/src/theme/MDXComponents/Details.tsx +25 -0
- package/src/theme/MDXComponents/Head.tsx +29 -0
- package/src/theme/MDXComponents/Heading.tsx +14 -0
- package/{lib-next/theme/MDXComponents/styles.css → src/theme/MDXComponents/Img.module.css} +1 -6
- package/src/theme/MDXComponents/Img.tsx +26 -0
- package/src/theme/MDXComponents/Pre.tsx +22 -0
- package/src/theme/MDXComponents/Ul.tsx +24 -0
- package/src/theme/MDXComponents/index.tsx +23 -66
- package/src/theme/MDXContent/index.tsx +15 -0
- package/src/theme/MDXPage/index.tsx +33 -28
- package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
- package/src/theme/Navbar/Content/index.tsx +86 -0
- package/src/theme/Navbar/Content/styles.module.css +15 -0
- package/src/theme/Navbar/Layout/index.tsx +57 -0
- package/{lib-next/theme/Navbar → src/theme/Navbar/Layout}/styles.module.css +0 -13
- package/src/theme/Navbar/Logo/index.tsx +19 -0
- package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
- package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
- package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
- package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
- package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
- package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
- package/src/theme/Navbar/Search/index.tsx +15 -0
- package/src/theme/Navbar/Search/styles.module.css +20 -0
- package/src/theme/Navbar/index.tsx +6 -286
- package/src/theme/NavbarItem/ComponentTypes.tsx +32 -0
- package/src/theme/NavbarItem/DefaultNavbarItem.tsx +2 -2
- package/src/theme/NavbarItem/DocNavbarItem.tsx +13 -32
- package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +9 -49
- package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +26 -33
- package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +3 -10
- package/src/theme/NavbarItem/DropdownNavbarItem.tsx +15 -3
- package/src/theme/NavbarItem/HtmlNavbarItem.tsx +32 -0
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx +5 -9
- package/src/theme/NavbarItem/NavbarNavLink.tsx +41 -29
- package/src/theme/NavbarItem/SearchNavbarItem.tsx +6 -1
- package/src/theme/NavbarItem/index.tsx +9 -39
- package/src/theme/NavbarItem/utils.ts +5 -2
- package/src/theme/NotFound.tsx +38 -33
- package/src/theme/PaginatorNavLink/index.tsx +8 -2
- package/src/theme/SearchMetadata/index.tsx +9 -0
- package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +19 -33
- package/src/theme/SkipToContent/index.tsx +3 -29
- package/{lib-next/theme/TOCCollapsible/styles.module.css → src/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
- package/src/theme/TOCCollapsible/CollapseButton.tsx +35 -0
- package/src/theme/TOCCollapsible/index.module.css +31 -0
- package/src/theme/TOCCollapsible/index.tsx +4 -17
- package/src/theme/TOCItems/Tree.tsx +46 -0
- package/src/theme/TOCItems/index.tsx +2 -41
- package/src/theme/TabItem/index.tsx +7 -1
- package/src/theme/TabItem/styles.module.css +10 -0
- package/src/theme/Tabs/index.tsx +8 -9
- package/src/theme/Tabs/styles.module.css +4 -0
- package/src/theme/Tag/index.tsx +6 -8
- package/src/theme/TagsListInline/index.tsx +1 -1
- package/src/theme/ThemedImage/index.tsx +4 -3
- package/src/theme-classic.d.ts +600 -76
- package/src/translations.ts +12 -6
- package/src/validateThemeConfig.ts +90 -39
- package/lib/types.d.ts +0 -11
- package/lib-next/theme/DocPage/styles.module.css +0 -86
- package/lib-next/theme/DocSidebar/styles.module.css +0 -107
- package/lib-next/theme/Seo/index.js +0 -40
- package/lib-next/theme/Toggle/index.js +0 -100
- package/lib-next/theme/Toggle/styles.module.css +0 -106
- package/src/theme/DocPage/styles.module.css +0 -86
- package/src/theme/DocSidebar/styles.module.css +0 -107
- package/src/theme/Seo/index.tsx +0 -49
- package/src/theme/Toggle/index.tsx +0 -117
- package/src/theme/Toggle/styles.module.css +0 -106
- package/src/types.d.ts +0 -11
|
@@ -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:
|
|
26
|
-
border-top-right-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,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import React, {useCallback, useState, useRef, useEffect} from 'react';
|
|
8
|
+
import clsx from 'clsx';
|
|
9
|
+
import copy from 'copy-text-to-clipboard';
|
|
10
|
+
import {translate} from '@docusaurus/Translate';
|
|
11
|
+
import styles from './styles.module.css';
|
|
12
|
+
export default function CopyButton({code, className}) {
|
|
13
|
+
const [isCopied, setIsCopied] = useState(false);
|
|
14
|
+
const copyTimeout = useRef(undefined);
|
|
15
|
+
const handleCopyCode = useCallback(() => {
|
|
16
|
+
copy(code);
|
|
17
|
+
setIsCopied(true);
|
|
18
|
+
copyTimeout.current = window.setTimeout(() => {
|
|
19
|
+
setIsCopied(false);
|
|
20
|
+
}, 1000);
|
|
21
|
+
}, [code]);
|
|
22
|
+
useEffect(() => () => window.clearTimeout(copyTimeout.current), []);
|
|
23
|
+
return (
|
|
24
|
+
<button
|
|
25
|
+
type="button"
|
|
26
|
+
aria-label={
|
|
27
|
+
isCopied
|
|
28
|
+
? translate({
|
|
29
|
+
id: 'theme.CodeBlock.copied',
|
|
30
|
+
message: 'Copied',
|
|
31
|
+
description: 'The copied button label on code blocks',
|
|
32
|
+
})
|
|
33
|
+
: translate({
|
|
34
|
+
id: 'theme.CodeBlock.copyButtonAriaLabel',
|
|
35
|
+
message: 'Copy code to clipboard',
|
|
36
|
+
description: 'The ARIA label for copy code blocks button',
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
title={translate({
|
|
40
|
+
id: 'theme.CodeBlock.copy',
|
|
41
|
+
message: 'Copy',
|
|
42
|
+
description: 'The copy button label on code blocks',
|
|
43
|
+
})}
|
|
44
|
+
className={clsx(
|
|
45
|
+
'clean-btn',
|
|
46
|
+
className,
|
|
47
|
+
styles.copyButton,
|
|
48
|
+
isCopied && styles.copyButtonCopied,
|
|
49
|
+
)}
|
|
50
|
+
onClick={handleCopyCode}>
|
|
51
|
+
<span className={styles.copyButtonIcons} aria-hidden="true">
|
|
52
|
+
<svg className={styles.copyButtonIcon} viewBox="0 0 24 24">
|
|
53
|
+
<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" />
|
|
54
|
+
</svg>
|
|
55
|
+
<svg className={styles.copyButtonSuccessIcon} viewBox="0 0 24 24">
|
|
56
|
+
<path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" />
|
|
57
|
+
</svg>
|
|
58
|
+
</span>
|
|
59
|
+
</button>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
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
|
+
:global(.theme-code-block:hover) .copyButtonCopied {
|
|
9
|
+
opacity: 1 !important;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.copyButtonIcons {
|
|
13
|
+
position: relative;
|
|
14
|
+
width: 1.125rem;
|
|
15
|
+
height: 1.125rem;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.copyButtonIcon,
|
|
19
|
+
.copyButtonSuccessIcon {
|
|
20
|
+
position: absolute;
|
|
21
|
+
top: 0;
|
|
22
|
+
left: 0;
|
|
23
|
+
fill: currentColor;
|
|
24
|
+
opacity: inherit;
|
|
25
|
+
width: inherit;
|
|
26
|
+
height: inherit;
|
|
27
|
+
transition: all 0.15s ease;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.copyButtonSuccessIcon {
|
|
31
|
+
top: 50%;
|
|
32
|
+
left: 50%;
|
|
33
|
+
transform: translate(-50%, -50%) scale(0.33);
|
|
34
|
+
opacity: 0;
|
|
35
|
+
color: #00d600;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.copyButtonCopied .copyButtonIcon {
|
|
39
|
+
transform: scale(0.33);
|
|
40
|
+
opacity: 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.copyButtonCopied .copyButtonSuccessIcon {
|
|
44
|
+
transform: translate(-50%, -50%) scale(1);
|
|
45
|
+
opacity: 1;
|
|
46
|
+
transition-delay: 0.075s;
|
|
47
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import clsx from 'clsx';
|
|
9
|
+
import styles from './styles.module.css';
|
|
10
|
+
export default function CodeBlockLine({
|
|
11
|
+
line,
|
|
12
|
+
classNames,
|
|
13
|
+
showLineNumbers,
|
|
14
|
+
getLineProps,
|
|
15
|
+
getTokenProps,
|
|
16
|
+
}) {
|
|
17
|
+
if (line.length === 1 && line[0].content === '\n') {
|
|
18
|
+
line[0].content = '';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const lineProps = getLineProps({
|
|
22
|
+
line,
|
|
23
|
+
className: clsx(classNames, showLineNumbers && styles.codeLine),
|
|
24
|
+
});
|
|
25
|
+
const lineTokens = line.map((token, key) => (
|
|
26
|
+
<span
|
|
27
|
+
key={key}
|
|
28
|
+
{...getTokenProps({
|
|
29
|
+
token,
|
|
30
|
+
key,
|
|
31
|
+
})}
|
|
32
|
+
/>
|
|
33
|
+
));
|
|
34
|
+
return (
|
|
35
|
+
<span {...lineProps}>
|
|
36
|
+
{showLineNumbers ? (
|
|
37
|
+
<>
|
|
38
|
+
<span className={styles.codeLineNumber} />
|
|
39
|
+
<span className={styles.codeLineContent}>{lineTokens}</span>
|
|
40
|
+
</>
|
|
41
|
+
) : (
|
|
42
|
+
<>
|
|
43
|
+
{lineTokens}
|
|
44
|
+
<br />
|
|
45
|
+
</>
|
|
46
|
+
)}
|
|
47
|
+
</span>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
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
|
+
:global(.theme-code-block-highlighted-line) {
|
|
9
|
+
background-color: var(--docusaurus-highlighted-code-line-bg);
|
|
10
|
+
display: block;
|
|
11
|
+
margin: 0 calc(-1 * var(--ifm-pre-padding));
|
|
12
|
+
padding: 0 var(--ifm-pre-padding);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Intentionally has zero specificity, so that to be able to override
|
|
16
|
+
the background in custom CSS file due bug https://github.com/facebook/docusaurus/issues/3678 */
|
|
17
|
+
:where(:root) {
|
|
18
|
+
--docusaurus-highlighted-code-line-bg: rgb(72 77 91);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
:where([data-theme='dark']) {
|
|
22
|
+
--docusaurus-highlighted-code-line-bg: rgb(100 100 100);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.codeLine {
|
|
26
|
+
display: table-row;
|
|
27
|
+
counter-increment: line-count;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.codeLineNumber {
|
|
31
|
+
display: table-cell;
|
|
32
|
+
text-align: right;
|
|
33
|
+
width: 1%;
|
|
34
|
+
position: sticky;
|
|
35
|
+
left: 0;
|
|
36
|
+
padding: 0 var(--ifm-pre-padding);
|
|
37
|
+
background: var(--ifm-pre-background);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.codeLineNumber::before {
|
|
41
|
+
content: counter(line-count);
|
|
42
|
+
opacity: 0.4;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.highlightedCodeLine .codeLineNumber::before {
|
|
46
|
+
opacity: 0.8;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.codeLineContent {
|
|
50
|
+
padding-right: var(--ifm-pre-padding);
|
|
51
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import clsx from 'clsx';
|
|
9
|
+
import {translate} from '@docusaurus/Translate';
|
|
10
|
+
import styles from './styles.module.css';
|
|
11
|
+
export default function WordWrapButton({className, onClick, isEnabled}) {
|
|
12
|
+
const title = translate({
|
|
13
|
+
id: 'theme.CodeBlock.wordWrapToggle',
|
|
14
|
+
message: 'Toggle word wrap',
|
|
15
|
+
description:
|
|
16
|
+
'The title attribute for toggle word wrapping button of code block lines',
|
|
17
|
+
});
|
|
18
|
+
return (
|
|
19
|
+
<button
|
|
20
|
+
type="button"
|
|
21
|
+
onClick={onClick}
|
|
22
|
+
className={clsx(
|
|
23
|
+
'clean-btn',
|
|
24
|
+
className,
|
|
25
|
+
isEnabled && styles.wordWrapButtonEnabled,
|
|
26
|
+
)}
|
|
27
|
+
aria-label={title}
|
|
28
|
+
title={title}>
|
|
29
|
+
<svg
|
|
30
|
+
className={styles.wordWrapButtonIcon}
|
|
31
|
+
viewBox="0 0 24 24"
|
|
32
|
+
aria-hidden="true">
|
|
33
|
+
<path
|
|
34
|
+
fill="currentColor"
|
|
35
|
+
d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"
|
|
36
|
+
/>
|
|
37
|
+
</svg>
|
|
38
|
+
</button>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
.wordWrapButtonIcon {
|
|
9
|
+
width: 1.2rem;
|
|
10
|
+
height: 1.2rem;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.wordWrapButtonEnabled .wordWrapButtonIcon {
|
|
14
|
+
color: var(--ifm-color-primary);
|
|
15
|
+
}
|
|
@@ -4,175 +4,37 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
import React, {isValidElement
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
ThemeClassNames,
|
|
18
|
-
usePrismTheme,
|
|
19
|
-
} from '@docusaurus/theme-common';
|
|
20
|
-
import styles from './styles.module.css';
|
|
21
|
-
export default function CodeBlock({
|
|
22
|
-
children,
|
|
23
|
-
className: blockClassName = '',
|
|
24
|
-
metastring,
|
|
25
|
-
title,
|
|
26
|
-
language: languageProp,
|
|
27
|
-
}) {
|
|
28
|
-
const {prism} = useThemeConfig();
|
|
29
|
-
const [showCopied, setShowCopied] = useState(false);
|
|
30
|
-
const [mounted, setMounted] = useState(false); // The Prism theme on SSR is always the default theme but the site theme
|
|
31
|
-
// can be in a different mode. React hydration doesn't update DOM styles
|
|
32
|
-
// that come from SSR. Hence force a re-render after mounting to apply the
|
|
33
|
-
// current relevant styles. There will be a flash seen of the original
|
|
34
|
-
// styles seen using this current approach but that's probably ok. Fixing
|
|
35
|
-
// the flash will require changing the theming approach and is not worth it
|
|
36
|
-
// at this point.
|
|
37
|
-
|
|
38
|
-
useEffect(() => {
|
|
39
|
-
setMounted(true);
|
|
40
|
-
}, []); // We still parse the metastring in case we want to support more syntax in the
|
|
41
|
-
// future. Note that MDX doesn't strip quotes when parsing metastring:
|
|
42
|
-
// "title=\"xyz\"" => title: "\"xyz\""
|
|
43
|
-
|
|
44
|
-
const codeBlockTitle = parseCodeBlockTitle(metastring) || title;
|
|
45
|
-
const prismTheme = usePrismTheme(); // <pre> tags in markdown map to CodeBlocks and they may contain JSX children.
|
|
46
|
-
// When the children is not a simple string, we just return a styled block
|
|
47
|
-
// without actually highlighting.
|
|
7
|
+
import React, {isValidElement} from 'react';
|
|
8
|
+
import useIsBrowser from '@docusaurus/useIsBrowser';
|
|
9
|
+
import ElementContent from '@theme/CodeBlock/Content/Element';
|
|
10
|
+
import StringContent from '@theme/CodeBlock/Content/String';
|
|
11
|
+
/**
|
|
12
|
+
* Best attempt to make the children a plain string so it is copyable. If there
|
|
13
|
+
* are react elements, we will not be able to copy the content, and it will
|
|
14
|
+
* return `children` as-is; otherwise, it concatenates the string children
|
|
15
|
+
* together.
|
|
16
|
+
*/
|
|
48
17
|
|
|
18
|
+
function maybeStringifyChildren(children) {
|
|
49
19
|
if (React.Children.toArray(children).some((el) => isValidElement(el))) {
|
|
50
|
-
return
|
|
51
|
-
<Highlight
|
|
52
|
-
{...defaultProps}
|
|
53
|
-
key={String(mounted)}
|
|
54
|
-
theme={prismTheme}
|
|
55
|
-
code=""
|
|
56
|
-
language={'text'}>
|
|
57
|
-
{({className, style}) => (
|
|
58
|
-
<pre
|
|
59
|
-
/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */
|
|
60
|
-
tabIndex={0}
|
|
61
|
-
className={clsx(
|
|
62
|
-
className,
|
|
63
|
-
styles.codeBlockStandalone,
|
|
64
|
-
'thin-scrollbar',
|
|
65
|
-
styles.codeBlockContainer,
|
|
66
|
-
blockClassName,
|
|
67
|
-
ThemeClassNames.common.codeBlock,
|
|
68
|
-
)}
|
|
69
|
-
style={style}>
|
|
70
|
-
<code className={styles.codeBlockLines}>{children}</code>
|
|
71
|
-
</pre>
|
|
72
|
-
)}
|
|
73
|
-
</Highlight>
|
|
74
|
-
);
|
|
20
|
+
return children;
|
|
75
21
|
} // The children is now guaranteed to be one/more plain strings
|
|
76
22
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
languageProp ?? parseLanguage(blockClassName) ?? prism.defaultLanguage;
|
|
80
|
-
const {highlightLines, code} = parseLines(content, metastring, language);
|
|
81
|
-
|
|
82
|
-
const handleCopyCode = () => {
|
|
83
|
-
copy(code);
|
|
84
|
-
setShowCopied(true);
|
|
85
|
-
setTimeout(() => setShowCopied(false), 2000);
|
|
86
|
-
};
|
|
23
|
+
return Array.isArray(children) ? children.join('') : children;
|
|
24
|
+
}
|
|
87
25
|
|
|
26
|
+
export default function CodeBlock({children: rawChildren, ...props}) {
|
|
27
|
+
// The Prism theme on SSR is always the default theme but the site theme can
|
|
28
|
+
// be in a different mode. React hydration doesn't update DOM styles that come
|
|
29
|
+
// from SSR. Hence force a re-render after mounting to apply the current
|
|
30
|
+
// relevant styles.
|
|
31
|
+
const isBrowser = useIsBrowser();
|
|
32
|
+
const children = maybeStringifyChildren(rawChildren);
|
|
33
|
+
const CodeBlockComp =
|
|
34
|
+
typeof children === 'string' ? StringContent : ElementContent;
|
|
88
35
|
return (
|
|
89
|
-
<
|
|
90
|
-
{
|
|
91
|
-
|
|
92
|
-
theme={prismTheme}
|
|
93
|
-
code={code}
|
|
94
|
-
language={language ?? 'text'}>
|
|
95
|
-
{({className, style, tokens, getLineProps, getTokenProps}) => (
|
|
96
|
-
<div
|
|
97
|
-
className={clsx(
|
|
98
|
-
styles.codeBlockContainer,
|
|
99
|
-
blockClassName,
|
|
100
|
-
{
|
|
101
|
-
[`language-${language}`]:
|
|
102
|
-
language && !blockClassName.includes(`language-${language}`),
|
|
103
|
-
},
|
|
104
|
-
ThemeClassNames.common.codeBlock,
|
|
105
|
-
)}>
|
|
106
|
-
{codeBlockTitle && (
|
|
107
|
-
<div style={style} className={styles.codeBlockTitle}>
|
|
108
|
-
{codeBlockTitle}
|
|
109
|
-
</div>
|
|
110
|
-
)}
|
|
111
|
-
<div className={clsx(styles.codeBlockContent, language)}>
|
|
112
|
-
<pre
|
|
113
|
-
/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */
|
|
114
|
-
tabIndex={0}
|
|
115
|
-
className={clsx(className, styles.codeBlock, 'thin-scrollbar')}
|
|
116
|
-
style={style}>
|
|
117
|
-
<code className={styles.codeBlockLines}>
|
|
118
|
-
{tokens.map((line, i) => {
|
|
119
|
-
if (line.length === 1 && line[0].content === '\n') {
|
|
120
|
-
line[0].content = '';
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
const lineProps = getLineProps({
|
|
124
|
-
line,
|
|
125
|
-
key: i,
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
if (highlightLines.includes(i)) {
|
|
129
|
-
lineProps.className += ' docusaurus-highlight-code-line';
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
return (
|
|
133
|
-
<span key={i} {...lineProps}>
|
|
134
|
-
{line.map((token, key) => (
|
|
135
|
-
<span
|
|
136
|
-
key={key}
|
|
137
|
-
{...getTokenProps({
|
|
138
|
-
token,
|
|
139
|
-
key,
|
|
140
|
-
})}
|
|
141
|
-
/>
|
|
142
|
-
))}
|
|
143
|
-
<br />
|
|
144
|
-
</span>
|
|
145
|
-
);
|
|
146
|
-
})}
|
|
147
|
-
</code>
|
|
148
|
-
</pre>
|
|
149
|
-
|
|
150
|
-
<button
|
|
151
|
-
type="button"
|
|
152
|
-
aria-label={translate({
|
|
153
|
-
id: 'theme.CodeBlock.copyButtonAriaLabel',
|
|
154
|
-
message: 'Copy code to clipboard',
|
|
155
|
-
description: 'The ARIA label for copy code blocks button',
|
|
156
|
-
})}
|
|
157
|
-
className={clsx(styles.copyButton, 'clean-btn')}
|
|
158
|
-
onClick={handleCopyCode}>
|
|
159
|
-
{showCopied ? (
|
|
160
|
-
<Translate
|
|
161
|
-
id="theme.CodeBlock.copied"
|
|
162
|
-
description="The copied button label on code blocks">
|
|
163
|
-
Copied
|
|
164
|
-
</Translate>
|
|
165
|
-
) : (
|
|
166
|
-
<Translate
|
|
167
|
-
id="theme.CodeBlock.copy"
|
|
168
|
-
description="The copy button label on code blocks">
|
|
169
|
-
Copy
|
|
170
|
-
</Translate>
|
|
171
|
-
)}
|
|
172
|
-
</button>
|
|
173
|
-
</div>
|
|
174
|
-
</div>
|
|
175
|
-
)}
|
|
176
|
-
</Highlight>
|
|
36
|
+
<CodeBlockComp key={String(isBrowser)} {...props}>
|
|
37
|
+
{children}
|
|
38
|
+
</CodeBlockComp>
|
|
177
39
|
);
|
|
178
40
|
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import useIsBrowser from '@docusaurus/useIsBrowser';
|
|
9
|
+
import {translate} from '@docusaurus/Translate';
|
|
10
|
+
import IconLightMode from '@theme/IconLightMode';
|
|
11
|
+
import IconDarkMode from '@theme/IconDarkMode';
|
|
12
|
+
import clsx from 'clsx';
|
|
13
|
+
import styles from './styles.module.css';
|
|
14
|
+
|
|
15
|
+
function ColorModeToggle({className, value, onChange}) {
|
|
16
|
+
const isBrowser = useIsBrowser();
|
|
17
|
+
const title = translate(
|
|
18
|
+
{
|
|
19
|
+
message: 'Switch between dark and light mode (currently {mode})',
|
|
20
|
+
id: 'theme.colorToggle.ariaLabel',
|
|
21
|
+
description: 'The ARIA label for the navbar color mode toggle',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
mode:
|
|
25
|
+
value === 'dark'
|
|
26
|
+
? translate({
|
|
27
|
+
message: 'dark mode',
|
|
28
|
+
id: 'theme.colorToggle.ariaLabel.mode.dark',
|
|
29
|
+
description: 'The name for the dark color mode',
|
|
30
|
+
})
|
|
31
|
+
: translate({
|
|
32
|
+
message: 'light mode',
|
|
33
|
+
id: 'theme.colorToggle.ariaLabel.mode.light',
|
|
34
|
+
description: 'The name for the light color mode',
|
|
35
|
+
}),
|
|
36
|
+
},
|
|
37
|
+
);
|
|
38
|
+
return (
|
|
39
|
+
<div className={clsx(styles.toggle, className)}>
|
|
40
|
+
<button
|
|
41
|
+
className={clsx(
|
|
42
|
+
'clean-btn',
|
|
43
|
+
styles.toggleButton,
|
|
44
|
+
!isBrowser && styles.toggleButtonDisabled,
|
|
45
|
+
)}
|
|
46
|
+
type="button"
|
|
47
|
+
onClick={() => onChange(value === 'dark' ? 'light' : 'dark')}
|
|
48
|
+
disabled={!isBrowser}
|
|
49
|
+
title={title}
|
|
50
|
+
aria-label={title}>
|
|
51
|
+
<IconLightMode
|
|
52
|
+
className={clsx(styles.toggleIcon, styles.lightToggleIcon)}
|
|
53
|
+
/>
|
|
54
|
+
<IconDarkMode
|
|
55
|
+
className={clsx(styles.toggleIcon, styles.darkToggleIcon)}
|
|
56
|
+
/>
|
|
57
|
+
</button>
|
|
58
|
+
</div>
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
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
|
+
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import clsx from 'clsx';
|
|
9
|
-
import {Details as DetailsGeneric} from '@docusaurus/theme-common';
|
|
9
|
+
import {Details as DetailsGeneric} from '@docusaurus/theme-common/Details';
|
|
10
10
|
import styles from './styles.module.css'; // Should we have a custom details/summary comp in Infima instead of reusing
|
|
11
11
|
// alert classes?
|
|
12
12
|
|