import { ComponentType, Fragment } from "react"; import { View, ViewStyle, ViewProps } from "react-native"; import { gameUIColors } from "../ui/gameUI/constants/gameUIColors"; interface IconProps { size?: number; color?: string; strokeWidth?: number; style?: ViewStyle; } interface PureSvgProps extends Omit { width: number; height: number; viewBox: string; children: React.ReactNode; style?: ViewStyle; } // Core helper components with proper sizing const PureSvg = ({ width, height, viewBox, children, style, ...props }: PureSvgProps) => { const [, , vbWidth, vbHeight] = viewBox.split(" ").map(Number); const scaleX = width / vbWidth; const scaleY = height / vbHeight; return ( {children} ); }; interface PureLineProps { x1: number; y1: number; x2: number; y2: number; stroke: string; strokeWidth?: number; } const PureLine = ({ x1, y1, x2, y2, stroke, strokeWidth = 2, }: PureLineProps) => { const length = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); const angle = Math.atan2(y2 - y1, x2 - x1) * (180 / Math.PI); return ( ); }; interface PureCircleProps { cx: number; cy: number; r: number; fill?: string; stroke?: string; strokeWidth?: number; } const PureCircle = ({ cx, cy, r, fill, stroke, strokeWidth = 2, }: PureCircleProps) => { const diameter = r * 2; return ( ); }; interface PureRectProps { x: number; y: number; width: number; height: number; fill?: string; stroke?: string; strokeWidth?: number; rx?: number; } const PureRect = ({ x, y, width, height, fill, stroke, strokeWidth = 2, rx = 0, }: PureRectProps) => ( ); // IMPROVED WIFI ICON - Using cone shape for perfect WiFi arcs export const WifiIcon = ({ size = 1, color = "currentColor", strokeWidth = 2, }: IconProps) => { const strength = 4; const scale = 28 / 60; strokeWidth = 4 * scale; return ( {/* Center dot */} {/* Arcs with rotation to show more curve */} {strength >= 2 && ( )} {strength >= 3 && ( )} {strength >= 4 && ( )} ); }; // SIMPLIFIED SETTINGS ICON - Minimal gear export const SettingsIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Outer gear circle */} {/* Inner settings circle */} {/* Simple gear teeth as lines */} ); // SIMPLIFIED CLOUD ICON export const CloudIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Simple cloud using circles */} {/* Bottom rectangle to connect */} ); // SIMPLIFIED PHONE ICON export const PhoneIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Simple phone shape with rounded corners */} {/* Connecting line */} ); // SIMPLIFIED VOLUME ICON export const VolumeIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Speaker box */} {/* Speaker cone triangle */} {/* Sound waves - simple arcs */} ); // SIMPLIFIED EYE ICON export const EyeIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Simple eye outline */} {/* Iris */} {/* Pupil */} ); // SIMPLIFIED EYE OFF ICON export const EyeOffIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Simple eye outline */} {/* Iris */} {/* Diagonal line through */} ); // SIMPLIFIED REFRESH ICON export const RefreshCwIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Circle with gap */} {/* Arrow heads */} ); // SIMPLIFIED SHIELD ICON export const ShieldIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Simple shield outline using lines */} {/* Check mark inside */} ); // SIMPLIFIED PALETTE ICON export const PaletteIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Simple circle palette */} {/* Paint dots in simple pattern */} {/* Thumb hole */} ); // SIMPLIFIED HAND ICON export const HandIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Simple hand outline */} {/* Fingers as simple lines */} {/* Thumb */} ); // Copy all the rest of the existing icons from the original file... // (I'll include the key ones that are visible in your screenshots) export const ActivityIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); // SIMPLIFIED DATABASE ICON export const DatabaseIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Top cylinder */} {/* Middle section */} {/* Bottom cylinder */} {/* Horizontal dividers */} ); export const BugIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => { const scale = 20 / 30; return ( {/* Bug body - oval shape */} {/* Head */} {/* Antennae */} {/* Eyes (white dots on head) */} {/* Legs - 6 total */} {[0, 1, 2].map((index) => ( {/* Left leg */} {/* Right leg */} ))} ); }; export const ServerIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => { const scale = 20 / 30; return ( {/* Screen */} {/* Screen display */} {/* Base */} {/* Notch/opening indicator */} ); }; export const GlobeIcon = ({ size = 24, color = gameUIColors.env, strokeWidth = 2, ...props }: IconProps) => { color = gameUIColors.env; const scale = size / 24; const globeSize = 18 * scale; return ( {/* Main globe with glow */} {/* Vertical meridian */} {/* Horizontal equator */} ); }; export const XIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); // IMPROVED CHECK CIRCLE ICON export const CheckCircle2Icon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Check mark */} ); // IMPROVED X CIRCLE ICON export const XCircleIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* X marks */} ); // SIMPLIFIED FILE CODE ICON export const FileCodeIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* File body */} {/* File fold corner */} {/* Simple code symbols < > */} ); // IMPROVED FILE TEXT ICON export const FileTextIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* File body */} {/* File corner */} {/* Text lines */} ); // SIMPLIFIED FILE JSON ICON export const FileJsonIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* File body */} {/* File fold corner */} {/* Simple JSON braces { } */} ); // SIMPLIFIED TEST TUBE ICON export const TestTube2Icon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Test tube outline */} {/* Cork/top */} {/* Liquid level */} {/* Liquid fill */} ); // SIMPLIFIED FLASK ICON export const FlaskConicalIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Flask neck */} {/* Flask opening */} {/* Flask body - triangle */} {/* Liquid level */} ); // IMPROVED TRASH ICON export const Trash2Icon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Trash can body */} {/* Top rim */} {/* Handle */} {/* Vertical lines */} ); // IMPROVED HASH ICON export const HashIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Horizontal lines */} {/* Vertical lines */} ); // IMPROVED USERS ICON export const UsersIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* First user head */} {/* First user body */} {/* Second user head */} {/* Second user body */} ); // SIMPLIFIED BOX ICON export const BoxIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Box front face */} {/* Box top - simple lines for 3D effect */} {/* Tape/opening line */} ); // SIMPLIFIED KEY ICON export const KeyIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Key head */} {/* Key hole */} {/* Key shaft */} {/* Simple teeth */} ); // SIMPLIFIED ROUTE ICON export const RouteIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Start point */} {/* End point */} {/* Simple connecting line */} {/* Direction arrow */} ); // SIMPLIFIED TRIANGLE ALERT ICON export const TriangleAlertIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Triangle outline */} {/* Exclamation mark */} ); // SIMPLIFIED UNLOCK ICON export const UnlockIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Lock body */} {/* Open shackle - not connected */} {/* Keyhole */} ); // SIMPLIFIED IMAGE ICON export const ImageIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Image frame */} {/* Sun circle */} {/* Simple mountain */} ); // SIMPLIFIED FILM ICON export const FilmIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Film strip outline */} {/* Film perforations - simplified */} {/* Center divider lines */} ); // SIMPLIFIED MUSIC ICON export const MusicIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Note stem */} {/* Flag/beam */} {/* Note head */} ); // SIMPLIFIED TIMER ICON export const TimerIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Clock circle */} {/* Timer button on top */} {/* Clock hand */} ); // SIMPLIFIED SMARTPHONE ICON export const SmartphoneIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Phone body */} {/* Screen area indicator */} {/* Home button/indicator */} ); // SIMPLIFIED LAYERS ICON export const LayersIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Bottom layer */} {/* Middle layer */} {/* Top layer */} ); // SIMPLIFIED NAVIGATION ICON export const NavigationIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Simple arrow pointer */} ); // SIMPLIFIED TOUCHPAD ICON export const TouchpadIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Trackpad outline */} {/* Click button divider */} ); // IMPROVED BAR CHART ICON export const AlertCircleIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const AlertTriangleIcon = TriangleAlertIcon; export const CheckIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const CheckCircleIcon = CheckCircle2Icon; export const ChevronDownIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const ChevronLeftIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const ChevronRightIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const ChevronUpIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const ClockIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const CopyIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const DownloadIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); // SIMPLIFIED FILTER ICON export const FilterIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Funnel shape with lines */} ); // SIMPLIFIED GIT BRANCH ICON export const GitBranchIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Main line */} {/* Branch line */} {/* Circle nodes */} ); // SIMPLIFIED LINK ICON export const LinkIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Two chain links */} {/* Left link */} {/* Right link */} ); export const PauseIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const PlayIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const PlusIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const TrashIcon = Trash2Icon; export const UploadIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); // SIMPLIFIED ZAP ICON export const ZapIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Lightning bolt shape */} ); export const UserIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const LockIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); // SIMPLIFIED POWER ICON export const PowerIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Power circle */} {/* Power line */} ); export const SearchIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const InfoIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const MinusIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const BarChart3Icon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Y axis */} {/* X axis */} {/* Bars */} ); // IMPROVED HARD DRIVE ICON export const HardDriveIcon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Drive body */} {/* Drive separator */} {/* Power LED */} {/* Activity LED */} {/* Cables */} ); // Export aliases for convenience (without "Icon" suffix) export const Activity = ActivityIcon; export const AlertCircle = AlertCircleIcon; export const AlertTriangle = AlertTriangleIcon; export const BarChart3 = BarChart3Icon; export const Box = BoxIcon; export const Bug = BugIcon; export const Check = CheckIcon; export const CheckCircle = CheckCircleIcon; export const CheckCircle2 = CheckCircle2Icon; export const ChevronDown = ChevronDownIcon; export const ChevronLeft = ChevronLeftIcon; export const ChevronRight = ChevronRightIcon; export const ChevronUp = ChevronUpIcon; export const Clock = ClockIcon; export const Cloud = CloudIcon; export const Copy = CopyIcon; export const Database = DatabaseIcon; export const Download = DownloadIcon; export const Eye = EyeIcon; export const EyeOff = EyeOffIcon; export const FileCode = FileCodeIcon; export const FileJson = FileJsonIcon; export const FileText = FileTextIcon; export const Film = FilmIcon; export const Filter = FilterIcon; export const FlaskConical = FlaskConicalIcon; export const GitBranch = GitBranchIcon; export const Globe = GlobeIcon; export const Hand = HandIcon; export const HardDrive = HardDriveIcon; export const Hash = HashIcon; export const Image = ImageIcon; export const Info = InfoIcon; export const Key = KeyIcon; export const Layers = LayersIcon; export const Link = LinkIcon; export const Lock = LockIcon; export const Minus = MinusIcon; export const Music = MusicIcon; export const Navigation = NavigationIcon; export const Palette = PaletteIcon; export const Pause = PauseIcon; export const Phone = PhoneIcon; export const Play = PlayIcon; export const Plus = PlusIcon; export const Power = PowerIcon; export const RefreshCw = RefreshCwIcon; export const Route = RouteIcon; export const Search = SearchIcon; export const Server = ServerIcon; export const Settings = SettingsIcon; export const Shield = ShieldIcon; export const Smartphone = SmartphoneIcon; export const TestTube2 = TestTube2Icon; export const Timer = TimerIcon; export const Touchpad = TouchpadIcon; export const Trash = TrashIcon; export const Trash2 = Trash2Icon; export const TriangleAlert = TriangleAlertIcon; export const Unlock = UnlockIcon; export const Upload = UploadIcon; export const User = UserIcon; export const Users = UsersIcon; export const Volume = VolumeIcon; export const Wifi = WifiIcon; export const X = XIcon; export const XCircle = XCircleIcon; export const Zap = ZapIcon; // Additional aliases for commonly used icons export const Edit3 = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Pencil outline */} {/* Pencil tip */} {/* Edit marks */} ); // Type export for icon component props export type { IconProps }; export type LucideIcon = ComponentType;