@zerodev/wallet-react-ui 0.0.1

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.
Files changed (94) hide show
  1. package/README.md +124 -0
  2. package/dist/_types/auth/authStoreSlice.d.ts +33 -0
  3. package/dist/_types/auth/authStoreSlice.d.ts.map +1 -0
  4. package/dist/_types/auth/components/BlobAnimation/index.d.ts +4 -0
  5. package/dist/_types/auth/components/BlobAnimation/index.d.ts.map +1 -0
  6. package/dist/_types/auth/components/CodeInput/index.d.ts +11 -0
  7. package/dist/_types/auth/components/CodeInput/index.d.ts.map +1 -0
  8. package/dist/_types/auth/hooks/useAuth.d.ts +18 -0
  9. package/dist/_types/auth/hooks/useAuth.d.ts.map +1 -0
  10. package/dist/_types/auth/index.d.ts +4 -0
  11. package/dist/_types/auth/index.d.ts.map +1 -0
  12. package/dist/_types/auth/pages/EmailVerification.d.ts +2 -0
  13. package/dist/_types/auth/pages/EmailVerification.d.ts.map +1 -0
  14. package/dist/_types/auth/pages/ErrorScreen.d.ts +9 -0
  15. package/dist/_types/auth/pages/ErrorScreen.d.ts.map +1 -0
  16. package/dist/_types/auth/pages/OtpInput.d.ts +2 -0
  17. package/dist/_types/auth/pages/OtpInput.d.ts.map +1 -0
  18. package/dist/_types/auth/pages/SignUp.d.ts +2 -0
  19. package/dist/_types/auth/pages/SignUp.d.ts.map +1 -0
  20. package/dist/_types/auth/pages/Verifying.d.ts +2 -0
  21. package/dist/_types/auth/pages/Verifying.d.ts.map +1 -0
  22. package/dist/_types/auth/pages/WalletSelection.d.ts +2 -0
  23. package/dist/_types/auth/pages/WalletSelection.d.ts.map +1 -0
  24. package/dist/_types/auth/types.d.ts +12 -0
  25. package/dist/_types/auth/types.d.ts.map +1 -0
  26. package/dist/_types/auth/utils/url.d.ts +3 -0
  27. package/dist/_types/auth/utils/url.d.ts.map +1 -0
  28. package/dist/_types/connector.d.ts +17 -0
  29. package/dist/_types/connector.d.ts.map +1 -0
  30. package/dist/_types/index.d.ts +10 -0
  31. package/dist/_types/index.d.ts.map +1 -0
  32. package/dist/_types/shared/components/PoweredBy/index.d.ts +6 -0
  33. package/dist/_types/shared/components/PoweredBy/index.d.ts.map +1 -0
  34. package/dist/_types/shared/components/Screen/EllipticalRadial.d.ts +23 -0
  35. package/dist/_types/shared/components/Screen/EllipticalRadial.d.ts.map +1 -0
  36. package/dist/_types/shared/components/Screen/MultiRadialBackground.d.ts +4 -0
  37. package/dist/_types/shared/components/Screen/MultiRadialBackground.d.ts.map +1 -0
  38. package/dist/_types/shared/components/Screen/index.d.ts +9 -0
  39. package/dist/_types/shared/components/Screen/index.d.ts.map +1 -0
  40. package/dist/_types/shared/components/SignUpFooter/index.d.ts +8 -0
  41. package/dist/_types/shared/components/SignUpFooter/index.d.ts.map +1 -0
  42. package/dist/_types/shared/components/StatusScreen/index.d.ts +10 -0
  43. package/dist/_types/shared/components/StatusScreen/index.d.ts.map +1 -0
  44. package/dist/_types/shared/components/TopNav/index.d.ts +10 -0
  45. package/dist/_types/shared/components/TopNav/index.d.ts.map +1 -0
  46. package/dist/_types/shared/hooks/useKitStore.d.ts +11 -0
  47. package/dist/_types/shared/hooks/useKitStore.d.ts.map +1 -0
  48. package/dist/_types/shared/utils/common.d.ts +5 -0
  49. package/dist/_types/shared/utils/common.d.ts.map +1 -0
  50. package/dist/_types/shared/utils/store.d.ts +4 -0
  51. package/dist/_types/shared/utils/store.d.ts.map +1 -0
  52. package/dist/_types/store.d.ts +25 -0
  53. package/dist/_types/store.d.ts.map +1 -0
  54. package/dist/_types/types.d.ts +38 -0
  55. package/dist/_types/types.d.ts.map +1 -0
  56. package/dist/blob.webm +0 -0
  57. package/dist/error.webp +0 -0
  58. package/dist/index.cjs +4 -0
  59. package/dist/index.cjs.map +1 -0
  60. package/dist/index.mjs +1374 -0
  61. package/dist/index.mjs.map +1 -0
  62. package/dist/loading.webp +0 -0
  63. package/dist/send.webp +0 -0
  64. package/dist/styles.css +2 -0
  65. package/dist/success.webp +0 -0
  66. package/package.json +96 -0
  67. package/src/assets.d.ts +14 -0
  68. package/src/auth/authStoreSlice.ts +180 -0
  69. package/src/auth/components/BlobAnimation/index.tsx +24 -0
  70. package/src/auth/components/CodeInput/index.tsx +118 -0
  71. package/src/auth/hooks/useAuth.ts +32 -0
  72. package/src/auth/index.tsx +108 -0
  73. package/src/auth/pages/EmailVerification.tsx +76 -0
  74. package/src/auth/pages/ErrorScreen.tsx +53 -0
  75. package/src/auth/pages/OtpInput.tsx +124 -0
  76. package/src/auth/pages/SignUp.tsx +303 -0
  77. package/src/auth/pages/Verifying.tsx +108 -0
  78. package/src/auth/pages/WalletSelection.tsx +53 -0
  79. package/src/auth/types.ts +23 -0
  80. package/src/auth/utils/url.ts +12 -0
  81. package/src/connector.ts +182 -0
  82. package/src/index.ts +25 -0
  83. package/src/shared/components/PoweredBy/index.tsx +26 -0
  84. package/src/shared/components/Screen/EllipticalRadial.tsx +65 -0
  85. package/src/shared/components/Screen/MultiRadialBackground.tsx +323 -0
  86. package/src/shared/components/Screen/index.tsx +65 -0
  87. package/src/shared/components/SignUpFooter/index.tsx +66 -0
  88. package/src/shared/components/StatusScreen/index.tsx +49 -0
  89. package/src/shared/components/TopNav/index.tsx +45 -0
  90. package/src/shared/hooks/useKitStore.ts +20 -0
  91. package/src/shared/utils/common.ts +26 -0
  92. package/src/shared/utils/store.ts +9 -0
  93. package/src/store.ts +44 -0
  94. package/src/types.ts +48 -0
