{"version":3,"file":"Blockquote.mjs","sources":["../../../src/components/Blockquote/Blockquote.tsx"],"sourcesContent":["import {\n  Box,\n  BoxProps,\n  createVarsResolver,\n  ElementProps,\n  factory,\n  Factory,\n  getRadius,\n  getThemeColor,\n  parseThemeColor,\n  RaikouColor,\n  RaikouRadius,\n  rem,\n  rgba,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../core';\nimport { BlockquoteCiteStyle, BlockquoteIconStyle, BlockquoteRootStyle } from './Blockquote.css';\n\nexport type BlockquoteStylesNames = 'root' | 'icon' | 'cite';\nexport type BlockquoteCssVariables = {\n  root: '--bq-bg-light' | '--bq-bg-dark' | '--bq-bd' | '--bq-icon-size' | '--bq-radius';\n};\n\nexport interface BlockquoteProps\n  extends BoxProps,\n    StylesApiProps<BlockquoteFactory>,\n    ElementProps<'blockquote', 'cite'> {\n  /** Blockquote icon, displayed on the top left */\n  icon?: React.ReactNode;\n\n  /** Controls icon `width` and `height`, numbers are converted to rem, `40` by default */\n  iconSize?: number | string;\n\n  /** Key of `theme.colors` or any valid CSS color, `theme.primaryColor` by default */\n  color?: RaikouColor;\n\n  /** Key of `theme.radius` or any valid CSS value to set `border-radius`, `theme.defaultRadius` by default */\n  radius?: RaikouRadius;\n\n  /** Reference to a cited quote */\n  cite?: React.ReactNode;\n}\n\nexport type BlockquoteFactory = Factory<{\n  props: BlockquoteProps;\n  ref: HTMLQuoteElement;\n  stylesNames: BlockquoteStylesNames;\n  vars: BlockquoteCssVariables;\n}>;\n\nconst defaultProps: Partial<BlockquoteProps> = {\n  iconSize: 48,\n};\n\nconst varsResolver = createVarsResolver<BlockquoteFactory>((theme, { color, iconSize, radius }) => {\n  const darkParsed = parseThemeColor({\n    color: color || theme.primaryColor,\n    theme,\n    colorScheme: 'dark',\n  });\n\n  const lightParsed = parseThemeColor({\n    color: color || theme.primaryColor,\n    theme,\n    colorScheme: 'light',\n  });\n\n  return {\n    root: {\n      '--bq-bg-light': rgba(lightParsed.value, 0.07),\n      '--bq-bg-dark': rgba(darkParsed.value, 0.06),\n      '--bq-bd': getThemeColor(color, theme),\n      '--bq-icon-size': rem(iconSize),\n      '--bq-radius': getRadius(radius),\n    },\n  };\n});\n\nexport const Blockquote = factory<BlockquoteFactory>((_props, ref) => {\n  const props = useProps('Blockquote', defaultProps, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    unstyled,\n    vars,\n    children,\n    icon,\n    iconSize,\n    cite,\n    ...others\n  } = props;\n\n  const getStyles = useStyles<BlockquoteFactory>({\n    name: 'Blockquote',\n    classes: {\n      root: BlockquoteRootStyle,\n      icon: BlockquoteIconStyle,\n      cite: BlockquoteCiteStyle,\n    },\n    props,\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    vars,\n    varsResolver,\n  });\n\n  return (\n    <Box component=\"blockquote\" ref={ref} {...getStyles('root')} {...others}>\n      {icon && <span {...getStyles('icon')}>{icon}</span>}\n      {children}\n      {cite && <cite {...getStyles('cite')}>{cite}</cite>}\n    </Box>\n  );\n});\n\nBlockquote.displayName = '@raikou/core/Blockquote';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAoDA,MAAM,YAAyC,GAAA;AAAA,EAC7C,QAAU,EAAA;AACZ,CAAA;AAEA,MAAM,YAAA,GAAe,mBAAsC,CAAC,KAAA,EAAO,EAAE,KAAO,EAAA,QAAA,EAAU,QAAa,KAAA;AACjG,EAAA,MAAM,aAAa,eAAgB,CAAA;AAAA,IACjC,KAAA,EAAO,SAAS,KAAM,CAAA,YAAA;AAAA,IACtB,KAAA;AAAA,IACA,WAAa,EAAA;AAAA,GACd,CAAA;AAED,EAAA,MAAM,cAAc,eAAgB,CAAA;AAAA,IAClC,KAAA,EAAO,SAAS,KAAM,CAAA,YAAA;AAAA,IACtB,KAAA;AAAA,IACA,WAAa,EAAA;AAAA,GACd,CAAA;AAED,EAAO,OAAA;AAAA,IACL,IAAM,EAAA;AAAA,MACJ,eAAiB,EAAA,IAAA,CAAK,WAAY,CAAA,KAAA,EAAO,IAAI,CAAA;AAAA,MAC7C,cAAgB,EAAA,IAAA,CAAK,UAAW,CAAA,KAAA,EAAO,IAAI,CAAA;AAAA,MAC3C,SAAA,EAAW,aAAc,CAAA,KAAA,EAAO,KAAK,CAAA;AAAA,MACrC,gBAAA,EAAkB,IAAI,QAAQ,CAAA;AAAA,MAC9B,aAAA,EAAe,UAAU,MAAM;AAAA;AACjC,GACF;AACF,CAAC,CAAA;AAEM,MAAM,UAAa,GAAA,OAAA,CAA2B,CAAC,MAAA,EAAQ,GAAQ,KAAA;AACpE,EAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,YAAc,EAAA,YAAA,EAAc,MAAM,CAAA;AACzD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,YAAY,SAA6B,CAAA;AAAA,IAC7C,IAAM,EAAA,YAAA;AAAA,IACN,OAAS,EAAA;AAAA,MACP,IAAM,EAAA,mBAAA;AAAA,MACN,IAAM,EAAA,mBAAA;AAAA,MACN,IAAM,EAAA;AAAA,KACR;AAAA,IACA,KAAA;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,uBAAA,IAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAU,YAAa,EAAA,GAAA,EAAW,GAAG,SAAU,CAAA,MAAM,CAAI,EAAA,GAAG,MAC9D,EAAA,QAAA,EAAA;AAAA,IAAA,IAAA,wBAAS,MAAM,EAAA,EAAA,GAAG,SAAU,CAAA,MAAM,GAAI,QAAK,EAAA,IAAA,EAAA,CAAA;AAAA,IAC3C,QAAA;AAAA,IACA,wBAAS,GAAA,CAAA,MAAA,EAAA,EAAM,GAAG,SAAU,CAAA,MAAM,GAAI,QAAK,EAAA,IAAA,EAAA;AAAA,GAC9C,EAAA,CAAA;AAEJ,CAAC;AAED,UAAA,CAAW,WAAc,GAAA,yBAAA;;;;"}