2025-02-26 19:27:15 +05:30

125 lines
4.8 KiB
TypeScript

"use client";
import { useState, useEffect } from 'react';
import { ArrowRight, Wand2, Palette, Rocket } from 'lucide-react';
const steps = [
{
icon: <Wand2 className="w-8 h-8" />,
title: "Convert & Enhance Your Services",
description: "Use our intuitive tools to turn your current offerings into interactive AI agents",
color: "from-purple-500/30 to-blue-500/30"
},
{
icon: <Palette className="w-8 h-8" />,
title: "Customize Your Experience",
description: "Leverage our drag-and-drop builder and creative suite (forms, video editor, writer, newsletter) to tailor your AI solutions",
color: "from-blue-500/30 to-purple-500/30"
},
{
icon: <Rocket className="w-8 h-8" />,
title: "Launch & Monetize",
description: "Build your community or list your AI services on our marketplace—boost your revenue by tapping into a growing market of SMBs seeking smart solutions",
color: "from-purple-500/30 to-pink-500/30"
}
];
export default function HowItWorks() {
const [activeStep, setActiveStep] = useState(0);
const [isHovering, setIsHovering] = useState(false);
useEffect(() => {
if (isHovering) return;
const timer = setInterval(() => {
setActiveStep((prev) => (prev + 1) % steps.length);
}, 5000);
return () => clearInterval(timer);
}, [isHovering]);
return (
<div className="w-full py-32">
<div className="container mx-auto px-4">
<div className="text-center mb-24">
<h2 className="text-4xl md:text-6xl text-white mb-8">How It Works</h2>
<p className="text-xl text-gray-400">Transform your business with AI in three simple steps</p>
</div>
<div className="relative max-w-6xl mx-auto">
{/* Connecting line */}
<div className="absolute top-24 left-0 w-full h-px">
<div className="relative w-full h-full">
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-purple-500/20 to-transparent" />
<div
className="absolute h-full bg-gradient-to-r from-purple-500 to-blue-500 transition-all duration-1000"
style={{
width: `${(activeStep + 1) * 33.33}%`,
opacity: 0.3
}}
/>
</div>
</div>
<div className="relative flex justify-between items-start gap-12">
{steps.map((step, index) => (
<div
key={index}
className="flex-1"
onMouseEnter={() => {
setIsHovering(true);
setActiveStep(index);
}}
onMouseLeave={() => setIsHovering(false)}
>
<div className="relative">
{/* Icon container */}
<div
className={`
relative z-10 w-20 h-20 mx-auto mb-8
rounded-2xl overflow-hidden
transition-all duration-500 ease-out
${activeStep === index ? 'scale-110' : 'scale-100'}
`}
>
<div className={`
absolute inset-0 bg-gradient-to-br ${step.color}
transition-opacity duration-500
${activeStep === index ? 'opacity-100' : 'opacity-50'}
`} />
<div className={`
absolute inset-0 flex items-center justify-center
transition-transform duration-500
${activeStep === index ? 'scale-110 text-white' : 'scale-100 text-gray-500'}
`}>
{step.icon}
</div>
</div>
{/* Content */}
<div className={`
p-8 rounded-2xl
transition-all duration-500 ease-out
${activeStep === index ? 'bg-purple-900/20 translate-y-0 opacity-100' : 'bg-transparent translate-y-4 opacity-60'}
`}>
<h3 className="text-2xl text-white mb-4">{step.title}</h3>
<p className="text-gray-400 leading-relaxed">{step.description}</p>
</div>
</div>
{/* Step indicator */}
<div className={`
mt-6 flex justify-center items-center gap-2
transition-opacity duration-500
${activeStep === index ? 'opacity-100' : 'opacity-50'}
`}>
<span className="text-sm text-purple-400">Step {index + 1}</span>
{index < steps.length - 1 && (
<ArrowRight className="w-4 h-4 text-purple-400" />
)}
</div>
</div>
))}
</div>
</div>
</div>
</div>
);
}