diff --git a/src/features/grid/components/floating-summary-bar.tsx b/src/features/grid/components/floating-summary-bar.tsx
index 72be552..ccec628 100644
--- a/src/features/grid/components/floating-summary-bar.tsx
+++ b/src/features/grid/components/floating-summary-bar.tsx
@@ -3,6 +3,9 @@
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
@@ -17,8 +20,20 @@ function Stat({ label, value, sub }: { label: string; value: string; sub?: strin
}
export function FloatingSummaryBar() {
- const { summary, draftChanges } = useGridStore();
- const hasDrafts = Object.keys(draftChanges).length > 0;
+ 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 && (
- {Object.keys(draftChanges).length} modif.
+ {count} modif.
)}
@@ -56,25 +71,29 @@ export function FloatingSummaryBar() {