@digitaldefiance/express-suite-react-components 2.9.7 → 2.9.11

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 (257) hide show
  1. package/package.json +6 -5
  2. package/src/auth/Private.d.ts +6 -0
  3. package/src/auth/Private.d.ts.map +1 -0
  4. package/src/auth/Private.js +14 -0
  5. package/src/auth/PrivateRoute.d.ts +8 -0
  6. package/src/auth/PrivateRoute.d.ts.map +1 -0
  7. package/src/auth/PrivateRoute.js +23 -0
  8. package/src/auth/UnAuth.d.ts +6 -0
  9. package/src/auth/UnAuth.d.ts.map +1 -0
  10. package/src/auth/UnAuth.js +14 -0
  11. package/src/auth/UnAuthRoute.d.ts +8 -0
  12. package/src/auth/UnAuthRoute.d.ts.map +1 -0
  13. package/src/auth/UnAuthRoute.js +22 -0
  14. package/src/auth/{index.ts → index.d.ts} +2 -1
  15. package/src/auth/index.d.ts.map +1 -0
  16. package/src/auth/index.js +10 -0
  17. package/src/components/ApiAccess.d.ts +16 -0
  18. package/src/components/ApiAccess.d.ts.map +1 -0
  19. package/src/components/ApiAccess.js +70 -0
  20. package/src/components/BackupCodeLoginForm.d.ts +43 -0
  21. package/src/components/BackupCodeLoginForm.d.ts.map +1 -0
  22. package/src/components/BackupCodeLoginForm.js +106 -0
  23. package/src/components/BackupCodesForm.d.ts +26 -0
  24. package/src/components/BackupCodesForm.d.ts.map +1 -0
  25. package/src/components/BackupCodesForm.js +108 -0
  26. package/src/components/ChangePasswordForm.d.ts +26 -0
  27. package/src/components/ChangePasswordForm.d.ts.map +1 -0
  28. package/src/components/ChangePasswordForm.js +66 -0
  29. package/src/components/ConfirmationDialog.d.ts +13 -0
  30. package/src/components/ConfirmationDialog.d.ts.map +1 -0
  31. package/src/components/ConfirmationDialog.js +10 -0
  32. package/src/components/CurrencyCodeSelector.d.ts +9 -0
  33. package/src/components/CurrencyCodeSelector.d.ts.map +1 -0
  34. package/src/components/CurrencyCodeSelector.js +31 -0
  35. package/src/components/CurrencyInput.d.ts +13 -0
  36. package/src/components/CurrencyInput.d.ts.map +1 -0
  37. package/src/components/CurrencyInput.js +22 -0
  38. package/src/components/DashboardPage.d.ts +8 -0
  39. package/src/components/DashboardPage.d.ts.map +1 -0
  40. package/src/components/DashboardPage.js +10 -0
  41. package/src/components/DropdownMenu.d.ts +9 -0
  42. package/src/components/DropdownMenu.d.ts.map +1 -0
  43. package/src/components/DropdownMenu.js +56 -0
  44. package/src/components/ExpirationSecondsSelector.d.ts +13 -0
  45. package/src/components/ExpirationSecondsSelector.d.ts.map +1 -0
  46. package/src/components/ExpirationSecondsSelector.js +32 -0
  47. package/src/components/Flag.d.ts +20 -0
  48. package/src/components/Flag.d.ts.map +1 -0
  49. package/src/components/Flag.js +43 -0
  50. package/src/components/ForgotPasswordForm.d.ts +18 -0
  51. package/src/components/ForgotPasswordForm.d.ts.map +1 -0
  52. package/src/components/ForgotPasswordForm.js +54 -0
  53. package/src/components/LoginForm.d.ts +44 -0
  54. package/src/components/LoginForm.d.ts.map +1 -0
  55. package/src/components/LoginForm.js +99 -0
  56. package/src/components/LogoutPage.d.ts +8 -0
  57. package/src/components/LogoutPage.d.ts.map +1 -0
  58. package/src/components/LogoutPage.js +16 -0
  59. package/src/components/RegisterForm.d.ts +54 -0
  60. package/src/components/RegisterForm.d.ts.map +1 -0
  61. package/src/components/RegisterForm.js +105 -0
  62. package/src/components/ResetPasswordForm.d.ts +23 -0
  63. package/src/components/ResetPasswordForm.d.ts.map +1 -0
  64. package/src/components/ResetPasswordForm.js +68 -0
  65. package/src/components/SideMenu.d.ts +8 -0
  66. package/src/components/SideMenu.d.ts.map +1 -0
  67. package/src/components/SideMenu.js +25 -0
  68. package/src/components/SideMenuListItem.d.ts +13 -0
  69. package/src/components/SideMenuListItem.d.ts.map +1 -0
  70. package/src/components/SideMenuListItem.js +44 -0
  71. package/src/components/TopMenu.d.ts +24 -0
  72. package/src/components/TopMenu.d.ts.map +1 -0
  73. package/src/components/TopMenu.js +42 -0
  74. package/src/components/TranslatedTitle.d.ts +7 -0
  75. package/src/components/TranslatedTitle.d.ts.map +1 -0
  76. package/src/components/TranslatedTitle.js +15 -0
  77. package/src/components/UserLanguageSelector.d.ts +4 -0
  78. package/src/components/UserLanguageSelector.d.ts.map +1 -0
  79. package/src/components/UserLanguageSelector.js +31 -0
  80. package/src/components/UserMenu.d.ts +4 -0
  81. package/src/components/UserMenu.d.ts.map +1 -0
  82. package/src/components/UserMenu.js +12 -0
  83. package/src/components/UserSettingsForm.d.ts +56 -0
  84. package/src/components/UserSettingsForm.d.ts.map +1 -0
  85. package/src/components/UserSettingsForm.js +93 -0
  86. package/src/components/VerifyEmailPage.d.ts +23 -0
  87. package/src/components/VerifyEmailPage.d.ts.map +1 -0
  88. package/src/components/VerifyEmailPage.js +61 -0
  89. package/src/components/{index.ts → index.d.ts} +1 -1
  90. package/src/components/index.d.ts.map +1 -0
  91. package/src/components/index.js +28 -0
  92. package/src/contexts/AuthProvider.d.ts +152 -0
  93. package/src/contexts/AuthProvider.d.ts.map +1 -0
  94. package/src/contexts/AuthProvider.js +446 -0
  95. package/src/contexts/I18nProvider.d.ts +16 -0
  96. package/src/contexts/I18nProvider.d.ts.map +1 -0
  97. package/src/contexts/I18nProvider.js +46 -0
  98. package/src/contexts/MenuContext.d.ts +20 -0
  99. package/src/contexts/MenuContext.d.ts.map +1 -0
  100. package/src/contexts/MenuContext.js +244 -0
  101. package/src/contexts/SuiteConfigProvider.d.ts +44 -0
  102. package/src/contexts/SuiteConfigProvider.d.ts.map +1 -0
  103. package/src/contexts/SuiteConfigProvider.js +43 -0
  104. package/src/contexts/ThemeProvider.d.ts +15 -0
  105. package/src/contexts/ThemeProvider.d.ts.map +1 -0
  106. package/src/contexts/ThemeProvider.js +36 -0
  107. package/src/contexts/{index.ts → index.d.ts} +1 -0
  108. package/src/contexts/index.d.ts.map +1 -0
  109. package/src/contexts/index.js +8 -0
  110. package/src/hooks/{index.ts → index.d.ts} +1 -0
  111. package/src/hooks/index.d.ts.map +1 -0
  112. package/src/hooks/index.js +8 -0
  113. package/src/hooks/useBackupCodes.d.ts +15 -0
  114. package/src/hooks/useBackupCodes.d.ts.map +1 -0
  115. package/src/hooks/useBackupCodes.js +70 -0
  116. package/src/hooks/useEmailVerification.d.ts +10 -0
  117. package/src/hooks/useEmailVerification.d.ts.map +1 -0
  118. package/src/hooks/useEmailVerification.js +36 -0
  119. package/src/hooks/useExpiringValue.d.ts +14 -0
  120. package/src/hooks/useExpiringValue.d.ts.map +1 -0
  121. package/src/hooks/useExpiringValue.js +53 -0
  122. package/src/hooks/useLocalStorage.d.ts +2 -0
  123. package/src/hooks/useLocalStorage.d.ts.map +1 -0
  124. package/src/hooks/useLocalStorage.js +15 -0
  125. package/src/hooks/useUserSettings.d.ts +46 -0
  126. package/src/hooks/useUserSettings.d.ts.map +1 -0
  127. package/src/hooks/useUserSettings.js +152 -0
  128. package/src/{index.ts → index.d.ts} +1 -1
  129. package/src/index.d.ts.map +1 -0
  130. package/src/index.js +12 -0
  131. package/src/interfaces/IAppConfig.d.ts +6 -0
  132. package/src/interfaces/IAppConfig.d.ts.map +1 -0
  133. package/src/interfaces/IAppConfig.js +2 -0
  134. package/src/interfaces/IMenuConfig.d.ts +11 -0
  135. package/src/interfaces/IMenuConfig.d.ts.map +1 -0
  136. package/src/interfaces/IMenuConfig.js +2 -0
  137. package/src/interfaces/IMenuOption.d.ts +58 -0
  138. package/src/interfaces/IMenuOption.d.ts.map +1 -0
  139. package/src/interfaces/IMenuOption.js +2 -0
  140. package/src/interfaces/index.d.ts +4 -0
  141. package/src/interfaces/index.d.ts.map +1 -0
  142. package/src/interfaces/index.js +6 -0
  143. package/src/services/__mocks__/authService.d.ts +21 -0
  144. package/src/services/__mocks__/authService.d.ts.map +1 -0
  145. package/src/services/__mocks__/authService.js +15 -0
  146. package/src/services/api.d.ts +3 -0
  147. package/src/services/api.d.ts.map +1 -0
  148. package/src/services/api.js +14 -0
  149. package/src/services/authService.d.ts +72 -0
  150. package/src/services/authService.d.ts.map +1 -0
  151. package/src/services/authService.js +353 -0
  152. package/src/services/authenticatedApi.d.ts +3 -0
  153. package/src/services/authenticatedApi.d.ts.map +1 -0
  154. package/src/services/authenticatedApi.js +18 -0
  155. package/src/services/index.d.ts +4 -0
  156. package/src/services/index.d.ts.map +1 -0
  157. package/src/services/index.js +6 -0
  158. package/src/types/MenuType.d.ts +11 -0
  159. package/src/types/MenuType.d.ts.map +1 -0
  160. package/src/types/MenuType.js +12 -0
  161. package/src/types/expirationSeconds.d.ts +3 -0
  162. package/src/types/expirationSeconds.d.ts.map +1 -0
  163. package/src/types/expirationSeconds.js +17 -0
  164. package/src/types/index.d.ts +2 -0
  165. package/src/types/index.d.ts.map +1 -0
  166. package/src/types/index.js +4 -0
  167. package/src/types/translation.d.ts +10 -0
  168. package/src/types/translation.d.ts.map +1 -0
  169. package/src/types/translation.js +9 -0
  170. package/src/wrappers/BackupCodeLoginWrapper.d.ts +8 -0
  171. package/src/wrappers/BackupCodeLoginWrapper.d.ts.map +1 -0
  172. package/src/wrappers/BackupCodeLoginWrapper.js +21 -0
  173. package/src/wrappers/BackupCodesWrapper.d.ts +7 -0
  174. package/src/wrappers/BackupCodesWrapper.d.ts.map +1 -0
  175. package/src/wrappers/BackupCodesWrapper.js +17 -0
  176. package/src/wrappers/ChangePasswordFormWrapper.d.ts +8 -0
  177. package/src/wrappers/ChangePasswordFormWrapper.d.ts.map +1 -0
  178. package/src/wrappers/ChangePasswordFormWrapper.js +21 -0
  179. package/src/wrappers/LoginFormWrapper.d.ts +9 -0
  180. package/src/wrappers/LoginFormWrapper.d.ts.map +1 -0
  181. package/src/wrappers/LoginFormWrapper.js +43 -0
  182. package/src/wrappers/LogoutPageWrapper.d.ts +9 -0
  183. package/src/wrappers/LogoutPageWrapper.d.ts.map +1 -0
  184. package/src/wrappers/LogoutPageWrapper.js +21 -0
  185. package/src/wrappers/RegisterFormWrapper.d.ts +9 -0
  186. package/src/wrappers/RegisterFormWrapper.d.ts.map +1 -0
  187. package/src/wrappers/RegisterFormWrapper.js +26 -0
  188. package/src/wrappers/UserSettingsFormWrapper.d.ts +8 -0
  189. package/src/wrappers/UserSettingsFormWrapper.d.ts.map +1 -0
  190. package/src/wrappers/UserSettingsFormWrapper.js +24 -0
  191. package/src/wrappers/VerifyEmailPageWrapper.d.ts +8 -0
  192. package/src/wrappers/VerifyEmailPageWrapper.d.ts.map +1 -0
  193. package/src/wrappers/VerifyEmailPageWrapper.js +20 -0
  194. package/src/wrappers/{index.tsx → index.d.ts} +1 -8
  195. package/src/wrappers/index.d.ts.map +1 -0
  196. package/src/wrappers/index.js +20 -0
  197. package/LICENSE +0 -21
  198. package/src/auth/Private.tsx +0 -17
  199. package/src/auth/PrivateRoute.tsx +0 -28
  200. package/src/auth/UnAuth.tsx +0 -16
  201. package/src/auth/UnAuthRoute.tsx +0 -30
  202. package/src/components/ApiAccess.tsx +0 -134
  203. package/src/components/BackupCodeLoginForm.tsx +0 -314
  204. package/src/components/BackupCodesForm.tsx +0 -198
  205. package/src/components/ChangePasswordForm.tsx +0 -182
  206. package/src/components/ConfirmationDialog.tsx +0 -48
  207. package/src/components/CurrencyCodeSelector.tsx +0 -60
  208. package/src/components/CurrencyInput.tsx +0 -80
  209. package/src/components/DashboardPage.tsx +0 -24
  210. package/src/components/DropdownMenu.tsx +0 -92
  211. package/src/components/ExpirationSecondsSelector.tsx +0 -65
  212. package/src/components/Flag.tsx +0 -53
  213. package/src/components/ForgotPasswordForm.tsx +0 -120
  214. package/src/components/LoginForm.tsx +0 -307
  215. package/src/components/LogoutPage.tsx +0 -21
  216. package/src/components/RegisterForm.tsx +0 -354
  217. package/src/components/ResetPasswordForm.tsx +0 -164
  218. package/src/components/SideMenu.tsx +0 -46
  219. package/src/components/SideMenuListItem.tsx +0 -74
  220. package/src/components/TopMenu.tsx +0 -149
  221. package/src/components/TranslatedTitle.tsx +0 -22
  222. package/src/components/UserLanguageSelector.tsx +0 -45
  223. package/src/components/UserMenu.tsx +0 -15
  224. package/src/components/UserSettingsForm.tsx +0 -328
  225. package/src/components/VerifyEmailPage.tsx +0 -133
  226. package/src/contexts/AuthProvider.spec.tsx +0 -1060
  227. package/src/contexts/AuthProvider.tsx +0 -741
  228. package/src/contexts/I18nProvider.tsx +0 -85
  229. package/src/contexts/MenuContext.tsx +0 -310
  230. package/src/contexts/SuiteConfigProvider.tsx +0 -93
  231. package/src/contexts/ThemeProvider.tsx +0 -67
  232. package/src/hooks/useBackupCodes.ts +0 -85
  233. package/src/hooks/useEmailVerification.ts +0 -39
  234. package/src/hooks/useExpiringValue.ts +0 -78
  235. package/src/hooks/useLocalStorage.ts +0 -18
  236. package/src/hooks/useUserSettings.ts +0 -216
  237. package/src/interfaces/IAppConfig.ts +0 -5
  238. package/src/interfaces/IMenuConfig.ts +0 -11
  239. package/src/interfaces/IMenuOption.ts +0 -55
  240. package/src/interfaces/index.ts +0 -3
  241. package/src/services/__mocks__/authService.ts +0 -14
  242. package/src/services/api.ts +0 -13
  243. package/src/services/authService.ts +0 -422
  244. package/src/services/authenticatedApi.ts +0 -17
  245. package/src/services/index.ts +0 -3
  246. package/src/types/MenuType.ts +0 -15
  247. package/src/types/expirationSeconds.ts +0 -18
  248. package/src/types/index.ts +0 -1
  249. package/src/types/translation.ts +0 -20
  250. package/src/wrappers/BackupCodeLoginWrapper.tsx +0 -35
  251. package/src/wrappers/BackupCodesWrapper.tsx +0 -28
  252. package/src/wrappers/ChangePasswordFormWrapper.tsx +0 -31
  253. package/src/wrappers/LoginFormWrapper.tsx +0 -59
  254. package/src/wrappers/LogoutPageWrapper.tsx +0 -30
  255. package/src/wrappers/RegisterFormWrapper.tsx +0 -48
  256. package/src/wrappers/UserSettingsFormWrapper.tsx +0 -39
  257. package/src/wrappers/VerifyEmailPageWrapper.tsx +0 -27
