{"version":3,"file":"Card.cjs","sources":["../../../src/components/Card/Card.tsx"],"sourcesContent":["import { Children, cloneElement } from 'react';\nimport {\n  BoxProps,\n  createVarsResolver,\n  getSpacing,\n  polymorphicFactory,\n  PolymorphicFactory,\n  RaikouRadius,\n  RaikouShadow,\n  RaikouSpacing,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../core';\nimport { Paper } from '../Paper';\nimport { CardProvider } from './Card.context';\nimport { CardSection } from './CardSection/CardSection';\nimport { CardRootStyle, CardSectionStyle } from './Card.css';\n\nexport type CardStylesNames = 'root' | 'section';\nexport type CardCssVariables = {\n  root: '--card-padding';\n};\n\nexport interface CardProps extends BoxProps, StylesApiProps<CardFactory> {\n  /** Key of `theme.shadows` or any valid CSS value to set `box-shadow`, `none` by default */\n  shadow?: RaikouShadow;\n\n  /** Key of `theme.radius` or any valid CSS value to set border-radius, numbers are converted to rem, `theme.defaultRadius` by default */\n  radius?: RaikouRadius;\n\n  /** Determines whether the card should have border, border color depends on color scheme, `false` by default */\n  withBorder?: boolean;\n\n  /** Controls `padding`, key of `theme.spacing` or any valid CSS value, `'md'` by default */\n  padding?: RaikouSpacing;\n\n  /** Card content */\n  children?: React.ReactNode;\n}\n\nexport type CardFactory = PolymorphicFactory<{\n  props: CardProps;\n  defaultRef: HTMLDivElement;\n  defaultComponent: 'div';\n  stylesNames: CardStylesNames;\n  vars: CardCssVariables;\n  staticComponents: {\n    Section: typeof CardSection;\n  };\n}>;\n\nconst defaultProps: Partial<CardProps> = {};\n\nconst varsResolver = createVarsResolver<CardFactory>((_, { padding }) => ({\n  root: {\n    '--card-padding': getSpacing(padding),\n  },\n}));\n\nexport const Card = polymorphicFactory<CardFactory>((_props, ref) => {\n  const props = useProps('Card', defaultProps, _props);\n  const { classNames, className, style, styles, unstyled, vars, children, padding, ...others } =\n    props;\n\n  const getStyles = useStyles<CardFactory>({\n    name: 'Card',\n    props,\n    classes: {\n      root: CardRootStyle,\n      section: CardSectionStyle,\n    },\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    vars,\n    varsResolver,\n  });\n\n  const _children = Children.toArray(children);\n  const content = _children.map((child, index) => {\n    if (typeof child === 'object' && child && 'type' in child && child.type === CardSection) {\n      return cloneElement(child, {\n        'data-first-section': index === 0 || undefined,\n        'data-last-section': index === _children.length - 1 || undefined,\n      });\n    }\n\n    return child;\n  });\n\n  return (\n    <CardProvider value={{ getStyles }}>\n      <Paper ref={ref} unstyled={unstyled} {...getStyles('root')} {...others}>\n        {content}\n      </Paper>\n    </CardProvider>\n  );\n});\n\nCard.displayName = '@raikou/core/Card';\nCard.Section = CardSection;\n"],"names":["createVarsResolver","getSpacing","polymorphicFactory","useProps","useStyles","CardRootStyle","CardSectionStyle","Children","CardSection","cloneElement","CardProvider","jsx","Paper"],"mappings":";;;;;;;;;;;;;;;;;;AAoDA,MAAM,eAAmC,EAAC;AAE1C,MAAM,eAAeA,qCAAgC,CAAA,CAAC,CAAG,EAAA,EAAE,SAAe,MAAA;AAAA,EACxE,IAAM,EAAA;AAAA,IACJ,gBAAA,EAAkBC,mBAAW,OAAO;AAAA;AAExC,CAAE,CAAA,CAAA;AAEK,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,EAAE,UAAY,EAAA,SAAA,EAAW,KAAO,EAAA,MAAA,EAAQ,QAAU,EAAA,IAAA,EAAM,QAAU,EAAA,OAAA,EAAS,GAAG,MAAA,EAClF,GAAA,KAAA;AAEF,EAAA,MAAM,YAAYC,mBAAuB,CAAA;AAAA,IACvC,IAAM,EAAA,MAAA;AAAA,IACN,KAAA;AAAA,IACA,OAAS,EAAA;AAAA,MACP,IAAM,EAAAC,sBAAA;AAAA,MACN,OAAS,EAAAC;AAAA,KACX;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAM,MAAA,SAAA,GAAYC,cAAS,CAAA,OAAA,CAAQ,QAAQ,CAAA;AAC3C,EAAA,MAAM,OAAU,GAAA,SAAA,CAAU,GAAI,CAAA,CAAC,OAAO,KAAU,KAAA;AAC9C,IAAI,IAAA,OAAO,UAAU,QAAY,IAAA,KAAA,IAAS,UAAU,KAAS,IAAA,KAAA,CAAM,SAASC,uBAAa,EAAA;AACvF,MAAA,OAAOC,mBAAa,KAAO,EAAA;AAAA,QACzB,oBAAA,EAAsB,UAAU,CAAK,IAAA,KAAA,CAAA;AAAA,QACrC,mBAAqB,EAAA,KAAA,KAAU,SAAU,CAAA,MAAA,GAAS,CAAK,IAAA,KAAA;AAAA,OACxD,CAAA;AAAA;AAGH,IAAO,OAAA,KAAA;AAAA,GACR,CAAA;AAED,EAAA,sCACGC,yBAAa,EAAA,EAAA,KAAA,EAAO,EAAE,SAAA,IACrB,QAAC,kBAAAC,cAAA,CAAAC,WAAA,EAAA,EAAM,GAAU,EAAA,QAAA,EAAqB,GAAG,SAAU,CAAA,MAAM,GAAI,GAAG,MAAA,EAC7D,mBACH,CACF,EAAA,CAAA;AAEJ,CAAC;AAED,IAAA,CAAK,WAAc,GAAA,mBAAA;AACnB,IAAA,CAAK,OAAU,GAAAJ,uBAAA;;;;"}