
export type Screen = 'login' | 'signup' | 'dashboard' | 'clients' | 'client-detail' | 'new-report' | 'agenda' | 'billing' | 'profile' | 'add-client' | 'staff' | 'add-staff' | 'time-logs' | 'invoice-preview' | 'admin-settings';

export type RoleType = 'admin' | 'staff';
export type UserStatus = 'active' | 'pending';

export interface CompanyProfile {
  name: string;
  logoUrl: string;
  address: string;
  email: string;
  phone: string;
  kvk: string;
  btw: string;
  iban: string;
  invoiceFooter: string;
}

export interface UserProfile {
  id: string;
  fullName: string;
  email: string;
  password?: string;
  bigNumber: string;
  role?: string;
  roleType: RoleType;
  status: UserStatus;
  workLat?: number;
  workLng?: number;
}

export interface ClientFile {
  id: string;
  name: string;
  type: 'pdf' | 'doc' | 'img';
  uploadDate: string;
  size: string;
}

export interface Client {
  id: string;
  name: string;
  birthDate: string;
  age: number;
  status: 'Stabiel' | 'Aandacht nodig' | 'In Behandeling' | 'Zorgplan herzien';
  lastVisit: string;
  assignedHospitalId?: string;
  assignedDoctor?: string;
  files?: ClientFile[];
  assignedStaffId?: string;
  address?: string;
  lat?: number;
  lng?: number;
}

export interface Appointment {
  id: string;
  clientName: string;
  startTime: string;
  endTime: string;
  duration: string;
  address: string;
  type: string;
  color: string;
}

export interface StaffMember {
  id: string;
  name: string;
  role: string;
  image: string;
  hoursWorked: number;
  assignedClients: number;
  status: 'Active' | 'Offline';
}

export interface WorkLog {
  id: string;
  date: string;
  hours: number;
  description: string;
  userId: string;
  locationVerified?: boolean;
}

export interface Report {
  id: string;
  time: string;
  date: string;
  category: 'Medicatie' | 'ADL' | 'Welzijn' | 'Incident' | 'Algemene observatie';
  content: string;
}

export interface BillableActivity {
  id: string;
  clientName: string;
  date: string;
  duration: string;
  type: string;
  nzaCode: string;
  missingCode?: boolean;
}
