x
This commit is contained in:
1 parent
913cbef765
commit
173c583787
22 files changed
+2847
-364
No files matched your search
+46
-1
@@ -300,6 +300,18 @@ export interface PageSection {
|
||||
updatedAt?: string
|
||||
}
|
||||
|
||||
export interface ProductDetailSection {
|
||||
id: number
|
||||
productId: number
|
||||
type: string
|
||||
order: number
|
||||
payload: any
|
||||
isActive: boolean
|
||||
isLocked: boolean
|
||||
createdAt?: string
|
||||
updatedAt?: string
|
||||
}
|
||||
|
||||
export const LocalizedStringSchema = z.union([z.string(), z.record(z.string(), z.string())]);
|
||||
|
||||
export const HeroSectionPayloadSchema = z.object({
|
||||
@@ -463,6 +475,20 @@ export const ProductCarouselSectionPayloadSchema = z.object({
|
||||
}).strict();
|
||||
export type ProductCarouselSectionPayload = z.infer<typeof ProductCarouselSectionPayloadSchema>;
|
||||
|
||||
export const ProductLayoutSectionPayloadSchema = z.object({
|
||||
title: LocalizedStringSchema.optional(),
|
||||
subtitle: LocalizedStringSchema.optional(),
|
||||
showHeading: z.boolean().optional(),
|
||||
showViewAllLink: z.boolean().optional(),
|
||||
layoutMode: z.enum(['standard', 'sticky_gallery']).optional(),
|
||||
galleryBehavior: z.enum(['carousel', 'stacked']).optional(),
|
||||
purchaseCardSticky: z.boolean().optional(),
|
||||
showStickyPurchaseBarAfterMain: z.boolean().optional(),
|
||||
showBreadcrumbs: z.boolean().optional(),
|
||||
showBrandMeta: z.boolean().optional(),
|
||||
}).strict();
|
||||
export type ProductLayoutSectionPayload = z.infer<typeof ProductLayoutSectionPayloadSchema>;
|
||||
|
||||
// Aliases for backwards compatibility in ScentGuideSectionSchema
|
||||
export const HeroArticlePayloadSchema = HeroArticleSectionPayloadSchema;
|
||||
export type HeroArticlePayload = HeroArticleSectionPayload;
|
||||
@@ -598,6 +624,25 @@ export const PAGE_SECTION_TYPES = [
|
||||
'EDITORIAL_CAROUSEL', 'PRODUCTS', 'CATEGORIES', 'TEXT', 'BANNER',
|
||||
'HERO_ARTICLE', 'RICH_TEXT', 'SCENT_NOTES_BREAKDOWN', 'QUOTE_CALLOUT',
|
||||
'PRODUCT_CAROUSEL', 'ACCORDION', 'CONTACT_INFO', 'CONTACT_FORM',
|
||||
'HERO_V2', 'USP_BAR', 'CUSTOM'
|
||||
'HERO_V2', 'USP_BAR', 'PRODUCT_MAIN', 'PRODUCT_DETAILS', 'PRODUCT_SPECS',
|
||||
'PRODUCT_REVIEWS', 'RELATED_PRODUCTS', 'CUSTOM'
|
||||
] as const;
|
||||
export type SectionType = typeof PAGE_SECTION_TYPES[number];
|
||||
|
||||
export const PRODUCT_DETAIL_SECTION_TYPES = [
|
||||
'PRODUCT_MAIN',
|
||||
'HERO',
|
||||
'HERO_V2',
|
||||
'PRODUCT_DETAILS',
|
||||
'PRODUCT_SPECS',
|
||||
'PRODUCT_REVIEWS',
|
||||
'RELATED_PRODUCTS',
|
||||
'RICH_TEXT',
|
||||
'TEXT',
|
||||
'BANNER',
|
||||
'PRODUCT_CAROUSEL',
|
||||
'EDITORIAL_TILE',
|
||||
'QUOTE_CALLOUT',
|
||||
'CUSTOM',
|
||||
] as const;
|
||||
export type ProductDetailSectionType = typeof PRODUCT_DETAIL_SECTION_TYPES[number];
|
||||
Reference in new issue
Block a user