@next-bricks/presentational 1.21.9 → 1.21.11

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 (107) hide show
  1. package/dist/bricks.json +1 -1
  2. package/dist/chunks/1614.5ce43617.js +2 -0
  3. package/dist/chunks/1614.5ce43617.js.map +1 -0
  4. package/dist/chunks/{1889.4559a6f7.js → 1889.01e1c38a.js} +2 -2
  5. package/dist/chunks/{1889.4559a6f7.js.map → 1889.01e1c38a.js.map} +1 -1
  6. package/dist/chunks/3171.7708784b.js +2 -0
  7. package/dist/chunks/3171.7708784b.js.map +1 -0
  8. package/dist/chunks/5399.2ab60504.js +2 -0
  9. package/dist/chunks/5399.2ab60504.js.map +1 -0
  10. package/dist/chunks/5552.f77213dd.js +2 -0
  11. package/dist/chunks/5552.f77213dd.js.map +1 -0
  12. package/dist/chunks/7116.05a51bac.js +2 -0
  13. package/dist/chunks/7116.05a51bac.js.map +1 -0
  14. package/dist/chunks/7455.0f5298ce.js +3 -0
  15. package/dist/chunks/7455.0f5298ce.js.LICENSE.txt +11 -0
  16. package/dist/chunks/7455.0f5298ce.js.map +1 -0
  17. package/dist/chunks/948.b8effe9f.js +3 -0
  18. package/dist/chunks/948.b8effe9f.js.map +1 -0
  19. package/dist/chunks/code-wrapper.40655769.js.map +1 -1
  20. package/dist/chunks/{eo-card-item.fbff6f7e.js → eo-card-item.f56c41e5.js} +3 -3
  21. package/dist/chunks/eo-card-item.f56c41e5.js.map +1 -0
  22. package/dist/chunks/eo-carousel-text.d8e8c2c9.js.map +1 -1
  23. package/dist/chunks/{eo-code-block.7efe5647.js → eo-code-block.a7162247.js} +2 -2
  24. package/dist/chunks/eo-code-block.a7162247.js.map +1 -0
  25. package/dist/chunks/eo-code-display.ffd79558.js.map +1 -1
  26. package/dist/chunks/eo-current-time.7cbef918.js.map +1 -1
  27. package/dist/chunks/{eo-descriptions.b8320ca9.js → eo-descriptions.1ab98c43.js} +3 -3
  28. package/dist/chunks/{eo-descriptions.b8320ca9.js.map → eo-descriptions.1ab98c43.js.map} +1 -1
  29. package/dist/chunks/eo-humanize-time.2397ce6e.js.map +1 -1
  30. package/dist/chunks/{eo-info-card-item.0d15cb28.js → eo-info-card-item.e6403b4d.js} +3 -3
  31. package/dist/chunks/eo-info-card-item.e6403b4d.js.map +1 -0
  32. package/dist/chunks/{eo-loading-step.834e0aa3.js → eo-loading-step.259d7985.js} +3 -3
  33. package/dist/chunks/{eo-loading-step.834e0aa3.js.map → eo-loading-step.259d7985.js.map} +1 -1
  34. package/dist/chunks/eo-pagination.16fd816a.js.map +1 -1
  35. package/dist/chunks/eo-statistics-card.410b5416.js.map +1 -1
  36. package/dist/chunks/{main.7a4b0b01.js → main.519bfa38.js} +2 -2
  37. package/dist/chunks/main.519bfa38.js.map +1 -0
  38. package/dist/examples.json +13 -13
  39. package/dist/{index.db5144bf.js → index.71ea98e1.js} +2 -2
  40. package/dist/index.71ea98e1.js.map +1 -0
  41. package/dist/manifest.json +49 -39
  42. package/dist/types.json +2 -2
  43. package/dist-types/card-item/index.d.ts +8 -4
  44. package/dist-types/carousel-text/index.d.ts +1 -1
  45. package/dist-types/code-block/index.d.ts +12 -3
  46. package/dist-types/code-display/index.d.ts +0 -1
  47. package/dist-types/code-wrapper/index.d.ts +7 -2
  48. package/dist-types/current-time/index.d.ts +1 -1
  49. package/dist-types/descriptions/index.d.ts +4 -3
  50. package/dist-types/humanize-time/index.d.ts +8 -8
  51. package/dist-types/info-card-item/index.d.ts +10 -9
  52. package/dist-types/loading-step/index.d.ts +8 -8
  53. package/dist-types/pagination/index.d.ts +7 -0
  54. package/dist-types/statistics-card/index.d.ts +2 -2
  55. package/docs/eo-alert.md +65 -1
  56. package/docs/eo-alert.react.md +127 -0
  57. package/docs/eo-card-item.md +179 -210
  58. package/docs/eo-card-item.react.md +578 -0
  59. package/docs/eo-carousel-text.md +49 -2
  60. package/docs/eo-carousel-text.react.md +62 -0
  61. package/docs/eo-code-block.md +135 -4
  62. package/docs/eo-code-block.react.md +146 -0
  63. package/docs/eo-code-display.md +97 -1
  64. package/docs/eo-code-display.react.md +116 -0
  65. package/docs/eo-code-wrapper.md +108 -0
  66. package/docs/eo-code-wrapper.react.md +100 -0
  67. package/docs/eo-current-time.md +40 -1
  68. package/docs/eo-current-time.react.md +53 -0
  69. package/docs/eo-descriptions.md +74 -4
  70. package/docs/eo-descriptions.react.md +329 -0
  71. package/docs/eo-divider.md +105 -17
  72. package/docs/eo-divider.react.md +129 -0
  73. package/docs/eo-humanize-time.md +89 -42
  74. package/docs/eo-humanize-time.react.md +109 -0
  75. package/docs/eo-info-card-item.md +129 -183
  76. package/docs/eo-info-card-item.react.md +188 -0
  77. package/docs/eo-loading-step.md +96 -1
  78. package/docs/eo-loading-step.react.md +102 -0
  79. package/docs/eo-pagination.md +74 -1
  80. package/docs/eo-pagination.react.md +93 -0
  81. package/docs/eo-statistics-card.md +175 -456
  82. package/docs/eo-statistics-card.react.md +376 -0
  83. package/package.json +2 -2
  84. package/dist/chunks/3171.3bb3ff80.js +0 -2
  85. package/dist/chunks/3171.3bb3ff80.js.map +0 -1
  86. package/dist/chunks/4837.3ae6253e.js +0 -2
  87. package/dist/chunks/4837.3ae6253e.js.map +0 -1
  88. package/dist/chunks/5045.b0f85f6b.js +0 -2
  89. package/dist/chunks/5045.b0f85f6b.js.map +0 -1
  90. package/dist/chunks/5399.23640b2d.js +0 -2
  91. package/dist/chunks/5399.23640b2d.js.map +0 -1
  92. package/dist/chunks/5552.5d29c532.js +0 -2
  93. package/dist/chunks/5552.5d29c532.js.map +0 -1
  94. package/dist/chunks/7218.4acefe69.js +0 -2
  95. package/dist/chunks/7218.4acefe69.js.map +0 -1
  96. package/dist/chunks/948.817a1ef0.js +0 -3
  97. package/dist/chunks/948.817a1ef0.js.map +0 -1
  98. package/dist/chunks/eo-card-item.fbff6f7e.js.map +0 -1
  99. package/dist/chunks/eo-code-block.7efe5647.js.map +0 -1
  100. package/dist/chunks/eo-info-card-item.0d15cb28.js.map +0 -1
  101. package/dist/chunks/main.7a4b0b01.js.map +0 -1
  102. package/dist/index.db5144bf.js.map +0 -1
  103. /package/dist/chunks/{948.817a1ef0.js.LICENSE.txt → 948.b8effe9f.js.LICENSE.txt} +0 -0
  104. /package/dist/chunks/{eo-card-item.fbff6f7e.js.LICENSE.txt → eo-card-item.f56c41e5.js.LICENSE.txt} +0 -0
  105. /package/dist/chunks/{eo-descriptions.b8320ca9.js.LICENSE.txt → eo-descriptions.1ab98c43.js.LICENSE.txt} +0 -0
  106. /package/dist/chunks/{eo-info-card-item.0d15cb28.js.LICENSE.txt → eo-info-card-item.e6403b4d.js.LICENSE.txt} +0 -0
  107. /package/dist/chunks/{eo-loading-step.834e0aa3.js.LICENSE.txt → eo-loading-step.259d7985.js.LICENSE.txt} +0 -0
