@fsegurai/codemirror-theme-andromeda 6.1.3 → 6.2.0-beta

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/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  <p align="center">
2
- <img alt="CodeMirror 6 Themes Logo" src="https://raw.githubusercontent.com/fsegurai/codemirror-themes/main/demo/public/codemirror-themes.png">
2
+ <img alt="CodeMirror 6 Themes Logo" src="https://raw.githubusercontent.com/fsegurai/codemirror-themes/main/public/codemirror-themes.png">
3
3
  </p>
4
4
 
5
5
  <p align="center">
6
6
  <a href="https://github.com/fsegurai/codemirror-themes">
7
- <img src="https://img.shields.io/azure-devops/build/fsegurai/Libraries%2520NodeJs/15/main?label=Build%20Status&"
7
+ <img src="https://img.shields.io/azure-devops/build/fsegurai/Libraries%2520NodeJs/16/main?label=Build%20Status&"
8
8
  alt="Test Status">
9
9
  </a>
10
10
  <a href="https://www.npmjs.org/package/@fsegurai/codemirror-theme-andromeda">
@@ -69,32 +69,32 @@ Read the [CodeMirror documentation](https://codemirror.net/6/examples/styling/)
69
69
 
70
70
  ### Available Themes
71
71
 
72
- - [All - Bundle](./packages/bundle)
73
- - [Abcdef](./packages/abcdef)
74
- - [Abyss](./packages/abyss)
75
- - [Android Studio](./packages/android-studio)
76
- - [Andromeda](./packages/andromeda)
77
- - [Basic Dark](./packages/basic-dark)
78
- - [Basic Light](./packages/basic-light)
79
- - [Forest](./packages/forest)
80
- - [GitHub Dark](./packages/github-dark)
81
- - [GitHub Light](./packages/github-light)
82
- - [Gruvbox Dark](./packages/gruvbox-dark)
83
- - [Gruvbox Light](./packages/gruvbox-light)
84
- - [Material Dark](./packages/material-dark)
85
- - [Material Light](./packages/material-light)
86
- - [Monokai](./packages/monokai)
87
- - [Nord](./packages/nord)
88
- - [Palenight](./packages/palenight)
89
- - [Solarized Dark](./packages/solarized-dark)
90
- - [Solarized Light](./packages/solarized-light)
91
- - [Tokyo Night Day](./packages/tokyo-night-day)
92
- - [Tokyo Night Storm](./packages/tokyo-night-storm)
93
- - [Volcano](./packages/volcano)
94
- - [VS Code Dark](./packages/vscode-dark)
95
- - [VS Code Light](./packages/vscode-light)
96
-
97
- For a full list, see the [<code>@fsegurai/codemirror-theme-bundle</code>](https://github.com/fsegurai/codemirror-themes/tree/main/packages/bundle) directory or the online demo.
72
+ | Theme | Package | Version |
73
+ |-------------------|----------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
74
+ | All - Bundle | [@fsegurai/codemirror-theme-bundle](https://www.npmjs.com/package/@fsegurai/codemirror-theme-bundle) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-bundle) |
75
+ | Abcdef | [@fsegurai/codemirror-theme-abcdef](https://www.npmjs.com/package/@fsegurai/codemirror-theme-abcdef) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-abcdef) |
76
+ | Abyss | [@fsegurai/codemirror-theme-abyss](https://www.npmjs.com/package/@fsegurai/codemirror-theme-abyss) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-abyss) |
77
+ | Android Studio | [@fsegurai/codemirror-theme-android-studio](https://www.npmjs.com/package/@fsegurai/codemirror-theme-android-studio) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-android-studio) |
78
+ | Andromeda | [@fsegurai/codemirror-theme-andromeda](https://www.npmjs.com/package/@fsegurai/codemirror-theme-andromeda) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-andromeda) |
79
+ | Basic Light | [@fsegurai/codemirror-theme-basic-light](https://www.npmjs.com/package/@fsegurai/codemirror-theme-basic-light) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-basic-light) |
80
+ | Basic Dark | [@fsegurai/codemirror-theme-basic-dark](https://www.npmjs.com/package/@fsegurai/codemirror-theme-basic-dark) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-basic-dark) |
81
+ | Forest | [@fsegurai/codemirror-theme-forest](https://www.npmjs.com/package/@fsegurai/codemirror-theme-forest) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-forest) |
82
+ | GitHub Light | [@fsegurai/codemirror-theme-github-light](https://www.npmjs.com/package/@fsegurai/codemirror-theme-github-light) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-github-light) |
83
+ | GitHub Dark | [@fsegurai/codemirror-theme-github-dark](https://www.npmjs.com/package/@fsegurai/codemirror-theme-github-dark) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-github-dark) |
84
+ | Gruvbox Light | [@fsegurai/codemirror-theme-gruvbox-light](https://www.npmjs.com/package/@fsegurai/codemirror-theme-gruvbox-light) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-gruvbox-light) |
85
+ | Gruvbox Dark | [@fsegurai/codemirror-theme-gruvbox-dark](https://www.npmjs.com/package/@fsegurai/codemirror-theme-gruvbox-dark) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-gruvbox-dark) |
86
+ | Material Light | [@fsegurai/codemirror-theme-material-light](https://www.npmjs.com/package/@fsegurai/codemirror-theme-material-light) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-material-light) |
87
+ | Material Dark | [@fsegurai/codemirror-theme-material-dark](https://www.npmjs.com/package/@fsegurai/codemirror-theme-material-dark) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-material-dark) |
88
+ | Monokai | [@fsegurai/codemirror-theme-monokai](https://www.npmjs.com/package/@fsegurai/codemirror-theme-monokai) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-monokai) |
89
+ | Nord | [@fsegurai/codemirror-theme-nord](https://www.npmjs.com/package/@fsegurai/codemirror-theme-nord) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-nord) |
90
+ | Palenight | [@fsegurai/codemirror-theme-palenight](https://www.npmjs.com/package/@fsegurai/codemirror-theme-palenight) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-palenight) |
91
+ | Solarized Light | [@fsegurai/codemirror-theme-solarized-light](https://www.npmjs.com/package/@fsegurai/codemirror-theme-solarized-light) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-solarized-light) |
92
+ | Solarized Dark | [@fsegurai/codemirror-theme-solarized-dark](https://www.npmjs.com/package/@fsegurai/codemirror-theme-solarized-dark) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-solarized-dark) |
93
+ | Tokyo Night Storm | [@fsegurai/codemirror-theme-tokyo-night-storm](https://www.npmjs.com/package/@fsegurai/codemirror-theme-tokyo-night-storm) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-tokyo-night-storm) |
94
+ | Tokyo Night Day | [@fsegurai/codemirror-theme-tokyo-night-day](https://www.npmjs.com/package/@fsegurai/codemirror-theme-tokyo-night-day) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-tokyo-night-day) |
95
+ | Volcano | [@fsegurai/codemirror-theme-volcano](https://www.npmjs.com/package/@fsegurai/codemirror-theme-volcano) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-volcano) |
96
+ | VS Code Dark | [@fsegurai/codemirror-theme-vscode-dark](https://www.npmjs.com/package/@fsegurai/codemirror-theme-vscode-dark) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-vscode-dark) |
97
+ | VS Code Light | [@fsegurai/codemirror-theme-vscode-light](https://www.npmjs.com/package/@fsegurai/codemirror-theme-vscode-light) | ![npm](https://img.shields.io/npm/v/@fsegurai/codemirror-theme-vscode-light) |
98
98
 
99
99
  ### Demo Application
100
100
 
package/dist/index.cjs CHANGED
@@ -3,73 +3,173 @@
3
3
  var view = require('@codemirror/view');
4
4
  var language = require('@codemirror/language');
5
5
  var highlight = require('@lezer/highlight');
6
+ var _utils = require('@utils');
6
7
 
7
- // Andromeda theme colors mapped to Basic Dark template structure
8
- const base00 = '#23262E', // Background
9
- base01 = '#D5CED9', // Foreground
10
- base02 = '#db45a280', // Selection and Selection Match
8
+ /**
9
+ * Enhanced Andromeda theme color palette
10
+ * ------------------------------------------
11
+ * Colors refined for better contrast and visual hierarchy
12
+ */
13
+ // Base colors
14
+ const base00 = '#1b1e26', // Background (slightly darker for better contrast)
15
+ base01 = '#e4dff0', // Foreground (slightly brighter for better readability)
16
+ base02 = '#db45a270', // Selection and Selection Match (reduced opacity)
11
17
  base03 = '#2b303b', // Dropdown Background
12
- base04 = '#FFF', // Cursor
13
- base05 = '#c74ded', // Keyword, Storage
14
- base06 = '#00e8c6', // Variable, Parameter
15
- base07 = '#FFE66D', // Function, Type, Class
16
- base08 = '#96E072', // String, RegExp
17
- base09 = '#ee5d43', // Constant, Number
18
- base0A = '#A0A1A7cc', // Comment
19
- base0B = '#ff00aa', // Heading
20
- base0C = '#f92672', // Tag
21
- invalid = 'red'; // Invalid (fallback color)
22
- const darkBackground = '#292d30', highlightBackground = base02, tooltipBackground = base01, cursor = base04, selection = base02;
23
- // Define the editor theme styles for Andromeda.
18
+ base04 = '#ffffff', // Cursor (pure white for better visibility)
19
+ base05 = '#d667ff', // Keyword, Storage (brighter purple)
20
+ base06 = '#24e3c3', // Variable, Parameter (slightly desaturated teal)
21
+ base07 = '#ffdd80', // Function, Type, Class (warmer yellow)
22
+ base08 = '#a6e07a', // String, RegExp (slightly muted green for better readability)
23
+ base09 = '#ff7057', // Constant, Number (brighter orange-red)
24
+ base0A = '#a8aab9', // Comment (higher contrast gray)
25
+ base0B = '#ff40b3', // Heading (slightly desaturated magenta)
26
+ base0C = '#fd3681', // Tag (adjusted pink)
27
+ base0D = '#c7c7ff', // New color for brackets/punctuation
28
+ base0E = '#6ae4b9', // New color for special elements
29
+ base0F = '#3c94ff', // New color for attributes and links
30
+ invalid = '#ff3162', // Invalid (more visible red)
31
+ // UI-specific colors
32
+ darkBackground = '#242830', selectionBackground = base02, selectionForeground = '#ffffff', highlightBackground = '#30343d40', tooltipBackground = '#1f232d', // Darker tooltip for better contrast
33
+ cursor = base04, activeBracketBg = '#db45a230', activeBracketBorder = base05;
34
+ /**
35
+ * Enhanced editor theme styles for Andromeda
36
+ */
24
37
  const andromedaTheme = view.EditorView.theme({
38
+ // Base editor styles
25
39
  '&': {
26
40
  color: base01,
27
41
  backgroundColor: base00,
42
+ fontSize: _utils.generalContent.fontSize,
43
+ fontFamily: _utils.generalContent.fontFamily,
28
44
  },
45
+ // Content and cursor
29
46
  '.cm-content': {
30
47
  caretColor: cursor,
48
+ lineHeight: _utils.generalContent.lineHeight,
31
49
  },
32
- '.cm-cursor, .cm-dropCursor': { borderLeftColor: cursor },
33
- '&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection': { backgroundColor: selection },
34
- '.cm-panels': { backgroundColor: darkBackground, color: base06 },
35
- '.cm-panels.cm-panels-top': { borderBottom: '2px solid black' },
36
- '.cm-panels.cm-panels-bottom': { borderTop: '2px solid black' },
50
+ '.cm-cursor, .cm-dropCursor': {
51
+ borderLeftColor: cursor,
52
+ borderLeftWidth: _utils.generalCursor.borderLeftWidth,
53
+ },
54
+ '.cm-fat-cursor': {
55
+ backgroundColor: `${cursor}99`,
56
+ color: base00,
57
+ },
58
+ // Selection
59
+ '&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection': {
60
+ backgroundColor: selectionBackground,
61
+ color: selectionForeground,
62
+ },
63
+ // Make sure selection appears above active line
64
+ '.cm-selectionLayer': {
65
+ zIndex: 100,
66
+ },
67
+ // Search functionality
37
68
  '.cm-searchMatch': {
38
- backgroundColor: base02,
39
- outline: `1px solid ${base03}`,
40
- color: base07,
69
+ backgroundColor: '#db45a230',
70
+ outline: `1px solid ${base05}30`,
71
+ color: base01,
72
+ borderRadius: _utils.generalSearchField.borderRadius,
73
+ '& span': {
74
+ color: base01,
75
+ },
41
76
  },
42
77
  '.cm-searchMatch.cm-searchMatch-selected': {
43
- backgroundColor: base00,
44
- color: base07,
78
+ backgroundColor: '#db45a280',
79
+ color: base01,
80
+ padding: _utils.generalSearchField.padding,
81
+ '& span': {
82
+ color: base01,
83
+ },
45
84
  },
46
- '.cm-search.cm-panel': {
85
+ '.cm-search.cm-panel.cm-textfield': {
47
86
  color: base06,
87
+ borderRadius: _utils.generalSearchField.borderRadius,
88
+ padding: _utils.generalSearchField.padding,
48
89
  },
49
- '.cm-selectionMatch': { backgroundColor: highlightBackground },
50
- '&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket': {
51
- outline: `1px solid ${base03}`,
90
+ // Panels
91
+ '.cm-panels': {
92
+ backgroundColor: darkBackground,
93
+ color: base06,
52
94
  },
53
- '&.cm-focused .cm-matchingBracket': {
54
- backgroundColor: base02,
55
- color: base07,
95
+ '.cm-panels.cm-panels-top': {
96
+ borderBottom: '1px solid #3a3e4c',
56
97
  },
57
- '.cm-gutters': {
58
- borderRight: '1px solid #ffffff10',
98
+ '.cm-panels.cm-panels-bottom': {
99
+ borderTop: '1px solid #3a3e4c',
100
+ },
101
+ '.cm-panel button': {
102
+ backgroundColor: darkBackground,
59
103
  color: base06,
104
+ border: _utils.generalPanel.border,
105
+ borderRadius: _utils.generalPanel.borderRadius,
106
+ padding: _utils.generalPanel.padding,
107
+ },
108
+ '.cm-panel button:hover': {
109
+ backgroundColor: '#343946',
110
+ },
111
+ // Line highlighting
112
+ '.cm-activeLine': {
113
+ backgroundColor: highlightBackground,
114
+ borderRadius: _utils.generalLine.borderRadius,
115
+ zIndex: 1,
116
+ },
117
+ // Gutters
118
+ '.cm-gutters': {
60
119
  backgroundColor: darkBackground,
120
+ color: '#748099',
121
+ border: _utils.generalGutter.border,
122
+ borderRight: '1px solid #33384550',
123
+ paddingRight: _utils.generalGutter.paddingRight,
61
124
  },
62
125
  '.cm-activeLineGutter': {
63
126
  backgroundColor: highlightBackground,
127
+ color: base01,
128
+ fontWeight: _utils.generalGutter.fontWeight,
64
129
  },
65
- '.cm-foldPlaceholder': {
66
- backgroundColor: 'transparent',
67
- border: 'none',
68
- color: base02,
130
+ '.cm-lineNumbers': {
131
+ fontSize: _utils.generalGutter.fontSize,
132
+ },
133
+ '.cm-foldGutter': {
134
+ fontSize: _utils.generalGutter.fontSize,
135
+ },
136
+ '.cm-foldGutter .cm-gutterElement': {
137
+ color: '#748099',
138
+ cursor: 'pointer',
69
139
  },
140
+ '.cm-foldGutter .cm-gutterElement:hover': {
141
+ color: base01,
142
+ },
143
+ // Tooltips and autocomplete
70
144
  '.cm-tooltip': {
71
- border: 'none',
72
145
  backgroundColor: tooltipBackground,
146
+ border: '1px solid #3a3e4c',
147
+ borderRadius: _utils.generalTooltip.borderRadius,
148
+ padding: _utils.generalTooltip.padding,
149
+ boxShadow: '0 2px 8px rgba(0, 0, 0, 0.3)',
150
+ },
151
+ '.cm-tooltip-autocomplete': {
152
+ '& > ul': {
153
+ backgroundColor: base03,
154
+ border: 'none',
155
+ },
156
+ '& > ul > li': {
157
+ padding: _utils.generalTooltip.padding,
158
+ lineHeight: _utils.generalTooltip.lineHeight,
159
+ },
160
+ '& > ul > li[aria-selected]': {
161
+ backgroundColor: '#db45a240',
162
+ color: base01,
163
+ borderRadius: _utils.generalTooltip.borderRadiusSelected,
164
+ },
165
+ '& > ul > li > span.cm-completionIcon': {
166
+ color: '#748099',
167
+ paddingRight: _utils.generalTooltip.paddingRight,
168
+ },
169
+ '& > ul > li > span.cm-completionDetail': {
170
+ color: '#748099',
171
+ fontStyle: 'italic',
172
+ },
73
173
  },
74
174
  '.cm-tooltip .cm-tooltip-arrow:before': {
75
175
  borderTopColor: 'transparent',
@@ -79,53 +179,146 @@ const andromedaTheme = view.EditorView.theme({
79
179
  borderTopColor: tooltipBackground,
80
180
  borderBottomColor: tooltipBackground,
81
181
  },
82
- '.cm-tooltip-autocomplete': {
83
- '& > ul > li[aria-selected]': {
84
- backgroundColor: highlightBackground,
85
- color: base03,
182
+ // Diagnostics styling
183
+ '.cm-diagnostic': {
184
+ '&-error': {
185
+ borderLeft: `3px solid ${invalid}`,
186
+ },
187
+ '&-warning': {
188
+ borderLeft: `3px solid ${base07}`,
189
+ },
190
+ '&-info': {
191
+ borderLeft: `3px solid ${base0F}`,
86
192
  },
87
193
  },
194
+ '.cm-lintPoint-error': {
195
+ borderBottom: `2px wavy ${invalid}`,
196
+ },
197
+ '.cm-lintPoint-warning': {
198
+ borderBottom: `2px wavy ${base07}`,
199
+ },
200
+ // Matching brackets
201
+ '.cm-matchingBracket': {
202
+ backgroundColor: activeBracketBg,
203
+ outline: `1px solid ${activeBracketBorder}50`,
204
+ borderRadius: _utils.generalMatching.borderRadius,
205
+ },
206
+ '.cm-nonmatchingBracket': {
207
+ backgroundColor: '#ff405030',
208
+ outline: `1px solid ${invalid}`,
209
+ borderRadius: _utils.generalMatching.borderRadius,
210
+ },
211
+ // Selection matches
212
+ '.cm-selectionMatch': {
213
+ backgroundColor: '#db45a240',
214
+ outline: `1px solid ${base05}50`,
215
+ borderRadius: _utils.generalMatching.borderRadius,
216
+ },
217
+ // Fold placeholder
218
+ '.cm-foldPlaceholder': {
219
+ backgroundColor: 'transparent',
220
+ color: base02,
221
+ border: `1px dotted ${base05}70`,
222
+ borderRadius: _utils.generalPlaceholder.borderRadius,
223
+ padding: _utils.generalPlaceholder.padding,
224
+ margin: _utils.generalPlaceholder.margin,
225
+ },
226
+ // Focus outline
227
+ '&.cm-focused': {
228
+ outline: 'none',
229
+ boxShadow: `0 0 0 2px ${base00}, 0 0 0 3px ${base05}40`,
230
+ },
231
+ // Scrollbars
232
+ '& .cm-scroller::-webkit-scrollbar': {
233
+ width: _utils.generalScroller.width,
234
+ height: _utils.generalScroller.height,
235
+ },
236
+ '& .cm-scroller::-webkit-scrollbar-track': {
237
+ background: darkBackground,
238
+ },
239
+ '& .cm-scroller::-webkit-scrollbar-thumb': {
240
+ backgroundColor: '#3b4151',
241
+ borderRadius: _utils.generalScroller.borderRadius,
242
+ border: `3px solid ${darkBackground}`,
243
+ },
244
+ '& .cm-scroller::-webkit-scrollbar-thumb:hover': {
245
+ backgroundColor: '#4e5568',
246
+ },
247
+ // Ghost text
248
+ '.cm-ghostText': {
249
+ opacity: '0.5',
250
+ color: '#a8aab9',
251
+ },
88
252
  }, { dark: true });
89
- // Define the highlighting style for code in the Andromeda theme.
253
+ /**
254
+ * Enhanced syntax highlighting for the Andromeda theme
255
+ */
90
256
  const andromedaHighlightStyle = language.HighlightStyle.define([
91
- { tag: highlight.tags.keyword, color: base05 },
92
- { tag: [highlight.tags.name, highlight.tags.deleted, highlight.tags.character, highlight.tags.propertyName, highlight.tags.macroName], color: base06 },
257
+ // Keywords and control flow
258
+ { tag: highlight.tags.keyword, color: base05, fontWeight: 'bold' },
259
+ { tag: highlight.tags.controlKeyword, color: base05, fontWeight: 'bold' },
260
+ { tag: highlight.tags.moduleKeyword, color: base05, fontWeight: 'bold' },
261
+ // Names and variables
262
+ { tag: [highlight.tags.name, highlight.tags.deleted, highlight.tags.character, highlight.tags.macroName], color: base06 },
93
263
  { tag: [highlight.tags.variableName], color: base06 },
94
- { tag: [highlight.tags.function(highlight.tags.variableName)], color: base05 },
95
- { tag: [highlight.tags.labelName], color: base09 },
96
- { tag: [highlight.tags.color, highlight.tags.constant(highlight.tags.name), highlight.tags.standard(highlight.tags.name)], color: base05 },
97
- { tag: [highlight.tags.definition(highlight.tags.name), highlight.tags.separator], color: base07 },
98
- { tag: [highlight.tags.brace], color: base07 },
99
- { tag: [highlight.tags.annotation], color: invalid },
100
- { tag: [highlight.tags.number, highlight.tags.changed, highlight.tags.annotation, highlight.tags.modifier, highlight.tags.self, highlight.tags.namespace], color: base05 },
101
- { tag: [highlight.tags.typeName, highlight.tags.className], color: base06 },
102
- { tag: [highlight.tags.operator, highlight.tags.operatorKeyword], color: base07 },
103
- { tag: [highlight.tags.tagName], color: base05 },
104
- { tag: [highlight.tags.squareBracket], color: base07 },
105
- { tag: [highlight.tags.angleBracket], color: base07 },
106
- { tag: [highlight.tags.attributeName], color: base06 },
107
- { tag: [highlight.tags.regexp], color: base05 },
108
- { tag: [highlight.tags.quote], color: base01 },
109
- { tag: [highlight.tags.string], color: base08 },
110
- { tag: highlight.tags.link, color: base0C, textDecoration: 'underline', textUnderlinePosition: 'under' },
111
- { tag: [highlight.tags.url, highlight.tags.escape, highlight.tags.special(highlight.tags.string)], color: base0B },
112
- { tag: [highlight.tags.meta], color: base09 },
113
- { tag: [highlight.tags.comment], color: base0A, fontStyle: 'italic' },
114
- { tag: highlight.tags.monospace, color: base01 },
115
- { tag: highlight.tags.strong, fontWeight: 'bold', color: base05 },
116
- { tag: highlight.tags.emphasis, fontStyle: 'italic', color: base06 },
117
- { tag: highlight.tags.strikethrough, textDecoration: 'line-through' },
118
- { tag: highlight.tags.heading, fontWeight: 'bold', color: base01 },
119
- { tag: highlight.tags.special(highlight.tags.heading1), fontWeight: 'bold', color: base01 },
120
- { tag: highlight.tags.heading1, fontWeight: 'bold', color: base01 },
121
- { tag: [highlight.tags.heading2, highlight.tags.heading3, highlight.tags.heading4], fontWeight: 'bold', color: base01 },
122
- { tag: [highlight.tags.heading5, highlight.tags.heading6], color: base01 },
123
- { tag: [highlight.tags.atom, highlight.tags.bool, highlight.tags.special(highlight.tags.variableName)], color: base0B },
124
- { tag: [highlight.tags.processingInstruction, highlight.tags.inserted], color: base0B },
125
- { tag: [highlight.tags.contentSeparator], color: base06 },
126
- { tag: highlight.tags.invalid, color: base02, borderBottom: `1px dotted ${invalid}` },
264
+ { tag: [highlight.tags.propertyName], color: base06, fontStyle: 'normal' },
265
+ // Classes and types
266
+ { tag: [highlight.tags.typeName], color: base07 },
267
+ { tag: [highlight.tags.className], color: base07, fontStyle: 'italic' },
268
+ { tag: [highlight.tags.namespace], color: base0E, fontStyle: 'italic' },
269
+ // Operators and punctuation
270
+ { tag: [highlight.tags.operator, highlight.tags.operatorKeyword], color: base0D },
271
+ { tag: [highlight.tags.bracket], color: base0D },
272
+ { tag: [highlight.tags.brace], color: base0D },
273
+ { tag: [highlight.tags.punctuation], color: base0D },
274
+ // Functions and parameters
275
+ { tag: [highlight.tags.function(highlight.tags.variableName), highlight.tags.labelName], color: base07 },
276
+ { tag: [highlight.tags.definition(highlight.tags.variableName)], color: base06 },
277
+ // Constants and literals
278
+ { tag: highlight.tags.number, color: base09 },
279
+ { tag: highlight.tags.changed, color: base09 },
280
+ { tag: highlight.tags.annotation, color: base0F, fontStyle: 'italic' },
281
+ { tag: highlight.tags.modifier, color: base0F, fontStyle: 'italic' },
282
+ { tag: highlight.tags.self, color: base09 },
283
+ { tag: [highlight.tags.color, highlight.tags.constant(highlight.tags.name), highlight.tags.standard(highlight.tags.name)], color: base09 },
284
+ { tag: [highlight.tags.atom, highlight.tags.bool, highlight.tags.special(highlight.tags.variableName)], color: base09 },
285
+ // Strings and regex
286
+ { tag: [highlight.tags.processingInstruction, highlight.tags.inserted], color: base08 },
287
+ { tag: [highlight.tags.special(highlight.tags.string), highlight.tags.regexp], color: base08 },
288
+ { tag: highlight.tags.string, color: base08 },
289
+ // Punctuation and structure
290
+ { tag: highlight.tags.definition(highlight.tags.typeName), color: base07, fontWeight: 'bold' },
291
+ // Comments and documentation
292
+ { tag: highlight.tags.meta, color: base0A },
293
+ { tag: highlight.tags.comment, fontStyle: 'italic', color: base0A },
294
+ { tag: highlight.tags.docComment, fontStyle: 'italic', color: base0A },
295
+ // HTML/XML elements
296
+ { tag: [highlight.tags.tagName], color: base0C },
297
+ { tag: [highlight.tags.attributeName], color: base0F },
298
+ // Markdown and text formatting
299
+ { tag: [highlight.tags.heading], fontWeight: 'bold', color: base0B },
300
+ { tag: [highlight.tags.strong], fontWeight: 'bold', color: base09 },
301
+ { tag: [highlight.tags.emphasis], fontStyle: 'italic', color: base0E },
302
+ // Links and URLs
303
+ { tag: [highlight.tags.link], color: base0F, fontWeight: '500', textDecoration: 'underline', textUnderlinePosition: 'under' },
304
+ {
305
+ tag: [highlight.tags.url],
306
+ color: base0E,
307
+ textDecoration: 'underline',
308
+ textUnderlineOffset: '2px',
309
+ },
310
+ // Special states
311
+ { tag: [highlight.tags.invalid], color: invalid, textDecoration: 'underline wavy' },
312
+ { tag: [highlight.tags.strikethrough], color: invalid, textDecoration: 'line-through' },
313
+ // Enhanced syntax highlighting
314
+ { tag: highlight.tags.constant(highlight.tags.name), color: base09 },
315
+ { tag: highlight.tags.deleted, color: invalid },
316
+ { tag: highlight.tags.squareBracket, color: base0D },
317
+ { tag: highlight.tags.angleBracket, color: base0D },
127
318
  ]);
128
- // Extension to enable the Andromeda theme (both the editor theme and the highlight style).
319
+ /**
320
+ * Combined Andromeda theme extension
321
+ */
129
322
  const andromeda = [
130
323
  andromedaTheme,
131
324
  language.syntaxHighlighting(andromedaHighlightStyle),
package/dist/index.d.cts CHANGED
@@ -1,8 +1,17 @@
1
1
  import { Extension } from '@codemirror/state';
2
2
  import { HighlightStyle } from '@codemirror/language';
3
3
 
4
+ /**
5
+ * Enhanced editor theme styles for Andromeda
6
+ */
4
7
  declare const andromedaTheme: Extension;
8
+ /**
9
+ * Enhanced syntax highlighting for the Andromeda theme
10
+ */
5
11
  declare const andromedaHighlightStyle: HighlightStyle;
12
+ /**
13
+ * Combined Andromeda theme extension
14
+ */
6
15
  declare const andromeda: Extension;
7
16
 
8
17
  export { andromeda, andromedaHighlightStyle, andromedaTheme };
package/dist/index.d.ts CHANGED
@@ -1,8 +1,17 @@
1
1
  import { Extension } from '@codemirror/state';
2
2
  import { HighlightStyle } from '@codemirror/language';
3
3
 
4
+ /**
5
+ * Enhanced editor theme styles for Andromeda
6
+ */
4
7
  declare const andromedaTheme: Extension;
8
+ /**
9
+ * Enhanced syntax highlighting for the Andromeda theme
10
+ */
5
11
  declare const andromedaHighlightStyle: HighlightStyle;
12
+ /**
13
+ * Combined Andromeda theme extension
14
+ */
6
15
  declare const andromeda: Extension;
7
16
 
8
17
  export { andromeda, andromedaHighlightStyle, andromedaTheme };
package/dist/index.js CHANGED
@@ -1,73 +1,173 @@
1
1
  import { EditorView } from '@codemirror/view';
2
2
  import { HighlightStyle, syntaxHighlighting } from '@codemirror/language';
3
3
  import { tags } from '@lezer/highlight';
4
+ import { generalScroller, generalPlaceholder, generalMatching, generalTooltip, generalGutter, generalLine, generalPanel, generalSearchField, generalCursor, generalContent } from '@utils';
4
5
 
5
- // Andromeda theme colors mapped to Basic Dark template structure
6
- const base00 = '#23262E', // Background
7
- base01 = '#D5CED9', // Foreground
8
- base02 = '#db45a280', // Selection and Selection Match
6
+ /**
7
+ * Enhanced Andromeda theme color palette
8
+ * ------------------------------------------
9
+ * Colors refined for better contrast and visual hierarchy
10
+ */
11
+ // Base colors
12
+ const base00 = '#1b1e26', // Background (slightly darker for better contrast)
13
+ base01 = '#e4dff0', // Foreground (slightly brighter for better readability)
14
+ base02 = '#db45a270', // Selection and Selection Match (reduced opacity)
9
15
  base03 = '#2b303b', // Dropdown Background
10
- base04 = '#FFF', // Cursor
11
- base05 = '#c74ded', // Keyword, Storage
12
- base06 = '#00e8c6', // Variable, Parameter
13
- base07 = '#FFE66D', // Function, Type, Class
14
- base08 = '#96E072', // String, RegExp
15
- base09 = '#ee5d43', // Constant, Number
16
- base0A = '#A0A1A7cc', // Comment
17
- base0B = '#ff00aa', // Heading
18
- base0C = '#f92672', // Tag
19
- invalid = 'red'; // Invalid (fallback color)
20
- const darkBackground = '#292d30', highlightBackground = base02, tooltipBackground = base01, cursor = base04, selection = base02;
21
- // Define the editor theme styles for Andromeda.
16
+ base04 = '#ffffff', // Cursor (pure white for better visibility)
17
+ base05 = '#d667ff', // Keyword, Storage (brighter purple)
18
+ base06 = '#24e3c3', // Variable, Parameter (slightly desaturated teal)
19
+ base07 = '#ffdd80', // Function, Type, Class (warmer yellow)
20
+ base08 = '#a6e07a', // String, RegExp (slightly muted green for better readability)
21
+ base09 = '#ff7057', // Constant, Number (brighter orange-red)
22
+ base0A = '#a8aab9', // Comment (higher contrast gray)
23
+ base0B = '#ff40b3', // Heading (slightly desaturated magenta)
24
+ base0C = '#fd3681', // Tag (adjusted pink)
25
+ base0D = '#c7c7ff', // New color for brackets/punctuation
26
+ base0E = '#6ae4b9', // New color for special elements
27
+ base0F = '#3c94ff', // New color for attributes and links
28
+ invalid = '#ff3162', // Invalid (more visible red)
29
+ // UI-specific colors
30
+ darkBackground = '#242830', selectionBackground = base02, selectionForeground = '#ffffff', highlightBackground = '#30343d40', tooltipBackground = '#1f232d', // Darker tooltip for better contrast
31
+ cursor = base04, activeBracketBg = '#db45a230', activeBracketBorder = base05;
32
+ /**
33
+ * Enhanced editor theme styles for Andromeda
34
+ */
22
35
  const andromedaTheme = /*@__PURE__*/EditorView.theme({
36
+ // Base editor styles
23
37
  '&': {
24
38
  color: base01,
25
39
  backgroundColor: base00,
40
+ fontSize: generalContent.fontSize,
41
+ fontFamily: generalContent.fontFamily,
26
42
  },
43
+ // Content and cursor
27
44
  '.cm-content': {
28
45
  caretColor: cursor,
46
+ lineHeight: generalContent.lineHeight,
29
47
  },
30
- '.cm-cursor, .cm-dropCursor': { borderLeftColor: cursor },
31
- '&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection': { backgroundColor: selection },
32
- '.cm-panels': { backgroundColor: darkBackground, color: base06 },
33
- '.cm-panels.cm-panels-top': { borderBottom: '2px solid black' },
34
- '.cm-panels.cm-panels-bottom': { borderTop: '2px solid black' },
48
+ '.cm-cursor, .cm-dropCursor': {
49
+ borderLeftColor: cursor,
50
+ borderLeftWidth: generalCursor.borderLeftWidth,
51
+ },
52
+ '.cm-fat-cursor': {
53
+ backgroundColor: `${cursor}99`,
54
+ color: base00,
55
+ },
56
+ // Selection
57
+ '&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection': {
58
+ backgroundColor: selectionBackground,
59
+ color: selectionForeground,
60
+ },
61
+ // Make sure selection appears above active line
62
+ '.cm-selectionLayer': {
63
+ zIndex: 100,
64
+ },
65
+ // Search functionality
35
66
  '.cm-searchMatch': {
36
- backgroundColor: base02,
37
- outline: `1px solid ${base03}`,
38
- color: base07,
67
+ backgroundColor: '#db45a230',
68
+ outline: `1px solid ${base05}30`,
69
+ color: base01,
70
+ borderRadius: generalSearchField.borderRadius,
71
+ '& span': {
72
+ color: base01,
73
+ },
39
74
  },
40
75
  '.cm-searchMatch.cm-searchMatch-selected': {
41
- backgroundColor: base00,
42
- color: base07,
76
+ backgroundColor: '#db45a280',
77
+ color: base01,
78
+ padding: generalSearchField.padding,
79
+ '& span': {
80
+ color: base01,
81
+ },
43
82
  },
44
- '.cm-search.cm-panel': {
83
+ '.cm-search.cm-panel.cm-textfield': {
45
84
  color: base06,
85
+ borderRadius: generalSearchField.borderRadius,
86
+ padding: generalSearchField.padding,
46
87
  },
47
- '.cm-selectionMatch': { backgroundColor: highlightBackground },
48
- '&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket': {
49
- outline: `1px solid ${base03}`,
88
+ // Panels
89
+ '.cm-panels': {
90
+ backgroundColor: darkBackground,
91
+ color: base06,
50
92
  },
51
- '&.cm-focused .cm-matchingBracket': {
52
- backgroundColor: base02,
53
- color: base07,
93
+ '.cm-panels.cm-panels-top': {
94
+ borderBottom: '1px solid #3a3e4c',
54
95
  },
55
- '.cm-gutters': {
56
- borderRight: '1px solid #ffffff10',
96
+ '.cm-panels.cm-panels-bottom': {
97
+ borderTop: '1px solid #3a3e4c',
98
+ },
99
+ '.cm-panel button': {
100
+ backgroundColor: darkBackground,
57
101
  color: base06,
102
+ border: generalPanel.border,
103
+ borderRadius: generalPanel.borderRadius,
104
+ padding: generalPanel.padding,
105
+ },
106
+ '.cm-panel button:hover': {
107
+ backgroundColor: '#343946',
108
+ },
109
+ // Line highlighting
110
+ '.cm-activeLine': {
111
+ backgroundColor: highlightBackground,
112
+ borderRadius: generalLine.borderRadius,
113
+ zIndex: 1,
114
+ },
115
+ // Gutters
116
+ '.cm-gutters': {
58
117
  backgroundColor: darkBackground,
118
+ color: '#748099',
119
+ border: generalGutter.border,
120
+ borderRight: '1px solid #33384550',
121
+ paddingRight: generalGutter.paddingRight,
59
122
  },
60
123
  '.cm-activeLineGutter': {
61
124
  backgroundColor: highlightBackground,
125
+ color: base01,
126
+ fontWeight: generalGutter.fontWeight,
62
127
  },
63
- '.cm-foldPlaceholder': {
64
- backgroundColor: 'transparent',
65
- border: 'none',
66
- color: base02,
128
+ '.cm-lineNumbers': {
129
+ fontSize: generalGutter.fontSize,
130
+ },
131
+ '.cm-foldGutter': {
132
+ fontSize: generalGutter.fontSize,
133
+ },
134
+ '.cm-foldGutter .cm-gutterElement': {
135
+ color: '#748099',
136
+ cursor: 'pointer',
67
137
  },
138
+ '.cm-foldGutter .cm-gutterElement:hover': {
139
+ color: base01,
140
+ },
141
+ // Tooltips and autocomplete
68
142
  '.cm-tooltip': {
69
- border: 'none',
70
143
  backgroundColor: tooltipBackground,
144
+ border: '1px solid #3a3e4c',
145
+ borderRadius: generalTooltip.borderRadius,
146
+ padding: generalTooltip.padding,
147
+ boxShadow: '0 2px 8px rgba(0, 0, 0, 0.3)',
148
+ },
149
+ '.cm-tooltip-autocomplete': {
150
+ '& > ul': {
151
+ backgroundColor: base03,
152
+ border: 'none',
153
+ },
154
+ '& > ul > li': {
155
+ padding: generalTooltip.padding,
156
+ lineHeight: generalTooltip.lineHeight,
157
+ },
158
+ '& > ul > li[aria-selected]': {
159
+ backgroundColor: '#db45a240',
160
+ color: base01,
161
+ borderRadius: generalTooltip.borderRadiusSelected,
162
+ },
163
+ '& > ul > li > span.cm-completionIcon': {
164
+ color: '#748099',
165
+ paddingRight: generalTooltip.paddingRight,
166
+ },
167
+ '& > ul > li > span.cm-completionDetail': {
168
+ color: '#748099',
169
+ fontStyle: 'italic',
170
+ },
71
171
  },
72
172
  '.cm-tooltip .cm-tooltip-arrow:before': {
73
173
  borderTopColor: 'transparent',
@@ -77,53 +177,146 @@ const andromedaTheme = /*@__PURE__*/EditorView.theme({
77
177
  borderTopColor: tooltipBackground,
78
178
  borderBottomColor: tooltipBackground,
79
179
  },
80
- '.cm-tooltip-autocomplete': {
81
- '& > ul > li[aria-selected]': {
82
- backgroundColor: highlightBackground,
83
- color: base03,
180
+ // Diagnostics styling
181
+ '.cm-diagnostic': {
182
+ '&-error': {
183
+ borderLeft: `3px solid ${invalid}`,
184
+ },
185
+ '&-warning': {
186
+ borderLeft: `3px solid ${base07}`,
187
+ },
188
+ '&-info': {
189
+ borderLeft: `3px solid ${base0F}`,
84
190
  },
85
191
  },
192
+ '.cm-lintPoint-error': {
193
+ borderBottom: `2px wavy ${invalid}`,
194
+ },
195
+ '.cm-lintPoint-warning': {
196
+ borderBottom: `2px wavy ${base07}`,
197
+ },
198
+ // Matching brackets
199
+ '.cm-matchingBracket': {
200
+ backgroundColor: activeBracketBg,
201
+ outline: `1px solid ${activeBracketBorder}50`,
202
+ borderRadius: generalMatching.borderRadius,
203
+ },
204
+ '.cm-nonmatchingBracket': {
205
+ backgroundColor: '#ff405030',
206
+ outline: `1px solid ${invalid}`,
207
+ borderRadius: generalMatching.borderRadius,
208
+ },
209
+ // Selection matches
210
+ '.cm-selectionMatch': {
211
+ backgroundColor: '#db45a240',
212
+ outline: `1px solid ${base05}50`,
213
+ borderRadius: generalMatching.borderRadius,
214
+ },
215
+ // Fold placeholder
216
+ '.cm-foldPlaceholder': {
217
+ backgroundColor: 'transparent',
218
+ color: base02,
219
+ border: `1px dotted ${base05}70`,
220
+ borderRadius: generalPlaceholder.borderRadius,
221
+ padding: generalPlaceholder.padding,
222
+ margin: generalPlaceholder.margin,
223
+ },
224
+ // Focus outline
225
+ '&.cm-focused': {
226
+ outline: 'none',
227
+ boxShadow: `0 0 0 2px ${base00}, 0 0 0 3px ${base05}40`,
228
+ },
229
+ // Scrollbars
230
+ '& .cm-scroller::-webkit-scrollbar': {
231
+ width: generalScroller.width,
232
+ height: generalScroller.height,
233
+ },
234
+ '& .cm-scroller::-webkit-scrollbar-track': {
235
+ background: darkBackground,
236
+ },
237
+ '& .cm-scroller::-webkit-scrollbar-thumb': {
238
+ backgroundColor: '#3b4151',
239
+ borderRadius: generalScroller.borderRadius,
240
+ border: `3px solid ${darkBackground}`,
241
+ },
242
+ '& .cm-scroller::-webkit-scrollbar-thumb:hover': {
243
+ backgroundColor: '#4e5568',
244
+ },
245
+ // Ghost text
246
+ '.cm-ghostText': {
247
+ opacity: '0.5',
248
+ color: '#a8aab9',
249
+ },
86
250
  }, { dark: true });
87
- // Define the highlighting style for code in the Andromeda theme.
251
+ /**
252
+ * Enhanced syntax highlighting for the Andromeda theme
253
+ */
88
254
  const andromedaHighlightStyle = /*@__PURE__*/HighlightStyle.define([
89
- { tag: tags.keyword, color: base05 },
90
- { tag: [tags.name, tags.deleted, tags.character, tags.propertyName, tags.macroName], color: base06 },
255
+ // Keywords and control flow
256
+ { tag: tags.keyword, color: base05, fontWeight: 'bold' },
257
+ { tag: tags.controlKeyword, color: base05, fontWeight: 'bold' },
258
+ { tag: tags.moduleKeyword, color: base05, fontWeight: 'bold' },
259
+ // Names and variables
260
+ { tag: [tags.name, tags.deleted, tags.character, tags.macroName], color: base06 },
91
261
  { tag: [tags.variableName], color: base06 },
92
- { tag: [/*@__PURE__*/tags.function(tags.variableName)], color: base05 },
93
- { tag: [tags.labelName], color: base09 },
94
- { tag: [tags.color, /*@__PURE__*/tags.constant(tags.name), /*@__PURE__*/tags.standard(tags.name)], color: base05 },
95
- { tag: [/*@__PURE__*/tags.definition(tags.name), tags.separator], color: base07 },
96
- { tag: [tags.brace], color: base07 },
97
- { tag: [tags.annotation], color: invalid },
98
- { tag: [tags.number, tags.changed, tags.annotation, tags.modifier, tags.self, tags.namespace], color: base05 },
99
- { tag: [tags.typeName, tags.className], color: base06 },
100
- { tag: [tags.operator, tags.operatorKeyword], color: base07 },
101
- { tag: [tags.tagName], color: base05 },
102
- { tag: [tags.squareBracket], color: base07 },
103
- { tag: [tags.angleBracket], color: base07 },
104
- { tag: [tags.attributeName], color: base06 },
105
- { tag: [tags.regexp], color: base05 },
106
- { tag: [tags.quote], color: base01 },
107
- { tag: [tags.string], color: base08 },
108
- { tag: tags.link, color: base0C, textDecoration: 'underline', textUnderlinePosition: 'under' },
109
- { tag: [tags.url, tags.escape, /*@__PURE__*/tags.special(tags.string)], color: base0B },
110
- { tag: [tags.meta], color: base09 },
111
- { tag: [tags.comment], color: base0A, fontStyle: 'italic' },
112
- { tag: tags.monospace, color: base01 },
113
- { tag: tags.strong, fontWeight: 'bold', color: base05 },
114
- { tag: tags.emphasis, fontStyle: 'italic', color: base06 },
115
- { tag: tags.strikethrough, textDecoration: 'line-through' },
116
- { tag: tags.heading, fontWeight: 'bold', color: base01 },
117
- { tag: /*@__PURE__*/tags.special(tags.heading1), fontWeight: 'bold', color: base01 },
118
- { tag: tags.heading1, fontWeight: 'bold', color: base01 },
119
- { tag: [tags.heading2, tags.heading3, tags.heading4], fontWeight: 'bold', color: base01 },
120
- { tag: [tags.heading5, tags.heading6], color: base01 },
121
- { tag: [tags.atom, tags.bool, /*@__PURE__*/tags.special(tags.variableName)], color: base0B },
122
- { tag: [tags.processingInstruction, tags.inserted], color: base0B },
123
- { tag: [tags.contentSeparator], color: base06 },
124
- { tag: tags.invalid, color: base02, borderBottom: `1px dotted ${invalid}` },
262
+ { tag: [tags.propertyName], color: base06, fontStyle: 'normal' },
263
+ // Classes and types
264
+ { tag: [tags.typeName], color: base07 },
265
+ { tag: [tags.className], color: base07, fontStyle: 'italic' },
266
+ { tag: [tags.namespace], color: base0E, fontStyle: 'italic' },
267
+ // Operators and punctuation
268
+ { tag: [tags.operator, tags.operatorKeyword], color: base0D },
269
+ { tag: [tags.bracket], color: base0D },
270
+ { tag: [tags.brace], color: base0D },
271
+ { tag: [tags.punctuation], color: base0D },
272
+ // Functions and parameters
273
+ { tag: [/*@__PURE__*/tags.function(tags.variableName), tags.labelName], color: base07 },
274
+ { tag: [/*@__PURE__*/tags.definition(tags.variableName)], color: base06 },
275
+ // Constants and literals
276
+ { tag: tags.number, color: base09 },
277
+ { tag: tags.changed, color: base09 },
278
+ { tag: tags.annotation, color: base0F, fontStyle: 'italic' },
279
+ { tag: tags.modifier, color: base0F, fontStyle: 'italic' },
280
+ { tag: tags.self, color: base09 },
281
+ { tag: [tags.color, /*@__PURE__*/tags.constant(tags.name), /*@__PURE__*/tags.standard(tags.name)], color: base09 },
282
+ { tag: [tags.atom, tags.bool, /*@__PURE__*/tags.special(tags.variableName)], color: base09 },
283
+ // Strings and regex
284
+ { tag: [tags.processingInstruction, tags.inserted], color: base08 },
285
+ { tag: [/*@__PURE__*/tags.special(tags.string), tags.regexp], color: base08 },
286
+ { tag: tags.string, color: base08 },
287
+ // Punctuation and structure
288
+ { tag: /*@__PURE__*/tags.definition(tags.typeName), color: base07, fontWeight: 'bold' },
289
+ // Comments and documentation
290
+ { tag: tags.meta, color: base0A },
291
+ { tag: tags.comment, fontStyle: 'italic', color: base0A },
292
+ { tag: tags.docComment, fontStyle: 'italic', color: base0A },
293
+ // HTML/XML elements
294
+ { tag: [tags.tagName], color: base0C },
295
+ { tag: [tags.attributeName], color: base0F },
296
+ // Markdown and text formatting
297
+ { tag: [tags.heading], fontWeight: 'bold', color: base0B },
298
+ { tag: [tags.strong], fontWeight: 'bold', color: base09 },
299
+ { tag: [tags.emphasis], fontStyle: 'italic', color: base0E },
300
+ // Links and URLs
301
+ { tag: [tags.link], color: base0F, fontWeight: '500', textDecoration: 'underline', textUnderlinePosition: 'under' },
302
+ {
303
+ tag: [tags.url],
304
+ color: base0E,
305
+ textDecoration: 'underline',
306
+ textUnderlineOffset: '2px',
307
+ },
308
+ // Special states
309
+ { tag: [tags.invalid], color: invalid, textDecoration: 'underline wavy' },
310
+ { tag: [tags.strikethrough], color: invalid, textDecoration: 'line-through' },
311
+ // Enhanced syntax highlighting
312
+ { tag: /*@__PURE__*/tags.constant(tags.name), color: base09 },
313
+ { tag: tags.deleted, color: invalid },
314
+ { tag: tags.squareBracket, color: base0D },
315
+ { tag: tags.angleBracket, color: base0D },
125
316
  ]);
126
- // Extension to enable the Andromeda theme (both the editor theme and the highlight style).
317
+ /**
318
+ * Combined Andromeda theme extension
319
+ */
127
320
  const andromeda = [
128
321
  andromedaTheme,
129
322
  /*@__PURE__*/syntaxHighlighting(andromedaHighlightStyle),
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fsegurai/codemirror-theme-andromeda",
3
3
  "description": "Andromeda theme for the CodeMirror code editor",
4
- "version": "6.1.3",
4
+ "version": "6.2.0-beta",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
7
7
  "exports": {