x
This commit is contained in:
1 parent
235cf6047d
commit
88feee666f
7 files changed
+1309
-2
No files matched your search
+72
-1
@@ -802,6 +802,64 @@ export const CustomSectionPayloadSchema = z.object({
|
||||
}).strict();
|
||||
export type CustomSectionPayload = z.infer<typeof CustomSectionPayloadSchema>;
|
||||
|
||||
export const HeroMinimalSectionPayloadSchema = z.object({
|
||||
imageUrl: z.string().min(1),
|
||||
tagline: LocalizedStringSchema.optional(),
|
||||
title: LocalizedStringSchema,
|
||||
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),
|
||||
});
|
||||
export type HeroMinimalSectionPayload = z.infer<typeof HeroMinimalSectionPayloadSchema>;
|
||||
|
||||
export const HeroSplitMinimalSectionPayloadSchema = z.object({
|
||||
imageUrl: z.string().min(1),
|
||||
title: LocalizedStringSchema,
|
||||
subtitle: LocalizedStringSchema.optional(),
|
||||
imagePosition: z.enum(['left', 'right']).optional().default('right'),
|
||||
focalPoint: z.object({ x: z.string(), y: z.string() }).optional(),
|
||||
backgroundColor: z.string().optional(),
|
||||
});
|
||||
export type HeroSplitMinimalSectionPayload = z.infer<typeof HeroSplitMinimalSectionPayloadSchema>;
|
||||
|
||||
export const HeroVideoMinimalSectionPayloadSchema = z.object({
|
||||
videoUrl: z.string().min(1),
|
||||
posterImageUrl: z.string().optional(),
|
||||
tagline: LocalizedStringSchema.optional(),
|
||||
title: LocalizedStringSchema.optional(),
|
||||
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(),
|
||||
});
|
||||
export type HeroVideoMinimalSectionPayload = z.infer<typeof HeroVideoMinimalSectionPayloadSchema>;
|
||||
|
||||
export const BannerMinimalSectionPayloadSchema = z.object({
|
||||
title: LocalizedStringSchema,
|
||||
subtitle: LocalizedStringSchema.optional(),
|
||||
imageUrl: z.string().optional(),
|
||||
linkUrl: z.string().optional(),
|
||||
backgroundColor: z.string().optional(),
|
||||
textColor: z.string().optional(),
|
||||
focalPoint: z.object({ x: z.string(), y: z.string() }).optional(),
|
||||
});
|
||||
export type BannerMinimalSectionPayload = z.infer<typeof BannerMinimalSectionPayloadSchema>;
|
||||
|
||||
export const AnnouncementBarMinimalSectionPayloadSchema = z.object({
|
||||
slides: z.array(LocalizedStringSchema).min(1),
|
||||
backgroundColor: z.string().optional(),
|
||||
textColor: z.string().optional(),
|
||||
speed: z.number().optional().default(4000),
|
||||
});
|
||||
export type AnnouncementBarMinimalSectionPayload = z.infer<typeof AnnouncementBarMinimalSectionPayloadSchema>;
|
||||
|
||||
export const UspMinimalSectionPayloadSchema = z.object({
|
||||
items: z.array(LocalizedStringSchema).min(1),
|
||||
separator: z.enum(['dot', 'slash', 'line']).optional().default('dot'),
|
||||
backgroundColor: z.string().optional(),
|
||||
textColor: z.string().optional(),
|
||||
});
|
||||
export type UspMinimalSectionPayload = z.infer<typeof UspMinimalSectionPayloadSchema>;
|
||||
|
||||
export const PAGE_SECTION_TYPES = [
|
||||
'HERO', 'HERO_V2', 'HERO_VIDEO', 'ANNOUNCEMENT_BAR', 'NEWSLETTER', 'EDITORIAL_TILE', 'FEATURED_TILES',
|
||||
'EDITORIAL_CAROUSEL', 'PRODUCTS', 'CATEGORIES', 'TEXT', 'BANNER',
|
||||
@@ -810,7 +868,8 @@ export const PAGE_SECTION_TYPES = [
|
||||
'ARTICLE_CTA', 'SCENT_NOTES_BREAKDOWN', 'QUOTE_CALLOUT',
|
||||
'PRODUCT_CAROUSEL', 'ACCORDION', 'CONTACT_INFO', 'CONTACT_FORM',
|
||||
'USP_BAR', 'PRODUCT_MAIN', 'PRODUCT_DETAILS', 'PRODUCT_SPECS',
|
||||
'PRODUCT_REVIEWS', 'RELATED_PRODUCTS', 'CUSTOM'
|
||||
'PRODUCT_REVIEWS', 'RELATED_PRODUCTS', 'CUSTOM',
|
||||
'HERO_MINIMAL', 'HERO_SPLIT_MINIMAL', 'HERO_VIDEO_MINIMAL', 'BANNER_MINIMAL', 'ANNOUNCEMENT_BAR_MINIMAL', 'USP_MINIMAL'
|
||||
] as const;
|
||||
export type SectionType = typeof PAGE_SECTION_TYPES[number];
|
||||
|
||||
@@ -851,6 +910,12 @@ export const PAGE_SECTION_LOCALIZED_PATHS: Record<SectionType, readonly string[]
|
||||
PRODUCT_REVIEWS: ['title', 'subtitle'],
|
||||
RELATED_PRODUCTS: ['title', 'subtitle'],
|
||||
CUSTOM: [],
|
||||
HERO_MINIMAL: ['tagline', 'title'],
|
||||
HERO_SPLIT_MINIMAL: ['title', 'subtitle'],
|
||||
HERO_VIDEO_MINIMAL: ['tagline', 'title'],
|
||||
BANNER_MINIMAL: ['title', 'subtitle'],
|
||||
ANNOUNCEMENT_BAR_MINIMAL: ['slides[]'],
|
||||
USP_MINIMAL: ['items[]'],
|
||||
};
|
||||
|
||||
export const PAGE_SECTION_PAYLOAD_SCHEMAS: Record<SectionType, z.ZodType> = {
|
||||
@@ -890,6 +955,12 @@ export const PAGE_SECTION_PAYLOAD_SCHEMAS: Record<SectionType, z.ZodType> = {
|
||||
PRODUCT_REVIEWS: ProductLayoutSectionPayloadSchema,
|
||||
RELATED_PRODUCTS: ProductLayoutSectionPayloadSchema,
|
||||
CUSTOM: CustomSectionPayloadSchema,
|
||||
HERO_MINIMAL: HeroMinimalSectionPayloadSchema,
|
||||
HERO_SPLIT_MINIMAL: HeroSplitMinimalSectionPayloadSchema,
|
||||
HERO_VIDEO_MINIMAL: HeroVideoMinimalSectionPayloadSchema,
|
||||
BANNER_MINIMAL: BannerMinimalSectionPayloadSchema,
|
||||
ANNOUNCEMENT_BAR_MINIMAL: AnnouncementBarMinimalSectionPayloadSchema,
|
||||
USP_MINIMAL: UspMinimalSectionPayloadSchema,
|
||||
};
|
||||
|
||||
export const PRODUCT_DETAIL_SECTION_TYPES = [
|
||||
|
||||
Reference in new issue
Block a user