Files
web/apps/scandic-web/components/HotelReservation/FindMyBooking/schema.ts

52 lines
1.2 KiB
TypeScript

import { defineMessage } from "react-intl"
import { z } from "zod"
export {
type AdditionalInfoFormSchema,
additionalInfoFormSchema,
type FindMyBookingFormSchema,
findMyBookingFormSchema,
}
defineMessage({
id: "Invalid booking number",
})
defineMessage({
id: "Booking number is required",
})
defineMessage({
id: "First name is required",
})
defineMessage({
id: "Last name is required",
})
defineMessage({
id: "Email address is required",
})
const additionalInfoFormSchema = z.object({
firstName: z.string().trim().max(250).min(1, {
message: "First name is required",
}),
email: z.string().max(250).email({ message: "Email address is required" }),
})
const findMyBookingFormSchema = additionalInfoFormSchema.extend({
confirmationNumber: z
.string()
.trim()
.regex(/^[0-9]+(-[0-9])?$/, {
message: "Invalid booking number",
})
.min(1, {
message: "Booking number is required",
}),
lastName: z.string().trim().max(250).min(1, {
message: "Last name is required",
}),
})
type AdditionalInfoFormSchema = z.output<typeof additionalInfoFormSchema>
type FindMyBookingFormSchema = z.output<typeof findMyBookingFormSchema>