"use client"; import Link from "next/link"; import { motion, AnimatePresence } from "framer-motion"; import { X, ChevronLeft, ChevronRight } from "lucide-react"; import { useEffect, useState } from "react"; import { useRouter, useSearchParams } from "next/navigation"; import type { PublicArticle } from "@/lib/articles-public"; import { formatDate } from "@/utils/global"; import ArticleThumbnail from "@/components/landing-page/article-thumbnail"; function firstTag(tags: string | undefined): string { if (!tags?.trim()) return ""; const t = tags .split(",") .map((s) => s.trim()) .filter(Boolean)[0]; return t ?? ""; } function articleHref(a: PublicArticle) { return `/news/detail/${a.id}-${a.slug}`; } type Props = { featured: PublicArticle[]; defaultSearch?: string; }; export default function NewsAndServicesHeader({ featured, defaultSearch = "", }: Props) { const [activeHeader, setActiveHeader] = useState(0); const [activeModal, setActiveModal] = useState(0); const [open, setOpen] = useState(false); const [mounted, setMounted] = useState(false); const searchParams = useSearchParams(); const router = useRouter(); const slides = featured.length > 0 ? featured : []; const slideCount = slides.length; useEffect(() => { setMounted(true); }, []); useEffect(() => { if (!mounted) return; const highlight = searchParams.get("highlight"); if (highlight === "1" && slideCount > 0) { setActiveModal(activeHeader); setOpen(true); } }, [mounted, searchParams, activeHeader, slideCount]); const closeModal = () => { setOpen(false); router.replace("/news-services"); }; const headerPrev = () => { if (slideCount === 0) return; setActiveHeader((p) => (p === 0 ? slideCount - 1 : p - 1)); }; const headerNext = () => { if (slideCount === 0) return; setActiveHeader((p) => (p === slideCount - 1 ? 0 : p + 1)); }; const modalPrev = () => { if (slideCount === 0) return; setActiveModal((p) => (p === 0 ? slideCount - 1 : p - 1)); }; const modalNext = () => { if (slideCount === 0) return; setActiveModal((p) => (p === slideCount - 1 ? 0 : p + 1)); }; if (!mounted) return null; const current = slides[activeHeader]; const modalArticle = slides[activeModal]; return ( <> {slideCount > 0 ? ( <> > ) : null} {slideCount === 0 ? ( Berita & Layanan Konten unggulan akan tampil di sini setelah artikel dipublikasikan dari CMS. ) : ( current && ( {slides.map((_, i) => ( ))} {current.title} {formatDate(current.publishedAt || current.createdAt)} • {current.categoryName?.trim() || "Berita"} {firstTag(current.tags) ? ( <> • {firstTag(current.tags)} > ) : null} {current.description} Baca Selengkapnya setOpen(true)} className="inline-flex items-center justify-center rounded-xl border border-[#b07c18] px-7 py-3 font-medium text-[#b07c18] transition hover:bg-[#b07c18]/10" > Pratinjau ) )} 🔍 Cari {open && slideCount > 0 && modalArticle && ( {modalArticle.title} Buka halaman artikel {slides.map((_, i) => ( setActiveModal(i)} className={`h-2.5 w-2.5 rounded-full ${ activeModal === i ? "bg-white" : "bg-white/40" }`} /> ))} )} > ); }
Konten unggulan akan tampil di sini setelah artikel dipublikasikan dari CMS.
{current.description}