{"version":3,"file":"Option.mjs","sources":["../../../src/common/Option/Option.tsx"],"sourcesContent":["/* eslint-disable react/display-name */\nimport { clsx } from 'clsx';\nimport { MouseEvent, forwardRef, HTMLAttributes, ReactNode, ElementType } from 'react';\n\nimport Body from '../../body';\nimport { LinkProps } from '../commonProps';\n\nexport interface BaseOptionProps extends Omit<HTMLAttributes<HTMLElement>, 'title' | 'content'> {\n  'aria-label'?: string;\n  'aria-expanded'?: boolean;\n  'aria-controls'?: string;\n  media?: ReactNode;\n  name?: string;\n  htmlFor?: string;\n  title: ReactNode;\n  content?: ReactNode;\n  onClick?: (event: MouseEvent<HTMLElement>) => void;\n  as?: ElementType;\n  disabled?: boolean;\n  button?: ReactNode;\n  decision?: boolean;\n  complex?: boolean;\n  inverseMediaCircle?: boolean;\n  className?: string;\n  showMediaAtAllSizes?: boolean;\n  showMediaCircle?: boolean;\n  isContainerAligned?: boolean;\n  additionalContent?: ReactNode;\n}\n\ninterface AnchorOptionProps extends BaseOptionProps, LinkProps {\n  as: 'a';\n}\n\nexport type OptionProps = BaseOptionProps | AnchorOptionProps;\n\nexport type ReferenceType = HTMLElement | HTMLAnchorElement;\n\n/**\n * @deprecated Use `<ListItem />` instead (run codemod to migrate: **`npx @wise/wds-codemods@latest list-item`**).\n */\nconst Option = forwardRef<ReferenceType, OptionProps>(\n  (\n    {\n      media = '',\n      title,\n      content,\n      as: component,\n      button,\n      decision = true,\n      disabled = false,\n      complex,\n      inverseMediaCircle = true,\n      className,\n      showMediaAtAllSizes,\n      showMediaCircle = true,\n      isContainerAligned = false,\n      additionalContent,\n      ...rest\n    },\n    reference,\n  ) => {\n    const Element = component ?? 'label';\n\n    return (\n      <Element\n        {...rest}\n        ref={reference}\n        className={clsx('np-option', className, {\n          'decision-complex': complex,\n          decision,\n          disabled,\n          'np-option__sm-media': showMediaAtAllSizes,\n          'np-option__container-aligned': isContainerAligned,\n        })}\n        disabled={disabled && Element === 'button'}\n      >\n        <div className={clsx('media')}>\n          {media && (\n            <div className=\"media-left\">\n              {showMediaCircle ? (\n                <div\n                  className={clsx('circle circle-sm text-primary', {\n                    'circle-inverse': inverseMediaCircle,\n                  })}\n                >\n                  {media}\n                </div>\n              ) : (\n                <div className=\"np-option__no-media-circle\">{media}</div>\n              )}\n            </div>\n          )}\n          <div className=\"media-body\">\n            {/* @ts-expect-error div can have role and aria-lavel props */}\n            <Body\n              type=\"body-large-bold\"\n              // for a11y this needs to be a header but for SEO it shouldn't be `h*` tag\n              // so we enable header semantics via `role` and `aria-level` attrs\n              role=\"heading\"\n              aria-level=\"4\"\n              className=\"text-primary np-option__title\"\n            >\n              {title}\n            </Body>\n            {content && <Body className=\"d-block np-option__body\">{content}</Body>}\n          </div>\n          <div className=\"media-right\">{button}</div>\n        </div>\n        {additionalContent ? (\n          <div className=\"np-option-additional-content\">{additionalContent}</div>\n        ) : null}\n      </Element>\n    );\n  },\n);\n\nexport default Option;\n"],"names":["Option","forwardRef","media","title","content","as","component","button","decision","disabled","complex","inverseMediaCircle","className","showMediaAtAllSizes","showMediaCircle","isContainerAligned","additionalContent","rest","reference","Element","_jsxs","ref","clsx","children","_jsx","Body","type","role"],"mappings":";;;;;AAAA;AAyCA,MAAMA,MAAM,gBAAGC,UAAU,CACvB,CACE;AACEC,EAAAA,KAAK,GAAG,EAAE;EACVC,KAAK;EACLC,OAAO;AACPC,EAAAA,EAAE,EAAEC,SAAS;EACbC,MAAM;AACNC,EAAAA,QAAQ,GAAG,IAAI;AACfC,EAAAA,QAAQ,GAAG,KAAK;EAChBC,OAAO;AACPC,EAAAA,kBAAkB,GAAG,IAAI;EACzBC,SAAS;EACTC,mBAAmB;AACnBC,EAAAA,eAAe,GAAG,IAAI;AACtBC,EAAAA,kBAAkB,GAAG,KAAK;EAC1BC,iBAAiB;EACjB,GAAGC;AAAI,CACR,EACDC,SAAS,KACP;AACF,EAAA,MAAMC,OAAO,GAAGb,SAAS,IAAI,OAAO;EAEpC,oBACEc,IAAA,CAACD,OAAO,EAAA;AAAA,IAAA,GACFF,IAAI;AACRI,IAAAA,GAAG,EAAEH,SAAU;AACfN,IAAAA,SAAS,EAAEU,IAAI,CAAC,WAAW,EAAEV,SAAS,EAAE;AACtC,MAAA,kBAAkB,EAAEF,OAAO;MAC3BF,QAAQ;MACRC,QAAQ;AACR,MAAA,qBAAqB,EAAEI,mBAAmB;AAC1C,MAAA,8BAA8B,EAAEE;KACjC,CAAE;AACHN,IAAAA,QAAQ,EAAEA,QAAQ,IAAIU,OAAO,KAAK,QAAS;AAAAI,IAAAA,QAAA,gBAE3CH,IAAA,CAAA,KAAA,EAAA;AAAKR,MAAAA,SAAS,EAAEU,IAAI,CAAC,OAAO,CAAE;MAAAC,QAAA,EAAA,CAC3BrB,KAAK,iBACJsB,GAAA,CAAA,KAAA,EAAA;AAAKZ,QAAAA,SAAS,EAAC,YAAY;QAAAW,QAAA,EACxBT,eAAe,gBACdU,GAAA,CAAA,KAAA,EAAA;AACEZ,UAAAA,SAAS,EAAEU,IAAI,CAAC,+BAA+B,EAAE;AAC/C,YAAA,gBAAgB,EAAEX;AACnB,WAAA,CAAE;AAAAY,UAAAA,QAAA,EAEFrB;SACE,CAAC,gBAENsB,GAAA,CAAA,KAAA,EAAA;AAAKZ,UAAAA,SAAS,EAAC,4BAA4B;AAAAW,UAAAA,QAAA,EAAErB;SAAW;OAEvD,CACN,eACDkB,IAAA,CAAA,KAAA,EAAA;AAAKR,QAAAA,SAAS,EAAC,YAAY;QAAAW,QAAA,EAAA,cAEzBC,GAAA,CAACC,IAAI,EAAA;AACHC,UAAAA,IAAI,EAAC;AACL;AACA;AAAA;AACAC,UAAAA,IAAI,EAAC,SAAS;AACd,UAAA,YAAA,EAAW,GAAG;AACdf,UAAAA,SAAS,EAAC,+BAA+B;AAAAW,UAAAA,QAAA,EAExCpB;AAAK,SACF,CACN,EAACC,OAAO,iBAAIoB,GAAA,CAACC,IAAI,EAAA;AAACb,UAAAA,SAAS,EAAC,yBAAyB;AAAAW,UAAAA,QAAA,EAAEnB;AAAO,SAAO,CAAC;OACnE,CACL,eAAAoB,GAAA,CAAA,KAAA,EAAA;AAAKZ,QAAAA,SAAS,EAAC,aAAa;AAAAW,QAAAA,QAAA,EAAEhB;AAAM,OAAM,CAC5C;AAAA,KAAK,CACL,EAACS,iBAAiB,gBAChBQ,GAAA,CAAA,KAAA,EAAA;AAAKZ,MAAAA,SAAS,EAAC,8BAA8B;AAAAW,MAAAA,QAAA,EAAEP;KAAuB,CAAC,GACrE,IAAI;AAAA,GACD,CAAC;AAEd,CAAC;;;;"}