/**
* External dependencies
*/
import { __ } from '@wordpress/i18n';
export interface ISpinner {
/**
* Spinner size
*/
size?: string;
/**
* Spinner text alignment.
*/
align?: string;
/**
* Spinner text.
*/
text?: string;
}
const SpinnerDefaultProps = {
size: 'sm',
align: 'center',
text: __('Loading?', 'cp'),
};
const Spinner = ({ align, text }: ISpinner) => {
const textAlignClassName =
typeof align !== 'undefined'
? `text-${align}`
: `text-${SpinnerDefaultProps.align}`;
const spinnerText =
typeof text !== 'undefined' ? text : SpinnerDefaultProps.text;
return (
<div>
<svg
className={`animate-spin -ml-1 mr-3 h-5 w-5 text-white ${textAlignClassName}`}
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
>
<circle
className="opacity-25"
cx="12"
cy="12"
r="10"
stroke="currentColor"
strokeWidth="4"
></circle>
<path
className="opacity-75"
fill="currentColor"
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
></path>
</svg>
<span className="text-gray-dark">{spinnerText}</span>
</div>
);
};
Spinner.defaultProps = SpinnerDefaultProps;
export default Spinner;
|