// 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: * Important: properties of ICONS object MUST be lowercase! * Note: You can use camelCase or UPPERCASE in the 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([ 'back', 'chevron_start', 'chevron_end', 'forward', 'send', ]);