"use client"; import { motion, useReducedMotion } from "framer-motion"; import { MaterialIcon } from "@/components/ui/MaterialIcon"; import { fadeUp, staggerContainer, viewport } from "@/lib/animations"; const EASE = [0.22, 1, 0.36, 1] as [number, number, number, number]; const STAGES = [ { icon: "photo_camera", label: "Shelf Scan" }, { icon: "barcode_scanner", label: "Barcode Detection" }, { icon: "center_focus_strong", label: "Recognition" }, { icon: "category", label: "Category" }, { icon: "nutrition", label: "Nutrition" }, { icon: "science", label: "Ingredients" }, { icon: "sell", label: "Pricing" }, { icon: "inventory_2", label: "Inventory" }, { icon: "check_circle", label: "Ready", done: true }, ]; const nodeVariant = { hidden: { opacity: 0, scale: 0.7, y: 12 }, visible: { opacity: 1, scale: 1, y: 0, transition: { duration: 0.45, ease: EASE } }, }; function StageNode({ stage, index, reduce, size = "md", }: { stage: (typeof STAGES)[number]; index: number; reduce: boolean | null; size?: "md" | "sm"; }) { const dim = size === "md" ? "h-[68px] w-[68px]" : "h-14 w-14"; return ( {/* light-up glow */}