From e882c090f10df6b04f0a430e30a7a2eba3e3e09e Mon Sep 17 00:00:00 2001 From: Manan Tank Date: Thu, 18 Sep 2025 00:52:21 +0530 Subject: [PATCH] [BLD-286] SDK: add stable classNames to elements in Connect UI --- .changeset/nice-owls-double.md | 5 + packages/thirdweb/.storybook/global.css | 5 + .../web/ui/Bridge/swap-widget/swap-ui.tsx | 1 + .../web/ui/ConnectWallet/ConnectButton.tsx | 14 ++ .../react/web/ui/ConnectWallet/Details.tsx | 12 +- .../ui/ConnectWallet/Modal/AllWalletsUI.tsx | 8 +- .../ui/ConnectWallet/Modal/ConnectEmbed.tsx | 20 ++- .../ui/ConnectWallet/Modal/ConnectModal.tsx | 1 + .../web/ui/ConnectWallet/NetworkSelector.tsx | 4 +- .../ui/ConnectWallet/WalletEntryButton.tsx | 2 + .../web/ui/ConnectWallet/WalletSelector.tsx | 42 +++--- .../ui/ConnectWallet/WalletTypeRowButton.tsx | 2 + .../ui/ConnectWallet/screens/ReceiveFunds.tsx | 7 +- .../ConnectWallet/screens/SendFunds.test.tsx | 4 +- .../ui/ConnectWallet/screens/SendFunds.tsx | 23 +++- .../ConnectWallet/screens/SignatureScreen.tsx | 16 ++- .../ConnectWallet/screens/TokenSelector.tsx | 2 + .../ui/TransactionButton/TransactionModal.tsx | 1 + .../src/react/web/ui/components/Modal.tsx | 3 + .../src/react/web/ui/components/OTPInput.tsx | 2 +- .../src/react/web/ui/components/Spinner.tsx | 1 + .../src/react/web/ui/components/basic.tsx | 5 + .../react/web/ui/components/modalElements.tsx | 1 + packages/thirdweb/src/react/web/utils/cls.ts | 13 ++ .../web/wallets/in-app/InputSelectionUI.tsx | 2 + .../shared/ConnectWalletSocialOptions.tsx | 9 ++ .../web/wallets/shared/ConnectingScreen.tsx | 25 +++- .../react/web/wallets/shared/GuestLogin.tsx | 7 +- .../react/web/wallets/shared/OTPLoginUI.tsx | 41 +++++- .../react/web/wallets/shared/ScanScreen.tsx | 25 +++- .../react/web/wallets/shared/SocialLogin.tsx | 7 +- .../src/stories/ConnectEmbed.stories.tsx | 128 ++++++++++++++++++ 32 files changed, 384 insertions(+), 54 deletions(-) create mode 100644 .changeset/nice-owls-double.md create mode 100644 packages/thirdweb/src/react/web/utils/cls.ts create mode 100644 packages/thirdweb/src/stories/ConnectEmbed.stories.tsx diff --git a/.changeset/nice-owls-double.md b/.changeset/nice-owls-double.md new file mode 100644 index 00000000000..0ac64f7adeb --- /dev/null +++ b/.changeset/nice-owls-double.md @@ -0,0 +1,5 @@ +--- +"thirdweb": patch +--- + +Add `tw-` class names in connect ui diff --git a/packages/thirdweb/.storybook/global.css b/packages/thirdweb/.storybook/global.css index ab50d79fffc..3bf8057c9ad 100644 --- a/packages/thirdweb/.storybook/global.css +++ b/packages/thirdweb/.storybook/global.css @@ -10,3 +10,8 @@ body { font-optical-sizing: auto; font-variation-settings: "slnt" 0; } + +/* Use this to debug the elements having tw- classes */ +/* [class*="tw-"] { + outline: 1px dotted yellow !important; +} */ diff --git a/packages/thirdweb/src/react/web/ui/Bridge/swap-widget/swap-ui.tsx b/packages/thirdweb/src/react/web/ui/Bridge/swap-widget/swap-ui.tsx index 8212e230a74..9cf75e982b5 100644 --- a/packages/thirdweb/src/react/web/ui/Bridge/swap-widget/swap-ui.tsx +++ b/packages/thirdweb/src/react/web/ui/Bridge/swap-widget/swap-ui.tsx @@ -197,6 +197,7 @@ export function SwapUI(props: SwapUIProps) { return ( {/* Send, Receive, Swap */} {!hideSendFunds && ( diff --git a/packages/thirdweb/src/react/web/wallets/shared/GuestLogin.tsx b/packages/thirdweb/src/react/web/wallets/shared/GuestLogin.tsx index 8e3d57b694d..8ad15e89df5 100644 --- a/packages/thirdweb/src/react/web/wallets/shared/GuestLogin.tsx +++ b/packages/thirdweb/src/react/web/wallets/shared/GuestLogin.tsx @@ -91,7 +91,12 @@ export function GuestLogin(props: { }, [done, guestLogin]); return ( - + + @@ -219,7 +224,9 @@ export function OTPLoginUI(props: { > {!isWideModal && } - {locale.emailLoginScreen.enterCodeSendTo} + + {locale.emailLoginScreen.enterCodeSendTo} + {"email" in userInfo ? userInfo.email : userInfo.phone} @@ -243,7 +250,12 @@ export function OTPLoginUI(props: { {verifyStatus === "invalid" && ( - + {locale.emailLoginScreen.invalidCode} @@ -252,7 +264,12 @@ export function OTPLoginUI(props: { {verifyStatus === "linking_error" && ( - + {error || "Failed to verify code"} @@ -261,7 +278,12 @@ export function OTPLoginUI(props: { {verifyStatus === "payment_required" && ( - + {locale.maxAccountsExceeded} @@ -283,6 +305,7 @@ export function OTPLoginUI(props: { }} type="submit" variant="accent" + className="tw-verify-button" > {locale.emailLoginScreen.verify} @@ -296,7 +319,12 @@ export function OTPLoginUI(props: { {accountStatus === "error" && ( - + {locale.emailLoginScreen.failedToSendCode} )} @@ -322,6 +350,7 @@ export function OTPLoginUI(props: { cursor: countdown > 0 ? "default" : "pointer", opacity: countdown > 0 ? 0.5 : 1, }} + className="tw-resend-button" type="button" > {countdown > 0 diff --git a/packages/thirdweb/src/react/web/wallets/shared/ScanScreen.tsx b/packages/thirdweb/src/react/web/wallets/shared/ScanScreen.tsx index 7f1b10ffd04..feab0cbbb9e 100644 --- a/packages/thirdweb/src/react/web/wallets/shared/ScanScreen.tsx +++ b/packages/thirdweb/src/react/web/wallets/shared/ScanScreen.tsx @@ -40,7 +40,12 @@ export const ScanScreen: React.FC<{ const [linkCopied, setLinkCopied] = useState(false); return ( - + @@ -68,6 +73,7 @@ export const ScanScreen: React.FC<{ @@ -144,6 +162,7 @@ export const ScanScreen: React.FC<{ >