2025-11-11 02:52:38 +00:00
"use client" ;
import { useState } from "react" ;
import {
Paperclip ,
Send ,
Smile ,
Mic ,
CheckCircle2 ,
Upload ,
} from "lucide-react" ;
import { Button } from "@/components/ui/button" ;
import { Input } from "@/components/ui/input" ;
import { cn } from "@/lib/utils" ;
export default function ApproverDetail() {
const [ activeTab , setActiveTab ] = useState < "detail" | "buatKonten" > ( "detail" ) ;
const [ step , setStep ] = useState < "configuration" | "publish" > (
2026-04-15 03:12:34 +00:00
"configuration" ,
2025-11-11 02:52:38 +00:00
) ;
return (
< div className = "max-w-full mx-auto bg-white rounded-lg shadow-sm p-6 space-y-6" >
{ /* Header Tabs */ }
< div className = "flex gap-2 border-b pb-3" >
< button
onClick = { ( ) = > {
setActiveTab ( "detail" ) ;
setStep ( "configuration" ) ;
} }
className = { cn (
"px-4 py-2 text-sm font-medium rounded-md transition" ,
activeTab === "detail"
? "bg-black text-white font-semibold"
2026-04-15 03:12:34 +00:00
: "text-gray-600 hover:text-black" ,
2025-11-11 02:52:38 +00:00
) }
>
Detail Konten
< / button >
< button
onClick = { ( ) = > setActiveTab ( "buatKonten" ) }
className = { cn (
"px-4 py-2 text-sm font-medium rounded-md transition" ,
activeTab === "buatKonten"
? "bg-black text-white font-semibold"
2026-04-15 03:12:34 +00:00
: "text-gray-600 hover:text-black" ,
2025-11-11 02:52:38 +00:00
) }
>
Buat Konten
< / button >
< / div >
{ /* DETAIL KONTEN */ }
{ activeTab === "detail" ? (
< >
< div >
< h2 className = "text-sm text-gray-600 mb-1" > Status < / h2 >
< span className = "bg-gray-200 text-gray-700 px-3 py-1 rounded-full text-xs font-medium" >
Tertunda
< / span >
< / div >
< div >
< h2 className = "text-sm text-gray-600 mb-1" > Judul Campaign < / h2 >
< p className = "text-sm font-medium text-gray-800" >
Lorem ipsum dolor sit amet consectetur . In faucibus diam eu ut
quisque .
< / p >
< / div >
< div >
< h2 className = "text-sm text-gray-600 mb-1" > Durasi < / h2 >
< p className = "text-sm font-medium text-gray-800" >
22 / 08 / 2025 - 22 / 08 / 2026
< / p >
< / div >
< div >
< h2 className = "text-sm text-gray-600 mb-1" > Media < / h2 >
< p className = "font-semibold text-sm text-gray-900 mb-1" >
Media Online
< / p >
< ul className = "text-sm text-gray-700 list-disc ml-4 space-y-1" >
< li > Tribrata News Mabes < / li >
< li > Tribrata News Polda Aceh < / li >
< li > Tribrata News Polda Jawa Timur < / li >
< li > Tribrata News Polda Jawa Tengah < / li >
< li > Tribrata News Polda Jawa Barat < / li >
< / ul >
< / div >
< div >
< h2 className = "text-sm text-gray-600 mb-1" > Tujuan < / h2 >
< p className = "text-sm font-semibold text-gray-800" > Sosialisasi < / p >
< / div >
< div >
< h2 className = "text-sm text-gray-600 mb-1" > Materi Promote < / h2 >
< div className = "flex items-center justify-between border rounded-lg px-3 py-2 bg-gray-50" >
< div >
< p className = "text-sm font-medium text-gray-800" >
Report name_T1 . pdf
< / p >
< p className = "text-xs text-gray-500" > 23.5 MB < / p >
< / div >
< Paperclip className = "w-4 h-4 text-gray-500" / >
< / div >
< / div >
< div className = "pt-2 border-t" >
< h2 className = "text-sm text-gray-600 mb-2" > Komentar < / h2 >
< div className = "flex items-start gap-3" >
< img
src = "https://ui-avatars.com/api/?name=Kurator+POLRI&background=16a34a&color=fff"
alt = "Kurator POLRI"
className = "w-10 h-10 rounded-full"
/ >
< div className = "flex-1 border rounded-lg px-3 py-2 bg-gray-50" >
< textarea
placeholder = "Tuliskan komentar Anda di sini.."
className = "w-full text-sm bg-transparent focus:outline-none resize-none"
rows = { 2 }
/ >
< div className = "flex justify-between items-center mt-2 text-gray-500" >
< div className = "flex gap-3" >
< Mic className = "w-4 h-4 cursor-pointer hover:text-black" / >
< Paperclip className = "w-4 h-4 cursor-pointer hover:text-black" / >
< Smile className = "w-4 h-4 cursor-pointer hover:text-black" / >
< / div >
< Button
size = "sm"
className = "bg-blue-600 hover:bg-blue-700 text-white px-4 py-1 text-sm"
>
Kirim
< / Button >
< / div >
< / div >
< / div >
< / div >
< / >
) : (
// ==============================
// BUAT KONTEN
// ==============================
< div >
{ /* STEP PROGRESS */ }
< div className = "relative flex items-center justify-between mb-6" >
< div className = "flex-1 h-0.5 bg-blue-500 absolute top-1/2 left-0 right-0 z-0" / >
< div className = "relative z-10 flex justify-between w-full" >
< div className = "flex flex-col items-center" >
< div className = "w-6 h-6 rounded-full bg-blue-600 flex items-center justify-center text-white" >
< CheckCircle2 className = "w-4 h-4" / >
< / div >
< span className = "text-blue-600 text-sm mt-1 font-semibold" >
Configuration
< / span >
< / div >
< div className = "flex flex-col items-center" >
< div
className = { cn (
"w-6 h-6 rounded-full border-2 flex items-center justify-center" ,
step === "publish"
? "bg-blue-600 border-blue-600 text-white"
2026-04-15 03:12:34 +00:00
: "border-blue-300 text-gray-400" ,
2025-11-11 02:52:38 +00:00
) }
>
{ step === "publish" ? (
< CheckCircle2 className = "w-4 h-4" / >
) : (
< div className = "w-2 h-2 bg-blue-300 rounded-full" / >
) }
< / div >
< span
className = { cn (
"text-sm mt-1 font-semibold" ,
2026-04-15 03:12:34 +00:00
step === "publish" ? "text-blue-600" : "text-gray-400" ,
2025-11-11 02:52:38 +00:00
) }
>
Publish
< / span >
< / div >
< / div >
< / div >
{ /* CONFIGURATION FORM */ }
{ step === "configuration" && (
< div >
< h2 className = "text-lg font-semibold mb-4" > Configuration < / h2 >
< div className = "space-y-4" >
< div >
< label className = "block text-sm font-medium mb-1" >
Select AI Journalist
< / label >
< select className = "border w-full rounded-md px-3 py-2 text-sm" >
< option > Select AI Journalist < / option >
< option > AI Journalist 1 < / option >
< option > AI Journalist 2 < / option >
< / select >
< / div >
< div >
< label className = "block text-sm font-medium mb-1" >
Main Keywords
< / label >
< Input placeholder = "Enter your main keyword here..." / >
< / div >
< div >
< label className = "block text-sm font-medium mb-1" >
Title
< / label >
< Input placeholder = "Enter your title here..." / >
< / div >
< div >
< label className = "block text-sm font-medium mb-1" >
SEO Keywords
< / label >
< Input placeholder = "Enter SEO keywords..." / >
< / div >
< div >
< label className = "block text-sm font-medium mb-1" >
Advanced Configuration
< / label >
< textarea
className = "w-full border rounded-md px-3 py-2 text-sm"
rows = { 3 }
placeholder = "Advanced settings..."
/ >
< / div >
< Button
className = "bg-blue-600 hover:bg-blue-700 text-white"
onClick = { ( ) = > setStep ( "publish" ) }
>
⚡ Generate Article
< / Button >
< / div >
< / div >
) }
{ /* PUBLISH STEP */ }
{ step === "publish" && (
< div className = "mt-4" >
< h2 className = "text-lg font-semibold text-blue-600 mb-3" >
Publish
< / h2 >
< div className = "grid grid-cols-1 md:grid-cols-3 gap-6" >
{ /* LEFT CONTENT */ }
< div className = "md:col-span-2 space-y-4" >
2026-04-15 03:12:34 +00:00
< label className = "text-sm font-medium text-gray-700 mb-1 block" >
Judul
< / label >
2025-11-11 02:52:38 +00:00
< Input
placeholder = "Judul"
defaultValue = "Lorem ipsum dolor sit amet consectetur. In faucibus diam eu ut quisque."
/ >
< div >
< label className = "text-sm font-medium text-gray-700 mb-1 block" >
Deskripsi
< / label >
< textarea
rows = { 8 }
className = "w-full border rounded-md px-3 py-2 text-sm focus:outline-none"
defaultValue = { ` Kapolri Jenderal Polisi Drs. Listyo Sigit Prabowo, M.Si. mendampingi Presiden Joko Widodo menghadiri upacara Peringatan Hari Kesaktian Pancasila di Monumen Pancasila Sakti, Lubang Buaya, Jakarta Timur, pada Selasa (1/10/2024)... ` }
/ >
< / div >
< div >
< label className = "text-sm font-medium text-gray-700 mb-1 block" >
File Media
< / label >
< div className = "grid grid-cols-2 md:grid-cols-3 gap-3" >
{ /* Dummy image sementara, nanti diganti dari API */ }
{ [ "/p1.jpg" , "/p2.png" ] . map ( ( url , i ) = > (
< div
key = { i }
className = "relative w-full h-24 rounded-md overflow-hidden border"
>
< img
src = { url }
alt = { ` Media ${ i + 1 } ` }
className = "object-cover w-full h-full"
/ >
< / div >
) ) }
< / div >
< / div >
< / div >
{ /* RIGHT SIDEBAR */ }
< div className = "space-y-4" >
< div >
< label className = "text-sm font-medium text-gray-700 mb-1 block" >
Kreator
< / label >
< Input defaultValue = "Humas POLRI" / >
< / div >
< div >
< label className = "text-sm font-medium text-gray-700 mb-1 block" >
Thumbnail
< / label >
< div className = "border border-dashed rounded-md py-6 flex flex-col items-center justify-center text-gray-400 text-sm" >
< Upload className = "w-5 h-5 mb-1" / >
Drag and drop
< p className = "text-xs text-gray-500 mt-1" >
. PNG , . JPG max 3 MB
< / p >
< / div >
< / div >
< div >
< label className = "text-sm font-medium text-gray-700 mb-1 block" >
Tag
< / label >
< Input
placeholder = "Masukkan tag..."
defaultValue = "Humas POLRI"
/ >
< div className = "flex flex-wrap gap-2 mt-2" >
< span className = "px-2 py-1 text-xs bg-blue-100 text-blue-700 rounded-md" >
Poldakaltim
< / span >
< / div >
< / div >
< div >
< label className = "text-sm font-medium text-gray-700 mb-2 block" >
Target Publish
< / label >
< div className = "space-y-2" >
{ [
"Tribrata News Mabes" ,
"Tribrata News Polda Aceh" ,
"Tribrata News Polda Jawa Timur" ,
"Tribrata News Polda Jawa Tengah" ,
"Tribrata News Polda Jawa Barat" ,
] . map ( ( item ) = > (
< label
key = { item }
className = "flex items-center text-sm gap-2"
>
< input
type = "checkbox"
className = "rounded border-gray-300"
/ >
{ item }
< / label >
) ) }
< / div >
< / div >
< Button className = "w-full bg-blue-600 hover:bg-blue-700 text-white" >
✓ Publish Terjadwal
< / Button >
< / div >
< / div >
< / div >
) }
< / div >
) }
< / div >
) ;
}