import type { FunctionComponent } from 'react'; import { Fragment, useMemo } from 'react'; import { SeverityCriticalIcon, SeverityImportantIcon, SeverityMinorIcon, SeverityModerateIcon, SeverityNoneIcon, SeverityUndefinedIcon } from '@patternfly/react-icons'; import { Flex, FlexItem } from '@patternfly/react-core'; const severityLevels = (severity: SeverityType) => { switch (severity) { case 'critical': return ; case 'important': return ; case 'minor': return ; case 'moderate': return ; case 'none': return ; default: return ; } }; export const SeverityType = { critical: 'critical', important: 'important', minor: 'minor', moderate: 'moderate', none: 'none', undefined: 'undefined', } as const; export type SeverityType = (typeof SeverityType)[keyof typeof SeverityType]; export interface SeverityProps extends React.DetailedHTMLProps, HTMLElement> { /** Determines a variant of displayed severity */ severity: SeverityType; /** Label displayed next to the severity */ label: React.ReactNode; /** Option to hide the label */ labelHidden?: boolean; /** Custom className */ className?: string; /** Custom OUIA ID */ ouiaId?: string | number; } export const Severity: FunctionComponent = ({ severity, label, labelHidden, ouiaId = 'Severity-icon', ...props }: SeverityProps) => { const title = { title: `${severity} ${label}` }; const severityVariant = useMemo(() => severityLevels(severity), [ severity ]); return ( ( {/* eslint-disable-next-line react/no-unknown-property */} {severityVariant} {!labelHidden && label} ) ); }; export default Severity;