@cocoar/vue-markdown 1.13.0-beta.6 → 1.13.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cocoar/vue-markdown",
3
- "version": "1.13.0-beta.6",
4
- "description": "Markdown viewer component for Vue 3 with Cocoar Design System styling",
3
+ "version": "1.13.1",
4
+ "description": "Markdown viewer + shared rendering registry for Vue 3. The viewer (`<CoarMarkdown>`) and the editor (`@cocoar/vue-markdown-editor`) consume the same component map so a code block, table, etc. looks identical in both contexts.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -14,7 +14,9 @@
14
14
  "vue",
15
15
  "vue3",
16
16
  "markdown",
17
- "viewer"
17
+ "viewer",
18
+ "renderer",
19
+ "registry"
18
20
  ],
19
21
  "type": "module",
20
22
  "sideEffects": [
@@ -27,10 +29,12 @@
27
29
  ".": {
28
30
  "import": "./dist/index.js",
29
31
  "types": "./dist/index.d.ts"
30
- }
32
+ },
33
+ "./styles": "./styles/markdown-blocks.css"
31
34
  },
32
35
  "files": [
33
- "dist"
36
+ "dist",
37
+ "styles"
34
38
  ],
35
39
  "scripts": {
36
40
  "build": "vite build",
@@ -38,10 +42,10 @@
38
42
  "lint": "eslint src/"
39
43
  },
40
44
  "dependencies": {
41
- "@cocoar/vue-markdown-core": "1.13.0-beta.6"
45
+ "@cocoar/vue-markdown-core": "1.13.1"
42
46
  },
43
47
  "peerDependencies": {
44
- "@cocoar/vue-ui": "1.13.0-beta.6",
48
+ "@cocoar/vue-ui": "1.13.1",
45
49
  "vue": "^3.5.0"
46
50
  },
