@cedros/login-react 0.0.29 → 0.0.30

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 (175) hide show
  1. package/README.md +2 -0
  2. package/dist/{AdminDepositList-CyT4VBH8.js → AdminDepositList-BUm_ZcAW.js} +1 -1
  3. package/dist/{AdminDepositList-CyT4VBH8.js.map → AdminDepositList-BUm_ZcAW.js.map} +1 -1
  4. package/dist/{AdminDepositList-b2AXtLg0.cjs → AdminDepositList-B_z6x3j5.cjs} +1 -1
  5. package/dist/{AdminDepositList-b2AXtLg0.cjs.map → AdminDepositList-B_z6x3j5.cjs.map} +1 -1
  6. package/dist/{AdminWithdrawalHistory-DL9zbu2b.cjs → AdminWithdrawalHistory-B2EY2ZmH.cjs} +1 -1
  7. package/dist/{AdminWithdrawalHistory-DL9zbu2b.cjs.map → AdminWithdrawalHistory-B2EY2ZmH.cjs.map} +1 -1
  8. package/dist/{AdminWithdrawalHistory-Cud-yuWy.js → AdminWithdrawalHistory-C76bkbjX.js} +1 -1
  9. package/dist/{AdminWithdrawalHistory-Cud-yuWy.js.map → AdminWithdrawalHistory-C76bkbjX.js.map} +1 -1
  10. package/dist/{AuthenticationSettings-D6GvSw3g.cjs → AuthenticationSettings-C-aYDXNH.cjs} +1 -1
  11. package/dist/{AuthenticationSettings-D6GvSw3g.cjs.map → AuthenticationSettings-C-aYDXNH.cjs.map} +1 -1
  12. package/dist/AuthenticationSettings-CoTic-d_.cjs +1 -0
  13. package/dist/AuthenticationSettings-CoTic-d_.cjs.map +1 -0
  14. package/dist/{AuthenticationSettings-rb4Fksw5.js → AuthenticationSettings-CsPbxwP7.js} +1 -1
  15. package/dist/{AuthenticationSettings-rb4Fksw5.js.map → AuthenticationSettings-CsPbxwP7.js.map} +1 -1
  16. package/dist/AuthenticationSettings-DIVk0OP8.js +712 -0
  17. package/dist/AuthenticationSettings-DIVk0OP8.js.map +1 -0
  18. package/dist/AutosaveStatus-DGNI4lXn.cjs +1 -0
  19. package/dist/AutosaveStatus-DGNI4lXn.cjs.map +1 -0
  20. package/dist/{AutosaveStatus-vkJxtuEw.js → AutosaveStatus-f-jw25Ay.js} +141 -93
  21. package/dist/AutosaveStatus-f-jw25Ay.js.map +1 -0
  22. package/dist/{CreditSystemSettings-ChA_lbef.cjs → CreditSystemSettings-BNkvsgsk.cjs} +1 -1
  23. package/dist/{CreditSystemSettings-ChA_lbef.cjs.map → CreditSystemSettings-BNkvsgsk.cjs.map} +1 -1
  24. package/dist/{CreditSystemSettings-DsRipb2R.js → CreditSystemSettings-C6ed3yp7.js} +1 -1
  25. package/dist/{CreditSystemSettings-DsRipb2R.js.map → CreditSystemSettings-C6ed3yp7.js.map} +1 -1
  26. package/dist/{CreditSystemSettings-r3gnGjiU.cjs → CreditSystemSettings-DM9ep1TF.cjs} +1 -1
  27. package/dist/{CreditSystemSettings-r3gnGjiU.cjs.map → CreditSystemSettings-DM9ep1TF.cjs.map} +1 -1
  28. package/dist/{CreditSystemSettings-a31pqSYS.js → CreditSystemSettings-uinhzoha.js} +1 -1
  29. package/dist/{CreditSystemSettings-a31pqSYS.js.map → CreditSystemSettings-uinhzoha.js.map} +1 -1
  30. package/dist/{DepositsSection-DD9MKUFt.js → DepositsSection-Bb4ISzvE.js} +1 -1
  31. package/dist/{DepositsSection-DD9MKUFt.js.map → DepositsSection-Bb4ISzvE.js.map} +1 -1
  32. package/dist/{DepositsSection-BkKUS4vk.cjs → DepositsSection-uQUdGeVb.cjs} +1 -1
  33. package/dist/{DepositsSection-BkKUS4vk.cjs.map → DepositsSection-uQUdGeVb.cjs.map} +1 -1
  34. package/dist/EmailRegisterForm-B_TiJkD6.cjs +1 -0
  35. package/dist/EmailRegisterForm-B_TiJkD6.cjs.map +1 -0
  36. package/dist/EmailRegisterForm-CCEuQA-w.js +773 -0
  37. package/dist/EmailRegisterForm-CCEuQA-w.js.map +1 -0
  38. package/dist/{EmailSettings-BVJ4vz0Y.js → EmailSettings-BAuQtEfM.js} +1 -1
  39. package/dist/{EmailSettings-BVJ4vz0Y.js.map → EmailSettings-BAuQtEfM.js.map} +1 -1
  40. package/dist/{EmailSettings-Dg2SAiHj.cjs → EmailSettings-BC0f1PCI.cjs} +1 -1
  41. package/dist/{EmailSettings-Dg2SAiHj.cjs.map → EmailSettings-BC0f1PCI.cjs.map} +1 -1
  42. package/dist/{EmailSettings-CM5l8qqK.cjs → EmailSettings-BF5EiPl9.cjs} +1 -1
  43. package/dist/{EmailSettings-CM5l8qqK.cjs.map → EmailSettings-BF5EiPl9.cjs.map} +1 -1
  44. package/dist/{EmailSettings-xtVl4kXD.js → EmailSettings-BKuXy8sc.js} +1 -1
  45. package/dist/{EmailSettings-xtVl4kXD.js.map → EmailSettings-BKuXy8sc.js.map} +1 -1
  46. package/dist/{EmbeddedWalletSettings-Bmx8x21f.cjs → EmbeddedWalletSettings-BRjt2PAj.cjs} +1 -1
  47. package/dist/{EmbeddedWalletSettings-Bmx8x21f.cjs.map → EmbeddedWalletSettings-BRjt2PAj.cjs.map} +1 -1
  48. package/dist/{EmbeddedWalletSettings-BuDgqv-K.js → EmbeddedWalletSettings-C27X9He2.js} +1 -1
  49. package/dist/{EmbeddedWalletSettings-BuDgqv-K.js.map → EmbeddedWalletSettings-C27X9He2.js.map} +1 -1
  50. package/dist/{EmbeddedWalletSettings-BXN9VbNJ.cjs → EmbeddedWalletSettings-CJY39UZN.cjs} +1 -1
  51. package/dist/{EmbeddedWalletSettings-BXN9VbNJ.cjs.map → EmbeddedWalletSettings-CJY39UZN.cjs.map} +1 -1
  52. package/dist/{EmbeddedWalletSettings-DY5iJhS0.js → EmbeddedWalletSettings-Dmi-EQ7W.js} +1 -1
  53. package/dist/{EmbeddedWalletSettings-DY5iJhS0.js.map → EmbeddedWalletSettings-Dmi-EQ7W.js.map} +1 -1
  54. package/dist/GoogleLoginButton-CjBO3Rf1.cjs +1 -0
  55. package/dist/GoogleLoginButton-CjBO3Rf1.cjs.map +1 -0
  56. package/dist/{GoogleLoginButton-B6qnNMZp.js → GoogleLoginButton-DEbiQngr.js} +51 -51
  57. package/dist/GoogleLoginButton-DEbiQngr.js.map +1 -0
  58. package/dist/LoadingSpinner-6vml-zwr.js.map +1 -1
  59. package/dist/LoadingSpinner-d6sSxgQN.cjs.map +1 -1
  60. package/dist/{PermissionsSection-BPbE-hNx.cjs → PermissionsSection-DEMVp7X3.cjs} +1 -1
  61. package/dist/PermissionsSection-DEMVp7X3.cjs.map +1 -0
  62. package/dist/{PermissionsSection-CighC1p6.js → PermissionsSection-DNzOL1xW.js} +27 -25
  63. package/dist/PermissionsSection-DNzOL1xW.js.map +1 -0
  64. package/dist/{ServerSettings-BAstMKHS.js → ServerSettings-BT9weFPz.js} +1 -1
  65. package/dist/{ServerSettings-BAstMKHS.js.map → ServerSettings-BT9weFPz.js.map} +1 -1
  66. package/dist/{ServerSettings-LIIP5TPz.cjs → ServerSettings-CKfiLfXi.cjs} +1 -1
  67. package/dist/{ServerSettings-LIIP5TPz.cjs.map → ServerSettings-CKfiLfXi.cjs.map} +1 -1
  68. package/dist/{ServerSettings-9Q091f3o.js → ServerSettings-CZfBdMxG.js} +1 -1
  69. package/dist/{ServerSettings-9Q091f3o.js.map → ServerSettings-CZfBdMxG.js.map} +1 -1
  70. package/dist/{ServerSettings-PH7T8JKI.cjs → ServerSettings-rHrVN8O8.cjs} +1 -1
  71. package/dist/{ServerSettings-PH7T8JKI.cjs.map → ServerSettings-rHrVN8O8.cjs.map} +1 -1
  72. package/dist/SolanaLoginButton-DAV3r4oB.cjs +1 -0
  73. package/dist/SolanaLoginButton-DAV3r4oB.cjs.map +1 -0
  74. package/dist/{mobileWalletAdapter-Cm_AUXhg.js → SolanaLoginButton-DFOoLqoj.js} +75 -74
  75. package/dist/SolanaLoginButton-DFOoLqoj.js.map +1 -0
  76. package/dist/{TeamSection-BIECkp7g.js → TeamSection-CoMXyFtz.js} +2 -2
  77. package/dist/{TeamSection-BIECkp7g.js.map → TeamSection-CoMXyFtz.js.map} +1 -1
  78. package/dist/{TeamSection-BOH9pv_E.cjs → TeamSection-DopbZClq.cjs} +1 -1
  79. package/dist/{TeamSection-BOH9pv_E.cjs.map → TeamSection-DopbZClq.cjs.map} +1 -1
  80. package/dist/{UsersSection-t-zm0jZW.js → UsersSection--PAE1XRh.js} +1 -1
  81. package/dist/{UsersSection-t-zm0jZW.js.map → UsersSection--PAE1XRh.js.map} +1 -1
  82. package/dist/{UsersSection-e6q7FHzx.cjs → UsersSection-C7aRNkK2.cjs} +1 -1
  83. package/dist/{UsersSection-e6q7FHzx.cjs.map → UsersSection-C7aRNkK2.cjs.map} +1 -1
  84. package/dist/{WebhookSettings-D0F8ESlB.js → WebhookSettings-Bgld6D_T.js} +1 -1
  85. package/dist/{WebhookSettings-D0F8ESlB.js.map → WebhookSettings-Bgld6D_T.js.map} +1 -1
  86. package/dist/{WebhookSettings-2p9abGm5.cjs → WebhookSettings-DXjnq-c7.cjs} +1 -1
  87. package/dist/{WebhookSettings-2p9abGm5.cjs.map → WebhookSettings-DXjnq-c7.cjs.map} +1 -1
  88. package/dist/{WebhookSettings-CdFM7_V-.cjs → WebhookSettings-DnLk97Mr.cjs} +1 -1
  89. package/dist/{WebhookSettings-CdFM7_V-.cjs.map → WebhookSettings-DnLk97Mr.cjs.map} +1 -1
  90. package/dist/{WebhookSettings-CXMBju7N.js → WebhookSettings-ufiGTmbG.js} +1 -1
  91. package/dist/{WebhookSettings-CXMBju7N.js.map → WebhookSettings-ufiGTmbG.js.map} +1 -1
  92. package/dist/{WithdrawalsSection-yRDTVFsb.js → WithdrawalsSection-BN-FjTEV.js} +1 -1
  93. package/dist/{WithdrawalsSection-yRDTVFsb.js.map → WithdrawalsSection-BN-FjTEV.js.map} +1 -1
  94. package/dist/{WithdrawalsSection-sljIyeaz.cjs → WithdrawalsSection-BhuCwFat.cjs} +1 -1
  95. package/dist/{WithdrawalsSection-sljIyeaz.cjs.map → WithdrawalsSection-BhuCwFat.cjs.map} +1 -1
  96. package/dist/admin-only.cjs +1 -1
  97. package/dist/admin-only.js +1 -1
  98. package/dist/email-only.cjs +1 -1
  99. package/dist/email-only.d.ts +17 -1
  100. package/dist/email-only.js +3 -3
  101. package/dist/google-only.cjs +1 -1
  102. package/dist/google-only.d.ts +16 -0
  103. package/dist/google-only.js +3 -3
  104. package/dist/index.cjs +12 -12
  105. package/dist/index.cjs.map +1 -1
  106. package/dist/index.d.ts +246 -10
  107. package/dist/index.js +3384 -2508
  108. package/dist/index.js.map +1 -1
  109. package/dist/login-react.css +1 -1
  110. package/dist/{plugin-DbkijwEV.js → plugin-BbExid4E.js} +1 -1
  111. package/dist/{plugin-DbkijwEV.js.map → plugin-BbExid4E.js.map} +1 -1
  112. package/dist/{plugin-PU2vAozn.cjs → plugin-Xca67fp7.cjs} +1 -1
  113. package/dist/{plugin-PU2vAozn.cjs.map → plugin-Xca67fp7.cjs.map} +1 -1
  114. package/dist/{shamir-CiBczzDN.cjs → shamir-DBpHm7WN.cjs} +1 -1
  115. package/dist/{shamir-CiBczzDN.cjs.map → shamir-DBpHm7WN.cjs.map} +1 -1
  116. package/dist/{shamir-OAB2zD9Y.js → shamir-R8ddesFt.js} +1 -1
  117. package/dist/{shamir-OAB2zD9Y.js.map → shamir-R8ddesFt.js.map} +1 -1
  118. package/dist/{silentWalletEnroll-FqXS7Rvh.js → silentWalletEnroll-Dp1GTeNr.js} +3 -3
  119. package/dist/{silentWalletEnroll-FqXS7Rvh.js.map → silentWalletEnroll-Dp1GTeNr.js.map} +1 -1
  120. package/dist/{silentWalletEnroll-wnkcB9HP.cjs → silentWalletEnroll-HPvsbd2J.cjs} +1 -1
  121. package/dist/{silentWalletEnroll-wnkcB9HP.cjs.map → silentWalletEnroll-HPvsbd2J.cjs.map} +1 -1
  122. package/dist/solana-only.cjs +1 -1
  123. package/dist/solana-only.d.ts +16 -0
  124. package/dist/solana-only.js +3 -3
  125. package/dist/{useAdminDeposits-BTSyeAfg.js → useAdminDeposits-C76B2Q_8.js} +1 -1
  126. package/dist/{useAdminDeposits-BTSyeAfg.js.map → useAdminDeposits-C76B2Q_8.js.map} +1 -1
  127. package/dist/{useAdminDeposits-BkkCwHWp.cjs → useAdminDeposits-CpLd68oP.cjs} +1 -1
  128. package/dist/{useAdminDeposits-BkkCwHWp.cjs.map → useAdminDeposits-CpLd68oP.cjs.map} +1 -1
  129. package/dist/{useAuth-m5Hf89v8.js → useAuth-CVLv2oKA.js} +547 -545
  130. package/dist/useAuth-CVLv2oKA.js.map +1 -0
  131. package/dist/useAuth-XZaciuLg.cjs +1 -0
  132. package/dist/useAuth-XZaciuLg.cjs.map +1 -0
  133. package/dist/useCedrosLogin-CFfID-0i.js +228 -0
  134. package/dist/useCedrosLogin-CFfID-0i.js.map +1 -0
  135. package/dist/useCedrosLogin-DtJorrE7.cjs +1 -0
  136. package/dist/useCedrosLogin-DtJorrE7.cjs.map +1 -0
  137. package/dist/{useOrgs-C3pzMA9h.js → useOrgs-C90KT9KP.js} +1 -1
  138. package/dist/{useOrgs-C3pzMA9h.js.map → useOrgs-C90KT9KP.js.map} +1 -1
  139. package/dist/{useOrgs-DDVRCaVi.cjs → useOrgs-CNqfn-fk.cjs} +1 -1
  140. package/dist/{useOrgs-DDVRCaVi.cjs.map → useOrgs-CNqfn-fk.cjs.map} +1 -1
  141. package/dist/{useSystemSettings-DRrreszl.cjs → useSystemSettings-B2jY51ob.cjs} +1 -1
  142. package/dist/{useSystemSettings-DRrreszl.cjs.map → useSystemSettings-B2jY51ob.cjs.map} +1 -1
  143. package/dist/{useSystemSettings-DBlAMjFi.js → useSystemSettings-rgskaDqP.js} +1 -1
  144. package/dist/{useSystemSettings-DBlAMjFi.js.map → useSystemSettings-rgskaDqP.js.map} +1 -1
  145. package/dist/{useUsersStatsSummary-NjEFvWuz.js → useUsersStatsSummary-5DJwzntC.js} +2 -2
  146. package/dist/{useUsersStatsSummary-NjEFvWuz.js.map → useUsersStatsSummary-5DJwzntC.js.map} +1 -1
  147. package/dist/{useUsersStatsSummary-8qY7iP4G.cjs → useUsersStatsSummary-DgKaUIfs.cjs} +1 -1
  148. package/dist/{useUsersStatsSummary-8qY7iP4G.cjs.map → useUsersStatsSummary-DgKaUIfs.cjs.map} +1 -1
  149. package/package.json +1 -1
  150. package/dist/AuthenticationSettings-C9f5MKgj.cjs +0 -1
  151. package/dist/AuthenticationSettings-C9f5MKgj.cjs.map +0 -1
  152. package/dist/AuthenticationSettings-DC64o_J6.js +0 -525
  153. package/dist/AuthenticationSettings-DC64o_J6.js.map +0 -1
  154. package/dist/AutosaveStatus-BFj5GIab.cjs +0 -1
  155. package/dist/AutosaveStatus-BFj5GIab.cjs.map +0 -1
  156. package/dist/AutosaveStatus-vkJxtuEw.js.map +0 -1
  157. package/dist/EmailRegisterForm-B1DB-bqe.cjs +0 -1
  158. package/dist/EmailRegisterForm-B1DB-bqe.cjs.map +0 -1
  159. package/dist/EmailRegisterForm-BAX_uBIt.js +0 -927
  160. package/dist/EmailRegisterForm-BAX_uBIt.js.map +0 -1
  161. package/dist/GoogleLoginButton-B6qnNMZp.js.map +0 -1
  162. package/dist/GoogleLoginButton-D7CoMXLq.cjs +0 -1
  163. package/dist/GoogleLoginButton-D7CoMXLq.cjs.map +0 -1
  164. package/dist/PermissionsSection-BPbE-hNx.cjs.map +0 -1
  165. package/dist/PermissionsSection-CighC1p6.js.map +0 -1
  166. package/dist/mobileWalletAdapter-B6ELaZp1.cjs +0 -1
  167. package/dist/mobileWalletAdapter-B6ELaZp1.cjs.map +0 -1
  168. package/dist/mobileWalletAdapter-Cm_AUXhg.js.map +0 -1
  169. package/dist/useAuth-X6Ds6WW4.cjs +0 -1
  170. package/dist/useAuth-X6Ds6WW4.cjs.map +0 -1
  171. package/dist/useAuth-m5Hf89v8.js.map +0 -1
  172. package/dist/useCedrosLogin-C9MrcZvh.cjs +0 -1
  173. package/dist/useCedrosLogin-C9MrcZvh.cjs.map +0 -1
  174. package/dist/useCedrosLogin-_94MmGGq.js +0 -216
  175. package/dist/useCedrosLogin-_94MmGGq.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -24,6 +24,19 @@ export declare interface AcceptInviteResponse {
24
24
  role: OrgRole;
25
25
  }
