@coinbase/cdp-react 0.0.98 → 0.0.99

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 (198) hide show
  1. package/dist/components/AuthButton/index.d.ts +102 -0
  2. package/dist/components/CDPReactProvider/index.d.ts +114 -0
  3. package/dist/components/CopyAddress/index.d.ts +29 -0
  4. package/dist/components/CopyEvmKeyButton/index.d.ts +77 -0
  5. package/dist/components/CopySolanaKeyButton/index.d.ts +73 -0
  6. package/dist/components/EnrollMfa/EnrollMfaDescription.d.ts +21 -0
  7. package/dist/components/EnrollMfa/EnrollMfaFlow.d.ts +27 -0
  8. package/dist/components/EnrollMfa/EnrollMfaFlowBackButton.d.ts +19 -0
  9. package/dist/components/EnrollMfa/EnrollMfaFlowProvider.d.ts +52 -0
  10. package/dist/components/EnrollMfa/EnrollMfaFooter.d.ts +18 -0
  11. package/dist/components/EnrollMfa/EnrollMfaImage.d.ts +24 -0
  12. package/dist/components/EnrollMfa/EnrollMfaItem.d.ts +21 -0
  13. package/dist/components/EnrollMfa/EnrollMfaItems.d.ts +17 -0
  14. package/dist/components/EnrollMfa/EnrollMfaProvider.d.ts +35 -0
  15. package/dist/components/EnrollMfa/EnrollMfaTitle.d.ts +21 -0
  16. package/dist/components/EnrollMfa/index.d.ts +65 -0
  17. package/dist/components/EnrollMfa/methods/sms.d.ts +25 -0
  18. package/dist/components/EnrollMfa/methods/totp.d.ts +25 -0
  19. package/dist/components/EnrollMfa/types.d.ts +48 -0
  20. package/dist/components/EnrollMfa/useEnrollMfaReducer.d.ts +6 -0
  21. package/dist/components/EnrollMfaModal/index.d.ts +111 -0
  22. package/dist/components/ExportWallet/index.d.ts +163 -0
  23. package/dist/components/ExportWalletModal/index.d.ts +173 -0
  24. package/dist/components/Fund/FundForm.d.ts +18 -0
  25. package/dist/components/Fund/FundProvider.d.ts +17 -0
  26. package/dist/components/Fund/FundTitle.d.ts +12 -0
  27. package/dist/components/Fund/components/FundAmountInput.d.ts +13 -0
  28. package/dist/components/Fund/components/FundErrorScreen.d.ts +7 -0
  29. package/dist/components/Fund/components/FundPaymentMethods.d.ts +7 -0
  30. package/dist/components/Fund/components/FundPresetAmountInputs.d.ts +7 -0
  31. package/dist/components/Fund/components/FundTransactionStatus.d.ts +6 -0
  32. package/dist/components/Fund/hooks/useBuyUrl.d.ts +23 -0
  33. package/dist/components/Fund/hooks/useEmitLifecycleStatus.d.ts +12 -0
  34. package/dist/components/Fund/hooks/useExchangeRate.d.ts +17 -0
  35. package/dist/components/Fund/hooks/usePaymentMethods.d.ts +16 -0
  36. package/dist/components/Fund/hooks/usePopupMonitor.d.ts +9 -0
  37. package/dist/components/Fund/hooks/useSetupOnrampEventListeners.d.ts +6 -0
  38. package/dist/components/Fund/index.d.ts +87 -0
  39. package/dist/components/Fund/types.d.ts +137 -0
  40. package/dist/components/Fund/useFundReducer.d.ts +15 -0
  41. package/dist/components/Fund/utils/buildPaymentMethods.d.ts +15 -0
  42. package/dist/components/Fund/utils/setupOnrampEventListeners.d.ts +10 -0
  43. package/dist/components/Fund/utils/subscribeToWindowMessage.d.ts +27 -0
  44. package/dist/components/FundModal/index.d.ts +106 -0
  45. package/dist/components/LinkAuth/LinkAuthFlow.d.ts +25 -0
  46. package/dist/components/LinkAuth/LinkAuthFlowBackButton.d.ts +19 -0
  47. package/dist/components/LinkAuth/LinkAuthFlowProvider.d.ts +60 -0
  48. package/dist/components/LinkAuth/LinkAuthItem.d.ts +23 -0
  49. package/dist/components/LinkAuth/LinkAuthItems.d.ts +17 -0
  50. package/dist/components/LinkAuth/LinkAuthProvider.d.ts +31 -0
  51. package/dist/components/LinkAuth/LinkAuthTitle.d.ts +17 -0
  52. package/dist/components/LinkAuth/index.d.ts +170 -0
  53. package/dist/components/LinkAuth/types.d.ts +31 -0
  54. package/dist/components/LinkAuth/utils.d.ts +12 -0
  55. package/dist/components/LinkAuthModal/index.d.ts +112 -0
  56. package/dist/components/OAuthStatusModal/index.d.ts +24 -0
  57. package/dist/components/SendEvmTransactionButton/index.d.ts +27 -0
  58. package/dist/components/SendSolanaTransactionButton/index.d.ts +27 -0
  59. package/dist/components/SignIn/SignInAuthMethodButtons.d.ts +26 -0
  60. package/dist/components/SignIn/SignInBackButton.d.ts +40 -0
  61. package/dist/components/SignIn/SignInCredentials.d.ts +13 -0
  62. package/dist/components/SignIn/SignInDescription.d.ts +35 -0
  63. package/dist/components/SignIn/SignInFooter.d.ts +27 -0
  64. package/dist/components/SignIn/SignInForm.d.ts +39 -0
  65. package/dist/components/SignIn/SignInImage.d.ts +38 -0
  66. package/dist/components/SignIn/SignInProvider.d.ts +54 -0
  67. package/dist/components/SignIn/SignInTitle.d.ts +35 -0
  68. package/dist/components/SignIn/flows/SignInWithEmail.d.ts +26 -0
  69. package/dist/components/SignIn/flows/SignInWithOAuth.d.ts +19 -0
  70. package/dist/components/SignIn/flows/SignInWithSms.d.ts +26 -0
  71. package/dist/components/SignIn/hooks/useEmailForm.d.ts +7 -0
  72. package/dist/components/SignIn/hooks/useOTPForm.d.ts +8 -0
  73. package/dist/components/SignIn/hooks/usePhoneNumberForm.d.ts +7 -0
  74. package/dist/components/SignIn/hooks/useSignInWithOAuth.d.ts +8 -0
  75. package/dist/components/SignIn/index.d.ts +124 -0
  76. package/dist/components/SignIn/types.d.ts +37 -0
  77. package/dist/components/SignIn/useSignInReducer.d.ts +9 -0
  78. package/dist/components/SignInModal/index.d.ts +123 -0
  79. package/dist/components/SignOutButton/index.d.ts +39 -0
  80. package/dist/components/ThemeProvider/index.d.ts +70 -0
  81. package/dist/components/VerifyMfa/VerifyMfaDescription.d.ts +24 -0
  82. package/dist/components/VerifyMfa/VerifyMfaFlow.d.ts +30 -0
  83. package/dist/components/VerifyMfa/VerifyMfaFlowBackButton.d.ts +19 -0
  84. package/dist/components/VerifyMfa/VerifyMfaFlowProvider.d.ts +51 -0
  85. package/dist/components/VerifyMfa/VerifyMfaFooter.d.ts +18 -0
  86. package/dist/components/VerifyMfa/VerifyMfaImage.d.ts +23 -0
  87. package/dist/components/VerifyMfa/VerifyMfaItem.d.ts +20 -0
  88. package/dist/components/VerifyMfa/VerifyMfaItems.d.ts +18 -0
  89. package/dist/components/VerifyMfa/VerifyMfaProvider.d.ts +40 -0
  90. package/dist/components/VerifyMfa/VerifyMfaTitle.d.ts +24 -0
  91. package/dist/components/VerifyMfa/index.d.ts +55 -0
  92. package/dist/components/VerifyMfa/methods/sms.d.ts +29 -0
  93. package/dist/components/VerifyMfa/methods/totp.d.ts +29 -0
  94. package/dist/components/VerifyMfa/types.d.ts +33 -0
  95. package/dist/components/VerifyMfa/useVerifyMfaReducer.d.ts +7 -0
  96. package/dist/components/VerifyMfaInline/index.d.ts +212 -0
  97. package/dist/components/VerifyMfaModal/index.d.ts +114 -0
  98. package/dist/components/forms/AmountInput/index.d.ts +16 -0
  99. package/dist/components/forms/AmountInput/types.d.ts +9 -0
  100. package/dist/components/forms/AmountInput/useAmountInput.d.ts +14 -0
  101. package/dist/components/forms/AmountInput/useInputScale.d.ts +12 -0
  102. package/dist/components/forms/AmountInput/useNumberParseAndFormat.d.ts +20 -0
  103. package/dist/components/forms/CountrySelect/index.d.ts +9 -0
  104. package/dist/components/forms/EmailForm/index.d.ts +17 -0
  105. package/dist/components/forms/ExchangeAmountInput/index.d.ts +19 -0
  106. package/dist/components/forms/ExchangeAmountInput/types.d.ts +12 -0
  107. package/dist/components/forms/ExchangeAmountInput/useExchangeAmountInput.d.ts +17 -0
  108. package/dist/components/forms/Field/index.d.ts +15 -0
  109. package/dist/components/forms/Input/index.d.ts +15 -0
  110. package/dist/components/forms/Label/index.d.ts +8 -0
  111. package/dist/components/forms/OTP/index.d.ts +6 -0
  112. package/dist/components/forms/OTPForm/index.d.ts +20 -0
  113. package/dist/components/forms/PhoneNumberForm/index.d.ts +27 -0
  114. package/dist/components/forms/PhoneNumberInput/index.d.ts +16 -0
  115. package/dist/components/forms/PhoneNumberInput/maskOverride.d.ts +6 -0
  116. package/dist/components/forms/PhoneNumberInput/usePhoneNumberFormatter.d.ts +7 -0
  117. package/dist/components/forms/Select/index.d.ts +30 -0
  118. package/dist/components/ui/Badge/index.d.ts +19 -0
  119. package/dist/components/ui/Banner/index.d.ts +25 -0
  120. package/dist/components/ui/Button/index.d.ts +50 -0
  121. package/dist/components/ui/ButtonBase/index.d.ts +20 -0
  122. package/dist/components/ui/CoinbaseFooter/index.d.ts +16 -0
  123. package/dist/components/ui/CopyTextField/index.d.ts +35 -0
  124. package/dist/components/ui/Error/index.d.ts +14 -0
  125. package/dist/components/ui/IframeButton/index.d.ts +17 -0
  126. package/dist/components/ui/LoadingSkeleton/index.d.ts +22 -0
  127. package/dist/components/ui/LoadingSpinner/index.d.ts +11 -0
  128. package/dist/components/ui/Modal/index.d.ts +82 -0
  129. package/dist/components/ui/QRCode/QRCodeSvg.d.ts +35 -0
  130. package/dist/components/ui/QRCode/index.d.ts +7 -0
  131. package/dist/components/ui/QRCode/useCorners.d.ts +9 -0
  132. package/dist/components/ui/QRCode/useDotsPath.d.ts +18 -0
  133. package/dist/components/ui/QRCode/useLogo.d.ts +18 -0
  134. package/dist/components/ui/QRCode/useMatrix.d.ts +7 -0
  135. package/dist/components/ui/ServerError/index.d.ts +6 -0
  136. package/dist/components/ui/SuccessMessage/index.d.ts +14 -0
  137. package/dist/components/ui/SwitchFadeTransition/index.d.ts +15 -0
  138. package/dist/components/ui/SwitchSlideTransition/index.d.ts +16 -0
  139. package/dist/components/ui/SwitchTransition/index.d.ts +42 -0
  140. package/dist/components/ui/ToggleListItem/index.d.ts +31 -0
  141. package/dist/components/ui/VisuallyHidden/index.d.ts +18 -0
  142. package/dist/data/countries.d.ts +15 -0
  143. package/dist/data/countryNames.d.ts +4 -0
  144. package/dist/hooks/useKeyExportPostMessage.d.ts +25 -0
  145. package/dist/hooks/usePhoneNumberState.d.ts +47 -0
  146. package/dist/hooks/usePhoneNumberValidators.d.ts +8 -0
  147. package/dist/hooks/useTimeout.d.ts +18 -0
  148. package/dist/hooks/useTimer.d.ts +6 -0
  149. package/dist/hooks/useTransitionMap.d.ts +22 -0
  150. package/dist/hooks/useVerifyMfaModal.d.ts +78 -0
  151. package/dist/icons/IconAppleLogo.d.ts +22 -0
  152. package/dist/icons/IconArrowLeft.d.ts +22 -0
  153. package/dist/icons/IconArrowsUpDown.d.ts +22 -0
  154. package/dist/icons/IconCheck.d.ts +22 -0
  155. package/dist/icons/IconCheckCircle.d.ts +21 -0
  156. package/dist/icons/IconChevronDown.d.ts +22 -0
  157. package/dist/icons/IconCoinbaseMark.d.ts +22 -0
  158. package/dist/icons/IconCoinbaseWordmark.d.ts +22 -0
  159. package/dist/icons/IconCopy.d.ts +22 -0
  160. package/dist/icons/IconCreditCard.d.ts +22 -0
  161. package/dist/icons/IconCurrencies.d.ts +22 -0
  162. package/dist/icons/IconEnvelope.d.ts +22 -0
  163. package/dist/icons/IconExclamationCircle.d.ts +22 -0
  164. package/dist/icons/IconExclamationTriangle.d.ts +22 -0
  165. package/dist/icons/IconGoogleColorLogo.d.ts +22 -0
  166. package/dist/icons/IconGoogleLogo.d.ts +22 -0
  167. package/dist/icons/IconLock.d.ts +22 -0
  168. package/dist/icons/IconMinus.d.ts +21 -0
  169. package/dist/icons/IconPhone.d.ts +22 -0
  170. package/dist/icons/IconPinCode.d.ts +22 -0
  171. package/dist/icons/IconPlus.d.ts +21 -0
  172. package/dist/icons/IconShield.d.ts +22 -0
  173. package/dist/icons/IconSmartPhone.d.ts +22 -0
  174. package/dist/icons/IconTelegramLogo.d.ts +22 -0
  175. package/dist/icons/IconXLogo.d.ts +22 -0
  176. package/dist/icons/IconXMark.d.ts +22 -0
  177. package/dist/icons/SvgIcon.d.ts +6 -0
  178. package/dist/theme/cssVariables.d.ts +10 -0
  179. package/dist/theme/theme.d.ts +246 -0
  180. package/dist/theme/tokens.d.ts +54 -0
  181. package/dist/theme/utils.d.ts +63 -0
  182. package/dist/types/secureIframe.d.ts +3 -0
  183. package/dist/utils/capitalize.d.ts +8 -0
  184. package/dist/utils/childrenHasComponent.d.ts +10 -0
  185. package/dist/utils/clamp.d.ts +10 -0
  186. package/dist/utils/formatFiat.d.ts +11 -0
  187. package/dist/utils/formatPhoneNumber.d.ts +8 -0
  188. package/dist/utils/getMessageFromUnknownError.d.ts +9 -0
  189. package/dist/utils/isApiError.d.ts +21 -0
  190. package/dist/utils/isEmailInvalid.d.ts +15 -0
  191. package/dist/utils/openPopup.d.ts +15 -0
  192. package/dist/utils/parseValuesFromPhoneNumber.d.ts +16 -0
  193. package/dist/utils/sendIframeMessage.d.ts +8 -0
  194. package/dist/utils/toOAuthProviderType.d.ts +8 -0
  195. package/dist/utils/transition.d.ts +41 -0
  196. package/dist/version.d.ts +5 -1
  197. package/dist/version.js +1 -1
  198. package/package.json +5 -5
