import type { ComponentType } from 'react';

export type TabType = 'overview' | 'attendees' | 'tickets' | 'email' | 'payments';

export type AttendeeStatusFilter = 'all' | 'pending' | 'confirmed' | 'checked_in' | 'cancelled' | 'on_hold';
export type TicketStatusFilter = 'all' | 'confirmed' | 'checked_in';
export type RecipientFilter = 'all' | 'confirmed' | 'pending' | 'checked_in';

export interface PrimaryAction {
  label: string;
  onClick: () => void;
  variant: 'outline' | 'primary';
  icon?: ComponentType<{ className?: string }>;
}

// Ticket type in the unified Add Ticket modal:
// paid = confirmation + QR emailed, counts toward revenue
// door = already paid in cash at the door, counts toward revenue, every field optional
// unpaid = QR flagged unpaid, balance collected at door, pay link emailed if possible
// guest = free comp ticket, auto-confirmed, no revenue
export type AddTicketType = 'paid' | 'door' | 'unpaid' | 'guest';

export interface AddTicketFormState {
  type: AddTicketType;
  firstName: string;
  lastName: string;
  email: string;
  phone: string;
  adminNote: string;
  checkinNow: boolean;
}
