/** * PluginCard — grid card for a single plugin in the catalog. */ import { Badge } from '@renderer/components/ui/badge'; import { useStore } from '@renderer/store'; import { getCapabilityLabel, inferCapabilities, normalizeCategory, } from '@shared/utils/extensionNormalizers'; import { InstallButton } from '../common/InstallButton'; import { InstallCountBadge } from '../common/InstallCountBadge'; import type { EnrichedPlugin } from '@shared/types/extensions'; interface PluginCardProps { plugin: EnrichedPlugin; onClick: (pluginId: string) => void; } export const PluginCard = ({ plugin, onClick }: PluginCardProps): React.JSX.Element => { const capabilities = inferCapabilities(plugin); const category = normalizeCategory(plugin.category); const installProgress = useStore((s) => s.pluginInstallProgress[plugin.pluginId] ?? 'idle'); const installPlugin = useStore((s) => s.installPlugin); const uninstallPlugin = useStore((s) => s.uninstallPlugin); const installError = useStore((s) => s.installErrors[plugin.pluginId]); return ( ); };