@daimo/pay
Version:
Seamless crypto payments. Onboard users from any chain, any coin into your app with one click.
314 lines (304 loc) • 9.34 kB
JavaScript
import { motion } from 'framer-motion';
import { css } from 'styled-components';
import { hexToP3 } from '../utils/p3.js';
import styled from './styled/index.js';
import predefinedThemes from './themes/index.js';
const themeGlobals = {
default: {
"--ck-font-family": `-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica,
'Apple Color Emoji', Arial, sans-serif, 'Segoe UI Emoji',
'Segoe UI Symbol'`,
"--ck-border-radius": "20px",
"--ck-secondary-button-border-radius": "16px"
},
graphics: {
light: {
"--ck-graphic-wave-stop-01": "#E8F17D",
"--ck-graphic-wave-stop-02": "#A8ECDE",
"--ck-graphic-wave-stop-03": "#7AA1F2",
"--ck-graphic-wave-stop-04": "#DEA1E8",
"--ck-graphic-wave-stop-05": "#F46D98",
"--ck-graphic-scaniconwithlogos-01": "#4E4E4E",
"--ck-graphic-scaniconwithlogos-02": "#272727",
"--ck-graphic-scaniconwithlogos-03": "#F8D74A",
"--ck-graphic-scaniconwithlogos-04": "#F6F7F9",
"--ck-chain-ethereum-01": "#25292E",
"--ck-chain-ethereum-02": "#fff",
"--ck-chain-ethereum-03": "#DFE0E0"
},
dark: {
"--ck-graphic-wave-stop-01": "#E8F17D",
"--ck-graphic-wave-stop-02": "#A8ECDE",
"--ck-graphic-wave-stop-03": "#7AA1F2",
"--ck-graphic-wave-stop-04": "#DEA1E8",
"--ck-graphic-wave-stop-05": "#F46D98",
"--ck-graphic-scaniconwithlogos-01": "#AFAFAF",
"--ck-graphic-scaniconwithlogos-02": "#696969",
"--ck-graphic-scaniconwithlogos-03": "#F8D74A",
"--ck-graphic-scaniconwithlogos-04": "#3D3D3D"
//'--ck-chain-ethereum-01': '#fff',
//'--ck-chain-ethereum-02': '#000',
//'--ck-chain-ethereum-03': '#000',
}
},
ens: {
light: {
"--ck-ens-01-start": "#FF3B30",
"--ck-ens-01-stop": "#FF9500",
"--ck-ens-02-start": "#FF9500",
"--ck-ens-02-stop": "#FFCC00",
"--ck-ens-03-start": "#FFCC00",
"--ck-ens-03-stop": "#34C759",
"--ck-ens-04-start": "#5856D6",
"--ck-ens-04-stop": "#AF52DE",
"--ck-ens-05-start": "#5AC8FA",
"--ck-ens-05-stop": "#007AFF",
"--ck-ens-06-start": "#007AFF",
"--ck-ens-06-stop": "#5856D6",
"--ck-ens-07-start": "#5856D6",
"--ck-ens-07-stop": "#AF52DE",
"--ck-ens-08-start": "#AF52DE",
"--ck-ens-08-stop": "#FF2D55"
},
dark: {
"--ck-ens-01-start": "#FF453A",
"--ck-ens-01-stop": "#FF9F0A",
"--ck-ens-02-start": "#FF9F0A",
"--ck-ens-02-stop": "#FFD60A",
"--ck-ens-03-start": "#FFD60A",
"--ck-ens-03-stop": "#32D74B",
"--ck-ens-04-start": "#32D74B",
"--ck-ens-04-stop": "#64D2FF",
"--ck-ens-05-start": "#64D2FF",
"--ck-ens-05-stop": "#0A84FF",
"--ck-ens-06-start": "#0A84FF",
"--ck-ens-06-stop": "#5E5CE6",
"--ck-ens-07-start": "#5E5CE6",
"--ck-ens-07-stop": "#BF5AF2",
"--ck-ens-08-start": "#BF5AF2",
"--ck-ens-08-stop": "#FF2D55"
}
},
brand: {
"--ck-family-brand": "#1A88F8",
"--ck-brand-coinbaseWallet": "#0052FF",
"--ck-brand-metamask": "#f6851b",
"--ck-brand-metamask-01": "#F6851B",
"--ck-brand-metamask-02": "#E2761B",
"--ck-brand-metamask-03": "#CD6116",
"--ck-brand-metamask-04": "#161616",
"--ck-brand-metamask-05": "#763D16",
"--ck-brand-metamask-06": "#D7C1B3",
"--ck-brand-metamask-07": "#C0AD9E",
"--ck-brand-metamask-08": "#E4761B",
"--ck-brand-metamask-09": "#233447",
"--ck-brand-metamask-10": "#E4751F",
"--ck-brand-metamask-11": "#FEF5E7",
"--ck-brand-metamask-12": "#E3C8AB",
"--ck-brand-trust-01": "#3375BB",
"--ck-brand-trust-02": "#ffffff",
"--ck-brand-trust-01b": "#ffffff",
// dark Theme
"--ck-brand-trust-02b": "#3375BB",
// dark Theme
"--ck-brand-argent": "#f36a3d",
"--ck-brand-imtoken-01": "#11C4D1",
"--ck-brand-imtoken-02": "#0062AD",
"--ck-brand-safe": "#12FF80",
"--ck-brand-dawn": "#000000"
}
};
const themeColors = {
light: predefinedThemes.base.light,
dark: predefinedThemes.base.dark,
web95: predefinedThemes.web95,
retro: predefinedThemes.retro,
soft: predefinedThemes.soft,
midnight: predefinedThemes.midnight,
minimal: predefinedThemes.minimal,
rounded: predefinedThemes.rounded,
nouns: predefinedThemes.nouns
};
const createCssVars = (scheme, important) => {
return css`
${Object.keys(scheme).map((key) => {
const value = scheme[key];
return value && `${key}:${value};`;
})}
`;
};
const createCssColors = (scheme, override) => {
const important = override ? " !important" : "";
return css`
${Object.keys(scheme).map((key) => {
const value = scheme[key];
return value && `${key}:${value}${important};`;
})}
@supports (color: color(display-p3 1 1 1)) {
${Object.keys(scheme).map((key) => {
const value = scheme[key];
return `${key}:${hexToP3(value)}${important};`;
})}
}
`;
};
const themes = {
default: createCssVars(themeGlobals.default),
light: createCssColors(themeColors.light),
dark: createCssColors(themeColors.dark),
web95: createCssColors(themeColors.web95),
retro: createCssColors(themeColors.retro),
soft: createCssColors(themeColors.soft),
midnight: createCssColors(themeColors.midnight),
minimal: createCssColors(themeColors.minimal),
rounded: createCssColors(themeColors.rounded),
nouns: createCssColors(themeColors.nouns)
};
const globals = {
brand: createCssVars(themeGlobals.brand),
ensLight: createCssVars(themeGlobals.ens.light),
ensDark: createCssVars(themeGlobals.ens.dark),
graphicsLight: createCssVars(themeGlobals.graphics.light),
graphicsDark: createCssVars(themeGlobals.graphics.dark)
};
const globalsLight = css`
${globals.brand}
${globals.ensLight}
${globals.graphicsLight}
`;
const globalsDark = css`
${globals.brand}
${globals.ensDark}
${globals.graphicsDark}
`;
let mode = "auto";
const ResetContainer = styled(motion.div)`
${themes.default}
${(props) => {
switch (props.$useTheme) {
case "web95":
mode = "light";
return themes.web95;
case "retro":
mode = "light";
return themes.retro;
case "soft":
mode = "light";
return themes.soft;
case "midnight":
mode = "dark";
return themes.midnight;
case "minimal":
mode = "light";
return themes.minimal;
case "rounded":
mode = "light";
return themes.rounded;
case "nouns":
mode = "light";
return themes.nouns;
default:
if (props.$useMode === "light") {
mode = "light";
return themes.light;
} else if (props.$useMode === "dark") {
mode = "dark";
return themes.dark;
} else {
return css`
@media (prefers-color-scheme: light) {
${themes.light}
}
@media (prefers-color-scheme: dark) {
${themes.dark}
}
`;
}
}
}}
${(props) => {
switch (mode) {
case "light":
return globalsLight;
case "dark":
return globalsDark;
default:
return css`
${globalsLight}
@media (prefers-color-scheme: dark) {
${globalsDark}
}
`;
}
}}
${(props) => {
if (props.$customTheme && props.$customTheme["--ck-accent-color"] && ["light", "dark", "auto", "", void 0].includes(props.$useTheme)) {
const accentColor = props.$customTheme["--ck-accent-color"];
const accentTextColor = props.$customTheme["--ck-accent-text-color"] ?? "#ffffff";
return {
"--ck-accent-color": accentColor,
"--ck-accent-text-color": accentTextColor,
// '--ck-connectbutton-color': accentTextColor,
// '--ck-connectbutton-background': accentColor,
// '--ck-connectbutton-background-hover': accentColor,
// '--ck-connectbutton-background-active': LightenDarkenColor(
// accentColor,
// 20
// ),
"--ck-secondary-button-background": accentColor,
"--ck-secondary-button-hover-background": accentColor,
"--ck-secondary-button-color": accentTextColor,
"--ck-button-primary-color": accentTextColor,
"--ck-focus-color": accentColor
};
}
if (props.$customTheme) {
return createCssColors(props.$customTheme, true);
}
}}
all: initial;
text-align: left;
text-direction: ltr;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-text-stroke: 0.001px transparent;
text-size-adjust: none;
font-size: 16px;
button {
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-text-stroke: 0.001px transparent;
}
&,
* {
font-family: var(--ck-font-family);
box-sizing: border-box;
outline: none;
border: none;
}
/*
@media (prefers-reduced-motion) {
* {
animation-duration: 60ms !important;
transition-duration: 60ms !important;
}
}
*/
img,
svg {
max-width: 100%;
}
strong {
font-weight: 600;
}
a:focus-visible,
button:focus-visible {
outline: 2px solid var(--ck-focus-color);
}
`;
export { ResetContainer };
//# sourceMappingURL=index.js.map