19 lines
602 B
TypeScript
19 lines
602 B
TypeScript
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>>
|