{"version":3,"file":"ModalHeader.mjs","sourceRoot":"","sources":["../../../src/components/ModalHeader/ModalHeader.tsx"],"names":[],"mappings":";;;;;;AAAA,OAAO,EACL,cAAc,EACd,QAAQ,EACR,WAAW,EACZ,uCAAuC;AACxC,OAAO,QAAO,EAAE,UAAU,EAAE,cAAc;;AAE1C,OAAO,EAAE,OAAO,EAAE,iCAA6B;AAC/C,OAAO,EAAE,GAAG,EAAE,yBAAe;AAC7B,OAAO,EAAE,UAAU,EAAE,gCAAsB;AAC3C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,0BAAgB;AAI1C,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CACnC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,cAAc,EACd,YAAY,EACZ,MAAM,EACN,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,yEAAyE;IACzE,kEAAkE;IAClE,yEAAyE;IACzE,wEAAwE;IACxE,MAAM,sBAAsB,GAC1B,cAAc;QACd,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAC3B,oBAAC,UAAU,IACT,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAC5B,IAAI,EAAE,cAAc,CAAC,EAAE,EACvB,OAAO,EAAE,MAAM,KACX,eAAe,GACnB,CACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEZ,MAAM,oBAAoB,GACxB,YAAY;QACZ,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAC7B,oBAAC,UAAU,IACT,QAAQ,EAAE,QAAQ,CAAC,KAAK,EACxB,IAAI,EAAE,cAAc,CAAC,EAAE,EACvB,OAAO,EAAE,OAAO,KACZ,gBAAgB,GACpB,CACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEZ,MAAM,YAAY,GAChB,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC7B,oBAAC,IAAI,IAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,IAC9D,QAAQ,CACJ,CACR,CAAC,CAAC,CAAC,CACF,QAAQ,CACT,CAAC;IAEJ,OAAO,CACL,gCACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO;QAChB,oEAAoE;QACpE,gEAAgE;QAChE,4DAA4D;QAC5D,8CAA8C;QAC9C,sDAAsD,EACtD,SAAS,CACV,KACG,IAAI;QAEP,sBAAsB,IAAI,CACzB,oBAAC,GAAG,IAAC,SAAS,EAAC,gCAAgC,IAC5C,sBAAsB,CACnB,CACP;QACA,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,IAAI,CACtD,oBAAC,GAAG,IAAC,SAAS,EAAC,8BAA8B,IAAE,YAAY,CAAO,CACnE;QACA,oBAAoB,IAAI,CACvB,oBAAC,GAAG,IAAC,SAAS,EAAC,8BAA8B,IAC1C,oBAAoB,CACjB,CACP,CACM,CACV,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC","sourcesContent":["import {\n  ButtonIconSize,\n  IconName,\n  TextVariant,\n} from '@metamask/design-system-shared';\nimport React, { forwardRef } from 'react';\n\nimport { twMerge } from '../../utils/tw-merge';\nimport { Box } from '../Box';\nimport { ButtonIcon } from '../ButtonIcon';\nimport { Text, TextAlign } from '../Text';\n\nimport type { ModalHeaderProps } from './ModalHeader.types';\n\nexport const ModalHeader = forwardRef<HTMLElement, ModalHeaderProps>(\n  (props, ref) => {\n    const {\n      children,\n      className,\n      startAccessory,\n      endAccessory,\n      onBack,\n      backButtonProps,\n      onClose,\n      closeButtonProps,\n      ...rest\n    } = props;\n\n    // The discriminated union on `ModalHeaderProps` guarantees that whenever\n    // `onBack` is set, `backButtonProps` is also set (with a required\n    // `ariaLabel`). Same for `onClose` / `closeButtonProps`. The `&&` checks\n    // below give TypeScript a narrowing point and double as runtime guards.\n    const resolvedStartAccessory =\n      startAccessory ??\n      (onBack && backButtonProps ? (\n        <ButtonIcon\n          iconName={IconName.ArrowLeft}\n          size={ButtonIconSize.Md}\n          onClick={onBack}\n          {...backButtonProps}\n        />\n      ) : null);\n\n    const resolvedEndAccessory =\n      endAccessory ??\n      (onClose && closeButtonProps ? (\n        <ButtonIcon\n          iconName={IconName.Close}\n          size={ButtonIconSize.Md}\n          onClick={onClose}\n          {...closeButtonProps}\n        />\n      ) : null);\n\n    const titleContent =\n      typeof children === 'string' ? (\n        <Text variant={TextVariant.HeadingSm} textAlign={TextAlign.Center}>\n          {children}\n        </Text>\n      ) : (\n        children\n      );\n\n    return (\n      <header\n        ref={ref}\n        className={twMerge(\n          // Three-column grid keeps the title visually centered regardless of\n          // which side accessories are present — same layout primitive as\n          // `HeaderBase`, replicated here so the outer element is the\n          // semantic `<header>` (no extra wrapper div).\n          'grid grid-cols-[1fr_auto_1fr] items-center px-4 pb-4',\n          className,\n        )}\n        {...rest}\n      >\n        {resolvedStartAccessory && (\n          <Box className=\"col-start-1 justify-self-start\">\n            {resolvedStartAccessory}\n          </Box>\n        )}\n        {titleContent !== undefined && titleContent !== null && (\n          <Box className=\"col-start-2 col-end-3 w-full\">{titleContent}</Box>\n        )}\n        {resolvedEndAccessory && (\n          <Box className=\"col-start-3 justify-self-end\">\n            {resolvedEndAccessory}\n          </Box>\n        )}\n      </header>\n    );\n  },\n);\n\nModalHeader.displayName = 'ModalHeader';\n"]}