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;