diff --git a/client/components/CTAButtonGroup.tsx b/client/components/CTAButtonGroup.tsx new file mode 100644 index 00000000..6010c7e0 --- /dev/null +++ b/client/components/CTAButtonGroup.tsx @@ -0,0 +1,115 @@ +import { ReactNode } from "react"; +import { Button } from "@/components/ui/button"; +import { LucideIcon } from "lucide-react"; + +export interface CTAButton { + label: string; + icon?: LucideIcon; + onClick?: () => void; + href?: string; + variant?: "primary" | "secondary" | "outline"; + size?: "sm" | "md" | "lg"; + fullWidth?: boolean; +} + +interface CTAButtonGroupProps { + buttons: CTAButton[]; + layout?: "horizontal" | "vertical" | "grid"; + gap?: "small" | "medium" | "large"; + centered?: boolean; +} + +export function CTAButtonGroup({ + buttons, + layout = "horizontal", + gap = "medium", + centered = false, +}: CTAButtonGroupProps) { + const gapClass = + gap === "small" ? "gap-2" : gap === "large" ? "gap-4" : "gap-3"; + + let containerClass = `flex ${gapClass}`; + if (layout === "vertical") { + containerClass = `flex flex-col ${gapClass}`; + } else if (layout === "grid") { + containerClass = `grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 ${gapClass}`; + } + + if (centered) { + containerClass += " justify-center items-center"; + } + + return ( +
{subtitle}
} + {children &&