// SVG assets — the Balinyaar brand mark
import LogoMark from './icons/LogoMark';
/*
 * MUI Icons are gone. The registry now maps every name onto **Lucide**
 * (`lucide-react`) — a single contemporary outline family drawn on a 24px grid
 * with round caps/joins, which reads far lighter than the old filled/Rounded
 * glyphs at the small sizes a phone-width app actually uses.
 *
 * Two rules keep the set coherent:
 *  1. ONE family. Never import an icon from anywhere but `lucide-react` here,
 *     and never import a raw icon component anywhere else in the app.
 *  2. The mapping is SEMANTIC, not incidental — a name describes the domain
 *     concept ("verification", "earnings", "coverage") and the glyph is chosen
 *     to depict that concept, so a rename of the underlying glyph never leaks
 *     into call sites. Related concepts deliberately share a visual root
 *     (every trust/verification name is a shield, every money name is a coin or
 *     card, every clinical name is a pulse/cross).
 *
 * Adding an icon = one import here + one lowercase key in ICONS below.
 */
import {
  Activity,
  Archive,
  ArrowLeft,
  ArrowLeftRight,
  ArrowRight,
  ArrowUpDown,
  Award,
  Baby,
  Bandage,
  Bell,
  BellRing,
  Building2,
  Calendar,
  CalendarCheck,
  CalendarClock,
  CalendarDays,
  Camera,
  ChevronDown,
  ChevronLeft,
  ChevronRight,
  CircleCheckBig,
  CircleHelp,
  CircleUserRound,
  CircleX,
  ClipboardList,
  Clock,
  CloudUpload,
  Coins,
  Copy,
  CreditCard,
  Download,
  Ellipsis,
  ExternalLink,
  FileSearch,
  FileText,
  Gavel,
  HandHeart,
  Headset,
  Heart,
  HeartHandshake,
  HeartPulse,
  History,
  Hourglass,
  House,
  IdCard,
  Info,
  Landmark,
  Languages,
  LayoutDashboard,
  LayoutGrid,
  ListChecks,
  LocateFixed,
  Lock,
  LogIn,
  LogOut,
  Map,
  MapPin,
  Menu,
  MonitorSmartphone,
  Moon,
  Navigation,
  NotebookPen,
  OctagonAlert,
  Paperclip,
  Pencil,
  PersonStanding,
  Phone,
  PhoneCall,
  Pill,
  Plus,
  RefreshCw,
  Repeat,
  Rocket,
  Search,
  Send,
  Settings,
  Settings2,
  Share2,
  Shield,
  ShieldCheck,
  ShieldPlus,
  SlidersHorizontal,
  Star,
  StarHalf,
  Stethoscope,
  Sun,
  SunMoon,
  Tag,
  Trash2,
  TrendingUp,
  TriangleAlert,
  Undo2,
  UserCog,
  UserPlus,
  Users,
  UsersRound,
  Wallet,
  X,
} from 'lucide-react';

/**
 * List of all available Icon names
 */
export type IconName = keyof typeof ICONS;

/**
 * How to use:
 * 1. Import the Lucide icon into this file.
 * 2. Add it with a "unique lowercase name" to the ICONS object. Lowercase is a must!
 * 3. Use it everywhere in the app by name: <AppIcon icon="xxx" />
 * Important: properties of ICONS object MUST be lowercase!
 * Note: You can use camelCase or UPPERCASE in the <AppIcon icon="someIconByName" /> component
 */
