-
-
-
-
+
+
+
+
diff --git a/package.json b/package.json
index 8b2c9fc7fde0b6..46df6f5d638a27 100644
--- a/package.json
+++ b/package.json
@@ -73,7 +73,6 @@
"@date-io/date-fns": "^1.0.0",
"@emotion/core": "^10.0.0",
"@emotion/styled": "^10.0.0",
- "@types/classnames": "^2.2.6",
"@types/enzyme": "^3.1.4",
"@types/react": "^16.7.10",
"@types/react-dom": "^16.0.9",
diff --git a/packages/material-ui-docs/package.json b/packages/material-ui-docs/package.json
index 810a706543b74b..e8fe62b5cb9bab 100644
--- a/packages/material-ui-docs/package.json
+++ b/packages/material-ui-docs/package.json
@@ -38,6 +38,7 @@
"dependencies": {
"@babel/runtime": "^7.2.0",
"@material-ui/utils": "^3.0.0-alpha.2",
+ "clsx": "^1.0.2",
"marked": "^0.6.0",
"nprogress": "^0.2.0",
"prismjs": "^1.8.4"
diff --git a/packages/material-ui-docs/src/MarkdownElement/MarkdownElement.js b/packages/material-ui-docs/src/MarkdownElement/MarkdownElement.js
index dfd4678b0d6a39..51ac62671ab32d 100644
--- a/packages/material-ui-docs/src/MarkdownElement/MarkdownElement.js
+++ b/packages/material-ui-docs/src/MarkdownElement/MarkdownElement.js
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import marked from 'marked';
import { withStyles } from '@material-ui/core/styles';
import prism from './prism';
@@ -279,7 +279,7 @@ function MarkdownElement(props) {
/* eslint-disable react/no-danger */
return (
diff --git a/packages/material-ui-lab/package.json b/packages/material-ui-lab/package.json
index 34bf836a773532..69246236549da8 100644
--- a/packages/material-ui-lab/package.json
+++ b/packages/material-ui-lab/package.json
@@ -40,7 +40,7 @@
"dependencies": {
"@babel/runtime": "^7.2.0",
"@material-ui/utils": "^3.0.0-alpha.2",
- "classnames": "^2.2.5",
+ "clsx": "^1.0.2",
"keycode": "^2.1.9",
"prop-types": "^15.6.0"
},
diff --git a/packages/material-ui-lab/src/Slider/Slider.js b/packages/material-ui-lab/src/Slider/Slider.js
index cd92bef2d849b4..38dd059643451d 100644
--- a/packages/material-ui-lab/src/Slider/Slider.js
+++ b/packages/material-ui-lab/src/Slider/Slider.js
@@ -1,7 +1,7 @@
import React from 'react';
import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import withStyles from '@material-ui/core/styles/withStyles';
import ButtonBase from '@material-ui/core/ButtonBase';
import { fade } from '@material-ui/core/styles/colorManipulator';
@@ -520,7 +520,7 @@ class Slider extends React.Component {
[classes.rtl]: theme.direction === 'rtl',
};
- const className = classNames(
+ const className = clsx(
classes.root,
{
[classes.vertical]: vertical,
@@ -529,12 +529,12 @@ class Slider extends React.Component {
classNameProp,
);
- const containerClasses = classNames(classes.container, {
+ const containerClasses = clsx(classes.container, {
[classes.vertical]: vertical,
});
- const trackBeforeClasses = classNames(classes.track, classes.trackBefore, commonClasses);
- const trackAfterClasses = classNames(classes.track, classes.trackAfter, commonClasses);
+ const trackBeforeClasses = clsx(classes.track, classes.trackBefore, commonClasses);
+ const trackAfterClasses = clsx(classes.track, classes.trackAfter, commonClasses);
const thumbTransformFunction = vertical ? 'translateY' : 'translateX';
const thumbDirectionInverted = vertical || theme.direction === 'rtl';
@@ -548,13 +548,13 @@ class Slider extends React.Component {
const ThumbIcon = thumbIcon
? React.cloneElement(thumbIcon, {
...thumbIcon.props,
- className: classNames(thumbIcon.props.className, classes.thumbIcon),
+ className: clsx(thumbIcon.props.className, classes.thumbIcon),
})
: null;
/** End Thumb Icon Logic Here */
- const thumbWrapperClasses = classNames(classes.thumbWrapper, commonClasses);
- const thumbClasses = classNames(
+ const thumbWrapperClasses = clsx(classes.thumbWrapper, commonClasses);
+ const thumbClasses = clsx(
classes.thumb,
{
[classes.thumbIconWrapper]: thumbIcon,
diff --git a/packages/material-ui-lab/src/SpeedDial/SpeedDial.js b/packages/material-ui-lab/src/SpeedDial/SpeedDial.js
index 7878c6a9d4090f..bb2e24ef01b329 100644
--- a/packages/material-ui-lab/src/SpeedDial/SpeedDial.js
+++ b/packages/material-ui-lab/src/SpeedDial/SpeedDial.js
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import keycode from 'keycode';
import warning from 'warning';
import { componentPropType } from '@material-ui/utils';
@@ -239,7 +239,7 @@ class SpeedDial extends React.Component {
}
return (
-
+
({
function SpeedDialIcon(props) {
const { classes, icon: iconProp, open, openIcon: openIconProp, ...other } = props;
- const iconClassName = classNames(classes.icon, {
+ const iconClassName = clsx(classes.icon, {
[classes.iconOpen]: open,
[classes.iconWithOpenIconOpen]: openIconProp && open,
});
- const openIconClassName = classNames(classes.openIcon, { [classes.openIconOpen]: open });
+ const openIconClassName = clsx(classes.openIcon, { [classes.openIconOpen]: open });
function formatIcon(icon, className) {
if (React.isValidElement(icon)) {
diff --git a/packages/material-ui-lab/src/ToggleButton/ToggleButton.js b/packages/material-ui-lab/src/ToggleButton/ToggleButton.js
index 7f60dc85d05cc0..1058392f263a6c 100644
--- a/packages/material-ui-lab/src/ToggleButton/ToggleButton.js
+++ b/packages/material-ui-lab/src/ToggleButton/ToggleButton.js
@@ -2,7 +2,7 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import withStyles from '@material-ui/core/styles/withStyles';
import { fade } from '@material-ui/core/styles/colorManipulator';
import ButtonBase from '@material-ui/core/ButtonBase';
@@ -87,7 +87,7 @@ class ToggleButton extends React.Component {
...other
} = this.props;
- const className = classNames(
+ const className = clsx(
classes.root,
{
[classes.disabled]: disabled,
diff --git a/packages/material-ui-lab/src/ToggleButtonGroup/ToggleButtonGroup.js b/packages/material-ui-lab/src/ToggleButtonGroup/ToggleButtonGroup.js
index beb920fff49521..ba6b1c65afe1fa 100644
--- a/packages/material-ui-lab/src/ToggleButtonGroup/ToggleButtonGroup.js
+++ b/packages/material-ui-lab/src/ToggleButtonGroup/ToggleButtonGroup.js
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import withStyles from '@material-ui/core/styles/withStyles';
import hasValue from './hasValue';
import isValueSelected from './isValueSelected';
@@ -80,7 +80,7 @@ class ToggleButtonGroup extends React.Component {
});
const groupSelected = selectedProp === 'auto' ? hasValue(value) : selectedProp;
- const className = classNames(
+ const className = clsx(
classes.root,
{
[classes.selected]: groupSelected,
diff --git a/packages/material-ui-styles/package.json b/packages/material-ui-styles/package.json
index f9f70cd183d4e6..d1e844886243ce 100644
--- a/packages/material-ui-styles/package.json
+++ b/packages/material-ui-styles/package.json
@@ -40,7 +40,7 @@
"@babel/runtime": "^7.2.0",
"@emotion/hash": "^0.7.1",
"@material-ui/utils": "^3.0.0-alpha.2",
- "classnames": "^2.2.5",
+ "clsx": "^1.0.2",
"deepmerge": "^3.0.0",
"hoist-non-react-statics": "^3.2.1",
"jss": "^10.0.0-alpha.7",
diff --git a/packages/material-ui-styles/src/styled.js b/packages/material-ui-styles/src/styled.js
index 2d018b5c8d3d97..08098cab892342 100644
--- a/packages/material-ui-styles/src/styled.js
+++ b/packages/material-ui-styles/src/styled.js
@@ -1,5 +1,5 @@
import React from 'react';
-import classNames from 'classnames';
+import clsx from 'clsx';
import PropTypes from 'prop-types';
import { chainPropTypes, getDisplayName } from '@material-ui/utils';
import hoistNonReactStatics from 'hoist-non-react-statics';
@@ -30,11 +30,11 @@ function styled(Component) {
component: ComponentProp,
...other
} = props;
- const className = classNames(classes.root, classNameProp);
+ const className = clsx(classes.root, classNameProp);
if (clone) {
return React.cloneElement(children, {
- className: classNames(children.props.className, className),
+ className: clsx(children.props.className, className),
});
}
diff --git a/packages/material-ui/package.json b/packages/material-ui/package.json
index 0aa2c1f4d6eacd..5640837328dcdd 100644
--- a/packages/material-ui/package.json
+++ b/packages/material-ui/package.json
@@ -42,7 +42,7 @@
"@types/jss": "^9.5.6",
"@types/react-transition-group": "^2.0.8",
"brcast": "^3.0.1",
- "classnames": "^2.2.5",
+ "clsx": "^1.0.2",
"csstype": "^2.5.2",
"debounce": "^1.1.0",
"deepmerge": "^3.0.0",
diff --git a/packages/material-ui/src/AppBar/AppBar.js b/packages/material-ui/src/AppBar/AppBar.js
index 9f728bb0549b24..0f416108114178 100644
--- a/packages/material-ui/src/AppBar/AppBar.js
+++ b/packages/material-ui/src/AppBar/AppBar.js
@@ -2,7 +2,7 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import withStyles from '../styles/withStyles';
import { capitalize } from '../utils/helpers';
import Paper from '../Paper';
@@ -71,7 +71,7 @@ export const styles = theme => {
function AppBar(props) {
const { children, classes, className: classNameProp, color, position, ...other } = props;
- const className = classNames(
+ const className = clsx(
classes.root,
classes[`position${capitalize(position)}`],
{
diff --git a/packages/material-ui/src/Avatar/Avatar.js b/packages/material-ui/src/Avatar/Avatar.js
index 9132286c0c0f0e..7fe5d5fb5ee456 100644
--- a/packages/material-ui/src/Avatar/Avatar.js
+++ b/packages/material-ui/src/Avatar/Avatar.js
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import { componentPropType } from '@material-ui/utils';
import withStyles from '../styles/withStyles';
@@ -67,7 +67,7 @@ function Avatar(props) {
);
} else if (childrenClassNameProp && React.isValidElement(childrenProp)) {
children = React.cloneElement(childrenProp, {
- className: classNames(childrenClassNameProp, childrenProp.props.className),
+ className: clsx(childrenClassNameProp, childrenProp.props.className),
});
} else {
children = childrenProp;
@@ -75,7 +75,7 @@ function Avatar(props) {
return (
+
{children}
{displayValue}
diff --git a/packages/material-ui/src/BottomNavigation/BottomNavigation.js b/packages/material-ui/src/BottomNavigation/BottomNavigation.js
index a72e15c75f27a6..564e21eea3a1e9 100755
--- a/packages/material-ui/src/BottomNavigation/BottomNavigation.js
+++ b/packages/material-ui/src/BottomNavigation/BottomNavigation.js
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import { componentPropType } from '@material-ui/utils';
import warning from 'warning';
import withStyles from '../styles/withStyles';
@@ -27,7 +27,7 @@ function BottomNavigation(props) {
...other
} = props;
- const className = classNames(classes.root, classNameProp);
+ const className = clsx(classes.root, classNameProp);
const children = React.Children.map(childrenProp, (child, childIndex) => {
if (!React.isValidElement(child)) {
diff --git a/packages/material-ui/src/BottomNavigationAction/BottomNavigationAction.js b/packages/material-ui/src/BottomNavigationAction/BottomNavigationAction.js
index d8c50b8315c1df..f4dd1c3f32db69 100644
--- a/packages/material-ui/src/BottomNavigationAction/BottomNavigationAction.js
+++ b/packages/material-ui/src/BottomNavigationAction/BottomNavigationAction.js
@@ -2,7 +2,7 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import withStyles from '../styles/withStyles';
import ButtonBase from '../ButtonBase';
import unsupportedProp from '../utils/unsupportedProp';
@@ -82,7 +82,7 @@ class BottomNavigationAction extends React.Component {
...other
} = this.props;
- const className = classNames(
+ const className = clsx(
classes.root,
{
[classes.selected]: selected,
@@ -91,7 +91,7 @@ class BottomNavigationAction extends React.Component {
classNameProp,
);
- const labelClassName = classNames(classes.label, {
+ const labelClassName = clsx(classes.label, {
[classes.selected]: selected,
[classes.iconOnly]: !showLabelProp && !selected,
});
diff --git a/packages/material-ui/src/Breadcrumbs/BreadcrumbSeparator.js b/packages/material-ui/src/Breadcrumbs/BreadcrumbSeparator.js
index 179415d7f9c3ac..77cab30b4604f1 100644
--- a/packages/material-ui/src/Breadcrumbs/BreadcrumbSeparator.js
+++ b/packages/material-ui/src/Breadcrumbs/BreadcrumbSeparator.js
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import withStyles from '../styles/withStyles';
const styles = {
@@ -19,7 +19,7 @@ function BreadcrumbSeparator(props) {
const { children, classes, className, ...other } = props;
return (
-
+
{children}
);
diff --git a/packages/material-ui/src/Breadcrumbs/Breadcrumbs.js b/packages/material-ui/src/Breadcrumbs/Breadcrumbs.js
index 47933955a6cc05..a2cb0068563a59 100644
--- a/packages/material-ui/src/Breadcrumbs/Breadcrumbs.js
+++ b/packages/material-ui/src/Breadcrumbs/Breadcrumbs.js
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import { componentPropType } from '@material-ui/utils';
import withStyles from '../styles/withStyles';
import Typography from '../Typography';
@@ -98,7 +98,7 @@ class Breadcrumbs extends React.Component {
diff --git a/packages/material-ui/src/Button/Button.js b/packages/material-ui/src/Button/Button.js
index 0f4618ecc8725e..fe9438086edb62 100644
--- a/packages/material-ui/src/Button/Button.js
+++ b/packages/material-ui/src/Button/Button.js
@@ -2,7 +2,7 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import { componentPropType } from '@material-ui/utils';
import withStyles from '../styles/withStyles';
import { fade } from '../styles/colorManipulator';
@@ -203,7 +203,7 @@ function Button(props) {
const contained = variant === 'contained';
const text = variant === 'text';
- const className = classNames(
+ const className = clsx(
classes.root,
{
[classes.text]: text,
@@ -228,7 +228,7 @@ function Button(props) {
className={className}
disabled={disabled}
focusRipple={!disableFocusRipple}
- focusVisibleClassName={classNames(classes.focusVisible, focusVisibleClassName)}
+ focusVisibleClassName={clsx(classes.focusVisible, focusVisibleClassName)}
{...other}
>
{children}
diff --git a/packages/material-ui/src/ButtonBase/ButtonBase.js b/packages/material-ui/src/ButtonBase/ButtonBase.js
index 400812919353b0..5450a4a1ae73ca 100644
--- a/packages/material-ui/src/ButtonBase/ButtonBase.js
+++ b/packages/material-ui/src/ButtonBase/ButtonBase.js
@@ -1,7 +1,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
-import classNames from 'classnames';
+import clsx from 'clsx';
import { componentPropType } from '@material-ui/utils';
import ownerWindow from '../utils/ownerWindow';
import withStyles from '../styles/withStyles';
@@ -257,7 +257,7 @@ class ButtonBase extends React.Component {
...other
} = this.props;
- const className = classNames(
+ const className = clsx(
classes.root,
{
[classes.disabled]: disabled,
diff --git a/packages/material-ui/src/ButtonBase/Ripple.js b/packages/material-ui/src/ButtonBase/Ripple.js
index f15286fee8ff78..ef3767003f5ccd 100644
--- a/packages/material-ui/src/ButtonBase/Ripple.js
+++ b/packages/material-ui/src/ButtonBase/Ripple.js
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import Transition from 'react-transition-group/Transition';
/**
@@ -36,7 +36,7 @@ class Ripple extends React.Component {
} = this.props;
const { visible, leaving } = this.state;
- const rippleClassName = classNames(
+ const rippleClassName = clsx(
classes.ripple,
{
[classes.rippleVisible]: visible,
@@ -52,7 +52,7 @@ class Ripple extends React.Component {
left: -(rippleSize / 2) + rippleX,
};
- const childClassName = classNames(classes.child, {
+ const childClassName = clsx(classes.child, {
[classes.childLeaving]: leaving,
[classes.childPulsate]: pulsate,
});
diff --git a/packages/material-ui/src/ButtonBase/TouchRipple.js b/packages/material-ui/src/ButtonBase/TouchRipple.js
index 4081a9d8739a9e..4f119339fe6129 100644
--- a/packages/material-ui/src/ButtonBase/TouchRipple.js
+++ b/packages/material-ui/src/ButtonBase/TouchRipple.js
@@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import TransitionGroup from 'react-transition-group/TransitionGroup';
-import classNames from 'classnames';
+import clsx from 'clsx';
import withStyles from '../styles/withStyles';
import Ripple from './Ripple';
@@ -267,7 +267,7 @@ class TouchRipple extends React.PureComponent {
component="span"
enter
exit
- className={classNames(classes.root, className)}
+ className={clsx(classes.root, className)}
{...other}
>
{this.state.ripples}
diff --git a/packages/material-ui/src/Card/Card.js b/packages/material-ui/src/Card/Card.js
index 9f55d5db54caa0..274f7aacd28a75 100644
--- a/packages/material-ui/src/Card/Card.js
+++ b/packages/material-ui/src/Card/Card.js
@@ -2,7 +2,7 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import Paper from '../Paper';
import withStyles from '../styles/withStyles';
@@ -16,9 +16,7 @@ export const styles = {
function Card(props) {
const { classes, className, raised, ...other } = props;
- return (
-
- );
+ return ;
}
Card.propTypes = {
diff --git a/packages/material-ui/src/CardActionArea/CardActionArea.js b/packages/material-ui/src/CardActionArea/CardActionArea.js
index 30dfc4af2555f3..77741f201d2f80 100644
--- a/packages/material-ui/src/CardActionArea/CardActionArea.js
+++ b/packages/material-ui/src/CardActionArea/CardActionArea.js
@@ -2,7 +2,7 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import withStyles from '../styles/withStyles';
import ButtonBase from '../ButtonBase';
@@ -42,8 +42,8 @@ function CardActionArea(props) {
return (
{children}
diff --git a/packages/material-ui/src/CardActions/CardActions.js b/packages/material-ui/src/CardActions/CardActions.js
index f97618ea0a0afa..9a282f2ecfe9ae 100644
--- a/packages/material-ui/src/CardActions/CardActions.js
+++ b/packages/material-ui/src/CardActions/CardActions.js
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import withStyles from '../styles/withStyles';
import { cloneChildrenWithClassName } from '../utils/reactHelpers';
import '../Button'; // So we don't have any override priority issue.
@@ -28,7 +28,7 @@ function CardActions(props) {
return (
;
+ return ;
}
CardContent.propTypes = {
diff --git a/packages/material-ui/src/CardHeader/CardHeader.js b/packages/material-ui/src/CardHeader/CardHeader.js
index 3be86f53b82021..5a09c925e5b530 100644
--- a/packages/material-ui/src/CardHeader/CardHeader.js
+++ b/packages/material-ui/src/CardHeader/CardHeader.js
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import { componentPropType } from '@material-ui/utils';
import withStyles from '../styles/withStyles';
import Typography from '../Typography';
@@ -80,7 +80,7 @@ function CardHeader(props) {
}
return (
-
+
{avatar && {avatar}
}
{title}
diff --git a/packages/material-ui/src/CardMedia/CardMedia.js b/packages/material-ui/src/CardMedia/CardMedia.js
index 0bb015ab6f8dd4..32252611679757 100644
--- a/packages/material-ui/src/CardMedia/CardMedia.js
+++ b/packages/material-ui/src/CardMedia/CardMedia.js
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import warning from 'warning';
import { componentPropType } from '@material-ui/utils';
import withStyles from '../styles/withStyles';
@@ -35,7 +35,7 @@ function CardMedia(props) {
return (
);
@@ -340,17 +336,17 @@ class Chip extends React.Component {
let avatar = null;
if (avatarProp && React.isValidElement(avatarProp)) {
avatar = React.cloneElement(avatarProp, {
- className: classNames(classes.avatar, avatarProp.props.className, {
+ className: clsx(classes.avatar, avatarProp.props.className, {
[classes[`avatarColor${capitalize(color)}`]]: color !== 'default',
}),
- childrenClassName: classNames(classes.avatarChildren, avatarProp.props.childrenClassName),
+ childrenClassName: clsx(classes.avatarChildren, avatarProp.props.childrenClassName),
});
}
let icon = null;
if (iconProp && React.isValidElement(iconProp)) {
icon = React.cloneElement(iconProp, {
- className: classNames(classes.icon, iconProp.props.className, {
+ className: clsx(classes.icon, iconProp.props.className, {
[classes[`iconColor${capitalize(color)}`]]: color !== 'default',
}),
});
diff --git a/packages/material-ui/src/CircularProgress/CircularProgress.js b/packages/material-ui/src/CircularProgress/CircularProgress.js
index 55a5740e6fcc50..d8915cf5d49fee 100644
--- a/packages/material-ui/src/CircularProgress/CircularProgress.js
+++ b/packages/material-ui/src/CircularProgress/CircularProgress.js
@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
-import classNames from 'classnames';
+import clsx from 'clsx';
import { chainPropTypes } from '@material-ui/utils';
import withStyles from '../styles/withStyles';
import { capitalize } from '../utils/helpers';
@@ -138,7 +138,7 @@ function CircularProgress(props) {
return (