26
26
 
27
+ export declare function AccountSettings({ defaultTab, onClose, onPasswordChange, onTotpChange, onLinkGoogle, onLinkApple, onAddPasskey, onLinkSolana, className, }: AccountSettingsProps): JSX.Element;
28
+
29
+ export declare interface AccountSettingsProps extends ProfileTabProps, LinkedAccountsProps {
30
+ /** Which tab to show initially */
31
+ defaultTab?: AccountTab;
32
+ /** Called when user requests to close the settings page */
33
+ onClose?: () => void;
34
+ /** Called when 2FA status changes */
35
+ onTotpChange?: (enabled: boolean) => void;
36
+ }
37
+
38
+ declare type AccountTab = 'profile' | 'security' | 'linked';
39
+
27
40
  /** Request to acknowledge receipt of recovery phrase */
28
41
  export declare interface AcknowledgeRecoveryRequest {
29
42
  /** Confirmation that user has saved the recovery phrase */
@@ -614,6 +627,8 @@ export declare interface AuthResponse {
614
627
  tokens?: TokenPair;
615
628
  isNewUser: boolean;
616
629
  callbackData?: Record<string, unknown>;
630
+ /** Post-login action (welcome page, profile completion, or redirect) */
631
+ postLogin?: PostLoginAction;
617
632
  }
618
633
 
619
634
  /**
@@ -633,6 +648,8 @@ export declare interface AuthStateContextValue {
633
648
  authState: AuthState;
634
649
  logout: () => Promise<void>;
635
650
  refreshUser: () => Promise<void>;
651
+ /** Display order for social login buttons (from server auto-discovery). */
652
+ socialButtonOrder?: string[];
636
653
  _internal?: CedrosLoginInternalAPI;
637
654
  }
