"use client" import { Popover, PopoverContent, PopoverTrigger, } from "@mdxui/primitives/popover" import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from "@mdxui/primitives/dialog" import { useState, useEffect } from "react" import { ContactTrigger } from "./contact-trigger" import { ContactContent } from "./contact-content" import type { ContactProps } from "./types" type ContactState = "idle" | "success" | "error" export function Contact({ variant = "modal", side = "top", triggerLabel = "Contact Us", title = "Contact Us", showName = true, showEmail = true, showCompanyName = false, showCompanySize = false, showTopic = true, showMessage = true, showAdditionalInfo = false, requireName = true, requireEmail = true, requireCompanyName = false, requireCompanySize = false, requireTopic = false, requireMessage = true, requireAdditionalInfo = false, topics, companySizeOptions, rows, user, context, captureMetadata = true, sessionId, correlationId, appVersion, environment, onSubmit, apiEndpoint, submitLabel, className, }: ContactProps) { const [open, setOpen] = useState(false) const [state, setState] = useState("idle") const [errorMessage, setErrorMessage] = useState("") // Reset state when closed useEffect(() => { if (!open) { const timer = setTimeout(() => { setState("idle") setErrorMessage("") }, 200) return () => clearTimeout(timer) } }, [open]) // Auto-close after success useEffect(() => { if (state === "success") { const timer = setTimeout(() => { setOpen(false) }, 1500) return () => clearTimeout(timer) } }, [state]) const handleSuccess = () => setState("success") const handleError = (error: string) => { setState("error") setErrorMessage(error) } const content = ( <> {state === "success" ? (

Thanks! We'll be in touch soon.

) : ( <> {state === "error" && (

{errorMessage}

)} )} ) if (variant === "modal") { return ( {title} {content} ) } return (

{title}

{content}
) }