@brimveyn/aimux-config 0.1.0

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/src/themes.ts ADDED
@@ -0,0 +1,252 @@
1
+ import type { ThemeColors, ThemeDefinition, ThemeId } from './types'
2
+
3
+ export const THEMES: Record<ThemeId, { name: string; colors: ThemeColors }> = {
4
+ 'aimux': {
5
+ colors: {
6
+ accent: '#7cd1b8',
7
+ accentAlt: '#c4a7e7',
8
+ background: '#11151b',
9
+ border: '#2d3f52',
10
+ borderActive: '#7cd1b8',
11
+ danger: '#f38ba8',
12
+ dim: '#243242',
13
+ overlay: '#0b1016',
14
+ panel: '#16202b',
15
+ panelHighlight: '#1f3344',
16
+ panelMuted: '#1c2734',
17
+ success: '#8bd5ca',
18
+ text: '#edf4ff',
19
+ textMuted: '#6b829a',
20
+ warning: '#f6c177',
21
+ },
22
+ name: 'Aimux',
23
+ },
24
+ 'catppuccin-mocha': {
25
+ colors: {
26
+ accent: '#cba6f7',
27
+ accentAlt: '#f5c2e7',
28
+ background: '#1e1e2e',
29
+ border: '#45475a',
30
+ borderActive: '#cba6f7',
31
+ danger: '#f38ba8',
32
+ dim: '#313244',
33
+ overlay: '#181825',
34
+ panel: '#232334',
35
+ panelHighlight: '#313244',
36
+ panelMuted: '#2a2a3c',
37
+ success: '#a6e3a1',
38
+ text: '#cdd6f4',
39
+ textMuted: '#6c7086',
40
+ warning: '#f9e2af',
41
+ },
42
+ name: 'Catppuccin Mocha',
43
+ },
44
+ 'dracula': {
45
+ colors: {
46
+ accent: '#bd93f9',
47
+ accentAlt: '#ff79c6',
48
+ background: '#282a36',
49
+ border: '#44475a',
50
+ borderActive: '#bd93f9',
51
+ danger: '#ff5555',
52
+ dim: '#383a4a',
53
+ overlay: '#1f2029',
54
+ panel: '#2d2f3d',
55
+ panelHighlight: '#3d4056',
56
+ panelMuted: '#343746',
57
+ success: '#50fa7b',
58
+ text: '#f8f8f2',
59
+ textMuted: '#6272a4',
60
+ warning: '#f1fa8c',
61
+ },
62
+ name: 'Dracula',
63
+ },
64
+ 'dracula-at-night': {
65
+ colors: {
66
+ accent: '#bd93f9',
67
+ accentAlt: '#ff79c6',
68
+ background: '#0e1419',
69
+ border: '#2a3440',
70
+ borderActive: '#bd93f9',
71
+ danger: '#ff5555',
72
+ dim: '#1e2630',
73
+ overlay: '#090d11',
74
+ panel: '#131920',
75
+ panelHighlight: '#222a33',
76
+ panelMuted: '#1a2129',
77
+ success: '#50fa7b',
78
+ text: '#f8f8f2',
79
+ textMuted: '#6272a4',
80
+ warning: '#f1fa8c',
81
+ },
82
+ name: 'Dracula At Night',
83
+ },
84
+ 'everforest': {
85
+ colors: {
86
+ accent: '#a7c080',
87
+ accentAlt: '#d699b6',
88
+ background: '#2d353b',
89
+ border: '#4f585e',
90
+ borderActive: '#a7c080',
91
+ danger: '#e67e80',
92
+ dim: '#3d484d',
93
+ overlay: '#232a2e',
94
+ panel: '#343f44',
95
+ panelHighlight: '#475258',
96
+ panelMuted: '#3d484d',
97
+ success: '#a7c080',
98
+ text: '#d3c6aa',
99
+ textMuted: '#859289',
100
+ warning: '#dbbc7f',
101
+ },
102
+ name: 'Everforest',
103
+ },
104
+ 'gruvbox-dark': {
105
+ colors: {
106
+ accent: '#b8bb26',
107
+ accentAlt: '#d3869b',
108
+ background: '#282828',
109
+ border: '#504945',
110
+ borderActive: '#b8bb26',
111
+ danger: '#fb4934',
112
+ dim: '#3c3836',
113
+ overlay: '#1f1d1b',
114
+ panel: '#2e2e2e',
115
+ panelHighlight: '#504945',
116
+ panelMuted: '#3c3836',
117
+ success: '#b8bb26',
118
+ text: '#ebdbb2',
119
+ textMuted: '#928374',
120
+ warning: '#fabd2f',
121
+ },
122
+ name: 'Gruvbox Dark',
123
+ },
124
+ 'kanagawa': {
125
+ colors: {
126
+ accent: '#7e9cd8',
127
+ accentAlt: '#957fb8',
128
+ background: '#1f1f28',
129
+ border: '#363646',
130
+ borderActive: '#7e9cd8',
131
+ danger: '#e82424',
132
+ dim: '#2a2a37',
133
+ overlay: '#171720',
134
+ panel: '#24242e',
135
+ panelHighlight: '#363646',
136
+ panelMuted: '#2a2a37',
137
+ success: '#76946a',
138
+ text: '#dcd7ba',
139
+ textMuted: '#727169',
140
+ warning: '#e6c384',
141
+ },
142
+ name: 'Kanagawa',
143
+ },
144
+ 'nord': {
145
+ colors: {
146
+ accent: '#88c0d0',
147
+ accentAlt: '#b48ead',
148
+ background: '#2e3440',
149
+ border: '#434c5e',
150
+ borderActive: '#88c0d0',
151
+ danger: '#bf616a',
152
+ dim: '#3b4252',
153
+ overlay: '#252a33',
154
+ panel: '#333a47',
155
+ panelHighlight: '#434c5e',
156
+ panelMuted: '#3b4252',
157
+ success: '#a3be8c',
158
+ text: '#eceff4',
159
+ textMuted: '#7b88a1',
160
+ warning: '#ebcb8b',
161
+ },
162
+ name: 'Nord',
163
+ },
164
+ 'one-dark': {
165
+ colors: {
166
+ accent: '#61afef',
167
+ accentAlt: '#c678dd',
168
+ background: '#282c34',
169
+ border: '#3e4452',
170
+ borderActive: '#61afef',
171
+ danger: '#e06c75',
172
+ dim: '#3b4048',
173
+ overlay: '#1f2329',
174
+ panel: '#2c313a',
175
+ panelHighlight: '#3b4048',
176
+ panelMuted: '#333842',
177
+ success: '#98c379',
178
+ text: '#abb2bf',
179
+ textMuted: '#636d83',
180
+ warning: '#e5c07b',
181
+ },
182
+ name: 'One Dark',
183
+ },
184
+ 'solarized-dark': {
185
+ colors: {
186
+ accent: '#268bd2',
187
+ accentAlt: '#d33682',
188
+ background: '#002b36',
189
+ border: '#2e5560',
190
+ borderActive: '#268bd2',
191
+ danger: '#dc322f',
192
+ dim: '#073642',
193
+ overlay: '#00242c',
194
+ panel: '#003340',
195
+ panelHighlight: '#0a4050',
196
+ panelMuted: '#073642',
197
+ success: '#859900',
198
+ text: '#fdf6e3',
199
+ textMuted: '#657b83',
200
+ warning: '#b58900',
201
+ },
202
+ name: 'Solarized Dark',
203
+ },
204
+ 'tokyo-night': {
205
+ colors: {
206
+ accent: '#7aa2f7',
207
+ accentAlt: '#bb9af7',
208
+ background: '#1a1b26',
209
+ border: '#3b4261',
210
+ borderActive: '#7aa2f7',
211
+ danger: '#f7768e',
212
+ dim: '#292e42',
213
+ overlay: '#141722',
214
+ panel: '#1f2335',
215
+ panelHighlight: '#292e42',
216
+ panelMuted: '#24283b',
217
+ success: '#9ece6a',
218
+ text: '#c0caf5',
219
+ textMuted: '#565f89',
220
+ warning: '#e0af68',
221
+ },
222
+ name: 'Tokyo Night',
223
+ },
224
+ }
225
+
226
+ export const THEME_IDS = Object.keys(THEMES) as ThemeId[]
227
+
228
+ /**
229
+ * Theme helpers for user configs.
230
+ */
231
+ export const themes = {
232
+ /**
233
+ * Create a fully custom theme from scratch.
234
+ */
235
+ create(colors: ThemeColors): ThemeDefinition {
236
+ return { colors }
237
+ },
238
+
239
+ /**
240
+ * Create a new theme by extending an existing built-in theme with overrides.
241
+ */
242
+ extend(base: ThemeId, overrides: Partial<ThemeColors>): ThemeDefinition {
243
+ const baseTheme = THEMES[base]
244
+ if (!baseTheme) {
245
+ throw new Error(`themes.extend: unknown base theme "${base}"`)
246
+ }
247
+ return {
248
+ base,
249
+ colors: { ...baseTheme.colors, ...overrides },
250
+ }
251
+ },
252
+ }