@cedros/login-react 0.0.12 → 0.0.13

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 (428) hide show
  1. package/README.md +68 -0
  2. package/dist/AdminDepositList-Cx0xRwES.js +305 -0
  3. package/dist/AdminDepositList-Cx0xRwES.js.map +1 -0
  4. package/dist/AdminDepositList-UEcyRZkA.cjs +1 -0
  5. package/dist/AdminDepositList-UEcyRZkA.cjs.map +1 -0
  6. package/dist/AdminUserDetail-BzEIdNJh.cjs +1 -0
  7. package/dist/AdminUserDetail-BzEIdNJh.cjs.map +1 -0
  8. package/dist/AdminUserDetail-DHFDzY8B.js +1195 -0
  9. package/dist/AdminUserDetail-DHFDzY8B.js.map +1 -0
  10. package/dist/AdminWithdrawalHistory-0yxtMh6q.cjs +1 -0
  11. package/dist/AdminWithdrawalHistory-0yxtMh6q.cjs.map +1 -0
  12. package/dist/AdminWithdrawalHistory-BGjfrIe3.js +904 -0
  13. package/dist/AdminWithdrawalHistory-BGjfrIe3.js.map +1 -0
  14. package/dist/AuthenticationSettings-5Vi7Ib_A.cjs +1 -0
  15. package/dist/AuthenticationSettings-5Vi7Ib_A.cjs.map +1 -0
  16. package/dist/AuthenticationSettings-BPAh1my6.cjs +1 -0
  17. package/dist/AuthenticationSettings-BPAh1my6.cjs.map +1 -0
  18. package/dist/AuthenticationSettings-CJg8CJY9.js +9 -0
  19. package/dist/AuthenticationSettings-CJg8CJY9.js.map +1 -0
  20. package/dist/AuthenticationSettings-CR_i6TTS.js +495 -0
  21. package/dist/AuthenticationSettings-CR_i6TTS.js.map +1 -0
  22. package/dist/AutosaveStatus-CYkC2aI_.cjs +1 -0
  23. package/dist/AutosaveStatus-CYkC2aI_.cjs.map +1 -0
  24. package/dist/AutosaveStatus-N4uNS6-2.js +1497 -0
  25. package/dist/AutosaveStatus-N4uNS6-2.js.map +1 -0
  26. package/dist/CreditSystemSettings-BnAOK_tT.cjs +1 -0
  27. package/dist/CreditSystemSettings-BnAOK_tT.cjs.map +1 -0
  28. package/dist/CreditSystemSettings-CIf_SfJq.js +210 -0
  29. package/dist/CreditSystemSettings-CIf_SfJq.js.map +1 -0
  30. package/dist/CreditSystemSettings-CePYGgev.js +9 -0
  31. package/dist/CreditSystemSettings-CePYGgev.js.map +1 -0
  32. package/dist/CreditSystemSettings-Ck5WIMp3.cjs +1 -0
  33. package/dist/CreditSystemSettings-Ck5WIMp3.cjs.map +1 -0
  34. package/dist/{DepositsSection-0Hqr0yDm.js → DepositsSection-DA89uR9A.js} +5 -5
  35. package/dist/{DepositsSection-0Hqr0yDm.js.map → DepositsSection-DA89uR9A.js.map} +1 -1
  36. package/dist/DepositsSection-i6XdhLNs.cjs +1 -0
  37. package/dist/{DepositsSection-CGKCzM-H.cjs.map → DepositsSection-i6XdhLNs.cjs.map} +1 -1
  38. package/dist/EmailRegisterForm-BrDL3BZy.js +927 -0
  39. package/dist/EmailRegisterForm-BrDL3BZy.js.map +1 -0
  40. package/dist/EmailRegisterForm-CxktR-4J.cjs +1 -0
  41. package/dist/EmailRegisterForm-CxktR-4J.cjs.map +1 -0
  42. package/dist/EmailSettings-B8xwgd6_.cjs +1 -0
  43. package/dist/EmailSettings-B8xwgd6_.cjs.map +1 -0
  44. package/dist/{AuthenticationSettings-BSoIQ58T.js → EmailSettings-Bna7Z53E.js} +3 -3
  45. package/dist/EmailSettings-Bna7Z53E.js.map +1 -0
  46. package/dist/EmailSettings-DZywTTRq.cjs +1 -0
  47. package/dist/EmailSettings-DZywTTRq.cjs.map +1 -0
  48. package/dist/EmailSettings-DbMDfVaM.js +17 -0
  49. package/dist/EmailSettings-DbMDfVaM.js.map +1 -0
  50. package/dist/{EmbeddedWalletSettings-iVf_3pn3.js → EmbeddedWalletSettings-ANbhj3Lt.js} +3 -3
  51. package/dist/EmbeddedWalletSettings-ANbhj3Lt.js.map +1 -0
  52. package/dist/EmbeddedWalletSettings-BEztqO19.js +79 -0
  53. package/dist/EmbeddedWalletSettings-BEztqO19.js.map +1 -0
  54. package/dist/EmbeddedWalletSettings-D6M7pwgk.cjs +1 -0
  55. package/dist/EmbeddedWalletSettings-D6M7pwgk.cjs.map +1 -0
  56. package/dist/EmbeddedWalletSettings-DivEPn39.cjs +1 -0
  57. package/dist/EmbeddedWalletSettings-DivEPn39.cjs.map +1 -0
  58. package/dist/ErrorMessage-CHbYbVi2.cjs +1 -0
  59. package/dist/ErrorMessage-CHbYbVi2.cjs.map +1 -0
  60. package/dist/ErrorMessage-CcEK0pYO.js +64 -0
  61. package/dist/ErrorMessage-CcEK0pYO.js.map +1 -0
  62. package/dist/{GoogleLoginButton-BzHr545L.js → GoogleLoginButton-B3uRMJ_n.js} +4 -3
  63. package/dist/{GoogleLoginButton-BzHr545L.js.map → GoogleLoginButton-B3uRMJ_n.js.map} +1 -1
  64. package/dist/GoogleLoginButton-BydKswn4.cjs +1 -0
  65. package/dist/{GoogleLoginButton-DoAdOqb3.cjs.map → GoogleLoginButton-BydKswn4.cjs.map} +1 -1
  66. package/dist/LoadingSpinner-6vml-zwr.js +79 -0
  67. package/dist/LoadingSpinner-6vml-zwr.js.map +1 -0
  68. package/dist/LoadingSpinner-d6sSxgQN.cjs +1 -0
  69. package/dist/LoadingSpinner-d6sSxgQN.cjs.map +1 -0
  70. package/dist/PermissionsSection-BGaj_sI7.js +1026 -0
  71. package/dist/PermissionsSection-BGaj_sI7.js.map +1 -0
  72. package/dist/PermissionsSection-CKXXDfqi.cjs +1 -0
  73. package/dist/PermissionsSection-CKXXDfqi.cjs.map +1 -0
  74. package/dist/ServerSettings-B2RKhJtZ.js +84 -0
  75. package/dist/ServerSettings-B2RKhJtZ.js.map +1 -0
  76. package/dist/ServerSettings-BZXlm1BX.cjs +1 -0
  77. package/dist/ServerSettings-BZXlm1BX.cjs.map +1 -0
  78. package/dist/{ServerSettings-C_osdbiX.js → ServerSettings-Bqm4-bt2.js} +3 -3
  79. package/dist/ServerSettings-Bqm4-bt2.js.map +1 -0
  80. package/dist/ServerSettings-DZUKo6By.cjs +1 -0
  81. package/dist/ServerSettings-DZUKo6By.cjs.map +1 -0
  82. package/dist/SettingsPageLayout-COSYLMu7.cjs +1 -0
  83. package/dist/SettingsPageLayout-COSYLMu7.cjs.map +1 -0
  84. package/dist/SettingsPageLayout-DpgNEkuu.js +50 -0
  85. package/dist/SettingsPageLayout-DpgNEkuu.js.map +1 -0
  86. package/dist/{SolanaLoginButton-C-CfZxAZ.js → SolanaLoginButton-C_u9OppS.js} +5 -4
  87. package/dist/{SolanaLoginButton-C-CfZxAZ.js.map → SolanaLoginButton-C_u9OppS.js.map} +1 -1
  88. package/dist/SolanaLoginButton-fAW7kRUu.cjs +1 -0
  89. package/dist/{SolanaLoginButton-CPzms0kf.cjs.map → SolanaLoginButton-fAW7kRUu.cjs.map} +1 -1
  90. package/dist/StatsBar-BX-hHtTq.js +66 -0
  91. package/dist/StatsBar-BX-hHtTq.js.map +1 -0
  92. package/dist/StatsBar-DTUZCwDD.cjs +1 -0
  93. package/dist/StatsBar-DTUZCwDD.cjs.map +1 -0
  94. package/dist/{TeamSection-Bjt72upx.js → TeamSection-CvrCoa9D.js} +27 -26
  95. package/dist/TeamSection-CvrCoa9D.js.map +1 -0
  96. package/dist/TeamSection-DlUD5kp5.cjs +1 -0
  97. package/dist/TeamSection-DlUD5kp5.cjs.map +1 -0
  98. package/dist/UsersSection-C2U8Tb7V.cjs +1 -0
  99. package/dist/{UsersSection-DU86czWP.cjs.map → UsersSection-C2U8Tb7V.cjs.map} +1 -1
  100. package/dist/{UsersSection-hAcyfSZk.js → UsersSection-Dbh9PTSA.js} +17 -15
  101. package/dist/{UsersSection-hAcyfSZk.js.map → UsersSection-Dbh9PTSA.js.map} +1 -1
  102. package/dist/WebhookSettings-BT5q6AZ8.js +17 -0
  103. package/dist/WebhookSettings-BT5q6AZ8.js.map +1 -0
  104. package/dist/WebhookSettings-BWl_wsvg.cjs +1 -0
  105. package/dist/WebhookSettings-BWl_wsvg.cjs.map +1 -0
  106. package/dist/WebhookSettings-DXNH5bal.cjs +1 -0
  107. package/dist/WebhookSettings-DXNH5bal.cjs.map +1 -0
  108. package/dist/{WebhookSettings-IyhyTFes.js → WebhookSettings-bUg2u_p0.js} +4 -4
  109. package/dist/WebhookSettings-bUg2u_p0.js.map +1 -0
  110. package/dist/WithdrawalsSection-BL_LOUq8.cjs +1 -0
  111. package/dist/{WithdrawalsSection-iZJBuZ7O.cjs.map → WithdrawalsSection-BL_LOUq8.cjs.map} +1 -1
  112. package/dist/WithdrawalsSection-CN-lLnqX.js +20 -0
  113. package/dist/{WithdrawalsSection-B1415d-G.js.map → WithdrawalsSection-CN-lLnqX.js.map} +1 -1
  114. package/dist/admin-only.cjs +1 -0
  115. package/dist/admin-only.cjs.map +1 -0
  116. package/dist/{admin/types.d.ts → admin-only.d.ts} +228 -167
  117. package/dist/admin-only.js +8 -0
  118. package/dist/admin-only.js.map +1 -0
  119. package/dist/apiClient-B2JxVPlH.js +216 -0
  120. package/dist/apiClient-B2JxVPlH.js.map +1 -0
  121. package/dist/apiClient-CTTKhsYb.cjs +1 -0
  122. package/dist/apiClient-CTTKhsYb.cjs.map +1 -0
  123. package/dist/assets/argon2Worker-Bi5TuQvD.js.map +1 -1
  124. package/dist/email-only.cjs +1 -1
  125. package/dist/email-only.d.ts +634 -16
  126. package/dist/email-only.js +16 -13
  127. package/dist/email-only.js.map +1 -1
  128. package/dist/google-only.cjs +1 -1
  129. package/dist/google-only.d.ts +543 -13
  130. package/dist/google-only.js +11 -8
  131. package/dist/google-only.js.map +1 -1
  132. package/dist/index.cjs +2061 -1
  133. package/dist/index.cjs.map +1 -1
  134. package/dist/index.d.ts +5007 -144
  135. package/dist/index.js +13507 -116
  136. package/dist/index.js.map +1 -1
  137. package/dist/login-react.css +1 -1
  138. package/dist/plugin-5qRh-YhX.js +596 -0
  139. package/dist/plugin-5qRh-YhX.js.map +1 -0
  140. package/dist/plugin-BtYBW6JY.cjs +1 -0
  141. package/dist/plugin-BtYBW6JY.cjs.map +1 -0
  142. package/dist/sanitization-Bo_tn-L2.cjs +1 -0
  143. package/dist/sanitization-Bo_tn-L2.cjs.map +1 -0
  144. package/dist/sanitization-CQ-H1MSg.js +39 -0
  145. package/dist/sanitization-CQ-H1MSg.js.map +1 -0
  146. package/dist/shamir-AeLLfw0p.cjs +1 -0
  147. package/dist/shamir-AeLLfw0p.cjs.map +1 -0
  148. package/dist/{solanaKeypair-BlXol3nh.js → shamir-B0wConeK.js} +765 -757
  149. package/dist/shamir-B0wConeK.js.map +1 -0
  150. package/dist/silentWalletEnroll-B8pgdKZO.cjs +1 -0
  151. package/dist/silentWalletEnroll-B8pgdKZO.cjs.map +1 -0
  152. package/dist/silentWalletEnroll-DR2kPw7W.js +41 -0
  153. package/dist/silentWalletEnroll-DR2kPw7W.js.map +1 -0
  154. package/dist/solana-only.cjs +1 -1
  155. package/dist/solana-only.d.ts +594 -13
  156. package/dist/solana-only.js +12 -9
  157. package/dist/solana-only.js.map +1 -1
  158. package/dist/style.d.ts +1 -0
  159. package/dist/useAdminDeposits-BDY5KJ0-.js +151 -0
  160. package/dist/useAdminDeposits-BDY5KJ0-.js.map +1 -0
  161. package/dist/useAdminDeposits-Dvx3_UUE.cjs +1 -0
  162. package/dist/useAdminDeposits-Dvx3_UUE.cjs.map +1 -0
  163. package/dist/{ErrorMessage-DU2VBb85.js → useAuth-Bge6KaWN.js} +954 -1226
  164. package/dist/useAuth-Bge6KaWN.js.map +1 -0
  165. package/dist/useAuth-DhIDTLRd.cjs +1 -0
  166. package/dist/useAuth-DhIDTLRd.cjs.map +1 -0
  167. package/dist/useOrgs-Be3KH4ib.js +215 -0
  168. package/dist/useOrgs-Be3KH4ib.js.map +1 -0
  169. package/dist/useOrgs-CVbacmaQ.cjs +1 -0
  170. package/dist/useOrgs-CVbacmaQ.cjs.map +1 -0
  171. package/dist/useSystemSettings-D9Cr7ZTl.cjs +1 -0
  172. package/dist/useSystemSettings-D9Cr7ZTl.cjs.map +1 -0
  173. package/dist/useSystemSettings-DN5YqfNq.js +97 -0
  174. package/dist/useSystemSettings-DN5YqfNq.js.map +1 -0
  175. package/dist/{validation-BebL7hMF.js → validation-B8kMV3BL.js} +1 -1
  176. package/dist/{validation-BebL7hMF.js.map → validation-B8kMV3BL.js.map} +1 -1
  177. package/dist/{validation-BeXIfuHB.cjs → validation-BuGQrA-K.cjs} +1 -1
  178. package/dist/{validation-BeXIfuHB.cjs.map → validation-BuGQrA-K.cjs.map} +1 -1
  179. package/package.json +11 -1
  180. package/dist/AuthenticationSettings-BSoIQ58T.js.map +0 -1
  181. package/dist/AuthenticationSettings-CNmWEPFV.cjs +0 -1
  182. package/dist/AuthenticationSettings-CNmWEPFV.cjs.map +0 -1
  183. package/dist/CreditSystemSettings-BYxoFwaP.js +0 -9
  184. package/dist/CreditSystemSettings-BYxoFwaP.js.map +0 -1
  185. package/dist/CreditSystemSettings-D2fLorNx.cjs +0 -1
  186. package/dist/CreditSystemSettings-D2fLorNx.cjs.map +0 -1
  187. package/dist/DepositsSection-CGKCzM-H.cjs +0 -1
  188. package/dist/EmailRegisterForm-C0PStlj5.js +0 -961
  189. package/dist/EmailRegisterForm-C0PStlj5.js.map +0 -1
  190. package/dist/EmailRegisterForm-DaPLGws2.cjs +0 -1
  191. package/dist/EmailRegisterForm-DaPLGws2.cjs.map +0 -1
  192. package/dist/EmailSettings-CiLDwzNb.cjs +0 -1
  193. package/dist/EmailSettings-CiLDwzNb.cjs.map +0 -1
  194. package/dist/EmailSettings-DTjpO65J.js +0 -9
  195. package/dist/EmailSettings-DTjpO65J.js.map +0 -1
  196. package/dist/EmbeddedWalletSettings-CX7sYiPy.cjs +0 -1
  197. package/dist/EmbeddedWalletSettings-CX7sYiPy.cjs.map +0 -1
  198. package/dist/EmbeddedWalletSettings-iVf_3pn3.js.map +0 -1
  199. package/dist/ErrorMessage-BXHiYibN.cjs +0 -1
  200. package/dist/ErrorMessage-BXHiYibN.cjs.map +0 -1
  201. package/dist/ErrorMessage-DU2VBb85.js.map +0 -1
  202. package/dist/GoogleLoginButton-DoAdOqb3.cjs +0 -1
  203. package/dist/ServerSettings-C_osdbiX.js.map +0 -1
  204. package/dist/ServerSettings-HqSb_VDj.cjs +0 -1
  205. package/dist/ServerSettings-HqSb_VDj.cjs.map +0 -1
  206. package/dist/SolanaLoginButton-CPzms0kf.cjs +0 -1
  207. package/dist/TeamSection-Bjt72upx.js.map +0 -1
  208. package/dist/TeamSection-DZeWHkLd.cjs +0 -1
  209. package/dist/TeamSection-DZeWHkLd.cjs.map +0 -1
  210. package/dist/UsersSection-DU86czWP.cjs +0 -1
  211. package/dist/WebhookSettings-Br9bakAL.cjs +0 -1
  212. package/dist/WebhookSettings-Br9bakAL.cjs.map +0 -1
  213. package/dist/WebhookSettings-IyhyTFes.js.map +0 -1
  214. package/dist/WithdrawalsSection-B1415d-G.js +0 -20
  215. package/dist/WithdrawalsSection-iZJBuZ7O.cjs +0 -1
  216. package/dist/admin/AdminShell.d.ts +0 -38
  217. package/dist/admin/icons.d.ts +0 -2
  218. package/dist/admin/index.d.ts +0 -10
  219. package/dist/admin/plugin.d.ts +0 -3
  220. package/dist/admin/sections/AuthenticationSettings.d.ts +0 -3
  221. package/dist/admin/sections/CreditSystemSettings.d.ts +0 -3
  222. package/dist/admin/sections/DepositsSection.d.ts +0 -3
  223. package/dist/admin/sections/EmailSettings.d.ts +0 -3
  224. package/dist/admin/sections/EmbeddedWalletSettings.d.ts +0 -3
  225. package/dist/admin/sections/FeatureSettings.d.ts +0 -3
  226. package/dist/admin/sections/InvitesSection.d.ts +0 -3
  227. package/dist/admin/sections/MembersSection.d.ts +0 -3
  228. package/dist/admin/sections/ServerSettings.d.ts +0 -3
  229. package/dist/admin/sections/SettingsSections.d.ts +0 -7
  230. package/dist/admin/sections/TeamSection.d.ts +0 -3
  231. package/dist/admin/sections/UsersSection.d.ts +0 -3
  232. package/dist/admin/sections/WebhookSettings.d.ts +0 -3
  233. package/dist/admin/sections/WithdrawalsSection.d.ts +0 -3
  234. package/dist/components/LoginButton.d.ts +0 -23
  235. package/dist/components/LoginForm.d.ts +0 -9
  236. package/dist/components/LoginModal.d.ts +0 -9
  237. package/dist/components/admin/AdminUserDetail.d.ts +0 -23
  238. package/dist/components/admin/AdminUserList.d.ts +0 -21
  239. package/dist/components/admin/CedrosAdminDashboard.d.ts +0 -52
  240. package/dist/components/admin/PermissionsSection.d.ts +0 -7
  241. package/dist/components/admin/ProfileDropdown.d.ts +0 -34
  242. package/dist/components/admin/SetupWizard.d.ts +0 -30
  243. package/dist/components/admin/StatsBar.d.ts +0 -17
  244. package/dist/components/admin/SystemSettings.d.ts +0 -19
  245. package/dist/components/admin/settings/AuthenticationSettings.d.ts +0 -4
  246. package/dist/components/admin/settings/AutosaveStatus.d.ts +0 -6
  247. package/dist/components/admin/settings/CreditSystemSettings.d.ts +0 -6
  248. package/dist/components/admin/settings/EmailSettings.d.ts +0 -4
  249. package/dist/components/admin/settings/EmbeddedWalletSettings.d.ts +0 -4
  250. package/dist/components/admin/settings/FeatureSettings.d.ts +0 -4
  251. package/dist/components/admin/settings/MessagingSettings.d.ts +0 -4
  252. package/dist/components/admin/settings/SecuritySettings.d.ts +0 -4
  253. package/dist/components/admin/settings/ServerSettings.d.ts +0 -4
  254. package/dist/components/admin/settings/SettingsPageLayout.d.ts +0 -16
  255. package/dist/components/admin/settings/SsoProvidersSettings.d.ts +0 -4
  256. package/dist/components/admin/settings/WebhookSettings.d.ts +0 -4
  257. package/dist/components/admin/settings/index.d.ts +0 -31
  258. package/dist/components/admin/settings/settingsInputs.d.ts +0 -79
  259. package/dist/components/admin/settings/settingsMetadata.d.ts +0 -18
  260. package/dist/components/apple/AppleLoginButton.d.ts +0 -29
  261. package/dist/components/deposit/CreditBalance.d.ts +0 -19
  262. package/dist/components/deposit/DepositFlow.d.ts +0 -118
  263. package/dist/components/deposit/FeeConfigDisplay.d.ts +0 -15
  264. package/dist/components/deposit/History.d.ts +0 -21
  265. package/dist/components/deposit/TieredAmountSlider.d.ts +0 -19
  266. package/dist/components/deposit/TokenSelector.d.ts +0 -23
  267. package/dist/components/deposit/admin/AdminDepositList.d.ts +0 -21
  268. package/dist/components/deposit/admin/AdminDepositStats.d.ts +0 -15
  269. package/dist/components/deposit/admin/AdminPrivacyPeriodDeposits.d.ts +0 -19
  270. package/dist/components/deposit/admin/AdminWithdrawalHistory.d.ts +0 -19
  271. package/dist/components/deposit/admin/AdminWithdrawalQueue.d.ts +0 -23
  272. package/dist/components/deposit/admin/AdminWithdrawalStats.d.ts +0 -10
  273. package/dist/components/deposit/admin/FeatureDisabledMessage.d.ts +0 -15
  274. package/dist/components/deposit/admin/PrivacySystemStatus.d.ts +0 -15
  275. package/dist/components/deposit/admin/featureDisabled.d.ts +0 -14
  276. package/dist/components/deposit/admin/index.d.ts +0 -22
  277. package/dist/components/deposit/index.d.ts +0 -12
  278. package/dist/components/deposit/tierUtils.d.ts +0 -8
  279. package/dist/components/deposit/tokens.d.ts +0 -19
  280. package/dist/components/email/EmailLoginForm.d.ts +0 -11
  281. package/dist/components/email/EmailRegisterForm.d.ts +0 -14
  282. package/dist/components/email/ForgotPasswordForm.d.ts +0 -17
  283. package/dist/components/email/PasswordInput.d.ts +0 -14
  284. package/dist/components/email/ResetPasswordForm.d.ts +0 -22
  285. package/dist/components/google/GoogleLoginButton.d.ts +0 -12
  286. package/dist/components/invites/InviteForm.d.ts +0 -38
  287. package/dist/components/invites/InviteList.d.ts +0 -40
  288. package/dist/components/members/MemberList.d.ts +0 -47
  289. package/dist/components/org/CreateOrgForm.d.ts +0 -7
  290. package/dist/components/org/OrgAvatar.d.ts +0 -7
  291. package/dist/components/org/OrgListView.d.ts +0 -9
  292. package/dist/components/org/OrgSelector.d.ts +0 -52
  293. package/dist/components/org/OrgSwitcher.d.ts +0 -47
  294. package/dist/components/org/icons.d.ts +0 -8
  295. package/dist/components/profile/UserProfileSettings.d.ts +0 -35
  296. package/dist/components/profile/index.d.ts +0 -2
  297. package/dist/components/sessions/SessionList.d.ts +0 -33
  298. package/dist/components/shared/ErrorBoundary.d.ts +0 -38
  299. package/dist/components/shared/ErrorMessage.d.ts +0 -14
  300. package/dist/components/shared/LoadingSpinner.d.ts +0 -16
  301. package/dist/components/solana/SolanaLoginButton.d.ts +0 -49
  302. package/dist/components/templates/FullPageLayout.d.ts +0 -40
  303. package/dist/components/templates/SplitPageLayout.d.ts +0 -44
  304. package/dist/components/templates/index.d.ts +0 -4
  305. package/dist/components/totp/OtpInput.d.ts +0 -32
  306. package/dist/components/totp/QrCode.d.ts +0 -21
  307. package/dist/components/totp/TotpSettings.d.ts +0 -38
  308. package/dist/components/totp/TotpSetup.d.ts +0 -23
  309. package/dist/components/totp/TotpVerify.d.ts +0 -25
  310. package/dist/components/totp/index.d.ts +0 -10
  311. package/dist/components/wallet/CapabilityWarning.d.ts +0 -11
  312. package/dist/components/wallet/PasskeyPrompt.d.ts +0 -34
  313. package/dist/components/wallet/RecoveryPhraseDisplay.d.ts +0 -18
  314. package/dist/components/wallet/RecoveryPhraseInput.d.ts +0 -21
  315. package/dist/components/wallet/WalletAddressRow.d.ts +0 -10
  316. package/dist/components/wallet/WalletEnrollment.d.ts +0 -15
  317. package/dist/components/wallet/WalletManager.d.ts +0 -9
  318. package/dist/components/wallet/WalletRecovery.d.ts +0 -19
  319. package/dist/components/wallet/WalletStatus.d.ts +0 -28
  320. package/dist/components/wallet/WalletUnlock.d.ts +0 -23
  321. package/dist/components/wallet/index.d.ts +0 -23
  322. package/dist/components/webauthn/PasskeyLoginButton.d.ts +0 -8
  323. package/dist/context/CedrosLoginContext.d.ts +0 -24
  324. package/dist/context/CedrosLoginProvider.d.ts +0 -17
  325. package/dist/context/EmbeddedWalletExposure.d.ts +0 -19
  326. package/dist/context/useCedrosLogin.d.ts +0 -12
  327. package/dist/crypto/aesGcm.d.ts +0 -89
  328. package/dist/crypto/argon2.d.ts +0 -65
  329. package/dist/crypto/argon2Worker.d.ts +0 -1
  330. package/dist/crypto/argon2WorkerClient.d.ts +0 -28
  331. package/dist/crypto/bip39.d.ts +0 -106
  332. package/dist/crypto/capabilities.d.ts +0 -35
  333. package/dist/crypto/entropy.d.ts +0 -56
  334. package/dist/crypto/hkdf.d.ts +0 -38
  335. package/dist/crypto/index.d.ts +0 -30
  336. package/dist/crypto/secureWipe.d.ts +0 -71
  337. package/dist/crypto/shamir.d.ts +0 -52
  338. package/dist/crypto/solanaKeypair.d.ts +0 -63
  339. package/dist/crypto/types.d.ts +0 -134
  340. package/dist/crypto/webauthnPrf.d.ts +0 -108
  341. package/dist/hooks/useAdminDeposits.d.ts +0 -10
  342. package/dist/hooks/useAdminUsers.d.ts +0 -28
  343. package/dist/hooks/useAppleAuth.d.ts +0 -52
  344. package/dist/hooks/useAuth.d.ts +0 -34
  345. package/dist/hooks/useAuthSession.d.ts +0 -19
  346. package/dist/hooks/useAuthorize.d.ts +0 -62
  347. package/dist/hooks/useCredits.d.ts +0 -11
  348. package/dist/hooks/useDashboardPermissions.d.ts +0 -45
  349. package/dist/hooks/useDeposit.d.ts +0 -16
  350. package/dist/hooks/useEmailAuth.d.ts +0 -60
  351. package/dist/hooks/useGoogleAuth.d.ts +0 -67
  352. package/dist/hooks/useInstantLink.d.ts +0 -42
  353. package/dist/hooks/useInvites.d.ts +0 -57
  354. package/dist/hooks/useMembers.d.ts +0 -52
  355. package/dist/hooks/useOrgs.d.ts +0 -49
  356. package/dist/hooks/usePasswordReset.d.ts +0 -32
  357. package/dist/hooks/usePendingRecovery.d.ts +0 -34
  358. package/dist/hooks/useProfile.d.ts +0 -35
  359. package/dist/hooks/useRateLimiter.d.ts +0 -58
  360. package/dist/hooks/useServerFeatures.d.ts +0 -55
  361. package/dist/hooks/useSessions.d.ts +0 -45
  362. package/dist/hooks/useSettingsAutosave.d.ts +0 -29
  363. package/dist/hooks/useSetup.d.ts +0 -25
  364. package/dist/hooks/useSolanaAuth.d.ts +0 -30
  365. package/dist/hooks/useSsoProviders.d.ts +0 -52
  366. package/dist/hooks/useSystemSettings.d.ts +0 -47
  367. package/dist/hooks/useThemeManager.d.ts +0 -11
  368. package/dist/hooks/useTotp.d.ts +0 -52
  369. package/dist/hooks/useTotpVerify.d.ts +0 -38
  370. package/dist/hooks/useTransactionSigning.d.ts +0 -45
  371. package/dist/hooks/useWallet.d.ts +0 -10
  372. package/dist/hooks/useWalletDiscovery.d.ts +0 -24
  373. package/dist/hooks/useWalletEnrollment.d.ts +0 -9
  374. package/dist/hooks/useWalletMaterial.d.ts +0 -10
  375. package/dist/hooks/useWalletRecovery.d.ts +0 -9
  376. package/dist/hooks/useWalletSigning.d.ts +0 -31
  377. package/dist/hooks/useWebAuthn.d.ts +0 -25
  378. package/dist/i18n/I18nProvider.d.ts +0 -16
  379. package/dist/i18n/context.d.ts +0 -6
  380. package/dist/i18n/index.d.ts +0 -5
  381. package/dist/i18n/translations.d.ts +0 -66
  382. package/dist/i18n/useI18n.d.ts +0 -9
  383. package/dist/index-ZS9AwAal.cjs +0 -2061
  384. package/dist/index-ZS9AwAal.cjs.map +0 -1
  385. package/dist/index-dgg5tlO7.js +0 -19650
  386. package/dist/index-dgg5tlO7.js.map +0 -1
  387. package/dist/silentWalletEnroll-C3JRAD9_.js +0 -42
  388. package/dist/silentWalletEnroll-C3JRAD9_.js.map +0 -1
  389. package/dist/silentWalletEnroll-DRYQAQfg.cjs +0 -1
  390. package/dist/silentWalletEnroll-DRYQAQfg.cjs.map +0 -1
  391. package/dist/solanaKeypair-BlXol3nh.js.map +0 -1
  392. package/dist/solanaKeypair-C-lIR1JY.cjs +0 -1
  393. package/dist/solanaKeypair-C-lIR1JY.cjs.map +0 -1
  394. package/dist/types/adminUser.d.ts +0 -168
  395. package/dist/types/auth.d.ts +0 -122
  396. package/dist/types/config.d.ts +0 -266
  397. package/dist/types/deposit.d.ts +0 -490
  398. package/dist/types/index.d.ts +0 -13
  399. package/dist/types/invite.d.ts +0 -71
  400. package/dist/types/member.d.ts +0 -45
  401. package/dist/types/org.d.ts +0 -133
  402. package/dist/types/profile.d.ts +0 -56
  403. package/dist/types/session.d.ts +0 -28
  404. package/dist/types/setup.d.ts +0 -47
  405. package/dist/types/systemSettings.d.ts +0 -85
  406. package/dist/types/totp.d.ts +0 -52
  407. package/dist/types/wallet.d.ts +0 -309
  408. package/dist/utils/adminUserApi.d.ts +0 -60
  409. package/dist/utils/apiClient.d.ts +0 -78
  410. package/dist/utils/cryptoShim.d.ts +0 -17
  411. package/dist/utils/csrf.d.ts +0 -1
  412. package/dist/utils/deviceDetection.d.ts +0 -17
  413. package/dist/utils/embeddedWallet.d.ts +0 -75
  414. package/dist/utils/inviteApi.d.ts +0 -31
  415. package/dist/utils/memberApi.d.ts +0 -23
  416. package/dist/utils/orgApi.d.ts +0 -36
  417. package/dist/utils/profileApi.d.ts +0 -26
  418. package/dist/utils/sanitization.d.ts +0 -66
  419. package/dist/utils/sessionApi.d.ts +0 -16
  420. package/dist/utils/setupApi.d.ts +0 -21
  421. package/dist/utils/silentWalletEnroll.d.ts +0 -41
  422. package/dist/utils/systemSettingsApi.d.ts +0 -18
  423. package/dist/utils/tabSync.d.ts +0 -46
  424. package/dist/utils/tokenManager.d.ts +0 -107
  425. package/dist/utils/unlockCredential.d.ts +0 -5
  426. package/dist/utils/validation.d.ts +0 -48
  427. package/dist/utils/walletDetection.d.ts +0 -23
  428. package/dist/utils/webauthnJson.d.ts +0 -21
