38 lines
828 B
TypeScript
38 lines
828 B
TypeScript
|
|
import { z } from 'zod';
|
||
|
|
|
||
|
|
const COLOR_SCHEMA = z
|
||
|
|
.string()
|
||
|
|
.regex(/^#[0-9a-fA-F]{6}$/)
|
||
|
|
.nullable()
|
||
|
|
.optional();
|
||
|
|
|
||
|
|
const FONT_FAMILY_SCHEMA = z
|
||
|
|
.enum([
|
||
|
|
'MODERN_SANS',
|
||
|
|
'BOOK_SANS',
|
||
|
|
'ORGANIC_SANS',
|
||
|
|
'GEOMETRIC_SANS',
|
||
|
|
'HEAVY_SANS',
|
||
|
|
'ROUNDED_SANS',
|
||
|
|
'MODERN_SERIF',
|
||
|
|
'BOOK_SERIF',
|
||
|
|
'MONOSPACE',
|
||
|
|
])
|
||
|
|
.nullable()
|
||
|
|
.optional();
|
||
|
|
|
||
|
|
const EmailLayoutPropsSchema = z.object({
|
||
|
|
backdropColor: COLOR_SCHEMA,
|
||
|
|
borderColor: COLOR_SCHEMA,
|
||
|
|
borderRadius: z.number().optional().nullable(),
|
||
|
|
canvasColor: COLOR_SCHEMA,
|
||
|
|
textColor: COLOR_SCHEMA,
|
||
|
|
fontFamily: FONT_FAMILY_SCHEMA,
|
||
|
|
childrenIds: z.array(z.string()).optional().nullable(),
|
||
|
|
outlook: z.boolean().optional().nullable(),
|
||
|
|
});
|
||
|
|
|
||
|
|
export default EmailLayoutPropsSchema;
|
||
|
|
|
||
|
|
export type EmailLayoutProps = z.infer<typeof EmailLayoutPropsSchema>;
|