This commit is contained in:
Your Name committed 2026-10-10 06:15:48 +07:00
1 parent dba82b26a8
commit 943fd8f1a3
16 files changed
+257 -20

No files matched your search

+18
View File
@@ -652,6 +652,15 @@ export const DefaultTextColorSchemeSchema = (fallback: TextColorScheme = 'light'
.optional()
.transform((val) => (val ? (val as TextColorScheme) : fallback));
export const TitleSizeSchema = z.enum(['sm', 'md', 'lg', 'xl']);
export type TitleSize = z.infer<typeof TitleSizeSchema>;
export const DefaultTitleSizeSchema = (fallback: TitleSize = 'xl') =>
z
.union([TitleSizeSchema, z.literal(''), z.null()])
.optional()
.transform((val) => (val ? (val as TitleSize) : fallback));
export const SectionPaddingLevelSchema = z.enum(['none', 'compact', 'normal', 'spacious']);
export type SectionPaddingLevel = z.infer<typeof SectionPaddingLevelSchema>;
@@ -674,6 +683,7 @@ export const HeroSectionPayloadSchema = z.object({
mobileButtonPosition: OptionalContentPositionSchema,
contentWidth: DefaultContentWidthSchema('standard'),
textColorScheme: DefaultTextColorSchemeSchema('light'),
titleSize: DefaultTitleSizeSchema('xl'),
overlayStyle: z.enum(['gradient', 'solid', 'none']).optional().default('gradient'),
overlayOpacity: z.number().min(0).max(100).optional(),
});
@@ -712,6 +722,7 @@ export const BannerSectionPayloadSchema = z.object({
mobileButtonPosition: OptionalContentPositionSchema,
contentWidth: DefaultContentWidthSchema('standard'),
textColorScheme: DefaultTextColorSchemeSchema('light'),
titleSize: DefaultTitleSizeSchema('xl'),
});
export type BannerSectionPayload = z.infer<typeof BannerSectionPayloadSchema>;
@@ -803,6 +814,7 @@ export const HeroVideoSectionPayloadSchema = z.object({
mobileButtonPosition: OptionalContentPositionSchema,
contentWidth: DefaultContentWidthSchema('standard'),
textColorScheme: DefaultTextColorSchemeSchema('light'),
titleSize: DefaultTitleSizeSchema('xl'),
});
export type HeroVideoSectionPayload = z.infer<typeof HeroVideoSectionPayloadSchema>;
@@ -836,6 +848,7 @@ export const HeroCarouselSlideSchema = z.object({
mobileButtonPosition: OptionalContentPositionSchema,
contentWidth: DefaultContentWidthSchema('standard'),
textColorScheme: DefaultTextColorSchemeSchema('light'),
titleSize: DefaultTitleSizeSchema('xl'),
});
export type HeroCarouselSlide = z.infer<typeof HeroCarouselSlideSchema>;
@@ -889,6 +902,7 @@ export const HeroArticleSectionPayloadSchema = z.object({
imageUrl: z.string().optional(),
backgroundImageUrl: z.string().optional(),
overlayColor: z.string().optional(),
titleSize: DefaultTitleSizeSchema('xl'),
});
export type HeroArticleSectionPayload = z.infer<typeof HeroArticleSectionPayloadSchema>;
@@ -1189,6 +1203,7 @@ export const HeroV2SectionPayloadSchema = z.object({
secondaryButtonText: LocalizedStringSchema.optional(),
secondaryButtonLink: z.string().optional(),
focalPoint: z.object({ x: z.string(), y: z.string() }).optional(),
titleSize: DefaultTitleSizeSchema('lg'),
});
export type HeroV2SectionPayload = z.infer<typeof HeroV2SectionPayloadSchema>;
@@ -1215,6 +1230,7 @@ export const HeroMinimalSectionPayloadSchema = z.object({
focalPoint: z.object({ x: z.string(), y: z.string() }).optional(),
contentAlignment: z.enum(['left', 'center', 'right']).optional().default('center'),
overlayOpacity: z.number().optional().default(20),
titleSize: DefaultTitleSizeSchema('lg'),
});
export type HeroMinimalSectionPayload = z.infer<typeof HeroMinimalSectionPayloadSchema>;
@@ -1225,6 +1241,7 @@ export const HeroSplitMinimalSectionPayloadSchema = z.object({
imagePosition: z.enum(['left', 'right']).optional().default('right'),
focalPoint: z.object({ x: z.string(), y: z.string() }).optional(),
backgroundColor: z.string().optional(),
titleSize: DefaultTitleSizeSchema('lg'),
});
export type HeroSplitMinimalSectionPayload = z.infer<typeof HeroSplitMinimalSectionPayloadSchema>;
@@ -1236,6 +1253,7 @@ export const HeroVideoMinimalSectionPayloadSchema = z.object({
overlayOpacity: z.number().optional().default(25),
height: z.enum(['full', 'large', 'medium']).optional().default('large'),
focalPoint: z.object({ x: z.string(), y: z.string() }).optional(),
titleSize: DefaultTitleSizeSchema('lg'),
});
export type HeroVideoMinimalSectionPayload = z.infer<typeof HeroVideoMinimalSectionPayloadSchema>;