"use client"; import { CheckCircle2, ListChecks, Plus, Sparkles } from "lucide-react"; import Link from "next/link"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { useAutoRefresh } from "@/hooks/use-auto-refresh"; import { tr } from "@/i18n/tr"; import { formatDate } from "@/shared/format"; import { SHOPPING_REFRESH_MS } from "@/shared/shopping"; import type { ShoppingListSummary } from "../service"; import { ShoppingListDialog } from "./list-dialog"; const t = tr.shopping; function ListCard({ list }: { list: ShoppingListSummary }) { const done = list.status === "completed"; const Icon = done ? CheckCircle2 : ListChecks; return (
  • {list.name}

    {t.itemCount(list.itemCount)} {list.checkedCount && !done ? ` · ${t.checkedCount(list.checkedCount, list.itemCount)}` : ""}

    {list.preview.length ? (

    {list.preview.join(", ")} {list.itemCount > list.preview.length ? "…" : ""}

    ) : (

    {t.emptyList}

    )}

    {done && list.completedAt ? t.completedAt(formatDate(list.completedAt)) : t.updated(formatDate(list.updatedAt))}

  • ); } /** /alisveris: aktif ve tamamlanan listeler, yeni liste, bekleyen stok önerileri. */ export function ShoppingListsView({ active, completed, suggestions, canWrite, }: { active: ShoppingListSummary[]; completed: ShoppingListSummary[]; suggestions: number; canWrite: boolean; }) { const [creating, setCreating] = useState(false); useAutoRefresh(SHOPPING_REFRESH_MS); return (
    {suggestions > 0 ? (

    {t.suggestionsBanner(suggestions)}

    ) : null}

    {t.active}

    {canWrite ? ( ) : null}
    {active.length ? ( ) : (

    {t.emptyActive}

    )}
    {completed.length ? (

    {t.completed}

    ) : null} {creating ? setCreating(false)} /> : null}
    ); }