import { useEffect, useState } from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import DOMPurify from "dompurify"; const apiBase = import.meta.env.VITE_API_URL; type NewsItem = { id: number; title: string; description: string; image_url: string; team: string; created_at: string; }; const AlleNeuigkeitenPage = () => { const [news, setNews] = useState([]); const [expandedIds, setExpandedIds] = useState([]); const [activeCardId, setActiveCardId] = useState(null); const [selectedTeam, setSelectedTeam] = useState("Alle Teams"); const defaultImage = "/images/tgl-ball.png"; //Filtern nach Teams const teams = Array.from(new Set(news.map((n) => n.team).filter(Boolean))); const filteredNews = selectedTeam === "Alle Teams" ? news : news.filter((n) => n.team === selectedTeam); const groupedNews = filteredNews.reduce((acc: Record, item) => { const year = new Date(item.created_at).getFullYear().toString(); if (!acc[year]) acc[year] = []; acc[year].push(item); return acc; }, {}); useEffect(() => { fetch(`${apiBase}/api/news`) .then((res) => res.json()) .then((data) => setNews(data)) .catch((err) => console.error("Fehler beim Laden der News:", err)); }, []); const toggleCard = (id: number) => { setActiveCardId((prev) => (prev === id ? null : id)); }; //Toggle der Cards const toggleExpand = (id: number) => { setExpandedIds((prev) => prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id] ); } return (

Alle Neuigkeiten

{/* News nach Jahren gruppiert */} {Object.entries(groupedNews).map(([year, items]) => (

{year}

{items.map((item) => (
{item.title}
{item.title} {new Date(item.created_at).toLocaleDateString("de-DE")}
))}
))}
); }; export default AlleNeuigkeitenPage;