@@ -1,15 +1,146 @@
1
- 构件 `eo-code-block`
1
+ ---
2
+ tagName: eo-code-block
3
+ displayName: WrappedEoCodeBlock
4
+ description: 代码块展示构件,基于 Shiki 进行语法高亮,支持多种编程语言、亮色/暗色主题自动切换及复制功能。
5
+ category: presentational
6
+ source: "@next-bricks/presentational"
7
+ ---
8
+
9
+ # eo-code-block
10
+
11
+ > 代码块展示构件,基于 Shiki 进行语法高亮,支持多种编程语言、亮色/暗色主题自动切换及复制功能。
12
+
13
+ ## Props
14
+
15
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
16
+ | -------------- | --------------------------------------- | ---- | -------- | -------------------------------------------------------------- |
17
+ | language | `string` | 否 | - | 代码语言,用于语法高亮,例如 `javascript`、`python`、`yaml` 等 |
18
+ | source | `string` | 否 | - | 代码内容字符串 |
19
+ | theme | `"auto" \| "light-plus" \| "dark-plus"` | 否 | `"auto"` | 代码高亮主题。`auto` 跟随系统主题自动切换亮色/暗色 |
20
+ | themeVariant | `"default" \| "elevo"` | 否 | - | 主题变体,影响代码块的整体样式风格 |
21
+ | showCopyButton | `boolean` | 否 | `true` | 是否展示复制按钮 |
22
+
23
+ ## CSS Parts
24
+
25
+ | 名称 | 说明 |
26
+ | ------- | --------------------------- |
27
+ | pre | 包裹代码内容的 `<pre>` 元素 |
28
+ | copy | 复制按钮 |
29
+ | mermaid | Mermaid 图表 |
30
+ | wrapper | code-wrapper 构件 |
2
31
 
