{"version":3,"file":"Burger.cjs","sources":["../../../src/components/Burger/Burger.tsx"],"sourcesContent":["import {\n  Box,\n  BoxProps,\n  createVarsResolver,\n  ElementProps,\n  factory,\n  Factory,\n  getSize,\n  getThemeColor,\n  RaikouColor,\n  RaikouSize,\n  rem,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../core';\nimport { UnstyledButton } from '../UnstyledButton';\nimport { BurgerBurgerStyle, BurgerRootStyle } from './Burger.css';\n\nexport type BurgerStylesNames = 'root' | 'burger';\nexport type BurgerCssVariables = {\n  root:\n    | '--burger-color'\n    | '--burger-size'\n    | '--burger-line-size'\n    | '--burger-transition-duration'\n    | '--burger-transition-timing-function';\n};\n\nexport interface BurgerProps\n  extends BoxProps,\n    StylesApiProps<BurgerFactory>,\n    ElementProps<'button'> {\n  /** Controls burger `width` and `height`, numbers are converted to rem, `'md'` by default */\n  size?: RaikouSize | (string & {}) | number;\n\n  /** Controls height of lines, by default calculated based on `size` prop */\n  lineSize?: string | number;\n\n  /** Key of `theme.colors` of any valid CSS value, by default `theme.white` in dark color scheme and `theme.black` in light */\n  color?: RaikouColor;\n\n  /** State of the burger, when `true` burger is transformed into X, `false` by default */\n  opened?: boolean;\n\n  /** `transition-duration` property value in ms, `300` by default */\n  transitionDuration?: number;\n\n  /** `transition-timing-function` property value, `'ease'` by default  */\n  transitionTimingFunction?: string;\n}\n\nexport type BurgerFactory = Factory<{\n  props: BurgerProps;\n  ref: HTMLButtonElement;\n  stylesNames: BurgerStylesNames;\n  vars: BurgerCssVariables;\n}>;\n\nconst defaultProps: Partial<BurgerProps> = {};\n\nconst varsResolver = createVarsResolver<BurgerFactory>(\n  (theme, { color, size, lineSize, transitionDuration, transitionTimingFunction }) => ({\n    root: {\n      '--burger-color': color ? getThemeColor(color, theme) : undefined,\n      '--burger-size': getSize(size, 'burger-size'),\n      '--burger-line-size': lineSize ? rem(lineSize) : undefined,\n      '--burger-transition-duration':\n        transitionDuration === undefined ? undefined : `${transitionDuration}ms`,\n      '--burger-transition-timing-function': transitionTimingFunction,\n    },\n  })\n);\n\nexport const Burger = factory<BurgerFactory>((_props, ref) => {\n  const props = useProps('Burger', defaultProps, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    unstyled,\n    vars,\n    opened,\n    children,\n    transitionDuration,\n    transitionTimingFunction,\n    lineSize,\n    ...others\n  } = props;\n\n  const getStyles = useStyles<BurgerFactory>({\n    name: 'Burger',\n    classes: {\n      root: BurgerRootStyle,\n      burger: BurgerBurgerStyle,\n    },\n    props,\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    vars,\n    varsResolver,\n  });\n\n  return (\n    <UnstyledButton {...getStyles('root')} ref={ref} {...others}>\n      <Box mod={['reduce-motion', { opened }]} {...getStyles('burger')} />\n      {children}\n    </UnstyledButton>\n  );\n});\n\nBurger.displayName = '@raikou/core/Burger';\n"],"names":["createVarsResolver","getThemeColor","getSize","rem","factory","useProps","useStyles","BurgerRootStyle","BurgerBurgerStyle","jsxs","UnstyledButton","jsx","Box"],"mappings":";;;;;;;;;;;;;;;;;;AA2DA,MAAM,eAAqC,EAAC;AAE5C,MAAM,YAAe,GAAAA,qCAAA;AAAA,EACnB,CAAC,OAAO,EAAE,KAAA,EAAO,MAAM,QAAU,EAAA,kBAAA,EAAoB,0BAAgC,MAAA;AAAA,IACnF,IAAM,EAAA;AAAA,MACJ,gBAAkB,EAAA,KAAA,GAAQC,2BAAc,CAAA,KAAA,EAAO,KAAK,CAAI,GAAA,KAAA,CAAA;AAAA,MACxD,eAAA,EAAiBC,eAAQ,CAAA,IAAA,EAAM,aAAa,CAAA;AAAA,MAC5C,oBAAsB,EAAA,QAAA,GAAWC,OAAI,CAAA,QAAQ,CAAI,GAAA,KAAA,CAAA;AAAA,MACjD,8BACE,EAAA,kBAAA,KAAuB,KAAY,CAAA,GAAA,KAAA,CAAA,GAAY,GAAG,kBAAkB,CAAA,EAAA,CAAA;AAAA,MACtE,qCAAuC,EAAA;AAAA;AACzC,GACF;AACF,CAAA;AAEO,MAAM,MAAS,GAAAC,eAAA,CAAuB,CAAC,MAAA,EAAQ,GAAQ,KAAA;AAC5D,EAAA,MAAM,KAAQ,GAAAC,iBAAA,CAAS,QAAU,EAAA,YAAA,EAAc,MAAM,CAAA;AACrD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,kBAAA;AAAA,IACA,wBAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,YAAYC,mBAAyB,CAAA;AAAA,IACzC,IAAM,EAAA,QAAA;AAAA,IACN,OAAS,EAAA;AAAA,MACP,IAAM,EAAAC,0BAAA;AAAA,MACN,MAAQ,EAAAC;AAAA,KACV;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,uBAAAC,eAAA,CAACC,iCAAgB,GAAG,SAAA,CAAU,MAAM,CAAG,EAAA,GAAA,EAAW,GAAG,MACnD,EAAA,QAAA,EAAA;AAAA,oBAACC,cAAA,CAAAC,OAAA,EAAA,EAAI,GAAK,EAAA,CAAC,eAAiB,EAAA,EAAE,MAAO,EAAC,CAAI,EAAA,GAAG,SAAU,CAAA,QAAQ,CAAG,EAAA,CAAA;AAAA,IACjE;AAAA,GACH,EAAA,CAAA;AAEJ,CAAC;AAED,MAAA,CAAO,WAAc,GAAA,qBAAA;;;;"}