638
655
 
@@ -664,6 +681,8 @@ export declare interface AuthUser {
664
681
  totpEnabled?: boolean;
665
682
  createdAt: string;
666
683
  updatedAt: string;
684
+ /** When the user completed the one-time welcome flow */
685
+ welcomeCompletedAt?: string;
667
686
  }
668
687
 
669
688
  /** Multiple balances response */
@@ -894,6 +913,25 @@ export declare interface ChangePasswordResponse {
894
913
  */
895
914
  declare type ChatMessageRole = 'user' | 'assistant' | 'system';
896
915
 
916
+ /**
917
+ * Prompts the user to fill in their display name.
918
+ *
919
+ * Shown when the server returns `postLogin.action === 'complete_profile'`,
920
+ * indicating the user is missing a name (e.g., passkey-only or Solana-only
921
+ * signups).
922
+ *
923
+ * Uses the existing `useProfile().updateProfile()` to save changes.
924
+ */
925
+ export declare function CompleteAccountPrompt({ onComplete, onSkip, className, }: CompleteAccountPromptProps): JSX.Element;
926
+
927
+ export declare interface CompleteAccountPromptProps {
928
+ /** Called after the user saves their profile info */
929
+ onComplete?: () => void;
930
+ /** Called when the user chooses to skip */
931
+ onSkip?: () => void;
932
+ className?: string;
933
+ }
934
+
897
935
  /** Request to create a derived wallet */
898
936
  export declare interface CreateDerivedWalletRequest {
899
937
  /** Human-readable label for the wallet (1-100 chars) */
@@ -938,6 +976,20 @@ export declare interface CreateOrgRequest {
938
976
  slug?: string;
939
977
  }
940
978
 
979
+ /** A single linked credential / sign-in method */
980
+ declare interface Credential_2 {
981
+ id: string;
982
+ credentialType: CredentialType;
983
+ label: string | null;
984
+ createdAt: string;
985
+ lastUsedAt: string | null;
986
+ isPrimary: boolean;
987
+ }
988
+ export { Credential_2 as Credential }
989
+
990
+ /** Supported credential types matching server enum */
991
+ export declare type CredentialType = 'password' | 'oauth_google' | 'oauth_apple' | 'solana' | 'webauthn_passkey' | 'webauthn_security_key' | 'totp' | 'sso_oidc';
992
+
941
993
  /**
942
994
  * Credit balance display
943
995
  *
@@ -1368,7 +1420,7 @@ export declare function EmailLoginForm({ onSuccess, onSwitchToRegister, onForgot
1368
1420
  export declare interface EmailLoginFormProps {
1369
1421
  onSuccess?: () => void;
1370
1422
  onSwitchToRegister?: () => void;
1371
- /** Called when user clicks "Forgot password?" (only in 'reset' mode) */
1423
+ /** Called when user clicks "Forgot password?" navigates to forgot-password screen */
1372
1424
  onForgotPassword?: () => void;
1373
1425
  className?: string;
1374
1426
  }
@@ -1548,19 +1600,15 @@ export declare interface ForgotPasswordConfig {
1548
1600
  }
1549
1601
 
1550
1602
  /**
1551
- * Form for requesting a password reset email.
1603
+ * Form for requesting a password reset or instant sign-in link.
1552
1604
  *
1553
- * @example
1554
- * ```tsx
1555
- * <ForgotPasswordForm
1556
- * onSuccess={() => console.log('Email sent!')}
1557
- * onCancel={() => setShowForgotPassword(false)}
1558
- * />
1559
- * ```
1605
+ * @param mode - `'reset'` sends a password reset email; `'instantLink'` sends a passwordless sign-in link.
1560
1606
  */
1561
- export declare function ForgotPasswordForm({ onSuccess, onCancel, className, }: ForgotPasswordFormProps): JSX.Element;
1607
+ export declare function ForgotPasswordForm({ mode, onSuccess, onCancel, className, }: ForgotPasswordFormProps): JSX.Element;
1562
1608
 
1563
1609
  export declare interface ForgotPasswordFormProps {
1610
+ /** Which action to perform: password reset email or instant sign-in link */
1611
+ mode?: 'reset' | 'instantLink';
1564
1612
  onSuccess?: () => void;
1565
1613
  onCancel?: () => void;
1566
1614
  className?: string;
@@ -1903,6 +1951,27 @@ export declare interface KdfParams {
1903
1951
  pCost: number;
1904
1952
  }
1905
1953
 
1954
+ export declare function LinkedAccounts({ onLinkGoogle, onLinkApple, onAddPasskey, onLinkSolana, className, }: LinkedAccountsProps): JSX.Element;
1955
+
1956
+ /**
1957
+ * LinkedAccounts — displays linked sign-in methods and allows unlinking.
1958
+ *
1959
+ * Each credential row shows an icon, display name, timestamps, and a remove button.
1960
+ * Linking new methods is handled via consumer-provided callbacks.
1961
+ */
1962
+ export declare interface LinkedAccountsProps {
1963
+ /** Callback to start Google OAuth linking flow */
1964
+ onLinkGoogle?: () => void;
1965
+ /** Callback to start Apple OAuth linking flow */
1966
+ onLinkApple?: () => void;
1967
+ /** Override for passkey registration. If omitted, uses built-in registerPasskey(). */
1968
+ onAddPasskey?: () => void;
1969
+ /** Callback to start Solana wallet linking flow */
1970
+ onLinkSolana?: () => void;
1971
+ /** Additional CSS class */
1972
+ className?: string;
1973
+ }
1974
+
1906
1975
  /**
1907
1976
  * Response for listing users (admin)
1908
1977
  */
@@ -1913,6 +1982,11 @@ export declare interface ListAdminUsersResponse {
1913
1982
  offset: number;
1914
1983
  }
1915
1984
 
1985
+ /** Response from GET /credentials */
1986
+ export declare interface ListCredentialsResponse {
1987
+ credentials: Credential_2[];
1988
+ }
1989
+
1916
1990
  /**
1917
1991
  * Response from listing sessions
1918
1992
  */
@@ -2121,6 +2195,26 @@ declare interface MfaRequiredResult {
2121
2195
  userId: string;
2122
2196
  }
2123
2197
 
2198
+ /**
2199
+ * Post-login prompt for admin-enforced MFA setup.
2200
+ *
2201
+ * Shown when the server returns `postLogin.action === 'setup_mfa'`,
2202
+ * indicating the admin requires two-factor authentication and the user
2203
+ * has not yet enrolled. This prompt is **not skippable** — the user
2204
+ * must complete TOTP setup to proceed.
2205
+ *
2206
+ * Only applies to users with password credentials. OAuth, passkey,
2207
+ * and wallet users are not prompted (their providers handle strong auth).
2208
+ */
2209
+ export declare function MfaSetupPrompt({ onComplete, className }: MfaSetupPromptProps): JSX.Element;
2210
+
2211
+ export declare interface MfaSetupPromptProps {
2212
+ /** Called after TOTP enrollment succeeds */
2213
+ onComplete: () => void;
2214
+ /** Additional CSS class */
2215
+ className?: string;
2216
+ }
2217
+
2124
2218
  /** Request for POST /deposit/micro */
2125
2219
  export declare interface MicroDepositRequest {
2126
2220
  txSignature: string;
@@ -2462,6 +2556,16 @@ export declare interface PluginRegistry {
2462
2556
  subscribe(listener: (plugins: AdminPlugin[]) => void): () => void;
2463
2557
  }
2464
2558
 
2559
+ /**
2560
+ * Post-login action returned by the server after authentication
2561
+ */
2562
+ export declare interface PostLoginAction {
2563
+ /** Action type: "welcome", "complete_profile", "redirect", or "setup_mfa" */
2564
+ action: 'welcome' | 'complete_profile' | 'redirect' | 'setup_mfa';
2565
+ /** URL/route for redirect or welcome page */
2566
+ redirectUrl?: string;
2567
+ }
2568
+
2465
2569
  /** Privacy Cash system status response */
2466
2570
  declare interface PrivacyStatusResponse {
2467
2571
  enabled: boolean;
@@ -2550,6 +2654,27 @@ export declare interface ProfileDropdownProps {
2550
2654
  className?: string;
2551
2655
  }
2552
2656
 
2657
+ export declare function ProfileTab({ onPasswordChange, className }: ProfileTabProps): JSX.Element;
2658
+
2659
+ /**
2660
+ * ProfileTab — editable profile view with avatar, name, email, and password.
2661
+ *
2662
+ * Three internal states:
2663
+ * - "view": read-only display with edit pencil on name
2664
+ * - "edit": inline name editing with Save/Cancel
2665
+ * - "change-password": delegates to ChangePasswordForm
2666
+ *
2667
+ * Detects whether the user has a password credential:
2668
+ * - Has password → "Change" button → ChangePasswordForm
2669
+ * - No password → "Add password" button → sends forgot-password email
2670
+ */
2671
+ export declare interface ProfileTabProps {
2672
+ /** Called after password is changed successfully */
2673
+ onPasswordChange?: () => void;
2674
+ /** Additional CSS class */
2675
+ className?: string;
2676
+ }
2677
+
2553
2678
  /** Request for POST /deposit/public */
2554
2679
  export declare interface PublicDepositRequest {
2555
2680
  signedTransaction: string;
@@ -2754,6 +2879,14 @@ export declare interface ServerFeatures {
2754
2879
  * admin dashboard visibility only.
2755
2880
  */
2756
2881
  mfa: boolean;
2882
+ /**
2883
+ * Require email/password users to set up TOTP two-factor authentication.
2884
+ *
2885
+ * **Enforced** — the server returns a `setup_mfa` post-login action for
2886
+ * password users who haven't enrolled TOTP. Works independently of `mfa`
2887
+ * (which only controls UI visibility).
2888
+ */
2889
+ mfaRequired: boolean;
2757
2890
  /** Enable embedded wallet for transaction signing. Startup-config enforced. */
2758
2891
  walletSigning: boolean;
2759
2892
  /**
@@ -3873,6 +4006,47 @@ export declare function useAuthUI(): AuthUIContextValue;
3873
4006
  */
3874
4007
  export declare function useCedrosLogin(): CedrosLoginContextValue;
3875
4008
 
4009
+ /**
4010
+ * Hook for managing user credentials (linked sign-in methods).
4011
+ *
4012
+ * Auto-fetches when authenticated. Provides list, unlink, and refresh operations.
4013
+ *
4014
+ * @example
4015
+ * ```tsx
4016
+ * function LinkedAccountsPage() {
4017
+ * const { credentials, isLoading, unlinkCredential } = useCredentials();
4018
+ *
4019
+ * return (
4020
+ * <ul>
4021
+ * {credentials.map(cred => (
4022
+ * <li key={cred.id}>
4023
+ * {cred.credentialType}
4024
+ * <button onClick={() => unlinkCredential(cred.id)}>Remove</button>
4025
+ * </li>
4026
+ * ))}
4027
+ * </ul>
4028
+ * );
4029
+ * }
4030
+ * ```
4031
+ */
4032
+ export declare function useCredentials(): UseCredentialsReturn;
4033
+
4034
+ /** Return type for useCredentials hook */
4035
+ export declare interface UseCredentialsReturn {
4036
+ /** List of linked credentials */
4037
+ credentials: Credential_2[];
4038
+ /** Loading state */
4039
+ isLoading: boolean;
4040
+ /** Error state */
4041
+ error: AuthError | null;
4042
+ /** Fetch/refresh credentials list */
4043
+ fetchCredentials: () => Promise<void>;
4044
+ /** Unlink a credential by ID */
4045
+ unlinkCredential: (id: string) => Promise<void>;
4046
+ /** Clear error state */
4047
+ clearError: () => void;
4048
+ }
4049
+
3876
4050
  /**
3877
4051
  * Hook for credit balance and transaction history
3878
4052
  *
@@ -4317,6 +4491,68 @@ export declare interface UsePendingRecoveryReturn {
4317
4491
  clearError: () => void;
4318
4492
  }
4319
4493
 
4494
+ /**
4495
+ * Hook for managing post-login flow actions.
4496
+ *
4497
+ * After authentication, the server may return a `postLogin` action indicating
4498
+ * the client should show a welcome page, prompt for profile completion, or
4499
+ * redirect to a specific URL.
4500
+ *
4501
+ * @example
4502
+ * ```tsx
4503
+ * function App() {
4504
+ * const { postLoginAction, markWelcomeCompleted, clearPostLogin } = usePostLogin();
4505
+ * const { login } = useEmailAuth();
4506
+ *
4507
+ * const handleLogin = async () => {
4508
+ * const response = await login(email, password);
4509
+ * if (response.postLogin) {
4510
+ * setPostLoginAction(response.postLogin);
4511
+ * }
4512
+ * };
4513
+ *
4514
+ * // MFA setup (highest priority — not skippable)
4515
+ * if (postLoginAction?.action === 'setup_mfa') {
4516
+ * return <MfaSetupPrompt onComplete={clearPostLogin} />;
4517
+ * }
4518
+ *
4519
+ * if (postLoginAction?.action === 'welcome') {
4520
+ * return <WelcomePage onComplete={async () => {
4521
+ * await markWelcomeCompleted();
4522
+ * clearPostLogin();
4523
+ * }} />;
4524
+ * }
4525
+ *
4526
+ * if (postLoginAction?.action === 'complete_profile') {
4527
+ * return <CompleteAccountPrompt onComplete={clearPostLogin} onSkip={clearPostLogin} />;
4528
+ * }
4529
+ *
4530
+ * if (postLoginAction?.action === 'redirect' && postLoginAction.redirectUrl) {
4531
+ * window.location.href = postLoginAction.redirectUrl;
4532
+ * }
4533
+ * }
4534
+ * ```
4535
+ */
4536
+ export declare function usePostLogin(): UsePostLoginReturn;
4537
+
4538
+ /**
4539
+ * Return type for the usePostLogin hook
4540
+ */
4541
+ export declare interface UsePostLoginReturn {
4542
+ /** The current post-login action from the last auth response, or null */
4543
+ postLoginAction: PostLoginAction | null;
4544
+ /** Set the post-login action (call after receiving an auth response with postLogin) */
4545
+ setPostLoginAction: (action: PostLoginAction | null) => void;
4546
+ /** Mark the welcome flow as completed on the server */
4547
+ markWelcomeCompleted: () => Promise<void>;
4548
+ /** Clear the post-login action (e.g., after handling it) */
4549
+ clearPostLogin: () => void;
4550
+ /** Whether a markWelcomeCompleted call is in progress */
4551
+ isLoading: boolean;
4552
+ /** Error from the last markWelcomeCompleted call */
4553
+ error: Error | null;
4554
+ }
4555
+
4320
4556
  /**
4321
4557
  * Hook for managing user profile operations.
4322
4558
  *