@@ -9,10 +9,134 @@ import { SignInImage, SignInImageProps } from './SignInImage';
9
9
  import { useSignInContext } from './SignInProvider';
10
10
  import { SignInTitle, SignInTitleProps } from './SignInTitle';
11
11
  import { SignInState, SignInAction } from './types';
12
+ /**
13
+ * Props for the SignIn component
14
+ */
12
15
  export interface SignInProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
16
+ /**
17
+ * The children of the component. Leave empty to use the default sign-in flow UI.
18
+ *
19
+ * If a function is provided, it will be called with the current state of the sign-in flow.
20
+ * The function should return a `ReactNode`.
21
+ *
22
+ * @example
23
+ * ```tsx lines
24
+ * <SignIn>
25
+ * {(state) => {
26
+ * // Render a page title based on the current step
27
+ * return (
28
+ * <>
29
+ * <SignInBackButton />
30
+ * <SignInImage />
31
+ * <h1>
32
+ * {state.step === "credentials" && "Welcome"}
33
+ * {state.step === "verification" && "Almost there"}
34
+ * </h1>
35
+ * <SignInTitle />
36
+ * <SignInDescription />
37
+ * <SignInForm />
38
+ * {state.step === "credentials" && <SignInAuthMethodButtons activeMethod={state.authMethod} />}
39
+ * <SignInFooter />
40
+ * </>
41
+ * );
42
+ * }}
43
+ * </SignIn>
44
+ * ```
45
+ */
13
46
  children?: ReactNode | ((state: SignInState) => ReactNode);
