// Status vocabularies — SQLite build means no Prisma enums; these are the allowed values.

export const CONFERENCE_STATUSES = ["DRAFT", "PUBLISHED", "LIVE", "COMPLETED", "ARCHIVED"] as const;
export const CONFERENCE_TYPES = ["PHYSICAL", "VIRTUAL", "HYBRID"] as const;
export const CONFERENCE_CATEGORIES = ["TECH", "ACADEMIC", "BUSINESS", "GOVERNMENT", "MEDICAL", "OTHER"] as const;

export const SESSION_TYPES = ["KEYNOTE", "TALK", "PANEL", "WORKSHOP", "TUTORIAL", "NETWORKING", "BREAK"] as const;

export const REGISTRATION_STATUSES = ["PENDING", "CONFIRMED", "CANCELLED"] as const;
export const PAYMENT_STATUSES = ["CREATED", "SUCCESS", "FAILED", "REFUNDED"] as const;

export const SUBMISSION_STATUSES = [
  "DRAFT", "SUBMITTED", "UNDER_REVIEW", "REVISION_REQUIRED", "ACCEPTED", "REJECTED", "SCHEDULED",
] as const;
export const SUBMISSION_CATEGORIES = ["ABSTRACT", "PAPER", "POSTER", "PRESENTATION", "WORKSHOP", "TUTORIAL"] as const;

export const SPEAKER_TYPES = [
  "CHIEF_GUEST", "GUEST_OF_HONOR", "SPECIAL_GUEST", "KEYNOTE_SPEAKER",
  "LEAD_SPEAKER", "INVITED_SPEAKER", "PANELIST", "SESSION_CHAIR",
  "WORKSHOP_LEAD", "SPEAKER",
] as const;

export const SPEAKER_TYPE_LABELS: Record<string, string> = {
  CHIEF_GUEST: "Chief Guest",
  GUEST_OF_HONOR: "Guest of Honor",
  SPECIAL_GUEST: "Special Guest",
  KEYNOTE_SPEAKER: "Keynote Speaker",
  LEAD_SPEAKER: "Lead Speaker",
  INVITED_SPEAKER: "Invited Speaker",
  PANELIST: "Panelist",
  SESSION_CHAIR: "Session Chair",
  WORKSHOP_LEAD: "Workshop Lead",
  SPEAKER: "Speaker",
};

export const SPONSOR_TIERS = [
  "TITLE", "CO_SPONSOR", "PLATINUM", "GOLD", "SILVER", "BRONZE",
  "EVENT_PARTNER", "MEDIA_PARTNER", "TECHNOLOGY_PARTNER", "COMMUNITY_PARTNER",
  "KNOWLEDGE_PARTNER", "EXHIBITOR", "PARTNER",
] as const;

export const SPONSOR_TIER_LABELS: Record<string, string> = {
  TITLE: "Title Sponsor",
  CO_SPONSOR: "Co-Sponsor",
  PLATINUM: "Platinum",
  GOLD: "Gold",
  SILVER: "Silver",
  BRONZE: "Bronze",
  EVENT_PARTNER: "Event Partner",
  MEDIA_PARTNER: "Media Partner",
  TECHNOLOGY_PARTNER: "Technology Partner",
  COMMUNITY_PARTNER: "Community Partner",
  KNOWLEDGE_PARTNER: "Knowledge Partner",
  EXHIBITOR: "Exhibitor",
  PARTNER: "Partner",
};

/** Workspace areas a volunteer can be assigned to; each maps to one RBAC action. */
export const VOLUNTEER_AREAS = [
  { key: "checkin", label: "Check-in desk", action: "checkin.perform" },
  { key: "agenda", label: "Agenda & schedule", action: "agenda.manage" },
  { key: "registrations", label: "Registrations", action: "registrations.manage" },
  { key: "speakers", label: "Speakers", action: "speakers.manage" },
  { key: "announcements", label: "Announcements", action: "content.manage" },
  { key: "sponsors", label: "Sponsors", action: "sponsors.manage" },
  { key: "certificates", label: "Certificates", action: "certificates.manage" },
] as const;
export type VolunteerAreaKey = (typeof VOLUNTEER_AREAS)[number]["key"];

