@@ -74,76 +100,89 @@ function RecentTransfersUI(props: {
// biome-ignore lint/suspicious/noArrayIndexKey: EXPECTED
))
- : props.data.map((transfer) => (
+ : groupedData.map((group) => (
-
-
-
-
-
+ {/* From */}
+
+ {group.group.map((transfer) => (
+
+ ))}
-
-
-
- {tokenAmountFormatter.format(
- Number(
- toTokens(
- BigInt(transfer.amount),
- props.tokenMetadata.decimals,
- ),
- ),
- )}
-
-
- {props.tokenMetadata.symbol}
-
-
+
+ {/* To */}
+
+ {group.group.map((transfer) => (
+
+
+
+ ))}
-
- {formatDistanceToNow(
- new Date(
- transfer.block_timestamp.endsWith("Z")
- ? transfer.block_timestamp
- : `${transfer.block_timestamp}Z`,
- ),
- {
- addSuffix: true,
- },
- )}
+
+ {/* Amount */}
+
+ {group.group.map((transfer) => (
+
+
+
+ ))}
+
+ {/* timestamp */}
-
+
+ {/* transaction */}
+
+
))}
@@ -183,6 +222,34 @@ function RecentTransfersUI(props: {
);
}
+function timestamp(block_timestamp: string) {
+ return formatDistanceToNow(
+ new Date(
+ block_timestamp.endsWith("Z") ? block_timestamp : `${block_timestamp}Z`,
+ ),
+ {
+ addSuffix: true,
+ },
+ );
+}
+
+function TokenAmount(props: {
+ amount: string;
+ decimals: number;
+ symbol: string;
+}) {
+ return (
+
+
+ {tokenAmountFormatter.format(
+ Number(toTokens(BigInt(props.amount), props.decimals)),
+ )}
+
+ {props.symbol}
+
+ );
+}
+
function SkeletonRow() {
return (
@@ -199,7 +266,7 @@ function SkeletonRow() {
-
+
);
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_apis/create-token-on-bridge.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_apis/create-token-on-bridge.ts
new file mode 100644
index 00000000000..2d7eee9fef3
--- /dev/null
+++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_apis/create-token-on-bridge.ts
@@ -0,0 +1,23 @@
+import type { ThirdwebClient } from "thirdweb";
+import { isProd } from "@/constants/env-utils";
+
+export async function createTokenOnUniversalBridge(params: {
+ chainId: number;
+ tokenAddress: string;
+ client: ThirdwebClient;
+}) {
+ const domain = isProd ? "thirdweb.com" : "thirdweb-dev.com";
+ const res = await fetch(`https://bridge.${domain}/v1/tokens`, {
+ body: JSON.stringify({
+ chainId: params.chainId.toString(),
+ tokenAddress: params.tokenAddress,
+ }),
+ headers: {
+ "Content-Type": "application/json",
+ "x-client-id": params.client.clientId,
+ },
+ method: "POST",
+ });
+
+ return res;
+}
diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/step-card.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/step-card.tsx
index fa14752c80f..316ee8b824f 100644
--- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/step-card.tsx
+++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/tokens/create/_common/step-card.tsx
@@ -35,7 +35,7 @@ export function StepCard(props: {
{props.children}
{(props.prevButton || props.nextButton) && (
-
+
{props.prevButton && (