"use client"; import { memo } from "react"; import ContentLockup from "./ContentLockup"; import Button from "./Button"; import { useAnalytics } from "../hooks"; interface AskOrganizerProps { title?: string; subtitle?: string; description?: string; buttonText?: string; buttonHref?: string; className?: string; variant?: "centered" | "left-aligned" | "compact" | "inverse"; onContactClick?: (data: { event: string; component: string; variant: string; buttonText: string; buttonHref: string; timestamp: string; }) => void; } const AskOrganizer = memo( ({ title, subtitle, description, buttonText = "Ask an organizer", buttonHref = "#", className = "", variant = "centered", onContactClick, }) => { const { trackEvent, trackCustomEvent } = useAnalytics(); // Analytics tracking for contact button clicks const handleContactClick = ( _event: React.MouseEvent, ) => { // Track with standard analytics trackEvent({ event: "contact_button_click", category: "engagement", label: "ask_organizer", component: "AskOrganizer", variant, }); // Also call custom callback if provided trackCustomEvent( "contact_button_click", { component: "AskOrganizer", variant, buttonText, buttonHref, }, onContactClick, ); }; // Variant-specific styling const variantStyles: Record< string, { container: string; buttonContainer: string } > = { centered: { container: "text-center", buttonContainer: "flex justify-center", }, "left-aligned": { container: "text-left", buttonContainer: "flex justify-start", }, compact: { container: "text-center", buttonContainer: "flex justify-center", }, inverse: { container: "text-center", buttonContainer: "flex justify-center", }, }; const styles = variantStyles[variant] || variantStyles.centered; // Section padding based on variant const sectionPadding = variant === "compact" ? "py-[var(--spacing-scale-016)] px-[var(--spacing-scale-016)] md:py-[var(--spacing-scale-032)] md:px-[var(--spacing-scale-032)]" : "py-[var(--spacing-scale-032)] px-[var(--spacing-scale-032)] md:py-[var(--spacing-scale-096)] md:px-[var(--spacing-scale-064)]"; // Gap between content and button based on variant const contentGap = variant === "compact" ? "gap-[var(--spacing-scale-020)]" : "gap-[var(--spacing-scale-040)]"; return (
{/* Content Lockup */} {/* Button */}
); }, ); AskOrganizer.displayName = "AskOrganizer"; export default AskOrganizer;