@docusaurus/theme-classic 2.4.1 → 3.0.0-beta.0

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 (174) hide show
  1. package/lib/getSwizzleConfig.js +107 -8
  2. package/lib/index.js +20 -6
  3. package/lib/nprogress.d.ts +1 -1
  4. package/lib/options.js +6 -2
  5. package/lib/theme/Admonition/Icon/Danger.d.ts +9 -0
  6. package/lib/theme/Admonition/Icon/Danger.js +17 -0
  7. package/lib/theme/Admonition/Icon/Info.d.ts +9 -0
  8. package/lib/theme/Admonition/Icon/Info.js +17 -0
  9. package/lib/theme/Admonition/Icon/Note.d.ts +9 -0
  10. package/lib/theme/Admonition/Icon/Note.js +17 -0
  11. package/lib/theme/Admonition/Icon/Tip.d.ts +9 -0
  12. package/lib/theme/Admonition/Icon/Tip.js +17 -0
  13. package/lib/theme/Admonition/Icon/Warning.d.ts +9 -0
  14. package/lib/theme/Admonition/Icon/Warning.js +17 -0
  15. package/lib/theme/Admonition/Layout/index.d.ts +9 -0
  16. package/lib/theme/Admonition/Layout/index.js +45 -0
  17. package/lib/theme/Admonition/{styles.module.css → Layout/styles.module.css} +4 -0
  18. package/lib/theme/Admonition/Type/Caution.d.ts +9 -0
  19. package/lib/theme/Admonition/Type/Caution.js +34 -0
  20. package/lib/theme/Admonition/Type/Danger.d.ts +9 -0
  21. package/lib/theme/Admonition/Type/Danger.js +32 -0
  22. package/lib/theme/Admonition/Type/Info.d.ts +9 -0
  23. package/lib/theme/Admonition/Type/Info.js +32 -0
  24. package/lib/theme/Admonition/Type/Note.d.ts +9 -0
  25. package/lib/theme/Admonition/Type/Note.js +32 -0
  26. package/lib/theme/Admonition/Type/Tip.d.ts +9 -0
  27. package/lib/theme/Admonition/Type/Tip.js +32 -0
  28. package/lib/theme/Admonition/Type/Warning.d.ts +9 -0
  29. package/lib/theme/Admonition/Type/Warning.js +32 -0
  30. package/lib/theme/Admonition/Types.d.ts +12 -0
  31. package/lib/theme/Admonition/Types.js +33 -0
  32. package/lib/theme/Admonition/index.d.ts +1 -1
  33. package/lib/theme/Admonition/index.js +12 -171
  34. package/lib/theme/BlogArchivePage/index.js +7 -2
  35. package/lib/theme/BlogLayout/index.js +1 -1
  36. package/lib/theme/BlogPostItem/Container/index.js +12 -3
  37. package/lib/theme/BlogPostItem/Header/Author/index.js +6 -1
  38. package/lib/theme/BlogPostPage/index.js +3 -1
  39. package/lib/theme/BlogSidebar/Desktop/index.js +3 -1
  40. package/lib/theme/BlogSidebar/Mobile/index.js +3 -1
  41. package/lib/theme/BlogTagsListPage/index.js +2 -1
  42. package/lib/theme/BlogTagsPostsPage/index.js +4 -2
  43. package/lib/theme/CodeBlock/Content/String.js +9 -2
  44. package/lib/theme/CodeBlock/CopyButton/index.js +0 -1
  45. package/lib/theme/DocBreadcrumbs/index.js +6 -2
  46. package/lib/theme/DocCard/index.js +8 -4
  47. package/lib/theme/DocItem/Layout/index.js +5 -0
  48. package/lib/theme/DocItem/index.js +1 -1
  49. package/lib/theme/{DocPage → DocRoot}/Layout/Main/index.d.ts +2 -2
  50. package/lib/theme/{DocPage → DocRoot}/Layout/Main/index.js +1 -1
  51. package/lib/theme/{DocPage → DocRoot}/Layout/Sidebar/ExpandButton/index.d.ts +2 -2
  52. package/lib/theme/{DocPage → DocRoot}/Layout/Sidebar/ExpandButton/index.js +1 -1
  53. package/lib/theme/{DocPage → DocRoot}/Layout/Sidebar/index.d.ts +2 -2
  54. package/lib/theme/{DocPage → DocRoot}/Layout/Sidebar/index.js +2 -2
  55. package/lib/theme/{DocPage → DocRoot}/Layout/index.d.ts +2 -2
  56. package/lib/theme/{DocPage → DocRoot}/Layout/index.js +9 -10
  57. package/lib/theme/{DocPage → DocRoot}/Layout/styles.module.css +1 -2
  58. package/lib/theme/{DocPage → DocRoot}/index.d.ts +2 -2
  59. package/lib/theme/DocRoot/index.js +31 -0
  60. package/lib/theme/DocSidebar/Desktop/index.d.ts +1 -1
  61. package/lib/theme/DocSidebar/Mobile/index.d.ts +1 -1
  62. package/lib/theme/DocSidebarItem/Category/index.js +24 -13
  63. package/lib/theme/DocSidebarItems/index.js +6 -4
  64. package/lib/theme/DocTagDocListPage/index.d.ts +1 -1
  65. package/lib/theme/DocTagDocListPage/index.js +53 -39
  66. package/lib/theme/DocTagsListPage/index.d.ts +1 -1
  67. package/lib/theme/DocTagsListPage/index.js +26 -17
  68. package/lib/theme/DocVersionRoot/index.d.ts +10 -0
  69. package/lib/theme/DocVersionRoot/index.js +46 -0
  70. package/lib/theme/DocsRoot/index.d.ts +10 -0
  71. package/lib/theme/DocsRoot/index.js +18 -0
  72. package/lib/theme/EditThisPage/index.js +3 -6
  73. package/lib/theme/ErrorPageContent.js +3 -2
  74. package/lib/theme/MDXComponents/Code.js +2 -36
  75. package/lib/theme/MDXComponents/Details.js +1 -1
  76. package/lib/theme/MDXComponents/Pre.d.ts +2 -2
  77. package/lib/theme/MDXComponents/Pre.js +4 -11
  78. package/lib/theme/MDXComponents/Ul/index.js +4 -0
  79. package/lib/theme/MDXComponents/index.js +4 -3
  80. package/lib/theme/MDXPage/index.js +16 -4
  81. package/lib/theme/NavbarItem/DocNavbarItem.js +4 -3
  82. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/index.d.ts +1 -1
  83. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/index.js +2 -1
  84. package/lib/theme/NotFound/Content/index.d.ts +9 -0
  85. package/lib/theme/NotFound/Content/index.js +42 -0
  86. package/lib/theme/{NotFound.d.ts → NotFound/index.d.ts} +1 -1
  87. package/lib/theme/NotFound/index.js +25 -0
  88. package/lib/theme/SiteMetadata/index.js +30 -3
  89. package/lib/theme/TOCItems/Tree.js +3 -4
  90. package/lib/theme/Tabs/index.js +4 -2
  91. package/lib/theme/TagsListByLetter/index.js +4 -1
  92. package/lib/theme/ThemedImage/index.js +8 -24
  93. package/lib/theme/{MDXComponents/Head.d.ts → Unlisted/index.d.ts} +2 -2
  94. package/lib/theme/Unlisted/index.js +38 -0
  95. package/package.json +26 -26
  96. package/src/getSwizzleConfig.ts +116 -9
  97. package/src/index.ts +21 -6
  98. package/src/nprogress.ts +2 -1
  99. package/src/options.ts +7 -2
  100. package/src/theme/Admonition/Icon/Danger.tsx +20 -0
  101. package/src/theme/Admonition/Icon/Info.tsx +20 -0
  102. package/src/theme/Admonition/Icon/Note.tsx +20 -0
  103. package/src/theme/Admonition/Icon/Tip.tsx +20 -0
  104. package/src/theme/Admonition/Icon/Warning.tsx +20 -0
  105. package/src/theme/Admonition/Layout/index.tsx +57 -0
  106. package/src/theme/Admonition/{styles.module.css → Layout/styles.module.css} +4 -0
  107. package/src/theme/Admonition/Type/Caution.tsx +39 -0
  108. package/src/theme/Admonition/Type/Danger.tsx +37 -0
  109. package/src/theme/Admonition/Type/Info.tsx +37 -0
  110. package/src/theme/Admonition/Type/Note.tsx +37 -0
  111. package/src/theme/Admonition/Type/Tip.tsx +37 -0
  112. package/src/theme/Admonition/Type/Warning.tsx +37 -0
  113. package/src/theme/Admonition/Types.tsx +38 -0
  114. package/src/theme/Admonition/index.tsx +13 -194
  115. package/src/theme/BlogArchivePage/index.tsx +7 -2
  116. package/src/theme/BlogLayout/index.tsx +1 -1
  117. package/src/theme/BlogPostItem/Container/index.tsx +12 -3
  118. package/src/theme/BlogPostItem/Header/Author/index.tsx +6 -1
  119. package/src/theme/BlogPostPage/index.tsx +3 -1
  120. package/src/theme/BlogSidebar/Desktop/index.tsx +3 -1
  121. package/src/theme/BlogSidebar/Mobile/index.tsx +3 -1
  122. package/src/theme/BlogTagsListPage/index.tsx +2 -1
  123. package/src/theme/BlogTagsPostsPage/index.tsx +4 -2
  124. package/src/theme/CodeBlock/Content/String.tsx +11 -2
  125. package/src/theme/CodeBlock/CopyButton/index.tsx +0 -1
  126. package/src/theme/DocBreadcrumbs/index.tsx +6 -2
  127. package/src/theme/DocCard/index.tsx +11 -6
  128. package/src/theme/DocItem/Layout/index.tsx +5 -0
  129. package/src/theme/DocItem/index.tsx +1 -1
  130. package/src/theme/{DocPage → DocRoot}/Layout/Main/index.tsx +2 -2
  131. package/src/theme/{DocPage → DocRoot}/Layout/Sidebar/ExpandButton/index.tsx +2 -2
  132. package/src/theme/{DocPage → DocRoot}/Layout/Sidebar/index.tsx +3 -3
  133. package/src/theme/{DocPage → DocRoot}/Layout/index.tsx +10 -11
  134. package/src/theme/{DocPage → DocRoot}/Layout/styles.module.css +1 -2
  135. package/src/theme/DocRoot/index.tsx +34 -0
  136. package/src/theme/DocSidebarItem/Category/index.tsx +25 -12
  137. package/src/theme/DocSidebarItems/index.tsx +6 -4
  138. package/src/theme/DocTagDocListPage/index.tsx +60 -39
  139. package/src/theme/DocTagsListPage/index.tsx +33 -17
  140. package/src/theme/DocVersionRoot/index.tsx +51 -0
  141. package/src/theme/DocsRoot/index.tsx +22 -0
  142. package/src/theme/EditThisPage/index.tsx +3 -6
  143. package/src/theme/ErrorPageContent.tsx +3 -2
  144. package/src/theme/MDXComponents/Code.tsx +2 -39
  145. package/src/theme/MDXComponents/Details.tsx +1 -2
  146. package/src/theme/MDXComponents/Pre.tsx +5 -13
  147. package/src/theme/MDXComponents/Ul/index.tsx +5 -1
  148. package/src/theme/MDXComponents/index.tsx +11 -10
  149. package/src/theme/MDXPage/index.tsx +16 -4
  150. package/src/theme/NavbarItem/DocNavbarItem.tsx +4 -3
  151. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx +2 -1
  152. package/src/theme/NotFound/Content/index.tsx +45 -0
  153. package/src/theme/NotFound/index.tsx +27 -0
  154. package/src/theme/SiteMetadata/index.tsx +36 -3
  155. package/src/theme/SkipToContent/index.tsx +0 -1
  156. package/src/theme/TOCItems/Tree.tsx +3 -4
  157. package/src/theme/Tabs/index.tsx +4 -2
  158. package/src/theme/TagsListByLetter/index.tsx +4 -2
  159. package/src/theme/ThemedImage/index.tsx +8 -31
  160. package/src/theme/Unlisted/index.tsx +42 -0
  161. package/src/theme/prism-include-languages.ts +2 -1
  162. package/src/theme-classic.d.ts +146 -21
  163. package/lib/theme/DocPage/index.js +0 -67
  164. package/lib/theme/MDXComponents/Head.js +0 -23
  165. package/lib/theme/NotFound.js +0 -52
  166. package/src/theme/DocPage/index.tsx +0 -71
  167. package/src/theme/MDXComponents/Head.tsx +0 -29
  168. package/src/theme/NotFound.tsx +0 -54
  169. /package/lib/theme/{DocPage → DocRoot}/Layout/Main/styles.module.css +0 -0
  170. /package/lib/theme/{DocPage → DocRoot}/Layout/Sidebar/ExpandButton/styles.module.css +0 -0
  171. /package/lib/theme/{DocPage → DocRoot}/Layout/Sidebar/styles.module.css +0 -0
  172. /package/src/theme/{DocPage → DocRoot}/Layout/Main/styles.module.css +0 -0
  173. /package/src/theme/{DocPage → DocRoot}/Layout/Sidebar/ExpandButton/styles.module.css +0 -0
  174. /package/src/theme/{DocPage → DocRoot}/Layout/Sidebar/styles.module.css +0 -0
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import clsx from 'clsx';
9
+ import Translate from '@docusaurus/Translate';
10
+ import AdmonitionLayout from '@theme/Admonition/Layout';
11
+ import IconTip from '@theme/Admonition/Icon/Tip';
12
+ const infimaClassName = 'alert alert--success';
13
+ const defaultProps = {
14
+ icon: <IconTip />,
15
+ title: (
16
+ <Translate
17
+ id="theme.admonition.tip"
18
+ description="The default label used for the Tip admonition (:::tip)">
19
+ tip
20
+ </Translate>
21
+ ),
22
+ };
23
+ export default function AdmonitionTypeTip(props) {
24
+ return (
25
+ <AdmonitionLayout
26
+ {...defaultProps}
27
+ {...props}
28
+ className={clsx(infimaClassName, props.className)}>
29
+ {props.children}
30
+ </AdmonitionLayout>
31
+ );
32
+ }
@@ -0,0 +1,9 @@
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
+ /// <reference types="react" />
8
+ import type { Props } from '@theme/Admonition/Type/Warning';
9
+ export default function AdmonitionTypeWarning(props: Props): JSX.Element;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import clsx from 'clsx';
9
+ import Translate from '@docusaurus/Translate';
10
+ import AdmonitionLayout from '@theme/Admonition/Layout';
11
+ import IconWarning from '@theme/Admonition/Icon/Warning';
12
+ const infimaClassName = 'alert alert--warning';
13
+ const defaultProps = {
14
+ icon: <IconWarning />,
15
+ title: (
16
+ <Translate
17
+ id="theme.admonition.warning"
18
+ description="The default label used for the Warning admonition (:::warning)">
19
+ warning
20
+ </Translate>
21
+ ),
22
+ };
23
+ export default function AdmonitionTypeWarning(props) {
24
+ return (
25
+ <AdmonitionLayout
26
+ {...defaultProps}
27
+ {...props}
28
+ className={clsx(infimaClassName, props.className)}>
29
+ {props.children}
30
+ </AdmonitionLayout>
31
+ );
32
+ }
@@ -0,0 +1,12 @@
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
+ /// <reference path="../../../src/theme-classic.d.ts" />
8
+ import React from 'react';
9
+ declare const _default: {
10
+ [x: string]: React.ComponentType<import("@theme/Admonition").Props>;
11
+ };
12
+ export default _default;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import AdmonitionTypeNote from '@theme/Admonition/Type/Note';
9
+ import AdmonitionTypeTip from '@theme/Admonition/Type/Tip';
10
+ import AdmonitionTypeInfo from '@theme/Admonition/Type/Info';
11
+ import AdmonitionTypeWarning from '@theme/Admonition/Type/Warning';
12
+ import AdmonitionTypeDanger from '@theme/Admonition/Type/Danger';
13
+ import AdmonitionTypeCaution from '@theme/Admonition/Type/Caution';
14
+ const admonitionTypes = {
15
+ note: AdmonitionTypeNote,
16
+ tip: AdmonitionTypeTip,
17
+ info: AdmonitionTypeInfo,
18
+ warning: AdmonitionTypeWarning,
19
+ danger: AdmonitionTypeDanger,
20
+ };
21
+ // Undocumented legacy admonition type aliases
22
+ // Provide hardcoded/untranslated retrocompatible label
23
+ // See also https://github.com/facebook/docusaurus/issues/7767
24
+ const admonitionAliases = {
25
+ secondary: (props) => <AdmonitionTypeNote title="secondary" {...props} />,
26
+ important: (props) => <AdmonitionTypeInfo title="important" {...props} />,
27
+ success: (props) => <AdmonitionTypeTip title="success" {...props} />,
28
+ caution: AdmonitionTypeCaution,
29
+ };
30
+ export default {
31
+ ...admonitionTypes,
32
+ ...admonitionAliases,
33
+ };
@@ -6,4 +6,4 @@
6
6
  */