export const ICONS = {
  // ── Chrome & navigation ───────────────────────────────────────────────
  default: Ellipsis,
  logo: LogoMark,
  close: X,
  menu: Menu,
  more: Ellipsis,
  search: Search,
  info: Info,
  help: CircleHelp,
  home: House,
  account: CircleUserRound,
  logout: LogOut,
  notifications: Bell,
  error: OctagonAlert,
  settings: Settings,

  // ── Actor destinations ────────────────────────────────────────────────
  bookings: CalendarDays,
  patients: HeartHandshake, // «حلقهٔ مراقبت» — a care circle, not a patient list
  users: UsersRound,
  wallet: Wallet,
  profile: CircleUserRound,
  dashboard: LayoutDashboard,
  today: CalendarCheck,
  practice: Stethoscope, // the nurse's «حرفهٔ من» group root
  visits: Stethoscope,
  admin: Shield,

  // ── Trust & verification (all shields — one visual root) ──────────────
  verification: ShieldCheck,
  verified: CircleCheckBig,
  pending: Hourglass,
  rejected: CircleX,
  identity: IdCard,
  license: Award,

  // ── Common actions ────────────────────────────────────────────────────
  add: Plus,
  edit: Pencil,
  archive: Archive,
  delete: Trash2,
  refresh: RefreshCw,
  upload: CloudUpload,
  download: Download,
  document: FileText,
  publish: Rocket,
  camera: Camera,
  warning: TriangleAlert,

  // ── Geography & coverage ──────────────────────────────────────────────
  location: MapPin,
  coverage: Map,
  gps: LocateFixed,
  navigate: Navigation,

  // ── Catalog — the customer Home category grid (f4/b5) ─────────────────
  services: Tag,
  category: LayoutGrid,
  elderly: PersonStanding,
  post_surgery: Bandage,
  infant: Baby,
  chronic: HeartPulse,
  companionship: HandHeart,

  // ── Search & discovery ────────────────────────────────────────────────
  star: Star,
  star_half: StarHalf,
  tune: SlidersHorizontal,
  sort: ArrowUpDown,

  // ── Booking requests, sessions & EVV ──────────────────────────────────
  requests: ClipboardList,
  check_in: LogIn,
  check_out: LogOut,
  schedule: Clock,
  clinical: ShieldPlus,
  medication: Pill,
  emergency: PhoneCall,
  phone: Phone,
  lock: Lock,

  // ── Money (coins/cards — one visual root) ─────────────────────────────
  payment: CreditCard,
  installments: CalendarClock,
  earnings: Coins,
  bank: Landmark,
  refunds: Undo2,
  trending: TrendingUp,

  // ── Reviews & patient care records ────────────────────────────────────
  notes: NotebookPen,
  routine: Repeat,
  tasks: ListChecks,
  history: History,
  family: Users,
  activity: Activity,

  // ── Messaging & support ───────────────────────────────────────────────
  support: Headset,
  send: Send,

  // ── Admin backoffice & partner consoles ───────────────────────────────
  config: Settings2,
  calendar: Calendar,
  audit: FileSearch,
  alerts: BellRing,
  moderation: Gavel,
  partners: Building2,
  roles: UserCog,
  assign: UserPlus,

  // ── Cross-cutting affordances ─────────────────────────────────────────
  back: ArrowLeft,
  forward: ArrowRight,
  chevron_start: ChevronLeft,
  chevron_end: ChevronRight,
  expand: ChevronDown,
  external: ExternalLink,
  share: Share2,
  copy: Copy,
  attachment: Paperclip,
  switch: ArrowLeftRight,

  // ── Settings surface ──────────────────────────────────────────────────
  language: Languages,
  appearance: SunMoon,
  light_mode: Sun,
  dark_mode: Moon,
  /** "Follow the operating system" — the third theme choice, not a device list. */
  system_mode: MonitorSmartphone,
  favorite: Heart,
};

/**
 * Icons authored for LTR that must mirror horizontally under RTL (back arrows,
 * chevrons pointing "start"/"end", the send paper-plane). AppIcon applies the flip via a
 * `data-icon-directional` attribute + the single CSS rule in globals.css — add a
 * name here, nothing else.
 */
export const DIRECTIONAL_ICONS = new Set<IconName>([
  'back',
  'chevron_start',
  'chevron_end',
  'forward',
  'send',
]);
