import { Badge, Button, Card, Group, Select, Table, Text, Title, useMantineColorScheme, } from "@mantine/core"; import { IconArrowDown, IconArrowUp } from "@tabler/icons-react"; export interface SalesData { id: string; produk: string; penjualanBulanIni: number; bulanLalu: number; trend: number; volume: string; stok: number; unit: string; } interface SalesTableProps { data?: SalesData[]; onDetailClick?: (product: SalesData) => void; } export const SalesTable = ({ data, onDetailClick }: SalesTableProps) => { const { colorScheme } = useMantineColorScheme(); const dark = colorScheme === "dark"; const defaultData: SalesData[] = [ { id: "1", produk: "Beras Premium Organik", penjualanBulanIni: 8500000, bulanLalu: 7600000, trend: 12, volume: "650 Kg", stok: 850, unit: "Kg", }, { id: "2", produk: "Keripik Singkong", penjualanBulanIni: 4200000, bulanLalu: 3800000, trend: 11, volume: "320 Kg", stok: 120, unit: "Kg", }, { id: "3", produk: "Madu Alami", penjualanBulanIni: 3750000, bulanLalu: 4100000, trend: -9, volume: "150 Liter", stok: 45, unit: "Liter", }, { id: "4", produk: "Kecap Tradisional", penjualanBulanIni: 2800000, bulanLalu: 2500000, trend: 12, volume: "280 Botol", stok: 95, unit: "Botol", }, { id: "5", produk: "Sambal Bu Rudy", penjualanBulanIni: 2100000, bulanLalu: 2300000, trend: -9, volume: "180 Botol", stok: 35, unit: "Botol", }, ]; const displayData = data || defaultData; const formatCurrency = (value: number) => { if (value >= 1000000) { return `Rp ${(value / 1000000).toFixed(1)}M`; } if (value >= 1000) { return `Rp ${(value / 1000).toFixed(0)}K`; } return `Rp ${value.toLocaleString()}`; }; const getStockStatus = (stock: number) => { if (stock > 200) return { color: "green", label: "Aman" }; if (stock > 50) return { color: "yellow", label: "Sedang" }; return { color: "red", label: "Rendah" }; }; return ( Detail Penjualan Produk Produk Penjualan Bulan Ini Bulan Lalu Trend Volume Stok Aksi {displayData.map((product) => { const stockStatus = getStockStatus(product.stok); return ( {product.produk} {formatCurrency(product.penjualanBulanIni)} {formatCurrency(product.bulanLalu)} {product.trend >= 0 ? ( ) : ( )} = 0 ? "green" : "red"} > {Math.abs(product.trend)}% {product.volume} {product.stok} {product.unit} ({stockStatus.label}) ); })}
); };