58 lines
2.2 KiB
TypeScript
58 lines
2.2 KiB
TypeScript
import { z } from "zod"
|
|
|
|
export const pageStatusSchema = z.enum(["draft", "published"])
|
|
|
|
export const createPageInputSchema = z.object({
|
|
title: z.string().min(1).max(180),
|
|
slug: z.string().min(1).max(180),
|
|
status: pageStatusSchema.default("draft"),
|
|
summary: z.string().max(500).nullable().optional(),
|
|
content: z.string().min(1),
|
|
seoTitle: z.string().max(180).nullable().optional(),
|
|
seoDescription: z.string().max(320).nullable().optional(),
|
|
})
|
|
|
|
export const updatePageInputSchema = z.object({
|
|
id: z.string().uuid(),
|
|
title: z.string().min(1).max(180).optional(),
|
|
slug: z.string().min(1).max(180).optional(),
|
|
status: pageStatusSchema.optional(),
|
|
summary: z.string().max(500).nullable().optional(),
|
|
content: z.string().min(1).optional(),
|
|
seoTitle: z.string().max(180).nullable().optional(),
|
|
seoDescription: z.string().max(320).nullable().optional(),
|
|
})
|
|
|
|
export const createNavigationMenuInputSchema = z.object({
|
|
name: z.string().min(1).max(180),
|
|
slug: z.string().min(1).max(180),
|
|
location: z.string().min(1).max(80).default("primary"),
|
|
isVisible: z.boolean().default(true),
|
|
})
|
|
|
|
export const createNavigationItemInputSchema = z.object({
|
|
menuId: z.string().uuid(),
|
|
label: z.string().min(1).max(180),
|
|
href: z.string().max(500).nullable().optional(),
|
|
pageId: z.string().uuid().nullable().optional(),
|
|
parentId: z.string().uuid().nullable().optional(),
|
|
sortOrder: z.number().int().min(0).default(0),
|
|
isVisible: z.boolean().default(true),
|
|
})
|
|
|
|
export const updateNavigationItemInputSchema = z.object({
|
|
id: z.string().uuid(),
|
|
label: z.string().min(1).max(180).optional(),
|
|
href: z.string().max(500).nullable().optional(),
|
|
pageId: z.string().uuid().nullable().optional(),
|
|
parentId: z.string().uuid().nullable().optional(),
|
|
sortOrder: z.number().int().min(0).optional(),
|
|
isVisible: z.boolean().optional(),
|
|
})
|
|
|
|
export type CreatePageInput = z.infer<typeof createPageInputSchema>
|
|
export type UpdatePageInput = z.infer<typeof updatePageInputSchema>
|
|
export type CreateNavigationMenuInput = z.infer<typeof createNavigationMenuInputSchema>
|
|
export type CreateNavigationItemInput = z.infer<typeof createNavigationItemInputSchema>
|
|
export type UpdateNavigationItemInput = z.infer<typeof updateNavigationItemInputSchema>
|