@clerk/ui 1.0.0-snapshot.v20251217165918 → 1.0.0-snapshot.v20251218165926
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/573_ui_17c90e_1.0.0-snapshot.v20251218165926.js +1 -0
- package/dist/ClerkUi.js +2 -2
- package/dist/common/WalletInitialIcon.js +36 -0
- package/dist/common/WalletInitialIcon.js.map +1 -0
- package/dist/components/OrganizationProfile/MemberListTable.js +3 -1
- package/dist/components/OrganizationProfile/MemberListTable.js.map +1 -1
- package/dist/components/SessionTasks/tasks/TaskChooseOrganization/index.js +50 -21
- package/dist/components/SessionTasks/tasks/TaskChooseOrganization/index.js.map +1 -1
- package/dist/components/SignIn/AlternativeMethods.js +1 -1
- package/dist/components/SignIn/SignInFactorOneSolanaWalletsCard.js +79 -0
- package/dist/components/SignIn/SignInFactorOneSolanaWalletsCard.js.map +1 -0
- package/dist/components/SignIn/SignInSocialButtons.js +2 -1
- package/dist/components/SignIn/SignInSocialButtons.js.map +1 -1
- package/dist/components/SignIn/index.js +5 -0
- package/dist/components/SignIn/index.js.map +1 -1
- package/dist/components/SignUp/SignUpSocialButtons.js +2 -1
- package/dist/components/SignUp/SignUpSocialButtons.js.map +1 -1
- package/dist/components/SignUp/SignUpStartSolanaWalletsCard.js +79 -0
- package/dist/components/SignUp/SignUpStartSolanaWalletsCard.js.map +1 -0
- package/dist/components/SignUp/index.js +5 -0
- package/dist/components/SignUp/index.js.map +1 -1
- package/dist/components/UserProfile/Web3Form.js +62 -41
- package/dist/components/UserProfile/Web3Form.js.map +1 -1
- package/dist/components/UserProfile/Web3Section.js +1 -1
- package/dist/components/UserProfile/Web3Section.js.map +1 -1
- package/dist/components/UserProfile/Web3SelectSolanaWalletScreen.js +73 -0
- package/dist/components/UserProfile/Web3SelectSolanaWalletScreen.js.map +1 -0
- package/dist/components/devPrompts/EnableOrganizationsPrompt/index.js +173 -110
- package/dist/components/devPrompts/EnableOrganizationsPrompt/index.js.map +1 -1
- package/dist/customizables/elementDescriptors.js +10 -1
- package/dist/customizables/elementDescriptors.js.map +1 -1
- package/dist/elements/Web3SolanaWalletButtons.js +182 -0
- package/dist/elements/Web3SolanaWalletButtons.js.map +1 -0
- package/dist/elements/contexts/index.js.map +1 -1
- package/dist/{enableOrganizationsPrompt_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → enableOrganizationsPrompt_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +108 -22
- package/dist/foundations/defaultFoundations.d.ts +153 -153
- package/dist/index.js +1 -1
- package/dist/internal/appearance.d.ts +9 -0
- package/dist/internal/appearance.d.ts.map +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/lazyModules/components.d.ts +20 -20
- package/dist/sessionTasks_ui_17c90e_1.0.0-snapshot.v20251218165926.js +1 -0
- package/dist/signin_ui_17c90e_1.0.0-snapshot.v20251218165926.js +1 -0
- package/dist/signup_ui_17c90e_1.0.0-snapshot.v20251218165926.js +1 -0
- package/dist/taskChooseOrganization_ui_17c90e_1.0.0-snapshot.v20251218165926.js +1 -0
- package/dist/taskResetPassword_ui_17c90e_1.0.0-snapshot.v20251218165926.js +1 -0
- package/dist/themes/shadcn.js +2 -2
- package/dist/themes/shadcn.js.map +1 -1
- package/dist/ui-common_ui_17c90e_1.0.0-snapshot.v20251218165926.js +139 -0
- package/dist/ui.browser.js +3 -3
- package/dist/{userprofile_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → userprofile_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +2 -2
- package/dist/utils/web3CallbackErrorHandler.js +1 -1
- package/dist/utils/web3CallbackErrorHandler.js.map +1 -1
- package/dist/vendors_ui_17c90e_1.0.0-snapshot.v20251218165926.js +20 -0
- package/dist/web3-solana-wallet-buttons_ui_17c90e_1.0.0-snapshot.v20251218165926.js +143 -0
- package/package.json +10 -4
- package/dist/573_ui_7e9f20_1.0.0-snapshot.v20251217165918.js +0 -1
- package/dist/sessionTasks_ui_7e9f20_1.0.0-snapshot.v20251217165918.js +0 -1
- package/dist/signin_ui_7e9f20_1.0.0-snapshot.v20251217165918.js +0 -1
- package/dist/signup_ui_7e9f20_1.0.0-snapshot.v20251217165918.js +0 -1
- package/dist/taskChooseOrganization_ui_7e9f20_1.0.0-snapshot.v20251217165918.js +0 -1
- package/dist/taskResetPassword_ui_7e9f20_1.0.0-snapshot.v20251217165918.js +0 -1
- package/dist/ui-common_ui_7e9f20_1.0.0-snapshot.v20251217165918.js +0 -139
- package/dist/vendors_ui_7e9f20_1.0.0-snapshot.v20251217165918.js +0 -20
- /package/dist/{207_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → 207_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{217_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → 217_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{360_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → 360_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{444_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → 444_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{970_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → 970_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{apiKeys_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → apiKeys_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{blankcaptcha_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → blankcaptcha_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{checkout_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → checkout_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{copy-api-key-modal_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → copy-api-key-modal_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{createorganization_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → createorganization_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{framework_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → framework_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{impersonationfab_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → impersonationfab_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{keylessPrompt_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → keylessPrompt_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{oauthConsent_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → oauthConsent_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{onetap_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → onetap_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{op-api-keys-page_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → op-api-keys-page_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{op-billing-page_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → op-billing-page_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{op-plans-page_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → op-plans-page_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{organizationlist_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → organizationlist_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{organizationprofile_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → organizationprofile_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{organizationswitcher_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → organizationswitcher_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{payment-attempt-page_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → payment-attempt-page_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{planDetails_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → planDetails_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{prefetchorganizationlist_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → prefetchorganizationlist_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{pricingTable_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → pricingTable_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{revoke-api-key-modal_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → revoke-api-key-modal_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{statement-page_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → statement-page_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{subscriptionDetails_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → subscriptionDetails_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{up-api-keys-page_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → up-api-keys-page_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{up-billing-page_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → up-billing-page_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{up-plans-page_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → up-plans-page_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{useravatar_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → useravatar_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{userbutton_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → userbutton_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{userverification_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → userverification_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
- /package/dist/{waitlist_ui_7e9f20_1.0.0-snapshot.v20251217165918.js → waitlist_ui_17c90e_1.0.0-snapshot.v20251218165926.js} +0 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { useRouter } from "../../router/RouteContext.js";
|
|
2
|
+
import { localizationKeys } from "../../localization/localizationKeys.js";
|
|
3
|
+
import { useSignUpContext } from "../../contexts/components/SignUp.js";
|
|
4
|
+
import { descriptors } from "../../customizables/elementDescriptors.js";
|
|
5
|
+
import { useCardState, withCardStateProvider } from "../../elements/contexts/index.js";
|
|
6
|
+
import { Flow } from "../../customizables/Flow.js";
|
|
7
|
+
import { Flex, Spinner } from "../../customizables/index.js";
|
|
8
|
+
import { Card } from "../../elements/Card/index.js";
|
|
9
|
+
import { Header } from "../../elements/Header.js";
|
|
10
|
+
import { withRedirectToAfterSignUp, withRedirectToSignUpTask } from "../../common/withRedirect.js";
|
|
11
|
+
import { BackLink } from "../../elements/BackLink.js";
|
|
12
|
+
import { web3CallbackErrorHandler } from "../../utils/web3CallbackErrorHandler.js";
|
|
13
|
+
import { Suspense, lazy } from "react";
|
|
14
|
+
import { jsx, jsxs } from "@emotion/react/jsx-runtime";
|
|
15
|
+
import { useClerk } from "@clerk/shared/react";
|
|
16
|
+
|
|
17
|
+
//#region src/components/SignUp/SignUpStartSolanaWalletsCard.tsx
|
|
18
|
+
const Web3SolanaWalletButtons = lazy(() => import(
|
|
19
|
+
/* webpackChunkName: "web3-solana-wallet-buttons" */
|
|
20
|
+
"../../elements/Web3SolanaWalletButtons.js"
|
|
21
|
+
).then((m) => ({ default: m.Web3SolanaWalletButtons })));
|
|
22
|
+
const SignUpStartSolanaWalletsCardInner = () => {
|
|
23
|
+
const clerk = useClerk();
|
|
24
|
+
const card = useCardState();
|
|
25
|
+
const router = useRouter();
|
|
26
|
+
const ctx = useSignUpContext();
|
|
27
|
+
const onBackLinkClick = () => {
|
|
28
|
+
router.navigate("../");
|
|
29
|
+
};
|
|
30
|
+
return /* @__PURE__ */ jsx(Flow.Part, {
|
|
31
|
+
part: "chooseWallet",
|
|
32
|
+
children: /* @__PURE__ */ jsxs(Card.Root, { children: [/* @__PURE__ */ jsxs(Card.Content, { children: [
|
|
33
|
+
/* @__PURE__ */ jsxs(Header.Root, {
|
|
34
|
+
showLogo: true,
|
|
35
|
+
children: [/* @__PURE__ */ jsx(Header.Title, { localizationKey: localizationKeys("signUp.web3Solana.title") }), /* @__PURE__ */ jsx(Header.Subtitle, { localizationKey: localizationKeys("signUp.web3Solana.subtitle") })]
|
|
36
|
+
}),
|
|
37
|
+
/* @__PURE__ */ jsx(Card.Alert, { children: card.error }),
|
|
38
|
+
/* @__PURE__ */ jsxs(Flex, {
|
|
39
|
+
direction: "col",
|
|
40
|
+
gap: 4,
|
|
41
|
+
children: [/* @__PURE__ */ jsx(Suspense, {
|
|
42
|
+
fallback: /* @__PURE__ */ jsx(Flex, {
|
|
43
|
+
direction: "row",
|
|
44
|
+
align: "center",
|
|
45
|
+
justify: "center",
|
|
46
|
+
sx: (t) => ({
|
|
47
|
+
height: "100%",
|
|
48
|
+
minHeight: t.sizes.$32
|
|
49
|
+
}),
|
|
50
|
+
children: /* @__PURE__ */ jsx(Spinner, {
|
|
51
|
+
size: "lg",
|
|
52
|
+
colorScheme: "primary",
|
|
53
|
+
elementDescriptor: descriptors.spinner
|
|
54
|
+
})
|
|
55
|
+
}),
|
|
56
|
+
children: /* @__PURE__ */ jsx(Web3SolanaWalletButtons, { web3AuthCallback: ({ walletName }) => {
|
|
57
|
+
return clerk.authenticateWithWeb3({
|
|
58
|
+
customNavigate: router.navigate,
|
|
59
|
+
redirectUrl: ctx.afterSignUpUrl || "/",
|
|
60
|
+
signUpContinueUrl: "continue",
|
|
61
|
+
strategy: "web3_solana_signature",
|
|
62
|
+
unsafeMetadata: ctx.unsafeMetadata,
|
|
63
|
+
walletName
|
|
64
|
+
}).catch((err) => web3CallbackErrorHandler(err, card.setError));
|
|
65
|
+
} })
|
|
66
|
+
}), /* @__PURE__ */ jsx(BackLink, {
|
|
67
|
+
boxElementDescriptor: descriptors.backRow,
|
|
68
|
+
linkElementDescriptor: descriptors.backLink,
|
|
69
|
+
onClick: onBackLinkClick
|
|
70
|
+
})]
|
|
71
|
+
})
|
|
72
|
+
] }), /* @__PURE__ */ jsx(Card.Footer, {})] })
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
const SignUpStartSolanaWalletsCard = withRedirectToSignUpTask(withRedirectToAfterSignUp(withCardStateProvider(SignUpStartSolanaWalletsCardInner)));
|
|
76
|
+
|
|
77
|
+
//#endregion
|
|
78
|
+
export { SignUpStartSolanaWalletsCard };
|
|
79
|
+
//# sourceMappingURL=SignUpStartSolanaWalletsCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignUpStartSolanaWalletsCard.js","names":[],"sources":["../../../src/components/SignUp/SignUpStartSolanaWalletsCard.tsx"],"sourcesContent":["import { useClerk } from '@clerk/shared/react';\nimport { lazy, Suspense } from 'react';\n\nimport { withRedirectToAfterSignUp, withRedirectToSignUpTask } from '@/ui/common/withRedirect';\nimport { descriptors, Flex, Flow, localizationKeys, Spinner } from '@/ui/customizables';\nimport { BackLink } from '@/ui/elements/BackLink';\nimport { Card } from '@/ui/elements/Card';\nimport { useCardState, withCardStateProvider } from '@/ui/elements/contexts';\nimport { Header } from '@/ui/elements/Header';\nimport { web3CallbackErrorHandler } from '@/ui/utils/web3CallbackErrorHandler';\n\nconst Web3SolanaWalletButtons = lazy(() =>\n import(/* webpackChunkName: \"web3-solana-wallet-buttons\" */ '@/ui/elements/Web3SolanaWalletButtons').then(m => ({\n default: m.Web3SolanaWalletButtons,\n })),\n);\n\nimport { useSignUpContext } from '@/contexts';\nimport { useRouter } from '@/router';\n\nconst SignUpStartSolanaWalletsCardInner = () => {\n const clerk = useClerk();\n const card = useCardState();\n const router = useRouter();\n const ctx = useSignUpContext();\n\n const onBackLinkClick = () => {\n void router.navigate('../');\n };\n\n return (\n <Flow.Part part='chooseWallet'>\n <Card.Root>\n <Card.Content>\n <Header.Root showLogo>\n <Header.Title localizationKey={localizationKeys('signUp.web3Solana.title')} />\n <Header.Subtitle localizationKey={localizationKeys('signUp.web3Solana.subtitle')} />\n </Header.Root>\n <Card.Alert>{card.error}</Card.Alert>\n <Flex\n direction='col'\n gap={4}\n >\n <Suspense\n fallback={\n <Flex\n direction={'row'}\n align={'center'}\n justify={'center'}\n sx={t => ({\n height: '100%',\n minHeight: t.sizes.$32,\n })}\n >\n <Spinner\n size={'lg'}\n colorScheme={'primary'}\n elementDescriptor={descriptors.spinner}\n />\n </Flex>\n }\n >\n <Web3SolanaWalletButtons\n web3AuthCallback={({ walletName }) => {\n return clerk\n .authenticateWithWeb3({\n customNavigate: router.navigate,\n redirectUrl: ctx.afterSignUpUrl || '/',\n signUpContinueUrl: 'continue',\n strategy: 'web3_solana_signature',\n unsafeMetadata: ctx.unsafeMetadata,\n walletName,\n })\n .catch(err => web3CallbackErrorHandler(err, card.setError));\n }}\n />\n </Suspense>\n <BackLink\n boxElementDescriptor={descriptors.backRow}\n linkElementDescriptor={descriptors.backLink}\n onClick={onBackLinkClick}\n />\n </Flex>\n </Card.Content>\n <Card.Footer />\n </Card.Root>\n </Flow.Part>\n );\n};\n\nexport const SignUpStartSolanaWalletsCard = withRedirectToSignUpTask(\n withRedirectToAfterSignUp(withCardStateProvider(SignUpStartSolanaWalletsCardInner)),\n);\n"],"mappings":";;;;;;;;;;;;;;;;;AAWA,MAAM,0BAA0B,WAC9B;;CAA4D;EAAyC,MAAK,OAAM,EAC9G,SAAS,EAAE,yBACZ,EAAE,CACJ;AAKD,MAAM,0CAA0C;CAC9C,MAAM,QAAQ,UAAU;CACxB,MAAM,OAAO,cAAc;CAC3B,MAAM,SAAS,WAAW;CAC1B,MAAM,MAAM,kBAAkB;CAE9B,MAAM,wBAAwB;AAC5B,EAAK,OAAO,SAAS,MAAM;;AAG7B,QACE,oBAAC,KAAK;EAAK,MAAK;YACd,qBAAC,KAAK,mBACJ,qBAAC,KAAK;GACJ,qBAAC,OAAO;IAAK;eACX,oBAAC,OAAO,SAAM,iBAAiB,iBAAiB,0BAA0B,GAAI,EAC9E,oBAAC,OAAO,YAAS,iBAAiB,iBAAiB,6BAA6B,GAAI;KACxE;GACd,oBAAC,KAAK,mBAAO,KAAK,QAAmB;GACrC,qBAAC;IACC,WAAU;IACV,KAAK;eAEL,oBAAC;KACC,UACE,oBAAC;MACC,WAAW;MACX,OAAO;MACP,SAAS;MACT,KAAI,OAAM;OACR,QAAQ;OACR,WAAW,EAAE,MAAM;OACpB;gBAED,oBAAC;OACC,MAAM;OACN,aAAa;OACb,mBAAmB,YAAY;QAC/B;OACG;eAGT,oBAAC,2BACC,mBAAmB,EAAE,iBAAiB;AACpC,aAAO,MACJ,qBAAqB;OACpB,gBAAgB,OAAO;OACvB,aAAa,IAAI,kBAAkB;OACnC,mBAAmB;OACnB,UAAU;OACV,gBAAgB,IAAI;OACpB;OACD,CAAC,CACD,OAAM,QAAO,yBAAyB,KAAK,KAAK,SAAS,CAAC;SAE/D;MACO,EACX,oBAAC;KACC,sBAAsB,YAAY;KAClC,uBAAuB,YAAY;KACnC,SAAS;MACT;KACG;MACM,EACf,oBAAC,KAAK,WAAS,IACL;GACF;;AAIhB,MAAa,+BAA+B,yBAC1C,0BAA0B,sBAAsB,kCAAkC,CAAC,CACpF"}
|
|
@@ -7,6 +7,7 @@ import { withCoreSessionSwitchGuard } from "../../contexts/CoreSessionContext.js
|
|
|
7
7
|
import { Flow } from "../../customizables/Flow.js";
|
|
8
8
|
import { SignUpEmailLinkFlowComplete } from "../../common/EmailLinkCompleteFlowCard.js";
|
|
9
9
|
import { usePreloadTasks } from "../../hooks/usePreloadTasks.js";
|
|
10
|
+
import { SignUpStartSolanaWalletsCard } from "./SignUpStartSolanaWalletsCard.js";
|
|
10
11
|
import { SignUpContinue } from "./SignUpContinue.js";
|
|
11
12
|
import { SignUpEnterpriseConnections } from "./SignUpEnterpriseConnections.js";
|
|
12
13
|
import { SignUpSSOCallback } from "./SignUpSSOCallback.js";
|
|
@@ -89,6 +90,10 @@ function SignUpRoutes() {
|
|
|
89
90
|
path: "enterprise-connections",
|
|
90
91
|
children: /* @__PURE__ */ jsx(SignUpEnterpriseConnections, {})
|
|
91
92
|
}),
|
|
93
|
+
/* @__PURE__ */ jsx(Route, {
|
|
94
|
+
path: "choose-wallet",
|
|
95
|
+
children: /* @__PURE__ */ jsx(SignUpStartSolanaWalletsCard, {})
|
|
96
|
+
}),
|
|
92
97
|
/* @__PURE__ */ jsx(Route, {
|
|
93
98
|
index: true,
|
|
94
99
|
children: /* @__PURE__ */ jsx(SignUpStart, {})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["LazySessionTasks","SignUp: React.ComponentType<SignUpProps>","InternalSignUp: React.ComponentType<WithInternalRouting<SignUpProps>>"],"sources":["../../../src/components/SignUp/index.tsx"],"sourcesContent":["import { useClerk } from '@clerk/shared/react';\nimport type { SignUpModalProps, SignUpProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport { SignUpEmailLinkFlowComplete } from '@/common/EmailLinkCompleteFlowCard';\nimport { SignUpContext, useSignUpContext, withCoreSessionSwitchGuard } from '@/contexts';\nimport { Flow } from '@/customizables';\nimport { usePreloadTasks } from '@/hooks/usePreloadTasks';\nimport type { WithInternalRouting } from '@/internal';\nimport { SessionTasks as LazySessionTasks } from '@/lazyModules/components';\nimport { Route, Switch, VIRTUAL_ROUTER_BASE_PATH } from '@/router';\n\nimport { SignUpContinue } from './SignUpContinue';\nimport { SignUpEnterpriseConnections } from './SignUpEnterpriseConnections';\nimport { SignUpSSOCallback } from './SignUpSSOCallback';\nimport { SignUpStart } from './SignUpStart';\nimport { SignUpVerifyEmail } from './SignUpVerifyEmail';\nimport { SignUpVerifyPhone } from './SignUpVerifyPhone';\n\nfunction RedirectToSignUp() {\n const clerk = useClerk();\n React.useEffect(() => {\n void clerk.redirectToSignUp();\n }, []);\n return null;\n}\n\nfunction SignUpRoutes(): JSX.Element {\n usePreloadTasks();\n\n const signUpContext = useSignUpContext();\n\n return (\n <Flow.Root flow='signUp'>\n <Switch>\n <Route\n path='verify-email-address'\n canActivate={clerk => !!clerk.client.signUp.emailAddress}\n >\n <SignUpVerifyEmail />\n </Route>\n <Route\n path='verify-phone-number'\n canActivate={clerk => !!clerk.client.signUp.phoneNumber}\n >\n <SignUpVerifyPhone />\n </Route>\n <Route path='sso-callback'>\n <SignUpSSOCallback\n signUpUrl={signUpContext.signUpUrl}\n signInUrl={signUpContext.signInUrl}\n signUpForceRedirectUrl={signUpContext.afterSignUpUrl}\n signInForceRedirectUrl={signUpContext.afterSignInUrl}\n secondFactorUrl={signUpContext.secondFactorUrl}\n continueSignUpUrl='../continue'\n verifyEmailAddressUrl='../verify-email-address'\n verifyPhoneNumberUrl='../verify-phone-number'\n />\n </Route>\n <Route path='verify'>\n <SignUpEmailLinkFlowComplete\n redirectUrlComplete={signUpContext.afterSignUpUrl}\n verifyEmailPath='../verify-email-address'\n verifyPhonePath='../verify-phone-number'\n />\n </Route>\n <Route path='continue'>\n <Route\n path='verify-email-address'\n canActivate={clerk => !!clerk.client.signUp.emailAddress}\n >\n <SignUpVerifyEmail />\n </Route>\n <Route\n path='verify-phone-number'\n canActivate={clerk => !!clerk.client.signUp.phoneNumber}\n >\n <SignUpVerifyPhone />\n </Route>\n <Route index>\n <SignUpContinue />\n </Route>\n </Route>\n <Route path='tasks'>\n <LazySessionTasks redirectUrlComplete={signUpContext.afterSignUpUrl} />\n </Route>\n <Route path='enterprise-connections'>\n <SignUpEnterpriseConnections />\n </Route>\n <Route index>\n <SignUpStart />\n </Route>\n <Route>\n <RedirectToSignUp />\n </Route>\n </Switch>\n </Flow.Root>\n );\n}\n\nSignUpRoutes.displayName = 'SignUp';\n\nexport const SignUp: React.ComponentType<SignUpProps> = withCoreSessionSwitchGuard(SignUpRoutes);\n\nconst InternalSignUp: React.ComponentType<WithInternalRouting<SignUpProps>> = withCoreSessionSwitchGuard(SignUpRoutes);\n\nexport const SignUpModal = (props: SignUpModalProps): JSX.Element => {\n const signUpProps = {\n signInUrl: `/${VIRTUAL_ROUTER_BASE_PATH}/sign-in`,\n waitlistUrl: `/${VIRTUAL_ROUTER_BASE_PATH}/waitlist`,\n ...props,\n };\n\n return (\n <Route path='sign-up'>\n <SignUpContext.Provider\n value={{\n componentName: 'SignUp',\n ...signUpProps,\n routing: 'virtual',\n mode: 'modal',\n }}\n >\n {/*TODO: Used by InvisibleRootBox, can we simplify? */}\n <div>\n <InternalSignUp\n {...signUpProps}\n routing='virtual'\n />\n </div>\n </SignUpContext.Provider>\n </Route>\n );\n};\n\nexport { SignUpContinue, SignUpSSOCallback, SignUpStart, SignUpVerifyEmail, SignUpVerifyPhone };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["LazySessionTasks","SignUp: React.ComponentType<SignUpProps>","InternalSignUp: React.ComponentType<WithInternalRouting<SignUpProps>>"],"sources":["../../../src/components/SignUp/index.tsx"],"sourcesContent":["import { useClerk } from '@clerk/shared/react';\nimport type { SignUpModalProps, SignUpProps } from '@clerk/shared/types';\nimport React from 'react';\n\nimport { SignUpEmailLinkFlowComplete } from '@/common/EmailLinkCompleteFlowCard';\nimport { SignUpContext, useSignUpContext, withCoreSessionSwitchGuard } from '@/contexts';\nimport { Flow } from '@/customizables';\nimport { usePreloadTasks } from '@/hooks/usePreloadTasks';\nimport type { WithInternalRouting } from '@/internal';\nimport { SessionTasks as LazySessionTasks } from '@/lazyModules/components';\nimport { Route, Switch, VIRTUAL_ROUTER_BASE_PATH } from '@/router';\nimport { SignUpStartSolanaWalletsCard } from '@/ui/components/SignUp/SignUpStartSolanaWalletsCard';\n\nimport { SignUpContinue } from './SignUpContinue';\nimport { SignUpEnterpriseConnections } from './SignUpEnterpriseConnections';\nimport { SignUpSSOCallback } from './SignUpSSOCallback';\nimport { SignUpStart } from './SignUpStart';\nimport { SignUpVerifyEmail } from './SignUpVerifyEmail';\nimport { SignUpVerifyPhone } from './SignUpVerifyPhone';\n\nfunction RedirectToSignUp() {\n const clerk = useClerk();\n React.useEffect(() => {\n void clerk.redirectToSignUp();\n }, []);\n return null;\n}\n\nfunction SignUpRoutes(): JSX.Element {\n usePreloadTasks();\n\n const signUpContext = useSignUpContext();\n\n return (\n <Flow.Root flow='signUp'>\n <Switch>\n <Route\n path='verify-email-address'\n canActivate={clerk => !!clerk.client.signUp.emailAddress}\n >\n <SignUpVerifyEmail />\n </Route>\n <Route\n path='verify-phone-number'\n canActivate={clerk => !!clerk.client.signUp.phoneNumber}\n >\n <SignUpVerifyPhone />\n </Route>\n <Route path='sso-callback'>\n <SignUpSSOCallback\n signUpUrl={signUpContext.signUpUrl}\n signInUrl={signUpContext.signInUrl}\n signUpForceRedirectUrl={signUpContext.afterSignUpUrl}\n signInForceRedirectUrl={signUpContext.afterSignInUrl}\n secondFactorUrl={signUpContext.secondFactorUrl}\n continueSignUpUrl='../continue'\n verifyEmailAddressUrl='../verify-email-address'\n verifyPhoneNumberUrl='../verify-phone-number'\n />\n </Route>\n <Route path='verify'>\n <SignUpEmailLinkFlowComplete\n redirectUrlComplete={signUpContext.afterSignUpUrl}\n verifyEmailPath='../verify-email-address'\n verifyPhonePath='../verify-phone-number'\n />\n </Route>\n <Route path='continue'>\n <Route\n path='verify-email-address'\n canActivate={clerk => !!clerk.client.signUp.emailAddress}\n >\n <SignUpVerifyEmail />\n </Route>\n <Route\n path='verify-phone-number'\n canActivate={clerk => !!clerk.client.signUp.phoneNumber}\n >\n <SignUpVerifyPhone />\n </Route>\n <Route index>\n <SignUpContinue />\n </Route>\n </Route>\n <Route path='tasks'>\n <LazySessionTasks redirectUrlComplete={signUpContext.afterSignUpUrl} />\n </Route>\n <Route path='enterprise-connections'>\n <SignUpEnterpriseConnections />\n </Route>\n <Route path='choose-wallet'>\n <SignUpStartSolanaWalletsCard />\n </Route>\n <Route index>\n <SignUpStart />\n </Route>\n <Route>\n <RedirectToSignUp />\n </Route>\n </Switch>\n </Flow.Root>\n );\n}\n\nSignUpRoutes.displayName = 'SignUp';\n\nexport const SignUp: React.ComponentType<SignUpProps> = withCoreSessionSwitchGuard(SignUpRoutes);\n\nconst InternalSignUp: React.ComponentType<WithInternalRouting<SignUpProps>> = withCoreSessionSwitchGuard(SignUpRoutes);\n\nexport const SignUpModal = (props: SignUpModalProps): JSX.Element => {\n const signUpProps = {\n signInUrl: `/${VIRTUAL_ROUTER_BASE_PATH}/sign-in`,\n waitlistUrl: `/${VIRTUAL_ROUTER_BASE_PATH}/waitlist`,\n ...props,\n };\n\n return (\n <Route path='sign-up'>\n <SignUpContext.Provider\n value={{\n componentName: 'SignUp',\n ...signUpProps,\n routing: 'virtual',\n mode: 'modal',\n }}\n >\n {/*TODO: Used by InvisibleRootBox, can we simplify? */}\n <div>\n <InternalSignUp\n {...signUpProps}\n routing='virtual'\n />\n </div>\n </SignUpContext.Provider>\n </Route>\n );\n};\n\nexport { SignUpContinue, SignUpSSOCallback, SignUpStart, SignUpVerifyEmail, SignUpVerifyPhone };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoBA,SAAS,mBAAmB;CAC1B,MAAM,QAAQ,UAAU;AACxB,OAAM,gBAAgB;AACpB,EAAK,MAAM,kBAAkB;IAC5B,EAAE,CAAC;AACN,QAAO;;AAGT,SAAS,eAA4B;AACnC,kBAAiB;CAEjB,MAAM,gBAAgB,kBAAkB;AAExC,QACE,oBAAC,KAAK;EAAK,MAAK;YACd,qBAAC;GACC,oBAAC;IACC,MAAK;IACL,cAAa,UAAS,CAAC,CAAC,MAAM,OAAO,OAAO;cAE5C,oBAAC,sBAAoB;KACf;GACR,oBAAC;IACC,MAAK;IACL,cAAa,UAAS,CAAC,CAAC,MAAM,OAAO,OAAO;cAE5C,oBAAC,sBAAoB;KACf;GACR,oBAAC;IAAM,MAAK;cACV,oBAAC;KACC,WAAW,cAAc;KACzB,WAAW,cAAc;KACzB,wBAAwB,cAAc;KACtC,wBAAwB,cAAc;KACtC,iBAAiB,cAAc;KAC/B,mBAAkB;KAClB,uBAAsB;KACtB,sBAAqB;MACrB;KACI;GACR,oBAAC;IAAM,MAAK;cACV,oBAAC;KACC,qBAAqB,cAAc;KACnC,iBAAgB;KAChB,iBAAgB;MAChB;KACI;GACR,qBAAC;IAAM,MAAK;;KACV,oBAAC;MACC,MAAK;MACL,cAAa,UAAS,CAAC,CAAC,MAAM,OAAO,OAAO;gBAE5C,oBAAC,sBAAoB;OACf;KACR,oBAAC;MACC,MAAK;MACL,cAAa,UAAS,CAAC,CAAC,MAAM,OAAO,OAAO;gBAE5C,oBAAC,sBAAoB;OACf;KACR,oBAAC;MAAM;gBACL,oBAAC,mBAAiB;OACZ;;KACF;GACR,oBAAC;IAAM,MAAK;cACV,oBAACA,gBAAiB,qBAAqB,cAAc,iBAAkB;KACjE;GACR,oBAAC;IAAM,MAAK;cACV,oBAAC,gCAA8B;KACzB;GACR,oBAAC;IAAM,MAAK;cACV,oBAAC,iCAA+B;KAC1B;GACR,oBAAC;IAAM;cACL,oBAAC,gBAAc;KACT;GACR,oBAAC,mBACC,oBAAC,qBAAmB,GACd;MACD;GACC;;AAIhB,aAAa,cAAc;AAE3B,MAAaC,SAA2C,2BAA2B,aAAa;AAEhG,MAAMC,iBAAwE,2BAA2B,aAAa;AAEtH,MAAa,eAAe,UAAyC;CACnE,MAAM,cAAc;EAClB,WAAW,IAAI,yBAAyB;EACxC,aAAa,IAAI,yBAAyB;EAC1C,GAAG;EACJ;AAED,QACE,oBAAC;EAAM,MAAK;YACV,oBAAC,cAAc;GACb,OAAO;IACL,eAAe;IACf,GAAG;IACH,SAAS;IACT,MAAM;IACP;aAGD,oBAAC,mBACC,oBAAC;IACC,GAAI;IACJ,SAAQ;KACR,GACE;IACiB;GACnB"}
|
|
@@ -2,33 +2,45 @@ import { useEnabledThirdPartyProviders } from "../../hooks/useEnabledThirdPartyP
|
|
|
2
2
|
import { useModuleManager } from "../../contexts/ModuleManagerContext.js";
|
|
3
3
|
import { localizationKeys } from "../../localization/localizationKeys.js";
|
|
4
4
|
import { descriptors } from "../../customizables/elementDescriptors.js";
|
|
5
|
-
import { useCardState
|
|
5
|
+
import { useCardState } from "../../elements/contexts/index.js";
|
|
6
6
|
import { Image, Text } from "../../customizables/index.js";
|
|
7
7
|
import { getFieldError, handleError } from "../../utils/errorHandler.js";
|
|
8
|
+
import { useActionContext } from "../../elements/Action/ActionRoot.js";
|
|
9
|
+
import { Action } from "../../elements/Action/index.js";
|
|
8
10
|
import { ProfileSection } from "../../elements/Section.js";
|
|
11
|
+
import { Web3SelectSolanaWalletScreen } from "./Web3SelectSolanaWalletScreen.js";
|
|
9
12
|
import { Fragment, jsx, jsxs } from "@emotion/react/jsx-runtime";
|
|
10
13
|
import { useReverification, useUser } from "@clerk/shared/react";
|
|
11
14
|
import { createWeb3 } from "@clerk/shared/internal/clerk-js/web3";
|
|
12
15
|
|
|
13
16
|
//#region src/components/UserProfile/Web3Form.tsx
|
|
14
|
-
const AddWeb3WalletActionMenu =
|
|
17
|
+
const AddWeb3WalletActionMenu = () => {
|
|
15
18
|
const card = useCardState();
|
|
19
|
+
const { open } = useActionContext();
|
|
16
20
|
const { user } = useUser();
|
|
17
21
|
const { strategies, strategyToDisplayData } = useEnabledThirdPartyProviders();
|
|
18
22
|
const moduleManager = useModuleManager();
|
|
19
23
|
const enabledStrategies = strategies.filter((s) => s.startsWith("web3"));
|
|
20
|
-
const connectedStrategies = user?.verifiedWeb3Wallets
|
|
24
|
+
const connectedStrategies = user?.verifiedWeb3Wallets?.map((w) => w.verification.strategy) ?? [];
|
|
21
25
|
const unconnectedStrategies = enabledStrategies.filter((strategy) => {
|
|
22
|
-
return !connectedStrategies.includes(strategy);
|
|
26
|
+
return !connectedStrategies.includes(strategy) && strategyToDisplayData[strategy];
|
|
23
27
|
});
|
|
28
|
+
if (unconnectedStrategies.length === 0) return null;
|
|
24
29
|
const createWeb3Wallet = useReverification((identifier) => user?.createWeb3Wallet({ web3Wallet: identifier }));
|
|
25
|
-
const connect = async (strategy) => {
|
|
30
|
+
const connect = async ({ strategy, walletName }) => {
|
|
26
31
|
const web3 = createWeb3(moduleManager);
|
|
32
|
+
if (strategy === "web3_solana_signature" && !walletName) {
|
|
33
|
+
open("web3Wallets");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
27
36
|
const provider = strategy.replace("web3_", "").replace("_signature", "");
|
|
28
37
|
card.setError(void 0);
|
|
29
38
|
try {
|
|
30
39
|
card.setLoading(strategy);
|
|
31
|
-
const identifier = await web3.getWeb3Identifier({
|
|
40
|
+
const identifier = await web3.getWeb3Identifier({
|
|
41
|
+
provider,
|
|
42
|
+
walletName
|
|
43
|
+
});
|
|
32
44
|
if (!user) throw new Error("user is not defined");
|
|
33
45
|
let web3Wallet = await createWeb3Wallet(identifier);
|
|
34
46
|
web3Wallet = await web3Wallet?.prepareVerification({ strategy });
|
|
@@ -36,7 +48,8 @@ const AddWeb3WalletActionMenu = withCardStateProvider(({ onClick }) => {
|
|
|
36
48
|
const signature = await web3.generateWeb3Signature({
|
|
37
49
|
identifier,
|
|
38
50
|
nonce: message,
|
|
39
|
-
provider
|
|
51
|
+
provider,
|
|
52
|
+
walletName
|
|
40
53
|
});
|
|
41
54
|
await web3Wallet?.attemptVerification({ signature });
|
|
42
55
|
card.setIdle();
|
|
@@ -47,42 +60,50 @@ const AddWeb3WalletActionMenu = withCardStateProvider(({ onClick }) => {
|
|
|
47
60
|
else handleError(err, [], card.setError);
|
|
48
61
|
}
|
|
49
62
|
};
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
63
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
64
|
+
/* @__PURE__ */ jsx(Action.Closed, {
|
|
65
|
+
value: "web3Wallets",
|
|
66
|
+
children: /* @__PURE__ */ jsx(ProfileSection.ActionMenu, {
|
|
67
|
+
id: "web3Wallets",
|
|
68
|
+
triggerLocalizationKey: localizationKeys("userProfile.start.web3WalletsSection.primaryButton"),
|
|
69
|
+
children: unconnectedStrategies.map((strategy) => /* @__PURE__ */ jsx(ProfileSection.ActionMenuItem, {
|
|
70
|
+
id: strategyToDisplayData[strategy].id,
|
|
71
|
+
onClick: () => {
|
|
72
|
+
connect({ strategy });
|
|
73
|
+
},
|
|
74
|
+
isLoading: card.loadingMetadata === strategy,
|
|
75
|
+
isDisabled: card.isLoading,
|
|
76
|
+
localizationKey: localizationKeys("userProfile.web3WalletPage.web3WalletButtonsBlockButton", { provider: strategyToDisplayData[strategy].name }),
|
|
77
|
+
sx: (t) => ({
|
|
78
|
+
justifyContent: "start",
|
|
79
|
+
gap: t.space.$2
|
|
80
|
+
}),
|
|
81
|
+
leftIcon: /* @__PURE__ */ jsx(Image, {
|
|
82
|
+
elementDescriptor: descriptors.providerIcon,
|
|
83
|
+
elementId: descriptors.providerIcon.setId(strategyToDisplayData[strategy].id),
|
|
84
|
+
isLoading: card.loadingMetadata === strategy,
|
|
85
|
+
isDisabled: card.isLoading,
|
|
86
|
+
src: strategyToDisplayData[strategy].iconUrl,
|
|
87
|
+
alt: `Connect ${strategyToDisplayData[strategy].name}`,
|
|
88
|
+
sx: (theme) => ({ width: theme.sizes.$5 })
|
|
89
|
+
})
|
|
90
|
+
}, strategy))
|
|
75
91
|
})
|
|
76
|
-
}, strategy))
|
|
77
|
-
}), card.error && /* @__PURE__ */ jsx(Text, {
|
|
78
|
-
colorScheme: "danger",
|
|
79
|
-
sx: (t) => ({
|
|
80
|
-
padding: t.sizes.$1x5,
|
|
81
|
-
paddingLeft: t.sizes.$8x5
|
|
82
92
|
}),
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
})
|
|
93
|
+
/* @__PURE__ */ jsx(Action.Open, {
|
|
94
|
+
value: "web3Wallets",
|
|
95
|
+
children: /* @__PURE__ */ jsx(Action.Card, { children: /* @__PURE__ */ jsx(Web3SelectSolanaWalletScreen, { onConnect: connect }) })
|
|
96
|
+
}),
|
|
97
|
+
card.error && /* @__PURE__ */ jsx(Text, {
|
|
98
|
+
colorScheme: "danger",
|
|
99
|
+
sx: (t) => ({
|
|
100
|
+
padding: t.sizes.$1x5,
|
|
101
|
+
paddingLeft: t.sizes.$8x5
|
|
102
|
+
}),
|
|
103
|
+
children: card.error
|
|
104
|
+
})
|
|
105
|
+
] });
|
|
106
|
+
};
|
|
86
107
|
|
|
87
108
|
//#endregion
|
|
88
109
|
export { AddWeb3WalletActionMenu };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Web3Form.js","names":["err: any"],"sources":["../../../src/components/UserProfile/Web3Form.tsx"],"sourcesContent":["import { createWeb3 } from '@clerk/shared/internal/clerk-js/web3';\nimport { useReverification, useUser } from '@clerk/shared/react';\nimport type { Web3Provider, Web3Strategy } from '@clerk/shared/types';\n\nimport {
|
|
1
|
+
{"version":3,"file":"Web3Form.js","names":["err: any"],"sources":["../../../src/components/UserProfile/Web3Form.tsx"],"sourcesContent":["import { createWeb3 } from '@clerk/shared/internal/clerk-js/web3';\nimport { useReverification, useUser } from '@clerk/shared/react';\nimport type { Web3Provider, Web3Strategy } from '@clerk/shared/types';\n\nimport { Web3SelectSolanaWalletScreen } from '@/ui/components/UserProfile/Web3SelectSolanaWalletScreen';\nimport { Action } from '@/ui/elements/Action';\nimport { useActionContext } from '@/ui/elements/Action/ActionRoot';\nimport { useCardState } from '@/ui/elements/contexts';\nimport { ProfileSection } from '@/ui/elements/Section';\nimport { getFieldError, handleError } from '@/ui/utils/errorHandler';\n\nimport { useModuleManager } from '../../contexts';\nimport { descriptors, Image, localizationKeys, Text } from '../../customizables';\nimport { useEnabledThirdPartyProviders } from '../../hooks';\n\nexport const AddWeb3WalletActionMenu = () => {\n const card = useCardState();\n const { open } = useActionContext();\n const { user } = useUser();\n const { strategies, strategyToDisplayData } = useEnabledThirdPartyProviders();\n const moduleManager = useModuleManager();\n const enabledStrategies = strategies.filter(s => s.startsWith('web3')) as Web3Strategy[];\n const connectedStrategies = user?.verifiedWeb3Wallets?.map(w => w.verification.strategy) ?? ([] as Web3Strategy[]);\n const unconnectedStrategies = enabledStrategies.filter(strategy => {\n return !connectedStrategies.includes(strategy) && strategyToDisplayData[strategy];\n });\n\n if (unconnectedStrategies.length === 0) {\n return null;\n }\n\n const createWeb3Wallet = useReverification((identifier: string) =>\n user?.createWeb3Wallet({ web3Wallet: identifier }),\n );\n\n // If the user selects `web3_solana_signature` as their strategy,\n // we need to obtain the wallet name to use when connecting and signing the message during the auth flow\n //\n // Otherwise, our current Web3 providers are all based on the wallet provider name,\n // which is sufficient for our current use case when connecting to a wallet.\n const connect = async ({ strategy, walletName }: { strategy: Web3Strategy; walletName?: string }) => {\n const web3 = createWeb3(moduleManager);\n\n if (strategy === 'web3_solana_signature' && !walletName) {\n open('web3Wallets');\n return;\n }\n const provider = strategy.replace('web3_', '').replace('_signature', '') as Web3Provider;\n card.setError(undefined);\n\n try {\n card.setLoading(strategy);\n const identifier = await web3.getWeb3Identifier({ provider, walletName });\n\n if (!user) {\n throw new Error('user is not defined');\n }\n\n let web3Wallet = await createWeb3Wallet(identifier);\n web3Wallet = await web3Wallet?.prepareVerification({ strategy });\n const message = web3Wallet?.verification.message as string;\n const signature = await web3.generateWeb3Signature({ identifier, nonce: message, provider, walletName });\n await web3Wallet?.attemptVerification({ signature });\n card.setIdle();\n } catch (err: any) {\n card.setIdle();\n const fieldError = getFieldError(err);\n if (fieldError) {\n card.setError(fieldError.longMessage);\n } else {\n handleError(err, [], card.setError);\n }\n }\n };\n\n return (\n <>\n <Action.Closed value='web3Wallets'>\n <ProfileSection.ActionMenu\n id='web3Wallets'\n triggerLocalizationKey={localizationKeys('userProfile.start.web3WalletsSection.primaryButton')}\n >\n {unconnectedStrategies.map(strategy => (\n <ProfileSection.ActionMenuItem\n key={strategy}\n id={strategyToDisplayData[strategy].id}\n onClick={() => {\n void connect({ strategy });\n }}\n isLoading={card.loadingMetadata === strategy}\n isDisabled={card.isLoading}\n localizationKey={localizationKeys('userProfile.web3WalletPage.web3WalletButtonsBlockButton', {\n provider: strategyToDisplayData[strategy].name,\n })}\n sx={t => ({\n justifyContent: 'start',\n gap: t.space.$2,\n })}\n leftIcon={\n <Image\n elementDescriptor={descriptors.providerIcon}\n elementId={descriptors.providerIcon.setId(strategyToDisplayData[strategy].id)}\n isLoading={card.loadingMetadata === strategy}\n isDisabled={card.isLoading}\n src={strategyToDisplayData[strategy].iconUrl}\n alt={`Connect ${strategyToDisplayData[strategy].name}`}\n sx={theme => ({ width: theme.sizes.$5 })}\n />\n }\n />\n ))}\n </ProfileSection.ActionMenu>\n </Action.Closed>\n <Action.Open value='web3Wallets'>\n <Action.Card>\n <Web3SelectSolanaWalletScreen onConnect={connect} />\n </Action.Card>\n </Action.Open>\n\n {card.error && (\n <Text\n colorScheme='danger'\n sx={t => ({\n padding: t.sizes.$1x5,\n paddingLeft: t.sizes.$8x5,\n })}\n >\n {card.error}\n </Text>\n )}\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,MAAa,gCAAgC;CAC3C,MAAM,OAAO,cAAc;CAC3B,MAAM,EAAE,SAAS,kBAAkB;CACnC,MAAM,EAAE,SAAS,SAAS;CAC1B,MAAM,EAAE,YAAY,0BAA0B,+BAA+B;CAC7E,MAAM,gBAAgB,kBAAkB;CACxC,MAAM,oBAAoB,WAAW,QAAO,MAAK,EAAE,WAAW,OAAO,CAAC;CACtE,MAAM,sBAAsB,MAAM,qBAAqB,KAAI,MAAK,EAAE,aAAa,SAAS,IAAK,EAAE;CAC/F,MAAM,wBAAwB,kBAAkB,QAAO,aAAY;AACjE,SAAO,CAAC,oBAAoB,SAAS,SAAS,IAAI,sBAAsB;GACxE;AAEF,KAAI,sBAAsB,WAAW,EACnC,QAAO;CAGT,MAAM,mBAAmB,mBAAmB,eAC1C,MAAM,iBAAiB,EAAE,YAAY,YAAY,CAAC,CACnD;CAOD,MAAM,UAAU,OAAO,EAAE,UAAU,iBAAkE;EACnG,MAAM,OAAO,WAAW,cAAc;AAEtC,MAAI,aAAa,2BAA2B,CAAC,YAAY;AACvD,QAAK,cAAc;AACnB;;EAEF,MAAM,WAAW,SAAS,QAAQ,SAAS,GAAG,CAAC,QAAQ,cAAc,GAAG;AACxE,OAAK,SAAS,OAAU;AAExB,MAAI;AACF,QAAK,WAAW,SAAS;GACzB,MAAM,aAAa,MAAM,KAAK,kBAAkB;IAAE;IAAU;IAAY,CAAC;AAEzE,OAAI,CAAC,KACH,OAAM,IAAI,MAAM,sBAAsB;GAGxC,IAAI,aAAa,MAAM,iBAAiB,WAAW;AACnD,gBAAa,MAAM,YAAY,oBAAoB,EAAE,UAAU,CAAC;GAChE,MAAM,UAAU,YAAY,aAAa;GACzC,MAAM,YAAY,MAAM,KAAK,sBAAsB;IAAE;IAAY,OAAO;IAAS;IAAU;IAAY,CAAC;AACxG,SAAM,YAAY,oBAAoB,EAAE,WAAW,CAAC;AACpD,QAAK,SAAS;WACPA,KAAU;AACjB,QAAK,SAAS;GACd,MAAM,aAAa,cAAc,IAAI;AACrC,OAAI,WACF,MAAK,SAAS,WAAW,YAAY;OAErC,aAAY,KAAK,EAAE,EAAE,KAAK,SAAS;;;AAKzC,QACE;EACE,oBAAC,OAAO;GAAO,OAAM;aACnB,oBAAC,eAAe;IACd,IAAG;IACH,wBAAwB,iBAAiB,qDAAqD;cAE7F,sBAAsB,KAAI,aACzB,oBAAC,eAAe;KAEd,IAAI,sBAAsB,UAAU;KACpC,eAAe;AACb,MAAK,QAAQ,EAAE,UAAU,CAAC;;KAE5B,WAAW,KAAK,oBAAoB;KACpC,YAAY,KAAK;KACjB,iBAAiB,iBAAiB,2DAA2D,EAC3F,UAAU,sBAAsB,UAAU,MAC3C,CAAC;KACF,KAAI,OAAM;MACR,gBAAgB;MAChB,KAAK,EAAE,MAAM;MACd;KACD,UACE,oBAAC;MACC,mBAAmB,YAAY;MAC/B,WAAW,YAAY,aAAa,MAAM,sBAAsB,UAAU,GAAG;MAC7E,WAAW,KAAK,oBAAoB;MACpC,YAAY,KAAK;MACjB,KAAK,sBAAsB,UAAU;MACrC,KAAK,WAAW,sBAAsB,UAAU;MAChD,KAAI,WAAU,EAAE,OAAO,MAAM,MAAM,IAAI;OACvC;OAvBC,SAyBL,CACF;KACwB;IACd;EAChB,oBAAC,OAAO;GAAK,OAAM;aACjB,oBAAC,OAAO,kBACN,oBAAC,gCAA6B,WAAW,UAAW,GACxC;IACF;EAEb,KAAK,SACJ,oBAAC;GACC,aAAY;GACZ,KAAI,OAAM;IACR,SAAS,EAAE,MAAM;IACjB,aAAa,EAAE,MAAM;IACtB;aAEA,KAAK;IACD;KAER"}
|
|
@@ -89,7 +89,7 @@ const Web3Section = withCardStateProvider(({ shouldAllowCreation = true }) => {
|
|
|
89
89
|
})
|
|
90
90
|
})] }, wallet.id);
|
|
91
91
|
})
|
|
92
|
-
}), shouldAllowCreation && /* @__PURE__ */ jsx(AddWeb3WalletActionMenu, {
|
|
92
|
+
}), shouldAllowCreation && /* @__PURE__ */ jsx(AddWeb3WalletActionMenu, {})]
|
|
93
93
|
})]
|
|
94
94
|
});
|
|
95
95
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Web3Section.js","names":[],"sources":["../../../src/components/UserProfile/Web3Section.tsx"],"sourcesContent":["import { useReverification, useUser } from '@clerk/shared/react';\nimport { Fragment, useState } from 'react';\n\nimport { Card } from '@/ui/elements/Card';\nimport { useCardState, withCardStateProvider } from '@/ui/elements/contexts';\nimport { ProfileSection } from '@/ui/elements/Section';\nimport { ThreeDotsMenu } from '@/ui/elements/ThreeDotsMenu';\nimport { handleError } from '@/ui/utils/errorHandler';\n\nimport { Badge, Box, Flex, Image, localizationKeys, Text } from '../../customizables';\nimport { Action } from '../../elements/Action';\nimport { useActionContext } from '../../elements/Action/ActionRoot';\nimport { useEnabledThirdPartyProviders } from '../../hooks';\nimport type { PropsOfComponent } from '../../styledSystem';\nimport { RemoveWeb3WalletForm } from './RemoveResourceForm';\nimport { sortIdentificationBasedOnVerification } from './utils';\nimport { AddWeb3WalletActionMenu } from './Web3Form';\n\ntype RemoveWeb3WalletScreenProps = { walletId: string };\nconst RemoveWeb3WalletScreen = (props: RemoveWeb3WalletScreenProps) => {\n const { close } = useActionContext();\n return (\n <RemoveWeb3WalletForm\n onSuccess={close}\n onReset={close}\n {...props}\n />\n );\n};\n\nconst shortenWeb3Address = (address: string) => {\n if (address.length <= 10) {\n return address;\n }\n return address.slice(0, 6) + '...' + address.slice(-4);\n};\n\nexport const Web3Section = withCardStateProvider(\n ({ shouldAllowCreation = true }: { shouldAllowCreation?: boolean }) => {\n const { user } = useUser();\n const card = useCardState();\n const { strategyToDisplayData } = useEnabledThirdPartyProviders();\n const hasWeb3Wallets = Boolean(user?.web3Wallets?.length);\n const [actionValue, setActionValue] = useState<string | null>(null);\n\n if (!shouldAllowCreation && !hasWeb3Wallets) {\n return null;\n }\n\n return (\n <ProfileSection.Root\n title={localizationKeys('userProfile.start.web3WalletsSection.title')}\n centered={false}\n id='web3Wallets'\n >\n <Card.Alert>{card.error}</Card.Alert>\n <Action.Root\n value={actionValue}\n onChange={setActionValue}\n >\n <ProfileSection.ItemList id='web3Wallets'>\n {sortIdentificationBasedOnVerification(user?.web3Wallets, user?.primaryWeb3WalletId).map(wallet => {\n const strategy = wallet.verification.strategy as keyof typeof strategyToDisplayData;\n const walletId = wallet.id;\n return (\n strategyToDisplayData[strategy] && (\n <Fragment key={wallet.id}>\n <ProfileSection.Item\n key={walletId}\n id='web3Wallets'\n align='start'\n >\n <Flex sx={t => ({ alignItems: 'center', gap: t.space.$2, width: '100%' })}>\n {strategyToDisplayData[strategy].iconUrl && (\n <Image\n src={strategyToDisplayData[strategy].iconUrl}\n alt={strategyToDisplayData[strategy].name}\n sx={theme => ({ width: theme.sizes.$4 })}\n />\n )}\n <Box sx={{ whiteSpace: 'nowrap', overflow: 'hidden' }}>\n <Flex\n gap={2}\n justify='start'\n >\n <Text>\n {strategyToDisplayData[strategy].name} ({shortenWeb3Address(wallet.web3Wallet)})\n </Text>\n {user?.primaryWeb3WalletId === walletId && (\n <Badge localizationKey={localizationKeys('badge__primary')} />\n )}\n {wallet.verification.status !== 'verified' && (\n <Badge localizationKey={localizationKeys('badge__unverified')} />\n )}\n </Flex>\n </Box>\n </Flex>\n <Web3WalletMenu walletId={walletId} />\n </ProfileSection.Item>\n\n <Action.Open value={`remove-${walletId}`}>\n <Action.Card variant='destructive'>\n <RemoveWeb3WalletScreen walletId={wallet.id} />\n </Action.Card>\n </Action.Open>\n </Fragment>\n )\n );\n })}\n </ProfileSection.ItemList>\n {shouldAllowCreation && <AddWeb3WalletActionMenu
|
|
1
|
+
{"version":3,"file":"Web3Section.js","names":[],"sources":["../../../src/components/UserProfile/Web3Section.tsx"],"sourcesContent":["import { useReverification, useUser } from '@clerk/shared/react';\nimport { Fragment, useState } from 'react';\n\nimport { Card } from '@/ui/elements/Card';\nimport { useCardState, withCardStateProvider } from '@/ui/elements/contexts';\nimport { ProfileSection } from '@/ui/elements/Section';\nimport { ThreeDotsMenu } from '@/ui/elements/ThreeDotsMenu';\nimport { handleError } from '@/ui/utils/errorHandler';\n\nimport { Badge, Box, Flex, Image, localizationKeys, Text } from '../../customizables';\nimport { Action } from '../../elements/Action';\nimport { useActionContext } from '../../elements/Action/ActionRoot';\nimport { useEnabledThirdPartyProviders } from '../../hooks';\nimport type { PropsOfComponent } from '../../styledSystem';\nimport { RemoveWeb3WalletForm } from './RemoveResourceForm';\nimport { sortIdentificationBasedOnVerification } from './utils';\nimport { AddWeb3WalletActionMenu } from './Web3Form';\n\ntype RemoveWeb3WalletScreenProps = { walletId: string };\nconst RemoveWeb3WalletScreen = (props: RemoveWeb3WalletScreenProps) => {\n const { close } = useActionContext();\n return (\n <RemoveWeb3WalletForm\n onSuccess={close}\n onReset={close}\n {...props}\n />\n );\n};\n\nconst shortenWeb3Address = (address: string) => {\n if (address.length <= 10) {\n return address;\n }\n return address.slice(0, 6) + '...' + address.slice(-4);\n};\n\nexport const Web3Section = withCardStateProvider(\n ({ shouldAllowCreation = true }: { shouldAllowCreation?: boolean }) => {\n const { user } = useUser();\n const card = useCardState();\n const { strategyToDisplayData } = useEnabledThirdPartyProviders();\n const hasWeb3Wallets = Boolean(user?.web3Wallets?.length);\n const [actionValue, setActionValue] = useState<string | null>(null);\n\n if (!shouldAllowCreation && !hasWeb3Wallets) {\n return null;\n }\n\n return (\n <ProfileSection.Root\n title={localizationKeys('userProfile.start.web3WalletsSection.title')}\n centered={false}\n id='web3Wallets'\n >\n <Card.Alert>{card.error}</Card.Alert>\n <Action.Root\n value={actionValue}\n onChange={setActionValue}\n >\n <ProfileSection.ItemList id='web3Wallets'>\n {sortIdentificationBasedOnVerification(user?.web3Wallets, user?.primaryWeb3WalletId).map(wallet => {\n const strategy = wallet.verification.strategy as keyof typeof strategyToDisplayData;\n const walletId = wallet.id;\n return (\n strategyToDisplayData[strategy] && (\n <Fragment key={wallet.id}>\n <ProfileSection.Item\n key={walletId}\n id='web3Wallets'\n align='start'\n >\n <Flex sx={t => ({ alignItems: 'center', gap: t.space.$2, width: '100%' })}>\n {strategyToDisplayData[strategy].iconUrl && (\n <Image\n src={strategyToDisplayData[strategy].iconUrl}\n alt={strategyToDisplayData[strategy].name}\n sx={theme => ({ width: theme.sizes.$4 })}\n />\n )}\n <Box sx={{ whiteSpace: 'nowrap', overflow: 'hidden' }}>\n <Flex\n gap={2}\n justify='start'\n >\n <Text>\n {strategyToDisplayData[strategy].name} ({shortenWeb3Address(wallet.web3Wallet)})\n </Text>\n {user?.primaryWeb3WalletId === walletId && (\n <Badge localizationKey={localizationKeys('badge__primary')} />\n )}\n {wallet.verification.status !== 'verified' && (\n <Badge localizationKey={localizationKeys('badge__unverified')} />\n )}\n </Flex>\n </Box>\n </Flex>\n <Web3WalletMenu walletId={walletId} />\n </ProfileSection.Item>\n\n <Action.Open value={`remove-${walletId}`}>\n <Action.Card variant='destructive'>\n <RemoveWeb3WalletScreen walletId={wallet.id} />\n </Action.Card>\n </Action.Open>\n </Fragment>\n )\n );\n })}\n </ProfileSection.ItemList>\n {shouldAllowCreation && <AddWeb3WalletActionMenu />}\n </Action.Root>\n </ProfileSection.Root>\n );\n },\n);\n\nconst Web3WalletMenu = ({ walletId }: { walletId: string }) => {\n const card = useCardState();\n const { open } = useActionContext();\n const { user } = useUser();\n const isPrimary = user?.primaryWeb3WalletId === walletId;\n const setPrimary = useReverification(() => {\n return user?.update({ primaryWeb3WalletId: walletId });\n });\n\n const actions = (\n [\n !isPrimary\n ? {\n label: localizationKeys('userProfile.start.web3WalletsSection.detailsAction__nonPrimary'),\n onClick: () => {\n setPrimary().catch(e => handleError(e, [], card.setError));\n },\n }\n : null,\n {\n label: localizationKeys('userProfile.start.web3WalletsSection.destructiveAction'),\n isDestructive: true,\n onClick: () => open(`remove-${walletId}`),\n },\n ] satisfies (PropsOfComponent<typeof ThreeDotsMenu>['actions'][0] | null)[]\n ).filter(a => a !== null) as PropsOfComponent<typeof ThreeDotsMenu>['actions'];\n\n return <ThreeDotsMenu actions={actions} />;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAmBA,MAAM,0BAA0B,UAAuC;CACrE,MAAM,EAAE,UAAU,kBAAkB;AACpC,QACE,oBAAC;EACC,WAAW;EACX,SAAS;EACT,GAAI;GACJ;;AAIN,MAAM,sBAAsB,YAAoB;AAC9C,KAAI,QAAQ,UAAU,GACpB,QAAO;AAET,QAAO,QAAQ,MAAM,GAAG,EAAE,GAAG,QAAQ,QAAQ,MAAM,GAAG;;AAGxD,MAAa,cAAc,uBACxB,EAAE,sBAAsB,WAA8C;CACrE,MAAM,EAAE,SAAS,SAAS;CAC1B,MAAM,OAAO,cAAc;CAC3B,MAAM,EAAE,0BAA0B,+BAA+B;CACjE,MAAM,iBAAiB,QAAQ,MAAM,aAAa,OAAO;CACzD,MAAM,CAAC,aAAa,kBAAkB,SAAwB,KAAK;AAEnE,KAAI,CAAC,uBAAuB,CAAC,eAC3B,QAAO;AAGT,QACE,qBAAC,eAAe;EACd,OAAO,iBAAiB,6CAA6C;EACrE,UAAU;EACV,IAAG;aAEH,oBAAC,KAAK,mBAAO,KAAK,QAAmB,EACrC,qBAAC,OAAO;GACN,OAAO;GACP,UAAU;cAEV,oBAAC,eAAe;IAAS,IAAG;cACzB,sCAAsC,MAAM,aAAa,MAAM,oBAAoB,CAAC,KAAI,WAAU;KACjG,MAAM,WAAW,OAAO,aAAa;KACrC,MAAM,WAAW,OAAO;AACxB,YACE,sBAAsB,aACpB,qBAAC,uBACC,qBAAC,eAAe;MAEd,IAAG;MACH,OAAM;iBAEN,qBAAC;OAAK,KAAI,OAAM;QAAE,YAAY;QAAU,KAAK,EAAE,MAAM;QAAI,OAAO;QAAQ;kBACrE,sBAAsB,UAAU,WAC/B,oBAAC;QACC,KAAK,sBAAsB,UAAU;QACrC,KAAK,sBAAsB,UAAU;QACrC,KAAI,WAAU,EAAE,OAAO,MAAM,MAAM,IAAI;SACvC,EAEJ,oBAAC;QAAI,IAAI;SAAE,YAAY;SAAU,UAAU;SAAU;kBACnD,qBAAC;SACC,KAAK;SACL,SAAQ;;UAER,qBAAC;WACE,sBAAsB,UAAU;WAAK;WAAG,mBAAmB,OAAO,WAAW;WAAC;cAC1E;UACN,MAAM,wBAAwB,YAC7B,oBAAC,SAAM,iBAAiB,iBAAiB,iBAAiB,GAAI;UAE/D,OAAO,aAAa,WAAW,cAC9B,oBAAC,SAAM,iBAAiB,iBAAiB,oBAAoB,GAAI;;UAE9D;SACH;QACD,EACP,oBAAC,kBAAyB,WAAY;QA7BjC,SA8Be,EAEtB,oBAAC,OAAO;MAAK,OAAO,UAAU;gBAC5B,oBAAC,OAAO;OAAK,SAAQ;iBACnB,oBAAC,0BAAuB,UAAU,OAAO,KAAM;QACnC;OACF,KAtCD,OAAO,GAuCX;MAGf;KACsB,EACzB,uBAAuB,oBAAC,4BAA0B;IACvC;GACM;EAG3B;AAED,MAAM,kBAAkB,EAAE,eAAqC;CAC7D,MAAM,OAAO,cAAc;CAC3B,MAAM,EAAE,SAAS,kBAAkB;CACnC,MAAM,EAAE,SAAS,SAAS;CAC1B,MAAM,YAAY,MAAM,wBAAwB;CAChD,MAAM,aAAa,wBAAwB;AACzC,SAAO,MAAM,OAAO,EAAE,qBAAqB,UAAU,CAAC;GACtD;AAoBF,QAAO,oBAAC,iBAAc,SAjBpB,CACE,CAAC,YACG;EACE,OAAO,iBAAiB,iEAAiE;EACzF,eAAe;AACb,eAAY,CAAC,OAAM,MAAK,YAAY,GAAG,EAAE,EAAE,KAAK,SAAS,CAAC;;EAE7D,GACD,MACJ;EACE,OAAO,iBAAiB,yDAAyD;EACjF,eAAe;EACf,eAAe,KAAK,UAAU,WAAW;EAC1C,CACF,CACD,QAAO,MAAK,MAAM,KAAK,GAEiB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { localizationKeys } from "../../localization/localizationKeys.js";
|
|
2
|
+
import { descriptors } from "../../customizables/elementDescriptors.js";
|
|
3
|
+
import { useCardState } from "../../elements/contexts/index.js";
|
|
4
|
+
import { Button, Flex, Spinner } from "../../customizables/index.js";
|
|
5
|
+
import { handleError } from "../../utils/errorHandler.js";
|
|
6
|
+
import { Form } from "../../elements/Form.js";
|
|
7
|
+
import { FormButtonContainer } from "../../elements/FormButtons.js";
|
|
8
|
+
import { FormContainer } from "../../elements/FormContainer.js";
|
|
9
|
+
import { useActionContext } from "../../elements/Action/ActionRoot.js";
|
|
10
|
+
import { Suspense, lazy } from "react";
|
|
11
|
+
import { jsx, jsxs } from "@emotion/react/jsx-runtime";
|
|
12
|
+
import { ClerkRuntimeError } from "@clerk/shared/error";
|
|
13
|
+
|
|
14
|
+
//#region src/components/UserProfile/Web3SelectSolanaWalletScreen.tsx
|
|
15
|
+
const Web3SolanaWalletButtons = lazy(() => import(
|
|
16
|
+
/* webpackChunkName: "web3-solana-wallet-buttons" */
|
|
17
|
+
"../../elements/Web3SolanaWalletButtons.js"
|
|
18
|
+
).then((m) => ({ default: m.Web3SolanaWalletButtons })));
|
|
19
|
+
const Web3SelectSolanaWalletScreen = ({ onConnect }) => {
|
|
20
|
+
const card = useCardState();
|
|
21
|
+
const { close } = useActionContext();
|
|
22
|
+
const onClick = async ({ walletName }) => {
|
|
23
|
+
card.setLoading(walletName);
|
|
24
|
+
try {
|
|
25
|
+
await onConnect({
|
|
26
|
+
strategy: "web3_solana_signature",
|
|
27
|
+
walletName
|
|
28
|
+
});
|
|
29
|
+
card.setIdle();
|
|
30
|
+
close();
|
|
31
|
+
} catch (err) {
|
|
32
|
+
card.setIdle();
|
|
33
|
+
if (err instanceof Error) handleError(err, [], card.setError);
|
|
34
|
+
else handleError(new ClerkRuntimeError("An error occurred while generating the Solana signature.", {
|
|
35
|
+
code: "web3_solana_signature_generation_failed",
|
|
36
|
+
cause: err instanceof Error ? err : void 0
|
|
37
|
+
}), [], card.setError);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
return /* @__PURE__ */ jsx(FormContainer, {
|
|
41
|
+
headerTitle: localizationKeys("userProfile.start.web3WalletsSection.web3SelectSolanaWalletScreen.title"),
|
|
42
|
+
headerSubtitle: localizationKeys("userProfile.start.web3WalletsSection.web3SelectSolanaWalletScreen.subtitle"),
|
|
43
|
+
children: /* @__PURE__ */ jsxs(Form.Root, { children: [/* @__PURE__ */ jsx(Suspense, {
|
|
44
|
+
fallback: /* @__PURE__ */ jsx(Flex, {
|
|
45
|
+
direction: "row",
|
|
46
|
+
align: "center",
|
|
47
|
+
justify: "center",
|
|
48
|
+
sx: (t) => ({
|
|
49
|
+
height: "100%",
|
|
50
|
+
minHeight: t.sizes.$32
|
|
51
|
+
}),
|
|
52
|
+
children: /* @__PURE__ */ jsx(Spinner, {
|
|
53
|
+
size: "lg",
|
|
54
|
+
colorScheme: "primary",
|
|
55
|
+
elementDescriptor: descriptors.spinner
|
|
56
|
+
})
|
|
57
|
+
}),
|
|
58
|
+
children: /* @__PURE__ */ jsx(Web3SolanaWalletButtons, { web3AuthCallback: onClick })
|
|
59
|
+
}), /* @__PURE__ */ jsx(FormButtonContainer, { children: /* @__PURE__ */ jsx(Button, {
|
|
60
|
+
type: "button",
|
|
61
|
+
variant: "ghost",
|
|
62
|
+
onClick: () => {
|
|
63
|
+
close();
|
|
64
|
+
},
|
|
65
|
+
localizationKey: localizationKeys("userProfile.formButtonReset"),
|
|
66
|
+
elementDescriptor: descriptors.formButtonReset
|
|
67
|
+
}) })] })
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
//#endregion
|
|
72
|
+
export { Web3SelectSolanaWalletScreen };
|
|
73
|
+
//# sourceMappingURL=Web3SelectSolanaWalletScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Web3SelectSolanaWalletScreen.js","names":[],"sources":["../../../src/components/UserProfile/Web3SelectSolanaWalletScreen.tsx"],"sourcesContent":["import { ClerkRuntimeError } from '@clerk/shared/error';\nimport type { Web3Strategy } from '@clerk/shared/types';\nimport { lazy, Suspense } from 'react';\n\nimport { Button, descriptors, Flex, localizationKeys, Spinner } from '@/customizables';\nimport { useActionContext } from '@/ui/elements/Action/ActionRoot';\nimport { useCardState } from '@/ui/elements/contexts';\nimport { Form } from '@/ui/elements/Form';\nimport { FormButtonContainer } from '@/ui/elements/FormButtons';\nimport { FormContainer } from '@/ui/elements/FormContainer';\nimport { handleError } from '@/utils/errorHandler';\n\nconst Web3SolanaWalletButtons = lazy(() =>\n import(/* webpackChunkName: \"web3-solana-wallet-buttons\" */ '@/ui/elements/Web3SolanaWalletButtons').then(m => ({\n default: m.Web3SolanaWalletButtons,\n })),\n);\n\nexport type Web3SelectWalletProps = {\n onConnect: (params: { strategy: Web3Strategy; walletName: string }) => Promise<void>;\n};\n\nexport const Web3SelectSolanaWalletScreen = ({ onConnect }: Web3SelectWalletProps) => {\n const card = useCardState();\n const { close } = useActionContext();\n\n const onClick = async ({ walletName }: { walletName: string }) => {\n card.setLoading(walletName);\n try {\n await onConnect({ strategy: 'web3_solana_signature', walletName });\n card.setIdle();\n close();\n } catch (err) {\n card.setIdle();\n if (err instanceof Error) {\n handleError(err, [], card.setError);\n } else {\n const error = new ClerkRuntimeError('An error occurred while generating the Solana signature.', {\n code: 'web3_solana_signature_generation_failed',\n cause: err instanceof Error ? err : undefined,\n });\n handleError(error, [], card.setError);\n }\n }\n };\n\n return (\n <FormContainer\n headerTitle={localizationKeys('userProfile.start.web3WalletsSection.web3SelectSolanaWalletScreen.title')}\n headerSubtitle={localizationKeys('userProfile.start.web3WalletsSection.web3SelectSolanaWalletScreen.subtitle')}\n >\n <Form.Root>\n <Suspense\n fallback={\n <Flex\n direction={'row'}\n align={'center'}\n justify={'center'}\n sx={t => ({\n height: '100%',\n minHeight: t.sizes.$32,\n })}\n >\n <Spinner\n size={'lg'}\n colorScheme={'primary'}\n elementDescriptor={descriptors.spinner}\n />\n </Flex>\n }\n >\n <Web3SolanaWalletButtons web3AuthCallback={onClick} />\n </Suspense>\n <FormButtonContainer>\n <Button\n type='button'\n variant='ghost'\n onClick={() => {\n close();\n }}\n localizationKey={localizationKeys('userProfile.formButtonReset')}\n elementDescriptor={descriptors.formButtonReset}\n />\n </FormButtonContainer>\n </Form.Root>\n </FormContainer>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AAYA,MAAM,0BAA0B,WAC9B;;CAA4D;EAAyC,MAAK,OAAM,EAC9G,SAAS,EAAE,yBACZ,EAAE,CACJ;AAMD,MAAa,gCAAgC,EAAE,gBAAuC;CACpF,MAAM,OAAO,cAAc;CAC3B,MAAM,EAAE,UAAU,kBAAkB;CAEpC,MAAM,UAAU,OAAO,EAAE,iBAAyC;AAChE,OAAK,WAAW,WAAW;AAC3B,MAAI;AACF,SAAM,UAAU;IAAE,UAAU;IAAyB;IAAY,CAAC;AAClE,QAAK,SAAS;AACd,UAAO;WACA,KAAK;AACZ,QAAK,SAAS;AACd,OAAI,eAAe,MACjB,aAAY,KAAK,EAAE,EAAE,KAAK,SAAS;OAMnC,aAJc,IAAI,kBAAkB,4DAA4D;IAC9F,MAAM;IACN,OAAO,eAAe,QAAQ,MAAM;IACrC,CAAC,EACiB,EAAE,EAAE,KAAK,SAAS;;;AAK3C,QACE,oBAAC;EACC,aAAa,iBAAiB,0EAA0E;EACxG,gBAAgB,iBAAiB,6EAA6E;YAE9G,qBAAC,KAAK,mBACJ,oBAAC;GACC,UACE,oBAAC;IACC,WAAW;IACX,OAAO;IACP,SAAS;IACT,KAAI,OAAM;KACR,QAAQ;KACR,WAAW,EAAE,MAAM;KACpB;cAED,oBAAC;KACC,MAAM;KACN,aAAa;KACb,mBAAmB,YAAY;MAC/B;KACG;aAGT,oBAAC,2BAAwB,kBAAkB,UAAW;IAC7C,EACX,oBAAC,iCACC,oBAAC;GACC,MAAK;GACL,SAAQ;GACR,eAAe;AACb,WAAO;;GAET,iBAAiB,iBAAiB,8BAA8B;GAChE,mBAAmB,YAAY;IAC/B,GACkB,IACZ;GACE"}
|