lucid-ui
Version:
A UI component library from AppNexus.
39 lines • 1.83 kB
JavaScript
import _ from 'lodash';
import React from 'react';
import PropTypes from 'react-peek/prop-types';
import Icon, { propTypes as iconPropTypes } from '../Icon';
import { lucidClassNames } from '../../../util/style-helpers';
import { omitProps } from '../../../util/component-types';
const cx = lucidClassNames.bind('&-LoadingIcon');
const { oneOf } = PropTypes;
export var durations;
(function (durations) {
durations["fast"] = "0.75s";
durations["normal"] = "1.25s";
durations["slow"] = "4s";
})(durations || (durations = {}));
export const LoadingIcon = ({ className, speed = 'normal', style, isDisabled, ...passThroughs }) => {
const animationDuration = `${durations[speed] || durations.normal}`;
return (React.createElement(Icon, Object.assign({}, omitProps(passThroughs, undefined, _.keys(LoadingIcon.propTypes), false), _.pick(passThroughs, _.keys(iconPropTypes)), { viewBox: '0 0 100 100', className: cx('&', className), style: { animationDuration, ...style }, isDisabled: isDisabled }),
React.createElement("rect", { x: '0', y: '0', width: '100', height: '100', fill: 'none' }),
React.createElement("circle", { className: cx('&-circle'), cx: '50', cy: '50', r: '40' }),
React.createElement("circle", { style: { animationDuration }, className: cx('&-spinner', { '&-spinner-is-disabled': isDisabled }), cx: '50', cy: '50', r: '40' })));
};
LoadingIcon.displayName = 'LoadingIcon';
LoadingIcon.peek = {
description: `
A loading icon.
`,
categories: ['visual design', 'icons'],
extend: 'Icon',
madeFrom: ['Icon'],
};
LoadingIcon.propTypes = {
...iconPropTypes,
speed: oneOf(_.keys(durations)) `
The speed of rotation of the spinner.
`,
};
LoadingIcon.defaultProps = Icon.defaultProps;
export default LoadingIcon;
//# sourceMappingURL=LoadingIcon.js.map