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/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
+ };
@@ -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
+ }