import React from "react"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Card, CardContent } from "@/components/ui/card"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { ArrowRight } from "lucide-react"; import { Link } from "@inertiajs/react"; interface SubKategori { SubKategoriId: number; NamaSubKategori: string; } interface Kategori { KategoriId: number; NamaKategori: string; } interface Post { PostId: number; JudulPost: string; DescPost: string; SlugPost: string; ImagePost: string; IsPublish: boolean; created_at: string; kategori?: Kategori; subkategori?: SubKategori; } interface CardPengumumanProps { posts: Post[]; } const CardPengumuman = ({ posts }: CardPengumumanProps) => { const subcategories = Array.from( new Set(posts.map((item) => item.subkategori?.NamaSubKategori)) ).filter(Boolean); const filterPosts = (subkategori: string | null) => { if (!subkategori) return posts; return posts.filter( (item) => item.subkategori?.NamaSubKategori === subkategori ); }; const [visibleItems, setVisibleItems] = React.useState(3); const [activeTab, setActiveTab] = React.useState("all"); const loadMore = () => { setVisibleItems((prev) => prev + 3); }; const PostGrid = ({ items }: { items: Post[] }) => (
{items.slice(0, visibleItems).map((item) => ( {item.JudulPost} {item.subkategori?.NamaSubKategori}

{new Date(item.created_at).toLocaleDateString( "id-ID", { day: "numeric", month: "long", year: "numeric", } )}

{item.JudulPost}

{item.DescPost.replace(/<[^>]*>/g, "").slice( 0, 160 )} ...

))}
); const handleTabChange = (value: string) => { setActiveTab(value); setVisibleItems(3); // Reset visible items when changing tabs }; return (
{/* List of Announcements */}
Semua {subcategories.map((subcat) => ( {subcat} ))}
{visibleItems < filterPosts(null).length && (
)}
{subcategories.map((subcat) => ( {visibleItems < filterPosts(subcat as string).length && (
)}
))}
); }; export default CardPengumuman;