import { Type } from "@earendil-works/pi-ai"; export const StylePresetSchema = Type.Optional(Type.Union([ Type.Literal("editorial"), Type.Literal("business"), Type.Literal("formal"), ])); export const StyleSchema = Type.Optional(Type.Object({ chineseBodyFont: Type.Optional(Type.String({ description: "Chinese body font, such as SimSun or Microsoft YaHei" })), latinBodyFont: Type.Optional(Type.String({ description: "Latin body font, such as Calibri or Times New Roman" })), headingFont: Type.Optional(Type.String({ description: "Heading font" })), bodySize: Type.Optional(Type.Number({ minimum: 8, maximum: 24 })), titleSize: Type.Optional(Type.Number({ minimum: 12, maximum: 48 })), heading1Size: Type.Optional(Type.Number({ minimum: 10, maximum: 40 })), heading2Size: Type.Optional(Type.Number({ minimum: 9, maximum: 32 })), heading3Size: Type.Optional(Type.Number({ minimum: 8, maximum: 28 })), lineSpacing: Type.Optional(Type.Number({ minimum: 1, maximum: 3, description: "Line spacing multiplier" })), firstLineIndent: Type.Optional(Type.Number({ minimum: 0, maximum: 4, description: "First-line indent in centimetres" })), margins: Type.Optional(Type.Object({ top: Type.Optional(Type.Number({ minimum: 0.5, maximum: 5 })), bottom: Type.Optional(Type.Number({ minimum: 0.5, maximum: 5 })), left: Type.Optional(Type.Number({ minimum: 0.5, maximum: 5 })), right: Type.Optional(Type.Number({ minimum: 0.5, maximum: 5 })), }, { additionalProperties: false })), accentColor: Type.Optional(Type.String({ pattern: "^[0-9A-Fa-f]{6}$", description: "Six-digit hex colour without #" })), headerFooter: Type.Optional(Type.Boolean()), }, { additionalProperties: false }));