mirror of
https://github.com/jakejarvis/jarv.is.git
synced 2026-06-05 19:15:30 -04:00
Enhance contact form with client-side validation and error handling. Import validation schema from shared module and improve user experience by tracking input touch state for error display.
This commit is contained in:
+2
-10
@@ -2,19 +2,11 @@
|
||||
|
||||
import { env } from "@/lib/env";
|
||||
import { Resend } from "resend";
|
||||
import { z } from "zod";
|
||||
import { ContactSchema } from "@/lib/validation/contact";
|
||||
import siteConfig from "@/lib/config/site";
|
||||
import { checkBotId } from "botid/server";
|
||||
|
||||
const ContactSchema = z
|
||||
.object({
|
||||
name: z.string().trim().min(1, { message: "Your name is required." }),
|
||||
email: z.string().email({ message: "Your email address is required." }),
|
||||
message: z.string().trim().min(15, { message: "Your message must be at least 15 characters." }),
|
||||
})
|
||||
.readonly();
|
||||
|
||||
export type ContactInput = z.infer<typeof ContactSchema>;
|
||||
// Schema and type now imported from shared validation module
|
||||
|
||||
export type ContactState = {
|
||||
success: boolean;
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
import { z } from "zod";
|
||||
|
||||
export const ContactSchema = z
|
||||
.object({
|
||||
name: z.string().trim().min(1, { message: "Your name is required." }),
|
||||
email: z.string().email({ message: "Your email address is required." }),
|
||||
message: z.string().trim().min(15, { message: "Your message must be at least 15 characters." }),
|
||||
})
|
||||
.readonly();
|
||||
|
||||
export type ContactInput = z.infer<typeof ContactSchema>;
|
||||
Reference in New Issue
Block a user