import { cookies } from 'next/headers'
import { redirect } from 'next/navigation'
import { supabase } from '@/lib/supabase'
import { LogoutButton } from '@/components/logout-button'
import { ArrowLeft, User, MapPin, Phone, Baby, Calendar } from 'lucide-react'
import Link from 'next/link'
import { Mars, Venus } from 'lucide-react'
import { HasilStuntingTable } from './HasilStuntingTable'
import { PerkembanganChart } from './PerkembanganChart'
interface Props {
params: Promise<{ id: string }>
}
function ReadField({
icon,
label,
value,
accent,
}: {
icon: React.ReactNode
label: string
value: string | null | undefined
accent?: 'blue' | 'pink'
}) {
return (
{icon}
{label}
{value || Tidak ada data}
)
}
export default async function DetailPenggunaKelolaPage({ params }: Props) {
const { id } = await params
const cookieStore = await cookies()
const sessionCookie = cookieStore.get('user_session')
if (!sessionCookie) redirect('/')
const session = JSON.parse(sessionCookie.value)
if (session.role !== 'admin') redirect('/dashboard')
const { data: pengguna, error } = await supabase
.from('akun_balita')
.select('id, nama_orang_tua, alamat, no_whatsapp, nama_anak, jenis_kelamin, tanggal_lahir, username, password')
.eq('id', id)
.single()
if (error || !pengguna) {
return (
Data tidak ditemukan.
)
}
// Fetch hasil pengukuran stunting milik balita ini
const { data: hasilData } = await supabase
.from('hasil_stunting_balita')
.select('id, tinggi_badan, berat_badan, z_score, status_stunting, pesan_ai, tanggal_upload, nama_posyandu')
.eq('id_balita', pengguna.id)
.order('tanggal_upload', { ascending: false })
// Fetch list posyandu for editing options
const { data: posyanduList } = await supabase
.from('detail_posyandu')
.select('nama_posyandu')
.order('nama_posyandu', { ascending: true })
const formatDate = (d: string | null) => {
if (!d) return null
return new Date(d).toLocaleDateString('id-ID', {
day: 'numeric', month: 'long', year: 'numeric'
})
}
const isLaki = pengguna.jenis_kelamin?.toLowerCase().includes('laki')
return (
{/* Header */}
Kembali ke Daftar
Detail Pengguna
REVIEW DATA
{/* Card Hero */}
{pengguna.nama_orang_tua?.charAt(0).toUpperCase() ?? '?'}
{pengguna.nama_orang_tua}
{pengguna.nama_anak ?? '-'}
{/* Section: Data Orang Tua */}
} label="Nama Ibu / Orang Tua" value={pengguna.nama_orang_tua} />
} label="Alamat" value={pengguna.alamat} />
} label="No. WhatsApp" value={pengguna.no_whatsapp} />
{/* Section: Data Anak */}
} label="Nama Anak" value={pengguna.nama_anak} />
:
}
label="Jenis Kelamin"
value={pengguna.jenis_kelamin}
accent={isLaki ? 'blue' : 'pink'}
/>
}
label="Tanggal Lahir"
value={formatDate(pengguna.tanggal_lahir)}
/>
{/* Separator: Perkembangan */}
{/* Chart Perkembangan Panjang & Berat */}
{/* Professional Separator */}
{/* Tabel Riwayat Hasil Stunting */}
)
}