@daimo/pay
Version:
Seamless crypto payments. Onboard users from any chain, any coin into your app with one click.
288 lines (276 loc) • 7.68 kB
JavaScript
import { motion } from 'framer-motion';
import { css } from 'styled-components';
import defaultTheme from '../../../constants/defaultTheme.js';
import styled from '../../../styles/styled/index.js';
const SpinnerContainer = styled(motion.div)`
position: absolute;
right: 16px;
top: 0;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
`;
const Arrow = styled.svg`
--x: -3px;
--stroke-width: 2;
position: relative;
top: 1px;
left: -0.5px;
display: inline-block;
vertical-align: middle;
margin-left: 9px;
margin-right: 1px;
transition: all 100ms ease;
transform: translateX(var(--x, -3px));
color: currentColor;
opacity: 0.4;
`;
const ArrowChevron = styled.path``;
const ArrowLine = styled.line`
transition: inherit;
transition-property: transform;
transform-origin: 90% 50%;
transform: scaleX(0.1);
`;
const DownloadArrow = styled.div`
display: inline-block;
vertical-align: middle;
position: relative;
margin-right: 6px;
color: currentColor;
`;
const DownloadArrowInner = styled.div`
transform: rotate(90deg);
${Arrow} {
margin: 0 auto;
}
`;
const ButtonContainerInner = styled(motion.div)`
display: flex;
align-items: center;
justify-content: center;
inset: 0;
height: 100%;
`;
const ButtonContainer = styled.button`
${({ disabled }) => disabled && css`
cursor: not-allowed;
pointer-events: none;
${InnerContainer} {
opacity: 0.4;
}
`}
${({ $variant }) => {
if ($variant === "primary") {
return css`
--color: var(--ck-primary-button-color, var(--ck-body-color));
--background: var(
--ck-primary-button-background,
var(--ck-body-background-primary)
);
--box-shadow: var(--ck-primary-button-box-shadow);
--border-radius: var(--ck-primary-button-border-radius);
--font-weight: var(--ck-primary-button-font-weight, 500);
--hover-color: var(--ck-button-primary-hover-color, var(--color));
--hover-background: var(
--ck-primary-button-hover-background,
var(--background)
);
--hover-box-shadow: var(
--ck-primary-button-hover-box-shadow,
var(--box-shadow)
);
--hover-border-radius: var(
--ck-primary-button-hover-border-radius,
var(--border-radius)
);
--hover-font-weight: var(
--ck-primary-button-font-weight,
var(--font-weight)
);
`;
} else if ($variant === "secondary") {
return css`
--color: var(--ck-secondary-button-color, var(--ck-body-color));
--background: var(
--ck-secondary-button-background,
var(--ck-body-background-secondary)
);
--box-shadow: var(--ck-secondary-button-box-shadow);
--border-radius: var(--ck-secondary-button-border-radius);
--font-weight: var(--ck-secondary-button-font-weight, 500);
--hover-color: var(--ck-secondary-button-hover-color, var(--color));
--hover-background: var(
--ck-secondary-button-hover-background,
var(--background)
);
--hover-box-shadow: var(
--ck-secondary-button-hover-box-shadow,
var(--box-shadow)
);
--hover-border-radius: var(
--ck-secondary-button-hover-border-radius,
var(--border-radius)
);
--hover-font-weight: var(
--ck-secondary-button-font-weight,
var(--font-weight)
);
`;
} else if ($variant === "tertiary") {
return css`
--color: var(
--ck-tertiary-button-color,
var(--ck-secondary-button-color)
);
--background: var(
--ck-tertiary-button-background,
var(--ck-secondary-button-background)
);
--box-shadow: var(
--ck-tertiary-button-box-shadow,
var(--ck-secondary-button-box-shadow)
);
--border-radius: var(
--ck-tertiary-button-border-radius,
var(--ck-secondary-button-border-radius)
);
--font-weight: var(
--ck-tertiary-button-font-weight,
var(--ck-secondary-button-font-weight)
);
--hover-color: var(
--button-tertiary-hover-color,
var(--ck-tertiary-button-color)
);
--hover-background: var(
--ck-tertiary-button-hover-background,
var(--ck-tertiary-button-background)
);
--hover-box-shadow: var(
--ck-tertiary-button-hover-box-shadow,
var(--ck-tertiary-button-box-shadow)
);
--hover-border-radius: var(
--ck-tertiary-button-hover-border-radius,
var(--ck-tertiary-button-border-radius, var(--border-radius))
);
--hover-font-weight: var(
--ck-tertiary-button-font-weight,
var(--ck-secondary-button-font-weight)
);
`;
}
}}
appearance: none;
cursor: pointer;
user-select: none;
min-width: fit-content;
width: 100%;
display:block;
text-align: center;
height: 48px;
margin: 12px 0 0;
line-height: 48px;
padding: 0 4px;
font-size: 16px;
font-weight: var(--font-weight,500);
text-decoration: none;
white-space: nowrap;
transition: 100ms ease;
transition-property: box-shadow, background-color;
color: var(--color);
background: var(--background);
border-radius: var(--border-radius);
box-shadow: var(--box-shadow);
will-change: transform, box-shadow, background-color, color;
${DownloadArrow} {
${Arrow} {
transform: translateX(0);
${ArrowLine} {
transform: none;
}
${ArrowChevron} {
}
}
}
}
@media only screen and (min-width: ${defaultTheme.mobileWidth + 1}px) {
&:hover,
&:focus-visible {
color: var(--ck-accent-text-color, var(--hover-color));
background: var(--ck-accent-color, var(--hover-background));
border-radius: var(--hover-border-radius);
box-shadow: var(--hover-box-shadow);
${Arrow} {
transform: translateX(0);
${ArrowLine} {
transform: none;
}
${ArrowChevron} {
}
}
${DownloadArrow} {
${Arrow} {
transform: translateX(var(--x));
${ArrowLine} {
transform: scaleX(0.1);
}
${ArrowChevron} {
}
}
}
}
&:active {
box-shadow: var(--ck-secondary-button-active-box-shadow, var(--hover-box-shadow));
}
}
@media only screen and (max-width: ${defaultTheme.mobileWidth}px) {
transition: transform 100ms ease;
transform: scale(1);
font-size: 17px;
&:active {
}
}
`;
const InnerContainer = styled.div`
transform: translateZ(0); // Shifting fix
position: relative;
display: inline-block;
vertical-align: middle;
max-width: calc(100% - 42px);
transition: opacity 300ms ease;
/*
overflow: hidden;
text-overflow: ellipsis;
*/
`;
const IconContainer = styled(motion.div)`
position: relative;
display: inline-block;
vertical-align: middle;
max-width: 20px;
max-height: 20px;
margin: 0 10px;
&:first-child {
margin-left: 0;
}
&:last-child {
margin-right: 0;
}
${(props) => {
return props.$rounded && css`
overflow: hidden;
border-radius: 5px;
`;
}}
svg {
display: block;
position: relative;
max-width: 100%;
height: auto;
}
`;
export { Arrow, ArrowChevron, ArrowLine, ButtonContainer, ButtonContainerInner, DownloadArrow, DownloadArrowInner, IconContainer, InnerContainer, SpinnerContainer };
//# sourceMappingURL=styles.js.map