diff --git a/package.json b/package.json
index 2eb72ad..b35959c 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "therapyfinder",
"private": true,
- "version": "2026.03.11.1",
+ "version": "2026.03.11.2",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/src/features/kontakte/components/contact-card.tsx b/src/features/kontakte/components/contact-card.tsx
index 2a5dbfa..aa117a6 100644
--- a/src/features/kontakte/components/contact-card.tsx
+++ b/src/features/kontakte/components/contact-card.tsx
@@ -1,37 +1,60 @@
-import { useNavigate } from "@tanstack/react-router";
-import { Check, Clock, X } from "lucide-react";
-import { Badge } from "@/shared/components/ui/badge";
-import { Card, CardContent } from "@/shared/components/ui/card";
+import { Link } from "@tanstack/react-router";
+import { Check, Clock, HelpCircle, X } from "lucide-react";
import type { KontaktErgebnis } from "@/shared/db/schema";
import { dbExec } from "@/shared/hooks/use-db";
-import { ERGEBNIS_LABELS } from "@/shared/lib/constants";
+import { cn } from "@/shared/lib/utils";
interface ContactCardProps {
id: number;
name: string;
- stadt: string | null;
letzterKontakt: string | null;
letztesErgebnis: string | null;
kontakteGesamt: number;
onUpdate: () => void;
}
-const ergebnisVariant: Record<
- KontaktErgebnis,
- "default" | "secondary" | "destructive" | "outline"
-> = {
- zusage: "default",
- warteliste: "secondary",
- absage: "destructive",
- keine_antwort: "outline",
-};
+const statusButtons: {
+ ergebnis: KontaktErgebnis;
+ icon: typeof Check;
+ color: string;
+ selectedBg: string;
+ label: string;
+}[] = [
+ {
+ ergebnis: "zusage",
+ icon: Check,
+ color: "text-green-600 dark:text-green-400",
+ selectedBg: "bg-green-600 dark:bg-green-500 text-white",
+ label: "Zusage",
+ },
+ {
+ ergebnis: "warteliste",
+ icon: Clock,
+ color: "text-amber-600 dark:text-amber-400",
+ selectedBg: "bg-amber-600 dark:bg-amber-500 text-white",
+ label: "Warteliste",
+ },
+ {
+ ergebnis: "absage",
+ icon: X,
+ color: "text-red-600 dark:text-red-400",
+ selectedBg: "bg-red-600 dark:bg-red-500 text-white",
+ label: "Absage",
+ },
+ {
+ ergebnis: "keine_antwort",
+ icon: HelpCircle,
+ color: "text-muted-foreground",
+ selectedBg: "bg-muted-foreground text-white",
+ label: "Keine Antwort",
+ },
+];
async function quickUpdate(
therapeutId: number,
ergebnis: KontaktErgebnis,
onUpdate: () => void,
) {
- // Update the most recent kontakt for this therapist, or create one if none exists
const result = await dbExec(
"SELECT id FROM kontakt WHERE therapeut_id = $1 ORDER BY datum DESC, id DESC LIMIT 1",
[therapeutId],
@@ -56,81 +79,47 @@ async function quickUpdate(
export function ContactCard({
id,
name,
- stadt,
letzterKontakt,
letztesErgebnis,
kontakteGesamt,
onUpdate,
}: ContactCardProps) {
- const navigate = useNavigate();
-
return (
- {name} {stadt}
- {kontakteGesamt} Kontakt{kontakteGesamt !== 1 ? "e" : ""}
- {letzterKontakt && <> · {letzterKontakt}>}
- {name}
+ {kontakteGesamt} Kontakt{kontakteGesamt !== 1 ? "e" : ""}
+ {letzterKontakt && <> · {letzterKontakt}>}
+
{beschreibung}
)}Erstgespräch erfassen
++ Freie Termine findest du unter{" "} + 116117{" "} + (Telefon oder online). +
++ Ohne Dringlichkeitscode kann die TSS dich ggf. nicht + vermitteln. Frage in der Sprechstunde gezielt danach. +
+ )} +