- 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>
100 lines
1.6 KiB
TypeScript
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;
|
|
}
|