@purview-dev/astroc4 1.0.0-prerelease.3 → 1.0.0-prerelease.5

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.
@@ -0,0 +1,327 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
3
+ "$generated": {
4
+ "repo": "likec4/likec4",
5
+ "ref": "main",
6
+ "sha": "da5af77245f9",
7
+ "by": "astroc4/scripts/sync-grammar.ts"
8
+ },
9
+ "name": "likec4",
10
+ "displayName": "LikeC4",
11
+ "scopeName": "source.likec4",
12
+ "fileTypes": [
13
+ "c4",
14
+ "likec4"
15
+ ],
16
+ "patterns": [
17
+ {
18
+ "include": "#everything"
19
+ }
20
+ ],
21
+ "repository": {
22
+ "everything": {
23
+ "patterns": [
24
+ {
25
+ "include": "#comments"
26
+ },
27
+ {
28
+ "include": "#strings"
29
+ },
30
+ {
31
+ "include": "#urls"
32
+ },
33
+ {
34
+ "include": "#icons"
35
+ },
36
+ {
37
+ "include": "#hex-colors"
38
+ },
39
+ {
40
+ "include": "#tags"
41
+ },
42
+ {
43
+ "include": "#typed-arrow"
44
+ },
45
+ {
46
+ "include": "#declarations"
47
+ },
48
+ {
49
+ "include": "#keywords"
50
+ },
51
+ {
52
+ "include": "#numbers"
53
+ },
54
+ {
55
+ "include": "#operators"
56
+ },
57
+ {
58
+ "include": "#punctuation"
59
+ }
60
+ ]
61
+ },
62
+ "comments": {
63
+ "patterns": [
64
+ {
65
+ "name": "comment.block.likec4",
66
+ "begin": "/\\*",
67
+ "end": "\\*/",
68
+ "captures": {
69
+ "0": {
70
+ "name": "punctuation.definition.comment.likec4"
71
+ }
72
+ }
73
+ },
74
+ {
75
+ "name": "comment.line.double-slash.likec4",
76
+ "match": "//.*$",
77
+ "captures": {
78
+ "0": {
79
+ "name": "punctuation.definition.comment.likec4"
80
+ }
81
+ }
82
+ }
83
+ ]
84
+ },
85
+ "strings": {
86
+ "patterns": [
87
+ {
88
+ "name": "string.quoted.triple.likec4",
89
+ "begin": "'''",
90
+ "end": "'''",
91
+ "beginCaptures": {
92
+ "0": {
93
+ "name": "punctuation.definition.string.begin.likec4"
94
+ }
95
+ },
96
+ "endCaptures": {
97
+ "0": {
98
+ "name": "punctuation.definition.string.end.likec4"
99
+ }
100
+ }
101
+ },
102
+ {
103
+ "name": "string.quoted.triple.likec4",
104
+ "begin": "\"\"\"",
105
+ "end": "\"\"\"",
106
+ "beginCaptures": {
107
+ "0": {
108
+ "name": "punctuation.definition.string.begin.likec4"
109
+ }
110
+ },
111
+ "endCaptures": {
112
+ "0": {
113
+ "name": "punctuation.definition.string.end.likec4"
114
+ }
115
+ }
116
+ },
117
+ {
118
+ "name": "string.quoted.single.likec4",
119
+ "begin": "'",
120
+ "end": "'|$",
121
+ "beginCaptures": {
122
+ "0": {
123
+ "name": "punctuation.definition.string.begin.likec4"
124
+ }
125
+ },
126
+ "endCaptures": {
127
+ "0": {
128
+ "name": "punctuation.definition.string.end.likec4"
129
+ }
130
+ },
131
+ "patterns": [
132
+ {
133
+ "name": "constant.character.escape.likec4",
134
+ "match": "\\\\."
135
+ }
136
+ ]
137
+ },
138
+ {
139
+ "name": "string.quoted.double.likec4",
140
+ "begin": "\"",
141
+ "end": "\"|$",
142
+ "beginCaptures": {
143
+ "0": {
144
+ "name": "punctuation.definition.string.begin.likec4"
145
+ }
146
+ },
147
+ "endCaptures": {
148
+ "0": {
149
+ "name": "punctuation.definition.string.end.likec4"
150
+ }
151
+ },
152
+ "patterns": [
153
+ {
154
+ "name": "constant.character.escape.likec4",
155
+ "match": "\\\\."
156
+ }
157
+ ]
158
+ }
159
+ ]
160
+ },
161
+ "urls": {
162
+ "name": "markup.underline.link.likec4",
163
+ "match": "\\bhttps?://[^\\s'\"]+"
164
+ },
165
+ "icons": {
166
+ "comment": "Bundled icon ids: `tech:nginx`, `aws:…`, `gcp:…`, …",
167
+ "match": "\\b(aws|azure|bootstrap|gcp|md|tech)(:)([\\w-]+)",
168
+ "captures": {
169
+ "1": {
170
+ "name": "support.constant.icon-pack.likec4"
171
+ },
172
+ "2": {
173
+ "name": "punctuation.separator.likec4"
174
+ },
175
+ "3": {
176
+ "name": "support.constant.icon.likec4"
177
+ }
178
+ }
179
+ },
180
+ "hex-colors": {
181
+ "name": "constant.other.color.rgb-value.hex.likec4",
182
+ "match": "#(?:[0-9A-Fa-f]{8}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{3})(?![\\w-])"
183
+ },
184
+ "tags": {
185
+ "name": "entity.name.tag.likec4",
186
+ "match": "#[A-Za-z_][\\w-]*"
187
+ },
188
+ "typed-arrow": {
189
+ "comment": "`a -[https]-> b`",
190
+ "match": "(-\\[)\\s*([A-Za-z_][\\w-]*)\\s*(\\]->)",
191
+ "captures": {
192
+ "1": {
193
+ "name": "keyword.operator.arrow.likec4"
194
+ },
195
+ "2": {
196
+ "name": "entity.name.type.relationship.likec4"
197
+ },
198
+ "3": {
199
+ "name": "keyword.operator.arrow.likec4"
200
+ }
201
+ }
202
+ },
203
+ "declarations": {
204
+ "patterns": [
205
+ {
206
+ "comment": "`element system`, `deploymentNode region`, `tag tls`, `relationship https`. Not `where tag is #x`.",
207
+ "match": "\\b(element|deploymentNode|tag|relationship)\\s+(?!is\\b)([A-Za-z_][\\w-]*)(?=\\s*(?:\\{|$|//))",
208
+ "captures": {
209
+ "1": {
210
+ "name": "storage.type.likec4"
211
+ },
212
+ "2": {
213
+ "name": "entity.name.type.likec4"
214
+ }
215
+ }
216
+ },
217
+ {
218
+ "comment": "`color testingBlue #0046BE` declares; `color testingBlue` inside a style block only refers.",
219
+ "match": "\\b(color)\\s+([A-Za-z_][\\w-]*)(?=\\s+#)",
220
+ "captures": {
221
+ "1": {
222
+ "name": "storage.type.likec4"
223
+ },
224
+ "2": {
225
+ "name": "entity.name.type.likec4"
226
+ }
227
+ }
228
+ },
229
+ {
230
+ "comment": "`view index`, `dynamic view firstRequest`, `deployment view prod`, `view internals of site`",
231
+ "match": "\\b(?:(dynamic|deployment)\\s+)?(view)\\s+([A-Za-z_]\\w*)",
232
+ "captures": {
233
+ "1": {
234
+ "name": "storage.modifier.likec4"
235
+ },
236
+ "2": {
237
+ "name": "storage.type.view.likec4"
238
+ },
239
+ "3": {
240
+ "name": "entity.name.function.view.likec4"
241
+ }
242
+ }
243
+ },
244
+ {
245
+ "comment": "`reader = actor 'Engineer'`",
246
+ "match": "\\b([A-Za-z_]\\w*)\\s*(=)(?!=)\\s*(?!(?:autoLayout|deploymentNode|dynamic|element|exclude|extend|extends|from|icons|import|include|instance|instanceOf|is|metadata|node|not|of|predicate|relationship|rgb|rgba|view|where|with|add|deployment|diff|dynamicPredicateGroup|global|group|likec4lib|model|predicateGroup|rank|remove|specification|style|styleGroup|views|alt|break|catch|else|finally|if|loop|opt|par|parallel|try|when)\\b)([A-Za-z_]\\w*)?",
247
+ "captures": {
248
+ "1": {
249
+ "name": "variable.other.definition.likec4"
250
+ },
251
+ "2": {
252
+ "name": "keyword.operator.assignment.likec4"
253
+ },
254
+ "3": {
255
+ "name": "entity.name.type.likec4"
256
+ }
257
+ }
258
+ }
259
+ ]
260
+ },
261
+ "keywords": {
262
+ "patterns": [
263
+ {
264
+ "comment": "Keywords that open a block: `model { … }`.",
265
+ "name": "keyword.control.block.likec4",
266
+ "match": "\\b(?:add|deployment|diff|dynamicPredicateGroup|global|group|likec4lib|model|predicateGroup|rank|remove|specification|style|styleGroup|views)\\b(?=\\s*\\{)"
267
+ },
268
+ {
269
+ "name": "keyword.operator.word.likec4",
270
+ "match": "\\b(?:and|or|not|is)\\b"
271
+ },
272
+ {
273
+ "name": "keyword.control.likec4",
274
+ "match": "\\b(?:autoLayout|deploymentNode|dynamic|element|exclude|extend|extends|from|icons|import|include|instance|instanceOf|is|metadata|node|not|of|predicate|relationship|rgb|rgba|view|where|with|alt|break|catch|else|finally|if|loop|opt|par|parallel|try|when|add|deployment|diff|dynamicPredicateGroup|global|group|likec4lib|model|predicateGroup|rank|remove|specification|style|styleGroup|views)\\b"
275
+ },
276
+ {
277
+ "name": "variable.language.likec4",
278
+ "match": "\\b(?:source|target)\\b"
279
+ },
280
+ {
281
+ "name": "support.type.property-name.likec4",
282
+ "match": "\\b(?:border|color|description|descriptionFile|head|icon|iconColor|iconPosition|iconSize|includeAncestors|kind|line|link|multiple|navigateTo|notation|notes|opacity|order|padding|routing|shape|size|sizing|style|summary|tag|tail|technology|textSize|title|variant)\\b"
283
+ },
284
+ {
285
+ "name": "constant.language.likec4",
286
+ "match": "\\b(?:agent|amber|auto|blue|bottom|BottomTop|browser|bucket|component|crow|cylinder|dashed|diagram|diamond|document|dot|dotted|fixed|gray|green|indigo|large|left|LeftRight|lg|max|md|medium|min|mobile|muted|none|normal|odiamond|odot|onormal|open|ortho|person|primary|queue|rectangle|red|right|RightLeft|same|secondary|sequence|sink|sky|slate|sm|small|solid|source|spline|storage|top|TopBottom|vee|xl|xlarge|xs|xsmall)\\b"
287
+ }
288
+ ]
289
+ },
290
+ "numbers": {
291
+ "name": "constant.numeric.likec4",
292
+ "match": "\\b\\d+(?:\\.\\d+)?%?"
293
+ },
294
+ "operators": {
295
+ "patterns": [
296
+ {
297
+ "name": "keyword.operator.arrow.likec4",
298
+ "match": "\\]<->|\\]->|<->|->"
299
+ },
300
+ {
301
+ "name": "keyword.operator.wildcard.likec4",
302
+ "match": "\\.\\*\\*|\\.\\*|\\*\\*|\\*"
303
+ }
304
+ ]
305
+ },
306
+ "punctuation": {
307
+ "patterns": [
308
+ {
309
+ "name": "punctuation.section.block.begin.likec4",
310
+ "match": "\\{"
311
+ },
312
+ {
313
+ "name": "punctuation.section.block.end.likec4",
314
+ "match": "\\}"
315
+ },
316
+ {
317
+ "name": "punctuation.separator.comma.likec4",
318
+ "match": ","
319
+ },
320
+ {
321
+ "name": "punctuation.accessor.likec4",
322
+ "match": "\\."
323
+ }
324
+ ]
325
+ }
326
+ }
327
+ }
@@ -0,0 +1,21 @@
1
+ export declare const translations: {
2
+ en: {
3
+ 'likec4.view.title': string;
4
+ 'likec4.view.description': string;
5
+ 'likec4.view.hint': string;
6
+ 'likec4.view.badge': string;
7
+ 'likec4.view.loading': string;
8
+ 'likec4.fence.title': string;
9
+ 'likec4.fence.hint': string;
10
+ 'likec4.fence.loading': string;
11
+ 'likec4.error.title': string;
12
+ 'likec4.error.body': string;
13
+ 'likec4.error.retry': string;
14
+ 'likec4.error.viewIdRequired': string;
15
+ 'likec4.error.noProjects': string;
16
+ 'likec4.error.unknownProject': string;
17
+ 'likec4.error.unresolvedProject': string;
18
+ 'likec4.error.loadFailed': string;
19
+ };
20
+ };
21
+ export default translations;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purview-dev/astroc4",
3
- "version": "1.0.0-prerelease.3",
3
+ "version": "1.0.0-prerelease.5",
4
4
  "description": "Interactive LikeC4 architecture diagrams for Astro and Starlight: <LikeC4View>, ```likec4 fences, and LikeC4 syntax highlighting derived from the live Langium grammar.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -21,8 +21,10 @@
