svelte-theme-picker 1.0.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/README.md +686 -0
- package/dist/ThemePicker.svelte +514 -0
- package/dist/ThemePicker.svelte.d.ts +19 -0
- package/dist/catalog.d.ts +47 -0
- package/dist/catalog.js +160 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +8 -0
- package/dist/store.d.ts +36 -0
- package/dist/store.js +118 -0
- package/dist/themes.d.ts +54 -0
- package/dist/themes.js +486 -0
- package/dist/types.d.ts +128 -0
- package/dist/types.js +1 -0
- package/package.json +63 -0
package/dist/themes.js
ADDED
|
@@ -0,0 +1,486 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dreamy pastel theme with soft purples and pinks
|
|
3
|
+
*/
|
|
4
|
+
export const dreamy = {
|
|
5
|
+
name: 'Dreamy',
|
|
6
|
+
description: 'Soft pastels with dreamy atmosphere',
|
|
7
|
+
colors: {
|
|
8
|
+
bgDeep: '#1a1a2e',
|
|
9
|
+
bgMid: '#232342',
|
|
10
|
+
bgCard: '#2a2a4a',
|
|
11
|
+
bgGlow: '#3d3d6b',
|
|
12
|
+
bgOverlay: '#1a1a2e',
|
|
13
|
+
primary1: '#c9a0dc',
|
|
14
|
+
primary2: '#b8a9d9',
|
|
15
|
+
primary3: '#e8a4c9',
|
|
16
|
+
primary4: '#7eb8da',
|
|
17
|
+
primary5: '#8ad4d4',
|
|
18
|
+
primary6: '#f0c4a8',
|
|
19
|
+
accent1: '#a855f7',
|
|
20
|
+
accent2: '#ff6b9d',
|
|
21
|
+
accent3: '#64c8ff',
|
|
22
|
+
textPrimary: '#e8e0f0',
|
|
23
|
+
textSecondary: '#c8c0d8',
|
|
24
|
+
textMuted: '#9090b0',
|
|
25
|
+
},
|
|
26
|
+
fonts: {
|
|
27
|
+
heading: "'Quicksand', sans-serif",
|
|
28
|
+
body: "'Zen Maru Gothic', sans-serif",
|
|
29
|
+
mono: "'Space Mono', monospace",
|
|
30
|
+
},
|
|
31
|
+
effects: {
|
|
32
|
+
glowColor: 'rgba(168, 85, 247, 0.15)',
|
|
33
|
+
glowIntensity: 0.3,
|
|
34
|
+
particleColors: ['#c9a0dc', '#b8a9d9', '#e8a4c9', '#8ad4d4', '#a855f7'],
|
|
35
|
+
useNoise: true,
|
|
36
|
+
noiseOpacity: 0.03,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* High contrast cyberpunk neon theme
|
|
41
|
+
*/
|
|
42
|
+
export const cyberpunk = {
|
|
43
|
+
name: 'Cyberpunk',
|
|
44
|
+
description: 'High contrast neons against dark backgrounds',
|
|
45
|
+
colors: {
|
|
46
|
+
bgDeep: '#0a0a0f',
|
|
47
|
+
bgMid: '#12121a',
|
|
48
|
+
bgCard: '#1a1a25',
|
|
49
|
+
bgGlow: '#252535',
|
|
50
|
+
bgOverlay: '#0f0a18',
|
|
51
|
+
primary1: '#ff00ff',
|
|
52
|
+
primary2: '#00ffff',
|
|
53
|
+
primary3: '#ff0080',
|
|
54
|
+
primary4: '#00ff80',
|
|
55
|
+
primary5: '#8000ff',
|
|
56
|
+
primary6: '#ffff00',
|
|
57
|
+
accent1: '#ff00ff',
|
|
58
|
+
accent2: '#00ffff',
|
|
59
|
+
accent3: '#ff0080',
|
|
60
|
+
textPrimary: '#ffffff',
|
|
61
|
+
textSecondary: '#b0b0c0',
|
|
62
|
+
textMuted: '#606080',
|
|
63
|
+
},
|
|
64
|
+
fonts: {
|
|
65
|
+
heading: "'Orbitron', sans-serif",
|
|
66
|
+
body: "'Rajdhani', sans-serif",
|
|
67
|
+
mono: "'Fira Code', monospace",
|
|
68
|
+
},
|
|
69
|
+
effects: {
|
|
70
|
+
glowColor: 'rgba(255, 0, 255, 0.2)',
|
|
71
|
+
glowIntensity: 0.5,
|
|
72
|
+
particleColors: ['#ff00ff', '#00ffff', '#ff0080', '#00ff80'],
|
|
73
|
+
useNoise: false,
|
|
74
|
+
noiseOpacity: 0,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Warm sunset oranges and purples
|
|
79
|
+
*/
|
|
80
|
+
export const sunset = {
|
|
81
|
+
name: 'Sunset',
|
|
82
|
+
description: 'Warm oranges and purples like a summer sunset',
|
|
83
|
+
colors: {
|
|
84
|
+
bgDeep: '#1a1020',
|
|
85
|
+
bgMid: '#2a1830',
|
|
86
|
+
bgCard: '#3a2040',
|
|
87
|
+
bgGlow: '#4a2850',
|
|
88
|
+
bgOverlay: '#1f0f1f',
|
|
89
|
+
primary1: '#ff9966',
|
|
90
|
+
primary2: '#ff6b8a',
|
|
91
|
+
primary3: '#c084fc',
|
|
92
|
+
primary4: '#fbbf24',
|
|
93
|
+
primary5: '#fb7185',
|
|
94
|
+
primary6: '#fdba74',
|
|
95
|
+
accent1: '#f97316',
|
|
96
|
+
accent2: '#ec4899',
|
|
97
|
+
accent3: '#8b5cf6',
|
|
98
|
+
textPrimary: '#fef3e2',
|
|
99
|
+
textSecondary: '#e8d5c4',
|
|
100
|
+
textMuted: '#a89080',
|
|
101
|
+
},
|
|
102
|
+
fonts: {
|
|
103
|
+
heading: "'Playfair Display', serif",
|
|
104
|
+
body: "'Lora', serif",
|
|
105
|
+
mono: "'Source Code Pro', monospace",
|
|
106
|
+
},
|
|
107
|
+
effects: {
|
|
108
|
+
glowColor: 'rgba(249, 115, 22, 0.15)',
|
|
109
|
+
glowIntensity: 0.35,
|
|
110
|
+
particleColors: ['#ff9966', '#ff6b8a', '#c084fc', '#fbbf24', '#fb7185'],
|
|
111
|
+
useNoise: true,
|
|
112
|
+
noiseOpacity: 0.02,
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Deep ocean blues and teals
|
|
117
|
+
*/
|
|
118
|
+
export const ocean = {
|
|
119
|
+
name: 'Ocean',
|
|
120
|
+
description: 'Deep blues and teals with bioluminescent accents',
|
|
121
|
+
colors: {
|
|
122
|
+
bgDeep: '#0a1628',
|
|
123
|
+
bgMid: '#0f2035',
|
|
124
|
+
bgCard: '#152a42',
|
|
125
|
+
bgGlow: '#1e3a50',
|
|
126
|
+
bgOverlay: '#0a1420',
|
|
127
|
+
primary1: '#38bdf8',
|
|
128
|
+
primary2: '#22d3ee',
|
|
129
|
+
primary3: '#2dd4bf',
|
|
130
|
+
primary4: '#34d399',
|
|
131
|
+
primary5: '#67e8f9',
|
|
132
|
+
primary6: '#a5f3fc',
|
|
133
|
+
accent1: '#06b6d4',
|
|
134
|
+
accent2: '#14b8a6',
|
|
135
|
+
accent3: '#0ea5e9',
|
|
136
|
+
textPrimary: '#e0f7fa',
|
|
137
|
+
textSecondary: '#b2ebf2',
|
|
138
|
+
textMuted: '#6ba3b0',
|
|
139
|
+
},
|
|
140
|
+
fonts: {
|
|
141
|
+
heading: "'Nunito', sans-serif",
|
|
142
|
+
body: "'Open Sans', sans-serif",
|
|
143
|
+
mono: "'Fira Code', monospace",
|
|
144
|
+
},
|
|
145
|
+
effects: {
|
|
146
|
+
glowColor: 'rgba(34, 211, 238, 0.12)',
|
|
147
|
+
glowIntensity: 0.25,
|
|
148
|
+
particleColors: ['#38bdf8', '#22d3ee', '#2dd4bf', '#67e8f9'],
|
|
149
|
+
useNoise: false,
|
|
150
|
+
noiseOpacity: 0,
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Clean monochromatic with purple accents
|
|
155
|
+
*/
|
|
156
|
+
export const mono = {
|
|
157
|
+
name: 'Mono',
|
|
158
|
+
description: 'Clean monochromatic design with subtle accents',
|
|
159
|
+
colors: {
|
|
160
|
+
bgDeep: '#111111',
|
|
161
|
+
bgMid: '#1a1a1a',
|
|
162
|
+
bgCard: '#222222',
|
|
163
|
+
bgGlow: '#2a2a2a',
|
|
164
|
+
bgOverlay: '#141418',
|
|
165
|
+
primary1: '#a0a0a0',
|
|
166
|
+
primary2: '#909090',
|
|
167
|
+
primary3: '#b0b0b0',
|
|
168
|
+
primary4: '#808080',
|
|
169
|
+
primary5: '#c0c0c0',
|
|
170
|
+
primary6: '#d0d0d0',
|
|
171
|
+
accent1: '#a855f7',
|
|
172
|
+
accent2: '#9333ea',
|
|
173
|
+
accent3: '#7c3aed',
|
|
174
|
+
textPrimary: '#f5f5f5',
|
|
175
|
+
textSecondary: '#a0a0a0',
|
|
176
|
+
textMuted: '#606060',
|
|
177
|
+
},
|
|
178
|
+
fonts: {
|
|
179
|
+
heading: "'Inter', sans-serif",
|
|
180
|
+
body: "'Inter', sans-serif",
|
|
181
|
+
mono: "'JetBrains Mono', monospace",
|
|
182
|
+
},
|
|
183
|
+
effects: {
|
|
184
|
+
glowColor: 'rgba(168, 85, 247, 0.1)',
|
|
185
|
+
glowIntensity: 0.15,
|
|
186
|
+
particleColors: ['#a0a0a0', '#808080', '#a855f7'],
|
|
187
|
+
useNoise: false,
|
|
188
|
+
noiseOpacity: 0,
|
|
189
|
+
},
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* Cherry blossom inspired pinks
|
|
193
|
+
*/
|
|
194
|
+
export const sakura = {
|
|
195
|
+
name: 'Sakura',
|
|
196
|
+
description: 'Delicate cherry blossom pinks with spring greens',
|
|
197
|
+
colors: {
|
|
198
|
+
bgDeep: '#1a1520',
|
|
199
|
+
bgMid: '#251d28',
|
|
200
|
+
bgCard: '#2f2532',
|
|
201
|
+
bgGlow: '#3d303f',
|
|
202
|
+
bgOverlay: '#1a1018',
|
|
203
|
+
primary1: '#ffb7c5',
|
|
204
|
+
primary2: '#ffc1cc',
|
|
205
|
+
primary3: '#ff91a4',
|
|
206
|
+
primary4: '#98d8aa',
|
|
207
|
+
primary5: '#c9e4ca',
|
|
208
|
+
primary6: '#ffe5ec',
|
|
209
|
+
accent1: '#ff69b4',
|
|
210
|
+
accent2: '#ff1493',
|
|
211
|
+
accent3: '#50c878',
|
|
212
|
+
textPrimary: '#fff0f3',
|
|
213
|
+
textSecondary: '#e8c4cc',
|
|
214
|
+
textMuted: '#a08088',
|
|
215
|
+
},
|
|
216
|
+
fonts: {
|
|
217
|
+
heading: "'Zen Maru Gothic', sans-serif",
|
|
218
|
+
body: "'Zen Maru Gothic', sans-serif",
|
|
219
|
+
mono: "'Source Code Pro', monospace",
|
|
220
|
+
},
|
|
221
|
+
effects: {
|
|
222
|
+
glowColor: 'rgba(255, 105, 180, 0.15)',
|
|
223
|
+
glowIntensity: 0.3,
|
|
224
|
+
particleColors: ['#ffb7c5', '#ffc1cc', '#ff91a4', '#98d8aa', '#ff69b4'],
|
|
225
|
+
useNoise: true,
|
|
226
|
+
noiseOpacity: 0.02,
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
/**
|
|
230
|
+
* Aurora borealis greens and purples
|
|
231
|
+
*/
|
|
232
|
+
export const aurora = {
|
|
233
|
+
name: 'Aurora',
|
|
234
|
+
description: 'Mystical aurora borealis dancing across the sky',
|
|
235
|
+
colors: {
|
|
236
|
+
bgDeep: '#0a0f1a',
|
|
237
|
+
bgMid: '#0f1725',
|
|
238
|
+
bgCard: '#151f30',
|
|
239
|
+
bgGlow: '#1a2840',
|
|
240
|
+
bgOverlay: '#081018',
|
|
241
|
+
primary1: '#00ff87',
|
|
242
|
+
primary2: '#00d4aa',
|
|
243
|
+
primary3: '#7b68ee',
|
|
244
|
+
primary4: '#00bfff',
|
|
245
|
+
primary5: '#9370db',
|
|
246
|
+
primary6: '#40e0d0',
|
|
247
|
+
accent1: '#00ff87',
|
|
248
|
+
accent2: '#7b68ee',
|
|
249
|
+
accent3: '#00bfff',
|
|
250
|
+
textPrimary: '#e0fff4',
|
|
251
|
+
textSecondary: '#a0d4c4',
|
|
252
|
+
textMuted: '#607a70',
|
|
253
|
+
},
|
|
254
|
+
fonts: {
|
|
255
|
+
heading: "'Comfortaa', sans-serif",
|
|
256
|
+
body: "'Nunito Sans', sans-serif",
|
|
257
|
+
mono: "'Fira Code', monospace",
|
|
258
|
+
},
|
|
259
|
+
effects: {
|
|
260
|
+
glowColor: 'rgba(0, 255, 135, 0.12)',
|
|
261
|
+
glowIntensity: 0.35,
|
|
262
|
+
particleColors: ['#00ff87', '#00d4aa', '#7b68ee', '#00bfff', '#9370db'],
|
|
263
|
+
useNoise: false,
|
|
264
|
+
noiseOpacity: 0,
|
|
265
|
+
},
|
|
266
|
+
};
|
|
267
|
+
/**
|
|
268
|
+
* Deep space with cosmic nebulae
|
|
269
|
+
*/
|
|
270
|
+
export const galaxy = {
|
|
271
|
+
name: 'Galaxy',
|
|
272
|
+
description: 'Deep space with distant stars and cosmic nebulae',
|
|
273
|
+
colors: {
|
|
274
|
+
bgDeep: '#05050f',
|
|
275
|
+
bgMid: '#0a0a1a',
|
|
276
|
+
bgCard: '#101025',
|
|
277
|
+
bgGlow: '#181835',
|
|
278
|
+
bgOverlay: '#08081a',
|
|
279
|
+
primary1: '#e0b0ff',
|
|
280
|
+
primary2: '#b0c4de',
|
|
281
|
+
primary3: '#dda0dd',
|
|
282
|
+
primary4: '#87ceeb',
|
|
283
|
+
primary5: '#ffefd5',
|
|
284
|
+
primary6: '#e6e6fa',
|
|
285
|
+
accent1: '#9d4edd',
|
|
286
|
+
accent2: '#c77dff',
|
|
287
|
+
accent3: '#7b2cbf',
|
|
288
|
+
textPrimary: '#f0e6ff',
|
|
289
|
+
textSecondary: '#c4b5d4',
|
|
290
|
+
textMuted: '#6a5a7a',
|
|
291
|
+
},
|
|
292
|
+
fonts: {
|
|
293
|
+
heading: "'Cinzel', serif",
|
|
294
|
+
body: "'Raleway', sans-serif",
|
|
295
|
+
mono: "'Fira Code', monospace",
|
|
296
|
+
},
|
|
297
|
+
effects: {
|
|
298
|
+
glowColor: 'rgba(157, 78, 221, 0.15)',
|
|
299
|
+
glowIntensity: 0.3,
|
|
300
|
+
particleColors: ['#e0b0ff', '#b0c4de', '#dda0dd', '#ffefd5', '#9d4edd'],
|
|
301
|
+
useNoise: false,
|
|
302
|
+
noiseOpacity: 0,
|
|
303
|
+
},
|
|
304
|
+
};
|
|
305
|
+
/**
|
|
306
|
+
* Clean, creamy light theme
|
|
307
|
+
*/
|
|
308
|
+
export const milk = {
|
|
309
|
+
name: 'Milk',
|
|
310
|
+
description: 'Clean and creamy whites with warm neutral accents',
|
|
311
|
+
colors: {
|
|
312
|
+
bgDeep: '#fefefe',
|
|
313
|
+
bgMid: '#faf9f7',
|
|
314
|
+
bgCard: '#ffffff',
|
|
315
|
+
bgGlow: '#f5f4f2',
|
|
316
|
+
bgOverlay: '#eae8e4',
|
|
317
|
+
primary1: '#8b7355',
|
|
318
|
+
primary2: '#a09080',
|
|
319
|
+
primary3: '#c4b8a8',
|
|
320
|
+
primary4: '#d4c8b8',
|
|
321
|
+
primary5: '#e8e0d8',
|
|
322
|
+
primary6: '#6b5b4b',
|
|
323
|
+
accent1: '#7c6650',
|
|
324
|
+
accent2: '#9a8070',
|
|
325
|
+
accent3: '#5c4c3c',
|
|
326
|
+
textPrimary: '#2d2a26',
|
|
327
|
+
textSecondary: '#5a5650',
|
|
328
|
+
textMuted: '#908880',
|
|
329
|
+
},
|
|
330
|
+
fonts: {
|
|
331
|
+
heading: "'DM Sans', sans-serif",
|
|
332
|
+
body: "'DM Sans', sans-serif",
|
|
333
|
+
mono: "'JetBrains Mono', monospace",
|
|
334
|
+
},
|
|
335
|
+
effects: {
|
|
336
|
+
glowColor: 'rgba(139, 115, 85, 0.1)',
|
|
337
|
+
glowIntensity: 0.1,
|
|
338
|
+
particleColors: ['#c4b8a8', '#d4c8b8', '#a09080', '#e8e0d8'],
|
|
339
|
+
useNoise: false,
|
|
340
|
+
noiseOpacity: 0,
|
|
341
|
+
},
|
|
342
|
+
};
|
|
343
|
+
/**
|
|
344
|
+
* Modern light theme with purple accents
|
|
345
|
+
*/
|
|
346
|
+
export const light = {
|
|
347
|
+
name: 'Light',
|
|
348
|
+
description: 'A crisp, modern light theme with purple accents',
|
|
349
|
+
colors: {
|
|
350
|
+
bgDeep: '#ffffff',
|
|
351
|
+
bgMid: '#f8f9fa',
|
|
352
|
+
bgCard: '#ffffff',
|
|
353
|
+
bgGlow: '#f0f0f5',
|
|
354
|
+
bgOverlay: '#e8e8f0',
|
|
355
|
+
primary1: '#7c3aed',
|
|
356
|
+
primary2: '#8b5cf6',
|
|
357
|
+
primary3: '#a78bfa',
|
|
358
|
+
primary4: '#6366f1',
|
|
359
|
+
primary5: '#c4b5fd',
|
|
360
|
+
primary6: '#818cf8',
|
|
361
|
+
accent1: '#7c3aed',
|
|
362
|
+
accent2: '#ec4899',
|
|
363
|
+
accent3: '#06b6d4',
|
|
364
|
+
textPrimary: '#1a1a2e',
|
|
365
|
+
textSecondary: '#4a4a5a',
|
|
366
|
+
textMuted: '#9090a0',
|
|
367
|
+
},
|
|
368
|
+
fonts: {
|
|
369
|
+
heading: "'Inter', sans-serif",
|
|
370
|
+
body: "'Inter', sans-serif",
|
|
371
|
+
mono: "'JetBrains Mono', monospace",
|
|
372
|
+
},
|
|
373
|
+
effects: {
|
|
374
|
+
glowColor: 'rgba(124, 58, 237, 0.1)',
|
|
375
|
+
glowIntensity: 0.15,
|
|
376
|
+
particleColors: ['#7c3aed', '#8b5cf6', '#a78bfa', '#ec4899', '#06b6d4'],
|
|
377
|
+
useNoise: false,
|
|
378
|
+
noiseOpacity: 0,
|
|
379
|
+
},
|
|
380
|
+
};
|
|
381
|
+
/**
|
|
382
|
+
* Default themes included with the package
|
|
383
|
+
*/
|
|
384
|
+
export const defaultThemes = {
|
|
385
|
+
dreamy,
|
|
386
|
+
cyberpunk,
|
|
387
|
+
sunset,
|
|
388
|
+
ocean,
|
|
389
|
+
mono,
|
|
390
|
+
sakura,
|
|
391
|
+
aurora,
|
|
392
|
+
galaxy,
|
|
393
|
+
milk,
|
|
394
|
+
light,
|
|
395
|
+
};
|
|
396
|
+
/**
|
|
397
|
+
* Default theme ID
|
|
398
|
+
*/
|
|
399
|
+
export const DEFAULT_THEME_ID = 'dreamy';
|
|
400
|
+
/**
|
|
401
|
+
* Default themes as a catalog with metadata
|
|
402
|
+
* This format supports filtering by tags, active status, etc.
|
|
403
|
+
*/
|
|
404
|
+
export const defaultThemeCatalog = {
|
|
405
|
+
dreamy: {
|
|
406
|
+
theme: dreamy,
|
|
407
|
+
meta: {
|
|
408
|
+
active: true,
|
|
409
|
+
tags: ['dark', 'pastel', 'default'],
|
|
410
|
+
order: 1,
|
|
411
|
+
},
|
|
412
|
+
},
|
|
413
|
+
cyberpunk: {
|
|
414
|
+
theme: cyberpunk,
|
|
415
|
+
meta: {
|
|
416
|
+
active: true,
|
|
417
|
+
tags: ['dark', 'neon', 'high-contrast'],
|
|
418
|
+
order: 2,
|
|
419
|
+
},
|
|
420
|
+
},
|
|
421
|
+
sunset: {
|
|
422
|
+
theme: sunset,
|
|
423
|
+
meta: {
|
|
424
|
+
active: true,
|
|
425
|
+
tags: ['dark', 'warm'],
|
|
426
|
+
order: 3,
|
|
427
|
+
},
|
|
428
|
+
},
|
|
429
|
+
ocean: {
|
|
430
|
+
theme: ocean,
|
|
431
|
+
meta: {
|
|
432
|
+
active: true,
|
|
433
|
+
tags: ['dark', 'cool', 'calm'],
|
|
434
|
+
order: 4,
|
|
435
|
+
},
|
|
436
|
+
},
|
|
437
|
+
mono: {
|
|
438
|
+
theme: mono,
|
|
439
|
+
meta: {
|
|
440
|
+
active: true,
|
|
441
|
+
tags: ['dark', 'minimal', 'professional'],
|
|
442
|
+
order: 5,
|
|
443
|
+
},
|
|
444
|
+
},
|
|
445
|
+
sakura: {
|
|
446
|
+
theme: sakura,
|
|
447
|
+
meta: {
|
|
448
|
+
active: true,
|
|
449
|
+
tags: ['dark', 'pastel', 'pink'],
|
|
450
|
+
seasonal: 'spring',
|
|
451
|
+
order: 6,
|
|
452
|
+
},
|
|
453
|
+
},
|
|
454
|
+
aurora: {
|
|
455
|
+
theme: aurora,
|
|
456
|
+
meta: {
|
|
457
|
+
active: true,
|
|
458
|
+
tags: ['dark', 'nature', 'vibrant'],
|
|
459
|
+
order: 7,
|
|
460
|
+
},
|
|
461
|
+
},
|
|
462
|
+
galaxy: {
|
|
463
|
+
theme: galaxy,
|
|
464
|
+
meta: {
|
|
465
|
+
active: true,
|
|
466
|
+
tags: ['dark', 'space', 'cosmic'],
|
|
467
|
+
order: 8,
|
|
468
|
+
},
|
|
469
|
+
},
|
|
470
|
+
milk: {
|
|
471
|
+
theme: milk,
|
|
472
|
+
meta: {
|
|
473
|
+
active: true,
|
|
474
|
+
tags: ['light', 'neutral', 'minimal'],
|
|
475
|
+
order: 9,
|
|
476
|
+
},
|
|
477
|
+
},
|
|
478
|
+
light: {
|
|
479
|
+
theme: light,
|
|
480
|
+
meta: {
|
|
481
|
+
active: true,
|
|
482
|
+
tags: ['light', 'modern', 'professional'],
|
|
483
|
+
order: 10,
|
|
484
|
+
},
|
|
485
|
+
},
|
|
486
|
+
};
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme color configuration
|
|
3
|
+
*/
|
|
4
|
+
export interface ThemeColors {
|
|
5
|
+
/** Deepest background color */
|
|
6
|
+
bgDeep: string;
|
|
7
|
+
/** Mid-level background color */
|
|
8
|
+
bgMid: string;
|
|
9
|
+
/** Card/surface background color */
|
|
10
|
+
bgCard: string;
|
|
11
|
+
/** Glow/highlight background color */
|
|
12
|
+
bgGlow: string;
|
|
13
|
+
/** Overlay background color */
|
|
14
|
+
bgOverlay: string;
|
|
15
|
+
/** Primary palette colors (1-6, from most prominent to least) */
|
|
16
|
+
primary1: string;
|
|
17
|
+
primary2: string;
|
|
18
|
+
primary3: string;
|
|
19
|
+
primary4: string;
|
|
20
|
+
primary5: string;
|
|
21
|
+
primary6: string;
|
|
22
|
+
/** Accent/neon colors for highlights */
|
|
23
|
+
accent1: string;
|
|
24
|
+
accent2: string;
|
|
25
|
+
accent3: string;
|
|
26
|
+
/** Primary text color */
|
|
27
|
+
textPrimary: string;
|
|
28
|
+
/** Secondary text color */
|
|
29
|
+
textSecondary: string;
|
|
30
|
+
/** Muted/disabled text color */
|
|
31
|
+
textMuted: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Theme font configuration
|
|
35
|
+
*/
|
|
36
|
+
export interface ThemeFonts {
|
|
37
|
+
/** Font for headings */
|
|
38
|
+
heading: string;
|
|
39
|
+
/** Font for body text */
|
|
40
|
+
body: string;
|
|
41
|
+
/** Font for code/monospace */
|
|
42
|
+
mono: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Theme effect configuration
|
|
46
|
+
*/
|
|
47
|
+
export interface ThemeEffects {
|
|
48
|
+
/** Color for glow effects */
|
|
49
|
+
glowColor: string;
|
|
50
|
+
/** Intensity of glow (0-1) */
|
|
51
|
+
glowIntensity: number;
|
|
52
|
+
/** Colors for particle effects */
|
|
53
|
+
particleColors: string[];
|
|
54
|
+
/** Whether to use noise texture */
|
|
55
|
+
useNoise: boolean;
|
|
56
|
+
/** Opacity of noise texture (0-1) */
|
|
57
|
+
noiseOpacity: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Complete theme definition
|
|
61
|
+
*/
|
|
62
|
+
export interface Theme {
|
|
63
|
+
/** Display name of the theme */
|
|
64
|
+
name: string;
|
|
65
|
+
/** Short description of the theme */
|
|
66
|
+
description: string;
|
|
67
|
+
/** Color configuration */
|
|
68
|
+
colors: ThemeColors;
|
|
69
|
+
/** Font configuration */
|
|
70
|
+
fonts: ThemeFonts;
|
|
71
|
+
/** Effect configuration */
|
|
72
|
+
effects: ThemeEffects;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Configuration options for the theme picker
|
|
76
|
+
*/
|
|
77
|
+
export interface ThemePickerConfig {
|
|
78
|
+
/** Storage key for persisting theme selection */
|
|
79
|
+
storageKey?: string;
|
|
80
|
+
/** Default theme ID to use */
|
|
81
|
+
defaultTheme?: string;
|
|
82
|
+
/** Custom themes to use (replaces defaults if provided) */
|
|
83
|
+
themes?: Record<string, Theme>;
|
|
84
|
+
/** CSS variable prefix (default: none, uses standard names) */
|
|
85
|
+
cssVarPrefix?: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Metadata for a theme in a catalog
|
|
89
|
+
*/
|
|
90
|
+
export interface ThemeMeta {
|
|
91
|
+
/** Whether this theme is active/visible in the picker (default: true) */
|
|
92
|
+
active?: boolean;
|
|
93
|
+
/** Tags for categorizing themes (e.g., 'dark', 'light', 'seasonal', 'test') */
|
|
94
|
+
tags?: string[];
|
|
95
|
+
/** Sort order for display (lower numbers first) */
|
|
96
|
+
order?: number;
|
|
97
|
+
/** Date the theme was added */
|
|
98
|
+
addedDate?: string;
|
|
99
|
+
/** Whether this is a seasonal theme (optionally specify season) */
|
|
100
|
+
seasonal?: string | boolean;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* A theme with its metadata for use in a catalog
|
|
104
|
+
*/
|
|
105
|
+
export interface ThemeCatalogEntry {
|
|
106
|
+
/** The theme definition */
|
|
107
|
+
theme: Theme;
|
|
108
|
+
/** Metadata about the theme */
|
|
109
|
+
meta?: ThemeMeta;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* A catalog of themes with metadata
|
|
113
|
+
* Keys are theme IDs, values are theme definitions with metadata
|
|
114
|
+
*/
|
|
115
|
+
export type ThemeCatalog = Record<string, ThemeCatalogEntry>;
|
|
116
|
+
/**
|
|
117
|
+
* Options for filtering themes from a catalog
|
|
118
|
+
*/
|
|
119
|
+
export interface ThemeFilterOptions {
|
|
120
|
+
/** Only include active themes (default: true) */
|
|
121
|
+
activeOnly?: boolean;
|
|
122
|
+
/** Only include themes with ALL of these tags */
|
|
123
|
+
tags?: string[];
|
|
124
|
+
/** Only include themes with ANY of these tags */
|
|
125
|
+
anyTags?: string[];
|
|
126
|
+
/** Exclude themes with ANY of these tags */
|
|
127
|
+
excludeTags?: string[];
|
|
128
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "svelte-theme-picker",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A beautiful, customizable theme picker component for Svelte applications",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"dev": "vite dev",
|
|
9
|
+
"build": "vite build",
|
|
10
|
+
"build:all": "vite build && npm run package",
|
|
11
|
+
"preview": "vite preview",
|
|
12
|
+
"package": "svelte-kit sync && svelte-package && publint",
|
|
13
|
+
"prepublishOnly": "npm run package",
|
|
14
|
+
"check": "svelte-kit sync && svelte-check --no-tsconfig --ignore \"src/routes,dist\"",
|
|
15
|
+
"check:watch": "svelte-kit sync && svelte-check --no-tsconfig --ignore \"src/routes,dist\" --watch"
|
|
16
|
+
},
|
|
17
|
+
"svelte": "./dist/index.js",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"svelte": "./dist/index.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"!dist/**/*.test.*",
|
|
28
|
+
"!dist/**/*.spec.*"
|
|
29
|
+
],
|
|
30
|
+
"peerDependencies": {
|
|
31
|
+
"svelte": "^5.0.0"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@sveltejs/adapter-vercel": "^6.2.0",
|
|
35
|
+
"@sveltejs/kit": "^2.0.0",
|
|
36
|
+
"@sveltejs/package": "^2.0.0",
|
|
37
|
+
"@sveltejs/vite-plugin-svelte": "^4.0.0",
|
|
38
|
+
"publint": "^0.2.0",
|
|
39
|
+
"svelte": "^5.0.0",
|
|
40
|
+
"svelte-check": "^4.0.0",
|
|
41
|
+
"typescript": "^5.0.0",
|
|
42
|
+
"vite": "^5.0.0"
|
|
43
|
+
},
|
|
44
|
+
"keywords": [
|
|
45
|
+
"svelte",
|
|
46
|
+
"sveltekit",
|
|
47
|
+
"theme",
|
|
48
|
+
"theme-picker",
|
|
49
|
+
"dark-mode",
|
|
50
|
+
"light-mode",
|
|
51
|
+
"theming",
|
|
52
|
+
"css-variables"
|
|
53
|
+
],
|
|
54
|
+
"repository": {
|
|
55
|
+
"type": "git",
|
|
56
|
+
"url": "git+https://github.com/PaulNonatomic/svelte-theme-picker.git"
|
|
57
|
+
},
|
|
58
|
+
"homepage": "https://svelte-theme-picker.vercel.app",
|
|
59
|
+
"bugs": {
|
|
60
|
+
"url": "https://github.com/PaulNonatomic/svelte-theme-picker/issues"
|
|
61
|
+
},
|
|
62
|
+
"author": "PaulNonatomic"
|
|
63
|
+
}
|