3
32
  ## Examples
4
33
 
5
34
  ### Basic
6
35
 
36
+ 展示代码块的基本用法,通过 `language` 和 `source` 属性渲染带语法高亮的代码。
37
+
7
38
  ```yaml preview
8
39
  brick: eo-code-block
9
40
  properties:
10
- language: js
41
+ language: javascript
11
42
  source: |
12
- function test() {
13
- console.log("Hello, world");
43
+ function greet(name) {
44
+ console.log("Hello, " + name + "!");
14
45
  }
46
+ greet("world");
47
+ ```
48
+
49
+ ### Multiple Languages
50
+
51
+ 展示对不同编程语言的语法高亮支持,包括 Python、YAML 和 Shell。
52
+
53
+ ```yaml preview
54
+ - brick: eo-code-block
55
+ properties:
56
+ language: python
57
+ source: |
58
+ def greet(name):
59
+ print(f"Hello, {name}!")
60
+
61
+ greet("world")
62
+ - brick: eo-code-block
63
+ properties:
64
+ language: yaml
65
+ source: |
66
+ name: Alice
67
+ age: 30
68
+ hobbies:
69
+ - reading
70
+ - coding
71
+ - brick: eo-code-block
72
+ properties:
73
+ language: shell
74
+ source: |
75
+ echo "Hello, world!"
76
+ ls -la /tmp
77
+ ```
78
+
79
+ ### Theme
80
+
81
+ 通过 `theme` 属性指定代码高亮主题,支持 `light-plus`(亮色)、`dark-plus`(暗色)和 `auto`(跟随系统)。
82
+
83
+ ```yaml preview
84
+ - brick: eo-code-block
85
+ properties:
86
+ language: javascript
87
+ theme: light-plus
88
+ source: |
89
+ const x = 42;
90
+ console.log(x);
91
+ - brick: eo-code-block
92
+ properties:
93
+ language: javascript
94
+ theme: dark-plus
95
+ source: |
96
+ const x = 42;
97
+ console.log(x);
98
+ ```
99
+
100
+ ### Theme Variant Elevo
101
+
102
+ 设置 `themeVariant` 为 `elevo` 以使用 Elevo 风格的代码块样式。
103
+
104
+ ```yaml preview
105
+ brick: eo-code-block
106
+ properties:
107
+ language: javascript
108
+ themeVariant: elevo
109
+ source: |
110
+ const greet = (name) => {
111
+ return `Hello, ${name}!`;
112
+ };
113
+ console.log(greet("world"));
114
+ ```
115
+
116
+ ### Hide Copy Button
117
+
118
+ 设置 `showCopyButton` 为 `false` 隐藏复制按钮。
119
+
120
+ ```yaml preview
121
+ brick: eo-code-block
122
+ properties:
123
+ language: python
124
+ showCopyButton: false
125
+ source: |
126
+ for i in range(10):
127
+ print(i)
128
+ ```
129
+
130
+ ### CSS Parts
131
+
132
+ 通过 CSS Parts 自定义代码块样式,例如为 `pre` 部分设置圆角和边框,为 `copy` 按钮设置颜色。
133
+
134
+ ```yaml preview
135
+ - brick: eo-code-block
136
+ properties:
137
+ style:
138
+ "--part-pre-border-radius": "8px"
139
+ language: typescript
140
+ source: |
141
+ interface User {
142
+ name: string;
143
+ age: number;
144
+ }
145
+ const user: User = { name: "Alice", age: 30 };
15
146
  ```
