// One schema, two consumers: the browser validates the invite form against // the descriptor emitted from this file, and /api/invite parses the same // schema server-side. Keeping a single definition is the point — a rule added // here tightens both sides at once, and the client can never drift into // accepting something the server rejects. import { v } from "@wrnexus/validation"; export default v.object({ email: v.string().trim().email("Enter a valid email address"), message: v.string().trim().max(140, "Keep the note under 140 characters").optional(), });