export interface LinkItem { label: string; href: string; external?: boolean; } export interface CallToAction { label: string; href: string; variant?: 'green' | 'yellow' | 'outline'; external?: boolean; } export interface SeoContent { title: string; description: string; } export interface MegaMenuService { icon: string; label: string; description?: string; href: string; } export interface NavigationContent { desktopLinks: LinkItem[]; mobileLinks: LinkItem[]; cta: CallToAction; instagram?: { href: string; external?: boolean }; megaMenuServices?: MegaMenuService[]; megaMenuFooter?: LinkItem; } export interface HeroContent { title: string; highlight: string; mobileTitle?: string; subtitle?: string; primaryCta: CallToAction; secondaryCta: CallToAction; imageUrl: string; imageAlt: string; } export interface IntroContent { text: string; reviewCta: CallToAction; } export interface PromiseContent { title: string; subtitle: string; body: string[]; emphasis: string; cta: CallToAction; imageUrl: string; imageAlt: string; } export interface IconCard { icon: string; title: string; body: string; href?: string; order?: number; priceFrom?: string; } export interface TestimonialContent { quote: string; reviewer: string; detail: string; imageUrl?: string; } export interface ProcessStep { phase?: string; benefit?: string; title: string; body: string; icon?: string; } export interface HowItWorksContent { title: string; intro?: string; steps: ProcessStep[]; } export interface BookingContent { title: string; subtitle: string; generalSubtitle?: string; formAction: string; serviceOptions: string[]; ownerStepLabel?: string; dogStepLabel?: string; dogIntro?: string; generalIntro?: string; } export interface ServicePricingPlan { title: string; price: string; period: string; popular?: boolean; features: string[]; } export interface ServiceExtra { label: string; price: string; note?: string; } export interface ServiceBenefit { title: string; body: string; } export interface ServiceHighlightImage { imageUrl: string; imageAlt: string; } export interface ServicePageContent { hero: { eyebrow: string; title: string; paragraphs: string[]; imageUrl: string; imageAlt: string; }; highlight?: { eyebrow: string; title: string; imageUrl: string; imageAlt: string; collageImages?: ServiceHighlightImage[]; }; pricing: { title: string; intro?: string; plans: ServicePricingPlan[]; extras?: ServiceExtra[]; scarcityNote?: string; }; benefits: { title: string; items: ServiceBenefit[]; }; testimonialsHeading: string; booking: BookingContent; } export interface PricingPageSection { title: string; icon?: string; blurb?: string; detailCta?: CallToAction; plans: ServicePricingPlan[]; } export interface PricingPageContent { title: string; subtitle?: string; sections: PricingPageSection[]; testimonialsHeading: string; booking: BookingContent; } export interface AboutPageSection { title: string; body: string[]; imageUrl: string; imageAlt: string; reverse?: boolean; accent?: 'plain' | 'gradient'; } export interface AboutPageContent { title: string; sections: AboutPageSection[]; servicesTitle: string; contact: { title: string; email: string; phone: string; cta: CallToAction; }; } export interface LegalPageBlock { type: 'paragraph' | 'list'; content: string | string[]; } export interface LegalPageSection { title: string; blocks: LegalPageBlock[]; } export interface LegalPageContent { title: string; sections: LegalPageSection[]; } export interface FaqItem { question: string; answer: string; } export interface InfoContent { title: string; intro: string; suburbs: string; nearbyText: string; nearbyCta: CallToAction; hoursLabel: string; hours: string; faqTitle: string; faqs: FaqItem[]; } export interface FooterContent { brandText: string; navigationLinks: LinkItem[]; contactLinks: LinkItem[]; copyright: string; email?: string; phone?: string; } export interface HomePageContent { seo: SeoContent; navigation: NavigationContent; hero: HeroContent; intro: IntroContent; promise: PromiseContent; services: IconCard[]; howItWorks: HowItWorksContent; values: IconCard[]; testimonials: TestimonialContent[]; booking: BookingContent; info: InfoContent; instagram: CallToAction & { title: string }; footer: FooterContent; } export interface SiteSharedContent { navigation: NavigationContent; services: IconCard[]; testimonials: TestimonialContent[]; booking: BookingContent; info: InfoContent; footer: FooterContent; }