Files
blackheart-website/src/types/content.ts
diana.dolgolyova 4918184852 feat: structured victories/education with photos, links, and editorial profile layout
- 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>
2026-03-13 14:34:30 +03:00

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