Files
Checkmate/client/src/Validation/statusPage.ts
T
2026-02-02 23:57:14 +00:00

34 lines
883 B
TypeScript

import { z } from "zod";
export const statusPageSchema = z.object({
companyName: z
.string()
.min(1, "Company name is required")
.max(100, "Company name must be at most 100 characters"),
url: z
.string()
.min(1, "URL is required")
.max(50, "URL must be at most 50 characters")
.regex(
/^[a-z0-9-]+$/,
"URL can only contain lowercase letters, numbers, and hyphens"
),
timezone: z.string().optional(),
color: z.string().min(1, "Color is required"),
monitors: z.array(z.string()).min(1, "At least one monitor is required"),
isPublished: z.boolean(),
showCharts: z.boolean(),
showUptimePercentage: z.boolean(),
showAdminLoginLink: z.boolean(),
customCSS: z.string().optional(),
logo: z
.object({
data: z.string(),
contentType: z.string(),
})
.nullable()
.optional(),
});
export type StatusPageFormData = z.infer<typeof statusPageSchema>;