21
21
  "architecture-as-code",
22
22
  "architecture-diagrams",
23
23
  "diagrams",
24
+ "ui",
24
25
  "astro",
25
26
  "astro-integration",
27
+ "withastro",
26
28
  "starlight",
27
29
  "starlight-plugin",
28
30
  "expressive-code",
@@ -36,6 +38,10 @@
36
38
  "types": "./dist/index.d.ts",
37
39
  "import": "./dist/index.js"
38
40
  },
41
+ "./integration": {
42
+ "types": "./dist/integration.d.ts",
43
+ "import": "./dist/integration.js"
44
+ },
39
45
  "./expressive-code": {
40
46
  "types": "./dist/expressive-code.d.ts",
41
47
  "import": "./dist/expressive-code.js"
@@ -52,10 +58,13 @@
52
58
  ],
53
59
  "scripts": {
54
60
  "build:lib": "bun scripts/build.ts",
61
+ "prepublishOnly": "bun scripts/check-dist.ts",
55
62
  "dev": "bun run build:lib && cd playground && astro dev",
56
63
  "build": "bun run build:lib && cd playground && astro build",
57
64
  "preview": "cd playground && astro preview",
58
- "check": "bun run build:lib && cd playground && astro check && cd .. && bunx tsc -p tsconfig.scripts.json --noEmit",
65
+ "dev:astro": "bun run build:lib && cd examples/astro && astro dev",
66
+ "build:astro": "bun run build:lib && cd examples/astro && astro build",
67
+ "check": "bun run build:lib && cd playground && astro check && cd ../examples/astro && astro check && cd ../.. && bunx tsc -p tsconfig.scripts.json --noEmit",
59
68
  "test": "vitest run",
60
69
  "test:watch": "vitest",
61
70
  "test:network": "ASTROC4_NETWORK=1 vitest run src/grammar/__tests__/network.test.ts",
@@ -76,15 +85,22 @@
76
85
  "react-dom": ">=19.0.0",
77
86
  "shiki": ">=1.0.0"
78
87
  },
