Skip to content

Commit fa73b0a

Browse files
committedAug 26, 2023
feat(theme): add abyss theme.
1 parent fbb07e1 commit fa73b0a

File tree

13 files changed

+625
-7
lines changed

13 files changed

+625
-7
lines changed
 

‎.github/workflows/ci.yml

+16-7
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,22 @@ jobs:
106106
env:
107107
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
108108

109+
110+
- name: 📦 @uiw/codemirror-theme-abcdef publish to NPM
111+
run: npm publish --access public
112+
working-directory: ./themes/abcdef/
113+
continue-on-error: true
114+
env:
115+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
116+
117+
118+
- name: 📦 @uiw/codemirror-themes-abyss publish to NPM
119+
run: npm publish --access public
120+
working-directory: ./themes/abyss/
121+
continue-on-error: true
122+
env:
123+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
124+
109125

110126
- name: 📦 @uiw/codemirror-themes-all publish to NPM
111127
run: npm publish --access public
@@ -146,13 +162,6 @@ jobs:
146162
env:
147163
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
148164

149-
- name: 📦 @uiw/codemirror-theme-abcdef publish to NPM
150-
run: npm publish --access public
151-
working-directory: ./themes/abcdef/
152-
continue-on-error: true
153-
env:
154-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
155-
156165
- name: 📦 @uiw/codemirror-theme-androidstudio publish to NPM
157166
run: npm publish --access public
158167
working-directory: ./themes/androidstudio/

‎themes/_scripts/data/abyss.json

