{"version":3,"file":"Title.mjs","sources":["../../../src/components/Title/Title.tsx"],"sourcesContent":["import {\n  Box,\n  BoxProps,\n  createVarsResolver,\n  ElementProps,\n  factory,\n  Factory,\n  RaikouSize,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../core';\nimport { getTitleSize } from './get-title-size';\nimport { TitleRootStyle } from './Title.css';\n\nexport type TitleOrder = 1 | 2 | 3 | 4 | 5 | 6;\nexport type TitleSize = `h${TitleOrder}` | React.CSSProperties['fontSize'] | RaikouSize;\n\nexport type TitleStylesNames = 'root';\nexport type TitleCssVariables = {\n  root: '--title-fw' | '--title-lh' | '--title-fz' | '--title-line-clamp' | '--title-text-wrap';\n};\n\nexport interface TitleProps\n  extends BoxProps,\n    StylesApiProps<TitleFactory>,\n    ElementProps<'h1', 'color'> {\n  /** Determines which tag will be used (h1-h6), controls `font-size` style if `size` prop is not set, `1` by default */\n  order?: TitleOrder;\n\n  /** Changes title size, if not set, then size is controlled by `order` prop */\n  size?: TitleSize;\n\n  /** Number of lines after which Text will be truncated */\n  lineClamp?: number;\n\n  /** Controls `text-wrap` property, `'wrap'` by default */\n  textWrap?: 'wrap' | 'nowrap' | 'balance' | 'pretty' | 'stable';\n}\n\nexport type TitleFactory = Factory<{\n  props: TitleProps;\n  ref: HTMLHeadingElement;\n  stylesNames: TitleStylesNames;\n  vars: TitleCssVariables;\n}>;\n\nconst defaultProps: Partial<TitleProps> = {\n  order: 1,\n};\n\nconst varsResolver = createVarsResolver<TitleFactory>((_, { order, size, lineClamp, textWrap }) => {\n  const sizeVariables = getTitleSize(order!, size);\n  return {\n    root: {\n      '--title-fw': sizeVariables.fontWeight,\n      '--title-lh': sizeVariables.lineHeight,\n      '--title-fz': sizeVariables.fontSize,\n      '--title-line-clamp': typeof lineClamp === 'number' ? lineClamp.toString() : undefined,\n      '--title-text-wrap': textWrap,\n    },\n  };\n});\n\nexport const Title = factory<TitleFactory>((_props, ref) => {\n  const props = useProps('Title', defaultProps, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    unstyled,\n    order,\n    vars,\n    size,\n    variant,\n    lineClamp,\n    textWrap,\n    mod,\n    ...others\n  } = props;\n\n  const getStyles = useStyles<TitleFactory>({\n    name: 'Title',\n    props,\n    classes: {\n      root: TitleRootStyle,\n    },\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    vars,\n    varsResolver,\n  });\n\n  if (![1, 2, 3, 4, 5, 6].includes(order!)) {\n    return null;\n  }\n\n  return (\n    <Box\n      {...getStyles('root')}\n      component={`h${order!}`}\n      variant={variant}\n      ref={ref}\n      mod={[{ order, 'data-line-clamp': typeof lineClamp === 'number' }, mod]}\n      size={size}\n      {...others}\n    />\n  );\n});\n\nTitle.displayName = '@raikou/core/Title';\n"],"names":[],"mappings":";;;;;;;;;;;;;AA+CA,MAAM,YAAoC,GAAA;AAAA,EACxC,KAAO,EAAA;AACT,CAAA;AAEA,MAAM,YAAA,GAAe,mBAAiC,CAAC,CAAA,EAAG,EAAE,KAAO,EAAA,IAAA,EAAM,SAAW,EAAA,QAAA,EAAe,KAAA;AACjG,EAAM,MAAA,aAAA,GAAgB,YAAa,CAAA,KAAA,EAAQ,IAAI,CAAA;AAC/C,EAAO,OAAA;AAAA,IACL,IAAM,EAAA;AAAA,MACJ,cAAc,aAAc,CAAA,UAAA;AAAA,MAC5B,cAAc,aAAc,CAAA,UAAA;AAAA,MAC5B,cAAc,aAAc,CAAA,QAAA;AAAA,MAC5B,sBAAsB,OAAO,SAAA,KAAc,QAAW,GAAA,SAAA,CAAU,UAAa,GAAA,KAAA,CAAA;AAAA,MAC7E,mBAAqB,EAAA;AAAA;AACvB,GACF;AACF,CAAC,CAAA;AAEM,MAAM,KAAQ,GAAA,OAAA,CAAsB,CAAC,MAAA,EAAQ,GAAQ,KAAA;AAC1D,EAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,OAAS,EAAA,YAAA,EAAc,MAAM,CAAA;AACpD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,YAAY,SAAwB,CAAA;AAAA,IACxC,IAAM,EAAA,OAAA;AAAA,IACN,KAAA;AAAA,IACA,OAAS,EAAA;AAAA,MACP,IAAM,EAAA;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,EAAI,IAAA,CAAC,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAC,CAAA,CAAE,QAAS,CAAA,KAAM,CAAG,EAAA;AACxC,IAAO,OAAA,IAAA;AAAA;AAGT,EACE,uBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAU,MAAM,CAAA;AAAA,MACpB,SAAA,EAAW,IAAI,KAAM,CAAA,CAAA;AAAA,MACrB,OAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA,EAAK,CAAC,EAAE,KAAA,EAAO,mBAAmB,OAAO,SAAA,KAAc,QAAS,EAAA,EAAG,GAAG,CAAA;AAAA,MACtE,IAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AAED,KAAA,CAAM,WAAc,GAAA,oBAAA;;;;"}