diff --git a/app/dashboard/coordinator/page.tsx b/app/dashboard/coordinator/page.tsx new file mode 100644 index 0000000..cfda816 --- /dev/null +++ b/app/dashboard/coordinator/page.tsx @@ -0,0 +1,13 @@ +import DashboardNavbar from "@/components/dashboard/dashboard-navbar"; +import CoordinatorTable from "@/components/table/coordinator-table"; + +export default function CoordinatorPage() { + return ( +
+ +
+ +
+
+ ); +} diff --git a/components/dialog/campaign-detail.tsx b/components/dialog/campaign-detail.tsx index c39fda0..62cacf1 100644 --- a/components/dialog/campaign-detail.tsx +++ b/components/dialog/campaign-detail.tsx @@ -14,6 +14,7 @@ interface DialogCampaignDetailProps { isOpen: boolean; onClose: () => void; data?: { + deskripsi: string; durasi: string; media: string; tujuan: string; @@ -46,6 +47,11 @@ export default function DialogCampaignDetail({ {/* Detail Info */}
+

+ Deskripsi +
+ {data.deskripsi} +

Durasi
diff --git a/components/form/campaign-form.tsx b/components/form/campaign-form.tsx index 205cd61..3a31d44 100644 --- a/components/form/campaign-form.tsx +++ b/components/form/campaign-form.tsx @@ -24,6 +24,8 @@ 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); @@ -34,6 +36,10 @@ export default function FormCampaign() { 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", @@ -44,10 +50,13 @@ export default function FormCampaign() { ]; 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] + prev.includes(item) ? prev.filter((m) => m !== item) : [...prev, item], ); }; @@ -73,7 +82,7 @@ export default function FormCampaign() { // ✅ Simulasi upload progress const simulateUpload = ( - fileList: { file: File; progress: number; uploaded: boolean }[] + fileList: { file: File; progress: number; uploaded: boolean }[], ) => { fileList.forEach((fileObj) => { let progress = 0; @@ -83,8 +92,8 @@ export default function FormCampaign() { prev.map((f) => f.file === fileObj.file ? { ...f, progress, uploaded: progress >= 100 } - : f - ) + : f, + ), ); if (progress >= 100) clearInterval(interval); }, 300); @@ -214,17 +223,11 @@ export default function FormCampaign() { Tambahkan Media Sosial )} - {media === "Videotron" && ( - +

+ {/* Map tampil */} + +
)} {/* 🧩 Komponen DialogMediaOnline dipanggil di sini */} @@ -325,28 +328,332 @@ export default function FormCampaign() { {available === "Yes" ? ( - // ✅ Jika user pilih "Yes" → tampil upload file + // ✅ Upload
-
- -
+
) : ( - // ✅ Jika user pilih "Tidak" → tampil textarea deskripsi -
- -