{"version":3,"file":"Text.cjs","sources":["../../../src/components/Text/Text.tsx"],"sourcesContent":["import {\n  Box,\n  BoxProps,\n  createVarsResolver,\n  getFontSize,\n  getGradient,\n  getLineHeight,\n  getThemeColor,\n  polymorphicFactory,\n  PolymorphicFactory,\n  RaikouColor,\n  RaikouGradient,\n  RaikouSize,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../core';\nimport { TextRootStyle } from './Text.css';\n\ntype TextTruncate = 'end' | 'start' | boolean;\n\nfunction getTextTruncate(truncate: TextTruncate | undefined) {\n  if (truncate === 'start') {\n    return 'start';\n  }\n\n  if (truncate === 'end' || truncate) {\n    return 'end';\n  }\n\n  return undefined;\n}\n\nexport type TextStylesNames = 'root';\nexport type TextVariant = 'text' | 'gradient';\nexport type TextCssVariables = {\n  root: '--text-gradient' | '--text-line-clamp' | '--text-fz' | '--text-lh';\n};\n\nexport interface TextProps extends BoxProps, StylesApiProps<TextFactory> {\n  __staticSelector?: string;\n\n  /** Controls `font-size` and `line-height`, `'md'` by default */\n  size?: RaikouSize | (string & {});\n\n  /** Number of lines after which Text will be truncated */\n  lineClamp?: number;\n\n  /** Side on which Text must be truncated, if `true`, text is truncated from the start */\n  truncate?: TextTruncate;\n\n  /** Sets `line-height` to 1 for centering, `false` by default */\n  inline?: boolean;\n\n  /** Determines whether font properties should be inherited from the parent, `false` by default */\n  inherit?: boolean;\n\n  /** Gradient configuration, ignored when `variant` is not `gradient`, `theme.defaultGradient` by default */\n  gradient?: RaikouGradient;\n\n  /** Shorthand for `component=\"span\"`, `false` by default, default root element is `p` */\n  span?: boolean;\n\n  /** @deprecated Use `c` prop instead */\n  color?: RaikouColor;\n}\n\nexport type TextFactory = PolymorphicFactory<{\n  props: TextProps;\n  defaultComponent: 'p';\n  defaultRef: HTMLParagraphElement;\n  stylesNames: TextStylesNames;\n  vars: TextCssVariables;\n  variant: TextVariant;\n}>;\n\nconst defaultProps: Partial<TextProps> = {\n  inherit: false,\n};\n\nconst varsResolver = createVarsResolver<TextFactory>(\n  (theme, { variant, lineClamp, gradient, size, color }) => ({\n    root: {\n      '--text-fz': getFontSize(size),\n      '--text-lh': getLineHeight(size),\n      '--text-gradient': variant === 'gradient' ? getGradient(gradient, theme) : undefined,\n      '--text-line-clamp': typeof lineClamp === 'number' ? lineClamp.toString() : undefined,\n      '--text-color': color ? getThemeColor(color, theme) : undefined,\n    },\n  })\n);\n\nexport const Text = polymorphicFactory<TextFactory>((_props, ref) => {\n  const props = useProps('Text', defaultProps, _props);\n  const {\n    lineClamp,\n    truncate,\n    inline,\n    inherit,\n    gradient,\n    span,\n    __staticSelector,\n    vars,\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    variant,\n    mod,\n    size,\n    ...others\n  } = props;\n\n  const getStyles = useStyles<TextFactory>({\n    name: ['Text', __staticSelector],\n    props,\n    classes: {\n      root: TextRootStyle,\n    },\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    vars,\n    varsResolver,\n  });\n\n  return (\n    <Box\n      {...getStyles('root', { focusable: true })}\n      ref={ref}\n      component={span ? 'span' : 'p'}\n      variant={variant}\n      mod={[\n        {\n          'data-truncate': getTextTruncate(truncate),\n          'data-line-clamp': typeof lineClamp === 'number',\n          'data-inline': inline,\n          'data-inherit': inherit,\n        },\n        mod,\n      ]}\n      size={size}\n      {...others}\n    />\n  );\n});\n\nText.displayName = '@raikou/core/Text';\n"],"names":["createVarsResolver","getFontSize","getLineHeight","getGradient","getThemeColor","polymorphicFactory","useProps","useStyles","TextRootStyle","jsx","Box"],"mappings":";;;;;;;;;;;;;;;;;AAqBA,SAAS,gBAAgB,QAAoC,EAAA;AAC3D,EAAA,IAAI,aAAa,OAAS,EAAA;AACxB,IAAO,OAAA,OAAA;AAAA;AAGT,EAAI,IAAA,QAAA,KAAa,SAAS,QAAU,EAAA;AAClC,IAAO,OAAA,KAAA;AAAA;AAGT,EAAO,OAAA,KAAA,CAAA;AACT;AA6CA,MAAM,YAAmC,GAAA;AAAA,EACvC,OAAS,EAAA;AACX,CAAA;AAEA,MAAM,YAAe,GAAAA,qCAAA;AAAA,EACnB,CAAC,OAAO,EAAE,OAAA,EAAS,WAAW,QAAU,EAAA,IAAA,EAAM,OAAa,MAAA;AAAA,IACzD,IAAM,EAAA;AAAA,MACJ,WAAA,EAAaC,oBAAY,IAAI,CAAA;AAAA,MAC7B,WAAA,EAAaC,sBAAc,IAAI,CAAA;AAAA,MAC/B,mBAAmB,OAAY,KAAA,UAAA,GAAaC,uBAAY,CAAA,QAAA,EAAU,KAAK,CAAI,GAAA,KAAA,CAAA;AAAA,MAC3E,qBAAqB,OAAO,SAAA,KAAc,QAAW,GAAA,SAAA,CAAU,UAAa,GAAA,KAAA,CAAA;AAAA,MAC5E,cAAgB,EAAA,KAAA,GAAQC,2BAAc,CAAA,KAAA,EAAO,KAAK,CAAI,GAAA,KAAA;AAAA;AACxD,GACF;AACF,CAAA;AAEO,MAAM,IAAO,GAAAC,qCAAA,CAAgC,CAAC,MAAA,EAAQ,GAAQ,KAAA;AACnE,EAAA,MAAM,KAAQ,GAAAC,iBAAA,CAAS,MAAQ,EAAA,YAAA,EAAc,MAAM,CAAA;AACnD,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,gBAAA;AAAA,IACA,IAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAA;AAAA,IACA,IAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,YAAYC,mBAAuB,CAAA;AAAA,IACvC,IAAA,EAAM,CAAC,MAAA,EAAQ,gBAAgB,CAAA;AAAA,IAC/B,KAAA;AAAA,IACA,OAAS,EAAA;AAAA,MACP,IAAM,EAAAC;AAAA,KACR;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EACE,uBAAAC,cAAA;AAAA,IAACC,OAAA;AAAA,IAAA;AAAA,MACE,GAAG,SAAU,CAAA,MAAA,EAAQ,EAAE,SAAA,EAAW,MAAM,CAAA;AAAA,MACzC,GAAA;AAAA,MACA,SAAA,EAAW,OAAO,MAAS,GAAA,GAAA;AAAA,MAC3B,OAAA;AAAA,MACA,GAAK,EAAA;AAAA,QACH;AAAA,UACE,eAAA,EAAiB,gBAAgB,QAAQ,CAAA;AAAA,UACzC,iBAAA,EAAmB,OAAO,SAAc,KAAA,QAAA;AAAA,UACxC,aAAe,EAAA,MAAA;AAAA,UACf,cAAgB,EAAA;AAAA,SAClB;AAAA,QACA;AAAA,OACF;AAAA,MACA,IAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AAED,IAAA,CAAK,WAAc,GAAA,mBAAA;;;;"}