@digitaldefiance/express-suite-react-components 5.0.2 → 5.0.4

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 (314) hide show
  1. package/package.json +5 -4
  2. package/src/auth/AdminRoute.d.ts +8 -0
  3. package/src/auth/AdminRoute.d.ts.map +1 -0
  4. package/src/auth/AdminRoute.js +28 -0
  5. package/src/auth/Private.d.ts +6 -0
  6. package/src/auth/Private.d.ts.map +1 -0
  7. package/src/auth/Private.js +14 -0
  8. package/src/auth/PrivateRoute.d.ts +8 -0
  9. package/src/auth/PrivateRoute.d.ts.map +1 -0
  10. package/src/auth/PrivateRoute.js +23 -0
  11. package/src/auth/UnAuth.d.ts +6 -0
  12. package/src/auth/UnAuth.d.ts.map +1 -0
  13. package/src/auth/UnAuth.js +14 -0
  14. package/src/auth/UnAuthRoute.d.ts +8 -0
  15. package/src/auth/UnAuthRoute.d.ts.map +1 -0
  16. package/src/auth/UnAuthRoute.js +22 -0
  17. package/src/auth/{index.ts → index.d.ts} +3 -2
  18. package/src/auth/index.d.ts.map +1 -0
  19. package/src/auth/index.js +12 -0
  20. package/src/components/ApiAccess.d.ts +16 -0
  21. package/src/components/ApiAccess.d.ts.map +1 -0
  22. package/src/components/ApiAccess.js +77 -0
  23. package/src/components/BackupCodeLoginForm.d.ts +43 -0
  24. package/src/components/BackupCodeLoginForm.d.ts.map +1 -0
  25. package/src/components/BackupCodeLoginForm.js +139 -0
  26. package/src/components/BackupCodesForm.d.ts +26 -0
  27. package/src/components/BackupCodesForm.d.ts.map +1 -0
  28. package/src/components/BackupCodesForm.js +120 -0
  29. package/src/components/CategoryMenu.d.ts +17 -0
  30. package/src/components/CategoryMenu.d.ts.map +1 -0
  31. package/src/components/CategoryMenu.js +65 -0
  32. package/src/components/ChangePasswordForm.d.ts +26 -0
  33. package/src/components/ChangePasswordForm.d.ts.map +1 -0
  34. package/src/components/ChangePasswordForm.js +78 -0
  35. package/src/components/ConfirmationDialog.d.ts +13 -0
  36. package/src/components/ConfirmationDialog.d.ts.map +1 -0
  37. package/src/components/ConfirmationDialog.js +10 -0
  38. package/src/components/CurrencyCodeSelector.d.ts +9 -0
  39. package/src/components/CurrencyCodeSelector.d.ts.map +1 -0
  40. package/src/components/CurrencyCodeSelector.js +31 -0
  41. package/src/components/CurrencyInput.d.ts +13 -0
  42. package/src/components/CurrencyInput.d.ts.map +1 -0
  43. package/src/components/CurrencyInput.js +22 -0
  44. package/src/components/DashboardPage.d.ts +8 -0
  45. package/src/components/DashboardPage.d.ts.map +1 -0
  46. package/src/components/DashboardPage.js +10 -0
  47. package/src/components/DropdownMenu.d.ts +13 -0
  48. package/src/components/DropdownMenu.d.ts.map +1 -0
  49. package/src/components/DropdownMenu.js +63 -0
  50. package/src/components/ExpirationSecondsSelector.d.ts +13 -0
  51. package/src/components/ExpirationSecondsSelector.d.ts.map +1 -0
  52. package/src/components/ExpirationSecondsSelector.js +32 -0
  53. package/src/components/FakeEmailAdminPanel.d.ts +23 -0
  54. package/src/components/FakeEmailAdminPanel.d.ts.map +1 -0
  55. package/src/components/FakeEmailAdminPanel.js +147 -0
  56. package/src/components/Flag.d.ts +20 -0
  57. package/src/components/Flag.d.ts.map +1 -0
  58. package/src/components/Flag.js +43 -0
  59. package/src/components/ForgotPasswordForm.d.ts +18 -0
  60. package/src/components/ForgotPasswordForm.d.ts.map +1 -0
  61. package/src/components/ForgotPasswordForm.js +61 -0
  62. package/src/components/LoginForm.d.ts +44 -0
  63. package/src/components/LoginForm.d.ts.map +1 -0
  64. package/src/components/LoginForm.js +123 -0
  65. package/src/components/LogoutPage.d.ts +8 -0
  66. package/src/components/LogoutPage.d.ts.map +1 -0
  67. package/src/components/LogoutPage.js +16 -0
  68. package/src/components/RegisterForm.d.ts +100 -0
  69. package/src/components/RegisterForm.d.ts.map +1 -0
  70. package/src/components/RegisterForm.js +306 -0
  71. package/src/components/ResetPasswordForm.d.ts +23 -0
  72. package/src/components/ResetPasswordForm.d.ts.map +1 -0
  73. package/src/components/ResetPasswordForm.js +78 -0
  74. package/src/components/SideMenu.d.ts +8 -0
  75. package/src/components/SideMenu.d.ts.map +1 -0
  76. package/src/components/SideMenu.js +25 -0
  77. package/src/components/SideMenuListItem.d.ts +13 -0
  78. package/src/components/SideMenuListItem.d.ts.map +1 -0
  79. package/src/components/SideMenuListItem.js +44 -0
  80. package/src/components/T.d.ts +7 -0
  81. package/src/components/T.d.ts.map +1 -0
  82. package/src/components/T.js +13 -0
  83. package/src/components/TDiv.d.ts +9 -0
  84. package/src/components/TDiv.d.ts.map +1 -0
  85. package/src/components/TDiv.js +14 -0
  86. package/src/components/TImgAlt.d.ts +10 -0
  87. package/src/components/TImgAlt.d.ts.map +1 -0
  88. package/src/components/TImgAlt.js +14 -0
  89. package/src/components/TopMenu.d.ts +50 -0
  90. package/src/components/TopMenu.d.ts.map +1 -0
  91. package/src/components/TopMenu.js +79 -0
  92. package/src/components/TotpSetupForm.d.ts +24 -0
  93. package/src/components/TotpSetupForm.d.ts.map +1 -0
  94. package/src/components/TotpSetupForm.js +82 -0
  95. package/src/components/TotpVerificationForm.d.ts +23 -0
  96. package/src/components/TotpVerificationForm.d.ts.map +1 -0
  97. package/src/components/TotpVerificationForm.js +66 -0
  98. package/src/components/TranslatedTitle.d.ts +8 -0
  99. package/src/components/TranslatedTitle.d.ts.map +1 -0
  100. package/src/components/TranslatedTitle.js +15 -0
  101. package/src/components/UserLanguageSelector.d.ts +4 -0
  102. package/src/components/UserLanguageSelector.d.ts.map +1 -0
  103. package/src/components/UserLanguageSelector.js +31 -0
  104. package/src/components/UserMenu.d.ts +4 -0
  105. package/src/components/UserMenu.d.ts.map +1 -0
  106. package/src/components/UserMenu.js +12 -0
  107. package/src/components/UserSettingsForm.d.ts +113 -0
  108. package/src/components/UserSettingsForm.d.ts.map +1 -0
  109. package/src/components/UserSettingsForm.js +269 -0
  110. package/src/components/VerifyEmailPage.d.ts +24 -0
  111. package/src/components/VerifyEmailPage.d.ts.map +1 -0
  112. package/src/components/VerifyEmailPage.js +81 -0
  113. package/src/components/{index.ts → index.d.ts} +1 -1
  114. package/src/components/index.d.ts.map +1 -0
  115. package/src/components/index.js +35 -0
  116. package/src/contexts/AuthProvider.d.ts +19 -0
  117. package/src/contexts/AuthProvider.d.ts.map +1 -0
  118. package/src/contexts/AuthProvider.js +514 -0
  119. package/src/contexts/I18nProvider.d.ts +27 -0
  120. package/src/contexts/I18nProvider.d.ts.map +1 -0
  121. package/src/contexts/I18nProvider.js +60 -0
  122. package/src/contexts/MenuContext.d.ts +28 -0
  123. package/src/contexts/MenuContext.d.ts.map +1 -0
  124. package/src/contexts/MenuContext.js +307 -0
  125. package/src/contexts/SuiteConfigProvider.d.ts +44 -0
  126. package/src/contexts/SuiteConfigProvider.d.ts.map +1 -0
  127. package/src/contexts/SuiteConfigProvider.js +43 -0
  128. package/src/contexts/ThemeProvider.d.ts +15 -0
  129. package/src/contexts/ThemeProvider.d.ts.map +1 -0
  130. package/src/contexts/ThemeProvider.js +36 -0
  131. package/src/contexts/auth-context.d.ts +172 -0
  132. package/src/contexts/auth-context.d.ts.map +1 -0
  133. package/src/contexts/auth-context.js +13 -0
  134. package/src/contexts/{index.ts → index.d.ts} +1 -0
  135. package/src/contexts/index.d.ts.map +1 -0
  136. package/src/contexts/index.js +8 -0
  137. package/src/hooks/{index.ts → index.d.ts} +1 -0
  138. package/src/hooks/index.d.ts.map +1 -0
  139. package/src/hooks/index.js +9 -0
  140. package/src/hooks/useAuthenticatedApi.d.ts +34 -0
  141. package/src/hooks/useAuthenticatedApi.d.ts.map +1 -0
  142. package/src/hooks/useAuthenticatedApi.js +46 -0
  143. package/src/hooks/useBackupCodes.d.ts +15 -0
  144. package/src/hooks/useBackupCodes.d.ts.map +1 -0
  145. package/src/hooks/useBackupCodes.js +74 -0
  146. package/src/hooks/useEmailVerification.d.ts +10 -0
  147. package/src/hooks/useEmailVerification.d.ts.map +1 -0
  148. package/src/hooks/useEmailVerification.js +40 -0
  149. package/src/hooks/useExpiringValue.d.ts +14 -0
  150. package/src/hooks/useExpiringValue.d.ts.map +1 -0
  151. package/src/hooks/useExpiringValue.js +53 -0
  152. package/src/hooks/useLocalStorage.d.ts +2 -0
  153. package/src/hooks/useLocalStorage.d.ts.map +1 -0
  154. package/src/hooks/useLocalStorage.js +15 -0
  155. package/src/hooks/useUserSettings.d.ts +48 -0
  156. package/src/hooks/useUserSettings.d.ts.map +1 -0
  157. package/src/hooks/useUserSettings.js +171 -0
  158. package/src/{index.ts → index.d.ts} +1 -1
  159. package/src/index.d.ts.map +1 -0
  160. package/src/index.js +12 -0
  161. package/src/interfaces/IAppConfig.d.ts +8 -0
  162. package/src/interfaces/IAppConfig.d.ts.map +1 -0
  163. package/src/interfaces/IAppConfig.js +2 -0
  164. package/src/interfaces/ICategoryConfig.d.ts +41 -0
  165. package/src/interfaces/ICategoryConfig.d.ts.map +1 -0
  166. package/src/interfaces/ICategoryConfig.js +2 -0
  167. package/src/interfaces/IMenuConfig.d.ts +28 -0
  168. package/src/interfaces/IMenuConfig.d.ts.map +1 -0
  169. package/src/interfaces/IMenuConfig.js +2 -0
  170. package/src/interfaces/IMenuOption.d.ts +82 -0
  171. package/src/interfaces/IMenuOption.d.ts.map +1 -0
  172. package/src/interfaces/IMenuOption.js +2 -0
  173. package/src/interfaces/{index.ts → index.d.ts} +1 -0
  174. package/src/interfaces/index.d.ts.map +1 -0
  175. package/src/interfaces/index.js +7 -0
  176. package/src/services/__mocks__/authService.d.ts +21 -0
  177. package/src/services/__mocks__/authService.d.ts.map +1 -0
  178. package/src/services/__mocks__/authService.js +15 -0
  179. package/src/services/api.d.ts +3 -0
  180. package/src/services/api.d.ts.map +1 -0
  181. package/src/services/api.js +14 -0
  182. package/src/services/authService.d.ts +126 -0
  183. package/src/services/authService.d.ts.map +1 -0
  184. package/src/services/authService.js +471 -0
  185. package/src/services/authenticatedApi.d.ts +3 -0
  186. package/src/services/authenticatedApi.d.ts.map +1 -0
  187. package/src/services/authenticatedApi.js +18 -0
  188. package/src/services/index.d.ts +4 -0
  189. package/src/services/index.d.ts.map +1 -0
  190. package/src/services/index.js +6 -0
  191. package/src/types/MenuType.d.ts +11 -0
  192. package/src/types/MenuType.d.ts.map +1 -0
  193. package/src/types/MenuType.js +12 -0
  194. package/src/types/expirationSeconds.d.ts +3 -0
  195. package/src/types/expirationSeconds.d.ts.map +1 -0
  196. package/src/types/expirationSeconds.js +17 -0
  197. package/src/types/index.d.ts +2 -0
  198. package/src/types/index.d.ts.map +1 -0
  199. package/src/types/index.js +4 -0
  200. package/src/types/translation.d.ts +10 -0
  201. package/src/types/translation.d.ts.map +1 -0
  202. package/src/types/translation.js +9 -0
  203. package/src/wrappers/BackupCodeLoginWrapper.d.ts +8 -0
  204. package/src/wrappers/BackupCodeLoginWrapper.d.ts.map +1 -0
  205. package/src/wrappers/BackupCodeLoginWrapper.js +20 -0
  206. package/src/wrappers/BackupCodesWrapper.d.ts +7 -0
  207. package/src/wrappers/BackupCodesWrapper.d.ts.map +1 -0
  208. package/src/wrappers/BackupCodesWrapper.js +17 -0
  209. package/src/wrappers/ChangePasswordFormWrapper.d.ts +8 -0
  210. package/src/wrappers/ChangePasswordFormWrapper.d.ts.map +1 -0
  211. package/src/wrappers/ChangePasswordFormWrapper.js +21 -0
  212. package/src/wrappers/ForgotPasswordFormWrapper.d.ts +8 -0
  213. package/src/wrappers/ForgotPasswordFormWrapper.d.ts.map +1 -0
  214. package/src/wrappers/ForgotPasswordFormWrapper.js +29 -0
  215. package/src/wrappers/LoginFormWrapper.d.ts +21 -0
  216. package/src/wrappers/LoginFormWrapper.d.ts.map +1 -0
  217. package/src/wrappers/LoginFormWrapper.js +72 -0
  218. package/src/wrappers/LogoutPageWrapper.d.ts +9 -0
  219. package/src/wrappers/LogoutPageWrapper.d.ts.map +1 -0
  220. package/src/wrappers/LogoutPageWrapper.js +21 -0
  221. package/src/wrappers/RegisterFormWrapper.d.ts +20 -0
  222. package/src/wrappers/RegisterFormWrapper.d.ts.map +1 -0
  223. package/src/wrappers/RegisterFormWrapper.js +51 -0
  224. package/src/wrappers/ResetPasswordFormWrapper.d.ts +9 -0
  225. package/src/wrappers/ResetPasswordFormWrapper.d.ts.map +1 -0
  226. package/src/wrappers/ResetPasswordFormWrapper.js +34 -0
  227. package/src/wrappers/UserSettingsFormWrapper.d.ts +29 -0
  228. package/src/wrappers/UserSettingsFormWrapper.d.ts.map +1 -0
  229. package/src/wrappers/UserSettingsFormWrapper.js +95 -0
  230. package/src/wrappers/VerifyEmailPageWrapper.d.ts +8 -0
  231. package/src/wrappers/VerifyEmailPageWrapper.d.ts.map +1 -0
  232. package/src/wrappers/VerifyEmailPageWrapper.js +21 -0
  233. package/src/wrappers/{index.tsx → index.d.ts} +1 -10
  234. package/src/wrappers/index.d.ts.map +1 -0
  235. package/src/wrappers/index.js +24 -0
  236. package/LICENSE +0 -21
  237. package/src/auth/AdminRoute.tsx +0 -54
  238. package/src/auth/Private.tsx +0 -17
  239. package/src/auth/PrivateRoute.tsx +0 -28
  240. package/src/auth/UnAuth.tsx +0 -16
  241. package/src/auth/UnAuthRoute.tsx +0 -30
  242. package/src/components/ApiAccess.tsx +0 -175
  243. package/src/components/BackupCodeLoginForm.tsx +0 -489
  244. package/src/components/BackupCodesForm.tsx +0 -287
  245. package/src/components/CategoryMenu.tsx +0 -155
  246. package/src/components/ChangePasswordForm.tsx +0 -273
  247. package/src/components/ConfirmationDialog.tsx +0 -48
  248. package/src/components/CurrencyCodeSelector.tsx +0 -60
  249. package/src/components/CurrencyInput.tsx +0 -80
  250. package/src/components/DashboardPage.tsx +0 -24
  251. package/src/components/DropdownMenu.tsx +0 -105
  252. package/src/components/ExpirationSecondsSelector.tsx +0 -60
  253. package/src/components/FakeEmailAdminPanel.tsx +0 -374
  254. package/src/components/Flag.tsx +0 -52
  255. package/src/components/ForgotPasswordForm.tsx +0 -174
  256. package/src/components/LoginForm.tsx +0 -468
  257. package/src/components/LogoutPage.tsx +0 -21
  258. package/src/components/RegisterForm.tsx +0 -1169
  259. package/src/components/ResetPasswordForm.tsx +0 -247
  260. package/src/components/SideMenu.tsx +0 -46
  261. package/src/components/SideMenuListItem.tsx +0 -75
  262. package/src/components/T.tsx +0 -24
  263. package/src/components/TDiv.tsx +0 -26
  264. package/src/components/TImgAlt.tsx +0 -28
  265. package/src/components/TopMenu.tsx +0 -252
  266. package/src/components/TotpSetupForm.tsx +0 -188
  267. package/src/components/TotpVerificationForm.tsx +0 -148
  268. package/src/components/TranslatedTitle.tsx +0 -31
  269. package/src/components/UserLanguageSelector.tsx +0 -45
  270. package/src/components/UserMenu.tsx +0 -15
  271. package/src/components/UserSettingsForm.tsx +0 -904
  272. package/src/components/VerifyEmailPage.tsx +0 -222
  273. package/src/components/__tests__/RegisterForm.totp.spec.tsx +0 -377
  274. package/src/components/__tests__/TotpSetupForm.spec.tsx +0 -258
  275. package/src/components/__tests__/TotpVerificationForm.spec.tsx +0 -259
  276. package/src/components/__tests__/UserSettingsForm.totp.spec.tsx +0 -396
  277. package/src/contexts/AuthProvider.spec.tsx +0 -1284
  278. package/src/contexts/AuthProvider.tsx +0 -977
  279. package/src/contexts/I18nProvider.tsx +0 -164
  280. package/src/contexts/MenuContext.tsx +0 -426
  281. package/src/contexts/SuiteConfigProvider.tsx +0 -93
  282. package/src/contexts/ThemeProvider.tsx +0 -67
  283. package/src/hooks/useAuthenticatedApi.tsx +0 -67
  284. package/src/hooks/useBackupCodes.ts +0 -105
  285. package/src/hooks/useEmailVerification.ts +0 -54
  286. package/src/hooks/useExpiringValue.ts +0 -78
  287. package/src/hooks/useLocalStorage.ts +0 -18
  288. package/src/hooks/useUserSettings.ts +0 -271
  289. package/src/interfaces/IAppConfig.ts +0 -7
  290. package/src/interfaces/ICategoryConfig.ts +0 -41
  291. package/src/interfaces/IMenuConfig.ts +0 -28
  292. package/src/interfaces/IMenuOption.ts +0 -79
  293. package/src/services/__mocks__/authService.ts +0 -14
  294. package/src/services/__tests__/authService.totp.property.spec.ts +0 -360
  295. package/src/services/__tests__/authService.totp.spec.ts +0 -439
  296. package/src/services/api.ts +0 -13
  297. package/src/services/authService.ts +0 -692
  298. package/src/services/authenticatedApi.ts +0 -17
  299. package/src/services/index.ts +0 -3
  300. package/src/types/MenuType.ts +0 -15
  301. package/src/types/expirationSeconds.ts +0 -18
  302. package/src/types/index.ts +0 -1
  303. package/src/types/translation.ts +0 -20
  304. package/src/wrappers/BackupCodeLoginWrapper.tsx +0 -34
  305. package/src/wrappers/BackupCodesWrapper.tsx +0 -28
  306. package/src/wrappers/ChangePasswordFormWrapper.tsx +0 -34
  307. package/src/wrappers/ForgotPasswordFormWrapper.tsx +0 -45
  308. package/src/wrappers/LoginFormWrapper.tsx +0 -108
  309. package/src/wrappers/LogoutPageWrapper.tsx +0 -30
  310. package/src/wrappers/RegisterFormWrapper.tsx +0 -109
  311. package/src/wrappers/ResetPasswordFormWrapper.tsx +0 -57
  312. package/src/wrappers/UserSettingsFormWrapper.tsx +0 -140
  313. package/src/wrappers/VerifyEmailPageWrapper.tsx +0 -27
  314. package/src/wrappers/__tests__/LoginFormWrapper.totp.spec.tsx +0 -339
