@cyclone-ui/shiki 0.0.14 → 0.0.15
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/CHANGELOG.md +6 -0
- package/dist/dark/INSTALL.md +7 -9
- package/dist/dark/theme.json +11 -43
- package/dist/dark-dimmed/INSTALL.md +7 -9
- package/dist/dark-dimmed/theme.json +11 -43
- package/dist/dark-high-contrast/INSTALL.md +7 -9
- package/dist/dark-high-contrast/theme.json +11 -43
- package/dist/light/INSTALL.md +7 -9
- package/dist/light/theme.json +11 -43
- package/dist/light-dimmed/INSTALL.md +7 -9
- package/dist/light-dimmed/theme.json +11 -43
- package/dist/light-high-contrast/INSTALL.md +7 -9
- package/dist/light-high-contrast/theme.json +11 -43
- package/dist/src/dark/INSTALL.md +43 -0
- package/dist/src/dark/theme.json +93 -0
- package/dist/src/dark-dimmed/INSTALL.md +43 -0
- package/dist/src/dark-dimmed/theme.json +93 -0
- package/dist/src/dark-high-contrast/INSTALL.md +43 -0
- package/dist/src/dark-high-contrast/theme.json +93 -0
- package/dist/src/light/INSTALL.md +43 -0
- package/dist/src/light/theme.json +93 -0
- package/dist/src/light-dimmed/INSTALL.md +43 -0
- package/dist/src/light-dimmed/theme.json +93 -0
- package/dist/src/light-high-contrast/INSTALL.md +43 -0
- package/dist/src/light-high-contrast/theme.json +93 -0
- package/package.json +2 -2
- package/src/dark/INSTALL.md +7 -9
- package/src/dark/theme.json +11 -43
- package/src/dark-dimmed/INSTALL.md +7 -9
- package/src/dark-dimmed/theme.json +11 -43
- package/src/dark-high-contrast/INSTALL.md +7 -9
- package/src/dark-high-contrast/theme.json +11 -43
- package/src/light/INSTALL.md +7 -9
- package/src/light/theme.json +11 -43
- package/src/light-dimmed/INSTALL.md +7 -9
- package/src/light-dimmed/theme.json +11 -43
- package/src/light-high-contrast/INSTALL.md +7 -9
- package/src/light-high-contrast/theme.json +11 -43
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
# Changelog for Cyclone UI - Shiki
|
|
4
4
|
|
|
5
|
+
## [0.0.15](https://github.com/storm-software/cyclone-ui/releases/tag/shiki%400.0.15) (10/22/2026)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **tokens:** Update token structure to better allow customizations ([7f23eb61](https://github.com/storm-software/cyclone-ui/commit/7f23eb61))
|
|
10
|
+
|
|
5
11
|
## [0.0.9](https://github.com/storm-software/cyclone-ui/releases/tag/shiki%400.0.9) (10/16/2026)
|
|
6
12
|
|
|
7
13
|
### Bug Fixes
|
package/dist/dark/INSTALL.md
CHANGED
|
@@ -13,29 +13,27 @@ Generated by `@razorwind/shiki`.
|
|
|
13
13
|
2. Register themes when creating a Shiki highlighter:
|
|
14
14
|
|
|
15
15
|
```ts
|
|
16
|
-
import { createHighlighter } from "shiki"
|
|
17
|
-
import theme from "./theme.json"
|
|
16
|
+
import { createHighlighter } from "shiki"
|
|
17
|
+
import theme from "./theme.json"
|
|
18
18
|
|
|
19
19
|
const highlighter = await createHighlighter({
|
|
20
20
|
themes: [theme],
|
|
21
21
|
langs: ["javascript"]
|
|
22
|
-
})
|
|
22
|
+
})
|
|
23
23
|
|
|
24
24
|
const html = highlighter.codeToHtml("const x = 1", {
|
|
25
25
|
lang: "javascript",
|
|
26
26
|
theme: "cyclone-dark"
|
|
27
|
-
})
|
|
27
|
+
})
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
Or load at runtime:
|
|
31
31
|
|
|
32
32
|
```ts
|
|
33
|
-
import { readFile } from "node:fs/promises"
|
|
33
|
+
import { readFile } from "node:fs/promises"
|
|
34
34
|
|
|
35
|
-
const theme = JSON.parse(
|
|
36
|
-
|
|
37
|
-
);
|
|
38
|
-
await highlighter.loadTheme(theme);
|
|
35
|
+
const theme = JSON.parse(await readFile("./theme.json", "utf8"))
|
|
36
|
+
await highlighter.loadTheme(theme)
|
|
39
37
|
```
|
|
40
38
|
|
|
41
39
|
## Select / load theme
|
package/dist/dark/theme.json
CHANGED
|
@@ -2,49 +2,32 @@
|
|
|
2
2
|
"name": "cyclone-dark",
|
|
3
3
|
"settings": [
|
|
4
4
|
{
|
|
5
|
-
"scope": [
|
|
6
|
-
"comment",
|
|
7
|
-
"punctuation.definition.comment"
|
|
8
|
-
],
|
|
5
|
+
"scope": ["comment", "punctuation.definition.comment"],
|
|
9
6
|
"settings": {
|
|
10
7
|
"foreground": "#959698",
|
|
11
8
|
"fontStyle": "italic"
|
|
12
9
|
}
|
|
13
10
|
},
|
|
14
11
|
{
|
|
15
|
-
"scope": [
|
|
16
|
-
"string",
|
|
17
|
-
"constant.other.symbol"
|
|
18
|
-
],
|
|
12
|
+
"scope": ["string", "constant.other.symbol"],
|
|
19
13
|
"settings": {
|
|
20
14
|
"foreground": "#45c791"
|
|
21
15
|
}
|
|
22
16
|
},
|
|
23
17
|
{
|
|
24
|
-
"scope": [
|
|
25
|
-
"constant",
|
|
26
|
-
"constant.numeric",
|
|
27
|
-
"constant.language"
|
|
28
|
-
],
|
|
18
|
+
"scope": ["constant", "constant.numeric", "constant.language"],
|
|
29
19
|
"settings": {
|
|
30
20
|
"foreground": "#f7ac23"
|
|
31
21
|
}
|
|
32
22
|
},
|
|
33
23
|
{
|
|
34
|
-
"scope": [
|
|
35
|
-
"keyword",
|
|
36
|
-
"storage",
|
|
37
|
-
"storage.type"
|
|
38
|
-
],
|
|
24
|
+
"scope": ["keyword", "storage", "storage.type"],
|
|
39
25
|
"settings": {
|
|
40
26
|
"foreground": "#4d8eff"
|
|
41
27
|
}
|
|
42
28
|
},
|
|
43
29
|
{
|
|
44
|
-
"scope": [
|
|
45
|
-
"entity.name.function",
|
|
46
|
-
"support.function"
|
|
47
|
-
],
|
|
30
|
+
"scope": ["entity.name.function", "support.function"],
|
|
48
31
|
"settings": {
|
|
49
32
|
"foreground": "#4d8eff"
|
|
50
33
|
}
|
|
@@ -60,46 +43,31 @@
|
|
|
60
43
|
}
|
|
61
44
|
},
|
|
62
45
|
{
|
|
63
|
-
"scope": [
|
|
64
|
-
"entity.name.tag",
|
|
65
|
-
"meta.tag"
|
|
66
|
-
],
|
|
46
|
+
"scope": ["entity.name.tag", "meta.tag"],
|
|
67
47
|
"settings": {
|
|
68
48
|
"foreground": "#4d8eff"
|
|
69
49
|
}
|
|
70
50
|
},
|
|
71
51
|
{
|
|
72
|
-
"scope": [
|
|
73
|
-
"entity.other.attribute-name",
|
|
74
|
-
"support.constant"
|
|
75
|
-
],
|
|
52
|
+
"scope": ["entity.other.attribute-name", "support.constant"],
|
|
76
53
|
"settings": {
|
|
77
54
|
"foreground": "#4d8eff"
|
|
78
55
|
}
|
|
79
56
|
},
|
|
80
57
|
{
|
|
81
|
-
"scope": [
|
|
82
|
-
"variable",
|
|
83
|
-
"identifier"
|
|
84
|
-
],
|
|
58
|
+
"scope": ["variable", "identifier"],
|
|
85
59
|
"settings": {
|
|
86
60
|
"foreground": "#b0b0b1"
|
|
87
61
|
}
|
|
88
62
|
},
|
|
89
63
|
{
|
|
90
|
-
"scope": [
|
|
91
|
-
"punctuation",
|
|
92
|
-
"meta.brace"
|
|
93
|
-
],
|
|
64
|
+
"scope": ["punctuation", "meta.brace"],
|
|
94
65
|
"settings": {
|
|
95
66
|
"foreground": "#959698"
|
|
96
67
|
}
|
|
97
68
|
},
|
|
98
69
|
{
|
|
99
|
-
"scope": [
|
|
100
|
-
"invalid",
|
|
101
|
-
"invalid.illegal"
|
|
102
|
-
],
|
|
70
|
+
"scope": ["invalid", "invalid.illegal"],
|
|
103
71
|
"settings": {
|
|
104
72
|
"foreground": "#cf2d56"
|
|
105
73
|
}
|
|
@@ -118,7 +86,7 @@
|
|
|
118
86
|
"editor.inactiveSelectionBackground": "#1f1f21",
|
|
119
87
|
"editorLineNumber.foreground": "#959698",
|
|
120
88
|
"editorLineNumber.activeForeground": "#b0b0b1",
|
|
121
|
-
"editorIndentGuide.background1": "#
|
|
89
|
+
"editorIndentGuide.background1": "#46464a",
|
|
122
90
|
"editorIndentGuide.activeBackground1": "#959698",
|
|
123
91
|
"editorWhitespace.foreground": "#959698"
|
|
124
92
|
}
|
|
@@ -13,29 +13,27 @@ Generated by `@razorwind/shiki`.
|
|
|
13
13
|
2. Register themes when creating a Shiki highlighter:
|
|
14
14
|
|
|
15
15
|
```ts
|
|
16
|
-
import { createHighlighter } from "shiki"
|
|
17
|
-
import theme from "./theme.json"
|
|
16
|
+
import { createHighlighter } from "shiki"
|
|
17
|
+
import theme from "./theme.json"
|
|
18
18
|
|
|
19
19
|
const highlighter = await createHighlighter({
|
|
20
20
|
themes: [theme],
|
|
21
21
|
langs: ["javascript"]
|
|
22
|
-
})
|
|
22
|
+
})
|
|
23
23
|
|
|
24
24
|
const html = highlighter.codeToHtml("const x = 1", {
|
|
25
25
|
lang: "javascript",
|
|
26
26
|
theme: "cyclone-dark-dimmed"
|
|
27
|
-
})
|
|
27
|
+
})
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
Or load at runtime:
|
|
31
31
|
|
|
32
32
|
```ts
|
|
33
|
-
import { readFile } from "node:fs/promises"
|
|
33
|
+
import { readFile } from "node:fs/promises"
|
|
34
34
|
|
|
35
|
-
const theme = JSON.parse(
|
|
36
|
-
|
|
37
|
-
);
|
|
38
|
-
await highlighter.loadTheme(theme);
|
|
35
|
+
const theme = JSON.parse(await readFile("./theme.json", "utf8"))
|
|
36
|
+
await highlighter.loadTheme(theme)
|
|
39
37
|
```
|
|
40
38
|
|
|
41
39
|
## Select / load theme
|
|
@@ -2,49 +2,32 @@
|
|
|
2
2
|
"name": "cyclone-dark-dimmed",
|
|
3
3
|
"settings": [
|
|
4
4
|
{
|
|
5
|
-
"scope": [
|
|
6
|
-
"comment",
|
|
7
|
-
"punctuation.definition.comment"
|
|
8
|
-
],
|
|
5
|
+
"scope": ["comment", "punctuation.definition.comment"],
|
|
9
6
|
"settings": {
|
|
10
7
|
"foreground": "#8f8f90",
|
|
11
8
|
"fontStyle": "italic"
|
|
12
9
|
}
|
|
13
10
|
},
|
|
14
11
|
{
|
|
15
|
-
"scope": [
|
|
16
|
-
"string",
|
|
17
|
-
"constant.other.symbol"
|
|
18
|
-
],
|
|
12
|
+
"scope": ["string", "constant.other.symbol"],
|
|
19
13
|
"settings": {
|
|
20
14
|
"foreground": "#60a88a"
|
|
21
15
|
}
|
|
22
16
|
},
|
|
23
17
|
{
|
|
24
|
-
"scope": [
|
|
25
|
-
"constant",
|
|
26
|
-
"constant.numeric",
|
|
27
|
-
"constant.language"
|
|
28
|
-
],
|
|
18
|
+
"scope": ["constant", "constant.numeric", "constant.language"],
|
|
29
19
|
"settings": {
|
|
30
20
|
"foreground": "#c59b4d"
|
|
31
21
|
}
|
|
32
22
|
},
|
|
33
23
|
{
|
|
34
|
-
"scope": [
|
|
35
|
-
"keyword",
|
|
36
|
-
"storage",
|
|
37
|
-
"storage.type"
|
|
38
|
-
],
|
|
24
|
+
"scope": ["keyword", "storage", "storage.type"],
|
|
39
25
|
"settings": {
|
|
40
26
|
"foreground": "#638cd2"
|
|
41
27
|
}
|
|
42
28
|
},
|
|
43
29
|
{
|
|
44
|
-
"scope": [
|
|
45
|
-
"entity.name.function",
|
|
46
|
-
"support.function"
|
|
47
|
-
],
|
|
30
|
+
"scope": ["entity.name.function", "support.function"],
|
|
48
31
|
"settings": {
|
|
49
32
|
"foreground": "#638cd2"
|
|
50
33
|
}
|
|
@@ -60,46 +43,31 @@
|
|
|
60
43
|
}
|
|
61
44
|
},
|
|
62
45
|
{
|
|
63
|
-
"scope": [
|
|
64
|
-
"entity.name.tag",
|
|
65
|
-
"meta.tag"
|
|
66
|
-
],
|
|
46
|
+
"scope": ["entity.name.tag", "meta.tag"],
|
|
67
47
|
"settings": {
|
|
68
48
|
"foreground": "#638cd2"
|
|
69
49
|
}
|
|
70
50
|
},
|
|
71
51
|
{
|
|
72
|
-
"scope": [
|
|
73
|
-
"entity.other.attribute-name",
|
|
74
|
-
"support.constant"
|
|
75
|
-
],
|
|
52
|
+
"scope": ["entity.other.attribute-name", "support.constant"],
|
|
76
53
|
"settings": {
|
|
77
54
|
"foreground": "#638cd2"
|
|
78
55
|
}
|
|
79
56
|
},
|
|
80
57
|
{
|
|
81
|
-
"scope": [
|
|
82
|
-
"variable",
|
|
83
|
-
"identifier"
|
|
84
|
-
],
|
|
58
|
+
"scope": ["variable", "identifier"],
|
|
85
59
|
"settings": {
|
|
86
60
|
"foreground": "#a1a1a2"
|
|
87
61
|
}
|
|
88
62
|
},
|
|
89
63
|
{
|
|
90
|
-
"scope": [
|
|
91
|
-
"punctuation",
|
|
92
|
-
"meta.brace"
|
|
93
|
-
],
|
|
64
|
+
"scope": ["punctuation", "meta.brace"],
|
|
94
65
|
"settings": {
|
|
95
66
|
"foreground": "#8f8f90"
|
|
96
67
|
}
|
|
97
68
|
},
|
|
98
69
|
{
|
|
99
|
-
"scope": [
|
|
100
|
-
"invalid",
|
|
101
|
-
"invalid.illegal"
|
|
102
|
-
],
|
|
70
|
+
"scope": ["invalid", "invalid.illegal"],
|
|
103
71
|
"settings": {
|
|
104
72
|
"foreground": "#ab5268"
|
|
105
73
|
}
|
|
@@ -118,7 +86,7 @@
|
|
|
118
86
|
"editor.inactiveSelectionBackground": "#3c3c3e",
|
|
119
87
|
"editorLineNumber.foreground": "#8f8f90",
|
|
120
88
|
"editorLineNumber.activeForeground": "#a1a1a2",
|
|
121
|
-
"editorIndentGuide.background1": "#
|
|
89
|
+
"editorIndentGuide.background1": "#57575a",
|
|
122
90
|
"editorIndentGuide.activeBackground1": "#8f8f90",
|
|
123
91
|
"editorWhitespace.foreground": "#8f8f90"
|
|
124
92
|
}
|
|
@@ -13,29 +13,27 @@ Generated by `@razorwind/shiki`.
|
|
|
13
13
|
2. Register themes when creating a Shiki highlighter:
|
|
14
14
|
|
|
15
15
|
```ts
|
|
16
|
-
import { createHighlighter } from "shiki"
|
|
17
|
-
import theme from "./theme.json"
|
|
16
|
+
import { createHighlighter } from "shiki"
|
|
17
|
+
import theme from "./theme.json"
|
|
18
18
|
|
|
19
19
|
const highlighter = await createHighlighter({
|
|
20
20
|
themes: [theme],
|
|
21
21
|
langs: ["javascript"]
|
|
22
|
-
})
|
|
22
|
+
})
|
|
23
23
|
|
|
24
24
|
const html = highlighter.codeToHtml("const x = 1", {
|
|
25
25
|
lang: "javascript",
|
|
26
26
|
theme: "cyclone-dark-high-contrast"
|
|
27
|
-
})
|
|
27
|
+
})
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
Or load at runtime:
|
|
31
31
|
|
|
32
32
|
```ts
|
|
33
|
-
import { readFile } from "node:fs/promises"
|
|
33
|
+
import { readFile } from "node:fs/promises"
|
|
34
34
|
|
|
35
|
-
const theme = JSON.parse(
|
|
36
|
-
|
|
37
|
-
);
|
|
38
|
-
await highlighter.loadTheme(theme);
|
|
35
|
+
const theme = JSON.parse(await readFile("./theme.json", "utf8"))
|
|
36
|
+
await highlighter.loadTheme(theme)
|
|
39
37
|
```
|
|
40
38
|
|
|
41
39
|
## Select / load theme
|
|
@@ -2,49 +2,32 @@
|
|
|
2
2
|
"name": "cyclone-dark-high-contrast",
|
|
3
3
|
"settings": [
|
|
4
4
|
{
|
|
5
|
-
"scope": [
|
|
6
|
-
"comment",
|
|
7
|
-
"punctuation.definition.comment"
|
|
8
|
-
],
|
|
5
|
+
"scope": ["comment", "punctuation.definition.comment"],
|
|
9
6
|
"settings": {
|
|
10
7
|
"foreground": "#9a9fa7",
|
|
11
8
|
"fontStyle": "italic"
|
|
12
9
|
}
|
|
13
10
|
},
|
|
14
11
|
{
|
|
15
|
-
"scope": [
|
|
16
|
-
"string",
|
|
17
|
-
"constant.other.symbol"
|
|
18
|
-
],
|
|
12
|
+
"scope": ["string", "constant.other.symbol"],
|
|
19
13
|
"settings": {
|
|
20
14
|
"foreground": "#2de498"
|
|
21
15
|
}
|
|
22
16
|
},
|
|
23
17
|
{
|
|
24
|
-
"scope": [
|
|
25
|
-
"constant",
|
|
26
|
-
"constant.numeric",
|
|
27
|
-
"constant.language"
|
|
28
|
-
],
|
|
18
|
+
"scope": ["constant", "constant.numeric", "constant.language"],
|
|
29
19
|
"settings": {
|
|
30
20
|
"foreground": "#ffb327"
|
|
31
21
|
}
|
|
32
22
|
},
|
|
33
23
|
{
|
|
34
|
-
"scope": [
|
|
35
|
-
"keyword",
|
|
36
|
-
"storage",
|
|
37
|
-
"storage.type"
|
|
38
|
-
],
|
|
24
|
+
"scope": ["keyword", "storage", "storage.type"],
|
|
39
25
|
"settings": {
|
|
40
26
|
"foreground": "#70a4ff"
|
|
41
27
|
}
|
|
42
28
|
},
|
|
43
29
|
{
|
|
44
|
-
"scope": [
|
|
45
|
-
"entity.name.function",
|
|
46
|
-
"support.function"
|
|
47
|
-
],
|
|
30
|
+
"scope": ["entity.name.function", "support.function"],
|
|
48
31
|
"settings": {
|
|
49
32
|
"foreground": "#70a4ff"
|
|
50
33
|
}
|
|
@@ -60,46 +43,31 @@
|
|
|
60
43
|
}
|
|
61
44
|
},
|
|
62
45
|
{
|
|
63
|
-
"scope": [
|
|
64
|
-
"entity.name.tag",
|
|
65
|
-
"meta.tag"
|
|
66
|
-
],
|
|
46
|
+
"scope": ["entity.name.tag", "meta.tag"],
|
|
67
47
|
"settings": {
|
|
68
48
|
"foreground": "#70a4ff"
|
|
69
49
|
}
|
|
70
50
|
},
|
|
71
51
|
{
|
|
72
|
-
"scope": [
|
|
73
|
-
"entity.other.attribute-name",
|
|
74
|
-
"support.constant"
|
|
75
|
-
],
|
|
52
|
+
"scope": ["entity.other.attribute-name", "support.constant"],
|
|
76
53
|
"settings": {
|
|
77
54
|
"foreground": "#70a4ff"
|
|
78
55
|
}
|
|
79
56
|
},
|
|
80
57
|
{
|
|
81
|
-
"scope": [
|
|
82
|
-
"variable",
|
|
83
|
-
"identifier"
|
|
84
|
-
],
|
|
58
|
+
"scope": ["variable", "identifier"],
|
|
85
59
|
"settings": {
|
|
86
60
|
"foreground": "#c3c3ca"
|
|
87
61
|
}
|
|
88
62
|
},
|
|
89
63
|
{
|
|
90
|
-
"scope": [
|
|
91
|
-
"punctuation",
|
|
92
|
-
"meta.brace"
|
|
93
|
-
],
|
|
64
|
+
"scope": ["punctuation", "meta.brace"],
|
|
94
65
|
"settings": {
|
|
95
66
|
"foreground": "#9a9fa7"
|
|
96
67
|
}
|
|
97
68
|
},
|
|
98
69
|
{
|
|
99
|
-
"scope": [
|
|
100
|
-
"invalid",
|
|
101
|
-
"invalid.illegal"
|
|
102
|
-
],
|
|
70
|
+
"scope": ["invalid", "invalid.illegal"],
|
|
103
71
|
"settings": {
|
|
104
72
|
"foreground": "#f00a45"
|
|
105
73
|
}
|
|
@@ -118,7 +86,7 @@
|
|
|
118
86
|
"editor.inactiveSelectionBackground": "#000000",
|
|
119
87
|
"editorLineNumber.foreground": "#9a9fa7",
|
|
120
88
|
"editorLineNumber.activeForeground": "#c3c3ca",
|
|
121
|
-
"editorIndentGuide.background1": "#
|
|
89
|
+
"editorIndentGuide.background1": "#2b2b33",
|
|
122
90
|
"editorIndentGuide.activeBackground1": "#9a9fa7",
|
|
123
91
|
"editorWhitespace.foreground": "#9a9fa7"
|
|
124
92
|
}
|
package/dist/light/INSTALL.md
CHANGED
|
@@ -13,29 +13,27 @@ Generated by `@razorwind/shiki`.
|
|
|
13
13
|
2. Register themes when creating a Shiki highlighter:
|
|
14
14
|
|
|
15
15
|
```ts
|
|
16
|
-
import { createHighlighter } from "shiki"
|
|
17
|
-
import theme from "./theme.json"
|
|
16
|
+
import { createHighlighter } from "shiki"
|
|
17
|
+
import theme from "./theme.json"
|
|
18
18
|
|
|
19
19
|
const highlighter = await createHighlighter({
|
|
20
20
|
themes: [theme],
|
|
21
21
|
langs: ["javascript"]
|
|
22
|
-
})
|
|
22
|
+
})
|
|
23
23
|
|
|
24
24
|
const html = highlighter.codeToHtml("const x = 1", {
|
|
25
25
|
lang: "javascript",
|
|
26
26
|
theme: "cyclone-light"
|
|
27
|
-
})
|
|
27
|
+
})
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
Or load at runtime:
|
|
31
31
|
|
|
32
32
|
```ts
|
|
33
|
-
import { readFile } from "node:fs/promises"
|
|
33
|
+
import { readFile } from "node:fs/promises"
|
|
34
34
|
|
|
35
|
-
const theme = JSON.parse(
|
|
36
|
-
|
|
37
|
-
);
|
|
38
|
-
await highlighter.loadTheme(theme);
|
|
35
|
+
const theme = JSON.parse(await readFile("./theme.json", "utf8"))
|
|
36
|
+
await highlighter.loadTheme(theme)
|
|
39
37
|
```
|
|
40
38
|
|
|
41
39
|
## Select / load theme
|
package/dist/light/theme.json
CHANGED
|
@@ -2,49 +2,32 @@
|
|
|
2
2
|
"name": "cyclone-light",
|
|
3
3
|
"settings": [
|
|
4
4
|
{
|
|
5
|
-
"scope": [
|
|
6
|
-
"comment",
|
|
7
|
-
"punctuation.definition.comment"
|
|
8
|
-
],
|
|
5
|
+
"scope": ["comment", "punctuation.definition.comment"],
|
|
9
6
|
"settings": {
|
|
10
7
|
"foreground": "#959698",
|
|
11
8
|
"fontStyle": "italic"
|
|
12
9
|
}
|
|
13
10
|
},
|
|
14
11
|
{
|
|
15
|
-
"scope": [
|
|
16
|
-
"string",
|
|
17
|
-
"constant.other.symbol"
|
|
18
|
-
],
|
|
12
|
+
"scope": ["string", "constant.other.symbol"],
|
|
19
13
|
"settings": {
|
|
20
14
|
"foreground": "#216b53"
|
|
21
15
|
}
|
|
22
16
|
},
|
|
23
17
|
{
|
|
24
|
-
"scope": [
|
|
25
|
-
"constant",
|
|
26
|
-
"constant.numeric",
|
|
27
|
-
"constant.language"
|
|
28
|
-
],
|
|
18
|
+
"scope": ["constant", "constant.numeric", "constant.language"],
|
|
29
19
|
"settings": {
|
|
30
20
|
"foreground": "#765417"
|
|
31
21
|
}
|
|
32
22
|
},
|
|
33
23
|
{
|
|
34
|
-
"scope": [
|
|
35
|
-
"keyword",
|
|
36
|
-
"storage",
|
|
37
|
-
"storage.type"
|
|
38
|
-
],
|
|
24
|
+
"scope": ["keyword", "storage", "storage.type"],
|
|
39
25
|
"settings": {
|
|
40
26
|
"foreground": "#2055b3"
|
|
41
27
|
}
|
|
42
28
|
},
|
|
43
29
|
{
|
|
44
|
-
"scope": [
|
|
45
|
-
"entity.name.function",
|
|
46
|
-
"support.function"
|
|
47
|
-
],
|
|
30
|
+
"scope": ["entity.name.function", "support.function"],
|
|
48
31
|
"settings": {
|
|
49
32
|
"foreground": "#2055b3"
|
|
50
33
|
}
|
|
@@ -60,46 +43,31 @@
|
|
|
60
43
|
}
|
|
61
44
|
},
|
|
62
45
|
{
|
|
63
|
-
"scope": [
|
|
64
|
-
"entity.name.tag",
|
|
65
|
-
"meta.tag"
|
|
66
|
-
],
|
|
46
|
+
"scope": ["entity.name.tag", "meta.tag"],
|
|
67
47
|
"settings": {
|
|
68
48
|
"foreground": "#2055b3"
|
|
69
49
|
}
|
|
70
50
|
},
|
|
71
51
|
{
|
|
72
|
-
"scope": [
|
|
73
|
-
"entity.other.attribute-name",
|
|
74
|
-
"support.constant"
|
|
75
|
-
],
|
|
52
|
+
"scope": ["entity.other.attribute-name", "support.constant"],
|
|
76
53
|
"settings": {
|
|
77
54
|
"foreground": "#2055b3"
|
|
78
55
|
}
|
|
79
56
|
},
|
|
80
57
|
{
|
|
81
|
-
"scope": [
|
|
82
|
-
"variable",
|
|
83
|
-
"identifier"
|
|
84
|
-
],
|
|
58
|
+
"scope": ["variable", "identifier"],
|
|
85
59
|
"settings": {
|
|
86
60
|
"foreground": "#555659"
|
|
87
61
|
}
|
|
88
62
|
},
|
|
89
63
|
{
|
|
90
|
-
"scope": [
|
|
91
|
-
"punctuation",
|
|
92
|
-
"meta.brace"
|
|
93
|
-
],
|
|
64
|
+
"scope": ["punctuation", "meta.brace"],
|
|
94
65
|
"settings": {
|
|
95
66
|
"foreground": "#959698"
|
|
96
67
|
}
|
|
97
68
|
},
|
|
98
69
|
{
|
|
99
|
-
"scope": [
|
|
100
|
-
"invalid",
|
|
101
|
-
"invalid.illegal"
|
|
102
|
-
],
|
|
70
|
+
"scope": ["invalid", "invalid.illegal"],
|
|
103
71
|
"settings": {
|
|
104
72
|
"foreground": "#8e223e"
|
|
105
73
|
}
|
|
@@ -118,7 +86,7 @@
|
|
|
118
86
|
"editor.inactiveSelectionBackground": "#f1f1f1",
|
|
119
87
|
"editorLineNumber.foreground": "#959698",
|
|
120
88
|
"editorLineNumber.activeForeground": "#555659",
|
|
121
|
-
"editorIndentGuide.background1": "#
|
|
89
|
+
"editorIndentGuide.background1": "#c0c0c1",
|
|
122
90
|
"editorIndentGuide.activeBackground1": "#959698",
|
|
123
91
|
"editorWhitespace.foreground": "#959698"
|
|
124
92
|
}
|
|
@@ -13,29 +13,27 @@ Generated by `@razorwind/shiki`.
|
|
|
13
13
|
2. Register themes when creating a Shiki highlighter:
|
|
14
14
|
|
|
15
15
|
```ts
|
|
16
|
-
import { createHighlighter } from "shiki"
|
|
17
|
-
import theme from "./theme.json"
|
|
16
|
+
import { createHighlighter } from "shiki"
|
|
17
|
+
import theme from "./theme.json"
|
|
18
18
|
|
|
19
19
|
const highlighter = await createHighlighter({
|
|
20
20
|
themes: [theme],
|
|
21
21
|
langs: ["javascript"]
|
|
22
|
-
})
|
|
22
|
+
})
|
|
23
23
|
|
|
24
24
|
const html = highlighter.codeToHtml("const x = 1", {
|
|
25
25
|
lang: "javascript",
|
|
26
26
|
theme: "cyclone-light-dimmed"
|
|
27
|
-
})
|
|
27
|
+
})
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
Or load at runtime:
|
|
31
31
|
|
|
32
32
|
```ts
|
|
33
|
-
import { readFile } from "node:fs/promises"
|
|
33
|
+
import { readFile } from "node:fs/promises"
|
|
34
34
|
|
|
35
|
-
const theme = JSON.parse(
|
|
36
|
-
|
|
37
|
-
);
|
|
38
|
-
await highlighter.loadTheme(theme);
|
|
35
|
+
const theme = JSON.parse(await readFile("./theme.json", "utf8"))
|
|
36
|
+
await highlighter.loadTheme(theme)
|
|
39
37
|
```
|
|
40
38
|
|
|
41
39
|
## Select / load theme
|