UNPKG

@coin-voyage/paykit

Version:

Seamless crypto payments. Onboard users from any chain, any coin into your app with one click.

80 lines (71 loc) 1.92 kB
import { motion } from "framer-motion"; import { ErrorIcon as ErrorIconSVG, LoadingCircleIcon, TickIcon } from "../../../assets/icons"; import styled from "../../../styles/styled/index"; const AnimationContainer = styled(motion.div) ` position: relative; width: 100px; height: 100px; transition: transform 0.5s ease-in-out; margin-bottom: 16px; `; const InsetContainer = styled(motion.div) ` position: absolute; overflow: hidden; inset: 6px; border-radius: 50px; background: var(--ck-body-background); display: flex; align-items: center; justify-content: center; svg { position: absolute; width: 100%; height: 100%; } `; const Link = styled.a ` display: flex; gap: 0.5rem; align-items: center; color: var(--ck-body-color); text-decoration: none; &:hover { color: var(--ck-body-color-muted); } `; const SuccessIcon = styled(TickIcon) ` color: var(--ck-body-color-valid); transition: all 0.2s ease-in-out; position: absolute; opacity: ${(props) => (props.$status ? 1 : 0)}; transform: scale(${(p) => (p.$status ? 1 : 0.5)}); `; const ErrorIcon = styled(ErrorIconSVG) ` color: var(--ck-body-color-danger); transition: all 0.2s ease-in-out; position: absolute; opacity: ${(props) => (props.$status ? 1 : 0)}; transform: scale(${(p) => (p.$status ? 1 : 0.5)}); `; const Spinner = styled(LoadingCircleIcon) ` position: absolute; opacity: ${(p) => (p.$status ? 1 : 0)}; pointer-events: none; transition: opacity 0.2s ease-in-out, transform 0.2s ease-in-out; transform: scale(${(p) => (p.$status ? 1 : 0.5)}); ${(p) => p.$status && ` animation: rotateSpinner 400ms linear infinite; `} @keyframes rotateSpinner { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } `; export { AnimationContainer, ErrorIcon, InsetContainer, Link, Spinner, SuccessIcon };