@docusaurus/theme-classic 0.0.0-4281 → 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.
Files changed (147) hide show
  1. package/lib/theme-classic.d.ts +3 -1
  2. package/package.json +12 -12
  3. package/src/index.ts +2 -5
  4. package/src/theme-classic.d.ts +3 -1
  5. package/babel.config.js +0 -35
  6. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  7. package/lib/__tests__/translations.test.js +0 -112
  8. package/lib/__tests__/validateThemeConfig.test.js +0 -607
  9. package/lib/theme/AnnouncementBar/index.js +0 -68
  10. package/lib/theme/AnnouncementBar/styles.module.css +0 -63
  11. package/lib/theme/BackToTopButton/index.js +0 -140
  12. package/lib/theme/BackToTopButton/styles.module.css +0 -42
  13. package/lib/theme/BlogArchivePage/index.js +0 -89
  14. package/lib/theme/BlogLayout/index.js +0 -51
  15. package/lib/theme/BlogListPage/index.js +0 -60
  16. package/lib/theme/BlogListPaginator/index.js +0 -63
  17. package/lib/theme/BlogPostAuthor/index.js +0 -51
  18. package/lib/theme/BlogPostAuthor/styles.module.css +0 -12
  19. package/lib/theme/BlogPostAuthors/index.js +0 -47
  20. package/lib/theme/BlogPostAuthors/styles.module.css +0 -11
  21. package/lib/theme/BlogPostItem/index.js +0 -152
  22. package/lib/theme/BlogPostItem/styles.module.css +0 -18
  23. package/lib/theme/BlogPostPage/index.js +0 -82
  24. package/lib/theme/BlogPostPaginator/index.js +0 -64
  25. package/lib/theme/BlogSidebar/index.js +0 -49
  26. package/lib/theme/BlogSidebar/styles.module.css +0 -44
  27. package/lib/theme/BlogTagsListPage/index.js +0 -40
  28. package/lib/theme/BlogTagsPostsPage/index.js +0 -86
  29. package/lib/theme/CodeBlock/index.js +0 -133
  30. package/lib/theme/CodeBlock/styles.module.css +0 -65
  31. package/lib/theme/Details/index.js +0 -30
  32. package/lib/theme/Details/styles.module.css +0 -13
  33. package/lib/theme/DocCard/index.js +0 -84
  34. package/lib/theme/DocCard/styles.module.css +0 -43
  35. package/lib/theme/DocCardList/index.js +0 -28
  36. package/lib/theme/DocCategoryGeneratedIndexPage/index.js +0 -57
  37. package/lib/theme/DocCategoryGeneratedIndexPage/styles.module.css +0 -18
  38. package/lib/theme/DocItem/index.js +0 -112
  39. package/lib/theme/DocItem/styles.module.css +0 -22
  40. package/lib/theme/DocItemFooter/index.js +0 -79
  41. package/lib/theme/DocItemFooter/styles.module.css +0 -18
  42. package/lib/theme/DocPage/index.js +0 -154
  43. package/lib/theme/DocPage/styles.module.css +0 -85
  44. package/lib/theme/DocPaginator/index.js +0 -62
  45. package/lib/theme/DocSidebar/index.js +0 -134
  46. package/lib/theme/DocSidebar/styles.module.css +0 -106
  47. package/lib/theme/DocSidebarItem/index.js +0 -209
  48. package/lib/theme/DocSidebarItem/styles.module.css +0 -19
  49. package/lib/theme/DocTagDocListPage/index.js +0 -89
  50. package/lib/theme/DocTagsListPage/index.js +0 -44
  51. package/lib/theme/DocVersionBadge/index.js +0 -34
  52. package/lib/theme/DocVersionBanner/index.js +0 -130
  53. package/lib/theme/EditThisPage/index.js +0 -33
  54. package/lib/theme/ErrorPageContent.js +0 -43
  55. package/lib/theme/Footer/index.js +0 -119
  56. package/lib/theme/Footer/styles.module.css +0 -15
  57. package/lib/theme/Heading/index.js +0 -71
  58. package/lib/theme/Heading/styles.css +0 -22
  59. package/lib/theme/Heading/styles.module.css +0 -19
  60. package/lib/theme/IconArrow/index.js +0 -28
  61. package/lib/theme/IconClose/index.js +0 -31
  62. package/lib/theme/IconEdit/index.js +0 -34
  63. package/lib/theme/IconEdit/styles.module.css +0 -11
  64. package/lib/theme/IconExternalLink/index.js +0 -30
  65. package/lib/theme/IconExternalLink/styles.module.css +0 -12
  66. package/lib/theme/IconLanguage/index.js +0 -29
  67. package/lib/theme/IconMenu/index.js +0 -30
  68. package/lib/theme/LastUpdated/index.js +0 -63
  69. package/lib/theme/Layout/index.js +0 -68
  70. package/lib/theme/Layout/styles.css +0 -27
  71. package/lib/theme/LayoutHead/index.js +0 -149
  72. package/lib/theme/LayoutProviders/index.js +0 -40
  73. package/lib/theme/Logo/index.js +0 -62
  74. package/lib/theme/MDXComponents/index.js +0 -106
  75. package/lib/theme/MDXComponents/styles.css +0 -11
  76. package/lib/theme/MDXPage/index.js +0 -67
  77. package/lib/theme/MDXPage/styles.module.css +0 -10
  78. package/lib/theme/Navbar/index.js +0 -267
  79. package/lib/theme/Navbar/styles.module.css +0 -27
  80. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -113
  81. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -62
  82. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -83
  83. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  84. package/lib/theme/NavbarItem/DropdownNavbarItem.js +0 -154
  85. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/index.js +0 -68
  86. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +0 -11
  87. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  88. package/lib/theme/NavbarItem/index.js +0 -74
  89. package/lib/theme/NotFound.js +0 -57
  90. package/lib/theme/SearchBar.js +0 -15
  91. package/lib/theme/SearchMetadata/index.js +0 -33
  92. package/lib/theme/Seo/index.js +0 -52
  93. package/lib/theme/SkipToContent/index.js +0 -71
  94. package/lib/theme/SkipToContent/styles.module.css +0 -14
  95. package/lib/theme/TOC/index.js +0 -39
  96. package/lib/theme/TOC/styles.module.css +0 -23
  97. package/lib/theme/TOCCollapsible/index.js +0 -53
  98. package/lib/theme/TOCCollapsible/styles.module.css +0 -50
  99. package/lib/theme/TOCInline/index.js +0 -33
  100. package/lib/theme/TOCInline/styles.module.css +0 -12
  101. package/lib/theme/TOCItems/index.js +0 -78
  102. package/lib/theme/TabItem/index.js +0 -32
  103. package/lib/theme/Tabs/__tests__/index.test.js +0 -123
  104. package/lib/theme/Tabs/index.js +0 -173
  105. package/lib/theme/Tabs/styles.module.css +0 -10
  106. package/lib/theme/Tag/index.js +0 -40
  107. package/lib/theme/Tag/styles.module.css +0 -70
  108. package/lib/theme/TagsListByLetter/index.js +0 -48
  109. package/lib/theme/TagsListByLetter/styles.module.css +0 -11
  110. package/lib/theme/TagsListInline/index.js +0 -44
  111. package/lib/theme/TagsListInline/styles.module.css +0 -15
  112. package/lib/theme/ThemeContext.js +0 -21
  113. package/lib/theme/ThemeProvider/index.js +0 -43
  114. package/lib/theme/ThemedImage/index.js +0 -47
  115. package/lib/theme/ThemedImage/styles.module.css +0 -18
  116. package/lib/theme/Toggle/index.js +0 -91
  117. package/lib/theme/Toggle/styles.module.css +0 -105
  118. package/lib/theme/UserPreferencesContext.js +0 -18
  119. package/lib/theme/UserPreferencesProvider/index.js +0 -41
  120. package/lib/theme/hooks/styles.css +0 -10
  121. package/lib/theme/hooks/useDocs.js +0 -18
  122. package/lib/theme/hooks/useHideableNavbar.js +0 -74
  123. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  124. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  125. package/lib/theme/hooks/usePrismTheme.js +0 -36
  126. package/lib/theme/hooks/useTabGroupChoice.js +0 -51
  127. package/lib/theme/hooks/useTheme.js +0 -97
  128. package/lib/theme/hooks/useThemeContext.js +0 -31
  129. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  130. package/lib/theme/hooks/useWindowSize.js +0 -68
  131. package/lib/theme/prism-include-languages.js +0 -40
  132. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  133. package/lib-next/__tests__/translations.test.js +0 -128
  134. package/lib-next/__tests__/validateThemeConfig.test.js +0 -607
  135. package/lib-next/admonitions.css +0 -35
  136. package/lib-next/deps.d.ts +0 -13
  137. package/lib-next/index.js +0 -227
  138. package/lib-next/prism-include-languages.js +0 -9
  139. package/lib-next/theme-classic.d.ts +0 -794
  140. package/lib-next/translations.js +0 -141
  141. package/lib-next/types.d.ts +0 -11
  142. package/lib-next/validateThemeConfig.js +0 -344
  143. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  144. package/src/__tests__/translations.test.ts +0 -116
  145. package/src/__tests__/validateThemeConfig.test.js +0 -607
  146. package/src/theme/Tabs/__tests__/index.test.tsx +0 -129
  147. 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;