{"version":3,"file":"Text.mjs","sources":["../../../../src/components/Text/Text.tsx"],"sourcesContent":["'use client'\n\nimport { createElement, forwardRef } from 'react'\n\nimport classNames from 'classnames'\n\nimport { getMarginStyles, splitByMarginProps } from '~/src/types/props-helpers'\nimport { colorTokenCssVar } from '~/src/utils/style'\nimport { isNumber } from '~/src/utils/type'\n\nimport { type TextProps } from './Text.types'\n\nimport styles from './Text.module.scss'\n\n/**\n * `Text` is a component for representing the typography of a design system.\n * @example\n *\n * ```tsx\n * <Text\n *   typo=\"15\"\n *   color=\"text-neutral\"\n * >\n *   Hello, Channel!\n * </Text>\n * ```\n */\nexport const Text = forwardRef<HTMLElement, TextProps>(\n  function Text(props, forwardedRef) {\n    const [marginProps, marginRest] = splitByMarginProps(props)\n    const marginStyles = getMarginStyles(marginProps)\n\n    const {\n      children,\n      style,\n      className,\n      as = 'span',\n      typo = '15',\n      color,\n      bold,\n      italic,\n      truncated,\n      align,\n      ...rest\n    } = marginRest\n    const isMultiLineTruncated = isNumber(truncated) && truncated >= 1\n\n    return createElement(\n      as,\n      {\n        ref: forwardedRef,\n        style: {\n          '--b-text-color': colorTokenCssVar(color),\n          '--b-text-line-clamp': isMultiLineTruncated ? truncated : undefined,\n          ...marginStyles.style,\n          ...style,\n        },\n        className: classNames(\n          styles.Text,\n          styles[`typo-${typo}`],\n          bold && styles.bold,\n          italic && styles.italic,\n          truncated === true\n            ? styles.truncated\n            : isMultiLineTruncated && styles['multi-line-truncated'],\n          align && styles[`align-${align}`],\n          marginStyles.className,\n          className\n        ),\n        'data-testid': 'bezier-text',\n        ...rest,\n      },\n      children\n    )\n  }\n)\n"],"names":["Text","forwardRef","props","forwardedRef","marginProps","marginRest","splitByMarginProps","marginStyles","getMarginStyles","children","style","className","as","typo","color","bold","italic","truncated","align","rest","isMultiLineTruncated","isNumber","createElement","ref","colorTokenCssVar","undefined","classNames","styles"],"mappings":";;;;;;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,IAAI,gBAAGC,UAAU,CAC5B,SAASD,IAAIA,CAACE,KAAK,EAAEC,YAAY,EAAE;EACjC,MAAM,CAACC,WAAW,EAAEC,UAAU,CAAC,GAAGC,kBAAkB,CAACJ,KAAK,CAAC;AAC3D,EAAA,MAAMK,YAAY,GAAGC,eAAe,CAACJ,WAAW,CAAC;EAEjD,MAAM;IACJK,QAAQ;IACRC,KAAK;IACLC,SAAS;AACTC,IAAAA,EAAE,GAAG,MAAM;AACXC,IAAAA,IAAI,GAAG,IAAI;IACXC,KAAK;IACLC,IAAI;IACJC,MAAM;IACNC,SAAS;IACTC,KAAK;IACL,GAAGC;AACL,GAAC,GAAGd,UAAU;EACd,MAAMe,oBAAoB,GAAGC,QAAQ,CAACJ,SAAS,CAAC,IAAIA,SAAS,IAAI,CAAC;EAElE,oBAAOK,aAAa,CAClBV,EAAE,EACF;AACEW,IAAAA,GAAG,EAAEpB,YAAY;AACjBO,IAAAA,KAAK,EAAE;AACL,MAAA,gBAAgB,EAAEc,gBAAgB,CAACV,KAAK,CAAC;AACzC,MAAA,qBAAqB,EAAEM,oBAAoB,GAAGH,SAAS,GAAGQ,SAAS;MACnE,GAAGlB,YAAY,CAACG,KAAK;MACrB,GAAGA;KACJ;IACDC,SAAS,EAAEe,UAAU,CACnBC,MAAM,CAAC3B,IAAI,EACX2B,MAAM,CAAC,CAAA,KAAA,EAAQd,IAAI,CAAA,CAAE,CAAC,EACtBE,IAAI,IAAIY,MAAM,CAACZ,IAAI,EACnBC,MAAM,IAAIW,MAAM,CAACX,MAAM,EACvBC,SAAS,KAAK,IAAI,GACdU,MAAM,CAACV,SAAS,GAChBG,oBAAoB,IAAIO,MAAM,CAAC,sBAAsB,CAAC,EAC1DT,KAAK,IAAIS,MAAM,CAAC,CAAST,MAAAA,EAAAA,KAAK,CAAE,CAAA,CAAC,EACjCX,YAAY,CAACI,SAAS,EACtBA,SACF,CAAC;AACD,IAAA,aAAa,EAAE,aAAa;IAC5B,GAAGQ;GACJ,EACDV,QACF,CAAC;AACH,CACF;;;;"}