* feat: enable TS strict mode * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: colors bug with default * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: text type errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors - add definite assignment assertion * fix: strict TS errors - add definite assignment assertion * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix(ESLint): error on no-explicit-any * fix: type annotations for any types * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors (and remove packages) * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * fix: strict TS errors * feat: enable React.StrictMode * fix: strict TS errors (done!) * fix: build error * fix: replace no-explicit-any assertions * refactor: cleanup * refactor: more cleanup * style: prettier --------- Co-authored-by: Lukas Zenick <lukas@utexas.edu> Co-authored-by: Razboy20 <razboy20@gmail.com>
29 lines
911 B
TypeScript
29 lines
911 B
TypeScript
import type { StatusType } from '@shared/types/Course';
|
|
import { Status } from '@shared/types/Course';
|
|
import type { SVGProps } from 'react';
|
|
import React from 'react';
|
|
|
|
import ClosedIcon from '~icons/material-symbols/lock';
|
|
import WaitlistIcon from '~icons/material-symbols/timelapse';
|
|
import CancelledIcon from '~icons/material-symbols/warning';
|
|
|
|
/**
|
|
* Get Icon component based on status
|
|
* @param props.status status
|
|
* @returns the icon component
|
|
*/
|
|
export function StatusIcon(props: SVGProps<SVGSVGElement> & { status: StatusType }): JSX.Element | null {
|
|
const { status, ...rest } = props;
|
|
|
|
switch (props.status) {
|
|
case Status.WAITLISTED:
|
|
return <WaitlistIcon {...rest} />;
|
|
case Status.CLOSED:
|
|
return <ClosedIcon {...rest} />;
|
|
case Status.CANCELLED:
|
|
return <CancelledIcon {...rest} />;
|
|
default:
|
|
return null;
|
|
}
|
|
}
|