File size: 602 Bytes
064bfd6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import { z } from 'zod/v4'
import { lazySchema } from '../lazySchema.js'
const TodoStatusSchema = lazySchema(() =>
z.enum(['pending', 'in_progress', 'completed']),
)
export const TodoItemSchema = lazySchema(() =>
z.object({
content: z.string().min(1, 'Content cannot be empty'),
status: TodoStatusSchema(),
activeForm: z.string().min(1, 'Active form cannot be empty'),
}),
)
export type TodoItem = z.infer<ReturnType<typeof TodoItemSchema>>
export const TodoListSchema = lazySchema(() => z.array(TodoItemSchema()))
export type TodoList = z.infer<ReturnType<typeof TodoListSchema>>
|