import { BarChart } from "@mantine/charts";
import {
Badge,
Box,
Button,
Card,
Grid,
Group,
Progress,
Stack,
Text,
Title,
useMantineColorScheme,
} from "@mantine/core";
import {
IconCurrency,
IconTrendingDown,
IconTrendingUp,
} from "@tabler/icons-react";
import React from "react";
// Sample Data
const kpiData = [
{
id: 1,
title: "Total APBDes",
value: "Rp 5.2M",
sub: "Tahun 2025",
icon: ,
},
{
id: 2,
title: "Realisasi",
value: "68%",
sub: "Rp 3.5M dari 5.2M",
icon: (
),
},
{
id: 3,
title: "Pemasukan",
value: "Rp 580jt",
sub: "Bulan ini",
delta: "+8%",
deltaType: "positive",
icon: ,
},
{
id: 4,
title: "Pengeluaran",
value: "Rp 520jt",
sub: "Bulan ini",
icon: ,
},
];
const incomeExpenseData = [
{ month: "Apr", income: 450, expense: 380 },
{ month: "Mei", income: 520, expense: 420 },
{ month: "Jun", income: 480, expense: 500 },
{ month: "Jul", income: 580, expense: 450 },
{ month: "Agu", income: 550, expense: 520 },
{ month: "Sep", income: 600, expense: 480 },
{ month: "Okt", income: 580, expense: 520 },
];
const allocationData = [
{ sector: "Pembangunan", amount: 1200 },
{ sector: "Kesehatan", amount: 800 },
{ sector: "Pendidikan", amount: 650 },
{ sector: "Sosial", amount: 550 },
{ sector: "Kebudayaan", amount: 400 },
{ sector: "Teknologi", amount: 300 },
];
const assistanceFundData = [
{ source: "Dana Desa (DD)", amount: 1800, status: "cair" },
{ source: "Alokasi Dana Desa (ADD)", amount: 950, status: "cair" },
{ source: "Bagi Hasil Pajak", amount: 450, status: "cair" },
{ source: "Hibah Provinsi", amount: 300, status: "proses" },
];
const apbdReport = {
income: [
{ category: "Dana Desa", amount: 1800 },
{ category: "Alokasi Dana Desa", amount: 480 },
{ category: "Bagi Hasil Pajak & Retribusi", amount: 300 },
{ category: "Pendapatan Asli Desa", amount: 200 },
{ category: "Hibah Bantuan", amount: 300 },
],
expenses: [
{ category: "Penyelenggaraan Pemerintah", amount: 425 },
{ category: "Pembangunan Desa", amount: 850 },
{ category: "Pembinaan Kemasyarakatan", amount: 320 },
{ category: "Pemberdayaan Masyarakat", amount: 380 },
{ category: "Penanggulangan Bencana", amount: 180 },
],
totalIncome: 3080,
totalExpenses: 2155,
};
const KeuanganAnggaran = () => {
const { colorScheme } = useMantineColorScheme();
const dark = colorScheme === "dark";
return (
{/* KPI Cards */}
{kpiData.map((kpi) => (
{kpi.title}
{React.cloneElement(kpi.icon, {
className: "h-6 w-6",
color: "var(--mantine-color-dimmed)",
})}
{kpi.value}
{kpi.delta && (
{kpi.delta}
)}
{kpi.sub && (
{kpi.sub}
)}
))}
{/* Charts Section */}
{/* Grafik Pemasukan vs Pengeluaran */}
Pemasukan vs Pengeluaran
{/* Alokasi Anggaran Per Sektor */}
Alokasi Anggaran Per Sektor
{/* Dana Bantuan & Hibah */}
Dana Bantuan & Hibah
{assistanceFundData.map((fund, index) => (
{fund.source}
Rp {fund.amount.toLocaleString()}jt
{fund.status}
))}
{/* Laporan APBDes */}
Laporan APBDes
Pendapatan
{apbdReport.income.map((item, index) => (
{item.category}
Rp {item.amount.toLocaleString()}jt
))}
Total Pendapatan:
Rp {apbdReport.totalIncome.toLocaleString()}jt
Belanja
{apbdReport.expenses.map((item, index) => (
{item.category}
Rp {item.amount.toLocaleString()}jt
))}
Total Belanja:
Rp {apbdReport.totalExpenses.toLocaleString()}jt
Saldo:
apbdReport.totalExpenses
? "green"
: "red"
}
>
Rp{" "}
{(
apbdReport.totalIncome - apbdReport.totalExpenses
).toLocaleString()}
jt
);
};
export default KeuanganAnggaran;