1
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:
2025-09-02 18:39:54 -04:00
parent a05357bc90
commit 6a0ff897da
5 changed files with 311 additions and 289 deletions
+2 -10
View File
@@ -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;
+11
View File
@@ -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>;