UNPKG

@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>

145 lines (142 loc) 4.94 kB
import { _ as __assign } from '../tslib.es6-35932c2c.js'; import { k as keyframes, c as css, a as jsx } from '../emotion-react.esm-8b837a94.js'; import { useMemo } from 'react'; import { styled } from '@mui/material/styles'; import MuiBox from '@mui/material/Box'; import { c as clsx } from '../clsx.m-6243b874.js'; import Icon from './Icon.js'; import Typography from './Typography.js'; 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'; import '../_commonjsHelpers-1789f0cf.js'; import '@mui/material/Typography'; import '../theme/typography.js'; var PREFIX = "StepIcon"; var classes = { root: "".concat(PREFIX), active: "".concat(PREFIX, "-active"), completed: "".concat(PREFIX, "-completed"), loading: "".concat(PREFIX, "-loading") }; var Root = styled("div")(function (_a) { var _b; var theme = _a.theme; return (_b = { display: "flex", justifyContent: "center", alignItems: "center", width: theme.spacing(5), height: theme.spacing(5), borderRadius: theme.borders.radius.rounded, border: "5px solid ".concat(theme.palette.gray.white), boxSizing: "content-box", backgroundColor: theme.palette.gray[100] }, _b["&.".concat(classes.active, ", &.").concat(classes.completed)] = { backgroundColor: theme.palette.primary.main }, _b); }); var LoadingIconBox = styled(MuiBox)({ display: "flex", alignItems: "center" }); var rotateEffect = keyframes({ "0%": { transform: "rotate(0deg)" }, "100%": { transform: "rotate(360deg)" } }); var animatedIcon = css({ "& .icon": { willChange: "transform", transformOrigin: "center", animation: "".concat(rotateEffect, " 1.5s linear infinite") } }); var getElementState = function (props) { var error = props.error, completed = props.completed, loading = props.loading; if (!completed) { return loading ? "loading" : "active"; } return error ? "error" : "success"; }; var StepIcon = function (_a) { var active = _a.active, error = _a.error, completed = _a.completed, loading = _a.loading, icon = _a.icon; var className = clsx([ classes.root, active && classes.active, completed && classes.completed, loading && classes.loading ]); var renderers = useMemo(function () { return ({ active: jsx(Typography, __assign({ variant: "title5" }, { children: icon }), void 0), loading: (jsx(LoadingIconBox, __assign({ css: animatedIcon }, { children: jsx(Icon, { iconKey: "loading", size: "sm" }, void 0) }), void 0)), error: jsx(Icon, { iconKey: "fail", size: "sm" }, void 0), success: jsx(Icon, { iconKey: "check", size: "xs1" }, void 0) }); }, []); return jsx(Root, __assign({ className: className }, { children: renderers[getElementState({ active: active, error: error, completed: completed, loading: loading })] }), void 0); }; export { StepIcon as default };