import { ActionFunctionArgs, json, LoaderFunctionArgs } from "@remix-run/node" import { Form, useActionData, useLoaderData } from "@remix-run/react" import { useState } from "react" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "~/components/ui/card" import { Tabs, TabsContent, TabsList, TabsTrigger } from "~/components/ui/tabs" import { Button } from "~/components/ui/button" import { Input } from "~/components/ui/input" import { Label } from "~/components/ui/label" import { Textarea } from "~/components/ui/textarea" import { Switch } from "~/components/ui/switch" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "~/components/ui/select" import { Badge } from "~/components/ui/badge" import { Separator } from "~/components/ui/separator" import { Alert, AlertDescription } from "~/components/ui/alert" import { Settings, Users, Bell, Shield, Database, Mail, Globe, Palette, Save, Upload, Download, RefreshCw, CheckCircle, AlertTriangle, Info } from "lucide-react" export async function loader({ request }: LoaderFunctionArgs) { // Mock data - ganti dengan data dari database const settings = { // Pengaturan Umum appName: "EcoWaste Manager", appDescription: "Sistem Pengelolaan Sampah Terpadu untuk Lingkungan yang Lebih Bersih", companyName: "PT. Lingkungan Hijau Indonesia", companyAddress: "Jl. Sudirman No. 123, Jakarta Pusat 10220", companyPhone: "+62 21 1234567", companyEmail: "info@ecowaste.com", timezone: "Asia/Jakarta", language: "id", // Pengaturan Sistem maintenanceMode: false, registrationEnabled: true, maxFileSize: "10", sessionTimeout: "60", backupFrequency: "daily", // Pengaturan Email smtpHost: "smtp.gmail.com", smtpPort: "587", smtpUser: "noreply@ecowaste.com", smtpPassword: "", emailFrom: "EcoWaste System ", // Pengaturan Notifikasi emailNotifications: true, pushNotifications: false, smsNotifications: false, notifyNewUser: true, notifyLowStock: true, notifySystemAlert: true, // Statistik totalUsers: 245, totalWaste: "1,250 kg", lastBackup: "2 jam yang lalu", systemUptime: "99.9%" } return json({ settings }) } export async function action({ request }: ActionFunctionArgs) { const formData = await request.formData() const intent = formData.get("intent") try { switch (intent) { case "general": // Save general settings console.log("Saving general settings...") break case "system": // Save system settings console.log("Saving system settings...") break case "email": // Save email settings console.log("Saving email settings...") break case "notifications": // Save notification settings console.log("Saving notification settings...") break case "backup": // Trigger backup console.log("Creating backup...") break case "test-email": // Test email configuration console.log("Testing email...") break } return json({ success: true, message: "Pengaturan berhasil disimpan!" }) } catch (error) { return json({ success: false, message: "Gagal menyimpan pengaturan." }, { status: 400 }) } } export default function Pengaturan() { const { settings } = useLoaderData() const actionData = useActionData() const [activeTab, setActiveTab] = useState("overview") return (

Pengaturan

Kelola pengaturan dan konfigurasi sistem pengelolaan sampah

{actionData && ( {actionData.message} )} Overview Umum Sistem Notifikasi Backup {/* Overview Tab */}
Total Pengguna
{settings.totalUsers}

+5 dari bulan lalu

Total Sampah
{settings.totalWaste}

Bulan ini

System Uptime
{settings.systemUptime}

30 hari terakhir

Last Backup

{settings.lastBackup}

Status Sistem Kondisi sistem saat ini
Database Online
Email Service Connected
Storage 75% Used
Cache Active
Aktivitas Terbaru Log aktivitas sistem
Backup otomatis selesai 2 jam lalu
User baru terdaftar 4 jam lalu
Cache dibersihkan 1 hari lalu
Database dioptimasi 2 hari lalu
{/* General Settings Tab */}
Informasi Aplikasi Pengaturan dasar aplikasi dan identitas perusahaan