47
51
  "devDependencies": {
@@ -0,0 +1,276 @@
1
+ /*
2
+ * Shared Markdown block + inline styling for `@cocoar/vue-markdown` (viewer)
3
+ * and `@cocoar/vue-markdown-editor`. Defines `.coar-markdown-*` classes that
4
+ * both packages emit so the same Markdown source looks identical when
5
+ * read vs. written.
6
+ *
7
+ * Outer container class: `.coar-markdown` — both viewer and editor wrap their
8
+ * content in a div carrying this class. The class establishes the
9
+ * `--coar-markdown-*` design-token scope used by all child rules.
10
+ *
11
+ * Code blocks (CoarCodeBlock) and tables (CoarTable) bring their own styling
12
+ * via the underlying Cocoar UI components. The rules here target the *plain*
13
+ * fallbacks and the surrounding margins / typography only.
14
+ *
15
+ * Import once at app entry:
16
+ *
17
+ * @import "@cocoar/vue-markdown/styles";
18
+ */
19
+
20
+ .coar-markdown {
21
+ display: block;
22
+
23
+ /* Component-level theme hooks — derived from Cocoar tokens. */
24
+ --coar-markdown-text: var(--coar-text-neutral-primary);
25
+ --coar-markdown-link: var(--coar-text-brand-primary, var(--coar-text-neutral-primary));
26
+ --coar-markdown-muted-text: var(--coar-text-neutral-tertiary);
27
+ --coar-markdown-border: var(--coar-border-neutral-tertiary);
28
+ --coar-markdown-surface: var(--coar-background-neutral-primary);
29
+ --coar-markdown-surface-muted: var(
30
+ --coar-background-neutral-tertiary,
31
+ var(--coar-background-neutral-primary)
32
+ );
33
+ --coar-markdown-radius: var(--coar-radius-xs);
34
+ --coar-markdown-space-1: var(--coar-spacing-s, 0.5rem);
35
+ --coar-markdown-space-2: var(--coar-spacing-m, 1rem);
36
+ --coar-markdown-heading-block-start: var(--coar-spacing-xxxl, 4rem);
37
+
38
+ color: var(--coar-markdown-text);
39
+ }
40
+
41
+ .coar-markdown :where(h1, h2, h3, h4, h5, h6) {
42
+ font-family: var(--coar-font-family-title, inherit);
43
+ color: var(--coar-markdown-text);
44
+ }
45
+
46
+ .coar-markdown h1 {
47
+ font-size: var(--coar-font-size-xl);
48
+ font-weight: var(--coar-font-weight-bold);
49
+ line-height: var(--coar-line-height-tight);
50
+ }
51
+
52
+ .coar-markdown h2 {
53
+ font-size: var(--coar-font-size-l);
54
+ font-weight: var(--coar-font-weight-bold);
55
+ line-height: 1.25;
56
+ }
57
+
58
+ .coar-markdown h3 {
59
+ font-size: var(--coar-font-size-m);
60
+ font-weight: var(--coar-font-weight-semi-bold);
61
+ line-height: var(--coar-line-height-snug);
62
+ }
63
+
64
+ .coar-markdown h4 {
65
+ font-size: var(--coar-font-size-s);
66
+ font-weight: var(--coar-font-weight-semi-bold);
67
+ line-height: 1.35;
68
+ }
69
+
70
+ .coar-markdown h5 {
71
+ font-size: var(--coar-font-size-xs);
72
+ font-weight: var(--coar-font-weight-semi-bold);
73
+ line-height: var(--coar-line-height-normal);
74
+ }
75
+
76
+ .coar-markdown h6 {
77
+ font-size: var(--coar-font-size-xxs);
78
+ font-weight: var(--coar-font-weight-medium);
79
+ line-height: 1.45;
80
+ }
81
+
82
+ .coar-markdown-heading,
83
+ .coar-markdown-paragraph,
84
+ .coar-markdown-blockquote,
85
+ .coar-markdown-list,
86
+ .coar-markdown-code-block,
87
+ .coar-markdown-table,
88
+ .coar-markdown-hr {
89
+ margin: 0;
90
+ }
91
+
92
+ .coar-markdown
93
+ > :where(
94
+ h1,
95
+ h2,
96
+ h3,
97
+ h4,
98
+ h5,
99
+ h6,
100
+ p,
101
+ blockquote,
102
+ ul,
103
+ ol,
104
+ pre,
105
+ table,
106
+ hr,
107
+ .coar-code-block-host,
108
+ .coar-table-host
109
+ ) {
110
+ margin-block: 0 var(--coar-markdown-space-2);
111
+ }
112
+
113
+ .coar-markdown > :where(h1, h2, h3, h4, h5, h6) {
114
+ margin-block-start: var(--coar-markdown-heading-block-start);
115
+ }
116
+
117
+ /* Large section spacing is great, but keep heading hierarchies tight (e.g. h2 -> h3). */
118
+ .coar-markdown > :where(h1, h2, h3, h4, h5, h6) + :where(h1, h2, h3, h4, h5, h6) {
119
+ margin-block-start: var(--coar-markdown-space-1);
120
+ }
121
+
122
+ .coar-markdown > :where(h1, h2, h3, h4, h5, h6):first-child {
123
+ margin-block-start: 0;
124
+ }
125
+
126
+ .coar-markdown-blockquote {
127
+ padding-inline: var(--coar-markdown-space-2);
128
+ border-left: 2px solid var(--coar-markdown-border);
129
+ }
130
+
131
+ .coar-markdown-list {
132
+ padding-inline-start: var(--coar-spacing-l, 1.5rem);
133
+ list-style-position: outside;
134
+ }
135
+
136
+ .coar-markdown-list--unordered {
137
+ list-style-type: disc;
138
+ }
139
+
140
+ .coar-markdown-list--ordered {
141
+ list-style-type: decimal;
142
+ }
143
+
144
+ .coar-markdown-list-item {
145
+ display: list-item;
146
+ margin-block: 0.25em;
147
+ }
148
+
149
+ .coar-markdown-list-item--task {
150
+ list-style: none;
151
+ display: flex;
152
+ align-items: flex-start;
153
+ gap: var(--coar-spacing-s, 0.5rem);
154
+ }
155
+
156
+ .coar-markdown-list-item-content {
157
+ min-width: 0;
158
+ }
159
+
160
+ .coar-markdown-task-checkbox {
161
+ margin-top: 0.15em;
162
+ }
163
+
164
+ .coar-markdown-code-block {
165
+ display: block;
166
+ }
167
+
168
+ .coar-markdown-code {
169
+ display: block;
170
+ }
171
+
172
+ .coar-markdown-inline-code {
173
+ padding: 0;
174
+ border: 0;
175
+ border-radius: 0;
176
+ background: transparent;
177
+ color: var(--coar-text-accent-secondary, var(--coar-markdown-link));
178
+ }
179
+
180
+ .coar-markdown-link {
181
+ text-decoration: underline;
182
+ color: var(--coar-markdown-link);
183
+ }
184
+
185
+ .coar-markdown-image {
186
+ max-width: 100%;
187
+ height: auto;
188
+ vertical-align: middle;
189
+ }
190
+
191
+ /* Tables — applies to both the viewer's named `.coar-markdown-table` and any
192
+ bare `<table>` rendered inside `.coar-markdown` (e.g. the editor's PM-
193
+ managed table). Rules use `:where()` so consumers can override without
194
+ specificity wars. The visual matches `CoarTable` (zebra rows, header
195
+ surface, generous padding) so editor and viewer read the same. */
196
+ .coar-markdown :where(table),
197
+ .coar-markdown-table {
198
+ display: table;
199
+ width: 100%;
200
+ border-collapse: collapse;
201
+ border-spacing: 0;
202
+ font-size: var(--coar-body-small-base-size, 0.9rem);
203
+ line-height: var(--coar-line-height-relaxed, 1.5);
204
+ }
205
+
206
+ .coar-markdown :where(table thead),
207
+ .coar-markdown-table > thead {
208
+ background: var(--coar-markdown-surface-muted);
209
+ }
210
+
211
+ .coar-markdown :where(table th),
212
+ .coar-markdown-table > thead th {
213
+ padding: 0.625rem var(--coar-markdown-space-2);
214
+ text-align: left;
215
+ vertical-align: top;
216
+ font-weight: var(--coar-font-weight-semi-bold, 600);
217
+ font-size: var(--coar-component-s-font-size, 0.85em);
218
+ color: var(--coar-markdown-text);
219
+ border-bottom: 1px solid var(--coar-markdown-border);
220
+ text-transform: uppercase;
221
+ letter-spacing: 0.025em;
222
+ }
223
+
224
+ .coar-markdown :where(table td),
225
+ .coar-markdown-table > tbody td {
226
+ padding: 0.625rem var(--coar-markdown-space-2);
227
+ text-align: left;
228
+ vertical-align: top;
229
+ color: var(--coar-text-neutral-secondary, var(--coar-markdown-text));
230
+ border-bottom: 1px solid var(--coar-markdown-border);
231
+ }
232
+
233
+ /* Zebra stripes — odd rows on the primary surface, even rows on the muted
234
+ surface — same pattern CoarTable uses by default. */
235
+ .coar-markdown :where(table tbody tr:nth-child(odd)),
236
+ .coar-markdown-table > tbody tr:nth-child(odd) {
237
+ background: var(--coar-markdown-surface);
238
+ }
239
+ .coar-markdown :where(table tbody tr:nth-child(even)),
240
+ .coar-markdown-table > tbody tr:nth-child(even) {
241
+ background: var(--coar-markdown-surface-muted);
242
+ }
243
+
244
+ /* Last row drops its bottom border so it doesn't double-up with any wrapping
245
+ container's border. */
246
+ .coar-markdown :where(table tbody tr:last-child td),
247
+ .coar-markdown-table > tbody tr:last-child td {
248
+ border-bottom: 0;
249
+ }
250
+
251
+ /* Standalone tableCell fallback — kept for the rare case where the parser
252
+ emits a tableCell without a containing table tree. */
253
+ .coar-markdown-table-cell {
254
+ padding: var(--coar-markdown-space-1);
255
+ vertical-align: top;
256
+ border-right: 1px solid var(--coar-markdown-border);
257
+ border-bottom: 1px solid var(--coar-markdown-border);
258
+ }
259
+
260
+ .coar-markdown-hr {
261
+ border: 0;
262
+ border-top: 1px solid var(--coar-markdown-border);
263
+ }
264
+
265
+ .coar-markdown-unsupported,
266
+ .coar-markdown-unsupported-inline {
267
+ font-style: italic;
268
+ color: var(--coar-markdown-muted-text);
269
+ }
270
+
271
+ .coar-markdown-unsupported {
272
+ padding: var(--coar-markdown-space-1);
273
+ border: 1px dashed var(--coar-markdown-border);
274
+ border-radius: var(--coar-markdown-radius);
275
+ background: var(--coar-markdown-surface);
276
+ }
@@ -1,9 +0,0 @@
1
- import { MarkdownNode } from '@cocoar/vue-markdown-core';
2
- type __VLS_Props = {
3
- nodes: readonly MarkdownNode[];
4
- /** The table node, passed down so cells can read column alignment. */
5
- tableNode?: MarkdownNode;
6
- };
7
- declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
8
- export default _default;
9
- //# sourceMappingURL=MarkdownBlockNode.vue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MarkdownBlockNode.vue.d.ts","sourceRoot":"","sources":["../src/MarkdownBlockNode.vue"],"names":[],"mappings":"AAqJA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAgB9D,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,sEAAsE;IACtE,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B,CAAC;;AA0RF,wBAMG"}
@@ -1,7 +0,0 @@
1
- import { MarkdownNode } from '@cocoar/vue-markdown-core';
2
- type __VLS_Props = {
3
- nodes: readonly MarkdownNode[];
4
- };
5
- declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
6
- export default _default;
7
- //# sourceMappingURL=MarkdownInlineNode.vue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MarkdownInlineNode.vue.d.ts","sourceRoot":"","sources":["../src/MarkdownInlineNode.vue"],"names":[],"mappings":"AA4DA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9D,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;CAChC,CAAC;;AAkJF,wBAMG"}