import { createFileRoute } from "@tanstack/react-router"; import { useQuery } from "@tanstack/react-query"; import { CreditCard, TrendingUp, TrendingDown, DollarSign, Activity, Users, } from "lucide-react"; import apiClient from "../lib/api"; import StatCard from "../components/analytics/StatCard"; import BalanceChart from "../components/analytics/BalanceChart"; import TransactionDistribution from "../components/analytics/TransactionDistribution"; import MonthlyTrends from "../components/analytics/MonthlyTrends"; function AnalyticsDashboard() { // Fetch analytics data const { data: stats, isLoading: statsLoading } = useQuery({ queryKey: ["transaction-stats"], queryFn: () => apiClient.getTransactionStats(365), // Last year }); const { data: accounts, isLoading: accountsLoading } = useQuery({ queryKey: ["accounts"], queryFn: () => apiClient.getAccounts(), }); const { data: balances, isLoading: balancesLoading } = useQuery({ queryKey: ["balances"], queryFn: () => apiClient.getBalances(), }); const isLoading = statsLoading || accountsLoading || balancesLoading; if (isLoading) { return (
Overview of your financial data and spending patterns
Booked Transactions
{stats.booked_transactions}
Pending Transactions
{stats.pending_transactions}
Transaction Ratio
{stats.total_transactions > 0 ? `${Math.round( (stats.booked_transactions / stats.total_transactions) * 100 )}% booked` : "No transactions"}
Spend Rate
€{((stats.total_expenses || 0) / stats.period_days).toFixed(2)}/day