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

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 (311) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +3 -4
  3. package/src/auth/AdminRoute.tsx +54 -0
  4. package/src/auth/Private.tsx +17 -0
  5. package/src/auth/PrivateRoute.tsx +28 -0
  6. package/src/auth/UnAuth.tsx +16 -0
  7. package/src/auth/UnAuthRoute.tsx +30 -0
  8. package/src/auth/{index.d.ts → index.ts} +2 -3
  9. package/src/components/ApiAccess.tsx +175 -0
  10. package/src/components/BackupCodeLoginForm.tsx +489 -0
  11. package/src/components/BackupCodesForm.tsx +287 -0
  12. package/src/components/CategoryMenu.tsx +155 -0
  13. package/src/components/ChangePasswordForm.tsx +273 -0
  14. package/src/components/ConfirmationDialog.tsx +48 -0
  15. package/src/components/CurrencyCodeSelector.tsx +60 -0
  16. package/src/components/CurrencyInput.tsx +80 -0
  17. package/src/components/DashboardPage.tsx +24 -0
  18. package/src/components/DropdownMenu.tsx +105 -0
  19. package/src/components/ExpirationSecondsSelector.tsx +60 -0
  20. package/src/components/FakeEmailAdminPanel.tsx +374 -0
  21. package/src/components/Flag.tsx +52 -0
  22. package/src/components/ForgotPasswordForm.tsx +174 -0
  23. package/src/components/LoginForm.tsx +468 -0
  24. package/src/components/LogoutPage.tsx +21 -0
  25. package/src/components/RegisterForm.tsx +1169 -0
  26. package/src/components/ResetPasswordForm.tsx +247 -0
  27. package/src/components/SideMenu.tsx +46 -0
  28. package/src/components/SideMenuListItem.tsx +75 -0
  29. package/src/components/T.tsx +24 -0
  30. package/src/components/TDiv.tsx +26 -0
  31. package/src/components/TImgAlt.tsx +28 -0
  32. package/src/components/TopMenu.tsx +252 -0
  33. package/src/components/TotpSetupForm.tsx +188 -0
  34. package/src/components/TotpVerificationForm.tsx +148 -0
  35. package/src/components/TranslatedTitle.tsx +31 -0
  36. package/src/components/UserLanguageSelector.tsx +45 -0
  37. package/src/components/UserMenu.tsx +15 -0
  38. package/src/components/UserSettingsForm.tsx +904 -0
  39. package/src/components/VerifyEmailPage.tsx +222 -0
  40. package/src/components/__tests__/RegisterForm.totp.spec.tsx +377 -0
  41. package/src/components/__tests__/TotpSetupForm.spec.tsx +258 -0
  42. package/src/components/__tests__/TotpVerificationForm.spec.tsx +259 -0
  43. package/src/components/__tests__/UserSettingsForm.totp.spec.tsx +396 -0
  44. package/src/components/{index.d.ts → index.ts} +1 -1
  45. package/src/contexts/AuthProvider.spec.tsx +1284 -0
  46. package/src/contexts/AuthProvider.tsx +977 -0
  47. package/src/contexts/I18nProvider.tsx +164 -0
  48. package/src/contexts/MenuContext.tsx +426 -0
  49. package/src/contexts/SuiteConfigProvider.tsx +93 -0
  50. package/src/contexts/ThemeProvider.tsx +67 -0
  51. package/src/contexts/{index.d.ts → index.ts} +0 -1
  52. package/src/hooks/{index.d.ts → index.ts} +0 -1
  53. package/src/hooks/useAuthenticatedApi.tsx +67 -0
  54. package/src/hooks/useBackupCodes.ts +105 -0
  55. package/src/hooks/useEmailVerification.ts +54 -0
  56. package/src/hooks/useExpiringValue.ts +78 -0
  57. package/src/hooks/useLocalStorage.ts +18 -0
  58. package/src/hooks/useUserSettings.ts +271 -0
  59. package/src/{index.d.ts → index.ts} +1 -1
  60. package/src/interfaces/IAppConfig.ts +7 -0
  61. package/src/interfaces/ICategoryConfig.ts +41 -0
  62. package/src/interfaces/IMenuConfig.ts +28 -0
  63. package/src/interfaces/IMenuOption.ts +79 -0
  64. package/src/interfaces/{index.d.ts → index.ts} +0 -1
  65. package/src/services/__mocks__/authService.ts +14 -0
  66. package/src/services/__tests__/authService.totp.property.spec.ts +360 -0
  67. package/src/services/__tests__/authService.totp.spec.ts +439 -0
  68. package/src/services/api.ts +13 -0
  69. package/src/services/authService.ts +692 -0
  70. package/src/services/authenticatedApi.ts +17 -0
  71. package/src/services/index.ts +3 -0
  72. package/src/types/MenuType.ts +15 -0
  73. package/src/types/expirationSeconds.ts +18 -0
  74. package/src/types/index.ts +1 -0
  75. package/src/types/translation.ts +20 -0
  76. package/src/wrappers/BackupCodeLoginWrapper.tsx +34 -0
  77. package/src/wrappers/BackupCodesWrapper.tsx +28 -0
  78. package/src/wrappers/ChangePasswordFormWrapper.tsx +34 -0
  79. package/src/wrappers/ForgotPasswordFormWrapper.tsx +45 -0
  80. package/src/wrappers/LoginFormWrapper.tsx +108 -0
  81. package/src/wrappers/LogoutPageWrapper.tsx +30 -0
  82. package/src/wrappers/RegisterFormWrapper.tsx +109 -0
  83. package/src/wrappers/ResetPasswordFormWrapper.tsx +57 -0
  84. package/src/wrappers/UserSettingsFormWrapper.tsx +140 -0
  85. package/src/wrappers/VerifyEmailPageWrapper.tsx +27 -0
  86. package/src/wrappers/__tests__/LoginFormWrapper.totp.spec.tsx +339 -0
  87. package/src/wrappers/{index.d.ts → index.tsx} +10 -1
  88. package/src/auth/AdminRoute.d.ts +0 -8
  89. package/src/auth/AdminRoute.d.ts.map +0 -1
  90. package/src/auth/AdminRoute.js +0 -28
  91. package/src/auth/Private.d.ts +0 -6
  92. package/src/auth/Private.d.ts.map +0 -1
  93. package/src/auth/Private.js +0 -14
  94. package/src/auth/PrivateRoute.d.ts +0 -8
  95. package/src/auth/PrivateRoute.d.ts.map +0 -1
  96. package/src/auth/PrivateRoute.js +0 -23
  97. package/src/auth/UnAuth.d.ts +0 -6
  98. package/src/auth/UnAuth.d.ts.map +0 -1
  99. package/src/auth/UnAuth.js +0 -14
  100. package/src/auth/UnAuthRoute.d.ts +0 -8
  101. package/src/auth/UnAuthRoute.d.ts.map +0 -1
  102. package/src/auth/UnAuthRoute.js +0 -22
  103. package/src/auth/index.d.ts.map +0 -1
  104. package/src/auth/index.js +0 -12
  105. package/src/components/ApiAccess.d.ts +0 -16
  106. package/src/components/ApiAccess.d.ts.map +0 -1
  107. package/src/components/ApiAccess.js +0 -77
  108. package/src/components/BackupCodeLoginForm.d.ts +0 -43
  109. package/src/components/BackupCodeLoginForm.d.ts.map +0 -1
  110. package/src/components/BackupCodeLoginForm.js +0 -139
  111. package/src/components/BackupCodesForm.d.ts +0 -26
  112. package/src/components/BackupCodesForm.d.ts.map +0 -1
  113. package/src/components/BackupCodesForm.js +0 -120
  114. package/src/components/CategoryMenu.d.ts +0 -17
  115. package/src/components/CategoryMenu.d.ts.map +0 -1
  116. package/src/components/CategoryMenu.js +0 -65
  117. package/src/components/ChangePasswordForm.d.ts +0 -26
  118. package/src/components/ChangePasswordForm.d.ts.map +0 -1
  119. package/src/components/ChangePasswordForm.js +0 -78
  120. package/src/components/ConfirmationDialog.d.ts +0 -13
  121. package/src/components/ConfirmationDialog.d.ts.map +0 -1
  122. package/src/components/ConfirmationDialog.js +0 -10
  123. package/src/components/CurrencyCodeSelector.d.ts +0 -9
  124. package/src/components/CurrencyCodeSelector.d.ts.map +0 -1
  125. package/src/components/CurrencyCodeSelector.js +0 -31
  126. package/src/components/CurrencyInput.d.ts +0 -13
  127. package/src/components/CurrencyInput.d.ts.map +0 -1
  128. package/src/components/CurrencyInput.js +0 -22
  129. package/src/components/DashboardPage.d.ts +0 -8
  130. package/src/components/DashboardPage.d.ts.map +0 -1
  131. package/src/components/DashboardPage.js +0 -10
  132. package/src/components/DropdownMenu.d.ts +0 -13
  133. package/src/components/DropdownMenu.d.ts.map +0 -1
  134. package/src/components/DropdownMenu.js +0 -63
  135. package/src/components/ExpirationSecondsSelector.d.ts +0 -13
  136. package/src/components/ExpirationSecondsSelector.d.ts.map +0 -1
  137. package/src/components/ExpirationSecondsSelector.js +0 -32
  138. package/src/components/FakeEmailAdminPanel.d.ts +0 -23
  139. package/src/components/FakeEmailAdminPanel.d.ts.map +0 -1
  140. package/src/components/FakeEmailAdminPanel.js +0 -147
  141. package/src/components/Flag.d.ts +0 -20
  142. package/src/components/Flag.d.ts.map +0 -1
  143. package/src/components/Flag.js +0 -43
  144. package/src/components/ForgotPasswordForm.d.ts +0 -18
  145. package/src/components/ForgotPasswordForm.d.ts.map +0 -1
  146. package/src/components/ForgotPasswordForm.js +0 -61
  147. package/src/components/LoginForm.d.ts +0 -44
  148. package/src/components/LoginForm.d.ts.map +0 -1
  149. package/src/components/LoginForm.js +0 -123
  150. package/src/components/LogoutPage.d.ts +0 -8
  151. package/src/components/LogoutPage.d.ts.map +0 -1
  152. package/src/components/LogoutPage.js +0 -16
  153. package/src/components/RegisterForm.d.ts +0 -100
  154. package/src/components/RegisterForm.d.ts.map +0 -1
  155. package/src/components/RegisterForm.js +0 -306
  156. package/src/components/ResetPasswordForm.d.ts +0 -23
  157. package/src/components/ResetPasswordForm.d.ts.map +0 -1
  158. package/src/components/ResetPasswordForm.js +0 -78
  159. package/src/components/SideMenu.d.ts +0 -8
  160. package/src/components/SideMenu.d.ts.map +0 -1
  161. package/src/components/SideMenu.js +0 -25
  162. package/src/components/SideMenuListItem.d.ts +0 -13
  163. package/src/components/SideMenuListItem.d.ts.map +0 -1
  164. package/src/components/SideMenuListItem.js +0 -44
  165. package/src/components/T.d.ts +0 -7
  166. package/src/components/T.d.ts.map +0 -1
  167. package/src/components/T.js +0 -13
  168. package/src/components/TDiv.d.ts +0 -9
  169. package/src/components/TDiv.d.ts.map +0 -1
  170. package/src/components/TDiv.js +0 -14
  171. package/src/components/TImgAlt.d.ts +0 -10
  172. package/src/components/TImgAlt.d.ts.map +0 -1
  173. package/src/components/TImgAlt.js +0 -14
  174. package/src/components/TopMenu.d.ts +0 -50
  175. package/src/components/TopMenu.d.ts.map +0 -1
  176. package/src/components/TopMenu.js +0 -79
  177. package/src/components/TotpSetupForm.d.ts +0 -24
  178. package/src/components/TotpSetupForm.d.ts.map +0 -1
  179. package/src/components/TotpSetupForm.js +0 -82
  180. package/src/components/TotpVerificationForm.d.ts +0 -23
  181. package/src/components/TotpVerificationForm.d.ts.map +0 -1
  182. package/src/components/TotpVerificationForm.js +0 -66
  183. package/src/components/TranslatedTitle.d.ts +0 -8
  184. package/src/components/TranslatedTitle.d.ts.map +0 -1
  185. package/src/components/TranslatedTitle.js +0 -15
  186. package/src/components/UserLanguageSelector.d.ts +0 -4
  187. package/src/components/UserLanguageSelector.d.ts.map +0 -1
  188. package/src/components/UserLanguageSelector.js +0 -31
  189. package/src/components/UserMenu.d.ts +0 -4
  190. package/src/components/UserMenu.d.ts.map +0 -1
  191. package/src/components/UserMenu.js +0 -12
  192. package/src/components/UserSettingsForm.d.ts +0 -113
  193. package/src/components/UserSettingsForm.d.ts.map +0 -1
  194. package/src/components/UserSettingsForm.js +0 -269
  195. package/src/components/VerifyEmailPage.d.ts +0 -24
  196. package/src/components/VerifyEmailPage.d.ts.map +0 -1
  197. package/src/components/VerifyEmailPage.js +0 -81
  198. package/src/components/index.d.ts.map +0 -1
  199. package/src/components/index.js +0 -35
  200. package/src/contexts/AuthProvider.d.ts +0 -186
  201. package/src/contexts/AuthProvider.d.ts.map +0 -1
  202. package/src/contexts/AuthProvider.js +0 -515
  203. package/src/contexts/I18nProvider.d.ts +0 -27
  204. package/src/contexts/I18nProvider.d.ts.map +0 -1
  205. package/src/contexts/I18nProvider.js +0 -60
  206. package/src/contexts/MenuContext.d.ts +0 -20
  207. package/src/contexts/MenuContext.d.ts.map +0 -1
  208. package/src/contexts/MenuContext.js +0 -275
  209. package/src/contexts/SuiteConfigProvider.d.ts +0 -44
  210. package/src/contexts/SuiteConfigProvider.d.ts.map +0 -1
  211. package/src/contexts/SuiteConfigProvider.js +0 -43
  212. package/src/contexts/ThemeProvider.d.ts +0 -15
  213. package/src/contexts/ThemeProvider.d.ts.map +0 -1
  214. package/src/contexts/ThemeProvider.js +0 -36
  215. package/src/contexts/index.d.ts.map +0 -1
  216. package/src/contexts/index.js +0 -8
  217. package/src/hooks/index.d.ts.map +0 -1
  218. package/src/hooks/index.js +0 -9
  219. package/src/hooks/useAuthenticatedApi.d.ts +0 -34
  220. package/src/hooks/useAuthenticatedApi.d.ts.map +0 -1
  221. package/src/hooks/useAuthenticatedApi.js +0 -46
  222. package/src/hooks/useBackupCodes.d.ts +0 -15
  223. package/src/hooks/useBackupCodes.d.ts.map +0 -1
  224. package/src/hooks/useBackupCodes.js +0 -74
  225. package/src/hooks/useEmailVerification.d.ts +0 -10
  226. package/src/hooks/useEmailVerification.d.ts.map +0 -1
  227. package/src/hooks/useEmailVerification.js +0 -40
  228. package/src/hooks/useExpiringValue.d.ts +0 -14
  229. package/src/hooks/useExpiringValue.d.ts.map +0 -1
  230. package/src/hooks/useExpiringValue.js +0 -53
  231. package/src/hooks/useLocalStorage.d.ts +0 -2
  232. package/src/hooks/useLocalStorage.d.ts.map +0 -1
  233. package/src/hooks/useLocalStorage.js +0 -15
  234. package/src/hooks/useUserSettings.d.ts +0 -48
  235. package/src/hooks/useUserSettings.d.ts.map +0 -1
  236. package/src/hooks/useUserSettings.js +0 -171
  237. package/src/index.d.ts.map +0 -1
  238. package/src/index.js +0 -12
  239. package/src/interfaces/IAppConfig.d.ts +0 -8
  240. package/src/interfaces/IAppConfig.d.ts.map +0 -1
  241. package/src/interfaces/IAppConfig.js +0 -2
  242. package/src/interfaces/ICategoryConfig.d.ts +0 -41
  243. package/src/interfaces/ICategoryConfig.d.ts.map +0 -1
  244. package/src/interfaces/ICategoryConfig.js +0 -2
  245. package/src/interfaces/IMenuConfig.d.ts +0 -28
  246. package/src/interfaces/IMenuConfig.d.ts.map +0 -1
  247. package/src/interfaces/IMenuConfig.js +0 -2
  248. package/src/interfaces/IMenuOption.d.ts +0 -82
  249. package/src/interfaces/IMenuOption.d.ts.map +0 -1
  250. package/src/interfaces/IMenuOption.js +0 -2
  251. package/src/interfaces/index.d.ts.map +0 -1
  252. package/src/interfaces/index.js +0 -7
  253. package/src/services/__mocks__/authService.d.ts +0 -21
  254. package/src/services/__mocks__/authService.d.ts.map +0 -1
  255. package/src/services/__mocks__/authService.js +0 -15
  256. package/src/services/api.d.ts +0 -3
  257. package/src/services/api.d.ts.map +0 -1
  258. package/src/services/api.js +0 -14
  259. package/src/services/authService.d.ts +0 -126
  260. package/src/services/authService.d.ts.map +0 -1
  261. package/src/services/authService.js +0 -471
  262. package/src/services/authenticatedApi.d.ts +0 -3
  263. package/src/services/authenticatedApi.d.ts.map +0 -1
  264. package/src/services/authenticatedApi.js +0 -18
  265. package/src/services/index.d.ts +0 -4
  266. package/src/services/index.d.ts.map +0 -1
  267. package/src/services/index.js +0 -6
  268. package/src/types/MenuType.d.ts +0 -11
  269. package/src/types/MenuType.d.ts.map +0 -1
  270. package/src/types/MenuType.js +0 -12
  271. package/src/types/expirationSeconds.d.ts +0 -3
  272. package/src/types/expirationSeconds.d.ts.map +0 -1
  273. package/src/types/expirationSeconds.js +0 -17
  274. package/src/types/index.d.ts +0 -2
  275. package/src/types/index.d.ts.map +0 -1
  276. package/src/types/index.js +0 -4
  277. package/src/types/translation.d.ts +0 -10
  278. package/src/types/translation.d.ts.map +0 -1
  279. package/src/types/translation.js +0 -9
  280. package/src/wrappers/BackupCodeLoginWrapper.d.ts +0 -8
  281. package/src/wrappers/BackupCodeLoginWrapper.d.ts.map +0 -1
  282. package/src/wrappers/BackupCodeLoginWrapper.js +0 -20
  283. package/src/wrappers/BackupCodesWrapper.d.ts +0 -7
  284. package/src/wrappers/BackupCodesWrapper.d.ts.map +0 -1
  285. package/src/wrappers/BackupCodesWrapper.js +0 -17
  286. package/src/wrappers/ChangePasswordFormWrapper.d.ts +0 -8
  287. package/src/wrappers/ChangePasswordFormWrapper.d.ts.map +0 -1
  288. package/src/wrappers/ChangePasswordFormWrapper.js +0 -21
  289. package/src/wrappers/ForgotPasswordFormWrapper.d.ts +0 -8
  290. package/src/wrappers/ForgotPasswordFormWrapper.d.ts.map +0 -1
  291. package/src/wrappers/ForgotPasswordFormWrapper.js +0 -29
  292. package/src/wrappers/LoginFormWrapper.d.ts +0 -21
  293. package/src/wrappers/LoginFormWrapper.d.ts.map +0 -1
  294. package/src/wrappers/LoginFormWrapper.js +0 -72
  295. package/src/wrappers/LogoutPageWrapper.d.ts +0 -9
  296. package/src/wrappers/LogoutPageWrapper.d.ts.map +0 -1
  297. package/src/wrappers/LogoutPageWrapper.js +0 -21
  298. package/src/wrappers/RegisterFormWrapper.d.ts +0 -20
  299. package/src/wrappers/RegisterFormWrapper.d.ts.map +0 -1
  300. package/src/wrappers/RegisterFormWrapper.js +0 -51
  301. package/src/wrappers/ResetPasswordFormWrapper.d.ts +0 -9
  302. package/src/wrappers/ResetPasswordFormWrapper.d.ts.map +0 -1
  303. package/src/wrappers/ResetPasswordFormWrapper.js +0 -34
  304. package/src/wrappers/UserSettingsFormWrapper.d.ts +0 -29
  305. package/src/wrappers/UserSettingsFormWrapper.d.ts.map +0 -1
  306. package/src/wrappers/UserSettingsFormWrapper.js +0 -95
  307. package/src/wrappers/VerifyEmailPageWrapper.d.ts +0 -8
  308. package/src/wrappers/VerifyEmailPageWrapper.d.ts.map +0 -1
  309. package/src/wrappers/VerifyEmailPageWrapper.js +0 -21
  310. package/src/wrappers/index.d.ts.map +0 -1
  311. package/src/wrappers/index.js +0 -24
