18F/identity-idp

View on GitHub
app/javascript/packages/document-capture/components/status-message.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import type { ReactNode } from 'react';

export enum Status {
  ERROR = 'ERROR',
  SUCCESS = 'SUCCESS',
}

interface StatusMessageProps {
  id: string;
  status: Status;
  className?: string;
  children?: ReactNode;
}

function StatusMessage({ id, status, className, children }: StatusMessageProps) {
  const classes = [
    status === Status.ERROR && 'usa-error-message',
    status === Status.SUCCESS && 'usa-success-message',
    !children && 'display-none',
    className,
  ]
    .filter(Boolean)
    .join(' ');

  const role = status === Status.ERROR ? 'alert' : 'status';

  return (
    <span role={role} className={classes} id={id}>
      {children}
    </span>
  );
}

export default StatusMessage;