52 lines
1.2 KiB
TypeScript
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>
|