package/README.md CHANGED
@@ -152,6 +152,13 @@ function AuthStatus() {
152
152
  | `TotpVerify` | Verification prompt during login |
153
153
  | `OtpInput` | 6-digit code input component |
154
154
 
155
+ ### User Withdrawals
156
+
157
+ | Component | Description |
158
+ |-----------|-------------|
159
+ | `WithdrawalFlow` | Multi-step withdrawal wizard (token select, amount, confirm, success) |
160
+ | `WithdrawalHistory` | Paginated withdrawal history with Solana explorer links |
161
+
155
162
  ### Privacy Cash (Deposits & Credits)
156
163
 
157
164
  | Component | Description |
@@ -456,6 +463,22 @@ const {
456
463
  } = useSessions();
457
464
  ```
458
465
 
466
+ ### User Withdrawals
467
+
468
+ ```tsx
469
+ // Withdraw SOL/SPL tokens to external addresses
470
+ const {
471
+ getBalances, // Fetch SOL + SPL token balances from wallet
472
+ withdrawSol, // Withdraw native SOL (destination, amountLamports)
473
+ withdrawSpl, // Withdraw SPL token (destination, tokenMint, amount)
474
+ getHistory, // Paginated withdrawal history (limit, offset)
475
+ isSubmitting, // True while withdrawal is in flight
476
+ error, // Error message or null
477
+ clearError, // Clear error state
478
+ lastResult, // Most recent WithdrawalResponse
479
+ } = useWithdrawal();
480
+ ```
481
+
459
482
  ### Privacy Cash (Deposits & Credits)
460
483
 
461
484
  ```tsx
@@ -984,6 +1007,45 @@ function InviteButton({ orgId }) {
984
1007
  }
985
1008
  ```
986
1009
 
1010
+ ### User Withdrawals
1011
+
1012
+ Withdraw SOL or SPL tokens from the user's embedded wallet to any external Solana address.
1013
+ Requires `feature_user_withdrawals` to be enabled via system settings.
1014
+
1015
+ ```tsx
1016
+ import { WithdrawalFlow, WithdrawalHistory, useWithdrawal } from '@cedros/login-react';
1017
+
1018
+ // Multi-step withdrawal wizard
1019
+ function WithdrawPage() {
1020
+ return (
1021
+ <div>
1022
+ <WithdrawalFlow
1023
+ onSuccess={(result) => console.log('Sent:', result.txSignature)}
1024
+ onCancel={() => console.log('Cancelled')}
1025
+ />
1026
+
1027
+ <WithdrawalHistory
1028
+ pageSize={10}
1029
+ onTransactionClick={(item) => console.log('Clicked:', item)}
1030
+ />
1031
+ </div>
1032
+ );
1033
+ }
1034
+
1035
+ // Using the hook directly
1036
+ function CustomWithdraw() {
1037
+ const { getBalances, withdrawSol, withdrawSpl, getHistory, isSubmitting } = useWithdrawal();
1038
+
1039
+ const handleWithdraw = async () => {
1040
+ const balances = await getBalances();
1041
+ const result = await withdrawSol('DestinationAddress...', 100_000_000);
1042
+ console.log('Tx:', result.txSignature, 'Fee:', result.feeLamports);
1043
+ };
1044
+
1045
+ return <button onClick={handleWithdraw} disabled={isSubmitting}>Withdraw</button>;
1046
+ }
1047
+ ```
1048
+
987
1049
  ### Privacy Cash
988
1050
 
989
1051
  **Deposits work in all wallet recovery modes**, but private (privacy-preserving) deposits require the wallet to be configured in "no-recovery" mode for security reasons.
@@ -1260,6 +1322,12 @@ import type {
1260
1322
  SignTransactionRequest,
1261
1323
  SignTransactionResponse,
1262
1324
 
1325
+ // User Withdrawal types
1326
+ WithdrawalResponse,
1327
+ WalletBalancesResponse,
1328
+ UserWithdrawalHistoryItem,
1329
+ UserWithdrawalHistoryResponse,
1330
+
1263
1331
  // Privacy Cash types
1264
1332
  DepositRequest,
1265
1333
  DepositResponse,
@@ -0,0 +1,305 @@
1
+ import { jsxs as a, jsx as t, Fragment as W } from "react/jsx-runtime";
2
+ import { useState as u, useCallback as T, useEffect as D, useMemo as V } from "react";
3
+ import { u as O } from "./useAdminDeposits-BDY5KJ0-.js";
4
+ import { S as B } from "./StatsBar-BX-hHtTq.js";
5
+ function Y({
6
+ refreshInterval: s = 0,
7
+ className: r = "",
8
+ onLoad: b
9
+ }) {
10
+ const { getStats: g, isLoading: y, error: f, clearError: A } = O(), [d, C] = u(null), [L, l] = u(null), m = T(async () => {
11
+ try {
12
+ const i = await g();
13
+ C(i), b?.(i), l(null);
14
+ } catch (i) {
15
+ const S = i && typeof i == "object" && "message" in i ? String(i.message) : "Failed to load stats";
16
+ l(S);
17
+ }
18
+ }, [g, b]);
19
+ D(() => {
20
+ m();
21
+ }, [m]), D(() => {
22
+ if (s <= 0) return;
23
+ const i = setInterval(m, s);
24
+ return () => clearInterval(i);
25
+ }, [s, m]);
26
+ const N = L || f;
27
+ return N ? /* @__PURE__ */ a("div", { className: `cedros-admin-stats cedros-admin-stats-error ${r}`, children: [
28
+ /* @__PURE__ */ t("p", { className: "cedros-admin-error", children: N }),
29
+ /* @__PURE__ */ t(
30
+ "button",
31
+ {
32
+ type: "button",
33
+ className: "cedros-button cedros-button-outline",
34
+ onClick: () => {
35
+ A(), l(null), m();
36
+ },
37
+ children: "Retry"
38
+ }
39
+ )
40
+ ] }) : y && !d ? /* @__PURE__ */ a("div", { className: `cedros-admin-stats cedros-admin-stats-loading ${r}`, children: [
41
+ /* @__PURE__ */ t("span", { className: "cedros-admin-loading-indicator" }),
42
+ /* @__PURE__ */ t("span", { className: "cedros-admin-loading-text", children: "Loading statistics..." })
43
+ ] }) : d ? /* @__PURE__ */ t("div", { className: `cedros-admin-stats ${r}`, children: /* @__PURE__ */ t(
44
+ B,
45
+ {
46
+ stats: [
47
+ { label: "Total Deposits", value: d.totalDeposits },
48
+ { label: "Private Deposits", value: d.inPrivacyPeriodCount ?? 0 },
49
+ { label: "Standard Deposits", value: d.readyForWithdrawalCount ?? 0 },
50
+ { label: "Microdeposits", value: d.nativeSolDepositCount ?? 0 }
51
+ ],
52
+ isLoading: y,
53
+ onRefresh: m
54
+ }
55
+ ) }) : null;
56
+ }
57
+ function K(s) {
58
+ return {
59
+ pending: "Pending",
60
+ detected: "Detected",
61
+ processing: "Processing",
62
+ completed: "Completed",
63
+ withdrawn: "Withdrawn",
64
+ partially_withdrawn: "Partially Withdrawn",
65
+ expired: "Expired",
66
+ failed: "Failed"
67
+ }[s] || s;
68
+ }
69
+ function U(s) {
70
+ return s === "completed" || s === "withdrawn" || s === "partially_withdrawn" ? "cedros-admin-deposit-success" : s === "failed" || s === "expired" ? "cedros-admin-deposit-error" : s === "processing" || s === "detected" ? "cedros-admin-deposit-processing" : "cedros-admin-deposit-pending";
71
+ }
72
+ function q(s) {
73
+ return s == null ? "—" : `${(s / 1e9).toFixed(4)} SOL`;
74
+ }
75
+ function G(s) {
76
+ return new Date(s).toLocaleDateString(void 0, {
77
+ year: "numeric",
78
+ month: "short",
79
+ day: "numeric",
80
+ hour: "2-digit",
81
+ minute: "2-digit"
82
+ });
83
+ }
84
+ function F(s) {
85
+ return s.length <= 12 ? s : `${s.slice(0, 6)}...${s.slice(-4)}`;
86
+ }
87
+ function Z({
88
+ statusFilter: s,
89
+ pageSize: r = 20,
90
+ refreshInterval: b = 0,
91
+ className: g = "",
92
+ onLoad: y,
93
+ onDepositClick: f
94
+ }) {
95
+ const { listDeposits: A, isLoading: d, error: C, clearError: L } = O(), [l, m] = u([]), [N, i] = u(0), [S, P] = u(0), [R, k] = u(null), [n, j] = u("createdAt"), [c, I] = u("desc"), x = (e) => {
96
+ n === e ? I(c === "asc" ? "desc" : "asc") : (j(e), I("desc"));
97
+ }, _ = V(() => [...l].sort((e, o) => {
98
+ let p, h;
99
+ switch (n) {
100
+ case "userId":
101
+ p = e.userId.toLowerCase(), h = o.userId.toLowerCase();
102
+ break;
103
+ case "amountLamports":
104
+ p = e.amountLamports ?? 0, h = o.amountLamports ?? 0;
105
+ break;
106
+ case "status":
107
+ p = e.status, h = o.status;
108
+ break;
109
+ case "createdAt":
110
+ p = new Date(e.createdAt).getTime(), h = new Date(o.createdAt).getTime();
111
+ break;
112
+ case "txSignature":
113
+ p = e.txSignature || "", h = o.txSignature || "";
114
+ break;
115
+ default:
116
+ return 0;
117
+ }
118
+ return p < h ? c === "asc" ? -1 : 1 : p > h ? c === "asc" ? 1 : -1 : 0;
119
+ }), [l, n, c]), v = T(async () => {
120
+ try {
121
+ const e = await A({ status: s, limit: r, offset: S });
122
+ m(e.deposits), i(e.total), y?.(e), k(null);
123
+ } catch (e) {
124
+ const o = e && typeof e == "object" && "message" in e ? String(e.message) : "Failed to load deposits";
125
+ k(o);
126
+ }
127
+ }, [s, r, S, A, y]);
128
+ D(() => {
129
+ P(0);
130
+ }, [s, r]), D(() => {
131
+ v();
132
+ }, [v]), D(() => {
133
+ if (b <= 0) return;
134
+ const e = setInterval(v, b);
135
+ return () => clearInterval(e);
136
+ }, [b, v]);
137
+ const $ = Math.ceil(N / r), w = Math.floor(S / r) + 1, E = (e) => {
138
+ const o = (e - 1) * r;
139
+ P(Math.max(0, Math.min(o, Math.max(0, N - 1))));
140
+ }, M = R || C;
141
+ return M ? /* @__PURE__ */ a("div", { className: `cedros-admin-deposit-list cedros-admin-deposit-list-error ${g}`, children: [
142
+ /* @__PURE__ */ t("p", { className: "cedros-admin-error", children: M }),
143
+ /* @__PURE__ */ t(
144
+ "button",
145
+ {
146
+ type: "button",
147
+ className: "cedros-button cedros-button-outline",
148
+ onClick: () => {
149
+ L(), k(null), v();
150
+ },
151
+ children: "Retry"
152
+ }
153
+ )
154
+ ] }) : d && l.length === 0 ? /* @__PURE__ */ a("div", { className: `cedros-admin-deposit-list cedros-admin-deposit-list-loading ${g}`, children: [
155
+ /* @__PURE__ */ t("span", { className: "cedros-admin-loading-indicator" }),
156
+ /* @__PURE__ */ t("span", { className: "cedros-admin-loading-text", children: "Loading deposits..." })
157
+ ] }) : /* @__PURE__ */ a("div", { className: `cedros-admin-deposit-list ${g}`, children: [
158
+ /* @__PURE__ */ a("div", { className: "cedros-admin-deposit-list-header", children: [
159
+ /* @__PURE__ */ t("h4", { className: "cedros-admin-deposit-list-title", children: "All Deposits" }),
160
+ /* @__PURE__ */ t(
161
+ "button",
162
+ {
163
+ type: "button",
164
+ className: "cedros-admin__stats-bar-refresh",
165
+ onClick: v,
166
+ disabled: d,
167
+ title: "Refresh deposits",
168
+ "aria-label": "Refresh deposits",
169
+ children: d ? "..." : "↻"
170
+ }
171
+ )
172
+ ] }),
173
+ l.length === 0 ? /* @__PURE__ */ t("div", { className: "cedros-admin-empty", children: /* @__PURE__ */ t("p", { className: "cedros-admin-empty-message", children: "No deposits found." }) }) : /* @__PURE__ */ a(W, { children: [
174
+ /* @__PURE__ */ a("div", { className: "cedros-admin-deposit-table", children: [
175
+ /* @__PURE__ */ a("div", { className: "cedros-admin-deposit-thead", children: [
176
+ /* @__PURE__ */ t("div", { className: "cedros-admin-deposit-th", children: /* @__PURE__ */ a(
177
+ "button",
178
+ {
179
+ type: "button",
180
+ className: `cedros-admin-sort-button ${n === "userId" ? "cedros-admin-sort-active" : ""}`,
181
+ onClick: () => x("userId"),
182
+ "aria-label": "Sort by user",
183
+ children: [
184
+ "User",
185
+ " ",
186
+ /* @__PURE__ */ t("span", { className: "cedros-admin-sort-icon", children: n === "userId" ? c === "asc" ? "↑" : "↓" : "↕" })
187
+ ]
188
+ }
189
+ ) }),
190
+ /* @__PURE__ */ t("div", { className: "cedros-admin-deposit-th", children: /* @__PURE__ */ a(
191
+ "button",
192
+ {
193
+ type: "button",
194
+ className: `cedros-admin-sort-button ${n === "amountLamports" ? "cedros-admin-sort-active" : ""}`,
195
+ onClick: () => x("amountLamports"),
196
+ "aria-label": "Sort by amount",
197
+ children: [
198
+ "Amount",
199
+ " ",
200
+ /* @__PURE__ */ t("span", { className: "cedros-admin-sort-icon", children: n === "amountLamports" ? c === "asc" ? "↑" : "↓" : "↕" })
201
+ ]
202
+ }
203
+ ) }),
204
+ /* @__PURE__ */ t("div", { className: "cedros-admin-deposit-th", children: /* @__PURE__ */ a(
205
+ "button",
206
+ {
207
+ type: "button",
208
+ className: `cedros-admin-sort-button ${n === "status" ? "cedros-admin-sort-active" : ""}`,
209
+ onClick: () => x("status"),
210
+ "aria-label": "Sort by status",
211
+ children: [
212
+ "Status",
213
+ " ",
214
+ /* @__PURE__ */ t("span", { className: "cedros-admin-sort-icon", children: n === "status" ? c === "asc" ? "↑" : "↓" : "↕" })
215
+ ]
216
+ }
217
+ ) }),
218
+ /* @__PURE__ */ t("div", { className: "cedros-admin-deposit-th", children: /* @__PURE__ */ a(
219
+ "button",
220
+ {
221
+ type: "button",
222
+ className: `cedros-admin-sort-button ${n === "createdAt" ? "cedros-admin-sort-active" : ""}`,
223
+ onClick: () => x("createdAt"),
224
+ "aria-label": "Sort by created",
225
+ children: [
226
+ "Created",
227
+ " ",
228
+ /* @__PURE__ */ t("span", { className: "cedros-admin-sort-icon", children: n === "createdAt" ? c === "asc" ? "↑" : "↓" : "↕" })
229
+ ]
230
+ }
231
+ ) }),
232
+ /* @__PURE__ */ t("div", { className: "cedros-admin-deposit-th", children: /* @__PURE__ */ a(
233
+ "button",
234
+ {
235
+ type: "button",
236
+ className: `cedros-admin-sort-button ${n === "txSignature" ? "cedros-admin-sort-active" : ""}`,
237
+ onClick: () => x("txSignature"),
238
+ "aria-label": "Sort by transaction",
239
+ children: [
240
+ "Tx",
241
+ " ",
242
+ /* @__PURE__ */ t("span", { className: "cedros-admin-sort-icon", children: n === "txSignature" ? c === "asc" ? "↑" : "↓" : "↕" })
243
+ ]
244
+ }
245
+ ) })
246
+ ] }),
247
+ _.map((e) => /* @__PURE__ */ a(
248
+ "div",
249
+ {
250
+ className: `cedros-admin-deposit-row ${U(e.status)}`,
251
+ onClick: () => f?.(e),
252
+ onKeyDown: (o) => {
253
+ (o.key === "Enter" || o.key === " ") && (o.preventDefault(), f?.(e));
254
+ },
255
+ role: f ? "button" : void 0,
256
+ tabIndex: f ? 0 : void 0,
257
+ children: [
258
+ /* @__PURE__ */ t("div", { className: "cedros-admin-deposit-td", title: e.userId, children: F(e.userId) }),
259
+ /* @__PURE__ */ t("div", { className: "cedros-admin-deposit-td", children: q(e.amountLamports) }),
260
+ /* @__PURE__ */ t("div", { className: "cedros-admin-deposit-td", children: /* @__PURE__ */ t("span", { className: "cedros-admin-status-badge", children: K(e.status) }) }),
261
+ /* @__PURE__ */ t("div", { className: "cedros-admin-deposit-td", children: G(e.createdAt) }),
262
+ /* @__PURE__ */ t("div", { className: "cedros-admin-deposit-td", title: e.txSignature || void 0, children: e.txSignature ? F(e.txSignature) : "—" })
263
+ ]
264
+ },
265
+ e.id
266
+ ))
267
+ ] }),
268
+ $ > 1 && /* @__PURE__ */ a("div", { className: "cedros-admin-pagination", children: [
269
+ /* @__PURE__ */ t(
270
+ "button",
271
+ {
272
+ type: "button",
273
+ className: "cedros-button cedros-button-outline cedros-button-sm",
274
+ onClick: () => E(w - 1),
275
+ disabled: w <= 1,
276
+ children: "Previous"
277
+ }
278
+ ),
279
+ /* @__PURE__ */ a("span", { className: "cedros-admin-page-info", children: [
280
+ "Page ",
281
+ w,
282
+ " of ",
283
+ $,
284
+ " (",
285
+ N,
286
+ " total)"
287
+ ] }),
288
+ /* @__PURE__ */ t(
289
+ "button",
290
+ {
291
+ type: "button",
292
+ className: "cedros-button cedros-button-outline cedros-button-sm",
293
+ onClick: () => E(w + 1),
294
+ disabled: w >= $,
295
+ children: "Next"
296
+ }
297
+ )
298
+ ] })
299
+ ] })
300
+ ] });
301
+ }
302
+ export {
303
+ Y as A,
304
+ Z as a
305
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminDepositList-Cx0xRwES.js","sources":["../src/components/deposit/admin/AdminDepositStats.tsx","../src/components/deposit/admin/AdminDepositList.tsx"],"sourcesContent":["/**\n * Admin deposit statistics component\n *\n * Shows aggregate statistics for Privacy Cash deposits.\n * Requires system admin privileges.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { useAdminDeposits } from '../../../hooks/useAdminDeposits';\nimport type { AdminDepositStatsResponse } from '../../../types/deposit';\nimport { FeatureDisabledMessage } from './FeatureDisabledMessage';\nimport { isFeatureDisabledError } from './featureDisabled';\nimport { StatsBar } from '../../admin/StatsBar';\n\nexport interface AdminDepositStatsProps {\n /** Auto-refresh interval in milliseconds (0 to disable) */\n refreshInterval?: number;\n /** Additional CSS classes */\n className?: string;\n /** Callback when stats are loaded */\n onLoad?: (stats: AdminDepositStatsResponse) => void;\n}\n\n/**\n * Admin deposit statistics display\n *\n * Shows total deposits, withdrawals, and pending amounts.\n */\nexport function AdminDepositStats({\n refreshInterval = 0,\n className = '',\n onLoad,\n}: AdminDepositStatsProps) {\n const { getStats, isLoading, error, clearError } = useAdminDeposits();\n\n const [stats, setStats] = useState<AdminDepositStatsResponse | null>(null);\n const [loadError, setLoadError] = useState<string | null>(null);\n\n const fetchStats = useCallback(async () => {\n try {\n const result = await getStats();\n setStats(result);\n onLoad?.(result);\n setLoadError(null);\n } catch (err) {\n const message =\n err && typeof err === 'object' && 'message' in err\n ? String((err as { message: unknown }).message)\n : 'Failed to load stats';\n setLoadError(message);\n }\n }, [getStats, onLoad]);\n\n // Fetch on mount\n useEffect(() => {\n fetchStats();\n }, [fetchStats]);\n\n // Auto-refresh\n useEffect(() => {\n if (refreshInterval <= 0) return;\n\n const interval = setInterval(fetchStats, refreshInterval);\n return () => clearInterval(interval);\n }, [refreshInterval, fetchStats]);\n\n // Feature disabled state\n const errorMessage = loadError || error;\n if (isFeatureDisabledError(errorMessage)) {\n return <FeatureDisabledMessage feature=\"Privacy Cash\" className={className} />;\n }\n\n // Error state\n if (errorMessage) {\n return (\n <div className={`cedros-admin-stats cedros-admin-stats-error ${className}`}>\n <p className=\"cedros-admin-error\">{errorMessage}</p>\n <button\n type=\"button\"\n className=\"cedros-button cedros-button-outline\"\n onClick={() => {\n clearError();\n setLoadError(null);\n fetchStats();\n }}\n >\n Retry\n </button>\n </div>\n );\n }\n\n // Loading state\n if (isLoading && !stats) {\n return (\n <div className={`cedros-admin-stats cedros-admin-stats-loading ${className}`}>\n <span className=\"cedros-admin-loading-indicator\" />\n <span className=\"cedros-admin-loading-text\">Loading statistics...</span>\n </div>\n );\n }\n\n if (!stats) {\n return null;\n }\n\n return (\n <div className={`cedros-admin-stats ${className}`}>\n <StatsBar\n stats={[\n { label: 'Total Deposits', value: stats.totalDeposits },\n { label: 'Private Deposits', value: stats.inPrivacyPeriodCount ?? 0 },\n { label: 'Standard Deposits', value: stats.readyForWithdrawalCount ?? 0 },\n { label: 'Microdeposits', value: stats.nativeSolDepositCount ?? 0 },\n ]}\n isLoading={isLoading}\n onRefresh={fetchStats}\n />\n </div>\n );\n}\n","/**\n * Admin deposit list component\n *\n * Shows a paginated list of all deposits across all users.\n * Requires system admin privileges.\n */\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport { useAdminDeposits } from '../../../hooks/useAdminDeposits';\nimport type { AdminDepositItem, AdminDepositListResponse } from '../../../types/deposit';\nimport { FeatureDisabledMessage } from './FeatureDisabledMessage';\nimport { isFeatureDisabledError } from './featureDisabled';\n\ntype DepositSortField = 'userId' | 'amountLamports' | 'status' | 'createdAt' | 'txSignature';\ntype SortOrder = 'asc' | 'desc';\n\nexport interface AdminDepositListProps {\n /** Filter by status (comma-separated) */\n statusFilter?: string;\n /** Number of items per page (default: 20) */\n pageSize?: number;\n /** Auto-refresh interval in milliseconds (0 to disable) */\n refreshInterval?: number;\n /** Additional CSS classes */\n className?: string;\n /** Callback when list is loaded */\n onLoad?: (response: AdminDepositListResponse) => void;\n /** Callback when a deposit is clicked */\n onDepositClick?: (deposit: AdminDepositItem) => void;\n}\n\ntype DepositStatusType =\n | 'pending'\n | 'detected'\n | 'processing'\n | 'completed'\n | 'withdrawn'\n | 'partially_withdrawn'\n | 'expired'\n | 'failed';\n\nfunction getStatusLabel(status: DepositStatusType): string {\n const labels: Record<DepositStatusType, string> = {\n pending: 'Pending',\n detected: 'Detected',\n processing: 'Processing',\n completed: 'Completed',\n withdrawn: 'Withdrawn',\n partially_withdrawn: 'Partially Withdrawn',\n expired: 'Expired',\n failed: 'Failed',\n };\n return labels[status] || status;\n}\n\nfunction getStatusClass(status: DepositStatusType): string {\n if (status === 'completed' || status === 'withdrawn' || status === 'partially_withdrawn') {\n return 'cedros-admin-deposit-success';\n }\n if (status === 'failed' || status === 'expired') return 'cedros-admin-deposit-error';\n if (status === 'processing' || status === 'detected') return 'cedros-admin-deposit-processing';\n return 'cedros-admin-deposit-pending';\n}\n\nfunction formatAmount(lamports: number | null): string {\n if (lamports === null || lamports === undefined) return '—';\n const solAmount = lamports / 1_000_000_000;\n return `${solAmount.toFixed(4)} SOL`;\n}\n\nfunction formatDate(dateString: string): string {\n const date = new Date(dateString);\n return date.toLocaleDateString(undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n });\n}\n\nfunction truncateId(id: string): string {\n if (id.length <= 12) return id;\n return `${id.slice(0, 6)}...${id.slice(-4)}`;\n}\n\n/**\n * Admin deposit list display\n *\n * Shows paginated list of all deposits with user info.\n */\nexport function AdminDepositList({\n statusFilter,\n pageSize = 20,\n refreshInterval = 0,\n className = '',\n onLoad,\n onDepositClick,\n}: AdminDepositListProps) {\n const { listDeposits, isLoading, error, clearError } = useAdminDeposits();\n\n const [deposits, setDeposits] = useState<AdminDepositItem[]>([]);\n const [total, setTotal] = useState(0);\n const [offset, setOffset] = useState(0);\n const [loadError, setLoadError] = useState<string | null>(null);\n const [sortField, setSortField] = useState<DepositSortField>('createdAt');\n const [sortOrder, setSortOrder] = useState<SortOrder>('desc');\n\n const toggleSort = (field: DepositSortField) => {\n if (sortField === field) {\n setSortOrder(sortOrder === 'asc' ? 'desc' : 'asc');\n } else {\n setSortField(field);\n setSortOrder('desc');\n }\n };\n\n const sortedDeposits = useMemo(() => {\n return [...deposits].sort((a, b) => {\n let aVal: string | number | null;\n let bVal: string | number | null;\n\n switch (sortField) {\n case 'userId':\n aVal = a.userId.toLowerCase();\n bVal = b.userId.toLowerCase();\n break;\n case 'amountLamports':\n aVal = a.amountLamports ?? 0;\n bVal = b.amountLamports ?? 0;\n break;\n case 'status':\n aVal = a.status;\n bVal = b.status;\n break;\n case 'createdAt':\n aVal = new Date(a.createdAt).getTime();\n bVal = new Date(b.createdAt).getTime();\n break;\n case 'txSignature':\n aVal = a.txSignature || '';\n bVal = b.txSignature || '';\n break;\n default:\n return 0;\n }\n\n if (aVal < bVal) return sortOrder === 'asc' ? -1 : 1;\n if (aVal > bVal) return sortOrder === 'asc' ? 1 : -1;\n return 0;\n });\n }, [deposits, sortField, sortOrder]);\n\n const fetchDeposits = useCallback(async () => {\n try {\n const result = await listDeposits({ status: statusFilter, limit: pageSize, offset });\n setDeposits(result.deposits);\n setTotal(result.total);\n onLoad?.(result);\n setLoadError(null);\n } catch (err) {\n const message =\n err && typeof err === 'object' && 'message' in err\n ? String((err as { message: unknown }).message)\n : 'Failed to load deposits';\n setLoadError(message);\n }\n }, [statusFilter, pageSize, offset, listDeposits, onLoad]);\n\n // Reset offset when filters change\n useEffect(() => {\n setOffset(0);\n }, [statusFilter, pageSize]);\n\n // Fetch on mount and when dependencies change\n useEffect(() => {\n fetchDeposits();\n }, [fetchDeposits]);\n\n // Auto-refresh\n useEffect(() => {\n if (refreshInterval <= 0) return;\n\n const interval = setInterval(fetchDeposits, refreshInterval);\n return () => clearInterval(interval);\n }, [refreshInterval, fetchDeposits]);\n\n const totalPages = Math.ceil(total / pageSize);\n const currentPage = Math.floor(offset / pageSize) + 1;\n\n const goToPage = (page: number) => {\n const newOffset = (page - 1) * pageSize;\n setOffset(Math.max(0, Math.min(newOffset, Math.max(0, total - 1))));\n };\n\n // Feature disabled state\n const errorMessage = loadError || error;\n if (isFeatureDisabledError(errorMessage)) {\n return <FeatureDisabledMessage feature=\"Privacy Cash\" className={className} />;\n }\n\n // Error state\n if (errorMessage) {\n return (\n <div className={`cedros-admin-deposit-list cedros-admin-deposit-list-error ${className}`}>\n <p className=\"cedros-admin-error\">{errorMessage}</p>\n <button\n type=\"button\"\n className=\"cedros-button cedros-button-outline\"\n onClick={() => {\n clearError();\n setLoadError(null);\n fetchDeposits();\n }}\n >\n Retry\n </button>\n </div>\n );\n }\n\n // Loading state (initial load only)\n if (isLoading && deposits.length === 0) {\n return (\n <div className={`cedros-admin-deposit-list cedros-admin-deposit-list-loading ${className}`}>\n <span className=\"cedros-admin-loading-indicator\" />\n <span className=\"cedros-admin-loading-text\">Loading deposits...</span>\n </div>\n );\n }\n\n return (\n <div className={`cedros-admin-deposit-list ${className}`}>\n <div className=\"cedros-admin-deposit-list-header\">\n <h4 className=\"cedros-admin-deposit-list-title\">All Deposits</h4>\n <button\n type=\"button\"\n className=\"cedros-admin__stats-bar-refresh\"\n onClick={fetchDeposits}\n disabled={isLoading}\n title=\"Refresh deposits\"\n aria-label=\"Refresh deposits\"\n >\n {isLoading ? '...' : '↻'}\n </button>\n </div>\n\n {deposits.length === 0 ? (\n <div className=\"cedros-admin-empty\">\n <p className=\"cedros-admin-empty-message\">No deposits found.</p>\n </div>\n ) : (\n <>\n <div className=\"cedros-admin-deposit-table\">\n <div className=\"cedros-admin-deposit-thead\">\n <div className=\"cedros-admin-deposit-th\">\n <button\n type=\"button\"\n className={`cedros-admin-sort-button ${sortField === 'userId' ? 'cedros-admin-sort-active' : ''}`}\n onClick={() => toggleSort('userId')}\n aria-label=\"Sort by user\"\n >\n User{' '}\n <span className=\"cedros-admin-sort-icon\">\n {sortField === 'userId' ? (sortOrder === 'asc' ? '↑' : '↓') : '↕'}\n </span>\n </button>\n </div>\n <div className=\"cedros-admin-deposit-th\">\n <button\n type=\"button\"\n className={`cedros-admin-sort-button ${sortField === 'amountLamports' ? 'cedros-admin-sort-active' : ''}`}\n onClick={() => toggleSort('amountLamports')}\n aria-label=\"Sort by amount\"\n >\n Amount{' '}\n <span className=\"cedros-admin-sort-icon\">\n {sortField === 'amountLamports' ? (sortOrder === 'asc' ? '↑' : '↓') : '↕'}\n </span>\n </button>\n </div>\n <div className=\"cedros-admin-deposit-th\">\n <button\n type=\"button\"\n className={`cedros-admin-sort-button ${sortField === 'status' ? 'cedros-admin-sort-active' : ''}`}\n onClick={() => toggleSort('status')}\n aria-label=\"Sort by status\"\n >\n Status{' '}\n <span className=\"cedros-admin-sort-icon\">\n {sortField === 'status' ? (sortOrder === 'asc' ? '↑' : '↓') : '↕'}\n </span>\n </button>\n </div>\n <div className=\"cedros-admin-deposit-th\">\n <button\n type=\"button\"\n className={`cedros-admin-sort-button ${sortField === 'createdAt' ? 'cedros-admin-sort-active' : ''}`}\n onClick={() => toggleSort('createdAt')}\n aria-label=\"Sort by created\"\n >\n Created{' '}\n <span className=\"cedros-admin-sort-icon\">\n {sortField === 'createdAt' ? (sortOrder === 'asc' ? '↑' : '↓') : '↕'}\n </span>\n </button>\n </div>\n <div className=\"cedros-admin-deposit-th\">\n <button\n type=\"button\"\n className={`cedros-admin-sort-button ${sortField === 'txSignature' ? 'cedros-admin-sort-active' : ''}`}\n onClick={() => toggleSort('txSignature')}\n aria-label=\"Sort by transaction\"\n >\n Tx{' '}\n <span className=\"cedros-admin-sort-icon\">\n {sortField === 'txSignature' ? (sortOrder === 'asc' ? '↑' : '↓') : '↕'}\n </span>\n </button>\n </div>\n </div>\n {sortedDeposits.map((deposit) => (\n <div\n key={deposit.id}\n className={`cedros-admin-deposit-row ${getStatusClass(deposit.status)}`}\n onClick={() => onDepositClick?.(deposit)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onDepositClick?.(deposit);\n }\n }}\n role={onDepositClick ? 'button' : undefined}\n tabIndex={onDepositClick ? 0 : undefined}\n >\n <div className=\"cedros-admin-deposit-td\" title={deposit.userId}>\n {truncateId(deposit.userId)}\n </div>\n <div className=\"cedros-admin-deposit-td\">\n {formatAmount(deposit.amountLamports)}\n </div>\n <div className=\"cedros-admin-deposit-td\">\n <span className=\"cedros-admin-status-badge\">\n {getStatusLabel(deposit.status)}\n </span>\n </div>\n <div className=\"cedros-admin-deposit-td\">{formatDate(deposit.createdAt)}</div>\n <div className=\"cedros-admin-deposit-td\" title={deposit.txSignature || undefined}>\n {deposit.txSignature ? truncateId(deposit.txSignature) : '—'}\n </div>\n </div>\n ))}\n </div>\n\n {totalPages > 1 && (\n <div className=\"cedros-admin-pagination\">\n <button\n type=\"button\"\n className=\"cedros-button cedros-button-outline cedros-button-sm\"\n onClick={() => goToPage(currentPage - 1)}\n disabled={currentPage <= 1}\n >\n Previous\n </button>\n <span className=\"cedros-admin-page-info\">\n Page {currentPage} of {totalPages} ({total} total)\n </span>\n <button\n type=\"button\"\n className=\"cedros-button cedros-button-outline cedros-button-sm\"\n onClick={() => goToPage(currentPage + 1)}\n disabled={currentPage >= totalPages}\n >\n Next\n </button>\n </div>\n )}\n </>\n )}\n </div>\n );\n}\n"],"names":["AdminDepositStats","refreshInterval","className","onLoad","getStats","isLoading","error","clearError","useAdminDeposits","stats","setStats","useState","loadError","setLoadError","fetchStats","useCallback","result","err","message","useEffect","interval","errorMessage","jsxs","jsx","StatsBar","getStatusLabel","status","getStatusClass","formatAmount","lamports","formatDate","dateString","truncateId","id","AdminDepositList","statusFilter","pageSize","onDepositClick","listDeposits","deposits","setDeposits","total","setTotal","offset","setOffset","sortField","setSortField","sortOrder","setSortOrder","toggleSort","field","sortedDeposits","useMemo","a","b","aVal","bVal","fetchDeposits","totalPages","currentPage","goToPage","page","newOffset","Fragment","deposit","e"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ "use strict";const e=require("react/jsx-runtime"),a=require("react"),I=require("./useAdminDeposits-Dvx3_UUE.cjs"),T=require("./StatsBar-DTUZCwDD.cjs");function O({refreshInterval:t=0,className:r="",onLoad:h}){const{getStats:x,isLoading:j,error:b,clearError:y}=I.useAdminDeposits(),[d,w]=a.useState(null),[D,l]=a.useState(null),u=a.useCallback(async()=>{try{const i=await x();w(i),h?.(i),l(null)}catch(i){const N=i&&typeof i=="object"&&"message"in i?String(i.message):"Failed to load stats";l(N)}},[x,h]);a.useEffect(()=>{u()},[u]),a.useEffect(()=>{if(t<=0)return;const i=setInterval(u,t);return()=>clearInterval(i)},[t,u]);const g=D||b;return g?e.jsxs("div",{className:`cedros-admin-stats cedros-admin-stats-error ${r}`,children:[e.jsx("p",{className:"cedros-admin-error",children:g}),e.jsx("button",{type:"button",className:"cedros-button cedros-button-outline",onClick:()=>{y(),l(null),u()},children:"Retry"})]}):j&&!d?e.jsxs("div",{className:`cedros-admin-stats cedros-admin-stats-loading ${r}`,children:[e.jsx("span",{className:"cedros-admin-loading-indicator"}),e.jsx("span",{className:"cedros-admin-loading-text",children:"Loading statistics..."})]}):d?e.jsx("div",{className:`cedros-admin-stats ${r}`,children:e.jsx(T.StatsBar,{stats:[{label:"Total Deposits",value:d.totalDeposits},{label:"Private Deposits",value:d.inPrivacyPeriodCount??0},{label:"Standard Deposits",value:d.readyForWithdrawalCount??0},{label:"Microdeposits",value:d.nativeSolDepositCount??0}],isLoading:j,onRefresh:u})}):null}function q(t){return{pending:"Pending",detected:"Detected",processing:"Processing",completed:"Completed",withdrawn:"Withdrawn",partially_withdrawn:"Partially Withdrawn",expired:"Expired",failed:"Failed"}[t]||t}function _(t){return t==="completed"||t==="withdrawn"||t==="partially_withdrawn"?"cedros-admin-deposit-success":t==="failed"||t==="expired"?"cedros-admin-deposit-error":t==="processing"||t==="detected"?"cedros-admin-deposit-processing":"cedros-admin-deposit-pending"}function W(t){return t==null?"—":`${(t/1e9).toFixed(4)} SOL`}function B(t){return new Date(t).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function P(t){return t.length<=12?t:`${t.slice(0,6)}...${t.slice(-4)}`}function V({statusFilter:t,pageSize:r=20,refreshInterval:h=0,className:x="",onLoad:j,onDepositClick:b}){const{listDeposits:y,isLoading:d,error:w,clearError:D}=I.useAdminDeposits(),[l,u]=a.useState([]),[g,i]=a.useState(0),[N,L]=a.useState(0),[M,A]=a.useState(null),[n,F]=a.useState("createdAt"),[c,k]=a.useState("desc"),v=s=>{n===s?k(c==="asc"?"desc":"asc"):(F(s),k("desc"))},R=a.useMemo(()=>[...l].sort((s,o)=>{let m,p;switch(n){case"userId":m=s.userId.toLowerCase(),p=o.userId.toLowerCase();break;case"amountLamports":m=s.amountLamports??0,p=o.amountLamports??0;break;case"status":m=s.status,p=o.status;break;case"createdAt":m=new Date(s.createdAt).getTime(),p=new Date(o.createdAt).getTime();break;case"txSignature":m=s.txSignature||"",p=o.txSignature||"";break;default:return 0}return m<p?c==="asc"?-1:1:m>p?c==="asc"?1:-1:0}),[l,n,c]),f=a.useCallback(async()=>{try{const s=await y({status:t,limit:r,offset:N});u(s.deposits),i(s.total),j?.(s),A(null)}catch(s){const o=s&&typeof s=="object"&&"message"in s?String(s.message):"Failed to load deposits";A(o)}},[t,r,N,y,j]);a.useEffect(()=>{L(0)},[t,r]),a.useEffect(()=>{f()},[f]),a.useEffect(()=>{if(h<=0)return;const s=setInterval(f,h);return()=>clearInterval(s)},[h,f]);const C=Math.ceil(g/r),S=Math.floor(N/r)+1,$=s=>{const o=(s-1)*r;L(Math.max(0,Math.min(o,Math.max(0,g-1))))},E=M||w;return E?e.jsxs("div",{className:`cedros-admin-deposit-list cedros-admin-deposit-list-error ${x}`,children:[e.jsx("p",{className:"cedros-admin-error",children:E}),e.jsx("button",{type:"button",className:"cedros-button cedros-button-outline",onClick:()=>{D(),A(null),f()},children:"Retry"})]}):d&&l.length===0?e.jsxs("div",{className:`cedros-admin-deposit-list cedros-admin-deposit-list-loading ${x}`,children:[e.jsx("span",{className:"cedros-admin-loading-indicator"}),e.jsx("span",{className:"cedros-admin-loading-text",children:"Loading deposits..."})]}):e.jsxs("div",{className:`cedros-admin-deposit-list ${x}`,children:[e.jsxs("div",{className:"cedros-admin-deposit-list-header",children:[e.jsx("h4",{className:"cedros-admin-deposit-list-title",children:"All Deposits"}),e.jsx("button",{type:"button",className:"cedros-admin__stats-bar-refresh",onClick:f,disabled:d,title:"Refresh deposits","aria-label":"Refresh deposits",children:d?"...":"↻"})]}),l.length===0?e.jsx("div",{className:"cedros-admin-empty",children:e.jsx("p",{className:"cedros-admin-empty-message",children:"No deposits found."})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"cedros-admin-deposit-table",children:[e.jsxs("div",{className:"cedros-admin-deposit-thead",children:[e.jsx("div",{className:"cedros-admin-deposit-th",children:e.jsxs("button",{type:"button",className:`cedros-admin-sort-button ${n==="userId"?"cedros-admin-sort-active":""}`,onClick:()=>v("userId"),"aria-label":"Sort by user",children:["User"," ",e.jsx("span",{className:"cedros-admin-sort-icon",children:n==="userId"?c==="asc"?"↑":"↓":"↕"})]})}),e.jsx("div",{className:"cedros-admin-deposit-th",children:e.jsxs("button",{type:"button",className:`cedros-admin-sort-button ${n==="amountLamports"?"cedros-admin-sort-active":""}`,onClick:()=>v("amountLamports"),"aria-label":"Sort by amount",children:["Amount"," ",e.jsx("span",{className:"cedros-admin-sort-icon",children:n==="amountLamports"?c==="asc"?"↑":"↓":"↕"})]})}),e.jsx("div",{className:"cedros-admin-deposit-th",children:e.jsxs("button",{type:"button",className:`cedros-admin-sort-button ${n==="status"?"cedros-admin-sort-active":""}`,onClick:()=>v("status"),"aria-label":"Sort by status",children:["Status"," ",e.jsx("span",{className:"cedros-admin-sort-icon",children:n==="status"?c==="asc"?"↑":"↓":"↕"})]})}),e.jsx("div",{className:"cedros-admin-deposit-th",children:e.jsxs("button",{type:"button",className:`cedros-admin-sort-button ${n==="createdAt"?"cedros-admin-sort-active":""}`,onClick:()=>v("createdAt"),"aria-label":"Sort by created",children:["Created"," ",e.jsx("span",{className:"cedros-admin-sort-icon",children:n==="createdAt"?c==="asc"?"↑":"↓":"↕"})]})}),e.jsx("div",{className:"cedros-admin-deposit-th",children:e.jsxs("button",{type:"button",className:`cedros-admin-sort-button ${n==="txSignature"?"cedros-admin-sort-active":""}`,onClick:()=>v("txSignature"),"aria-label":"Sort by transaction",children:["Tx"," ",e.jsx("span",{className:"cedros-admin-sort-icon",children:n==="txSignature"?c==="asc"?"↑":"↓":"↕"})]})})]}),R.map(s=>e.jsxs("div",{className:`cedros-admin-deposit-row ${_(s.status)}`,onClick:()=>b?.(s),onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),b?.(s))},role:b?"button":void 0,tabIndex:b?0:void 0,children:[e.jsx("div",{className:"cedros-admin-deposit-td",title:s.userId,children:P(s.userId)}),e.jsx("div",{className:"cedros-admin-deposit-td",children:W(s.amountLamports)}),e.jsx("div",{className:"cedros-admin-deposit-td",children:e.jsx("span",{className:"cedros-admin-status-badge",children:q(s.status)})}),e.jsx("div",{className:"cedros-admin-deposit-td",children:B(s.createdAt)}),e.jsx("div",{className:"cedros-admin-deposit-td",title:s.txSignature||void 0,children:s.txSignature?P(s.txSignature):"—"})]},s.id))]}),C>1&&e.jsxs("div",{className:"cedros-admin-pagination",children:[e.jsx("button",{type:"button",className:"cedros-button cedros-button-outline cedros-button-sm",onClick:()=>$(S-1),disabled:S<=1,children:"Previous"}),e.jsxs("span",{className:"cedros-admin-page-info",children:["Page ",S," of ",C," (",g," total)"]}),e.jsx("button",{type:"button",className:"cedros-button cedros-button-outline cedros-button-sm",onClick:()=>$(S+1),disabled:S>=C,children:"Next"})]})]})]})}exports.AdminDepositList=V;exports.AdminDepositStats=O;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminDepositList-UEcyRZkA.cjs","sources":["../src/components/deposit/admin/AdminDepositStats.tsx","../src/components/deposit/admin/AdminDepositList.tsx"],"sourcesContent":["/**\n * Admin deposit statistics component\n *\n * Shows aggregate statistics for Privacy Cash deposits.\n * Requires system admin privileges.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { useAdminDeposits } from '../../../hooks/useAdminDeposits';\nimport type { AdminDepositStatsResponse } from '../../../types/deposit';\nimport { FeatureDisabledMessage } from './FeatureDisabledMessage';\nimport { isFeatureDisabledError } from './featureDisabled';\nimport { StatsBar } from '../../admin/StatsBar';\n\nexport interface AdminDepositStatsProps {\n /** Auto-refresh interval in milliseconds (0 to disable) */\n refreshInterval?: number;\n /** Additional CSS classes */\n className?: string;\n /** Callback when stats are loaded */\n onLoad?: (stats: AdminDepositStatsResponse) => void;\n}\n\n/**\n * Admin deposit statistics display\n *\n * Shows total deposits, withdrawals, and pending amounts.\n */\nexport function AdminDepositStats({\n refreshInterval = 0,\n className = '',\n onLoad,\n}: AdminDepositStatsProps) {\n const { getStats, isLoading, error, clearError } = useAdminDeposits();\n\n const [stats, setStats] = useState<AdminDepositStatsResponse | null>(null);\n const [loadError, setLoadError] = useState<string | null>(null);\n\n const fetchStats = useCallback(async () => {\n try {\n const result = await getStats();\n setStats(result);\n onLoad?.(result);\n setLoadError(null);\n } catch (err) {\n const message =\n err && typeof err === 'object' && 'message' in err\n ? String((err as { message: unknown }).message)\n : 'Failed to load stats';\n setLoadError(message);\n }\n }, [getStats, onLoad]);\n\n // Fetch on mount\n useEffect(() => {\n fetchStats();\n }, [fetchStats]);\n\n // Auto-refresh\n useEffect(() => {\n if (refreshInterval <= 0) return;\n\n const interval = setInterval(fetchStats, refreshInterval);\n return () => clearInterval(interval);\n }, [refreshInterval, fetchStats]);\n\n // Feature disabled state\n const errorMessage = loadError || error;\n if (isFeatureDisabledError(errorMessage)) {\n return <FeatureDisabledMessage feature=\"Privacy Cash\" className={className} />;\n }\n\n // Error state\n if (errorMessage) {\n return (\n <div className={`cedros-admin-stats cedros-admin-stats-error ${className}`}>\n <p className=\"cedros-admin-error\">{errorMessage}</p>\n <button\n type=\"button\"\n className=\"cedros-button cedros-button-outline\"\n onClick={() => {\n clearError();\n setLoadError(null);\n fetchStats();\n }}\n >\n Retry\n </button>\n </div>\n );\n }\n\n // Loading state\n if (isLoading && !stats) {\n return (\n <div className={`cedros-admin-stats cedros-admin-stats-loading ${className}`}>\n <span className=\"cedros-admin-loading-indicator\" />\n <span className=\"cedros-admin-loading-text\">Loading statistics...</span>\n </div>\n );\n }\n\n if (!stats) {\n return null;\n }\n\n return (\n <div className={`cedros-admin-stats ${className}`}>\n <StatsBar\n stats={[\n { label: 'Total Deposits', value: stats.totalDeposits },\n { label: 'Private Deposits', value: stats.inPrivacyPeriodCount ?? 0 },\n { label: 'Standard Deposits', value: stats.readyForWithdrawalCount ?? 0 },\n { label: 'Microdeposits', value: stats.nativeSolDepositCount ?? 0 },\n ]}\n isLoading={isLoading}\n onRefresh={fetchStats}\n />\n </div>\n );\n}\n","/**\n * Admin deposit list component\n *\n * Shows a paginated list of all deposits across all users.\n * Requires system admin privileges.\n */\n\nimport { useState, useEffect, useCallback, useMemo } from 'react';\nimport { useAdminDeposits } from '../../../hooks/useAdminDeposits';\nimport type { AdminDepositItem, AdminDepositListResponse } from '../../../types/deposit';\nimport { FeatureDisabledMessage } from './FeatureDisabledMessage';\nimport { isFeatureDisabledError } from './featureDisabled';\n\ntype DepositSortField = 'userId' | 'amountLamports' | 'status' | 'createdAt' | 'txSignature';\ntype SortOrder = 'asc' | 'desc';\n\nexport interface AdminDepositListProps {\n /** Filter by status (comma-separated) */\n statusFilter?: string;\n /** Number of items per page (default: 20) */\n pageSize?: number;\n /** Auto-refresh interval in milliseconds (0 to disable) */\n refreshInterval?: number;\n /** Additional CSS classes */\n className?: string;\n /** Callback when list is loaded */\n onLoad?: (response: AdminDepositListResponse) => void;\n /** Callback when a deposit is clicked */\n onDepositClick?: (deposit: AdminDepositItem) => void;\n}\n\ntype DepositStatusType =\n | 'pending'\n | 'detected'\n | 'processing'\n | 'completed'\n | 'withdrawn'\n | 'partially_withdrawn'\n | 'expired'\n | 'failed';\n\nfunction getStatusLabel(status: DepositStatusType): string {\n const labels: Record<DepositStatusType, string> = {\n pending: 'Pending',\n detected: 'Detected',\n processing: 'Processing',\n completed: 'Completed',\n withdrawn: 'Withdrawn',\n partially_withdrawn: 'Partially Withdrawn',\n expired: 'Expired',\n failed: 'Failed',\n };\n return labels[status] || status;\n}\n\nfunction getStatusClass(status: DepositStatusType): string {\n if (status === 'completed' || status === 'withdrawn' || status === 'partially_withdrawn') {\n return 'cedros-admin-deposit-success';\n }\n if (status === 'failed' || status === 'expired') return 'cedros-admin-deposit-error';\n if (status === 'processing' || status === 'detected') return 'cedros-admin-deposit-processing';\n return 'cedros-admin-deposit-pending';\n}\n\nfunction formatAmount(lamports: number | null): string {\n if (lamports === null || lamports === undefined) return '—';\n const solAmount = lamports / 1_000_000_000;\n return `${solAmount.toFixed(4)} SOL`;\n}\n\nfunction formatDate(dateString: string): string {\n const date = new Date(dateString);\n return date.toLocaleDateString(undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n });\n}\n\nfunction truncateId(id: string): string {\n if (id.length <= 12) return id;\n return `${id.slice(0, 6)}...${id.slice(-4)}`;\n}\n\n/**\n * Admin deposit list display\n *\n * Shows paginated list of all deposits with user info.\n */\nexport function AdminDepositList({\n statusFilter,\n pageSize = 20,\n refreshInterval = 0,\n className = '',\n onLoad,\n onDepositClick,\n}: AdminDepositListProps) {\n const { listDeposits, isLoading, error, clearError } = useAdminDeposits();\n\n const [deposits, setDeposits] = useState<AdminDepositItem[]>([]);\n const [total, setTotal] = useState(0);\n const [offset, setOffset] = useState(0);\n const [loadError, setLoadError] = useState<string | null>(null);\n const [sortField, setSortField] = useState<DepositSortField>('createdAt');\n const [sortOrder, setSortOrder] = useState<SortOrder>('desc');\n\n const toggleSort = (field: DepositSortField) => {\n if (sortField === field) {\n setSortOrder(sortOrder === 'asc' ? 'desc' : 'asc');\n } else {\n setSortField(field);\n setSortOrder('desc');\n }\n };\n\n const sortedDeposits = useMemo(() => {\n return [...deposits].sort((a, b) => {\n let aVal: string | number | null;\n let bVal: string | number | null;\n\n switch (sortField) {\n case 'userId':\n aVal = a.userId.toLowerCase();\n bVal = b.userId.toLowerCase();\n break;\n case 'amountLamports':\n aVal = a.amountLamports ?? 0;\n bVal = b.amountLamports ?? 0;\n break;\n case 'status':\n aVal = a.status;\n bVal = b.status;\n break;\n case 'createdAt':\n aVal = new Date(a.createdAt).getTime();\n bVal = new Date(b.createdAt).getTime();\n break;\n case 'txSignature':\n aVal = a.txSignature || '';\n bVal = b.txSignature || '';\n break;\n default:\n return 0;\n }\n\n if (aVal < bVal) return sortOrder === 'asc' ? -1 : 1;\n if (aVal > bVal) return sortOrder === 'asc' ? 1 : -1;\n return 0;\n });\n }, [deposits, sortField, sortOrder]);\n\n const fetchDeposits = useCallback(async () => {\n try {\n const result = await listDeposits({ status: statusFilter, limit: pageSize, offset });\n setDeposits(result.deposits);\n setTotal(result.total);\n onLoad?.(result);\n setLoadError(null);\n } catch (err) {\n const message =\n err && typeof err === 'object' && 'message' in err\n ? String((err as { message: unknown }).message)\n : 'Failed to load deposits';\n setLoadError(message);\n }\n }, [statusFilter, pageSize, offset, listDeposits, onLoad]);\n\n // Reset offset when filters change\n useEffect(() => {\n setOffset(0);\n }, [statusFilter, pageSize]);\n\n // Fetch on mount and when dependencies change\n useEffect(() => {\n fetchDeposits();\n }, [fetchDeposits]);\n\n // Auto-refresh\n useEffect(() => {\n if (refreshInterval <= 0) return;\n\n const interval = setInterval(fetchDeposits, refreshInterval);\n return () => clearInterval(interval);\n }, [refreshInterval, fetchDeposits]);\n\n const totalPages = Math.ceil(total / pageSize);\n const currentPage = Math.floor(offset / pageSize) + 1;\n\n const goToPage = (page: number) => {\n const newOffset = (page - 1) * pageSize;\n setOffset(Math.max(0, Math.min(newOffset, Math.max(0, total - 1))));\n };\n\n // Feature disabled state\n const errorMessage = loadError || error;\n if (isFeatureDisabledError(errorMessage)) {\n return <FeatureDisabledMessage feature=\"Privacy Cash\" className={className} />;\n }\n\n // Error state\n if (errorMessage) {\n return (\n <div className={`cedros-admin-deposit-list cedros-admin-deposit-list-error ${className}`}>\n <p className=\"cedros-admin-error\">{errorMessage}</p>\n <button\n type=\"button\"\n className=\"cedros-button cedros-button-outline\"\n onClick={() => {\n clearError();\n setLoadError(null);\n fetchDeposits();\n }}\n >\n Retry\n </button>\n </div>\n );\n }\n\n // Loading state (initial load only)\n if (isLoading && deposits.length === 0) {\n return (\n <div className={`cedros-admin-deposit-list cedros-admin-deposit-list-loading ${className}`}>\n <span className=\"cedros-admin-loading-indicator\" />\n <span className=\"cedros-admin-loading-text\">Loading deposits...</span>\n </div>\n );\n }\n\n return (\n <div className={`cedros-admin-deposit-list ${className}`}>\n <div className=\"cedros-admin-deposit-list-header\">\n <h4 className=\"cedros-admin-deposit-list-title\">All Deposits</h4>\n <button\n type=\"button\"\n className=\"cedros-admin__stats-bar-refresh\"\n onClick={fetchDeposits}\n disabled={isLoading}\n title=\"Refresh deposits\"\n aria-label=\"Refresh deposits\"\n >\n {isLoading ? '...' : '↻'}\n </button>\n </div>\n\n {deposits.length === 0 ? (\n <div className=\"cedros-admin-empty\">\n <p className=\"cedros-admin-empty-message\">No deposits found.</p>\n </div>\n ) : (\n <>\n <div className=\"cedros-admin-deposit-table\">\n <div className=\"cedros-admin-deposit-thead\">\n <div className=\"cedros-admin-deposit-th\">\n <button\n type=\"button\"\n className={`cedros-admin-sort-button ${sortField === 'userId' ? 'cedros-admin-sort-active' : ''}`}\n onClick={() => toggleSort('userId')}\n aria-label=\"Sort by user\"\n >\n User{' '}\n <span className=\"cedros-admin-sort-icon\">\n {sortField === 'userId' ? (sortOrder === 'asc' ? '↑' : '↓') : '↕'}\n </span>\n </button>\n </div>\n <div className=\"cedros-admin-deposit-th\">\n <button\n type=\"button\"\n className={`cedros-admin-sort-button ${sortField === 'amountLamports' ? 'cedros-admin-sort-active' : ''}`}\n onClick={() => toggleSort('amountLamports')}\n aria-label=\"Sort by amount\"\n >\n Amount{' '}\n <span className=\"cedros-admin-sort-icon\">\n {sortField === 'amountLamports' ? (sortOrder === 'asc' ? '↑' : '↓') : '↕'}\n </span>\n </button>\n </div>\n <div className=\"cedros-admin-deposit-th\">\n <button\n type=\"button\"\n className={`cedros-admin-sort-button ${sortField === 'status' ? 'cedros-admin-sort-active' : ''}`}\n onClick={() => toggleSort('status')}\n aria-label=\"Sort by status\"\n >\n Status{' '}\n <span className=\"cedros-admin-sort-icon\">\n {sortField === 'status' ? (sortOrder === 'asc' ? '↑' : '↓') : '↕'}\n </span>\n </button>\n </div>\n <div className=\"cedros-admin-deposit-th\">\n <button\n type=\"button\"\n className={`cedros-admin-sort-button ${sortField === 'createdAt' ? 'cedros-admin-sort-active' : ''}`}\n onClick={() => toggleSort('createdAt')}\n aria-label=\"Sort by created\"\n >\n Created{' '}\n <span className=\"cedros-admin-sort-icon\">\n {sortField === 'createdAt' ? (sortOrder === 'asc' ? '↑' : '↓') : '↕'}\n </span>\n </button>\n </div>\n <div className=\"cedros-admin-deposit-th\">\n <button\n type=\"button\"\n className={`cedros-admin-sort-button ${sortField === 'txSignature' ? 'cedros-admin-sort-active' : ''}`}\n onClick={() => toggleSort('txSignature')}\n aria-label=\"Sort by transaction\"\n >\n Tx{' '}\n <span className=\"cedros-admin-sort-icon\">\n {sortField === 'txSignature' ? (sortOrder === 'asc' ? '↑' : '↓') : '↕'}\n </span>\n </button>\n </div>\n </div>\n {sortedDeposits.map((deposit) => (\n <div\n key={deposit.id}\n className={`cedros-admin-deposit-row ${getStatusClass(deposit.status)}`}\n onClick={() => onDepositClick?.(deposit)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onDepositClick?.(deposit);\n }\n }}\n role={onDepositClick ? 'button' : undefined}\n tabIndex={onDepositClick ? 0 : undefined}\n >\n <div className=\"cedros-admin-deposit-td\" title={deposit.userId}>\n {truncateId(deposit.userId)}\n </div>\n <div className=\"cedros-admin-deposit-td\">\n {formatAmount(deposit.amountLamports)}\n </div>\n <div className=\"cedros-admin-deposit-td\">\n <span className=\"cedros-admin-status-badge\">\n {getStatusLabel(deposit.status)}\n </span>\n </div>\n <div className=\"cedros-admin-deposit-td\">{formatDate(deposit.createdAt)}</div>\n <div className=\"cedros-admin-deposit-td\" title={deposit.txSignature || undefined}>\n {deposit.txSignature ? truncateId(deposit.txSignature) : '—'}\n </div>\n </div>\n ))}\n </div>\n\n {totalPages > 1 && (\n <div className=\"cedros-admin-pagination\">\n <button\n type=\"button\"\n className=\"cedros-button cedros-button-outline cedros-button-sm\"\n onClick={() => goToPage(currentPage - 1)}\n disabled={currentPage <= 1}\n >\n Previous\n </button>\n <span className=\"cedros-admin-page-info\">\n Page {currentPage} of {totalPages} ({total} total)\n </span>\n <button\n type=\"button\"\n className=\"cedros-button cedros-button-outline cedros-button-sm\"\n onClick={() => goToPage(currentPage + 1)}\n disabled={currentPage >= totalPages}\n >\n Next\n </button>\n </div>\n )}\n </>\n )}\n </div>\n );\n}\n"],"names":["AdminDepositStats","refreshInterval","className","onLoad","getStats","isLoading","error","clearError","useAdminDeposits","stats","setStats","useState","loadError","setLoadError","fetchStats","useCallback","result","err","message","useEffect","interval","errorMessage","jsxs","jsx","StatsBar","getStatusLabel","status","getStatusClass","formatAmount","lamports","formatDate","dateString","truncateId","id","AdminDepositList","statusFilter","pageSize","onDepositClick","listDeposits","deposits","setDeposits","total","setTotal","offset","setOffset","sortField","setSortField","sortOrder","setSortOrder","toggleSort","field","sortedDeposits","useMemo","a","b","aVal","bVal","fetchDeposits","totalPages","currentPage","goToPage","page","newOffset","Fragment","deposit","e"],"mappings":"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"}