On-Ramps are not endorsed by Arbitrum. Please use at your own risk.
);
@@ -208,6 +210,7 @@ function OnrampDisclaimer() {
function OnrampServicePanel() {
const pathname = usePathname();
const onrampService = pathname.split('/').pop();
+ const allOnrampServices = onrampServices.map((service) => service.slug);
switch (onrampService) {
case 'moonpay':
@@ -215,6 +218,8 @@ function OnrampServicePanel() {
return null;
}
return
diff --git a/packages/arb-token-bridge-ui/src/components/BuyPanel/Homepage.tsx b/packages/arb-token-bridge-ui/src/components/BuyPanel/Homepage.tsx
index 25374d129..b3c2e0ad4 100644
--- a/packages/arb-token-bridge-ui/src/components/BuyPanel/Homepage.tsx
+++ b/packages/arb-token-bridge-ui/src/components/BuyPanel/Homepage.tsx
@@ -1,116 +1,57 @@
import { ArrowUpRightIcon } from '@heroicons/react/24/outline';
import Image from 'next/image';
import Link from 'next/link';
-import { usePathname } from 'next/navigation';
+import { usePathname, useRouter, useSearchParams } from 'next/navigation';
import { useCallback } from 'react';
import { twMerge } from 'tailwind-merge';
-import { ChainId } from '@/bridge/types/ChainId';
import MoonPay from '@/images/onramp/moonpay.svg';
import { Button } from '../common/Button';
+import { onrampServices } from './utils';
-const onrampServices = [
- {
- name: 'Transak',
- slug: 'transak',
- logo: '/images/onramp/transak.webp',
- link: 'https://global.transak.com',
- chains: [ChainId.Ethereum, ChainId.ArbitrumOne],
- },
- {
- name: 'Ramp',
- slug: 'ramp',
- logo: '/images/onramp/ramp.webp',
- link: 'https://ramp.network/buy',
- chains: [ChainId.Ethereum, ChainId.ArbitrumOne],
- },
- {
- name: 'Mt Pelerin',
- slug: 'mt-pelerin',
- logo: '/images/onramp/mt_pelerin.webp',
- link: 'https://www.mtpelerin.com/buy-crypto',
- chains: [ChainId.Ethereum, ChainId.ArbitrumOne],
- },
- {
- name: 'Coinbase Pay',
- slug: 'coinbase-pay',
- logo: '/images/onramp/coinbase.webp',
- link: 'https://login.coinbase.com/signin?client_id=258660e1-9cfe-4202-9eda-d3beedb3e118&oauth_challenge=851bae2a-c907-413d-9a12-71c1dfaa5d4f',
- chains: [ChainId.Ethereum, ChainId.ArbitrumOne],
- },
- {
- name: 'Onramp',
- slug: 'onramp',
- logo: '/images/onramp/onramp.webp',
- link: 'https://onramp.money',
- chains: [ChainId.Ethereum, ChainId.ArbitrumOne],
- },
- {
- name: 'Banxa',
- slug: 'banxa',
- logo: '/images/onramp/banxa.webp',
- link: 'https://checkout.banxa.com',
- chains: [ChainId.Ethereum, ChainId.ArbitrumOne],
- },
- {
- name: 'Simplex',
- slug: 'simplex',
- logo: '/images/onramp/simplex.webp',
- link: 'https://buy.simplex.com',
- chains: [ChainId.Ethereum],
- },
- {
- name: 'Kado',
- slug: 'kado',
- logo: '/images/onramp/kado.webp',
- link: 'https://swapped.com/',
- chains: [ChainId.Ethereum, ChainId.ArbitrumOne],
- },
- {
- name: 'Alchemy Pay',
- slug: 'alchemy-pay',
- logo: '/images/onramp/alchemy_pay.webp',
- link: 'https://ramp.alchemypay.org/#/index',
- chains: [ChainId.Ethereum, ChainId.ArbitrumOne],
- },
-] as const;
-
-function OnrampServiceTile({ name, logo }: { name: string; logo: string }) {
- const openDetails = useCallback(() => {}, []);
+function OnrampServiceTile({ name, logo, slug }: { name: string; logo: string; slug: string }) {
+ const pathname = usePathname();
+ const searchParams = useSearchParams();
return (
-
+
);
}
function MoonPayTile() {
const pathname = usePathname();
+ const searchParams = useSearchParams();
return (
@@ -126,12 +67,28 @@ function MoonPayTile() {
}
export function Homepage() {
+ const router = useRouter();
+
+ const allOnrampOnClick = useCallback(() => {
+ router.push(
+ '/projects?chains=arbitrum-one_arbitrum-nova_apechain_cheese_degen_ebi-xyz_pop-apex_reya_sanko_xai_xchain&subcategories=fiat-on-ramp',
+ );
+ }, [router]);
+
return (
{onrampServices.map((service) => (
))}
+
+ See all on-ramps
+
);
}
diff --git a/packages/arb-token-bridge-ui/src/components/BuyPanel/LinkoutOnrampPanel.tsx b/packages/arb-token-bridge-ui/src/components/BuyPanel/LinkoutOnrampPanel.tsx
new file mode 100644
index 000000000..c934c0d2e
--- /dev/null
+++ b/packages/arb-token-bridge-ui/src/components/BuyPanel/LinkoutOnrampPanel.tsx
@@ -0,0 +1,54 @@
+import { ArrowUpRightIcon } from '@heroicons/react/24/outline';
+import Image from 'next/image';
+import { twMerge } from 'tailwind-merge';
+
+import { useMode } from '@/bridge/hooks/useMode';
+
+import { Button } from '../common/Button';
+import { ExternalLink } from '../common/ExternalLink';
+import { BackButton } from './BackButton';
+import { onrampServices } from './utils';
+
+export function LinkoutOnrampPanel({ serviceSlug }: { serviceSlug: string }) {
+ const { embedMode } = useMode();
+ const service = onrampServices.find((s) => s.slug === serviceSlug);
+
+ if (!service) {
+ return null;
+ }
+
+ return (
+
+
+
+
+
+
+
{service.name}
+
+ Buy and transfer instantly using your debit card, bank account with Thirdweb{' '}
+ {service.name}.
+
+
+
+
+ div>span]:flex [&>div>span]:flex-row [&>div>span]:justify-center [&>div>span]:items-center [&>div>span]:gap-2',
+ )}
+ >
+ Buy or transfer with {service.name}
+
+
+
+
+
+ );
+}
diff --git a/packages/arb-token-bridge-ui/src/components/BuyPanel/MoonPayPanel.tsx b/packages/arb-token-bridge-ui/src/components/BuyPanel/MoonPayPanel.tsx
index 03a227c99..1d9679626 100644
--- a/packages/arb-token-bridge-ui/src/components/BuyPanel/MoonPayPanel.tsx
+++ b/packages/arb-token-bridge-ui/src/components/BuyPanel/MoonPayPanel.tsx
@@ -1,17 +1,14 @@
-import { ChevronLeftIcon } from '@heroicons/react/24/outline';
import dynamic from 'next/dynamic';
-import Link from 'next/link';
-import React, { PropsWithChildren, memo, useCallback } from 'react';
+import { PropsWithChildren, memo, useCallback } from 'react';
import { twMerge } from 'tailwind-merge';
import { useAccount } from 'wagmi';
-import { PathnameEnum } from '@/bridge/constants';
import { useMode } from '@/bridge/hooks/useMode';
import { getAPIBaseUrl } from '../../util';
import { isOnrampServiceEnabled } from '../../util/featureFlag';
-import { Button } from '../common/Button';
import { SafeImage } from '../common/SafeImage';
+import { BackButton } from './BackButton';
export function MoonPaySkeleton({ children }: PropsWithChildren) {
const { embedMode } = useMode();
@@ -52,18 +49,7 @@ export function MoonPaySkeleton({ children }: PropsWithChildren) {
>
{children}
-