bridge_ui: redesign

This commit is contained in:
Evan Gray 2022-01-24 03:00:42 +00:00 committed by Evan Gray
parent c2a879ec7c
commit 5cc332cc40
43 changed files with 8014 additions and 697 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -24,7 +24,7 @@
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Sora:wght@200;300;400;500;700&display=swap"
href="https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600;700&display=swap"
rel="stylesheet"
/>
<title>Wormhole Token Bridge</title>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

@ -5,7 +5,6 @@ import {
} from "@certusone/wormhole-sdk";
import {
AppBar,
Button,
Container,
Hidden,
IconButton,
@ -17,10 +16,9 @@ import {
Tooltip,
Typography,
} from "@material-ui/core";
import { BarChart, HelpOutline, Send } from "@material-ui/icons";
import clsx from "clsx";
import { HelpOutline } from "@material-ui/icons";
import { useCallback } from "react";
import { useHistory, useLocation, useRouteMatch } from "react-router";
import { useHistory, useLocation } from "react-router";
import {
Link as RouterLink,
NavLink,
@ -30,29 +28,30 @@ import {
} from "react-router-dom";
import Attest from "./components/Attest";
import Footer from "./components/Footer";
import Home from "./components/Home";
import HeaderText from "./components/HeaderText";
import Migration from "./components/Migration";
import EvmQuickMigrate from "./components/Migration/EvmQuickMigrate";
import SolanaQuickMigrate from "./components/Migration/SolanaQuickMigrate";
import NFT from "./components/NFT";
import NFTOriginVerifier from "./components/NFTOriginVerifier";
import Recovery from "./components/Recovery";
import Transfer from "./components/Transfer";
import { useBetaContext } from "./contexts/BetaContext";
import { COLORS } from "./muiTheme";
import { CLUSTER } from "./utils/consts";
import Stats from "./components/Stats";
import TokenOriginVerifier from "./components/TokenOriginVerifier";
import SolanaQuickMigrate from "./components/Migration/SolanaQuickMigrate";
import Wormhole from "./icons/wormhole-network.svg";
import Transfer from "./components/Transfer";
import WithdrawTokensTerra from "./components/WithdrawTokensTerra";
import { useBetaContext } from "./contexts/BetaContext";
import Portal from "./icons/portal_logo.svg";
import Header from "./images/Header.png";
import { CLUSTER } from "./utils/consts";
const useStyles = makeStyles((theme) => ({
appBar: {
background: COLORS.nearBlackWithMinorTransparency,
background: "transparent",
marginTop: theme.spacing(2),
"& > .MuiToolbar-root": {
margin: "auto",
width: "100%",
maxWidth: 1100,
maxWidth: 1440,
},
},
spacer: {
@ -60,9 +59,11 @@ const useStyles = makeStyles((theme) => ({
width: "100vw",
},
link: {
...theme.typography.body1,
color: theme.palette.text.primary,
marginLeft: theme.spacing(6),
...theme.typography.body2,
fontWeight: 600,
color: "black",
marginLeft: theme.spacing(4),
textUnderlineOffset: "6px",
[theme.breakpoints.down("sm")]: {
marginLeft: theme.spacing(2.5),
},
@ -70,12 +71,12 @@ const useStyles = makeStyles((theme) => ({
marginLeft: theme.spacing(1),
},
"&.active": {
color: theme.palette.primary.light,
textDecoration: "underline",
},
},
bg: {
background:
"linear-gradient(160deg, rgba(69,74,117,.1) 0%, rgba(138,146,178,.1) 33%, rgba(69,74,117,.1) 66%, rgba(98,104,143,.1) 100%), linear-gradient(45deg, rgba(153,69,255,.1) 0%, rgba(121,98,231,.1) 20%, rgba(0,209,140,.1) 100%)",
// background:
// "linear-gradient(160deg, rgba(69,74,117,.1) 0%, rgba(138,146,178,.1) 33%, rgba(69,74,117,.1) 66%, rgba(98,104,143,.1) 100%), linear-gradient(45deg, rgba(153,69,255,.1) 0%, rgba(121,98,231,.1) 20%, rgba(0,209,140,.1) 100%)",
display: "flex",
flexDirection: "column",
minHeight: "100vh",
@ -86,6 +87,17 @@ const useStyles = makeStyles((theme) => ({
margin: theme.spacing(4, 0),
},
},
headerImage: {
position: "absolute",
zIndex: -1,
top: 0,
background: `url(${Header})`,
backgroundRepeat: "no-repeat",
backgroundPosition: "top -500px center",
backgroundSize: "2070px 1155px",
width: "100%",
height: 1155,
},
brandLink: {
display: "inline-flex",
alignItems: "center",
@ -93,22 +105,6 @@ const useStyles = makeStyles((theme) => ({
textDecoration: "none",
},
},
brandText: {
...theme.typography.h5,
[theme.breakpoints.down("xs")]: {
fontSize: 22,
},
fontWeight: "500",
background: `linear-gradient(160deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0.5) 100%);`,
WebkitBackgroundClip: "text",
backgroundClip: "text",
WebkitTextFillColor: "transparent",
MozBackgroundClip: "text",
MozTextFillColor: "transparent",
letterSpacing: "3px",
display: "inline-block",
marginLeft: theme.spacing(0.5),
},
iconButton: {
[theme.breakpoints.up("md")]: {
marginRight: theme.spacing(2.5),
@ -120,24 +116,12 @@ const useStyles = makeStyles((theme) => ({
marginRight: theme.spacing(1),
},
},
gradientButton: {
backgroundImage: `linear-gradient(45deg, ${COLORS.blue} 0%, ${COLORS.nearBlack}20 50%, ${COLORS.blue}30 62%, ${COLORS.nearBlack}50 120%)`,
transition: "0.75s",
backgroundSize: "200% auto",
boxShadow: "0 0 20px #222",
"&:hover": {
backgroundPosition:
"right center" /* change the direction of the change here */,
},
},
betaBanner: {
background: `linear-gradient(to left, ${COLORS.blue}40, ${COLORS.green}40);`,
backgroundColor: "rgba(0,0,0,0.75)",
padding: theme.spacing(1, 0),
},
wormholeIcon: {
height: 32,
filter: "contrast(0)",
transition: "filter 0.5s",
height: 68,
"&:hover": {
filter: "contrast(1)",
},
@ -150,7 +134,6 @@ const useStyles = makeStyles((theme) => ({
function App() {
const classes = useStyles();
const isBeta = useBetaContext();
const isHomepage = useRouteMatch({ path: "/", exact: true });
const { push } = useHistory();
const { pathname } = useLocation();
const handleTabChange = useCallback(
@ -161,108 +144,84 @@ function App() {
);
return (
<div className={classes.bg}>
<AppBar position="static" color="inherit" className={classes.appBar}>
<AppBar
position="static"
color="inherit"
className={classes.appBar}
elevation={0}
>
<Toolbar>
<Link component={RouterLink} to="/" className={classes.brandLink}>
<img
src={Wormhole}
alt="Wormhole"
className={classes.wormholeIcon}
/>
<Typography className={clsx(classes.link, classes.brandText)}>
wormhole
</Typography>
<Link
component={RouterLink}
to="/transfer"
className={classes.brandLink}
>
<img src={Portal} alt="Portal" className={classes.wormholeIcon} />
</Link>
<div className={classes.spacer} />
<Hidden implementation="css" xsDown>
<div style={{ display: "flex", alignItems: "center" }}>
{isHomepage ? (
<>
<Tooltip title="View wormhole network stats">
<IconButton
component={NavLink}
to="/stats"
size="small"
className={clsx(classes.link, classes.iconButton)}
>
<BarChart />
</IconButton>
</Tooltip>
<Button
component={RouterLink}
to="/transfer"
variant="contained"
color="primary"
size="large"
className={classes.gradientButton}
>
Transfer Tokens
</Button>
</>
) : (
<Tooltip title="View the FAQ">
<Button
href="https://docs.wormholenetwork.com/wormhole/faqs"
target="_blank"
rel="noopener noreferrer"
variant="outlined"
endIcon={<HelpOutline />}
>
FAQ
</Button>
</Tooltip>
)}
<Link
component={NavLink}
to="/transfer"
color="inherit"
className={classes.link}
>
Bridge
</Link>
<Link
href="https://docs.wormholenetwork.com/wormhole/faqs"
target="_blank"
rel="noopener noreferrer"
color="inherit"
className={classes.link}
>
FAQ
</Link>
<Link
component={NavLink}
to="/stats"
size="small"
color="inherit"
className={classes.link}
>
Stats
</Link>
<Link
href="https://wormholenetwork.com/"
target="_blank"
rel="noopener noreferrer"
color="inherit"
className={classes.link}
>
Wormhole
</Link>
</div>
</Hidden>
<Hidden implementation="css" smUp>
{isHomepage ? (
<>
<Tooltip title="View wormhole network stats">
<IconButton
component={NavLink}
to="/stats"
size="small"
className={classes.link + " " + classes.iconButton}
>
<BarChart />
</IconButton>
</Tooltip>
<Tooltip title="Transfer tokens to another blockchain">
<IconButton
component={NavLink}
to="/transfer"
size="small"
className={classes.link}
>
<Send />
</IconButton>
</Tooltip>
</>
) : (
<Tooltip title="View the FAQ">
<IconButton
href="https://docs.wormholenetwork.com/wormhole/faqs"
target="_blank"
rel="noopener noreferrer"
size="small"
className={classes.link}
>
<HelpOutline />
</IconButton>
</Tooltip>
)}
<Tooltip title="View the FAQ">
<IconButton
href="https://docs.wormholenetwork.com/wormhole/faqs"
target="_blank"
rel="noopener noreferrer"
size="small"
className={classes.link}
>
<HelpOutline />
</IconButton>
</Tooltip>
</Hidden>
</Toolbar>
</AppBar>
{CLUSTER === "mainnet" ? null : (
<AppBar position="static" className={classes.betaBanner}>
<AppBar position="static" className={classes.betaBanner} elevation={0}>
<Typography style={{ textAlign: "center" }}>
Caution! You are using the {CLUSTER} build of this app.
</Typography>
</AppBar>
)}
{isBeta ? (
<AppBar position="static" className={classes.betaBanner}>
<AppBar position="static" className={classes.betaBanner} elevation={0}>
<Typography style={{ textAlign: "center" }}>
Caution! You have enabled the beta. Enter the secret code again to
disable.
@ -270,8 +229,10 @@ function App() {
</AppBar>
) : null}
<div className={classes.content}>
<div className={classes.headerImage} />
{["/transfer", "/nft", "/redeem"].includes(pathname) ? (
<Container maxWidth="md" style={{ paddingBottom: 24 }}>
<HeaderText white>Portal Token Bridge</HeaderText>
<Tabs
value={pathname}
variant="fullWidth"
@ -327,11 +288,8 @@ function App() {
<Route exact path="/withdraw-tokens-terra">
<WithdrawTokensTerra />
</Route>
<Route exact path="/">
<Home />
</Route>
<Route>
<Redirect to="/" />
<Redirect to="/transfer" />
</Route>
</Switch>
</div>

View File

@ -45,9 +45,7 @@ function Attest() {
}, [preventNavigation]);
return (
<Container maxWidth="md">
<HeaderText white small>
Token Registration
</HeaderText>
<HeaderText white>Token Registration</HeaderText>
<Alert severity="info">
This form allows you to register a token on a new foreign chain. Tokens
must be registered before they can be transferred.
@ -57,7 +55,9 @@ function Attest() {
expanded={activeStep >= 0}
disabled={preventNavigation || isCreateComplete}
>
<StepButton onClick={() => dispatch(setStep(0))}>Source</StepButton>
<StepButton onClick={() => dispatch(setStep(0))} icon={null}>
1. Source
</StepButton>
<StepContent>
{activeStep === 0 ? <Source /> : <SourcePreview />}
</StepContent>
@ -66,14 +66,16 @@ function Attest() {
expanded={activeStep >= 1}
disabled={preventNavigation || isCreateComplete}
>
<StepButton onClick={() => dispatch(setStep(1))}>Target</StepButton>
<StepButton onClick={() => dispatch(setStep(1))} icon={null}>
2. Target
</StepButton>
<StepContent>
{activeStep === 1 ? <Target /> : <TargetPreview />}
</StepContent>
</Step>
<Step expanded={activeStep >= 2} disabled={isSendComplete}>
<StepButton onClick={() => dispatch(setStep(2))}>
Send attestation
<StepButton onClick={() => dispatch(setStep(2))} icon={null}>
3. Send attestation
</StepButton>
<StepContent>
{activeStep === 2 ? <Send /> : <SendPreview />}
@ -83,8 +85,9 @@ function Attest() {
<StepButton
onClick={() => dispatch(setStep(3))}
disabled={!isSendComplete}
icon={null}
>
Create wrapped token
4. Create wrapped token
</StepButton>
<StepContent>
{isCreateComplete ? <CreatePreview /> : <Create />}

View File

@ -30,7 +30,6 @@ const useStyles = makeStyles((theme) => ({
const BackgroundImage = () => {
const classes = useStyles();
// const isHomepage = useRouteMatch({ path: "/", exact: true });
return (
<div className={classes.holeOuterContainer}>

View File

@ -12,7 +12,6 @@ const useStyles = makeStyles((theme) => ({
},
button: {
marginTop: theme.spacing(2),
textTransform: "none",
width: "100%",
},
loader: {

View File

@ -1,18 +1,122 @@
import { IconButton, makeStyles, Typography } from "@material-ui/core";
import { IconButton, Link, makeStyles, Typography } from "@material-ui/core";
import { Link as RouterLink, NavLink } from "react-router-dom";
import Discord from "../icons/Discord.svg";
import Docs from "../icons/Docs.svg";
import Github from "../icons/Github.svg";
import Medium from "../icons/Medium.svg";
import Portal from "../icons/portal_logo_w.svg";
import Telegram from "../icons/Telegram.svg";
import Twitter from "../icons/Twitter.svg";
import Wormhole from "../icons/wormhole-network.svg";
import footerImg from "../images/Footer.png";
const useStyles = makeStyles((theme) => ({
footer: {
margin: theme.spacing(2, 0, 2),
position: "relative",
},
backdrop: {
position: "absolute",
zIndex: -1,
background: `url(${footerImg})`,
backgroundRepeat: "no-repeat",
backgroundPosition: "center center",
backgroundSize: "cover",
width: "100%",
height: "100%",
opacity: 0.25,
[theme.breakpoints.up("md")]: {
backgroundSize: "auto",
opacity: 1,
height: 444,
backgroundPosition: "right bottom -326px",
},
},
container: {
maxWidth: 1100,
margin: "0px auto",
paddingTop: theme.spacing(11),
paddingBottom: theme.spacing(6.5),
[theme.breakpoints.up("md")]: {
paddingBottom: theme.spacing(12),
},
},
flex: {
display: "flex",
flexDirection: "column",
alignItems: "center",
marginLeft: theme.spacing(3.5),
marginRight: theme.spacing(3.5),
borderTop: "1px solid #585587",
paddingTop: theme.spacing(7),
[theme.breakpoints.up("md")]: {
flexWrap: "wrap",
flexDirection: "row",
alignItems: "unset",
},
},
logoWrapper: {
paddingLeft: theme.spacing(0),
paddingBottom: theme.spacing(2),
borderTop: "1px solid #585587",
paddingTop: theme.spacing(7),
width: "100%",
textAlign: "center",
[theme.breakpoints.up("md")]: {
paddingLeft: theme.spacing(2),
paddingBottom: theme.spacing(2),
borderTop: "none",
paddingTop: theme.spacing(0),
width: "auto",
textAlign: "left",
},
},
spacer: {
flexGrow: 1,
},
linksWrapper: {
paddingLeft: theme.spacing(0),
order: -2,
textAlign: "center",
marginBottom: theme.spacing(7),
[theme.breakpoints.up("md")]: {
paddingLeft: theme.spacing(2),
order: 0,
textAlign: "left",
mb: theme.spacing(0),
},
},
linkStyle: {
color: "white",
display: "block",
marginRight: theme.spacing(0),
marginBottom: theme.spacing(1.5),
fontSize: 14,
textUnderlineOffset: "6px",
[theme.breakpoints.up("md")]: {
marginRight: theme.spacing(7.5),
},
},
linkActiveStyle: { textDecoration: "underline" },
socialWrapper: {
padding: theme.spacing(0, 2),
order: -2,
textAlign: "center",
borderTop: "1px solid #585587",
paddingTop: theme.spacing(7),
width: "100%",
marginBottom: theme.spacing(7),
[theme.breakpoints.up("md")]: {
order: 0,
textAlign: "left",
borderTop: "none",
paddingTop: theme.spacing(0),
width: "auto",
marginBottom: theme.spacing(0),
},
},
socialHeader: {
marginBottom: theme.spacing(3),
},
socialIcon: {
padding: theme.spacing(1),
"& img": {
height: 24,
width: 24,
@ -26,15 +130,17 @@ const useStyles = makeStyles((theme) => ({
marginTop: theme.spacing(1),
},
wormholeIcon: {
height: 48,
width: 48,
filter: "contrast(0)",
transition: "filter 0.5s",
"&:hover": {
filter: "contrast(1)",
height: 68,
marginTop: -24,
},
copyWrapper: {
flexBasis: "100%",
paddingTop: theme.spacing(0),
textAlign: "center",
[theme.breakpoints.up("md")]: {
paddingTop: theme.spacing(0),
textAlign: "left",
},
verticalAlign: "middle",
marginRight: theme.spacing(1),
},
}));
@ -42,73 +148,110 @@ export default function Footer() {
const classes = useStyles();
return (
<footer className={classes.footer}>
<div>
<IconButton
href="https://docs.wormholenetwork.com/"
target="_blank"
rel="noopener noreferrer"
className={classes.socialIcon}
>
<img src={Docs} alt="Docs" />
</IconButton>
<IconButton
href="https://discord.gg/wormholecrypto"
target="_blank"
rel="noopener noreferrer"
className={classes.socialIcon}
>
<img src={Discord} alt="Discord" />
</IconButton>
<IconButton
href="https://github.com/certusone/wormhole"
target="_blank"
rel="noopener noreferrer"
className={classes.socialIcon}
>
<img src={Github} alt="Github" />
</IconButton>
<IconButton
href="http://wormholecrypto.medium.com"
target="_blank"
rel="noopener noreferrer"
className={classes.socialIcon}
>
<img src={Medium} alt="Medium" />
</IconButton>
<IconButton
href="https://t.me/wormholecrypto"
target="_blank"
rel="noopener noreferrer"
className={classes.socialIcon}
>
<img src={Telegram} alt="Telegram" />
</IconButton>
<IconButton
href="https://twitter.com/wormholecrypto"
target="_blank"
rel="noopener noreferrer"
className={classes.socialIcon}
>
<img src={Twitter} alt="Twitter" />
</IconButton>
</div>
<div className={classes.builtWithContainer}>
<div>
<a
href="https://wormholenetwork.com/"
target="_blank"
rel="noopener noreferrer"
>
<img
src={Wormhole}
alt="Wormhole"
className={classes.wormholeIcon}
/>
</a>
</div>
<div>
<Typography variant="body2">Open Source</Typography>
<Typography variant="body2">Built with &#10084;</Typography>
<div className={classes.backdrop} />
<div className={classes.container}>
<div className={classes.flex}>
<div className={classes.logoWrapper}>
<RouterLink to={"/transfer"}>
<img src={Portal} alt="Portal" className={classes.wormholeIcon} />
</RouterLink>
</div>
<div className={classes.spacer} />
<div className={classes.linksWrapper}>
<div>
<Link
component={NavLink}
to={"/transfer"}
color="inherit"
underline="hover"
className={classes.linkStyle}
activeClassName={classes.linkActiveStyle}
>
Bridge
</Link>
<Link
href="https://docs.wormholenetwork.com/wormhole/faqs"
target="_blank"
rel="noopener noreferrer"
color="inherit"
underline="hover"
className={classes.linkStyle}
>
FAQ
</Link>
<Link
component={NavLink}
to={"/stats"}
color="inherit"
underline="hover"
className={classes.linkStyle}
activeClassName={classes.linkActiveStyle}
>
Stats
</Link>
<Link
href="https://wormholenetwork.com/"
target="_blank"
rel="noopener noreferrer"
color="inherit"
underline="hover"
className={classes.linkStyle}
>
Wormhole
</Link>
</div>
</div>
<div className={classes.spacer} />
<div className={classes.socialWrapper}>
<Typography className={classes.socialHeader}>
Let's be friends
</Typography>
<IconButton
href="https://discord.gg/wormholecrypto"
target="_blank"
rel="noopener noreferrer"
className={classes.socialIcon}
>
<img src={Discord} alt="Discord" />
</IconButton>
<IconButton
href="https://github.com/certusone/wormhole"
target="_blank"
rel="noopener noreferrer"
className={classes.socialIcon}
>
<img src={Github} alt="Github" />
</IconButton>
<IconButton
href="http://wormholecrypto.medium.com"
target="_blank"
rel="noopener noreferrer"
className={classes.socialIcon}
>
<img src={Medium} alt="Medium" />
</IconButton>
<IconButton
href="https://t.me/wormholecrypto"
target="_blank"
rel="noopener noreferrer"
className={classes.socialIcon}
>
<img src={Telegram} alt="Telegram" />
</IconButton>
<IconButton
href="https://twitter.com/wormholecrypto"
target="_blank"
rel="noopener noreferrer"
className={classes.socialIcon}
>
<img src={Twitter} alt="Twitter" />
</IconButton>
</div>
<div className={classes.copyWrapper}>
<Typography variant="body2">
2022 &copy; Wormhole. All Rights Reserved.
</Typography>
</div>
</div>
</div>
</footer>

View File

@ -5,16 +5,12 @@ import { COLORS } from "../muiTheme";
const useStyles = makeStyles((theme) => ({
centeredContainer: {
marginTop: theme.spacing(14),
marginBottom: theme.spacing(26),
minHeight: 208,
textAlign: "center",
width: "100%",
},
header: {
marginTop: theme.spacing(2),
marginBottom: theme.spacing(4),
[theme.breakpoints.down("sm")]: {
marginBottom: theme.spacing(4),
},
},
linearGradient: {
background: `linear-gradient(to left, ${COLORS.blue}, ${COLORS.green});`,
WebkitBackgroundClip: "text",
@ -29,10 +25,12 @@ export default function HeaderText({
children,
white,
small,
subtitle,
}: {
children: ReactChild;
white?: boolean;
small?: boolean;
subtitle?: string;
}) {
const classes = useStyles();
return (
@ -40,10 +38,12 @@ export default function HeaderText({
<Typography
variant={small ? "h2" : "h1"}
component="h1"
className={clsx(classes.header, { [classes.linearGradient]: !white })}
className={clsx({ [classes.linearGradient]: !white })}
gutterBottom={!!subtitle}
>
{children}
</Typography>
{subtitle ? <Typography>{subtitle}</Typography> : null}
</div>
);
}

View File

@ -1,185 +0,0 @@
import {
Card,
Chip,
Container,
Link,
makeStyles,
Typography,
} from "@material-ui/core";
import { Link as RouterLink } from "react-router-dom";
import { COLORS } from "../../muiTheme";
import { BETA_CHAINS, CHAINS, COMING_SOON_CHAINS } from "../../utils/consts";
import HeaderText from "../HeaderText";
const useStyles = makeStyles((theme) => ({
header: {
marginTop: theme.spacing(12),
marginBottom: theme.spacing(8),
[theme.breakpoints.down("sm")]: {
marginBottom: theme.spacing(6),
},
},
description: {
marginBottom: theme.spacing(2),
},
button: {
marginBottom: theme.spacing(4),
},
overview: {
marginTop: theme.spacing(6),
[theme.breakpoints.down("sm")]: {
marginTop: theme.spacing(2),
},
maxWidth: "100%",
},
mainCard: {
padding: theme.spacing(8),
backgroundColor: COLORS.nearBlackWithMinorTransparency,
},
spacer: {
height: theme.spacing(5),
},
chainList: {
display: "flex",
flexWrap: "wrap",
justifyContent: "center",
margin: theme.spacing(-1, -1, 8),
[theme.breakpoints.down("sm")]: {
margin: theme.spacing(-1, -1, 6),
},
},
chainCard: {
backgroundColor: COLORS.nearBlackWithMinorTransparency,
borderRadius: 8,
display: "flex",
flexDirection: "column",
margin: theme.spacing(1),
minHeight: "100%",
padding: theme.spacing(2),
width: 149, // makes it square
maxWidth: 149,
[theme.breakpoints.down("sm")]: {
padding: theme.spacing(1.5),
width: 141, // keeps it square
maxWidth: 141,
},
},
chainLogoWrapper: {
position: "relative",
textAlign: "center",
},
chainLogo: {
height: 64,
maxWidth: 64,
},
chainName: {
marginTop: theme.spacing(1),
flex: "1",
display: "flex",
alignItems: "center",
justifyContent: "center",
textAlign: "center",
minHeight: 40, // 2 lines
},
chip: {
backgroundColor: COLORS.blueWithTransparency,
position: "absolute",
top: "50%",
right: "50%",
transform: "translate(50%, -50%)",
},
}));
function Home() {
const classes = useStyles();
return (
<div>
<Container maxWidth="md">
<div className={classes.header}>
<HeaderText>The Portal is Open</HeaderText>
</div>
</Container>
<Container maxWidth="md">
<div className={classes.chainList}>
{CHAINS.filter(({ id }) => !BETA_CHAINS.includes(id)).map((chain) => (
<div key={chain.id} className={classes.chainCard}>
<div className={classes.chainLogoWrapper}>
<img
src={chain.logo}
alt={chain.name}
className={classes.chainLogo}
/>
</div>
<Typography
variant="body2"
component="div"
className={classes.chainName}
>
<div>{chain.name}</div>
</Typography>
</div>
))}
{COMING_SOON_CHAINS.map((item) => (
<div className={classes.chainCard}>
<div className={classes.chainLogoWrapper}>
<img
src={item.logo}
alt={item.name}
className={classes.chainLogo}
/>
<Chip
label="Coming soon"
size="small"
className={classes.chip}
/>
</div>
<Typography
variant="body2"
component="div"
className={classes.chainName}
>
<div>{item.name}</div>
</Typography>
</div>
))}
</div>
</Container>
<Container maxWidth="md">
<Card className={classes.mainCard}>
<Typography variant="h4" className={classes.description}>
Wormhole v2 is here!
</Typography>
<Typography variant="h6" className={classes.description}>
The Wormhole Token Bridge allows you to seamlessly transfer
tokenized assets across Solana, Ethereum, BSC, Terra, Polygon,
Avalanche, and Oasis.
</Typography>
<div className={classes.spacer} />
<Typography variant="subtitle1" className={classes.description}>
If you transferred assets using the previous version of Wormhole,
most assets can be migrated to v2 on the{" "}
<Link component={RouterLink} to="/transfer" noWrap>
transfer page
</Link>
.
</Typography>
<Typography variant="subtitle1" className={classes.description}>
For assets that don't support the migration, the v1 UI can be found
at{" "}
<Link href="https://v1.wormholebridge.com">
v1.wormholebridge.com
</Link>
</Typography>
<Typography variant="subtitle1" className={classes.description}>
To learn more about the Wormhole Protocol that powers it, visit{" "}
<Link href="https://wormholenetwork.com/en/">
wormholenetwork.com
</Link>
</Typography>
</Card>
</Container>
</div>
);
}
export default Home;

View File

@ -21,6 +21,7 @@ import { COLORS } from "../../muiTheme";
import { CHAINS_BY_ID, getMigrationAssetMap } from "../../utils/consts";
import ButtonWithLoader from "../ButtonWithLoader";
import EthereumSignerKey from "../EthereumSignerKey";
import HeaderText from "../HeaderText";
import ShowTx from "../ShowTx";
import SmartAddress from "../SmartAddress";
@ -45,7 +46,7 @@ const useStyles = makeStyles((theme) => ({
flewGrow: 1,
},
mainPaper: {
backgroundColor: COLORS.nearBlackWithMinorTransparency,
backgroundColor: COLORS.whiteWithTransparency,
textAlign: "center",
padding: "2rem",
"& > h, p ": {
@ -376,6 +377,12 @@ export default function EvmQuickMigrate({ chainId }: { chainId: ChainId }) {
return (
<Container maxWidth="md">
<HeaderText
white
subtitle="Convert assets from other bridges to Wormhole V2 tokens"
>
Migrate Assets
</HeaderText>
<Paper className={classes.mainPaper}>{content}</Paper>
</Container>
);

View File

@ -24,6 +24,7 @@ import {
SOLANA_HOST,
} from "../../utils/consts";
import ButtonWithLoader from "../ButtonWithLoader";
import HeaderText from "../HeaderText";
import ShowTx from "../ShowTx";
import SmartAddress from "../SmartAddress";
import SolanaCreateAssociatedAddress from "../SolanaCreateAssociatedAddress";
@ -53,7 +54,7 @@ const useStyles = makeStyles((theme) => ({
flewGrow: 1,
},
mainPaper: {
backgroundColor: COLORS.nearBlackWithMinorTransparency,
backgroundColor: COLORS.whiteWithTransparency,
textAlign: "center",
padding: "2rem",
"& > h, p ": {
@ -367,6 +368,12 @@ export default function SolanaQuickMigrate() {
return (
<Container maxWidth="md">
<HeaderText
white
subtitle="Convert assets from other bridges to Wormhole V2 tokens"
>
Migrate Assets
</HeaderText>
<Paper className={classes.mainPaper}>{content}</Paper>
</Container>
);

View File

@ -29,7 +29,7 @@ import SolanaWalletKey from "../SolanaWalletKey";
const useStyles = makeStyles(() => ({
mainPaper: {
backgroundColor: COLORS.nearBlackWithMinorTransparency,
backgroundColor: COLORS.whiteWithTransparency,
textAlign: "center",
padding: "2rem",
"& > h, p ": {

View File

@ -1,28 +1,23 @@
import {
Container,
Divider,
makeStyles,
Paper,
Typography,
} from "@material-ui/core";
import { PublicKey } from "@solana/web3.js";
import { RouteComponentProps } from "react-router-dom";
import { getMigrationAssetMap, MIGRATION_ASSET_MAP } from "../../utils/consts";
import SolanaWorkflow from "./SolanaWorkflow";
import { withRouter } from "react-router";
import { COLORS } from "../../muiTheme";
import {
ChainId,
CHAIN_ID_BSC,
CHAIN_ID_ETH,
CHAIN_ID_SOLANA,
CHAIN_ID_BSC,
} from "@certusone/wormhole-sdk";
import EvmWorkflow from "./EvmWorkflow";
import { getAddress } from "@ethersproject/address";
import { Container, makeStyles, Paper, Typography } from "@material-ui/core";
import { PublicKey } from "@solana/web3.js";
import { withRouter } from "react-router";
import { RouteComponentProps } from "react-router-dom";
import { COLORS } from "../../muiTheme";
import { getMigrationAssetMap, MIGRATION_ASSET_MAP } from "../../utils/consts";
import HeaderText from "../HeaderText";
import EvmWorkflow from "./EvmWorkflow";
import SolanaWorkflow from "./SolanaWorkflow";
const useStyles = makeStyles(() => ({
mainPaper: {
backgroundColor: COLORS.nearBlackWithMinorTransparency,
backgroundColor: COLORS.whiteWithTransparency,
textAlign: "center",
padding: "2rem",
"& > h, p ": {
@ -121,14 +116,13 @@ const MigrationRoot: React.FC<Migration> = (props) => {
return (
<Container maxWidth="md">
<Paper className={classes.mainPaper}>
<Typography variant="h5">Migrate Assets</Typography>
<Typography variant="subtitle2">
Convert assets from other bridges to Wormhole V2 tokens
</Typography>
<Divider className={classes.divider} />
{content}
</Paper>
<HeaderText
white
subtitle="Convert assets from other bridges to Wormhole V2 tokens"
>
Migrate Assets
</HeaderText>
<Paper className={classes.mainPaper}>{content}</Paper>
</Container>
);
};

View File

@ -59,7 +59,7 @@ function Source() {
to="/nft-origin-verifier"
size="small"
variant="outlined"
endIcon={<VerifiedUser />}
startIcon={<VerifiedUser />}
>
NFT Origin Verifier
</Button>

View File

@ -88,7 +88,9 @@ function NFT() {
expanded={activeStep >= 0}
disabled={preventNavigation || isRedeemComplete}
>
<StepButton onClick={() => dispatch(setStep(0))}>Source</StepButton>
<StepButton onClick={() => dispatch(setStep(0))} icon={null}>
1. Source
</StepButton>
<StepContent>
{activeStep === 0 ? <Source /> : <SourcePreview />}
</StepContent>
@ -97,13 +99,17 @@ function NFT() {
expanded={activeStep >= 1}
disabled={preventNavigation || isRedeemComplete || activeStep === 0}
>
<StepButton onClick={() => dispatch(setStep(1))}>Target</StepButton>
<StepButton onClick={() => dispatch(setStep(1))} icon={null}>
2. Target
</StepButton>
<StepContent>
{activeStep === 1 ? <Target /> : <TargetPreview />}
</StepContent>
</Step>
<Step expanded={activeStep >= 2} disabled={isSendComplete}>
<StepButton disabled>Send NFT</StepButton>
<StepButton disabled icon={null}>
3. Send NFT
</StepButton>
<StepContent>
{activeStep === 2 ? <Send /> : <SendPreview />}
</StepContent>
@ -112,8 +118,9 @@ function NFT() {
<StepButton
onClick={() => dispatch(setStep(3))}
disabled={!isSendComplete || isRedeemComplete}
icon={null}
>
Redeem NFT
4. Redeem NFT
</StepButton>
<StepContent>
{isRedeemComplete ? <RedeemPreview /> : <Redeem />}

View File

@ -54,8 +54,8 @@ import NFTViewer from "./TokenSelectors/NFTViewer";
const useStyles = makeStyles((theme) => ({
mainCard: {
padding: theme.spacing(2),
backgroundColor: COLORS.nearBlackWithMinorTransparency,
padding: "32px 32px 16px",
backgroundColor: COLORS.whiteWithTransparency,
},
originHeader: {
marginTop: theme.spacing(4),
@ -217,9 +217,7 @@ export default function NFTOriginVerifier() {
return (
<div>
<Container maxWidth="md">
<HeaderText white small>
NFT Origin Verifier
</HeaderText>
<HeaderText white>NFT Origin Verifier</HeaderText>
</Container>
<Container maxWidth="sm">
<Card className={classes.mainCard}>
@ -304,7 +302,7 @@ export default function NFTOriginVerifier() {
href={`https://solscan.io/token/${readableAddress}`}
target="_blank"
rel="noopener noreferrer"
endIcon={<Launch />}
startIcon={<Launch />}
className={classes.viewButton}
variant="outlined"
>
@ -315,7 +313,7 @@ export default function NFTOriginVerifier() {
href={`https://bscscan.com/token/${readableAddress}?a=${originInfo.tokenId}`}
target="_blank"
rel="noopener noreferrer"
endIcon={<Launch />}
startIcon={<Launch />}
className={classes.viewButton}
variant="outlined"
>
@ -326,7 +324,7 @@ export default function NFTOriginVerifier() {
href={`https://opensea.io/assets/matic/${readableAddress}/${originInfo.tokenId}`}
target="_blank"
rel="noopener noreferrer"
endIcon={<Launch />}
startIcon={<Launch />}
className={classes.viewButton}
variant="outlined"
>
@ -337,7 +335,7 @@ export default function NFTOriginVerifier() {
href={`https://snowtrace.io/token/${readableAddress}?a=${originInfo.tokenId}`}
target="_blank"
rel="noopener noreferrer"
endIcon={<Launch />}
startIcon={<Launch />}
className={classes.viewButton}
variant="outlined"
>
@ -348,7 +346,7 @@ export default function NFTOriginVerifier() {
href={`https://opensea.io/assets/${readableAddress}/${originInfo.tokenId}`}
target="_blank"
rel="noopener noreferrer"
endIcon={<Launch />}
startIcon={<Launch />}
className={classes.viewButton}
variant="outlined"
>

View File

@ -64,8 +64,8 @@ import KeyAndBalance from "./KeyAndBalance";
const useStyles = makeStyles((theme) => ({
mainCard: {
padding: theme.spacing(2),
backgroundColor: COLORS.nearBlackWithMinorTransparency,
padding: "32px 32px 16px",
backgroundColor: COLORS.whiteWithTransparency,
},
advancedContainer: {
padding: theme.spacing(2, 0),

View File

@ -145,7 +145,7 @@ export default function SmartAddress({
<Button
size="small"
variant="outlined"
endIcon={<OpenInNew />}
startIcon={<OpenInNew />}
className={classes.buttons}
href={explorerAddress}
target="_blank"
@ -159,7 +159,7 @@ export default function SmartAddress({
<Button
size="small"
variant="outlined"
endIcon={<FileCopy />}
startIcon={<FileCopy />}
onClick={copyToClipboard}
className={classes.buttons}
>

View File

@ -6,8 +6,9 @@ import {
CHAIN_ID_SOLANA,
CHAIN_ID_TERRA,
} from "@certusone/wormhole-sdk";
import { makeStyles, Typography } from "@material-ui/core";
import { makeStyles, Paper, Typography } from "@material-ui/core";
import { useMemo } from "react";
import { COLORS } from "../../muiTheme";
import {
getNFTBridgeAddressForChain,
getTokenBridgeAddressForChain,
@ -21,7 +22,7 @@ const useStyles = makeStyles((theme) => ({
flexBox: {
display: "flex",
alignItems: "flex-end",
marginBottom: theme.spacing(1),
marginBottom: theme.spacing(4),
textAlign: "left",
[theme.breakpoints.down("sm")]: {
flexDirection: "column",
@ -32,6 +33,14 @@ const useStyles = makeStyles((theme) => ({
flexGrow: 1,
},
explainerContainer: {},
mainPaper: {
backgroundColor: COLORS.whiteWithTransparency,
padding: "2rem",
"& > h, & > p ": {
margin: ".5rem",
},
marginBottom: theme.spacing(8),
},
}));
const CustodyAddresses: React.FC<any> = () => {
@ -116,8 +125,8 @@ const CustodyAddresses: React.FC<any> = () => {
const header = (
<div className={classes.flexBox}>
<div className={classes.explainerContainer}>
<Typography variant="h5">Custody Addresses</Typography>
<Typography variant="subtitle2" color="textSecondary">
<Typography variant="h4">Custody Addresses</Typography>
<Typography variant="subtitle1" color="textSecondary">
These are the custody addresses which hold collateralized assets for
the token bridge.
</Typography>
@ -138,7 +147,7 @@ const CustodyAddresses: React.FC<any> = () => {
return (
<>
{header}
{table}
<Paper className={classes.mainPaper}>{table}</Paper>
</>
);
};

View File

@ -2,6 +2,7 @@ import {
Button,
CircularProgress,
makeStyles,
Paper,
Typography,
} from "@material-ui/core";
import clsx from "clsx";
@ -19,6 +20,7 @@ import {
//DENY_LIST,
ALLOW_LIST,
} from "./nftLists";
import { COLORS } from "../../muiTheme";
const useStyles = makeStyles((theme) => ({
logoPositioner: {
@ -41,7 +43,7 @@ const useStyles = makeStyles((theme) => ({
flexBox: {
display: "flex",
alignItems: "flex-end",
marginBottom: theme.spacing(1),
marginBottom: theme.spacing(4),
textAlign: "left",
[theme.breakpoints.down("sm")]: {
flexDirection: "column",
@ -89,6 +91,14 @@ const useStyles = makeStyles((theme) => ({
width: "fit-content",
maxWidth: "100%",
},
mainPaper: {
backgroundColor: COLORS.whiteWithTransparency,
padding: "2rem",
"& > h, & > p ": {
margin: ".5rem",
},
marginBottom: theme.spacing(2),
},
}));
const NFTStats: React.FC<any> = () => {
@ -203,8 +213,8 @@ const NFTStats: React.FC<any> = () => {
const header = (
<div className={classes.flexBox}>
<div className={classes.explainerContainer}>
<Typography variant="h5">Total NFTs Locked</Typography>
<Typography variant="subtitle2" color="textSecondary">
<Typography variant="h4">Total NFTs Locked</Typography>
<Typography variant="subtitle1" color="textSecondary">
These NFTs are currently locked by the NFT Bridge contracts.
</Typography>
</div>
@ -248,9 +258,8 @@ const NFTStats: React.FC<any> = () => {
<div className={classes.randomNftContainer}>
<Button
className={classes.randomButton}
variant="contained"
variant="outlined"
onClick={genRandomNumber}
color="primary"
>
Load Random Wormhole NFT
</Button>
@ -266,15 +275,17 @@ const NFTStats: React.FC<any> = () => {
return (
<>
{header}
{nftTVL.isFetching ? (
<CircularProgress className={classes.alignCenter} />
) : (
<div className={classes.tableBox}>
<div className={classes.tableContainer}>{table}</div>
{randomNFTContent}
</div>
)}
{/* {allNfts} */}
<Paper className={classes.mainPaper}>
{nftTVL.isFetching ? (
<CircularProgress className={classes.alignCenter} />
) : (
<div className={classes.tableBox}>
<div className={classes.tableContainer}>{table}</div>
{randomNFTContent}
</div>
)}
{/* {allNfts} */}
</Paper>
</>
);
};

View File

@ -2,10 +2,13 @@ import {
CircularProgress,
Link,
makeStyles,
Paper,
Typography,
} from "@material-ui/core";
import clsx from "clsx";
import numeral from "numeral";
import useTransactionCount from "../../hooks/useTransactionCount";
import { COLORS } from "../../muiTheme";
import { WORMHOLE_EXPLORER_BASE } from "../../utils/consts";
const useStyles = makeStyles((theme) => ({
@ -29,7 +32,7 @@ const useStyles = makeStyles((theme) => ({
flexBox: {
display: "flex",
alignItems: "flex-end",
marginBottom: theme.spacing(1),
marginBottom: theme.spacing(4),
textAlign: "left",
[theme.breakpoints.down("sm")]: {
flexDirection: "column",
@ -52,22 +55,25 @@ const useStyles = makeStyles((theme) => ({
alignItems: "center",
},
totalContainer: {
display: "flex",
alignItems: "flex-end",
paddingLeft: theme.spacing(0.5),
paddingRight: theme.spacing(0.5),
paddingBottom: 1, // line up with left text bottom
[theme.breakpoints.down("sm")]: {
marginTop: theme.spacing(1),
},
paddingLeft: theme.spacing(1),
paddingRight: theme.spacing(1),
textAlign: "center",
marginBottom: theme.spacing(2),
},
totalValue: {
marginLeft: theme.spacing(0.5),
marginBottom: "-.125em", // line up number with label
fontWeight: 600,
},
typog: {
marginTop: theme.spacing(3),
},
mainPaper: {
backgroundColor: COLORS.whiteWithTransparency,
padding: "2rem",
"& > h, & > p ": {
margin: ".5rem",
},
marginBottom: theme.spacing(8),
},
}));
const TransactionMetrics: React.FC<any> = () => {
@ -78,8 +84,8 @@ const TransactionMetrics: React.FC<any> = () => {
const header = (
<div className={classes.flexBox}>
<div>
<Typography variant="h5">Transaction Count</Typography>
<Typography variant="subtitle2" color="textSecondary">
<Typography variant="h4">Transaction Count</Typography>
<Typography variant="subtitle1" color="textSecondary">
This is how many transactions the Token Bridge has processed.
</Typography>
</div>
@ -90,39 +96,29 @@ const TransactionMetrics: React.FC<any> = () => {
const content = (
<div className={classes.totalsBox}>
<div className={classes.totalContainer}>
<Typography
variant="body2"
color="textSecondary"
component="div"
noWrap
>
<Typography variant="subtitle2" component="div" noWrap>
{"Last 48 Hours"}
</Typography>
<Typography
variant="h3"
variant="h2"
component="div"
noWrap
className={classes.totalValue}
>
{transactionCount.data?.total24h || "0"}
{numeral(transactionCount.data?.total24h || 0).format("0,0")}
</Typography>
</div>
<div className={classes.totalContainer}>
<Typography
variant="body2"
color="textSecondary"
component="div"
noWrap
>
<Typography variant="subtitle2" component="div" noWrap>
{"All Time"}
</Typography>
<Typography
variant="h3"
variant="h2"
component="div"
noWrap
className={classes.totalValue}
>
{transactionCount.data?.totalAllTime || "0"}
{numeral(transactionCount.data?.totalAllTime || 0).format("0,0")}
</Typography>
</div>
</div>
@ -144,14 +140,16 @@ const TransactionMetrics: React.FC<any> = () => {
return (
<>
{header}
{isFetching ? (
<CircularProgress className={classes.alignCenter} />
) : (
<>
{content}
{networkExplorer}
</>
)}
<Paper className={classes.mainPaper}>
{isFetching ? (
<CircularProgress className={classes.alignCenter} />
) : (
<>
{content}
{networkExplorer}
</>
)}
</Paper>
</>
);
};

View File

@ -12,6 +12,7 @@ import numeral from "numeral";
import { useMemo } from "react";
import useTVL from "../../hooks/useTVL";
import { COLORS } from "../../muiTheme";
import HeaderText from "../HeaderText";
import SmartAddress from "../SmartAddress";
import { balancePretty } from "../TokenSelectors/TokenPicker";
import CustodyAddresses from "./CustodyAddresses";
@ -38,17 +39,17 @@ const useStyles = makeStyles((theme) => ({
alignItems: "center",
},
mainPaper: {
backgroundColor: COLORS.nearBlackWithMinorTransparency,
backgroundColor: COLORS.whiteWithTransparency,
padding: "2rem",
"& > h, & > p ": {
margin: ".5rem",
},
marginBottom: theme.spacing(2),
marginBottom: theme.spacing(8),
},
flexBox: {
display: "flex",
alignItems: "flex-end",
marginBottom: theme.spacing(1),
marginBottom: theme.spacing(4),
textAlign: "left",
[theme.breakpoints.down("sm")]: {
flexDirection: "column",
@ -204,63 +205,55 @@ const StatsRoot: React.FC<any> = () => {
return (
<Container maxWidth="lg">
<Paper className={classes.mainPaper}>
<>
<div className={classes.flexBox}>
<div className={classes.explainerContainer}>
<Typography variant="h5">Total Value Locked</Typography>
<Typography variant="subtitle2" color="textSecondary">
These assets are currently locked by the Token Bridge contracts.
</Typography>
</div>
<div className={classes.grower} />
{!tvl.isFetching ? (
<div
className={clsx(
classes.explainerContainer,
classes.totalContainer
)}
>
<Typography
variant="body2"
color="textSecondary"
component="div"
noWrap
>
{"Total (USD)"}
</Typography>
<Typography
variant="h3"
component="div"
noWrap
className={classes.totalValue}
>
{tvlString}
</Typography>
</div>
) : null}
<Container maxWidth="md">
<HeaderText white>Rock Hard Stats</HeaderText>
</Container>
<div className={classes.flexBox}>
<div className={classes.explainerContainer}>
<Typography variant="h4">Total Value Locked</Typography>
<Typography variant="subtitle1" color="textSecondary">
These assets are currently locked by the Token Bridge contracts.
</Typography>
</div>
<div className={classes.grower} />
{!tvl.isFetching ? (
<div
className={clsx(classes.explainerContainer, classes.totalContainer)}
>
<Typography
variant="body2"
color="textSecondary"
component="div"
noWrap
>
{"Total (USD)"}
</Typography>
<Typography
variant="h3"
component="div"
noWrap
className={classes.totalValue}
>
{tvlString}
</Typography>
</div>
{!tvl.isFetching ? (
<MuiReactTable
columns={tvlColumns}
data={tvl.data}
skipPageReset={false}
initialState={{ sortBy: [{ id: "totalValue", desc: true }] }}
/>
) : (
<CircularProgress className={classes.alignCenter} />
)}
</>
</Paper>
) : null}
</div>
<Paper className={classes.mainPaper}>
<TransactionMetrics />
</Paper>
<Paper className={classes.mainPaper}>
<CustodyAddresses />
</Paper>
<Paper className={classes.mainPaper}>
<NFTStats />
{!tvl.isFetching ? (
<MuiReactTable
columns={tvlColumns}
data={tvl.data}
skipPageReset={false}
initialState={{ sortBy: [{ id: "totalValue", desc: true }] }}
/>
) : (
<CircularProgress className={classes.alignCenter} />
)}
</Paper>
<TransactionMetrics />
<CustodyAddresses />
<NFTStats />
</Container>
);
};

View File

@ -40,8 +40,8 @@ const useStyles = makeStyles((theme) => ({
},
},
mainCard: {
padding: theme.spacing(2),
backgroundColor: COLORS.nearBlackWithMinorTransparency,
padding: "32px 32px 16px",
backgroundColor: COLORS.whiteWithTransparency,
},
spacer: {
height: theme.spacing(3),
@ -358,10 +358,7 @@ export default function TokenOriginVerifier() {
const content = (
<div>
<Container maxWidth="md" className={classes.centered}>
<HeaderText white small>
Token Origin Verifier
</HeaderText>
<div className={classes.spacer} />
<HeaderText white>Token Origin Verifier</HeaderText>
</Container>
<Container maxWidth="sm">
<Card className={classes.mainCard}>{primaryContent}</Card>

View File

@ -174,7 +174,7 @@ export const BasicAccountRender = (
size="small"
variant="outlined"
color="secondary"
endIcon={<Launch />}
startIcon={<Launch />}
href={marketsData.markets[market].link}
target="_blank"
rel="noopener noreferrer"
@ -614,7 +614,7 @@ export default function TokenPicker({
onClick={openDialog}
disabled={disabled}
variant="outlined"
endIcon={<KeyboardArrowDownIcon />}
startIcon={<KeyboardArrowDownIcon />}
className={classes.selectionButton}
>
{value ? (

View File

@ -81,7 +81,7 @@ export default function FeaturedMarkets() {
size="small"
variant="outlined"
color="secondary"
endIcon={<Launch />}
startIcon={<Launch />}
href={url}
target="_blank"
rel="noopener noreferrer"

View File

@ -152,7 +152,7 @@ function Source() {
to="/token-origin-verifier"
size="small"
variant="outlined"
endIcon={<VerifiedUser />}
startIcon={<VerifiedUser />}
>
Token Origin Verifier
</Button>

View File

@ -90,7 +90,9 @@ function Transfer() {
expanded={activeStep >= 0}
disabled={preventNavigation || isRedeemComplete}
>
<StepButton onClick={() => dispatch(setStep(0))}>Source</StepButton>
<StepButton onClick={() => dispatch(setStep(0))} icon={null}>
1. Source
</StepButton>
<StepContent>
{activeStep === 0 ? <Source /> : <SourcePreview />}
</StepContent>
@ -102,15 +104,18 @@ function Transfer() {
<StepButton
disabled={preventNavigation || isRedeemComplete || activeStep === 0}
onClick={() => dispatch(setStep(1))}
icon={null}
>
Target
2. Target
</StepButton>
<StepContent>
{activeStep === 1 ? <Target /> : <TargetPreview />}
</StepContent>
</Step>
<Step expanded={activeStep >= 2} disabled={isSendComplete}>
<StepButton disabled>Send tokens</StepButton>
<StepButton disabled icon={null}>
3. Send tokens
</StepButton>
<StepContent>
{activeStep === 2 ? <Send /> : <SendPreview />}
</StepContent>
@ -119,8 +124,9 @@ function Transfer() {
<StepButton
onClick={() => dispatch(setStep(3))}
disabled={!isSendComplete || isRedeemComplete}
icon={null}
>
Redeem tokens
4. Redeem tokens
</StepButton>
<StepContent>
{isRedeemComplete ? <RedeemPreview /> : <Redeem />}

View File

@ -15,6 +15,7 @@ import {
InputLabel,
makeStyles,
MenuItem,
Paper,
Select,
Typography,
} from "@material-ui/core";
@ -25,6 +26,8 @@ import { Alert } from "@material-ui/lab";
import { useSelector } from "react-redux";
import { selectTerraFeeDenom } from "../store/selectors";
import TerraFeeDenomPicker from "./TerraFeeDenomPicker";
import HeaderText from "./HeaderText";
import { COLORS } from "../muiTheme";
const useStyles = makeStyles((theme) => ({
formControl: {
@ -34,6 +37,14 @@ const useStyles = makeStyles((theme) => ({
maxWidth: 400,
textAlign: "center",
},
mainPaper: {
backgroundColor: COLORS.whiteWithTransparency,
textAlign: "center",
padding: "2rem",
"& > h, p ": {
margin: ".5rem",
},
},
}));
const withdraw = async (
@ -94,33 +105,36 @@ export default function WithdrawTokensTerra() {
return (
<Container maxWidth="md">
<Typography style={{ textAlign: "center" }}>
Withdraw tokens from the Terra token bridge
</Typography>
<TerraWalletKey />
<FormControl className={classes.formControl}>
<InputLabel>Token</InputLabel>
<Select
value={token}
onChange={(event) => {
setToken(event.target.value as string);
}}
>
{SUPPORTED_TERRA_TOKENS.map((name) => (
<MenuItem key={name} value={name}>
{name}
</MenuItem>
))}
</Select>
<TerraFeeDenomPicker disabled={isLoading} />
<ButtonWithLoader
onClick={handleClick}
disabled={!wallet || isLoading}
showLoader={isLoading}
>
Withdraw
</ButtonWithLoader>
</FormControl>
<HeaderText white>Withdraw Tokens</HeaderText>
<Paper className={classes.mainPaper}>
<Typography style={{ textAlign: "center" }}>
Withdraw tokens from the Terra token bridge
</Typography>
<TerraWalletKey />
<FormControl className={classes.formControl}>
<InputLabel>Token</InputLabel>
<Select
value={token}
onChange={(event) => {
setToken(event.target.value as string);
}}
>
{SUPPORTED_TERRA_TOKENS.map((name) => (
<MenuItem key={name} value={name}>
{name}
</MenuItem>
))}
</Select>
<TerraFeeDenomPicker disabled={isLoading} />
<ButtonWithLoader
onClick={handleClick}
disabled={!wallet || isLoading}
showLoader={isLoading}
>
Withdraw
</ButtonWithLoader>
</FormControl>
</Paper>
</Container>
);
}

View File

@ -1,3 +1,3 @@
<svg width="26" height="19" viewBox="0 0 26 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22.3967 2.10679C20.1472 0.316323 16.588 0.0128823 16.4354 0.00226469C16.3194 -0.00717259 16.2034 0.0192786 16.1034 0.0779529C16.0033 0.136627 15.9242 0.224619 15.877 0.329735C15.8091 0.48074 15.7515 0.636067 15.7046 0.794675C17.1928 1.04335 19.0207 1.5435 20.6745 2.55832C20.7376 2.59703 20.7924 2.64765 20.8357 2.70728C20.879 2.76692 20.91 2.8344 20.9269 2.90588C20.9438 2.97736 20.9464 3.05144 20.9343 3.12388C20.9223 3.19633 20.896 3.26572 20.8568 3.3281C20.8177 3.39047 20.7665 3.44462 20.7061 3.48743C20.6458 3.53025 20.5776 3.5609 20.5053 3.57763C20.433 3.59437 20.358 3.59686 20.2848 3.58497C20.2115 3.57307 20.1413 3.54703 20.0782 3.50832C17.2352 1.76311 13.6845 1.6765 13 1.6765C12.3161 1.6765 8.76313 1.76367 5.92178 3.50776C5.85869 3.54647 5.78851 3.57252 5.71523 3.58441C5.64196 3.5963 5.56704 3.59381 5.49474 3.57707C5.34872 3.54328 5.22227 3.45352 5.1432 3.32754C5.06412 3.20156 5.0389 3.04969 5.07309 2.90532C5.10727 2.76096 5.19806 2.63594 5.32548 2.55776C6.9793 1.54573 8.80722 1.04335 10.2954 0.79691C10.2095 0.519734 10.1315 0.344823 10.1259 0.329735C10.0788 0.223877 9.99935 0.135308 9.89863 0.0765457C9.79792 0.0177834 9.68107 -0.00820096 9.56461 0.00226469C9.412 0.0134411 5.85283 0.316323 3.57217 2.13082C2.38239 3.21941 0 9.58495 0 15.0882C0 15.1866 0.0265652 15.2805 0.0751739 15.3654C1.7177 18.221 6.20213 18.967 7.22404 19H7.24157C7.33075 19.0002 7.41872 18.9796 7.49829 18.9398C7.57786 18.8999 7.64677 18.8421 7.69939 18.7709L8.73204 17.3649C5.94383 16.6535 4.51948 15.4442 4.43809 15.3721C4.32566 15.274 4.25726 15.1358 4.24793 14.9878C4.2386 14.8398 4.28911 14.6942 4.38835 14.5831C4.48758 14.4719 4.62742 14.4043 4.77709 14.3951C4.92676 14.3858 5.07401 14.4358 5.18643 14.5339C5.21922 14.5646 7.84239 16.7647 13 16.7647C18.1661 16.7647 20.7893 14.5557 20.8158 14.5339C20.9286 14.4365 21.0759 14.3873 21.2253 14.3971C21.3747 14.407 21.5141 14.4751 21.6128 14.5864C21.6616 14.6413 21.6991 14.7052 21.723 14.7744C21.7468 14.8436 21.7567 14.9167 21.752 14.9897C21.7473 15.0627 21.728 15.134 21.6954 15.1996C21.6628 15.2652 21.6174 15.3238 21.5619 15.3721C21.4805 15.4442 20.0562 16.6535 17.268 17.3649L18.3012 18.7709C18.3537 18.842 18.4226 18.8998 18.502 18.9396C18.5815 18.9795 18.6693 19.0001 18.7584 19H18.7754C19.7984 18.967 24.2823 18.2204 25.9254 15.3654C25.9734 15.2805 26 15.1866 26 15.0882C26 9.58495 23.6176 3.21997 22.3967 2.10679V2.10679ZM9.32609 12.8529C8.23296 12.8529 7.34783 11.8527 7.34783 10.6177C7.34783 9.38266 8.23296 8.38237 9.32609 8.38237C10.4192 8.38237 11.3043 9.38266 11.3043 10.6177C11.3043 11.8527 10.4192 12.8529 9.32609 12.8529ZM16.6739 12.8529C15.5808 12.8529 14.6957 11.8527 14.6957 10.6177C14.6957 9.38266 15.5808 8.38237 16.6739 8.38237C17.767 8.38237 18.6522 9.38266 18.6522 10.6177C18.6522 11.8527 17.767 12.8529 16.6739 12.8529Z" fill="#5A5A66"/>
<path d="M22.3967 2.10679C20.1472 0.316323 16.588 0.0128823 16.4354 0.00226469C16.3194 -0.00717259 16.2034 0.0192786 16.1034 0.0779529C16.0033 0.136627 15.9242 0.224619 15.877 0.329735C15.8091 0.48074 15.7515 0.636067 15.7046 0.794675C17.1928 1.04335 19.0207 1.5435 20.6745 2.55832C20.7376 2.59703 20.7924 2.64765 20.8357 2.70728C20.879 2.76692 20.91 2.8344 20.9269 2.90588C20.9438 2.97736 20.9464 3.05144 20.9343 3.12388C20.9223 3.19633 20.896 3.26572 20.8568 3.3281C20.8177 3.39047 20.7665 3.44462 20.7061 3.48743C20.6458 3.53025 20.5776 3.5609 20.5053 3.57763C20.433 3.59437 20.358 3.59686 20.2848 3.58497C20.2115 3.57307 20.1413 3.54703 20.0782 3.50832C17.2352 1.76311 13.6845 1.6765 13 1.6765C12.3161 1.6765 8.76313 1.76367 5.92178 3.50776C5.85869 3.54647 5.78851 3.57252 5.71523 3.58441C5.64196 3.5963 5.56704 3.59381 5.49474 3.57707C5.34872 3.54328 5.22227 3.45352 5.1432 3.32754C5.06412 3.20156 5.0389 3.04969 5.07309 2.90532C5.10727 2.76096 5.19806 2.63594 5.32548 2.55776C6.9793 1.54573 8.80722 1.04335 10.2954 0.79691C10.2095 0.519734 10.1315 0.344823 10.1259 0.329735C10.0788 0.223877 9.99935 0.135308 9.89863 0.0765457C9.79792 0.0177834 9.68107 -0.00820096 9.56461 0.00226469C9.412 0.0134411 5.85283 0.316323 3.57217 2.13082C2.38239 3.21941 0 9.58495 0 15.0882C0 15.1866 0.0265652 15.2805 0.0751739 15.3654C1.7177 18.221 6.20213 18.967 7.22404 19H7.24157C7.33075 19.0002 7.41872 18.9796 7.49829 18.9398C7.57786 18.8999 7.64677 18.8421 7.69939 18.7709L8.73204 17.3649C5.94383 16.6535 4.51948 15.4442 4.43809 15.3721C4.32566 15.274 4.25726 15.1358 4.24793 14.9878C4.2386 14.8398 4.28911 14.6942 4.38835 14.5831C4.48758 14.4719 4.62742 14.4043 4.77709 14.3951C4.92676 14.3858 5.07401 14.4358 5.18643 14.5339C5.21922 14.5646 7.84239 16.7647 13 16.7647C18.1661 16.7647 20.7893 14.5557 20.8158 14.5339C20.9286 14.4365 21.0759 14.3873 21.2253 14.3971C21.3747 14.407 21.5141 14.4751 21.6128 14.5864C21.6616 14.6413 21.6991 14.7052 21.723 14.7744C21.7468 14.8436 21.7567 14.9167 21.752 14.9897C21.7473 15.0627 21.728 15.134 21.6954 15.1996C21.6628 15.2652 21.6174 15.3238 21.5619 15.3721C21.4805 15.4442 20.0562 16.6535 17.268 17.3649L18.3012 18.7709C18.3537 18.842 18.4226 18.8998 18.502 18.9396C18.5815 18.9795 18.6693 19.0001 18.7584 19H18.7754C19.7984 18.967 24.2823 18.2204 25.9254 15.3654C25.9734 15.2805 26 15.1866 26 15.0882C26 9.58495 23.6176 3.21997 22.3967 2.10679V2.10679ZM9.32609 12.8529C8.23296 12.8529 7.34783 11.8527 7.34783 10.6177C7.34783 9.38266 8.23296 8.38237 9.32609 8.38237C10.4192 8.38237 11.3043 9.38266 11.3043 10.6177C11.3043 11.8527 10.4192 12.8529 9.32609 12.8529ZM16.6739 12.8529C15.5808 12.8529 14.6957 11.8527 14.6957 10.6177C14.6957 9.38266 15.5808 8.38237 16.6739 8.38237C17.767 8.38237 18.6522 9.38266 18.6522 10.6177C18.6522 11.8527 17.767 12.8529 16.6739 12.8529Z" fill="#FFFFFF"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -1,3 +1,3 @@
<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.5915 5.36061C18.6526 3.71151 17.3789 2.40591 15.7703 1.44353C14.1615 0.481094 12.4051 0 10.4999 0C8.59497 0 6.838 0.481241 5.22948 1.44353C3.62072 2.40586 2.34716 3.71151 1.40822 5.36061C0.469422 7.00966 0 8.81044 0 10.7629C0 13.1082 0.667524 15.2172 2.00291 17.0904C3.33815 18.9637 5.06308 20.26 7.17756 20.9794C7.42369 21.0262 7.6059 20.9933 7.72436 20.8814C7.84288 20.7694 7.90207 20.6291 7.90207 20.4611C7.90207 20.4331 7.89972 20.1809 7.89517 19.7043C7.89048 19.2278 7.88828 18.812 7.88828 18.4573L7.57381 18.513C7.37332 18.5507 7.12038 18.5666 6.81502 18.5621C6.5098 18.5577 6.19294 18.525 5.86487 18.464C5.53667 18.4036 5.2314 18.2634 4.94882 18.0439C4.6664 17.8243 4.4659 17.5369 4.34738 17.1821L4.21067 16.8596C4.11954 16.6449 3.97608 16.4064 3.78008 16.145C3.58409 15.8833 3.38589 15.7059 3.18539 15.6125L3.08967 15.5422C3.02589 15.4955 2.9667 15.4392 2.91197 15.3739C2.85728 15.3086 2.81634 15.2432 2.789 15.1777C2.76161 15.1122 2.7843 15.0584 2.85733 15.0163C2.93035 14.9741 3.06233 14.9536 3.25382 14.9536L3.52715 14.9955C3.70945 15.033 3.93494 15.1448 4.20392 15.3318C4.47275 15.5186 4.69374 15.7615 4.86694 16.0603C5.07668 16.4435 5.32937 16.7355 5.62573 16.9364C5.92186 17.1373 6.22042 17.2376 6.52115 17.2376C6.82187 17.2376 7.0816 17.2142 7.30043 17.1677C7.51903 17.121 7.72412 17.0507 7.91562 16.9574C7.99765 16.3311 8.22099 15.85 8.58544 15.5138C8.06598 15.4578 7.59895 15.3735 7.18412 15.2615C6.76953 15.1492 6.3411 14.9671 5.89911 14.7146C5.45689 14.4625 5.09004 14.1494 4.79846 13.7758C4.50684 13.4021 4.26751 12.9114 4.0808 12.3043C3.894 11.6969 3.80058 10.9962 3.80058 10.2021C3.80058 9.07138 4.16068 8.10919 4.88073 7.31498C4.54343 6.4649 4.57527 5.51194 4.97636 4.4562C5.24069 4.37201 5.63268 4.43519 6.15214 4.64533C6.6717 4.85556 7.0521 5.03566 7.29373 5.18498C7.53536 5.33425 7.72896 5.46075 7.87482 5.56334C8.72263 5.32051 9.59755 5.19907 10.4998 5.19907C11.4021 5.19907 12.2772 5.32051 13.125 5.56334L13.6445 5.22714C13.9998 5.00282 14.4193 4.79725 14.9021 4.61038C15.3852 4.4236 15.7546 4.37216 16.0099 4.45634C16.4199 5.51214 16.4564 6.46505 16.119 7.31513C16.839 8.10934 17.1993 9.07177 17.1993 10.2022C17.1993 10.9963 17.1055 11.6992 16.919 12.3113C16.7323 12.9234 16.4909 13.4136 16.1947 13.7828C15.8983 14.152 15.5291 14.4627 15.0871 14.7148C14.645 14.9671 14.2164 15.1492 13.8019 15.2614C13.3871 15.3736 12.92 15.4579 12.4006 15.514C12.8744 15.9343 13.1113 16.5977 13.1113 17.5039V20.4607C13.1113 20.6287 13.1683 20.7689 13.2823 20.881C13.3963 20.9929 13.5762 21.0258 13.8223 20.9789C15.9371 20.2597 17.662 18.9633 18.9972 17.09C20.3322 15.2168 21 13.1078 21 10.7625C20.9995 8.81029 20.5299 7.00966 19.5915 5.36061Z" fill="#5A5A66"/>
<path d="M19.5915 5.36061C18.6526 3.71151 17.3789 2.40591 15.7703 1.44353C14.1615 0.481094 12.4051 0 10.4999 0C8.59497 0 6.838 0.481241 5.22948 1.44353C3.62072 2.40586 2.34716 3.71151 1.40822 5.36061C0.469422 7.00966 0 8.81044 0 10.7629C0 13.1082 0.667524 15.2172 2.00291 17.0904C3.33815 18.9637 5.06308 20.26 7.17756 20.9794C7.42369 21.0262 7.6059 20.9933 7.72436 20.8814C7.84288 20.7694 7.90207 20.6291 7.90207 20.4611C7.90207 20.4331 7.89972 20.1809 7.89517 19.7043C7.89048 19.2278 7.88828 18.812 7.88828 18.4573L7.57381 18.513C7.37332 18.5507 7.12038 18.5666 6.81502 18.5621C6.5098 18.5577 6.19294 18.525 5.86487 18.464C5.53667 18.4036 5.2314 18.2634 4.94882 18.0439C4.6664 17.8243 4.4659 17.5369 4.34738 17.1821L4.21067 16.8596C4.11954 16.6449 3.97608 16.4064 3.78008 16.145C3.58409 15.8833 3.38589 15.7059 3.18539 15.6125L3.08967 15.5422C3.02589 15.4955 2.9667 15.4392 2.91197 15.3739C2.85728 15.3086 2.81634 15.2432 2.789 15.1777C2.76161 15.1122 2.7843 15.0584 2.85733 15.0163C2.93035 14.9741 3.06233 14.9536 3.25382 14.9536L3.52715 14.9955C3.70945 15.033 3.93494 15.1448 4.20392 15.3318C4.47275 15.5186 4.69374 15.7615 4.86694 16.0603C5.07668 16.4435 5.32937 16.7355 5.62573 16.9364C5.92186 17.1373 6.22042 17.2376 6.52115 17.2376C6.82187 17.2376 7.0816 17.2142 7.30043 17.1677C7.51903 17.121 7.72412 17.0507 7.91562 16.9574C7.99765 16.3311 8.22099 15.85 8.58544 15.5138C8.06598 15.4578 7.59895 15.3735 7.18412 15.2615C6.76953 15.1492 6.3411 14.9671 5.89911 14.7146C5.45689 14.4625 5.09004 14.1494 4.79846 13.7758C4.50684 13.4021 4.26751 12.9114 4.0808 12.3043C3.894 11.6969 3.80058 10.9962 3.80058 10.2021C3.80058 9.07138 4.16068 8.10919 4.88073 7.31498C4.54343 6.4649 4.57527 5.51194 4.97636 4.4562C5.24069 4.37201 5.63268 4.43519 6.15214 4.64533C6.6717 4.85556 7.0521 5.03566 7.29373 5.18498C7.53536 5.33425 7.72896 5.46075 7.87482 5.56334C8.72263 5.32051 9.59755 5.19907 10.4998 5.19907C11.4021 5.19907 12.2772 5.32051 13.125 5.56334L13.6445 5.22714C13.9998 5.00282 14.4193 4.79725 14.9021 4.61038C15.3852 4.4236 15.7546 4.37216 16.0099 4.45634C16.4199 5.51214 16.4564 6.46505 16.119 7.31513C16.839 8.10934 17.1993 9.07177 17.1993 10.2022C17.1993 10.9963 17.1055 11.6992 16.919 12.3113C16.7323 12.9234 16.4909 13.4136 16.1947 13.7828C15.8983 14.152 15.5291 14.4627 15.0871 14.7148C14.645 14.9671 14.2164 15.1492 13.8019 15.2614C13.3871 15.3736 12.92 15.4579 12.4006 15.514C12.8744 15.9343 13.1113 16.5977 13.1113 17.5039V20.4607C13.1113 20.6287 13.1683 20.7689 13.2823 20.881C13.3963 20.9929 13.5762 21.0258 13.8223 20.9789C15.9371 20.2597 17.662 18.9633 18.9972 17.09C20.3322 15.2168 21 13.1078 21 10.7625C20.9995 8.81029 20.5299 7.00966 19.5915 5.36061Z" fill="#FFFFFF"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -1 +1 @@
<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" fill="#5A5A66"><path d="M2.846 6.887c.03-.295-.083-.586-.303-.784l-2.24-2.7v-.403h6.958l5.378 11.795 4.728-11.795h6.633v.403l-1.916 1.837c-.165.126-.247.333-.213.538v13.498c-.034.204.048.411.213.537l1.871 1.837v.403h-9.412v-.403l1.939-1.882c.19-.19.19-.246.19-.537v-10.91l-5.389 13.688h-.728l-6.275-13.688v9.174c-.052.385.076.774.347 1.052l2.521 3.058v.404h-7.148v-.404l2.521-3.058c.27-.279.39-.67.325-1.052v-10.608z"/></svg>
<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" fill="#FFFFFF"><path d="M2.846 6.887c.03-.295-.083-.586-.303-.784l-2.24-2.7v-.403h6.958l5.378 11.795 4.728-11.795h6.633v.403l-1.916 1.837c-.165.126-.247.333-.213.538v13.498c-.034.204.048.411.213.537l1.871 1.837v.403h-9.412v-.403l1.939-1.882c.19-.19.19-.246.19-.537v-10.91l-5.389 13.688h-.728l-6.275-13.688v9.174c-.052.385.076.774.347 1.052l2.521 3.058v.404h-7.148v-.404l2.521-3.058c.27-.279.39-.67.325-1.052v-10.608z"/></svg>

Before

Width:  |  Height:  |  Size: 509 B

After

Width:  |  Height:  |  Size: 509 B

View File

@ -1,3 +1,3 @@
<svg width="24px" height="24px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<path fill="#5A5A66" d="M12,0c-6.626,0 -12,5.372 -12,12c0,6.627 5.374,12 12,12c6.627,0 12,-5.373 12,-12c0,-6.628 -5.373,-12 -12,-12Zm3.224,17.871c0.188,0.133 0.43,0.166 0.646,0.085c0.215,-0.082 0.374,-0.267 0.422,-0.491c0.507,-2.382 1.737,-8.412 2.198,-10.578c0.035,-0.164 -0.023,-0.334 -0.151,-0.443c-0.129,-0.109 -0.307,-0.14 -0.465,-0.082c-2.446,0.906 -9.979,3.732 -13.058,4.871c-0.195,0.073 -0.322,0.26 -0.316,0.467c0.007,0.206 0.146,0.385 0.346,0.445c1.381,0.413 3.193,0.988 3.193,0.988c0,0 0.847,2.558 1.288,3.858c0.056,0.164 0.184,0.292 0.352,0.336c0.169,0.044 0.348,-0.002 0.474,-0.121c0.709,-0.669 1.805,-1.704 1.805,-1.704c0,0 2.084,1.527 3.266,2.369Zm-6.423,-5.062l0.98,3.231l0.218,-2.046c0,0 3.783,-3.413 5.941,-5.358c0.063,-0.057 0.071,-0.153 0.019,-0.22c-0.052,-0.067 -0.148,-0.083 -0.219,-0.037c-2.5,1.596 -6.939,4.43 -6.939,4.43Z"/>
<path fill="#FFFFFF" d="M12,0c-6.626,0 -12,5.372 -12,12c0,6.627 5.374,12 12,12c6.627,0 12,-5.373 12,-12c0,-6.628 -5.373,-12 -12,-12Zm3.224,17.871c0.188,0.133 0.43,0.166 0.646,0.085c0.215,-0.082 0.374,-0.267 0.422,-0.491c0.507,-2.382 1.737,-8.412 2.198,-10.578c0.035,-0.164 -0.023,-0.334 -0.151,-0.443c-0.129,-0.109 -0.307,-0.14 -0.465,-0.082c-2.446,0.906 -9.979,3.732 -13.058,4.871c-0.195,0.073 -0.322,0.26 -0.316,0.467c0.007,0.206 0.146,0.385 0.346,0.445c1.381,0.413 3.193,0.988 3.193,0.988c0,0 0.847,2.558 1.288,3.858c0.056,0.164 0.184,0.292 0.352,0.336c0.169,0.044 0.348,-0.002 0.474,-0.121c0.709,-0.669 1.805,-1.704 1.805,-1.704c0,0 2.084,1.527 3.266,2.369Zm-6.423,-5.062l0.98,3.231l0.218,-2.046c0,0 3.783,-3.413 5.941,-5.358c0.063,-0.057 0.071,-0.153 0.019,-0.22c-0.052,-0.067 -0.148,-0.083 -0.219,-0.037c-2.5,1.596 -6.939,4.43 -6.939,4.43Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,3 +1,3 @@
<svg width="22" height="18" viewBox="0 0 22 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.8361 2.09102C21.0578 2.4457 20.2199 2.68554 19.3409 2.79271C20.2385 2.24157 20.9273 1.36765 21.2518 0.326603C20.4113 0.83692 19.4826 1.20818 18.4905 1.4072C17.6998 0.540936 16.5697 0 15.319 0C12.9207 0 10.975 1.99662 10.975 4.4589C10.975 4.80846 11.0123 5.14783 11.0869 5.47443C7.47527 5.28816 4.27389 3.51481 2.12928 0.813956C1.75506 1.47482 1.54122 2.24157 1.54122 3.05808C1.54122 4.60434 2.30831 5.96944 3.47448 6.76936C2.76334 6.74767 2.09199 6.54482 1.50517 6.21311V6.26797C1.50517 8.42916 3.00329 10.2319 4.99249 10.6401C4.62822 10.7447 4.24406 10.797 3.84746 10.797C3.56773 10.797 3.29421 10.7702 3.0294 10.7179C3.58265 12.4887 5.18644 13.7786 7.08862 13.813C5.60169 15.0097 3.72686 15.7229 1.69166 15.7229C1.34106 15.7229 0.994193 15.7025 0.654785 15.6616C2.5781 16.9247 4.8632 17.6634 7.31613 17.6634C15.3103 17.6634 19.6803 10.8698 19.6803 4.97687C19.6803 4.78295 19.6766 4.58903 19.6691 4.39893C20.5182 3.76997 21.2555 2.98536 21.8361 2.09102" fill="#5A5A66"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.8361 2.09102C21.0578 2.4457 20.2199 2.68554 19.3409 2.79271C20.2385 2.24157 20.9273 1.36765 21.2518 0.326603C20.4113 0.83692 19.4826 1.20818 18.4905 1.4072C17.6998 0.540936 16.5697 0 15.319 0C12.9207 0 10.975 1.99662 10.975 4.4589C10.975 4.80846 11.0123 5.14783 11.0869 5.47443C7.47527 5.28816 4.27389 3.51481 2.12928 0.813956C1.75506 1.47482 1.54122 2.24157 1.54122 3.05808C1.54122 4.60434 2.30831 5.96944 3.47448 6.76936C2.76334 6.74767 2.09199 6.54482 1.50517 6.21311V6.26797C1.50517 8.42916 3.00329 10.2319 4.99249 10.6401C4.62822 10.7447 4.24406 10.797 3.84746 10.797C3.56773 10.797 3.29421 10.7702 3.0294 10.7179C3.58265 12.4887 5.18644 13.7786 7.08862 13.813C5.60169 15.0097 3.72686 15.7229 1.69166 15.7229C1.34106 15.7229 0.994193 15.7025 0.654785 15.6616C2.5781 16.9247 4.8632 17.6634 7.31613 17.6634C15.3103 17.6634 19.6803 10.8698 19.6803 4.97687C19.6803 4.78295 19.6766 4.58903 19.6691 4.39893C20.5182 3.76997 21.2555 2.98536 21.8361 2.09102" fill="#FFFFFF"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 516 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 518 KiB

View File

@ -0,0 +1,406 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 980 340" style="enable-background:new 0 0 980 340;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<g id="DEheDG_00000153676261723795411780000002369580902332350652_">
<image style="overflow:visible;" width="396" height="396" id="DEheDG_00000126316747373202236450000009810552511758440620_" xlink:href="data:image/png;base64,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" transform="matrix(1.1163 0 0 1.1163 -18.9234 -52.2926)">
</image>
</g>
<path id="Path_1959_00000052792755343451489070000004291339162896681653_" class="st0" d="M436.31,161.18
c0,11.46-8.28,20.8-25.05,20.8h-17.62v21.81c-0.01,0.73-0.6,1.31-1.33,1.32h-6.08c-0.73-0.01-1.31-0.6-1.32-1.32v-62.08
c0.01-0.73,0.6-1.32,1.32-1.33h25.02C428.03,140.38,436.31,149.72,436.31,161.18 M427.16,161.18c0-7.35-4.43-13.37-17.62-13.37
h-15.89v26.74h15.89C422.72,174.55,427.16,168.56,427.16,161.18"/>
<path id="Path_1960_00000021811254220350427700000016070312431580167046_" class="st0" d="M542.22,172.75
c-0.17,18.23-15.09,32.86-33.32,32.69c-18.23-0.17-32.86-15.09-32.69-33.32c0.17-18.1,14.9-32.69,33-32.69
c17.98-0.25,32.76,14.12,33.01,32.1C542.23,171.94,542.23,172.35,542.22,172.75 M533.06,172.75c0-15.33-10-25.89-23.85-25.89
c-13.85,0-23.85,10.56-23.85,25.89s10.01,25.9,23.86,25.9C523.06,198.65,533.07,188.09,533.06,172.75"/>
<path id="Path_1961_00000031165820251459432980000003049885492742332035_" class="st0" d="M634.83,202.49
c0.58,0.66,0.51,1.67-0.15,2.25c-0.34,0.3-0.8,0.44-1.25,0.38h-6.24c-0.41-0.01-0.79-0.23-1.01-0.58l-15.65-23.61h-16.82v22.87
c-0.01,0.73-0.6,1.31-1.32,1.32h-6.08c-0.73-0.01-1.31-0.6-1.32-1.32v-62.09c0.01-0.73,0.6-1.31,1.32-1.32h23.96
c16.77,0,25.05,8.8,25.05,20.27c0,9.1-5.2,16.53-15.73,19.21L634.83,202.49z M608.54,173.49c13.19,0,17.62-5.47,17.62-12.84
c0-7.35-4.43-12.84-17.62-12.84h-14.83v25.69L608.54,173.49z"/>
<path id="Path_1962_00000012442356278247888120000002046210747481754288_" class="st0" d="M730.56,141.71v4.77
c-0.01,0.72-0.58,1.3-1.3,1.32h-22.45v55.98c-0.01,0.73-0.6,1.31-1.33,1.32h-6.07c-0.73-0.01-1.32-0.6-1.33-1.32v-55.98h-22.45
c-0.73-0.01-1.32-0.6-1.33-1.32v-4.78c0.01-0.73,0.6-1.31,1.33-1.32h53.62C729.98,140.41,730.55,140.99,730.56,141.71"/>
<path id="Path_1963_00000003103640084169809080000004277506351926831030_" class="st0" d="M821.78,205.12h-7.3
c-0.67,0.05-1.29-0.35-1.51-0.98l-7.06-16.31h-30.41l-7.56,16.31c-0.24,0.62-0.85,1.01-1.51,0.98h-6.47c-0.96,0-1.51-0.58-1.06-1.57
l29.93-63.25c0.24-0.62,0.85-1.01,1.51-0.98h2.12c0.66-0.02,1.26,0.37,1.51,0.98l28.78,63.25
C823.19,204.53,822.74,205.12,821.78,205.12 M802.87,180.82l-11.65-26.93l-12.47,26.93H802.87z"/>
<path id="Path_1964_00000127043798500334543370000001310799449449971619_" class="st0" d="M908.32,199.02v4.78
c0.04,0.69-0.49,1.29-1.19,1.32c-0.05,0-0.09,0-0.14,0h-43.17c-0.73-0.01-1.31-0.6-1.32-1.32v-62.09c0.01-0.73,0.6-1.31,1.32-1.32
h6.08c0.73,0.01,1.31,0.6,1.32,1.32v55.98h35.77c0.69-0.04,1.29,0.49,1.32,1.19C908.32,198.92,908.32,198.97,908.32,199.02"/>
<g>
<path class="st0" d="M563.85,231.75h8.06c3.87,0,7.68,1.02,7.68,5.39c0,2-1.11,3.74-2.38,4.5c1.78,0.79,3.2,2.09,3.2,4.92
c0,4.6-3.62,6.25-7.99,6.25h-8.57V231.75z M567.59,240.47h4.66c2.19,0,3.52-0.83,3.52-2.92c0-1.87-1.39-2.66-3.52-2.66h-4.66
V240.47z M567.59,249.67h4.98c2.66,0,4-0.98,4-3.11c0-2.19-1.33-3.05-4.19-3.05h-4.79V249.67z"/>
<path class="st0" d="M597.76,231.75l5.3,9.55l5.45-9.55h4.22l-7.87,13.13v7.93h-3.74v-7.99l-7.64-13.07H597.76z"/>
<path class="st0" d="M663.76,247.99l3.23-16.24h3.93l-4.98,21.06h-4.44l-3.58-16.08l-3.55,16.08h-4.47l-5.01-21.06h4.06l3.43,16.21
l3.39-16.21h4.34L663.76,247.99z"/>
<path class="st0" d="M695.1,253.19c-6.28,0-10.21-4.35-10.21-10.98c0-6.6,4.03-10.85,10.21-10.85c6.22,0,10.21,4.12,10.21,10.85
C705.32,248.97,701.29,253.19,695.1,253.19z M695.1,234.45c-3.55,0-6.34,2.54-6.34,7.77s2.79,7.9,6.34,7.9
c3.58,0,6.34-2.66,6.34-7.9S698.69,234.45,695.1,234.45z"/>
<path class="st0" d="M729.67,244.31c-0.38,0.03-0.76,0.03-1.17,0.03h-3.24v8.47h-3.81v-21.06h6.5c6.31,0,9.52,1.52,9.52,6.25
c0,2.76-1.36,4.66-4,5.61l4.89,9.2h-4.22L729.67,244.31z M725.27,234.89v6.38h3.33c3.2,0,5.04-0.67,5.04-3.24
c0-2.79-2.22-3.14-5.17-3.14H725.27z"/>
<path class="st0" d="M762.91,252.81l-5.33-16.62v16.62h-3.74v-21.06h5.93l5.11,16.43l5.04-16.43h5.87v21.06h-3.74v-16.62
l-5.33,16.62H762.91z"/>
<path class="st0" d="M810.46,231.75v21.06h-3.74v-9.26H796.5v9.26h-3.74v-21.06h3.74v8.69h10.21v-8.69H810.46z"/>
<path class="st0" d="M836.82,253.19c-6.28,0-10.21-4.35-10.21-10.98c0-6.6,4.03-10.85,10.21-10.85c6.22,0,10.21,4.12,10.21,10.85
C847.03,248.97,843,253.19,836.82,253.19z M836.82,234.45c-3.55,0-6.34,2.54-6.34,7.77s2.79,7.9,6.34,7.9
c3.58,0,6.34-2.66,6.34-7.9S840.4,234.45,836.82,234.45z"/>
<path class="st0" d="M866.92,249.67h10.75v3.14h-14.5v-21.06h3.74V249.67z"/>
<path class="st0" d="M892.51,231.75h15.13v3.14h-11.39v5.55h10.75v3.11h-10.75v6.12h11.39v3.14h-15.13V231.75z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 193 KiB

View File

@ -8,10 +8,12 @@ export const COLORS = {
greenWithTransparency: "rgba(10, 194, 175, 0.8)",
lightGreen: "rgba(51, 242, 223, 1)",
lightBlue: "#83b9fc",
nearBlack: "#000008",
nearBlack: "#17153f",
nearBlackWithMinorTransparency: "rgba(0,0,0,.25)",
red: "#aa0818",
darkRed: "#810612",
white: "#FFFFFF",
whiteWithTransparency: "rgba(255,255,255,.07)",
};
export const theme = responsiveFontSizes(
@ -22,9 +24,9 @@ export const theme = responsiveFontSizes(
default: COLORS.nearBlack,
paper: COLORS.nearBlack,
},
divider: COLORS.gray,
divider: COLORS.white,
text: {
primary: "rgba(255,255,255,0.98)",
primary: COLORS.white,
},
primary: {
main: COLORS.blueWithTransparency, // #0074FF
@ -39,9 +41,10 @@ export const theme = responsiveFontSizes(
},
},
typography: {
fontFamily: "'Sora', sans-serif",
fontFamily: "'Poppins', sans-serif",
fontSize: 13,
h1: {
fontWeight: "200",
fontWeight: "600",
},
h2: {
fontWeight: "200",
@ -74,19 +77,19 @@ export const theme = responsiveFontSizes(
},
MuiAccordion: {
root: {
backgroundColor: COLORS.nearBlackWithMinorTransparency,
backgroundColor: COLORS.whiteWithTransparency,
"&:before": {
display: "none",
},
},
rounded: {
"&:first-child": {
borderTopLeftRadius: "16px",
borderTopRightRadius: "16px",
borderTopLeftRadius: "28px",
borderTopRightRadius: "28px",
},
"&:last-child": {
borderBottomLeftRadius: "16px",
borderBottomRightRadius: "16px",
borderBottomLeftRadius: "28px",
borderBottomRightRadius: "28px",
},
},
},
@ -98,8 +101,12 @@ export const theme = responsiveFontSizes(
},
MuiButton: {
root: {
borderRadius: "5px",
textTransform: "none",
borderRadius: "22px",
letterSpacing: ".1em",
},
outlinedSizeSmall: {
padding: "6px 9px",
fontSize: "0.70rem",
},
},
MuiLink: {
@ -109,7 +116,8 @@ export const theme = responsiveFontSizes(
},
MuiPaper: {
rounded: {
borderRadius: "16px",
borderRadius: "28px",
backdropFilter: "blur(4px)",
},
},
MuiStepper: {
@ -120,9 +128,10 @@ export const theme = responsiveFontSizes(
},
MuiStep: {
root: {
backgroundColor: COLORS.nearBlackWithMinorTransparency,
borderRadius: "16px",
padding: 16,
backgroundColor: COLORS.whiteWithTransparency,
backdropFilter: "blur(4px)",
borderRadius: "28px",
padding: "32px 32px 16px",
},
},
MuiStepConnector: {
@ -133,27 +142,44 @@ export const theme = responsiveFontSizes(
MuiStepContent: {
root: {
borderLeftWidth: 0,
marginLeft: 0,
paddingLeft: 0,
},
},
MuiStepLabel: {
label: {
fontSize: 16,
fontWeight: "300",
"&.MuiStepLabel-active": {
fontWeight: "300",
},
"&.MuiStepLabel-completed": {
fontWeight: "300",
},
color: COLORS.white,
textTransform: "uppercase",
"&.MuiStepLabel-active": {},
"&.MuiStepLabel-completed": {},
},
},
MuiTabs: {
root: {
borderBottom: `1px solid ${COLORS.white}`,
},
indicator: {
height: "100%",
background: "linear-gradient(20deg, #f44b1b 0%, #eeb430 100%);",
zIndex: -1,
},
},
MuiTab: {
root: {
color: COLORS.white,
fontSize: 18,
fontWeight: "300",
fontWeight: "400",
padding: 12,
textTransform: "none",
},
textColorInherit: {
opacity: 1,
},
},
MuiTableCell: {
root: {
borderBottom: "none",
},
},
},
})