diff --git a/src/components/report-issue-dialog.tsx b/src/components/report-issue-dialog.tsx new file mode 100644 index 00000000..3f2ee29a --- /dev/null +++ b/src/components/report-issue-dialog.tsx @@ -0,0 +1,109 @@ +"use client"; + +import { FormInputField } from "@/components/form/FormInput"; +import { FormTextareaField } from "@/components/form/FormTextarea"; +import { Button } from "@/components/ui/button"; +import { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { FieldGroup } from "@/components/ui/field"; +import NiceModal, { useModal } from "@ebay/nice-modal-react"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useForm } from "react-hook-form"; +import z from "zod"; + +const ReportIssueSchema = z.object({ + title: z.string().min(1, "Title is required"), + description: z.string().min(1, "Description is required"), + email: z.string().email("Invalid email").optional().or(z.literal("")), +}); + +type ReportIssueSchemaType = z.infer; + +const defaultValues: ReportIssueSchemaType = { + title: "", + description: "", + email: "", +}; + +export const ReportIssueDialog = NiceModal.create(() => { + const modal = useModal(); + + const form = useForm({ + resolver: zodResolver(ReportIssueSchema), + defaultValues, + mode: "onSubmit", + reValidateMode: "onChange", + }); + + const onSubmit = (data: ReportIssueSchemaType) => { + // No functionality - just for UI display + console.log("Report Issue (No Functionality):", data); + modal.hide(); + }; + + return ( + (open ? modal.show() : modal.hide())} + > + + + Report Issue + + Let us know about any issues you're experiencing. + + + +
+ + + + + + + + + + + + + + +
+
+
+ ); +}); diff --git a/src/components/settings/settings-dropdown.tsx b/src/components/settings/settings-dropdown.tsx index 6d1ad580..1ec0937f 100644 --- a/src/components/settings/settings-dropdown.tsx +++ b/src/components/settings/settings-dropdown.tsx @@ -13,6 +13,7 @@ import { import { forceLogout } from "@/lib/auth/logout"; import { useAuth } from "@/providers/client-auth-provider"; import NiceModal from "@ebay/nice-modal-react"; +import { ReportIssueDialog } from "../report-issue-dialog"; import { SettingsDialog } from "./settings-dialog"; export function SettingsDropdown({ @@ -46,11 +47,9 @@ export function SettingsDropdown({ - + NiceModal.show(ReportIssueDialog)}> - - Report a Bug (Coming soon) - + Report Issue