'use client'; import { Fragment, useEffect, useRef, useState } from 'react'; import { CheckCircle, Zap } from 'lucide-react'; import Image from 'next/image'; import * as Badge from '@/components/ui/badge'; import * as Divider from '@/components/ui/divider'; import { cn } from '@/utils/cn'; const steps = [ { title: 'Set your targets', description: 'Define clear goals for your campaigns and measure performance with precision.', image: 'https://alignui.com/images/blocks/hiw-6-image-1.png', darkImage: 'https://alignui.com/images/blocks/hiw-6-image-1-dark.png', rightTitle: 'Smarter tools, bigger results.', rightDescription: 'Leverage insights to optimize every campaign for maximum impact.', }, { title: 'Upload your products', description: 'Upload product images and marketing assets to create engaging listings.', image: 'https://alignui.com/images/blocks/hiw-6-image-1.png', darkImage: 'https://alignui.com/images/blocks/hiw-6-image-1-dark.png', rightTitle: 'Smarter tools, bigger results.', rightDescription: 'Leverage insights to optimize every campaign for maximum impact.', }, { title: 'Run your campaigns', description: 'Launch ads and promotions that reach your audience and drive conversions.', image: 'https://alignui.com/images/blocks/hiw-6-image-1.png', darkImage: 'https://alignui.com/images/blocks/hiw-6-image-1-dark.png', rightTitle: 'Smarter tools, bigger results.', rightDescription: 'Leverage insights to optimize every campaign for maximum impact.', }, ]; const STEP_DURATION = 5000; const FADE_DURATION = 300; export default function CampaignLaunchSteps() { const [activeStep, setActiveStep] = useState(0); const [isFading, setIsFading] = useState(false); const timeoutRef = useRef | null>(null); useEffect(() => { const interval = setInterval(() => { setIsFading(true); timeoutRef.current = setTimeout(() => { setActiveStep((prev) => (prev + 1) % steps.length); setIsFading(false); }, FADE_DURATION); }, STEP_DURATION); return () => { clearInterval(interval); if (timeoutRef.current) clearTimeout(timeoutRef.current); }; }, []); return (
How it works?

Kickstart quickly, grow your revenue

Set up your store in minutes and start reaching your audience.
{' '} No delays, no hassle — just sales.

{steps.map((step, index) => { const isCompleted = index < activeStep; const isActive = index === activeStep; const isUpcoming = index > activeStep; const stepNumber = String(index + 1).padStart(2, '0'); return ( {index > 0 && }
{isCompleted ? (
) : isActive ? (
{stepNumber}
) : (
{stepNumber}
)}

{step.title}

{step.description}

{isActive && (
Step illustration Step illustration

{step.rightTitle}

{step.rightDescription}

)}
); })}
Step illustration Step illustration

{steps[activeStep].rightTitle}

{steps[activeStep].rightDescription}

); }