{"version":3,"file":"SectionLabel.mjs","sources":["../../../../src/components/SectionLabel/SectionLabel.tsx"],"sourcesContent":["'use client'\n\nimport { forwardRef } from 'react'\n\nimport { isBezierIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { warn } from '~/src/utils/assert'\nimport {\n  isArray,\n  isEmpty,\n  isNil,\n  isNumber,\n  isObject,\n  isString,\n} from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Button } from '~/src/components/Button'\nimport { Help } from '~/src/components/Help'\nimport { Icon } from '~/src/components/Icon'\nimport { LegacyIcon, isIconName } from '~/src/components/LegacyIcon'\nimport { Text } from '~/src/components/Text'\n\nimport {\n  type IconWithAction,\n  type SectionLabelLeftContent,\n  type SectionLabelProps,\n  type SectionLabelRightContent,\n} from './SectionLabel.types'\n\nimport styles from './SectionLabel.module.scss'\n\nfunction LeftContent({ children }: { children: SectionLabelLeftContent }) {\n  const isLegacyIcon = isIconName(children)\n\n  if (!isBezierIcon(children) && !isLegacyIcon) {\n    return <>{children}</>\n  }\n\n  if (isLegacyIcon) {\n    warn(\n      'Deprecation: IconName as a value for the icon property of SectionLabel has been deprecated. Use the Icon of bezier-icons instead.',\n      'SectionLabel.LeftContent.IconName'\n    )\n  }\n\n  const Comp = isLegacyIcon ? LegacyIcon : Icon\n\n  return (\n    // @ts-expect-error\n    <Comp\n      {...(isLegacyIcon\n        ? {\n            name: children,\n          }\n        : {\n            source: children,\n          })}\n      size=\"s\"\n      color=\"text-neutral-lighter\"\n    />\n  )\n}\n\nfunction isIconWithAction(args: unknown): args is IconWithAction {\n  return isObject(args) && 'icon' in args\n}\n\nfunction RightContent({ children }: { children: SectionLabelRightContent }) {\n  const isLegacyIcon = isIconName(children)\n  const withAction = isIconWithAction(children)\n\n  if (!isBezierIcon(children) && !isLegacyIcon && !withAction) {\n    return <>{children}</>\n  }\n\n  if (isLegacyIcon) {\n    warn(\n      'Deprecation: IconName as a value for the icon property of SectionLabel has been deprecated. Use the Icon of bezier-icons instead.',\n      'SectionLabel.RightContent.IconName'\n    )\n  }\n\n  return (\n    <Button\n      {...(withAction\n        ? {\n            leftContent: children.icon,\n            onClick: children.onClick,\n          }\n        : {\n            as: 'div',\n            leftContent: children,\n          })}\n      className={styles.RightItem}\n      size=\"xs\"\n      styleVariant=\"tertiary\"\n      colorVariant=\"monochrome-light\"\n    />\n  )\n}\n\nexport const SectionLabel = forwardRef<HTMLElement, SectionLabelProps>(\n  function SectionLabel(\n    {\n      children,\n      className,\n      open = true,\n      help,\n      leftContent,\n      content,\n      rightContent,\n      onClick,\n      ...props\n    },\n    forwardedRef\n  ) {\n    const Comp = !isNil(onClick) ? BaseButton : 'div'\n\n    return (\n      <>\n        <Comp\n          // @ts-expect-error\n          ref={forwardedRef}\n          className={classNames(styles.SectionLabel, className)}\n          data-testid=\"bezier-section-label\"\n          onClick={onClick}\n          {...props}\n        >\n          {leftContent && (\n            <div className={styles.LeftContent}>\n              <LeftContent>{leftContent}</LeftContent>\n            </div>\n          )}\n\n          <div className={styles.Content}>\n            {isString(content) || isNumber(content) ? (\n              <Text\n                bold\n                typo=\"13\"\n                color=\"text-neutral-lighter\"\n                truncated\n              >\n                {content}\n              </Text>\n            ) : (\n              content\n            )}\n          </div>\n\n          {help && (\n            <div className={styles.Help}>\n              <Help allowHover>{help}</Help>\n            </div>\n          )}\n\n          {!isNil(rightContent) && !isEmpty(rightContent) && (\n            <div className={styles.RightContent}>\n              {isArray(rightContent) ? (\n                rightContent.map((eachContent, index) => (\n                  // eslint-disable-next-line react/no-array-index-key\n                  <RightContent key={index}>{eachContent}</RightContent>\n                ))\n              ) : (\n                <RightContent>{rightContent}</RightContent>\n              )}\n            </div>\n          )}\n        </Comp>\n\n        {children && open && <div>{children}</div>}\n      </>\n    )\n  }\n)\n"],"names":["LeftContent","children","isLegacyIcon","isIconName","isBezierIcon","_jsx","_Fragment","warn","Comp","LegacyIcon","Icon","name","source","size","color","isIconWithAction","args","isObject","RightContent","withAction","Button","leftContent","icon","onClick","as","className","styles","RightItem","styleVariant","colorVariant","SectionLabel","forwardRef","open","help","content","rightContent","props","forwardedRef","isNil","BaseButton","_jsxs","ref","classNames","Content","isString","isNumber","Text","bold","typo","truncated","Help","allowHover","isEmpty","isArray","map","eachContent","index"],"mappings":";;;;;;;;;;;;;;;AAiCA,SAASA,WAAWA,CAAC;AAAEC,EAAAA;AAAgD,CAAC,EAAE;AACxE,EAAA,MAAMC,YAAY,GAAGC,UAAU,CAACF,QAAQ,CAAC;EAEzC,IAAI,CAACG,YAAY,CAACH,QAAQ,CAAC,IAAI,CAACC,YAAY,EAAE;IAC5C,oBAAOG,GAAA,CAAAC,QAAA,EAAA;AAAAL,MAAAA,QAAA,EAAGA;AAAQ,KAAG,CAAC;AACxB;AAEA,EAAA,IAAIC,YAAY,EAAE;AAChBK,IAAAA,IAAI,CACF,mIAAmI,EACnI,mCACF,CAAC;AACH;AAEA,EAAA,MAAMC,IAAI,GAAGN,YAAY,GAAGO,UAAU,GAAGC,IAAI;AAE7C,EAAA;AAAA;AACE;AACAL,IAAAA,GAAA,CAACG,IAAI,EAAA;AAAA,MAAA,IACEN,YAAY,GACb;AACES,QAAAA,IAAI,EAAEV;AACR,OAAC,GACD;AACEW,QAAAA,MAAM,EAAEX;OACT,CAAA;AACLY,MAAAA,IAAI,EAAC,GAAG;AACRC,MAAAA,KAAK,EAAC;KACP;AAAC;AAEN;AAEA,SAASC,gBAAgBA,CAACC,IAAa,EAA0B;AAC/D,EAAA,OAAOC,QAAQ,CAACD,IAAI,CAAC,IAAI,MAAM,IAAIA,IAAI;AACzC;AAEA,SAASE,YAAYA,CAAC;AAAEjB,EAAAA;AAAiD,CAAC,EAAE;AAC1E,EAAA,MAAMC,YAAY,GAAGC,UAAU,CAACF,QAAQ,CAAC;AACzC,EAAA,MAAMkB,UAAU,GAAGJ,gBAAgB,CAACd,QAAQ,CAAC;EAE7C,IAAI,CAACG,YAAY,CAACH,QAAQ,CAAC,IAAI,CAACC,YAAY,IAAI,CAACiB,UAAU,EAAE;IAC3D,oBAAOd,GAAA,CAAAC,QAAA,EAAA;AAAAL,MAAAA,QAAA,EAAGA;AAAQ,KAAG,CAAC;AACxB;AAEA,EAAA,IAAIC,YAAY,EAAE;AAChBK,IAAAA,IAAI,CACF,mIAAmI,EACnI,oCACF,CAAC;AACH;EAEA,oBACEF,GAAA,CAACe,MAAM,EAAA;AAAA,IAAA,IACAD,UAAU,GACX;MACEE,WAAW,EAAEpB,QAAQ,CAACqB,IAAI;MAC1BC,OAAO,EAAEtB,QAAQ,CAACsB;AACpB,KAAC,GACD;AACEC,MAAAA,EAAE,EAAE,KAAK;AACTH,MAAAA,WAAW,EAAEpB;KACd,CAAA;IACLwB,SAAS,EAAEC,MAAM,CAACC,SAAU;AAC5Bd,IAAAA,IAAI,EAAC,IAAI;AACTe,IAAAA,YAAY,EAAC,UAAU;AACvBC,IAAAA,YAAY,EAAC;AAAkB,GAChC,CAAC;AAEN;MAEaC,YAAY,gBAAGC,UAAU,CACpC,SAASD,YAAYA,CACnB;EACE7B,QAAQ;EACRwB,SAAS;AACTO,EAAAA,IAAI,GAAG,IAAI;EACXC,IAAI;EACJZ,WAAW;EACXa,OAAO;EACPC,YAAY;EACZZ,OAAO;EACP,GAAGa;AACL,CAAC,EACDC,YAAY,EACZ;EACA,MAAM7B,IAAI,GAAG,CAAC8B,KAAK,CAACf,OAAO,CAAC,GAAGgB,UAAU,GAAG,KAAK;EAEjD,oBACEC,IAAA,CAAAlC,QAAA,EAAA;IAAAL,QAAA,EAAA,cACEuC,IAAA,CAAChC;AACC;AAAA,MAAA;AACAiC,MAAAA,GAAG,EAAEJ,YAAa;MAClBZ,SAAS,EAAEiB,UAAU,CAAChB,MAAM,CAACI,YAAY,EAAEL,SAAS,CAAE;AACtD,MAAA,aAAA,EAAY,sBAAsB;AAClCF,MAAAA,OAAO,EAAEA,OAAQ;AAAA,MAAA,GACba,KAAK;MAAAnC,QAAA,EAAA,CAERoB,WAAW,iBACVhB,GAAA,CAAA,KAAA,EAAA;QAAKoB,SAAS,EAAEC,MAAM,CAAC1B,WAAY;QAAAC,QAAA,eACjCI,GAAA,CAACL,WAAW,EAAA;AAAAC,UAAAA,QAAA,EAAEoB;SAAyB;OACpC,CACN,eAEDhB,GAAA,CAAA,KAAA,EAAA;QAAKoB,SAAS,EAAEC,MAAM,CAACiB,OAAQ;AAAA1C,QAAAA,QAAA,EAC5B2C,QAAQ,CAACV,OAAO,CAAC,IAAIW,QAAQ,CAACX,OAAO,CAAC,gBACrC7B,GAAA,CAACyC,IAAI,EAAA;UACHC,IAAI,EAAA,IAAA;AACJC,UAAAA,IAAI,EAAC,IAAI;AACTlC,UAAAA,KAAK,EAAC,sBAAsB;UAC5BmC,SAAS,EAAA,IAAA;AAAAhD,UAAAA,QAAA,EAERiC;AAAO,SACJ,CAAC,GAEPA;AACD,OACE,CAAC,EAELD,IAAI,iBACH5B,GAAA,CAAA,KAAA,EAAA;QAAKoB,SAAS,EAAEC,MAAM,CAACwB,IAAK;QAAAjD,QAAA,eAC1BI,GAAA,CAAC6C,IAAI,EAAA;UAACC,UAAU,EAAA,IAAA;AAAAlD,UAAAA,QAAA,EAAEgC;SAAW;AAAC,OAC3B,CACN,EAEA,CAACK,KAAK,CAACH,YAAY,CAAC,IAAI,CAACiB,OAAO,CAACjB,YAAY,CAAC,iBAC7C9B,GAAA,CAAA,KAAA,EAAA;QAAKoB,SAAS,EAAEC,MAAM,CAACR,YAAa;AAAAjB,QAAAA,QAAA,EACjCoD,OAAO,CAAClB,YAAY,CAAC,GACpBA,YAAY,CAACmB,GAAG,CAAC,CAACC,WAAW,EAAEC,KAAK;AAAA;AAClC;AACAnD,QAAAA,GAAA,CAACa,YAAY,EAAA;AAAAjB,UAAAA,QAAA,EAAcsD;AAAW,SAAA,EAAnBC,KAAkC,CACtD,CAAC,gBAEFnD,GAAA,CAACa,YAAY,EAAA;AAAAjB,UAAAA,QAAA,EAAEkC;SAA2B;AAC3C,OACE,CACN;AAAA,KACG,CAAC,EAENlC,QAAQ,IAAI+B,IAAI,iBAAI3B,GAAA,CAAA,KAAA,EAAA;AAAAJ,MAAAA,QAAA,EAAMA;AAAQ,KAAM,CAAC;AAAA,GAC1C,CAAC;AAEP,CACF;;;;"}