/**
* 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'