+373
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,373 @@
1+
{
2+
"name": "Abyss",
3+
"tokenColors": [
4+
{
5+
"settings": {
6+
"foreground": "#6688cc"
7+
}
8+
},
9+
{
10+
"scope": ["meta.embedded", "source.groovy.embedded", "string meta.image.inline.markdown"],
11+
"settings": {
12+
"foreground": "#6688cc"
13+
}
14+
},
15+
{
16+
"name": "Comment",
17+
"scope": "comment",
18+
"settings": {
19+
"foreground": "#384887"
20+
}
21+
},
22+
{
23+
"name": "String",
24+
"scope": "string",
25+
"settings": {
26+
"foreground": "#22aa44"
27+
}
28+
},
29+
{
30+
"name": "Number",
31+
"scope": "constant.numeric",
32+
"settings": {
33+
"foreground": "#f280d0"
34+
}
35+
},
36+
{
37+
"name": "Built-in constant",
38+
"scope": "constant.language",
39+
"settings": {
40+
"foreground": "#f280d0"
41+
}
42+
},
43+
{
44+
"name": "User-defined constant",
45+
"scope": ["constant.character", "constant.other"],
46+
"settings": {
47+
"foreground": "#f280d0"
48+
}
49+
},
50+
{
51+
"name": "Variable",
52+
"scope": "variable",
53+
"settings": {
54+
"fontStyle": ""
55+
}
56+
},
57+
{
58+
"name": "Keyword",
59+
"scope": "keyword",
60+
"settings": {
61+
"foreground": "#225588"
62+
}
63+
},
64+
{
65+
"name": "Storage",
66+
"scope": "storage",
67+
"settings": {
68+
"fontStyle": "",
69+
"foreground": "#225588"
70+
}
71+
},
72+
{
73+
"name": "Storage type",
74+
"scope": "storage.type",
75+
"settings": {
76+
"fontStyle": "italic",
77+
"foreground": "#9966b8"
78+
}
79+
},
80+
{
81+
"name": "Class name",
82+
"scope": ["entity.name.class", "entity.name.type", "entity.name.namespace", "entity.name.scope-resolution"],
83+
"settings": {
84+
"fontStyle": "underline",
85+
"foreground": "#ffeebb"
86+
}
87+
},
88+
{
89+
"name": "Inherited class",
90+
"scope": "entity.other.inherited-class",
91+
"settings": {
92+
"fontStyle": "italic underline",
93+
"foreground": "#ddbb88"
94+
}
95+
},
96+
{
97+
"name": "Function name",
98+
"scope": "entity.name.function",
99+
"settings": {
100+
"fontStyle": "",
101+
"foreground": "#ddbb88"
102+
}
103+
},
104+
{
105+
"name": "Function argument",
106+
"scope": "variable.parameter",
107+
"settings": {
108+
"fontStyle": "italic",
109+
"foreground": "#2277ff"
110+
}
111+
},
112+
{
113+
"name": "Tag name",
114+
"scope": "entity.name.tag",
115+
"settings": {
116+
"fontStyle": "",
117+
"foreground": "#225588"
118+
}
119+
},
120+
{
121+
"name": "Tag attribute",
122+
"scope": "entity.other.attribute-name",
123+
"settings": {
124+
"fontStyle": "",
125+
"foreground": "#ddbb88"
126+
}
127+
},
128+
{
129+
"name": "Library function",
130+
"scope": "support.function",
131+
"settings": {
132+
"fontStyle": "",
133+
"foreground": "#9966b8"
134+
}
135+
},
136+
{
137+
"name": "Library constant",
138+
"scope": "support.constant",
139+
"settings": {
140+
"fontStyle": "",
141+
"foreground": "#9966b8"
142+
}
143+
},
144+
{
145+
"name": "Library class/type",
146+
"scope": ["support.type", "support.class"],
147+
"settings": {
148+
"fontStyle": "italic",
149+
"foreground": "#9966b8"
150+
}
151+
},
152+
{
153+
"name": "Library variable",
154+
"scope": "support.other.variable",
155+
"settings": {
156+
"fontStyle": ""
157+
}
158+
},
159+
{
160+
"name": "Invalid",
161+
"scope": "invalid",
162+
"settings": {
163+
"fontStyle": "",
164+
"foreground": "#A22D44"
165+
}
166+
},
167+
{
168+
"name": "Invalid deprecated",
169+
"scope": "invalid.deprecated",
170+
"settings": {
171+
"foreground": "#A22D44"
172+
}
173+
},
174+
{
175+
"name": "diff: header",
176+
"scope": ["meta.diff", "meta.diff.header"],
177+
"settings": {
178+
"fontStyle": "italic",
179+
"foreground": "#E0EDDD"
180+
}
181+
},
182+
{
183+
"name": "diff: deleted",
184+
"scope": "markup.deleted",
185+
"settings": {
186+
"fontStyle": "",
187+
"foreground": "#dc322f"
188+
}
189+
},
190+
{
191+
"name": "diff: changed",
192+
"scope": "markup.changed",
193+
"settings": {
194+
"fontStyle": "",
195+
"foreground": "#cb4b16"
196+
}
197+
},
198+
{
199+
"name": "diff: inserted",
200+
"scope": "markup.inserted",
201+
"settings": {
202+
"foreground": "#219186"
203+
}
204+
},
205+
{
206+
"name": "Markup Quote",
207+
"scope": "markup.quote",
208+
"settings": {
209+
"foreground": "#22aa44"
210+
}
211+
},
212+
{
213+
"name": "Markup Styling",
214+
"scope": ["markup.bold", "markup.italic"],
215+
"settings": {
216+
"foreground": "#22aa44"
217+
}
218+
},
219+
{
220+
"name": "Markup: Strong",
221+
"scope": "markup.bold",
222+
"settings": {
223+
"fontStyle": "bold"
224+
}
225+
},
226+
{
227+
"name": "Markup: Emphasis",
228+
"scope": "markup.italic",
229+
"settings": {
230+
"fontStyle": "italic"
231+
}
232+
},
233+
{
234+
"scope": "markup.strikethrough",
235+
"settings": {
236+
"fontStyle": "strikethrough"
237+
}
238+
},
239+
{
240+
"name": "Markup Inline",
241+
"scope": "markup.inline.raw",
242+
"settings": {
243+
"fontStyle": "",
244+
"foreground": "#9966b8"
245+
}
246+
},
247+
{
248+
"name": "Markup Headings",
249+
"scope": ["markup.heading", "markup.heading.setext"],
250+
"settings": {
251+
"fontStyle": "bold",
252+
"foreground": "#6688cc"
253+
}
254+
}
255+
],
256+
"colors": {
257+
"editor.background": "#000c18",
258+
"editor.foreground": "#6688cc",
259+
260+
"focusBorder": "#596F99",
261+
262+
"input.background": "#181f2f",
263+
"inputOption.activeBorder": "#1D4A87",
264+
"inputValidation.infoBorder": "#384078",
265+
"inputValidation.infoBackground": "#051336",
266+
"inputValidation.warningBackground": "#5B7E7A",
267+
"inputValidation.warningBorder": "#5B7E7A",
268+
"inputValidation.errorBackground": "#A22D44",
269+
"inputValidation.errorBorder": "#AB395B",
270+
271+
"badge.background": "#0063a5",
272+
"progressBar.background": "#0063a5",
273+
274+
"dropdown.background": "#181f2f",
275+
276+
"button.background": "#2B3C5D",
277+
278+
"list.activeSelectionBackground": "#08286b",
279+
"quickInputList.focusBackground": "#08286b",
280+
"list.hoverBackground": "#061940",
281+
"list.inactiveSelectionBackground": "#152037",
282+
"list.dropBackground": "#041D52",
283+
"list.highlightForeground": "#0063a5",
284+
285+
"scrollbar.shadow": "#515E91AA",
286+
"scrollbarSlider.activeBackground": "#3B3F5188",
287+
"scrollbarSlider.background": "#1F2230AA",
288+
"scrollbarSlider.hoverBackground": "#3B3F5188",
289+
290+
"editorWidget.background": "#262641",
291+
"editorCursor.foreground": "#ddbb88",
292+
"editorWhitespace.foreground": "#103050",
293+
"editor.lineHighlightBackground": "#082050",
294+
"editor.selectionBackground": "#770811",
295+
"editorIndentGuide.background": "#002952",
296+
"editorIndentGuide.activeBackground": "#204972",
297+
"editorHoverWidget.background": "#000c38",
298+
"editorHoverWidget.border": "#004c18",
299+
"editorLineNumber.foreground": "#406385",
300+
"editorLineNumber.activeForeground": "#80a2c2",
301+
"editorMarkerNavigation.background": "#060621",
302+
"editorMarkerNavigationError.background": "#AB395B",
303+
"editorMarkerNavigationWarning.background": "#5B7E7A",
304+
"editorLink.activeForeground": "#0063a5",
305+
"editor.findMatchHighlightBackground": "#eeeeee44",
306+
307+
"peekViewResult.background": "#060621",
308+
"peekViewEditor.background": "#10192c",
309+
"peekViewTitle.background": "#10192c",
310+
"peekView.border": "#2b2b4a",
311+
"peekViewEditor.matchHighlightBackground": "#eeeeee33",
312+
"peekViewResult.matchHighlightBackground": "#eeeeee44",
313+
314+
"ports.iconRunningProcessForeground": "#80a2c2",
315+
"diffEditor.insertedTextBackground": "#31958A55",
316+
"diffEditor.removedTextBackground": "#892F4688",
317+
318+
"minimap.selectionHighlight": "#750000",
319+
320+
"titleBar.activeBackground": "#10192c",
321+
322+
"editorGroup.border": "#2b2b4a",
323+
"editorGroup.dropBackground": "#25375daa",
324+
"editorGroupHeader.tabsBackground": "#1c1c2a",
325+
326+
"tab.border": "#2b2b4a",
327+
"tab.inactiveBackground": "#10192c",
328+
"tab.lastPinnedBorder": "#2b3c5d",
329+
330+
"activityBar.background": "#051336",
331+
"activityBarItem.profilesBackground": "#082877",
332+
333+
"panel.border": "#2b2b4a",
334+
335+
"sideBar.background": "#060621",
336+
"sideBarSectionHeader.background": "#10192c",
337+
338+
"statusBar.background": "#10192c",
339+
"statusBar.noFolderBackground": "#10192c",
340+
"statusBar.debuggingBackground": "#10192c",
341+
"statusBarItem.remoteBackground": "#0063a5",
342+
"statusBarItem.prominentBackground": "#0063a5",
343+
"statusBarItem.prominentHoverBackground": "#0063a5dd",
344+
345+
"debugToolBar.background": "#051336",
346+
"debugExceptionWidget.background": "#051336",
347+
"debugExceptionWidget.border": "#AB395B",
348+
349+
"pickerGroup.border": "#596F99",
350+
"pickerGroup.foreground": "#596F99",
351+
352+
"extensionButton.prominentBackground": "#5f8b3b",
353+
"extensionButton.prominentHoverBackground": "#5f8b3bbb",
354+
355+
"terminal.ansiBlack": "#111111",
356+
"terminal.ansiRed": "#ff9da4",
357+
"terminal.ansiGreen": "#d1f1a9",
358+
"terminal.ansiYellow": "#ffeead",
359+
"terminal.ansiBlue": "#bbdaff",
360+
"terminal.ansiMagenta": "#ebbbff",
361+
"terminal.ansiCyan": "#99ffff",
362+
"terminal.ansiWhite": "#cccccc",
363+
"terminal.ansiBrightBlack": "#333333",
364+
"terminal.ansiBrightRed": "#ff7882",
365+
"terminal.ansiBrightGreen": "#b8f171",
366+
"terminal.ansiBrightYellow": "#ffe580",
367+
"terminal.ansiBrightBlue": "#80baff",
368+
"terminal.ansiBrightMagenta": "#d778ff",
369+
"terminal.ansiBrightCyan": "#78ffff",
370+
"terminal.ansiBrightWhite": "#ffffff"
371+
},
372+
"semanticHighlighting": true
373+
}

