"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 { BugReportTrigger } from "./bug-report-trigger" import { BugReportContent } from "./bug-report-content" import type { BugReportProps } from "./types" type BugReportState = "idle" | "success" | "error" export function BugReport({ variant = "modal", side = "top", triggerLabel = "Report Bug", title = "Report a Bug", showStepsToReproduce = true, showWorkedBefore = true, user, context, captureMetadata = true, onSubmit, apiEndpoint, submitLabel, className, }: BugReportProps) { 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 for the report! We'll investigate.

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

{errorMessage}

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

{title}

{content}
) }