package/README.md ADDED
@@ -0,0 +1,124 @@
1
+ # @zerodev/wallet-react-ui
2
+
3
+ React wallet UI kit for ZeroDev — a drop-in **authentication** flow built on top
4
+ of a standard [wagmi](https://wagmi.sh) setup, plus an enhanced wagmi connector
5
+ that drives it.
6
+
7
+ Mount one component, get a full embedded-wallet sign-in experience: a multi-step
8
+ screen for passkey / email / Google. UI styling comes from
9
+ [`@zerodev/react-ui`](../react-ui/README.md).
10
+
11
+ ## Installation
12
+
13
+ ```bash
14
+ pnpm add @zerodev/wallet-react-ui \
15
+ @zerodev/wallet-core @zerodev/wallet-react \
16
+ wagmi viem @wagmi/core @tanstack/react-query zustand
17
+ ```
18
+
19
+ > `@zerodev/wallet-core`, `@zerodev/wallet-react`, `wagmi`, `viem`,
20
+ > `@wagmi/core`, `@tanstack/react-query`, and `zustand` are **peer
21
+ > dependencies** — install them alongside this package.
22
+
23
+ ## Setup
24
+
25
+ ### 1. Add the connector to your wagmi config
26
+
27
+ ```tsx
28
+ import { zeroDevWallet } from '@zerodev/wallet-react-ui'
29
+ import { createConfig, http } from 'wagmi'
30
+ import { sepolia } from 'wagmi/chains'
31
+
32
+ export const config = createConfig({
33
+ chains: [sepolia],
34
+ connectors: [
35
+ zeroDevWallet({
36
+ projectId: 'your-project-id', // from https://dashboard.zerodev.app
37
+ chains: [sepolia],
38
+ config: {
39
+ auth: {
40
+ enabledMethods: ['email', 'google', 'passkey'],
41
+ },
42
+ },
43
+ }),
44
+ ],
45
+ transports: { [sepolia.id]: http() },
46
+ })
47
+ ```
48
+
49
+ ### 2. Import the stylesheet once at app entry
50
+
51
+ ```tsx
52
+ import '@zerodev/wallet-react-ui/styles.css'
53
+ ```
54
+
55
+ ### 3. Wrap your app in the wagmi + React Query providers
56
+
57
+ ```tsx
58
+ import { WagmiProvider } from 'wagmi'
59
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
60
+ import { config } from './wagmi-config'
61
+
62
+ const queryClient = new QueryClient()
63
+
64
+ function Root() {
65
+ return (
66
+ <WagmiProvider config={config}>
67
+ <QueryClientProvider client={queryClient}>
68
+ <App />
69
+ </QueryClientProvider>
70
+ </WagmiProvider>
71
+ )
72
+ }
73
+ ```
74
+
75
+ ## Usage
76
+
77
+ Mount `<AuthFlow />` to render the active sign-in screen. Connecting via the
78
+ `zeroDevWallet` connector is what opens the auth flow.
79
+
80
+ ```tsx
81
+ import { AuthFlow } from '@zerodev/wallet-react-ui'
82
+ import { useAccount, useConnect } from 'wagmi'
83
+
84
+ function App() {
85
+ const { status } = useAccount()
86
+ const { connect, connectors } = useConnect()
87
+
88
+ if (status !== 'connected') {
89
+ return (
90
+ <>
91
+ <button onClick={() => connect({ connector: connectors[0] })}>
92
+ Connect
93
+ </button>
94
+ <AuthFlow />
95
+ </>
96
+ )
97
+ }
98
+
99
+ return <YourApp />
100
+ }
101
+ ```
102
+
103
+ ## API
104
+
105
+ | Export | Description |
106
+ | --- | --- |
107
+ | `zeroDevWallet` | wagmi connector with kit-specific auth extensions. |
108
+ | `<AuthFlow />` | Renders the current auth step (sign-in, OTP, verifying, etc.). |
109
+ | `useAuth` | Read / drive the auth flow state. |
110
+
111
+ ### Types
112
+
113
+ `AuthMethod`, `AuthStep`, `ZeroDevKitConfig`, `ZeroDevKitConnectorParams`.
114
+
115
+ ## Development
116
+
117
+ ```bash
118
+ pnpm build # build the package (dist + types + css)
119
+ pnpm dev # watch mode (types)
120
+ pnpm typecheck
121
+ pnpm test # vitest
122
+ pnpm storybook # component catalog
123
+ pnpm docs:dev # local docs site (vocs)
124
+ ```
@@ -0,0 +1,33 @@
1
+ import type { StateCreator } from 'zustand';
2
+ import type { AuthConfig, AuthMethod, AuthStep } from './types';
3
+ export interface AuthStoreSlice {
4
+ auth: {
5
+ step: AuthStep | null;
6
+ stepHistory: AuthStep[];
7
+ enabledMethods: AuthMethod[];
8
+ email: string | null;
9
+ setEmail: (email: string) => void;
10
+ otpId: string | null;
11
+ /**
12
+ * HPKE encryption target bundle returned by the latest `sendOTP` call.
13
+ * Required by `verifyOTP` so the OTP attempt can be sealed to the enclave.
14
+ */
15
+ otpEncryptionTargetBundle: string | null;
16
+ /** Set both fields produced by `sendOTP` together. */
17
+ setOtpSession: (input: {
18
+ otpId: string;
19
+ otpEncryptionTargetBundle: string;
20
+ }) => void;
21
+ /** Clear the persisted OTP session after a successful verify. */
22
+ clearOtpSession: () => void;
23
+ config: AuthConfig | null;
24
+ initialize: (config: AuthConfig) => void;
25
+ goToStep: (step: AuthStep | null) => void;
26
+ goBack: () => void;
27
+ reset: () => void;
28
+ };
29
+ }
30
+ export declare const createAuthStoreSlice: StateCreator<AuthStoreSlice, [
31
+ ], [
32
+ ], AuthStoreSlice>;
33
+ //# sourceMappingURL=authStoreSlice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authStoreSlice.d.ts","sourceRoot":"","sources":["../../../src/auth/authStoreSlice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AA2C/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE;QAEJ,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;QACrB,WAAW,EAAE,QAAQ,EAAE,CAAA;QACvB,cAAc,EAAE,UAAU,EAAE,CAAA;QAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;QACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB;;;WAGG;QACH,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAA;QACxC,sDAAsD;QACtD,aAAa,EAAE,CAAC,KAAK,EAAE;YACrB,KAAK,EAAE,MAAM,CAAA;YACb,yBAAyB,EAAE,MAAM,CAAA;SAClC,KAAK,IAAI,CAAA;QACV,iEAAiE;QACjE,eAAe,EAAE,MAAM,IAAI,CAAA;QAC3B,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;QAGzB,UAAU,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;QACxC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAA;QACzC,MAAM,EAAE,MAAM,IAAI,CAAA;QAClB,KAAK,EAAE,MAAM,IAAI,CAAA;KAClB,CAAA;CACF;AAED,eAAO,MAAM,oBAAoB,EAAE,YAAY,CAC7C,cAAc,EACd;CAAE,EACF;CAAE,EACF,cAAc,CAoGd,CAAA"}
@@ -0,0 +1,4 @@
1
+ export declare function BlobAnimation({ className }: {
2
+ className?: string;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/auth/components/BlobAnimation/index.tsx"],"names":[],"mappings":"AASA,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAclE"}
@@ -0,0 +1,11 @@
1
+ export interface CodeInputProps {
2
+ onChange?: (code: string) => void;
3
+ onComplete?: (code: string) => void;
4
+ disabled?: boolean;
5
+ error?: boolean;
6
+ autoFocus?: boolean;
7
+ length?: number;
8
+ 'data-testid'?: string;
9
+ }
10
+ export declare function CodeInput({ onChange, onComplete, disabled, error, autoFocus, length, 'data-testid': testId, }: CodeInputProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/auth/components/CodeInput/index.tsx"],"names":[],"mappings":"AA+BA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,UAAU,EACV,QAAgB,EAChB,KAAa,EACb,SAAiB,EACjB,MAAuB,EACvB,aAAa,EAAE,MAAM,GACtB,EAAE,cAAc,2CAoEhB"}
@@ -0,0 +1,18 @@
1
+ export declare function useAuth(): {
2
+ step: import("../types").AuthStep | null;
3
+ email: string | null;
4
+ otpId: string | null;
5
+ otpEncryptionTargetBundle: string | null;
6
+ enabledMethods: import("../types").AuthMethod[];
7
+ config: import("../types").AuthConfig | null;
8
+ goToStep: (step: import("../types").AuthStep | null) => void;
9
+ goBack: (() => void) | null;
10
+ reset: () => void;
11
+ setEmail: (email: string) => void;
12
+ setOtpSession: (input: {
13
+ otpId: string;
14
+ otpEncryptionTargetBundle: string;
15
+ }) => void;
16
+ clearOtpSession: () => void;
17
+ };
18
+ //# sourceMappingURL=useAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../../src/auth/hooks/useAuth.ts"],"names":[],"mappings":"AAGA,wBAAgB,OAAO;;;;;;;;;;;;;;;;EA4BtB"}
@@ -0,0 +1,4 @@
1
+ export declare function AuthFlow({ onClose: userOnClose, }?: {
2
+ onClose?: (() => void) | undefined;
3
+ }): import("react/jsx-runtime").JSX.Element | null;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/index.tsx"],"names":[],"mappings":"AA+DA,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EAAE,WAAW,GACrB,GAAE;IACD,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAA;CAC9B,kDAwCL"}
@@ -0,0 +1,2 @@
1
+ export declare function EmailVerification(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=EmailVerification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmailVerification.d.ts","sourceRoot":"","sources":["../../../../src/auth/pages/EmailVerification.tsx"],"names":[],"mappings":"AAOA,wBAAgB,iBAAiB,4CAoEhC"}
@@ -0,0 +1,9 @@
1
+ interface ErrorScreenProps {
2
+ title?: string;
3
+ message?: string;
4
+ showRetry?: boolean;
5
+ showChooseAnother?: boolean;
6
+ }
7
+ export declare function ErrorScreen({ title, message, showRetry, showChooseAnother, }: ErrorScreenProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=ErrorScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorScreen.d.ts","sourceRoot":"","sources":["../../../../src/auth/pages/ErrorScreen.tsx"],"names":[],"mappings":"AAMA,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAoC,EACpC,OAA4H,EAC5H,SAAiB,EACjB,iBAAwB,GACzB,EAAE,gBAAgB,2CAkClB"}
@@ -0,0 +1,2 @@
1
+ export declare function OtpInput(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=OtpInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OtpInput.d.ts","sourceRoot":"","sources":["../../../../src/auth/pages/OtpInput.tsx"],"names":[],"mappings":"AAOA,wBAAgB,QAAQ,4CAoHvB"}
@@ -0,0 +1,2 @@
1
+ export declare function SignUp(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=SignUp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignUp.d.ts","sourceRoot":"","sources":["../../../../src/auth/pages/SignUp.tsx"],"names":[],"mappings":"AAuBA,wBAAgB,MAAM,4CAuRrB"}
@@ -0,0 +1,2 @@
1
+ export declare function Verifying(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=Verifying.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Verifying.d.ts","sourceRoot":"","sources":["../../../../src/auth/pages/Verifying.tsx"],"names":[],"mappings":"AAaA,wBAAgB,SAAS,4CA8FxB"}
@@ -0,0 +1,2 @@
1
+ export declare function WalletSelection(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=WalletSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletSelection.d.ts","sourceRoot":"","sources":["../../../../src/auth/pages/WalletSelection.tsx"],"names":[],"mappings":"AAKA,wBAAgB,eAAe,4CA+C9B"}
@@ -0,0 +1,12 @@
1
+ export type AuthMethod = 'email' | 'google' | 'passkey';
2
+ export type AuthStep = 'sign-up' | 'email-verification' | 'otp-input' | 'verifying-otp' | 'passkey-prompt' | 'oauth-in-progress' | 'wallet-selection' | 'authenticated' | 'error';
3
+ export type EmailAuthMethod = 'magicLink' | 'otp';
4
+ export interface AuthConfig {
5
+ enabledMethods: AuthMethod[];
6
+ emailAuthMethod?: EmailAuthMethod;
7
+ termsAndConditionsUrl?: string;
8
+ privacyPolicyUrl?: string;
9
+ onSuccess?: () => void;
10
+ onError?: (error: unknown) => void;
11
+ }
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/auth/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEvD,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,oBAAoB,GACpB,WAAW,GACX,eAAe,GACf,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,OAAO,CAAA;AAEX,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,KAAK,CAAA;AAEjD,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,UAAU,EAAE,CAAA;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CACnC"}
@@ -0,0 +1,3 @@
1
+ export declare function hasMagicLinkCodeInUrl(): boolean;
2
+ export declare function stripMagicLinkCodeFromUrl(): void;
3
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../../src/auth/utils/url.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,IAAI,OAAO,CAG/C;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAMhD"}
@@ -0,0 +1,17 @@
1
+ import type { CreateConnectorFn } from '@wagmi/core';
2
+ import type { ZeroDevWalletConnectorParams } from '@zerodev/wallet-react';
3
+ import type { ReactNode } from 'react';
4
+ import type { AuthConfig } from './auth/types';
5
+ export type ZeroDevKitConfig = {
6
+ auth?: AuthConfig;
7
+ /**
8
+ * Optional brand logo rendered in the auth flow's top nav. When omitted,
9
+ * no logo is shown. `PoweredBy` always shows the ZeroDev mark independently.
10
+ */
11
+ logo?: ReactNode;
12
+ };
13
+ export type ZeroDevKitConnectorParams = ZeroDevWalletConnectorParams & {
14
+ config?: ZeroDevKitConfig;
15
+ };
16
+ export declare function zeroDevWallet(params: ZeroDevKitConnectorParams): CreateConnectorFn;
17
+ //# sourceMappingURL=connector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAEV,4BAA4B,EAC7B,MAAM,uBAAuB,CAAA;AAK9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAY9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,4BAA4B,GAAG;IACrE,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAuCD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,yBAAyB,GAChC,iBAAiB,CA2GnB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @zerodev/wallet-react-ui
3
+ * React UI components and enhanced connector for ZeroDev Wallet SDK
4
+ */
5
+ export { AuthFlow } from './auth';
6
+ export { useAuth } from './auth/hooks/useAuth';
7
+ export type { AuthMethod, AuthStep } from './auth/types';
8
+ export type { ZeroDevKitConfig, ZeroDevKitConnectorParams, } from './connector.js';
9
+ export { zeroDevWallet } from './connector.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAGxD,YAAY,EAEV,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { CSSProperties } from 'react';
2
+ export declare function PoweredBy({ className, style, }: {
3
+ className?: string;
4
+ style?: CSSProperties;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/components/PoweredBy/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,wBAAgB,SAAS,CAAC,EACxB,SAAS,EACT,KAAK,GACN,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB,2CAgBA"}
@@ -0,0 +1,23 @@
1
+ interface RadialStop {
2
+ offset: number;
3
+ color: string;
4
+ opacity: number;
5
+ }
6
+ export interface RadialLayer {
7
+ id: string;
8
+ matrix: [number, number, number, number, number, number];
9
+ fillOpacity: number;
10
+ stops: RadialStop[];
11
+ }
12
+ interface RadialRect {
13
+ x: number;
14
+ y: number;
15
+ width: number;
16
+ height: number;
17
+ }
18
+ export declare function EllipticalRadial({ layer, rect, }: {
19
+ layer: RadialLayer;
20
+ rect: RadialRect;
21
+ }): import("react/jsx-runtime").JSX.Element;
22
+ export {};
23
+ //# sourceMappingURL=EllipticalRadial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EllipticalRadial.d.ts","sourceRoot":"","sources":["../../../../../src/shared/components/Screen/EllipticalRadial.tsx"],"names":[],"mappings":"AAAA,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IAGV,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAExD,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAGD,UAAU,UAAU;IAClB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,IAAI,GACL,EAAE;IACD,KAAK,EAAE,WAAW,CAAA;IAClB,IAAI,EAAE,UAAU,CAAA;CACjB,2CAkCA"}
@@ -0,0 +1,4 @@
1
+ export declare function MultiRadialBackground(): import("react/jsx-runtime").JSX.Element;
2
+ export declare function CardGlow(): import("react/jsx-runtime").JSX.Element;
3
+ export declare function WrapperBorder(): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=MultiRadialBackground.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiRadialBackground.d.ts","sourceRoot":"","sources":["../../../../../src/shared/components/Screen/MultiRadialBackground.tsx"],"names":[],"mappings":"AAYA,wBAAgB,qBAAqB,4CAkBpC;AAYD,wBAAgB,QAAQ,4CAiJvB;AAeD,wBAAgB,aAAa,4CAwH5B"}
@@ -0,0 +1,9 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ export declare function Screen({ children, className, contentClassName, style, topNav, }: {
3
+ children: ReactNode;
4
+ className?: string | undefined;
5
+ contentClassName?: string | undefined;
6
+ style?: CSSProperties | undefined;
7
+ topNav?: ReactNode;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/components/Screen/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAUrD,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;IACjC,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB,2CAyCA"}
@@ -0,0 +1,8 @@
1
+ export declare function SignUpFooter({ termsAndConditionsUrl, privacyPolicyUrl, agreedToTerms, setAgreedToTerms, highlight, }: {
2
+ termsAndConditionsUrl?: string | undefined;
3
+ privacyPolicyUrl?: string | undefined;
4
+ agreedToTerms: boolean;
5
+ setAgreedToTerms: (agreed: boolean) => void;
6
+ highlight?: boolean;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/components/SignUpFooter/index.tsx"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,EAC3B,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,SAAiB,GAClB,EAAE;IACD,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1C,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,aAAa,EAAE,OAAO,CAAA;IACtB,gBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,2CAkDA"}
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from 'react';
2
+ export type StateImageName = 'error' | 'loading' | 'send' | 'success';
3
+ export interface StatusScreenProps {
4
+ imageName: StateImageName;
5
+ title: string;
6
+ children: ReactNode;
7
+ className?: string;
8
+ }
9
+ export declare function StatusScreen({ imageName, title, children, className, }: StatusScreenProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/components/StatusScreen/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;AASrE,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,cAAc,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,iBAAiB,2CAoBnB"}
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from 'react';
2
+ export declare const TOP_NAV_HEIGHT = 52;
3
+ export declare function TopNav({ onBack, onClose, title, logo, className, }: {
4
+ onBack?: () => void;
5
+ onClose: () => void;
6
+ title?: string;
7
+ logo?: ReactNode;
8
+ className?: string;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/components/TopNav/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,eAAO,MAAM,cAAc,KAAK,CAAA;AAEhC,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,OAAO,EACP,KAAK,EACL,IAAI,EACJ,SAAS,GACV,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,2CA2BA"}
@@ -0,0 +1,11 @@
1
+ import type { createStore } from '../../store';
2
+ type KitStore = ReturnType<typeof createStore>;
3
+ /**
4
+ * Returns the zustand store attached to the `zeroDevWallet` connector.
5
+ * Throws when the kit connector isn't present on the wagmi config.
6
+ *
7
+ * Read individual fields with `useStore(useKitStore(), (s) => s.field)`.
8
+ */
9
+ export declare function useKitStore(): KitStore;
10
+ export {};
11
+ //# sourceMappingURL=useKitStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKitStore.d.ts","sourceRoot":"","sources":["../../../../src/shared/hooks/useKitStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;AAE9C;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAQtC"}
@@ -0,0 +1,5 @@
1
+ export declare function capitalizeFirst(str?: string | null): string;
2
+ export declare function shortenHex(hex: string, length?: number): string;
3
+ export declare function camelCaseToTitle(str: string): string;
4
+ export declare function isValidEmailAddress(email: string): boolean;
5
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/shared/utils/common.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI3D;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,UAEjD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUpD;AAGD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE1D"}
@@ -0,0 +1,4 @@
1
+ import type { useConfig } from 'wagmi';
2
+ import type { Store } from '../../types.js';
3
+ export declare function getStore(config: ReturnType<typeof useConfig>): Store | null;
4
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/shared/utils/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE3C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,GAAG,KAAK,GAAG,IAAI,CAK3E"}
@@ -0,0 +1,25 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type AuthStoreSlice } from './auth/authStoreSlice';
3
+ import type { PendingRequest } from './types.js';
4
+ export type State = {
5
+ pendingRequests: PendingRequest[];
6
+ userConfirmationListenerActive: boolean;
7
+ logo: ReactNode | null;
8
+ addPendingRequest: (request: PendingRequest) => void;
9
+ removePendingRequest: (id: string) => void;
10
+ clearPendingRequests: () => void;
11
+ setUserConfirmationListenerActive: (active: boolean) => void;
12
+ } & AuthStoreSlice;
13
+ export type CreateStoreOptions = {
14
+ logo?: ReactNode;
15
+ };
16
+ export declare const createStore: (options?: CreateStoreOptions) => import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<State>, "subscribe"> & {
17
+ subscribe: {
18
+ (listener: (selectedState: State, previousSelectedState: State) => void): () => void;
19
+ <U>(selector: (state: State) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
20
+ equalityFn?: (a: U, b: U) => boolean;
21
+ fireImmediately?: boolean;
22
+ } | undefined): () => void;
23
+ };
24
+ }>;
25
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,MAAM,MAAM,KAAK,GAAG;IAClB,eAAe,EAAE,cAAc,EAAE,CAAA;IACjC,8BAA8B,EAAE,OAAO,CAAA;IACvC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IACtB,iBAAiB,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IACpD,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,oBAAoB,EAAE,MAAM,IAAI,CAAA;IAChC,iCAAiC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;CAC7D,GAAG,cAAc,CAAA;AAElB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,UAAS,kBAAuB;;;;;;;;EAoBzD,CAAA"}
@@ -0,0 +1,38 @@
1
+ import type { Address, Hex, RpcTransactionRequest } from 'viem';
2
+ import type { createStore } from './store.js';
3
+ export type Store = ReturnType<typeof createStore>;
4
+ export type BatchCall = {
5
+ to?: Address;
6
+ data?: Hex;
7
+ value?: Hex;
8
+ };
9
+ export type Request = {
10
+ method: 'eth_sendTransaction';
11
+ params: [transaction: RpcTransactionRequest];
12
+ } | {
13
+ method: 'wallet_sendTransaction';
14
+ params: [transaction: RpcTransactionRequest];
15
+ } | {
16
+ method: 'wallet_sendCalls';
17
+ params: [
18
+ {
19
+ version: string;
20
+ chainId: Hex;
21
+ from: Address;
22
+ calls: BatchCall[];
23
+ }
24
+ ];
25
+ } | {
26
+ method: 'personal_sign';
27
+ params: [data: Hex, address: Hex];
28
+ } | {
29
+ method: 'eth_signTypedData_v4';
30
+ params: [address: Hex, typedData: string];
31
+ };
32
+ export type RequestMethod = Request['method'];
33
+ export type PendingRequest = {
34
+ id: string;
35
+ resolve: () => void;
36
+ reject: (reason?: unknown) => void;
37
+ } & Request;
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,MAAM,CAAA;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;AAElD,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,KAAK,CAAC,EAAE,GAAG,CAAA;CACZ,CAAA;AAGD,MAAM,MAAM,OAAO,GACf;IACE,MAAM,EAAE,qBAAqB,CAAA;IAC7B,MAAM,EAAE,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAA;CAC7C,GACD;IACE,MAAM,EAAE,wBAAwB,CAAA;IAChC,MAAM,EAAE,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAA;CAC7C,GACD;IACE,MAAM,EAAE,kBAAkB,CAAA;IAC1B,MAAM,EAAE;QACN;YACE,OAAO,EAAE,MAAM,CAAA;YACf,OAAO,EAAE,GAAG,CAAA;YACZ,IAAI,EAAE,OAAO,CAAA;YACb,KAAK,EAAE,SAAS,EAAE,CAAA;SACnB;KACF,CAAA;CACF,GACD;IACE,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;CAClC,GACD;IACE,MAAM,EAAE,sBAAsB,CAAA;IAC9B,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;CAC1C,CAAA;AAEL,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;AAE7C,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CACnC,GAAG,OAAO,CAAA"}
package/dist/blob.webm ADDED
Binary file
Binary file