manual improvement 1
This commit is contained in:
@@ -1,107 +1,123 @@
|
||||
// SVG assets — the Balinyaar brand mark
|
||||
import LogoMark from './icons/LogoMark';
|
||||
// MUI Icons — normalized to ONE visual family (Rounded): warmer, softer strokes
|
||||
// than the filled/outlined mix this registry used to carry, fitting the
|
||||
// clinical-but-human tone. Adding an icon = import here + one lowercase key
|
||||
// below; never import a raw MUI icon anywhere else in the app.
|
||||
import DefaultIcon from '@mui/icons-material/MoreHorizRounded';
|
||||
import CloseIcon from '@mui/icons-material/CloseRounded';
|
||||
import MenuIcon from '@mui/icons-material/MenuRounded';
|
||||
import SearchIcon from '@mui/icons-material/SearchRounded';
|
||||
import InfoIcon from '@mui/icons-material/InfoRounded';
|
||||
import HomeIcon from '@mui/icons-material/HomeRounded';
|
||||
import AccountCircleIcon from '@mui/icons-material/AccountCircleRounded';
|
||||
import ExitToAppIcon from '@mui/icons-material/ExitToAppRounded';
|
||||
import NotificationsIcon from '@mui/icons-material/NotificationsRounded';
|
||||
import DangerousIcon from '@mui/icons-material/DangerousRounded';
|
||||
import EventNoteIcon from '@mui/icons-material/EventNoteRounded';
|
||||
import GroupsIcon from '@mui/icons-material/GroupsRounded';
|
||||
import PeopleAltIcon from '@mui/icons-material/PeopleAltRounded';
|
||||
import WalletIcon from '@mui/icons-material/AccountBalanceWalletRounded';
|
||||
import DashboardIcon from '@mui/icons-material/DashboardRounded';
|
||||
import VerifiedUserIcon from '@mui/icons-material/VerifiedUserRounded';
|
||||
import CheckCircleIcon from '@mui/icons-material/CheckCircleRounded';
|
||||
import HourglassEmptyIcon from '@mui/icons-material/HourglassEmptyRounded';
|
||||
import CancelIcon from '@mui/icons-material/CancelRounded';
|
||||
import MedicalServicesIcon from '@mui/icons-material/MedicalServicesRounded';
|
||||
import AdminPanelSettingsIcon from '@mui/icons-material/AdminPanelSettingsRounded';
|
||||
import AddIcon from '@mui/icons-material/AddRounded';
|
||||
import EditIcon from '@mui/icons-material/EditRounded';
|
||||
import ArchiveIcon from '@mui/icons-material/Inventory2Rounded';
|
||||
import BankIcon from '@mui/icons-material/AccountBalanceRounded';
|
||||
import CameraIcon from '@mui/icons-material/PhotoCameraRounded';
|
||||
import WarningIcon from '@mui/icons-material/WarningAmberRounded';
|
||||
import LocationIcon from '@mui/icons-material/LocationOnRounded';
|
||||
import DeleteIcon from '@mui/icons-material/DeleteRounded';
|
||||
import CoverageIcon from '@mui/icons-material/MapRounded';
|
||||
// Catalog — nurse services surface + the customer Home service-category grid (f4/b5)
|
||||
import ServicesIcon from '@mui/icons-material/LocalOfferRounded';
|
||||
import CategoryIcon from '@mui/icons-material/CategoryRounded';
|
||||
import ElderlyIcon from '@mui/icons-material/ElderlyRounded';
|
||||
import PostSurgeryIcon from '@mui/icons-material/HealingRounded';
|
||||
import InfantIcon from '@mui/icons-material/ChildCareRounded';
|
||||
import ChronicIcon from '@mui/icons-material/MonitorHeartRounded';
|
||||
import CompanionshipIcon from '@mui/icons-material/VolunteerActivismRounded';
|
||||
// Verification — nurse trust flow (f5/b6): document upload, credential + identity, re-upload
|
||||
import UploadIcon from '@mui/icons-material/CloudUploadRounded';
|
||||
import DocumentIcon from '@mui/icons-material/InsertDriveFileRounded';
|
||||
import RefreshIcon from '@mui/icons-material/RefreshRounded';
|
||||
import IdentityIcon from '@mui/icons-material/BadgeRounded';
|
||||
import LicenseIcon from '@mui/icons-material/WorkspacePremiumRounded';
|
||||
import PublishIcon from '@mui/icons-material/RocketLaunchRounded';
|
||||
// Search & discovery — the customer nurse-finding flow (f6/b7): rating star, filter controls
|
||||
import StarIcon from '@mui/icons-material/StarRounded';
|
||||
import StarHalfIcon from '@mui/icons-material/StarHalfRounded';
|
||||
import TuneIcon from '@mui/icons-material/TuneRounded';
|
||||
import SortIcon from '@mui/icons-material/SortRounded';
|
||||
// Booking requests — the pre-payment intent flow (f7/b8): nurse inbox + the pay-&-continue handoff
|
||||
import RequestsIcon from '@mui/icons-material/AssignmentRounded';
|
||||
import PaymentIcon from '@mui/icons-material/CreditCardRounded';
|
||||
// Bookings, sessions & EVV — the post-payment engagement (f8/b9): check-in/out, GPS, care instructions
|
||||
import CheckInIcon from '@mui/icons-material/LoginRounded';
|
||||
import CheckOutIcon from '@mui/icons-material/LogoutRounded';
|
||||
import GpsIcon from '@mui/icons-material/MyLocationRounded';
|
||||
import ScheduleIcon from '@mui/icons-material/ScheduleRounded';
|
||||
import ClinicalIcon from '@mui/icons-material/HealthAndSafetyRounded';
|
||||
import MedicationIcon from '@mui/icons-material/MedicationRounded';
|
||||
import EmergencyIcon from '@mui/icons-material/LocalPhoneRounded';
|
||||
import PhoneIcon from '@mui/icons-material/PhoneRounded';
|
||||
import LockIcon from '@mui/icons-material/LockRounded';
|
||||
import NavigateIcon from '@mui/icons-material/NavigationRounded';
|
||||
// BNPL — the installment-checkout surface (f11/b12): installment plans + repayment schedule
|
||||
import InstallmentsIcon from '@mui/icons-material/PaymentsRounded';
|
||||
// Payouts — the nurse earnings & payout-history surface (f12/b13)
|
||||
import EarningsIcon from '@mui/icons-material/PaidRounded';
|
||||
// Reviews & patient care records (f13/b14): visit-note authoring, record tabs, family-ownership banner
|
||||
import NotesIcon from '@mui/icons-material/NoteAltRounded';
|
||||
import RoutineIcon from '@mui/icons-material/EventRepeatRounded';
|
||||
import TasksIcon from '@mui/icons-material/ChecklistRounded';
|
||||
import HistoryIcon from '@mui/icons-material/HistoryRounded';
|
||||
import FamilyIcon from '@mui/icons-material/FamilyRestroomRounded';
|
||||
// Messaging (tickets) & notifications (f14/b15): support inbox + the message-send action
|
||||
import SupportIcon from '@mui/icons-material/SupportAgentRounded';
|
||||
import SendIcon from '@mui/icons-material/SendRounded';
|
||||
// Admin backoffice & partner consoles (f15/b15): config, holidays, audit, alerts, moderation, partners, refunds
|
||||
import CalendarIcon from '@mui/icons-material/CalendarMonthRounded';
|
||||
import AuditIcon from '@mui/icons-material/FactCheckRounded';
|
||||
import AlertsIcon from '@mui/icons-material/NotificationImportantRounded';
|
||||
import ModerationIcon from '@mui/icons-material/GavelRounded';
|
||||
import PartnersIcon from '@mui/icons-material/ApartmentRounded';
|
||||
import RolesIcon from '@mui/icons-material/ManageAccountsRounded';
|
||||
import RefundsIcon from '@mui/icons-material/CurrencyExchangeRounded';
|
||||
import DownloadIcon from '@mui/icons-material/FileDownloadRounded';
|
||||
import ExpandIcon from '@mui/icons-material/ExpandMoreRounded';
|
||||
import ExternalIcon from '@mui/icons-material/OpenInNewRounded';
|
||||
import AssignIcon from '@mui/icons-material/AssignmentIndRounded';
|
||||
// Cross-cutting affordances: back/forward navigation, share/copy, attachments
|
||||
import BackIcon from '@mui/icons-material/ArrowBackRounded';
|
||||
import ForwardIcon from '@mui/icons-material/ArrowForwardRounded';
|
||||
import ShareIcon from '@mui/icons-material/ShareRounded';
|
||||
import CopyIcon from '@mui/icons-material/ContentCopyRounded';
|
||||
import AttachmentIcon from '@mui/icons-material/AttachFileRounded';
|
||||
import LanguageIcon from '@mui/icons-material/TranslateRounded';
|
||||
// Auth & first-run (ui-phase-3): the onboarding relation fork needs a distinct glyph per option
|
||||
import FavoriteIcon from '@mui/icons-material/FavoriteRounded';
|
||||
/*
|
||||
* 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
|
||||
@@ -110,108 +126,156 @@ export type IconName = keyof typeof ICONS;
|
||||
|
||||
/**
|
||||
* How to use:
|
||||
* 1. Import all required React, MUI or other SVG icons into this file.
|
||||
* 2. Add icons with "unique lowercase names" into ICONS object. Lowercase is a must!
|
||||
* 3. Use icons everywhere in the App by their names in <Icon icon="xxx" /> component
|
||||
* 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 <Icon icon="someIconByName" /> component
|
||||
* Note: You can use camelCase or UPPERCASE in the <AppIcon icon="someIconByName" /> component
|
||||
*/
|
||||
export const ICONS /* Note: Setting type disables property autocomplete :( was - : Record<string, ComponentType> */ = {
|
||||
default: DefaultIcon,
|
||||
export const ICONS = {
|
||||
// ── Chrome & navigation ───────────────────────────────────────────────
|
||||
default: Ellipsis,
|
||||
logo: LogoMark,
|
||||
close: CloseIcon,
|
||||
menu: MenuIcon,
|
||||
search: SearchIcon,
|
||||
info: InfoIcon,
|
||||
home: HomeIcon,
|
||||
account: AccountCircleIcon,
|
||||
logout: ExitToAppIcon,
|
||||
notifications: NotificationsIcon,
|
||||
error: DangerousIcon,
|
||||
bookings: EventNoteIcon,
|
||||
patients: GroupsIcon,
|
||||
users: PeopleAltIcon,
|
||||
wallet: WalletIcon,
|
||||
profile: AccountCircleIcon,
|
||||
dashboard: DashboardIcon,
|
||||
verification: VerifiedUserIcon,
|
||||
verified: CheckCircleIcon,
|
||||
pending: HourglassEmptyIcon,
|
||||
rejected: CancelIcon,
|
||||
visits: MedicalServicesIcon,
|
||||
admin: AdminPanelSettingsIcon,
|
||||
add: AddIcon,
|
||||
edit: EditIcon,
|
||||
archive: ArchiveIcon,
|
||||
bank: BankIcon,
|
||||
camera: CameraIcon,
|
||||
warning: WarningIcon,
|
||||
location: LocationIcon,
|
||||
delete: DeleteIcon,
|
||||
coverage: CoverageIcon,
|
||||
services: ServicesIcon,
|
||||
category: CategoryIcon,
|
||||
elderly: ElderlyIcon,
|
||||
post_surgery: PostSurgeryIcon,
|
||||
infant: InfantIcon,
|
||||
chronic: ChronicIcon,
|
||||
companionship: CompanionshipIcon,
|
||||
upload: UploadIcon,
|
||||
document: DocumentIcon,
|
||||
refresh: RefreshIcon,
|
||||
identity: IdentityIcon,
|
||||
license: LicenseIcon,
|
||||
publish: PublishIcon,
|
||||
star: StarIcon,
|
||||
star_half: StarHalfIcon,
|
||||
tune: TuneIcon,
|
||||
sort: SortIcon,
|
||||
requests: RequestsIcon,
|
||||
payment: PaymentIcon,
|
||||
check_in: CheckInIcon,
|
||||
check_out: CheckOutIcon,
|
||||
gps: GpsIcon,
|
||||
schedule: ScheduleIcon,
|
||||
clinical: ClinicalIcon,
|
||||
medication: MedicationIcon,
|
||||
emergency: EmergencyIcon,
|
||||
phone: PhoneIcon,
|
||||
lock: LockIcon,
|
||||
navigate: NavigateIcon,
|
||||
installments: InstallmentsIcon,
|
||||
earnings: EarningsIcon,
|
||||
notes: NotesIcon,
|
||||
routine: RoutineIcon,
|
||||
tasks: TasksIcon,
|
||||
history: HistoryIcon,
|
||||
family: FamilyIcon,
|
||||
support: SupportIcon,
|
||||
send: SendIcon,
|
||||
config: TuneIcon,
|
||||
calendar: CalendarIcon,
|
||||
audit: AuditIcon,
|
||||
alerts: AlertsIcon,
|
||||
moderation: ModerationIcon,
|
||||
partners: PartnersIcon,
|
||||
roles: RolesIcon,
|
||||
refunds: RefundsIcon,
|
||||
download: DownloadIcon,
|
||||
expand: ExpandIcon,
|
||||
external: ExternalIcon,
|
||||
assign: AssignIcon,
|
||||
back: BackIcon,
|
||||
chevron_start: BackIcon,
|
||||
forward: ForwardIcon,
|
||||
share: ShareIcon,
|
||||
copy: CopyIcon,
|
||||
attachment: AttachmentIcon,
|
||||
language: LanguageIcon,
|
||||
favorite: FavoriteIcon,
|
||||
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"). AppIcon applies the flip via a `data-icon-directional`
|
||||
* attribute + the single CSS rule in globals.css — add a name here, nothing else.
|
||||
* 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', 'forward', 'send']);
|
||||
export const DIRECTIONAL_ICONS = new Set<IconName>([
|
||||
'back',
|
||||
'chevron_start',
|
||||
'chevron_end',
|
||||
'forward',
|
||||
'send',
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user