@@ -0,0 +1,146 @@
1
+ ---
2
+ tagName: eo-code-block
3
+ displayName: WrappedEoCodeBlock
4
+ description: 代码块展示构件,基于 Shiki 进行语法高亮,支持多种编程语言、亮色/暗色主题自动切换及复制功能。
5
+ category: presentational
6
+ source: "@next-bricks/presentational"
7
+ ---
8
+
9
+ # WrappedEoCodeBlock
10
+
11
+ > 代码块展示构件,基于 Shiki 进行语法高亮,支持多种编程语言、亮色/暗色主题自动切换及复制功能。
12
+
13
+ ## 导入
14
+
15
+ ```tsx
16
+ import { WrappedEoCodeBlock } from "@easyops/wrapped-components";
17
+ ```
18
+
19
+ ## Props
20
+
21
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
22
+ | -------------- | --------------------------------------- | ---- | -------- | -------------------------------------------------------------- |
23
+ | language | `string` | 否 | - | 代码语言,用于语法高亮,例如 `javascript`、`python`、`yaml` 等 |
24
+ | source | `string` | 否 | - | 代码内容字符串 |
25
+ | theme | `"auto" \| "light-plus" \| "dark-plus"` | 否 | `"auto"` | 代码高亮主题。`auto` 跟随系统主题自动切换亮色/暗色 |
26
+ | themeVariant | `"default" \| "elevo"` | 否 | - | 主题变体,影响代码块的整体样式风格 |
27
+ | showCopyButton | `boolean` | 否 | `true` | 是否展示复制按钮 |
28
+
29
+ ## CSS Parts
30
+
31
+ | 名称 | 说明 |
32
+ | ------- | --------------------------- |
33
+ | pre | 包裹代码内容的 `<pre>` 元素 |
34
+ | copy | 复制按钮 |
35
+ | mermaid | Mermaid 图表 |
36
+ | wrapper | code-wrapper 构件 |
37
+
38
+ ## Examples
39
+
40
+ ### Basic
41
+
42
+ 展示代码块的基本用法,通过 `language` 和 `source` 属性渲染带语法高亮的代码。
43
+
44
+ ```tsx
45
+ <WrappedEoCodeBlock
46
+ language="javascript"
47
+ source={`function greet(name) {
48
+ console.log("Hello, " + name + "!");
49
+ }
50
+ greet("world");`}
51
+ />
52
+ ```
53
+
54
+ ### Multiple Languages
55
+
56
+ 展示对不同编程语言的语法高亮支持,包括 Python、YAML 和 Shell。
57
+
58
+ ```tsx
59
+ <>
60
+ <WrappedEoCodeBlock
61
+ language="python"
62
+ source={`def greet(name):
63
+ print(f"Hello, {name}!")
64
+
65
+ greet("world")`}
66
+ />
67
+ <WrappedEoCodeBlock
68
+ language="yaml"
69
+ source={`name: Alice
70
+ age: 30
71
+ hobbies:
72
+ - reading
73
+ - coding`}
74
+ />
75
+ <WrappedEoCodeBlock
76
+ language="shell"
77
+ source={`echo "Hello, world!"
78
+ ls -la /tmp`}
79
+ />
80
+ </>
81
+ ```
82
+
83
+ ### Theme
84
+
85
+ 通过 `theme` 属性指定代码高亮主题,支持 `light-plus`(亮色)、`dark-plus`(暗色)和 `auto`(跟随系统)。
86
+
87
+ ```tsx
88
+ <>
89
+ <WrappedEoCodeBlock
90
+ language="javascript"
91
+ theme="light-plus"
92
+ source={`const x = 42;
93
+ console.log(x);`}
94
+ />
95
+ <WrappedEoCodeBlock
96
+ language="javascript"
97
+ theme="dark-plus"
98
+ source={`const x = 42;
99
+ console.log(x);`}
100
+ />
101
+ </>
102
+ ```
103
+
104
+ ### Theme Variant Elevo
105
+
106
+ 设置 `themeVariant` 为 `elevo` 以使用 Elevo 风格的代码块样式。
107
+
108
+ ```tsx
109
+ <WrappedEoCodeBlock
110
+ language="javascript"
111
+ themeVariant="elevo"
112
+ source={`const greet = (name) => {
113
+ return \`Hello, \${name}!\`;
114
+ };
115
+ console.log(greet("world"));`}
116
+ />
117
+ ```
118
+
119
+ ### Hide Copy Button
120
+
121
+ 设置 `showCopyButton` 为 `false` 隐藏复制按钮。
122
+
123
+ ```tsx
124
+ <WrappedEoCodeBlock
125
+ language="python"
126
+ showCopyButton={false}
127
+ source={`for i in range(10):
128
+ print(i)`}
129
+ />
130
+ ```
131
+
132
+ ### CSS Parts
133
+
134
+ 通过 CSS Parts 自定义代码块样式,例如为 `pre` 部分设置圆角和边框,为 `copy` 按钮设置颜色。
135
+
136
+ ```tsx
137
+ <WrappedEoCodeBlock
138
+ language="typescript"
139
+ style={{ "--part-pre-border-radius": "8px" } as React.CSSProperties}
140
+ source={`interface User {
141
+ name: string;
142
+ age: number;
143
+ }
144
+ const user: User = { name: "Alice", age: 30 };`}
145
+ />
146
+ ```
@@ -1,9 +1,34 @@
1
- 代码展示
1
+ ---
2
+ tagName: eo-code-display
3
+ displayName: WrappedEoCodeDisplay
4
+ description: 代码展示
5
+ category: display-component
6
+ source: "@next-bricks/presentational"
7
+ ---
8
+
9
+ # eo-code-display
10
+
11
+ > 代码展示
12
+
13
+ ## Props
14
+
15
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
16
+ | ---------------- | --------- | ---- | ------ | ------------------------------------------------------------------------------ |
17
+ | value | `string` | - | `""` | 代码内容 |
18
+ | language | `string` | - | - | 语言,具体查阅 [Supported languages](https://prismjs.com/#supported-languages) |
19
+ | hideLineNumber | `boolean` | - | - | 是否隐藏行号 |
20
+ | maxLines | `number` | - | - | 最大行数 |
21
+ | minLines | `number` | - | - | 最小行数 |
22
+ | showCopyButton | `boolean` | - | `true` | 是否显示复制按钮 |
23
+ | showExportButton | `boolean` | - | - | 是否显示导出按钮 |
24
+ | exportFileName | `string` | - | - | 导出的文件名 |
2
25
 
3
26
  ## Examples
4
27
 
5
28
  ### Basic
6
29
 
30
+ 基本用法,展示一段 JavaScript 代码并显示行号。
31
+
7
32
  ```yaml preview
