import { Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; import { Switch } from '@/components/ui/switch'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@/components/ui/tooltip'; import { router } from '@inertiajs/react'; import { ChevronDown, Pencil, Trash2 } from 'lucide-react'; import type { RawMaterial } from './columns'; function formatNumber(num: number): string { return new Intl.NumberFormat('id-ID', { maximumFractionDigits: 4 }).format(num); } function formatCurrency(amount: number): string { return new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', minimumFractionDigits: 0, }).format(amount); } export type RawMaterialCardRowParams = { rawMaterial: RawMaterial; index: number; isExpanded: boolean; onToggleExpand: () => void; onEdit: (rawMaterial: RawMaterial) => void; onDelete: (rawMaterial: RawMaterial) => void; toggleStatusUrl: (id: number) => string; }; export function RawMaterialCardRow({ rawMaterial, index, isExpanded, onToggleExpand, onEdit, onDelete, toggleStatusUrl, }: RawMaterialCardRowParams) { const variants = rawMaterial.raw_material_prices ?? []; const totalStock = variants.reduce((sum, v) => sum + (Number(v.stock) || 0), 0); const totalValue = variants.reduce((sum, v) => sum + (Number(v.price) || 0) * (Number(v.stock) || 0), 0); function handleToggle() { router.post(toggleStatusUrl(rawMaterial.id), {}, { preserveScroll: true }); } return (
{index}.

{rawMaterial.name}

{variants.length} varian Total Stok:{' '} {formatNumber(totalStock)} Total Nilai:{' '} {formatCurrency(totalValue)}
{rawMaterial.is_active ? 'Aktif' : 'Non Aktif'}
Edit Hapus
); }