UNPKG

2.42 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports["default"] = void 0;
7
8var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
12var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));
13
14var _core = require("@emotion/core");
15
16var _react = require("react");
17
18var _Box = _interopRequireDefault(require("../Box"));
19
20var _VisuallyHidden = _interopRequireDefault(require("../VisuallyHidden"));
21
22function _templateObject() {
23 var data = (0, _taggedTemplateLiteralLoose2["default"])(["\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n"]);
24
25 _templateObject = function _templateObject() {
26 return data;
27 };
28
29 return data;
30}
31
32var spin = (0, _core.keyframes)(_templateObject());
33var sizes = {
34 xs: "0.75rem",
35 sm: "1rem",
36 md: "1.5rem",
37 lg: "2rem",
38 xl: "3rem"
39};
40var Spinner = (0, _react.forwardRef)(function (_ref, ref) {
41 var _ref$size = _ref.size,
42 size = _ref$size === void 0 ? "md" : _ref$size,
43 _ref$label = _ref.label,
44 label = _ref$label === void 0 ? "Loading..." : _ref$label,
45 _ref$thickness = _ref.thickness,
46 thickness = _ref$thickness === void 0 ? "2px" : _ref$thickness,
47 _ref$speed = _ref.speed,
48 speed = _ref$speed === void 0 ? "0.45s" : _ref$speed,
49 color = _ref.color,
50 _ref$emptyColor = _ref.emptyColor,
51 emptyColor = _ref$emptyColor === void 0 ? "transparent" : _ref$emptyColor,
52 props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, ["size", "label", "thickness", "speed", "color", "emptyColor"]);
53
54 var _size = sizes[size] || size;
55
56 return (0, _core.jsx)(_Box["default"], (0, _extends2["default"])({
57 ref: ref,
58 display: "inline-block",
59 borderWidth: thickness,
60 borderColor: "currentColor",
61 borderBottomColor: emptyColor,
62 borderLeftColor: emptyColor,
63 borderStyle: "solid",
64 rounded: "full",
65 color: color,
66 animation: spin + " " + speed + " linear infinite",
67 size: _size
68 }, props), label && (0, _core.jsx)(_VisuallyHidden["default"], null, label));
69});
70Spinner.displayName = "Spinner";
71var _default = Spinner;
72exports["default"] = _default;
\No newline at end of file