import { motion } from "framer-motion"; import type React from "react"; import { cn } from "@/features/ui/primitives/styles"; interface WorkflowStepButtonProps { isCompleted: boolean; isActive: boolean; stepName: string; onClick?: () => void; color?: "cyan" | "green" | "blue" | "purple"; size?: number; } // Helper function to get color hex values for animations const getColorValue = (color: string) => { const colorValues = { purple: "rgb(168,85,247)", green: "rgb(34,197,94)", blue: "rgb(59,130,246)", cyan: "rgb(34,211,238)", }; return colorValues[color as keyof typeof colorValues] || colorValues.blue; }; export const WorkflowStepButton: React.FC = ({ isCompleted, isActive, stepName, onClick, color = "cyan", size = 40, }) => { const colorMap = { purple: { border: "border-purple-400 dark:border-purple-300", glow: "shadow-[0_0_15px_rgba(168,85,247,0.8)]", glowHover: "hover:shadow-[0_0_25px_rgba(168,85,247,1)]", fill: "bg-purple-400 dark:bg-purple-300", innerGlow: "shadow-[inset_0_0_10px_rgba(168,85,247,0.8)]", }, green: { border: "border-green-400 dark:border-green-300", glow: "shadow-[0_0_15px_rgba(34,197,94,0.8)]", glowHover: "hover:shadow-[0_0_25px_rgba(34,197,94,1)]", fill: "bg-green-400 dark:bg-green-300", innerGlow: "shadow-[inset_0_0_10px_rgba(34,197,94,0.8)]", }, blue: { border: "border-blue-400 dark:border-blue-300", glow: "shadow-[0_0_15px_rgba(59,130,246,0.8)]", glowHover: "hover:shadow-[0_0_25px_rgba(59,130,246,1)]", fill: "bg-blue-400 dark:bg-blue-300", innerGlow: "shadow-[inset_0_0_10px_rgba(59,130,246,0.8)]", }, cyan: { border: "border-cyan-400 dark:border-cyan-300", glow: "shadow-[0_0_15px_rgba(34,211,238,0.8)]", glowHover: "hover:shadow-[0_0_25px_rgba(34,211,238,1)]", fill: "bg-cyan-400 dark:bg-cyan-300", innerGlow: "shadow-[inset_0_0_10px_rgba(34,211,238,0.8)]", }, }; const styles = colorMap[color]; return (
{/* Outer ring glow effect */} {/* Inner glow effect */} {/* Checkmark icon container */}
{/* Checkmark path */}
{/* Step name label */} {stepName}
); };