import {
  LucideAlignLeft as AlignLeft,
  LucideArrowDown as ArrowDown,
  LucideArrowLeft as ArrowLeft,
  LucideArrowRight as ArrowRight,
  LucideArrowUp as ArrowUp,
  LucideBadgeCheck as BadgeCheck,
  LucideBarChart3 as BarChart3,
  LucideBell as Bell,
  LucideBook as Book,
  LucideBoxes as Boxes,
  LucideBuilding2 as Building2,
  LucideCalendar as Calendar,
  LucideCheck as Check,
  LucideCheckCircle2 as CheckCircle2,
  LucideChevronDown as ChevronDown,
  LucideChevronLeft as ChevronLeft,
  LucideChevronRight as ChevronRight,
  LucideChevronUp as ChevronUp,
  LucideCircle as Circle,
  LucideClock as Clock,
  LucideCode2 as Code2,
  LucideCompass as Compass,
  LucideCopy as Copy,
  LucideCreditCard as CreditCard,
  LucideDatabase as Database,
  LucideDownload as Download,
  LucideFilter as Filter,
  LucideFlag as Flag,
  LucideFolder as Folder,
  LucideGlobe as Globe,
  LucideGripVertical as GripVertical,
  LucideHeart as Heart,
  LucideHelpCircle as HelpCircle,
  LucideHistory as History,
  LucideHome as Home,
  LucideImage as Image,
  LucideImages as Images,
  LucideInfo as Info,
  LucideLayoutGrid as LayoutGrid,
  LucideLineChart as LineChart,
  LucideLink as Link,
  LucideList as List,
  LucideLoader2 as Loader2,
  LucideLocate as Locate,
  LucideLock as Lock,
  LucideLogOut as LogOut,
  LucideMapPin as MapPin,
  LucideMegaphone as Megaphone,
  LucideMenu as Menu,
  LucideMinus as Minus,
  LucideMonitor as Monitor,
  LucideNetwork as Network,
  LucidePackage as Package,
  LucidePalette as Palette,
  LucidePencil as Pencil,
  LucidePlus as Plus,
  LucidePlusCircle as PlusCircle,
  LucideRefreshCw as RefreshCw,
  LucideSave as Save,
  LucideScale as Scale,
  LucideSearch as Search,
  LucideSettings as Settings,
  LucideShield as Shield,
  LucideShoppingCart as ShoppingCart,
  LucideSlidersHorizontal as SlidersHorizontal,
  LucideSquare as Square,
  LucideStar as Star,
  LucideStore as Store,
  LucideTable as Table,
  LucideTag as Tag,
  LucideTags as Tags,
  LucideThumbsDown as ThumbsDown,
  LucideThumbsUp as ThumbsUp,
  LucideTrash2 as Trash2,
  LucideTrendingUp as TrendingUp,
  LucideTriangleAlert as TriangleAlert,
  LucideUpload as Upload,
  LucideUser as User,
  LucideUsers as Users,
  LucideVideo as Video,
  LucideX as X,
  LucideXCircle as XCircle,
  LucideZap as Zap
} from '@lucide/angular';

/**
 * Canonical name -> Lucide icon map for the whole app (storefront + builder + backoffice).
 * One entry per concept so every screen renders the same icon for the same meaning
 * (RC UI Sprint - Icon & Visual Language Audit). Extend this list rather than
 * importing Lucide icons ad hoc in individual components.
 */
export const APP_ICONS = {
  home: Home,
  store: Store,
  cart: ShoppingCart,
  package: Package,
  boxes: Boxes,
  folder: Folder,
  tag: Tag,
  tags: Tags,
  users: Users,
  user: User,
  settings: Settings,
  chartBar: BarChart3,
  chartLine: LineChart,
  search: Search,
  filter: Filter,
  heart: Heart,
  scale: Scale,
  bell: Bell,
  image: Image,
  images: Images,
  palette: Palette,
  monitor: Monitor,
  shield: Shield,
  lock: Lock,
  database: Database,
  upload: Upload,
  download: Download,
  edit: Pencil,
  trash: Trash2,
  copy: Copy,
  save: Save,
  plus: Plus,
  plusCircle: PlusCircle,
  minus: Minus,
  refresh: RefreshCw,
  check: Check,
  checkCircle: CheckCircle2,
  x: X,
  xCircle: XCircle,
  arrowUp: ArrowUp,
  arrowDown: ArrowDown,
  arrowLeft: ArrowLeft,
  arrowRight: ArrowRight,
  chevronUp: ChevronUp,
  chevronDown: ChevronDown,
  chevronLeft: ChevronLeft,
  chevronRight: ChevronRight,
  info: Info,
  help: HelpCircle,
  warning: TriangleAlert,
  clock: Clock,
  calendar: Calendar,
  menu: Menu,
  alignLeft: AlignLeft,
  book: Book,
  building: Building2,
  code: Code2,
  compass: Compass,
  creditCard: CreditCard,
  flag: Flag,
  globe: Globe,
  grip: GripVertical,
  history: History,
  link: Link,
  list: List,
  locate: Locate,
  mapPin: MapPin,
  megaphone: Megaphone,
  logOut: LogOut,
  network: Network,
  slidersHorizontal: SlidersHorizontal,
  spinner: Loader2,
  star: Star,
  stop: Square,
  table: Table,
  layoutGrid: LayoutGrid,
  thumbsUp: ThumbsUp,
  thumbsDown: ThumbsDown,
  verified: BadgeCheck,
  video: Video,
  circle: Circle,
  zap: Zap,
  trendingUp: TrendingUp
} as const;

export type AppIconName = keyof typeof APP_ICONS;
