@joelbarron/react-web-dev-kit 0.1.7 → 0.1.9

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 (272) hide show
  1. package/README.md +65 -160
  2. package/package.json +9 -2
  3. package/dist/auth/client.d.ts +0 -45
  4. package/dist/auth/client.d.ts.map +0 -1
  5. package/dist/auth/client.js +0 -367
  6. package/dist/auth/constants/countryCallingCodes.d.ts +0 -9
  7. package/dist/auth/constants/countryCallingCodes.d.ts.map +0 -1
  8. package/dist/auth/constants/countryCallingCodes.js +0 -209
  9. package/dist/auth/constants/gender.d.ts +0 -9
  10. package/dist/auth/constants/gender.d.ts.map +0 -1
  11. package/dist/auth/constants/gender.js +0 -12
  12. package/dist/auth/constants/index.d.ts +0 -3
  13. package/dist/auth/constants/index.d.ts.map +0 -1
  14. package/dist/auth/constants/index.js +0 -2
  15. package/dist/auth/forms/account/AuthAccountConfirmationForm.d.ts +0 -18
  16. package/dist/auth/forms/account/AuthAccountConfirmationForm.d.ts.map +0 -1
  17. package/dist/auth/forms/account/AuthAccountConfirmationForm.js +0 -167
  18. package/dist/auth/forms/account/index.d.ts +0 -2
  19. package/dist/auth/forms/account/index.d.ts.map +0 -1
  20. package/dist/auth/forms/account/index.js +0 -1
  21. package/dist/auth/forms/errorParser.d.ts +0 -7
  22. package/dist/auth/forms/errorParser.d.ts.map +0 -1
  23. package/dist/auth/forms/errorParser.js +0 -65
  24. package/dist/auth/forms/index.d.ts +0 -6
  25. package/dist/auth/forms/index.d.ts.map +0 -1
  26. package/dist/auth/forms/index.js +0 -5
  27. package/dist/auth/forms/password/AuthForgotPasswordForm.d.ts +0 -16
  28. package/dist/auth/forms/password/AuthForgotPasswordForm.d.ts.map +0 -1
  29. package/dist/auth/forms/password/AuthForgotPasswordForm.js +0 -109
  30. package/dist/auth/forms/password/AuthPasswordResetConfirmForm.d.ts +0 -17
  31. package/dist/auth/forms/password/AuthPasswordResetConfirmForm.d.ts.map +0 -1
  32. package/dist/auth/forms/password/AuthPasswordResetConfirmForm.js +0 -163
  33. package/dist/auth/forms/password/AuthResetPasswordForm.d.ts +0 -12
  34. package/dist/auth/forms/password/AuthResetPasswordForm.d.ts.map +0 -1
  35. package/dist/auth/forms/password/AuthResetPasswordForm.js +0 -22
  36. package/dist/auth/forms/password/index.d.ts +0 -4
  37. package/dist/auth/forms/password/index.d.ts.map +0 -1
  38. package/dist/auth/forms/password/index.js +0 -3
  39. package/dist/auth/forms/password/passwordValidation.d.ts +0 -3
  40. package/dist/auth/forms/password/passwordValidation.d.ts.map +0 -1
  41. package/dist/auth/forms/password/passwordValidation.js +0 -45
  42. package/dist/auth/forms/sign-in/AuthOtpSignInForm.d.ts +0 -24
  43. package/dist/auth/forms/sign-in/AuthOtpSignInForm.d.ts.map +0 -1
  44. package/dist/auth/forms/sign-in/AuthOtpSignInForm.js +0 -227
  45. package/dist/auth/forms/sign-in/AuthPasswordSignInForm.d.ts +0 -22
  46. package/dist/auth/forms/sign-in/AuthPasswordSignInForm.d.ts.map +0 -1
  47. package/dist/auth/forms/sign-in/AuthPasswordSignInForm.js +0 -148
  48. package/dist/auth/forms/sign-in/index.d.ts +0 -3
  49. package/dist/auth/forms/sign-in/index.d.ts.map +0 -1
  50. package/dist/auth/forms/sign-in/index.js +0 -2
  51. package/dist/auth/forms/sign-up/AuthSignUpForm.d.ts +0 -37
  52. package/dist/auth/forms/sign-up/AuthSignUpForm.d.ts.map +0 -1
  53. package/dist/auth/forms/sign-up/AuthSignUpForm.js +0 -190
  54. package/dist/auth/forms/sign-up/index.d.ts +0 -2
  55. package/dist/auth/forms/sign-up/index.d.ts.map +0 -1
  56. package/dist/auth/forms/sign-up/index.js +0 -1
  57. package/dist/auth/fuse/createFuseAuthViews.d.ts +0 -25
  58. package/dist/auth/fuse/createFuseAuthViews.d.ts.map +0 -1
  59. package/dist/auth/fuse/createFuseAuthViews.js +0 -460
  60. package/dist/auth/fuse/fuseAdapter.d.ts +0 -41
  61. package/dist/auth/fuse/fuseAdapter.d.ts.map +0 -1
  62. package/dist/auth/fuse/fuseAdapter.js +0 -271
  63. package/dist/auth/fuse/fuseIntegration.d.ts +0 -61
  64. package/dist/auth/fuse/fuseIntegration.d.ts.map +0 -1
  65. package/dist/auth/fuse/fuseIntegration.js +0 -103
  66. package/dist/auth/fuse/index.d.ts +0 -4
  67. package/dist/auth/fuse/index.d.ts.map +0 -1
  68. package/dist/auth/fuse/index.js +0 -3
  69. package/dist/auth/index.d.ts +0 -11
  70. package/dist/auth/index.d.ts.map +0 -1
  71. package/dist/auth/index.js +0 -10
  72. package/dist/auth/provider.d.ts +0 -35
  73. package/dist/auth/provider.d.ts.map +0 -1
  74. package/dist/auth/provider.js +0 -133
  75. package/dist/auth/query.d.ts +0 -23
  76. package/dist/auth/query.d.ts.map +0 -1
  77. package/dist/auth/query.js +0 -103
  78. package/dist/auth/routes.d.ts +0 -37
  79. package/dist/auth/routes.d.ts.map +0 -1
  80. package/dist/auth/routes.js +0 -75
  81. package/dist/auth/social/providerAuth.d.ts +0 -101
  82. package/dist/auth/social/providerAuth.d.ts.map +0 -1
  83. package/dist/auth/social/providerAuth.js +0 -207
  84. package/dist/auth/storage.d.ts +0 -3
  85. package/dist/auth/storage.d.ts.map +0 -1
  86. package/dist/auth/storage.js +0 -20
  87. package/dist/auth/types.d.ts +0 -226
  88. package/dist/auth/types.d.ts.map +0 -1
  89. package/dist/auth/types.js +0 -1
  90. package/dist/auth/ui/AuthPageTitle.d.ts +0 -7
  91. package/dist/auth/ui/AuthPageTitle.d.ts.map +0 -1
  92. package/dist/auth/ui/AuthPageTitle.js +0 -7
  93. package/dist/auth/ui/AuthPagesMessageSection.d.ts +0 -3
  94. package/dist/auth/ui/AuthPagesMessageSection.d.ts.map +0 -1
  95. package/dist/auth/ui/AuthPagesMessageSection.js +0 -39
  96. package/dist/auth/ui/AuthPrimaryButton.d.ts +0 -9
  97. package/dist/auth/ui/AuthPrimaryButton.d.ts.map +0 -1
  98. package/dist/auth/ui/AuthPrimaryButton.js +0 -19
  99. package/dist/auth/ui/AuthRoleSelectionDialog.d.ts +0 -14
  100. package/dist/auth/ui/AuthRoleSelectionDialog.d.ts.map +0 -1
  101. package/dist/auth/ui/AuthRoleSelectionDialog.js +0 -39
  102. package/dist/auth/ui/AuthRoutePageWrapper.d.ts +0 -12
  103. package/dist/auth/ui/AuthRoutePageWrapper.d.ts.map +0 -1
  104. package/dist/auth/ui/AuthRoutePageWrapper.js +0 -61
  105. package/dist/auth/ui/AuthSecondaryButton.d.ts +0 -7
  106. package/dist/auth/ui/AuthSecondaryButton.d.ts.map +0 -1
  107. package/dist/auth/ui/AuthSecondaryButton.js +0 -18
  108. package/dist/auth/ui/AuthSocialProviderButton.d.ts +0 -11
  109. package/dist/auth/ui/AuthSocialProviderButton.d.ts.map +0 -1
  110. package/dist/auth/ui/AuthSocialProviderButton.js +0 -33
  111. package/dist/auth/ui/index.d.ts +0 -9
  112. package/dist/auth/ui/index.d.ts.map +0 -1
  113. package/dist/auth/ui/index.js +0 -8
  114. package/dist/auth/ui/types.d.ts +0 -15
  115. package/dist/auth/ui/types.d.ts.map +0 -1
  116. package/dist/auth/ui/types.js +0 -1
  117. package/dist/config/createConfig.d.ts +0 -14
  118. package/dist/config/createConfig.d.ts.map +0 -1
  119. package/dist/config/createConfig.js +0 -179
  120. package/dist/config/defaults.d.ts +0 -3
  121. package/dist/config/defaults.d.ts.map +0 -1
  122. package/dist/config/defaults.js +0 -39
  123. package/dist/config/index.d.ts +0 -5
  124. package/dist/config/index.d.ts.map +0 -1
  125. package/dist/config/index.js +0 -4
  126. package/dist/config/merge.d.ts +0 -2
  127. package/dist/config/merge.d.ts.map +0 -1
  128. package/dist/config/merge.js +0 -18
  129. package/dist/config/types.d.ts +0 -53
  130. package/dist/config/types.d.ts.map +0 -1
  131. package/dist/config/types.js +0 -1
  132. package/dist/core/buttons/JBButton.d.ts +0 -8
  133. package/dist/core/buttons/JBButton.d.ts.map +0 -1
  134. package/dist/core/buttons/JBButton.js +0 -55
  135. package/dist/core/buttons/index.d.ts +0 -2
  136. package/dist/core/buttons/index.d.ts.map +0 -1
  137. package/dist/core/buttons/index.js +0 -1
  138. package/dist/core/dialogs/JBConfirmDialog.d.ts +0 -15
  139. package/dist/core/dialogs/JBConfirmDialog.d.ts.map +0 -1
  140. package/dist/core/dialogs/JBConfirmDialog.js +0 -6
  141. package/dist/core/dialogs/index.d.ts +0 -2
  142. package/dist/core/dialogs/index.d.ts.map +0 -1
  143. package/dist/core/dialogs/index.js +0 -1
  144. package/dist/core/index.d.ts +0 -5
  145. package/dist/core/index.d.ts.map +0 -1
  146. package/dist/core/index.js +0 -4
  147. package/dist/core/layout/JBContentContainer.d.ts +0 -31
  148. package/dist/core/layout/JBContentContainer.d.ts.map +0 -1
  149. package/dist/core/layout/JBContentContainer.js +0 -50
  150. package/dist/core/layout/JBFormHeader.d.ts +0 -3
  151. package/dist/core/layout/JBFormHeader.d.ts.map +0 -1
  152. package/dist/core/layout/JBFormHeader.js +0 -131
  153. package/dist/core/layout/index.d.ts +0 -3
  154. package/dist/core/layout/index.d.ts.map +0 -1
  155. package/dist/core/layout/index.js +0 -2
  156. package/dist/core/skeletons/JBFormContentSkeleton.d.ts +0 -5
  157. package/dist/core/skeletons/JBFormContentSkeleton.d.ts.map +0 -1
  158. package/dist/core/skeletons/JBFormContentSkeleton.js +0 -12
  159. package/dist/core/skeletons/JBFormHeaderSkeleton.d.ts +0 -6
  160. package/dist/core/skeletons/JBFormHeaderSkeleton.d.ts.map +0 -1
  161. package/dist/core/skeletons/JBFormHeaderSkeleton.js +0 -19
  162. package/dist/core/skeletons/index.d.ts +0 -3
  163. package/dist/core/skeletons/index.d.ts.map +0 -1
  164. package/dist/core/skeletons/index.js +0 -2
  165. package/dist/forms/JBAutocompleteField.d.ts +0 -12
  166. package/dist/forms/JBAutocompleteField.d.ts.map +0 -1
  167. package/dist/forms/JBAutocompleteField.js +0 -20
  168. package/dist/forms/JBCheckboxField.d.ts +0 -12
  169. package/dist/forms/JBCheckboxField.d.ts.map +0 -1
  170. package/dist/forms/JBCheckboxField.js +0 -36
  171. package/dist/forms/JBDatePickerField.d.ts +0 -12
  172. package/dist/forms/JBDatePickerField.d.ts.map +0 -1
  173. package/dist/forms/JBDatePickerField.js +0 -16
  174. package/dist/forms/JBRadioGroupField.d.ts +0 -10
  175. package/dist/forms/JBRadioGroupField.d.ts.map +0 -1
  176. package/dist/forms/JBRadioGroupField.js +0 -8
  177. package/dist/forms/JBSelectField.d.ts +0 -9
  178. package/dist/forms/JBSelectField.d.ts.map +0 -1
  179. package/dist/forms/JBSelectField.js +0 -8
  180. package/dist/forms/JBSwitchField.d.ts +0 -11
  181. package/dist/forms/JBSwitchField.d.ts.map +0 -1
  182. package/dist/forms/JBSwitchField.js +0 -10
  183. package/dist/forms/JBTextField.d.ts +0 -6
  184. package/dist/forms/JBTextField.d.ts.map +0 -1
  185. package/dist/forms/JBTextField.js +0 -8
  186. package/dist/forms/JBTimePickerField.d.ts +0 -12
  187. package/dist/forms/JBTimePickerField.d.ts.map +0 -1
  188. package/dist/forms/JBTimePickerField.js +0 -16
  189. package/dist/forms/index.d.ts +0 -13
  190. package/dist/forms/index.d.ts.map +0 -1
  191. package/dist/forms/index.js +0 -12
  192. package/dist/forms/rules.d.ts +0 -16
  193. package/dist/forms/rules.d.ts.map +0 -1
  194. package/dist/forms/rules.js +0 -21
  195. package/dist/forms/types.d.ts +0 -12
  196. package/dist/forms/types.d.ts.map +0 -1
  197. package/dist/forms/types.js +0 -1
  198. package/dist/forms/utils.d.ts +0 -5
  199. package/dist/forms/utils.d.ts.map +0 -1
  200. package/dist/forms/utils.js +0 -7
  201. package/dist/forms/zod.d.ts +0 -4
  202. package/dist/forms/zod.d.ts.map +0 -1
  203. package/dist/forms/zod.js +0 -9
  204. package/dist/grid/JBGrid.d.ts +0 -3
  205. package/dist/grid/JBGrid.d.ts.map +0 -1
  206. package/dist/grid/JBGrid.js +0 -333
  207. package/dist/grid/JBGridHeader.d.ts +0 -3
  208. package/dist/grid/JBGridHeader.d.ts.map +0 -1
  209. package/dist/grid/JBGridHeader.js +0 -93
  210. package/dist/grid/JBGridLoading.d.ts +0 -9
  211. package/dist/grid/JBGridLoading.d.ts.map +0 -1
  212. package/dist/grid/JBGridLoading.js +0 -14
  213. package/dist/grid/JBGridProviders.d.ts +0 -13
  214. package/dist/grid/JBGridProviders.d.ts.map +0 -1
  215. package/dist/grid/JBGridProviders.js +0 -47
  216. package/dist/grid/JBGridSkeleton.d.ts +0 -7
  217. package/dist/grid/JBGridSkeleton.d.ts.map +0 -1
  218. package/dist/grid/JBGridSkeleton.js +0 -6
  219. package/dist/grid/defaults.d.ts +0 -4
  220. package/dist/grid/defaults.d.ts.map +0 -1
  221. package/dist/grid/defaults.js +0 -28
  222. package/dist/grid/index.d.ts +0 -8
  223. package/dist/grid/index.d.ts.map +0 -1
  224. package/dist/grid/index.js +0 -7
  225. package/dist/grid/types.d.ts +0 -196
  226. package/dist/grid/types.d.ts.map +0 -1
  227. package/dist/grid/types.js +0 -1
  228. package/dist/hooks/index.d.ts +0 -4
  229. package/dist/hooks/index.d.ts.map +0 -1
  230. package/dist/hooks/index.js +0 -3
  231. package/dist/hooks/useJBDebouncedValue.d.ts +0 -2
  232. package/dist/hooks/useJBDebouncedValue.d.ts.map +0 -1
  233. package/dist/hooks/useJBDebouncedValue.js +0 -11
  234. package/dist/hooks/useJBEntityFormController.d.ts +0 -54
  235. package/dist/hooks/useJBEntityFormController.d.ts.map +0 -1
  236. package/dist/hooks/useJBEntityFormController.js +0 -156
  237. package/dist/hooks/useJBRedirect.d.ts +0 -10
  238. package/dist/hooks/useJBRedirect.d.ts.map +0 -1
  239. package/dist/hooks/useJBRedirect.js +0 -11
  240. package/dist/index.d.ts +0 -9
  241. package/dist/index.d.ts.map +0 -1
  242. package/dist/index.js +0 -8
  243. package/dist/query/createQueryClient.d.ts +0 -8
  244. package/dist/query/createQueryClient.d.ts.map +0 -1
  245. package/dist/query/createQueryClient.js +0 -25
  246. package/dist/query/http.d.ts +0 -3
  247. package/dist/query/http.d.ts.map +0 -1
  248. package/dist/query/http.js +0 -12
  249. package/dist/query/index.d.ts +0 -4
  250. package/dist/query/index.d.ts.map +0 -1
  251. package/dist/query/index.js +0 -3
  252. package/dist/query/types.d.ts +0 -7
  253. package/dist/query/types.d.ts.map +0 -1
  254. package/dist/query/types.js +0 -1
  255. package/dist/utils/errors.d.ts +0 -10
  256. package/dist/utils/errors.d.ts.map +0 -1
  257. package/dist/utils/errors.js +0 -55
  258. package/dist/utils/format.d.ts +0 -4
  259. package/dist/utils/format.d.ts.map +0 -1
  260. package/dist/utils/format.js +0 -28
  261. package/dist/utils/geo.d.ts +0 -9
  262. package/dist/utils/geo.d.ts.map +0 -1
  263. package/dist/utils/geo.js +0 -186
  264. package/dist/utils/index.d.ts +0 -6
  265. package/dist/utils/index.d.ts.map +0 -1
  266. package/dist/utils/index.js +0 -5
  267. package/dist/utils/query.d.ts +0 -2
  268. package/dist/utils/query.d.ts.map +0 -1
  269. package/dist/utils/query.js +0 -4
  270. package/dist/utils/regex.d.ts +0 -7
  271. package/dist/utils/regex.d.ts.map +0 -1
  272. package/dist/utils/regex.js +0 -6
