"use client"; import { useSession } from "next-auth/react"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; import { FC } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { BarChart3, MessageSquare, Settings, Users, ArrowRight, TrendingUp, Shield, Zap, } from "lucide-react"; const DashboardPage: FC = () => { const { data: session, status } = useSession(); const router = useRouter(); const [loading, setLoading] = useState(true); useEffect(() => { // Once session is loaded, redirect appropriately if (status === "unauthenticated") { router.push("/login"); } else if (status === "authenticated") { setLoading(false); } }, [status, router]); if (loading) { return (

Loading dashboard...

); } const navigationCards = [ { title: "Analytics Overview", description: "View comprehensive metrics, charts, and insights from your chat sessions", icon: , href: "/dashboard/overview", variant: "primary" as const, features: ["Real-time metrics", "Interactive charts", "Trend analysis"], }, { title: "Session Browser", description: "Browse, search, and analyze individual conversation sessions", icon: , href: "/dashboard/sessions", variant: "success" as const, features: ["Session search", "Conversation details", "Export data"], }, ...(session?.user?.role === "ADMIN" ? [ { title: "Company Settings", description: "Configure company settings, integrations, and API connections", icon: , href: "/dashboard/company", variant: "warning" as const, features: [ "API configuration", "Integration settings", "Data management", ], adminOnly: true, }, { title: "User Management", description: "Invite team members and manage user accounts and permissions", icon: , href: "/dashboard/users", variant: "default" as const, features: ["User invitations", "Role management", "Access control"], adminOnly: true, }, ] : []), ]; const getCardClasses = (variant: string) => { switch (variant) { case "primary": return "border-primary/20 bg-linear-to-br from-primary/5 to-primary/10 hover:from-primary/10 hover:to-primary/15"; case "success": return "border-green-200 bg-linear-to-br from-green-50 to-green-100 hover:from-green-100 hover:to-green-150 dark:border-green-800 dark:from-green-950 dark:to-green-900"; case "warning": return "border-amber-200 bg-linear-to-br from-amber-50 to-amber-100 hover:from-amber-100 hover:to-amber-150 dark:border-amber-800 dark:from-amber-950 dark:to-amber-900"; default: return "border-border bg-linear-to-br from-card to-muted/20 hover:from-muted/30 hover:to-muted/40"; } }; const getIconClasses = (variant: string) => { switch (variant) { case "primary": return "bg-primary/10 text-primary border-primary/20"; case "success": return "bg-green-100 text-green-600 border-green-200 dark:bg-green-900 dark:text-green-400 dark:border-green-800"; case "warning": return "bg-amber-100 text-amber-600 border-amber-200 dark:bg-amber-900 dark:text-amber-400 dark:border-amber-800"; default: return "bg-muted text-muted-foreground border-border"; } }; return (
{/* Welcome Header */}

Welcome back, {session?.user?.name || "User"}!

{session?.user?.role}

Choose a section below to explore your analytics dashboard

Secure Dashboard
{/* Navigation Cards */}
{navigationCards.map((card, index) => ( router.push(card.href)} > {/* Subtle gradient overlay */}
{card.icon}
{card.title} {card.adminOnly && ( Admin )}

{card.description}

{/* Features List */}
{card.features.map((feature, featureIndex) => (
{feature}
))}
{/* Action Button */}
))}
{/* Quick Stats */} Quick Stats
Real-time

Data updates

Secure

Data protection

Advanced

Analytics

); }; export default DashboardPage;