import { useAuth } from "@/hooks/useAuth"; import { useLocation } from "wouter"; import { useEffect, useState } from "react"; import Header from "@/components/layout/Header"; import Sidebar from "@/components/layout/Sidebar"; import TaskList from "@/components/tasks/TaskList"; import FinancialOverview from "@/components/financial/FinancialOverview"; import VoiceRecorder from "@/components/voice/VoiceRecorder"; import VoiceIndicator from "@/components/voice/VoiceIndicator"; import DailyJoke from "@/components/ai/DailyJoke"; import { CommandPalette } from "@/components/CommandPalette"; import { useVoiceContext } from "@/context/VoiceProvider"; import { useNotifications } from "@/context/NotificationProvider"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Calendar, DollarSign, Mic, Brain, Activity, TrendingUp, Zap, HelpCircle } from "lucide-react"; import { useTourManager, getMainTourSteps } from "@/components/onboarding/TourManager"; export default function DashboardPage() { const { user, isLoading } = useAuth(); const [, setLocation] = useLocation(); const [commandPaletteOpen, setCommandPaletteOpen] = useState(false); const { isListening, speak } = useVoiceContext(); const { unreadCount } = useNotifications(); const { startTour } = useTourManager(); const handleStartTour = () => { startTour("main", getMainTourSteps()); }; useEffect(() => { if (!isLoading && !user) { setLocation("/login"); } }, [user, isLoading, setLocation]); useEffect(() => { if (user && !user.onboardingComplete) { setLocation("/onboarding"); } }, [user, setLocation]); if (isLoading) { return (
Loading dashboard...
Here's what's happening with your tasks and finances today.
Say "Create task" to get started
Say "Add expense" for quick entry
Ask questions about your data
STT Model
Online
TTS Model
Online
AI Model
Ready
Database
Connected