7
7
  /// <reference types="react" />
8
8
  import type { Props } from '@theme/Admonition';
9
- export default function Admonition(props: Props): JSX.Element;
9
+ export default function Admonition(unprocessedProps: Props): JSX.Element;
@@ -5,179 +5,20 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React from 'react';
8
- import clsx from 'clsx';
9
- import {ThemeClassNames} from '@docusaurus/theme-common';
10
- import Translate from '@docusaurus/Translate';
11
- import styles from './styles.module.css';
12
- function NoteIcon() {
13
- return (
14
- <svg viewBox="0 0 14 16">
15
- <path
16
- fillRule="evenodd"
17
- d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"
18
- />
19
- </svg>
20
- );
21
- }
22
- function TipIcon() {
23
- return (
24
- <svg viewBox="0 0 12 16">
25
- <path
26
- fillRule="evenodd"
27
- d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"
28
- />
29
- </svg>
30
- );
31
- }
32
- function DangerIcon() {
33
- return (
34
- <svg viewBox="0 0 12 16">
35
- <path
36
- fillRule="evenodd"
37
- d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"
38
- />
39
- </svg>
40
- );
41
- }
42
- function InfoIcon() {
43
- return (
44
- <svg viewBox="0 0 14 16">
45
- <path
46
- fillRule="evenodd"
47
- d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"
48
- />
49
- </svg>
50
- );
51
- }
52
- function CautionIcon() {
53
- return (
54
- <svg viewBox="0 0 16 16">
55
- <path
56
- fillRule="evenodd"
57
- d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"
58
- />
59
- </svg>
60
- );
61
- }
62
- // eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style
63
- const AdmonitionConfigs = {
64
- note: {
65
- infimaClassName: 'secondary',
66
- iconComponent: NoteIcon,
67
- label: (
68
- <Translate
69
- id="theme.admonition.note"
70
- description="The default label used for the Note admonition (:::note)">
71
- note
72
- </Translate>
73
- ),
74
- },
75
- tip: {
76
- infimaClassName: 'success',
77
- iconComponent: TipIcon,
78
- label: (
79
- <Translate
80
- id="theme.admonition.tip"
81
- description="The default label used for the Tip admonition (:::tip)">
82
- tip
83
- </Translate>
84
- ),
85
- },
86
- danger: {
87
- infimaClassName: 'danger',
88
- iconComponent: DangerIcon,
89
- label: (
90
- <Translate
91
- id="theme.admonition.danger"
92
- description="The default label used for the Danger admonition (:::danger)">
93
- danger
94
- </Translate>
95
- ),
96
- },
97
- info: {
98
- infimaClassName: 'info',
99
- iconComponent: InfoIcon,
100
- label: (
101
- <Translate
102
- id="theme.admonition.info"
103
- description="The default label used for the Info admonition (:::info)">
104
- info
105
- </Translate>
106
- ),
107
- },
108
- caution: {
109
- infimaClassName: 'warning',
110
- iconComponent: CautionIcon,
111
- label: (
112
- <Translate
113
- id="theme.admonition.caution"
114
- description="The default label used for the Caution admonition (:::caution)">
115
- caution
116
- </Translate>
117
- ),
118
- },
119
- };
120
- // Legacy aliases, undocumented but kept for retro-compatibility
121
- const aliases = {
122
- secondary: 'note',
123
- important: 'info',
124
- success: 'tip',
125
- warning: 'danger',
126
- };
127
- function getAdmonitionConfig(unsafeType) {
128
- const type = aliases[unsafeType] ?? unsafeType;
129
- const config = AdmonitionConfigs[type];
130
- if (config) {
131
- return config;
8
+ import {processAdmonitionProps} from '@docusaurus/theme-common';
9
+ import AdmonitionTypes from '@theme/Admonition/Types';
10
+ function getAdmonitionTypeComponent(type) {
11
+ const component = AdmonitionTypes[type];
12
+ if (component) {
13
+ return component;
132
14
  }
133
15
  console.warn(
134
- `No admonition config found for admonition type "${type}". Using Info as fallback.`,
16
+ `No admonition component found for admonition type "${type}". Using Info as fallback.`,
135
17
  );
136
- return AdmonitionConfigs.info;
18
+ return AdmonitionTypes.info;
137
19
  }
138
- // Workaround because it's difficult in MDX v1 to provide a MDX title as props
139
- // See https://github.com/facebook/docusaurus/pull/7152#issuecomment-1145779682
140
- function extractMDXAdmonitionTitle(children) {
141
- const items = React.Children.toArray(children);
142
- const mdxAdmonitionTitle = items.find(
143
- (item) =>
144
- React.isValidElement(item) &&
145
- item.props?.mdxType === 'mdxAdmonitionTitle',
146
- );
147
- const rest = <>{items.filter((item) => item !== mdxAdmonitionTitle)}</>;
148
- return {
149
- mdxAdmonitionTitle,
150
- rest,
151
- };
152
- }
153
- function processAdmonitionProps(props) {
154
- const {mdxAdmonitionTitle, rest} = extractMDXAdmonitionTitle(props.children);
155
- return {
156
- ...props,
157
- title: props.title ?? mdxAdmonitionTitle,
158
- children: rest,
159
- };
160
- }
161
- export default function Admonition(props) {
162
- const {children, type, title, icon: iconProp} = processAdmonitionProps(props);
163
- const typeConfig = getAdmonitionConfig(type);
164
- const titleLabel = title ?? typeConfig.label;
165
- const {iconComponent: IconComponent} = typeConfig;
166
- const icon = iconProp ?? <IconComponent />;
167
- return (
168
- <div
169
- className={clsx(
170
- ThemeClassNames.common.admonition,
171
- ThemeClassNames.common.admonitionType(props.type),
172
- 'alert',
173
- `alert--${typeConfig.infimaClassName}`,
174
- styles.admonition,
175
- )}>
176
- <div className={styles.admonitionHeading}>
177
- <span className={styles.admonitionIcon}>{icon}</span>
178
- {titleLabel}
179
- </div>
180
- <div className={styles.admonitionContent}>{children}</div>
181
- </div>
182
- );
20
+ export default function Admonition(unprocessedProps) {
21
+ const props = processAdmonitionProps(unprocessedProps);
22
+ const AdmonitionTypeComponent = getAdmonitionTypeComponent(props.type);
23
+ return <AdmonitionTypeComponent {...props} />;
183
24
  }
@@ -9,10 +9,13 @@ import Link from '@docusaurus/Link';
9
9
  import {translate} from '@docusaurus/Translate';
10
10
  import {PageMetadata} from '@docusaurus/theme-common';
11
11
  import Layout from '@theme/Layout';
12
+ import Heading from '@theme/Heading';
12
13
  function Year({year, posts}) {
13
14
  return (
14
15
  <>
15
- <h3>{year}</h3>
16
+ <Heading as="h3" id={year}>
17
+ {year}
18
+ </Heading>
16
19
  <ul>
17
20
  {posts.map((post) => (
18
21
  <li key={post.metadata.date}>
@@ -69,7 +72,9 @@ export default function BlogArchive({archive}) {
69
72
  <Layout>
70
73
  <header className="hero hero--primary">
71
74
  <div className="container">
72
- <h1 className="hero__title">{title}</h1>
75
+ <Heading as="h1" className="hero__title">
76
+ {title}
77
+ </Heading>
73
78
  <p className="hero__subtitle">{description}</p>
74
79
  </div>
75
80
  </header>
@@ -22,7 +22,7 @@ export default function BlogLayout(props) {
22
22
  'col--9 col--offset-1': !hasSidebar,
23
23
  })}
24
24
  itemScope
25
- itemType="http://schema.org/Blog">
25
+ itemType="https://schema.org/Blog">
26
26
  {children}
27
27
  </main>
28
28
  {toc && <div className="col col--2">{toc}</div>}
@@ -8,17 +8,26 @@ import React from 'react';
8
8
  import {useBaseUrlUtils} from '@docusaurus/useBaseUrl';
9
9
  import {useBlogPost} from '@docusaurus/theme-common/internal';
10
10
  export default function BlogPostItemContainer({children, className}) {
11
- const {frontMatter, assets} = useBlogPost();
11
+ const {
12
+ frontMatter,
13
+ assets,
14
+ metadata: {description},
15
+ } = useBlogPost();
12
16
  const {withBaseUrl} = useBaseUrlUtils();
13
17
  const image = assets.image ?? frontMatter.image;
18
+ const keywords = frontMatter.keywords ?? [];
14
19
  return (
15
20
  <article
16
21
  className={className}
17
22
  itemProp="blogPost"
18
23
  itemScope
19
- itemType="http://schema.org/BlogPosting">
24
+ itemType="https://schema.org/BlogPosting">
25
+ {description && <meta itemProp="description" content={description} />}
20
26
  {image && (
21
- <meta itemProp="image" content={withBaseUrl(image, {absolute: true})} />
27
+ <link itemProp="image" href={withBaseUrl(image, {absolute: true})} />
28
+ )}
29
+ {keywords.length > 0 && (
30
+ <meta itemProp="keywords" content={keywords.join(',')} />
22
31
  )}
23
32
  {children}
24
33
  </article>
@@ -20,7 +20,12 @@ export default function BlogPostItemHeaderAuthor({author, className}) {
20
20
  <div className={clsx('avatar margin-bottom--sm', className)}>
21
21
  {imageURL && (
22
22
  <MaybeLink href={link} className="avatar__photo-link">
23
- <img className="avatar__photo" src={imageURL} alt={name} />
23
+ <img
24
+ className="avatar__photo"
25
+ src={imageURL}
26
+ alt={name}
27
+ itemProp="image"
28
+ />
24
29
  </MaybeLink>
25
30
  )}
26
31
 
@@ -13,9 +13,10 @@ import BlogPostItem from '@theme/BlogPostItem';
13
13
  import BlogPostPaginator from '@theme/BlogPostPaginator';
14
14
  import BlogPostPageMetadata from '@theme/BlogPostPage/Metadata';
15
15
  import TOC from '@theme/TOC';
16
+ import Unlisted from '@theme/Unlisted';
16
17
  function BlogPostPageContent({sidebar, children}) {
17
18
  const {metadata, toc} = useBlogPost();
18
- const {nextItem, prevItem, frontMatter} = metadata;
19
+ const {nextItem, prevItem, frontMatter, unlisted} = metadata;
19
20
  const {
20
21
  hide_table_of_contents: hideTableOfContents,
21
22
  toc_min_heading_level: tocMinHeadingLevel,
@@ -33,6 +34,7 @@ function BlogPostPageContent({sidebar, children}) {
33
34
  />
34
35
  ) : undefined
35
36
  }>
37
+ {unlisted && <Unlisted />}
36
38
  <BlogPostItem>{children}</BlogPostItem>
37
39
 
38
40
  {(nextItem || prevItem) && (
@@ -8,8 +8,10 @@ import React from 'react';
8
8
  import clsx from 'clsx';
9
9
  import Link from '@docusaurus/Link';
10
10
  import {translate} from '@docusaurus/Translate';
11
+ import {useVisibleBlogSidebarItems} from '@docusaurus/theme-common/internal';
11
12
  import styles from './styles.module.css';
12
13
  export default function BlogSidebarDesktop({sidebar}) {
14
+ const items = useVisibleBlogSidebarItems(sidebar.items);
13
15
  return (
14
16
  <aside className="col col--3">
15
17
  <nav
@@ -23,7 +25,7 @@ export default function BlogSidebarDesktop({sidebar}) {
23
25
  {sidebar.title}
24
26
  </div>
25
27
  <ul className={clsx(styles.sidebarItemList, 'clean-list')}>
26
- {sidebar.items.map((item) => (
28
+ {items.map((item) => (
27
29
  <li key={item.permalink} className={styles.sidebarItem}>
28
30
  <Link
29
31
  isNavLink
@@ -6,11 +6,13 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import Link from '@docusaurus/Link';
9
+ import {useVisibleBlogSidebarItems} from '@docusaurus/theme-common/internal';
9
10
  import {NavbarSecondaryMenuFiller} from '@docusaurus/theme-common';
10
11
  function BlogSidebarMobileSecondaryMenu({sidebar}) {
12
+ const items = useVisibleBlogSidebarItems(sidebar.items);
11
13
  return (
12
14
  <ul className="menu__list">
13
- {sidebar.items.map((item) => (
15
+ {items.map((item) => (
14
16
  <li key={item.permalink} className="menu__list-item">
15
17
  <Link
16
18
  isNavLink
@@ -15,6 +15,7 @@ import {
15
15
  import BlogLayout from '@theme/BlogLayout';
16
16
  import TagsListByLetter from '@theme/TagsListByLetter';
17
17
  import SearchMetadata from '@theme/SearchMetadata';
18
+ import Heading from '@theme/Heading';
18
19
  export default function BlogTagsListPage({tags, sidebar}) {
19
20
  const title = translateTagsPageTitle();
20
21
  return (
@@ -26,7 +27,7 @@ export default function BlogTagsListPage({tags, sidebar}) {
26
27
  <PageMetadata title={title} />
27
28
  <SearchMetadata tag="blog_tags_list" />
28
29
  <BlogLayout sidebar={sidebar}>
29
- <h1>{title}</h1>
30
+ <Heading as="h1">{title}</Heading>
30
31
  <TagsListByLetter tags={tags} />
31
32
  </BlogLayout>
32
33
  </HtmlClassNameProvider>
@@ -18,6 +18,8 @@ import BlogLayout from '@theme/BlogLayout';
18
18
  import BlogListPaginator from '@theme/BlogListPaginator';
19
19
  import SearchMetadata from '@theme/SearchMetadata';
20
20
  import BlogPostItems from '@theme/BlogPostItems';
21
+ import Unlisted from '@theme/Unlisted';
22
+ import Heading from '@theme/Heading';
21
23
  // Very simple pluralization: probably good enough for now
22
24
  function useBlogPostsPlural() {
23
25
  const {selectMessage} = usePluralForm();
@@ -59,9 +61,9 @@ function BlogTagsPostsPageContent({tag, items, sidebar, listMetadata}) {
59
61
  const title = useBlogTagsPostsPageTitle(tag);
60
62
  return (
61
63
  <BlogLayout sidebar={sidebar}>
64
+ {tag.unlisted && <Unlisted />}
62
65
  <header className="margin-bottom--xl">
63
- <h1>{title}</h1>
64
-
66
+ <Heading as="h1">{title}</Heading>
65
67
  <Link href={tag.allTagsPath}>
66
68
  <Translate
67
69
  id="theme.tags.tagsPageLink"
@@ -20,6 +20,12 @@ import CopyButton from '@theme/CodeBlock/CopyButton';
20
20
  import WordWrapButton from '@theme/CodeBlock/WordWrapButton';
21
21
  import Container from '@theme/CodeBlock/Container';
22
22
  import styles from './styles.module.css';
23
+ // Prism languages are always lowercase
24
+ // We want to fail-safe and allow both "php" and "PHP"
25
+ // See https://github.com/facebook/docusaurus/issues/9012
26
+ function normalizeLanguage(language) {
27
+ return language?.toLowerCase();
28
+ }
23
29
  export default function CodeBlockString({
24
30
  children,
25
31
  className: blockClassName = '',
@@ -31,8 +37,9 @@ export default function CodeBlockString({
31
37
  const {
32
38
  prism: {defaultLanguage, magicComments},
33
39
  } = useThemeConfig();
34
- const language =
35
- languageProp ?? parseLanguage(blockClassName) ?? defaultLanguage;
40
+ const language = normalizeLanguage(
41
+ languageProp ?? parseLanguage(blockClassName) ?? defaultLanguage,
42
+ );
36
43
  const prismTheme = usePrismTheme();
37
44
  const wordWrap = useCodeWordWrap();
38
45
  // We still parse the metastring in case we want to support more syntax in the
@@ -6,7 +6,6 @@
6
6
  */
7
7
  import React, {useCallback, useState, useRef, useEffect} from 'react';
8
8
  import clsx from 'clsx';
9
- // @ts-expect-error: TODO, we need to make theme-classic have type: module
10
9
  import copy from 'copy-text-to-clipboard';
11
10
  import {translate} from '@docusaurus/Translate';
12
11
  import IconCopy from '@theme/Icon/Copy';
@@ -79,13 +79,17 @@ export default function DocBreadcrumbs() {
79
79
  {homePageRoute && <HomeBreadcrumbItem />}
80
80
  {breadcrumbs.map((item, idx) => {
81
81
  const isLast = idx === breadcrumbs.length - 1;
82
+ const href =
83
+ item.type === 'category' && item.linkUnlisted
84
+ ? undefined
85
+ : item.href;
82
86
  return (
83
87
  <BreadcrumbsItem
84
88
  key={idx}
85
89
  active={isLast}
86
90
  index={idx}
87
- addMicrodata={!!item.href}>
88
- <BreadcrumbsItemLink href={item.href} isLast={isLast}>
91
+ addMicrodata={!!href}>
92
+ <BreadcrumbsItemLink href={href} isLast={isLast}>
89
93
  {item.label}
90
94
  </BreadcrumbsItemLink>
91
95
  </BreadcrumbsItem>
@@ -8,11 +8,12 @@ import React from 'react';
8
8
  import clsx from 'clsx';
9
9
  import Link from '@docusaurus/Link';
10
10
  import {
11
- findFirstCategoryLink,
11
+ findFirstSidebarItemLink,
12
12
  useDocById,
13
13
  } from '@docusaurus/theme-common/internal';
14
14
  import isInternalUrl from '@docusaurus/isInternalUrl';
15
15
  import {translate} from '@docusaurus/Translate';
16
+ import Heading from '@theme/Heading';
16
17
  import styles from './styles.module.css';
17
18
  function CardContainer({href, children}) {
18
19
  return (
@@ -26,9 +27,12 @@ function CardContainer({href, children}) {
26
27
  function CardLayout({href, icon, title, description}) {
27
28
  return (
28
29
  <CardContainer href={href}>
29
- <h2 className={clsx('text--truncate', styles.cardTitle)} title={title}>
30
+ <Heading
31
+ as="h2"
32
+ className={clsx('text--truncate', styles.cardTitle)}
33
+ title={title}>
30
34
  {icon} {title}
31
- </h2>
35
+ </Heading>
32
36
  {description && (
33
37
  <p
34
38
  className={clsx('text--truncate', styles.cardDescription)}
@@ -40,7 +44,7 @@ function CardLayout({href, icon, title, description}) {
40
44
  );
41
45
  }
42
46
  function CardCategory({item}) {
43
- const href = findFirstCategoryLink(item);
47
+ const href = findFirstSidebarItemLink(item);
44
48
  // Unexpected: categories that don't have a link have been filtered upfront
45
49
  if (!href) {
46
50
  return null;
@@ -16,6 +16,7 @@ import DocItemTOCMobile from '@theme/DocItem/TOC/Mobile';
16
16
  import DocItemTOCDesktop from '@theme/DocItem/TOC/Desktop';
17
17
  import DocItemContent from '@theme/DocItem/Content';
18
18
  import DocBreadcrumbs from '@theme/DocBreadcrumbs';
19
+ import Unlisted from '@theme/Unlisted';
19
20
  import styles from './styles.module.css';
20
21
  /**
21
22
  * Decide if the toc should be rendered, on mobile or desktop viewports
@@ -38,9 +39,13 @@ function useDocTOC() {
38
39
  }
39
40
  export default function DocItemLayout({children}) {
40
41
  const docTOC = useDocTOC();
42
+ const {
43
+ metadata: {unlisted},
44
+ } = useDoc();
41
45
  return (
42
46
  <div className="row">
43
47
  <div className={clsx('col', !docTOC.hidden && styles.docItemCol)}>
48
+ {unlisted && <Unlisted />}
44
49
  <DocVersionBanner />
45
50
  <div className={styles.docItemContainer}>
46
51
  <article>
@@ -10,7 +10,7 @@ import {DocProvider} from '@docusaurus/theme-common/internal';
10
10
  import DocItemMetadata from '@theme/DocItem/Metadata';
11
11
  import DocItemLayout from '@theme/DocItem/Layout';
12
12
  export default function DocItem(props) {
13
- const docHtmlClassName = `docs-doc-id-${props.content.metadata.unversionedId}`;
13
+ const docHtmlClassName = `docs-doc-id-${props.content.metadata.id}`;
14
14
  const MDXComponent = props.content;
15
15
  return (
16
16
  <DocProvider content={props.content}>
@@ -5,5 +5,5 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  /// <reference types="react" />
8
- import type { Props } from '@theme/DocPage/Layout/Main';
9
- export default function DocPageLayoutMain({ hiddenSidebarContainer, children, }: Props): JSX.Element;
8
+ import type { Props } from '@theme/DocRoot/Layout/Main';
9
+ export default function DocRootLayoutMain({ hiddenSidebarContainer, children, }: Props): JSX.Element;
@@ -8,7 +8,7 @@ import React from 'react';
8
8
  import clsx from 'clsx';
9
9
  import {useDocsSidebar} from '@docusaurus/theme-common/internal';
10
10
  import styles from './styles.module.css';
11
- export default function DocPageLayoutMain({hiddenSidebarContainer, children}) {
11
+ export default function DocRootLayoutMain({hiddenSidebarContainer, children}) {
12
12
  const sidebar = useDocsSidebar();
13
13
  return (
14
14
  <main
@@ -5,5 +5,5 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  /// <reference types="react" />
8
- import type { Props } from '@theme/DocPage/Layout/Sidebar/ExpandButton';
9
- export default function DocPageLayoutSidebarExpandButton({ toggleSidebar, }: Props): JSX.Element;
8
+ import type { Props } from '@theme/DocRoot/Layout/Sidebar/ExpandButton';
9
+ export default function DocRootLayoutSidebarExpandButton({ toggleSidebar, }: Props): JSX.Element;