@@ -1,460 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import ArrowBackOutlinedIcon from '@mui/icons-material/ArrowBackOutlined';
3
- import EmailOutlinedIcon from '@mui/icons-material/EmailOutlined';
4
- import PersonAddAlt1OutlinedIcon from '@mui/icons-material/PersonAddAlt1Outlined';
5
- import Alert from "@mui/material/Alert";
6
- import Box from "@mui/material/Box";
7
- import Typography from "@mui/material/Typography";
8
- import { useCallback, useMemo, useRef, useState } from "react";
9
- import { useNavigate, useSearchParams } from "react-router";
10
- import { AuthAccountConfirmationForm, AuthForgotPasswordForm, AuthOtpSignInForm, AuthPasswordResetConfirmForm, AuthPasswordSignInForm, AuthSignUpForm, } from "../forms";
11
- import { parseAuthError } from "../forms/errorParser";
12
- import { authenticateWithSocialProvider } from "../social/providerAuth";
13
- import { AuthPageTitle, AuthRoleSelectionDialog, AuthSecondaryButton, AuthSocialProviderButton, } from "../ui";
14
- import { useFuseJwtAuth } from "./fuseAdapter";
15
- const IS_DEV = typeof window !== "undefined" && window.location.hostname === "localhost";
16
- const DEV_LOGIN_DEFAULT_VALUES = IS_DEV
17
- ? {
18
- login: "admin",
19
- password: "Test123_",
20
- remember: true,
21
- }
22
- : undefined;
23
- const DEV_SIGN_UP_DEFAULT_VALUES = IS_DEV
24
- ? {
25
- firstName: "Joel",
26
- lastName1: "Barron",
27
- lastName2: "Hernandez",
28
- email: "joel.test+1@example.com",
29
- birthday: "1995-12-16",
30
- gender: "MALE",
31
- password: "Test123_",
32
- passwordConfirm: "Test123_",
33
- acceptTermsConditions: true,
34
- }
35
- : undefined;
36
- const DEV_OTP_DEFAULT_VALUES = IS_DEV
37
- ? {
38
- countryCode: "+52",
39
- phone: "5512345678",
40
- code: "",
41
- }
42
- : undefined;
43
- const SOCIAL_PROVIDER_ORDER = ["google", "facebook", "apple"];
44
- const parseBooleanLike = (value) => {
45
- if (typeof value === "boolean") {
46
- return value;
47
- }
48
- if (typeof value === "string") {
49
- const normalized = value.trim().toLowerCase();
50
- if (normalized === "true") {
51
- return true;
52
- }
53
- if (normalized === "false") {
54
- return false;
55
- }
56
- }
57
- if (typeof value === "number") {
58
- if (value === 1) {
59
- return true;
60
- }
61
- if (value === 0) {
62
- return false;
63
- }
64
- }
65
- return undefined;
66
- };
67
- const shouldSelectRoleForSocialLogin = (precheckResponse, hasRoleOptions) => {
68
- if (!hasRoleOptions) {
69
- return false;
70
- }
71
- const userExists = parseBooleanLike(precheckResponse.userExists) ??
72
- parseBooleanLike(precheckResponse.user_exists);
73
- if (typeof userExists === "boolean") {
74
- return !userExists;
75
- }
76
- const wouldCreateUser = parseBooleanLike(precheckResponse.wouldCreateUser) ??
77
- parseBooleanLike(precheckResponse.would_create_user);
78
- if (typeof wouldCreateUser === "boolean") {
79
- return wouldCreateUser;
80
- }
81
- const socialAccountExists = parseBooleanLike(precheckResponse.socialAccountExists) ??
82
- parseBooleanLike(precheckResponse.social_account_exists);
83
- if (socialAccountExists === true) {
84
- return false;
85
- }
86
- const linkedExistingUser = parseBooleanLike(precheckResponse.linkedExistingUser) ??
87
- parseBooleanLike(precheckResponse.linked_existing_user);
88
- if (linkedExistingUser === true) {
89
- return false;
90
- }
91
- return hasRoleOptions;
92
- };
93
- function getEnabledSocialProviders(socialConfig, showDebugSocial) {
94
- if (!socialConfig) {
95
- return [];
96
- }
97
- return SOCIAL_PROVIDER_ORDER.flatMap((provider) => {
98
- const providerConfig = socialConfig[provider];
99
- if (!providerConfig?.enabled || !providerConfig.clientId?.trim()) {
100
- return [];
101
- }
102
- return [
103
- {
104
- provider,
105
- clientId: providerConfig.clientId.trim(),
106
- redirectUri: providerConfig.redirectUri?.trim() || undefined,
107
- scope: providerConfig.scope?.trim() || undefined,
108
- scopes: providerConfig.scopes,
109
- usePopup: providerConfig.usePopup,
110
- responseMode: providerConfig.responseMode,
111
- responseType: providerConfig.responseType,
112
- state: providerConfig.state,
113
- nonce: providerConfig.nonce,
114
- debug: showDebugSocial
115
- }
116
- ];
117
- });
118
- }
119
- function FuseSignInController(props) {
120
- const { LinkComponent, mode = "password", disabled = false, onBackToPassword, requestRoleSelection } = props;
121
- const { signIn, requestOtp, signInOtp } = useFuseJwtAuth();
122
- if (mode === "otp") {
123
- return (_jsx(AuthOtpSignInForm, { defaultValues: DEV_OTP_DEFAULT_VALUES, requestRoleSelection: requestRoleSelection, onBackToPassword: onBackToPassword, onRequestOtp: ({ phone }) => requestOtp({
124
- channel: "sms",
125
- phone,
126
- }), onVerifyOtp: ({ phone, code, role }) => signInOtp({
127
- channel: "sms",
128
- phone,
129
- code,
130
- role,
131
- }) }));
132
- }
133
- return (_jsx(AuthPasswordSignInForm, { defaultValues: DEV_LOGIN_DEFAULT_VALUES, disabled: disabled, LinkComponent: LinkComponent, onSubmit: (values) => signIn({
134
- login: values.login,
135
- password: values.password,
136
- }) }));
137
- }
138
- function FuseSignUpController(props) {
139
- const { onSuccess, requestRoleSelection, requiresRoleSelection = false, disabled = false } = props;
140
- const { signUp } = useFuseJwtAuth();
141
- return (_jsx(AuthSignUpForm, { defaultValues: DEV_SIGN_UP_DEFAULT_VALUES, disabled: disabled, onSubmit: async (values) => {
142
- const selectedRole = requestRoleSelection
143
- ? await requestRoleSelection()
144
- : values.role;
145
- if (requiresRoleSelection && !selectedRole) {
146
- return;
147
- }
148
- const response = await signUp({
149
- ...values,
150
- role: selectedRole ?? values.role,
151
- });
152
- onSuccess?.({
153
- email: values.email,
154
- detail: response.detail ?? undefined,
155
- response
156
- });
157
- } }));
158
- }
159
- function FuseOtpSignUpForm(props) {
160
- const { onBackToPassword, requestRoleSelection } = props;
161
- const { requestOtp, signInOtp } = useFuseJwtAuth();
162
- return (_jsx(AuthOtpSignInForm, { defaultValues: DEV_OTP_DEFAULT_VALUES, requestRoleSelection: requestRoleSelection, onBackToPassword: onBackToPassword, onRequestOtp: ({ phone }) => requestOtp({
163
- channel: "sms",
164
- phone,
165
- }), onVerifyOtp: ({ phone, code, role }) => signInOtp({
166
- channel: "sms",
167
- phone,
168
- code,
169
- role,
170
- }) }));
171
- }
172
- function FuseAuthAlternativesSection(props) {
173
- const { onSmsClick, socialProviders = [], onSocialClick, socialLoadingProvider, socialError } = props;
174
- return (_jsxs(_Fragment, { children: [_jsxs(Box, { sx: { mt: 4, display: "flex", alignItems: "center" }, children: [_jsx(Box, { sx: { mt: "1px", flex: 1, borderTop: 1, borderColor: "divider" } }), _jsx(Typography, { sx: { mx: 1 }, color: "text.secondary", children: "O accede con" }), _jsx(Box, { sx: { mt: "1px", flex: 1, borderTop: 1, borderColor: "divider" } })] }), _jsxs(Box, { sx: {
175
- mt: 4,
176
- display: "grid",
177
- gridTemplateColumns: "repeat(2, minmax(0, 1fr))",
178
- gap: 1.5
179
- }, children: [socialProviders.map((socialProvider) => (_jsx(AuthSocialProviderButton, { provider: socialProvider.provider, loading: socialLoadingProvider === socialProvider.provider, disabled: Boolean(socialLoadingProvider && socialLoadingProvider !== socialProvider.provider), onClick: () => onSocialClick?.(socialProvider.provider) }, socialProvider.provider))), _jsx(AuthSocialProviderButton, { "aria-label": "SMS", provider: "sms", disabled: Boolean(socialLoadingProvider), onClick: onSmsClick, children: "SMS" })] }), socialError ? (_jsx(Alert, { severity: "error", sx: { mt: 2 }, children: socialError })) : null] }));
180
- }
181
- function FuseSignUpCtaSection(props) {
182
- const { LinkComponent, signUpPath = "/sign-up", disabled = false } = props;
183
- return (_jsxs(_Fragment, { children: [_jsxs(Box, { sx: { mt: 6, display: "flex", alignItems: "center" }, children: [_jsx(Box, { sx: { mt: "1px", flex: 1, borderTop: 1, borderColor: "divider" } }), _jsx(Typography, { sx: { mx: 1 }, color: "text.secondary", children: "\u00BFNo tienes una cuenta?" }), _jsx(Box, { sx: { mt: "1px", flex: 1, borderTop: 1, borderColor: "divider" } })] }), _jsx(Box, { sx: { mt: 2, display: "flex", alignItems: "center", gap: 2 }, children: _jsx(AuthSecondaryButton, { component: LinkComponent, to: signUpPath, sx: { flex: 1 }, disabled: disabled, startIcon: _jsx(PersonAddAlt1OutlinedIcon, { fontSize: "small" }), onClick: (event) => {
184
- if (disabled) {
185
- event.preventDefault();
186
- }
187
- }, "aria-label": "Crear cuenta", children: "Crear cuenta" }) })] }));
188
- }
189
- function FuseSignInCtaSection(props) {
190
- const { LinkComponent, signInPath = "/sign-in", disabled = false } = props;
191
- return (_jsxs(_Fragment, { children: [_jsxs(Box, { sx: { mt: 6, display: "flex", alignItems: "center" }, children: [_jsx(Box, { sx: { mt: "1px", flex: 1, borderTop: 1, borderColor: "divider" } }), _jsx(Typography, { sx: { mx: 1 }, color: "text.secondary", children: "\u00BFYa tienes una cuenta?" }), _jsx(Box, { sx: { mt: "1px", flex: 1, borderTop: 1, borderColor: "divider" } })] }), _jsx(Box, { sx: { mt: 2, display: "flex", alignItems: "center", gap: 2 }, children: _jsx(AuthSecondaryButton, { component: LinkComponent, to: signInPath, sx: { flex: 1 }, disabled: disabled, startIcon: _jsx(EmailOutlinedIcon, { fontSize: "small" }), onClick: (event) => {
192
- if (disabled) {
193
- event.preventDefault();
194
- }
195
- }, "aria-label": "Iniciar sesi\u00F3n", children: "Iniciar sesi\u00F3n" }) })] }));
196
- }
197
- function FuseForgotPasswordPageForm(props) {
198
- const { LinkComponent } = props;
199
- const { requestPasswordReset } = useFuseJwtAuth();
200
- return (_jsxs(_Fragment, { children: [_jsx(AuthForgotPasswordForm, { onSubmit: (values) => requestPasswordReset({ email: values.email }) }), _jsx(AuthSecondaryButton, { sx: { mt: 2 }, component: LinkComponent, to: "/sign-in", startIcon: _jsx(ArrowBackOutlinedIcon, { fontSize: "small" }), "aria-label": "Regresar a iniciar sesi\u00F3n", children: "Regresar a iniciar sesi\u00F3n" })] }));
201
- }
202
- function FuseResetPasswordPageForm(props) {
203
- const { initialUid = "", initialToken = "" } = props;
204
- const { confirmPasswordReset } = useFuseJwtAuth();
205
- const navigate = useNavigate();
206
- return (_jsx(AuthPasswordResetConfirmForm, { defaultValues: {
207
- uid: initialUid,
208
- token: initialToken,
209
- }, onGoToSignIn: () => navigate('/sign-in'), onSubmit: (values) => confirmPasswordReset(values) }));
210
- }
211
- function FuseAccountConfirmationPageForm(props) {
212
- const { initialUid = "", initialToken = "" } = props;
213
- const [searchParams] = useSearchParams();
214
- const navigate = useNavigate();
215
- const initialEmail = useMemo(() => searchParams.get("email") || "", [searchParams]);
216
- const { confirmAccountEmail, resendAccountConfirmation } = useFuseJwtAuth();
217
- return (_jsx(AuthAccountConfirmationForm, { defaultValues: {
218
- uid: initialUid,
219
- token: initialToken,
220
- }, defaultEmail: initialEmail, onGoToSignIn: () => navigate('/sign-in'), onSubmit: (values) => confirmAccountEmail(values), onResend: (values) => resendAccountConfirmation(values) }));
221
- }
222
- function useRoleSelectionDialog(options, defaultRole) {
223
- const [isDialogOpen, setIsDialogOpen] = useState(false);
224
- const [selectedRole, setSelectedRole] = useState(defaultRole ?? options[0]?.value ?? "");
225
- const roleSelectionResolverRef = useRef(null);
226
- const requestRoleSelection = useCallback(() => {
227
- if (!options.length) {
228
- return Promise.resolve(undefined);
229
- }
230
- if (options.length === 1) {
231
- return Promise.resolve(options[0].value);
232
- }
233
- return new Promise((resolve) => {
234
- roleSelectionResolverRef.current = resolve;
235
- setIsDialogOpen(true);
236
- });
237
- }, [options]);
238
- const closeRoleDialog = useCallback((role) => {
239
- const resolver = roleSelectionResolverRef.current;
240
- roleSelectionResolverRef.current = null;
241
- setIsDialogOpen(false);
242
- resolver?.(role);
243
- }, []);
244
- const dialog = (_jsx(AuthRoleSelectionDialog, { open: isDialogOpen, options: options, initialRole: selectedRole, onCancel: () => closeRoleDialog(undefined), onConfirm: (role) => {
245
- setSelectedRole(role);
246
- closeRoleDialog(role);
247
- } }));
248
- return { requestRoleSelection, dialog, hasRoleOptions: options.length > 0 };
249
- }
250
- export function createFuseAuthViews(options) {
251
- const { LinkComponent, accountConfirmationPath = "/verify-email", signUpRoleOptions, defaultSignUpRole, socialConfig, showDebugSocial = false, onSignUpSuccess, } = options;
252
- function SignInPageView() {
253
- const [mode, setMode] = useState("password");
254
- const { signInSocial, signInSocialPrecheck } = useFuseJwtAuth();
255
- const [socialLoadingProvider, setSocialLoadingProvider] = useState(null);
256
- const [socialError, setSocialError] = useState(null);
257
- const signupRoleOptions = (signUpRoleOptions ?? [])
258
- .filter((roleOption) => roleOption.allowSignup === true)
259
- .map((roleOption) => ({
260
- value: roleOption.value,
261
- label: roleOption.label,
262
- }));
263
- const { requestRoleSelection, dialog, hasRoleOptions } = useRoleSelectionDialog(signupRoleOptions, defaultSignUpRole);
264
- const enabledSocialProviders = useMemo(() => getEnabledSocialProviders(socialConfig, showDebugSocial), [socialConfig, showDebugSocial]);
265
- const isAuthFlowBusy = socialLoadingProvider !== null;
266
- const onSocialClick = useCallback(async (provider) => {
267
- const providerConfig = enabledSocialProviders.find((item) => item.provider === provider);
268
- if (!providerConfig) {
269
- return;
270
- }
271
- try {
272
- setSocialError(null);
273
- setSocialLoadingProvider(provider);
274
- if (showDebugSocial) {
275
- console.info("[jb-auth][social] start provider auth", { provider, providerConfig });
276
- }
277
- const tokenPayload = await authenticateWithSocialProvider(provider, providerConfig);
278
- if (showDebugSocial) {
279
- console.info("[jb-auth][social] provider token payload ready", { provider, tokenPayload });
280
- }
281
- const baseSocialPayload = {
282
- ...tokenPayload,
283
- provider,
284
- client: "web",
285
- termsAndConditionsAccepted: true,
286
- };
287
- if (showDebugSocial) {
288
- console.info("[jb-auth][social] sending social precheck", { provider, client: "web" });
289
- }
290
- const socialPrecheckResponse = await signInSocialPrecheck(baseSocialPayload);
291
- const shouldSelectRole = shouldSelectRoleForSocialLogin(socialPrecheckResponse, hasRoleOptions);
292
- const selectedRole = shouldSelectRole ? await requestRoleSelection() : undefined;
293
- if (shouldSelectRole && !selectedRole) {
294
- return;
295
- }
296
- if (showDebugSocial) {
297
- console.info("[jb-auth][social] sending loginSocial request", {
298
- provider,
299
- role: selectedRole,
300
- client: "web"
301
- });
302
- }
303
- await signInSocial({
304
- ...baseSocialPayload,
305
- role: selectedRole,
306
- });
307
- }
308
- catch (error) {
309
- if (showDebugSocial) {
310
- console.error("[jb-auth][social] flow failed", { provider, error });
311
- }
312
- const parsed = parseAuthError(error);
313
- setSocialError(parsed.rootMessage || "No se pudo acceder con el proveedor social.");
314
- }
315
- finally {
316
- setSocialLoadingProvider(null);
317
- }
318
- }, [enabledSocialProviders, hasRoleOptions, requestRoleSelection, showDebugSocial, signInSocial, signInSocialPrecheck]);
319
- return (_jsxs(Box, { sx: {
320
- mx: { xs: "auto", sm: 0 },
321
- width: { xs: "100%", sm: 320 },
322
- maxWidth: 320,
323
- display: "flex",
324
- flexDirection: "column",
325
- gap: 4,
326
- }, children: [_jsx(AuthPageTitle, { title: "Iniciar sesi\u00F3n" }), _jsxs(Box, { sx: { width: "100%" }, children: [_jsx(FuseSignInController, { LinkComponent: LinkComponent, mode: mode, disabled: isAuthFlowBusy, requestRoleSelection: requestRoleSelection, onBackToPassword: () => setMode("password") }), mode === "password" && (_jsxs(_Fragment, { children: [_jsx(FuseSignUpCtaSection, { LinkComponent: LinkComponent, disabled: isAuthFlowBusy }), _jsx(FuseAuthAlternativesSection, { onSmsClick: () => setMode("otp"), socialProviders: enabledSocialProviders, onSocialClick: onSocialClick, socialLoadingProvider: socialLoadingProvider, socialError: socialError })] }))] }), dialog] }));
327
- }
328
- function SignUpPageView() {
329
- const [mode, setMode] = useState("password");
330
- const { signInSocial, signInSocialPrecheck } = useFuseJwtAuth();
331
- const [socialLoadingProvider, setSocialLoadingProvider] = useState(null);
332
- const [socialError, setSocialError] = useState(null);
333
- const navigate = useNavigate();
334
- const signupRoleOptions = (signUpRoleOptions ?? [])
335
- .filter((roleOption) => roleOption.allowSignup === true)
336
- .map((roleOption) => ({
337
- value: roleOption.value,
338
- label: roleOption.label,
339
- }));
340
- const { requestRoleSelection, dialog, hasRoleOptions } = useRoleSelectionDialog(signupRoleOptions, defaultSignUpRole);
341
- const enabledSocialProviders = useMemo(() => getEnabledSocialProviders(socialConfig, showDebugSocial), [socialConfig, showDebugSocial]);
342
- const isAuthFlowBusy = socialLoadingProvider !== null;
343
- const onSocialClick = useCallback(async (provider) => {
344
- const providerConfig = enabledSocialProviders.find((item) => item.provider === provider);
345
- if (!providerConfig) {
346
- return;
347
- }
348
- try {
349
- setSocialError(null);
350
- setSocialLoadingProvider(provider);
351
- if (showDebugSocial) {
352
- console.info("[jb-auth][social] start provider auth", { provider, providerConfig });
353
- }
354
- const tokenPayload = await authenticateWithSocialProvider(provider, providerConfig);
355
- if (showDebugSocial) {
356
- console.info("[jb-auth][social] provider token payload ready", { provider, tokenPayload });
357
- }
358
- const baseSocialPayload = {
359
- ...tokenPayload,
360
- provider,
361
- client: "web",
362
- termsAndConditionsAccepted: true,
363
- };
364
- if (showDebugSocial) {
365
- console.info("[jb-auth][social] sending social precheck", { provider, client: "web" });
366
- }
367
- const socialPrecheckResponse = await signInSocialPrecheck(baseSocialPayload);
368
- const shouldSelectRole = shouldSelectRoleForSocialLogin(socialPrecheckResponse, hasRoleOptions);
369
- const selectedRole = shouldSelectRole ? await requestRoleSelection() : undefined;
370
- if (shouldSelectRole && !selectedRole) {
371
- return;
372
- }
373
- if (showDebugSocial) {
374
- console.info("[jb-auth][social] sending loginSocial request", {
375
- provider,
376
- role: selectedRole,
377
- client: "web"
378
- });
379
- }
380
- await signInSocial({
381
- ...baseSocialPayload,
382
- role: selectedRole,
383
- });
384
- }
385
- catch (error) {
386
- if (showDebugSocial) {
387
- console.error("[jb-auth][social] flow failed", { provider, error });
388
- }
389
- const parsed = parseAuthError(error);
390
- setSocialError(parsed.rootMessage || "No se pudo acceder con el proveedor social.");
391
- }
392
- finally {
393
- setSocialLoadingProvider(null);
394
- }
395
- }, [enabledSocialProviders, hasRoleOptions, requestRoleSelection, showDebugSocial, signInSocial, signInSocialPrecheck]);
396
- return (_jsxs(Box, { sx: {
397
- mx: { xs: "auto", sm: 0 },
398
- width: { xs: "100%", sm: 320 },
399
- maxWidth: 320,
400
- display: "flex",
401
- flexDirection: "column",
402
- gap: 4,
403
- }, children: [_jsx(AuthPageTitle, { title: "Crear cuenta" }), _jsx(Box, { sx: { width: "100%" }, children: mode === "password" ? (_jsxs(_Fragment, { children: [_jsx(FuseSignUpController, { disabled: isAuthFlowBusy, requiresRoleSelection: hasRoleOptions, requestRoleSelection: requestRoleSelection, onSuccess: (payload) => {
404
- const { email } = payload;
405
- onSignUpSuccess?.(payload);
406
- navigate(`${accountConfirmationPath}?email=${encodeURIComponent(email)}`);
407
- } }), _jsx(FuseSignInCtaSection, { LinkComponent: LinkComponent, disabled: isAuthFlowBusy }), _jsx(FuseAuthAlternativesSection, { onSmsClick: () => setMode("otp"), socialProviders: enabledSocialProviders, onSocialClick: onSocialClick, socialLoadingProvider: socialLoadingProvider, socialError: socialError })] })) : (_jsx(FuseOtpSignUpForm, { requestRoleSelection: requestRoleSelection, onBackToPassword: () => setMode("password") })) }), dialog] }));
408
- }
409
- function ForgotPasswordPageView() {
410
- return (_jsxs(Box, { sx: {
411
- mx: { xs: "auto", sm: 0 },
412
- width: { xs: "100%", sm: 320 },
413
- maxWidth: 320,
414
- display: "flex",
415
- flexDirection: "column",
416
- gap: 4,
417
- }, children: [_jsxs(Box, { sx: { width: "100%" }, children: [_jsx(AuthPageTitle, { title: "Olvid\u00E9 mi contrase\u00F1a" }), _jsx(Typography, { sx: { mt: 1.5, fontSize: 16, textAlign: "center" }, color: "text.secondary", children: "Ingresa tu correo y te enviaremos un enlace para restablecer tu contrase\u00F1a." })] }), _jsx(FuseForgotPasswordPageForm, { LinkComponent: LinkComponent })] }));
418
- }
419
- function ResetPasswordPageView() {
420
- const [searchParams] = useSearchParams();
421
- const initialUid = useMemo(() => searchParams.get("uid") || "", [searchParams]);
422
- const initialToken = useMemo(() => searchParams.get("token") || "", [searchParams]);
423
- return (_jsxs(Box, { sx: {
424
- mx: { xs: "auto", sm: 0 },
425
- width: { xs: "100%", sm: 320 },
426
- maxWidth: 320,
427
- display: "flex",
428
- flexDirection: "column",
429
- gap: 4,
430
- }, children: [_jsxs(Box, { sx: { width: "100%" }, children: [_jsx(AuthPageTitle, { title: "Restablecer contrase\u00F1a" }), _jsx(Typography, { sx: { mt: 1.5, fontSize: 16 }, color: "text.secondary", children: "Define una nueva contrase\u00F1a para volver a acceder a tu cuenta." })] }), _jsx(FuseResetPasswordPageForm, { initialUid: initialUid, initialToken: initialToken })] }));
431
- }
432
- function SignOutPageView() {
433
- return (_jsxs(Box, { sx: {
434
- mx: { xs: "auto", sm: 0 },
435
- width: { xs: "100%", sm: 320 },
436
- maxWidth: 320,
437
- }, children: [_jsx(AuthPageTitle, { title: "Has cerrado sesi\u00F3n" }), _jsxs(Typography, { sx: { mt: 2, textAlign: "center", fontSize: 16, fontWeight: 500 }, color: "text.secondary", children: ["Ir a ", _jsx(LinkComponent, { to: "/sign-in", children: "iniciar sesi\u00F3n" })] })] }));
438
- }
439
- function AccountConfirmationPageView() {
440
- const [searchParams] = useSearchParams();
441
- const initialUid = useMemo(() => searchParams.get("uid") || "", [searchParams]);
442
- const initialToken = useMemo(() => searchParams.get("token") || "", [searchParams]);
443
- return (_jsxs(Box, { sx: {
444
- mx: { xs: "auto", sm: 0 },
445
- width: { xs: "100%", sm: 320 },
446
- maxWidth: 320,
447
- display: "flex",
448
- flexDirection: "column",
449
- gap: 4,
450
- }, children: [_jsxs(Box, { sx: { width: "100%" }, children: [_jsx(AuthPageTitle, { title: "Verificar cuenta" }), _jsx(Typography, { sx: { mt: 1.5, fontSize: 16 }, color: "text.secondary", children: "Estamos validando tu enlace de confirmaci\u00F3n." })] }), _jsx(FuseAccountConfirmationPageForm, { initialUid: initialUid, initialToken: initialToken })] }));
451
- }
452
- return {
453
- SignInPageView,
454
- SignUpPageView,
455
- ForgotPasswordPageView,
456
- ResetPasswordPageView,
457
- SignOutPageView,
458
- AccountConfirmationPageView,
459
- };
460
- }
@@ -1,41 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { AuthClient } from '../client';
3
- import { AccountConfirmationPayload, AccountConfirmationResendPayload, LoginSocialPrecheckResponse, LoginSocialPayload, PasswordChangePayload, PasswordResetConfirmPayload, PasswordResetRequestPayload, RegisterPayload, RequestOtpPayload, VerifyOtpPayload } from '../types';
4
- type JsonRecord = Record<string, unknown>;
5
- type FuseAuthState<TUser = JsonRecord> = {
6
- authStatus: 'configuring' | 'authenticated' | 'unauthenticated';
7
- isAuthenticated: boolean;
8
- user: TUser | null;
9
- };
10
- export type FuseJwtAuthContextType<TUser = JsonRecord> = FuseAuthState<TUser> & {
11
- signIn: (credentials: {
12
- login: string;
13
- password: string;
14
- username?: string;
15
- }) => Promise<JsonRecord>;
16
- signInSocial: (payload: LoginSocialPayload) => Promise<JsonRecord>;
17
- signInSocialPrecheck: (payload: LoginSocialPayload) => Promise<LoginSocialPrecheckResponse>;
18
- requestOtp: (payload: RequestOtpPayload) => Promise<Record<string, unknown>>;
19
- signInOtp: (payload: VerifyOtpPayload) => Promise<JsonRecord>;
20
- signUp: (payload: RegisterPayload) => Promise<JsonRecord>;
21
- confirmAccountEmail: (payload: AccountConfirmationPayload) => Promise<Record<string, unknown>>;
22
- resendAccountConfirmation: (payload: AccountConfirmationResendPayload) => Promise<Record<string, unknown>>;
23
- requestPasswordReset: (payload: PasswordResetRequestPayload) => Promise<Record<string, unknown>>;
24
- confirmPasswordReset: (payload: PasswordResetConfirmPayload) => Promise<Record<string, unknown>>;
25
- changePassword: (payload: PasswordChangePayload) => Promise<Record<string, unknown>>;
26
- switchProfile: (profileId: number) => Promise<JsonRecord>;
27
- getProfiles: () => Promise<Record<string, unknown>[]>;
28
- signOut: () => void;
29
- refreshToken: () => Promise<string | null>;
30
- };
31
- type FuseAuthProviderComponentProps = {
32
- children?: ReactNode;
33
- onAuthStateChanged?: (state: FuseAuthState) => void;
34
- ref?: React.Ref<{
35
- signOut: () => void;
36
- }>;
37
- };
38
- export declare const createFuseJwtAuthProvider: (authClient: AuthClient) => (props: FuseAuthProviderComponentProps) => import("react/jsx-runtime").JSX.Element;
39
- export declare const useFuseJwtAuth: () => FuseJwtAuthContextType<JsonRecord>;
40
- export {};
41
- //# sourceMappingURL=fuseAdapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fuseAdapter.d.ts","sourceRoot":"","sources":["../../../src/auth/fuse/fuseAdapter.tsx"],"names":[],"mappings":"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"}