UNPKG

@mui/material

Version:

Quickly build beautiful React apps. MUI is a simple and customizable component library to build faster, beautiful, and more accessible React applications. Follow your own design system, or start with Material Design.

88 lines (82 loc) 2.62 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import * as React from 'react'; import PropTypes from 'prop-types'; import RadioButtonUncheckedIcon from '../internal/svg-icons/RadioButtonUnchecked'; import RadioButtonCheckedIcon from '../internal/svg-icons/RadioButtonChecked'; import styled from '../styles/styled'; import { jsx as _jsx } from "react/jsx-runtime"; import { jsxs as _jsxs } from "react/jsx-runtime"; var RadioButtonIconRoot = styled('span')({ position: 'relative', display: 'flex' }); var RadioButtonIconBackground = styled(RadioButtonUncheckedIcon, { skipSx: true })({ // Scale applied to prevent dot misalignment in Safari transform: 'scale(1)' }); var RadioButtonIconDot = styled(RadioButtonCheckedIcon, { skipSx: true })(function (_ref) { var theme = _ref.theme, ownerState = _ref.ownerState; return _extends({ left: 0, position: 'absolute', transform: 'scale(0)', transition: theme.transitions.create('transform', { easing: theme.transitions.easing.easeIn, duration: theme.transitions.duration.shortest }) }, ownerState.checked && { transform: 'scale(1)', transition: theme.transitions.create('transform', { easing: theme.transitions.easing.easeOut, duration: theme.transitions.duration.shortest }) }); }); /** * @ignore - internal component. */ function RadioButtonIcon(props) { var _props$checked = props.checked, checked = _props$checked === void 0 ? false : _props$checked, _props$classes = props.classes, classes = _props$classes === void 0 ? {} : _props$classes, fontSize = props.fontSize; var ownerState = _extends({}, props, { checked: checked }); return /*#__PURE__*/_jsxs(RadioButtonIconRoot, { className: classes.root, ownerState: ownerState, children: [/*#__PURE__*/_jsx(RadioButtonIconBackground, { fontSize: fontSize, className: classes.background, ownerState: ownerState }), /*#__PURE__*/_jsx(RadioButtonIconDot, { fontSize: fontSize, className: classes.dot, ownerState: ownerState })] }); } process.env.NODE_ENV !== "production" ? RadioButtonIcon.propTypes = { /** * If `true`, the component is checked. */ checked: PropTypes.bool, /** * Override or extend the styles applied to the component. * See [CSS API](#css) below for more details. */ classes: PropTypes.object, /** * The size of the component. * `small` is equivalent to the dense radio styling. */ fontSize: PropTypes.oneOf(['small', 'medium']) } : void 0; export default RadioButtonIcon;