{"version":3,"file":"tabHeader.mjs","names":[],"sources":["../../../../package/common/tabHeader/tabHeader.tsx"],"sourcesContent":["import React from 'react';\nimport cx from 'classnames';\n\nimport InteractableDiv from '../interactableDiv';\nimport type { TabHeaderProps, TabHeaderTab } from './tabHeader.types';\n\nimport styles from './tabHeader.module.pcss';\nimport { renderIcon } from '../utils/renderIcon';\n\n// Not a truthiness test: a count of 0 is content.\nfunction hasContent(node: React.ReactNode) {\n  return node != null && node !== false && node !== '';\n}\n\nfunction TabHeader({\n  tabs = [],\n  currentTab,\n  onChange,\n  className,\n  style,\n  classNames,\n  styles: slotStyles,\n  ...rest\n}: TabHeaderProps) {\n  return (\n    <div\n      {...rest}\n      role='tablist'\n      className={cx(styles.tabHeader, classNames?.root, className)}\n      style={{ ...slotStyles?.root, ...style }}\n    >\n      {tabs.map((tab: TabHeaderTab) => {\n        const isActive = tab.id === currentTab;\n        const hasTitle = hasContent(tab.title);\n        const hasSubtitle = hasContent(tab.subtitle);\n        const hasLabels = hasTitle || hasSubtitle;\n\n        return (\n          <InteractableDiv\n            key={tab.id}\n            role='tab'\n            aria-selected={isActive}\n            aria-disabled={tab.disabled || undefined}\n            tabIndex={tab.disabled ? -1 : 0}\n            className={cx(\n              styles.tabHeaderTab,\n              { [styles.tabHeaderTabActive]: isActive },\n              { [styles.tabHeaderTabDisabled]: tab.disabled },\n              classNames?.tab,\n            )}\n            style={slotStyles?.tab}\n            onClick={() => {\n              if (tab.disabled || isActive) return;\n              onChange(tab.id);\n            }}\n          >\n            {renderIcon(tab.icon, {\n              className: cx(styles.tabHeaderIcon, classNames?.icon),\n              style: slotStyles?.icon,\n            })}\n            {hasLabels && (\n              <div className={cx(styles.tabHeaderLabels, classNames?.labels)} style={slotStyles?.labels}>\n                {hasTitle && (\n                  <div className={cx(styles.tabHeaderTitle, classNames?.title)} style={slotStyles?.title}>\n                    {tab.title}\n                  </div>\n                )}\n                {hasSubtitle && (\n                  <div className={cx(styles.tabHeaderSubtitle, classNames?.subtitle)} style={slotStyles?.subtitle}>\n                    {tab.subtitle}\n                  </div>\n                )}\n              </div>\n            )}\n            {/* Outside the labels, which a narrow screen hides on every inactive tab. */}\n            {hasContent(tab.endContent) && (\n              <span className={classNames?.endContent} style={slotStyles?.endContent}>\n                {tab.endContent}\n              </span>\n            )}\n          </InteractableDiv>\n        );\n      })}\n    </div>\n  );\n}\n\nexport default TabHeader;\n"],"mappings":"8OAUA,SAAS,EAAW,EAAuB,CACzC,OAAO,GAAQ,MAAQ,IAAS,IAAS,IAAS,EACpD,CAEA,SAAS,EAAU,CACjB,OAAO,CAAC,EACR,aACA,WACA,YACA,QACA,aACA,OAAQ,EACR,GAAG,GACc,CACjB,OACE,EAAC,MAAD,CACE,GAAI,EACJ,KAAK,UACL,UAAW,EAAG,EAAO,UAAW,GAAY,KAAM,CAAS,EAC3D,MAAO,CAAE,GAAG,GAAY,KAAM,GAAG,CAAM,EAEtC,SAAA,EAAK,IAAK,GAAsB,CAC/B,IAAM,EAAW,EAAI,KAAO,EACtB,EAAW,EAAW,EAAI,KAAK,EAC/B,EAAc,EAAW,EAAI,QAAQ,EACrC,EAAY,GAAY,EAE9B,OACE,EAAC,EAAD,CAEE,KAAK,MACL,gBAAe,EACf,gBAAe,EAAI,UAAY,IAAA,GAC/B,SAAU,EAAI,SAAW,GAAK,EAC9B,UAAW,EACT,EAAO,aACP,EAAG,EAAO,oBAAqB,CAAS,EACxC,EAAG,EAAO,sBAAuB,EAAI,QAAS,EAC9C,GAAY,GACd,EACA,MAAO,GAAY,IACnB,YAAe,CACT,EAAI,UAAY,GACpB,EAAS,EAAI,EAAE,CACjB,EAhBF,SAAA,CAkBG,EAAW,EAAI,KAAM,CACpB,UAAW,EAAG,EAAO,cAAe,GAAY,IAAI,EACpD,MAAO,GAAY,IACrB,CAAC,EACA,GACC,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,gBAAiB,GAAY,MAAM,EAAG,MAAO,GAAY,OAAnF,SAAA,CACG,GACC,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,eAAgB,GAAY,KAAK,EAAG,MAAO,GAAY,MAC9E,SAAA,EAAI,KACF,CAAA,EAEN,GACC,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,kBAAmB,GAAY,QAAQ,EAAG,MAAO,GAAY,SACpF,SAAA,EAAI,QACF,CAAA,CAEJ,IAGN,EAAW,EAAI,UAAU,GACxB,EAAC,OAAD,CAAM,UAAW,GAAY,WAAY,MAAO,GAAY,WACzD,SAAA,EAAI,UACD,CAAA,CAEO,CAzCV,EAAA,EAAI,EAyCM,CAErB,CAAC,CACE,CAAA,CAET"}