import { z } from "zod"; /** Required, trimmed text */ export const req = (max = 300) => z.string().trim().min(1, "این فیلد الزامی است").max(max); /** Optional, trimmed text (empty string when missing) */ export const text = (max = 300) => z.string().trim().max(max).default(""); export const idSchema = z.coerce.number().int().positive(); export const slugSchema = z .string() .trim() .min(1, "این فیلد الزامی است") .max(80) .regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/, "فقط حروف کوچک انگلیسی، عدد و خط تیره (مثلاً safety-shoes)"); export const iconNameSchema = z.string().trim().min(1).max(80); /** Image stored by URL inside section content */ export const imageRefSchema = z.object({ url: req(500), alt: text(200), }); export const linkSchema = z.object({ label: req(60), href: req(300), }); export const toIssues = (error) => error.issues.map((i) => ({ path: i.path.map(String).join("."), message: i.message })); /** Convert latin digits to Persian digits */ export const faNum = (v) => String(v).replace(/\d/g, (d) => "۰۱۲۳۴۵۶۷۸۹"[Number(d)]); //# sourceMappingURL=common.js.map