Remove connect playground in dashboard (#4243)
## Problem solved Short description of the bug fixed or feature added <!-- start pr-codex --> --- ## PR-Codex overview The focus of this PR is to update links and paths related to the Connect Wallet Playground feature. ### Detailed summary - Updated links to direct to `https://playground.thirdweb.com/connect/sign-in/button` - Removed references to the deleted Connect Wallet Playground feature - Updated sidebar and navigation links - Updated redirects to new playground URL > The following files were skipped due to too many changes: `apps/dashboard/src/components/wallets/ConnectWalletMiniPlayground/MiniPlayground.tsx`, `pnpm-lock.yaml` > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` <!-- end pr-codex -->
This commit is contained in:
@@ -82,7 +82,6 @@
|
||||
"pluralize": "^8.0.0",
|
||||
"posthog-js": "1.128.3",
|
||||
"posthog-js-opensource": "npm:[email protected]",
|
||||
"prettier": "^3.3.2",
|
||||
"prism-react-renderer": "^2.3.1",
|
||||
"prismjs": "^1.29.0",
|
||||
"qrcode": "^1.5.3",
|
||||
@@ -137,10 +136,8 @@
|
||||
"dotenv": "^16.4.5",
|
||||
"eslint": "8.57.0",
|
||||
"eslint-config-biome": "^1.7.3",
|
||||
"eslint-config-prettier": "9.1.0",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-inclusive-language": "^2.2.1",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"eslint-plugin-promise": "^6.2.0",
|
||||
"eslint-plugin-react": "7.34.3",
|
||||
"eslint-plugin-react-compiler": "0.0.0-experimental-51a85ea-20240601",
|
||||
@@ -164,16 +161,8 @@
|
||||
"tw-components",
|
||||
"contract-ui"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"types",
|
||||
"tw-components"
|
||||
],
|
||||
"exclude": ["node_modules", "types", "tw-components"],
|
||||
"entrypoints": []
|
||||
},
|
||||
"browserslist": [
|
||||
"defaults",
|
||||
"unreleased versions",
|
||||
"not UCAndroid > 0"
|
||||
]
|
||||
"browserslist": ["defaults", "unreleased versions", "not UCAndroid > 0"]
|
||||
}
|
||||
|
||||
@@ -131,12 +131,17 @@ function redirects() {
|
||||
},
|
||||
{
|
||||
source: "/dashboard/connect",
|
||||
destination: "/dashboard/connect/playground",
|
||||
destination: "/dashboard/connect/in-app-wallets",
|
||||
permanent: false,
|
||||
},
|
||||
{
|
||||
source: "/dashboard/connect/playground",
|
||||
destination: "https://playground.thirdweb.com/connect/sign-in/button",
|
||||
permanent: false,
|
||||
},
|
||||
{
|
||||
source: "/dashboard/wallet",
|
||||
destination: "/dashboard/connect/playground",
|
||||
destination: "https://playground.thirdweb.com/connect/sign-in/button",
|
||||
permanent: false,
|
||||
},
|
||||
{
|
||||
@@ -161,7 +166,7 @@ function redirects() {
|
||||
},
|
||||
{
|
||||
source: "/dashboard/wallets",
|
||||
destination: "/dashboard/connect/playground",
|
||||
destination: "https://playground.thirdweb.com/connect/sign-in/button",
|
||||
permanent: false,
|
||||
},
|
||||
{
|
||||
@@ -181,7 +186,7 @@ function redirects() {
|
||||
},
|
||||
{
|
||||
source: "/dashboard/wallets/connect",
|
||||
destination: "/dashboard/connect/playground",
|
||||
destination: "https://playground.thirdweb.com/connect/sign-in/button",
|
||||
permanent: false,
|
||||
},
|
||||
{
|
||||
|
||||
@@ -8,10 +8,5 @@ const LOGGED_IN_ONLY_PATHS = [
|
||||
];
|
||||
|
||||
export function isLoginRequired(pathname: string) {
|
||||
// exceptions from LOGGED_IN_ONLY_PATHS
|
||||
if (pathname.startsWith("/dashboard/connect/playground")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return LOGGED_IN_ONLY_PATHS.some((path) => pathname.startsWith(path));
|
||||
}
|
||||
|
||||
@@ -7,20 +7,15 @@ const SIDEBAR_SECTIONS = [
|
||||
title: "Connect",
|
||||
items: [
|
||||
{
|
||||
id: "playground",
|
||||
title: "Playground",
|
||||
href: "/dashboard/connect/playground",
|
||||
id: "embedded-wallets",
|
||||
title: "In-App Wallets",
|
||||
href: "/dashboard/connect/in-app-wallets",
|
||||
},
|
||||
{
|
||||
id: "analytics",
|
||||
title: "Analytics",
|
||||
href: "/dashboard/connect/analytics",
|
||||
},
|
||||
{
|
||||
id: "embedded-wallets",
|
||||
title: "In-App Wallets",
|
||||
href: "/dashboard/connect/in-app-wallets",
|
||||
},
|
||||
{
|
||||
id: "ecosystem",
|
||||
title: "Ecosystem Wallets",
|
||||
@@ -36,6 +31,11 @@ const SIDEBAR_SECTIONS = [
|
||||
title: "Pay",
|
||||
href: "/dashboard/connect/pay",
|
||||
},
|
||||
{
|
||||
id: "playground",
|
||||
title: "Playground",
|
||||
href: "https://playground.thirdweb.com/connect/sign-in/button",
|
||||
},
|
||||
],
|
||||
},
|
||||
] satisfies Array<SidebarNavSection>;
|
||||
|
||||
@@ -79,7 +79,7 @@ export const slides: Slide[] = [
|
||||
<ListItem>
|
||||
<TrackedLink
|
||||
category={TRACK_CATEGORY}
|
||||
href="/dashboard/connect/playground"
|
||||
href="https://playground.thirdweb.com/connect/sign-in/button"
|
||||
isExternal
|
||||
label="auth"
|
||||
color="blue.500"
|
||||
|
||||
@@ -10,7 +10,7 @@ const showcaseMenus = [
|
||||
{
|
||||
id: "connect-icon",
|
||||
title: "Onboard users",
|
||||
href: "/dashboard/connect/playground",
|
||||
href: "https://playground.thirdweb.com/connect/sign-in/button",
|
||||
description: "Onboard anyone with every sign-in option for web2 & web3.",
|
||||
image: require("../../../public/assets/product-pages/connect/icon-connect.png"),
|
||||
},
|
||||
|
||||
@@ -203,7 +203,7 @@ const AppHeader: React.FC = () => {
|
||||
Home
|
||||
</LinkButton>
|
||||
<LinkButton
|
||||
href="/dashboard/connect/playground"
|
||||
href="/dashboard/connect"
|
||||
isActive={
|
||||
pathname.startsWith("/dashboard/connect") ||
|
||||
pathname.startsWith("/dashboard/payments")
|
||||
|
||||
@@ -111,7 +111,7 @@ export const PRODUCTS: SectionItemProps[] = [
|
||||
description:
|
||||
"Flexible user sign-up flow with wallet and social sign-in methods",
|
||||
link: "/connect",
|
||||
dashboardLink: "/dashboard/connect/playground",
|
||||
dashboardLink: "https://playground.thirdweb.com/connect/sign-in/button",
|
||||
icon: require("../../../../../public/assets/product-icons/wallet-sdk.png"),
|
||||
section: "connect",
|
||||
inLandingPage: true,
|
||||
|
||||
+14
-4
@@ -28,7 +28,6 @@ import { FormItem } from "../ConnectWalletPlayground/FormItem";
|
||||
import { ModalSizeButton } from "../ConnectWalletPlayground/ModalSizeButton";
|
||||
import { PreviewThirdwebProvider } from "../ConnectWalletPlayground/PreviewThirdwebProvider";
|
||||
import { ThemeButton } from "../ConnectWalletPlayground/ThemeButton";
|
||||
import { socialIconMapV2 } from "../ConnectWalletPlayground/WalletButton";
|
||||
import { usePlaygroundTheme } from "../ConnectWalletPlayground/usePlaygroundTheme";
|
||||
import { usePlaygroundWallets } from "../ConnectWalletPlayground/usePlaygroundWallets";
|
||||
import {
|
||||
@@ -36,6 +35,17 @@ import {
|
||||
walletInfoRecord,
|
||||
} from "../ConnectWalletPlayground/walletInfoRecord";
|
||||
|
||||
const phoneIcon =
|
||||
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzM1ODlfODYwMikiPgo8cmVjdCB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHJ4PSI4IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzU4OV84NjAyKSIvPgo8cmVjdCB4PSItMSIgeT0iLTEiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgcng9IjkuOCIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzM1ODlfODYwMikiLz4KPHBhdGggZD0iTTE4Ljg2MjIgMjYuODY0NkwxOS41MTk0IDI3LjUxODlDMTkuNTE5NCAyNy41MTg5IDIxLjA4MzcgMjkuMDczMSAyNS4zNTIxIDI0LjgyOTNDMjkuNjIwNSAyMC41ODU1IDI4LjA1NjEgMTkuMDMxMyAyOC4wNTYxIDE5LjAzMTNMMjcuNjQzIDE4LjYxODFDMjYuNjIxOCAxNy42MDQxIDI2LjUyNSAxNS45NzQ4IDI3LjQxNjIgMTQuNzg0NkwyOS4yMzYyIDEyLjM1MzVDMzAuMzM5OCAxMC44ODAyIDMyLjQ3MDQgMTAuNjg1MiAzMy43MzQzIDExLjk0MTlMMzYuMDAyMSAxNC4xOTUyQzM2LjYyNzUgMTQuODE5MiAzNy4wNDY0IDE1LjYyNTIgMzYuOTk1OSAxNi41MjA4QzM2Ljg2NTkgMTguODEzMSAzNS44Mjg4IDIzLjc0MzEgMzAuMDQ1MSAyOS40OTQ5QzIzLjkxMDUgMzUuNTkzNCAxOC4xNTQ0IDM1LjgzNjEgMTUuODAxNCAzNS42MTY1QzE1LjA1NiAzNS41NDcyIDE0LjQwODkgMzUuMTY4NyAxMy44ODc0IDM0LjY0ODdMMTEuODM2MyAzMi42MDkyQzEwLjQ0OTYgMzEuMjMyNiAxMC44Mzk2IDI4Ljg3MDkgMTIuNjEzNCAyNy45MDc0TDE1LjM3MjMgMjYuNDA2N0MxNi41MzY2IDI1Ljc3NCAxNy45NTIxIDI1Ljk2MDMgMTguODYyMiAyNi44NjQ2WiIgZmlsbD0id2hpdGUiLz4KPC9nPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzM1ODlfODYwMiIgeDE9IjI1LjUiIHkxPSItNi4yOTU3MmUtMDYiIHgyPSIzMC4yMDE2IiB5Mj0iNDcuNTM1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM4MzU4QkEiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjN0IxQ0Y3Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8zNTg5Xzg2MDIiIHgxPSIyNS41NjI1IiB5MT0iLTEuMDAwMDEiIHgyPSIzMC40NiIgeTI9IjQ4LjUxNTYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzgzNThCQSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM3QjFDRjciLz4KPC9saW5lYXJHcmFkaWVudD4KPGNsaXBQYXRoIGlkPSJjbGlwMF8zNTg5Xzg2MDIiPgo8cmVjdCB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHJ4PSI4IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=";
|
||||
|
||||
const socialIconMapV2 = {
|
||||
email: "/assets/connect/email.png",
|
||||
google: "assets/connect/google.png",
|
||||
facebook: "assets/connect/facebook.png",
|
||||
apple: "assets/connect/apple.png",
|
||||
phone: phoneIcon,
|
||||
};
|
||||
|
||||
// If loading a variable font, you don't need to specify the font weight
|
||||
const nounsDaoFont = londrinaSolidConstructor({
|
||||
subsets: ["latin"],
|
||||
@@ -287,7 +297,7 @@ export const MiniPlayground: React.FC<{
|
||||
|
||||
<Flex alignItems="center" gap={1}>
|
||||
<TrackedLink
|
||||
href="/dashboard/connect/playground"
|
||||
href="https://playground.thirdweb.com/connect/sign-in/button"
|
||||
color="blue.500"
|
||||
category={trackingCategory}
|
||||
label="see-all-wallets"
|
||||
@@ -449,7 +459,7 @@ export const MiniPlayground: React.FC<{
|
||||
|
||||
<Button
|
||||
as={Link}
|
||||
href="/dashboard/connect/playground"
|
||||
href="https://playground.thirdweb.com/connect/sign-in/button"
|
||||
fontSize={20}
|
||||
leftIcon={<Icon as={MdOutlineElectricBolt} />}
|
||||
color="black"
|
||||
@@ -505,7 +515,7 @@ export const MiniPlayground: React.FC<{
|
||||
as={TrackedLink}
|
||||
category={trackingCategory}
|
||||
label="build-your-own"
|
||||
href="/dashboard/connect/playground"
|
||||
href="https://playground.thirdweb.com/connect/sign-in/button"
|
||||
fontSize={20}
|
||||
leftIcon={<Icon as={MdOutlineElectricBolt} />}
|
||||
color="black"
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
.ColorInput {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
background-color: transparent;
|
||||
display: block;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 50%;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.ColorInput::-webkit-color-swatch {
|
||||
border-radius: 50%;
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.ColorInput::-webkit-color-swatch-wrapper {
|
||||
border: none;
|
||||
border-radius: 50%;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.ColorInput::-moz-color-swatch {
|
||||
border-radius: 50%;
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
import { Box, Flex, Input, Spacer } from "@chakra-ui/react";
|
||||
import { FormLabel } from "tw-components";
|
||||
import styles from "./ColorInput.module.css";
|
||||
|
||||
function hslToHex(h: number, s: number, l: number) {
|
||||
// biome-ignore lint/style/noParameterAssign: FIXME
|
||||
l /= 100;
|
||||
const a = (s * Math.min(l, 1 - l)) / 100;
|
||||
const f = (n: number) => {
|
||||
const k = (n + h / 30) % 12;
|
||||
const color = l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);
|
||||
return Math.round(255 * color)
|
||||
.toString(16)
|
||||
.padStart(2, "0");
|
||||
};
|
||||
return `#${f(0)}${f(8)}${f(4)}`;
|
||||
}
|
||||
|
||||
export function ColorInput(props: {
|
||||
value: string;
|
||||
name: string;
|
||||
onChange: (value: string) => void;
|
||||
onClick?: () => void;
|
||||
}) {
|
||||
let hexColor = props.value;
|
||||
if (props.value.startsWith("hsl(") && props.value.endsWith(")")) {
|
||||
const [h, s, l] = props.value
|
||||
.replace(/[^0-9.]/g, " ")
|
||||
.split(/\s+/)
|
||||
.filter((value) => value)
|
||||
.map(Number);
|
||||
|
||||
// if all three are numbers
|
||||
if (!Number.isNaN(h) && !Number.isNaN(s) && !Number.isNaN(l)) {
|
||||
hexColor = hslToHex(h, s, l);
|
||||
} else {
|
||||
// give up
|
||||
hexColor = props.value;
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<Box>
|
||||
<FormLabel>{props.name}</FormLabel>
|
||||
<Spacer height={2} />
|
||||
<Flex alignItems="center" gap={3} onClick={props.onClick}>
|
||||
<input
|
||||
onChange={(e) => {
|
||||
props.onChange(e.target.value);
|
||||
}}
|
||||
type="color"
|
||||
className={styles.ColorInput}
|
||||
value={hexColor}
|
||||
/>
|
||||
|
||||
<Input
|
||||
value={hexColor}
|
||||
onChange={(e) => {
|
||||
props.onChange(e.target.value);
|
||||
}}
|
||||
/>
|
||||
</Flex>
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,31 +0,0 @@
|
||||
import { Box, Flex, FormControl, Spacer, Switch } from "@chakra-ui/react";
|
||||
import { FormLabel, Text } from "tw-components";
|
||||
|
||||
export const SwitchFormItem: React.FC<{
|
||||
label: string;
|
||||
description: React.ReactNode;
|
||||
isChecked: boolean;
|
||||
onCheck: (isChecked: boolean) => void;
|
||||
}> = (props) => {
|
||||
return (
|
||||
<FormControl>
|
||||
<Flex gap={4} justifyContent="space-between" alignItems="center">
|
||||
<Box flex={1}>
|
||||
<FormLabel m={0}>{props.label}</FormLabel>
|
||||
<Spacer height={2} />
|
||||
<Text color="faded" fontSize={14} lineHeight={1.4}>
|
||||
{props.description}
|
||||
</Text>
|
||||
</Box>
|
||||
|
||||
<Switch
|
||||
size="lg"
|
||||
isChecked={props.isChecked}
|
||||
onChange={() => {
|
||||
props.onCheck(!props.isChecked);
|
||||
}}
|
||||
/>
|
||||
</Flex>
|
||||
</FormControl>
|
||||
);
|
||||
};
|
||||
@@ -1,186 +0,0 @@
|
||||
import { Flex, Icon, Image, Tooltip } from "@chakra-ui/react";
|
||||
import { replaceIpfsUrl } from "lib/sdk";
|
||||
import { AiFillStar, AiOutlineStar } from "react-icons/ai";
|
||||
import { Text } from "tw-components";
|
||||
|
||||
export function WalletButton(props: {
|
||||
name: string;
|
||||
subtitle?: string;
|
||||
icon: string;
|
||||
isChecked: boolean;
|
||||
onSelect: () => void;
|
||||
recommended?: boolean;
|
||||
onRecommendedClick?: () => void;
|
||||
}) {
|
||||
const { isChecked, onSelect, name, icon, subtitle } = props;
|
||||
return (
|
||||
<Flex
|
||||
borderRadius="lg"
|
||||
border="1px solid transparent"
|
||||
bg={isChecked ? "hsl(215.88deg 100% 60% / 15%)" : "inputBg"}
|
||||
_hover={
|
||||
!isChecked
|
||||
? {
|
||||
bg: "inputBg",
|
||||
borderColor: "borderColor",
|
||||
}
|
||||
: {
|
||||
borderColor: "blue.500",
|
||||
}
|
||||
}
|
||||
transition="background 100ms ease, border-color 100ms ease"
|
||||
alignItems="center"
|
||||
userSelect={"none"}
|
||||
pr={1}
|
||||
gap={1}
|
||||
>
|
||||
<Flex
|
||||
gap={3}
|
||||
alignItems="center"
|
||||
flexGrow={1}
|
||||
p={2}
|
||||
onClick={() => {
|
||||
onSelect();
|
||||
}}
|
||||
cursor="pointer"
|
||||
>
|
||||
<Image width={7} height={7} alt={name} src={replaceIpfsUrl(icon)} />
|
||||
|
||||
<Flex
|
||||
flexDir="column"
|
||||
justifyContent="center"
|
||||
flexGrow={1}
|
||||
alignSelf="stretch"
|
||||
>
|
||||
<Text
|
||||
fontWeight={500}
|
||||
fontSize={14}
|
||||
color={isChecked || subtitle ? "heading" : "paragraph"}
|
||||
>
|
||||
{name}
|
||||
</Text>
|
||||
{subtitle && (
|
||||
<Text fontSize={12} color="faded">
|
||||
{subtitle}
|
||||
</Text>
|
||||
)}
|
||||
</Flex>
|
||||
</Flex>
|
||||
|
||||
<RecommendedIconButton
|
||||
onClick={props.onRecommendedClick}
|
||||
isRecommended={props.recommended}
|
||||
/>
|
||||
</Flex>
|
||||
);
|
||||
}
|
||||
|
||||
export function RecommendedIconButton(props: {
|
||||
isRecommended?: boolean;
|
||||
onClick?: () => void;
|
||||
}) {
|
||||
return (
|
||||
<Tooltip
|
||||
hasArrow
|
||||
label={props.isRecommended ? "Recommended" : "Not Recommended"}
|
||||
placement="top"
|
||||
>
|
||||
<Flex
|
||||
justifyContent="center"
|
||||
alignItems="center"
|
||||
onClick={props.onClick}
|
||||
cursor="pointer"
|
||||
role="button"
|
||||
aria-label="Toggle Recommended"
|
||||
>
|
||||
<Icon
|
||||
as={props.isRecommended ? AiFillStar : AiOutlineStar}
|
||||
w={4}
|
||||
h={4}
|
||||
color={props.isRecommended ? "blue.500" : "faded"}
|
||||
/>
|
||||
</Flex>
|
||||
</Tooltip>
|
||||
);
|
||||
}
|
||||
|
||||
export function SocialButton(props: {
|
||||
name: string;
|
||||
icon: "email" | "google" | "facebook" | "apple" | "phone";
|
||||
onClick: () => void;
|
||||
isSelected: boolean;
|
||||
}) {
|
||||
return (
|
||||
<Flex
|
||||
borderRadius="lg"
|
||||
border="1px solid transparent"
|
||||
bg={props.isSelected ? "hsl(215.88deg 100% 60% / 15%)" : "inputBg"}
|
||||
_hover={
|
||||
!props.isSelected
|
||||
? {
|
||||
bg: "inputBg",
|
||||
borderColor: "borderColor",
|
||||
}
|
||||
: {
|
||||
borderColor: "blue.500",
|
||||
}
|
||||
}
|
||||
transition="background 100ms ease, border-color 100ms ease"
|
||||
alignItems="center"
|
||||
userSelect={"none"}
|
||||
pr={1}
|
||||
gap={1}
|
||||
>
|
||||
<Flex
|
||||
gap={3}
|
||||
alignItems="center"
|
||||
flexGrow={1}
|
||||
p={2}
|
||||
onClick={props.onClick}
|
||||
cursor="pointer"
|
||||
>
|
||||
<Image
|
||||
width={7}
|
||||
height={7}
|
||||
alt={props.name}
|
||||
src={socialIconMap[props.icon]}
|
||||
/>
|
||||
|
||||
<Text
|
||||
fontWeight={500}
|
||||
fontSize={14}
|
||||
color={props.isSelected ? "heading" : "paragraph"}
|
||||
>
|
||||
{props.name}
|
||||
</Text>
|
||||
</Flex>
|
||||
</Flex>
|
||||
);
|
||||
}
|
||||
|
||||
const googleIconUri =
|
||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MDUuNiIgaGVpZ2h0PSI3MjAiIHZpZXdCb3g9IjAgMCAxODYuNjkgMTkwLjUiIHhtbG5zOnY9Imh0dHBzOi8vdmVjdGEuaW8vbmFubyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTE4NC41ODMgNzY1LjE3MSkiPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMDg5LjMzMy02ODcuMjM5djM2Ljg4OGg1MS4yNjJjLTIuMjUxIDExLjg2My05LjAwNiAyMS45MDgtMTkuMTM3IDI4LjY2MmwzMC45MTMgMjMuOTg2YzE4LjAxMS0xNi42MjUgMjguNDAyLTQxLjA0NCAyOC40MDItNzAuMDUyIDAtNi43NTQtLjYwNi0xMy4yNDktMS43MzItMTkuNDgzeiIgZmlsbD0iIzQyODVmNCIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTQyLjcxNC02NTEuNzkxbC02Ljk3MiA1LjMzNy0yNC42NzkgMTkuMjIzaDBjMTUuNjczIDMxLjA4NiA0Ny43OTYgNTIuNTYxIDg1LjAzIDUyLjU2MSAyNS43MTcgMCA0Ny4yNzgtOC40ODYgNjMuMDM4LTIzLjAzM2wtMzAuOTEzLTIzLjk4NmMtOC40ODYgNS43MTUtMTkuMzEgOS4xNzktMzIuMTI1IDkuMTc5LTI0Ljc2NSAwLTQ1LjgwNi0xNi43MTItNTMuMzQtMzkuMjI2eiIgZmlsbD0iIzM0YTg1MyIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTc0LjM2NS03MTIuNjFjLTYuNDk0IDEyLjgxNS0xMC4yMTcgMjcuMjc2LTEwLjIxNyA0Mi42ODlzMy43MjMgMjkuODc0IDEwLjIxNyA0Mi42ODljMCAuMDg2IDMxLjY5My0yNC41OTIgMzEuNjkzLTI0LjU5Mi0xLjkwNS01LjcxNS0zLjAzMS0xMS43NzYtMy4wMzEtMTguMDk4czEuMTI2LTEyLjM4MyAzLjAzMS0xOC4wOTh6IiBmaWxsPSIjZmJiYzA1Ii8+PHBhdGggZD0iTS0xMDg5LjMzMy03MjcuMjQ0YzE0LjAyOCAwIDI2LjQ5NyA0Ljg0OSAzNi40NTUgMTQuMjAxbDI3LjI3Ni0yNy4yNzZjLTE2LjUzOS0xNS40MTMtMzguMDEzLTI0Ljg1Mi02My43MzEtMjQuODUyLTM3LjIzNCAwLTY5LjM1OSAyMS4zODgtODUuMDMyIDUyLjU2MWwzMS42OTIgMjQuNTkyYzcuNTMzLTIyLjUxNCAyOC41NzUtMzkuMjI2IDUzLjM0LTM5LjIyNnoiIGZpbGw9IiNlYTQzMzUiIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIvPjwvZz48L3N2Zz4=";
|
||||
const facebookIconUri =
|
||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iRWJlbmUgMSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgaWQ9ImZhY2Vib29rLWxvZ28tMjAxOSI+PHBhdGggZmlsbD0iIzE4NzdmMiIgZD0iTTEwMjQsNTEyQzEwMjQsMjI5LjIzMDE2LDc5NC43Njk3OCwwLDUxMiwwUzAsMjI5LjIzMDE2LDAsNTEyYzAsMjU1LjU1NCwxODcuMjMxLDQ2Ny4zNzAxMiw0MzIsNTA1Ljc3Nzc3VjY2MEgzMDJWNTEySDQzMlYzOTkuMkM0MzIsMjcwLjg3OTgyLDUwOC40Mzg1NCwyMDAsNjI1LjM4OTIyLDIwMCw2ODEuNDA3NjUsMjAwLDc0MCwyMTAsNzQwLDIxMFYzMzZINjc1LjQzNzEzQzYxMS44MzUwOCwzMzYsNTkyLDM3NS40NjY2Nyw1OTIsNDE1Ljk1NzI4VjUxMkg3MzRMNzExLjMsNjYwSDU5MnYzNTcuNzc3NzdDODM2Ljc2OSw5NzkuMzcwMTIsMTAyNCw3NjcuNTU0LDEwMjQsNTEyWiI+PC9wYXRoPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik03MTEuMyw2NjAsNzM0LDUxMkg1OTJWNDE1Ljk1NzI4QzU5MiwzNzUuNDY2NjcsNjExLjgzNTA4LDMzNiw2NzUuNDM3MTMsMzM2SDc0MFYyMTBzLTU4LjU5MjM1LTEwLTExNC42MTA3OC0xMEM1MDguNDM4NTQsMjAwLDQzMiwyNzAuODc5ODIsNDMyLDM5OS4yVjUxMkgzMDJWNjYwSDQzMnYzNTcuNzc3NzdhNTE3LjM5NjE5LDUxNy4zOTYxOSwwLDAsMCwxNjAsMFY2NjBaIj48L3BhdGg+PC9zdmc+";
|
||||
const appleIconUri =
|
||||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDM4IiBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCA0OTYuMjU1IDYwOC43MjgiIGlkPSJhcHBsZSI+PHBhdGggZmlsbD0iIzk5OSIgZD0iTTI3My44MSA1Mi45NzNDMzEzLjgwNi4yNTcgMzY5LjQxIDAgMzY5LjQxIDBzOC4yNzEgNDkuNTYyLTMxLjQ2MyA5Ny4zMDZjLTQyLjQyNiA1MC45OC05MC42NDkgNDIuNjM4LTkwLjY0OSA0Mi42MzhzLTkuMDU1LTQwLjA5NCAyNi41MTItODYuOTcxek0yNTIuMzg1IDE3NC42NjJjMjAuNTc2IDAgNTguNzY0LTI4LjI4NCAxMDguNDcxLTI4LjI4NCA4NS41NjIgMCAxMTkuMjIyIDYwLjg4MyAxMTkuMjIyIDYwLjg4M3MtNjUuODMzIDMzLjY1OS02NS44MzMgMTE1LjMzMWMwIDkyLjEzMyA4Mi4wMSAxMjMuODg1IDgyLjAxIDEyMy44ODVzLTU3LjMyOCAxNjEuMzU3LTEzNC43NjIgMTYxLjM1N2MtMzUuNTY1IDAtNjMuMjE1LTIzLjk2Ny0xMDAuNjg4LTIzLjk2Ny0zOC4xODggMC03Ni4wODQgMjQuODYxLTEwMC43NjYgMjQuODYxQzg5LjMzIDYwOC43MyAwIDQ1NS42NjYgMCAzMzIuNjI4YzAtMTIxLjA1MiA3NS42MTItMTg0LjU1NCAxNDYuNTMzLTE4NC41NTQgNDYuMTA1IDAgODEuODgzIDI2LjU4OCAxMDUuODUyIDI2LjU4OHoiPjwvcGF0aD48L3N2Zz4=";
|
||||
const emailIcon =
|
||||
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzM1ODlfODY0OSkiPgo8cmVjdCB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHJ4PSI4IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzU4OV84NjQ5KSIvPgo8cmVjdCB4PSItMSIgeT0iLTEiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgcng9IjkuOCIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzM1ODlfODY0OSkiLz4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAxXzM1ODlfODY0OSkiPgo8cGF0aCBkPSJNMjQgMTQuMjVDMTguNjE3MiAxNC4yNSAxNC4yNSAxOC42MTcyIDE0LjI1IDI0QzE0LjI1IDI5LjM4MjggMTguNjE3MiAzMy43NSAyNCAzMy43NUMyNC44OTg4IDMzLjc1IDI1LjYyNSAzNC40NzYyIDI1LjYyNSAzNS4zNzVDMjUuNjI1IDM2LjI3MzggMjQuODk4OCAzNyAyNCAzN0MxNi44MTk1IDM3IDExIDMxLjE4MDUgMTEgMjRDMTEgMTYuODE5NSAxNi44MTk1IDExIDI0IDExQzMxLjE4MDUgMTEgMzcgMTYuODE5NSAzNyAyNFYyNS42MjVDMzcgMjguMzE2NCAzNC44MTY0IDMwLjUgMzIuMTI1IDMwLjVDMzAuNjM3MSAzMC41IDI5LjMwMTYgMjkuODI5NyAyOC40MDc4IDI4Ljc3ODVDMjcuMjUgMjkuODQ0OSAyNS43MDEyIDMwLjUgMjQgMzAuNUMyMC40MDk4IDMwLjUgMTcuNSAyNy41OTAyIDE3LjUgMjRDMTcuNSAyMC40MDk4IDIwLjQwOTggMTcuNSAyNCAxNy41QzI1LjQxNjggMTcuNSAyNi43MjcgMTcuOTUyIDI3Ljc5MzQgMTguNzIzOEMyOC4wODI4IDE4LjQ2OTkgMjguNDU4NiAxOC4zMTI1IDI4Ljg3NSAxOC4zMTI1QzI5Ljc3MzggMTguMzEyNSAzMC41IDE5LjAzODcgMzAuNSAxOS45Mzc1VjI1LjYyNUMzMC41IDI2LjUyMzggMzEuMjI2MiAyNy4yNSAzMi4xMjUgMjcuMjVDMzMuMDIzOCAyNy4yNSAzMy43NSAyNi41MjM4IDMzLjc1IDI1LjYyNVYyNEMzMy43NSAxOC42MTcyIDI5LjM4MjggMTQuMjUgMjQgMTQuMjVaTTI3LjI1IDI0QzI3LjI1IDIzLjEzOCAyNi45MDc2IDIyLjMxMTQgMjYuMjk4MSAyMS43MDE5QzI1LjY4ODYgMjEuMDkyNCAyNC44NjIgMjAuNzUgMjQgMjAuNzVDMjMuMTM4IDIwLjc1IDIyLjMxMTQgMjEuMDkyNCAyMS43MDE5IDIxLjcwMTlDMjEuMDkyNCAyMi4zMTE0IDIwLjc1IDIzLjEzOCAyMC43NSAyNEMyMC43NSAyNC44NjIgMjEuMDkyNCAyNS42ODg2IDIxLjcwMTkgMjYuMjk4MUMyMi4zMTE0IDI2LjkwNzYgMjMuMTM4IDI3LjI1IDI0IDI3LjI1QzI0Ljg2MiAyNy4yNSAyNS42ODg2IDI2LjkwNzYgMjYuMjk4MSAyNi4yOTgxQzI2LjkwNzYgMjUuNjg4NiAyNy4yNSAyNC44NjIgMjcuMjUgMjRaIiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8zNTg5Xzg2NDkiIHgxPSIyNS41IiB5MT0iLTYuMjk1NzJlLTA2IiB4Mj0iMzAuMjAxNiIgeTI9IjQ3LjUzNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjODM1OEJBIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzdCMUNGNyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfMzU4OV84NjQ5IiB4MT0iMjUuNTYyNSIgeTE9Ii0xLjAwMDAxIiB4Mj0iMzAuNDYiIHkyPSI0OC41MTU2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM4MzU4QkEiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjN0IxQ0Y3Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMzU4OV84NjQ5Ij4KPHJlY3Qgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4IiByeD0iOCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPGNsaXBQYXRoIGlkPSJjbGlwMV8zNTg5Xzg2NDkiPgo8cmVjdCB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMSAxMSkiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K";
|
||||
const phoneIcon =
|
||||
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzM1ODlfODYwMikiPgo8cmVjdCB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHJ4PSI4IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzU4OV84NjAyKSIvPgo8cmVjdCB4PSItMSIgeT0iLTEiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgcng9IjkuOCIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzM1ODlfODYwMikiLz4KPHBhdGggZD0iTTE4Ljg2MjIgMjYuODY0NkwxOS41MTk0IDI3LjUxODlDMTkuNTE5NCAyNy41MTg5IDIxLjA4MzcgMjkuMDczMSAyNS4zNTIxIDI0LjgyOTNDMjkuNjIwNSAyMC41ODU1IDI4LjA1NjEgMTkuMDMxMyAyOC4wNTYxIDE5LjAzMTNMMjcuNjQzIDE4LjYxODFDMjYuNjIxOCAxNy42MDQxIDI2LjUyNSAxNS45NzQ4IDI3LjQxNjIgMTQuNzg0NkwyOS4yMzYyIDEyLjM1MzVDMzAuMzM5OCAxMC44ODAyIDMyLjQ3MDQgMTAuNjg1MiAzMy43MzQzIDExLjk0MTlMMzYuMDAyMSAxNC4xOTUyQzM2LjYyNzUgMTQuODE5MiAzNy4wNDY0IDE1LjYyNTIgMzYuOTk1OSAxNi41MjA4QzM2Ljg2NTkgMTguODEzMSAzNS44Mjg4IDIzLjc0MzEgMzAuMDQ1MSAyOS40OTQ5QzIzLjkxMDUgMzUuNTkzNCAxOC4xNTQ0IDM1LjgzNjEgMTUuODAxNCAzNS42MTY1QzE1LjA1NiAzNS41NDcyIDE0LjQwODkgMzUuMTY4NyAxMy44ODc0IDM0LjY0ODdMMTEuODM2MyAzMi42MDkyQzEwLjQ0OTYgMzEuMjMyNiAxMC44Mzk2IDI4Ljg3MDkgMTIuNjEzNCAyNy45MDc0TDE1LjM3MjMgMjYuNDA2N0MxNi41MzY2IDI1Ljc3NCAxNy45NTIxIDI1Ljk2MDMgMTguODYyMiAyNi44NjQ2WiIgZmlsbD0id2hpdGUiLz4KPC9nPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzM1ODlfODYwMiIgeDE9IjI1LjUiIHkxPSItNi4yOTU3MmUtMDYiIHgyPSIzMC4yMDE2IiB5Mj0iNDcuNTM1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM4MzU4QkEiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjN0IxQ0Y3Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8zNTg5Xzg2MDIiIHgxPSIyNS41NjI1IiB5MT0iLTEuMDAwMDEiIHgyPSIzMC40NiIgeTI9IjQ4LjUxNTYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzgzNThCQSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM3QjFDRjciLz4KPC9saW5lYXJHcmFkaWVudD4KPGNsaXBQYXRoIGlkPSJjbGlwMF8zNTg5Xzg2MDIiPgo8cmVjdCB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHJ4PSI4IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=";
|
||||
|
||||
const socialIconMap = {
|
||||
email: emailIcon,
|
||||
google: googleIconUri,
|
||||
facebook: facebookIconUri,
|
||||
apple: appleIconUri,
|
||||
phone: phoneIcon,
|
||||
};
|
||||
|
||||
export const socialIconMapV2 = {
|
||||
email: "/assets/connect/email.png",
|
||||
google: "assets/connect/google.png",
|
||||
facebook: "assets/connect/facebook.png",
|
||||
apple: "assets/connect/apple.png",
|
||||
phone: phoneIcon,
|
||||
};
|
||||
@@ -1,75 +0,0 @@
|
||||
type WalletSetupOptions = {
|
||||
imports: string[];
|
||||
wallets?: string;
|
||||
recommendedWallets?: string;
|
||||
smartWalletOptions?: {
|
||||
gasless: boolean;
|
||||
};
|
||||
connectWallet: {
|
||||
locale?: string;
|
||||
theme?: string;
|
||||
connectButton?: string;
|
||||
connectModal?: string;
|
||||
// auth?: string;
|
||||
modalTitle?: string;
|
||||
chain?: string;
|
||||
modalTitleIconUrl?: string;
|
||||
welcomeScreen?: string;
|
||||
termsOfServiceUrl?: string;
|
||||
privacyPolicyUrl?: string;
|
||||
showThirdwebBranding?: string;
|
||||
};
|
||||
baseTheme: "light" | "dark";
|
||||
colorOverrides: Record<string, string>;
|
||||
};
|
||||
|
||||
export function getCode(options: WalletSetupOptions) {
|
||||
const hasThemeOverrides = Object.keys(options.colorOverrides).length > 0;
|
||||
const reactImports = [];
|
||||
|
||||
if (hasThemeOverrides) {
|
||||
const themeFn = options.baseTheme === "dark" ? "darkTheme" : "lightTheme";
|
||||
|
||||
options.connectWallet.theme = `${themeFn}(${JSON.stringify({
|
||||
colors: options.colorOverrides,
|
||||
})})`;
|
||||
|
||||
reactImports.push(themeFn);
|
||||
}
|
||||
|
||||
const imports = [...new Set(options.imports)];
|
||||
|
||||
return `\
|
||||
import { ThirdwebProvider, ConnectButton, ${reactImports.join(", ")} } from "thirdweb/react";${options.smartWalletOptions ? `\nimport { sepolia } from "thirdweb/chains"` : ""}
|
||||
${imports.length > 0 ? `import { ${imports.join(",")} } from "thirdweb/wallets";` : ""}
|
||||
|
||||
const client = createThirdwebClient({
|
||||
clientId: "YOUR_CLIENT_ID",
|
||||
});
|
||||
|
||||
${options.wallets ? `const wallets = ${options.wallets};` : ""}
|
||||
|
||||
export default function App() {
|
||||
return (
|
||||
<ThirdwebProvider>
|
||||
<ConnectButton client={client} ${options.wallets ? "wallets={wallets}" : ""} ${
|
||||
options.smartWalletOptions
|
||||
? `accountAbstraction={{
|
||||
chain: sepolia,
|
||||
factoryAddress: 'YOUR_FACTORY_ADDRESS',
|
||||
gasless: ${options.smartWalletOptions.gasless},
|
||||
}}`
|
||||
: ""
|
||||
} ${renderProps(options.connectWallet)} />
|
||||
</ThirdwebProvider>
|
||||
);
|
||||
}`;
|
||||
}
|
||||
function renderProps(obj: Record<string, string | undefined>): string {
|
||||
return Object.entries(obj)
|
||||
.filter((x) => x[1] !== undefined)
|
||||
.map(([key, value]) => {
|
||||
return `${key}={${value}}`;
|
||||
})
|
||||
.join(" ");
|
||||
}
|
||||
@@ -14,20 +14,15 @@ type ConnectSidebarProps = {
|
||||
|
||||
const links: Route[] = [
|
||||
{
|
||||
path: "/dashboard/connect/playground",
|
||||
title: "Playground",
|
||||
name: "playground",
|
||||
path: "/dashboard/connect/in-app-wallets",
|
||||
title: "In-App Wallets",
|
||||
name: "embedded-wallets",
|
||||
},
|
||||
{
|
||||
path: "/dashboard/connect/analytics",
|
||||
title: "Analytics",
|
||||
name: "analytics",
|
||||
},
|
||||
{
|
||||
path: "/dashboard/connect/in-app-wallets",
|
||||
title: "In-App Wallets",
|
||||
name: "embedded-wallets",
|
||||
},
|
||||
{
|
||||
path: "/dashboard/connect/ecosystem",
|
||||
title: "Ecosystem Wallets",
|
||||
@@ -38,12 +33,16 @@ const links: Route[] = [
|
||||
title: "Account Abstraction",
|
||||
name: "account-abstraction",
|
||||
},
|
||||
|
||||
{
|
||||
path: "/dashboard/connect/pay",
|
||||
title: "Pay",
|
||||
name: "pay-settings",
|
||||
},
|
||||
{
|
||||
name: "playground",
|
||||
title: "Playground",
|
||||
path: "https://playground.thirdweb.com/connect/sign-in/button",
|
||||
},
|
||||
];
|
||||
|
||||
export const ConnectSidebar: React.FC<ConnectSidebarProps> = ({
|
||||
|
||||
@@ -57,6 +57,7 @@ export const NavLink: ComponentWithChildren<NavLinkProps> = ({
|
||||
height={7}
|
||||
display="flex"
|
||||
alignItems="center"
|
||||
isExternal={href.startsWith("https")}
|
||||
>
|
||||
<Skeleton isLoaded={!loading}>
|
||||
<Heading
|
||||
|
||||
@@ -28,9 +28,6 @@ export enum PageId {
|
||||
// thirdweb..com/tos
|
||||
ToS = "tos-page",
|
||||
|
||||
// thirdweb.com/cli/login
|
||||
CliLoginPage = "cli-login-page",
|
||||
|
||||
// thirdweb.com/contract-extensions
|
||||
// ContractExtensionsLanding = "contract-extensions-landing",
|
||||
|
||||
@@ -81,8 +78,6 @@ export enum PageId {
|
||||
// thirdweb.com/ui-components
|
||||
UIComponentsLanding = "ui-components-landing",
|
||||
|
||||
// thirdweb.com/build-base
|
||||
BuildBaseLanding = "build-base-landing",
|
||||
// thirdweb.com/hackathon/earn
|
||||
HackathonEarnLanding = "earn-thirdweb-hacakthon",
|
||||
// thirdweb.com/grant/superchain
|
||||
@@ -100,17 +95,12 @@ export enum PageId {
|
||||
// thirdweb.com/dashboard/infrastructure/storage
|
||||
DashboardSettingsStorage = "dashboard-storage",
|
||||
|
||||
// thirdweb.com/dashboard/connect/playground
|
||||
DashboardConnectPlayground = "dashboard-wallets-connect",
|
||||
// thirdweb.com/dashboard/connect/smart-wallet
|
||||
DashboardConnectAccountAbstraction = "dashboard-wallets-smart-wallet",
|
||||
// thirdweb.com/dashboard/connect/embedded
|
||||
DashboardConnectEmbeddedWallets = "dashboard-wallets-embedded",
|
||||
// thirdweb.com/dashboard/connect/analytics
|
||||
DashboardConnectAnalytics = "dashboard-wallets-analytics",
|
||||
// thirdweb.com/dashboard/connect/pay
|
||||
DashboardConnectPay = "dashboard-wallets-pay",
|
||||
|
||||
// thirdweb.com/dashboard/contracts/build
|
||||
DashboardContractsBuild = "dashboard-contracts-build",
|
||||
|
||||
@@ -132,9 +122,6 @@ export enum PageId {
|
||||
// thirdweb.com/gas
|
||||
GasEstimator = "gas-estimator",
|
||||
|
||||
// thirdweb.com/chainlist
|
||||
ChainsLanding = "chains-landing",
|
||||
|
||||
// thirdweb.com/404
|
||||
PageNotFound = "page-not-found",
|
||||
|
||||
@@ -204,10 +191,6 @@ export enum PageId {
|
||||
// example: thirdweb.com/goerli/0x2eaDAa60dBB74Ead3E20b23E4C5A0Dd789932846
|
||||
DeployedContract = "deployed-contract",
|
||||
|
||||
// thirdweb.com/:network
|
||||
// example: thirdweb.com/ethereum
|
||||
ChainLanding = "chain-landing",
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// community pages
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -215,5 +198,4 @@ export enum PageId {
|
||||
Ambassadors = "ambassadors",
|
||||
Community = "community",
|
||||
StartupProgram = "startup-program",
|
||||
Support = "support",
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ const ConnectLanding: ThirdwebNextPage = () => {
|
||||
titleWithGradient="connect users to web3"
|
||||
subtitle="Onboard every user, connect to any wallet, and build apps that anyone can use — with in-app wallets, account abstraction, and fiat & crypto payments."
|
||||
trackingCategory={TRACKING_CATEGORY}
|
||||
ctaLink="/dashboard/connect/playground"
|
||||
ctaLink="https://playground.thirdweb.com/connect/sign-in/button"
|
||||
contactUsTitle="Book Demo"
|
||||
gradient="linear(to-r, #4490FF, #4490FF)"
|
||||
lottie={connectLottie}
|
||||
@@ -361,7 +361,7 @@ const ConnectLanding: ThirdwebNextPage = () => {
|
||||
mobileImage={require("../../public/assets/product-pages/connect/mobile-connection.png")}
|
||||
TRACKING_CATEGORY={TRACKING_CATEGORY}
|
||||
direction="horizontal"
|
||||
href="/dashboard/connect/playground"
|
||||
href="https://playground.thirdweb.com/connect/sign-in/button"
|
||||
/>
|
||||
<LandingCardWithImage
|
||||
title="Production-grade infrastructure"
|
||||
@@ -369,7 +369,7 @@ const ConnectLanding: ThirdwebNextPage = () => {
|
||||
image={require("../../public/assets/product-pages/connect/desktop-scale.png")}
|
||||
mobileImage={require("../../public/assets/product-pages/connect/mobile-scale.png")}
|
||||
TRACKING_CATEGORY={TRACKING_CATEGORY}
|
||||
href="/dashboard/connect/playground"
|
||||
href="https://playground.thirdweb.com/connect/sign-in/button"
|
||||
/>
|
||||
</LandingGridSection>
|
||||
</Flex>
|
||||
|
||||
@@ -1,373 +0,0 @@
|
||||
import { Box, Flex, Grid, Icon, SlideFade, Spacer } from "@chakra-ui/react";
|
||||
import { ChakraNextImage } from "components/Image";
|
||||
import { AppLayout } from "components/app-layouts/app";
|
||||
import { ConnectWalletPlayground } from "components/wallets/ConnectWalletPlayground/Playground";
|
||||
import { SupportedPlatformLink } from "components/wallets/SupportedPlatformLink";
|
||||
import { ConnectSidebar } from "core-ui/sidebar/connect";
|
||||
import { getAbsoluteUrl } from "lib/vercel-utils";
|
||||
import { NextSeo } from "next-seo";
|
||||
import { PageId } from "page-id";
|
||||
import { useEffect, useState } from "react";
|
||||
import { AiOutlineArrowRight } from "react-icons/ai";
|
||||
import { Button, Card, Heading, Text, TrackedLink } from "tw-components";
|
||||
import type { ThirdwebNextPage } from "utils/types";
|
||||
|
||||
const TRACKING_CATEGORY = "connect-playground";
|
||||
|
||||
const seo = {
|
||||
title: "Build Your Own Connect Wallet Modal | Connect",
|
||||
desc: "Onboard your users to web3 with a beautiful Connect Wallet modal, customizable auth flows, and sign-in for web2 & web3 — in a few lines of code.",
|
||||
};
|
||||
|
||||
const DashboardConnectPlayground: ThirdwebNextPage = () => {
|
||||
return (
|
||||
<Box>
|
||||
<NextSeo
|
||||
title={seo.title}
|
||||
description={seo.desc}
|
||||
openGraph={{
|
||||
title: seo.title,
|
||||
description: seo.desc,
|
||||
images: [
|
||||
{
|
||||
url: `${getAbsoluteUrl()}/assets/og-image/connect-wallet.png`,
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: seo.title,
|
||||
},
|
||||
],
|
||||
}}
|
||||
/>
|
||||
|
||||
<Heading size="title.xl" as="h1">
|
||||
Playground
|
||||
</Heading>
|
||||
<Spacer height={4} />
|
||||
<Text fontWeight={500}>
|
||||
A complete toolkit for connecting wallets to apps, UI components that
|
||||
work out of the box, and hooks that let you build custom Connect Wallet
|
||||
experiences.
|
||||
</Text>
|
||||
|
||||
<Spacer height={5} />
|
||||
<Flex alignItems="center" gap={2}>
|
||||
<Text mr={2} display={["none", "block"]} fontSize={12}>
|
||||
Supports
|
||||
</Text>
|
||||
<SupportedPlatformLink
|
||||
trackingCategory={TRACKING_CATEGORY}
|
||||
size="sm"
|
||||
platform="React"
|
||||
href="https://portal.thirdweb.com/typescript/v5/react/components/ConnectButton"
|
||||
/>
|
||||
<SupportedPlatformLink
|
||||
trackingCategory={TRACKING_CATEGORY}
|
||||
size="sm"
|
||||
platform="React Native"
|
||||
href="https://portal.thirdweb.com/react-native/latest/components/ConnectWallet"
|
||||
/>
|
||||
<SupportedPlatformLink
|
||||
trackingCategory={TRACKING_CATEGORY}
|
||||
size="sm"
|
||||
platform="Unity"
|
||||
href="https://portal.thirdweb.com/unity/wallets/prefab"
|
||||
/>
|
||||
</Flex>
|
||||
<Spacer height={12} />
|
||||
|
||||
<ConnectWalletPlayground trackingCategory={TRACKING_CATEGORY} />
|
||||
|
||||
<Spacer height={20} />
|
||||
<BuildCustomBanner />
|
||||
<Spacer height={20} />
|
||||
|
||||
<FooterSection />
|
||||
</Box>
|
||||
);
|
||||
};
|
||||
|
||||
function FooterSection() {
|
||||
return (
|
||||
<Grid templateColumns={["1fr", "1fr 1fr"]} gap={5}>
|
||||
<ViewDocs />
|
||||
<RelevantGuides />
|
||||
</Grid>
|
||||
);
|
||||
}
|
||||
|
||||
function ViewDocs() {
|
||||
return (
|
||||
<Card p={5}>
|
||||
<Flex gap={2} alignItems="center">
|
||||
<Heading fontSize={16} as="h3">
|
||||
View Docs
|
||||
</Heading>
|
||||
<Icon as={AiOutlineArrowRight} width={5} height={5} />
|
||||
</Flex>
|
||||
|
||||
<Spacer height={6} />
|
||||
|
||||
<Grid templateColumns={"1fr 1fr"} gap={3} maxW="400px">
|
||||
<SupportedPlatformLink
|
||||
trackingCategory={TRACKING_CATEGORY}
|
||||
size="md"
|
||||
noBorder
|
||||
platform="React"
|
||||
href="https://portal.thirdweb.com/typescript/v5/react/components/ConnectButton"
|
||||
/>
|
||||
|
||||
<SupportedPlatformLink
|
||||
trackingCategory={TRACKING_CATEGORY}
|
||||
noBorder
|
||||
size="md"
|
||||
platform="Unity"
|
||||
href="https://portal.thirdweb.com/unity/wallets/prefab"
|
||||
/>
|
||||
<SupportedPlatformLink
|
||||
trackingCategory={TRACKING_CATEGORY}
|
||||
noBorder
|
||||
size="md"
|
||||
platform="React Native"
|
||||
href="https://portal.thirdweb.com/react-native/latest/components/ConnectWallet"
|
||||
/>
|
||||
<SupportedPlatformLink
|
||||
trackingCategory={TRACKING_CATEGORY}
|
||||
noBorder
|
||||
size="md"
|
||||
platform="TypeScript"
|
||||
href="https://portal.thirdweb.com/typescript/v5/connecting-wallets"
|
||||
/>
|
||||
</Grid>
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
|
||||
function RelevantGuides() {
|
||||
return (
|
||||
<Card p={5}>
|
||||
<Flex gap={2} alignItems="center">
|
||||
<Heading fontSize={16} as="h3">
|
||||
Relevant Guides
|
||||
</Heading>
|
||||
<Icon as={AiOutlineArrowRight} width={5} height={5} />
|
||||
</Flex>
|
||||
|
||||
<Spacer height={5} />
|
||||
|
||||
<Flex gap={3} flexDirection="column">
|
||||
<GuideLink
|
||||
href="https://blog.thirdweb.com/web3-wallet/"
|
||||
label="what-is-web3-wallet"
|
||||
>
|
||||
What is a web3 wallet?
|
||||
</GuideLink>
|
||||
|
||||
<GuideLink
|
||||
href="https://portal.thirdweb.com/typescript/v5"
|
||||
label="sdk-v5-get-started"
|
||||
>
|
||||
Get started with thirdweb SDK
|
||||
</GuideLink>
|
||||
|
||||
<GuideLink
|
||||
href="https://portal.thirdweb.com/typescript/v5/react/components/ConnectButton"
|
||||
label="add-connect-wallet"
|
||||
>
|
||||
How to Add a Connect Wallet Button to Your Website
|
||||
</GuideLink>
|
||||
|
||||
<GuideLink
|
||||
href="https://portal.thirdweb.com/connect/in-app-wallet/how-to/enable-gasless"
|
||||
label="gasless-tx"
|
||||
>
|
||||
Enable Gasless Transactions
|
||||
</GuideLink>
|
||||
</Flex>
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
|
||||
function GuideLink(props: {
|
||||
label: string;
|
||||
children: React.ReactNode;
|
||||
href: string;
|
||||
}) {
|
||||
return (
|
||||
<TrackedLink
|
||||
category={TRACKING_CATEGORY}
|
||||
label={"guide"}
|
||||
trackingProps={{
|
||||
guide: props.label,
|
||||
}}
|
||||
href={props.href}
|
||||
color="paragraph"
|
||||
isExternal
|
||||
_hover={{
|
||||
color: "blue.500",
|
||||
}}
|
||||
>
|
||||
{props.children}
|
||||
</TrackedLink>
|
||||
);
|
||||
}
|
||||
|
||||
const bannerPosters = [
|
||||
{
|
||||
img: require("../../../../public/assets/connect/pixels-cw.png"),
|
||||
position: "flex-end",
|
||||
padding: 0,
|
||||
},
|
||||
{
|
||||
img: require("../../../../public/assets/connect/w3w-cw.png"),
|
||||
position: "center",
|
||||
padding: 4,
|
||||
},
|
||||
{
|
||||
img: require("../../../../public/assets/connect/lv-cw.png"),
|
||||
position: "flex-end",
|
||||
padding: 0,
|
||||
},
|
||||
];
|
||||
|
||||
function BuildCustomBanner() {
|
||||
const [bannerImageIndex, setBannerImageIndex] = useState(1);
|
||||
|
||||
// update banner image every 3 seconds
|
||||
// legitimate use-case
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
useEffect(() => {
|
||||
const interval = setInterval(() => {
|
||||
setBannerImageIndex((prev) => {
|
||||
const nextIndex = prev + 1;
|
||||
if (nextIndex === bannerPosters.length) {
|
||||
return 0;
|
||||
}
|
||||
return nextIndex;
|
||||
});
|
||||
}, 3000);
|
||||
return () => clearInterval(interval);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Box
|
||||
as="article"
|
||||
bg="bgWhite"
|
||||
border="1px solid"
|
||||
borderColor="borderColor"
|
||||
borderRadius="lg"
|
||||
overflow="hidden"
|
||||
>
|
||||
<Grid templateColumns={["1fr", "1fr 1fr"]}>
|
||||
{/* Left */}
|
||||
<Box px={["6", "14"]} py="8">
|
||||
<Text color="faded">Hooks & Functions</Text>
|
||||
<Spacer h={2} />
|
||||
<Heading fontSize={32} letterSpacing={"-0.02em"}>
|
||||
Build a completely custom onboarding experience.
|
||||
</Heading>
|
||||
|
||||
<Spacer h={6} />
|
||||
<Flex alignItems="center" gap={2} flexWrap="wrap">
|
||||
<SupportedPlatformLink
|
||||
trackingCategory={TRACKING_CATEGORY}
|
||||
size="sm"
|
||||
platform="React"
|
||||
href="https://portal.thirdweb.com/typescript/v5/react/components/ConnectButton"
|
||||
/>
|
||||
<SupportedPlatformLink
|
||||
trackingCategory={TRACKING_CATEGORY}
|
||||
size="sm"
|
||||
platform="React Native"
|
||||
href="https://portal.thirdweb.com/react-native/latest/components/ConnectWallet"
|
||||
/>
|
||||
<SupportedPlatformLink
|
||||
trackingCategory={TRACKING_CATEGORY}
|
||||
size="sm"
|
||||
platform="Unity"
|
||||
href="https://portal.thirdweb.com/unity/wallets/prefab"
|
||||
/>
|
||||
<SupportedPlatformLink
|
||||
trackingCategory={TRACKING_CATEGORY}
|
||||
size="sm"
|
||||
platform="TypeScript"
|
||||
href="https://portal.thirdweb.com/wallet-sdk/latest/usage"
|
||||
/>
|
||||
</Flex>
|
||||
|
||||
<Spacer h={6} />
|
||||
<Flex justifyContent={["center", "flex-start"]}>
|
||||
<Button
|
||||
w={["100%", "auto"]}
|
||||
as={TrackedLink}
|
||||
isExternal
|
||||
category={TRACKING_CATEGORY}
|
||||
label="custom-ui-cta"
|
||||
href="https://portal.thirdweb.com/typescript/v5/react/connecting-wallets"
|
||||
bg="bgBlack"
|
||||
color="bgWhite"
|
||||
minW="180px"
|
||||
p={6}
|
||||
_hover={{
|
||||
textDecor: "none",
|
||||
}}
|
||||
>
|
||||
Get Started
|
||||
</Button>
|
||||
</Flex>
|
||||
</Box>
|
||||
{/* Right */}
|
||||
<Box>
|
||||
{/* Preload images */}
|
||||
<Box visibility="hidden" w={0} h={0}>
|
||||
{bannerPosters.map((poster) => {
|
||||
return (
|
||||
<ChakraNextImage
|
||||
priority={true}
|
||||
src={bannerPosters[0].img}
|
||||
alt=""
|
||||
key={poster.img}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</Box>
|
||||
|
||||
<SlideFade
|
||||
in
|
||||
offsetY={80}
|
||||
key={bannerImageIndex}
|
||||
transition={{
|
||||
enter: {
|
||||
duration: 0.3,
|
||||
},
|
||||
}}
|
||||
>
|
||||
<Flex
|
||||
h={["220px", "320px"]}
|
||||
justifyContent="center"
|
||||
alignItems={bannerPosters[bannerImageIndex].position}
|
||||
p={bannerPosters[bannerImageIndex].padding}
|
||||
>
|
||||
<ChakraNextImage
|
||||
alt=""
|
||||
w={["calc(100% - 20px)", "80%"]}
|
||||
maxH="100%"
|
||||
src={bannerPosters[bannerImageIndex].img}
|
||||
/>
|
||||
</Flex>
|
||||
</SlideFade>
|
||||
</Box>
|
||||
</Grid>
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
DashboardConnectPlayground.getLayout = (page, props) => (
|
||||
<AppLayout {...props} hasSidebar={true} noOverflowX={true}>
|
||||
<ConnectSidebar activePage="playground" />
|
||||
{page}
|
||||
</AppLayout>
|
||||
);
|
||||
|
||||
DashboardConnectPlayground.pageId = PageId.DashboardConnectPlayground;
|
||||
|
||||
export default DashboardConnectPlayground;
|
||||
@@ -157,7 +157,7 @@ export const sidebar: SideBar = {
|
||||
},
|
||||
{
|
||||
name: "Playground",
|
||||
href: "https://thirdweb.com/dashboard/connect/playground",
|
||||
href: "https://playground.thirdweb.com/connect/sign-in/button",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -55,7 +55,7 @@ Instead, you only need to pass the clientId when necessary (we'll talk more abou
|
||||
```tsx
|
||||
import { ThirdwebProvider } from "thirdweb/react";
|
||||
|
||||
<ThirdwebProvider>
|
||||
<ThirdwebProvider>
|
||||
...
|
||||
</ThirdwebProvider>
|
||||
```
|
||||
@@ -84,7 +84,7 @@ import { ThirdwebProvider } from "thirdweb/react"; // v5
|
||||
Similar to v4's `ConnectWallet` component, the latest version has the [`ConnectButton`](/connect/sign-in/ConnectButton) component which has the same functionality.
|
||||
|
||||
However, unlike with v4 where the number of supported wallets is limited (about 20), and adding more wallets mean your app becomes heavier,
|
||||
the SDK v5 supports [over 300 wallets](/typescript/v5/supported-wallets) with virtually no impact to your application.
|
||||
the SDK v5 supports [over 300 wallets](/typescript/v5/supported-wallets) with virtually no impact to your application.
|
||||
|
||||
Here's how you use the new `ConnectButton`:
|
||||
|
||||
@@ -99,7 +99,7 @@ const client = createThirdwebClient({
|
||||
<ConnectButton client={client} />
|
||||
```
|
||||
|
||||
To learn more about the new `ConnectButton`, head over to the [Playground](https://thirdweb.com/dashboard/connect/playground).
|
||||
To learn more about the new `ConnectButton`, head over to the [Playground](https://playground.thirdweb.com/connect/sign-in/button).
|
||||
|
||||
Notice how you are passing the thirdweb client to the component itself and not to the `ThirdwebProvider` like in v4?
|
||||
By not putting every config inside the context wrapper, we were able to make the SDK v5 much more lightweight since you only load what you need!
|
||||
|
||||
Generated
+3
-68
@@ -326,9 +326,6 @@ importers:
|
||||
posthog-js-opensource:
|
||||
specifier: npm:[email protected]
|
||||
version: [email protected]
|
||||
prettier:
|
||||
specifier: ^3.3.2
|
||||
version: 3.3.2
|
||||
prism-react-renderer:
|
||||
specifier: ^2.3.1
|
||||
version: 2.3.1([email protected])
|
||||
@@ -486,18 +483,12 @@ importers:
|
||||
eslint-config-biome:
|
||||
specifier: ^1.7.3
|
||||
version: 1.7.3
|
||||
eslint-config-prettier:
|
||||
specifier: 9.1.0
|
||||
version: 9.1.0([email protected])
|
||||
eslint-plugin-import:
|
||||
specifier: ^2.29.1
|
||||
version: 2.29.1(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])
|
||||
eslint-plugin-inclusive-language:
|
||||
specifier: ^2.2.1
|
||||
version: 2.2.1
|
||||
eslint-plugin-prettier:
|
||||
specifier: ^5.1.3
|
||||
version: 5.1.3(@types/[email protected])([email protected]([email protected]))([email protected])([email protected])
|
||||
eslint-plugin-promise:
|
||||
specifier: ^6.2.0
|
||||
version: 6.2.0([email protected])
|
||||
@@ -34984,8 +34975,8 @@ snapshots:
|
||||
'@typescript-eslint/parser': 7.2.0([email protected])([email protected])
|
||||
eslint: 8.57.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected]([email protected]))([email protected])
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0([email protected])([email protected]))(eslint[email protected])(eslint@8.57.0)
|
||||
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected])([email protected])
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1([email protected])([email protected]))([email protected])
|
||||
eslint-plugin-jsx-a11y: 6.8.0([email protected])
|
||||
eslint-plugin-react: 7.34.3([email protected])
|
||||
eslint-plugin-react-hooks: 4.6.2([email protected])
|
||||
@@ -35012,30 +35003,13 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected]([email protected]))([email protected]):
|
||||
dependencies:
|
||||
debug: 4.3.5([email protected])
|
||||
enhanced-resolve: 5.17.0
|
||||
eslint: 8.57.0
|
||||
eslint-module-utils: 2.8.1(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected]([email protected]))([email protected]))([email protected])
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected])
|
||||
fast-glob: 3.3.2
|
||||
get-tsconfig: 4.7.5
|
||||
is-core-module: 2.13.1
|
||||
is-glob: 4.0.3
|
||||
transitivePeerDependencies:
|
||||
- '@typescript-eslint/parser'
|
||||
- eslint-import-resolver-node
|
||||
- eslint-import-resolver-webpack
|
||||
- supports-color
|
||||
|
||||
[email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected])([email protected]):
|
||||
dependencies:
|
||||
debug: 4.3.5([email protected])
|
||||
enhanced-resolve: 5.17.0
|
||||
eslint: 8.57.0
|
||||
eslint-module-utils: 2.8.1(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected])([email protected]))([email protected])
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0([email protected])([email protected]))(eslint[email protected])(eslint@8.57.0)
|
||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.14.1([email protected])([email protected]))([email protected])
|
||||
fast-glob: 3.3.2
|
||||
get-tsconfig: 4.7.5
|
||||
is-core-module: 2.13.1
|
||||
@@ -35045,7 +35019,6 @@ snapshots:
|
||||
- eslint-import-resolver-node
|
||||
- eslint-import-resolver-webpack
|
||||
- supports-color
|
||||
optional: true
|
||||
|
||||
[email protected]([email protected]):
|
||||
dependencies:
|
||||
@@ -35077,17 +35050,6 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected]([email protected]))([email protected]))([email protected]):
|
||||
dependencies:
|
||||
debug: 3.2.7
|
||||
optionalDependencies:
|
||||
'@typescript-eslint/parser': 7.2.0([email protected])([email protected])
|
||||
eslint: 8.57.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected]([email protected]))([email protected])
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
[email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected])([email protected]))([email protected]):
|
||||
dependencies:
|
||||
debug: 3.2.7
|
||||
@@ -35135,33 +35097,6 @@ snapshots:
|
||||
- eslint-import-resolver-webpack
|
||||
- supports-color
|
||||
|
||||
[email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected]):
|
||||
dependencies:
|
||||
array-includes: 3.1.8
|
||||
array.prototype.findlastindex: 1.2.5
|
||||
array.prototype.flat: 1.3.2
|
||||
array.prototype.flatmap: 1.3.2
|
||||
debug: 3.2.7
|
||||
doctrine: 2.1.0
|
||||
eslint: 8.57.0
|
||||
eslint-import-resolver-node: 0.3.9
|
||||
eslint-module-utils: 2.8.1(@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected](@typescript-eslint/[email protected]([email protected])([email protected]))([email protected])([email protected]([email protected]))([email protected]))([email protected])
|
||||
hasown: 2.0.2
|
||||
is-core-module: 2.13.1
|
||||
is-glob: 4.0.3
|
||||
minimatch: 3.1.2
|
||||
object.fromentries: 2.0.8
|
||||
object.groupby: 1.0.3
|
||||
object.values: 1.2.0
|
||||
semver: 7.6.2
|
||||
tsconfig-paths: 3.15.0
|
||||
optionalDependencies:
|
||||
'@typescript-eslint/parser': 7.2.0([email protected])([email protected])
|
||||
transitivePeerDependencies:
|
||||
- eslint-import-resolver-typescript
|
||||
- eslint-import-resolver-webpack
|
||||
- supports-color
|
||||
|
||||
[email protected]([email protected]):
|
||||
dependencies:
|
||||
array-includes: 3.1.8
|
||||
|
||||
Reference in New Issue
Block a user