'use client'; import PendapatanAsliDesa from '@/app/admin/(dashboard)/_state/ekonomi/PADesa'; import colors from '@/con/colors'; import { Box, Button, Group, Loader, Paper, Stack, TextInput, Title } from '@mantine/core'; import { IconArrowBack } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { toast } from 'react-toastify'; import { useProxy } from 'valtio/utils'; function CreatePendapatan() { const pendapatanState = useProxy(PendapatanAsliDesa.pendapatan); const router = useRouter(); const [isSubmitting, setIsSubmitting] = useState(false); // Check if form is valid const isFormValid = () => { return ( pendapatanState.create.form.name?.trim() !== '' && pendapatanState.create.form.value !== null && pendapatanState.create.form.value > 0 ); }; const formatRupiah = (value: number | string) => { const number = typeof value === 'number' ? value : Number(value.replace(/\D/g, '')); return new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', minimumFractionDigits: 0, }).format(number); }; const unformatRupiah = (value: string) => { return Number(value.replace(/\D/g, '')); }; const resetForm = () => { pendapatanState.create.form = { name: '', value: 0, }; }; const handleSubmit = async () => { try { setIsSubmitting(true); await pendapatanState.create.submit(); resetForm(); router.push('/admin/ekonomi/PADesa-pendapatan-asli-desa/pendapatan'); } catch (error) { console.error('Error creating pendapatan:', error); toast.error('Gagal menambahkan jenis pendapatan'); } finally { setIsSubmitting(false); } }; return ( {/* Header dengan tombol back + judul */} Tambah Jenis Pendapatan {/* Card Form */} { pendapatanState.create.form.name = val.target.value; }} label="Nama Jenis Pendapatan" placeholder="Masukkan nama jenis pendapatan" required /> { const raw = val.currentTarget.value; const cleanValue = unformatRupiah(raw); pendapatanState.create.form.value = cleanValue; }} label="Nilai" placeholder="Masukkan nilai" required /> {/* Tombol Simpan */} ); } export default CreatePendapatan;