/** * SoftwareSourceBadge Component * * Displays a badge for software source types from Fleet MDM. * Supports all osquery software source types with appropriate styling. * * Fleet MDM Software Sources: * - apps: macOS Applications * - chrome_extensions: Chrome Browser Extensions * - firefox_addons: Firefox Browser Extensions * - safari_extensions: Safari Browser Extensions * - ie_extensions: Internet Explorer Extensions * - vscode_extensions: VS Code Extensions * - atom_packages: Atom Packages * - homebrew_packages: Homebrew Packages (macOS) * - npm_packages: NPM Packages * - python_packages: Python Packages * - apt_sources: APT Packages (Debian/Ubuntu) * - deb_packages: DEB Packages * - rpm_packages: RPM Packages (Red Hat/CentOS) * - yum_sources: YUM Packages * - portage_packages: Portage Packages (Gentoo) * - chocolatey_packages: Chocolatey Packages (Windows) * - programs: Windows Programs * - pkg_packages: PKG Packages * * @example * ```tsx * * * * ``` */ import React from 'react' import { PackageIcon, WindowsIcon, MacOSIcon, LinuxIcon } from '../icons' import { cn } from '../../utils/common' export type SoftwareSource = | 'apps' | 'chrome_extensions' | 'firefox_addons' | 'safari_extensions' | 'ie_extensions' | 'vscode_extensions' | 'atom_packages' | 'homebrew_packages' | 'npm_packages' | 'python_packages' | 'apt_sources' | 'deb_packages' | 'rpm_packages' | 'yum_sources' | 'portage_packages' | 'chocolatey_packages' | 'programs' | 'pkg_packages' export interface SoftwareSourceBadgeProps { /** Software source type from Fleet MDM */ source: SoftwareSource /** Additional CSS classes */ className?: string } /** * Maps source types to human-readable labels and icons */ const sourceConfig: Record = { apps: { label: 'App', icon: }, chrome_extensions: { label: 'Chrome', icon: }, firefox_addons: { label: 'Firefox', icon: }, safari_extensions: { label: 'Safari', icon: }, ie_extensions: { label: 'IE', icon: }, vscode_extensions: { label: 'VS Code', icon: }, atom_packages: { label: 'Atom', icon: }, homebrew_packages: { label: 'Homebrew', icon: }, npm_packages: { label: 'NPM', icon: }, python_packages: { label: 'Python', icon: }, apt_sources: { label: 'APT', icon: }, deb_packages: { label: 'DEB', icon: }, rpm_packages: { label: 'RPM', icon: }, yum_sources: { label: 'YUM', icon: }, portage_packages: { label: 'Portage', icon: }, chocolatey_packages: { label: 'Chocolatey', icon: }, programs: { label: 'Windows', icon: }, pkg_packages: { label: 'PKG', icon: } } export const SoftwareSourceBadge: React.FC = ({ source, className }) => { const config = sourceConfig[source] || { label: source, icon: } return ( {config.icon} {config.label} ) } SoftwareSourceBadge.displayName = 'SoftwareSourceBadge'