+
{Object.entries(nav)
@@ -20,9 +24,9 @@ export const LayerMenu: FC<{
setOpen(false)}
to={value.route}
- className="flex items-center gap-md text-main-12 capitalize">
-
-
+ className="flex items-center gap-md capitalize">
+
+
{key}
@@ -31,7 +35,18 @@ export const LayerMenu: FC<{
);
diff --git a/src/routes/_merkl.opportunity.$chain.$type.$id.tsx b/src/routes/_merkl.opportunity.$chain.$type.$id.tsx
index b6e179cc..f2f38b23 100644
--- a/src/routes/_merkl.opportunity.$chain.$type.$id.tsx
+++ b/src/routes/_merkl.opportunity.$chain.$type.$id.tsx
@@ -1,5 +1,9 @@
import type { Opportunity } from "@angleprotocol/merkl-api";
-import { type LoaderFunctionArgs, type MetaFunction, json } from "@remix-run/node";
+import {
+ type LoaderFunctionArgs,
+ type MetaFunction,
+ json,
+} from "@remix-run/node";
import { Meta, Outlet, useLoaderData } from "@remix-run/react";
import { useMemo } from "react";
import { ChainService } from "src/api/services/chain.service";
@@ -9,7 +13,9 @@ import Tag from "src/components/element/Tag";
import { ErrorHeading } from "src/components/layout/ErrorHeading";
import useOpportunity from "src/hooks/resources/useOpportunity";
-export async function loader({ params: { id, type, chain: chainId } }: LoaderFunctionArgs) {
+export async function loader({
+ params: { id, type, chain: chainId },
+}: LoaderFunctionArgs) {
if (!chainId || !id || !type) throw "";
const chain = await ChainService.get({ search: chainId });
@@ -43,22 +49,28 @@ export default function Index() {
return spaced
.map((str, index) => {
+ const key = str + crypto.randomUUID();
if (!str.match(/[\p{Letter}\p{Mark}]+/gu))
return [
-
+
{str}
,
];
if (str.includes("-"))
return str
.split("-")
- .flatMap((s, i, arr) => [s, i !== arr.length - 1 && -]);
+ .flatMap((s, i, arr) => [
+ s,
+ i !== arr.length - 1 && -,
+ ]);
if (str.includes("/"))
return str
.split("/")
- .flatMap((s, i, arr) => [s, i !== arr.length - 1 && /]);
- // biome-ignore lint/suspicious/noArrayIndexKey: required
- return [{str}];
+ .flatMap((s, i, arr) => [
+ s,
+ i !== arr.length - 1 && /,
+ ]);
+ return [{str}];
})
.flatMap((str, index, arr) => [str, index !== arr.length - 1 && " "]);
}, [opportunity]);
@@ -67,7 +79,7 @@ export default function Index() {
<>
({ src: t.icon }))}
+ icons={opportunity.tokens.map((t) => ({ src: t.icon }))}
navigation={{ label: "Back to opportunities", link: "/" }}
title={styleName}
description={description}
@@ -75,8 +87,15 @@ export default function Index() {
{ label: "Overview", link },
{ label: "Leaderboard", link: `${link}/leaderboard` },
]}
- tags={tags.map(tag => )}
- opportunity={opportunity}>
+ tags={tags.map((tag) => (
+
+ ))}
+ opportunity={opportunity}
+ >
>
diff --git a/src/routes/_merkl.user.$address.tsx b/src/routes/_merkl.user.$address.tsx
index 79732364..ebd63f51 100644
--- a/src/routes/_merkl.user.$address.tsx
+++ b/src/routes/_merkl.user.$address.tsx
@@ -17,7 +17,7 @@ export default function Index() {
$6k
-
+
Total earned
@@ -25,7 +25,7 @@ export default function Index() {
$1.2k
-
+
Earned today
@@ -33,7 +33,7 @@ export default function Index() {
$3k
-
+
Claimable