@@ -1,275 +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, admin: isGlobalAdmin, 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
- if (o.requiresAdmin === true && !isGlobalAdmin)
224
- return false;
225
- return (o.includeOnMenus.includes(menuType) &&
226
- (o.requiresAuth === undefined || o.requiresAuth === isAuthenticated));
227
- };
228
- return menuOptions.filter(MenuFilter);
229
- }, [isAuthenticated, isGlobalAdmin, menuOptions]);
230
- (0, react_1.useEffect)(() => {
231
- if (menuConfigs.length > 0) {
232
- return registerMenuOptions(menuConfigs.flatMap((config) => config.options));
233
- }
234
- return undefined;
235
- }, [menuConfigs, registerMenuOptions]);
236
- const getTopMenus = (0, react_1.useCallback)(() => {
237
- const menus = [
238
- ...menuConfigs.map((config) => ({ ...config, isUserMenu: false })),
239
- {
240
- menuType: MenuType_1.MenuTypes.UserMenu,
241
- menuIcon: (0, jsx_runtime_1.jsx)(icons_material_1.AccountCircle, {}),
242
- priority: 0,
243
- options: [],
244
- isUserMenu: true,
245
- },
246
- ];
247
- return menus.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
248
- }, [menuConfigs]);
249
- const contextValue = (0, react_1.useMemo)(() => {
250
- return {
251
- menuOptions: menuOptions,
252
- getMenuOptions: getMenuOptions,
253
- registerMenuOption: registerMenuOption,
254
- registerMenuOptions: registerMenuOptions,
255
- getTopMenus: getTopMenus,
256
- };
257
- }, [
258
- menuOptions,
259
- getMenuOptions,
260
- registerMenuOption,
261
- registerMenuOptions,
262
- getTopMenus,
263
- ]);
264
- const memoizedChildren = (0, react_1.useMemo)(() => children, [children]);
265
- return ((0, jsx_runtime_1.jsx)(MenuContext.Provider, { value: contextValue, children: memoizedChildren }));
266
- };
267
- exports.MenuProvider = MenuProvider;
268
- const useMenu = () => {
269
- const context = (0, react_1.useContext)(MenuContext);
270
- if (context === undefined) {
271
- throw new Error('useMenu must be used within a MenuProvider');
272
- }
273
- return context;
274
- };
275
- 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.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,gCAa1B,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;AACvC,cAAc,uBAAuB,CAAC"}
@@ -1,9 +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);
9
- tslib_1.__exportStar(require("./useAuthenticatedApi"), exports);
@@ -1,34 +0,0 @@
1
- /**
2
- * useAuthenticatedApi — React hook + provider for a shared authenticated
3
- * Axios instance.
4
- *
5
- * The provider creates a single AxiosInstance via createAuthenticatedApiClient
6
- * using the baseUrl from SuiteConfigProvider. All component libraries consume
7
- * the same instance through the useAuthenticatedApi() hook, eliminating
8
- * duplicate axios instances and circular dependency issues.
9
- *
10
- * Usage:
11
- * // In the app root (wrap inside SuiteConfigProvider):
12
- * <AuthenticatedApiProvider>
13
- * <App />
14
- * </AuthenticatedApiProvider>
15
- *
16
- * // In any component library:
17
- * const api = useAuthenticatedApi();
18
- * const res = await api.get('/some-endpoint');
19
- */
20
- import { ReactNode } from 'react';
21
- import type { AxiosInstance } from 'axios';
22
- export interface AuthenticatedApiProviderProps {
23
- children: ReactNode;
24
- /** Optional token key in localStorage. Defaults to 'authToken'. */
25
- tokenKey?: string;
26
- }
27
- export declare const AuthenticatedApiProvider: ({ children, tokenKey, }: AuthenticatedApiProviderProps) => import("react").JSX.Element;
28
- /**
29
- * Returns the shared authenticated Axios instance.
30
- * Must be used within an AuthenticatedApiProvider (which itself must be
31
- * inside a SuiteConfigProvider).
32
- */
33
- export declare const useAuthenticatedApi: () => AxiosInstance;
34
- //# sourceMappingURL=useAuthenticatedApi.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAuthenticatedApi.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/hooks/useAuthenticatedApi.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAiB,SAAS,EAAuB,MAAM,OAAO,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAQ3C,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,SAAS,CAAC;IACpB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,wBAAwB,GAAI,yBAGtC,6BAA6B,gCAa/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAO,aAQtC,CAAC"}
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useAuthenticatedApi = exports.AuthenticatedApiProvider = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- /**
6
- * useAuthenticatedApi — React hook + provider for a shared authenticated
7
- * Axios instance.
8
- *
9
- * The provider creates a single AxiosInstance via createAuthenticatedApiClient
10
- * using the baseUrl from SuiteConfigProvider. All component libraries consume
11
- * the same instance through the useAuthenticatedApi() hook, eliminating
12
- * duplicate axios instances and circular dependency issues.
13
- *
14
- * Usage:
15
- * // In the app root (wrap inside SuiteConfigProvider):
16
- * <AuthenticatedApiProvider>
17
- * <App />
18
- * </AuthenticatedApiProvider>
19
- *
20
- * // In any component library:
21
- * const api = useAuthenticatedApi();
22
- * const res = await api.get('/some-endpoint');
23
- */
24
- const react_1 = require("react");
25
- const authenticatedApi_1 = require("../services/authenticatedApi");
26
- const SuiteConfigProvider_1 = require("../contexts/SuiteConfigProvider");
27
- const AuthenticatedApiContext = (0, react_1.createContext)(undefined);
28
- const AuthenticatedApiProvider = ({ children, tokenKey, }) => {
29
- const { baseUrl } = (0, SuiteConfigProvider_1.useSuiteConfig)();
30
- const api = (0, react_1.useMemo)(() => (0, authenticatedApi_1.createAuthenticatedApiClient)(baseUrl, tokenKey), [baseUrl, tokenKey]);
31
- return ((0, jsx_runtime_1.jsx)(AuthenticatedApiContext.Provider, { value: api, children: children }));
32
- };
33
- exports.AuthenticatedApiProvider = AuthenticatedApiProvider;
34
- /**
35
- * Returns the shared authenticated Axios instance.
36
- * Must be used within an AuthenticatedApiProvider (which itself must be
37
- * inside a SuiteConfigProvider).
38
- */
39
- const useAuthenticatedApi = () => {
40
- const context = (0, react_1.useContext)(AuthenticatedApiContext);
41
- if (!context) {
42
- throw new Error('useAuthenticatedApi must be used within an AuthenticatedApiProvider');
43
- }
44
- return context;
45
- };
46
- exports.useAuthenticatedApi = useAuthenticatedApi;
@@ -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,0BAqCvC,CAAC"}