{"version":3,"file":"ActionIcon.cjs","names":["createVarsResolver","getSize","getRadius","polymorphicFactory","useProps","useStyles","UnstyledButton","Transition","Box","Loader","classes","ActionIconGroup","ActionIconGroupSection"],"sources":["../../../src/components/ActionIcon/ActionIcon.tsx"],"sourcesContent":["import {\n  Box,\n  BoxProps,\n  createVarsResolver,\n  getRadius,\n  getSize,\n  MantineColor,\n  MantineGradient,\n  MantineRadius,\n  MantineSize,\n  polymorphicFactory,\n  PolymorphicFactory,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../core';\nimport { Loader, LoaderProps } from '../Loader';\nimport { Transition } from '../Transition';\nimport { UnstyledButton } from '../UnstyledButton';\nimport { ActionIconGroup } from './ActionIconGroup/ActionIconGroup';\nimport { ActionIconGroupSection } from './ActionIconGroupSection/ActionIconGroupSection';\nimport classes from './ActionIcon.module.css';\n\nexport type ActionIconVariant =\n  | 'filled'\n  | 'light'\n  | 'outline'\n  | 'transparent'\n  | 'white'\n  | 'subtle'\n  | 'default'\n  | 'gradient';\n\nexport type ActionIconStylesNames = 'root' | 'loader' | 'icon';\nexport type ActionIconCssVariables = {\n  root:\n    | '--ai-radius'\n    | '--ai-size'\n    | '--ai-bg'\n    | '--ai-hover'\n    | '--ai-hover-color'\n    | '--ai-color'\n    | '--ai-bd';\n};\n\nexport interface ActionIconProps extends BoxProps, StylesApiProps<ActionIconFactory> {\n  'data-disabled'?: boolean;\n  __staticSelector?: string;\n\n  /** If set, `Loader` component is displayed instead of the `children` */\n  loading?: boolean;\n\n  /** Props passed down to the `Loader` component. Ignored when `loading` prop is not set. */\n  loaderProps?: LoaderProps;\n\n  /** Controls width and height of the button. Numbers are converted to rem. @default 'md'. */\n  size?: MantineSize | `input-${MantineSize}` | (string & {}) | number;\n\n  /** Key of `theme.colors` or any valid CSS color. @default theme.primaryColor. */\n  color?: MantineColor;\n\n  /** Key of `theme.radius` or any valid CSS value to set border-radius. Numbers are converted to rem. @default theme.defaultRadius */\n  radius?: MantineRadius;\n\n  /** Gradient values used with `variant=\"gradient\"`. @default theme.defaultGradient. */\n  gradient?: MantineGradient;\n\n  /** Sets `disabled` attribute, prevents interactions */\n  disabled?: boolean;\n\n  /** Icon element */\n  children?: React.ReactNode;\n\n  /** If set, adjusts text color based on background color for `filled` variant */\n  autoContrast?: boolean;\n}\n\nexport type ActionIconFactory = PolymorphicFactory<{\n  props: ActionIconProps;\n  defaultComponent: 'button';\n  defaultRef: HTMLButtonElement;\n  stylesNames: ActionIconStylesNames;\n  variant: ActionIconVariant;\n  vars: ActionIconCssVariables;\n  staticComponents: {\n    Group: typeof ActionIconGroup;\n    GroupSection: typeof ActionIconGroupSection;\n  };\n}>;\n\nconst varsResolver = createVarsResolver<ActionIconFactory>(\n  (theme, { size, radius, variant, gradient, color, autoContrast }) => {\n    const colors = theme.variantColorResolver({\n      color: color || theme.primaryColor,\n      theme,\n      gradient,\n      variant: variant || 'filled',\n      autoContrast,\n    });\n\n    return {\n      root: {\n        '--ai-size': getSize(size, 'ai-size'),\n        '--ai-radius': radius === undefined ? undefined : getRadius(radius),\n        '--ai-bg': color || variant ? colors.background : undefined,\n        '--ai-hover': color || variant ? colors.hover : undefined,\n        '--ai-hover-color': color || variant ? colors.hoverColor : undefined,\n        '--ai-color': colors.color,\n        '--ai-bd': color || variant ? colors.border : undefined,\n      },\n    };\n  }\n);\n\nexport const ActionIcon = polymorphicFactory<ActionIconFactory>((_props) => {\n  const props = useProps('ActionIcon', null, _props);\n  const {\n    className,\n    unstyled,\n    variant,\n    classNames,\n    styles,\n    style,\n    loading,\n    loaderProps,\n    size,\n    color,\n    radius,\n    __staticSelector,\n    gradient,\n    vars,\n    children,\n    disabled,\n    'data-disabled': dataDisabled,\n    autoContrast,\n    mod,\n    attributes,\n    ...others\n  } = props;\n\n  const getStyles = useStyles<ActionIconFactory>({\n    name: ['ActionIcon', __staticSelector],\n    props,\n    className,\n    style,\n    classes,\n    classNames,\n    styles,\n    unstyled,\n    attributes,\n    vars,\n    varsResolver,\n  });\n\n  return (\n    <UnstyledButton\n      {...getStyles('root', { active: !disabled && !loading && !dataDisabled })}\n      {...others}\n      unstyled={unstyled}\n      variant={variant}\n      size={size}\n      disabled={disabled || loading}\n      mod={[{ loading, disabled: disabled || dataDisabled }, mod]}\n    >\n      {typeof loading === 'boolean' && (\n        <Transition mounted={loading} transition=\"slide-down\" duration={150}>\n          {(transitionStyles) => (\n            <Box component=\"span\" {...getStyles('loader', { style: transitionStyles })} aria-hidden>\n              <Loader color=\"var(--ai-color)\" size=\"calc(var(--ai-size) * 0.55)\" {...loaderProps} />\n            </Box>\n          )}\n        </Transition>\n      )}\n\n      <Box component=\"span\" mod={{ loading }} {...getStyles('icon')}>\n        {children}\n      </Box>\n    </UnstyledButton>\n  );\n});\n\nActionIcon.classes = classes;\nActionIcon.varsResolver = varsResolver;\nActionIcon.displayName = '@mantine/core/ActionIcon';\nActionIcon.Group = ActionIconGroup;\nActionIcon.GroupSection = ActionIconGroupSection;\n"],"mappings":";;;;;;;;;;;;;;;;AA0FA,MAAM,eAAeA,6BAAAA,oBAClB,OAAO,EAAE,MAAM,QAAQ,SAAS,UAAU,OAAO,mBAAmB;CACnE,MAAM,SAAS,MAAM,qBAAqB;EACxC,OAAO,SAAS,MAAM;EACtB;EACA;EACA,SAAS,WAAW;EACpB;EACD,CAAC;AAEF,QAAO,EACL,MAAM;EACJ,aAAaC,iBAAAA,QAAQ,MAAM,UAAU;EACrC,eAAe,WAAW,KAAA,IAAY,KAAA,IAAYC,iBAAAA,UAAU,OAAO;EACnE,WAAW,SAAS,UAAU,OAAO,aAAa,KAAA;EAClD,cAAc,SAAS,UAAU,OAAO,QAAQ,KAAA;EAChD,oBAAoB,SAAS,UAAU,OAAO,aAAa,KAAA;EAC3D,cAAc,OAAO;EACrB,WAAW,SAAS,UAAU,OAAO,SAAS,KAAA;EAC/C,EACF;EAEJ;AAED,MAAa,aAAaC,4BAAAA,oBAAuC,WAAW;CAC1E,MAAM,QAAQC,kBAAAA,SAAS,cAAc,MAAM,OAAO;CAClD,MAAM,EACJ,WACA,UACA,SACA,YACA,QACA,OACA,SACA,aACA,MACA,OACA,QACA,kBACA,UACA,MACA,UACA,UACA,iBAAiB,cACjB,cACA,KACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAYC,mBAAAA,UAA6B;EAC7C,MAAM,CAAC,cAAc,iBAAiB;EACtC;EACA;EACA;EACA,SAAA,0BAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,QACE,iBAAA,GAAA,kBAAA,MAACC,uBAAAA,gBAAD;EACE,GAAI,UAAU,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,cAAc,CAAC;EACzE,GAAI;EACM;EACD;EACH;EACN,UAAU,YAAY;EACtB,KAAK,CAAC;GAAE;GAAS,UAAU,YAAY;GAAc,EAAE,IAAI;YAP7D,CASG,OAAO,YAAY,aAClB,iBAAA,GAAA,kBAAA,KAACC,mBAAAA,YAAD;GAAY,SAAS;GAAS,YAAW;GAAa,UAAU;cAC5D,qBACA,iBAAA,GAAA,kBAAA,KAACC,YAAAA,KAAD;IAAK,WAAU;IAAO,GAAI,UAAU,UAAU,EAAE,OAAO,kBAAkB,CAAC;IAAE,eAAA;cAC1E,iBAAA,GAAA,kBAAA,KAACC,eAAAA,QAAD;KAAQ,OAAM;KAAkB,MAAK;KAA8B,GAAI;KAAe,CAAA;IAClF,CAAA;GAEG,CAAA,EAGf,iBAAA,GAAA,kBAAA,KAACD,YAAAA,KAAD;GAAK,WAAU;GAAO,KAAK,EAAE,SAAS;GAAE,GAAI,UAAU,OAAO;GAC1D;GACG,CAAA,CACS;;EAEnB;AAEF,WAAW,UAAUE,0BAAAA;AACrB,WAAW,eAAe;AAC1B,WAAW,cAAc;AACzB,WAAW,QAAQC,wBAAAA;AACnB,WAAW,eAAeC,+BAAAA"}