(
+ <>
+
(
background: `url(${shape})`,
backgroundRepeat: "no-repeat",
backgroundPosition: { xs: "center center", md: "right top -426px" },
- // backgroundSize: "cover",
width: "100%",
height: { xs: "100%", md: 540 },
+ bottom:0
}}
/>
+
(
>
Blog
+
+ Brand
+
(
+
+>
);
export default Footer;
diff --git a/explorer/src/components/GridWithCards.tsx b/explorer/src/components/GridWithCards.tsx
index 4e7a2aae1..61e4ac11a 100644
--- a/explorer/src/components/GridWithCards.tsx
+++ b/explorer/src/components/GridWithCards.tsx
@@ -1,3 +1,4 @@
+import { Block } from "@mui/icons-material";
import {
Card,
CardActionArea,
@@ -12,6 +13,7 @@ import { OutboundLink } from "gatsby-plugin-google-gtag";
import React from "react";
interface CardData {
+
key?: string;
src: string;
header: string;
@@ -19,6 +21,7 @@ interface CardData {
href?: string;
to?: string;
imgStyle?: React.CSSProperties | undefined;
+ size: number;
}
const GridWithCards = ({
@@ -56,17 +59,16 @@ const GridWithCards = ({
justifyContent="space-evenly"
sx={{ "& > .MuiGrid-item": { pt: { xs: 8.25, md: 5.25 } } }}
>
- {data.map(({ key, src, header, description, href, to, imgStyle }) => (
+ {data.map(({ key, src, header, description, size, href, to, imgStyle }) => (
div": {
+ display: 'flex',
+ flexDirection: 'column',
+ "& > *": {
+ width: '100%',
transition: { md: "300ms top" },
},
"&:hover > div": {
@@ -97,17 +102,18 @@ const GridWithCards = ({
sx={{
textAlign: { xs: "center", md: imgAlignMd },
position: "relative",
- right: { xs: null, md: imgOffsetRightMd },
+ marginRight: { xs: 'auto', md: imgOffsetRightMd },
+ marginLeft: { xs: 'auto' },
top: { xs: imgOffsetTopXs, md: imgOffsetTopMd },
- pb: { xs: imgPaddingBottomXs, md: imgPaddingBottomMd },
+ mb: { xs: imgPaddingBottomXs, md: imgPaddingBottomMd },
zIndex: 1,
+ width: size,
+ height: size,
}}
>
-
- {header}
-
+ {header}
{description}
diff --git a/explorer/src/components/HeroText.tsx b/explorer/src/components/HeroText.tsx
index 460711b3b..3d0649f61 100644
--- a/explorer/src/components/HeroText.tsx
+++ b/explorer/src/components/HeroText.tsx
@@ -15,7 +15,7 @@ const HeroText = ({
-
+
{Array.isArray(subtitleText) ? (
) : (
diff --git a/explorer/src/components/Layout.tsx b/explorer/src/components/Layout.tsx
index e0af63d14..5b4965e94 100644
--- a/explorer/src/components/Layout.tsx
+++ b/explorer/src/components/Layout.tsx
@@ -3,7 +3,7 @@ import Footer from "./Footer";
import NavBar from "./Navbar";
const Layout: React.FC = ({ children }) => (
-
+
{children}
diff --git a/explorer/src/components/Navbar.tsx b/explorer/src/components/Navbar.tsx
index ca2ccfb0e..ea7e69236 100644
--- a/explorer/src/components/Navbar.tsx
+++ b/explorer/src/components/Navbar.tsx
@@ -1,6 +1,8 @@
-import { AppBar, Box, Link, Toolbar } from "@mui/material";
+import { AppBar, Hidden, Button, Box, Link, Toolbar } from "@mui/material";
+import ArrowForward from "@mui/icons-material/ArrowForward";
import { Link as RouterLink } from "gatsby";
import React from "react";
+import { OutboundLink } from "gatsby-plugin-google-gtag";
import hamburger from "../images/hamburger.svg";
import { apps, blog, buidl, portal } from "../utils/urls";
import LogoLink from "./LogoLink";
@@ -9,6 +11,30 @@ const linkStyle = { ml: 3, textUnderlineOffset: 6 };
const linkActiveStyle = { textDecoration: "underline" };
const NavBar = () => (
+ <>
+
+ ImmuneFi bug bounty
+ }
+ >
+ Learn More
+
+
+
(
*/}
+
+ >
);
export default NavBar;
diff --git a/explorer/src/components/SEO.tsx b/explorer/src/components/SEO.tsx
index 3c5e59061..2a787a8b8 100644
--- a/explorer/src/components/SEO.tsx
+++ b/explorer/src/components/SEO.tsx
@@ -33,7 +33,7 @@ export function SEO({
const siteUrl = site.siteMetadata.siteUrl
const defaultTitle = site.siteMetadata?.defaultTitle
const twitterUsername = `@wormholecrypto`
- const socialImage = "/logo-and-name_social-card.png"
+ const socialImage = "/wormhole.png"
const socialImageWidth = '800'
const socialImageHeight = '400'
const image = `${siteUrl}${socialImage}`
@@ -180,6 +180,7 @@ export function SEO({
// metadata from props
.concat(meta)}
>
+
{children}
)
diff --git a/explorer/src/fonts/SuisseBPIntlAntique.woff2 b/explorer/src/fonts/SuisseBPIntlAntique.woff2
new file mode 100644
index 000000000..e829919ff
Binary files /dev/null and b/explorer/src/fonts/SuisseBPIntlAntique.woff2 differ
diff --git a/explorer/src/fonts/SuisseBPIntlBold.woff2 b/explorer/src/fonts/SuisseBPIntlBold.woff2
new file mode 100644
index 000000000..cad727171
Binary files /dev/null and b/explorer/src/fonts/SuisseBPIntlBold.woff2 differ
diff --git a/explorer/src/fonts/SuisseBPIntlLight.woff2 b/explorer/src/fonts/SuisseBPIntlLight.woff2
new file mode 100644
index 000000000..f9df88820
Binary files /dev/null and b/explorer/src/fonts/SuisseBPIntlLight.woff2 differ
diff --git a/explorer/src/fonts/SuisseBPIntlRegular.woff2 b/explorer/src/fonts/SuisseBPIntlRegular.woff2
new file mode 100644
index 000000000..4f1fb64b8
Binary files /dev/null and b/explorer/src/fonts/SuisseBPIntlRegular.woff2 differ
diff --git a/explorer/src/images/apps/swim.png b/explorer/src/images/apps/swim.png
index dbb072711..81b352a3d 100644
Binary files a/explorer/src/images/apps/swim.png and b/explorer/src/images/apps/swim.png differ
diff --git a/explorer/src/images/bg.svg b/explorer/src/images/bg.svg
new file mode 100644
index 000000000..c84dc8b09
--- /dev/null
+++ b/explorer/src/images/bg.svg
@@ -0,0 +1,28 @@
+
diff --git a/explorer/src/images/brand/gradient1.svg b/explorer/src/images/brand/gradient1.svg
new file mode 100644
index 000000000..9c3636af7
--- /dev/null
+++ b/explorer/src/images/brand/gradient1.svg
@@ -0,0 +1,19 @@
+
diff --git a/explorer/src/images/brand/gradient2.svg b/explorer/src/images/brand/gradient2.svg
new file mode 100644
index 000000000..bc440949f
--- /dev/null
+++ b/explorer/src/images/brand/gradient2.svg
@@ -0,0 +1,38 @@
+
diff --git a/explorer/src/images/brand/icons1.png b/explorer/src/images/brand/icons1.png
new file mode 100644
index 000000000..eec908614
Binary files /dev/null and b/explorer/src/images/brand/icons1.png differ
diff --git a/explorer/src/images/brand/icons2.svg b/explorer/src/images/brand/icons2.svg
new file mode 100644
index 000000000..f6ee6de9a
--- /dev/null
+++ b/explorer/src/images/brand/icons2.svg
@@ -0,0 +1,267 @@
+
diff --git a/explorer/src/images/brand/logo-name.svg b/explorer/src/images/brand/logo-name.svg
new file mode 100644
index 000000000..c30774509
--- /dev/null
+++ b/explorer/src/images/brand/logo-name.svg
@@ -0,0 +1,23 @@
+
diff --git a/explorer/src/images/brand/logo.svg b/explorer/src/images/brand/logo.svg
new file mode 100644
index 000000000..6df6bc5cd
--- /dev/null
+++ b/explorer/src/images/brand/logo.svg
@@ -0,0 +1,10 @@
+
diff --git a/explorer/src/images/brand/logos.svg b/explorer/src/images/brand/logos.svg
new file mode 100644
index 000000000..64447b994
--- /dev/null
+++ b/explorer/src/images/brand/logos.svg
@@ -0,0 +1,66 @@
+
diff --git a/explorer/src/images/brand/world.svg b/explorer/src/images/brand/world.svg
new file mode 100644
index 000000000..69e6d34f5
--- /dev/null
+++ b/explorer/src/images/brand/world.svg
@@ -0,0 +1,252 @@
+
+
+
diff --git a/explorer/src/images/brand/worm1.png b/explorer/src/images/brand/worm1.png
new file mode 100644
index 000000000..a2a525154
Binary files /dev/null and b/explorer/src/images/brand/worm1.png differ
diff --git a/explorer/src/images/brand/worm2.png b/explorer/src/images/brand/worm2.png
new file mode 100644
index 000000000..12e2347cd
Binary files /dev/null and b/explorer/src/images/brand/worm2.png differ
diff --git a/explorer/src/images/index/apps2.png b/explorer/src/images/index/apps2.png
new file mode 100644
index 000000000..a9af34755
Binary files /dev/null and b/explorer/src/images/index/apps2.png differ
diff --git a/explorer/src/images/index/portal.png b/explorer/src/images/index/portal.png
index b1fb851be..f6898efa3 100644
Binary files a/explorer/src/images/index/portal.png and b/explorer/src/images/index/portal.png differ
diff --git a/explorer/src/images/index/protocol.png b/explorer/src/images/index/protocol.png
new file mode 100644
index 000000000..ab5b2fb03
Binary files /dev/null and b/explorer/src/images/index/protocol.png differ
diff --git a/explorer/src/images/index/protocol_new.png b/explorer/src/images/index/protocol_new.png
new file mode 100644
index 000000000..60709a337
Binary files /dev/null and b/explorer/src/images/index/protocol_new.png differ
diff --git a/explorer/src/images/index/protocols.png b/explorer/src/images/index/protocols.png
deleted file mode 100644
index c84d4b46b..000000000
Binary files a/explorer/src/images/index/protocols.png and /dev/null differ
diff --git a/explorer/src/images/shape.png b/explorer/src/images/shape.png
new file mode 100644
index 000000000..7f11d5ad1
Binary files /dev/null and b/explorer/src/images/shape.png differ
diff --git a/explorer/src/images/shape2.png b/explorer/src/images/shape2.png
new file mode 100644
index 000000000..44153ba21
Binary files /dev/null and b/explorer/src/images/shape2.png differ
diff --git a/explorer/src/images/wormhole.png b/explorer/src/images/wormhole.png
new file mode 100644
index 000000000..1257fff21
Binary files /dev/null and b/explorer/src/images/wormhole.png differ
diff --git a/explorer/src/pages/apps.tsx b/explorer/src/pages/apps.tsx
index 0bc56304f..915fa2a39 100644
--- a/explorer/src/pages/apps.tsx
+++ b/explorer/src/pages/apps.tsx
@@ -15,6 +15,7 @@ import pyth from "../images/apps/pyth.png";
import swim from "../images/apps/swim.png";
import tiexo from "../images/apps/tiexo.png";
import shape1 from "../images/index/shape1.svg";
+import shape from "../images/shape.png";
const AppsPage = ({ location }: PageProps) => {
return (
@@ -25,6 +26,20 @@ const AppsPage = ({ location }: PageProps) => {
pathname={location.pathname}
/>
+
{
width: "100%",
height: 1155,
}}
+
/>
+
{
]}
/>
-
-
+
+
+
+
+
+
+
);
diff --git a/explorer/src/pages/brand.tsx b/explorer/src/pages/brand.tsx
new file mode 100644
index 000000000..84b775bc8
--- /dev/null
+++ b/explorer/src/pages/brand.tsx
@@ -0,0 +1,828 @@
+import * as React from "react";
+import { Box, Button, Grid, Typography } from "@mui/material";
+import ArrowCircleDownIcon from '@mui/icons-material/ArrowCircleDown';
+import { PageProps } from 'gatsby'
+import { OutboundLink } from "gatsby-plugin-google-gtag";
+import HeroText from "../components/HeroText";
+import Layout from "../components/Layout";
+import logos from "../images/brand/logos.svg";
+import world from "../images/brand/world.svg";
+import shape1 from "../images/index/shape1.svg";
+import { SEO } from "../components/SEO";
+import shapes from "../images/shape.png";
+import shapes2 from "../images/shape2.png";
+import icons1 from "../images/brand/icons1.png";
+import icons2 from "../images/brand/icons2.svg";
+import logo from "../images/brand/logo-name.svg";
+import logo2 from "../images/brand/logo.svg";
+import worm1 from "../images/brand/worm1.png";
+import worm2 from "../images/brand/worm2.png";
+import gradient1 from "../images/brand/gradient1.svg";
+import gradient2 from "../images/brand/gradient2.svg";
+import {
+ logopackage,
+ colors,
+ icons,
+ assets,
+ logonamesvg,
+ logonamepng,
+ logopng,
+ logosvg,
+ wormpng1,
+ wormpng2,
+ gradients,
+ gradient2svg,
+ contact
+} from "../utils/urls";
+
+const BrandPage = ({ location }: PageProps) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+ Brand {" "}
+
+ assets
+
+ Everything you need to show off Wormhole to the world.
+
+
+
+
+
+
+
+
+
+
+
+ World of {" "}
+
+
+ Wormhole
+
+
+
+ Combine the logo with a range of provided background colors and gradients to create the right feel.
+
+ }
+ >
+ LOGO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Give it {" "}
+
+
+ space
+
+
+
+ Please give Wormhole the space it needs by 1x, which represents the small circle in the Wormhole brand logo mark.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Color {" "}
+
+ palette
+
+ Mix and match from the color palette to fits your need.
+
+
+
+
+
+
+ PRIMARY
+
+
+
+
+ #E72850
+
+
+
+ #26276F
+
+
+
+ #5189C8
+
+
+
+ #374B92
+
+
+
+
+
+
+
+ GRADIENTS
+
+
+
+
+ GRADIENT 1
+
+
+
+ GRADIENT 2
+
+
+
+ GRADIENT 3
+
+
+
+ GRADIENT 4
+
+
+
+
+
+
+
+ ACCENTS
+
+
+
+
+ #FFCE00
+
+
+
+ GRADIENT 5
+
+
+
+ GRADIENT 6
+
+
+
+ GRADIENT 7
+
+
+
+
+
+
+
+
+
+
+ }
+ >
+ SVG
+
+
+
+
+
+
+
+
+
+ Iconography
+
+
+
+
+
+
+
+
+ PRIMARY
+
+
+
+
+
+
+
+ ALTERNATE
+
+
+
+
+
+
+
+ }
+ >
+ SVG
+
+
+
+
+
+
+
+
+
+
+
+ Get the {" "}
+
+ assets
+
+ Mix and match from the color palette to fits your need.
+ }
+ >
+ DOWNLOAD PACKAGE
+
+
+
+
+
+
+ }
+ >
+ PNG
+
+ }
+ >
+ SVG
+
+
+
+
+
+
+
+
+ }
+ >
+ PNG
+
+ }
+ >
+ SVG
+
+
+
+
+
+
+
+
+
+
+ }
+ >
+ PNG
+
+
+
+
+
+
+
+
+
+
+
+ }
+ >
+ PNG
+
+
+
+
+
+
+
+
+
+ }
+ >
+ PNG
+
+
+
+
+
+
+
+
+
+ }
+ >
+ PNG
+
+
+
+
+
+
+
+
+
+
+ {/*
+
+
+ Press {" "}
+
+ inquiries
+
+ Reach out to our team to get the information you need.
+
+ */}
+
+ );
+};
+
+export default BrandPage;
diff --git a/explorer/src/pages/buidl.tsx b/explorer/src/pages/buidl.tsx
index ba5e85c77..bda9e2e7b 100644
--- a/explorer/src/pages/buidl.tsx
+++ b/explorer/src/pages/buidl.tsx
@@ -16,6 +16,7 @@ import shape from "../images/buidl/shape.svg";
import stack from "../images/buidl/stack.svg";
import shape1 from "../images/index/shape1.svg";
import { SEO } from "../components/SEO";
+import shapes from "../images/shape.png";
const BuidlPage = ({ location }: PageProps) => {
return (
@@ -26,6 +27,20 @@ const BuidlPage = ({ location }: PageProps) => {
pathname={location.pathname}
/>
+
{
Bonding
-
-
-
-
-
-
-
- Integrate into{" "}
-
-
- every chain at once
-
-
-
- Wormhole SDK integrates your project with our generic
- messaging layer. Wormhole SDK makes it easier than ever for
- teams, apps, protocols, and users to move value seamlessly
- across networks without fees.
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
- Connecting projects{" "}
-
-
- to networks
-
-
-
- Six high-value networks, two centralized exchanges, and 19 dexes.
- Anyone in the community can add new networks to the protocol
- and build the future of blockchain.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- build
-
-
-
- Wormhole is built to be trust-minimized from the ground up
- with the networks secured by 19 equally weighted
- guardians in the core layer.
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ Integrate into{" "}
+
+
+ every chain at once
+
+
+
+ Wormhole SDK integrates your project with our generic
+ messaging layer. Wormhole SDK makes it easier than ever for
+ teams, apps, protocols, and users to move value seamlessly
+ across networks without fees.
+
+
+
+
+
-
-
-
-
-
- Send your message to Wormhole
-
-
-
-
-
-
-
- The Guardian network observes the transaction
-
-
-
-
-
-
-
- Quorum is achieved in seconds
-
-
-
-
-
-
-
- Guardians make your attested message publicly available.
-
-
-
-
-
-
-
- Access your message on a different chain
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+ Connecting projects{" "}
+
+
+ to networks
+
+
+
+ Six high-value networks, two centralized exchanges, and 19 dexes.
+ Anyone in the community can add new networks to the protocol
+ and build the future of blockchain.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ build
+
+
+
+ Wormhole is built to be trust-minimized from the ground up
+ with a group of six networks secured by 19 equally weighted
+ guardians in the core layer.
+
+
+
+
+
+
+
+
+
+
+
+ Send your message to Wormhole
+
+
+
+
+
+
+
+ The Guardian network observes the transaction
+
+
+
+
+
+
+
+ Quorum is achieved in seconds
+
+
+
+
+
+
+
+ Guardians make your attested message publicly available.
+
+
+
+
+
+
+
+ Access your message on a different chain
+
+
+
+
diff --git a/explorer/src/pages/explorer.tsx b/explorer/src/pages/explorer.tsx
index af7814290..901d8b3e5 100644
--- a/explorer/src/pages/explorer.tsx
+++ b/explorer/src/pages/explorer.tsx
@@ -8,6 +8,7 @@ import Layout from "../components/Layout";
import NetworkSelect from "../components/NetworkSelect";
import shape1 from "../images/index/shape1.svg";
import { SEO } from "../components/SEO";
+import shapes from "../images/shape.png";
interface ExplorerQueryValues {
@@ -70,6 +71,20 @@ const ExplorerPage = ({ location }: PageProps) => {
pathname={location.pathname}
/>
+
{
]}
/>
+
+
+
{
-
+
- {doneReadingQueryParams && <>
+ {doneReadingQueryParams && <>
-
+
- {!(emitterChain && emitterAddress && sequence) && // if there is no messageId query &&
- !txId && ( // if there is no transactionId query
-
- )}
+ {!(emitterChain && emitterAddress && sequence) && // if there is no messageId query &&
+ !txId && ( // if there is no transactionId query
+
+ )}
- >}
+ >}
+
);
diff --git a/explorer/src/pages/index.tsx b/explorer/src/pages/index.tsx
index 2a6f5b0f7..6e66597ae 100644
--- a/explorer/src/pages/index.tsx
+++ b/explorer/src/pages/index.tsx
@@ -1,29 +1,46 @@
import ArrowForward from "@mui/icons-material/ArrowForward";
-import { Box, Button, Typography } from "@mui/material";
+import { Box, Button, Grid, Typography } from "@mui/material";
import {
Link as RouterLink,
PageProps,
graphql,
useStaticQuery
} from "gatsby";
-import * as React from "react";
+import React, { useEffect, useState } from "react";
import GridWithCards from "../components/GridWithCards";
import HeroText from "../components/HeroText";
import Layout from "../components/Layout";
import { SEO } from "../components/SEO";
import { portal as portalUrl } from "../utils/urls";
-import apps from "../images/index/apps.png";
+
+import { gsap } from "gsap";
+import { ScrollTrigger } from "gsap/ScrollTrigger";
+
+import apps from "../images/index/apps2.png";
import blob from "../images/index/blob.svg";
import cross from "../images/index/cross.svg";
import cube from "../images/index/cube.svg";
import portal from "../images/index/portal.png";
-import protocols from "../images/index/protocols.png";
+import protocols from "../images/index/protocol_new.png";
import shape1 from "../images/index/shape1.svg";
+import shape from "../images/shape.png";
+import shape2 from "../images/shape2.png";
+import { Totals, NotionalTvl } from "../components/ExplorerStats/ExplorerStats";
+import { amountFormatter } from "../utils/explorer";
-const featuredNumber = { fontSize: 42, fontWeight: "bold" };
+const featuredNumber = { fontSize: 42, fontFamily: "Suisse BP Intl", fontWeight: "bold" };
+const statsBaseUrl = "https://europe-west3-wormhole-315720.cloudfunctions.net/mainnet-"
const IndexPage = ({ location }: PageProps) => {
const { site } = useStaticQuery(IndexStaticQuery)
+ const [tvl, setTvl] = useState(undefined)
+ const [messageTotal, setMessageTotal] = useState(undefined)
+
+ let statsInterval: NodeJS.Timer | undefined = undefined
+ const controller = new AbortController()
+ const { signal } = controller
+
+
const logo = {
"@type": "ImageObject",
"url": `${site.siteMetadata.siteUrl}/logo-and-name-stacked.png`,
@@ -69,6 +86,78 @@ const IndexPage = ({ location }: PageProps) => {
logo: logo
}
+ const headerImage = React.useRef(null);
+ const gradient1 = React.useRef(null);
+ const gradient2 = React.useRef(null);
+
+
+ function fetchStats() {
+ const tvlUrl = `${statsBaseUrl}notionaltvl`
+ const messagesUrl = `${statsBaseUrl}totals`
+
+ fetch(tvlUrl, { signal }).then((res) => {
+ if (res.ok) return res.json();
+ }).then((result: NotionalTvl) => {
+ setTvl(result.AllTime["*"]["*"].Notional);
+ }, (error) => {
+ if (error.name !== "AbortError") console.error("failed fetching notional TVL. error: ", error);
+ });
+ fetch(messagesUrl, { signal }).then((res) => {
+ if (res.ok) return res.json();
+ }).then((result: Totals) => {
+ setMessageTotal(result.TotalCount["*"]);
+ }, (error) => {
+ if (error.name !== "AbortError") console.error("failed fetching totals. error: ", error);
+ });
+ }
+
+ useEffect(() => {
+ statsInterval = setInterval(fetchStats, 30000)
+
+ gsap.registerPlugin(ScrollTrigger);
+
+
+ gsap.from(headerImage.current, {
+ scale: 1.1,
+ duration: 10,
+ delay: 1,
+ rotation: 3,
+ ease: "Power3.easeOut",
+ })
+
+ gsap.to(gradient1.current, {
+ scale: 1.2,
+ ease: "Power3.easeOut",
+ x: 300,
+ scrollTrigger: {
+ trigger: gradient1.current,
+ start: "-0% 0%",
+ end: "+=500",
+ scrub: 1,
+ },
+ })
+
+ gsap.from(gradient2.current, {
+ scale: 0.5,
+ ease: "Power3.easeOut",
+ scrollTrigger: {
+ trigger: gradient2.current,
+ start: "-50% 50%",
+ end: "+=1000",
+ scrub: 1,
+ },
+ })
+
+ return function cleanup() {
+ // clear any ongoing intervals
+ if (statsInterval) {
+ clearInterval(statsInterval);
+ }
+ // abort any in-flight requests
+ controller.abort();
+ }
+ }, [])
+
return (
{
{
justifyContent: "center",
}}
>
- {
borderTop: "1px solid white",
}}
>
- $1bn
+ ${amountFormatter(tvl)}
in TVL
-
+ }
{
7
chain integrations
- {
borderTop: "1px solid white",
}}
>
- 60k+
+
+ {amountFormatter(messageTotal, 0)}
+
txs
-
+ }
-
+
+
+
+
+
-
-
-
-
- Protocol:{" "}
-
-
- the core layer
-
-
-
- The foundation that an ecosystem of apps is built on top of.
-
- }
- >
- Learn More
-
-
-
-
+ />
+
+ sx={{
+ flexBasis: { xs: "100%", md: "40%" },
+ flexGrow: 1,
+ }}
+ >
+
+
+
+
+ Protocol:{" "}
+
+
+ the core layer
+
+
+
+ The foundation that an ecosystem of apps is built on top of.
+
+ }
+ >
+ Learn More
+
+
+
+
+
+
+
+
+
{
-
+
+
+
-
-
-
-
- Portal:{" "}
-
-
- a token bridge
-
-
-
- Never have to retrace your steps, with unlimited transfers
- across chains for tokens and NFTs wrapped by Wormhole.
-
- }
- >
- Learn More
-
+
+
+
+
+
+ Portal:{" "}
+
+
+ a token bridge
+
+
+
+ Never have to retrace your steps, with unlimited transfers
+ across chains for tokens and NFTs wrapped by Wormhole.
+
+ }
+ >
+ Learn More
+
+
-
-
-
+
+
+
+
@@ -335,7 +506,7 @@ const IndexPage = ({ location }: PageProps) => {
everything
-
+
Each blockchain has a distinct strength. Wormhole lets you get the
best out of every blockchain without compromise.
@@ -345,18 +516,21 @@ const IndexPage = ({ location }: PageProps) => {
data={[
{
src: cross,
+ size: 220,
header: "Never stop expanding",
description:
"Chains, information, and users are growing everyday. Build on a protocol that is set up to scale, with no limits, right from the start.",
},
{
src: blob,
+ size: 220,
header: "Explore and experiment",
description:
"Now is the time to explore and experiment. The only limit to what you're able to build is your imagination.",
},
{
src: cube,
+ size: 220,
header: "Power your project",
description:
"Join the growing list of projects that are composing, raising, and succeeding with Wormhole core layer.",
@@ -364,6 +538,7 @@ const IndexPage = ({ location }: PageProps) => {
]}
/>
+
);
};
diff --git a/explorer/src/pages/network.tsx b/explorer/src/pages/network.tsx
index 2a975d583..ec48251d7 100644
--- a/explorer/src/pages/network.tsx
+++ b/explorer/src/pages/network.tsx
@@ -29,6 +29,7 @@ import { ChainId } from "@certusone/wormhole-sdk";
import { KeyboardArrowDown, KeyboardArrowUp } from "@mui/icons-material";
import { ChainID } from "../utils/consts";
import { SEO } from "../components/SEO";
+import shapes from "../images/shape.png";
const GuardianRow = ({ hb }: { hb: Heartbeat }) => {
const [open, setOpen] = React.useState(false);
@@ -218,6 +219,20 @@ const NetworkPage = ({ location }: PageProps) => {
pathname={location.pathname}
/>
+
{
]}
/>
+
+
+
+
+
);
};
diff --git a/explorer/src/styles/global.css b/explorer/src/styles/global.css
new file mode 100644
index 000000000..7856667ce
--- /dev/null
+++ b/explorer/src/styles/global.css
@@ -0,0 +1,34 @@
+/* @font-face {
+ font-family: "Suisse BP Intl";
+ src: url('../fonts/SuisseBPIntlLight.woff2') format('woff2');
+ font-weight: 300;
+ font-style: normal;
+ font-display: swap;
+}
+
+@font-face {
+ font-family: "Suisse BP Intl Antique";
+ src: url('../fonts/SuisseBPIntlAntique.woff2') format('woff2');
+ font-weight: 600;
+ font-style: normal;
+ font-display: swap;
+} */
+
+@font-face {
+ font-family: "Suisse BP Intl";
+ src: url('../fonts/SuisseBPIntlBold.woff2') format('woff2');
+ font-weight: bold;
+ font-style: normal;
+ font-display: swap;
+}
+
+/* @font-face {
+ font-family: "Suisse BP Intl";
+ src: url('../fonts/SuisseBPIntlRegular.woff2') format('woff2');
+ font-weight: normal;
+ font-style: normal;
+ font-display: swap;
+} */
+
+
+
diff --git a/explorer/src/utils/urls.ts b/explorer/src/utils/urls.ts
index 7eeaa4672..476e3ce31 100644
--- a/explorer/src/utils/urls.ts
+++ b/explorer/src/utils/urls.ts
@@ -4,6 +4,7 @@ export const apps = "/apps/";
export const buidl = "/buidl/";
export const explorer = "/explorer/";
export const network = "/network/";
+export const brand = "/brand/";
// External
export const portal = "https://wormholebridge.com/";
@@ -14,3 +15,21 @@ export const discord = "https://discord.gg/wormholecrypto";
export const github = "https://github.com/certusone/wormhole";
export const telegram = "https://t.me/wormholecrypto";
export const twitter = "https://twitter.com/wormholecrypto";
+
+
+
+// Brand
+
+export const logopackage = "https://drive.google.com/drive/folders/13I4_XdW8D0c1wMT_W2pie1cm6B4-57l3?usp=sharing";
+export const colors = "https://drive.google.com/drive/folders/1GOUAh5gCG41mBXCiPDSIGzIEdM8pQTsW?usp=sharing";
+export const icons = "https://drive.google.com/drive/folders/1UKLfHPwmssU8WBnAQckWD_WFriq5ntuE?usp=sharing";
+export const assets = "https://drive.google.com/drive/folders/1r3lCaTT44SX2sOf2njuwO8GmWQQnAlhF?usp=sharing";
+export const logonamesvg = "https://drive.google.com/drive/folders/16urPGWs5mC9e9F0CKuZSwwdQe-R5cvZ8?usp=sharing";
+export const logonamepng = "https://drive.google.com/drive/folders/12Ayj3ya0oBKI-ohI-BBTbtFMREnpBJJj?usp=sharing";
+export const logopng = "https://drive.google.com/drive/folders/1Upxwp2l9PTsjhBy6kYGpjo0YeSB8h-r4?usp=sharing";
+export const logosvg = "https://drive.google.com/drive/folders/1DMBmdv4wL-k6keVFUXV8NC9krGOtx6xC?usp=sharing";
+export const wormpng1 = "https://drive.google.com/file/d/1mqbbfvKoUD61dT0ojcMB2t3qL19TYZml/view?usp=sharing";
+export const wormpng2 = "https://drive.google.com/file/d/1BuYdcOuVD9s9ZVPyQBr6DEHbXnPDYN9y/view?usp=sharing";
+export const gradients = "https://drive.google.com/drive/folders/1XWIL47NhrMB_eWRtm3AnWKnI4m_mNbl2?usp=sharing";
+export const gradient2svg = "https://drive.google.com/drive/folders/1ZBV1hJMjvd6BKYnNYRx92E_PK5rTpzbf?usp=sharing";
+export const contact = "https://wormholebridge.com/";