"use client"; import { useState } from "react"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { Sparkles, Loader2 } from "lucide-react"; import { apiPost } from "@/lib/api/client"; import { useAuthStore } from "@/lib/stores/auth.store"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; interface DemoSeedResult { categoriesAdded: number; itemsAdded: number; tablesAdded: number; ingredientsAdded: number; taxCreated: boolean; } interface Props { /** Which queries to invalidate after seeding. */ invalidateKeys: string[][]; className?: string; } export function DemoDataBanner({ invalidateKeys, className }: Props) { const cafeId = useAuthStore((s) => s.user?.cafeId); const role = useAuthStore((s) => s.user?.role); const qc = useQueryClient(); const [done, setDone] = useState(false); const [summary, setSummary] = useState(null); const seed = useMutation({ mutationFn: () => apiPost(`/api/cafes/${cafeId}/demo/seed`, {}), onSuccess: (result) => { setSummary(result); setDone(true); for (const key of invalidateKeys) { qc.invalidateQueries({ queryKey: key }); } }, }); if (!cafeId || (role !== "Owner" && role !== "Manager")) return null; if (done && summary) { const nothingAdded = summary.categoriesAdded === 0 && summary.itemsAdded === 0 && summary.tablesAdded === 0 && summary.ingredientsAdded === 0 && !summary.taxCreated; return (
{nothingAdded ? ( "همه داده‌های نمونه از قبل موجود بودند — موردی اضافه نشد." ) : ( <> داده‌های نمونه اضافه شد — {summary.categoriesAdded} دسته،{" "} {summary.itemsAdded} آیتم، {summary.tablesAdded} میز،{" "} {summary.ingredientsAdded} ماده اولیه {summary.taxCreated ? "، مالیات ۹٪" : ""}. )}
); } return (

شروع سریع با داده‌های نمونه

۷ دسته، ۵۹+ آیتم منو، ۱۰ میز، ۱۵ ماده اولیه و مالیات ۹٪ به‌صورت خودکار اضافه می‌شود.

); }