diff --git a/examples/next/next.config.js b/examples/next/next.config.js
index ce18e3f5e..d3856c246 100644
--- a/examples/next/next.config.js
+++ b/examples/next/next.config.js
@@ -1,4 +1,6 @@
/** @type {import('next').NextConfig} */
+const path = require("path");
+
const nextConfig = {
productionBrowserSourceMaps: true,
reactStrictMode: true,
@@ -24,6 +26,14 @@ const nextConfig = {
config.plugins.push(new WasmChunksFixPlugin());
}
+ config.resolve.alias = {
+ ...config.resolve.alias,
+ [path.resolve(__dirname, "src/assets")]: path.resolve(
+ path.dirname(require.resolve("@cartridge/ui")),
+ "assets",
+ ),
+ };
+
return config;
},
};
diff --git a/examples/next/tsconfig.json b/examples/next/tsconfig.json
index 818b09bf0..4da2c0125 100644
--- a/examples/next/tsconfig.json
+++ b/examples/next/tsconfig.json
@@ -21,6 +21,7 @@
"next-env.d.ts",
"**/*.ts",
"**/*.tsx",
+ "**/*.otf",
".next/types/**/*.ts",
"**/*.wasm"
],
diff --git a/package.json b/package.json
index 01a36fe40..7defb0711 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
},
"dependencies": {
"@cartridge/presets": "github:cartridge-gg/presets#c064e82",
- "@cartridge/ui": "github:cartridge-gg/ui#e5405d6",
+ "@cartridge/ui": "catalog:",
"tailwindcss": "catalog:",
"@graphql-codegen/cli": "^2.6.2",
"@graphql-codegen/typescript": "^2.4.8",
diff --git a/packages/keychain/src/components/activity.tsx b/packages/keychain/src/components/activity.tsx
index b65969766..133a616c3 100644
--- a/packages/keychain/src/components/activity.tsx
+++ b/packages/keychain/src/components/activity.tsx
@@ -1,3 +1,5 @@
+import { useCallback, useMemo, useState } from "react";
+import { Link } from "react-router-dom";
import {
ActivityAchievementCard,
ActivityCollectibleCard,
@@ -12,30 +14,10 @@ import {
import { cn } from "@cartridge/ui/utils";
import { useExplorer } from "@starknet-react/core";
import { useData } from "@/hooks/data";
-import { useCallback, useMemo, useState } from "react";
-import { Link } from "react-router-dom";
+import { CardProps } from "@/components/provider/data";
const OFFSET = 100;
-interface CardProps {
- variant: "token" | "collectible" | "game" | "achievement";
- key: string;
- transactionHash: string;
- amount: string;
- address: string;
- value: string;
- name: string;
- collection: string;
- image: string;
- title: string;
- website: string;
- certified: boolean;
- action: "send" | "receive" | "mint";
- timestamp: number;
- date: string;
- points?: number;
-}
-
export function Activity() {
const [cap, setCap] = useState(OFFSET);
const explorer = useExplorer();
@@ -66,8 +48,10 @@ export function Activity() {
{dates.map((current) => {
return (
-
{current}
-
+
+ {current}
+
+
{events
.filter((event) => event.date === current)
.map((props: CardProps, index: number) => {
@@ -75,16 +59,18 @@ export function Activity() {
case "token":
return (
);
@@ -99,8 +85,10 @@ export function Activity() {
name={props.name}
collection={props.collection}
address={props.address}
+ username={props.username}
image={props.image}
action={props.action}
+ timestamp={props.timestamp * 1000}
/>
);
@@ -112,10 +100,12 @@ export function Activity() {
target="_blank"
>
);
@@ -125,10 +115,12 @@ export function Activity() {
key={`${index}-${props.key}`}
title={"Achievement"}
topic={props.title}
- website={props.website}
image={props.image}
- certified={props.certified}
points={props.points || 0}
+ themeColor={props.color}
+ website={props.website}
+ certified={props.certified}
+ timestamp={props.timestamp * 1000}
/>
);
}
@@ -152,12 +144,12 @@ export function Activity() {
);
}
-const LoadingState = () => {
+export const LoadingState = ({ rowCount = 5 }: { rowCount?: number }) => {
return (
- {Array.from({ length: 20 }).map((_, index) => (
+ {Array.from({ length: rowCount }).map((_, index) => (
))}
@@ -165,7 +157,7 @@ const LoadingState = () => {
);
};
-const EmptyState = () => {
+export const EmptyState = () => {
return (
{events.map((props: CardProps, index: number) => (
diff --git a/packages/keychain/src/components/inventory/collection/collectible.tsx b/packages/keychain/src/components/inventory/collection/collectible.tsx
index ea83ece5c..8997f108b 100644
--- a/packages/keychain/src/components/inventory/collection/collectible.tsx
+++ b/packages/keychain/src/components/inventory/collection/collectible.tsx
@@ -65,6 +65,7 @@ export function Collectible() {
? asset.name
: `${asset.name} #${parseInt(BigInt(asset.tokenId).toString())}`
}
+ clickable
selectable={false}
images={[...asset.imageUrls, placeholder]}
totalCount={asset.amount}
diff --git a/packages/keychain/src/components/inventory/collection/collection-asset.tsx b/packages/keychain/src/components/inventory/collection/collection-asset.tsx
index e10197339..ca6953684 100644
--- a/packages/keychain/src/components/inventory/collection/collection-asset.tsx
+++ b/packages/keychain/src/components/inventory/collection/collection-asset.tsx
@@ -251,7 +251,7 @@ export function CollectionAsset() {
/>
{events.map((props: CardProps, index: number) => (
diff --git a/packages/keychain/src/components/inventory/collection/collection.tsx b/packages/keychain/src/components/inventory/collection/collection.tsx
index b46c89edf..9e2593854 100644
--- a/packages/keychain/src/components/inventory/collection/collection.tsx
+++ b/packages/keychain/src/components/inventory/collection/collection.tsx
@@ -260,6 +260,7 @@ function LazyAsset({
: `${asset.name} #${parseInt(BigInt(asset.tokenId).toString())}`
}
images={[...asset.imageUrls, placeholder]}
+ clickable
selectable
selected={isSelected}
listingCount={listingCount}
diff --git a/packages/keychain/src/components/inventory/collection/collections.tsx b/packages/keychain/src/components/inventory/collection/collections.tsx
index 288857137..e3d98df3a 100644
--- a/packages/keychain/src/components/inventory/collection/collections.tsx
+++ b/packages/keychain/src/components/inventory/collection/collections.tsx
@@ -51,6 +51,7 @@ export function Collections() {
totalCount={collection.totalCount}
listingCount={listingCount}
selectable={false}
+ clickable
/>
);
diff --git a/packages/keychain/src/components/inventory/token/token.tsx b/packages/keychain/src/components/inventory/token/token.tsx
index 726c0be7c..9f165ca11 100644
--- a/packages/keychain/src/components/inventory/token/token.tsx
+++ b/packages/keychain/src/components/inventory/token/token.tsx
@@ -16,12 +16,13 @@ import { useData } from "@/hooks/data";
import { getDate, isPublicChain, useCreditBalance } from "@cartridge/ui/utils";
import { useExplorer } from "@starknet-react/core";
import { constants, getChecksumAddress } from "starknet";
-import { useAccount } from "@/hooks/account";
+import { useAccount, useUsernames } from "@/hooks/account";
import { useToken } from "@/hooks/token";
import { useCallback, useMemo } from "react";
import { useConnection } from "@/hooks/connection";
import { useVersion } from "@/hooks/version";
import { useNavigation } from "@/context/navigation";
+import { EmptyState, LoadingState } from "@/components/activity";
export function Token() {
const { address } = useParams<{ address: string }>();
@@ -116,7 +117,7 @@ function ERC20() {
const accountAddress = account?.address || "";
const { controller } = useConnection();
const explorer = useExplorer();
- const { transfers } = useData();
+ const { transfers, status } = useData();
const { isControllerGte } = useVersion();
const chainId = constants.StarknetChainId.SN_MAIN; // Use mainnet as default
@@ -127,6 +128,22 @@ function ERC20() {
return isControllerGte("0.5.6");
}, [isControllerGte]);
+ const addresses = useMemo(() => {
+ const accounts =
+ transfers?.transfers?.items.flatMap((item) =>
+ item.transfers.reduce(
+ (acc, item) => [
+ ...acc,
+ `0x${BigInt(item.fromAddress).toString(16)}`,
+ `0x${BigInt(item.toAddress).toString(16)}`,
+ ],
+ [] as string[],
+ ),
+ ) ?? [];
+ return Array.from(new Set(accounts));
+ }, [transfers]);
+ const { getUsername } = useUsernames({ addresses });
+
const txs = useMemo(() => {
if (!transfers || !token?.metadata?.image) {
return [];
@@ -147,11 +164,14 @@ function ERC20() {
transactionHash: transfer.transactionHash,
amount: value,
to: transfer.toAddress,
+ toUsername: getUsername(transfer.toAddress),
from: transfer.fromAddress,
+ fromUsername: getUsername(transfer.fromAddress),
contractAddress: transfer.contractAddress,
symbol: transfer.symbol,
eventId: transfer.eventId,
date: date,
+ timestamp,
image,
action:
getChecksumAddress(transfer.fromAddress) ===
@@ -161,7 +181,7 @@ function ERC20() {
};
});
});
- }, [transfers, accountAddress, token?.metadata?.image]);
+ }, [transfers, accountAddress, getUsername, token?.metadata?.image]);
const to = useCallback(
(transactionHash: string) => {
@@ -185,44 +205,56 @@ function ERC20() {
chainId={chainId as constants.StarknetChainId}
/>
-
- {Object.entries(
- txs
- .filter((tx) => tx?.symbol === token.metadata.symbol)
- .reduce(
- (acc, tx) => {
- if (!acc[tx.date]) {
- acc[tx.date] = [];
- }
- acc[tx.date].push(tx);
- return acc;
- },
- {} as Record
,
- ),
- ).map(([date, transactions]) => (
-
-
- {date}
-
- {transactions.map((item) => (
-
-
-
- ))}
-
- ))}
-
+ {status === "loading" ? (
+
+ ) : status === "error" || !txs.length ? (
+
+ ) : (
+
+ {Object.entries(
+ txs
+ .filter((tx) => tx?.symbol === token.metadata.symbol)
+ .reduce(
+ (acc, tx) => {
+ if (!acc[tx.date]) {
+ acc[tx.date] = [];
+ }
+ acc[tx.date].push(tx);
+ return acc;
+ },
+ {} as Record
,
+ ),
+ ).map(([date, transactions]) => (
+
+
+ {date}
+
+ {transactions.map((item) => (
+
+
+
+ ))}
+
+ ))}
+
+ )}
{compatibility && controller && (
diff --git a/packages/keychain/src/components/provider/data.tsx b/packages/keychain/src/components/provider/data.tsx
index 7df8e8e3b..2c9b2c8d5 100644
--- a/packages/keychain/src/components/provider/data.tsx
+++ b/packages/keychain/src/components/provider/data.tsx
@@ -5,7 +5,7 @@ import {
useActivitiesQuery,
useTransfersQuery,
} from "@cartridge/ui/utils/api/cartridge";
-import { useAccount } from "@/hooks/account";
+import { useAccount, useUsernames } from "@/hooks/account";
import { useConnection, useControllerTheme } from "@/hooks/connection";
import { addAddressPadding, getChecksumAddress } from "starknet";
import { erc20Metadata } from "@cartridge/presets";
@@ -19,11 +19,13 @@ export interface CardProps {
transactionHash: string;
amount: string;
address: string;
+ username: string;
value: string;
name: string;
collection: string;
image: string;
title: string;
+ color: string;
website: string;
certified: boolean;
action: "send" | "receive" | "mint";
@@ -33,22 +35,38 @@ export interface CardProps {
}
export function DataProvider({ children }: { children: ReactNode }) {
- const theme = useControllerTheme();
+ const controllerTheme = useControllerTheme();
+ const theme = useMemo(
+ () => ({
+ color:
+ typeof controllerTheme?.colors?.primary == "string"
+ ? (controllerTheme?.colors?.primary as string)
+ : "#ffffff",
+ icon: controllerTheme?.icon ?? "",
+ certified: controllerTheme?.verified ?? false,
+ }),
+ [controllerTheme],
+ );
+
const [accountAddress, setAccountAddress] = useState(
undefined,
);
const account = useAccount();
- const address = account?.address || "";
+ const address = useMemo(
+ () => (account ? addAddressPadding(account.address) : ""),
+ [account],
+ );
const { project } = useConnection();
const projects = useMemo(() => {
const projects = project ? [project] : [];
- return projects.map((proejct) => {
+ return projects.map((project) => {
return {
- project: proejct,
+ project,
address,
limit: 0,
+ date: "",
};
});
}, [project, address]);
@@ -61,7 +79,7 @@ export function DataProvider({ children }: { children: ReactNode }) {
refetch: refetchTransfers,
} = useTransfersQuery(
{
- projects: projects.map((p) => ({ ...p, date: "" })),
+ projects,
},
{
queryKey: ["transfers", address, project],
@@ -76,7 +94,7 @@ export function DataProvider({ children }: { children: ReactNode }) {
refetch: refetchTransactions,
} = useActivitiesQuery(
{
- projects,
+ projects: projects.map((p) => ({ ...p, date: undefined })),
},
{
queryKey: ["activities", address, project],
@@ -86,12 +104,27 @@ export function DataProvider({ children }: { children: ReactNode }) {
);
const status = useMemo(() => {
- return transfersStatus === "loading" && activitiesStatus === "loading"
+ return transfersStatus === "loading" || activitiesStatus === "loading"
? "loading"
- : transfersStatus === "error" || activitiesStatus === "error"
+ : transfersStatus === "error" && activitiesStatus === "error"
? "error"
: "success";
}, [transfersStatus, activitiesStatus]);
+ const addresses = useMemo(() => {
+ const accounts =
+ transfers?.transfers?.items.flatMap((item) =>
+ item.transfers.reduce(
+ (acc, item) => [
+ ...acc,
+ `0x${BigInt(item.fromAddress).toString(16)}`,
+ `0x${BigInt(item.toAddress).toString(16)}`,
+ ],
+ [] as string[],
+ ),
+ ) ?? [];
+ return Array.from(new Set(accounts));
+ }, [transfers]);
+ const { getUsername } = useUsernames({ addresses });
const erc20s: CardProps[] = useMemo(() => {
return (
@@ -109,18 +142,26 @@ export function DataProvider({ children }: { children: ReactNode }) {
getChecksumAddress(transfer.contractAddress),
)?.logo_url ||
makeBlockie(getChecksumAddress(transfer.contractAddress));
- return {
+ const userAddress =
+ BigInt(transfer.fromAddress) === BigInt(address)
+ ? transfer.toAddress
+ : transfer.fromAddress;
+ const result: CardProps = {
variant: "token",
key: `${transfer.transactionHash}-${transfer.eventId}`,
contractAddress: transfer.contractAddress,
transactionHash: transfer.transactionHash,
amount: value,
- address:
- BigInt(transfer.fromAddress) === BigInt(address)
- ? transfer.toAddress
- : transfer.fromAddress,
+ address: userAddress,
+ username: getUsername(userAddress) ?? "",
value: "$-",
+ name: "",
+ collection: "",
image: image || "",
+ title: "",
+ color: theme.color,
+ website: "",
+ certified: theme.certified,
action:
BigInt(transfer.fromAddress) === 0n
? "mint"
@@ -129,11 +170,12 @@ export function DataProvider({ children }: { children: ReactNode }) {
: "receive",
timestamp: timestamp / 1000,
date: date,
- } as CardProps;
+ };
+ return result;
}),
) || []
);
- }, [transfers, address]);
+ }, [transfers, address, getUsername, theme]);
const erc721s: CardProps[] = useMemo(() => {
return (
@@ -157,20 +199,26 @@ export function DataProvider({ children }: { children: ReactNode }) {
attribute?.trait?.toLowerCase() === "name",
)?.value || metadata.name;
const image = `https://api.cartridge.gg/x/${item.meta.project}/torii/static/${addAddressPadding(transfer.contractAddress)}/${transfer.tokenId}/image`;
- return {
+ const userAddress =
+ BigInt(transfer.fromAddress) === BigInt(address)
+ ? transfer.toAddress
+ : transfer.fromAddress;
+ const result: CardProps = {
variant: "collectible",
key: `${transfer.transactionHash}-${transfer.eventId}`,
contractAddress: transfer.contractAddress,
transactionHash: transfer.transactionHash,
- name: name || "",
- collection: transfer.name,
amount: "",
- address:
- BigInt(transfer.fromAddress) === BigInt(address)
- ? transfer.toAddress
- : transfer.fromAddress,
+ address: userAddress,
+ username: getUsername(userAddress) ?? "",
value: "",
+ name: name || "",
+ collection: transfer.name,
image: image,
+ title: "",
+ color: theme.color,
+ website: "",
+ certified: theme.certified,
action:
BigInt(transfer.fromAddress) === 0n
? "mint"
@@ -179,11 +227,12 @@ export function DataProvider({ children }: { children: ReactNode }) {
: "receive",
timestamp: timestamp / 1000,
date: date,
- } as CardProps;
+ };
+ return result;
});
}) || []
);
- }, [transfers, address]);
+ }, [transfers, address, getUsername, theme]);
const actions: CardProps[] = useMemo(() => {
return (
@@ -192,18 +241,27 @@ export function DataProvider({ children }: { children: ReactNode }) {
({ transactionHash, contractAddress, entrypoint, executedAt }) => {
const timestamp = new Date(executedAt).getTime();
const date = getDate(timestamp);
- return {
+ const result: CardProps = {
variant: "game",
key: `${transactionHash}-${entrypoint}`,
contractAddress: contractAddress,
transactionHash: transactionHash,
+ amount: "",
+ address: "",
+ username: "",
+ value: "",
+ name: "",
+ collection: "",
+ image: theme.icon,
title: entrypoint.replace(/_/g, " "),
- image: theme?.icon || "",
+ color: theme.color,
website: "",
- certified: false,
+ certified: theme.certified,
+ action: "mint",
timestamp: timestamp / 1000,
date: date,
- } as CardProps;
+ };
+ return result;
},
),
) || []
@@ -215,27 +273,30 @@ export function DataProvider({ children }: { children: ReactNode }) {
.filter((item) => item.completed)
.map((item) => {
const date = getDate(item.timestamp * 1000);
- return {
+ const result: CardProps = {
variant: "achievement",
key: item.id,
- transactionHash: "",
contractAddress: "",
- title: item.title,
- image: item.icon,
- timestamp: item.timestamp,
- date: date,
- website: "",
- certified: false,
- points: item.earning,
+ transactionHash: "",
amount: "",
address: "",
+ username: "",
value: "",
name: "",
collection: "",
+ image: item.icon,
+ title: item.title,
+ color: theme.color,
+ website: "",
+ certified: theme.certified,
action: "mint",
- } as CardProps;
+ timestamp: item.timestamp,
+ date: date,
+ points: item.earning,
+ };
+ return result;
});
- }, [trophies]);
+ }, [trophies, theme]);
const events = useMemo(() => {
return [...erc20s, ...erc721s, ...actions, ...achievements].sort(
diff --git a/packages/keychain/src/hooks/account.ts b/packages/keychain/src/hooks/account.ts
index 99bd3479d..110fbdbb5 100644
--- a/packages/keychain/src/hooks/account.ts
+++ b/packages/keychain/src/hooks/account.ts
@@ -11,7 +11,7 @@ import {
useAddressByUsernameQuery,
} from "@cartridge/ui/utils/api/cartridge";
import base64url from "base64url";
-import { useEffect, useMemo, useState } from "react";
+import { useCallback, useEffect, useMemo, useState } from "react";
import { useMatch, useSearchParams } from "react-router-dom";
import { constants, getChecksumAddress } from "starknet";
import { useConnection } from "./connection";
@@ -271,12 +271,29 @@ export function useUsernames({ addresses }: { addresses: string[] }) {
{ enabled: addresses.length > 0 },
);
- return {
- usernames:
+ const usernames = useMemo(() => {
+ return (
data?.accounts?.edges?.map((edge) => ({
username: edge?.node?.username,
address: edge?.node?.controllers?.edges?.[0]?.node?.address,
- })) ?? [],
+ })) ?? []
+ );
+ }, [data]);
+
+ const getUsername = useCallback(
+ (adress: string | null | undefined) => {
+ return !adress
+ ? undefined
+ : usernames.find(
+ (user) => BigInt(user.address ?? "0x0") === BigInt(adress),
+ )?.username;
+ },
+ [usernames],
+ );
+
+ return {
+ usernames,
+ getUsername,
};
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9e299f513..6f4f066f4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -16,7 +16,7 @@ catalogs:
specifier: ^6.2.4
version: 6.2.4
'@cartridge/ui':
- specifier: github:cartridge-gg/ui#e5405d6
+ specifier: github:cartridge-gg/ui#431fb6f
version: 0.7.14-alpha.2
'@eslint/js':
specifier: ^9.18.0
@@ -165,8 +165,8 @@ importers:
specifier: github:cartridge-gg/presets#c064e82
version: https://codeload.github.com/cartridge-gg/presets/tar.gz/c064e82
'@cartridge/ui':
- specifier: github:cartridge-gg/ui#e5405d6
- version: https://codeload.github.com/cartridge-gg/ui/tar.gz/e5405d6(@types/react-dom@18.3.7(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sonner@2.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(starknet@8.5.4)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@16.18.11)(typescript@5.8.3)))(viem@2.28.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.4))
+ specifier: 'catalog:'
+ version: https://codeload.github.com/cartridge-gg/ui/tar.gz/431fb6f(@types/react-dom@18.3.7(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sonner@2.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(starknet@8.5.4)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@16.18.11)(typescript@5.8.3)))(viem@2.28.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.4))
'@graphql-codegen/cli':
specifier: ^2.6.2
version: 2.16.5(@babel/core@7.27.1)(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@16.18.11)(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.12.0)(typescript@5.8.3)(utf-8-validate@5.0.10)
@@ -246,7 +246,7 @@ importers:
version: link:../../packages/controller
'@cartridge/ui':
specifier: 'catalog:'
- version: https://codeload.github.com/cartridge-gg/ui/tar.gz/e5405d6(@types/react-dom@18.3.7(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sonner@2.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(starknet@8.5.4)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@18.19.87)(typescript@5.8.3)))(viem@2.28.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.4))
+ version: https://codeload.github.com/cartridge-gg/ui/tar.gz/431fb6f(@types/react-dom@18.3.7(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sonner@2.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(starknet@8.5.4)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@18.19.87)(typescript@5.8.3)))(viem@2.28.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.4))
'@starknet-react/chains':
specifier: ^5.0.1
version: 5.0.1
@@ -497,7 +497,7 @@ importers:
version: 5.14.0(rollup@4.40.2)
ts-jest:
specifier: ^29.2.5
- version: 29.3.2(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.4)(jest@29.7.0(@types/node@18.19.87)(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@18.19.87)(typescript@5.8.3)))(typescript@5.8.3)
+ version: 29.3.2(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(jest@29.7.0(@types/node@18.19.87)(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@18.19.87)(typescript@5.8.3)))(typescript@5.8.3)
tsup:
specifier: 'catalog:'
version: 8.4.0(@microsoft/api-extractor@7.52.6(@types/node@18.19.87))(@swc/core@1.11.24(@swc/helpers@0.5.17))(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.4)(typescript@5.8.3)(yaml@2.7.1)
@@ -570,7 +570,7 @@ importers:
version: 6.2.4
'@cartridge/ui':
specifier: 'catalog:'
- version: https://codeload.github.com/cartridge-gg/ui/tar.gz/e5405d6(@types/react-dom@18.3.7(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sonner@2.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(starknet@8.5.4)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@18.19.87)(typescript@5.8.3)))(viem@2.28.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.4))
+ version: https://codeload.github.com/cartridge-gg/ui/tar.gz/431fb6f(@types/react-dom@18.3.7(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sonner@2.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(starknet@8.5.4)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@18.19.87)(typescript@5.8.3)))(viem@2.28.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.4))
'@dojoengine/sdk':
specifier: 1.8.12
version: 1.8.12(@effect/platform@0.93.8(effect@3.19.8))(@opentelemetry/semantic-conventions@1.38.0)(@tanstack/react-query@5.75.0(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.20))(@types/react@18.3.20)(bufferutil@4.0.9)(get-starknet-core@4.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(starknet@8.5.4)(typescript@5.8.3)(use-sync-external-store@1.6.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@3.24.4)
@@ -1272,8 +1272,8 @@ packages:
resolution: {tarball: https://codeload.github.com/cartridge-gg/presets/tar.gz/c064e82}
version: 0.0.1
- '@cartridge/ui@https://codeload.github.com/cartridge-gg/ui/tar.gz/e5405d6':
- resolution: {tarball: https://codeload.github.com/cartridge-gg/ui/tar.gz/e5405d6}
+ '@cartridge/ui@https://codeload.github.com/cartridge-gg/ui/tar.gz/431fb6f':
+ resolution: {tarball: https://codeload.github.com/cartridge-gg/ui/tar.gz/431fb6f}
version: 0.7.14-alpha.2
peerDependencies:
react: ^18.2.0 || ^19.0.0
@@ -11243,7 +11243,7 @@ snapshots:
dependencies:
'@starknet-io/types-js': 0.8.4
- '@cartridge/ui@https://codeload.github.com/cartridge-gg/ui/tar.gz/e5405d6(@types/react-dom@18.3.7(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sonner@2.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(starknet@8.5.4)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@16.18.11)(typescript@5.8.3)))(viem@2.28.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.4))':
+ '@cartridge/ui@https://codeload.github.com/cartridge-gg/ui/tar.gz/431fb6f(@types/react-dom@18.3.7(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sonner@2.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(starknet@8.5.4)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@16.18.11)(typescript@5.8.3)))(viem@2.28.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.4))':
dependencies:
'@cartridge/presets': https://codeload.github.com/cartridge-gg/presets/tar.gz/90a5fe0
'@radix-ui/react-accordion': 1.2.1(@types/react-dom@18.3.7(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -11288,7 +11288,7 @@ snapshots:
- react-native
- tailwindcss
- '@cartridge/ui@https://codeload.github.com/cartridge-gg/ui/tar.gz/e5405d6(@types/react-dom@18.3.7(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sonner@2.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(starknet@8.5.4)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@18.19.87)(typescript@5.8.3)))(viem@2.28.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.4))':
+ '@cartridge/ui@https://codeload.github.com/cartridge-gg/ui/tar.gz/431fb6f(@types/react-dom@18.3.7(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sonner@2.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(starknet@8.5.4)(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@18.19.87)(typescript@5.8.3)))(viem@2.28.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.4))':
dependencies:
'@cartridge/presets': https://codeload.github.com/cartridge-gg/presets/tar.gz/90a5fe0
'@radix-ui/react-accordion': 1.2.1(@types/react-dom@18.3.7(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -22090,7 +22090,7 @@ snapshots:
ts-interface-checker@0.1.13: {}
- ts-jest@29.3.2(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.4)(jest@29.7.0(@types/node@18.19.87)(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@18.19.87)(typescript@5.8.3)))(typescript@5.8.3):
+ ts-jest@29.3.2(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(jest@29.7.0(@types/node@18.19.87)(ts-node@10.9.2(@swc/core@1.11.24(@swc/helpers@0.5.17))(@types/node@18.19.87)(typescript@5.8.3)))(typescript@5.8.3):
dependencies:
bs-logger: 0.2.6
ejs: 3.1.10
@@ -22109,7 +22109,6 @@ snapshots:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
babel-jest: 29.7.0(@babel/core@7.27.1)
- esbuild: 0.25.4
ts-log@2.2.7: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index a3ae26dfd..6172acd56 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -8,7 +8,7 @@ catalog:
"@cartridge/arcade": "0.3.12"
"@cartridge/controller-wasm": "0.9.4"
"@cartridge/penpal": "^6.2.4"
- "@cartridge/ui": "github:cartridge-gg/ui#e5405d6"
+ "@cartridge/ui": "github:cartridge-gg/ui#431fb6f"
"@eslint/js": "^9.18.0"
"@noble/curves": "^1.9.0"
"@noble/hashes": "^1.8.0"