- Add VictoryItem type (place, category, competition, location, date, image, link) - Add RichListItem type for education with image/link support - Backward-compatible DB parsing for old string[] formats - Admin forms with structured fields and image upload per item - Victory/education cards with photo overlay and lightbox - Remove max-width constraint from trainer profile for full-width layout Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
121 lines
2.0 KiB
TypeScript
121 lines
2.0 KiB
TypeScript
export interface ClassItem {
|
|
name: string;
|
|
description: string;
|
|
icon: string;
|
|
detailedDescription?: string;
|
|
images?: string[];
|
|
color?: string;
|
|
}
|
|
|
|
export interface RichListItem {
|
|
text: string;
|
|
image?: string;
|
|
link?: string;
|
|
}
|
|
|
|
export interface VictoryItem {
|
|
place: string;
|
|
category: string;
|
|
competition: string;
|
|
location?: string;
|
|
date?: string;
|
|
image?: string;
|
|
link?: string;
|
|
}
|
|
|
|
export interface TeamMember {
|
|
name: string;
|
|
role: string;
|
|
image: string;
|
|
instagram?: string;
|
|
description?: string;
|
|
experience?: string[];
|
|
victories?: VictoryItem[];
|
|
education?: RichListItem[];
|
|
}
|
|
|
|
export interface FAQItem {
|
|
question: string;
|
|
answer: string;
|
|
}
|
|
|
|
export interface PricingItem {
|
|
name: string;
|
|
price: string;
|
|
note?: string;
|
|
popular?: boolean;
|
|
featured?: boolean;
|
|
}
|
|
|
|
export interface ScheduleClass {
|
|
time: string;
|
|
trainer: string;
|
|
type: string;
|
|
level?: string;
|
|
hasSlots?: boolean;
|
|
recruiting?: boolean;
|
|
}
|
|
|
|
export interface ScheduleDay {
|
|
day: string;
|
|
dayShort: string;
|
|
classes: ScheduleClass[];
|
|
}
|
|
|
|
export interface ScheduleLocation {
|
|
name: string;
|
|
address: string;
|
|
days: ScheduleDay[];
|
|
}
|
|
|
|
export interface ContactInfo {
|
|
title: string;
|
|
addresses: string[];
|
|
phone: string;
|
|
instagram: string;
|
|
mapEmbedUrl: string;
|
|
workingHours: string;
|
|
}
|
|
|
|
export interface SiteContent {
|
|
meta: {
|
|
title: string;
|
|
description: string;
|
|
};
|
|
hero: {
|
|
headline: string;
|
|
subheadline: string;
|
|
ctaText: string;
|
|
ctaHref: string;
|
|
};
|
|
team: {
|
|
title: string;
|
|
members: TeamMember[];
|
|
};
|
|
about: {
|
|
title: string;
|
|
paragraphs: string[];
|
|
};
|
|
classes: {
|
|
title: string;
|
|
items: ClassItem[];
|
|
};
|
|
faq: {
|
|
title: string;
|
|
items: FAQItem[];
|
|
};
|
|
pricing: {
|
|
title: string;
|
|
subtitle: string;
|
|
items: PricingItem[];
|
|
rentalTitle: string;
|
|
rentalItems: PricingItem[];
|
|
rules: string[];
|
|
};
|
|
schedule: {
|
|
title: string;
|
|
locations: ScheduleLocation[];
|
|
};
|
|
contact: ContactInfo;
|
|
}
|