Initial commit
This commit is contained in:
@@ -0,0 +1,229 @@
|
||||
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[];
|
||||
}
|
||||
|
||||
export interface HeroContent {
|
||||
title: string;
|
||||
highlight: string;
|
||||
mobileTitle?: 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;
|
||||
}
|
||||
|
||||
export interface TestimonialContent {
|
||||
quote: string;
|
||||
reviewer: string;
|
||||
detail: string;
|
||||
imageUrl?: string;
|
||||
}
|
||||
|
||||
export interface BookingContent {
|
||||
title: string;
|
||||
subtitle: string;
|
||||
formAction: string;
|
||||
serviceOptions: string[];
|
||||
ownerStepLabel?: string;
|
||||
dogStepLabel?: string;
|
||||
dogIntro?: 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 ServicePageContent {
|
||||
hero: {
|
||||
eyebrow: string;
|
||||
title: string;
|
||||
paragraphs: string[];
|
||||
imageUrl: string;
|
||||
imageAlt: string;
|
||||
};
|
||||
highlight?: {
|
||||
eyebrow: string;
|
||||
title: string;
|
||||
imageUrl: string;
|
||||
imageAlt: string;
|
||||
};
|
||||
pricing: {
|
||||
title: string;
|
||||
intro?: string;
|
||||
plans: ServicePricingPlan[];
|
||||
extras?: ServiceExtra[];
|
||||
};
|
||||
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[];
|
||||
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;
|
||||
footer: FooterContent;
|
||||
}
|
||||
Reference in New Issue
Block a user