MachinaCheck / components /landing /workflow.tsx
sarmaddev's picture
added docker and nextjs app
3318ac7
"use client";
import React from "react";
import { Upload, BrainCircuit, Activity, Wrench, CheckCircle2, FileOutput } from "lucide-react";
import { motion } from "framer-motion";
const steps = [
{ name: "Upload 3D model", icon: Upload, gradient: "from-blue-500 to-blue-600" },
{ name: "AI Parsing", icon: BrainCircuit, gradient: "from-cyan-500 to-blue-500" },
{ name: "Operations Detection", icon: Activity, gradient: "from-cyan-400 to-cyan-500" },
{ name: "Tool Matching", icon: Wrench, gradient: "from-blue-400 to-cyan-400" },
{ name: "Feasibility Decision", icon: CheckCircle2, gradient: "from-cyan-500 to-blue-500" },
{ name: "Report Generation", icon: FileOutput, gradient: "from-blue-600 to-cyan-500" },
];
export function Workflow() {
return (
<section id="workflow" className="py-24 relative bg-gradient-to-b from-slate-950/50 to-slate-900/30">
{/* Decorative blurs */}
<div className="absolute top-0 left-1/4 w-96 h-96 bg-blue-500/10 rounded-full blur-3xl -z-10"></div>
<div className="absolute bottom-0 right-1/4 w-96 h-96 bg-cyan-500/10 rounded-full blur-3xl -z-10"></div>
<div className="container mx-auto px-4 sm:px-6 lg:px-8">
<div className="text-center max-w-3xl mx-auto mb-20">
<motion.div
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.5 }}
>
<h2 className="text-3xl font-bold tracking-tight text-foreground sm:text-4xl mb-4">
<span className="bg-gradient-to-r from-blue-300 via-cyan-300 to-blue-300 bg-clip-text text-transparent">
Automated Assessment Pipeline
</span>
</h2>
</motion.div>
<motion.p
className="text-lg text-muted-foreground"
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.5, delay: 0.1 }}
>
A continuous, deterministic workflow that transforms raw CAD design into actionable manufacturing intelligence within seconds.
</motion.p>
</div>
<div className="relative max-w-5xl mx-auto">
{/* Animated connecting line */}
<motion.div
className="hidden lg:block absolute top-1/2 left-0 right-0 h-0.5 -translate-y-1/2 z-0"
initial={{ scaleX: 0, opacity: 0 }}
whileInView={{ scaleX: 1, opacity: 1 }}
viewport={{ once: true }}
transition={{ duration: 0.8, delay: 0.2 }}
style={{ transformOrigin: "left" }}
>
<div className="w-full h-full bg-gradient-to-r from-transparent via-blue-500/50 to-transparent"></div>
</motion.div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-6 gap-6 relative z-10">
{steps.map((step, index) => {
const Icon = step.icon;
return (
<motion.div
key={index}
className="flex flex-col items-center"
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.5, delay: index * 0.1 }}
>
{/* Icon container with gradient glow */}
<motion.div
className={`h-16 w-16 rounded-xl bg-gradient-to-br ${step.gradient} flex items-center justify-center shadow-lg mb-4 relative z-10 cursor-pointer group`}
whileHover={{ scale: 1.1, boxShadow: "0 0 30px rgba(34, 211, 238, 0.5)" }}
transition={{ type: "spring", stiffness: 300, damping: 10 }}
>
<div className="absolute inset-0 rounded-xl bg-white/10 opacity-0 group-hover:opacity-20 transition-opacity"></div>
<Icon className="h-6 w-6 text-white relative z-10" />
{/* Glow effect on hover */}
<div className="absolute inset-0 rounded-xl bg-gradient-to-br opacity-0 group-hover:opacity-30 group-hover:blur-lg -z-10 transition-opacity" style={{ backgroundImage: `linear-gradient(to bottom right, rgba(34, 211, 238, 0.6), rgba(59, 130, 246, 0.6))` }}></div>
</motion.div>
<h3 className="text-sm font-semibold text-foreground text-center">
{step.name}
</h3>
<div className="text-xs text-muted-foreground mt-1 font-mono">
Step 0{index + 1}
</div>
</motion.div>
);
})}
</div>
</div>
</div>
</section>
);
}