This commit is contained in:
Your Name committed 2026-10-04 19:56:23 +07:00
1 parent e349ef5b84
commit 8d415ecef7
14 files changed
+372 -119

No files matched your search

+26
View File
@@ -617,6 +617,24 @@ export const DesktopContentPositionSchema = (fallback: ContentPosition) =>
.optional()
.transform((val) => (val ? (val as ContentPosition) : fallback));
export const ContentWidthSchema = z.enum(['full', 'standard', 'compact']);
export type ContentWidth = z.infer<typeof ContentWidthSchema>;
export const DefaultContentWidthSchema = (fallback: ContentWidth = 'standard') =>
z
.union([ContentWidthSchema, z.literal(''), z.null()])
.optional()
.transform((val) => (val ? (val as ContentWidth) : fallback));
export const TextColorSchemeSchema = z.enum(['light', 'dark']);
export type TextColorScheme = z.infer<typeof TextColorSchemeSchema>;
export const DefaultTextColorSchemeSchema = (fallback: TextColorScheme = 'light') =>
z
.union([TextColorSchemeSchema, z.literal(''), z.null()])
.optional()
.transform((val) => (val ? (val as TextColorScheme) : fallback));
export const HeroSectionPayloadSchema = z.object({
tagline: LocalizedStringSchema.optional(),
title: LocalizedStringSchema.optional(),
@@ -627,6 +645,8 @@ export const HeroSectionPayloadSchema = z.object({
focalPoint: z.object({ x: z.string(), y: z.string() }).optional(),
buttonPosition: DesktopContentPositionSchema('center'),
mobileButtonPosition: OptionalContentPositionSchema,
contentWidth: DefaultContentWidthSchema('standard'),
textColorScheme: DefaultTextColorSchemeSchema('light'),
overlayStyle: z.enum(['gradient', 'solid', 'none']).optional().default('gradient'),
overlayOpacity: z.number().min(0).max(100).optional(),
});
@@ -661,6 +681,8 @@ export const BannerSectionPayloadSchema = z.object({
focalPoint: z.object({ x: z.string(), y: z.string() }).optional(),
buttonPosition: DesktopContentPositionSchema('center-left'),
mobileButtonPosition: OptionalContentPositionSchema,
contentWidth: DefaultContentWidthSchema('standard'),
textColorScheme: DefaultTextColorSchemeSchema('light'),
});
export type BannerSectionPayload = z.infer<typeof BannerSectionPayloadSchema>;
@@ -739,6 +761,8 @@ export const HeroVideoSectionPayloadSchema = z.object({
focalPoint: z.object({ x: z.string(), y: z.string() }).optional(),
buttonPosition: DesktopContentPositionSchema('center'),
mobileButtonPosition: OptionalContentPositionSchema,
contentWidth: DefaultContentWidthSchema('standard'),
textColorScheme: DefaultTextColorSchemeSchema('light'),
});
export type HeroVideoSectionPayload = z.infer<typeof HeroVideoSectionPayloadSchema>;
@@ -770,6 +794,8 @@ export const HeroCarouselSlideSchema = z.object({
focalPoint: z.object({ x: z.string(), y: z.string() }).optional(),
buttonPosition: DesktopContentPositionSchema('bottom-left'),
mobileButtonPosition: OptionalContentPositionSchema,
contentWidth: DefaultContentWidthSchema('standard'),
textColorScheme: DefaultTextColorSchemeSchema('light'),
});
export type HeroCarouselSlide = z.infer<typeof HeroCarouselSlideSchema>;