diff --git a/.vscode/settings.json b/.vscode/settings.json
index cb65c624a45..119c7599e9b 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -24,5 +24,8 @@
},
"[javascript]": {
"editor.defaultFormatter": "biomejs.biome"
+ },
+ "[css]": {
+ "editor.defaultFormatter": "biomejs.biome"
}
}
diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json
index 9aee2c9facd..7c5ac32296e 100644
--- a/apps/dashboard/package.json
+++ b/apps/dashboard/package.json
@@ -78,8 +78,6 @@
"papaparse": "^5.4.1",
"pluralize": "^8.0.0",
"posthog-js": "1.67.1",
- "prism-react-renderer": "^2.3.1",
- "prismjs": "^1.29.0",
"qrcode": "^1.5.3",
"react": "19.0.0-rc-69d4b800-20241021",
"react-children-utilities": "^2.10.0",
@@ -94,6 +92,7 @@
"recharts": "^2.13.3",
"remark-gfm": "^4.0.0",
"server-only": "^0.0.1",
+ "shiki": "1.22.2",
"sonner": "^1.7.0",
"spdx-correct": "^3.2.0",
"swagger-ui-react": "^5.17.14",
diff --git a/apps/dashboard/src/@/components/ui/CodeBlock.tsx b/apps/dashboard/src/@/components/ui/CodeBlock.tsx
deleted file mode 100644
index 0f7beefbfa5..00000000000
--- a/apps/dashboard/src/@/components/ui/CodeBlock.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import { Highlight } from "prism-react-renderer";
-import { cn } from "../../lib/utils";
-import { CopyButton } from "./CopyButton";
-import { Card } from "./card";
-
-interface CodeBlockProps {
- code: string;
- language?: string;
- className?: string;
- canCopy?: boolean;
-}
-
-export const CodeBlock = ({
- code,
- language = "sh",
- canCopy = true,
-}: CodeBlockProps) => {
- return (
-
- {({ className, tokens, getLineProps, getTokenProps }) => (
-
- {canCopy && (
-
- )}
-
-
- {tokens.map((line, i) => (
- // biome-ignore lint/suspicious/noArrayIndexKey: index IS the key here
-
- {line.map((token, key) => (
- // biome-ignore lint/suspicious/noArrayIndexKey: index IS the key here
-
- ))}
-
- ))}
-
-
- )}
-
- );
-};
diff --git a/apps/dashboard/src/@/components/ui/code.tsx b/apps/dashboard/src/@/components/ui/code.tsx
deleted file mode 100644
index 876b87b4896..00000000000
--- a/apps/dashboard/src/@/components/ui/code.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-"use client";
-
-import { useClipboard } from "hooks/useClipboard";
-import { CheckIcon, CopyIcon } from "lucide-react";
-import { cn } from "../../lib/utils";
-import { Button } from "./button";
-
-export function PlainTextCodeBlock(props: {
- code: string;
- copyButtonClassName?: string;
-}) {
- const { hasCopied, onCopy } = useClipboard(props.code);
-
- return (
-
-
- {props.code}
-
-
- {hasCopied ? (
-
- ) : (
-
- )}
-
-
- );
-}
diff --git a/apps/dashboard/src/@/components/ui/code/RenderCode.tsx b/apps/dashboard/src/@/components/ui/code/RenderCode.tsx
new file mode 100644
index 00000000000..dad2918b8e9
--- /dev/null
+++ b/apps/dashboard/src/@/components/ui/code/RenderCode.tsx
@@ -0,0 +1,70 @@
+import { ScrollShadow } from "@/components/ui/ScrollShadow/ScrollShadow";
+import { Button } from "@/components/ui/button";
+import { ToolTipLabel } from "@/components/ui/tooltip";
+import { cn } from "@/lib/utils";
+import { CheckIcon, CopyIcon } from "lucide-react";
+import { useState } from "react";
+
+export function RenderCode(props: {
+ code: string;
+ html: string;
+ className?: string;
+ scrollableClassName?: string;
+}) {
+ return (
+
+ );
+}
+
+function CopyButton(props: {
+ text: string;
+ className?: string;
+ iconClassName?: string;
+}) {
+ const [isCopied, setIsCopied] = useState(false);
+ return (
+
+ {
+ navigator.clipboard.writeText(props.text);
+ setIsCopied(true);
+ setTimeout(() => setIsCopied(false), 1000);
+ }}
+ >
+ {isCopied ? (
+
+ ) : (
+
+ )}
+
+
+ );
+}
diff --git a/apps/dashboard/src/@/components/ui/code/code.client.tsx b/apps/dashboard/src/@/components/ui/code/code.client.tsx
new file mode 100644
index 00000000000..927181c597b
--- /dev/null
+++ b/apps/dashboard/src/@/components/ui/code/code.client.tsx
@@ -0,0 +1,57 @@
+"use client";
+
+import { cn } from "@/lib/utils";
+import { keepPreviousData, useQuery } from "@tanstack/react-query";
+import type { BundledLanguage } from "shiki";
+import { Spinner } from "../../ui/Spinner/Spinner";
+import { RenderCode } from "./RenderCode";
+import { getCodeHtml } from "./getCodeHtml";
+
+export type CodeProps = {
+ code: string;
+ lang: BundledLanguage;
+ className?: string;
+ scrollableClassName?: string;
+ loadingClassName?: string;
+ keepPreviousDataOnCodeChange?: boolean;
+};
+
+export const CodeClient: React.FC = ({
+ code,
+ lang,
+ className,
+ scrollableClassName,
+ loadingClassName,
+ keepPreviousDataOnCodeChange = false,
+}) => {
+ const codeQuery = useQuery({
+ queryKey: ["html", code],
+ queryFn: () => getCodeHtml(code, lang),
+ placeholderData: keepPreviousDataOnCodeChange
+ ? keepPreviousData
+ : undefined,
+ retry: false,
+ });
+
+ if (!codeQuery.data) {
+ return (
+
+
+
+ );
+ }
+
+ return (
+
+ );
+};
diff --git a/apps/dashboard/src/@/components/ui/code/code.server.tsx b/apps/dashboard/src/@/components/ui/code/code.server.tsx
new file mode 100644
index 00000000000..12446f1a0ed
--- /dev/null
+++ b/apps/dashboard/src/@/components/ui/code/code.server.tsx
@@ -0,0 +1,18 @@
+import type { BundledLanguage } from "shiki";
+import { RenderCode } from "./RenderCode";
+import { getCodeHtml } from "./getCodeHtml";
+
+export type CodeProps = {
+ code: string;
+ lang: BundledLanguage;
+ className?: string;
+};
+
+export const CodeServer: React.FC = async ({
+ code,
+ lang,
+ className,
+}) => {
+ const { html, formattedCode } = await getCodeHtml(code, lang);
+ return ;
+};
diff --git a/apps/dashboard/src/@/components/ui/code/code.stories.tsx b/apps/dashboard/src/@/components/ui/code/code.stories.tsx
new file mode 100644
index 00000000000..b364a29be49
--- /dev/null
+++ b/apps/dashboard/src/@/components/ui/code/code.stories.tsx
@@ -0,0 +1,115 @@
+import type { Meta, StoryObj } from "@storybook/react";
+import { BadgeContainer, mobileViewport } from "stories/utils";
+import { CodeClient } from "./code.client";
+
+const meta = {
+ title: "code/lang",
+ component: Component,
+ parameters: {},
+} satisfies Meta;
+
+export default meta;
+type Story = StoryObj;
+
+export const Desktop: Story = {
+ args: {},
+};
+
+export const Mobile: Story = {
+ args: {},
+ parameters: {
+ viewport: mobileViewport("iphone14"),
+ },
+};
+
+const tsCode = `\
+type User = {
+ name: string;
+ age: number;
+}
+
+function logUser(user: User) {
+ console.log(user)
+}
+`;
+
+const jsCode = `\
+import { getContract } from "thirdweb";
+import { sepolia } from "thirdweb/chains";
+import { getOwnedNFTs } from "thirdweb/extensions/erc1155";
+
+const contract = getContract({
+ client,
+ address: "0x1234...",
+ chain: sepolia,
+});
+`;
+
+const jsxCode = `\
+import { ThirdwebProvider } from "thirdweb/react";
+
+function Main() {
+ return (
+
+
+
+ );
+}`;
+
+const tsxCode = `\
+type User = {
+ name: string;
+ age: number;
+}
+
+function UserInfo(props: { user: User }) {
+ return {props.user.name}
+}
+`;
+
+const tsxCodeWithFormError = `\
+// This piece of code has invalid syntax and can't be formatted by prettier
+// this should not crash the page - and be rendered as is without formatting
+// the format error is logged in console
+
+type User = // missing { here
+ name: string;
+ age: number;
+}
+
+function UserInfo(props: { user: User }) {
+ return {props.user.name}
+}
+`;
+
+const bashCode = "pnpm i thirdweb";
+
+function Component() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/apps/dashboard/src/@/components/ui/code/getCodeHtml.tsx b/apps/dashboard/src/@/components/ui/code/getCodeHtml.tsx
new file mode 100644
index 00000000000..e87e2410f70
--- /dev/null
+++ b/apps/dashboard/src/@/components/ui/code/getCodeHtml.tsx
@@ -0,0 +1,45 @@
+import * as parserBabel from "prettier/plugins/babel";
+import * as estree from "prettier/plugins/estree";
+import { format } from "prettier/standalone";
+import { type BundledLanguage, codeToHtml } from "shiki";
+
+function isPrettierSupportedLang(lang: BundledLanguage) {
+ return (
+ lang === "js" ||
+ lang === "jsx" ||
+ lang === "ts" ||
+ lang === "tsx" ||
+ lang === "javascript" ||
+ lang === "typescript" ||
+ lang === "css" ||
+ lang === "json"
+ );
+}
+
+export async function getCodeHtml(code: string, lang: BundledLanguage) {
+ const formattedCode = isPrettierSupportedLang(lang)
+ ? await format(code, {
+ parser: "babel-ts",
+ plugins: [parserBabel, estree],
+ printWidth: 60,
+ }).catch((e) => {
+ console.error(e);
+ console.error("Failed to format code");
+ console.log({
+ code,
+ lang,
+ });
+ return code;
+ })
+ : code;
+
+ const html = await codeToHtml(formattedCode, {
+ lang: lang,
+ themes: {
+ light: "github-light",
+ dark: "github-dark-default",
+ },
+ });
+
+ return { html, formattedCode };
+}
diff --git a/apps/dashboard/src/@/components/ui/code/plaintext-code.stories.tsx b/apps/dashboard/src/@/components/ui/code/plaintext-code.stories.tsx
new file mode 100644
index 00000000000..6e29ffe3043
--- /dev/null
+++ b/apps/dashboard/src/@/components/ui/code/plaintext-code.stories.tsx
@@ -0,0 +1,52 @@
+import type { Meta, StoryObj } from "@storybook/react";
+import { BadgeContainer, mobileViewport } from "stories/utils";
+import { PlainTextCodeBlock } from "./plaintext-code";
+
+const meta = {
+ title: "code/plaintext",
+ component: Component,
+ parameters: {},
+} satisfies Meta;
+
+export default meta;
+type Story = StoryObj;
+
+export const Desktop: Story = {
+ args: {},
+};
+
+export const Mobile: Story = {
+ args: {},
+ parameters: {
+ viewport: mobileViewport("iphone14"),
+ },
+};
+
+const jsCode = `\
+import { getContract } from "thirdweb";
+import { sepolia } from "thirdweb/chains";
+import { getOwnedNFTs } from "thirdweb/extensions/erc1155";
+
+const contract = getContract({
+ client,
+ address: "0x1234...",
+ chain: sepolia,
+});
+`;
+
+const overflowText =
+ "123456789abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz";
+
+function Component() {
+ return (
+
+ );
+}
diff --git a/apps/dashboard/src/@/components/ui/code/plaintext-code.tsx b/apps/dashboard/src/@/components/ui/code/plaintext-code.tsx
new file mode 100644
index 00000000000..595714d58a1
--- /dev/null
+++ b/apps/dashboard/src/@/components/ui/code/plaintext-code.tsx
@@ -0,0 +1,52 @@
+"use client";
+
+import { cn } from "@/lib/utils";
+import { useClipboard } from "hooks/useClipboard";
+import { CheckIcon, CopyIcon } from "lucide-react";
+import { ScrollShadow } from "../ScrollShadow/ScrollShadow";
+import { Button } from "../button";
+
+export function PlainTextCodeBlock(props: {
+ code: string;
+ copyButtonClassName?: string;
+ className?: string;
+ scrollableClassName?: string;
+ codeClassName?: string;
+}) {
+ const { hasCopied, onCopy } = useClipboard(props.code);
+
+ return (
+
+
+
+ {props.code}
+
+
+
+
+ {hasCopied ? (
+
+ ) : (
+
+ )}
+
+
+ );
+}
diff --git a/apps/dashboard/src/@/styles/globals.css b/apps/dashboard/src/@/styles/globals.css
index d89596e0c75..45302ce3ef9 100644
--- a/apps/dashboard/src/@/styles/globals.css
+++ b/apps/dashboard/src/@/styles/globals.css
@@ -156,3 +156,13 @@ input:-webkit-autofill:active {
/* Revert background color */
transition: background-color 5000s ease-in-out 0s;
}
+
+.dark .shiki,
+.dark .shiki span {
+ color: var(--shiki-dark) !important;
+ background-color: var(--background) !important;
+ /* Optional, if you also want font styles */
+ font-style: var(--shiki-dark-font-style) !important;
+ font-weight: var(--shiki-dark-font-weight) !important;
+ text-decoration: var(--shiki-dark-text-decoration) !important;
+}
diff --git a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/(marketplace)/components/listing-drawer.tsx b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/(marketplace)/components/listing-drawer.tsx
index d414680f7c4..c8aa6e5398d 100644
--- a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/(marketplace)/components/listing-drawer.tsx
+++ b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/(marketplace)/components/listing-drawer.tsx
@@ -12,7 +12,7 @@ import type {
} from "thirdweb/extensions/marketplace";
import { useActiveAccount } from "thirdweb/react";
-import { CodeBlock } from "@/components/ui/CodeBlock";
+import { CodeClient } from "@/components/ui/code/code.client";
import { NFTMediaWithEmptyState } from "tw-components/nft-media";
import { CancelTab } from "./cancel-tab";
import { LISTING_STATUS } from "./types";
@@ -148,13 +148,11 @@ export const ListingDrawer: React.FC = ({
{data?.asset.metadata.properties ? (
Attributes
-
) : null}
diff --git a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/embed/embed-setup.tsx b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/embed/embed-setup.tsx
index b1009256a8a..69c8e49bbd7 100644
--- a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/embed/embed-setup.tsx
+++ b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/embed/embed-setup.tsx
@@ -1,6 +1,7 @@
"use client";
import { Button } from "@/components/ui/button";
+import { CodeClient } from "@/components/ui/code/code.client";
import { useApiKeys, useCreateApiKey } from "@3rdweb-sdk/react/hooks/useApi";
import { Flex, FormControl, Input, Select } from "@chakra-ui/react";
import { LazyCreateAPIKeyDialog } from "components/settings/ApiKeys/Create/LazyCreateAPIKeyDialog";
@@ -16,14 +17,7 @@ import type { StoredChain } from "stores/chainStores";
import type { ThirdwebContract } from "thirdweb";
import type { ChainMetadata } from "thirdweb/chains";
import { useActiveAccount } from "thirdweb/react";
-import {
- Card,
- CodeBlock,
- FormHelperText,
- FormLabel,
- Heading,
- Text,
-} from "tw-components";
+import { Card, FormHelperText, FormLabel, Heading, Text } from "tw-components";
interface EmbedSetupProps {
contract: ThirdwebContract;
@@ -535,12 +529,10 @@ export const EmbedSetup: React.FC = ({
Embed Code
-
= ({
{event.eventName}
-
-
+
+
+
{arr.length - 1 === idx ? null : }
diff --git a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/nfts/[tokenId]/token-id.tsx b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/nfts/[tokenId]/token-id.tsx
index c979ec6305b..2eb4ad41d63 100644
--- a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/nfts/[tokenId]/token-id.tsx
+++ b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/[contractAddress]/nfts/[tokenId]/token-id.tsx
@@ -4,6 +4,7 @@ import { UnexpectedValueErrorMessage } from "@/components/blocks/error-fallbacks
import { WalletAddress } from "@/components/blocks/wallet-address";
import { CopyTextButton } from "@/components/ui/CopyTextButton";
import { Spinner } from "@/components/ui/Spinner/Spinner";
+import { CodeClient } from "@/components/ui/code/code.client";
import { useThirdwebClient } from "@/constants/thirdweb.client";
import { useDashboardRouter } from "@/lib/DashboardRouter";
import { resolveSchemeWithErrorHandler } from "@/lib/resolveSchemeWithErrorHandler";
@@ -26,7 +27,7 @@ import type { ThirdwebContract } from "thirdweb";
import { getNFT as getErc721NFT } from "thirdweb/extensions/erc721";
import { getNFT as getErc1155NFT } from "thirdweb/extensions/erc1155";
import { useReadContract } from "thirdweb/react";
-import { Badge, Button, Card, CodeBlock, Heading, Text } from "tw-components";
+import { Badge, Button, Card, Heading, Text } from "tw-components";
import { NFTMediaWithEmptyState } from "tw-components/nft-media";
import { shortenString } from "utils/usedapp-external";
import { NftProperty } from "../components/nft-property";
@@ -314,12 +315,9 @@ export const TokenIdPage: React.FC = ({
))}
) : (
-
)}
diff --git a/apps/dashboard/src/app/(dashboard)/tools/transaction-simulator/components/TransactionSimulator.tsx b/apps/dashboard/src/app/(dashboard)/tools/transaction-simulator/components/TransactionSimulator.tsx
index e6637927724..fe8ed9a45bf 100644
--- a/apps/dashboard/src/app/(dashboard)/tools/transaction-simulator/components/TransactionSimulator.tsx
+++ b/apps/dashboard/src/app/(dashboard)/tools/transaction-simulator/components/TransactionSimulator.tsx
@@ -1,10 +1,9 @@
"use client";
-
-import { CodeBlock } from "@/components/ui/CodeBlock";
import { CopyTextButton } from "@/components/ui/CopyTextButton";
import { Spinner } from "@/components/ui/Spinner/Spinner";
import { Button } from "@/components/ui/button";
import { Card } from "@/components/ui/card";
+import { CodeClient } from "@/components/ui/code/code.client";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
import { Textarea } from "@/components/ui/textarea";
@@ -312,7 +311,7 @@ ${Object.keys(populatedTransaction)
>
Connect SDK example
-
+
)}
@@ -363,7 +362,7 @@ const transaction = prepareContractCall({
contract,
method: resolveMethod("${parsedData.functionName}"),
params: [${displayParams.join(", ")}],
- value: ${parsedData.value ? `${parsedData.value}n` : ""},
+ ${parsedData.value ? `value: ${parsedData.value}n,` : ""}
});
const result = await simulateTransaction({
diff --git a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/add-access-token-button.tsx b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/add-access-token-button.tsx
index 0de1c6be3a7..795e4c5b801 100644
--- a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/add-access-token-button.tsx
+++ b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/add-access-token-button.tsx
@@ -1,3 +1,4 @@
+import { PlainTextCodeBlock } from "@/components/ui/code/plaintext-code";
import { useEngineCreateAccessToken } from "@3rdweb-sdk/react/hooks/useEngine";
import {
Flex,
@@ -13,7 +14,7 @@ import { useTrack } from "hooks/analytics/useTrack";
import { useTxNotifications } from "hooks/useTxNotifications";
import { CirclePlusIcon } from "lucide-react";
import { useState } from "react";
-import { Button, Checkbox, CodeBlock, Text } from "tw-components";
+import { Button, Checkbox, Text } from "tw-components";
interface AddAccessTokenButtonProps {
instanceUrl: string;
@@ -82,7 +83,7 @@ export const AddAccessTokenButton: React.FC = ({
Access token
-
+
This access token will not be shown again.
diff --git a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/add-keypair-button.tsx b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/add-keypair-button.tsx
index 358ec4cf889..ad25e65a410 100644
--- a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/add-keypair-button.tsx
+++ b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/add-keypair-button.tsx
@@ -1,3 +1,4 @@
+import { PlainTextCodeBlock } from "@/components/ui/code/plaintext-code";
import {
type KeypairAlgorithm,
useEngineAddKeypair,
@@ -21,7 +22,7 @@ import { useTrack } from "hooks/analytics/useTrack";
import { useTxNotifications } from "hooks/useTxNotifications";
import { CirclePlusIcon } from "lucide-react";
import { useState } from "react";
-import { Button, CodeBlock, FormLabel, Text } from "tw-components";
+import { Button, FormLabel, Text } from "tw-components";
const KEYPAIR_ALGORITHM_DETAILS: Record<
KeypairAlgorithm,
@@ -156,27 +157,19 @@ export const AddKeypairButton: React.FC
= ({
-
Extract the public key.
-
Print the public key.
-
+
diff --git a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/engine-access-tokens.tsx b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/engine-access-tokens.tsx
index 76a190392ff..53bd2fd5f76 100644
--- a/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/engine-access-tokens.tsx
+++ b/apps/dashboard/src/app/team/[team_slug]/(team)/~/engine/(instance)/[engineId]/access-tokens/components/engine-access-tokens.tsx
@@ -1,5 +1,6 @@
"use client";
+import { CodeClient } from "@/components/ui/code/code.client";
import { InlineCode } from "@/components/ui/inline-code";
import {
useEngineAccessTokens,
@@ -8,7 +9,7 @@ import {
} from "@3rdweb-sdk/react/hooks/useEngine";
import { ButtonGroup, Flex } from "@chakra-ui/react";
import { useState } from "react";
-import { Button, CodeBlock, Heading, Link, Text } from "tw-components";
+import { Button, Heading, Link, Text } from "tw-components";
import { AccessTokensTable } from "./access-tokens-table";
import { AddAccessTokenButton } from "./add-access-token-button";
import { AddKeypairButton } from "./add-keypair-button";
@@ -107,8 +108,8 @@ const StandardAccessTokensPanel = ({
Set the header.
- /backend-wallet/get-all", {
headers: {
authorization: "Bearer ",
@@ -158,8 +159,8 @@ const KeypairAuthenticationPanel = ({
Set the header.
- {
- return ;
+ return (
+
+ );
},
}),
columnHelper.accessor("algorithm", {
diff --git a/apps/dashboard/src/app/team/[team_slug]/(team)/~/usage/storage/page.tsx b/apps/dashboard/src/app/team/[team_slug]/(team)/~/usage/storage/page.tsx
index 66dd94f77fe..5157370bc92 100644
--- a/apps/dashboard/src/app/team/[team_slug]/(team)/~/usage/storage/page.tsx
+++ b/apps/dashboard/src/app/team/[team_slug]/(team)/~/usage/storage/page.tsx
@@ -179,24 +179,22 @@ export default function Page() {
const storageSnippets = {
react: `// Check out the latest docs here: https://portal.thirdweb.com/typescript/v5/storage
-// Initialize your provider
import { ThirdwebProvider } from "thirdweb/react";
+import { upload } from "thirdweb/storage";
+import { MediaRenderer } from "thirdweb/react";
-function Provider() {
+// Wrap your app in ThirdwebProvider
+function Providers() {
return (
- ...
+
);
}
-// Upload files to IPFS
-import { upload } from "thirdweb/storage";
-
-function App() {
- const uploadData = () => {
- // And upload the data with the upload function
+function UploadFiles() {
+ const uploadData = async () => {
const uri = await upload({
client, // thirdweb client
files: [
@@ -204,15 +202,13 @@ function App() {
],
});
}
- ...
-}
-// Render files from IPFS
-import { MediaRenderer } from "thirdweb/react";
+ return ...
+}
-function App() {
+ // Supported types: image, video, audio, 3d model, html
+function ShowFiles() {
return (
- // Supported types: image, video, audio, 3d model, html
);
}`,
diff --git a/apps/dashboard/src/components/connect/CodePlayground.tsx b/apps/dashboard/src/components/connect/CodePlayground.tsx
index 238a826dd13..30348291360 100644
--- a/apps/dashboard/src/components/connect/CodePlayground.tsx
+++ b/apps/dashboard/src/components/connect/CodePlayground.tsx
@@ -1,3 +1,4 @@
+import { CodeClient } from "@/components/ui/code/code.client";
import {
Flex,
List,
@@ -7,13 +8,13 @@ import {
TabPanels,
Tabs,
} from "@chakra-ui/react";
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ChakraNextImage } from "components/Image";
import type { CodeEnvironment } from "components/contract-tabs/code/types";
import { Aurora } from "components/homepage/Aurora";
import { connectPlaygroundData } from "components/product-pages/common/connect/data";
-import { themes } from "prism-react-renderer";
import { useState } from "react";
-import { Button, Card, CodeBlock } from "tw-components";
+import { Button, Card } from "tw-components";
import {
COMMANDS,
formatSnippet,
@@ -23,6 +24,8 @@ import ConnectPlaygroundButton, {
} from "./ConnectPlaygroundButton";
import ConnectPlaygroundTab from "./ConnectPlaygroundTab";
+const queryClient = new QueryClient();
+
const CodePlayground = ({
TRACKING_CATEGORY,
}: {
@@ -124,6 +127,7 @@ const CodePlayground = ({
position="relative"
zIndex={3}
mt="-2px"
+ flexShrink={0}
>
-
-
+
-
+
);
diff --git a/apps/dashboard/src/components/contract-components/published-contract/markdown-renderer.tsx b/apps/dashboard/src/components/contract-components/published-contract/markdown-renderer.tsx
index 100a19bebd3..c66c792917a 100644
--- a/apps/dashboard/src/components/contract-components/published-contract/markdown-renderer.tsx
+++ b/apps/dashboard/src/components/contract-components/published-contract/markdown-renderer.tsx
@@ -1,3 +1,4 @@
+import { CodeClient } from "@/components/ui/code/code.client";
import {
Box,
type BoxProps,
@@ -16,7 +17,7 @@ import {
import { onlyText } from "react-children-utilities";
import ReactMarkdown from "react-markdown";
import remarkGfm from "remark-gfm";
-import { CodeBlock, Heading, Text } from "tw-components";
+import { Heading, Text } from "tw-components";
const ChakraReactMarkdown = chakra(ReactMarkdown);
@@ -123,12 +124,13 @@ export const MarkdownRenderer: React.FC<
if (props?.className) {
const language = props.className.replace("language-", "");
return (
-
+
+
+
);
}
diff --git a/apps/dashboard/src/components/contract-components/shared/sources-accordion.tsx b/apps/dashboard/src/components/contract-components/shared/sources-accordion.tsx
index 61c75c2230d..0314479df80 100644
--- a/apps/dashboard/src/components/contract-components/shared/sources-accordion.tsx
+++ b/apps/dashboard/src/components/contract-components/shared/sources-accordion.tsx
@@ -1,3 +1,4 @@
+import { CodeClient } from "@/components/ui/code/code.client";
import {
Accordion,
AccordionButton,
@@ -6,7 +7,7 @@ import {
AccordionPanel,
} from "@chakra-ui/react";
import type { Abi } from "abitype";
-import { CodeBlock, Heading } from "tw-components";
+import { Heading } from "tw-components";
import type { SourceFile } from "../types";
interface SourcesAccordionProps {
@@ -37,10 +38,10 @@ export const SourcesAccordion: React.FC = ({
{isExpanded && (
-
)}
@@ -48,11 +49,12 @@ export const SourcesAccordion: React.FC = ({
)}
)}
- {sources.map((signature) => (
+ {sources.map((signature, i) => (
= ({
{isExpanded && (
-
)}
diff --git a/apps/dashboard/src/components/contract-functions/contract-function-comment.tsx b/apps/dashboard/src/components/contract-functions/contract-function-comment.tsx
index 79373af931e..818f9b23fd6 100644
--- a/apps/dashboard/src/components/contract-functions/contract-function-comment.tsx
+++ b/apps/dashboard/src/components/contract-functions/contract-function-comment.tsx
@@ -1,5 +1,5 @@
-import { CodeBlock } from "@/components/ui/CodeBlock";
import { Badge } from "@/components/ui/badge";
+import { CodeClient } from "@/components/ui/code/code.client";
import { useContractSources } from "contract-ui/hooks/useContractSources";
import { useMemo } from "react";
import type { ThirdwebContract } from "thirdweb";
@@ -36,7 +36,7 @@ export default function ContractFunctionComment({
About this function Beta
-
+
>
);
}
diff --git a/apps/dashboard/src/components/contract-functions/interactive-abi-function.tsx b/apps/dashboard/src/components/contract-functions/interactive-abi-function.tsx
index 241e44797ff..e55957d3c40 100644
--- a/apps/dashboard/src/components/contract-functions/interactive-abi-function.tsx
+++ b/apps/dashboard/src/components/contract-functions/interactive-abi-function.tsx
@@ -1,6 +1,8 @@
"use client";
import { Badge } from "@/components/ui/badge";
+import { CodeClient } from "@/components/ui/code/code.client";
+import { PlainTextCodeBlock } from "@/components/ui/code/plaintext-code";
import { InlineCode } from "@/components/ui/inline-code";
import { ToolTipLabel } from "@/components/ui/tooltip";
import {
@@ -35,7 +37,6 @@ import { parseAbiParams, stringify } from "thirdweb/utils";
import {
Button,
Card,
- CodeBlock,
FormErrorMessage,
FormHelperText,
FormLabel,
@@ -44,18 +45,24 @@ import {
TrackedLink,
} from "tw-components";
-function formatResponseData(data: unknown): string {
+function formatResponseData(data: unknown): {
+ type: "json" | "text";
+ data: string;
+} {
// Early exit if data is already a string,
// otherwise JSON.stringify(data) will wrap it in extra quotes - which will affect the value for [Copy button]
if (typeof data === "string") {
// "" is a valid response. For example, some token has `symbol` === ""
if (data === "") {
- return `""`;
+ return { type: "text", data: `""` };
}
- return data;
+ return { type: "text", data };
}
if (typeof data === "bigint") {
- return data.toString();
+ return {
+ type: "text",
+ data: data.toString(),
+ };
}
if (typeof data === "object") {
@@ -72,7 +79,10 @@ function formatResponseData(data: unknown): string {
}
}
- return stringify(data, null, 2);
+ return {
+ type: "json",
+ data: stringify(data, null, 2),
+ };
}
function formatError(error: Error): string {
@@ -426,35 +436,36 @@ export const InteractiveAbiFunction: React.FC = ({
)}
-
- {/* If the result is an IPFS URI, show a handy link so that users can open it in a new tab */}
- {formattedResponseData.startsWith("ipfs://") && (
-
-
- Open in gateway
-
-
+
+ {formattedResponseData.type === "text" ? (
+
+ ) : (
+
)}
+
+ {/* If the result is an IPFS URI, show a handy link so that users can open it in a new tab */}
+ {formattedResponseData.type === "text" &&
+ formattedResponseData.data.startsWith("ipfs://") && (
+
+
+ Open in gateway
+
+
+ )}
{/* Same with the logic above but this time it's applied to traditional urls */}
- {(formattedResponseData.startsWith("https://") ||
- formattedResponseData.startsWith("http://")) && (
+ {((formattedResponseData.type === "text" &&
+ formattedResponseData.data.startsWith("https://")) ||
+ formattedResponseData.data.startsWith("http://")) && (
diff --git a/apps/dashboard/src/components/contract-tabs/code/CodeSegment.tsx b/apps/dashboard/src/components/contract-tabs/code/CodeSegment.tsx
index d549f7c3f63..784b126cff6 100644
--- a/apps/dashboard/src/components/contract-tabs/code/CodeSegment.tsx
+++ b/apps/dashboard/src/components/contract-tabs/code/CodeSegment.tsx
@@ -1,10 +1,11 @@
+import { CodeClient } from "@/components/ui/code/code.client";
import { ButtonGroup, Flex, Icon } from "@chakra-ui/react";
import { JavaScriptIcon } from "components/icons/brand-icons/JavaScriptIcon";
import { ReactIcon } from "components/icons/brand-icons/ReactIcon";
import { TypeScriptIcon } from "components/icons/brand-icons/TypeScriptIcon";
import { UnityIcon } from "components/icons/brand-icons/UnityIcon";
import { type Dispatch, type JSX, type SetStateAction, useMemo } from "react";
-import { Button, CodeBlock } from "tw-components";
+import { Button } from "tw-components";
import type { ComponentWithChildren } from "types/component-with-children";
import type {
CodeEnvironment,
@@ -116,16 +117,17 @@ export const CodeSegment: React.FC = ({
{onlyTabs ? null : (
<>
- = ({
defaultLanguage = "javascript",
docs = "https://portal.thirdweb.com/",
@@ -92,69 +87,45 @@ export const CodeSelector: React.FC = ({
return (
<>
-
- {Object.keys(landingSnippets).map((key) =>
- landingSnippets[key as keyof typeof landingSnippets] ? (
-
- {key === "javascript"
- ? "JavaScript"
- : key === "react-native"
- ? "React Native"
- : key}
-
- ) : null,
- )}
-
-
-
-
+
+
+ {Object.keys(landingSnippets).map((key) =>
+ landingSnippets[key as keyof typeof landingSnippets] ? (
+
+ {key === "javascript"
+ ? "JavaScript"
+ : key === "react-native"
+ ? "React Native"
+ : key}
+
+ ) : null,
+ )}
+
+
+
+
+
+
+
{/* Links for Replit and Docs */}
-
+
= ({
})
}
/>
-
-
+
+
>
);
};
diff --git a/apps/dashboard/src/core-ui/batch-upload/batch-table.tsx b/apps/dashboard/src/core-ui/batch-upload/batch-table.tsx
index d0477e8c907..6c9ed3b5769 100644
--- a/apps/dashboard/src/core-ui/batch-upload/batch-table.tsx
+++ b/apps/dashboard/src/core-ui/batch-upload/batch-table.tsx
@@ -1,3 +1,4 @@
+import { CodeClient } from "@/components/ui/code/code.client";
import { ToolTipLabel } from "@/components/ui/tooltip";
import {
Box,
@@ -27,7 +28,7 @@ import {
import { useMemo } from "react";
import { type Column, usePagination, useTable } from "react-table";
import type { NFTInput } from "thirdweb/utils";
-import { CodeBlock, Text } from "tw-components";
+import { Text } from "tw-components";
const FileImage: React.FC = ({ src, ...props }) => {
const img = useImageFileOrUrl(
@@ -115,11 +116,10 @@ export const BatchTable: React.FC = ({
// biome-ignore lint/suspicious/noExplicitAny: FIXME
Cell: ({ cell }: { cell: any }) =>
cell.value ? (
-
) : null,
},
diff --git a/apps/dashboard/src/core-ui/batch-upload/upload-step.tsx b/apps/dashboard/src/core-ui/batch-upload/upload-step.tsx
index 8127e4a5cb1..05bdc61ec51 100644
--- a/apps/dashboard/src/core-ui/batch-upload/upload-step.tsx
+++ b/apps/dashboard/src/core-ui/batch-upload/upload-step.tsx
@@ -68,11 +68,19 @@ export const UploadStep: React.FC = ({
Files must contain one .csv or .json file with metadata. -{" "}
-
+
Download example.csv
.{" "}
-
+
Download example.json
.
@@ -111,16 +119,24 @@ export const UploadStep: React.FC = ({
automatically for you. If you already have the files uploaded, you
can add an and/or
column and add the IPFS hashes
- there.
-
+ there.{" "}
+
Download example.csv
If you want to make your media files map to your NFTs, you can add
the name of your files to the and
- column.
-
+ column.{" "}
+
Download example.csv
diff --git a/apps/dashboard/src/tw-components/code-block.tsx b/apps/dashboard/src/tw-components/code-block.tsx
deleted file mode 100644
index fb6d14dffc3..00000000000
--- a/apps/dashboard/src/tw-components/code-block.tsx
+++ /dev/null
@@ -1,134 +0,0 @@
-"use client";
-
-import {
- Box,
- Code,
- type CodeProps,
- IconButton,
- useColorModeValue,
-} from "@chakra-ui/react";
-import { useClipboard } from "hooks/useClipboard";
-import { CheckIcon, CopyIcon } from "lucide-react";
-import { Highlight, Prism, themes } from "prism-react-renderer";
-import { Text } from "./text";
-
-const darkThemeDefault = themes.vsDark;
-const lightThemeDefault = themes.vsLight;
-
-type PrismTheme = typeof darkThemeDefault;
-
-// add solidity lang support for code
-(typeof global !== "undefined" ? global : window).Prism = Prism;
-require("prismjs/components/prism-solidity");
-// end add solidity support
-
-interface CodeBlockProps extends Omit {
- code: string;
- codeValue?: string;
- language?: string;
- canCopy?: boolean;
- wrap?: boolean;
- prefix?: string;
- darkTheme?: PrismTheme;
- lightTheme?: PrismTheme;
-}
-export const CodeBlock: React.FC = ({
- code,
- codeValue,
- language = "sh",
- px = 4,
- py = 2,
- w = "full",
- borderRadius = "md",
- borderColor = "borderColor",
- borderWidth = "1px",
- fontFamily = "mono",
- backgroundColor,
- prefix,
- canCopy = true,
- wrap = true,
- darkTheme,
- lightTheme,
- ...restCodeProps
-}) => {
- const theme = useColorModeValue(
- lightTheme || lightThemeDefault,
- darkTheme || darkThemeDefault,
- );
- const { onCopy, hasCopied } = useClipboard(codeValue || code);
-
- if (!code) {
- return null;
- }
-
- return (
-
- {({ className, style, tokens, getLineProps, getTokenProps }) => (
-
- {canCopy && code && (
-
- ) : (
-
- )
- }
- />
- )}
-
- {tokens.map((line, i) => (
- // biome-ignore lint/suspicious/noArrayIndexKey: index IS the key here
-
- {line.map((token, key) => (
- // biome-ignore lint/suspicious/noArrayIndexKey: index IS the key here
-
- ))}
-
- ))}
-
-
- )}
-
- );
-};
diff --git a/apps/dashboard/src/tw-components/index.ts b/apps/dashboard/src/tw-components/index.ts
index 6aeb033b753..0a29b0e9d65 100644
--- a/apps/dashboard/src/tw-components/index.ts
+++ b/apps/dashboard/src/tw-components/index.ts
@@ -2,7 +2,6 @@ export * from "./badge";
export * from "./button";
export * from "./card";
export * from "./checkbox";
-export * from "./code-block";
export * from "./form";
export * from "./heading";
export * from "./link";
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 28cb6fb276f..8b248e077b7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -137,7 +137,7 @@ importers:
version: 1.1.3(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@sentry/nextjs':
specifier: 8.37.1
- version: 8.37.1(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(webpack@5.96.1(@swc/core@1.9.1))
+ version: 8.37.1(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
'@shazow/whatsabi':
specifier: ^0.16.0
version: 0.16.0(@noble/hashes@1.5.0)(bufferutil@4.0.8)(utf-8-validate@5.0.10)
@@ -221,7 +221,7 @@ importers:
version: 0.4.3(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)
nextjs-toploader:
specifier: ^1.6.12
- version: 1.6.12(next@15.0.3(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)
+ version: 1.6.12(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)
papaparse:
specifier: ^5.4.1
version: 5.4.1
@@ -231,12 +231,6 @@ importers:
posthog-js:
specifier: 1.67.1
version: 1.67.1
- prism-react-renderer:
- specifier: ^2.3.1
- version: 2.4.0(react@19.0.0-rc-69d4b800-20241021)
- prismjs:
- specifier: ^1.29.0
- version: 1.29.0
qrcode:
specifier: ^1.5.3
version: 1.5.4
@@ -279,6 +273,9 @@ importers:
server-only:
specifier: ^0.0.1
version: 0.0.1
+ shiki:
+ specifier: 1.22.2
+ version: 1.22.2
sonner:
specifier: ^1.7.0
version: 1.7.0(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)
@@ -293,7 +290,7 @@ importers:
version: 2.5.4
tailwindcss-animate:
specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)))
+ version: 1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3)))
thirdweb:
specifier: workspace:*
version: link:../../packages/thirdweb
@@ -342,7 +339,7 @@ importers:
version: 8.4.2(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))
'@storybook/nextjs':
specifier: 8.4.2
- version: 8.4.2(@swc/core@1.9.1)(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(type-fest@4.26.1)(typescript@5.6.3)(webpack-hot-middleware@2.26.1)(webpack@5.96.1(@swc/core@1.9.1))
+ version: 8.4.2(@swc/core@1.9.1)(esbuild@0.23.1)(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(type-fest@4.26.1)(typescript@5.6.3)(webpack-hot-middleware@2.26.1)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
'@storybook/react':
specifier: 8.4.2
version: 8.4.2(@storybook/test@8.4.2(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10)))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(typescript@5.6.3)
@@ -408,7 +405,7 @@ importers:
version: 5.36.3(@types/node@20.14.9)(typescript@5.6.3)
next-sitemap:
specifier: ^4.2.3
- version: 4.2.3(next@15.0.3(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))
+ version: 4.2.3(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))
postcss:
specifier: 8.4.47
version: 8.4.47
@@ -417,7 +414,7 @@ importers:
version: 8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10)
tailwindcss:
specifier: 3.4.14
- version: 3.4.14(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
+ version: 3.4.14(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3))
typescript:
specifier: 5.6.3
version: 5.6.3
@@ -535,10 +532,10 @@ importers:
version: 8.4.47
tailwindcss:
specifier: 3.4.14
- version: 3.4.14(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
+ version: 3.4.14(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3))
tailwindcss-animate:
specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)))
+ version: 1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3)))
typescript:
specifier: 5.6.3
version: 5.6.3
@@ -601,7 +598,7 @@ importers:
version: 15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)
nextjs-toploader:
specifier: ^1.6.12
- version: 1.6.12(next@15.0.3(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)
+ version: 1.6.12(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)
node-html-parser:
specifier: ^6.1.13
version: 6.1.13
@@ -637,7 +634,7 @@ importers:
version: 2.5.4
tailwindcss-animate:
specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)))
+ version: 1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3)))
thirdweb:
specifier: workspace:*
version: link:../../packages/thirdweb
@@ -698,13 +695,13 @@ importers:
version: 3.17.5(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)))
next-sitemap:
specifier: ^4.2.3
- version: 4.2.3(next@15.0.3(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))
+ version: 4.2.3(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))
postcss:
specifier: 8.4.47
version: 8.4.47
tailwindcss:
specifier: 3.4.14
- version: 3.4.14(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
+ version: 3.4.14(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3))
tsx:
specifier: 4.19.2
version: 4.19.2
@@ -773,7 +770,7 @@ importers:
version: 2.5.4
tailwindcss-animate:
specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)))
+ version: 1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3)))
thirdweb:
specifier: workspace:*
version: link:../../packages/thirdweb
@@ -804,7 +801,7 @@ importers:
version: 8.4.47
tailwindcss:
specifier: 3.4.14
- version: 3.4.14(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
+ version: 3.4.14(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3))
typescript:
specifier: 5.6.3
version: 5.6.3
@@ -987,7 +984,7 @@ importers:
version: 2.0.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.1(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(react@19.0.0-rc-69d4b800-20241021)(types-react@19.0.0-rc.1)(utf-8-validate@5.0.10))
'@size-limit/preset-big-lib':
specifier: 11.1.6
- version: 11.1.6(bufferutil@4.0.8)(esbuild@0.23.1)(size-limit@11.1.6)(utf-8-validate@5.0.10)
+ version: 11.1.6(bufferutil@4.0.8)(size-limit@11.1.6)(utf-8-validate@5.0.10)
'@storybook/addon-essentials':
specifier: 8.4.2
version: 8.4.2(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(types-react@19.0.0-rc.1)(webpack-sources@3.2.3)
@@ -5677,9 +5674,6 @@ packages:
'@types/pluralize@0.0.33':
resolution: {integrity: sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==}
- '@types/prismjs@1.26.4':
- resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==}
-
'@types/qrcode@1.5.5':
resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==}
@@ -11373,11 +11367,6 @@ packages:
resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==}
engines: {node: '>=18'}
- prism-react-renderer@2.4.0:
- resolution: {integrity: sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw==}
- peerDependencies:
- react: '>=16.0.0'
-
prismjs@1.27.0:
resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==}
engines: {node: '>=6'}
@@ -17803,7 +17792,7 @@ snapshots:
dependencies:
playwright: 1.48.2
- '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.2)(type-fest@4.26.1)(webpack-hot-middleware@2.26.1)(webpack@5.96.1(@swc/core@1.9.1))':
+ '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.2)(type-fest@4.26.1)(webpack-hot-middleware@2.26.1)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))':
dependencies:
ansi-html: 0.0.9
core-js-pure: 3.38.1
@@ -17813,7 +17802,7 @@ snapshots:
react-refresh: 0.14.2
schema-utils: 4.2.0
source-map: 0.7.4
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
optionalDependencies:
type-fest: 4.26.1
webpack-hot-middleware: 2.26.1
@@ -18935,7 +18924,7 @@ snapshots:
'@sentry/types': 8.37.1
'@sentry/utils': 8.37.1
- '@sentry/nextjs@8.37.1(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(webpack@5.96.1(@swc/core@1.9.1))':
+ '@sentry/nextjs@8.37.1(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0)
@@ -18949,7 +18938,7 @@ snapshots:
'@sentry/types': 8.37.1
'@sentry/utils': 8.37.1
'@sentry/vercel-edge': 8.37.1
- '@sentry/webpack-plugin': 2.22.6(webpack@5.96.1(@swc/core@1.9.1))
+ '@sentry/webpack-plugin': 2.22.6(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
chalk: 3.0.0
next: 15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)
resolve: 1.22.8
@@ -19037,12 +19026,12 @@ snapshots:
'@sentry/types': 8.37.1
'@sentry/utils': 8.37.1
- '@sentry/webpack-plugin@2.22.6(webpack@5.96.1(@swc/core@1.9.1))':
+ '@sentry/webpack-plugin@2.22.6(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))':
dependencies:
'@sentry/bundler-plugin-core': 2.22.6
unplugin: 1.0.1
uuid: 9.0.1
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
transitivePeerDependencies:
- encoding
- supports-color
@@ -19109,11 +19098,11 @@ snapshots:
dependencies:
size-limit: 11.1.6
- '@size-limit/preset-big-lib@11.1.6(bufferutil@4.0.8)(esbuild@0.23.1)(size-limit@11.1.6)(utf-8-validate@5.0.10)':
+ '@size-limit/preset-big-lib@11.1.6(bufferutil@4.0.8)(size-limit@11.1.6)(utf-8-validate@5.0.10)':
dependencies:
'@size-limit/file': 11.1.6(size-limit@11.1.6)
'@size-limit/time': 11.1.6(bufferutil@4.0.8)(size-limit@11.1.6)(utf-8-validate@5.0.10)
- '@size-limit/webpack': 11.1.6(esbuild@0.23.1)(size-limit@11.1.6)
+ '@size-limit/webpack': 11.1.6(size-limit@11.1.6)
size-limit: 11.1.6
transitivePeerDependencies:
- '@swc/core'
@@ -19133,11 +19122,11 @@ snapshots:
- supports-color
- utf-8-validate
- '@size-limit/webpack@11.1.6(esbuild@0.23.1)(size-limit@11.1.6)':
+ '@size-limit/webpack@11.1.6(size-limit@11.1.6)':
dependencies:
nanoid: 5.0.7
size-limit: 11.1.6
- webpack: 5.96.1(esbuild@0.23.1)
+ webpack: 5.96.1
transitivePeerDependencies:
- '@swc/core'
- esbuild
@@ -19668,7 +19657,7 @@ snapshots:
transitivePeerDependencies:
- webpack-sources
- '@storybook/builder-webpack5@8.4.2(@swc/core@1.9.1)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(typescript@5.6.3)':
+ '@storybook/builder-webpack5@8.4.2(@swc/core@1.9.1)(esbuild@0.23.1)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(typescript@5.6.3)':
dependencies:
'@storybook/core-webpack': 8.4.2(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))
'@types/node': 22.9.0
@@ -19677,23 +19666,23 @@ snapshots:
case-sensitive-paths-webpack-plugin: 2.4.0
cjs-module-lexer: 1.4.1
constants-browserify: 1.0.0
- css-loader: 6.11.0(webpack@5.96.1(@swc/core@1.9.1))
+ css-loader: 6.11.0(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
es-module-lexer: 1.5.4
- fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.3)(webpack@5.96.1(@swc/core@1.9.1))
- html-webpack-plugin: 5.6.3(webpack@5.96.1(@swc/core@1.9.1))
+ fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.3)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
+ html-webpack-plugin: 5.6.3(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
magic-string: 0.30.12
path-browserify: 1.0.1
process: 0.11.10
semver: 7.6.3
storybook: 8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10)
- style-loader: 3.3.4(webpack@5.96.1(@swc/core@1.9.1))
- terser-webpack-plugin: 5.3.10(@swc/core@1.9.1)(webpack@5.96.1(@swc/core@1.9.1))
+ style-loader: 3.3.4(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
+ terser-webpack-plugin: 5.3.10(@swc/core@1.9.1)(esbuild@0.23.1)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
ts-dedent: 2.2.0
url: 0.11.4
util: 0.12.5
util-deprecate: 1.0.2
- webpack: 5.96.1(@swc/core@1.9.1)
- webpack-dev-middleware: 6.1.3(webpack@5.96.1(@swc/core@1.9.1))
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
+ webpack-dev-middleware: 6.1.3(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
webpack-hot-middleware: 2.26.1
webpack-virtual-modules: 0.6.2
optionalDependencies:
@@ -19772,7 +19761,7 @@ snapshots:
dependencies:
storybook: 8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10)
- '@storybook/nextjs@8.4.2(@swc/core@1.9.1)(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(type-fest@4.26.1)(typescript@5.6.3)(webpack-hot-middleware@2.26.1)(webpack@5.96.1(@swc/core@1.9.1))':
+ '@storybook/nextjs@8.4.2(@swc/core@1.9.1)(esbuild@0.23.1)(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(type-fest@4.26.1)(typescript@5.6.3)(webpack-hot-middleware@2.26.1)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))':
dependencies:
'@babel/core': 7.26.0
'@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0)
@@ -19787,31 +19776,31 @@ snapshots:
'@babel/preset-react': 7.25.9(@babel/core@7.26.0)
'@babel/preset-typescript': 7.26.0(@babel/core@7.26.0)
'@babel/runtime': 7.26.0
- '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.2)(type-fest@4.26.1)(webpack-hot-middleware@2.26.1)(webpack@5.96.1(@swc/core@1.9.1))
- '@storybook/builder-webpack5': 8.4.2(@swc/core@1.9.1)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(typescript@5.6.3)
- '@storybook/preset-react-webpack': 8.4.2(@storybook/test@8.4.2(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10)))(@swc/core@1.9.1)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(typescript@5.6.3)
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.2)(type-fest@4.26.1)(webpack-hot-middleware@2.26.1)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
+ '@storybook/builder-webpack5': 8.4.2(@swc/core@1.9.1)(esbuild@0.23.1)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(typescript@5.6.3)
+ '@storybook/preset-react-webpack': 8.4.2(@storybook/test@8.4.2(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10)))(@swc/core@1.9.1)(esbuild@0.23.1)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(typescript@5.6.3)
'@storybook/react': 8.4.2(@storybook/test@8.4.2(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10)))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(typescript@5.6.3)
'@storybook/test': 8.4.2(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))
'@types/node': 22.9.0
'@types/semver': 7.5.8
- babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.96.1(@swc/core@1.9.1))
- css-loader: 6.11.0(webpack@5.96.1(@swc/core@1.9.1))
+ babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
+ css-loader: 6.11.0(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
find-up: 5.0.0
image-size: 1.1.1
loader-utils: 3.3.1
next: 15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)
- node-polyfill-webpack-plugin: 2.0.1(webpack@5.96.1(@swc/core@1.9.1))
+ node-polyfill-webpack-plugin: 2.0.1(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
pnp-webpack-plugin: 1.7.0(typescript@5.6.3)
postcss: 8.4.47
- postcss-loader: 8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.96.1(@swc/core@1.9.1))
+ postcss-loader: 8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
react: 19.0.0-rc-69d4b800-20241021
react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021)
react-refresh: 0.14.2
resolve-url-loader: 5.0.0
- sass-loader: 13.3.3(webpack@5.96.1(@swc/core@1.9.1))
+ sass-loader: 13.3.3(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
semver: 7.6.3
storybook: 8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10)
- style-loader: 3.3.4(webpack@5.96.1(@swc/core@1.9.1))
+ style-loader: 3.3.4(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.0.0-rc-69d4b800-20241021)
ts-dedent: 2.2.0
tsconfig-paths: 4.2.0
@@ -19819,7 +19808,7 @@ snapshots:
optionalDependencies:
sharp: 0.33.5
typescript: 5.6.3
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
transitivePeerDependencies:
- '@rspack/core'
- '@swc/core'
@@ -19839,11 +19828,11 @@ snapshots:
- webpack-hot-middleware
- webpack-plugin-serve
- '@storybook/preset-react-webpack@8.4.2(@storybook/test@8.4.2(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10)))(@swc/core@1.9.1)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(typescript@5.6.3)':
+ '@storybook/preset-react-webpack@8.4.2(@storybook/test@8.4.2(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10)))(@swc/core@1.9.1)(esbuild@0.23.1)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(typescript@5.6.3)':
dependencies:
'@storybook/core-webpack': 8.4.2(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))
'@storybook/react': 8.4.2(@storybook/test@8.4.2(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10)))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)(storybook@8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10))(typescript@5.6.3)
- '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.96.1(@swc/core@1.9.1))
+ '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
'@types/node': 22.9.0
'@types/semver': 7.5.8
find-up: 5.0.0
@@ -19855,7 +19844,7 @@ snapshots:
semver: 7.6.3
storybook: 8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10)
tsconfig-paths: 4.2.0
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
optionalDependencies:
typescript: 5.6.3
transitivePeerDependencies:
@@ -19870,7 +19859,7 @@ snapshots:
dependencies:
storybook: 8.4.2(bufferutil@4.0.8)(prettier@3.3.3)(utf-8-validate@5.0.10)
- '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.96.1(@swc/core@1.9.1))':
+ '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))':
dependencies:
debug: 4.3.7(supports-color@8.1.1)
endent: 2.1.0
@@ -19880,7 +19869,7 @@ snapshots:
react-docgen-typescript: 2.2.2(typescript@5.6.3)
tslib: 2.8.1
typescript: 5.6.3
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
transitivePeerDependencies:
- supports-color
@@ -20649,8 +20638,6 @@ snapshots:
'@types/pluralize@0.0.33': {}
- '@types/prismjs@1.26.4': {}
-
'@types/qrcode@1.5.5':
dependencies:
'@types/node': 20.14.9
@@ -20971,7 +20958,7 @@ snapshots:
sirv: 3.0.0
tinyglobby: 0.2.10
tinyrainbow: 1.2.0
- vitest: 2.1.4(@types/node@22.9.0)(@vitest/ui@2.1.4)(happy-dom@15.11.0)(msw@2.6.2(@types/node@22.9.0)(typescript@5.6.3))(terser@5.36.0)
+ vitest: 2.1.4(@types/node@20.14.9)(@vitest/ui@2.1.4)(happy-dom@15.11.0)(msw@2.6.2(@types/node@20.14.9)(typescript@5.6.3))(terser@5.36.0)
'@vitest/utils@2.0.5':
dependencies:
@@ -21746,12 +21733,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.96.1(@swc/core@1.9.1)):
+ babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)):
dependencies:
'@babel/core': 7.26.0
find-cache-dir: 4.0.0
schema-utils: 4.2.0
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
babel-plugin-istanbul@6.1.1:
dependencies:
@@ -22683,7 +22670,7 @@ snapshots:
css-color-keywords@1.0.0: {}
- css-loader@6.11.0(webpack@5.96.1(@swc/core@1.9.1)):
+ css-loader@6.11.0(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)):
dependencies:
icss-utils: 5.1.0(postcss@8.4.47)
postcss: 8.4.47
@@ -22694,7 +22681,7 @@ snapshots:
postcss-value-parser: 4.2.0
semver: 7.6.3
optionalDependencies:
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
css-select@4.3.0:
dependencies:
@@ -23356,7 +23343,7 @@ snapshots:
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint@8.57.0))(eslint@8.57.0)
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0)
eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.0)
eslint-plugin-react: 7.37.2(eslint@8.57.0)
eslint-plugin-react-hooks: 5.0.0(eslint@8.57.0)
@@ -23387,7 +23374,7 @@ snapshots:
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0)
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -23426,7 +23413,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0):
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.6.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -23551,7 +23538,7 @@ snapshots:
dependencies:
fast-glob: 3.3.2
postcss: 8.4.47
- tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
+ tailwindcss: 3.4.14(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3))
eslint-scope@5.1.1:
dependencies:
@@ -24119,7 +24106,7 @@ snapshots:
cross-spawn: 7.0.5
signal-exit: 4.1.0
- fork-ts-checker-webpack-plugin@8.0.0(typescript@5.6.3)(webpack@5.96.1(@swc/core@1.9.1)):
+ fork-ts-checker-webpack-plugin@8.0.0(typescript@5.6.3)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)):
dependencies:
'@babel/code-frame': 7.26.0
chalk: 4.1.2
@@ -24134,7 +24121,7 @@ snapshots:
semver: 7.6.3
tapable: 2.2.1
typescript: 5.6.3
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
form-data-encoder@2.1.4: {}
@@ -24629,7 +24616,7 @@ snapshots:
html-void-elements@3.0.0: {}
- html-webpack-plugin@5.6.3(webpack@5.96.1(@swc/core@1.9.1)):
+ html-webpack-plugin@5.6.3(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)):
dependencies:
'@types/html-minifier-terser': 6.1.0
html-minifier-terser: 6.1.0
@@ -24637,7 +24624,7 @@ snapshots:
pretty-error: 4.0.0
tapable: 2.2.1
optionalDependencies:
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
htmlparser2@3.10.1:
dependencies:
@@ -27077,7 +27064,7 @@ snapshots:
react: 19.0.0-rc-69d4b800-20241021
react-dom: 19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021)
- next-sitemap@4.2.3(next@15.0.3(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)):
+ next-sitemap@4.2.3(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)):
dependencies:
'@corex/deepmerge': 4.0.43
'@next/env': 13.5.6
@@ -27117,7 +27104,7 @@ snapshots:
- '@babel/core'
- babel-plugin-macros
- nextjs-toploader@1.6.12(next@15.0.3(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021):
+ nextjs-toploader@1.6.12(next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021))(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021):
dependencies:
next: 15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.48.2)(react-dom@19.0.0-rc-69d4b800-20241021(react@19.0.0-rc-69d4b800-20241021))(react@19.0.0-rc-69d4b800-20241021)
nprogress: 0.2.0
@@ -27176,7 +27163,7 @@ snapshots:
node-int64@0.4.0: {}
- node-polyfill-webpack-plugin@2.0.1(webpack@5.96.1(@swc/core@1.9.1)):
+ node-polyfill-webpack-plugin@2.0.1(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)):
dependencies:
assert: 2.1.0
browserify-zlib: 0.2.0
@@ -27203,7 +27190,7 @@ snapshots:
url: 0.11.4
util: 0.12.5
vm-browserify: 1.1.2
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
node-releases@2.0.18: {}
@@ -27827,7 +27814,7 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.4.47
- postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)):
+ postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3)):
dependencies:
lilconfig: 3.1.2
yaml: 2.5.1
@@ -27835,14 +27822,14 @@ snapshots:
postcss: 8.4.47
ts-node: 10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3)
- postcss-loader@8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.96.1(@swc/core@1.9.1)):
+ postcss-loader@8.1.1(postcss@8.4.47)(typescript@5.6.3)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)):
dependencies:
cosmiconfig: 9.0.0(typescript@5.6.3)
jiti: 1.21.6
postcss: 8.4.47
semver: 7.6.3
optionalDependencies:
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
transitivePeerDependencies:
- typescript
@@ -27967,12 +27954,6 @@ snapshots:
dependencies:
parse-ms: 4.0.0
- prism-react-renderer@2.4.0(react@19.0.0-rc-69d4b800-20241021):
- dependencies:
- '@types/prismjs': 1.26.4
- clsx: 2.1.1
- react: 19.0.0-rc-69d4b800-20241021
-
prismjs@1.27.0: {}
prismjs@1.29.0: {}
@@ -29019,10 +29000,10 @@ snapshots:
safer-buffer@2.1.2: {}
- sass-loader@13.3.3(webpack@5.96.1(@swc/core@1.9.1)):
+ sass-loader@13.3.3(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)):
dependencies:
neo-async: 2.6.2
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
satori@0.10.9:
dependencies:
@@ -29550,9 +29531,9 @@ snapshots:
structured-headers@0.4.1: {}
- style-loader@3.3.4(webpack@5.96.1(@swc/core@1.9.1)):
+ style-loader@3.3.4(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)):
dependencies:
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
style-to-object@0.4.4:
dependencies:
@@ -29695,11 +29676,11 @@ snapshots:
tailwind-merge@2.5.4: {}
- tailwindcss-animate@1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))):
+ tailwindcss-animate@1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3))):
dependencies:
- tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
+ tailwindcss: 3.4.14(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3))
- tailwindcss@3.4.14(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3)):
+ tailwindcss@3.4.14(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3)):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -29718,7 +29699,7 @@ snapshots:
postcss: 8.4.47
postcss-import: 15.1.0(postcss@8.4.47)
postcss-js: 4.0.1(postcss@8.4.47)
- postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.6.3))
+ postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.9.1)(@types/node@20.14.9)(typescript@5.6.3))
postcss-nested: 6.2.0(postcss@8.4.47)
postcss-selector-parser: 6.1.2
resolve: 1.22.8
@@ -29805,26 +29786,16 @@ snapshots:
ansi-escapes: 4.3.2
supports-hyperlinks: 2.3.0
- terser-webpack-plugin@5.3.10(@swc/core@1.9.1)(webpack@5.96.1(@swc/core@1.9.1)):
+ terser-webpack-plugin@5.3.10(@swc/core@1.9.1)(esbuild@0.23.1)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
jest-worker: 27.5.1
schema-utils: 3.3.0
serialize-javascript: 6.0.2
terser: 5.36.0
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
optionalDependencies:
'@swc/core': 1.9.1
-
- terser-webpack-plugin@5.3.10(esbuild@0.23.1)(webpack@5.96.1(esbuild@0.23.1)):
- dependencies:
- '@jridgewell/trace-mapping': 0.3.25
- jest-worker: 27.5.1
- schema-utils: 3.3.0
- serialize-javascript: 6.0.2
- terser: 5.36.0
- webpack: 5.96.1(esbuild@0.23.1)
- optionalDependencies:
esbuild: 0.23.1
terser-webpack-plugin@5.3.10(webpack@5.96.1):
@@ -30820,7 +30791,7 @@ snapshots:
- bufferutil
- utf-8-validate
- webpack-dev-middleware@6.1.3(webpack@5.96.1(@swc/core@1.9.1)):
+ webpack-dev-middleware@6.1.3(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)):
dependencies:
colorette: 2.0.20
memfs: 3.5.3
@@ -30828,7 +30799,7 @@ snapshots:
range-parser: 1.2.1
schema-utils: 4.2.0
optionalDependencies:
- webpack: 5.96.1(@swc/core@1.9.1)
+ webpack: 5.96.1(@swc/core@1.9.1)(esbuild@0.23.1)
webpack-hot-middleware@2.26.1:
dependencies:
@@ -30872,37 +30843,7 @@ snapshots:
- esbuild
- uglify-js
- webpack@5.96.1(@swc/core@1.9.1):
- dependencies:
- '@types/eslint-scope': 3.7.7
- '@types/estree': 1.0.6
- '@webassemblyjs/ast': 1.14.1
- '@webassemblyjs/wasm-edit': 1.14.1
- '@webassemblyjs/wasm-parser': 1.14.1
- acorn: 8.14.0
- browserslist: 4.24.2
- chrome-trace-event: 1.0.4
- enhanced-resolve: 5.17.1
- es-module-lexer: 1.5.4
- eslint-scope: 5.1.1
- events: 3.3.0
- glob-to-regexp: 0.4.1
- graceful-fs: 4.2.11
- json-parse-even-better-errors: 2.3.1
- loader-runner: 4.3.0
- mime-types: 2.1.35
- neo-async: 2.6.2
- schema-utils: 3.3.0
- tapable: 2.2.1
- terser-webpack-plugin: 5.3.10(@swc/core@1.9.1)(webpack@5.96.1(@swc/core@1.9.1))
- watchpack: 2.4.2
- webpack-sources: 3.2.3
- transitivePeerDependencies:
- - '@swc/core'
- - esbuild
- - uglify-js
-
- webpack@5.96.1(esbuild@0.23.1):
+ webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1):
dependencies:
'@types/eslint-scope': 3.7.7
'@types/estree': 1.0.6
@@ -30924,7 +30865,7 @@ snapshots:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
- terser-webpack-plugin: 5.3.10(esbuild@0.23.1)(webpack@5.96.1(esbuild@0.23.1))
+ terser-webpack-plugin: 5.3.10(@swc/core@1.9.1)(esbuild@0.23.1)(webpack@5.96.1(@swc/core@1.9.1)(esbuild@0.23.1))
watchpack: 2.4.2
webpack-sources: 3.2.3
transitivePeerDependencies: