From 5ea57db14bd804fe090bae86285671ddd075d6ce Mon Sep 17 00:00:00 2001 From: Gerardo Nardelli Date: Thu, 3 Sep 2026 15:03:46 -0300 Subject: [PATCH 1/2] =?UTF-8?q?=E2=9C=A8=20strategies:=20add=20exa=20hyper?= =?UTF-8?q?lane=20bridge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- i18n/es/translation.json | 3 +++ pages/strategies.tsx | 25 ++++++++++++++++++++++++ public/img/strategies/hyperlane-logo.svg | 3 +++ 3 files changed, 31 insertions(+) create mode 100644 public/img/strategies/hyperlane-logo.svg diff --git a/i18n/es/translation.json b/i18n/es/translation.json index b20e5adfd..8a7d4abbc 100644 --- a/i18n/es/translation.json +++ b/i18n/es/translation.json @@ -432,6 +432,9 @@ "Provide liquidity to the EXA/wETH pool.": "Proporciona liquidez al pool EXA/wETH.", "Go to Velodrome": "Ir a Velodrome", "Bridge & Swap with Socket": "Bridge & Swap con Socket", + "Bridge EXA with Hyperlane": "Pase EXA con Hyperlane", + "Bridge your EXA tokens between OP Mainnet and Base, powered by Hyperlane.": "Pase sus tokens EXA entre OP Mainnet y Base, impulsado por Hyperlane.", + "Bridge EXA": "Pase EXA", "Seamlessly bridge and swap assets to OP Mainnet from many different networks.": "Pase y cambie activos de manera fluida a OP Mainnet desde muchas redes diferentes.", "Cross Network": "Multired", "Featured Strategies": "Estrategias Destacadas", diff --git a/pages/strategies.tsx b/pages/strategies.tsx index 86593766d..0c37ae5ad 100644 --- a/pages/strategies.tsx +++ b/pages/strategies.tsx @@ -422,6 +422,31 @@ const Strategies: NextPage = () => { const thirdPartyStrategies: (Strategy & { chainId?: number })[] = useMemo( () => [ + { + chainId: optimism.id, + title: t('Bridge EXA with Hyperlane'), + description: t('Bridge your EXA tokens between OP Mainnet and Base, powered by Hyperlane.'), + tags: [{ text: t('Cross Network') }, { text: t('Basic'), size: 'small' as const }], + button: ( + + + + ), + imgPath: '/img/strategies/hyperlane-logo.svg', + }, { title: t('Bridge & Swap with Socket'), description: t('Seamlessly bridge and swap assets to OP Mainnet from many different networks.'), diff --git a/public/img/strategies/hyperlane-logo.svg b/public/img/strategies/hyperlane-logo.svg new file mode 100644 index 000000000..1afc14de5 --- /dev/null +++ b/public/img/strategies/hyperlane-logo.svg @@ -0,0 +1,3 @@ + + + From 8e213993aec567fc7b9c767ad4173b5e2a938377 Mon Sep 17 00:00:00 2001 From: Gerardo Nardelli Date: Thu, 3 Sep 2026 16:27:49 -0300 Subject: [PATCH 2/2] =?UTF-8?q?=E2=9C=A8=20bridge:=20add=20exa=20hyperlane?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BridgeContent/HyperlaneBridge/index.tsx | 43 +++++++++++++++++++ components/BridgeContent/index.tsx | 7 +++ i18n/es/translation.json | 1 + pages/strategies.tsx | 5 ++- utils/const.ts | 2 + 5 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 components/BridgeContent/HyperlaneBridge/index.tsx diff --git a/components/BridgeContent/HyperlaneBridge/index.tsx b/components/BridgeContent/HyperlaneBridge/index.tsx new file mode 100644 index 000000000..ba729f847 --- /dev/null +++ b/components/BridgeContent/HyperlaneBridge/index.tsx @@ -0,0 +1,43 @@ +import React, { memo } from 'react'; +import { Box, Button, Typography } from '@mui/material'; +import OpenInNewIcon from '@mui/icons-material/OpenInNew'; +import { useTranslation } from 'react-i18next'; + +import { track } from 'utils/mixpanel'; +import { EXA_BRIDGE_URL } from 'utils/const'; + +const HyperlaneBridge = () => { + const { t } = useTranslation(); + + return ( + + + {t('Bridge your EXA tokens between OP Mainnet and Base, powered by Hyperlane.')} + + + + ); +}; + +export default memo(HyperlaneBridge); diff --git a/components/BridgeContent/index.tsx b/components/BridgeContent/index.tsx index 91283720e..2a9376f9b 100644 --- a/components/BridgeContent/index.tsx +++ b/components/BridgeContent/index.tsx @@ -6,6 +6,7 @@ import { ActiveRoute } from 'types/Bridge'; import { useWeb3 } from 'hooks/useWeb3'; import { fetchActiveRoutes } from './utils'; import SocketTxHistory from './SocketTxHistory'; +import HyperlaneBridge from './HyperlaneBridge'; const BridgeContent = () => { const [activeRoutes, setActiveRoutes] = useState(); @@ -26,6 +27,12 @@ const BridgeContent = () => { return ( + + + {t('EXA Token Bridge')} + + + {t('Bridge & Swap')} diff --git a/i18n/es/translation.json b/i18n/es/translation.json index 8a7d4abbc..1566c991d 100644 --- a/i18n/es/translation.json +++ b/i18n/es/translation.json @@ -435,6 +435,7 @@ "Bridge EXA with Hyperlane": "Pase EXA con Hyperlane", "Bridge your EXA tokens between OP Mainnet and Base, powered by Hyperlane.": "Pase sus tokens EXA entre OP Mainnet y Base, impulsado por Hyperlane.", "Bridge EXA": "Pase EXA", + "EXA Token Bridge": "EXA Token Bridge", "Seamlessly bridge and swap assets to OP Mainnet from many different networks.": "Pase y cambie activos de manera fluida a OP Mainnet desde muchas redes diferentes.", "Cross Network": "Multired", "Featured Strategies": "Estrategias Destacadas", diff --git a/pages/strategies.tsx b/pages/strategies.tsx index 0c37ae5ad..6a27533e2 100644 --- a/pages/strategies.tsx +++ b/pages/strategies.tsx @@ -23,6 +23,7 @@ import { useWeb3 } from 'hooks/useWeb3'; import FeaturedStrategies from 'components/strategies/FeaturedStrategies'; import { useModal } from '../contexts/ModalContext'; import { track } from 'utils/mixpanel'; +import { EXA_BRIDGE_URL } from 'utils/const'; const Strategies: NextPage = () => { const { t } = useTranslation(); @@ -428,7 +429,7 @@ const Strategies: NextPage = () => { description: t('Bridge your EXA tokens between OP Mainnet and Base, powered by Hyperlane.'), tags: [{ text: t('Cross Network') }, { text: t('Basic'), size: 'small' as const }], button: ( - +