Skip to content

Commit

Permalink
Feat/lifi (#53)
Browse files Browse the repository at this point in the history
* wip lifi modal

* bun lock update

* feat: add bridge functionality and update widget configuration
  • Loading branch information
hugolxt authored Dec 23, 2024
1 parent 2cc8a24 commit 22304dc
Show file tree
Hide file tree
Showing 7 changed files with 106 additions and 9 deletions.
Binary file modified bun.lockb
Binary file not shown.
10 changes: 5 additions & 5 deletions merkl.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,11 @@ export default createConfig({
route: "/protocols",
key: uuidv4(),
},
// bridge: {
// icon: "RiCompassesLine",
// route: "/bridge",
// key: uuidv4(),
// },
bridge: {
icon: "RiCompassesLine",
route: "/bridge",
key: uuidv4(),
},
docs: {
icon: "RiFile4Fill",
external: true,
Expand Down
5 changes: 2 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,14 @@
"serve": "remix-serve ./build/server/index.js",
"typecheck": "tsc"
},
"workspaces": [
"packages/*"
],
"workspaces": ["packages/*"],
"dependencies": {
"@acab/ecsstatic": "^0.8.0",
"@ariakit/react": "^0.4.12",
"@elysiajs/eden": "^1.1.3",
"@emotion/css": "^11.13.4",
"@merkl/api": "0.10.203",
"@lifi/widget": "^3.13.1",
"@radix-ui/react-accordion": "^1.2.1",
"@radix-ui/react-scroll-area": "^1.2.0",
"@remix-run/dev": "^2.11.2",
Expand Down
4 changes: 4 additions & 0 deletions src/I18n/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ const en = {
title: "Explore opportunities",
description: "Browse opportunities, compare rewards, and earn tokens",
},
bridge: {
title: "Bridge funds",
description: "Bridge assets effortlessly between blockchains and power your DeFi journey",
},
},
};

Expand Down
71 changes: 71 additions & 0 deletions src/components/composite/LiFiWidget.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import { type WidgetConfig, WidgetSkeleton } from "@lifi/widget";
import { Suspense, lazy } from "react";

const LiFiWidgetLazy = lazy(async () => {
const module = await import("@lifi/widget");

return { default: module.LiFiWidget };
});

export function LiFiWidget() {
const config: Partial<WidgetConfig> = {
variant: "wide",
subvariant: "default",
appearance: "dark",
theme: {
palette: {
primary: {
main: "#ff9954",
},
secondary: {
main: "#85b1ff",
},
background: {
default: "#0d2252",
paper: "#071534",
},
text: {
primary: "#dfefff",
secondary: "#85b1ff",
},
error: {
main: "#ff4e4e",
},
info: {
main: "#2f6cff",
},
common: {
white: "#dfefff",
black: "#0f1732",
},
grey: {
200: "#d6eaff",
300: "#85b1ff",
700: "#2f6cff",
800: "#0746ec",
},
},
typography: {
fontFamily: "Inter, sans-serif",
},
container: {
boxShadow: "0px 8px 32px rgba(0, 0, 0, 0.08)",
borderRadius: "16px",
},
shape: {
borderRadius: 8,
borderRadiusSecondary: 60,
},
},
fromChain: 1,
toChain: 324,
fromToken: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC
toToken: "0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4", // USDC
};

return (
<Suspense fallback={<WidgetSkeleton config={config} />}>
<LiFiWidgetLazy config={config} integrator="Merkl" />
</Suspense>
);
}
1 change: 0 additions & 1 deletion src/routes/_merkl.(home).(opportunities).tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ export const clientLoader = Cache.wrap("opportunities", 300);

export default function Index() {
const { opportunities, chains, count, protocols } = useLoaderData<typeof loader>();

return (
<Container>
<Space size="md" />
Expand Down
24 changes: 24 additions & 0 deletions src/routes/_merkl.bridge.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { Group } from "@ariakit/react";
import type { MetaFunction } from "@remix-run/node";
import { ClientOnly } from "remix-utils/client-only";
import { I18n } from "src/I18n";
import Hero from "src/components/composite/Hero";
import { LiFiWidget } from "src/components/composite/LiFiWidget";

export const meta: MetaFunction = () => {
return [{ title: "Merkl" }];
};

export default function Index() {
return (
<Hero
icons={[{ remix: "RiPlanetFill" }]}
navigation={{ label: "Back to opportunities", link: "/" }}
title={I18n.trad.get.pages.bridge.title}
description={I18n.trad.get.pages.bridge.description}>
<Group className="my-xl">
<ClientOnly>{() => <LiFiWidget />}</ClientOnly>
</Group>
</Hero>
);
}

0 comments on commit 22304dc

Please sign in to comment.