"use client"; import { motion } from "framer-motion"; import { useInView } from "framer-motion"; import { useRef } from "react"; import { CheckCircle, Calendar, Truck, Sparkles } from "lucide-react"; interface ProcessStep { id: number; title: string; description: string; icon: React.ReactNode; color: string; bgColor: string; } const processSteps: ProcessStep[] = [ { id: 1, title: "Get a Quote", description: "Fill out our discovery form to get a personalized estimate tailored to your specific project needs.", icon: , color: "text-olive-700", bgColor: "bg-olive-100" }, { id: 2, title: "Schedule", description: "We'll coordinate a convenient time for your project that works with your schedule and timeline.", icon: , color: "text-taupe-700", bgColor: "bg-taupe-100" }, { id: 3, title: "Deliver", description: "Professional service with quality craftsmanship and attention to every detail of your project.", icon: , color: "text-olive-700", bgColor: "bg-olive-100" } ]; export default function EnhancedProcess() { const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.3 }); // Container animation variants const containerVariants = { hidden: { opacity: 0 }, visible: { opacity: 1, transition: { staggerChildren: 0.3, delayChildren: 0.2 } } }; // Step card animation variants const stepVariants = { hidden: { opacity: 0, y: 50, rotateX: -15 }, visible: { opacity: 1, y: 0, rotateX: 0, transition: { duration: 0.6, type: "spring" as const, stiffness: 100, damping: 15 } } }; // Connecting line animation variants const lineVariants = { hidden: { scaleX: 0 }, visible: { scaleX: 1, transition: { duration: 0.6, ease: "easeOut" as const } } }; // Icon animation variants const iconVariants = { hidden: { scale: 0, rotate: -180 }, visible: { scale: 1, rotate: 0, transition: { type: "spring" as const, stiffness: 200, damping: 15 } } }; // Number animation variants const numberVariants = { hidden: { scale: 0 }, visible: { scale: 1, transition: { type: "spring" as const, stiffness: 300, damping: 20 } } }; return (

Our Process

A simple, transparent process from quote to completion

{/* Connecting lines */}
{processSteps.slice(0, -1).map((_, i) => ( ))}
{processSteps.map((step, i) => (
{/* Step number with animation */} {step.id} {/* Icon with animation */} {step.icon} {/* Title with hover effect */} {step.title} {/* Description */} {step.description} {/* Hover indicator */}
))}
{/* Bottom decoration */}
Ready to start your project?
); }