import { useState } from 'react' import { Package } from 'lucide-react' import type { EhAppIndexed } from '@env-hopper/backend-core' import { useBootstrapConfig } from '~/modules/config/BootstrapConfigContext' interface AppIconProps { app: EhAppIndexed className?: string } export function AppIcon({ app, className = 'w-4 h-4' }: AppIconProps) { const { appsMeta } = useBootstrapConfig() const [imageError, setImageError] = useState(false) const handleImageError = () => { setImageError(true) } // Determine icon source with fallback chain: // 1. app.iconName -> /static/icon/${iconName} // 2. indexData.appsMeta.defaultIcon -> /static/icon/${defaultIcon} // 3. Package icon (default) const getIconSrc = (): string | null => { if (app.iconName) { return `/static/icon/${app.iconName}` } if (appsMeta.defaultIcon) { return `/static/icon/${appsMeta.defaultIcon}` } return null } const iconSrc = getIconSrc() // Use icon if available and no error, otherwise fallback to Package icon if (iconSrc && !imageError) { return ( {`${app.displayName} ) } return }