This commit is contained in:
Your Name committed 2026-07-19 06:37:42 -04:00
1 parent 913cbef765
commit 173c583787
22 files changed
+2847 -364

No files matched your search

+46 -1
View File
@@ -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];