x
This commit is contained in:
1 parent
fb776f778f
commit
8f64d89f6f
13 files changed
+779
-295
No files matched your search
+46
-30
@@ -271,6 +271,7 @@ export const ProductsSectionPayloadSchema = z.object({
|
||||
title: LocalizedStringSchema,
|
||||
subtitle: LocalizedStringSchema.optional(),
|
||||
type: z.enum(['featured', 'brand', 'custom']),
|
||||
categoryId: z.number().optional(),
|
||||
brandId: z.number().optional(),
|
||||
productIds: z.array(z.number()).optional(),
|
||||
limit: z.number().optional(),
|
||||
@@ -354,46 +355,59 @@ export interface CustomerAddress {
|
||||
}
|
||||
|
||||
|
||||
export const HeroArticlePayloadSchema = z.object({
|
||||
title: z.string().min(1, "Title is required"),
|
||||
subtitle: z.string().optional(),
|
||||
author: z.string().optional(),
|
||||
publishDate: z.string().optional(), // Or z.date() if preferred, but string works for ISO dates
|
||||
backgroundImageUrl: z.string().url("Must be a valid URL").optional(),
|
||||
export const HeroArticleSectionPayloadSchema = z.object({
|
||||
title: LocalizedStringSchema,
|
||||
subtitle: LocalizedStringSchema.optional(),
|
||||
author: LocalizedStringSchema.optional(),
|
||||
category: LocalizedStringSchema.optional(),
|
||||
publishDate: z.string().optional(),
|
||||
date: z.string().optional(),
|
||||
imageUrl: z.string().optional(),
|
||||
backgroundImageUrl: z.string().optional(),
|
||||
overlayColor: z.string().optional(),
|
||||
});
|
||||
export type HeroArticlePayload = z.infer<typeof HeroArticlePayloadSchema>;
|
||||
export type HeroArticleSectionPayload = z.infer<typeof HeroArticleSectionPayloadSchema>;
|
||||
|
||||
export const RichTextPayloadSchema = z.object({
|
||||
content: z.string().min(1, "Content is required"),
|
||||
export const RichTextSectionPayloadSchema = z.object({
|
||||
title: LocalizedStringSchema.optional(),
|
||||
content: LocalizedStringSchema,
|
||||
});
|
||||
export type RichTextPayload = z.infer<typeof RichTextPayloadSchema>;
|
||||
export type RichTextSectionPayload = z.infer<typeof RichTextSectionPayloadSchema>;
|
||||
|
||||
export const ScentNotesBreakdownPayloadSchema = z.object({
|
||||
export const ScentNotesBreakdownSectionPayloadSchema = z.object({
|
||||
title: LocalizedStringSchema.optional(),
|
||||
description: LocalizedStringSchema.optional(),
|
||||
topNotes: z.array(LocalizedStringSchema),
|
||||
middleNotes: z.array(LocalizedStringSchema),
|
||||
baseNotes: z.array(LocalizedStringSchema),
|
||||
topNotes: z.union([LocalizedStringSchema, z.array(LocalizedStringSchema)]).optional(),
|
||||
heartNotes: z.union([LocalizedStringSchema, z.array(LocalizedStringSchema)]).optional(),
|
||||
middleNotes: z.union([LocalizedStringSchema, z.array(LocalizedStringSchema)]).optional(),
|
||||
baseNotes: z.union([LocalizedStringSchema, z.array(LocalizedStringSchema)]).optional(),
|
||||
});
|
||||
export type ScentNotesBreakdownPayload = z.infer<typeof ScentNotesBreakdownPayloadSchema>;
|
||||
export type ScentNotesBreakdownSectionPayload = z.infer<typeof ScentNotesBreakdownSectionPayloadSchema>;
|
||||
|
||||
export const QuoteCalloutPayloadSchema = z.object({
|
||||
quote: z.string().min(1, "Quote is required"),
|
||||
author: z.string().optional(),
|
||||
export const QuoteCalloutSectionPayloadSchema = z.object({
|
||||
quote: LocalizedStringSchema,
|
||||
author: LocalizedStringSchema.optional(),
|
||||
role: LocalizedStringSchema.optional(),
|
||||
});
|
||||
export type QuoteCalloutPayload = z.infer<typeof QuoteCalloutPayloadSchema>;
|
||||
export type QuoteCalloutSectionPayload = z.infer<typeof QuoteCalloutSectionPayloadSchema>;
|
||||
|
||||
export const ProductCarouselPayloadSchema = z.object({
|
||||
export const ProductCarouselSectionPayloadSchema = z.object({
|
||||
title: LocalizedStringSchema.optional(),
|
||||
description: LocalizedStringSchema.optional(),
|
||||
collectionId: z.string().optional(),
|
||||
limit: z.number().int().positive().optional(),
|
||||
limit: z.number().positive().optional(),
|
||||
showPrice: z.boolean().optional(),
|
||||
showAddToCart: z.boolean().optional(),
|
||||
products: z.array(z.any()).optional(),
|
||||
});
|
||||
export type ProductCarouselPayload = z.infer<typeof ProductCarouselPayloadSchema>;
|
||||
export type ProductCarouselSectionPayload = z.infer<typeof ProductCarouselSectionPayloadSchema>;
|
||||
|
||||
// Aliases for backwards compatibility in ScentGuideSectionSchema
|
||||
export const HeroArticlePayloadSchema = HeroArticleSectionPayloadSchema;
|
||||
export const RichTextPayloadSchema = RichTextSectionPayloadSchema;
|
||||
export const ScentNotesBreakdownPayloadSchema = ScentNotesBreakdownSectionPayloadSchema;
|
||||
export const QuoteCalloutPayloadSchema = QuoteCalloutSectionPayloadSchema;
|
||||
export const ProductCarouselPayloadSchema = ProductCarouselSectionPayloadSchema;
|
||||
|
||||
export const ScentGuideSectionSchema = z.discriminatedUnion("type", [
|
||||
z.object({
|
||||
@@ -442,6 +456,7 @@ export const ScentGuidePageSchema = z.object({
|
||||
export type ScentGuidePage = z.infer<typeof ScentGuidePageSchema>;
|
||||
|
||||
export const AccordionSectionPayloadSchema = z.object({
|
||||
title: LocalizedStringSchema.optional(),
|
||||
categories: z.array(
|
||||
z.object({
|
||||
name: LocalizedStringSchema,
|
||||
@@ -451,23 +466,24 @@ export const AccordionSectionPayloadSchema = z.object({
|
||||
q: LocalizedStringSchema,
|
||||
a: LocalizedStringSchema,
|
||||
})
|
||||
),
|
||||
).min(1),
|
||||
})
|
||||
),
|
||||
).min(1),
|
||||
});
|
||||
export type AccordionSectionPayload = z.infer<typeof AccordionSectionPayloadSchema>;
|
||||
|
||||
export const ContactInfoSectionPayloadSchema = z.object({
|
||||
address: z.string().min(1, "Address is required"),
|
||||
email: z.string().min(1, "Email is required"),
|
||||
line: z.string().min(1, "Line ID is required"),
|
||||
hours: z.string().min(1, "Business hours are required"),
|
||||
title: LocalizedStringSchema.optional(),
|
||||
address: LocalizedStringSchema,
|
||||
email: LocalizedStringSchema,
|
||||
line: LocalizedStringSchema,
|
||||
hours: LocalizedStringSchema,
|
||||
});
|
||||
export type ContactInfoSectionPayload = z.infer<typeof ContactInfoSectionPayloadSchema>;
|
||||
|
||||
export const ContactFormSectionPayloadSchema = z.object({
|
||||
title: z.string().optional(),
|
||||
subtitle: z.string().optional(),
|
||||
title: LocalizedStringSchema.optional(),
|
||||
subtitle: LocalizedStringSchema.optional(),
|
||||
});
|
||||
export type ContactFormSectionPayload = z.infer<typeof ContactFormSectionPayloadSchema>;
|
||||
|
||||
|
||||
Reference in new issue
Block a user