Implement active user tiers, class-based Tailwind theme switcher, 3-tiled static dashboard layout, Minio object storage integration, school & state settings database sync, and streak wishes onboarding modal

This commit is contained in:
2026-07-07 13:43:30 +05:30
parent 426b98ddab
commit 04db17ea0e
24 changed files with 913 additions and 236 deletions

View File

@@ -5,16 +5,19 @@ import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/com
import { Badge } from "@/components/ui/badge"
import { CalendarClock, CheckCircle2, Circle, Clock, Loader2, PlayCircle, RefreshCw, XCircle } from "lucide-react"
const USER_ID = "b0e17378-864d-439e-8806-708dc48a891b"
import { useActiveUser } from "@/hooks/useActiveUser"
export function StudyPlanCard() {
const [tasks, setTasks] = useState<any[]>([])
const [loading, setLoading] = useState(true)
const { userId, loading: userLoading } = useActiveUser();
useEffect(() => {
if (userLoading || !userId) return;
async function fetchPlan() {
try {
const res = await fetch(`http://localhost:8000/api/ai-coach/study-plan/today?user_id=${USER_ID}`)
const res = await fetch(`/api/ai-coach/study-plan/today?user_id=${userId}`)
if (!res.ok) throw new Error("No plan")
const data = await res.json()
setTasks(data.tasks || [])
@@ -31,7 +34,7 @@ export function StudyPlanCard() {
}
}
fetchPlan()
}, [])
}, [userId, userLoading])
const toggleTask = (idx: number, newStatus: string) => {
setTasks(prev => {