@docusaurus/theme-classic 0.0.0-4276 → 0.0.0-4282
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/theme-classic.d.ts +3 -13
- package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +1 -2
- package/package.json +12 -12
- package/src/index.ts +2 -5
- package/src/theme/NavbarItem/DropdownNavbarItem.tsx +1 -2
- package/src/theme-classic.d.ts +3 -13
- package/babel.config.js +0 -35
- package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
- package/lib/__tests__/translations.test.js +0 -112
- package/lib/__tests__/validateThemeConfig.test.js +0 -607
- package/lib/theme/AnnouncementBar/index.js +0 -68
- package/lib/theme/AnnouncementBar/styles.module.css +0 -63
- package/lib/theme/BackToTopButton/index.js +0 -140
- package/lib/theme/BackToTopButton/styles.module.css +0 -42
- package/lib/theme/BlogArchivePage/index.js +0 -89
- package/lib/theme/BlogLayout/index.js +0 -51
- package/lib/theme/BlogListPage/index.js +0 -60
- package/lib/theme/BlogListPaginator/index.js +0 -63
- package/lib/theme/BlogPostAuthor/index.js +0 -51
- package/lib/theme/BlogPostAuthor/styles.module.css +0 -12
- package/lib/theme/BlogPostAuthors/index.js +0 -47
- package/lib/theme/BlogPostAuthors/styles.module.css +0 -11
- package/lib/theme/BlogPostItem/index.js +0 -152
- package/lib/theme/BlogPostItem/styles.module.css +0 -18
- package/lib/theme/BlogPostPage/index.js +0 -82
- package/lib/theme/BlogPostPaginator/index.js +0 -64
- package/lib/theme/BlogSidebar/index.js +0 -49
- package/lib/theme/BlogSidebar/styles.module.css +0 -44
- package/lib/theme/BlogTagsListPage/index.js +0 -40
- package/lib/theme/BlogTagsPostsPage/index.js +0 -86
- package/lib/theme/CodeBlock/index.js +0 -133
- package/lib/theme/CodeBlock/styles.module.css +0 -65
- package/lib/theme/Details/index.js +0 -30
- package/lib/theme/Details/styles.module.css +0 -13
- package/lib/theme/DocCard/index.js +0 -84
- package/lib/theme/DocCard/styles.module.css +0 -43
- package/lib/theme/DocCardList/index.js +0 -28
- package/lib/theme/DocCategoryGeneratedIndexPage/index.js +0 -57
- package/lib/theme/DocCategoryGeneratedIndexPage/styles.module.css +0 -18
- package/lib/theme/DocItem/index.js +0 -112
- package/lib/theme/DocItem/styles.module.css +0 -22
- package/lib/theme/DocItemFooter/index.js +0 -79
- package/lib/theme/DocItemFooter/styles.module.css +0 -18
- package/lib/theme/DocPage/index.js +0 -154
- package/lib/theme/DocPage/styles.module.css +0 -85
- package/lib/theme/DocPaginator/index.js +0 -62
- package/lib/theme/DocSidebar/index.js +0 -134
- package/lib/theme/DocSidebar/styles.module.css +0 -106
- package/lib/theme/DocSidebarItem/index.js +0 -209
- package/lib/theme/DocSidebarItem/styles.module.css +0 -19
- package/lib/theme/DocTagDocListPage/index.js +0 -89
- package/lib/theme/DocTagsListPage/index.js +0 -44
- package/lib/theme/DocVersionBadge/index.js +0 -34
- package/lib/theme/DocVersionBanner/index.js +0 -130
- package/lib/theme/EditThisPage/index.js +0 -33
- package/lib/theme/ErrorPageContent.js +0 -43
- package/lib/theme/Footer/index.js +0 -119
- package/lib/theme/Footer/styles.module.css +0 -15
- package/lib/theme/Heading/index.js +0 -71
- package/lib/theme/Heading/styles.css +0 -22
- package/lib/theme/Heading/styles.module.css +0 -19
- package/lib/theme/IconArrow/index.js +0 -28
- package/lib/theme/IconClose/index.js +0 -31
- package/lib/theme/IconEdit/index.js +0 -34
- package/lib/theme/IconEdit/styles.module.css +0 -11
- package/lib/theme/IconExternalLink/index.js +0 -30
- package/lib/theme/IconExternalLink/styles.module.css +0 -12
- package/lib/theme/IconLanguage/index.js +0 -29
- package/lib/theme/IconMenu/index.js +0 -30
- package/lib/theme/LastUpdated/index.js +0 -63
- package/lib/theme/Layout/index.js +0 -68
- package/lib/theme/Layout/styles.css +0 -27
- package/lib/theme/LayoutHead/index.js +0 -149
- package/lib/theme/LayoutProviders/index.js +0 -40
- package/lib/theme/Logo/index.js +0 -62
- package/lib/theme/MDXComponents/index.js +0 -106
- package/lib/theme/MDXComponents/styles.css +0 -11
- package/lib/theme/MDXPage/index.js +0 -67
- package/lib/theme/MDXPage/styles.module.css +0 -10
- package/lib/theme/Navbar/index.js +0 -267
- package/lib/theme/Navbar/styles.module.css +0 -27
- package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -113
- package/lib/theme/NavbarItem/DocNavbarItem.js +0 -62
- package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -83
- package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
- package/lib/theme/NavbarItem/DropdownNavbarItem.js +0 -155
- package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/index.js +0 -68
- package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +0 -11
- package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
- package/lib/theme/NavbarItem/index.js +0 -74
- package/lib/theme/NotFound.js +0 -57
- package/lib/theme/SearchBar.js +0 -15
- package/lib/theme/SearchMetadata/index.js +0 -33
- package/lib/theme/Seo/index.js +0 -52
- package/lib/theme/SkipToContent/index.js +0 -71
- package/lib/theme/SkipToContent/styles.module.css +0 -14
- package/lib/theme/TOC/index.js +0 -39
- package/lib/theme/TOC/styles.module.css +0 -23
- package/lib/theme/TOCCollapsible/index.js +0 -53
- package/lib/theme/TOCCollapsible/styles.module.css +0 -50
- package/lib/theme/TOCInline/index.js +0 -33
- package/lib/theme/TOCInline/styles.module.css +0 -12
- package/lib/theme/TOCItems/index.js +0 -78
- package/lib/theme/TabItem/index.js +0 -32
- package/lib/theme/Tabs/__tests__/index.test.js +0 -123
- package/lib/theme/Tabs/index.js +0 -173
- package/lib/theme/Tabs/styles.module.css +0 -10
- package/lib/theme/Tag/index.js +0 -40
- package/lib/theme/Tag/styles.module.css +0 -70
- package/lib/theme/TagsListByLetter/index.js +0 -48
- package/lib/theme/TagsListByLetter/styles.module.css +0 -11
- package/lib/theme/TagsListInline/index.js +0 -44
- package/lib/theme/TagsListInline/styles.module.css +0 -15
- package/lib/theme/ThemeContext.js +0 -21
- package/lib/theme/ThemeProvider/index.js +0 -43
- package/lib/theme/ThemedImage/index.js +0 -47
- package/lib/theme/ThemedImage/styles.module.css +0 -18
- package/lib/theme/Toggle/index.js +0 -91
- package/lib/theme/Toggle/styles.module.css +0 -105
- package/lib/theme/UserPreferencesContext.js +0 -18
- package/lib/theme/UserPreferencesProvider/index.js +0 -41
- package/lib/theme/hooks/styles.css +0 -10
- package/lib/theme/hooks/useDocs.js +0 -18
- package/lib/theme/hooks/useHideableNavbar.js +0 -74
- package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
- package/lib/theme/hooks/useLocationHash.js +0 -28
- package/lib/theme/hooks/useLockBodyScroll.js +0 -26
- package/lib/theme/hooks/usePrismTheme.js +0 -36
- package/lib/theme/hooks/useTabGroupChoice.js +0 -51
- package/lib/theme/hooks/useTheme.js +0 -97
- package/lib/theme/hooks/useThemeContext.js +0 -31
- package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
- package/lib/theme/hooks/useWindowSize.js +0 -68
- package/lib/theme/prism-include-languages.js +0 -40
- package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
- package/lib-next/__tests__/translations.test.js +0 -128
- package/lib-next/__tests__/validateThemeConfig.test.js +0 -607
- package/lib-next/admonitions.css +0 -35
- package/lib-next/deps.d.ts +0 -13
- package/lib-next/index.js +0 -227
- package/lib-next/prism-include-languages.js +0 -9
- package/lib-next/theme/hooks/useLocationHash.js +0 -20
- package/lib-next/theme-classic.d.ts +0 -806
- package/lib-next/translations.js +0 -141
- package/lib-next/types.d.ts +0 -11
- package/lib-next/validateThemeConfig.js +0 -344
- package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
- package/src/__tests__/translations.test.ts +0 -116
- package/src/__tests__/validateThemeConfig.test.js +0 -607
- package/src/theme/Tabs/__tests__/index.test.tsx +0 -129
- package/src/theme/hooks/useLocationHash.ts +0 -25
- package/tsconfig.json +0 -11
|
@@ -1,607 +0,0 @@
|
|
|
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 {merge} from 'lodash';
|
|
9
|
-
|
|
10
|
-
const {ThemeConfigSchema, DEFAULT_CONFIG} = require('../validateThemeConfig');
|
|
11
|
-
|
|
12
|
-
const {normalizeThemeConfig} = require('@docusaurus/utils-validation');
|
|
13
|
-
const theme = require('prism-react-renderer/themes/github');
|
|
14
|
-
const darkTheme = require('prism-react-renderer/themes/dracula');
|
|
15
|
-
|
|
16
|
-
function testValidateThemeConfig(partialThemeConfig) {
|
|
17
|
-
return normalizeThemeConfig(ThemeConfigSchema, {
|
|
18
|
-
...DEFAULT_CONFIG,
|
|
19
|
-
...partialThemeConfig,
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function testOk(partialThemeConfig) {
|
|
24
|
-
expect(
|
|
25
|
-
testValidateThemeConfig({...DEFAULT_CONFIG, ...partialThemeConfig}),
|
|
26
|
-
).toEqual({
|
|
27
|
-
...DEFAULT_CONFIG,
|
|
28
|
-
...partialThemeConfig,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
describe('themeConfig', () => {
|
|
33
|
-
test('should accept valid theme config', () => {
|
|
34
|
-
const userConfig = {
|
|
35
|
-
prism: {
|
|
36
|
-
theme,
|
|
37
|
-
darkTheme,
|
|
38
|
-
defaultLanguage: 'javascript',
|
|
39
|
-
additionalLanguages: ['kotlin', 'java'],
|
|
40
|
-
},
|
|
41
|
-
announcementBar: {
|
|
42
|
-
id: 'supportus',
|
|
43
|
-
content: 'pls support',
|
|
44
|
-
backgroundColor: '#fff',
|
|
45
|
-
textColor: '#000',
|
|
46
|
-
isCloseable: true,
|
|
47
|
-
},
|
|
48
|
-
image: 'img/docusaurus-soc.png',
|
|
49
|
-
navbar: {
|
|
50
|
-
style: 'primary',
|
|
51
|
-
hideOnScroll: true,
|
|
52
|
-
title: 'Docusaurus',
|
|
53
|
-
logo: {
|
|
54
|
-
alt: 'Docusaurus Logo',
|
|
55
|
-
src: 'img/docusaurus.svg',
|
|
56
|
-
srcDark: 'img/docusaurus_keytar.svg',
|
|
57
|
-
},
|
|
58
|
-
items: [
|
|
59
|
-
{
|
|
60
|
-
type: 'docsVersionDropdown',
|
|
61
|
-
position: 'left',
|
|
62
|
-
dropdownItemsBefore: [],
|
|
63
|
-
dropdownItemsAfter: [],
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
to: 'docs/next/support',
|
|
67
|
-
label: 'Community',
|
|
68
|
-
position: 'left',
|
|
69
|
-
activeBaseRegex: `docs/next/(support|team|resources)`,
|
|
70
|
-
'aria-label': 'Community',
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
},
|
|
74
|
-
footer: {
|
|
75
|
-
style: 'dark',
|
|
76
|
-
links: [
|
|
77
|
-
{
|
|
78
|
-
title: 'Learn',
|
|
79
|
-
items: [
|
|
80
|
-
{
|
|
81
|
-
label: 'Introduction',
|
|
82
|
-
to: 'docs',
|
|
83
|
-
},
|
|
84
|
-
],
|
|
85
|
-
},
|
|
86
|
-
],
|
|
87
|
-
logo: {
|
|
88
|
-
alt: 'Facebook Open Source Logo',
|
|
89
|
-
src: 'img/oss_logo.png',
|
|
90
|
-
href: 'https://opensource.facebook.com',
|
|
91
|
-
},
|
|
92
|
-
copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc. Built with Docusaurus.`,
|
|
93
|
-
},
|
|
94
|
-
tableOfContents: {
|
|
95
|
-
minHeadingLevel: 2,
|
|
96
|
-
maxHeadingLevel: 5,
|
|
97
|
-
},
|
|
98
|
-
};
|
|
99
|
-
expect(testValidateThemeConfig(userConfig)).toEqual({
|
|
100
|
-
...DEFAULT_CONFIG,
|
|
101
|
-
...userConfig,
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
test('should allow possible types of navbar items', () => {
|
|
106
|
-
const config = {
|
|
107
|
-
navbar: {
|
|
108
|
-
items: [
|
|
109
|
-
// Doc link
|
|
110
|
-
{
|
|
111
|
-
type: 'doc',
|
|
112
|
-
position: 'left',
|
|
113
|
-
docId: 'intro',
|
|
114
|
-
label: 'Introduction',
|
|
115
|
-
},
|
|
116
|
-
// Regular link
|
|
117
|
-
{
|
|
118
|
-
to: '/guide/',
|
|
119
|
-
label: 'Guide',
|
|
120
|
-
position: 'left',
|
|
121
|
-
activeBaseRegex: '/guide/',
|
|
122
|
-
},
|
|
123
|
-
// Regular dropdown
|
|
124
|
-
{
|
|
125
|
-
label: 'Community',
|
|
126
|
-
position: 'right',
|
|
127
|
-
items: [
|
|
128
|
-
{
|
|
129
|
-
label: 'Facebook',
|
|
130
|
-
href: 'https://.facebook.com/',
|
|
131
|
-
target: '_self',
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
label: 'GitHub',
|
|
135
|
-
href: 'https://github.com/facebook/docusaurus',
|
|
136
|
-
className: 'github-link',
|
|
137
|
-
},
|
|
138
|
-
],
|
|
139
|
-
},
|
|
140
|
-
// Dropdown with name
|
|
141
|
-
{
|
|
142
|
-
type: 'dropdown',
|
|
143
|
-
label: 'Tools',
|
|
144
|
-
position: 'left',
|
|
145
|
-
items: [
|
|
146
|
-
{
|
|
147
|
-
type: 'doc',
|
|
148
|
-
docId: 'npm',
|
|
149
|
-
label: 'NPM',
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
to: '/yarn',
|
|
153
|
-
label: 'Yarn',
|
|
154
|
-
},
|
|
155
|
-
],
|
|
156
|
-
},
|
|
157
|
-
// Doc version dropdown
|
|
158
|
-
{
|
|
159
|
-
type: 'docsVersionDropdown',
|
|
160
|
-
position: 'right',
|
|
161
|
-
dropdownActiveClassDisabled: true,
|
|
162
|
-
dropdownItemsBefore: [
|
|
163
|
-
{
|
|
164
|
-
href: 'https://www.npmjs.com/package/docusaurus?activeTab=versions',
|
|
165
|
-
label: 'Versions on npm',
|
|
166
|
-
className: 'npm-styled',
|
|
167
|
-
target: '_self',
|
|
168
|
-
},
|
|
169
|
-
],
|
|
170
|
-
dropdownItemsAfter: [
|
|
171
|
-
{
|
|
172
|
-
to: '/versions',
|
|
173
|
-
label: 'All versions',
|
|
174
|
-
className: 'all_vers',
|
|
175
|
-
},
|
|
176
|
-
],
|
|
177
|
-
},
|
|
178
|
-
// External link with custom data attribute
|
|
179
|
-
{
|
|
180
|
-
href: 'https://github.com/facebook/docusaurus',
|
|
181
|
-
position: 'right',
|
|
182
|
-
className: 'header-github-link',
|
|
183
|
-
'aria-label': 'GitHub repository',
|
|
184
|
-
},
|
|
185
|
-
// Docs version
|
|
186
|
-
{
|
|
187
|
-
type: 'docsVersion',
|
|
188
|
-
position: 'left',
|
|
189
|
-
label: 'Current version',
|
|
190
|
-
},
|
|
191
|
-
],
|
|
192
|
-
},
|
|
193
|
-
};
|
|
194
|
-
expect(testValidateThemeConfig(config)).toEqual({
|
|
195
|
-
...DEFAULT_CONFIG,
|
|
196
|
-
navbar: {
|
|
197
|
-
...DEFAULT_CONFIG.navbar,
|
|
198
|
-
...config.navbar,
|
|
199
|
-
},
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
test('should reject unknown navbar item type', () => {
|
|
204
|
-
const config = {
|
|
205
|
-
navbar: {
|
|
206
|
-
items: [
|
|
207
|
-
{
|
|
208
|
-
type: 'joke',
|
|
209
|
-
position: 'left',
|
|
210
|
-
label: 'haha',
|
|
211
|
-
},
|
|
212
|
-
],
|
|
213
|
-
},
|
|
214
|
-
};
|
|
215
|
-
expect(() =>
|
|
216
|
-
testValidateThemeConfig(config),
|
|
217
|
-
).toThrowErrorMatchingInlineSnapshot(`"Bad navbar item type joke"`);
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
test('should reject nested dropdowns', () => {
|
|
221
|
-
const config = {
|
|
222
|
-
navbar: {
|
|
223
|
-
items: [
|
|
224
|
-
{
|
|
225
|
-
position: 'left',
|
|
226
|
-
label: 'Nested',
|
|
227
|
-
items: [
|
|
228
|
-
{
|
|
229
|
-
label: 'Still a dropdown',
|
|
230
|
-
items: [
|
|
231
|
-
{
|
|
232
|
-
label: 'Should reject this',
|
|
233
|
-
to: '/rejected',
|
|
234
|
-
},
|
|
235
|
-
],
|
|
236
|
-
},
|
|
237
|
-
],
|
|
238
|
-
},
|
|
239
|
-
],
|
|
240
|
-
},
|
|
241
|
-
};
|
|
242
|
-
expect(() =>
|
|
243
|
-
testValidateThemeConfig(config),
|
|
244
|
-
).toThrowErrorMatchingInlineSnapshot(`"Nested dropdowns are not allowed"`);
|
|
245
|
-
});
|
|
246
|
-
|
|
247
|
-
test('should reject nested dropdowns', () => {
|
|
248
|
-
const config = {
|
|
249
|
-
navbar: {
|
|
250
|
-
items: [
|
|
251
|
-
{
|
|
252
|
-
position: 'left',
|
|
253
|
-
label: 'Nested',
|
|
254
|
-
items: [{type: 'docsVersionDropdown'}],
|
|
255
|
-
},
|
|
256
|
-
],
|
|
257
|
-
},
|
|
258
|
-
};
|
|
259
|
-
expect(() =>
|
|
260
|
-
testValidateThemeConfig(config),
|
|
261
|
-
).toThrowErrorMatchingInlineSnapshot(`"Nested dropdowns are not allowed"`);
|
|
262
|
-
});
|
|
263
|
-
|
|
264
|
-
test('should reject position attribute within dropdown', () => {
|
|
265
|
-
const config = {
|
|
266
|
-
navbar: {
|
|
267
|
-
items: [
|
|
268
|
-
{
|
|
269
|
-
position: 'left',
|
|
270
|
-
label: 'Dropdown',
|
|
271
|
-
items: [
|
|
272
|
-
{
|
|
273
|
-
label: 'Hi',
|
|
274
|
-
position: 'left',
|
|
275
|
-
to: '/link',
|
|
276
|
-
},
|
|
277
|
-
],
|
|
278
|
-
},
|
|
279
|
-
],
|
|
280
|
-
},
|
|
281
|
-
};
|
|
282
|
-
expect(() =>
|
|
283
|
-
testValidateThemeConfig(config),
|
|
284
|
-
).toThrowErrorMatchingInlineSnapshot(
|
|
285
|
-
`"\\"navbar.items[0].items[0].position\\" is not allowed"`,
|
|
286
|
-
);
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
test('should give friendly error when href and to coexist', () => {
|
|
290
|
-
const config = {
|
|
291
|
-
navbar: {
|
|
292
|
-
items: [
|
|
293
|
-
{
|
|
294
|
-
position: 'left',
|
|
295
|
-
label: 'Nested',
|
|
296
|
-
to: '/link',
|
|
297
|
-
href: 'http://example.com/link',
|
|
298
|
-
},
|
|
299
|
-
],
|
|
300
|
-
},
|
|
301
|
-
};
|
|
302
|
-
expect(() =>
|
|
303
|
-
testValidateThemeConfig(config),
|
|
304
|
-
).toThrowErrorMatchingInlineSnapshot(
|
|
305
|
-
`"One and only one between \\"to\\" and \\"href\\" should be provided"`,
|
|
306
|
-
);
|
|
307
|
-
});
|
|
308
|
-
|
|
309
|
-
test('should allow empty alt tags for the logo image in the header', () => {
|
|
310
|
-
const altTagConfig = {
|
|
311
|
-
navbar: {
|
|
312
|
-
logo: {
|
|
313
|
-
alt: '',
|
|
314
|
-
src: '/arbitrary-logo.png',
|
|
315
|
-
},
|
|
316
|
-
hideOnScroll: false,
|
|
317
|
-
},
|
|
318
|
-
};
|
|
319
|
-
expect(testValidateThemeConfig(altTagConfig)).toEqual({
|
|
320
|
-
...DEFAULT_CONFIG,
|
|
321
|
-
navbar: {
|
|
322
|
-
...DEFAULT_CONFIG.navbar,
|
|
323
|
-
...altTagConfig.navbar,
|
|
324
|
-
},
|
|
325
|
-
});
|
|
326
|
-
});
|
|
327
|
-
|
|
328
|
-
test('should allow empty alt tags for the logo image in the footer', () => {
|
|
329
|
-
const partialConfig = {
|
|
330
|
-
footer: {
|
|
331
|
-
logo: {
|
|
332
|
-
alt: '',
|
|
333
|
-
src: '/arbitrary-logo.png',
|
|
334
|
-
},
|
|
335
|
-
},
|
|
336
|
-
};
|
|
337
|
-
const normalizedConfig = testValidateThemeConfig(partialConfig);
|
|
338
|
-
|
|
339
|
-
expect(normalizedConfig).toEqual({
|
|
340
|
-
...normalizedConfig,
|
|
341
|
-
footer: {
|
|
342
|
-
...normalizedConfig.footer,
|
|
343
|
-
...partialConfig.footer,
|
|
344
|
-
},
|
|
345
|
-
});
|
|
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
|
-
|
|
369
|
-
test('should accept valid prism config', () => {
|
|
370
|
-
const prismConfig = {
|
|
371
|
-
prism: {
|
|
372
|
-
additionalLanguages: ['kotlin', 'java'],
|
|
373
|
-
},
|
|
374
|
-
};
|
|
375
|
-
expect(testValidateThemeConfig(prismConfig)).toEqual({
|
|
376
|
-
...DEFAULT_CONFIG,
|
|
377
|
-
...prismConfig,
|
|
378
|
-
});
|
|
379
|
-
});
|
|
380
|
-
|
|
381
|
-
describe('customCss config', () => {
|
|
382
|
-
test('should accept customCss undefined', () => {
|
|
383
|
-
testOk({
|
|
384
|
-
customCss: undefined,
|
|
385
|
-
});
|
|
386
|
-
});
|
|
387
|
-
|
|
388
|
-
test('should accept customCss string', () => {
|
|
389
|
-
testOk({
|
|
390
|
-
customCss: './path/to/cssFile.css',
|
|
391
|
-
});
|
|
392
|
-
});
|
|
393
|
-
|
|
394
|
-
test('should accept customCss string array', () => {
|
|
395
|
-
testOk({
|
|
396
|
-
customCss: ['./path/to/cssFile.css', './path/to/cssFile2.css'],
|
|
397
|
-
});
|
|
398
|
-
});
|
|
399
|
-
|
|
400
|
-
test('should reject customCss number', () => {
|
|
401
|
-
expect(() =>
|
|
402
|
-
testValidateThemeConfig({
|
|
403
|
-
customCss: 42,
|
|
404
|
-
}),
|
|
405
|
-
).toThrowErrorMatchingInlineSnapshot(
|
|
406
|
-
`"\\"customCss\\" must be one of [array, string]"`,
|
|
407
|
-
);
|
|
408
|
-
});
|
|
409
|
-
});
|
|
410
|
-
|
|
411
|
-
describe('color mode config', () => {
|
|
412
|
-
const withDefaultValues = (colorMode) =>
|
|
413
|
-
merge({}, DEFAULT_CONFIG.colorMode, colorMode);
|
|
414
|
-
|
|
415
|
-
test('minimal config', () => {
|
|
416
|
-
const colorMode = {
|
|
417
|
-
switchConfig: {
|
|
418
|
-
darkIcon: '🌙',
|
|
419
|
-
},
|
|
420
|
-
};
|
|
421
|
-
expect(testValidateThemeConfig({colorMode})).toEqual({
|
|
422
|
-
...DEFAULT_CONFIG,
|
|
423
|
-
colorMode: withDefaultValues(colorMode),
|
|
424
|
-
});
|
|
425
|
-
});
|
|
426
|
-
|
|
427
|
-
test('max config', () => {
|
|
428
|
-
const colorMode = {
|
|
429
|
-
defaultMode: 'dark',
|
|
430
|
-
disableSwitch: false,
|
|
431
|
-
respectPrefersColorScheme: true,
|
|
432
|
-
switchConfig: {
|
|
433
|
-
darkIcon: '🌙',
|
|
434
|
-
darkIconStyle: {
|
|
435
|
-
marginTop: '1px',
|
|
436
|
-
marginLeft: '2px',
|
|
437
|
-
},
|
|
438
|
-
lightIcon: '☀️',
|
|
439
|
-
lightIconStyle: {
|
|
440
|
-
marginLeft: '1px',
|
|
441
|
-
},
|
|
442
|
-
},
|
|
443
|
-
};
|
|
444
|
-
expect(testValidateThemeConfig({colorMode})).toEqual({
|
|
445
|
-
...DEFAULT_CONFIG,
|
|
446
|
-
colorMode: withDefaultValues(colorMode),
|
|
447
|
-
});
|
|
448
|
-
});
|
|
449
|
-
|
|
450
|
-
test('undefined config', () => {
|
|
451
|
-
const colorMode = undefined;
|
|
452
|
-
expect(testValidateThemeConfig({colorMode})).toEqual({
|
|
453
|
-
...DEFAULT_CONFIG,
|
|
454
|
-
colorMode: withDefaultValues(colorMode),
|
|
455
|
-
});
|
|
456
|
-
});
|
|
457
|
-
|
|
458
|
-
test('empty config', () => {
|
|
459
|
-
const colorMode = {};
|
|
460
|
-
expect(testValidateThemeConfig({colorMode})).toEqual({
|
|
461
|
-
...DEFAULT_CONFIG,
|
|
462
|
-
colorMode: {
|
|
463
|
-
...DEFAULT_CONFIG.colorMode,
|
|
464
|
-
...colorMode,
|
|
465
|
-
},
|
|
466
|
-
});
|
|
467
|
-
});
|
|
468
|
-
|
|
469
|
-
test('empty switch config', () => {
|
|
470
|
-
const colorMode = {
|
|
471
|
-
switchConfig: {},
|
|
472
|
-
};
|
|
473
|
-
expect(testValidateThemeConfig({colorMode})).toEqual({
|
|
474
|
-
...DEFAULT_CONFIG,
|
|
475
|
-
colorMode: withDefaultValues(colorMode),
|
|
476
|
-
});
|
|
477
|
-
});
|
|
478
|
-
});
|
|
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
|
-
});
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
|
-
var _clsx = _interopRequireDefault(require("clsx"));
|
|
11
|
-
|
|
12
|
-
var _themeCommon = require("@docusaurus/theme-common");
|
|
13
|
-
|
|
14
|
-
var _Translate = require("@docusaurus/Translate");
|
|
15
|
-
|
|
16
|
-
var _IconClose = _interopRequireDefault(require("@theme/IconClose"));
|
|
17
|
-
|
|
18
|
-
var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
|
|
19
|
-
|
|
20
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
24
|
-
*
|
|
25
|
-
* This source code is licensed under the MIT license found in the
|
|
26
|
-
* LICENSE file in the root directory of this source tree.
|
|
27
|
-
*/
|
|
28
|
-
function AnnouncementBar() {
|
|
29
|
-
const {
|
|
30
|
-
isActive,
|
|
31
|
-
close
|
|
32
|
-
} = (0, _themeCommon.useAnnouncementBar)();
|
|
33
|
-
const {
|
|
34
|
-
announcementBar
|
|
35
|
-
} = (0, _themeCommon.useThemeConfig)();
|
|
36
|
-
|
|
37
|
-
if (!isActive) {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const {
|
|
42
|
-
content,
|
|
43
|
-
backgroundColor,
|
|
44
|
-
textColor,
|
|
45
|
-
isCloseable
|
|
46
|
-
} = announcementBar;
|
|
47
|
-
return <div className={_stylesModule.default.announcementBar} style={{
|
|
48
|
-
backgroundColor,
|
|
49
|
-
color: textColor
|
|
50
|
-
}} role="banner">
|
|
51
|
-
{isCloseable && <div className={_stylesModule.default.announcementBarPlaceholder} />}
|
|
52
|
-
<div className={_stylesModule.default.announcementBarContent} // Developer provided the HTML, so assume it's safe.
|
|
53
|
-
// eslint-disable-next-line react/no-danger
|
|
54
|
-
dangerouslySetInnerHTML={{
|
|
55
|
-
__html: content
|
|
56
|
-
}} />
|
|
57
|
-
{isCloseable ? <button type="button" className={(0, _clsx.default)('clean-btn close', _stylesModule.default.announcementBarClose)} onClick={close} aria-label={(0, _Translate.translate)({
|
|
58
|
-
id: 'theme.AnnouncementBar.closeButtonAriaLabel',
|
|
59
|
-
message: 'Close',
|
|
60
|
-
description: 'The ARIA label for close button of announcement bar'
|
|
61
|
-
})}>
|
|
62
|
-
<_IconClose.default width={14} height={14} strokeWidth={3.1} />
|
|
63
|
-
</button> : null}
|
|
64
|
-
</div>;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
var _default = AnnouncementBar;
|
|
68
|
-
exports.default = _default;
|