47
+ /** A function to call when the sign-in flow is successful. */
14
48
  onSuccess?: () => void;
49
+ /** Filter the auth methods that are shown to the user (this still respects the CDP config auth methods). */
15
50
  authMethods?: AuthMethod[];
16
51
  }
52
+ /**
53
+ * A sign-in component that handles the email and OTP flow.
54
+ *
55
+ * @param {SignInProps} props - The props for the component.
56
+ * @param {ReactNode} [props.children] - The children to render inside the component.
57
+ * @param {() => void} [props.onSuccess] - A function to call when the sign-in flow is successful.
58
+ * @returns {JSX.Element} The SignIn component.
59
+ *
60
+ * @group Components
61
+ *
62
+ * @document ./README.md
63
+ *
64
+ * @example
65
+ * ```tsx lines
66
+ * function App() {
67
+ * // Render the SignIn component with a custom onSuccess handler
68
+ * const handleSuccess = () => {
69
+ * console.log("Sign in successful");
70
+ * }
71
+ * return (
72
+ * <CDPReactProvider config={config} theme={themeOverrides}>
73
+ * <SignIn onSuccess={handleSuccess} />
74
+ * </CDPReactProvider>
75
+ * );
76
+ * }
77
+ * ```
78
+ *
79
+ * @example
80
+ * ```tsx lines
81
+ * function App() {
82
+ * // Render the title, description, and auth method buttons inside the transition containers
83
+ * // This is the default UI if no children are provided.
84
+ * return (
85
+ * <CDPReactProvider config={config} theme={themeOverrides}>
86
+ * <SignIn>
87
+ * <SignInBackButton />
88
+ * <SignInImage />
89
+ * <SignInForm>
90
+ * {({ authMethod, step, Form }) => {
91
+ * // Pass the authMethod and step from the render function args to the title
92
+ * // and description components so the UI is rendered correctly when both states
93
+ * // are visible during the transition
94
+ * return (
95
+ * <>
96
+ * <SignInTitle step={step} authMethod={authMethod} />
97
+ * <SignInDescription step={step} authMethod={authMethod} />
98
+ * {Form}
99
+ * {state.step === "credentials" && <SignInAuthMethodButtons activeMethod={authMethod} />}
100
+ * </>
101
+ * );
102
+ * }}
103
+ * </SignInForm>
104
+ * <SignInFooter />
105
+ * </SignIn>
106
+ * </CDPReactProvider>
107
+ * );
108
+ * }
109
+ * ```
110
+ *
111
+ * @example
112
+ * ```tsx lines
113
+ * function App() {
114
+ * // Render a page title based on the current step
115
+ * return (
116
+ * <CDPReactProvider config={config} theme={themeOverrides}>
117
+ * <SignIn>
118
+ * {(state) => {
119
+ * return (
120
+ * <>
121
+ * <SignInBackButton />
122
+ * <SignInImage />
123
+ * <h1>
124
+ * {state.step === "credentials" && "Welcome"}
125
+ * {state.step === "verification" && "Almost there"}
126
+ * </h1>
127
+ * <SignInTitle />
128
+ * <SignInDescription />
129
+ * <SignInForm />
130
+ * {state.step === "credentials" && <SignInAuthMethodButtons activeMethod={state.authMethod} />}
131
+ * <SignInFooter />
132
+ * </>
133
+ * );
134
+ * }}
135
+ * </SignIn>
136
+ * </CDPReactProvider>
137
+ * );
138
+ * }
139
+ * ```
140
+ */
17
141
  export declare const SignIn: ({ authMethods, ...props }: SignInProps) => import("react/jsx-runtime").JSX.Element;
