diff --git a/src/components/BannerNotification/BannerNotification.tsx b/src/components/BannerNotification/BannerNotification.tsx index 92fffc5d4..0f6b4dc53 100644 --- a/src/components/BannerNotification/BannerNotification.tsx +++ b/src/components/BannerNotification/BannerNotification.tsx @@ -1,9 +1,10 @@ import clsx from 'clsx'; import React, { type ReactNode } from 'react'; +import getIconNameFromStatus from '../../util/getIconNameFromStatus'; import type { Status } from '../../util/variant-types'; import Heading from '../Heading'; -import Icon, { type IconName } from '../Icon'; +import Icon from '../Icon'; import Text from '../Text'; import styles from './BannerNotification.module.css'; @@ -41,23 +42,6 @@ export type BannerNotificationProps = { title?: string; }; -/** - * Map statuses to existing icon names - * TODO-AH: de-dupe this with the function in InlineNotification - * - * @param status component status - * @returns the matching icon name - */ -function getIconNameFromStatus(status: Status): IconName { - const map: Record = { - informational: 'info', - critical: 'dangerous', - warning: 'warning', - favorable: 'check-circle', - }; - return map[status]; -} - /** * `import {BannerNotification} from "@chanzuckerberg/eds";` * diff --git a/src/components/InlineNotification/InlineNotification-v2.tsx b/src/components/InlineNotification/InlineNotification-v2.tsx index 9c37caa78..631bd281e 100644 --- a/src/components/InlineNotification/InlineNotification-v2.tsx +++ b/src/components/InlineNotification/InlineNotification-v2.tsx @@ -1,9 +1,10 @@ import clsx from 'clsx'; import React from 'react'; +import getIconNameFromStatus from '../../util/getIconNameFromStatus'; import type { Status } from '../../util/variant-types'; -import Icon, { type IconName } from '../Icon'; +import Icon from '../Icon'; import Text from '../Text'; import styles from './InlineNotification-v2.module.css'; @@ -35,21 +36,6 @@ type InlineNotificationProps = { title: string; }; -/** - * Map statuses to existing icon names - * @param status component status - * @returns the matching icon name - */ -function getIconNameFromStatus(status: Status): IconName { - const map: Record = { - informational: 'info', - critical: 'dangerous', - warning: 'warning', - favorable: 'check-circle', - }; - return map[status]; -} - /** * `import {InlineNotification} from "@chanzuckerberg/eds";` * diff --git a/src/components/Toast/Toast-v2.tsx b/src/components/Toast/Toast-v2.tsx index 3616bfe9e..3622b8867 100644 --- a/src/components/Toast/Toast-v2.tsx +++ b/src/components/Toast/Toast-v2.tsx @@ -1,9 +1,10 @@ import clsx from 'clsx'; import React from 'react'; +import getIconNameFromStatus from '../../util/getIconNameFromStatus'; import type { Status } from '../../util/variant-types'; import { ButtonV2 as Button } from '../Button'; -import Icon, { type IconName } from '../Icon'; +import Icon from '../Icon'; import Text from '../Text'; import styles from './Toast-v2.module.css'; @@ -29,23 +30,6 @@ export type ToastProps = { title: string; }; -/** - * Map statuses to existing icon names - * TODO-AH: de-dupe this with the function in InlineNotification - * - * @param status component status - * @returns the matching icon name - */ -function getIconNameFromStatus(status: Status): IconName { - const map: Record = { - informational: 'info', - critical: 'dangerous', - warning: 'warning', - favorable: 'check-circle', - }; - return map[status]; -} - /** * `import {Toast} from "@chanzuckerberg/eds";` * diff --git a/src/util/getIconNameFromStatus.ts b/src/util/getIconNameFromStatus.ts new file mode 100644 index 000000000..b5e2b1cdd --- /dev/null +++ b/src/util/getIconNameFromStatus.ts @@ -0,0 +1,18 @@ +import type { Status } from './variant-types'; +import type { IconName } from '../icons/spritemap'; + +/** + * Map statuses to existing icon names + * + * @param status component status + * @returns the matching icon name + */ +export default function getIconNameFromStatus(status: Status): IconName { + const map: Record = { + informational: 'info', + critical: 'dangerous', + warning: 'warning', + favorable: 'check-circle', + }; + return map[status]; +}