8
33
  - brick: eo-code-display
9
34
  properties:
@@ -17,3 +42,74 @@
17
42
  };
18
43
  }
19
44
  ```
45
+
46
+ ### 隐藏行号
47
+
48
+ 隐藏代码行号显示。
49
+
50
+ ```yaml preview
51
+ - brick: eo-code-display
52
+ properties:
53
+ language: javascript
54
+ hideLineNumber: true
55
+ value: |
56
+ const greeting = "Hello, World!";
57
+ console.log(greeting);
58
+ ```
59
+
60
+ ### 限制行数
61
+
62
+ 通过 maxLines 和 minLines 控制代码展示区域的行数范围。
63
+
64
+ ```yaml preview
65
+ - brick: eo-code-display
66
+ properties:
67
+ language: javascript
68
+ maxLines: 5
69
+ minLines: 3
70
+ value: |
71
+ const a = 1;
72
+ const b = 2;
73
+ const c = 3;
74
+ const d = 4;
75
+ const e = 5;
76
+ const f = 6;
77
+ const g = 7;
78
+ const h = 8;
79
+ ```
80
+
81
+ ### 工具栏按钮
82
+
83
+ 显示复制和导出按钮,支持将代码复制到剪贴板或导出为文件。
84
+
85
+ ```yaml preview
86
+ - brick: eo-code-display
87
+ properties:
88
+ language: json
89
+ showCopyButton: true
90
+ showExportButton: true
91
+ exportFileName: config.json
92
+ value: |
93
+ {
94
+ "name": "my-app",
95
+ "version": "1.0.0",
96
+ "description": "A sample application"
97
+ }
98
+ ```
99
+
100
+ ### 隐藏复制按钮
101
+
102
+ 将 showCopyButton 设置为 false 隐藏默认的复制按钮。
103
+
104
+ ```yaml preview
105
+ - brick: eo-code-display
106
+ properties:
107
+ language: css
108
+ showCopyButton: false
109
+ value: |
110
+ .container {
111
+ display: flex;
112
+ justify-content: center;
113
+ align-items: center;
114
+ }
115
+ ```
@@ -0,0 +1,116 @@
1
+ ---
2
+ tagName: eo-code-display
3
+ displayName: WrappedEoCodeDisplay
4
+ description: 代码展示
5
+ category: display-component
6
+ source: "@next-bricks/presentational"
7
+ ---
8
+
9
+ # WrappedEoCodeDisplay
10
+
11
+ > 代码展示
12
+
13
+ ## 导入
14
+
15
+ ```tsx
16
+ import { WrappedEoCodeDisplay } from "@easyops/wrapped-components";
17
+ ```
18
+
19
+ ## Props
20
+
21
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
22
+ | ---------------- | --------- | ---- | ------ | ------------------------------------------------------------------------------ |
23
+ | value | `string` | - | `""` | 代码内容 |
24
+ | language | `string` | - | - | 语言,具体查阅 [Supported languages](https://prismjs.com/#supported-languages) |
25
+ | hideLineNumber | `boolean` | - | - | 是否隐藏行号 |
26
+ | maxLines | `number` | - | - | 最大行数 |
27
+ | minLines | `number` | - | - | 最小行数 |
28
+ | showCopyButton | `boolean` | - | `true` | 是否显示复制按钮 |
29
+ | showExportButton | `boolean` | - | - | 是否显示导出按钮 |
30
+ | exportFileName | `string` | - | - | 导出的文件名 |
31
+
32
+ ## Examples
33
+
34
+ ### Basic
35
+
36
+ 基本用法,展示一段 JavaScript 代码并显示行号。
37
+
38
+ ```tsx
39
+ <WrappedEoCodeDisplay
40
+ language="javascript"
41
+ value={`function onSubmit (e) {
42
+ const fn = () => 123;
43
+ const job = {
44
+ title: 'Developer',
45
+ company: 'Facebook'
46
+ };
47
+ }`}
48
+ />
49
+ ```
50
+
51
+ ### 隐藏行号
52
+
53
+ 隐藏代码行号显示。
54
+
55
+ ```tsx
56
+ <WrappedEoCodeDisplay
57
+ language="javascript"
58
+ hideLineNumber={true}
59
+ value={`const greeting = "Hello, World!";
60
+ console.log(greeting);`}
61
+ />
62
+ ```
63
+
64
+ ### 限制行数
65
+
66
+ 通过 maxLines 和 minLines 控制代码展示区域的行数范围。
67
+
68
+ ```tsx
69
+ <WrappedEoCodeDisplay
70
+ language="javascript"
71
+ maxLines={5}
72
+ minLines={3}
73
+ value={`const a = 1;
74
+ const b = 2;
75
+ const c = 3;
76
+ const d = 4;
77
+ const e = 5;
78
+ const f = 6;
79
+ const g = 7;
80
+ const h = 8;`}
81
+ />
82
+ ```
83
+
84
+ ### 工具栏按钮
85
+
86
+ 显示复制和导出按钮,支持将代码复制到剪贴板或导出为文件。
87
+
88
+ ```tsx
89
+ <WrappedEoCodeDisplay
90
+ language="json"
91
+ showCopyButton={true}
92
+ showExportButton={true}
93
+ exportFileName="config.json"
94
+ value={`{
95
+ "name": "my-app",
96
+ "version": "1.0.0",
97
+ "description": "A sample application"
98
+ }`}
99
+ />
100
+ ```
101
+
102
+ ### 隐藏复制按钮
103
+
104
+ 将 showCopyButton 设置为 false 隐藏默认的复制按钮。
105
+
106
+ ```tsx
107
+ <WrappedEoCodeDisplay
108
+ language="css"
109
+ showCopyButton={false}
110
+ value={`.container {
111
+ display: flex;
112
+ justify-content: center;
113
+ align-items: center;
114
+ }`}
115
+ />
116
+ ```
@@ -0,0 +1,108 @@
1
+ ---
2
+ tagName: presentational.code-wrapper
3
+ displayName: WrappedPresentationalCodeWrapper
4
+ description: 代码内容包裹容器,提供统一的代码展示结构并支持一键复制功能。
5
+ category: ""
6
+ source: "@next-bricks/presentational"
7
+ ---
8
+
9
+ # presentational.code-wrapper
10
+
11
+ > 代码内容包裹容器,提供统一的代码展示结构并支持一键复制功能。
12
+
13
+ ## Props
14
+
15
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
16
+ | -------------- | ------------------------------------------------------- | ---- | ------ | ----------------------------------------------------------------- |
17
+ | preProps | `React.PropsWithChildren<JSX.IntrinsicElements["pre"]>` | 否 | - | 传递给 `<pre>` 元素的额外属性,例如 `className`、`style` 等 |
18
+ | showCopyButton | `boolean` | 否 | `true` | 是否展示复制按钮 |
19
+ | themeVariant | `"default" \| "elevo"` | 否 | - | 主题变体,影响复制按钮等内部元素的样式风格。`elevo` 为 Elevo 风格 |
20
+
21
+ ## CSS Parts
22
+
23
+ | 名称 | 说明 |
24
+ | ---- | --------------------------- |
25
+ | pre | 包裹代码内容的 `<pre>` 元素 |
26
+ | copy | 复制按钮 |
27
+
28
+ ## Examples
29
+
30
+ ### Basic
31
+
32
+ 展示代码包裹容器的基本用法,将代码内容放入 `<code>` 子节点,默认展示复制按钮。
33
+
34
+ ```yaml preview
35
+ brick: presentational.code-wrapper
36
+ properties:
37
+ preProps:
38
+ children:
39
+ - brick: code
40
+ properties:
41
+ textContent: "const greeting = 'Hello, World!';"
42
+ ```
43
+
44
+ ### 隐藏复制按钮
45
+
46
+ 设置 `showCopyButton` 为 `false` 可隐藏右上角的复制按钮。
47
+
48
+ ```yaml preview
49
+ brick: presentational.code-wrapper
50
+ properties:
51
+ showCopyButton: false
52
+ preProps:
53
+ children:
54
+ - brick: code
55
+ properties:
56
+ textContent: "const greeting = 'Hello, World!';"
57
+ ```
58
+
59
+ ### Elevo 主题变体
60
+
61
+ 设置 `themeVariant` 为 `"elevo"` 使复制按钮采用 Elevo 主题样式。
62
+
63
+ ```yaml preview
64
+ brick: presentational.code-wrapper
65
+ properties:
66
+ themeVariant: elevo
67
+ preProps:
68
+ children:
69
+ - brick: code
70
+ properties:
71
+ textContent: "const greeting = 'Hello, World!';"
72
+ ```
73
+
74
+ ### 自定义 pre 元素样式
75
+
76
+ 通过 `preProps` 的 `style` 字段为 `<pre>` 元素设置自定义内联样式。
77
+
78
+ ```yaml preview
79
+ brick: presentational.code-wrapper
80
+ properties:
81
+ preProps:
82
+ style:
83
+ background: "#1e1e1e"
84
+ color: "#d4d4d4"
85
+ padding: 16px
86
+ borderRadius: 8px
87
+ children:
88
+ - brick: code
89
+ properties:
90
+ textContent: "const greeting = 'Hello, World!';"
91
+ ```
92
+
93
+ ### 自定义 CSS Parts
94
+
95
+ 通过 `pre` 和 `copy` CSS Parts 对内部元素进行样式定制,例如修改 `<pre>` 背景色和圆角、调整复制按钮颜色。
96
+
97
+ ```yaml preview
98
+ brick: presentational.code-wrapper
99
+ properties:
100
+ style:
101
+ "--part-pre-border-radius": "8px"
102
+ "--part-copy-color": "var(--color-brand)"
103
+ preProps:
104
+ children:
105
+ - brick: code
106
+ properties:
107
+ textContent: "const greeting = 'Hello, World!';"
108
+ ```