"use client"; import type { CSSProperties } from "react"; import { FACET_FIELDS, FACET_FIELD_LABELS } from "../lib/facetFields"; import type { AppliedFilter, FacetsResponse } from "../lib/api"; import { isFilterActive } from "../lib/filterState"; interface FacetPanelProps { facetsData: FacetsResponse | null; appliedFilters: AppliedFilter[]; onAddFilter: (filter: AppliedFilter) => void; onRemoveFilter: (filter: AppliedFilter) => void; onClearFilters: () => void; } const chipStyle: CSSProperties = { display: "inline-flex", alignItems: "center", gap: 4, padding: "4px 10px", borderRadius: 999, border: "1px solid var(--shl-color-border, #d7dbe0)", background: "var(--shl-color-surface, #f5f6f8)", marginRight: 8, marginBottom: 8, cursor: "pointer", font: "inherit", }; // SRC-06 Akzeptanzkriterium 1: aktive Filter erscheinen als entfernbare // Chips oberhalb der Trefferliste. Echte ))} {/* Akzeptanzkriterium 3: Zurücksetzen aller Filter mit einem Klick. */} ); } // SRC-06 Akzeptanzkriterium 2: Trefferzahl je Facettenwert live // aktualisiert (facetsData kommt bei jeder Such-/Filteränderung neu vom // Server). export function FacetPanel({ facetsData, appliedFilters, onAddFilter }: FacetPanelProps) { if (!facetsData) { return null; } return (
{FACET_FIELDS.map((field) => { const values = facetsData.values[field] ?? []; if (values.length === 0) { return null; } return (
{FACET_FIELD_LABELS[field]}
); })}
); }