@@ -0,0 +1,471 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAuthService = exports.AuthService = void 0;
4
+ exports.extractErrorMessage = extractErrorMessage;
5
+ // services/authService.js
6
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
7
+ const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
8
+ const axios_1 = require("axios");
9
+ const api_1 = require("./api");
10
+ const authenticatedApi_1 = require("./authenticatedApi");
11
+ /**
12
+ * Extract a human-readable error string from an API error response.
13
+ * The backend may send `error` as either a plain string or an object
14
+ * with `{ message, statusCode, stack }`.
15
+ */
16
+ function extractErrorMessage(errorData) {
17
+ if (typeof errorData.error === 'string') {
18
+ return errorData.error;
19
+ }
20
+ if (typeof errorData.error === 'object' &&
21
+ errorData.error !== null &&
22
+ typeof errorData.error.message === 'string') {
23
+ return errorData.error.message;
24
+ }
25
+ return errorData.message;
26
+ }
27
+ class AuthService {
28
+ constants;
29
+ baseUrl;
30
+ siteDomain;
31
+ eciesService;
32
+ cryptoCore;
33
+ apiClient;
34
+ authenticatedApiClient;
35
+ constructor(constants, baseUrl, eciesConfig, siteDomain) {
36
+ this.constants = constants;
37
+ this.baseUrl = baseUrl;
38
+ this.siteDomain = siteDomain;
39
+ this.eciesService = new ecies_lib_1.ECIESService(eciesConfig);
40
+ this.cryptoCore = new ecies_lib_1.EciesCryptoCore(eciesConfig);
41
+ this.apiClient = (0, api_1.createApiClient)(this.baseUrl);
42
+ this.authenticatedApiClient = (0, authenticatedApi_1.createAuthenticatedApiClient)(this.baseUrl);
43
+ }
44
+ getSiteDomain() {
45
+ return this.siteDomain;
46
+ }
47
+ async register(username, email, timezone, password, mnemonic, displayName, directChallenge) {
48
+ try {
49
+ const response = await this.apiClient.post('/user/register', {
50
+ username,
51
+ email,
52
+ timezone,
53
+ ...(password ? { password } : {}),
54
+ ...(mnemonic ? { mnemonic } : {}),
55
+ ...(displayName ? { displayName } : {}),
56
+ ...(directChallenge ? { directChallenge } : {}),
57
+ });
58
+ if (response.status !== 201) {
59
+ const errorData = response.data;
60
+ return {
61
+ error: errorData.message
62
+ ? errorData.message
63
+ : (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Registration_Error),
64
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
65
+ ...(errorData.errors ? { errors: errorData.errors } : {}),
66
+ };
67
+ }
68
+ return {
69
+ success: true,
70
+ message: response.data.message ??
71
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Registration_Success, {
72
+ MNEMONIC: response.data.data?.mnemonic ?? response.data.mnemonic,
73
+ }),
74
+ mnemonic: response.data.data?.mnemonic ?? response.data.mnemonic ?? '',
75
+ };
76
+ }
77
+ catch (error) {
78
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
79
+ const errorData = error.response.data;
80
+ return {
81
+ error: extractErrorMessage(errorData) ??
82
+ error.message ??
83
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
84
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
85
+ ...(errorData.field
86
+ ? { field: errorData.field }
87
+ : errorData.error
88
+ ? { field: 'general' }
89
+ : {}),
90
+ ...(errorData.errors ? { errors: errorData.errors } : {}),
91
+ };
92
+ }
93
+ else {
94
+ return {
95
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
96
+ };
97
+ }
98
+ }
99
+ }
100
+ async directLogin(mnemonic, username, email) {
101
+ if (!username && !email) {
102
+ return {
103
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UsernameOrEmailRequired),
104
+ };
105
+ }
106
+ try {
107
+ const loginRequest = await this.apiClient.post('/user/request-direct-login');
108
+ if (loginRequest.data.challenge) {
109
+ const { wallet } = this.cryptoCore.walletAndSeedFromMnemonic(mnemonic);
110
+ const challengeBuffer = (0, ecies_lib_1.hexToUint8Array)(loginRequest.data.challenge);
111
+ const privateKeyBuffer = wallet.getPrivateKey();
112
+ const signature = this.eciesService.signMessage(privateKeyBuffer, challengeBuffer);
113
+ const signatureHex = (0, ecies_lib_1.uint8ArrayToHex)(signature);
114
+ const loginResponse = await this.apiClient.post('/user/direct-challenge', {
115
+ username: username,
116
+ email: email ? email.email : undefined,
117
+ challenge: loginRequest.data.challenge,
118
+ signature: signatureHex,
119
+ });
120
+ if (loginResponse.data.pendingTotpToken) {
121
+ return {
122
+ pendingTotpToken: loginResponse.data.pendingTotpToken,
123
+ };
124
+ }
125
+ if (loginResponse.data.token && loginResponse.data.user) {
126
+ return {
127
+ message: loginResponse.data.message ?? '',
128
+ token: loginResponse.data.token,
129
+ user: loginResponse.data.user,
130
+ wallet,
131
+ };
132
+ }
133
+ }
134
+ }
135
+ catch (error) {
136
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
137
+ // Check for DirectChallengeNotEnabled error
138
+ if (error.response.status === 403 &&
139
+ error.response.data.errorType === 'DirectChallengeNotEnabledError') {
140
+ return {
141
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Error_Login_DirectChallengeNotEnabled),
142
+ errorType: 'DirectChallengeNotEnabled',
143
+ };
144
+ }
145
+ // Check for PasswordLoginNotEnabled error
146
+ if (error.response.status === 403 &&
147
+ error.response.data.errorType === 'PasswordLoginNotEnabledError') {
148
+ return {
149
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Error_Login_PasswordLoginNotEnabled),
150
+ errorType: 'PasswordLoginNotEnabled',
151
+ };
152
+ }
153
+ const errorData = error.response.data;
154
+ return {
155
+ error: extractErrorMessage(errorData) ??
156
+ error.message ??
157
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
158
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
159
+ };
160
+ }
161
+ console.error('directLogin: non-axios error:', error);
162
+ }
163
+ return {
164
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
165
+ };
166
+ }
167
+ async requestEmailLogin(username, email) {
168
+ if (!username && !email) {
169
+ return {
170
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UsernameOrEmailRequired),
171
+ };
172
+ }
173
+ try {
174
+ const result = await this.apiClient.post('/user/request-email-login', {
175
+ email: email ? email.email : undefined,
176
+ username,
177
+ });
178
+ if (result.data.message) {
179
+ return result.data.message;
180
+ }
181
+ }
182
+ catch (error) {
183
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
184
+ const errorData = error.response.data;
185
+ return {
186
+ error: extractErrorMessage(errorData) ??
187
+ error.message ??
188
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
189
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
190
+ };
191
+ }
192
+ }
193
+ return {
194
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
195
+ };
196
+ }
197
+ async emailChallengeLogin(mnemonic, token, username, email) {
198
+ if (!username && !email) {
199
+ return {
200
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_UsernameOrEmailRequired),
201
+ };
202
+ }
203
+ try {
204
+ const { wallet } = this.cryptoCore.walletAndSeedFromMnemonic(mnemonic);
205
+ const challengeBuffer = (0, ecies_lib_1.hexToUint8Array)(token);
206
+ const privateKeyBuffer = wallet.getPrivateKey();
207
+ const signature = this.eciesService.signMessage(privateKeyBuffer, challengeBuffer);
208
+ const signatureHex = (0, ecies_lib_1.uint8ArrayToHex)(signature);
209
+ const response = await this.apiClient.post('/user/email-login', {
210
+ token,
211
+ signature: signatureHex,
212
+ username: username ?? null,
213
+ email: email ?? null,
214
+ });
215
+ if (response.data.pendingTotpToken) {
216
+ return {
217
+ pendingTotpToken: response.data.pendingTotpToken,
218
+ };
219
+ }
220
+ if (response.data.token && response.data.user) {
221
+ return {
222
+ message: response.data.message ?? '',
223
+ token: response.data.token,
224
+ user: response.data.user,
225
+ wallet,
226
+ };
227
+ }
228
+ }
229
+ catch (error) {
230
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
231
+ const errorData = error.response.data;
232
+ return {
233
+ error: extractErrorMessage(errorData) ??
234
+ error.message ??
235
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
236
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
237
+ };
238
+ }
239
+ }
240
+ return {
241
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
242
+ };
243
+ }
244
+ async verifyToken(token) {
245
+ try {
246
+ const response = await this.apiClient.get('/user/verify', {
247
+ headers: { Authorization: `Bearer ${token}` },
248
+ });
249
+ return response.data.user;
250
+ }
251
+ catch (error) {
252
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
253
+ const errorData = error.response.data;
254
+ return {
255
+ error: errorData.message
256
+ ? errorData.message
257
+ : error.message
258
+ ? error.message
259
+ : (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
260
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
261
+ };
262
+ }
263
+ else {
264
+ return {
265
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
266
+ };
267
+ }
268
+ }
269
+ }
270
+ async refreshToken() {
271
+ try {
272
+ const refreshResponse = await this.authenticatedApiClient.get('/user/refresh-token');
273
+ if (refreshResponse.status === 200) {
274
+ const newToken = refreshResponse.headers['authorization'];
275
+ let token = undefined;
276
+ let user = undefined;
277
+ if (newToken &&
278
+ typeof newToken === 'string' &&
279
+ newToken.startsWith('Bearer ')) {
280
+ token = newToken.slice(7);
281
+ }
282
+ if (refreshResponse.data.user) {
283
+ user = refreshResponse.data.user;
284
+ }
285
+ if (token && user) {
286
+ return { token, user };
287
+ }
288
+ }
289
+ }
290
+ catch (error) {
291
+ console.error('Token refresh error:', error);
292
+ }
293
+ throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError);
294
+ }
295
+ async changePassword(currentPassword, newPassword) {
296
+ try {
297
+ await this.authenticatedApiClient.post('/user/change-password', {
298
+ currentPassword,
299
+ newPassword,
300
+ });
301
+ return { success: true };
302
+ }
303
+ catch (error) {
304
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
305
+ const errorData = error.response.data;
306
+ return {
307
+ error: extractErrorMessage(errorData) ??
308
+ error.message ??
309
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
310
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
311
+ };
312
+ }
313
+ return {
314
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
315
+ };
316
+ }
317
+ }
318
+ async backupCodeLogin(identifier, code, isEmail, recoverMnemonic, newPassword) {
319
+ try {
320
+ const response = await this.apiClient.post('/user/backup-code', {
321
+ [isEmail ? 'email' : 'username']: identifier,
322
+ code,
323
+ recoverMnemonic,
324
+ ...(newPassword ? { newPassword } : {}),
325
+ });
326
+ if (response.data.token && response.data.user) {
327
+ return {
328
+ token: response.data.token,
329
+ user: response.data.user,
330
+ codeCount: response.data.codeCount ?? 0,
331
+ ...(response.data.mnemonic
332
+ ? { mnemonic: response.data.mnemonic }
333
+ : {}),
334
+ ...(response.data.message ? { message: response.data.message } : {}),
335
+ };
336
+ }
337
+ const errorData = response.data;
338
+ return {
339
+ error: errorData.message
340
+ ? errorData.message
341
+ : (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidToken),
342
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
343
+ };
344
+ }
345
+ catch (error) {
346
+ console.error('Backup code login error:', error);
347
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
348
+ const errorData = error.response.data;
349
+ return {
350
+ error: extractErrorMessage(errorData) ??
351
+ error.message ??
352
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
353
+ ...(errorData.errorType ? { errorType: errorData.errorType } : {}),
354
+ status: error.response.status,
355
+ };
356
+ }
357
+ return {
358
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
359
+ };
360
+ }
361
+ }
362
+ async setupTotp() {
363
+ try {
364
+ const response = await this.authenticatedApiClient.post('/user/totp/setup');
365
+ return {
366
+ provisioningUri: response.data.provisioningUri,
367
+ secret: response.data.secret,
368
+ };
369
+ }
370
+ catch (error) {
371
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
372
+ const errorData = error.response.data;
373
+ return {
374
+ error: extractErrorMessage(errorData) ??
375
+ error.message ??
376
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
377
+ };
378
+ }
379
+ return {
380
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
381
+ };
382
+ }
383
+ }
384
+ async confirmTotp(code) {
385
+ try {
386
+ await this.authenticatedApiClient.post('/user/totp/confirm', { code });
387
+ return { success: true };
388
+ }
389
+ catch (error) {
390
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
391
+ const errorData = error.response.data;
392
+ return {
393
+ error: extractErrorMessage(errorData) ??
394
+ error.message ??
395
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
396
+ };
397
+ }
398
+ return {
399
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
400
+ };
401
+ }
402
+ }
403
+ async disableTotp(code) {
404
+ try {
405
+ await this.authenticatedApiClient.post('/user/totp/disable', { code });
406
+ return { success: true };
407
+ }
408
+ catch (error) {
409
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
410
+ const errorData = error.response.data;
411
+ return {
412
+ error: extractErrorMessage(errorData) ??
413
+ error.message ??
414
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
415
+ };
416
+ }
417
+ return {
418
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
419
+ };
420
+ }
421
+ }
422
+ async resetTotp(code) {
423
+ try {
424
+ const response = await this.authenticatedApiClient.post('/user/totp/reset', { code });
425
+ return {
426
+ provisioningUri: response.data.provisioningUri,
427
+ secret: response.data.secret,
428
+ };
429
+ }
430
+ catch (error) {
431
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
432
+ const errorData = error.response.data;
433
+ return {
434
+ error: extractErrorMessage(errorData) ??
435
+ error.message ??
436
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
437
+ };
438
+ }
439
+ return {
440
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
441
+ };
442
+ }
443
+ }
444
+ async verifyTotpLogin(pendingTotpToken, code) {
445
+ try {
446
+ const response = await this.apiClient.post('/user/totp/verify', { code }, {
447
+ headers: { Authorization: `Bearer ${pendingTotpToken}` },
448
+ });
449
+ return {
450
+ token: response.data.token,
451
+ user: response.data.user,
452
+ };
453
+ }
454
+ catch (error) {
455
+ if ((0, axios_1.isAxiosError)(error) && error.response) {
456
+ const errorData = error.response.data;
457
+ return {
458
+ error: extractErrorMessage(errorData) ??
459
+ error.message ??
460
+ (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
461
+ };
462
+ }
463
+ return {
464
+ error: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
465
+ };
466
+ }
467
+ }
468
+ }
469
+ exports.AuthService = AuthService;
470
+ const createAuthService = (constants, baseUrl, eciesConfig, siteDomain) => new AuthService(constants, baseUrl, eciesConfig, siteDomain);
471
+ 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,CAuBlE,CAAC"}
@@ -0,0 +1,20 @@
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_1 = require("react-router");
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_1.useNavigate)();
11
+ const handleSubmit = async (...args) => {
12
+ const result = await backupCodeLogin(...args);
13
+ if ('token' in result && onSuccess) {
14
+ onSuccess();
15
+ }
16
+ return result;
17
+ };
18
+ return ((0, jsx_runtime_1.jsx)(BackupCodeLoginForm_1.BackupCodeLoginForm, { onSubmit: handleSubmit, onNavigate: navigate, isAuthenticated: isAuthenticated, ...componentProps }));
19
+ };
20
+ 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"}