@docusaurus/theme-classic 2.0.0-beta.8e9b829d9 → 2.0.0-beta.9
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/README.md +1 -1
- package/codeTranslations/ar.json +12 -6
- package/codeTranslations/base.json +12 -0
- package/codeTranslations/bn.json +6 -0
- package/codeTranslations/cs.json +62 -0
- package/codeTranslations/da.json +6 -0
- package/codeTranslations/de.json +8 -2
- package/codeTranslations/es.json +10 -4
- package/codeTranslations/fa.json +9 -3
- package/codeTranslations/fil.json +6 -0
- package/codeTranslations/fr.json +6 -0
- package/codeTranslations/he.json +6 -0
- package/codeTranslations/hi.json +6 -0
- package/codeTranslations/ja.json +6 -0
- package/codeTranslations/ko.json +6 -0
- package/codeTranslations/pl.json +6 -0
- package/codeTranslations/pt-BR.json +8 -2
- package/codeTranslations/pt-PT.json +6 -0
- package/codeTranslations/ru.json +6 -0
- package/codeTranslations/sr.json +62 -0
- package/codeTranslations/tr.json +9 -3
- package/codeTranslations/vi.json +10 -4
- package/codeTranslations/zh-Hans.json +6 -0
- package/codeTranslations/zh-Hant.json +6 -0
- package/lib/__tests__/validateThemeConfig.test.js +154 -4
- package/lib/index.js +2 -3
- package/lib/prism-include-languages.js +9 -5
- package/lib/theme/AnnouncementBar/index.js +8 -12
- package/lib/theme/AnnouncementBar/styles.module.css +23 -32
- package/lib/theme/BackToTopButton/index.js +27 -13
- package/lib/theme/BackToTopButton/styles.module.css +17 -14
- package/lib/theme/BlogArchivePage/index.js +89 -0
- package/lib/theme/BlogLayout/index.js +2 -6
- package/lib/theme/BlogListPage/index.js +1 -1
- package/lib/theme/BlogPostAuthor/index.js +51 -0
- package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
- package/lib/theme/BlogPostAuthors/index.js +47 -0
- package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
- package/lib/theme/BlogPostItem/index.js +58 -67
- package/lib/theme/BlogPostPage/index.js +33 -4
- package/lib/theme/BlogSidebar/styles.module.css +2 -2
- package/lib/theme/BlogTagsListPage/index.js +3 -28
- package/lib/theme/BlogTagsPostsPage/index.js +5 -8
- package/lib/theme/CodeBlock/index.js +44 -37
- package/lib/theme/CodeBlock/styles.module.css +1 -2
- package/lib/theme/DocItem/index.js +15 -40
- package/lib/theme/DocItem/styles.module.css +2 -12
- package/lib/theme/DocItemFooter/index.js +79 -0
- package/lib/theme/DocItemFooter/styles.module.css +18 -0
- package/lib/theme/DocPage/index.js +18 -13
- package/lib/theme/DocSidebar/index.js +11 -16
- package/lib/theme/DocSidebarItem/index.js +12 -10
- package/lib/theme/DocTagDocListPage/index.js +89 -0
- package/lib/theme/DocTagsListPage/index.js +44 -0
- package/lib/theme/DocVersionBanner/index.js +6 -4
- package/lib/theme/EditThisPage/index.js +3 -1
- package/lib/theme/Footer/index.js +5 -3
- package/lib/theme/Heading/index.js +7 -9
- package/lib/theme/Heading/styles.css +4 -6
- package/lib/theme/Heading/styles.module.css +9 -5
- package/lib/theme/IconClose/index.js +31 -0
- package/lib/theme/LastUpdated/index.js +4 -2
- package/lib/theme/LayoutHead/index.js +13 -11
- package/lib/theme/LayoutProviders/index.js +7 -5
- package/lib/theme/Logo/index.js +14 -12
- package/lib/theme/MDXComponents/index.js +27 -1
- package/lib/theme/MDXComponents/styles.css +11 -0
- package/lib/theme/MDXPage/index.js +2 -1
- package/lib/theme/Navbar/index.js +20 -3
- package/lib/theme/Navbar/styles.module.css +5 -1
- package/lib/theme/NavbarItem/DefaultNavbarItem.js +12 -4
- package/lib/theme/NavbarItem/DocNavbarItem.js +5 -3
- package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +7 -1
- package/lib/theme/NavbarItem/DropdownNavbarItem.js +3 -3
- package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +3 -4
- package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/lib/theme/NavbarItem/index.js +5 -0
- package/lib/theme/Seo/index.js +10 -7
- package/lib/theme/TOC/index.js +9 -30
- package/lib/theme/TOC/styles.module.css +1 -1
- package/lib/theme/TOCCollapsible/index.js +5 -3
- package/lib/theme/TOCInline/index.js +7 -27
- package/lib/theme/TOCItems/index.js +78 -0
- package/lib/theme/Tabs/__tests__/index.test.js +123 -0
- package/lib/theme/Tabs/index.js +73 -50
- package/lib/theme/Tabs/styles.module.css +0 -13
- package/lib/theme/Tag/index.js +40 -0
- package/lib/theme/Tag/styles.module.css +70 -0
- package/lib/theme/TagsListByLetter/index.js +48 -0
- package/lib/theme/TagsListByLetter/styles.module.css +11 -0
- package/lib/theme/TagsListInline/index.js +44 -0
- package/lib/theme/TagsListInline/styles.module.css +15 -0
- package/lib/theme/ThemedImage/index.js +3 -5
- package/lib/theme/Toggle/index.js +23 -18
- package/lib/theme/Toggle/styles.module.css +91 -0
- package/lib/theme/hooks/useHideableNavbar.js +14 -31
- package/lib/theme/hooks/useTheme.js +2 -2
- package/lib/theme/hooks/useWindowSize.js +2 -7
- package/lib/theme/prism-include-languages.js +4 -3
- package/lib/translations.js +4 -4
- package/lib/types.d.ts +216 -105
- package/lib/validateThemeConfig.js +215 -254
- package/lib-next/__tests__/validateThemeConfig.test.js +154 -4
- package/lib-next/index.js +1 -2
- package/lib-next/prism-include-languages.js +0 -2
- package/lib-next/theme/AnnouncementBar/index.js +7 -12
- package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
- package/lib-next/theme/BackToTopButton/index.js +37 -17
- package/lib-next/theme/BackToTopButton/styles.module.css +17 -14
- package/lib-next/theme/BlogArchivePage/index.js +80 -0
- package/lib-next/theme/BlogLayout/index.js +4 -7
- package/lib-next/theme/BlogListPage/index.js +1 -0
- package/lib-next/theme/BlogPostAuthor/index.js +46 -0
- package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
- package/lib-next/theme/BlogPostAuthors/index.js +34 -0
- package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
- package/lib-next/theme/BlogPostItem/index.js +79 -86
- package/lib-next/theme/BlogPostPage/index.js +55 -8
- package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
- package/lib-next/theme/BlogTagsListPage/index.js +7 -39
- package/lib-next/theme/BlogTagsPostsPage/index.js +3 -4
- package/lib-next/theme/CodeBlock/index.js +53 -49
- package/lib-next/theme/CodeBlock/styles.module.css +1 -2
- package/lib-next/theme/DocItem/index.js +27 -45
- package/lib-next/theme/DocItem/styles.module.css +2 -12
- package/lib-next/theme/DocItemFooter/index.js +79 -0
- package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
- package/lib-next/theme/DocPage/index.js +18 -14
- package/lib-next/theme/DocSidebar/index.js +18 -15
- package/lib-next/theme/DocSidebarItem/index.js +31 -11
- package/lib-next/theme/DocTagDocListPage/index.js +89 -0
- package/lib-next/theme/DocTagsListPage/index.js +38 -0
- package/lib-next/theme/DocVersionBanner/index.js +16 -9
- package/lib-next/theme/EditThisPage/index.js +6 -1
- package/lib-next/theme/Footer/index.js +14 -3
- package/lib-next/theme/Heading/index.js +10 -13
- package/lib-next/theme/Heading/styles.css +4 -6
- package/lib-next/theme/Heading/styles.module.css +9 -5
- package/lib-next/theme/IconClose/index.js +23 -0
- package/lib-next/theme/LastUpdated/index.js +3 -2
- package/lib-next/theme/LayoutHead/index.js +9 -15
- package/lib-next/theme/LayoutProviders/index.js +8 -5
- package/lib-next/theme/Logo/index.js +23 -19
- package/lib-next/theme/MDXComponents/index.js +20 -1
- package/lib-next/theme/MDXComponents/styles.css +11 -0
- package/lib-next/theme/MDXPage/index.js +10 -2
- package/lib-next/theme/Navbar/index.js +27 -3
- package/lib-next/theme/Navbar/styles.module.css +5 -1
- package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +15 -4
- package/lib-next/theme/NavbarItem/DocNavbarItem.js +5 -3
- package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +12 -4
- package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +4 -6
- package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +2 -6
- package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/lib-next/theme/NavbarItem/index.js +2 -0
- package/lib-next/theme/Seo/index.js +11 -7
- package/lib-next/theme/TOC/index.js +12 -36
- package/lib-next/theme/TOC/styles.module.css +1 -1
- package/lib-next/theme/TOCCollapsible/index.js +12 -3
- package/lib-next/theme/TOCInline/index.js +10 -28
- package/lib-next/theme/TOCItems/index.js +85 -0
- package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
- package/lib-next/theme/Tabs/index.js +91 -43
- package/lib-next/theme/Tabs/styles.module.css +0 -13
- package/lib-next/theme/Tag/index.js +27 -0
- package/lib-next/theme/Tag/styles.module.css +70 -0
- package/lib-next/theme/TagsListByLetter/index.js +42 -0
- package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
- package/lib-next/theme/TagsListInline/index.js +31 -0
- package/lib-next/theme/TagsListInline/styles.module.css +15 -0
- package/lib-next/theme/ThemedImage/index.js +3 -3
- package/lib-next/theme/Toggle/index.js +20 -15
- package/lib-next/theme/Toggle/styles.module.css +91 -0
- package/lib-next/theme/hooks/useHideableNavbar.js +31 -47
- package/lib-next/theme/hooks/useTheme.js +2 -2
- package/lib-next/theme/hooks/useWindowSize.js +2 -6
- package/lib-next/theme/prism-include-languages.js +2 -1
- package/lib-next/translations.js +6 -10
- package/lib-next/types.d.ts +216 -105
- package/lib-next/validateThemeConfig.js +40 -36
- package/package.json +23 -19
- package/src/__tests__/validateThemeConfig.test.js +154 -4
- package/src/index.ts +11 -9
- package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
- package/src/theme/AnnouncementBar/index.tsx +8 -12
- package/src/theme/AnnouncementBar/styles.module.css +23 -32
- package/src/theme/BackToTopButton/index.tsx +39 -17
- package/src/theme/BackToTopButton/styles.module.css +17 -14
- package/src/theme/BlogArchivePage/index.tsx +91 -0
- package/src/theme/BlogLayout/index.tsx +4 -8
- package/src/theme/BlogListPage/index.tsx +1 -0
- package/src/theme/BlogPostAuthor/index.tsx +49 -0
- package/src/theme/BlogPostAuthor/styles.module.css +12 -0
- package/src/theme/BlogPostAuthors/index.tsx +36 -0
- package/src/theme/BlogPostAuthors/styles.module.css +11 -0
- package/src/theme/BlogPostItem/index.tsx +70 -80
- package/src/theme/BlogPostPage/index.tsx +57 -8
- package/src/theme/BlogSidebar/styles.module.css +2 -2
- package/src/theme/BlogTagsListPage/index.tsx +7 -41
- package/src/theme/BlogTagsPostsPage/index.tsx +3 -4
- package/src/theme/CodeBlock/index.tsx +63 -47
- package/src/theme/CodeBlock/styles.module.css +1 -2
- package/src/theme/DocItem/index.tsx +27 -46
- package/src/theme/DocItem/styles.module.css +2 -12
- package/src/theme/DocItemFooter/index.tsx +91 -0
- package/src/theme/DocItemFooter/styles.module.css +18 -0
- package/src/theme/DocPage/index.tsx +16 -12
- package/src/theme/DocSidebar/index.tsx +20 -16
- package/src/theme/DocSidebarItem/index.tsx +29 -10
- package/src/theme/DocTagDocListPage/index.tsx +89 -0
- package/src/theme/DocTagsListPage/index.tsx +41 -0
- package/src/theme/DocVersionBanner/index.tsx +26 -15
- package/src/theme/EditThisPage/index.tsx +6 -1
- package/src/theme/Footer/index.tsx +16 -3
- package/src/theme/Heading/index.tsx +10 -13
- package/src/theme/Heading/styles.css +4 -6
- package/src/theme/Heading/styles.module.css +9 -5
- package/src/theme/IconClose/index.tsx +26 -0
- package/src/theme/LastUpdated/index.tsx +3 -2
- package/src/theme/LayoutHead/index.tsx +9 -9
- package/src/theme/LayoutProviders/index.tsx +8 -5
- package/src/theme/Logo/index.tsx +19 -15
- package/src/theme/MDXComponents/index.tsx +20 -1
- package/src/theme/MDXComponents/styles.css +11 -0
- package/src/theme/MDXPage/index.tsx +10 -2
- package/src/theme/Navbar/index.tsx +26 -2
- package/src/theme/Navbar/styles.module.css +5 -1
- package/src/theme/NavbarItem/DefaultNavbarItem.tsx +15 -4
- package/src/theme/NavbarItem/DocNavbarItem.tsx +9 -5
- package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +15 -6
- package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
- package/src/theme/NavbarItem/DropdownNavbarItem.tsx +4 -6
- package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +6 -5
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/src/theme/NavbarItem/index.tsx +6 -1
- package/src/theme/Seo/index.tsx +7 -4
- package/src/theme/TOC/index.tsx +13 -38
- package/src/theme/TOC/styles.module.css +1 -1
- package/src/theme/TOCCollapsible/index.tsx +8 -2
- package/src/theme/TOCInline/index.tsx +13 -32
- package/src/theme/TOCItems/index.tsx +96 -0
- package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
- package/src/theme/Tabs/index.tsx +93 -49
- package/src/theme/Tabs/styles.module.css +0 -13
- package/src/theme/Tag/index.tsx +31 -0
- package/src/theme/Tag/styles.module.css +70 -0
- package/src/theme/TagsListByLetter/index.tsx +45 -0
- package/src/theme/TagsListByLetter/styles.module.css +11 -0
- package/src/theme/TagsListInline/index.tsx +35 -0
- package/src/theme/TagsListInline/styles.module.css +15 -0
- package/src/theme/ThemedImage/index.tsx +3 -3
- package/src/theme/Toggle/index.tsx +20 -15
- package/src/theme/Toggle/styles.module.css +91 -0
- package/src/theme/hooks/useContextualSearchFilters.ts +1 -1
- package/src/theme/hooks/useHideableNavbar.ts +32 -47
- package/src/theme/hooks/useTabGroupChoice.ts +2 -2
- package/src/theme/hooks/useTheme.ts +2 -2
- package/src/theme/hooks/useWindowSize.ts +2 -7
- package/src/theme/prism-include-languages.ts +3 -2
- package/src/translations.ts +6 -10
- package/src/types.d.ts +216 -105
- package/src/{validateThemeConfig.js → validateThemeConfig.ts} +46 -12
- package/tsconfig.json +0 -1
- package/update-code-translations.js +5 -4
- package/update-code-translations.test.js +1 -1
- package/update.js +151 -0
- package/lib/theme/Toggle/styles.css +0 -103
- package/lib/theme/hooks/useScrollPosition.js +0 -51
- package/lib/theme/hooks/useTOCHighlight.js +0 -87
- package/lib-next/theme/Toggle/styles.css +0 -103
- package/lib-next/theme/hooks/useScrollPosition.js +0 -42
- package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
- package/src/theme/Toggle/styles.css +0 -103
- package/src/theme/hooks/useScrollPosition.ts +0 -52
- package/src/theme/hooks/useTOCHighlight.ts +0 -98
|
@@ -4,9 +4,7 @@
|
|
|
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
|
-
|
|
8
|
-
const {Joi, URISchema} = require('@docusaurus/utils-validation');
|
|
9
|
-
|
|
7
|
+
import {Joi, URISchema} from '@docusaurus/utils-validation';
|
|
10
8
|
const DEFAULT_DOCS_CONFIG = {
|
|
11
9
|
versionPersistence: 'localStorage',
|
|
12
10
|
};
|
|
@@ -15,7 +13,6 @@ const DocsSchema = Joi.object({
|
|
|
15
13
|
.equal('localStorage', 'none')
|
|
16
14
|
.default(DEFAULT_DOCS_CONFIG.versionPersistence),
|
|
17
15
|
}).default(DEFAULT_DOCS_CONFIG);
|
|
18
|
-
|
|
19
16
|
const DEFAULT_COLOR_MODE_CONFIG = {
|
|
20
17
|
defaultMode: 'light',
|
|
21
18
|
disableSwitch: false,
|
|
@@ -27,7 +24,6 @@ const DEFAULT_COLOR_MODE_CONFIG = {
|
|
|
27
24
|
lightIconStyle: {},
|
|
28
25
|
},
|
|
29
26
|
};
|
|
30
|
-
|
|
31
27
|
const DEFAULT_CONFIG = {
|
|
32
28
|
colorMode: DEFAULT_COLOR_MODE_CONFIG,
|
|
33
29
|
docs: DEFAULT_DOCS_CONFIG,
|
|
@@ -40,19 +36,19 @@ const DEFAULT_CONFIG = {
|
|
|
40
36
|
items: [],
|
|
41
37
|
},
|
|
42
38
|
hideableSidebar: false,
|
|
39
|
+
tableOfContents: {
|
|
40
|
+
minHeadingLevel: 2,
|
|
41
|
+
maxHeadingLevel: 3,
|
|
42
|
+
},
|
|
43
43
|
};
|
|
44
44
|
exports.DEFAULT_CONFIG = DEFAULT_CONFIG;
|
|
45
|
-
|
|
46
45
|
const NavbarItemPosition = Joi.string().equal('left', 'right').default('left');
|
|
47
|
-
|
|
48
46
|
const NavbarItemBaseSchema = Joi.object({
|
|
49
47
|
label: Joi.string(),
|
|
50
48
|
className: Joi.string(),
|
|
51
|
-
})
|
|
52
|
-
// We allow any unknown attributes on the links
|
|
49
|
+
}) // We allow any unknown attributes on the links
|
|
53
50
|
// (users may need additional attributes like target, aria-role, data-customAttribute...)
|
|
54
51
|
.unknown();
|
|
55
|
-
|
|
56
52
|
const DefaultNavbarItemSchema = NavbarItemBaseSchema.append({
|
|
57
53
|
to: Joi.string(),
|
|
58
54
|
href: URISchema,
|
|
@@ -68,18 +64,15 @@ const DefaultNavbarItemSchema = NavbarItemBaseSchema.append({
|
|
|
68
64
|
.messages({
|
|
69
65
|
'object.xor': 'One and only one between "to" and "href" should be provided',
|
|
70
66
|
});
|
|
71
|
-
|
|
72
67
|
const DocsVersionNavbarItemSchema = NavbarItemBaseSchema.append({
|
|
73
68
|
type: Joi.string().equal('docsVersion').required(),
|
|
74
69
|
to: Joi.string(),
|
|
75
70
|
docsPluginId: Joi.string(),
|
|
76
71
|
});
|
|
77
|
-
|
|
78
72
|
const DocItemSchema = NavbarItemBaseSchema.append({
|
|
79
73
|
type: Joi.string().equal('doc').required(),
|
|
80
74
|
docId: Joi.string().required(),
|
|
81
75
|
docsPluginId: Joi.string(),
|
|
82
|
-
activeSidebarClassName: Joi.string().default('navbar__link--active'),
|
|
83
76
|
});
|
|
84
77
|
|
|
85
78
|
const itemWithType = (type) => {
|
|
@@ -96,7 +89,7 @@ const itemWithType = (type) => {
|
|
|
96
89
|
|
|
97
90
|
const DropdownSubitemSchema = Joi.object({
|
|
98
91
|
position: Joi.forbidden(),
|
|
99
|
-
}).when({
|
|
92
|
+
}).when('.', {
|
|
100
93
|
switch: [
|
|
101
94
|
{
|
|
102
95
|
is: itemWithType('docsVersion'),
|
|
@@ -126,11 +119,9 @@ const DropdownSubitemSchema = Joi.object({
|
|
|
126
119
|
'any.unknown': 'Bad navbar item type {.type}',
|
|
127
120
|
}),
|
|
128
121
|
});
|
|
129
|
-
|
|
130
122
|
const DropdownNavbarItemSchema = NavbarItemBaseSchema.append({
|
|
131
123
|
items: Joi.array().items(DropdownSubitemSchema).required(),
|
|
132
124
|
});
|
|
133
|
-
|
|
134
125
|
const DocsVersionDropdownNavbarItemSchema = NavbarItemBaseSchema.append({
|
|
135
126
|
type: Joi.string().equal('docsVersionDropdown').required(),
|
|
136
127
|
docsPluginId: Joi.string(),
|
|
@@ -138,20 +129,17 @@ const DocsVersionDropdownNavbarItemSchema = NavbarItemBaseSchema.append({
|
|
|
138
129
|
dropdownItemsBefore: Joi.array().items(DropdownSubitemSchema).default([]),
|
|
139
130
|
dropdownItemsAfter: Joi.array().items(DropdownSubitemSchema).default([]),
|
|
140
131
|
});
|
|
141
|
-
|
|
142
132
|
const LocaleDropdownNavbarItemSchema = NavbarItemBaseSchema.append({
|
|
143
133
|
type: Joi.string().equal('localeDropdown').required(),
|
|
144
134
|
dropdownItemsBefore: Joi.array().items(DropdownSubitemSchema).default([]),
|
|
145
135
|
dropdownItemsAfter: Joi.array().items(DropdownSubitemSchema).default([]),
|
|
146
136
|
});
|
|
147
|
-
|
|
148
137
|
const SearchItemSchema = Joi.object({
|
|
149
138
|
type: Joi.string().equal('search').required(),
|
|
150
139
|
});
|
|
151
|
-
|
|
152
140
|
const NavbarItemSchema = Joi.object({
|
|
153
141
|
position: NavbarItemPosition,
|
|
154
|
-
}).when({
|
|
142
|
+
}).when('.', {
|
|
155
143
|
switch: [
|
|
156
144
|
{
|
|
157
145
|
is: itemWithType('docsVersion'),
|
|
@@ -179,7 +167,7 @@ const NavbarItemSchema = Joi.object({
|
|
|
179
167
|
},
|
|
180
168
|
{
|
|
181
169
|
is: itemWithType(undefined),
|
|
182
|
-
then: Joi.object().when({
|
|
170
|
+
then: Joi.object().when('.', {
|
|
183
171
|
// Dropdown item can be specified without type field
|
|
184
172
|
is: Joi.object({
|
|
185
173
|
items: Joi.array().required(),
|
|
@@ -193,7 +181,6 @@ const NavbarItemSchema = Joi.object({
|
|
|
193
181
|
'any.unknown': 'Bad navbar item type {.type}',
|
|
194
182
|
}),
|
|
195
183
|
});
|
|
196
|
-
|
|
197
184
|
const ColorModeSchema = Joi.object({
|
|
198
185
|
defaultMode: Joi.string()
|
|
199
186
|
.equal('dark', 'light')
|
|
@@ -216,9 +203,8 @@ const ColorModeSchema = Joi.object({
|
|
|
216
203
|
DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIconStyle,
|
|
217
204
|
),
|
|
218
205
|
}).default(DEFAULT_COLOR_MODE_CONFIG.switchConfig),
|
|
219
|
-
}).default(DEFAULT_COLOR_MODE_CONFIG);
|
|
206
|
+
}).default(DEFAULT_COLOR_MODE_CONFIG); // schema can probably be improved
|
|
220
207
|
|
|
221
|
-
// schema can probably be improved
|
|
222
208
|
const HtmlMetadataSchema = Joi.object({
|
|
223
209
|
id: Joi.string(),
|
|
224
210
|
name: Joi.string(),
|
|
@@ -226,7 +212,6 @@ const HtmlMetadataSchema = Joi.object({
|
|
|
226
212
|
content: Joi.string(),
|
|
227
213
|
itemprop: Joi.string(),
|
|
228
214
|
}).unknown();
|
|
229
|
-
|
|
230
215
|
const FooterLinkItemSchema = Joi.object({
|
|
231
216
|
to: Joi.string(),
|
|
232
217
|
href: URISchema,
|
|
@@ -236,23 +221,20 @@ const FooterLinkItemSchema = Joi.object({
|
|
|
236
221
|
.xor('to', 'href', 'html')
|
|
237
222
|
.with('to', 'label')
|
|
238
223
|
.with('href', 'label')
|
|
239
|
-
.nand('html', 'label')
|
|
240
|
-
// We allow any unknown attributes on the links
|
|
224
|
+
.nand('html', 'label') // We allow any unknown attributes on the links
|
|
241
225
|
// (users may need additional attributes like target, aria-role, data-customAttribute...)
|
|
242
226
|
.unknown();
|
|
243
|
-
|
|
244
227
|
const CustomCssSchema = Joi.alternatives()
|
|
245
228
|
.try(Joi.array().items(Joi.string().required()), Joi.string().required())
|
|
246
229
|
.optional();
|
|
247
|
-
|
|
248
230
|
const ThemeConfigSchema = Joi.object({
|
|
249
231
|
// TODO temporary (@alpha-58)
|
|
250
|
-
disableDarkMode: Joi.any().forbidden(
|
|
232
|
+
disableDarkMode: Joi.any().forbidden().messages({
|
|
251
233
|
'any.unknown':
|
|
252
234
|
'disableDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.disableSwitch = true',
|
|
253
235
|
}),
|
|
254
236
|
// TODO temporary (@alpha-58)
|
|
255
|
-
defaultDarkMode: Joi.any().forbidden(
|
|
237
|
+
defaultDarkMode: Joi.any().forbidden().messages({
|
|
256
238
|
'any.unknown':
|
|
257
239
|
'defaultDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.defaultMode = "dark"',
|
|
258
240
|
}),
|
|
@@ -265,7 +247,7 @@ const ThemeConfigSchema = Joi.object({
|
|
|
265
247
|
.default(DEFAULT_CONFIG.metadatas),
|
|
266
248
|
announcementBar: Joi.object({
|
|
267
249
|
id: Joi.string().default('announcement-bar'),
|
|
268
|
-
content: Joi.string(),
|
|
250
|
+
content: Joi.string().required(),
|
|
269
251
|
backgroundColor: Joi.string(),
|
|
270
252
|
textColor: Joi.string(),
|
|
271
253
|
isCloseable: Joi.bool().default(true),
|
|
@@ -286,6 +268,8 @@ const ThemeConfigSchema = Joi.object({
|
|
|
286
268
|
alt: Joi.string().allow(''),
|
|
287
269
|
src: Joi.string().required(),
|
|
288
270
|
srcDark: Joi.string(),
|
|
271
|
+
width: Joi.alternatives().try(Joi.string(), Joi.number()),
|
|
272
|
+
height: Joi.alternatives().try(Joi.string(), Joi.number()),
|
|
289
273
|
href: Joi.string(),
|
|
290
274
|
target: Joi.string(),
|
|
291
275
|
}),
|
|
@@ -296,6 +280,9 @@ const ThemeConfigSchema = Joi.object({
|
|
|
296
280
|
alt: Joi.string().allow(''),
|
|
297
281
|
src: Joi.string(),
|
|
298
282
|
srcDark: Joi.string(),
|
|
283
|
+
// TODO infer this from reading the image
|
|
284
|
+
width: Joi.alternatives().try(Joi.string(), Joi.number()),
|
|
285
|
+
height: Joi.alternatives().try(Joi.string(), Joi.number()),
|
|
299
286
|
href: Joi.string(),
|
|
300
287
|
}),
|
|
301
288
|
copyright: Joi.string(),
|
|
@@ -329,9 +316,26 @@ const ThemeConfigSchema = Joi.object({
|
|
|
329
316
|
'any.unknown':
|
|
330
317
|
'The themeConfig.sidebarCollapsible has been moved to docs plugin options. See: https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-docs',
|
|
331
318
|
}),
|
|
319
|
+
tableOfContents: Joi.object({
|
|
320
|
+
minHeadingLevel: Joi.number()
|
|
321
|
+
.default(DEFAULT_CONFIG.tableOfContents.minHeadingLevel)
|
|
322
|
+
.when('maxHeadingLevel', {
|
|
323
|
+
is: Joi.exist(),
|
|
324
|
+
then: Joi.number()
|
|
325
|
+
.integer()
|
|
326
|
+
.min(2)
|
|
327
|
+
.max(6)
|
|
328
|
+
.max(Joi.ref('maxHeadingLevel')),
|
|
329
|
+
otherwise: Joi.number().integer().min(2).max(6),
|
|
330
|
+
}),
|
|
331
|
+
maxHeadingLevel: Joi.number()
|
|
332
|
+
.integer()
|
|
333
|
+
.min(2)
|
|
334
|
+
.max(6)
|
|
335
|
+
.default(DEFAULT_CONFIG.tableOfContents.maxHeadingLevel),
|
|
336
|
+
}).default(DEFAULT_CONFIG.tableOfContents),
|
|
332
337
|
});
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
exports.validateThemeConfig = ({validate, themeConfig}) => {
|
|
338
|
+
export {ThemeConfigSchema};
|
|
339
|
+
export function validateThemeConfig({validate, themeConfig}) {
|
|
336
340
|
return validate(ThemeConfigSchema, themeConfig);
|
|
337
|
-
}
|
|
341
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@docusaurus/theme-classic",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.9",
|
|
4
4
|
"description": "Classic theme for Docusaurus",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "src/types.d.ts",
|
|
@@ -23,42 +23,46 @@
|
|
|
23
23
|
"update-code-translations": "node -e 'require(\"./update-code-translations.js\").run()'"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@docusaurus/core": "2.0.0-beta.
|
|
27
|
-
"@docusaurus/plugin-content-blog": "2.0.0-beta.
|
|
28
|
-
"@docusaurus/plugin-content-docs": "2.0.0-beta.
|
|
29
|
-
"@docusaurus/plugin-content-pages": "2.0.0-beta.
|
|
30
|
-
"@docusaurus/theme-common": "2.0.0-beta.
|
|
31
|
-
"@docusaurus/types": "2.0.0-beta.
|
|
32
|
-
"@docusaurus/utils": "2.0.0-beta.
|
|
33
|
-
"@docusaurus/utils-common": "2.0.0-beta.
|
|
34
|
-
"@docusaurus/utils-validation": "2.0.0-beta.
|
|
26
|
+
"@docusaurus/core": "2.0.0-beta.9",
|
|
27
|
+
"@docusaurus/plugin-content-blog": "2.0.0-beta.9",
|
|
28
|
+
"@docusaurus/plugin-content-docs": "2.0.0-beta.9",
|
|
29
|
+
"@docusaurus/plugin-content-pages": "2.0.0-beta.9",
|
|
30
|
+
"@docusaurus/theme-common": "2.0.0-beta.9",
|
|
31
|
+
"@docusaurus/types": "2.0.0-beta.9",
|
|
32
|
+
"@docusaurus/utils": "2.0.0-beta.9",
|
|
33
|
+
"@docusaurus/utils-common": "2.0.0-beta.9",
|
|
34
|
+
"@docusaurus/utils-validation": "2.0.0-beta.9",
|
|
35
35
|
"@mdx-js/mdx": "^1.6.21",
|
|
36
36
|
"@mdx-js/react": "^1.6.21",
|
|
37
|
-
"chalk": "^4.1.
|
|
37
|
+
"chalk": "^4.1.2",
|
|
38
38
|
"clsx": "^1.1.1",
|
|
39
39
|
"copy-text-to-clipboard": "^3.0.1",
|
|
40
40
|
"fs-extra": "^10.0.0",
|
|
41
41
|
"globby": "^11.0.2",
|
|
42
|
-
"infima": "0.2.0-alpha.
|
|
42
|
+
"infima": "0.2.0-alpha.34",
|
|
43
43
|
"lodash": "^4.17.20",
|
|
44
|
-
"parse-numeric-range": "^1.
|
|
45
|
-
"postcss": "^8.
|
|
44
|
+
"parse-numeric-range": "^1.3.0",
|
|
45
|
+
"postcss": "^8.3.7",
|
|
46
46
|
"prism-react-renderer": "^1.2.1",
|
|
47
47
|
"prismjs": "^1.23.0",
|
|
48
48
|
"prop-types": "^15.7.2",
|
|
49
49
|
"react-router-dom": "^5.2.0",
|
|
50
|
-
"rtlcss": "^3.
|
|
50
|
+
"rtlcss": "^3.3.0"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@docusaurus/module-type-aliases": "2.0.0-beta.
|
|
54
|
-
"@types/
|
|
53
|
+
"@docusaurus/module-type-aliases": "2.0.0-beta.9",
|
|
54
|
+
"@types/mdx-js__react": "^1.5.4",
|
|
55
|
+
"@types/parse-numeric-range": "^0.0.1",
|
|
56
|
+
"@types/rtlcss": "^3.1.1",
|
|
57
|
+
"react-test-renderer": "^17.0.2",
|
|
58
|
+
"utility-types": "^3.10.0"
|
|
55
59
|
},
|
|
56
60
|
"peerDependencies": {
|
|
57
61
|
"react": "^16.8.4 || ^17.0.0",
|
|
58
62
|
"react-dom": "^16.8.4 || ^17.0.0"
|
|
59
63
|
},
|
|
60
64
|
"engines": {
|
|
61
|
-
"node": ">=
|
|
65
|
+
"node": ">=14"
|
|
62
66
|
},
|
|
63
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "8a491fc29ad002f90e97f5b5fe4178ac8fa0c4d7"
|
|
64
68
|
}
|
|
@@ -91,6 +91,10 @@ describe('themeConfig', () => {
|
|
|
91
91
|
},
|
|
92
92
|
copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc. Built with Docusaurus.`,
|
|
93
93
|
},
|
|
94
|
+
tableOfContents: {
|
|
95
|
+
minHeadingLevel: 2,
|
|
96
|
+
maxHeadingLevel: 5,
|
|
97
|
+
},
|
|
94
98
|
};
|
|
95
99
|
expect(testValidateThemeConfig(userConfig)).toEqual({
|
|
96
100
|
...DEFAULT_CONFIG,
|
|
@@ -108,7 +112,6 @@ describe('themeConfig', () => {
|
|
|
108
112
|
position: 'left',
|
|
109
113
|
docId: 'intro',
|
|
110
114
|
label: 'Introduction',
|
|
111
|
-
activeSidebarClassName: 'custom-class',
|
|
112
115
|
},
|
|
113
116
|
// Regular link
|
|
114
117
|
{
|
|
@@ -142,7 +145,6 @@ describe('themeConfig', () => {
|
|
|
142
145
|
items: [
|
|
143
146
|
{
|
|
144
147
|
type: 'doc',
|
|
145
|
-
activeSidebarClassName: 'custom-class',
|
|
146
148
|
docId: 'npm',
|
|
147
149
|
label: 'NPM',
|
|
148
150
|
},
|
|
@@ -159,8 +161,7 @@ describe('themeConfig', () => {
|
|
|
159
161
|
dropdownActiveClassDisabled: true,
|
|
160
162
|
dropdownItemsBefore: [
|
|
161
163
|
{
|
|
162
|
-
href:
|
|
163
|
-
'https://www.npmjs.com/package/docusaurus?activeTab=versions',
|
|
164
|
+
href: 'https://www.npmjs.com/package/docusaurus?activeTab=versions',
|
|
164
165
|
label: 'Versions on npm',
|
|
165
166
|
className: 'npm-styled',
|
|
166
167
|
target: '_self',
|
|
@@ -344,6 +345,27 @@ describe('themeConfig', () => {
|
|
|
344
345
|
});
|
|
345
346
|
});
|
|
346
347
|
|
|
348
|
+
test('should allow width and height specification for logo ', () => {
|
|
349
|
+
const altTagConfig = {
|
|
350
|
+
navbar: {
|
|
351
|
+
logo: {
|
|
352
|
+
alt: '',
|
|
353
|
+
src: '/arbitrary-logo.png',
|
|
354
|
+
srcDark: '/arbitrary-dark-logo.png',
|
|
355
|
+
width: '20px',
|
|
356
|
+
height: '20%',
|
|
357
|
+
},
|
|
358
|
+
},
|
|
359
|
+
};
|
|
360
|
+
expect(testValidateThemeConfig(altTagConfig)).toEqual({
|
|
361
|
+
...DEFAULT_CONFIG,
|
|
362
|
+
navbar: {
|
|
363
|
+
...DEFAULT_CONFIG.navbar,
|
|
364
|
+
...altTagConfig.navbar,
|
|
365
|
+
},
|
|
366
|
+
});
|
|
367
|
+
});
|
|
368
|
+
|
|
347
369
|
test('should accept valid prism config', () => {
|
|
348
370
|
const prismConfig = {
|
|
349
371
|
prism: {
|
|
@@ -455,3 +477,131 @@ describe('themeConfig', () => {
|
|
|
455
477
|
});
|
|
456
478
|
});
|
|
457
479
|
});
|
|
480
|
+
|
|
481
|
+
describe('themeConfig tableOfContents', () => {
|
|
482
|
+
test('toc undefined', () => {
|
|
483
|
+
const tableOfContents = undefined;
|
|
484
|
+
expect(testValidateThemeConfig({tableOfContents})).toEqual({
|
|
485
|
+
...DEFAULT_CONFIG,
|
|
486
|
+
tableOfContents: {
|
|
487
|
+
minHeadingLevel: DEFAULT_CONFIG.tableOfContents.minHeadingLevel,
|
|
488
|
+
maxHeadingLevel: DEFAULT_CONFIG.tableOfContents.maxHeadingLevel,
|
|
489
|
+
},
|
|
490
|
+
});
|
|
491
|
+
});
|
|
492
|
+
|
|
493
|
+
test('toc empty', () => {
|
|
494
|
+
const tableOfContents = {};
|
|
495
|
+
expect(testValidateThemeConfig({tableOfContents})).toEqual({
|
|
496
|
+
...DEFAULT_CONFIG,
|
|
497
|
+
tableOfContents: {
|
|
498
|
+
minHeadingLevel: DEFAULT_CONFIG.tableOfContents.minHeadingLevel,
|
|
499
|
+
maxHeadingLevel: DEFAULT_CONFIG.tableOfContents.maxHeadingLevel,
|
|
500
|
+
},
|
|
501
|
+
});
|
|
502
|
+
});
|
|
503
|
+
|
|
504
|
+
test('toc with min', () => {
|
|
505
|
+
const tableOfContents = {
|
|
506
|
+
minHeadingLevel: 3,
|
|
507
|
+
};
|
|
508
|
+
expect(testValidateThemeConfig({tableOfContents})).toEqual({
|
|
509
|
+
...DEFAULT_CONFIG,
|
|
510
|
+
tableOfContents: {
|
|
511
|
+
minHeadingLevel: 3,
|
|
512
|
+
maxHeadingLevel: DEFAULT_CONFIG.tableOfContents.maxHeadingLevel,
|
|
513
|
+
},
|
|
514
|
+
});
|
|
515
|
+
});
|
|
516
|
+
|
|
517
|
+
test('toc with max', () => {
|
|
518
|
+
const tableOfContents = {
|
|
519
|
+
maxHeadingLevel: 5,
|
|
520
|
+
};
|
|
521
|
+
expect(testValidateThemeConfig({tableOfContents})).toEqual({
|
|
522
|
+
...DEFAULT_CONFIG,
|
|
523
|
+
tableOfContents: {
|
|
524
|
+
minHeadingLevel: DEFAULT_CONFIG.tableOfContents.minHeadingLevel,
|
|
525
|
+
maxHeadingLevel: 5,
|
|
526
|
+
},
|
|
527
|
+
});
|
|
528
|
+
});
|
|
529
|
+
|
|
530
|
+
test('toc with min 2.5', () => {
|
|
531
|
+
const tableOfContents = {
|
|
532
|
+
minHeadingLevel: 2.5,
|
|
533
|
+
};
|
|
534
|
+
expect(() =>
|
|
535
|
+
testValidateThemeConfig({tableOfContents}),
|
|
536
|
+
).toThrowErrorMatchingInlineSnapshot(
|
|
537
|
+
`"\\"tableOfContents.minHeadingLevel\\" must be an integer"`,
|
|
538
|
+
);
|
|
539
|
+
});
|
|
540
|
+
|
|
541
|
+
test('toc with max 2.5', () => {
|
|
542
|
+
const tableOfContents = {
|
|
543
|
+
maxHeadingLevel: 2.5,
|
|
544
|
+
};
|
|
545
|
+
expect(() =>
|
|
546
|
+
testValidateThemeConfig({tableOfContents}),
|
|
547
|
+
).toThrowErrorMatchingInlineSnapshot(
|
|
548
|
+
`"\\"tableOfContents.maxHeadingLevel\\" must be an integer"`,
|
|
549
|
+
);
|
|
550
|
+
});
|
|
551
|
+
|
|
552
|
+
test('toc with min 1', () => {
|
|
553
|
+
const tableOfContents = {
|
|
554
|
+
minHeadingLevel: 1,
|
|
555
|
+
};
|
|
556
|
+
expect(() =>
|
|
557
|
+
testValidateThemeConfig({tableOfContents}),
|
|
558
|
+
).toThrowErrorMatchingInlineSnapshot(
|
|
559
|
+
`"\\"tableOfContents.minHeadingLevel\\" must be greater than or equal to 2"`,
|
|
560
|
+
);
|
|
561
|
+
});
|
|
562
|
+
|
|
563
|
+
test('toc with min 7', () => {
|
|
564
|
+
const tableOfContents = {
|
|
565
|
+
minHeadingLevel: 7,
|
|
566
|
+
};
|
|
567
|
+
expect(() =>
|
|
568
|
+
testValidateThemeConfig({tableOfContents}),
|
|
569
|
+
).toThrowErrorMatchingInlineSnapshot(
|
|
570
|
+
`"\\"tableOfContents.minHeadingLevel\\" must be less than or equal to ref:maxHeadingLevel"`,
|
|
571
|
+
);
|
|
572
|
+
});
|
|
573
|
+
|
|
574
|
+
test('toc with max 1', () => {
|
|
575
|
+
const tableOfContents = {
|
|
576
|
+
maxHeadingLevel: 1,
|
|
577
|
+
};
|
|
578
|
+
expect(() =>
|
|
579
|
+
testValidateThemeConfig({tableOfContents}),
|
|
580
|
+
).toThrowErrorMatchingInlineSnapshot(
|
|
581
|
+
`"\\"tableOfContents.maxHeadingLevel\\" must be greater than or equal to 2"`,
|
|
582
|
+
);
|
|
583
|
+
});
|
|
584
|
+
|
|
585
|
+
test('toc with max 7', () => {
|
|
586
|
+
const tableOfContents = {
|
|
587
|
+
maxHeadingLevel: 7,
|
|
588
|
+
};
|
|
589
|
+
expect(() =>
|
|
590
|
+
testValidateThemeConfig({tableOfContents}),
|
|
591
|
+
).toThrowErrorMatchingInlineSnapshot(
|
|
592
|
+
`"\\"tableOfContents.maxHeadingLevel\\" must be less than or equal to 6"`,
|
|
593
|
+
);
|
|
594
|
+
});
|
|
595
|
+
|
|
596
|
+
test('toc with bad min 5 + max 3', () => {
|
|
597
|
+
const tableOfContents = {
|
|
598
|
+
minHeadingLevel: 5,
|
|
599
|
+
maxHeadingLevel: 3,
|
|
600
|
+
};
|
|
601
|
+
expect(() =>
|
|
602
|
+
testValidateThemeConfig({tableOfContents}),
|
|
603
|
+
).toThrowErrorMatchingInlineSnapshot(
|
|
604
|
+
`"\\"tableOfContents.minHeadingLevel\\" must be less than or equal to ref:maxHeadingLevel"`,
|
|
605
|
+
);
|
|
606
|
+
});
|
|
607
|
+
});
|
package/src/index.ts
CHANGED
|
@@ -9,12 +9,11 @@ import {DocusaurusContext, Plugin} from '@docusaurus/types';
|
|
|
9
9
|
import type {ThemeConfig} from '@docusaurus/theme-common';
|
|
10
10
|
import {getTranslationFiles, translateThemeConfig} from './translations';
|
|
11
11
|
import path from 'path';
|
|
12
|
-
import
|
|
13
|
-
import type {AcceptedPlugin,
|
|
12
|
+
import {createRequire} from 'module';
|
|
13
|
+
import type {AcceptedPlugin, Plugin as PostCssPlugin} from 'postcss';
|
|
14
14
|
import rtlcss from 'rtlcss';
|
|
15
15
|
import {readDefaultCodeTranslationMessages} from '@docusaurus/utils';
|
|
16
16
|
|
|
17
|
-
const createRequire = Module.createRequire || Module.createRequireFromPath;
|
|
18
17
|
const requireFromDocusaurusCore = createRequire(
|
|
19
18
|
require.resolve('@docusaurus/core/package.json'),
|
|
20
19
|
);
|
|
@@ -25,7 +24,10 @@ const ContextReplacementPlugin = requireFromDocusaurusCore(
|
|
|
25
24
|
// Need to be inlined to prevent dark mode FOUC
|
|
26
25
|
// Make sure that the 'storageKey' is the same as the one in `/theme/hooks/useTheme.js`
|
|
27
26
|
const ThemeStorageKey = 'theme';
|
|
28
|
-
const noFlashColorMode = ({
|
|
27
|
+
const noFlashColorMode = ({
|
|
28
|
+
defaultMode,
|
|
29
|
+
respectPrefersColorScheme,
|
|
30
|
+
}: ThemeConfig['colorMode']) => {
|
|
29
31
|
return `(function() {
|
|
30
32
|
var defaultMode = '${defaultMode}';
|
|
31
33
|
var respectPrefersColorScheme = ${respectPrefersColorScheme};
|
|
@@ -83,14 +85,14 @@ const AnnouncementBarInlineJavaScript = `
|
|
|
83
85
|
document.documentElement.setAttribute('${AnnouncementBarDismissDataAttribute}', isDismissed());
|
|
84
86
|
})();`;
|
|
85
87
|
|
|
86
|
-
function getInfimaCSSFile(direction) {
|
|
88
|
+
function getInfimaCSSFile(direction: string) {
|
|
87
89
|
return `infima/dist/css/default/default${
|
|
88
90
|
direction === 'rtl' ? '-rtl' : ''
|
|
89
91
|
}.css`;
|
|
90
92
|
}
|
|
91
93
|
|
|
92
|
-
type PluginOptions = {
|
|
93
|
-
customCss?: string;
|
|
94
|
+
export type PluginOptions = {
|
|
95
|
+
customCss?: string | string[];
|
|
94
96
|
};
|
|
95
97
|
|
|
96
98
|
export default function docusaurusThemeClassic(
|
|
@@ -183,13 +185,13 @@ export default function docusaurusThemeClassic(
|
|
|
183
185
|
const resolvedInfimaFile = require.resolve(getInfimaCSSFile(direction));
|
|
184
186
|
const plugin: PostCssPlugin = {
|
|
185
187
|
postcssPlugin: 'RtlCssPlugin',
|
|
186
|
-
prepare: (result
|
|
188
|
+
prepare: (result) => {
|
|
187
189
|
const file = result.root?.source?.input?.file;
|
|
188
190
|
// Skip Infima as we are using the its RTL version.
|
|
189
191
|
if (file === resolvedInfimaFile) {
|
|
190
192
|
return {};
|
|
191
193
|
}
|
|
192
|
-
return rtlcss(result.root);
|
|
194
|
+
return rtlcss(result.root as unknown as rtlcss.ConfigOptions);
|
|
193
195
|
},
|
|
194
196
|
};
|
|
195
197
|
postCssOptions.plugins.push(plugin);
|
|
File without changes
|
|
@@ -9,32 +9,28 @@ import React from 'react';
|
|
|
9
9
|
import clsx from 'clsx';
|
|
10
10
|
import {useThemeConfig, useAnnouncementBar} from '@docusaurus/theme-common';
|
|
11
11
|
import {translate} from '@docusaurus/Translate';
|
|
12
|
+
import IconClose from '@theme/IconClose';
|
|
12
13
|
|
|
13
14
|
import styles from './styles.module.css';
|
|
14
15
|
|
|
15
16
|
function AnnouncementBar(): JSX.Element | null {
|
|
16
|
-
const {
|
|
17
|
+
const {isActive, close} = useAnnouncementBar();
|
|
17
18
|
const {announcementBar} = useThemeConfig();
|
|
18
19
|
|
|
19
|
-
if (!
|
|
20
|
+
if (!isActive) {
|
|
20
21
|
return null;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
const {content, backgroundColor, textColor, isCloseable} = announcementBar
|
|
24
|
-
|
|
25
|
-
if (!content || (isCloseable && isClosed)) {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
24
|
+
const {content, backgroundColor, textColor, isCloseable} = announcementBar!;
|
|
28
25
|
|
|
29
26
|
return (
|
|
30
27
|
<div
|
|
31
28
|
className={styles.announcementBar}
|
|
32
29
|
style={{backgroundColor, color: textColor}}
|
|
33
30
|
role="banner">
|
|
31
|
+
{isCloseable && <div className={styles.announcementBarPlaceholder} />}
|
|
34
32
|
<div
|
|
35
|
-
className={
|
|
36
|
-
[styles.announcementBarCloseable]: isCloseable,
|
|
37
|
-
})}
|
|
33
|
+
className={styles.announcementBarContent}
|
|
38
34
|
// Developer provided the HTML, so assume it's safe.
|
|
39
35
|
// eslint-disable-next-line react/no-danger
|
|
40
36
|
dangerouslySetInnerHTML={{__html: content}}
|
|
@@ -42,14 +38,14 @@ function AnnouncementBar(): JSX.Element | null {
|
|
|
42
38
|
{isCloseable ? (
|
|
43
39
|
<button
|
|
44
40
|
type="button"
|
|
45
|
-
className={clsx(
|
|
41
|
+
className={clsx('clean-btn close', styles.announcementBarClose)}
|
|
46
42
|
onClick={close}
|
|
47
43
|
aria-label={translate({
|
|
48
44
|
id: 'theme.AnnouncementBar.closeButtonAriaLabel',
|
|
49
45
|
message: 'Close',
|
|
50
46
|
description: 'The ARIA label for close button of announcement bar',
|
|
51
47
|
})}>
|
|
52
|
-
<
|
|
48
|
+
<IconClose width={14} height={14} strokeWidth={3.1} />
|
|
53
49
|
</button>
|
|
54
50
|
) : null}
|
|
55
51
|
</div>
|