/** * REFLY: кастомные иконки бренда + маппинги Lucide для Sidebar, статусов и общих действий. * Иконки в стиле Lucide: 24×24, stroke 2, round. */ import * as React from "react"; import type { LucideIcon } from "lucide-react"; import { LayoutDashboard, Building2, Plane, ClipboardList, CheckSquare, SearchCheck, AlertTriangle, Users, Calendar, Wrench, Bug, GitBranch, FileText, Inbox, BookOpen, Activity, History, Code2, BarChart2, User, HelpCircle, Settings, Landmark, Shield, File, Send, Search, CheckCircle2, XCircle, MessageSquareWarning, Clock, BadgeCheck, CircleDot, LoaderCircle, Check, Ban, MinusCircle, AlertOctagon, AlertCircle, FilePlus, Printer, Download, Bell, LogOut, Moon, Sun, } from "lucide-react"; /** Lucide-like props (compatible with lucide usage) */ export type ReflyIconProps = React.SVGProps & { size?: number | string }; const base = (props: ReflyIconProps) => { const { size = 24, ...rest } = props; return { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round" as const, strokeLinejoin: "round" as const, ...rest, }; }; /* ----------------------- REFLY brand primitives ----------------------- */ /** Shield container (brand geometry) */ export const ReflyShield = (props: ReflyIconProps) => ( ); /** Main compliance icon: shield + check + trajectory */ export const ReflyShieldCheck = (props: ReflyIconProps) => ( ); /** Non-compliance: shield + X */ export const ReflyShieldX = (props: ReflyIconProps) => ( ); /** Airworthiness: shield + trajectory + check */ export const ReflyAirworthiness = (props: ReflyIconProps) => ( ); /** Continued airworthiness: cycle + check */ export const ReflyContinuedAirworthiness = (props: ReflyIconProps) => ( ); /** Specialist: person + small badge */ export const ReflySpecialist = (props: ReflyIconProps) => ( ); /** Regulator: shield + star/marker (орган надзора) */ export const ReflyRegulator = (props: ReflyIconProps) => ( ); /** Aircraft (ВС) */ export const ReflyAircraft = (props: ReflyIconProps) => ( ); /** Audits: shield + magnifier */ export const ReflyAudits = (props: ReflyIconProps) => ( ); /** Documents */ export const ReflyDocuments = (props: ReflyIconProps) => ( ); /** Defects */ export const ReflyDefects = (props: ReflyIconProps) => ( ); /** Risks */ export const ReflyRisks = (props: ReflyIconProps) => ( ); /** Maintenance */ export const ReflyMaintenance = (props: ReflyIconProps) => ( ); /* ----------------------- ICON MAPS ----------------------- */ export type SidebarKey = | "dashboard" | "organizations" | "aircraft" | "applications" | "checklists" | "audits" | "risks" | "users" | "airworthiness" | "calendar" | "airworthiness-core" | "maintenance" | "defects" | "modifications" | "documents" | "inbox" | "regulations" | "monitoring" | "audit-history" | "api-docs" | "analytics" | "personnel-plg" | "profile" | "help" | "settings" | "fgis-revs" | "regulator"; export const sidebarIcons: Record> = { dashboard: LayoutDashboard, organizations: Building2, aircraft: ReflyAircraft, applications: ClipboardList, checklists: CheckSquare, audits: ReflyAudits, risks: ReflyRisks, users: Users, airworthiness: ReflyAirworthiness, calendar: Calendar, "airworthiness-core": ReflyContinuedAirworthiness, maintenance: ReflyMaintenance, defects: ReflyDefects, modifications: GitBranch, documents: ReflyDocuments, inbox: Inbox, regulations: BookOpen, monitoring: Activity, "audit-history": History, "api-docs": Code2, analytics: BarChart2, "personnel-plg": ReflySpecialist, profile: User, help: HelpCircle, settings: Settings, "fgis-revs": Landmark, regulator: ReflyRegulator, }; export type StatusKey = | "draft" | "submitted" | "under_review" | "approved" | "rejected" | "remarks" | "expired" | "active" | "grounded" | "maintenance" | "open" | "in_progress" | "completed" | "cancelled" | "compliant" | "non_compliant" | "not_applicable" | "critical" | "high" | "medium" | "low"; export const statusIcons: Record> = { draft: File, submitted: Send, under_review: Search, approved: CheckCircle2, rejected: XCircle, remarks: MessageSquareWarning, expired: Clock, active: BadgeCheck, grounded: Ban, maintenance: Wrench, open: CircleDot, in_progress: LoaderCircle, completed: Check, cancelled: Ban, compliant: ReflyShieldCheck, non_compliant: ReflyShieldX, not_applicable: MinusCircle, critical: AlertOctagon, high: AlertTriangle, medium: AlertCircle, low: Shield, }; export const commonIcons = { templates: FilePlus, print: Printer, export: Download, notifications: Bell, logout: LogOut, themeDark: Moon, themeLight: Sun, search: Search, } satisfies Record;