{"version":3,"file":"CloseButton.cjs","sources":["../../../src/components/CloseButton/CloseButton.tsx"],"sourcesContent":["import {\n  BoxProps,\n  createVarsResolver,\n  getRadius,\n  getSize,\n  polymorphicFactory,\n  PolymorphicFactory,\n  RaikouRadius,\n  RaikouSize,\n  rem,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../core';\nimport { UnstyledButton } from '../UnstyledButton';\nimport { CloseIcon } from './CloseIcon';\nimport { CloseButtonRootStyle } from './CloseButton.css';\n\nexport type CloseButtonVariant = 'subtle' | 'transparent';\nexport type CloseButtonStylesNames = 'root';\nexport type CloseButtonCssVariables = {\n  root: '--cb-icon-size' | '--cb-size' | '--cb-radius';\n};\n\nexport interface __CloseButtonProps {\n  'data-disabled'?: boolean;\n\n  /** Controls width and height of the button. Numbers are converted to rem. `'md'` by default. */\n  size?: RaikouSize | (string & {}) | number;\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  /** Sets `disabled` and `data-disabled` attributes on the button element */\n  disabled?: boolean;\n\n  /** `X` icon `width` and `height`, `80%` by default */\n  iconSize?: number | string;\n\n  /** Content rendered inside the button, for example `VisuallyHidden` with label for screen readers */\n  children?: React.ReactNode;\n\n  /** Replaces default close icon. If set, `iconSize` prop is ignored. */\n  icon?: React.ReactNode;\n}\n\nexport interface CloseButtonProps\n  extends __CloseButtonProps,\n    BoxProps,\n    StylesApiProps<CloseButtonFactory> {}\n\nexport type CloseButtonFactory = PolymorphicFactory<{\n  props: CloseButtonProps;\n  defaultComponent: 'button';\n  defaultRef: HTMLButtonElement;\n  stylesNames: CloseButtonStylesNames;\n  variant: CloseButtonVariant;\n  vars: CloseButtonCssVariables;\n}>;\n\nconst defaultProps: Partial<CloseButtonProps> = {\n  variant: 'subtle',\n};\n\nconst varsResolver = createVarsResolver<CloseButtonFactory>((_, { size, radius, iconSize }) => ({\n  root: {\n    '--cb-size': getSize(size, 'cb-size'),\n    '--cb-radius': radius === undefined ? undefined : getRadius(radius),\n    '--cb-icon-size': rem(iconSize),\n  },\n}));\n\nexport const CloseButton = polymorphicFactory<CloseButtonFactory>((_props, ref) => {\n  const props = useProps('CloseButton', defaultProps, _props);\n  const {\n    iconSize,\n    children,\n    vars,\n    radius,\n    className,\n    classNames,\n    style,\n    styles,\n    unstyled,\n    'data-disabled': dataDisabled,\n    disabled,\n    variant,\n    icon,\n    mod,\n    ...others\n  } = props;\n\n  const getStyles = useStyles<CloseButtonFactory>({\n    name: 'CloseButton',\n    props,\n    className,\n    style,\n    classes: {\n      root: CloseButtonRootStyle,\n    },\n    classNames,\n    styles,\n    unstyled,\n    vars,\n    varsResolver,\n  });\n\n  return (\n    <UnstyledButton\n      ref={ref}\n      {...others}\n      unstyled={unstyled}\n      variant={variant}\n      disabled={disabled}\n      mod={[{ disabled: disabled || dataDisabled }, mod]}\n      {...getStyles('root', { variant, active: !disabled && !dataDisabled })}\n    >\n      {icon || <CloseIcon />}\n      {children}\n    </UnstyledButton>\n  );\n});\n\nCloseButton.displayName = '@raikou/core/CloseButton';\n"],"names":["createVarsResolver","getSize","getRadius","rem","polymorphicFactory","useProps","useStyles","CloseButtonRootStyle","jsxs","UnstyledButton","CloseIcon"],"mappings":";;;;;;;;;;;;;;;;;;AA4DA,MAAM,YAA0C,GAAA;AAAA,EAC9C,OAAS,EAAA;AACX,CAAA;AAEA,MAAM,YAAA,GAAeA,sCAAuC,CAAC,CAAA,EAAG,EAAE,IAAM,EAAA,MAAA,EAAQ,UAAgB,MAAA;AAAA,EAC9F,IAAM,EAAA;AAAA,IACJ,WAAA,EAAaC,eAAQ,CAAA,IAAA,EAAM,SAAS,CAAA;AAAA,IACpC,aAAe,EAAA,MAAA,KAAW,KAAY,CAAA,GAAA,KAAA,CAAA,GAAYC,kBAAU,MAAM,CAAA;AAAA,IAClE,gBAAA,EAAkBC,QAAI,QAAQ;AAAA;AAElC,CAAE,CAAA,CAAA;AAEK,MAAM,WAAc,GAAAC,qCAAA,CAAuC,CAAC,MAAA,EAAQ,GAAQ,KAAA;AACjF,EAAA,MAAM,KAAQ,GAAAC,iBAAA,CAAS,aAAe,EAAA,YAAA,EAAc,MAAM,CAAA;AAC1D,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,eAAiB,EAAA,YAAA;AAAA,IACjB,QAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,YAAYC,mBAA8B,CAAA;AAAA,IAC9C,IAAM,EAAA,aAAA;AAAA,IACN,KAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAS,EAAA;AAAA,MACP,IAAM,EAAAC;AAAA,KACR;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EACE,uBAAAC,eAAA;AAAA,IAACC,6BAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACC,GAAG,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAK,CAAC,EAAE,UAAU,QAAY,IAAA,YAAA,IAAgB,GAAG,CAAA;AAAA,MAChD,GAAG,SAAU,CAAA,MAAA,EAAQ,EAAE,OAAA,EAAS,QAAQ,CAAC,QAAA,IAAY,CAAC,YAAA,EAAc,CAAA;AAAA,MAEpE,QAAA,EAAA;AAAA,QAAA,IAAA,mCAASC,mBAAU,EAAA,EAAA,CAAA;AAAA,QACnB;AAAA;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,WAAA,CAAY,WAAc,GAAA,0BAAA;;;;"}