← back to Designer Portfolio Pages
src/schemas.ts
30 lines
import { z } from "zod";
export const ContactSchema = z.object({
name: z.string().min(1).max(120),
business: z.string().max(160).optional().or(z.literal("")),
email: z.string().email(),
phone: z.string().max(40).optional().or(z.literal("")),
website: z.string().max(200).optional().or(z.literal(""))
});
export const PatternSnapshotSchema = z.object({
id: z.string().min(1).max(80),
name: z.string().min(1).max(200),
imageUrl: z.string().url(),
productUrl: z.string().url().optional(),
tags: z.array(z.string().max(40)).default([])
});
export type PatternSnapshot = z.infer<typeof PatternSnapshotSchema>;
export const CreatePortfolioSchema = z.object({
title: z.string().max(160).optional().or(z.literal("")),
contact: ContactSchema,
password: z.string().max(200).optional().or(z.literal("")),
patternIds: z.array(z.string().min(1)).min(1).max(80),
generateAiIntro: z.boolean().optional().default(false)
});
export type CreatePortfolioInput = z.infer<typeof CreatePortfolioSchema>;