Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | 1x | import { z } from 'zod'
export const eventSettingsSchema = z.object({
// General
name: z.string().min(1),
goalAmount: z.coerce.number().min(1),
slug: z.string().min(1),
status: z.enum(['active', 'draft', 'closed']),
date: z.string().optional(),
description: z.string().optional(),
formConfig: z.object({
phone: z.object({
enabled: z.boolean(),
required: z.boolean().default(false),
}),
address: z.object({
enabled: z.boolean(),
required: z.boolean().default(false),
}),
company: z.object({
enabled: z.boolean(),
required: z.boolean().default(false),
}),
message: z.object({
enabled: z.boolean(),
required: z.boolean().default(false),
}),
anonymous: z.object({
enabled: z.boolean(),
required: z.boolean().default(false),
}),
}),
live: z
.object({
theme: z.enum(['classic', 'modern', 'elegant']).default('classic'),
})
.optional(),
// Branding Overrides
useGlobalBranding: z.boolean(),
organization: z.string().optional(),
assets: z
.object({
logo: z.string().optional().or(z.literal('')).or(z.null()),
backgroundLanding: z.string().optional().or(z.literal('')).or(z.null()),
backgroundLive: z.string().optional().or(z.literal('')).or(z.null()),
})
.optional(),
landing: z
.object({
impact: z.object({
url: z.string().optional().or(z.literal('')).or(z.null()),
enabled: z.boolean().default(true),
}),
community: z.object({
url: z.string().optional().or(z.literal('')).or(z.null()),
enabled: z.boolean().default(true),
}),
interactive: z.object({
url: z.string().optional().or(z.literal('')).or(z.null()),
enabled: z.boolean().default(true),
}),
})
.optional(),
themeVariables: z
.array(
z.object({
key: z.string(),
value: z.string(),
}),
)
.optional(),
communication: z
.object({
enabled: z.boolean().default(false),
senderName: z.string().optional(),
replyTo: z.string().email().optional().or(z.literal('')),
subjectLine: z.string().optional(),
supportEmail: z.string().email().optional().or(z.literal('')),
phone: z.string().optional(),
website: z.string().url().optional().or(z.literal('')),
address: z.string().optional(),
})
.optional(),
})
export type EventSettingsFormValues = z.infer<typeof eventSettingsSchema>
|