@@ -0,0 +1,353 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAuthService = exports.AuthService = void 0;
4
+ // services/authService.js
5
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
6
+ const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
7
+ const axios_1 = require("axios");
8
+ const api_1 = require("./api");
9
+ const authenticatedApi_1 = require("./authenticatedApi");
10
+ class AuthService {
11
+ constants;
12
+ baseUrl;
13
+ eciesService;
14
+ cryptoCore;
15
+ apiClient;
16
+ authenticatedApiClient;
17
+ constructor(constants, baseUrl, eciesConfig) {
18
+ this.constants = constants;
19
+ this.baseUrl = baseUrl;
20
+ this.eciesService = new ecies_lib_1.ECIESService(eciesConfig);
21
+ this.cryptoCore = new ecies_lib_1.EciesCryptoCore(eciesConfig);
22
+ this.apiClient = (0, api_1.createApiClient)(this.baseUrl);
23
+ this.authenticatedApiClient = (0, authenticatedApi_1.createAuthenticatedApiClient)(this.baseUrl);
24
+ }
25
+ getSiteDomain() {
26
+ return this.constants.AdministratorEmail.split('@')[1];
27
+ }
28
+ async register(username, email, timezone, password) {
29
+ try {
30
+ const response = await this.apiClient.post('/user/register', {
31
+ username,
32
+ email,
33
+ timezone,
34
+ ...(password ? { password } : {}),
35
+ });
36
+ if (response.status !== 201) {
37
+ return {
38
+ error: response.data.message
39
+ ? response.data.message
40
+ : (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Registration_Error),
41
+ ...(response.data.errorType
42
+ ? { errorType: response.data.errorType }
43
+ : {}),
44
+ ...(response.data.errors ? { errors: response.data.errors } : {}),
45
+ };
46
+ }
47
+ return {
48
+ success: true,
49
+ message: response.data.message ??
50
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Registration_Success, {
51
+ MNEMONIC: response.data.mnemonic,
52
+ }),
53
+ mnemonic: response.data.mnemonic,
54
+ };
55
+ }
56
+ catch (error) {
57
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
58
+ return {
59
+ error: error.response.data.error?.message ??
60
+ error.response.data.message ??
61
+ error.message ??
62
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
63
+ ...(error.response.data.errorType
64
+ ? { errorType: error.response.data.errorType }
65
+ : {}),
66
+ ...(error.response.data.error?.field
67
+ ? { field: error.response.data.error.field }
68
+ : {}),
69
+ ...(error.response.data.errors
70
+ ? { errors: error.response.data.errors }
71
+ : {}),
72
+ };
73
+ }
74
+ else {
75
+ return {
76
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
77
+ };
78
+ }
79
+ }
80
+ }
81
+ async directLogin(mnemonic, username, email) {
82
+ if (!username && !email) {
83
+ return {
84
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UsernameOrEmailRequired),
85
+ };
86
+ }
87
+ try {
88
+ const loginRequest = await this.apiClient.post('/user/request-direct-login');
89
+ if (loginRequest.data.challenge) {
90
+ const { wallet } = this.cryptoCore.walletAndSeedFromMnemonic(mnemonic);
91
+ const privateKey = wallet.getPrivateKey();
92
+ // Get compressed public key (already includes prefix)
93
+ const publicKeyWithPrefix = this.cryptoCore.getPublicKey(privateKey);
94
+ const challengeBuffer = (0, ecies_lib_1.hexToUint8Array)(loginRequest.data.challenge);
95
+ const privateKeyBuffer = wallet.getPrivateKey();
96
+ const signature = this.eciesService.signMessage(privateKeyBuffer, challengeBuffer);
97
+ const signatureHex = (0, ecies_lib_1.uint8ArrayToHex)(signature);
98
+ const loginResponse = await this.apiClient.post('/user/direct-challenge', {
99
+ username: username,
100
+ email: email ? email.email : undefined,
101
+ challenge: loginRequest.data.challenge,
102
+ signature: signatureHex,
103
+ });
104
+ if (loginResponse.data.token && loginResponse.data.user) {
105
+ return {
106
+ message: loginResponse.data.message,
107
+ token: loginResponse.data.token,
108
+ user: loginResponse.data.user,
109
+ wallet,
110
+ };
111
+ }
112
+ }
113
+ }
114
+ catch (error) {
115
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
116
+ // Check for DirectChallengeNotEnabled error
117
+ if (error.response.status === 403 &&
118
+ error.response.data.errorType === 'DirectChallengeNotEnabledError') {
119
+ return {
120
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Error_Login_DirectChallengeNotEnabled),
121
+ errorType: 'DirectChallengeNotEnabled',
122
+ };
123
+ }
124
+ // Check for PasswordLoginNotEnabled error
125
+ if (error.response.status === 403 &&
126
+ error.response.data.errorType === 'PasswordLoginNotEnabledError') {
127
+ return {
128
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Error_Login_PasswordLoginNotEnabled),
129
+ errorType: 'PasswordLoginNotEnabled',
130
+ };
131
+ }
132
+ return {
133
+ error: error.response.data.error?.message ??
134
+ error.response.data.message ??
135
+ error.message ??
136
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
137
+ ...(error.response.data.errorType
138
+ ? { errorType: error.response.data.errorType }
139
+ : {}),
140
+ };
141
+ }
142
+ console.error('directLogin: non-axios error:', error);
143
+ }
144
+ return {
145
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
146
+ };
147
+ }
148
+ async requestEmailLogin(username, email) {
149
+ if (!username && !email) {
150
+ return {
151
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UsernameOrEmailRequired),
152
+ };
153
+ }
154
+ try {
155
+ const result = await this.apiClient.post('/user/request-email-login', {
156
+ email: email ? email.email : undefined,
157
+ username,
158
+ });
159
+ if (result.data.message) {
160
+ return result.data.message;
161
+ }
162
+ }
163
+ catch (error) {
164
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
165
+ return {
166
+ error: error.response.data.error?.message ??
167
+ error.response.data.message ??
168
+ error.message ??
169
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
170
+ ...(error.response.data.errorType
171
+ ? { errorType: error.response.data.errorType }
172
+ : {}),
173
+ };
174
+ }
175
+ }
176
+ return {
177
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
178
+ };
179
+ }
180
+ async emailChallengeLogin(mnemonic, token, username, email) {
181
+ if (!username && !email) {
182
+ return {
183
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UsernameOrEmailRequired),
184
+ };
185
+ }
186
+ try {
187
+ const { wallet } = this.cryptoCore.walletAndSeedFromMnemonic(mnemonic);
188
+ const challengeBuffer = (0, ecies_lib_1.hexToUint8Array)(token);
189
+ const privateKeyBuffer = wallet.getPrivateKey();
190
+ const signature = this.eciesService.signMessage(privateKeyBuffer, challengeBuffer);
191
+ const signatureHex = (0, ecies_lib_1.uint8ArrayToHex)(signature);
192
+ const response = await this.apiClient.post('/user/email-login', {
193
+ token,
194
+ signature: signatureHex,
195
+ username: username ?? null,
196
+ email: email ?? null,
197
+ });
198
+ if (response.data.token && response.data.user) {
199
+ return {
200
+ message: response.data.message,
201
+ token: response.data.token,
202
+ user: response.data.user,
203
+ wallet,
204
+ };
205
+ }
206
+ }
207
+ catch (error) {
208
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
209
+ return {
210
+ error: error.response.data.error?.message ??
211
+ error.response.data.message ??
212
+ error.message ??
213
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
214
+ ...(error.response.data.errorType
215
+ ? { errorType: error.response.data.errorType }
216
+ : {}),
217
+ };
218
+ }
219
+ }
220
+ return {
221
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
222
+ };
223
+ }
224
+ async verifyToken(token) {
225
+ try {
226
+ const response = await this.apiClient.get('/user/verify', {
227
+ headers: { Authorization: `Bearer ${token}` },
228
+ });
229
+ return response.data.user;
230
+ }
231
+ catch (error) {
232
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
233
+ return {
234
+ error: error.response.data.message
235
+ ? error.response.data.message
236
+ : error.message
237
+ ? error.message
238
+ : (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
239
+ ...(error.response.data.errorType
240
+ ? { errorType: error.response.data.errorType }
241
+ : {}),
242
+ };
243
+ }
244
+ else {
245
+ return {
246
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
247
+ };
248
+ }
249
+ }
250
+ }
251
+ async refreshToken() {
252
+ try {
253
+ const refreshResponse = await this.authenticatedApiClient.get('/user/refresh-token');
254
+ if (refreshResponse.status === 200) {
255
+ const newToken = refreshResponse.headers['authorization'];
256
+ let token = undefined;
257
+ let user = undefined;
258
+ if (newToken?.startsWith('Bearer ')) {
259
+ token = newToken.slice(7);
260
+ }
261
+ if (refreshResponse.data.user) {
262
+ user = refreshResponse.data.user;
263
+ }
264
+ if (token && user) {
265
+ return { token, user };
266
+ }
267
+ }
268
+ }
269
+ catch (error) {
270
+ console.error('Token refresh error:', error);
271
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
272
+ console.error('Error response:', error.response.data);
273
+ console.error('Error status:', error.response.status);
274
+ }
275
+ }
276
+ throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError);
277
+ }
278
+ async changePassword(currentPassword, newPassword) {
279
+ try {
280
+ await this.authenticatedApiClient.post('/user/change-password', {
281
+ currentPassword,
282
+ newPassword,
283
+ });
284
+ return { success: true };
285
+ }
286
+ catch (error) {
287
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
288
+ return {
289
+ error: error.response.data.error?.message ??
290
+ error.response.data.message ??
291
+ error.message ??
292
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
293
+ ...(error.response.data.errorType
294
+ ? { errorType: error.response.data.errorType }
295
+ : {}),
296
+ };
297
+ }
298
+ return {
299
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
300
+ };
301
+ }
302
+ }
303
+ async backupCodeLogin(identifier, code, isEmail, recoverMnemonic, newPassword) {
304
+ try {
305
+ const response = await this.apiClient.post('/user/backup-code', {
306
+ [isEmail ? 'email' : 'username']: identifier,
307
+ code,
308
+ recoverMnemonic,
309
+ ...(newPassword ? { newPassword } : {}),
310
+ });
311
+ if (response.data.token && response.data.user) {
312
+ return {
313
+ token: response.data.token,
314
+ user: response.data.user,
315
+ codeCount: response.data.codeCount ?? 0,
316
+ ...(response.data.mnemonic
317
+ ? { mnemonic: response.data.mnemonic }
318
+ : {}),
319
+ ...(response.data.message ? { message: response.data.message } : {}),
320
+ };
321
+ }
322
+ return {
323
+ error: response.data.message
324
+ ? response.data.message
325
+ : (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidToken),
326
+ ...(response.data.errorType
327
+ ? { errorType: response.data.errorType }
328
+ : {}),
329
+ };
330
+ }
331
+ catch (error) {
332
+ console.error('Backup code login error:', error);
333
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
334
+ return {
335
+ error: error.response.data.error.message ??
336
+ error.response.data.message ??
337
+ error.message ??
338
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
339
+ ...(error.response.data.errorType
340
+ ? { errorType: error.response.data.errorType }
341
+ : {}),
342
+ status: error.response.status,
343
+ };
344
+ }
345
+ return {
346
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
347
+ };
348
+ }
349
+ }
350
+ }
351
+ exports.AuthService = AuthService;
352
+ const createAuthService = (constants, baseUrl, eciesConfig) => new AuthService(constants, baseUrl, eciesConfig);
353
+ exports.createAuthService = createAuthService;
@@ -0,0 +1,3 @@
1
+ import axios from 'axios';
2
+ export declare function createAuthenticatedApiClient(baseURL: string, tokenKey?: string): axios.AxiosInstance;
3
+ //# sourceMappingURL=authenticatedApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticatedApi.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/services/authenticatedApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAoB,uBAc3F"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAuthenticatedApiClient = createAuthenticatedApiClient;
4
+ const tslib_1 = require("tslib");
5
+ const axios_1 = tslib_1.__importDefault(require("axios"));
6
+ function createAuthenticatedApiClient(baseURL, tokenKey = 'authToken') {
7
+ const api = axios_1.default.create({ baseURL });
8
+ api.interceptors.request.use((config) => {
9
+ const token = localStorage.getItem(tokenKey);
10
+ if (token) {
11
+ config.headers['Authorization'] = `Bearer ${token}`;
12
+ }
13
+ const languageCode = localStorage.getItem('languageCode') ?? 'en-US';
14
+ config.headers['Accept-Language'] = languageCode;
15
+ return config;
16
+ });
17
+ return api;
18
+ }
@@ -0,0 +1,4 @@
1
+ export * from './api';
2
+ export * from './authenticatedApi';
3
+ export * from './authService';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./api"), exports);
5
+ tslib_1.__exportStar(require("./authenticatedApi"), exports);
6
+ tslib_1.__exportStar(require("./authService"), exports);
@@ -0,0 +1,11 @@
1
+ export type MenuType = string & {
2
+ readonly __brand: 'MenuType';
3
+ };
4
+ export declare const createMenuType: (id: string) => MenuType;
5
+ export declare const MenuTypes: {
6
+ readonly SideMenu: MenuType;
7
+ readonly TopMenu: MenuType;
8
+ readonly UserMenu: MenuType;
9
+ };
10
+ export type BuiltInMenuType = typeof MenuTypes[keyof typeof MenuTypes];
11
+ //# sourceMappingURL=MenuType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuType.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/types/MenuType.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC;AAGjE,eAAO,MAAM,cAAc,GAAI,IAAI,MAAM,KAAG,QAA0B,CAAC;AAGvE,eAAO,MAAM,SAAS;;;;CAIZ,CAAC;AAGX,MAAM,MAAM,eAAe,GAAG,OAAO,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MenuTypes = exports.createMenuType = void 0;
4
+ // Factory function to create menu types
5
+ const createMenuType = (id) => id;
6
+ exports.createMenuType = createMenuType;
7
+ // Built-in menu types
8
+ exports.MenuTypes = {
9
+ SideMenu: (0, exports.createMenuType)('SideMenu'),
10
+ TopMenu: (0, exports.createMenuType)('TopMenu'),
11
+ UserMenu: (0, exports.createMenuType)('UserMenu'),
12
+ };
@@ -0,0 +1,3 @@
1
+ export declare const ExpirationSecondsOptionValues: number[];
2
+ export declare function createExpirationSecondsOptionNames(secondsLabel: string, minuteLabel: string, minutesLabel: string): string[];
3
+ //# sourceMappingURL=expirationSeconds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expirationSeconds.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/types/expirationSeconds.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,UAAqC,CAAC;AAEhF,wBAAgB,kCAAkC,CAChD,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,EAAE,CAWV"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExpirationSecondsOptionValues = void 0;
4
+ exports.createExpirationSecondsOptionNames = createExpirationSecondsOptionNames;
5
+ exports.ExpirationSecondsOptionValues = [0, 10, 30, 45, 60, 120, 300, 600];
6
+ function createExpirationSecondsOptionNames(secondsLabel, minuteLabel, minutesLabel) {
7
+ return [
8
+ `0 ${secondsLabel}`,
9
+ `10 ${secondsLabel}`,
10
+ `30 ${secondsLabel}`,
11
+ `45 ${secondsLabel}`,
12
+ `1 ${minuteLabel}`,
13
+ `2 ${minutesLabel}`,
14
+ `5 ${minutesLabel}`,
15
+ `10 ${minutesLabel}`,
16
+ ];
17
+ }
@@ -0,0 +1,2 @@
1
+ export * from './MenuType';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./MenuType"), exports);
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Translation function type for components
3
+ * Accepts a key and optional variables, returns translated string
4
+ */
5
+ export type TranslationFunction = (key: string, variables?: Record<string, string | number>) => string;
6
+ /**
7
+ * Helper to get translated text or fallback to provided string
8
+ */
9
+ export declare function getTranslatedText(t: TranslationFunction | undefined, key: string, fallback: string, variables?: Record<string, string | number>): string;
10
+ //# sourceMappingURL=translation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/types/translation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KACxC,MAAM,CAAC;AAEZ;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,mBAAmB,GAAG,SAAS,EAClC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAC1C,MAAM,CAER"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTranslatedText = getTranslatedText;
4
+ /**
5
+ * Helper to get translated text or fallback to provided string
6
+ */
7
+ function getTranslatedText(t, key, fallback, variables) {
8
+ return t ? t(key, variables) : fallback;
9
+ }
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+ import { BackupCodeLoginForm } from '../components/BackupCodeLoginForm';
3
+ export interface BackupCodeLoginWrapperProps {
4
+ onSuccess?: () => void;
5
+ componentProps?: Partial<React.ComponentProps<typeof BackupCodeLoginForm>>;
6
+ }
7
+ export declare const BackupCodeLoginWrapper: FC<BackupCodeLoginWrapperProps>;
8
+ //# sourceMappingURL=BackupCodeLoginWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackupCodeLoginWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/BackupCodeLoginWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;CAC5E;AAED,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAwBlE,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BackupCodeLoginWrapper = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_router_dom_1 = require("react-router-dom");
6
+ const BackupCodeLoginForm_1 = require("../components/BackupCodeLoginForm");
7
+ const contexts_1 = require("../contexts");
8
+ const BackupCodeLoginWrapper = ({ onSuccess, componentProps = {}, }) => {
9
+ const { backupCodeLogin, isAuthenticated } = (0, contexts_1.useAuth)();
10
+ const navigate = (0, react_router_dom_1.useNavigate)();
11
+ const { routes } = (0, contexts_1.useSuiteConfig)();
12
+ const handleSubmit = async (...args) => {
13
+ const result = await backupCodeLogin(...args);
14
+ if ('token' in result && onSuccess) {
15
+ onSuccess();
16
+ }
17
+ return result;
18
+ };
19
+ return ((0, jsx_runtime_1.jsx)(BackupCodeLoginForm_1.BackupCodeLoginForm, { onSubmit: handleSubmit, onNavigate: navigate, isAuthenticated: isAuthenticated, ...componentProps }));
20
+ };
21
+ exports.BackupCodeLoginWrapper = BackupCodeLoginWrapper;
@@ -0,0 +1,7 @@
1
+ import { FC } from 'react';
2
+ import { BackupCodesForm } from '../components/BackupCodesForm';
3
+ export interface BackupCodesWrapperProps {
4
+ componentProps?: Partial<React.ComponentProps<typeof BackupCodesForm>>;
5
+ }
6
+ export declare const BackupCodesWrapper: FC<BackupCodesWrapperProps>;
7
+ //# sourceMappingURL=BackupCodesWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackupCodesWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/BackupCodesWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC;CACxE;AAED,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,uBAAuB,CAkB1D,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BackupCodesWrapper = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_router_dom_1 = require("react-router-dom");
6
+ const BackupCodesForm_1 = require("../components/BackupCodesForm");
7
+ const hooks_1 = require("../hooks");
8
+ const BackupCodesWrapper = ({ componentProps = {}, }) => {
9
+ const location = (0, react_router_dom_1.useLocation)();
10
+ const initialCodeCount = location.state?.codeCount ?? null;
11
+ const { backupCodesRemaining, generateBackupCodes } = (0, hooks_1.useBackupCodes)({ initialCodeCount });
12
+ const handleSubmit = async (values) => {
13
+ return await generateBackupCodes(values.password, values.mnemonic);
14
+ };
15
+ return ((0, jsx_runtime_1.jsx)(BackupCodesForm_1.BackupCodesForm, { onSubmit: handleSubmit, backupCodesRemaining: backupCodesRemaining, ...componentProps }));
16
+ };
17
+ exports.BackupCodesWrapper = BackupCodesWrapper;
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+ import { ChangePasswordForm } from '../components/ChangePasswordForm';
3
+ export interface ChangePasswordFormWrapperProps {
4
+ onSuccess?: () => void;
5
+ componentProps?: Partial<React.ComponentProps<typeof ChangePasswordForm>>;
6
+ }
7
+ export declare const ChangePasswordFormWrapper: FC<ChangePasswordFormWrapperProps>;
8
+ //# sourceMappingURL=ChangePasswordFormWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangePasswordFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/ChangePasswordFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,MAAM,WAAW,8BAA8B;IAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;CAC3E;AAED,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,8BAA8B,CAqBxE,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChangePasswordFormWrapper = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const ChangePasswordForm_1 = require("../components/ChangePasswordForm");
6
+ const contexts_1 = require("../contexts");
7
+ const ChangePasswordFormWrapper = ({ onSuccess, componentProps = {}, }) => {
8
+ const { changePassword } = (0, contexts_1.useAuth)();
9
+ const handleSubmit = async (values) => {
10
+ const result = await changePassword(values.currentPassword, values.newPassword);
11
+ if ('error' in result) {
12
+ throw new Error(result.error);
13
+ }
14
+ if (onSuccess) {
15
+ onSuccess();
16
+ }
17
+ return result;
18
+ };
19
+ return (0, jsx_runtime_1.jsx)(ChangePasswordForm_1.ChangePasswordForm, { onSubmit: handleSubmit, ...componentProps });
20
+ };
21
+ exports.ChangePasswordFormWrapper = ChangePasswordFormWrapper;
@@ -0,0 +1,9 @@
1
+ import { FC } from 'react';
2
+ import { LoginFormProps } from '../components/LoginForm';
3
+ export interface LoginFormWrapperProps {
4
+ onSuccess?: () => void;
5
+ redirectTo?: string;
6
+ componentProps?: Partial<Omit<LoginFormProps, 'onSubmit'>>;
7
+ }
8
+ export declare const LoginFormWrapper: FC<LoginFormWrapperProps>;
9
+ //# sourceMappingURL=LoginFormWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/LoginFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAG3B,OAAO,EAA8B,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIrF,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;CAC5D;AAED,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA6CtD,CAAC"}