export const LIVE_UPDATE_TYPES = [
  "TOPIC", "KEY_POINT", "QUOTE", "ANNOUNCEMENT", "STATISTIC",
  "RESOURCE", "SPEAKER_UPDATE", "BREAK", "SESSION_CHANGE",
] as const;

export const LIVE_UPDATE_TYPE_META: Record<string, { label: string; icon: string; cls: string }> = {
  TOPIC: { label: "Topic", icon: "🎯", cls: "bg-indigo-500/15 text-indigo-300" },
  KEY_POINT: { label: "Key Point", icon: "💡", cls: "bg-amber-500/15 text-amber-300" },
  QUOTE: { label: "Quote", icon: "❝", cls: "bg-violet-500/15 text-violet-300" },
  ANNOUNCEMENT: { label: "Announcement", icon: "📢", cls: "bg-sky-500/15 text-sky-300" },
  STATISTIC: { label: "Statistic", icon: "📊", cls: "bg-emerald-500/15 text-emerald-300" },
  RESOURCE: { label: "Resource", icon: "📎", cls: "bg-cyan-500/15 text-cyan-300" },
  SPEAKER_UPDATE: { label: "Speaker Update", icon: "🎤", cls: "bg-pink-500/15 text-pink-300" },
  BREAK: { label: "Break", icon: "☕", cls: "bg-zinc-500/15 text-zinc-300" },
  SESSION_CHANGE: { label: "Session Change", icon: "🔄", cls: "bg-orange-500/15 text-orange-300" },
};

export const CERTIFICATE_TYPES = ["PARTICIPATION", "SPEAKER", "PRESENTER", "VOLUNTEER", "REVIEWER", "ORGANIZER"] as const;

// Conference-scoped roles (attendees are Registrations, not members)
export const CONF_ROLES = [
  "ORGANIZER", "CO_ORGANIZER", "EVENT_MANAGER", "MODERATOR",
  "VOLUNTEER", "REVIEWER", "FINANCE_MANAGER", "CONTENT_MANAGER",
] as const;
export type ConfRole = (typeof CONF_ROLES)[number];

export const SESSION_TYPE_COLORS: Record<string, string> = {
  KEYNOTE: "bg-violet-500/15 text-violet-600 border-violet-500/30",
  TALK: "bg-sky-500/15 text-sky-600 border-sky-500/30",
  PANEL: "bg-amber-500/15 text-amber-600 border-amber-500/30",
  WORKSHOP: "bg-emerald-500/15 text-emerald-600 border-emerald-500/30",
  TUTORIAL: "bg-teal-500/15 text-teal-600 border-teal-500/30",
  NETWORKING: "bg-pink-500/15 text-pink-600 border-pink-500/30",
  BREAK: "bg-zinc-500/15 text-zinc-400 border-zinc-500/30",
};

export const STATUS_COLORS: Record<string, string> = {
  DRAFT: "bg-zinc-500/15 text-zinc-400",
  PUBLISHED: "bg-sky-500/15 text-sky-600",
  LIVE: "bg-emerald-500/15 text-emerald-600",
  COMPLETED: "bg-violet-500/15 text-violet-600",
  ARCHIVED: "bg-zinc-500/15 text-zinc-500",
  PENDING: "bg-amber-500/15 text-amber-600",
  CONFIRMED: "bg-emerald-500/15 text-emerald-600",
  CANCELLED: "bg-red-500/15 text-red-600",
  SUCCESS: "bg-emerald-500/15 text-emerald-600",
  FAILED: "bg-red-500/15 text-red-600",
  REFUNDED: "bg-orange-500/15 text-orange-600",
  CREATED: "bg-amber-500/15 text-amber-600",
  SUBMITTED: "bg-sky-500/15 text-sky-600",
  UNDER_REVIEW: "bg-amber-500/15 text-amber-600",
  REVISION_REQUIRED: "bg-orange-500/15 text-orange-600",
  ACCEPTED: "bg-emerald-500/15 text-emerald-600",
  REJECTED: "bg-red-500/15 text-red-600",
  SCHEDULED: "bg-violet-500/15 text-violet-600",
};