‎themes/_scripts/main.mjs

+5
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,11 @@ const getString = (obj) => `export const config = ${JSON.stringify(obj, null, 2)
103103
await FS.writeFile(themePath, getString(themeRed));
104104
console.log(`🎉 File \x1b[32;1m${themePath}\x1b[0m created.`);
105105

106+
const themeAbyss = format(require('./data/abyss.json'));
107+
themePath = '../abyss/src/color.ts';
108+
await FS.writeFile(themePath, getString(themeAbyss));
109+
console.log(`🎉 File \x1b[32;1m${themePath}\x1b[0m created.`);
110+
106111

107112
const themeSolarizedDark = format(require('./data/solarized.dark.json'), true)
108113
console.log('~~~::', themeSolarizedDark);

‎themes/abyss/README.md

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
<!--rehype:ignore:start-->
2+
3+
# Abyss Theme
4+
5+
<!--rehype:ignore:end-->
6+
7+
[![npm version](https://img.shields.io/npm/v/@uiw/codemirror-theme-abyss.svg)](https://www.npmjs.com/package/@uiw/codemirror-theme-abyss)
8+
9+
Abyss theme for cm6, generated from [vscode themes](https://github.com/microsoft/vscode/blob/main/extensions/theme-red/themes/abyss-color-theme.json).
10+
11+
<a href="https://uiwjs.github.io/react-codemirror/#/theme/data/abyss">
12+
<img width="436" alt="codemirror-theme-abyss" src="https://github.com/uiwjs/react-codemirror/assets/1680273/aef0a618-8c74-4466-9a04-35e368f582a7">
13+
</a>
14+
15+
## Install
16+
17+
```bash
18+
npm install @uiw/codemirror-theme-abyss --save
19+
```
20+
21+
```jsx
22+
import { abyss, abyssInit } from '@uiw/codemirror-theme-abyss';
23+
24+
<CodeMirror theme={abyss} />
25+
<CodeMirror
26+
theme={abyssInit({
27+
settings: {
28+
caret: '#c6c6c6',
29+
fontFamily: 'monospace',
30+
}
31+
})}
32+
/>
33+
```
34+
35+
## API
36+
37+
```tsx
38+
import { CreateThemeOptions } from '@uiw/codemirror-themes';
39+
export declare const defaultSettingsQuietlight: CreateThemeOptions['settings'];
40+
export declare const abyssInit: (options?: Partial<CreateThemeOptions>) => import('@codemirror/state').Extension;
41+
export declare const abyss: import('@codemirror/state').Extension;
42+
```
43+
44+
## Usage
45+
46+
```jsx
47+
import CodeMirror from '@uiw/react-codemirror';
48+
import { abyss } from '@uiw/codemirror-theme-abyss';
49+
import { javascript } from '@codemirror/lang-javascript';
50+
51+
function App() {
52+
return (
53+
<CodeMirror
54+
value="console.log('hello world!');"
55+
height="200px"
56+
theme={abyss}
57+
extensions={[javascript({ jsx: true })]}
58+
onChange={(value, viewUpdate) => {
59+
console.log('value:', value);
60+
}}
61+
/>
62+
);
63+
}
64+
export default App;
65+
```
66+
67+
```js
68+
import { EditorView } from '@codemirror/view';
69+
import { EditorState } from '@codemirror/state';
70+
import { javascript } from '@codemirror/lang-javascript';
71+
import { abyss } from '@uiw/codemirror-theme-abyss';
72+
73+
const state = EditorState.create({
74+
doc: 'my source code',
75+
extensions: [abyss, javascript({ jsx: true })],
76+
});
77+
78+
const view = new EditorView({
79+
parent: document.querySelector('#editor'),
80+
state,
81+
});
82+
```
83+
84+
## Contributors
85+
86+
As always, thanks to our amazing contributors!
87+
88+
<a href="https://github.com/uiwjs/react-codemirror/graphs/contributors">
89+
<img src="https://uiwjs.github.io/react-codemirror/CONTRIBUTORS.svg" />
90+
</a>
91+
92+
Made with [github-action-contributors](https://github.com/jaywcjlove/github-action-contributors).
93+
94+
## License
95+
96+
Licensed under the MIT License.

‎themes/abyss/package.json

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"name": "@uiw/codemirror-theme-abyss",
3+
"version": "4.21.10",
4+
"description": "Theme abyss for CodeMirror.",
5+
"homepage": "https://uiwjs.github.io/react-codemirror/#/theme/data/abyss",
6+
"author": "kenny wong <wowohoo@qq.com>",
7+
"license": "MIT",
8+
"main": "./cjs/index.js",
9+
"module": "./esm/index.js",
10+
"scripts": {
11+
"watch": "tsbb watch src/*.ts --use-babel",
12+
"build": "tsbb build src/*.ts --use-babel"
13+
},
14+
"repository": {
15+
"type": "git",
16+
"url": "https://github.com/uiwjs/react-codemirror.git"
17+
},
18+
"files": [
19+
"src",
20+
"esm",
21+
"cjs"
22+
],
23+
"dependencies": {
24+
"@uiw/codemirror-themes": "4.21.10"
25+
},
26+
"keywords": [
27+
"codemirror",
28+
"codemirror-theme",
29+
"codemirror6",
30+
"theme",
31+
"abyss",
32+
"syntax",
33+
"ide",
34+
"code"
35+
]
36+
}

‎themes/abyss/src/color.ts

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
export const config = {
2+
background: '#000c18',
3+
foreground: '#6688cc',
4+
selection: '#770811',
5+
cursor: '#ddbb88',
6+
dropdownBackground: '#181f2f',
7+
activeLine: '#082050',
8+
matchingBracket: '#082050',
9+
keyword: '#225588',
10+
storage: '#225588',
11+
variable: '#2277ff',
12+
parameter: '#2277ff',
13+
function: '#9966b8',
14+
string: '#22aa44',
15+
constant: '#f280d0',
16+
type: '#9966b8',
17+
class: '#ddbb88',
18+
number: '#f280d0',
19+
comment: '#384887',
20+
heading: '#6688cc',
21+
invalid: '#A22D44',
22+
regexp: '#22aa44',
23+
};

‎themes/abyss/src/index.ts

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import { tags as t } from '@lezer/highlight';
2+
import { createTheme, CreateThemeOptions } from '@uiw/codemirror-themes';
3+
import { config } from './color';
4+
5+
export const defaultSettingsAbyss: CreateThemeOptions['settings'] = {
6+
background: config.background,
7+
foreground: config.foreground,
8+
caret: config.cursor,
9+
selection: config.selection,
10+
selectionMatch: config.selection,
11+
gutterBackground: config.background,
12+
gutterForeground: config.foreground,
13+
lineHighlight: config.activeLine,
14+
};
15+
16+
export const abyssInit = (options?: Partial<CreateThemeOptions>) => {
17+
const { theme = 'dark', settings = {}, styles = [] } = options || {};
18+
return createTheme({
19+
theme: theme,
20+
settings: {
21+
...defaultSettingsAbyss,
22+
...settings,
23+
},
24+
styles: [
25+
{ tag: t.keyword, color: config.keyword },
26+
{ tag: [t.name, t.deleted, t.character, t.macroName], color: config.variable },
27+
{ tag: [t.propertyName], color: config.function },
28+
{ tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)], color: config.string },
29+
{ tag: [t.function(t.variableName), t.labelName], color: config.function },
30+
{ tag: [t.color, t.constant(t.name), t.standard(t.name)], color: config.constant },
31+
{ tag: [t.definition(t.name), t.separator], color: config.variable },
32+
{ tag: [t.className], color: config.class },
33+
{ tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], color: config.number },
34+
{ tag: [t.typeName], color: config.type, fontStyle: config.type },
35+
{ tag: [t.operator, t.operatorKeyword], color: config.keyword },
36+
{ tag: [t.url, t.escape, t.regexp, t.link], color: config.regexp },
37+
{ tag: [t.meta, t.comment], color: config.comment },
38+
{ tag: t.strong, fontWeight: 'bold' },
39+
{ tag: t.emphasis, fontStyle: 'italic' },
40+
{ tag: t.link, textDecoration: 'underline' },
41+
{ tag: t.heading, fontWeight: 'bold', color: config.heading },
42+
{ tag: [t.atom, t.bool, t.special(t.variableName)], color: config.variable },
43+
{ tag: t.invalid, color: config.invalid },
44+
{ tag: t.strikethrough, textDecoration: 'line-through' },
45+
...styles,
46+
],
47+
});
48+
};
49+
50+
export const abyss = abyssInit();

‎themes/abyss/tsconfig.json

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"extends": "../../tsconfig",
3+
"include": ["src"],
4+
"compilerOptions": {
5+
"outDir": "./cjs",
6+
"baseUrl": ".",
7+
"noEmit": false
8+
}
9+
}

‎themes/all/package.json

+3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
],
2323
"dependencies": {
2424
"@uiw/codemirror-theme-abcdef": "4.21.10",
25+
"@uiw/codemirror-theme-abyss": "4.21.10",
2526
"@uiw/codemirror-theme-androidstudio": "4.21.10",
2627
"@uiw/codemirror-theme-atomone": "4.21.10",
2728
"@uiw/codemirror-theme-aura": "4.21.10",
@@ -38,6 +39,8 @@
3839
"@uiw/codemirror-theme-noctis-lilac": "4.21.10",
3940
"@uiw/codemirror-theme-nord": "4.21.10",
4041
"@uiw/codemirror-theme-okaidia": "4.21.10",
42+
"@uiw/codemirror-theme-quietlight": "4.21.10",
43+
"@uiw/codemirror-theme-red": "4.21.10",
4144
"@uiw/codemirror-theme-solarized": "4.21.10",
4245
"@uiw/codemirror-theme-sublime": "4.21.10",
4346
"@uiw/codemirror-theme-tokyo-night": "4.21.10",

‎themes/all/src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export * from '@uiw/codemirror-theme-abcdef';
2+
export * from '@uiw/codemirror-theme-abyss';
23
export * from '@uiw/codemirror-theme-androidstudio';
34
export * from '@uiw/codemirror-theme-atomone';
45
export * from '@uiw/codemirror-theme-aura';

‎www/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
"@uiw/codemirror-extensions-mentions": "4.21.10",
4646
"@uiw/codemirror-extensions-zebra-stripes": "4.21.10",
4747
"@uiw/codemirror-theme-abcdef": "4.21.10",
48+
"@uiw/codemirror-theme-abyss": "4.21.10",
4849
"@uiw/codemirror-theme-androidstudio": "4.21.10",
4950
"@uiw/codemirror-theme-atomone": "4.21.10",
5051
"@uiw/codemirror-theme-aura": "4.21.10",

‎www/src/pages/theme/themes/Datas.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { abcdef } from '@uiw/codemirror-theme-abcdef';
2+
import { abyss } from '@uiw/codemirror-theme-abyss';
23
import { androidstudio } from '@uiw/codemirror-theme-androidstudio';
34
import { atomone } from '@uiw/codemirror-theme-atomone';
45
import { aura } from '@uiw/codemirror-theme-aura';
@@ -27,6 +28,7 @@ import { xcodeLight, xcodeDark } from '@uiw/codemirror-theme-xcode';
2728

2829
export const themeData = {
2930
abcdef,
31+
abyss,
3032
androidstudio,
3133
atomone,
3234
aura,

‎www/src/router.tsx

+10
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,16 @@ export const routes: MenuRouteObject[] = [
197197
/>
198198
),
199199
},
200+
{
201+
path: 'data/abyss',
202+
label: 'Abyss',
203+
element: (
204+
<Preview
205+
themePkg="@uiw/codemirror-theme-abyss"
206+
path={() => import('@uiw/codemirror-theme-abyss/README.md')}
207+
/>
208+
),
209+
},
200210
{
201211
path: 'data/androidstudio',
202212
label: 'Android Studio',

0 commit comments

Comments
 (0)
Please sign in to comment.