Skip to content

Commit b803cb5

Browse files
committed
feat: dynamic theme switcher palette
1 parent 627cbbe commit b803cb5

File tree

9 files changed

+1025
-35
lines changed

9 files changed

+1025
-35
lines changed

api/api/versions.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
{
44
"version": "v1",
55
"status": "active",
6-
"release_date": "2025-07-10T02:54:43.011943+05:30",
6+
"release_date": "2025-08-03T20:02:14.215171+05:30",
77
"end_of_life": "0001-01-01T00:00:00Z",
88
"changes": [
99
"Initial API version"

view/app/globals.css

Lines changed: 350 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,356 @@
152152
--sidebar-ring: oklch(0.446 0.03 256.802);
153153
}
154154

155+
.aurora {
156+
--background: oklch(0.147 0.012 276.87);
157+
--foreground: oklch(0.985 0.003 276.87);
158+
--card: oklch(0.147 0.012 276.87);
159+
--card-foreground: oklch(0.985 0.003 276.87);
160+
--popover: oklch(0.147 0.012 276.87);
161+
--popover-foreground: oklch(0.985 0.003 276.87);
162+
--primary: oklch(0.68 0.15 276.87);
163+
--primary-foreground: oklch(0.22 0.05 276.87);
164+
--secondary: oklch(0.274 0.006 276.87);
165+
--secondary-foreground: oklch(0.985 0.003 276.87);
166+
--muted: oklch(0.274 0.006 276.87);
167+
--muted-foreground: oklch(0.707 0.012 276.87);
168+
--accent: oklch(0.274 0.006 276.87);
169+
--accent-foreground: oklch(0.985 0.003 276.87);
170+
--destructive: oklch(0.396 0.141 25.723);
171+
--destructive-foreground: oklch(0.637 0.237 25.331);
172+
--border: oklch(0.274 0.006 276.87);
173+
--input: oklch(0.274 0.006 276.87);
174+
--ring: oklch(0.446 0.03 276.87);
175+
--sidebar: oklch(0.274 0.006 276.87);
176+
--sidebar-foreground: oklch(0.985 0.003 276.87);
177+
--sidebar-primary: oklch(0.488 0.243 276.87);
178+
--sidebar-primary-foreground: oklch(0.985 0.003 276.87);
179+
--sidebar-accent: oklch(0.274 0.006 276.87);
180+
--sidebar-accent-foreground: oklch(0.985 0.003 276.87);
181+
--sidebar-border: oklch(0.274 0.006 276.87);
182+
--sidebar-ring: oklch(0.446 0.03 276.87);
183+
--chart-1: oklch(0.488 0.243 276.87);
184+
--chart-2: oklch(0.696 0.17 296.87);
185+
--chart-3: oklch(0.769 0.188 316.87);
186+
--chart-4: oklch(0.627 0.265 256.87);
187+
--chart-5: oklch(0.645 0.246 236.87);
188+
}
189+
190+
.emerald {
191+
--background: oklch(0.147 0.012 170);
192+
--foreground: oklch(0.985 0.003 170);
193+
--card: oklch(0.147 0.012 170);
194+
--card-foreground: oklch(0.985 0.003 170);
195+
--popover: oklch(0.147 0.012 170);
196+
--popover-foreground: oklch(0.985 0.003 170);
197+
--primary: oklch(0.72 0.19 150);
198+
--primary-foreground: oklch(0.22 0.06 150);
199+
--secondary: oklch(0.274 0.006 170);
200+
--secondary-foreground: oklch(0.985 0.003 170);
201+
--muted: oklch(0.274 0.006 170);
202+
--muted-foreground: oklch(0.707 0.012 170);
203+
--accent: oklch(0.274 0.006 170);
204+
--accent-foreground: oklch(0.985 0.003 170);
205+
--destructive: oklch(0.396 0.141 25.723);
206+
--destructive-foreground: oklch(0.637 0.237 25.331);
207+
--border: oklch(0.274 0.006 170);
208+
--input: oklch(0.274 0.006 170);
209+
--ring: oklch(0.446 0.03 150);
210+
--sidebar: oklch(0.274 0.006 170);
211+
--sidebar-foreground: oklch(0.985 0.003 170);
212+
--sidebar-primary: oklch(0.488 0.243 150);
213+
--sidebar-primary-foreground: oklch(0.985 0.003 170);
214+
--sidebar-accent: oklch(0.274 0.006 170);
215+
--sidebar-accent-foreground: oklch(0.985 0.003 170);
216+
--sidebar-border: oklch(0.274 0.006 170);
217+
--sidebar-ring: oklch(0.446 0.03 150);
218+
--chart-1: oklch(0.488 0.243 150);
219+
--chart-2: oklch(0.696 0.17 130);
220+
--chart-3: oklch(0.769 0.188 110);
221+
--chart-4: oklch(0.627 0.265 170);
222+
--chart-5: oklch(0.645 0.246 190);
223+
}
224+
225+
.citrus {
226+
--background: oklch(0.147 0.012 80);
227+
--foreground: oklch(0.985 0.003 80);
228+
--card: oklch(0.147 0.012 80);
229+
--card-foreground: oklch(0.985 0.003 80);
230+
--popover: oklch(0.147 0.012 80);
231+
--popover-foreground: oklch(0.985 0.003 80);
232+
--primary: oklch(0.75 0.18 65);
233+
--primary-foreground: oklch(0.22 0.06 65);
234+
--secondary: oklch(0.274 0.006 80);
235+
--secondary-foreground: oklch(0.985 0.003 80);
236+
--muted: oklch(0.274 0.006 80);
237+
--muted-foreground: oklch(0.707 0.012 80);
238+
--accent: oklch(0.274 0.006 80);
239+
--accent-foreground: oklch(0.985 0.003 80);
240+
--destructive: oklch(0.396 0.141 25.723);
241+
--destructive-foreground: oklch(0.637 0.237 25.331);
242+
--border: oklch(0.274 0.006 80);
243+
--input: oklch(0.274 0.006 80);
244+
--ring: oklch(0.446 0.03 65);
245+
--sidebar: oklch(0.274 0.006 80);
246+
--sidebar-foreground: oklch(0.985 0.003 80);
247+
--sidebar-primary: oklch(0.488 0.243 65);
248+
--sidebar-primary-foreground: oklch(0.985 0.003 80);
249+
--sidebar-accent: oklch(0.274 0.006 80);
250+
--sidebar-accent-foreground: oklch(0.985 0.003 80);
251+
--sidebar-border: oklch(0.274 0.006 80);
252+
--sidebar-ring: oklch(0.446 0.03 65);
253+
--chart-1: oklch(0.488 0.243 65);
254+
--chart-2: oklch(0.696 0.17 50);
255+
--chart-3: oklch(0.769 0.188 35);
256+
--chart-4: oklch(0.627 0.265 80);
257+
--chart-5: oklch(0.645 0.246 95);
258+
}
259+
260+
.sandalwood {
261+
--background: oklch(0.97 0.004 35);
262+
--foreground: oklch(0.15 0.004 35);
263+
--card: oklch(0.97 0.004 35);
264+
--card-foreground: oklch(0.15 0.004 35);
265+
--popover: oklch(0.97 0.004 35);
266+
--popover-foreground: oklch(0.15 0.004 35);
267+
--primary: oklch(0.45 0.08 35);
268+
--primary-foreground: oklch(0.97 0.004 35);
269+
--secondary: oklch(0.92 0.008 35);
270+
--secondary-foreground: oklch(0.25 0.006 35);
271+
--muted: oklch(0.92 0.008 35);
272+
--muted-foreground: oklch(0.45 0.008 35);
273+
--accent: oklch(0.92 0.008 35);
274+
--accent-foreground: oklch(0.25 0.006 35);
275+
--destructive: oklch(0.6562 0.106 26.815);
276+
--destructive-foreground: oklch(0.98 0 none);
277+
--border: oklch(0.88 0.012 35);
278+
--input: oklch(0.88 0.012 35);
279+
--ring: oklch(0.45 0.08 35);
280+
--sidebar: oklch(0.92 0.008 35);
281+
--sidebar-foreground: oklch(0.15 0.004 35);
282+
--sidebar-primary: oklch(0.45 0.08 35);
283+
--sidebar-primary-foreground: oklch(0.97 0.004 35);
284+
--sidebar-accent: oklch(0.92 0.008 35);
285+
--sidebar-accent-foreground: oklch(0.25 0.006 35);
286+
--sidebar-border: oklch(0.88 0.012 35);
287+
--sidebar-ring: oklch(0.45 0.08 35);
288+
--chart-1: oklch(0.62 0.16 35);
289+
--chart-2: oklch(0.58 0.12 15);
290+
--chart-3: oklch(0.45 0.08 55);
291+
--chart-4: oklch(0.74 0.16 25);
292+
--chart-5: oklch(0.67 0.18 45);
293+
}
294+
295+
.sunset {
296+
--background: oklch(0.147 0.012 25);
297+
--foreground: oklch(0.985 0.003 25);
298+
--card: oklch(0.147 0.012 25);
299+
--card-foreground: oklch(0.985 0.003 25);
300+
--popover: oklch(0.147 0.012 25);
301+
--popover-foreground: oklch(0.985 0.003 25);
302+
--primary: oklch(0.68 0.16 20);
303+
--primary-foreground: oklch(0.22 0.05 20);
304+
--secondary: oklch(0.274 0.006 25);
305+
--secondary-foreground: oklch(0.985 0.003 25);
306+
--muted: oklch(0.274 0.006 25);
307+
--muted-foreground: oklch(0.707 0.012 25);
308+
--accent: oklch(0.274 0.006 25);
309+
--accent-foreground: oklch(0.985 0.003 25);
310+
--destructive: oklch(0.396 0.141 25.723);
311+
--destructive-foreground: oklch(0.637 0.237 25.331);
312+
--border: oklch(0.274 0.006 25);
313+
--input: oklch(0.274 0.006 25);
314+
--ring: oklch(0.446 0.03 20);
315+
--sidebar: oklch(0.274 0.006 25);
316+
--sidebar-foreground: oklch(0.985 0.003 25);
317+
--sidebar-primary: oklch(0.488 0.243 20);
318+
--sidebar-primary-foreground: oklch(0.985 0.003 25);
319+
--sidebar-accent: oklch(0.274 0.006 25);
320+
--sidebar-accent-foreground: oklch(0.985 0.003 25);
321+
--sidebar-border: oklch(0.274 0.006 25);
322+
--sidebar-ring: oklch(0.446 0.03 20);
323+
--chart-1: oklch(0.488 0.243 20);
324+
--chart-2: oklch(0.696 0.17 5);
325+
--chart-3: oklch(0.769 0.188 35);
326+
--chart-4: oklch(0.627 0.265 15);
327+
--chart-5: oklch(0.645 0.246 30);
328+
}
329+
330+
.obsidian {
331+
--background: oklch(0.147 0.012 290);
332+
--foreground: oklch(0.985 0.003 290);
333+
--card: oklch(0.147 0.012 290);
334+
--card-foreground: oklch(0.985 0.003 290);
335+
--popover: oklch(0.147 0.012 290);
336+
--popover-foreground: oklch(0.985 0.003 290);
337+
--primary: oklch(0.8 0.12 290);
338+
--primary-foreground: oklch(0.22 0.04 290);
339+
--secondary: oklch(0.274 0.006 290);
340+
--secondary-foreground: oklch(0.985 0.003 290);
341+
--muted: oklch(0.274 0.006 290);
342+
--muted-foreground: oklch(0.707 0.012 290);
343+
--accent: oklch(0.274 0.006 290);
344+
--accent-foreground: oklch(0.985 0.003 290);
345+
--destructive: oklch(0.396 0.141 25.723);
346+
--destructive-foreground: oklch(0.637 0.237 25.331);
347+
--border: oklch(0.274 0.006 290);
348+
--input: oklch(0.274 0.006 290);
349+
--ring: oklch(0.446 0.03 290);
350+
--sidebar: oklch(0.274 0.006 290);
351+
--sidebar-foreground: oklch(0.985 0.003 290);
352+
--sidebar-primary: oklch(0.488 0.243 290);
353+
--sidebar-primary-foreground: oklch(0.985 0.003 290);
354+
--sidebar-accent: oklch(0.274 0.006 290);
355+
--sidebar-accent-foreground: oklch(0.985 0.003 290);
356+
--sidebar-border: oklch(0.274 0.006 290);
357+
--sidebar-ring: oklch(0.446 0.03 290);
358+
--chart-1: oklch(0.488 0.243 290);
359+
--chart-2: oklch(0.696 0.17 270);
360+
--chart-3: oklch(0.769 0.188 310);
361+
--chart-4: oklch(0.627 0.265 250);
362+
--chart-5: oklch(0.645 0.246 330);
363+
}
364+
365+
.arctic-chill {
366+
--background: oklch(0.147 0.012 200);
367+
--foreground: oklch(0.985 0.003 200);
368+
--card: oklch(0.147 0.012 200);
369+
--card-foreground: oklch(0.985 0.003 200);
370+
--popover: oklch(0.147 0.012 200);
371+
--popover-foreground: oklch(0.985 0.003 200);
372+
--primary: oklch(0.78 0.08 200);
373+
--primary-foreground: oklch(0.22 0.03 200);
374+
--secondary: oklch(0.274 0.006 200);
375+
--secondary-foreground: oklch(0.985 0.003 200);
376+
--muted: oklch(0.274 0.006 200);
377+
--muted-foreground: oklch(0.707 0.012 200);
378+
--accent: oklch(0.274 0.006 200);
379+
--accent-foreground: oklch(0.985 0.003 200);
380+
--destructive: oklch(0.396 0.141 25.723);
381+
--destructive-foreground: oklch(0.637 0.237 25.331);
382+
--border: oklch(0.274 0.006 200);
383+
--input: oklch(0.274 0.006 200);
384+
--ring: oklch(0.446 0.03 200);
385+
--sidebar: oklch(0.274 0.006 200);
386+
--sidebar-foreground: oklch(0.985 0.003 200);
387+
--sidebar-primary: oklch(0.488 0.243 200);
388+
--sidebar-primary-foreground: oklch(0.985 0.003 200);
389+
--sidebar-accent: oklch(0.274 0.006 200);
390+
--sidebar-accent-foreground: oklch(0.985 0.003 200);
391+
--sidebar-border: oklch(0.274 0.006 200);
392+
--sidebar-ring: oklch(0.446 0.03 200);
393+
--chart-1: oklch(0.488 0.243 200);
394+
--chart-2: oklch(0.696 0.17 220);
395+
--chart-3: oklch(0.769 0.188 180);
396+
--chart-4: oklch(0.627 0.265 240);
397+
--chart-5: oklch(0.645 0.246 160);
398+
}
399+
400+
.celestial-night {
401+
--background: oklch(0.147 0.012 265);
402+
--foreground: oklch(0.985 0.003 265);
403+
--card: oklch(0.147 0.012 265);
404+
--card-foreground: oklch(0.985 0.003 265);
405+
--popover: oklch(0.147 0.012 265);
406+
--popover-foreground: oklch(0.985 0.003 265);
407+
--primary: oklch(0.72 0.15 265);
408+
--primary-foreground: oklch(0.22 0.05 265);
409+
--secondary: oklch(0.274 0.006 265);
410+
--secondary-foreground: oklch(0.985 0.003 265);
411+
--muted: oklch(0.274 0.006 265);
412+
--muted-foreground: oklch(0.707 0.012 265);
413+
--accent: oklch(0.274 0.006 265);
414+
--accent-foreground: oklch(0.985 0.003 265);
415+
--destructive: oklch(0.396 0.141 25.723);
416+
--destructive-foreground: oklch(0.637 0.237 25.331);
417+
--border: oklch(0.274 0.006 265);
418+
--input: oklch(0.274 0.006 265);
419+
--ring: oklch(0.446 0.03 265);
420+
--sidebar: oklch(0.274 0.006 265);
421+
--sidebar-foreground: oklch(0.985 0.003 265);
422+
--sidebar-primary: oklch(0.488 0.243 265);
423+
--sidebar-primary-foreground: oklch(0.985 0.003 265);
424+
--sidebar-accent: oklch(0.274 0.006 265);
425+
--sidebar-accent-foreground: oklch(0.985 0.003 265);
426+
--sidebar-border: oklch(0.274 0.006 265);
427+
--sidebar-ring: oklch(0.446 0.03 265);
428+
--chart-1: oklch(0.488 0.243 265);
429+
--chart-2: oklch(0.696 0.17 245);
430+
--chart-3: oklch(0.769 0.188 285);
431+
--chart-4: oklch(0.627 0.265 225);
432+
--chart-5: oklch(0.645 0.246 305);
433+
}
434+
435+
.material-light {
436+
--background: oklch(0.98 0.002 220);
437+
--foreground: oklch(0.18 0.006 220);
438+
--card: oklch(0.98 0.002 220);
439+
--card-foreground: oklch(0.18 0.006 220);
440+
--popover: oklch(0.98 0.002 220);
441+
--popover-foreground: oklch(0.18 0.006 220);
442+
--primary: oklch(0.52 0.15 220);
443+
--primary-foreground: oklch(0.98 0.002 220);
444+
--secondary: oklch(0.94 0.006 220);
445+
--secondary-foreground: oklch(0.26 0.008 220);
446+
--muted: oklch(0.94 0.006 220);
447+
--muted-foreground: oklch(0.48 0.012 220);
448+
--accent: oklch(0.94 0.006 220);
449+
--accent-foreground: oklch(0.26 0.008 220);
450+
--destructive: oklch(0.6562 0.106 26.815);
451+
--destructive-foreground: oklch(0.98 0 none);
452+
--border: oklch(0.88 0.008 220);
453+
--input: oklch(0.88 0.008 220);
454+
--ring: oklch(0.52 0.15 220);
455+
--sidebar: oklch(0.94 0.006 220);
456+
--sidebar-foreground: oklch(0.18 0.006 220);
457+
--sidebar-primary: oklch(0.52 0.15 220);
458+
--sidebar-primary-foreground: oklch(0.98 0.002 220);
459+
--sidebar-accent: oklch(0.94 0.006 220);
460+
--sidebar-accent-foreground: oklch(0.26 0.008 220);
461+
--sidebar-border: oklch(0.88 0.008 220);
462+
--sidebar-ring: oklch(0.52 0.15 220);
463+
--chart-1: oklch(0.52 0.15 220);
464+
--chart-2: oklch(0.58 0.12 200);
465+
--chart-3: oklch(0.48 0.14 240);
466+
--chart-4: oklch(0.62 0.13 180);
467+
--chart-5: oklch(0.55 0.16 260);
468+
}
469+
470+
.pearl-elegance {
471+
--background: oklch(0.985 0.003 110);
472+
--foreground: oklch(0.15 0.008 110);
473+
--card: oklch(0.985 0.003 110);
474+
--card-foreground: oklch(0.15 0.008 110);
475+
--popover: oklch(0.985 0.003 110);
476+
--popover-foreground: oklch(0.15 0.008 110);
477+
--primary: oklch(0.45 0.12 295);
478+
--primary-foreground: oklch(0.985 0.003 295);
479+
--secondary: oklch(0.955 0.006 110);
480+
--secondary-foreground: oklch(0.22 0.01 110);
481+
--muted: oklch(0.955 0.006 110);
482+
--muted-foreground: oklch(0.42 0.014 110);
483+
--accent: oklch(0.92 0.015 330);
484+
--accent-foreground: oklch(0.25 0.012 330);
485+
--destructive: oklch(0.6562 0.106 26.815);
486+
--destructive-foreground: oklch(0.98 0 none);
487+
--border: oklch(0.885 0.012 110);
488+
--input: oklch(0.885 0.012 110);
489+
--ring: oklch(0.45 0.12 295);
490+
--sidebar: oklch(0.955 0.006 110);
491+
--sidebar-foreground: oklch(0.15 0.008 110);
492+
--sidebar-primary: oklch(0.45 0.12 295);
493+
--sidebar-primary-foreground: oklch(0.985 0.003 295);
494+
--sidebar-accent: oklch(0.92 0.015 330);
495+
--sidebar-accent-foreground: oklch(0.25 0.012 330);
496+
--sidebar-border: oklch(0.885 0.012 110);
497+
--sidebar-ring: oklch(0.45 0.12 295);
498+
--chart-1: oklch(0.45 0.12 295);
499+
--chart-2: oklch(0.58 0.14 320);
500+
--chart-3: oklch(0.52 0.16 270);
501+
--chart-4: oklch(0.48 0.18 340);
502+
--chart-5: oklch(0.62 0.12 250);
503+
}
504+
155505
@layer base {
156506
* {
157507
@apply border-border outline-ring/50;

view/app/layout.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { usePathname } from 'next/navigation';
1313
import { WebSocketProvider } from '@/hooks/socket-provider';
1414
import DashboardLayout from '@/components/layout/dashboard-layout';
1515
import { FeatureFlagsProvider } from '@/hooks/features_provider';
16+
import { palette } from '@/components/colors';
1617

1718
const geistSans = Geist({
1819
variable: '--font-geist-sans',
@@ -59,7 +60,7 @@ const ChildrenWrapper = ({ children }: { children: React.ReactNode }) => {
5960

6061
return (
6162
<>
62-
<ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange>
63+
<ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange themes={palette}>
6364
<WebSocketProvider>
6465
<FeatureFlagsProvider>
6566
{pathname === '/' || pathname === '/login' || pathname === '/register' ? (

0 commit comments

Comments
 (0)