Files
fabrikanabytok/apps/fabrikanabytok/lib/schemas/worktop.schemas.ts
2025-11-28 20:47:40 +01:00

64 lines
2.0 KiB
TypeScript

import { z } from "zod"
export const worktopFormSchema = z.object({
code: z.string().min(1, "Kód megadása kötelező"),
name: z.string().min(1, "Név megadása kötelező"),
description: z.string().optional(),
material: z.enum([
"laminate",
"stone",
"quartz",
"granite",
"marble",
"wood",
"solid_surface",
"stainless_steel",
"ceramic",
"composite",
]),
materialBrand: z.string().optional(),
materialSeries: z.string().optional(),
colorCode: z.string().optional(),
colorName: z.string().min(1, "Szín név kötelező"),
finish: z.enum(["matte", "glossy", "textured", "brushed", "polished"]),
texture: z.string().optional(),
pricePerMeter: z.number().min(0, "Ár nem lehet negatív"),
pricePerPiece: z.number().min(0).optional(),
currency: z.string().default("HUF"),
maxLength: z.number().min(0).default(0),
maxWidth: z.number().min(0).default(0),
weight: z.number().min(0).default(0),
inStock: z.boolean().default(true),
stockQuantity: z.number().min(0).default(0),
stockUnit: z.enum(["m²", "piece"]).default("m²"),
leadTimeDays: z.number().min(0).default(0),
isHeatResistant: z.boolean().default(false),
maxHeatTemp: z.number().optional(),
isWaterproof: z.boolean().default(false),
isStainResistant: z.boolean().default(false),
isScratchResistant: z.boolean().default(false),
requiresProfessionalInstallation: z.boolean().default(false),
installationDifficulty: z.enum(["easy", "medium", "hard"]).default("medium"),
status: z.enum(["active", "inactive", "discontinued", "coming_soon"]).default("active"),
supplierName: z.string().optional(),
supplierCode: z.string().optional(),
supplierPrice: z.number().min(0).optional(),
imageUrl: z.string().url().optional().or(z.literal("")),
thumbnailUrl: z.string().url().optional().or(z.literal("")),
colorSwatchUrl: z.string().url().optional().or(z.literal("")),
})
export type WorktopFormData = z.infer<typeof worktopFormSchema>