import { getFormProps, useForm } from "@conform-to/react"; import { getZodConstraint, parseWithZod } from "@conform-to/zod"; import { useState } from "react"; import { z } from "zod"; import { Field } from "~/components/forms"; import { GeneralLayout } from "~/components/general-layout"; import { AddIcon, CloudIcon } from "~/components/icons"; import { ManagementCard } from "~/components/management-card"; import { Button } from "~/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, } from "~/components/ui/dialog"; import { Input } from "~/components/ui/input"; import { UsageCard } from "~/components/usage-card"; import QRImg from "~/images/QR.png"; export default function MyAccount() { const isLogged = true; if (!isLogged) { window.location.href = "/login"; } const [openModal, setModal] = useState({ changeEmail: false, changePassword: false, setupTwoFactor: false, }); return ( My Account } button={ Upgrade to Premium } /> Account Management setModal({ ...openModal, changeEmail: true })} /> Security setModal({ ...openModal, changePassword: true })} /> setModal({ ...openModal, setupTwoFactor: true })} /> More {/* Dialogs must be near to body as possible to open the modal, otherwise will be restricted to parent height-width */} setModal({ ...openModal, changeEmail: value }) } currentValue="bsimpson@springfield.oh.gov.com" /> setModal({ ...openModal, changePassword: value }) } /> setModal({ ...openModal, setupTwoFactor: value }) } /> ); } const ChangeEmailSchema = z.object({ email: z.string().email(), password: z.string(), retypePassword: z.string(), }); const ChangeEmailForm = ({ open, setOpen, currentValue, }: { open: boolean; setOpen: (value: boolean) => void; currentValue: string; }) => { const [form, fields] = useForm({ id: "login", constraint: getZodConstraint(ChangeEmailSchema), onValidate({ formData }) { return parseWithZod(formData, { schema: ChangeEmailSchema }); }, shouldValidate: "onSubmit", }); return ( Change Email {currentValue} Change Email Address ); }; const ChangePasswordSchema = z.object({ currentPassword: z.string().email(), newPassword: z.string(), retypePassword: z.string(), }); const ChangePasswordForm = ({ open, setOpen, }: { open: boolean; setOpen: (value: boolean) => void; }) => { const [form, fields] = useForm({ id: "login", constraint: getZodConstraint(ChangeEmailSchema), onValidate({ formData }) { return parseWithZod(formData, { schema: ChangePasswordSchema }); }, shouldValidate: "onSubmit", }); return ( Change Password Change Password ); }; const SetupTwoFactorDialog = ({ open, setOpen, }: { open: boolean; setOpen: (value: boolean) => void; }) => { const [continueModal, setContinue] = useState(false); return ( { setOpen(value) setContinue(false); }}> Setup Two-Factor {continueModal ? ( <> Enter the authentication code generated in your two-factor application to confirm your setup. Confirm > ) : ( <> Don’t have access to scan? Use this code instead. HHH7MFGAMPJ44OM44FGAMPJ44O232 setContinue(true)}>Continue > )} ); };
Enter the authentication code generated in your two-factor application to confirm your setup.
Don’t have access to scan? Use this code instead.