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;
  eyebrow?: string;
  body: string[];
  imageUrl: string;
  imageAlt: string;
  reverse?: boolean;
  accent?: 'plain' | 'gradient' | 'founder';
}

export interface AboutPageContent {
  title: string;
  sections: AboutPageSection[];
  servicesTitle?: string;
  faqTitle?: string;
  faqs?: FaqItem[];
  contact: {
    title: string;
    email: string;
    phone: string;
    cta: CallToAction;
  };
}

export interface LocationPark {
  name: string;
  description: string;
  leashNote?: string;
  image?: {
    src: string;
    alt: string;
    caption?: string;
  };
}

export interface LocationSeoContent {
  title?: string;
  description?: string;
  image?: string;
  imageAlt?: string;
  serviceName?: string;
  serviceType?: string;
  breadcrumbLabel?: string;
}

export interface LocationPageContent {
  suburb: string;
  slug: string;
  intro: string;
  parks: LocationPark[];
  seo?: LocationSeoContent;
}

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;
}
