"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 { ResolutionTrigger } from "./resolution-trigger" import { ResolutionContent } from "./resolution-content" import type { ResolutionProps } from "./types" type ResolutionState = "idle" | "success" | "error" export function Resolution({ variant = "modal", side = "top", triggerLabel = "Rate Support", title = "How did we do?", ticketId, showFollowUp = true, user, context, captureMetadata = true, onSubmit, apiEndpoint, submitLabel, className, }: ResolutionProps) { const [open, setOpen] = useState(false) const [state, setState] = useState("idle") const [errorMessage, setErrorMessage] = useState("") // Reset state when closed useEffect(() => { if (!open) { // Small delay to allow close animation 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 for your feedback!

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

{errorMessage}

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

{title}

{content}
) }