@stakefish/ui
Version:
<div align="center"> <a href="https://www.npmjs.com/package/@stakefish/ui"><img src="https://gateway.pinata.cloud/ipfs/QmbZL1ceA8Yiz2pKALTg919jYx141DPUGegC9L4XpyayW5" width="300" /></a> </div>
141 lines (138 loc) • 5.15 kB
JavaScript
import { b as __makeTemplateObject, _ as __assign } from '../tslib.es6-35932c2c.js';
import { k as keyframes, c as css, j as jsxs, a as jsx } from '../emotion-react.esm-8b837a94.js';
import MuiBox from '@mui/material/Box';
import { styled, useTheme } from '@mui/material/styles';
import Icon, { iconSizeMap } from './Icon.js';
import 'react';
import 'react/jsx-runtime';
import '../icons/ArrowLeft.js';
import '../icons/ArrowRight.js';
import '../icons/CloseCircle.js';
import '../icons/InfoCircle.js';
import '../icons/ErrorCircle.js';
import '../icons/Attention.js';
import '../icons/HelpCircle.js';
import '../icons/Document.js';
import '../icons/DocumentText.js';
import '../icons/Lock.js';
import '../icons/Delete.js';
import '../icons/Users.js';
import '../icons/Stakefish.js';
import '../icons/Sound.js';
import '../icons/Beacon.js';
import '../icons/TriangleRight.js';
import '../icons/TriangleLeft.js';
import '../icons/TriangleUp.js';
import '../icons/TriangleDown.js';
import '../icons/Sent.js';
import '../icons/Download.js';
import '../icons/Faster.js';
import '../icons/Slower.js';
import '../icons/Usb.js';
import '../icons/Key.js';
import '../icons/Edit.js';
import '../icons/Expand.js';
import '../icons/Collapse.js';
import '../icons/Success.js';
import '../icons/SuccessCircle.js';
import '../icons/Fail.js';
import '../icons/Desktop.js';
import '../icons/Mobile.js';
import '../icons/Loading.js';
import '../icons/Upload.js';
import '../icons/Check.js';
import '../icons/ChevronLeft.js';
import '../icons/ChevronRight.js';
import '../icons/Plus.js';
import '../icons/Minus.js';
import '../icons/Globe.js';
import '../icons/Link.js';
import '../icons/Copy.js';
import '../icons/Medium.js';
import '../icons/Twitter.js';
import '../icons/Telegram.js';
import '../icons/Eth.js';
import '../icons/Sort.js';
import '../icons/Close.js';
import '../icons/DollarSign.js';
import '../icons/Search.js';
import '../icons/Range.js';
import '../icons/Instagram.js';
import '../icons/LinkedIn.js';
import '../icons/Reddit.js';
import '../icons/YouTube.js';
import '../icons/Chrome.js';
import '../icons/CloudConnect.js';
import '../icons/Update.js';
import '../icons/Menu.js';
import '../icons/Settings.js';
/**
* Constants
*/
var STROKE_WIDTH = 3;
var iconPaddingMap = {
xs2: 4,
xs1: 4,
sm: 4,
md: 8,
lg: 8,
xl1: 16,
xl2: 16,
xl3: 16
};
/**
* Styles
*/
var StyledProgressCircle = styled("circle")(function () { return ({
strokeDasharray: 180,
strokeDashoffset: 90
}); });
var LoadingIconBox = styled(MuiBox)(function () { return ({
height: "100%",
"& svg": {
display: "block",
height: "100%"
}
}); });
var IconBox = styled(MuiBox)(function (_a) {
var $size = _a.$size;
return ({
position: "absolute",
top: 0,
left: 0,
width: "100%",
height: "100%",
display: "flex",
alignItems: "center",
justifyContent: "center",
padding: iconPaddingMap[$size],
"& .icon": {
height: "100%"
}
});
});
var LoadingIconRoot = styled(MuiBox)(function (_a) {
var $size = _a.$size;
return ({
position: "relative",
width: iconSizeMap[$size],
height: iconSizeMap[$size]
});
});
var progressEffect = keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n 0% {\n stroke-dashoffset: 0;\n }\n 100% {\n stroke-dashoffset: 360;\n }\n"], ["\n 0% {\n stroke-dashoffset: 0;\n }\n 100% {\n stroke-dashoffset: 360;\n }\n"
/**
* Main
*/
])));
/**
* Main
*/
var LoadingIcon = function (_a) {
var _b;
var _c = _a.size, size = _c === void 0 ? "xl2" : _c, iconProps = _a.iconProps;
var theme = useTheme();
var animatedRing = css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n transform-origin: center;\n animation: ", " 1.5s ease-in-out infinite;\n "], ["\n transform-origin: center;\n animation: ", " 1.5s ease-in-out infinite;\n "])), progressEffect);
return (jsxs(LoadingIconRoot, __assign({ "$size": size }, { children: [jsx(LoadingIconBox, { children: jsxs("svg", __assign({ viewBox: "0 0 48 48", fill: "none" }, { children: [jsx("circle", { id: "loadingIcon__ring", cx: "24", cy: "24", r: "22", strokeLinecap: "round", stroke: theme.palette.gray[300], strokeWidth: STROKE_WIDTH }, void 0), jsx(StyledProgressCircle, { id: "loadingIcon__progressRing", cx: "24", cy: "24", r: "22", strokeLinecap: "round", stroke: theme.palette.gray[900], strokeWidth: STROKE_WIDTH, css: animatedRing }, void 0), jsx("circle", { id: "loadingIcon__radius", cx: "24", cy: "24", r: "18", fill: theme.palette.gray[100] }, void 0)] }), void 0) }, void 0), jsx(IconBox, __assign({ "$size": size }, { children: jsx(Icon, __assign({}, iconProps, { iconKey: (_b = iconProps === null || iconProps === void 0 ? void 0 : iconProps.iconKey) !== null && _b !== void 0 ? _b : "cloudConnect" }), void 0) }), void 0)] }), void 0));
};
var templateObject_1, templateObject_2;
export { LoadingIcon as default };