export type SiteType = 'local_business' | 'personal_brand' | 'agency';
export type Tone = 'professional' | 'friendly' | 'premium';

export type SectionId =
  | 'hero'
  | 'services'
  | 'about'
  | 'hours'
  | 'gallery'
  | 'testimonials'
  | 'faq'
  | 'contact'
  | 'footer';

export type PrimaryCta = 'form' | 'phone' | 'whatsapp' | 'email';
export type PaletteHint = 'warm' | 'cool' | 'neutral' | 'bold';
export type ModuleId = 'form_capture' | 'whatsapp' | 'cookie_consent' | 'map';
export type DayId = 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat' | 'sun';

export interface BriefCommon {
  business_name: string;
  business_type: string;
  description: string;
  language: string;
  tone?: Tone;
}

export interface BriefContacts {
  phone?: string;
  email?: string;
  whatsapp?: string;
  address?: string;
  city?: string;
  region?: string;
}

export interface BriefServiceItem {
  title: string;
  description?: string;
}

export interface BriefServices {
  items: BriefServiceItem[];
}

export interface BriefHourEntry {
  day: DayId;
  open: string;
  close: string;
}

export interface BriefHours {
  schedule: BriefHourEntry[];
}

export interface BriefMedia {
  logo?: string;
  hero_image?: string;
  gallery?: string[];
}

export interface BriefStructure {
  sections: SectionId[];
  primary_cta: PrimaryCta;
}

export interface BriefStyle {
  palette_hint?: PaletteHint;
}

export interface BriefFunctional {
  modules?: ModuleId[];
}

export interface Brief {
  brief_version: '1.0';
  site_type: SiteType;
  common: BriefCommon;
  contacts: BriefContacts;
  services?: BriefServices;
  hours?: BriefHours;
  media?: BriefMedia;
  structure: BriefStructure;
  style?: BriefStyle;
  functional?: BriefFunctional;
}

export interface HeroData {
  headline: string;
  subheadline: string;
  primaryCta: { label: string; href: string };
  heroImage?: string;
}

export interface ServicesData {
  items: BriefServiceItem[];
}

export interface ContactItem {
  type: 'phone' | 'email' | 'whatsapp' | 'address';
  label: string;
  value: string;
  href: string;
}

export interface ContactData {
  items: ContactItem[];
}

export interface HoursData {
  schedule: BriefHourEntry[];
}

export interface FooterData {
  businessName: string;
  year: number;
  contacts: BriefContacts;
}

export interface ComponentData {
  hero?: HeroData;
  services?: ServicesData;
  contact?: ContactData;
  hours?: HoursData;
  footer: FooterData;
}