import { ComponentType } from "react"; import { View, ViewStyle, ViewProps } from "react-native"; // Import all complex icons from original that don't have optimized versions import * as OriginalIcons from "./lucide-icons-original-full"; interface IconProps { size?: number; color?: string; strokeWidth?: number; style?: ViewStyle; } interface SvgProps extends Omit { width: number; height: number; viewBox: string; children: React.ReactNode; style?: ViewStyle; } // Optimized helper components const Svg = ({ width, height, viewBox, children, style, ...props }: SvgProps) => { const [, , vbWidth, vbHeight] = viewBox.split(" ").map(Number); const scaleX = width / vbWidth; const scaleY = height / vbHeight; return ( {children} ); }; interface LineProps { x1: number; y1: number; x2: number; y2: number; stroke: string; strokeWidth?: number; } const Line = ({ x1, y1, x2, y2, stroke, strokeWidth = 2 }: LineProps) => { 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 CircleProps { cx: number; cy: number; r: number; fill?: string; stroke?: string; strokeWidth?: number; } const Circle = ({ cx, cy, r, fill, stroke, strokeWidth = 2 }: CircleProps) => ( ); interface RectProps { x: number; y: number; width: number; height: number; fill?: string; stroke?: string; strokeWidth?: number; rx?: number; ry?: number; } const Rect = ({ x, y, width, height, fill, stroke, strokeWidth = 2, rx = 0, ry, }: RectProps) => ( ); // Icons Being Reviewed (Exact Originals) export const Activity = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const AlertTriangle = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Check = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const CheckCircle = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const ChevronDown = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const ChevronLeft = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const ChevronRight = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const ChevronUp = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Clock = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Copy = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Edit3 = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Eye = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const EyeOff = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const FileCode = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const FileText = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Filter = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const FlaskConical = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const GitBranch = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const HardDrive = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Hash = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Info = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Key = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Layers = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Minus = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Maximize2 = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Top-left corner */} {/* Top-right corner */} {/* Bottom-left corner */} {/* Bottom-right corner */} ); /** * Icon showing a rectangle docked to the bottom - indicates "dock to bottom sheet" * Used when modal is floating and clicking will dock it to bottom */ export const DockBottom = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Outer rectangle frame */} {/* Bottom panel indicator - filled rectangle at bottom */} ); /** * Icon showing a floating window with offset shadow - indicates "make floating" * Used when modal is bottom sheet and clicking will make it float */ export const FloatWindow = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Main floating window */} {/* Shadow/offset indicator showing it's floating */} ); export const Palette = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Pause = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Play = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Plus = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const RefreshCw = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Search = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Settings = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Shield = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const TestTube2 = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Trash2 = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const X = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const XCircle = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Zap = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const Square = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const CheckSquare = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); export const SquareDashed = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Top edge segments */} {/* Bottom edge segments */} {/* Left edge segments */} {/* Right edge segments */} ); export const Box = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( ); // AlertOctagon - simplified octagon with exclamation mark (using XCircle as fallback) export const AlertOctagon = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Using a square with cut corners to approximate octagon */} {/* Exclamation mark */} ); // HelpCircle - circle with question mark export const HelpCircle = ({ size = 24, color = "currentColor", strokeWidth = 2, ...props }: IconProps) => ( {/* Simplified question mark using lines */} ); // Re-export ALL icons from original implementation // Icons that have optimized versions above will use those // Icons without optimized versions will use originals // Re-export icons with Icon suffix for compatibility export const ActivityIcon = Activity; // Uses optimized version export const AlertTriangleIcon = AlertTriangle; // Uses optimized version export const BoxIcon = Box; // Uses optimized version export const CheckIcon = Check; // Uses optimized version export const CheckCircleIcon = CheckCircle; // Uses optimized version export const ChevronDownIcon = ChevronDown; // Uses optimized version export const ChevronLeftIcon = ChevronLeft; // Uses optimized version export const ChevronRightIcon = ChevronRight; // Uses optimized version export const ChevronUpIcon = ChevronUp; // Uses optimized version export const ClockIcon = Clock; // Uses optimized version export const CopyIcon = Copy; // Uses optimized version export const Edit3Icon = Edit3; // Uses optimized version export const EyeIcon = Eye; // Uses optimized version export const EyeOffIcon = EyeOff; // Uses optimized version export const FileCodeIcon = FileCode; // Uses optimized version export const FileTextIcon = FileText; // Uses optimized version export const FilterIcon = Filter; // Uses optimized version export const FlaskConicalIcon = FlaskConical; // Uses optimized version export const GitBranchIcon = GitBranch; // Uses optimized version export const HardDriveIcon = HardDrive; // Uses optimized version export const HashIcon = Hash; // Uses optimized version export const InfoIcon = Info; // Uses optimized version export const KeyIcon = Key; // Uses optimized version export const LayersIcon = Layers; // Uses optimized version export const Maximize2Icon = Maximize2; // Uses optimized version export const MinusIcon = Minus; // Uses optimized version export const PaletteIcon = Palette; // Uses optimized version export const PauseIcon = Pause; // Uses optimized version export const PlayIcon = Play; // Uses optimized version export const PlusIcon = Plus; // Uses optimized version export const RefreshCwIcon = RefreshCw; // Uses optimized version export const SearchIcon = Search; // Uses optimized version export const SettingsIcon = Settings; // Uses optimized version export const ShieldIcon = Shield; // Uses optimized version export const TestTube2Icon = TestTube2; // Uses optimized version export const Trash2Icon = Trash2; // Uses optimized version export const XIcon = X; // Uses optimized version export const XCircleIcon = XCircle; // Uses optimized version export const ZapIcon = Zap; // Uses optimized version export const SquareIcon = Square; // Uses optimized version export const CheckSquareIcon = CheckSquare; // Uses optimized version export const SquareDashedIcon = SquareDashed; // Uses optimized version // Re-export complex icons that don't have optimized versions export const Bug = OriginalIcons.BugIcon; export const Database = OriginalIcons.DatabaseIcon; export const Globe = OriginalIcons.GlobeIcon; export const Wifi = OriginalIcons.WifiIcon; export const AlertCircle = OriginalIcons.AlertCircleIcon; export const CheckCircle2 = OriginalIcons.CheckCircle2Icon; export const Server = OriginalIcons.ServerIcon; export const Power = OriginalIcons.PowerIcon; export const Upload = OriginalIcons.UploadIcon; export const Download = OriginalIcons.DownloadIcon; export const Lock = OriginalIcons.LockIcon; export const Unlock = OriginalIcons.UnlockIcon; export const FileJson = OriginalIcons.FileJsonIcon; export const Link = OriginalIcons.LinkIcon; export const Hand = OriginalIcons.HandIcon; export const Route = OriginalIcons.RouteIcon; export const Trash = OriginalIcons.TrashIcon; export const TriangleAlert = OriginalIcons.TriangleAlertIcon; export const User = OriginalIcons.UserIcon; // Additional icons from original that weren't included yet export const BarChart3 = OriginalIcons.BarChart3; export const BarChart3Icon = OriginalIcons.BarChart3Icon; export const Cloud = OriginalIcons.Cloud; export const CloudIcon = OriginalIcons.CloudIcon; export const Film = OriginalIcons.Film; export const FilmIcon = OriginalIcons.FilmIcon; export const Image = OriginalIcons.Image; export const ImageIcon = OriginalIcons.ImageIcon; export const Music = OriginalIcons.Music; export const MusicIcon = OriginalIcons.MusicIcon; export const Navigation = OriginalIcons.Navigation; export const NavigationIcon = OriginalIcons.NavigationIcon; export const Phone = OriginalIcons.Phone; export const PhoneIcon = OriginalIcons.PhoneIcon; export const Smartphone = OriginalIcons.Smartphone; export const SmartphoneIcon = OriginalIcons.SmartphoneIcon; export const Timer = OriginalIcons.Timer; export const TimerIcon = OriginalIcons.TimerIcon; export const Touchpad = OriginalIcons.Touchpad; export const TouchpadIcon = OriginalIcons.TouchpadIcon; export const Users = OriginalIcons.Users; export const UsersIcon = OriginalIcons.UsersIcon; export const Volume = OriginalIcons.Volume; export const VolumeIcon = OriginalIcons.VolumeIcon; // Re-export additional Icon-suffixed versions from original export const BugIcon = OriginalIcons.BugIcon; export const DatabaseIcon = OriginalIcons.DatabaseIcon; export const GlobeIcon = OriginalIcons.GlobeIcon; export const WifiIcon = OriginalIcons.WifiIcon; export const AlertCircleIcon = OriginalIcons.AlertCircleIcon; export const CheckCircle2Icon = OriginalIcons.CheckCircle2Icon; export const ServerIcon = OriginalIcons.ServerIcon; export const PowerIcon = OriginalIcons.PowerIcon; export const UploadIcon = OriginalIcons.UploadIcon; export const DownloadIcon = OriginalIcons.DownloadIcon; export const LockIcon = OriginalIcons.LockIcon; export const UnlockIcon = OriginalIcons.UnlockIcon; export const FileJsonIcon = OriginalIcons.FileJsonIcon; export const LinkIcon = OriginalIcons.LinkIcon; export const HandIcon = OriginalIcons.HandIcon; export const RouteIcon = OriginalIcons.RouteIcon; export const TrashIcon = OriginalIcons.TrashIcon; export const TriangleAlertIcon = OriginalIcons.TriangleAlertIcon; export const UserIcon = OriginalIcons.UserIcon; // Export types export type { IconProps }; export type LucideIcon = ComponentType;