18
142
  export { SignInAuthMethodButtons, SignInBackButton, SignInDescription, SignInFooter, SignInForm, SignInImage, SignInTitle, useSignInContext, type SignInAuthMethodButtonsProps, type SignInBackButtonProps, type SignInDescriptionProps, type SignInFormProps, type SignInImageProps, type SignInTitleProps, type SignInState, type SignInAction, };
@@ -1,10 +1,35 @@
1
1
  import { APIError } from '@coinbase/cdp-hooks';
2
2
  import { FC, ReactNode } from 'react';
3
3
  import { AuthMethod } from '../CDPReactProvider';
4
+ /**
5
+ * Props for the SignInTitle and SignInDescription components.
6
+ *
7
+ * @see {@link SignInTitle}
8
+ * @see {@link SignInDescription}
9
+ */
4
10
  export interface SignInTitleAndDescriptionProps {
11
+ /** The auth method to render the title for. */
5
12
  authMethod?: AuthMethod;
13
+ /** If set, will render the title for this step of the sign in flow, regardless of the context value. */
6
14
  step?: SignInState["step"];
7
15
  }
16
+ /**
17
+ * The state of the SignIn component.
18
+ *
19
+ * @property {AuthMethod | null} authMethod - The auth method selected by the user.
20
+ * @property {boolean} canResetOTP - Whether the user can request a new OTP.
21
+ * @property {string} email - The email address of the user.
22
+ * @property {string | APIError | null} error - The error message or APIError object.
23
+ * @property {string} flowId - The flow ID of the current sign-in flow.
24
+ * @property {boolean} isPending - Whether the form state is pending.
25
+ * @property {boolean} isSuccess - Whether the sign-in flow is successful.
26
+ * @property {string} otp - The OTP code entered by the user.
27
+ * @property {string} phoneNumber - The phone number of the user.
28
+ * @property {AuthMethod | "otp" | "success"} step - The current step of the sign-in flow.
29
+ *
30
+ * @see {@link SignIn}
31
+ * @see {@link useSignInReducer}
32
+ */
8
33
  export interface SignInState {
9
34
  authMethod: AuthMethod;
10
35
  authMethods: AuthMethod[];
@@ -18,6 +43,12 @@ export interface SignInState {
18
43
  phoneNumber: string;
19
44
  step: "credentials" | "verification";
20
45
  }
46
+ /**
47
+ * The actions that can be performed on the SignIn state.
48
+ *
49
+ * @see {@link SignIn}
50
+ * @see {@link useSignInReducer}
51
+ */
21
52
  export type SignInAction = {
22
53
  type: "SET_AUTH_METHOD";
23
54
  payload: {
@@ -99,6 +130,9 @@ export type SignInAction = {
99
130
  } | {
100
131
  type: "RESET_STATE";
101
132
  };
133
+ /**
134
+ * Shared props for a sign in flow.
135
+ */
102
136
  export interface SignInFlowProps {
103
137
  step: SignInState["step"];
104
138
  autoFocus?: boolean;
@@ -108,6 +142,9 @@ export interface SignInFlowProps {
108
142
  Form: ReactNode;
109
143
  }) => ReactNode;
110
144
  }
145
+ /**
146
+ * The configuration for a sign in flow.
147
+ */
111
148
  export interface SignInFlowConfig {
112
149
  forms: FC<SignInFlowProps>;
113
150
  description: FC<SignInTitleAndDescriptionProps>;
@@ -1,2 +1,11 @@
1
1
  import { SignInAction, SignInState } from './types';
2
+ /**
3
+ * A reducer hook for the SignIn component.
4
+ *
5
+ * @param {SignInState} initialState - The initial state of the component.
6
+ *
7
+ * @returns {[SignInState, SignInAction]} The current state and dispatcher to perform actions on the state.
8
+ *
9
+ * @group Hooks
10
+ */
2
11
  export declare const useSignInReducer: (initialState: SignInState) => [SignInState, import('react').ActionDispatch<[action: SignInAction]>];
@@ -2,20 +2,143 @@ import { ReactNode } from 'react';
2
2
  import { AuthMethod } from '../CDPReactProvider';
3
3
  import { ButtonProps } from '../ui/Button';
4
4
  import { ModalContentProps } from '../ui/Modal';
5
+ /**
6
+ * Props for the sign in modal trigger button
7
+ *
8
+ * @see {@link SignInModalTrigger}
9
+ */
5
10
  export interface SignInModalTriggerProps extends Partial<Pick<ButtonProps, "className" | "fullWidth" | "size" | "style" | "variant">> {
11
+ /** If provided, will render the children instead of the default trigger button. */
6
12
  children?: ReactNode;
13
+ /** The label to display on the trigger button. */
7
14
  label?: ReactNode;
8
15
  }
16
+ /**
17
+ * Props for the sign in modal content.
18
+ *
19
+ * @augments ModalContentProps
20
+ *
21
+ * @see {@link SignInModalContent}
22
+ */
9
23
  export interface SignInModalContentProps extends ModalContentProps {
24
+ /** A function to call when the sign-in flow is successful. */
10
25
  onSuccess?: () => void;
11
26
  }
27
+ /**
28
+ * Props for the SignInModal component.
29
+ *
30
+ * @see {@link SignInModal}
31
+ */
12
32
  export interface SignInModalProps {
33
+ /** Filter the auth methods that are shown to the user (this still respects the CDP config auth methods). */
13
34
  authMethods?: AuthMethod[];
35
+ /** If provided, will render the children instead of the default trigger button. */
14
36
  children?: ReactNode;
37
+ /** Whether the modal is open. Note: if you set this, you must also set `setIsOpen`. */
15
38
  open?: boolean;
39
+ /** A function to set the modal's open state. Note: if you set this, you must also set `open`. */
16
40
  setIsOpen?: (value: boolean) => void;
41
+ /** A function to call when the sign-in flow is successful. */
17
42
  onSuccess?: () => void;
18
43
  }
44
+ /**
45
+ * A trigger button that opens the sign in modal.
46
+ *
47
+ * @param {SignInModalTriggerProps} props - The props for the SignInModalTrigger component.
48
+ * @param {ReactNode} [props.children] - The children to render inside the trigger button.
49
+ * @param {ReactNode} [props.label] - The label to display on the trigger button.
50
+ * @returns {JSX.Element} The SignInModalTrigger component.
51
+ *
52
+ * @group Components
53
+ */
19
54
  export declare const SignInModalTrigger: ({ children, className, label, ...props }: SignInModalTriggerProps) => import("react/jsx-runtime").JSX.Element;
55
+ /**
56
+ * The sign in modal content.
57
+ *
58
+ * @augments ModalContentProps
59
+ * @param {SignInModalContentProps} props - The props for the SignInModalContent component.
60
+ * @returns {JSX.Element} The SignInModalContent component.
61
+ *
62
+ * @group Components
63
+ */
20
64
  export declare const SignInModalContent: (props: SignInModalContentProps) => import("react/jsx-runtime").JSX.Element;
65
+ /**
66
+ * A sign-in modal component that wraps the {@link SignIn} component.
67
+ * In the SignIn modal, the description is hidden on the "credentials" step, and the title is hidden on the "verification" step.
68
+ *
69
+ * @see {@link SignInModalTrigger} for the trigger button.
70
+ * @see {@link SignInModalContent} for the modal content.
71
+ *
72
+ * @param {SignInModalProps} props - The props for the SignInModal component.
73
+ * @param {boolean} props.open - Whether the modal is open.
74
+ * @param {(value: boolean) => void} props.setIsOpen - A function to set the modal's open state.
75
+ * @param {ReactNode} props.children - The children to render inside the modal.
76
+ * @param {() => void} props.onSuccess - A function to call when the sign-in flow is successful.
77
+ * @returns {JSX.Element} The SignInModal component.
78
+ *
79
+ * @group Components
80
+ *
81
+ * @example
82
+ * ```tsx lines
83
+ * // Render the SignInModal component with a custom success handler
84
+ * function App() {
85
+ * // optional custom success handler
86
+ * const handleSignInSuccess = useCallback(() => {
87
+ * console.log("Sign in successful");
88
+ * }, []);
89
+ * return (
90
+ * <CDPReactProvider config={config} theme={themeOverrides}>
91
+ * <SignInModal onSuccess={handleSignInSuccess} />
92
+ * </CDPReactProvider>
93
+ * );
94
+ * }
95
+ * ```
96
+ *
97
+ * @example
98
+ * ```tsx lines
99
+ * // Render the SignInModal component with a custom trigger button
100
+ * function App() {
101
+ * return (
102
+ * <CDPReactProvider config={config} theme={themeOverrides}>
103
+ * <SignInModal>
104
+ * <button type="button" className="sign-in-button">
105
+ * Sign in
106
+ * </button>
107
+ * </SignInModal>
108
+ * </CDPReactProvider>
109
+ * );
110
+ * }
111
+ * ```
112
+ *
113
+ * @example
114
+ * ```tsx lines
115
+ * // Render the SignInModal component with a secondary variant trigger button and a custom label
116
+ * function App() {
117
+ * return (
118
+ * <CDPReactProvider config={config} theme={themeOverrides}>
119
+ * <SignInModal>
120
+ * <SignInModalTrigger variant="secondary" label="Log in" />
121
+ * <!-- modal content will be rendered automatically if not provided -->
122
+ * </SignInModal>
123
+ * </CDPReactProvider>
124
+ * );
125
+ * }
126
+ * ```
127
+ *
128
+ * @example
129
+ * ```tsx lines
130
+ * // Render the SignInModal component with a custom class on the modal overlay and window
131
+ * function App() {
132
+ * return (
133
+ * <CDPReactProvider config={config} theme={themeOverrides}>
134
+ * <SignInModal>
135
+ * <!-- SignInModalTrigger must be rendered if SignInModalContent is provided and you want to display the trigger button -->
136
+ * <SignInModalTrigger />
137
+ * <SignInModalContent className="custom-class" overlayClassName="custom-overlay-class" />
138
+ * </SignInModal>
139
+ * </CDPReactProvider>
140
+ * );
141
+ * }
142
+ * ```
143
+ */
21
144
  export declare const SignInModal: ({ authMethods, children, open, setIsOpen, onSuccess, }: SignInModalProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,46 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { ButtonProps } from '../ui/Button';
3
+ /**
4
+ * Props for the SignOutButton component.
5
+ *
6
+ * @augments {ButtonProps}
7
+ *
8
+ * @see {@link SignOutButton}
9
+ */
3
10
  export interface SignOutButtonProps extends ButtonProps {
11
+ /** The children to render inside the button. */
4
12
  children?: ReactNode;
13
+ /** A function to call when the sign-out is successful. */
5
14
  onSuccess?: () => void;
6
15
  }
16
+ /**
17
+ * A button that signs the user out.
18
+ *
19
+ * @param {SignOutButtonProps} [props] - The props for the component.
20
+ * @param {ReactNode} [props.children] - The children to render inside the button.
21
+ * @param {() => void} [props.onSuccess] - A function to call when the sign-out is successful.
22
+ * @returns {JSX.Element} The rendered component.
23
+ *
24
+ * @group Components
25
+ *
26
+ * @example
27
+ * ```tsx lines
28
+ * // Render a sign out button
29
+ * <SignOutButton onSuccess={() => console.log("Sign out success")} />
30
+ * ```
31
+ *
32
+ * @example
33
+ * ```tsx lines
34
+ * // Render a sign out button with a custom label, size, and variant
35
+ * <SignOutButton size="sm" variant="secondary">Log out</SignOutButton>
36
+ * ```
37
+ *
38
+ * @example
39
+ * ```tsx lines
40
+ * // Render a sign out button with a custom button element
41
+ * <SignOutButton asChild>
42
+ * <button className="custom-button">Log out</button>
43
+ * </SignOutButton>
44
+ * ```
45
+ */
7
46
  export declare const SignOutButton: ({ children, className, onSuccess, ...props }: SignOutButtonProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,13 +1,83 @@
1
1
  import { HTMLAttributes, JSX } from 'react';
2
2
  import { Theme } from '../../theme/theme';
3
3
  import { CDPWebCSSVariables } from '../../theme/utils';
4
+ /**
5
+ * Props for the ThemeProvider component.
6
+ *
7
+ * @see {@link ThemeProvider}
8
+ */
4
9
  export type ThemeProviderProps = {
10
+ /** Theme overrides */
5
11
  theme?: Partial<Theme>;
12
+ /**
13
+ * Provider name for multi-provider coordination.
14
+ * Used internally by CDPReactProvider to identify which provider owns focused elements.
15
+ * If not provided, a unique ID is generated automatically.
16
+ */
6
17
  "data-cdp-provider"?: string;
7
18
  } & HTMLAttributes<HTMLDivElement>;
19
+ /**
20
+ * The value of the theme context.
21
+ *
22
+ * @see {@link useTheme}
23
+ */
8
24
  export interface ThemeContextValue {
9
25
  theme: Theme;
10
26
  cssVariables: CDPWebCSSVariables;
11
27
  }
28
+ /**
29
+ * Provides the theme to its child components and injects CSS variables.
30
+ *
31
+ * @param {ThemeProviderProps} props - The props for the component.
32
+ * @returns {JSX.Element} The theme provider component.
33
+ *
34
+ * @see {@link useTheme}
35
+ *
36
+ * @group Components
37
+ *
38
+ * @example
39
+ * ```tsx lines
40
+ * const AuthBasedTheme = ({ children }: { children: React.ReactNode }) => {
41
+ * const { isSignedIn: signedIn } = useIsSignedIn();
42
+ * const { evmAddress: cdpEvmAddress } = useEvmAddress();
43
+ * const isAuthenticated = signedIn && cdpEvmAddress;
44
+ * const theme = useMemo(() => (isAuthenticated ? darkTheme : {}), [isAuthenticated]);
45
+ * return (
46
+ * <ThemeProvider theme={theme}>
47
+ * {children}
48
+ * </ThemeProvider>
49
+ * );
50
+ * };
51
+ *
52
+ * function App() {
53
+ * // Change the theme based on the user's authentication status
54
+ * return (
55
+ * <CDPHooksProvider config={cdpConfig}>
56
+ * <AuthBasedTheme>
57
+ * <YourApp />
58
+ * </AuthBasedTheme>
59
+ * </CDPHooksProvider>
60
+ * );
61
+ * }
62
+ * ```
63
+ */
12
64
  export declare const ThemeProvider: ({ children, className, style, theme: themeOverrides, "data-cdp-provider": nameFromProps, ...props }: ThemeProviderProps) => JSX.Element;
65
+ /**
66
+ * Hook to access the theme from a component.
67
+ *
68
+ * @returns {ThemeContextValue} The theme.
69
+ *
70
+ * @see {@link ThemeProvider}
71
+ *
72
+ * @group Hooks
73
+ *
74
+ * @example
75
+ * ```tsx lines
76
+ * function App() {
77
+ * // Style a paragraph with the secondary text color
78
+ * const { theme } = useTheme();
79
+ * return <p style={{ color: theme["colors-fg-muted"] }}>Secondary text</p>;
80
+ * }
81
+ * ```
82
+ */
13
83
  export declare const useTheme: () => ThemeContextValue;
@@ -1,6 +1,30 @@
1
1
  import { ElementType, HTMLAttributes } from 'react';
2
2
  import { VerifyMfaMethodComponentProps } from './types';
3
+ /**
4
+ * The props for the VerifyMfaDescription component.
5
+ */
3
6
  export interface VerifyMfaDescriptionProps extends VerifyMfaMethodComponentProps, HTMLAttributes<HTMLElement> {
7
+ /** The element type to render the description as. */
4
8
  as?: ElementType;
5
9
  }
10
+ /**
11
+ * A description for the VerifyMfa component.
12
+ *
13
+ * @param {VerifyMfaDescriptionProps} props - The props for the component.
14
+ * @param {ElementType} [props.as] - The element type to render the description as.
15
+ * @param {MfaMethod} [props.method] - The MFA method to render the description for.
16
+ * @param {VerifyMfaState["step"]} [props.step] - The step of the verification flow.
17
+ * @returns {JSX.Element} The rendered component.
18
+ *
19
+ * @group Components
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * <VerifyMfa>
24
+ * <VerifyMfaTitle />
25
+ * <VerifyMfaDescription />
26
+ * <VerifyMfaFlow />
27
+ * </VerifyMfa>
28
+ * ```
29
+ */
6
30
  export declare const VerifyMfaDescription: ({ as: Component, children, className, method: methodFromProps, step: stepFromProps, ...props }: VerifyMfaDescriptionProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -1,12 +1,42 @@
1
1
  import { HTMLAttributes, ReactNode } from 'react';
2
2
  import { MfaMethod, VerifyMfaStep } from './types';
3
+ /**
4
+ * Props for the VerifyMfaFlow component.
5
+ */
3
6
  export interface VerifyMfaFlowProps extends Omit<HTMLAttributes<HTMLElement>, "children"> {
7
+ /** If set, will auto focus the form when the component mounts. */
4
8
  autoFocus?: boolean;
9
+ /** If set, will animate the height of the component. */
5
10
  animateHeight?: boolean;
11
+ /** The children of the component. */
6
12
  children?: (props: {
7
13
  step: VerifyMfaStep;
8
14
  method: MfaMethod;
9
15
  Content: ReactNode;
10
16
  }) => ReactNode;
11
17
  }
18
+ /**
19
+ * The flow for the VerifyMfa component. Renders the appropriate content
20
+ * based on the current MFA method and step.
21
+ *
22
+ * The "verification" step renders the current method's content (verification form).
23
+ * The "list" step renders alternate method options.
24
+ *
25
+ * @param {VerifyMfaFlowProps} props - The component props.
26
+ * @param {boolean} [props.autoFocus] - Whether to auto focus the form when the component mounts.
27
+ * @param {boolean} [props.animateHeight] - Whether to animate the height of the component.
28
+ * @param {(props: { step: VerifyMfaStep; method: MfaMethod; Content: ReactNode }) => ReactNode} [props.children] - The children of the component.
29
+ * @returns {JSX.Element} The rendered component.
30
+ *
31
+ * @group Components
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * <VerifyMfa>
36
+ * <VerifyMfaTitle />
37
+ * <VerifyMfaDescription />
38
+ * <VerifyMfaFlow />
39
+ * </VerifyMfa>
40
+ * ```
41
+ */
12
42
  export declare const VerifyMfaFlow: ({ autoFocus, animateHeight, children, className, ...props }: VerifyMfaFlowProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,28 @@
1
1
  import { ButtonHTMLAttributes } from 'react';
2
2
  import { ButtonProps } from '../ui/Button/Button';
3
3
  import { VerifyMfaStep } from './types';
4
+ /**
5
+ * Props for the VerifyMfaFlowBackButton component.
6
+ *
7
+ * @see {@link VerifyMfaFlowBackButton}
8
+ */
4
9
  export interface VerifyMfaFlowBackButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
10
+ /** If set, will render the back button for this step of the flow, regardless of the context value. */
5
11
  step?: VerifyMfaStep;
12
+ /** The size of the button. */
6
13
  size?: ButtonProps["size"];
14
+ /** The variant of the button. */
7
15
  variant?: ButtonProps["variant"];
8
16
  }
17
+ /**
18
+ * A button to go back to the previous step of the MFA verification flow.
19
+ *
20
+ * @param {VerifyMfaFlowBackButtonProps} props - The props for the component.
21
+ * @returns {JSX.Element | null} The rendered component.
22
+ *
23
+ * @see {@link VerifyMfaFlow}
24
+ * @see {@link VerifyMfa}
25
+ *
26
+ * @group Components
27
+ */
9
28
  export declare const VerifyMfaFlowBackButton: ({ ["aria-label"]: ariaLabel, children, className, size, onClick, variant, step: stepFromProps, ...props }: VerifyMfaFlowBackButtonProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -1,23 +1,74 @@
1
1
  import { ReactNode, RefObject } from 'react';
2
2
  import { SwitchSlideTransitionRef } from '../ui/SwitchSlideTransition';
3
3
  import { MfaMethod, VerifyMfaStep } from './types';
4
+ /**
5
+ * The value of the MFA verification flow context.
6
+ *
7
+ * @see {@link useVerifyMfaFlow}
8
+ */
4
9
  export interface VerifyMfaFlowContextValue {
10
+ /** A function to go back to the previous step. */
5
11
  back: () => void;
12
+ /** The direction of the flow transition. */
6
13
  direction: "left" | "right";
14
+ /** A function to select an alternate verification method. */
7
15
  selectMethod: (method: MfaMethod) => void;
16
+ /** A function to show the alternate methods list. */
8
17
  showMethodList: () => void;
9
18
  }
19
+ /**
20
+ * The value of the MFA verification flow context for internal use.
21
+ *
22
+ * @see {@link useVerifyMfaFlowInternal}
23
+ */
10
24
  export interface VerifyMfaFlowContextValueInternal extends VerifyMfaFlowContextValue {
25
+ /** A ref to the flow transition. */
11
26
  transitionRef: RefObject<SwitchSlideTransitionRef<VerifyMfaStep> | null> | null;
12
27
  }
28
+ /**
29
+ * Props for the VerifyMfaFlowProvider component.
30
+ *
31
+ * @see {@link VerifyMfaFlowProvider}
32
+ */
13
33
  export interface VerifyMfaFlowProviderProps {
34
+ /** The children of the component. */
14
35
  children?: ReactNode;
36
+ /** The direction of the flow transition. */
15
37
  direction: VerifyMfaFlowContextValue["direction"];
38
+ /** A function to go back to the previous step. */
16
39
  onBack: VerifyMfaFlowContextValue["back"];
40
+ /** A function to select an alternate verification method. */
17
41
  onSelectMethod: VerifyMfaFlowContextValue["selectMethod"];
42
+ /** A function to show the alternate methods list. */
18
43
  onShowMethodList: VerifyMfaFlowContextValue["showMethodList"];
44
+ /** A ref to the flow transition. */
19
45
  transitionRef: VerifyMfaFlowContextValueInternal["transitionRef"];
20
46
  }
47
+ /**
48
+ * A hook to get the MFA verification flow context value (internal).
49
+ *
50
+ * @returns {VerifyMfaFlowContextValueInternal} The context value.
51
+ *
52
+ * @group Hooks
53
+ */
21
54
  export declare const useVerifyMfaFlowInternal: () => VerifyMfaFlowContextValueInternal;
55
+ /**
56
+ * A hook to get the MFA verification flow context value.
57
+ *
58
+ * @returns {VerifyMfaFlowContextValue} The context value.
59
+ *
60
+ * @see {@link VerifyMfaFlow}
61
+ * @see {@link VerifyMfa}
62
+ *
63
+ * @group Hooks
64
+ */
22
65
  export declare const useVerifyMfaFlow: () => VerifyMfaFlowContextValue;
66
+ /**
67
+ * A provider for the MFA verification flow.
68
+ *
69
+ * @param {VerifyMfaFlowProviderProps} props - The props for the component.
70
+ * @returns {JSX.Element} The rendered component.
71
+ *
72
+ * @group Components
73
+ */
23
74
  export declare const VerifyMfaFlowProvider: ({ children, direction, onBack, onSelectMethod, onShowMethodList, transitionRef, }: VerifyMfaFlowProviderProps) => import("react/jsx-runtime").JSX.Element;