@incremark/vue 0.0.1

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/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 wangyishuai
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
package/README.md ADDED
@@ -0,0 +1,120 @@
1
+ # @incremark/vue
2
+
3
+ Incremark 的 Vue 3 集成库。
4
+
5
+ ## 特性
6
+
7
+ - 📦 **开箱即用** - 提供 `useIncremark` composable 和 `<Incremark>` 组件
8
+ - 🎨 **可定制** - 支持自定义渲染组件
9
+ - ⚡ **高性能** - 使用 `shallowRef` 和 `markRaw` 优化性能
10
+ - 🔧 **DevTools** - 内置开发者工具
11
+
12
+ ## 安装
13
+
14
+ ```bash
15
+ pnpm add @incremark/core @incremark/vue
16
+ ```
17
+
18
+ ## 快速开始
19
+
20
+ ```vue
21
+ <script setup>
22
+ import { useIncremark, Incremark } from '@incremark/vue'
23
+
24
+ const { blocks, append, finalize, reset } = useIncremark({ gfm: true })
25
+
26
+ async function handleStream(stream) {
27
+ reset()
28
+ for await (const chunk of stream) {
29
+ append(chunk)
30
+ }
31
+ finalize()
32
+ }
33
+ </script>
34
+
35
+ <template>
36
+ <button @click="handleStream">开始</button>
37
+ <Incremark :blocks="blocks" />
38
+ </template>
39
+ ```
40
+
41
+ ## API
42
+
43
+ ### useIncremark(options)
44
+
45
+ 核心 composable。
46
+
47
+ **返回值:**
48
+
49
+ | 属性 | 类型 | 说明 |
50
+ |------|------|------|
51
+ | `markdown` | `Ref<string>` | 完整 Markdown |
52
+ | `blocks` | `ComputedRef<Block[]>` | 所有块 |
53
+ | `completedBlocks` | `ShallowRef<Block[]>` | 已完成块 |
54
+ | `pendingBlocks` | `ShallowRef<Block[]>` | 待处理块 |
55
+ | `append` | `Function` | 追加内容 |
56
+ | `finalize` | `Function` | 完成解析 |
57
+ | `reset` | `Function` | 重置状态 |
58
+
59
+ ### useDevTools(incremark)
60
+
61
+ 启用 DevTools。
62
+
63
+ ```ts
64
+ const incremark = useIncremark()
65
+ useDevTools(incremark)
66
+ ```
67
+
68
+ ### \<Incremark\>
69
+
70
+ 渲染组件。
71
+
72
+ ```vue
73
+ <Incremark
74
+ :blocks="blocks"
75
+ :components="{ heading: MyHeading }"
76
+ />
77
+ ```
78
+
79
+ ## 自定义组件
80
+
81
+ ```vue
82
+ <script setup>
83
+ import { useIncremark, Incremark } from '@incremark/vue'
84
+ import MyCode from './MyCode.vue'
85
+
86
+ const { blocks } = useIncremark()
87
+ </script>
88
+
89
+ <template>
90
+ <Incremark
91
+ :blocks="blocks"
92
+ :components="{ code: MyCode }"
93
+ />
94
+ </template>
95
+ ```
96
+
97
+ ## 数学公式支持
98
+
99
+ ```bash
100
+ pnpm add micromark-extension-math mdast-util-math katex
101
+ ```
102
+
103
+ ```vue
104
+ <script setup>
105
+ import { useIncremark } from '@incremark/vue'
106
+ import { math } from 'micromark-extension-math'
107
+ import { mathFromMarkdown } from 'mdast-util-math'
108
+ import 'katex/dist/katex.min.css'
109
+
110
+ const { blocks } = useIncremark({
111
+ extensions: [math()],
112
+ mdastExtensions: [mathFromMarkdown()]
113
+ })
114
+ </script>
115
+ ```
116
+
117
+ ## License
118
+
119
+ MIT
120
+
package/dist/index.css ADDED
@@ -0,0 +1,348 @@
1
+ /* sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkMath.vue?type=style&index=0 */
2
+ .incremark-math-inline[data-v-6146c361] {
3
+ display: inline;
4
+ }
5
+ .incremark-math-block[data-v-6146c361] {
6
+ margin: 1em 0;
7
+ padding: 1em;
8
+ overflow-x: auto;
9
+ text-align: center;
10
+ }
11
+ .math-source[data-v-6146c361] {
12
+ background: #f3f4f6;
13
+ padding: 0.1em 0.3em;
14
+ border-radius: 3px;
15
+ font-size: 0.9em;
16
+ color: #6b7280;
17
+ }
18
+ .math-source-block[data-v-6146c361] {
19
+ margin: 0;
20
+ padding: 1em;
21
+ background: #f3f4f6;
22
+ border-radius: 6px;
23
+ text-align: left;
24
+ }
25
+ .math-source-block code[data-v-6146c361] {
26
+ font-family: "Fira Code", monospace;
27
+ font-size: 0.9em;
28
+ color: #374151;
29
+ }
30
+ .math-rendered[data-v-6146c361] .katex {
31
+ font-size: 1.1em;
32
+ }
33
+ .math-rendered[data-v-6146c361] .katex-display {
34
+ margin: 0;
35
+ overflow-x: auto;
36
+ overflow-y: hidden;
37
+ }
38
+
39
+ /* sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkInline.vue?type=style&index=0 */
40
+ .incremark-inline-code {
41
+ padding: 0.2em 0.4em;
42
+ background: rgba(0, 0, 0, 0.06);
43
+ border-radius: 4px;
44
+ font-family:
45
+ "Fira Code",
46
+ "SF Mono",
47
+ Consolas,
48
+ monospace;
49
+ font-size: 0.9em;
50
+ }
51
+
52
+ /* sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkHeading.vue?type=style&index=0 */
53
+ .incremark-heading[data-v-56c8779f] {
54
+ margin: 0.5em 0;
55
+ font-weight: 600;
56
+ line-height: 1.3;
57
+ }
58
+ h1[data-v-56c8779f] {
59
+ font-size: 2em;
60
+ border-bottom: 1px solid #eee;
61
+ padding-bottom: 0.3em;
62
+ }
63
+ h2[data-v-56c8779f] {
64
+ font-size: 1.5em;
65
+ }
66
+ h3[data-v-56c8779f] {
67
+ font-size: 1.25em;
68
+ }
69
+ h4[data-v-56c8779f] {
70
+ font-size: 1em;
71
+ }
72
+ h5[data-v-56c8779f] {
73
+ font-size: 0.875em;
74
+ }
75
+ h6[data-v-56c8779f] {
76
+ font-size: 0.85em;
77
+ color: #666;
78
+ }
79
+
80
+ /* sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkParagraph.vue?type=style&index=0 */
81
+ .incremark-paragraph[data-v-6fa83031] {
82
+ margin: 0.75em 0;
83
+ line-height: 1.6;
84
+ }
85
+
86
+ /* sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkCode.vue?type=style&index=0 */
87
+ .incremark-mermaid[data-v-c48b1022] {
88
+ margin: 1em 0;
89
+ border-radius: 8px;
90
+ overflow: hidden;
91
+ background: #1a1a2e;
92
+ }
93
+ .mermaid-header[data-v-c48b1022] {
94
+ display: flex;
95
+ justify-content: space-between;
96
+ align-items: center;
97
+ padding: 8px 16px;
98
+ background: #16213e;
99
+ border-bottom: 1px solid #0f3460;
100
+ font-size: 12px;
101
+ }
102
+ .mermaid-actions[data-v-c48b1022] {
103
+ display: flex;
104
+ gap: 8px;
105
+ }
106
+ .view-toggle[data-v-c48b1022] {
107
+ padding: 4px 10px;
108
+ border: 1px solid #0f3460;
109
+ border-radius: 6px;
110
+ background: transparent;
111
+ color: #8b949e;
112
+ font-size: 12px;
113
+ cursor: pointer;
114
+ transition: all 0.2s;
115
+ }
116
+ .view-toggle[data-v-c48b1022]:hover:not(:disabled) {
117
+ background: #0f3460;
118
+ color: #e0e0e0;
119
+ }
120
+ .view-toggle[data-v-c48b1022]:disabled {
121
+ opacity: 0.5;
122
+ cursor: not-allowed;
123
+ }
124
+ .mermaid-content[data-v-c48b1022] {
125
+ padding: 16px;
126
+ min-height: 100px;
127
+ }
128
+ .mermaid-loading[data-v-c48b1022] {
129
+ color: #8b949e;
130
+ font-size: 14px;
131
+ }
132
+ .mermaid-source-code[data-v-c48b1022] {
133
+ margin: 0;
134
+ padding: 12px;
135
+ background: #0d1117;
136
+ border-radius: 6px;
137
+ color: #c9d1d9;
138
+ font-family:
139
+ "Fira Code",
140
+ "SF Mono",
141
+ monospace;
142
+ font-size: 13px;
143
+ line-height: 1.5;
144
+ white-space: pre-wrap;
145
+ overflow-x: auto;
146
+ }
147
+ .mermaid-svg[data-v-c48b1022] {
148
+ overflow-x: auto;
149
+ }
150
+ .mermaid-svg[data-v-c48b1022] svg {
151
+ max-width: 100%;
152
+ height: auto;
153
+ }
154
+ .incremark-code[data-v-c48b1022] {
155
+ margin: 1em 0;
156
+ border-radius: 8px;
157
+ overflow: hidden;
158
+ background: #24292e;
159
+ }
160
+ .code-header[data-v-c48b1022] {
161
+ display: flex;
162
+ justify-content: space-between;
163
+ align-items: center;
164
+ padding: 8px 16px;
165
+ background: #1f2428;
166
+ border-bottom: 1px solid #30363d;
167
+ font-size: 12px;
168
+ }
169
+ .language[data-v-c48b1022] {
170
+ color: #8b949e;
171
+ text-transform: uppercase;
172
+ font-weight: 500;
173
+ letter-spacing: 0.5px;
174
+ }
175
+ .copy-btn[data-v-c48b1022] {
176
+ padding: 4px 12px;
177
+ border: 1px solid #30363d;
178
+ border-radius: 6px;
179
+ background: transparent;
180
+ color: #8b949e;
181
+ font-size: 12px;
182
+ cursor: pointer;
183
+ transition: all 0.2s;
184
+ }
185
+ .copy-btn[data-v-c48b1022]:hover {
186
+ background: #30363d;
187
+ color: #c9d1d9;
188
+ }
189
+ .code-content[data-v-c48b1022] {
190
+ overflow-x: auto;
191
+ }
192
+ .code-loading[data-v-c48b1022] {
193
+ opacity: 0.7;
194
+ }
195
+ .shiki-wrapper[data-v-c48b1022] pre {
196
+ margin: 0;
197
+ padding: 16px;
198
+ background: transparent !important;
199
+ overflow-x: auto;
200
+ }
201
+ .shiki-wrapper[data-v-c48b1022] code {
202
+ font-family:
203
+ "Fira Code",
204
+ "SF Mono",
205
+ "Monaco",
206
+ "Consolas",
207
+ monospace;
208
+ font-size: 14px;
209
+ line-height: 1.6;
210
+ }
211
+ .code-fallback[data-v-c48b1022],
212
+ .code-loading pre[data-v-c48b1022] {
213
+ margin: 0;
214
+ padding: 16px;
215
+ overflow-x: auto;
216
+ background: transparent;
217
+ }
218
+ .code-fallback code[data-v-c48b1022],
219
+ .code-loading code[data-v-c48b1022] {
220
+ font-family:
221
+ "Fira Code",
222
+ "SF Mono",
223
+ "Monaco",
224
+ "Consolas",
225
+ monospace;
226
+ font-size: 14px;
227
+ line-height: 1.6;
228
+ color: #c9d1d9;
229
+ }
230
+
231
+ /* sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkList.vue?type=style&index=0 */
232
+ .incremark-list[data-v-0778ccea] {
233
+ margin: 0.75em 0;
234
+ padding-left: 2em;
235
+ }
236
+ .incremark-list.task-list[data-v-0778ccea] {
237
+ list-style: none;
238
+ padding-left: 0;
239
+ }
240
+ .incremark-list-item[data-v-0778ccea] {
241
+ margin: 0.25em 0;
242
+ line-height: 1.6;
243
+ }
244
+ .task-item[data-v-0778ccea] {
245
+ list-style: none;
246
+ }
247
+ .task-label[data-v-0778ccea] {
248
+ display: flex;
249
+ align-items: flex-start;
250
+ gap: 0.5em;
251
+ cursor: default;
252
+ }
253
+ .checkbox[data-v-0778ccea] {
254
+ margin-top: 0.3em;
255
+ flex-shrink: 0;
256
+ }
257
+ .task-content[data-v-0778ccea] {
258
+ flex: 1;
259
+ }
260
+
261
+ /* sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkTable.vue?type=style&index=0 */
262
+ .incremark-table-wrapper[data-v-7aea7ba6] {
263
+ overflow-x: auto;
264
+ margin: 1em 0;
265
+ }
266
+ .incremark-table[data-v-7aea7ba6] {
267
+ width: 100%;
268
+ border-collapse: collapse;
269
+ font-size: 14px;
270
+ }
271
+ .incremark-table th[data-v-7aea7ba6],
272
+ .incremark-table td[data-v-7aea7ba6] {
273
+ border: 1px solid #ddd;
274
+ padding: 10px 14px;
275
+ }
276
+ .incremark-table th[data-v-7aea7ba6] {
277
+ background: #f8f9fa;
278
+ font-weight: 600;
279
+ }
280
+ .incremark-table tr[data-v-7aea7ba6]:nth-child(even) {
281
+ background: #fafafa;
282
+ }
283
+ .incremark-table tr[data-v-7aea7ba6]:hover {
284
+ background: #f0f0f0;
285
+ }
286
+
287
+ /* sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkBlockquote.vue?type=style&index=0 */
288
+ .incremark-blockquote[data-v-67363f13] {
289
+ margin: 1em 0;
290
+ padding: 0.5em 1em;
291
+ border-left: 4px solid #3b82f6;
292
+ background: #f0f7ff;
293
+ border-radius: 0 4px 4px 0;
294
+ }
295
+ .incremark-blockquote[data-v-67363f13] p {
296
+ margin: 0.5em 0;
297
+ }
298
+ .incremark-blockquote[data-v-67363f13] p:first-child {
299
+ margin-top: 0;
300
+ }
301
+ .incremark-blockquote[data-v-67363f13] p:last-child {
302
+ margin-bottom: 0;
303
+ }
304
+
305
+ /* sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkThematicBreak.vue?type=style&index=0 */
306
+ .incremark-hr[data-v-cb316429] {
307
+ margin: 2em 0;
308
+ border: none;
309
+ border-top: 2px solid #e5e5e5;
310
+ }
311
+
312
+ /* sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkDefault.vue?type=style&index=0 */
313
+ .incremark-default[data-v-5542d517] {
314
+ margin: 0.5em 0;
315
+ padding: 10px;
316
+ background: #fff3cd;
317
+ border: 1px solid #ffc107;
318
+ border-radius: 4px;
319
+ font-size: 12px;
320
+ }
321
+ .type-badge[data-v-5542d517] {
322
+ display: inline-block;
323
+ padding: 2px 8px;
324
+ background: #ffc107;
325
+ border-radius: 4px;
326
+ font-weight: 600;
327
+ margin-bottom: 8px;
328
+ }
329
+ pre[data-v-5542d517] {
330
+ margin: 0;
331
+ white-space: pre-wrap;
332
+ word-break: break-all;
333
+ font-size: 11px;
334
+ }
335
+
336
+ /* sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/Incremark.vue?type=style&index=0 */
337
+ .incremark-block.incremark-show-status.incremark-pending[data-v-5966b843] {
338
+ border-left: 3px solid #a855f7;
339
+ padding-left: 12px;
340
+ opacity: 0.8;
341
+ }
342
+ .incremark-fade-enter-active[data-v-5966b843] {
343
+ transition: opacity 0.2s ease-out;
344
+ }
345
+ .incremark-fade-enter-from[data-v-5966b843] {
346
+ opacity: 0;
347
+ }
348
+ /*# sourceMappingURL=index.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkMath.vue?type=style&index=0","sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkInline.vue?type=style&index=0","sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkHeading.vue?type=style&index=0","sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkParagraph.vue?type=style&index=0","sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkCode.vue?type=style&index=0","sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkList.vue?type=style&index=0","sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkTable.vue?type=style&index=0","sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkBlockquote.vue?type=style&index=0","sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkThematicBreak.vue?type=style&index=0","sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkDefault.vue?type=style&index=0","sfc-style:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/Incremark.vue?type=style&index=0"],"sourcesContent":["\n.incremark-math-inline[data-v-6146c361] {\n display: inline;\n}\n.incremark-math-block[data-v-6146c361] {\n margin: 1em 0;\n padding: 1em;\n overflow-x: auto;\n text-align: center;\n}\n.math-source[data-v-6146c361] {\n background: #f3f4f6;\n padding: 0.1em 0.3em;\n border-radius: 3px;\n font-size: 0.9em;\n color: #6b7280;\n}\n.math-source-block[data-v-6146c361] {\n margin: 0;\n padding: 1em;\n background: #f3f4f6;\n border-radius: 6px;\n text-align: left;\n}\n.math-source-block code[data-v-6146c361] {\n font-family: 'Fira Code', monospace;\n font-size: 0.9em;\n color: #374151;\n}\n.math-rendered[data-v-6146c361] .katex {\n font-size: 1.1em;\n}\n.math-rendered[data-v-6146c361] .katex-display {\n margin: 0;\n overflow-x: auto;\n overflow-y: hidden;\n}\n","\n.incremark-inline-code {\n padding: 0.2em 0.4em;\n background: rgba(0, 0, 0, 0.06);\n border-radius: 4px;\n font-family: 'Fira Code', 'SF Mono', Consolas, monospace;\n font-size: 0.9em;\n}\n","\n.incremark-heading[data-v-56c8779f] {\n margin: 0.5em 0;\n font-weight: 600;\n line-height: 1.3;\n}\nh1[data-v-56c8779f] { font-size: 2em; border-bottom: 1px solid #eee; padding-bottom: 0.3em;\n}\nh2[data-v-56c8779f] { font-size: 1.5em;\n}\nh3[data-v-56c8779f] { font-size: 1.25em;\n}\nh4[data-v-56c8779f] { font-size: 1em;\n}\nh5[data-v-56c8779f] { font-size: 0.875em;\n}\nh6[data-v-56c8779f] { font-size: 0.85em; color: #666;\n}\n","\n.incremark-paragraph[data-v-6fa83031] {\n margin: 0.75em 0;\n line-height: 1.6;\n}\n","\n/* Mermaid 样式 */\n.incremark-mermaid[data-v-c48b1022] {\n margin: 1em 0;\n border-radius: 8px;\n overflow: hidden;\n background: #1a1a2e;\n}\n.mermaid-header[data-v-c48b1022] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 16px;\n background: #16213e;\n border-bottom: 1px solid #0f3460;\n font-size: 12px;\n}\n.mermaid-actions[data-v-c48b1022] {\n display: flex;\n gap: 8px;\n}\n.view-toggle[data-v-c48b1022] {\n padding: 4px 10px;\n border: 1px solid #0f3460;\n border-radius: 6px;\n background: transparent;\n color: #8b949e;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.view-toggle[data-v-c48b1022]:hover:not(:disabled) {\n background: #0f3460;\n color: #e0e0e0;\n}\n.view-toggle[data-v-c48b1022]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.mermaid-content[data-v-c48b1022] {\n padding: 16px;\n min-height: 100px;\n}\n.mermaid-loading[data-v-c48b1022] {\n color: #8b949e;\n font-size: 14px;\n}\n.mermaid-source-code[data-v-c48b1022] {\n margin: 0;\n padding: 12px;\n background: #0d1117;\n border-radius: 6px;\n color: #c9d1d9;\n font-family: 'Fira Code', 'SF Mono', monospace;\n font-size: 13px;\n line-height: 1.5;\n white-space: pre-wrap;\n overflow-x: auto;\n}\n.mermaid-svg[data-v-c48b1022] {\n overflow-x: auto;\n}\n.mermaid-svg[data-v-c48b1022] svg {\n max-width: 100%;\n height: auto;\n}\n\n/* 代码块样式 */\n.incremark-code[data-v-c48b1022] {\n margin: 1em 0;\n border-radius: 8px;\n overflow: hidden;\n background: #24292e;\n}\n.code-header[data-v-c48b1022] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 16px;\n background: #1f2428;\n border-bottom: 1px solid #30363d;\n font-size: 12px;\n}\n.language[data-v-c48b1022] {\n color: #8b949e;\n text-transform: uppercase;\n font-weight: 500;\n letter-spacing: 0.5px;\n}\n.copy-btn[data-v-c48b1022] {\n padding: 4px 12px;\n border: 1px solid #30363d;\n border-radius: 6px;\n background: transparent;\n color: #8b949e;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.copy-btn[data-v-c48b1022]:hover {\n background: #30363d;\n color: #c9d1d9;\n}\n.code-content[data-v-c48b1022] {\n overflow-x: auto;\n}\n.code-loading[data-v-c48b1022] {\n opacity: 0.7;\n}\n\n/* Shiki 生成的代码样式 */\n.shiki-wrapper[data-v-c48b1022] pre {\n margin: 0;\n padding: 16px;\n background: transparent !important;\n overflow-x: auto;\n}\n.shiki-wrapper[data-v-c48b1022] code {\n font-family: 'Fira Code', 'SF Mono', 'Monaco', 'Consolas', monospace;\n font-size: 14px;\n line-height: 1.6;\n}\n\n/* 回退样式 */\n.code-fallback[data-v-c48b1022],\n.code-loading pre[data-v-c48b1022] {\n margin: 0;\n padding: 16px;\n overflow-x: auto;\n background: transparent;\n}\n.code-fallback code[data-v-c48b1022],\n.code-loading code[data-v-c48b1022] {\n font-family: 'Fira Code', 'SF Mono', 'Monaco', 'Consolas', monospace;\n font-size: 14px;\n line-height: 1.6;\n color: #c9d1d9;\n}\n","\n.incremark-list[data-v-0778ccea] {\n margin: 0.75em 0;\n padding-left: 2em;\n}\n.incremark-list.task-list[data-v-0778ccea] {\n list-style: none;\n padding-left: 0;\n}\n.incremark-list-item[data-v-0778ccea] {\n margin: 0.25em 0;\n line-height: 1.6;\n}\n.task-item[data-v-0778ccea] {\n list-style: none;\n}\n.task-label[data-v-0778ccea] {\n display: flex;\n align-items: flex-start;\n gap: 0.5em;\n cursor: default;\n}\n.checkbox[data-v-0778ccea] {\n margin-top: 0.3em;\n flex-shrink: 0;\n}\n.task-content[data-v-0778ccea] {\n flex: 1;\n}\n","\n.incremark-table-wrapper[data-v-7aea7ba6] {\n overflow-x: auto;\n margin: 1em 0;\n}\n.incremark-table[data-v-7aea7ba6] {\n width: 100%;\n border-collapse: collapse;\n font-size: 14px;\n}\n.incremark-table th[data-v-7aea7ba6],\n.incremark-table td[data-v-7aea7ba6] {\n border: 1px solid #ddd;\n padding: 10px 14px;\n}\n.incremark-table th[data-v-7aea7ba6] {\n background: #f8f9fa;\n font-weight: 600;\n}\n.incremark-table tr[data-v-7aea7ba6]:nth-child(even) {\n background: #fafafa;\n}\n.incremark-table tr[data-v-7aea7ba6]:hover {\n background: #f0f0f0;\n}\n","\n.incremark-blockquote[data-v-67363f13] {\n margin: 1em 0;\n padding: 0.5em 1em;\n border-left: 4px solid #3b82f6;\n background: #f0f7ff;\n border-radius: 0 4px 4px 0;\n}\n.incremark-blockquote[data-v-67363f13] p {\n margin: 0.5em 0;\n}\n.incremark-blockquote[data-v-67363f13] p:first-child {\n margin-top: 0;\n}\n.incremark-blockquote[data-v-67363f13] p:last-child {\n margin-bottom: 0;\n}\n","\n.incremark-hr[data-v-cb316429] {\n margin: 2em 0;\n border: none;\n border-top: 2px solid #e5e5e5;\n}\n","\n.incremark-default[data-v-5542d517] {\n margin: 0.5em 0;\n padding: 10px;\n background: #fff3cd;\n border: 1px solid #ffc107;\n border-radius: 4px;\n font-size: 12px;\n}\n.type-badge[data-v-5542d517] {\n display: inline-block;\n padding: 2px 8px;\n background: #ffc107;\n border-radius: 4px;\n font-weight: 600;\n margin-bottom: 8px;\n}\npre[data-v-5542d517] {\n margin: 0;\n white-space: pre-wrap;\n word-break: break-all;\n font-size: 11px;\n}\n","\n.incremark-block.incremark-show-status.incremark-pending[data-v-5966b843] {\n border-left: 3px solid #a855f7;\n padding-left: 12px;\n opacity: 0.8;\n}\n.incremark-fade-enter-active[data-v-5966b843] {\n transition: opacity 0.2s ease-out;\n}\n.incremark-fade-enter-from[data-v-5966b843] {\n opacity: 0;\n}\n"],"mappings":"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","names":[]}