import type { MetaFunction } from "@remix-run/node" import { Link } from "@remix-run/react" import { Button } from "~/components/ui/button" import logoPng from "~/images/lume-logo.png?url" import lumeColorLogoPng from "~/images/lume-color-logo.png?url" import discordLogoPng from "~/images/discord-logo.png?url" import lumeBgPng from "~/images/lume-bg-image.png?url" import { Field, FieldCheckbox } from "~/components/forms" import { getFormProps, useForm } from "@conform-to/react" import { z } from "zod" import { getZodConstraint, parseWithZod } from "@conform-to/zod" export const meta: MetaFunction = () => { return [{ title: "Sign Up" }] } const RegisterSchema = z .object({ email: z.string().email(), password: z .string() .min(8, { message: "Password must be at least 8 characters" }), confirmPassword: z .string() .min(8, { message: "Password must be at least 8 characters" }), termsOfService: z.boolean({ required_error: "You must agree to the terms of service" }) }) .superRefine((data, ctx) => { if (data.password !== data.confirmPassword) { return ctx.addIssue({ code: z.ZodIssueCode.custom, path: ["confirmPassword"], message: "Passwords do not match" }) } return true }) export default function Register() { const [form, fields] = useForm({ id: "register", constraint: getZodConstraint(RegisterSchema), onValidate({ formData }) { return parseWithZod(formData, { schema: RegisterSchema }) } }) return (