Ask organizer modal implemented
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
import { z } from "zod";
|
||||
import { ORGANIZER_INQUIRY_HONEYPOT_FIELD } from "../../organizerInquiryConstants";
|
||||
|
||||
const emailSchema = z
|
||||
.string()
|
||||
.trim()
|
||||
.min(1, "Email is required")
|
||||
.max(254)
|
||||
.transform((s) => s.toLowerCase())
|
||||
.pipe(z.string().email("Enter a valid email address"));
|
||||
|
||||
const messageSchema = z
|
||||
.string()
|
||||
.trim()
|
||||
.min(10, "Please enter at least 10 characters")
|
||||
.max(10_000, "Message is too long");
|
||||
|
||||
/** Optional honeypot; non-empty after trim indicates a bot. */
|
||||
const honeypotSchema = z
|
||||
.union([z.string(), z.undefined()])
|
||||
.optional()
|
||||
.transform((v) => (typeof v === "string" ? v.trim() : ""));
|
||||
|
||||
export const organizerInquiryBodySchema = z.object({
|
||||
email: emailSchema,
|
||||
message: messageSchema,
|
||||
[ORGANIZER_INQUIRY_HONEYPOT_FIELD]: honeypotSchema,
|
||||
});
|
||||
|
||||
export type OrganizerInquiryBody = z.infer<typeof organizerInquiryBodySchema>;
|
||||
Reference in New Issue
Block a user