"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { Label } from "@/components/ui/label"; import { Calendar } from "@/components/ui/calendar"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { CalendarIcon, Plus, Trash2 } from "lucide-react"; import { format } from "date-fns"; import { id } from "date-fns/locale"; import { Progress } from "../ui/progress"; import DialogMediaOnline from "../dialog/media-online"; import DialogMediaSosial from "../dialog/media-sosial"; import MapVideotron from "../global/maps"; import dynamic from "next/dynamic"; export default function FormCampaign() { const [startDate, setStartDate] = useState(undefined); const [endDate, setEndDate] = useState(undefined); const [goal, setGoal] = useState("Publikasi"); const [available, setAvailable] = useState("Yes"); const [isUploadOpen, setIsUploadOpen] = useState(false); const [media, setMedia] = useState("Media Online"); const [isDialogOpen, setIsDialogOpen] = useState(false); const MapVideotron = dynamic(() => import("../global/maps"), { ssr: false, }); // contoh data pilihan media online (bisa diganti sesuai kebutuhan) const mediaOnlineList = [ "Tribrata News Mabes", "Tribrata News Polda Aceh", "Tribrata News Polda Jawa Timur", "Tribrata News Polda Jawa Tengah", "Tribrata News Polda Jawa Barat", ]; const [selectedMediaOnline, setSelectedMediaOnline] = useState([]); const [contentType, setContentType] = useState("Meme"); const [talkshowType, setTalkshowType] = useState("Renjani Nyrah"); const [musicType, setMusicType] = useState("Sendrasena"); const toggleMediaOnline = (item: string) => { setSelectedMediaOnline((prev) => prev.includes(item) ? prev.filter((m) => m !== item) : [...prev, item], ); }; const [files, setFiles] = useState< { file: File; progress: number; uploaded: boolean }[] >([]); const [url, setUrl] = useState(""); // ✅ Upload dari file input const handleFileUpload = (e: React.ChangeEvent) => { const selectedFiles = e.target.files; if (!selectedFiles) return; const newFiles = Array.from(selectedFiles).map((f) => ({ file: f, progress: 0, uploaded: false, })); setFiles((prev) => [...prev, ...newFiles]); simulateUpload(newFiles); }; // ✅ Simulasi upload progress const simulateUpload = ( fileList: { file: File; progress: number; uploaded: boolean }[], ) => { fileList.forEach((fileObj) => { let progress = 0; const interval = setInterval(() => { progress += 10; setFiles((prev) => prev.map((f) => f.file === fileObj.file ? { ...f, progress, uploaded: progress >= 100 } : f, ), ); if (progress >= 100) clearInterval(interval); }, 300); }); }; // ✅ Upload dari URL const handleUploadFromUrl = () => { if (!url.trim()) return; const fakeFile = { file: new File([], url.split("/").pop() || "file_from_url.jpg"), progress: 100, uploaded: true, }; setFiles((prev) => [...prev, fakeFile]); setUrl(""); }; // ✅ Hapus file const removeFile = (index: number) => { setFiles((prev) => prev.filter((_, i) => i !== index)); }; return (
{/* Langkah 1 */}

Langkah 1

Pilih Durasi

Langkah 2

Pilih Media

{[ "Media Online", "Media Sosial", "Videotron", "Radio Polri", "TV Polri", "Majalah Digital", ].map((m) => (
))}
{/* Tombol muncul sesuai media terpilih */} {media === "Media Online" && ( )} {media === "Media Sosial" && ( )} {media === "Videotron" && (
{/* Map tampil */}
)} {/* 🧩 Komponen DialogMediaOnline dipanggil di sini */} {media === "Media Online" && ( setIsDialogOpen(false)} /> )} {media === "Media Sosial" && ( setIsDialogOpen(false)} /> )} {media === "Videotron" && ( setIsDialogOpen(false)} /> )} {media === "Radio Polri" && (
{[ "Pagi pukul 06:00 – 07:00", "Siang pukul 12:00 – 13:00", "Sore pukul 16:00 – 17:00", "Malam pukul 20:00 – 21:00", ].map((time) => (
))}
)} {media === "TV Polri" && (
{[ "Pagi pukul 06:00 – 07:00", "Siang pukul 12:00 – 13:00", "Sore pukul 16:00 – 17:00", "Malam pukul 20:00 – 21:00", ].map((time) => (
))}
)}
{/* Langkah 3 */}

Langkah 3