88
+ "peerDependenciesMeta": {
89
+ "@astrojs/starlight": {
90
+ "optional": true
91
+ }
92
+ },
79
93
  "devDependencies": {
80
94
  "@astrojs/check": "^0.9.12",
81
95
  "@astrojs/markdown-satteri": "^0.4.6",
96
+ "@astrojs/mdx": "^8.1.2",
82
97
  "@astrojs/react": "^7.1.2",
83
98
  "@astrojs/starlight": "^0.42.8",
84
99
  "@likec4/core": "^1.59.4",
85
100
  "@types/react": "^19.3.0",
86
101
  "@types/react-dom": "^19.3.0",
87
102
  "astro": "^7.4.4",
103
+ "astro-expressive-code": "^0.44.3",
88
104
  "likec4": "^1.59.4",
89
105
  "playwright": "^1.63.0",
90
106
  "react": "^19.3.0",
@@ -20,7 +20,15 @@ const { height = 480 } = Astro.props;
20
20
  /* LikeC4's renderer measures its container, so it needs a concrete height
21
21
  rather than collapsing to the intrinsic size of an absolutely-positioned
22
22
  canvas. The per-instance value arrives as an inline custom property. */
23
+ /* Same token contract as DiagramShell: Starlight's palette when present,
24
+ scheme-neutral fallbacks when not (see the note there). */
23
25
  .likec4-frame {
26
+ --likec4-border: var(--sl-color-gray-5, rgba(128, 128, 128, 0.35));
27
+ --likec4-surface: var(--sl-color-bg, transparent);
28
+ --likec4-danger: var(--sl-color-red, #c0392b);
29
+ --likec4-danger-soft: var(--sl-color-red-low, rgba(192, 57, 43, 0.12));
30
+ --likec4-danger-text: var(--sl-color-red-high, #8b1d1d);
31
+
24
32
  min-height: var(--likec4-height);
25
33
  }
26
34
 
@@ -35,13 +43,13 @@ const { height = 480 } = Astro.props;
35
43
  }
36
44
 
37
45
  .likec4-frame :global(.likec4-error) {
38
- border: 1px solid var(--sl-color-red);
46
+ border: 1px solid var(--likec4-danger);
39
47
  border-radius: 0.5rem;
40
- background: var(--sl-color-red-low);
48
+ background: var(--likec4-danger-soft);
41
49
  padding: 1rem;
42
50
  font-size: 0.875rem;
43
51
  line-height: 1.25rem;
44
- color: var(--sl-color-red-high);
52
+ color: var(--likec4-danger-text);
45
53
  }
46
54
 
47
55
  .likec4-frame :global(.likec4-error p) {
@@ -55,7 +63,7 @@ const { height = 480 } = Astro.props;
55
63
 
56
64
  .likec4-frame :global(.likec4-error__retry) {
57
65
  margin-top: 0.75rem;
58
- border: 1px solid var(--sl-color-red);
66
+ border: 1px solid var(--likec4-danger);
59
67
  border-radius: 0.375rem;
60
68
  background: transparent;
61
69
  padding: 0.375rem 0.75rem;
@@ -67,6 +75,6 @@ const { height = 480 } = Astro.props;
67
75
  }
68
76
 
69
77
  .likec4-frame :global(.likec4-error__retry:hover) {
70
- background: var(--sl-color-bg);
78
+ background: var(--likec4-surface);
71
79
  }
72
80
  </style>
@@ -54,17 +54,28 @@ const { title, description, hint, collapsible = true, defaultOpen = true } = Ast
54
54
  </section>
55
55
 
56
56
  <style>
57
+ /* Starlight's palette when the site has it; scheme-neutral fallbacks when it
58
+ does not, so the same components frame a diagram on a plain Astro page.
59
+ Every fallback is a translucent grey or `inherit`, which stays legible on
60
+ light and dark backgrounds alike. */
57
61
  .likec4-shell {
62
+ --likec4-border: var(--sl-color-gray-5, rgba(128, 128, 128, 0.35));
63
+ --likec4-surface: var(--sl-color-bg, transparent);
64
+ --likec4-surface-alt: var(--sl-color-bg-nav, rgba(128, 128, 128, 0.06));
65
+ --likec4-text: var(--sl-color-white, inherit);
66
+ --likec4-text-muted: var(--sl-color-gray-2, rgba(128, 128, 128, 0.95));
67
+ --likec4-accent: var(--sl-color-text-accent, inherit);
68
+
58
69
  margin-block: 1em;
59
70
  overflow: hidden;
60
- border: 1px solid var(--sl-color-gray-5);
71
+ border: 1px solid var(--likec4-border);
61
72
  border-radius: 0.75rem;
62
- background: var(--sl-color-bg-nav);
73
+ background: var(--likec4-surface-alt);
63
74
  }
64
75
 
65
76
  .likec4-shell__header {
66
- border-bottom: 1px solid var(--sl-color-gray-5);
67
- background: var(--sl-color-bg);
77
+ border-bottom: 1px solid var(--likec4-border);
78
+ background: var(--likec4-surface);
68
79
  padding: 1em 1.25rem;
69
80
  line-height: 1.4;
70
81
  }
@@ -86,7 +97,7 @@ const { title, description, hint, collapsible = true, defaultOpen = true } = Ast
86
97
  font-size: 1rem;
87
98
  line-height: 1.5rem;
88
99
  font-weight: 600;
89
- color: var(--sl-color-white);
100
+ color: var(--likec4-text);
90
101
  }
91
102
 
92
103
  .likec4-shell__title--block {
@@ -97,7 +108,7 @@ const { title, description, hint, collapsible = true, defaultOpen = true } = Ast
97
108
  margin: 0.25rem 0 0;
98
109
  font-size: 0.875rem;
99
110
  line-height: 1.25rem;
100
- color: var(--sl-color-gray-2);
111
+ color: var(--likec4-text-muted);
101
112
  }
102
113
 
103
114
  .likec4-shell__hint {
@@ -105,7 +116,7 @@ const { title, description, hint, collapsible = true, defaultOpen = true } = Ast
105
116
  font-size: 0.75rem;
106
117
  line-height: 1rem;
107
118
  font-weight: 500;
108
- color: var(--sl-color-text-accent);
119
+ color: var(--likec4-accent);
109
120
  }
110
121
 
111
122
  .likec4-shell__body {
@@ -23,7 +23,8 @@ interface Props {
23
23
  defaultOpen?: string;
24
24
  }
25
25
 
26
- const t = getTranslator(Astro.locals.t);
26
+ // See `LikeC4View.astro`: `t` is Starlight's, and absent on a plain Astro page.
27
+ const t = getTranslator((Astro.locals as { t?: unknown }).t);
27
28
  const labels = getIslandLabels(t, 'likec4.fence.loading');
28
29
 
29
30
  const {
@@ -26,7 +26,11 @@ interface Props {
26
26
  defaultOpen?: boolean;
27
27
  }
28
28
 
29
- const t = getTranslator(Astro.locals.t);
29
+ // Starlight augments `App.Locals` with `t`; a plain Astro page has no such
30
+ // property (and an empty `Locals` interface, so naming it would not type-check),
31
+ // which is why this is read as `unknown` and `getTranslator` falls back to
32
+ // English when it is absent.
33
+ const t = getTranslator((Astro.locals as { t?: unknown }).t);
30
34
  const labels = getIslandLabels(t, 'likec4.view.loading');
31
35
 
32
36
  const {
@@ -64,17 +68,22 @@ const {
64
68
  </DiagramShell>
65
69
 
66
70
  <style>
71
+ /* Same token contract as DiagramShell (see the note there). */
67
72
  .likec4-badge {
73
+ --likec4-border: var(--sl-color-gray-5, rgba(128, 128, 128, 0.35));
74
+ --likec4-surface: var(--sl-color-bg, transparent);
75
+ --likec4-text-muted: var(--sl-color-gray-2, rgba(128, 128, 128, 0.95));
76
+
68
77
  display: inline-flex;
69
78
  align-items: center;
70
79
  gap: 0.5rem;
71
80
  margin-bottom: 0.75rem;
72
- border: 1px solid var(--sl-color-gray-5);
81
+ border: 1px solid var(--likec4-border);
73
82
  border-radius: 9999px;
74
- background: var(--sl-color-bg);
83
+ background: var(--likec4-surface);
75
84
  padding: 0.25rem 0.75rem;
76
85
  font-size: 0.75rem;
77
86
  line-height: 1rem;
78
- color: var(--sl-color-gray-2);
87
+ color: var(--likec4-text-muted);
79
88
  }
80
89
  </style>
@@ -22,10 +22,16 @@ const { label } = Astro.props;
22
22
  </div>
23
23
 
24
24
  <style>
25
+ /* Same token contract as DiagramShell/DiagramFrame (see the note there). */
25
26
  .likec4-loading {
26
- border: 1px dashed var(--sl-color-gray-5);
27
+ --likec4-border: var(--sl-color-gray-5, rgba(128, 128, 128, 0.35));
28
+ --likec4-surface: var(--sl-color-bg, transparent);
29
+ --likec4-text-muted: var(--sl-color-gray-2, rgba(128, 128, 128, 0.95));
30
+ --likec4-skeleton: var(--sl-color-gray-6, rgba(128, 128, 128, 0.18));
31
+
32
+ border: 1px dashed var(--likec4-border);
27
33
  border-radius: 0.5rem;
28
- background: var(--sl-color-bg);
34
+ background: var(--likec4-surface);
29
35
  padding: 1.25rem;
30
36
  }
31
37
 
@@ -34,7 +40,7 @@ const { label } = Astro.props;
34
40
  font-size: 0.875rem;
35
41
  line-height: 1.25rem;
36
42
  font-weight: 500;
37
- color: var(--sl-color-gray-2);
43
+ color: var(--likec4-text-muted);
38
44
  }
39
45
 
40
46
  .likec4-loading__lines {
@@ -45,7 +51,7 @@ const { label } = Astro.props;
45
51
  .likec4-loading__line {
46
52
  height: 1rem;
47
53
  border-radius: 0.25rem;
48
- background: var(--sl-color-gray-6);
54
+ background: var(--likec4-skeleton);
49
55
  animation: likec4-pulse 1.6s ease-in-out infinite;
50
56
  }
51
57