2026-05-02 08:26:18 +12:00
|
|
|
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[];
|
2026-05-03 11:49:59 +12:00
|
|
|
megaMenuFooter?: LinkItem;
|
2026-05-02 08:26:18 +12:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface HeroContent {
|
|
|
|
|
title: string;
|
|
|
|
|
highlight: string;
|
|
|
|
|
mobileTitle?: string;
|
2026-05-03 11:49:59 +12:00
|
|
|
subtitle?: string;
|
2026-05-02 08:26:18 +12:00
|
|
|
primaryCta: CallToAction;
|
|
|
|
|
secondaryCta: CallToAction;
|
|
|
|
|
imageUrl: string;
|
|
|
|
|
imageAlt: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface IntroContent {
|
|
|
|
|
text: string;
|
|
|
|
|
reviewCta: CallToAction;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface PromiseContent {
|
|
|
|
|
title: string;
|
|
|
|
|
subtitle: string;
|
2026-05-03 11:49:59 +12:00
|
|
|
body: string[];
|
2026-05-02 08:26:18 +12:00
|
|
|
emphasis: string;
|
|
|
|
|
cta: CallToAction;
|
|
|
|
|
imageUrl: string;
|
|
|
|
|
imageAlt: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface IconCard {
|
|
|
|
|
icon: string;
|
|
|
|
|
title: string;
|
|
|
|
|
body: string;
|
|
|
|
|
href?: string;
|
2026-05-02 09:43:32 +12:00
|
|
|
order?: number;
|
2026-05-03 11:49:59 +12:00
|
|
|
priceFrom?: string;
|
2026-05-02 08:26:18 +12:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface TestimonialContent {
|
|
|
|
|
quote: string;
|
|
|
|
|
reviewer: string;
|
|
|
|
|
detail: string;
|
|
|
|
|
imageUrl?: string;
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-06 17:42:43 +12:00
|
|
|
export interface ProcessStep {
|
2026-05-07 21:47:42 +12:00
|
|
|
phase?: string;
|
|
|
|
|
benefit?: string;
|
2026-05-06 17:42:43 +12:00
|
|
|
title: string;
|
|
|
|
|
body: string;
|
|
|
|
|
icon?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface HowItWorksContent {
|
|
|
|
|
title: string;
|
|
|
|
|
intro?: string;
|
|
|
|
|
steps: ProcessStep[];
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-02 08:26:18 +12:00
|
|
|
export interface BookingContent {
|
|
|
|
|
title: string;
|
|
|
|
|
subtitle: string;
|
2026-05-04 20:32:24 +12:00
|
|
|
generalSubtitle?: string;
|
2026-05-02 08:26:18 +12:00
|
|
|
formAction: string;
|
|
|
|
|
serviceOptions: string[];
|
|
|
|
|
ownerStepLabel?: string;
|
|
|
|
|
dogStepLabel?: string;
|
|
|
|
|
dogIntro?: string;
|
2026-05-04 20:32:24 +12:00
|
|
|
generalIntro?: string;
|
2026-05-02 08:26:18 +12:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-07 21:47:42 +12:00
|
|
|
export interface ServiceHighlightImage {
|
|
|
|
|
imageUrl: string;
|
|
|
|
|
imageAlt: string;
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-02 08:26:18 +12:00
|
|
|
export interface ServicePageContent {
|
|
|
|
|
hero: {
|
|
|
|
|
eyebrow: string;
|
|
|
|
|
title: string;
|
|
|
|
|
paragraphs: string[];
|
|
|
|
|
imageUrl: string;
|
|
|
|
|
imageAlt: string;
|
|
|
|
|
};
|
|
|
|
|
highlight?: {
|
|
|
|
|
eyebrow: string;
|
|
|
|
|
title: string;
|
|
|
|
|
imageUrl: string;
|
|
|
|
|
imageAlt: string;
|
2026-05-07 21:47:42 +12:00
|
|
|
collageImages?: ServiceHighlightImage[];
|
2026-05-02 08:26:18 +12:00
|
|
|
};
|
|
|
|
|
pricing: {
|
|
|
|
|
title: string;
|
|
|
|
|
intro?: string;
|
|
|
|
|
plans: ServicePricingPlan[];
|
|
|
|
|
extras?: ServiceExtra[];
|
2026-05-06 08:27:24 +12:00
|
|
|
scarcityNote?: string;
|
2026-05-02 08:26:18 +12:00
|
|
|
};
|
|
|
|
|
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[];
|
2026-05-06 17:42:43 +12:00
|
|
|
howItWorks: HowItWorksContent;
|
2026-05-02 08:26:18 +12:00
|
|
|
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;
|
2026-05-06 11:36:19 +12:00
|
|
|
info: InfoContent;
|
2026-05-02 08:26:18 +12:00
|
|
|
footer: FooterContent;
|
|
|
|
|
}
|