Tujuan

{["Publikasi", "Sosialisasi"].map((g) => (
))}
{/* Langkah 4 */}

Langkah 4

Materi Promote Tersedia

{["Yes", "Tidak"].map((a) => (
))}
{available === "Yes" ? ( // ✅ Upload
) : ( // ❌ Tidak → tampil pilihan konten
{/* Pilih Jenis Konten */}

Pilih Jenis Konten

{["Meme", "AI Influencer", "Talkshow", "Musik"].map((item) => (
))}
{/* List Konten (Dummy) */} {/* List Konten */}

Pilih {contentType}

{/* 🔥 TAMPILAN KHUSUS MEME */} {contentType === "Meme" && (
{/* Search */}
🔍
{/* Grid Meme */}
{[ { img: "/meme1.png", title: "Respons Cepat Lakukan Sterilisasi Ancaman Bom di Depok", }, { img: "/meme2.png", title: "Upacara Penutupan Pendidikan Anggota Polri", }, { img: "/meme3.png", title: "Pantau Situasi Kamtibmas Malam Natal", }, { img: "/meme4.png", title: "Program SPPG Bersama Penerima Manfaat", }, ].map((item, i) => (
{item.title}
))}
)} {contentType === "AI Influencer" && (
{/* Search */}
🔍
{/* Grid AI */}
{[ { img: "/ai1.png", name: "Revandra Jaya" }, { img: "/ai2.png", name: "Fudhalina Adisty" }, { img: "/ai3.png", name: "Adriyan Pratama" }, { img: "/ai4.png", name: "Nadhya Wijaya" }, ].map((item, i) => (
{/* Image */} {/* Overlay bawah */}
{item.name}
))}
{/* Footer */}
Rows per page: 1 1-1 of 1
)} {contentType === "Talkshow" && (
{/* Select Talkshow */}

Pilih Talkshow

{/* Konten berdasarkan pilihan */}
{(talkshowType === "Renjani Nyrah" ? [ { img: "/ts1.jpg", title: "Renjani Nyrah - Napak Tilas di Museum", }, { img: "/ts2.jpg", title: "Renjani Nyrah - Kata Kata Baru", }, { img: "/ts3.jpg", title: "Renjani Nyrah - Pestapora 2025", }, ] : [ { img: "/agatha1.jpg", title: "Agatha Bicara - Kerja DPR Itu Apa?", }, { img: "/agatha1.jpg", title: "Agatha Bicara - Kerja DPR Itu Apa?", }, { img: "/agatha2.png", title: "Agatha Bicara - Penghargaan dari Presiden", }, ] ).map((item, i) => (
{/* Image */}
{/* Checkbox */} {/* Expand icon */}
{/* Title */}
{item.title}
))}
)} {contentType === "Musik" && (
{/* Dropdown Musik */}

Pilih Musik

{/* Grid Musik */}
{(musicType === "Sendrasena" ? [ { img: "/m1.jpg", title: "Sendrasena - Track 1", }, { img: "/m2.jpg", title: "Sendrasena - Track 2", }, { img: "/m3.jpg", title: "Sendrasena - Track 3", }, { img: "/m4.jpg", title: "Sendrasena - Track 4", }, ] : [ { img: "/sl1.jpg", title: "Selara Luna - Track 1", }, { img: "/sl2.jpg", title: "Selara Luna - Track 2", }, { img: "/sl3.jpg", title: "Selara Luna - Track 3", }, { img: "/sl4.jpg", title: "Selara Luna - Track 4", }, ] ).map((item, i) => (
{/* Cover */}
{/* Checkbox */} {/* Play icon (biar beda dari talkshow 😄) */}
{/* Title */}
{item.title}
))}
)}
)}
{/* Modal Upload */} Unggah Berkas

Pilih berkas dan unggah dengan aman untuk melanjutkan.

{/* === Upload Section === */}

Seret dan jatuhkan berkas Anda

Format .PNG, .JPG, dan .JPEG hingga 50MB

{/* === Upload via URL === */}
setUrl(e.target.value)} className="flex-1" />
{/* === Uploaded Files === */} {files.length > 0 && (

Uploaded Files

{files.map((f, i) => (

{f.file.name}

{(f.file.size / (1024 * 1024)).toFixed(1)}MB •{" "} {f.uploaded ? ( Uploaded Successfully ) : ( {f.progress}% • Uploading... )}

{!f.uploaded && ( )}
))}
)}
); }