@digitaldefiance/express-suite-react-components 2.9.36 → 2.9.38

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/LICENSE +21 -0
  2. package/package.json +4 -5
  3. package/src/auth/Private.tsx +17 -0
  4. package/src/auth/PrivateRoute.tsx +28 -0
  5. package/src/auth/UnAuth.tsx +16 -0
  6. package/src/auth/UnAuthRoute.tsx +30 -0
  7. package/src/auth/{index.d.ts → index.ts} +1 -2
  8. package/src/components/ApiAccess.tsx +174 -0
  9. package/src/components/BackupCodeLoginForm.tsx +488 -0
  10. package/src/components/BackupCodesForm.tsx +286 -0
  11. package/src/components/ChangePasswordForm.tsx +272 -0
  12. package/src/components/ConfirmationDialog.tsx +48 -0
  13. package/src/components/CurrencyCodeSelector.tsx +60 -0
  14. package/src/components/CurrencyInput.tsx +80 -0
  15. package/src/components/DashboardPage.tsx +24 -0
  16. package/src/components/DropdownMenu.tsx +92 -0
  17. package/src/components/ExpirationSecondsSelector.tsx +60 -0
  18. package/src/components/Flag.tsx +52 -0
  19. package/src/components/ForgotPasswordForm.tsx +173 -0
  20. package/src/components/LoginForm.tsx +455 -0
  21. package/src/components/LogoutPage.tsx +21 -0
  22. package/src/components/RegisterForm.tsx +602 -0
  23. package/src/components/ResetPasswordForm.tsx +246 -0
  24. package/src/components/SideMenu.tsx +46 -0
  25. package/src/components/SideMenuListItem.tsx +74 -0
  26. package/src/components/TopMenu.tsx +145 -0
  27. package/src/components/TranslatedTitle.tsx +29 -0
  28. package/src/components/UserLanguageSelector.tsx +45 -0
  29. package/src/components/UserMenu.tsx +15 -0
  30. package/src/components/UserSettingsForm.tsx +505 -0
  31. package/src/components/VerifyEmailPage.tsx +184 -0
  32. package/src/components/{index.d.ts → index.ts} +1 -1
  33. package/src/contexts/AuthProvider.spec.tsx +1195 -0
  34. package/src/contexts/AuthProvider.tsx +924 -0
  35. package/src/contexts/I18nProvider.tsx +114 -0
  36. package/src/contexts/MenuContext.tsx +398 -0
  37. package/src/contexts/SuiteConfigProvider.tsx +93 -0
  38. package/src/contexts/ThemeProvider.tsx +67 -0
  39. package/src/contexts/{index.d.ts → index.ts} +0 -1
  40. package/src/hooks/{index.d.ts → index.ts} +0 -1
  41. package/src/hooks/useBackupCodes.ts +105 -0
  42. package/src/hooks/useEmailVerification.ts +49 -0
  43. package/src/hooks/useExpiringValue.ts +78 -0
  44. package/src/hooks/useLocalStorage.ts +18 -0
  45. package/src/hooks/useUserSettings.ts +269 -0
  46. package/src/{index.d.ts → index.ts} +1 -1
  47. package/src/interfaces/IAppConfig.ts +5 -0
  48. package/src/interfaces/IMenuConfig.ts +11 -0
  49. package/src/interfaces/IMenuOption.ts +55 -0
  50. package/src/interfaces/index.ts +3 -0
  51. package/src/services/__mocks__/authService.ts +14 -0
  52. package/src/services/api.ts +13 -0
  53. package/src/services/authService.ts +500 -0
  54. package/src/services/authenticatedApi.ts +17 -0
  55. package/src/services/index.ts +3 -0
  56. package/src/types/MenuType.ts +15 -0
  57. package/src/types/expirationSeconds.ts +18 -0
  58. package/src/types/index.ts +1 -0
  59. package/src/types/translation.ts +20 -0
  60. package/src/wrappers/BackupCodeLoginWrapper.tsx +34 -0
  61. package/src/wrappers/BackupCodesWrapper.tsx +28 -0
  62. package/src/wrappers/ChangePasswordFormWrapper.tsx +34 -0
  63. package/src/wrappers/LoginFormWrapper.tsx +59 -0
  64. package/src/wrappers/LogoutPageWrapper.tsx +30 -0
  65. package/src/wrappers/RegisterFormWrapper.tsx +61 -0
  66. package/src/wrappers/UserSettingsFormWrapper.tsx +39 -0
  67. package/src/wrappers/VerifyEmailPageWrapper.tsx +27 -0
  68. package/src/wrappers/{index.d.ts → index.tsx} +8 -1
  69. package/src/auth/Private.d.ts +0 -6
  70. package/src/auth/Private.d.ts.map +0 -1
  71. package/src/auth/Private.js +0 -14
  72. package/src/auth/PrivateRoute.d.ts +0 -8
  73. package/src/auth/PrivateRoute.d.ts.map +0 -1
  74. package/src/auth/PrivateRoute.js +0 -23
  75. package/src/auth/UnAuth.d.ts +0 -6
  76. package/src/auth/UnAuth.d.ts.map +0 -1
  77. package/src/auth/UnAuth.js +0 -14
  78. package/src/auth/UnAuthRoute.d.ts +0 -8
  79. package/src/auth/UnAuthRoute.d.ts.map +0 -1
  80. package/src/auth/UnAuthRoute.js +0 -22
  81. package/src/auth/index.d.ts.map +0 -1
  82. package/src/auth/index.js +0 -10
  83. package/src/components/ApiAccess.d.ts +0 -16
  84. package/src/components/ApiAccess.d.ts.map +0 -1
  85. package/src/components/ApiAccess.js +0 -77
  86. package/src/components/BackupCodeLoginForm.d.ts +0 -43
  87. package/src/components/BackupCodeLoginForm.d.ts.map +0 -1
  88. package/src/components/BackupCodeLoginForm.js +0 -139
  89. package/src/components/BackupCodesForm.d.ts +0 -26
  90. package/src/components/BackupCodesForm.d.ts.map +0 -1
  91. package/src/components/BackupCodesForm.js +0 -120
  92. package/src/components/ChangePasswordForm.d.ts +0 -26
  93. package/src/components/ChangePasswordForm.d.ts.map +0 -1
  94. package/src/components/ChangePasswordForm.js +0 -78
  95. package/src/components/ConfirmationDialog.d.ts +0 -13
  96. package/src/components/ConfirmationDialog.d.ts.map +0 -1
  97. package/src/components/ConfirmationDialog.js +0 -10
  98. package/src/components/CurrencyCodeSelector.d.ts +0 -9
  99. package/src/components/CurrencyCodeSelector.d.ts.map +0 -1
  100. package/src/components/CurrencyCodeSelector.js +0 -31
  101. package/src/components/CurrencyInput.d.ts +0 -13
  102. package/src/components/CurrencyInput.d.ts.map +0 -1
  103. package/src/components/CurrencyInput.js +0 -22
  104. package/src/components/DashboardPage.d.ts +0 -8
  105. package/src/components/DashboardPage.d.ts.map +0 -1
  106. package/src/components/DashboardPage.js +0 -10
  107. package/src/components/DropdownMenu.d.ts +0 -9
  108. package/src/components/DropdownMenu.d.ts.map +0 -1
  109. package/src/components/DropdownMenu.js +0 -56
  110. package/src/components/ExpirationSecondsSelector.d.ts +0 -13
  111. package/src/components/ExpirationSecondsSelector.d.ts.map +0 -1
  112. package/src/components/ExpirationSecondsSelector.js +0 -32
  113. package/src/components/Flag.d.ts +0 -20
  114. package/src/components/Flag.d.ts.map +0 -1
  115. package/src/components/Flag.js +0 -43
  116. package/src/components/ForgotPasswordForm.d.ts +0 -18
  117. package/src/components/ForgotPasswordForm.d.ts.map +0 -1
  118. package/src/components/ForgotPasswordForm.js +0 -61
  119. package/src/components/LoginForm.d.ts +0 -44
  120. package/src/components/LoginForm.d.ts.map +0 -1
  121. package/src/components/LoginForm.js +0 -122
  122. package/src/components/LogoutPage.d.ts +0 -8
  123. package/src/components/LogoutPage.d.ts.map +0 -1
  124. package/src/components/LogoutPage.js +0 -16
  125. package/src/components/RegisterForm.d.ts +0 -56
  126. package/src/components/RegisterForm.d.ts.map +0 -1
  127. package/src/components/RegisterForm.js +0 -140
  128. package/src/components/ResetPasswordForm.d.ts +0 -23
  129. package/src/components/ResetPasswordForm.d.ts.map +0 -1
  130. package/src/components/ResetPasswordForm.js +0 -78
  131. package/src/components/SideMenu.d.ts +0 -8
  132. package/src/components/SideMenu.d.ts.map +0 -1
  133. package/src/components/SideMenu.js +0 -25
  134. package/src/components/SideMenuListItem.d.ts +0 -13
  135. package/src/components/SideMenuListItem.d.ts.map +0 -1
  136. package/src/components/SideMenuListItem.js +0 -44
  137. package/src/components/TopMenu.d.ts +0 -24
  138. package/src/components/TopMenu.d.ts.map +0 -1
  139. package/src/components/TopMenu.js +0 -35
  140. package/src/components/TranslatedTitle.d.ts +0 -7
  141. package/src/components/TranslatedTitle.d.ts.map +0 -1
  142. package/src/components/TranslatedTitle.js +0 -15
  143. package/src/components/UserLanguageSelector.d.ts +0 -4
  144. package/src/components/UserLanguageSelector.d.ts.map +0 -1
  145. package/src/components/UserLanguageSelector.js +0 -31
  146. package/src/components/UserMenu.d.ts +0 -4
  147. package/src/components/UserMenu.d.ts.map +0 -1
  148. package/src/components/UserMenu.js +0 -12
  149. package/src/components/UserSettingsForm.d.ts +0 -57
  150. package/src/components/UserSettingsForm.d.ts.map +0 -1
  151. package/src/components/UserSettingsForm.js +0 -126
  152. package/src/components/VerifyEmailPage.d.ts +0 -23
  153. package/src/components/VerifyEmailPage.d.ts.map +0 -1
  154. package/src/components/VerifyEmailPage.js +0 -70
  155. package/src/components/index.d.ts.map +0 -1
  156. package/src/components/index.js +0 -28
  157. package/src/contexts/AuthProvider.d.ts +0 -152
  158. package/src/contexts/AuthProvider.d.ts.map +0 -1
  159. package/src/contexts/AuthProvider.js +0 -502
  160. package/src/contexts/I18nProvider.d.ts +0 -16
  161. package/src/contexts/I18nProvider.d.ts.map +0 -1
  162. package/src/contexts/I18nProvider.js +0 -46
  163. package/src/contexts/MenuContext.d.ts +0 -20
  164. package/src/contexts/MenuContext.d.ts.map +0 -1
  165. package/src/contexts/MenuContext.js +0 -273
  166. package/src/contexts/SuiteConfigProvider.d.ts +0 -44
  167. package/src/contexts/SuiteConfigProvider.d.ts.map +0 -1
  168. package/src/contexts/SuiteConfigProvider.js +0 -43
  169. package/src/contexts/ThemeProvider.d.ts +0 -15
  170. package/src/contexts/ThemeProvider.d.ts.map +0 -1
  171. package/src/contexts/ThemeProvider.js +0 -36
  172. package/src/contexts/index.d.ts.map +0 -1
  173. package/src/contexts/index.js +0 -8
  174. package/src/hooks/index.d.ts.map +0 -1
  175. package/src/hooks/index.js +0 -8
  176. package/src/hooks/useBackupCodes.d.ts +0 -15
  177. package/src/hooks/useBackupCodes.d.ts.map +0 -1
  178. package/src/hooks/useBackupCodes.js +0 -74
  179. package/src/hooks/useEmailVerification.d.ts +0 -10
  180. package/src/hooks/useEmailVerification.d.ts.map +0 -1
  181. package/src/hooks/useEmailVerification.js +0 -40
  182. package/src/hooks/useExpiringValue.d.ts +0 -14
  183. package/src/hooks/useExpiringValue.d.ts.map +0 -1
  184. package/src/hooks/useExpiringValue.js +0 -53
  185. package/src/hooks/useLocalStorage.d.ts +0 -2
  186. package/src/hooks/useLocalStorage.d.ts.map +0 -1
  187. package/src/hooks/useLocalStorage.js +0 -15
  188. package/src/hooks/useUserSettings.d.ts +0 -48
  189. package/src/hooks/useUserSettings.d.ts.map +0 -1
  190. package/src/hooks/useUserSettings.js +0 -169
  191. package/src/index.d.ts.map +0 -1
  192. package/src/index.js +0 -12
  193. package/src/interfaces/IAppConfig.d.ts +0 -6
  194. package/src/interfaces/IAppConfig.d.ts.map +0 -1
  195. package/src/interfaces/IAppConfig.js +0 -2
  196. package/src/interfaces/IMenuConfig.d.ts +0 -11
  197. package/src/interfaces/IMenuConfig.d.ts.map +0 -1
  198. package/src/interfaces/IMenuConfig.js +0 -2
  199. package/src/interfaces/IMenuOption.d.ts +0 -58
  200. package/src/interfaces/IMenuOption.d.ts.map +0 -1
  201. package/src/interfaces/IMenuOption.js +0 -2
  202. package/src/interfaces/index.d.ts +0 -4
  203. package/src/interfaces/index.d.ts.map +0 -1
  204. package/src/interfaces/index.js +0 -6
  205. package/src/services/__mocks__/authService.d.ts +0 -21
  206. package/src/services/__mocks__/authService.d.ts.map +0 -1
  207. package/src/services/__mocks__/authService.js +0 -15
  208. package/src/services/api.d.ts +0 -3
  209. package/src/services/api.d.ts.map +0 -1
  210. package/src/services/api.js +0 -14
  211. package/src/services/authService.d.ts +0 -72
  212. package/src/services/authService.d.ts.map +0 -1
  213. package/src/services/authService.js +0 -335
  214. package/src/services/authenticatedApi.d.ts +0 -3
  215. package/src/services/authenticatedApi.d.ts.map +0 -1
  216. package/src/services/authenticatedApi.js +0 -18
  217. package/src/services/index.d.ts +0 -4
  218. package/src/services/index.d.ts.map +0 -1
  219. package/src/services/index.js +0 -6
  220. package/src/types/MenuType.d.ts +0 -11
  221. package/src/types/MenuType.d.ts.map +0 -1
  222. package/src/types/MenuType.js +0 -12
  223. package/src/types/expirationSeconds.d.ts +0 -3
  224. package/src/types/expirationSeconds.d.ts.map +0 -1
  225. package/src/types/expirationSeconds.js +0 -17
  226. package/src/types/index.d.ts +0 -2
  227. package/src/types/index.d.ts.map +0 -1
  228. package/src/types/index.js +0 -4
  229. package/src/types/translation.d.ts +0 -10
  230. package/src/types/translation.d.ts.map +0 -1
  231. package/src/types/translation.js +0 -9
  232. package/src/wrappers/BackupCodeLoginWrapper.d.ts +0 -8
  233. package/src/wrappers/BackupCodeLoginWrapper.d.ts.map +0 -1
  234. package/src/wrappers/BackupCodeLoginWrapper.js +0 -20
  235. package/src/wrappers/BackupCodesWrapper.d.ts +0 -7
  236. package/src/wrappers/BackupCodesWrapper.d.ts.map +0 -1
  237. package/src/wrappers/BackupCodesWrapper.js +0 -17
  238. package/src/wrappers/ChangePasswordFormWrapper.d.ts +0 -8
  239. package/src/wrappers/ChangePasswordFormWrapper.d.ts.map +0 -1
  240. package/src/wrappers/ChangePasswordFormWrapper.js +0 -21
  241. package/src/wrappers/LoginFormWrapper.d.ts +0 -9
  242. package/src/wrappers/LoginFormWrapper.d.ts.map +0 -1
  243. package/src/wrappers/LoginFormWrapper.js +0 -43
  244. package/src/wrappers/LogoutPageWrapper.d.ts +0 -9
  245. package/src/wrappers/LogoutPageWrapper.d.ts.map +0 -1
  246. package/src/wrappers/LogoutPageWrapper.js +0 -21
  247. package/src/wrappers/RegisterFormWrapper.d.ts +0 -9
  248. package/src/wrappers/RegisterFormWrapper.d.ts.map +0 -1
  249. package/src/wrappers/RegisterFormWrapper.js +0 -31
  250. package/src/wrappers/UserSettingsFormWrapper.d.ts +0 -8
  251. package/src/wrappers/UserSettingsFormWrapper.d.ts.map +0 -1
  252. package/src/wrappers/UserSettingsFormWrapper.js +0 -24
  253. package/src/wrappers/VerifyEmailPageWrapper.d.ts +0 -8
  254. package/src/wrappers/VerifyEmailPageWrapper.d.ts.map +0 -1
  255. package/src/wrappers/VerifyEmailPageWrapper.js +0 -20
  256. package/src/wrappers/index.d.ts.map +0 -1
  257. package/src/wrappers/index.js +0 -20
