| 1234567891011121314151617181920212223242526 |
- import { z } from "zod";
- export const contactSchema = z.object({
- name: z.string().min(2).max(80).transform((v) => v.replace(/[\r\n]+/g, " ").trim()),
- email: z.string().email().max(254),
- topic: z.enum(["general", "honey-bees", "personal-training", "sourdough", "farm-to-table", "recreation-apps", "laser-engraving", "3d-printing"]).default("general"),
- message: z.string().min(10).max(5000),
- phone: z.string().optional().default(""),
- });
- export const contactBodySchema = contactSchema.extend({
- website: z.string().optional().default(""),
- company: z.string().optional().default(""),
- });
- export type ContactInput = z.infer<typeof contactSchema>;
- export type ContactBody = z.infer<typeof contactBodySchema>;
- export function isHoneypotTriggered(body: { website?: string; company?: string }): boolean {
- const filled = (v?: string) => typeof v === "string" && v.trim().length > 0;
- return filled(body.website) || filled(body.company);
- }
- export function sanitizeHeaderValue(value: string): string {
- return value.replace(/[\r\n]+/g, " ").trim().slice(0, 200);
- }
|