feat: complete pragativeer v2 frontend and backend, docker setup, and cbt engine

This commit is contained in:
2026-07-06 17:08:13 +05:30
parent ce01795aa9
commit 426b98ddab
66 changed files with 7949 additions and 363 deletions

View File

@@ -0,0 +1,41 @@
"use client"
import { useState, useEffect } from "react"
import { Moon, Sun } from "lucide-react"
export function ThemeToggle() {
const [isDark, setIsDark] = useState(false)
useEffect(() => {
const savedTheme = localStorage.getItem('theme');
if (savedTheme === 'dark' || (!savedTheme && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
document.documentElement.classList.add('dark');
setIsDark(true);
} else {
document.documentElement.classList.remove('dark');
setIsDark(false);
}
}, [])
const toggleTheme = () => {
if (isDark) {
document.documentElement.classList.remove('dark')
localStorage.setItem('theme', 'light');
setIsDark(false)
} else {
document.documentElement.classList.add('dark')
localStorage.setItem('theme', 'dark');
setIsDark(true)
}
}
return (
<button
onClick={toggleTheme}
className="p-2 rounded-xl hover:bg-secondary/80 transition-colors border border-transparent hover:border-border text-muted-foreground hover:text-foreground"
aria-label="Toggle Dark Mode"
>
{isDark ? <Sun size={18} /> : <Moon size={18} />}
</button>
)
}