{"version":3,"file":"ListItem.mjs","sources":["../../../../src/components/ListItem/ListItem.tsx"],"sourcesContent":["'use client'\n\nimport { Fragment, forwardRef } from 'react'\n\nimport { isBezierIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { isEmpty, isNil, isString } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Icon } from '~/src/components/Icon'\nimport { Text } from '~/src/components/Text'\n\nimport { type ListItemProps } from './ListItem.types'\n\nimport styles from './ListItem.module.scss'\n\nfunction renderNewLineComponent(value: string) {\n  return value.split('\\n').map((str, index) => (\n    // eslint-disable-next-line react/no-array-index-key\n    <Fragment key={index}>\n      {index !== 0 && <br />}\n      {str}\n    </Fragment>\n  ))\n}\n\nexport const LIST_ITEM_TEST_ID = 'bezier-list-item'\n\nexport const ListItem = forwardRef<HTMLElement, ListItemProps>(\n  function ListItem(\n    {\n      className,\n      as,\n      variant = 'monochrome',\n      size = 's',\n      content,\n      description,\n      descriptionMaxLines,\n      leftContent,\n      rightContent,\n      active = false,\n      focused = false,\n      disabled = false,\n      clickable: clickableProp = false,\n      href,\n      onClick,\n      ...rest\n    },\n    forwardedRef\n  ) {\n    const isLink = !isEmpty(href)\n    const isButton = !isNil(onClick)\n    const Comp = isLink ? 'a' : isButton ? BaseButton : ((as ?? 'div') as 'div')\n    const clickable = isLink || clickableProp || isButton\n\n    return (\n      <Comp\n        {...(isLink && {\n          href,\n          draggable: false,\n          target: '_blank',\n          rel: 'noopener noreferrer',\n        })}\n        className={classNames(\n          styles.ListItem,\n          styles[`size-${size}`],\n          styles[`variant-${variant}`],\n          disabled && styles.disabled,\n          focused && styles.focused,\n          active && styles.active,\n          clickable && styles.clickable,\n          className\n        )}\n        // @ts-expect-error\n        ref={forwardedRef}\n        onClick={!disabled ? onClick : undefined}\n        data-testid={LIST_ITEM_TEST_ID}\n        {...rest}\n      >\n        <div className={styles.ListItemContent}>\n          {!isNil(leftContent) && (\n            <div className={styles.ListItemLeftContent}>\n              {isBezierIcon(leftContent) ? (\n                <Icon\n                  className={styles.ListItemLeftIcon}\n                  source={leftContent}\n                  size=\"s\"\n                />\n              ) : (\n                leftContent\n              )}\n            </div>\n          )}\n\n          <div className={styles.ListItemTitle}>\n            {isString(content) ? (\n              <Text\n                truncated\n                typo={size === 'l' ? '16' : '14'}\n              >\n                {content}\n              </Text>\n            ) : (\n              content\n            )}\n          </div>\n\n          {description && (\n            <div className={styles.ListItemDescription}>\n              <Text\n                typo=\"12\"\n                color=\"text-neutral-light\"\n                truncated={descriptionMaxLines}\n              >\n                {isString(description)\n                  ? renderNewLineComponent(description)\n                  : description}\n              </Text>\n            </div>\n          )}\n        </div>\n\n        {rightContent && (\n          <div className={styles.ListItemRightContent}>{rightContent}</div>\n        )}\n      </Comp>\n    )\n  }\n)\n"],"names":["renderNewLineComponent","value","split","map","str","index","_jsxs","Fragment","children","_jsx","LIST_ITEM_TEST_ID","ListItem","forwardRef","className","as","variant","size","content","description","descriptionMaxLines","leftContent","rightContent","active","focused","disabled","clickable","clickableProp","href","onClick","rest","forwardedRef","isLink","isEmpty","isButton","isNil","Comp","BaseButton","draggable","target","rel","classNames","styles","ref","undefined","ListItemContent","ListItemLeftContent","isBezierIcon","Icon","ListItemLeftIcon","source","ListItemTitle","isString","Text","truncated","typo","ListItemDescription","color","ListItemRightContent"],"mappings":"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"}