"use client"; import React from "react"; import { FeatherAlertTriangle, FeatherArrowRight, FeatherCheckCircle, FeatherInfo, } from "@subframe/core"; import { STATUS_FARBEN } from "../../utils/chartTheme"; import { formatEuro } from "../../utils/formatters"; import { useToast } from "../../context/ToastContext"; import type { AlertEintrag } from "../../data/calculations"; /** * Handlungsbedarf-Liste (COMP-08). * * Jede Zeile nennt drei Dinge: was los ist, um wie viel Geld es geht und was * zu tun ist. Ohne den Betrag lassen sich die Zeilen nicht gegeneinander * abwägen, ohne die Handlung ist die Liste ein Bericht statt einer Arbeitsliste. * Der Absprung in die jeweilige Arbeitsliste ist im Prototyp eine Attrappe. */ export function AlertList({ eintraege, leerText = "Keine offenen Punkte", /** Zwei Spalten, wenn die Karte über die volle Seitenbreite läuft. */ spalten = 1, }: { eintraege: AlertEintrag[]; leerText?: string; spalten?: 1 | 2; }) { const { zeigeToast } = useToast(); const rang = { kritisch: 0, warnung: 1, hinweis: 2 } as const; const sortiert = [...eintraege].sort((a, b) => rang[a.art] - rang[b.art]); if (!sortiert.length) { return (
{leerText}
); } return ( // Container-Query statt Viewport: dieselbe Liste steht mal über die volle // Seitenbreite und mal in einer Drittelkarte. Der Viewport weiß davon nichts. ); }