1
import { HighlightStyle } from '@codemirror/language';
2
import { EditorView } from '@codemirror/view';
3
import { tags } from '@lezer/highlight';
5
export const baseTheme = EditorView.theme({
9
outline_fallback: 'none',
14
fontFamily: '"DejaVu Sans Mono", monospace',
18
'-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"',
21
'.cm-matchingBracket': {
23
outline: '1px dashed transparent',
25
'.cm-nonmatchingBracket': { borderColor: 'red' },
27
'.cm-tooltip.cm-tooltip-autocomplete': {
30
fontFamily: '"DejaVu Sans Mono", monospace',
34
padding: '2px 1em 2px 3px',
39
'.cm-completionDetail': {
44
'.cm-tooltip.cm-completionInfo': {
47
fontFamily: "'Open Sans', 'Lucida Sans Unicode', 'Lucida Grande', sans-serif;",
50
maxWidth: 'min-content',
53
'.cm-completionInfo.cm-completionInfo-right': {
62
borderColor: 'transparent',
66
'.cm-completionInfo.cm-completionInfo-left': {
75
borderColor: 'transparent',
80
'.cm-completionMatchedText': {
81
textDecoration: 'none',
85
'.cm-selectionMatch': {
86
backgroundColor: '#e6f3ff',
90
'&.cm-diagnostic-error': {
91
borderLeft: '3px solid #e65013',
95
'.cm-completionIcon': {
96
boxSizing: 'content-box',
100
verticalAlign: 'top',
101
'&:after': { content: "'\\ea88'" },
102
fontFamily: 'codicon',
107
'.cm-completionIcon-function, .cm-completionIcon-method': {
108
'&:after': { content: "'\\ea8c'" },
110
'.cm-completionIcon-class': {
111
'&:after': { content: "'○'" },
113
'.cm-completionIcon-interface': {
114
'&:after': { content: "'◌'" },
116
'.cm-completionIcon-variable': {
117
'&:after': { content: "'𝑥'" },
119
'.cm-completionIcon-constant': {
120
'&:after': { content: "'\\eb5f'" },
122
'.cm-completionIcon-type': {
123
'&:after': { content: "'𝑡'" },
125
'.cm-completionIcon-enum': {
126
'&:after': { content: "'∪'" },
128
'.cm-completionIcon-property': {
129
'&:after': { content: "'□'" },
131
'.cm-completionIcon-keyword': {
132
'&:after': { content: "'\\eb62'" },
134
'.cm-completionIcon-namespace': {
135
'&:after': { content: "'▢'" },
137
'.cm-completionIcon-text': {
138
'&:after': { content: "'\\ea95'" },
143
export const lightTheme = EditorView.theme(
146
backgroundColor: '#f8f8f8',
147
borderColor: 'rgba(52, 79, 113, 0.2)',
150
'.cm-tooltip.cm-tooltip-autocomplete': {
152
backgroundColor: '#ddd',
154
'& > ul > li[aria-selected]': {
155
backgroundColor: '#d6ebff',
160
'.cm-tooltip.cm-completionInfo': {
161
backgroundColor: '#d6ebff',
164
'.cm-tooltip > .cm-completionInfo.cm-completionInfo-right': {
166
borderRightColor: '#d6ebff',
169
'.cm-tooltip > .cm-completionInfo.cm-completionInfo-left': {
171
borderLeftColor: '#d6ebff',
177
backgroundColor: '#add6ff',
179
'& > span::selection': {
180
backgroundColor: '#add6ff',
184
'.cm-matchingBracket': {
186
backgroundColor: '#dedede',
189
'.cm-completionMatchedText': {
193
'.cm-completionIcon': {
197
'.cm-completionIcon-constant': {
201
'.cm-completionIcon-function, .cm-completionIcon-method': {
205
'.cm-completionIcon-keyword': {
212
export const darkTheme = EditorView.theme(
218
'.cm-tooltip.cm-completionInfo': {
219
backgroundColor: '#333338',
222
'.cm-tooltip > .cm-completionInfo.cm-completionInfo-right': {
224
borderRightColor: '#333338',
227
'.cm-tooltip > .cm-completionInfo.cm-completionInfo-left': {
229
borderLeftColor: '#333338',
235
backgroundColor: '#767676',
237
'& > span::selection': {
238
backgroundColor: '#767676',
242
'.cm-matchingBracket, &.cm-focused .cm-matchingBracket': {
243
backgroundColor: '#616161',
246
'.cm-completionMatchedText': {
250
'.cm-completionIcon, .cm-completionIcon-constant': {
254
'.cm-completionIcon-function, .cm-completionIcon-method': {
258
'.cm-completionIcon-keyword': {
259
color: '#cbd5e1 !important',
265
export const promqlHighlighter = HighlightStyle.define([
266
{ tag: tags.number, color: '#09885a' },
267
{ tag: tags.string, color: '#a31515' },
268
{ tag: tags.keyword, color: '#008080' },
269
{ tag: tags.function(tags.variableName), color: '#008080' },
270
{ tag: tags.labelName, color: '#800000' },
271
{ tag: tags.operator },
272
{ tag: tags.modifier, color: '#008080' },
274
{ tag: tags.squareBracket },
276
{ tag: tags.invalid, color: 'red' },
277
{ tag: tags.comment, color: '#888', fontStyle: 'italic' },
280
export const darkPromqlHighlighter = HighlightStyle.define([
281
{ tag: tags.number, color: '#22c55e' },
282
{ tag: tags.string, color: '#fca5a5' },
283
{ tag: tags.keyword, color: '#14bfad' },
284
{ tag: tags.function(tags.variableName), color: '#14bfad' },
285
{ tag: tags.labelName, color: '#ff8585' },
286
{ tag: tags.operator },
287
{ tag: tags.modifier, color: '#14bfad' },
289
{ tag: tags.squareBracket },
291
{ tag: tags.invalid, color: '#ff3d3d' },
292
{ tag: tags.comment, color: '#9ca3af', fontStyle: 'italic' },