From a2ec530cad44d12a6117b30438b601655d80ef36 Mon Sep 17 00:00:00 2001 From: jyswee Date: Thu, 23 Jul 2026 22:10:38 +0000 Subject: [PATCH] Seed: dashboard template (24 files) --- src/pages/Reports.tsx | 155 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 src/pages/Reports.tsx diff --git a/src/pages/Reports.tsx b/src/pages/Reports.tsx new file mode 100644 index 0000000..2b75b84 --- /dev/null +++ b/src/pages/Reports.tsx @@ -0,0 +1,155 @@ +import { useState } from "react"; +import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; +import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; +import { + FileText, Download, Plus, BarChart3, Users, ShoppingCart, + Calendar, FileDown, Eye, TrendingUp, DollarSign, ArrowUpRight +} from "lucide-react"; +import Sidebar from "@/components/Sidebar"; +import Header from "@/components/Header"; + +const recentReports = [ + { name: "Monthly Sales Report", type: "Sales", typeColor: "bg-emerald-100 text-emerald-700", date: "Apr 10, 2026", size: "2.4 MB", icon: DollarSign }, + { name: "User Acquisition Q1", type: "Users", typeColor: "bg-sky-100 text-sky-700", date: "Apr 8, 2026", size: "1.8 MB", icon: Users }, + { name: "Traffic Analysis March", type: "Traffic", typeColor: "bg-orange-100 text-orange-700", date: "Apr 5, 2026", size: "3.1 MB", icon: BarChart3 }, + { name: "Weekly Sales Summary", type: "Sales", typeColor: "bg-emerald-100 text-emerald-700", date: "Apr 3, 2026", size: "890 KB", icon: DollarSign }, + { name: "User Retention Report", type: "Users", typeColor: "bg-sky-100 text-sky-700", date: "Mar 28, 2026", size: "1.5 MB", icon: Users }, + { name: "Quarterly Traffic Overview", type: "Traffic", typeColor: "bg-orange-100 text-orange-700", date: "Mar 25, 2026", size: "4.2 MB", icon: BarChart3 }, +]; + +const previewStats = [ + { label: "Total Revenue", value: "$124,582", change: "+14.2%", icon: DollarSign }, + { label: "New Users", value: "3,847", change: "+8.7%", icon: Users }, + { label: "Orders Placed", value: "2,156", change: "+23.5%", icon: ShoppingCart }, + { label: "Conversion Rate", value: "4.8%", change: "+1.2%", icon: TrendingUp }, +]; + +export default function ReportsPage() { + const [reportType, setReportType] = useState("sales"); + + return ( +
+ +
+
+
+
+
+

Reports

+

Generate and manage your analytics reports

+
+
+ + +
+
+ + {/* ── Report Preview ── */} + + +
+ Report Preview + Summary of the latest generated report +
+ + Apr 2026 + +
+ +
+ {previewStats.map((stat) => ( +
+
+
+ +
+ + {stat.change} + +
+

{stat.value}

+

{stat.label}

+
+ ))} +
+ + {/* Chart Placeholder */} +
+
+ +

Report visualization will appear here

+
+
+
+
+ + {/* ── Recent Reports Table ── */} + + + Recent Reports + Previously generated reports and downloads + + + + + + Report Name + Type + Generated + Size + Actions + + + + {recentReports.map((report) => ( + + +
+
+ +
+ {report.name} +
+
+ + + {report.type} + + + {report.date} + {report.size} + +
+ + +
+
+
+ ))} +
+
+
+
+
+
+
+ ); +}