@@ -1,273 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useMenu = exports.MenuProvider = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- // src/app/menuContext.tsx
6
- const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
7
- const icons_material_1 = require("@mui/icons-material");
8
- const react_1 = require("react");
9
- const hooks_1 = require("../hooks");
10
- const services_1 = require("../services");
11
- const MenuType_1 = require("../types/MenuType");
12
- const AuthProvider_1 = require("./AuthProvider");
13
- const I18nProvider_1 = require("./I18nProvider");
14
- const SuiteConfigProvider_1 = require("./SuiteConfigProvider");
15
- const ThemeProvider_1 = require("./ThemeProvider");
16
- const MenuContext = (0, react_1.createContext)(undefined);
17
- const MenuProvider = ({ children, menuConfigs = [], enableBackupCodes = true, }) => {
18
- const { userData: user, isAuthenticated, mnemonic, clearMnemonic, wallet, clearWallet, } = (0, AuthProvider_1.useAuth)();
19
- const { mode: colorMode } = (0, ThemeProvider_1.useTheme)();
20
- const registeredMenuOptions = (0, react_1.useRef)(new Set());
21
- const [registeredOptions, setRegisteredOptions] = (0, react_1.useState)(new Map());
22
- const { tComponent } = (0, I18nProvider_1.useI18n)();
23
- const { baseUrl } = (0, SuiteConfigProvider_1.useSuiteConfig)();
24
- const authenticatedApi = (0, react_1.useMemo)(() => (0, services_1.createAuthenticatedApiClient)(baseUrl), [baseUrl]);
25
- const { toggleColorMode } = (0, hooks_1.useUserSettings)({
26
- authenticatedApi,
27
- isAuthenticated,
28
- });
29
- const registerMenuOption = (0, react_1.useCallback)((option) => {
30
- const unregister = () => {
31
- setRegisteredOptions((prev) => {
32
- const newMap = new Map(prev);
33
- newMap.delete(option.id);
34
- return newMap;
35
- });
36
- registeredMenuOptions.current.delete(unregister);
37
- };
38
- setRegisteredOptions((prev) => {
39
- const newMap = new Map(prev);
40
- newMap.set(option.id, option);
41
- return newMap;
42
- });
43
- registeredMenuOptions.current.add(unregister);
44
- return unregister;
45
- }, []);
46
- const registerMenuOptions = (0, react_1.useCallback)((options) => {
47
- const unregisterFunctions = options.map(registerMenuOption);
48
- return () => unregisterFunctions.forEach((f) => f());
49
- }, [registerMenuOption]);
50
- const menuOptions = (0, react_1.useMemo)(() => {
51
- const isUserRestricted = () => {
52
- return user?.roles?.some((role) => role.child) ?? false;
53
- };
54
- let index = 0;
55
- const baseOptions = [
56
- {
57
- id: 'dashboard',
58
- label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_Dashboard),
59
- icon: (0, jsx_runtime_1.jsx)(icons_material_1.Dashboard, {}),
60
- link: '/dashboard',
61
- requiresAuth: true,
62
- includeOnMenus: [MenuType_1.MenuTypes.SideMenu],
63
- index: index++,
64
- },
65
- {
66
- id: 'user-divider',
67
- label: '',
68
- divider: true,
69
- includeOnMenus: [MenuType_1.MenuTypes.SideMenu],
70
- index: index++,
71
- requiresAuth: false,
72
- },
73
- {
74
- id: 'logout',
75
- label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.LogoutButton),
76
- icon: (0, jsx_runtime_1.jsx)(icons_material_1.ExitToApp, {}),
77
- link: '/logout',
78
- requiresAuth: true,
79
- includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
80
- index: index++,
81
- },
82
- {
83
- id: 'login',
84
- label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Login_LoginButton),
85
- icon: (0, jsx_runtime_1.jsx)(icons_material_1.Login, {}),
86
- link: '/login',
87
- requiresAuth: false,
88
- includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
89
- index: index++,
90
- },
91
- {
92
- id: 'register',
93
- label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.RegisterButton),
94
- icon: (0, jsx_runtime_1.jsx)(icons_material_1.PersonAdd, {}),
95
- link: '/register',
96
- requiresAuth: false,
97
- includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
98
- index: index++,
99
- },
100
- {
101
- id: 'forgot-password',
102
- label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.ForgotPassword_Title),
103
- icon: (0, jsx_runtime_1.jsx)(icons_material_1.LockOpen, {}),
104
- link: '/forgot-password',
105
- requiresAuth: false,
106
- includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
107
- index: index++,
108
- },
109
- {
110
- id: 'change-password',
111
- label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_ChangePassword),
112
- icon: (0, jsx_runtime_1.jsx)(icons_material_1.LockReset, {}),
113
- link: '/change-password',
114
- requiresAuth: true,
115
- includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
116
- index: index++,
117
- },
118
- ...(enableBackupCodes
119
- ? [
120
- {
121
- id: 'backup-code',
122
- label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.BackupCodeRecovery_Title),
123
- icon: (0, jsx_runtime_1.jsx)(icons_material_1.Key, {}),
124
- link: '/backup-code',
125
- requiresAuth: false,
126
- includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
127
- index: index++,
128
- },
129
- {
130
- id: 'backup-codes',
131
- label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.BackupCodeRecovery_GenerateNewCodes),
132
- icon: (0, jsx_runtime_1.jsx)(icons_material_1.Autorenew, {}),
133
- link: '/backup-codes',
134
- requiresAuth: true,
135
- includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
136
- index: index++,
137
- },
138
- ]
139
- : []),
140
- {
141
- id: 'divider',
142
- label: '',
143
- divider: true,
144
- includeOnMenus: [MenuType_1.MenuTypes.SideMenu],
145
- index: index++,
146
- requiresAuth: false,
147
- },
148
- {
149
- id: 'clear-mnemonic',
150
- label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_ClearMnemonic),
151
- action: clearMnemonic,
152
- icon: (0, jsx_runtime_1.jsx)(icons_material_1.Key, {}),
153
- requiresAuth: true,
154
- includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
155
- index: index++,
156
- filter: () => !!mnemonic,
157
- },
158
- {
159
- id: 'clear-wallet',
160
- label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_ClearWallet),
161
- action: clearWallet,
162
- icon: (0, jsx_runtime_1.jsx)(icons_material_1.Key, {}),
163
- requiresAuth: true,
164
- includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
165
- index: index++,
166
- filter: () => !!wallet,
167
- },
168
- ...(isUserRestricted() ? [] : []),
169
- {
170
- id: 'color-divider',
171
- label: '',
172
- divider: true,
173
- includeOnMenus: [MenuType_1.MenuTypes.SideMenu],
174
- index: index++,
175
- requiresAuth: undefined,
176
- },
177
- {
178
- id: 'theme-toggle',
179
- label: colorMode === 'dark'
180
- ? tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_ThemeToggle_Light)
181
- : tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_ThemeToggle_Dark),
182
- icon: colorMode === 'dark' ? (0, jsx_runtime_1.jsx)(icons_material_1.Brightness7, {}) : (0, jsx_runtime_1.jsx)(icons_material_1.Brightness4, {}),
183
- includeOnMenus: [MenuType_1.MenuTypes.SideMenu],
184
- index: index++,
185
- requiresAuth: undefined,
186
- action: toggleColorMode,
187
- },
188
- {
189
- id: 'user-settings',
190
- label: tComponent(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Settings_Title),
191
- icon: (0, jsx_runtime_1.jsx)(icons_material_1.Settings, {}),
192
- link: '/user-settings',
193
- requiresAuth: true,
194
- includeOnMenus: [MenuType_1.MenuTypes.UserMenu, MenuType_1.MenuTypes.SideMenu],
195
- index: index++,
196
- },
197
- ];
198
- const allOptions = [...baseOptions, ...registeredOptions.values()];
199
- return allOptions.sort((a, b) => a.index - b.index);
200
- }, [
201
- tComponent,
202
- registeredOptions,
203
- user?.roles,
204
- colorMode,
205
- toggleColorMode,
206
- clearMnemonic,
207
- clearWallet,
208
- mnemonic,
209
- wallet,
210
- enableBackupCodes,
211
- ]);
212
- const getMenuOptions = (0, react_1.useCallback)((menuType, includeDividers) => {
213
- const MenuFilter = (o) => {
214
- // Apply the custom filter first
215
- let customFilterPasses = true;
216
- if (o.filter !== undefined) {
217
- customFilterPasses = o.filter(o);
218
- }
219
- if (!customFilterPasses)
220
- return false;
221
- if (o.divider === true && !includeDividers)
222
- return false;
223
- return (o.includeOnMenus.includes(menuType) &&
224
- (o.requiresAuth === undefined || o.requiresAuth === isAuthenticated));
225
- };
226
- return menuOptions.filter(MenuFilter);
227
- }, [isAuthenticated, menuOptions]);
228
- (0, react_1.useEffect)(() => {
229
- if (menuConfigs.length > 0) {
230
- return registerMenuOptions(menuConfigs.flatMap((config) => config.options));
231
- }
232
- return undefined;
233
- }, [menuConfigs, registerMenuOptions]);
234
- const getTopMenus = (0, react_1.useCallback)(() => {
235
- const menus = [
236
- ...menuConfigs.map((config) => ({ ...config, isUserMenu: false })),
237
- {
238
- menuType: MenuType_1.MenuTypes.UserMenu,
239
- menuIcon: (0, jsx_runtime_1.jsx)(icons_material_1.AccountCircle, {}),
240
- priority: 0,
241
- options: [],
242
- isUserMenu: true,
243
- },
244
- ];
245
- return menus.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
246
- }, [menuConfigs]);
247
- const contextValue = (0, react_1.useMemo)(() => {
248
- return {
249
- menuOptions: menuOptions,
250
- getMenuOptions: getMenuOptions,
251
- registerMenuOption: registerMenuOption,
252
- registerMenuOptions: registerMenuOptions,
253
- getTopMenus: getTopMenus,
254
- };
255
- }, [
256
- menuOptions,
257
- getMenuOptions,
258
- registerMenuOption,
259
- registerMenuOptions,
260
- getTopMenus,
261
- ]);
262
- const memoizedChildren = (0, react_1.useMemo)(() => children, [children]);
263
- return ((0, jsx_runtime_1.jsx)(MenuContext.Provider, { value: contextValue, children: memoizedChildren }));
264
- };
265
- exports.MenuProvider = MenuProvider;
266
- const useMenu = () => {
267
- const context = (0, react_1.useContext)(MenuContext);
268
- if (context === undefined) {
269
- throw new Error('useMenu must be used within a MenuProvider');
270
- }
271
- return context;
272
- };
273
- exports.useMenu = useMenu;
@@ -1,44 +0,0 @@
1
- import { ReactNode } from 'react';
2
- export interface SuiteConfigRoutes {
3
- dashboard?: string;
4
- login?: string;
5
- register?: string;
6
- verifyEmail?: string;
7
- forgotPassword?: string;
8
- resetPassword?: string;
9
- settings?: string;
10
- }
11
- export interface SuiteConfigContextData {
12
- /**
13
- * Base URL for API calls
14
- */
15
- baseUrl: string;
16
- /**
17
- * Application routes for navigation
18
- */
19
- routes: SuiteConfigRoutes;
20
- /**
21
- * Available languages for the application
22
- */
23
- languages: Array<{
24
- code: string;
25
- label: string;
26
- }>;
27
- /**
28
- * Available timezones
29
- */
30
- timezones?: string[];
31
- }
32
- export interface SuiteConfigProviderProps {
33
- children: ReactNode;
34
- baseUrl: string;
35
- routes?: Partial<SuiteConfigRoutes>;
36
- languages?: Array<{
37
- code: string;
38
- label: string;
39
- }>;
40
- timezones?: string[];
41
- }
42
- export declare const SuiteConfigProvider: ({ children, baseUrl, routes, languages, timezones, }: SuiteConfigProviderProps) => import("react/jsx-runtime").JSX.Element;
43
- export declare const useSuiteConfig: () => SuiteConfigContextData;
44
- //# sourceMappingURL=SuiteConfigProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SuiteConfigProvider.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/contexts/SuiteConfigProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAc,MAAM,OAAO,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,iBAAiB,CAAC;IAE1B;;OAEG;IACH,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAElD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAyBD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,mBAAmB,GAAI,sDAMjC,wBAAwB,4CAa1B,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,sBAMjC,CAAC"}
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useSuiteConfig = exports.SuiteConfigProvider = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const defaultRoutes = {
7
- dashboard: '/dashboard',
8
- login: '/login',
9
- register: '/register',
10
- verifyEmail: '/verify-email',
11
- forgotPassword: '/forgot-password',
12
- resetPassword: '/reset-password',
13
- settings: '/settings',
14
- };
15
- const defaultLanguages = [
16
- { code: 'en-US', label: 'English (US)' },
17
- { code: 'en-GB', label: 'English (UK)' },
18
- { code: 'es-ES', label: 'Español' },
19
- { code: 'fr-FR', label: 'Français' },
20
- { code: 'de-DE', label: 'Deutsch' },
21
- { code: 'ja', label: '日本語' },
22
- { code: 'zh-CN', label: '中文 (简体)' },
23
- { code: 'uk', label: 'Українська' },
24
- ];
25
- const SuiteConfigContext = (0, react_1.createContext)(undefined);
26
- const SuiteConfigProvider = ({ children, baseUrl, routes = {}, languages = defaultLanguages, timezones, }) => {
27
- const value = {
28
- baseUrl,
29
- routes: { ...defaultRoutes, ...routes },
30
- languages,
31
- timezones,
32
- };
33
- return ((0, jsx_runtime_1.jsx)(SuiteConfigContext.Provider, { value: value, children: children }));
34
- };
35
- exports.SuiteConfigProvider = SuiteConfigProvider;
36
- const useSuiteConfig = () => {
37
- const context = (0, react_1.useContext)(SuiteConfigContext);
38
- if (!context) {
39
- throw new Error('useSuiteConfig must be used within a SuiteConfigProvider');
40
- }
41
- return context;
42
- };
43
- exports.useSuiteConfig = useSuiteConfig;
@@ -1,15 +0,0 @@
1
- import { PaletteMode, Theme } from '@mui/material';
2
- import { FC, ReactNode } from 'react';
3
- export interface ThemeContextType {
4
- toggleColorMode: () => void;
5
- setColorMode: (mode: PaletteMode) => void;
6
- mode: PaletteMode;
7
- }
8
- export declare const useTheme: () => ThemeContextType;
9
- export interface AppThemeProviderProps {
10
- children: ReactNode;
11
- customTheme?: (mode: PaletteMode) => Theme;
12
- }
13
- export declare const AppThemeProvider: FC<AppThemeProviderProps>;
14
- export declare const ThemeToggleButton: FC;
15
- //# sourceMappingURL=ThemeProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/contexts/ThemeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,WAAW,EAEX,KAAK,EACN,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,EAAE,EAAE,SAAS,EAAgD,MAAM,OAAO,CAAC;AAEpF,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,YAAY,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1C,IAAI,EAAE,WAAW,CAAC;CACnB;AAID,eAAO,MAAM,QAAQ,wBAMpB,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,KAAK,CAAC;CAC5C;AAED,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA0BtD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,EAO/B,CAAC"}
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ThemeToggleButton = exports.AppThemeProvider = exports.useTheme = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const icons_material_1 = require("@mui/icons-material");
6
- const material_1 = require("@mui/material");
7
- const react_1 = require("react");
8
- const ThemeContext = (0, react_1.createContext)(undefined);
9
- const useTheme = () => {
10
- const context = (0, react_1.useContext)(ThemeContext);
11
- if (!context) {
12
- throw new Error('useTheme must be used within an AppThemeProvider');
13
- }
14
- return context;
15
- };
16
- exports.useTheme = useTheme;
17
- const AppThemeProvider = ({ children, customTheme }) => {
18
- const [mode, setMode] = (0, react_1.useState)('light');
19
- const colorMode = (0, react_1.useMemo)(() => ({
20
- toggleColorMode: () => {
21
- setMode((prevMode) => (prevMode === 'light' ? 'dark' : 'light'));
22
- },
23
- setColorMode: (newMode) => {
24
- setMode(newMode);
25
- },
26
- mode,
27
- }), [mode]);
28
- const theme = (0, react_1.useMemo)(() => (customTheme ? customTheme(mode) : (0, material_1.createTheme)({ palette: { mode } })), [mode, customTheme]);
29
- return ((0, jsx_runtime_1.jsx)(ThemeContext.Provider, { value: colorMode, children: (0, jsx_runtime_1.jsx)(material_1.ThemeProvider, { theme: theme, children: children }) }));
30
- };
31
- exports.AppThemeProvider = AppThemeProvider;
32
- const ThemeToggleButton = () => {
33
- const { mode, toggleColorMode } = (0, exports.useTheme)();
34
- return ((0, jsx_runtime_1.jsx)(material_1.IconButton, { onClick: toggleColorMode, color: "inherit", children: mode === 'dark' ? (0, jsx_runtime_1.jsx)(icons_material_1.Brightness7, {}) : (0, jsx_runtime_1.jsx)(icons_material_1.Brightness4, {}) }));
35
- };
36
- exports.ThemeToggleButton = ThemeToggleButton;
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC"}
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./AuthProvider"), exports);
5
- tslib_1.__exportStar(require("./MenuContext"), exports);
6
- tslib_1.__exportStar(require("./I18nProvider"), exports);
7
- tslib_1.__exportStar(require("./ThemeProvider"), exports);
8
- tslib_1.__exportStar(require("./SuiteConfigProvider"), exports);
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./useExpiringValue"), exports);
5
- tslib_1.__exportStar(require("./useLocalStorage"), exports);
6
- tslib_1.__exportStar(require("./useBackupCodes"), exports);
7
- tslib_1.__exportStar(require("./useUserSettings"), exports);
8
- tslib_1.__exportStar(require("./useEmailVerification"), exports);
@@ -1,15 +0,0 @@
1
- export interface UseBackupCodesOptions {
2
- initialCodeCount?: number | null;
3
- }
4
- export interface UseBackupCodesResult {
5
- backupCodesRemaining: number | null;
6
- isLoading: boolean;
7
- error: Error | null;
8
- generateBackupCodes: (password?: string, mnemonic?: string) => Promise<{
9
- message: string;
10
- backupCodes: string[];
11
- }>;
12
- refreshCodeCount: () => Promise<void>;
13
- }
14
- export declare const useBackupCodes: (options?: UseBackupCodesOptions) => UseBackupCodesResult;
15
- //# sourceMappingURL=useBackupCodes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useBackupCodes.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/hooks/useBackupCodes.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,mBAAmB,EAAE,CACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,KACd,OAAO,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC,CAAC;IACH,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,cAAc,GACzB,UAAS,qBAA0B,KAClC,oBA4EF,CAAC"}
@@ -1,74 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useBackupCodes = void 0;
4
- const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
5
- const react_1 = require("react");
6
- const contexts_1 = require("../contexts");
7
- const services_1 = require("../services");
8
- const useBackupCodes = (options = {}) => {
9
- const { baseUrl } = (0, contexts_1.useSuiteConfig)();
10
- const [backupCodesRemaining, setBackupCodesRemaining] = (0, react_1.useState)(options.initialCodeCount ?? null);
11
- const [isLoading, setIsLoading] = (0, react_1.useState)(false);
12
- const [error, setError] = (0, react_1.useState)(null);
13
- const requestedOnMountRef = (0, react_1.useRef)(false);
14
- const api = (0, react_1.useMemo)(() => (0, services_1.createAuthenticatedApiClient)(baseUrl), [baseUrl]);
15
- const refreshCodeCount = (0, react_1.useCallback)(async () => {
16
- setIsLoading(true);
17
- setError(null);
18
- try {
19
- const result = await api.get('/user/backup-codes');
20
- if (result?.data?.codeCount !== undefined) {
21
- setBackupCodesRemaining(result.data.codeCount);
22
- }
23
- }
24
- catch (err) {
25
- setError(err instanceof Error
26
- ? err
27
- : new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.BackupCodes_FailedToFetch));
28
- setBackupCodesRemaining(0);
29
- }
30
- finally {
31
- setIsLoading(false);
32
- }
33
- }, [api]);
34
- (0, react_1.useEffect)(() => {
35
- if (requestedOnMountRef.current)
36
- return;
37
- if (backupCodesRemaining !== null)
38
- return;
39
- requestedOnMountRef.current = true;
40
- refreshCodeCount();
41
- }, [backupCodesRemaining, refreshCodeCount]);
42
- const generateBackupCodes = async (password, mnemonic) => {
43
- setIsLoading(true);
44
- setError(null);
45
- try {
46
- const result = await api.post('/user/backup-codes', {
47
- ...(password ? { password } : {}),
48
- ...(mnemonic ? { mnemonic } : {}),
49
- });
50
- return {
51
- message: result.data.message,
52
- backupCodes: result.data.backupCodes,
53
- };
54
- }
55
- catch (err) {
56
- const error = err instanceof Error
57
- ? err
58
- : new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.BackupCodes_FailedToGenerate);
59
- setError(error);
60
- throw error;
61
- }
62
- finally {
63
- setIsLoading(false);
64
- }
65
- };
66
- return {
67
- backupCodesRemaining,
68
- isLoading,
69
- error,
70
- generateBackupCodes,
71
- refreshCodeCount,
72
- };
73
- };
74
- exports.useBackupCodes = useBackupCodes;
@@ -1,10 +0,0 @@
1
- export interface UseEmailVerificationResult {
2
- isVerifying: boolean;
3
- error: Error | null;
4
- verifyEmail: (token: string) => Promise<{
5
- success: boolean;
6
- message?: string;
7
- }>;
8
- }
9
- export declare const useEmailVerification: () => UseEmailVerificationResult;
10
- //# sourceMappingURL=useEmailVerification.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useEmailVerification.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/hooks/useEmailVerification.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,CACX,KAAK,EAAE,MAAM,KACV,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,eAAO,MAAM,oBAAoB,QAAO,0BAgCvC,CAAC"}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useEmailVerification = void 0;
4
- const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
5
- const react_1 = require("react");
6
- const contexts_1 = require("../contexts");
7
- const services_1 = require("../services");
8
- const useEmailVerification = () => {
9
- const { baseUrl } = (0, contexts_1.useSuiteConfig)();
10
- const api = (0, react_1.useMemo)(() => (0, services_1.createAuthenticatedApiClient)(baseUrl), [baseUrl]);
11
- const [isVerifying, setIsVerifying] = (0, react_1.useState)(false);
12
- const [error, setError] = (0, react_1.useState)(null);
13
- const verifyEmail = async (verificationToken) => {
14
- setIsVerifying(true);
15
- setError(null);
16
- try {
17
- const result = await api.post('/verify-email', {
18
- token: verificationToken,
19
- });
20
- return { success: true, message: result.data.message };
21
- }
22
- catch (err) {
23
- const axiosError = err;
24
- const errorMessage = axiosError.response?.data?.message ||
25
- (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Error_VerificationFailed);
26
- const error = new Error(errorMessage);
27
- setError(error);
28
- return { success: false, message: errorMessage };
29
- }
30
- finally {
31
- setIsVerifying(false);
32
- }
33
- };
34
- return {
35
- isVerifying,
36
- error,
37
- verifyEmail,
38
- };
39
- };
40
- exports.useEmailVerification = useEmailVerification;
@@ -1,14 +0,0 @@
1
- export interface TimerInfo {
2
- timeout: NodeJS.Timeout;
3
- startTime: number;
4
- durationMs: number;
5
- }
6
- export interface ExpiringValueReturn<T> {
7
- value: T | undefined;
8
- setValue: (newValue: T, durationSeconds?: number, saveToStorage?: boolean) => () => void;
9
- clearValue: () => void;
10
- getRemainingTime: () => number;
11
- isActive: boolean;
12
- }
13
- export declare function useExpiringValue<T>(defaultDurationSeconds: number, localStorageKey?: string): ExpiringValueReturn<T>;
14
- //# sourceMappingURL=useExpiringValue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useExpiringValue.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/hooks/useExpiringValue.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IACrB,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,KAAK,MAAM,IAAI,CAAC;IACzF,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,sBAAsB,EAAE,MAAM,EAC9B,eAAe,CAAC,EAAE,MAAM,GACvB,mBAAmB,CAAC,CAAC,CAAC,CA0DxB"}