{"version":3,"file":"Toast.cjs","sourceRoot":"","sources":["../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAMwC;AACxC,+CAA0C;AAE1C,uDAA+C;AAC/C,wDAA2C;AAC3C,4CAA+B;AAE/B,2DAA4D;AAG5D,MAAM,uBAAuB,GAAG,CAAC,EAC/B,QAAQ,EACR,cAAc,EACd,SAAS,GACqD,EAAE,EAAE;IAClE,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,SAAS,EAAE;QAC3D,OAAO,cAAc,CAAC;KACvB;IAED,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,oCAAa,CAAC,OAAO,EAAE;QACnD,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,yCAAuB,CAAC,QAAQ,CAAC,CAAC;IAE1D,OAAO,8BAAC,WAAI,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,+BAAQ,CAAC,EAAE,KAAM,SAAS,GAAI,CAAC;AAC9E,CAAC,CAAC;AAEW,QAAA,KAAK,GAAG,IAAA,kBAAU,EAC7B,CACE,EACE,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,QAAQ,GAAG,oCAAa,CAAC,OAAO,EAChC,cAAc,EACd,GAAG,KAAK,EACT,EACD,GAAG,EACH,EAAE;IACF,4EAA4E;IAC5E,yDAAyD;IACzD,MAAM,mBAAmB,GACvB,iBAAiB,IAAI,mBAAmB;QACtC,CAAC,CAAC;YACE,iBAAiB;YACjB,mBAAmB;YACnB,iBAAiB,EAAE;gBACjB,IAAI,EAAE,iCAAU,CAAC,EAAE;gBACnB,GAAG,iBAAiB;aACrB;SACF;QACH,CAAC,CAAC,EAAE,CAAC;IAET,wEAAwE;IACxE,wEAAwE;IACxE,MAAM,wBAAwB,GAC5B,OAAO,IAAI,gBAAgB;QACzB,CAAC,CAAC;YACE,SAAS,EAAE,aAAa;YACxB,GAAG,gBAAgB;SACpB;QACH,CAAC,CAAC,SAAS,CAAC;IAEhB,2EAA2E;IAC3E,gDAAgD;IAChD,OAAO,CACL,8BAAC,uBAAU,IACT,GAAG,EAAE,GAAG,KACJ,mBAAmB,KACnB,KAAK,EACT,eAAe,EAAE,yCAAkB,CAAC,mBAAmB,EACvD,WAAW,EAAE,qCAAc,CAAC,WAAW,EACvC,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,IAAA,kBAAO,EAAC,YAAY,EAAE,SAAS,CAAC,EAC3C,gBAAgB,EAAE,wBAAwB,EAC1C,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,uBAAuB,CAAC;YACtC,QAAQ;YACR,cAAc;YACd,SAAS;SACV,CAAC,GACF,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,aAAK,CAAC,WAAW,GAAG,OAAO,CAAC","sourcesContent":["import {\n  BoxBackgroundColor,\n  BoxBorderColor,\n  ButtonSize,\n  IconSize,\n  ToastSeverity,\n} from '@metamask/design-system-shared';\nimport React, { forwardRef } from 'react';\n\nimport { twMerge } from '../../utils/tw-merge';\nimport { BannerBase } from '../BannerBase';\nimport { Icon } from '../Icon';\n\nimport { TOAST_SEVERITY_ICON_MAP } from './Toast.constants';\nimport type { ToastProps } from './Toast.types';\n\nconst renderSeverityAccessory = ({\n  severity,\n  startAccessory,\n  iconProps,\n}: Pick<ToastProps, 'severity' | 'startAccessory' | 'iconProps'>) => {\n  if (startAccessory !== null && startAccessory !== undefined) {\n    return startAccessory;\n  }\n\n  if (!severity || severity === ToastSeverity.Default) {\n    return undefined;\n  }\n\n  const { name, color } = TOAST_SEVERITY_ICON_MAP[severity];\n\n  return <Icon name={name} color={color} size={IconSize.Lg} {...iconProps} />;\n};\n\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(\n  (\n    {\n      actionButtonLabel,\n      actionButtonOnClick,\n      actionButtonProps,\n      className,\n      closeButtonProps,\n      iconProps,\n      onClose,\n      severity = ToastSeverity.Default,\n      startAccessory,\n      ...props\n    },\n    ref,\n  ) => {\n    // Only pass action props through when both the label and handler are set so\n    // BannerBase can keep its action button contract simple.\n    const resolvedActionProps =\n      actionButtonLabel && actionButtonOnClick\n        ? {\n            actionButtonLabel,\n            actionButtonOnClick,\n            actionButtonProps: {\n              size: ButtonSize.Sm,\n              ...actionButtonProps,\n            },\n          }\n        : {};\n\n    // Derive the close button config from the Toast API, keeping the button\n    // visible whenever the consumer provides dismiss behavior or overrides.\n    const resolvedCloseButtonProps =\n      onClose || closeButtonProps\n        ? {\n            ariaLabel: 'Close toast',\n            ...closeButtonProps,\n          }\n        : undefined;\n\n    // Toast reuses BannerBase so the web surface stays aligned with the shared\n    // banner layout and the React Native Toast API.\n    return (\n      <BannerBase\n        ref={ref}\n        {...resolvedActionProps}\n        {...props}\n        backgroundColor={BoxBackgroundColor.BackgroundElevated2}\n        borderColor={BoxBorderColor.BorderMuted}\n        borderWidth={1}\n        className={twMerge('rounded-xl', className)}\n        closeButtonProps={resolvedCloseButtonProps}\n        onClose={onClose}\n        startAccessory={renderSeverityAccessory({\n          severity,\n          startAccessory,\n          iconProps,\n        })}\n      />\n    );\n  },\n);\n\nToast.displayName = 'Toast';\n"]}