import { ActionIcon, Badge, Box, Button, Card, Divider, Grid, GridCol, Group, List, Select, Stack, Table, Text, Textarea, TextInput, Title, useMantineColorScheme, } from "@mantine/core"; import { IconAlertTriangle, IconCheck, IconChevronRight, IconClock, IconMessage, } from "@tabler/icons-react"; import type React from "react"; import { useState } from "react"; import { Bar, BarChart, CartesianGrid, Line, LineChart, ResponsiveContainer, Tooltip, XAxis, YAxis, } from "recharts"; const PengaduanLayananPublik = () => { const { colorScheme } = useMantineColorScheme(); const dark = colorScheme === "dark"; // Summary data const summaryData = { total: 42, baru: 14, diproses: 14, selesai: 14, }; // Tren pengaduan data const trenData = [ { bulan: "Jan", jumlah: 30 }, { bulan: "Feb", jumlah: 50 }, { bulan: "Mar", jumlah: 42 }, { bulan: "Apr", jumlah: 38 }, { bulan: "Mei", jumlah: 45 }, { bulan: "Jun", jumlah: 42 }, ]; // Surat terbanyak data const suratData = [ { jenis: "KTP", jumlah: 24 }, { jenis: "KK", jumlah: 18 }, { jenis: "Domisili", jumlah: 15 }, { jenis: "Usaha", jumlah: 12 }, { jenis: "Lainnya", jumlah: 8 }, ]; // Pengajuan terbaru data const pengajuanTerbaru = [ { nama: "Budi Santoso", jenis: "Ketertiban Umum", waktu: "2 jam yang lalu", status: "baru", }, { nama: "Siti Rahayu", jenis: "Pelayanan Kesehatan", waktu: "5 jam yang lalu", status: "diproses", }, { nama: "Ahmad Fauzi", jenis: "Infrastruktur", waktu: "1 hari yang lalu", status: "selesai", }, { nama: "Dewi Lestari", jenis: "Administrasi", waktu: "1 hari yang lalu", status: "baru", }, { nama: "Joko Widodo", jenis: "Keamanan", waktu: "2 hari yang lalu", status: "diproses", }, ]; // Ide inovatif data const ideInovatif = [ { nama: "Andi Prasetyo", judul: "Penerapan Smart Village", kategori: "Teknologi", }, { nama: "Rina Kusuma", judul: "Program Ekowisata Desa", kategori: "Ekonomi", }, { nama: "Bambang Suryono", judul: "Peningkatan Sanitasi", kategori: "Kesehatan", }, { nama: "Lina Marlina", judul: "Pusat Kreatif Anak Muda", kategori: "Pendidikan", }, ]; const [activeTab, setActiveTab] = useState<"complaints" | "services">( "complaints", ); const [newComplaint, setNewComplaint] = useState({ title: "", category: "", description: "", }); // Sample data for complaints const complaints = [ { id: 1, title: "Jalan Rusak di Jalan Raya", category: "Infrastruktur", status: "Pending", priority: "High", date: "2024-02-01", reporter: "Bapak Ahmad", }, { id: 2, title: "Pemadaman Listrik Berkelanjutan", category: "Utilitas", status: "In Progress", priority: "Medium", date: "2024-02-03", reporter: "Ibu Sari", }, { id: 3, title: "Pelayanan Administrasi Lambat", category: "Administrasi", status: "Resolved", priority: "Low", date: "2024-01-28", reporter: "Pak Joko", }, { id: 4, title: "Kebersihan Lingkungan", category: "Sanitasi", status: "Pending", priority: "Medium", date: "2024-02-05", reporter: "Bu Dewi", }, ]; // Sample data for public services const services = [ { id: 1, name: "Pembuatan KTP", description: "Pelayanan pembuatan Kartu Tanda Penduduk baru atau perpanjangan", status: "Available", category: "Administrasi", lastUpdated: "2024-02-01", }, { id: 2, name: "Pembuatan Surat Keterangan Usaha", description: "Surat keterangan untuk keperluan usaha atau perizinan", status: "Available", category: "Administrasi", lastUpdated: "2024-02-02", }, { id: 3, name: "Pelayanan Kesehatan", description: "Pelayanan kesehatan dasar di puskesmas desa", status: "Available", category: "Kesehatan", lastUpdated: "2024-01-30", }, { id: 4, name: "Program Bantuan Sosial", description: "Informasi dan pendaftaran program bantuan sosial dari pemerintah", status: "Limited", category: "Sosial", lastUpdated: "2024-02-04", }, ]; const handleInputChange = ( e: React.ChangeEvent, ) => { const { name, value } = e.target; setNewComplaint((prev) => ({ ...prev, [name]: value, })); }; const handleSelectChange = (value: string | null) => { setNewComplaint((prev) => ({ ...prev, category: value || "", // Ensure category is always a string })); }; const handleSubmitComplaint = (e: React.FormEvent) => { e.preventDefault(); console.log("Submitting complaint:", newComplaint); // Here you would typically send the complaint to your backend alert("Pengaduan berhasil dikirim!"); setNewComplaint({ title: "", category: "", description: "" }); }; // Render complaint table rows const complaintRows = complaints.map((complaint) => ( {complaint.title} {complaint.category} {complaint.status} {complaint.priority} {complaint.date} )); // Status badge color mapping const getStatusColor = (status: string) => { switch (status) { case "baru": return "red"; case "diproses": return "yellow"; case "selesai": return "green"; default: return "gray"; } }; return ( {activeTab === "complaints" ? ( <> {/* Summary Cards */} Total Pengaduan {summaryData.total} Baru {summaryData.baru} Diproses {summaryData.diproses} Selesai {summaryData.selesai} {/* Grafik Tren Pengaduan */} Grafik Tren Pengaduan {/* Surat Terbanyak & Pengajuan Terbaru & Ide Inovatif */} {/* Surat Terbanyak */} Surat Terbanyak {/* Pengajuan Terbaru */} Pengajuan Terbaru {pengajuanTerbaru.map((item, index) => ( {item.nama} {item.jenis} {item.status} {item.waktu} ))} {/* Ajuan Ide Inovatif */} Ajuan Ide Inovatif {ideInovatif.map((item, index) => ( {item.judul} {item.nama} {item.kategori} ))} {/* Complaint Submission Form and List */} {/* Complaint Submission Form */} Ajukan Pengaduan