"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 TRADITIONAL = [ { icon: "edit_note", label: "Manual Catalog" }, { icon: "store", label: "Offline Store" }, { icon: "directions_walk", label: "Walk-in Customers" }, { icon: "receipt_long", label: "Manual Billing" }, ]; const NEARLE = [ { icon: "auto_awesome", label: "ProductLLM" }, { icon: "storefront", label: "Digital Storefront" }, { icon: "shopping_bag", label: "Omnichannel Ordering" }, { icon: "travel_explore", label: "AI Powered Discovery" }, ]; const nodeVariant = { hidden: { opacity: 0, y: 20 }, visible: { opacity: 1, y: 0, transition: { duration: 0.5, ease: EASE } }, }; const connectorVariant = { hidden: { scaleY: 0 }, visible: { scaleY: 1, transition: { duration: 0.5, ease: EASE } }, }; function FlowColumn({ eyebrow, items, tone, reduce, }: { eyebrow: string; items: { icon: string; label: string }[]; tone: "muted" | "brand"; reduce: boolean | null; }) { const isBrand = tone === "brand"; return ( {eyebrow} {items.map((item, i) => ( {item.label} {/* Animated connector + travelling pulse */} {i < items.length - 1 && ( {!reduce && ( )} )} ))} ); } export function BeforeAfterFlow() { const reduce = useReducedMotion(); return ( Before vs After The same store, reimagined {/* Center VS badge (desktop) */} {!reduce && ( )} VS ); }
{item.label}