"use client"; import { useGridStore } from "@/features/grid/store/use-grid-store"; import { BulkAiAnalyzer } from "./bulk-ai-analyzer"; import { useSaveDrafts } from "@/features/grid/hooks/use-save-drafts"; import { Loader2, CheckCircle, AlertCircle } from "lucide-react"; import { useState, useTransition } from "react"; function Stat({ label, value, sub }: { label: string; value: string; sub?: string }) { // Determine color based on label to match the prototype const valColor = label.includes("CA") || label.includes("Marge") ? "text-emerald-600 dark:text-emerald-400" : "text-slate-900 dark:text-white"; return (
{label} {value} {sub && {sub}}
); } export function FloatingSummaryBar() { const { summary, draftChanges, rows, filters } = useGridStore(); const [isPending, startTransition] = useTransition(); const [saveStatus, setSaveStatus] = useState<"idle" | "success" | "error">("idle"); const visibleCodeins = rows.map(r => r.codein); const { save, hasDrafts, count } = useSaveDrafts(filters.magasin || "TOTAL", visibleCodeins); const handleSave = () => { startTransition(async () => { const result = await save(); setSaveStatus(result.success ? "success" : "error"); setTimeout(() => setSaveStatus("idle"), 3000); }); }; return (
{hasDrafts && ( {count} modif. )}
); }