import { useMemo, useState } from "react" import { useNavigate } from "react-router-dom" import { Pin, RefreshCw } from "lucide-react" import { Button } from "@/components/ui-pp/Button" import { GlassCard } from "@/components/ui-pp/GlassCard" import { t, tr, ui } from "@/i18n/ui" import { useLanguage } from "@/lib/language" import { cx } from "@/lib/cx" import { buildSuggestion, reshuffleSuggestion } from "@/lib/suggestion" import { formatClock, getTimeContext } from "@/lib/timeContext" import type { FoodItem, Recipe, TimeSlot } from "@/types/domain" const CAT_DOT: Record = { protein: "var(--color-protein)", obst: "var(--color-obstgem)", gemuese: "var(--color-obstgem)", fett: "var(--color-fett)", kh: "var(--color-kh)", snack: "var(--color-protein)", } function slotLabel(slot: TimeSlot, lang: "de" | "en"): string { return t(ui.suggestion[slot], lang) } export function SuggestionCard() { const { lang } = useLanguage() const navigate = useNavigate() const context = useMemo(() => getTimeContext(), []) const [suggestion, setSuggestion] = useState(() => buildSuggestion(context.slot)) const [pinnedIds, setPinnedIds] = useState>(() => new Set()) const recipe: Recipe | null = suggestion.recipe const items: FoodItem[] = suggestion.foods const clock = formatClock(context.hour, context.minute, lang) const header = lang === "de" ? `${clock} ${t(ui.suggestion.timeSuffix, lang)} · ${slotLabel(context.slot, lang)}` : `${clock} · ${slotLabel(context.slot, lang)}` const title = recipe ? tr(recipe.name, lang) : t(ui.suggestion.fallbackName, lang) function togglePin(id: string) { setPinnedIds((current) => { const next = new Set(current) if (next.has(id)) next.delete(id) else next.add(id) return next }) } function reroll() { if (pinnedIds.size === 0) { setSuggestion(buildSuggestion(context.slot, recipe?.id)) return } setSuggestion({ recipe: null, foods: reshuffleSuggestion(items, pinnedIds, context.slot), }) } function sendToBuilder() { navigate("/builder", { state: { ingredientIds: items.map((item) => item.id), source: "suggestion" as const, }, }) } return (

{header}

{title}

{items.map((item) => { const pinned = pinnedIds.has(item.id) return ( ) })}
) }