Files
blackheart-website/src/types/content.ts
diana.dolgolyova 5c23b622f9 feat: unique color picker for class types in schedule editor
- Add clickable color picker in schedule legend (16 distinct colors)
- Two-pass smart assignment: explicit colors first, then unused palette slots
- Hide already-used colors from the picker (both explicit and fallback)
- Colors saved to classes section and flow to public site schedule dots
- Expanded palette: rose, orange, amber, yellow, lime, emerald, teal, cyan,
  sky, blue, indigo, violet, purple, fuchsia, pink, red

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 20:16:26 +03:00

100 lines
1.6 KiB
TypeScript

export interface ClassItem {
name: string;
description: string;
icon: string;
detailedDescription?: string;
images?: string[];
color?: string;
}
export interface TeamMember {
name: string;
role: string;
image: string;
instagram?: string;
description?: string;
}
export interface FAQItem {
question: string;
answer: string;
}
export interface PricingItem {
name: string;
price: string;
note?: string;
}
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;
}