"use client" import * as React from "react" import { BanknoteIcon, TrendingUpIcon, UsersIcon } from "lucide-react" import { getAttendanceCounts } from "@/lib/api/attendance" import { getMemberInvoices } from "@/lib/api/invoices" import { getMonthlyRevenue, getStatSummary } from "@/lib/api/stats" import { formatCurrency } from "@/lib/format" import { DEMO_ATTENDANCE_COUNTS, DEMO_REVENUE, DEMO_STAT_SUMMARY, DEMO_SUBSCRIPTIONS, } from "@/lib/demo/mock-data" import { useFetch } from "@/lib/use-fetch" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { AttendanceChartCard } from "@/components/hexa/attendance-chart-card" import { PageHeader } from "@/components/hexa/page-header" import { RevenueChartCard } from "@/components/hexa/revenue-chart-card" import { StatCard } from "@/components/hexa/stat-card" import { ProfitLossView } from "@/components/hexa/views/profit-loss-view" interface ReportsViewProps { /** Sandbox demo mode: local in-memory data, no API calls. */ demo?: boolean } function ReportsView({ demo = false }: ReportsViewProps) { const summary = useFetch(demo ? async () => DEMO_STAT_SUMMARY : getStatSummary) const revenue = useFetch(demo ? async () => DEMO_REVENUE : getMonthlyRevenue) const counts = useFetch(demo ? async () => DEMO_ATTENDANCE_COUNTS : () => getAttendanceCounts()) const invoices = useFetch(demo ? async () => [] : getMemberInvoices) const paidTotal = demo ? DEMO_SUBSCRIPTIONS.filter((s) => s.paymentStatus === "Paid").reduce((sum, s) => sum + s.paidAmount, 0) : (invoices.data ?? []) .filter((i) => i.status.toLowerCase() === "paid") .reduce((sum, i) => sum + i.amount, 0) const pendingTotal = demo ? DEMO_SUBSCRIPTIONS.filter((s) => s.paymentStatus !== "Paid").reduce((sum, s) => sum + s.balance, 0) : (invoices.data ?? []) .filter((i) => i.status.toLowerCase() === "pending") .reduce((sum, i) => sum + i.amount, 0) const growthHint = (pct: number) => `${pct >= 0 ? "+" : ""}${pct.toFixed(1)}% vs last month` return (