@alore/auth-react-ui 1.2.0-alpha.14 → 1.2.0-alpha.16

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 (51) hide show
  1. package/dist/cjs/auth/ForgotPassword.d.ts +15 -0
  2. package/dist/cjs/auth/ForgotPassword.js +263 -0
  3. package/dist/cjs/auth/ForgotPassword.js.map +1 -0
  4. package/dist/cjs/auth/Login.d.ts +19 -1
  5. package/dist/cjs/auth/Login.js +81 -11
  6. package/dist/cjs/auth/Login.js.map +1 -1
  7. package/dist/cjs/components/Auth.d.ts +19 -1
  8. package/dist/cjs/components/Auth.js +44 -5
  9. package/dist/cjs/components/Auth.js.map +1 -1
  10. package/dist/cjs/components/AuthProvider.d.ts +16 -2
  11. package/dist/cjs/components/FormRules/helpers/index.js +1 -1
  12. package/dist/cjs/components/FormRules/helpers/index.js.map +1 -1
  13. package/dist/cjs/components/InputForm.d.ts +2 -1
  14. package/dist/cjs/components/InputForm.js +2 -2
  15. package/dist/cjs/components/InputForm.js.map +1 -1
  16. package/dist/cjs/dictionaries/en.json +19 -0
  17. package/dist/cjs/dictionaries/pt.json +19 -0
  18. package/dist/cjs/get-dictionary.d.ts +57 -0
  19. package/dist/cjs/hooks/useAuthService.d.ts +48 -6
  20. package/dist/cjs/hooks/useAuthServiceInstance.d.ts +16 -2
  21. package/dist/cjs/hooks/useDictionary.d.ts +19 -0
  22. package/dist/cjs/machine/index.d.ts +32 -4
  23. package/dist/cjs/machine/index.js +76 -5
  24. package/dist/cjs/machine/index.js.map +1 -1
  25. package/dist/cjs/machine/types.d.ts +12 -1
  26. package/dist/mjs/auth/ForgotPassword.d.ts +15 -0
  27. package/dist/mjs/auth/ForgotPassword.js +224 -0
  28. package/dist/mjs/auth/ForgotPassword.js.map +1 -0
  29. package/dist/mjs/auth/Login.d.ts +19 -1
  30. package/dist/mjs/auth/Login.js +81 -11
  31. package/dist/mjs/auth/Login.js.map +1 -1
  32. package/dist/mjs/components/Auth.d.ts +19 -1
  33. package/dist/mjs/components/Auth.js +44 -5
  34. package/dist/mjs/components/Auth.js.map +1 -1
  35. package/dist/mjs/components/AuthProvider.d.ts +16 -2
  36. package/dist/mjs/components/FormRules/helpers/index.js +1 -1
  37. package/dist/mjs/components/FormRules/helpers/index.js.map +1 -1
  38. package/dist/mjs/components/InputForm.d.ts +2 -1
  39. package/dist/mjs/components/InputForm.js +2 -2
  40. package/dist/mjs/components/InputForm.js.map +1 -1
  41. package/dist/mjs/dictionaries/en.json +19 -0
  42. package/dist/mjs/dictionaries/pt.json +19 -0
  43. package/dist/mjs/get-dictionary.d.ts +57 -0
  44. package/dist/mjs/hooks/useAuthService.d.ts +48 -6
  45. package/dist/mjs/hooks/useAuthServiceInstance.d.ts +16 -2
  46. package/dist/mjs/hooks/useDictionary.d.ts +19 -0
  47. package/dist/mjs/machine/index.d.ts +32 -4
  48. package/dist/mjs/machine/index.js +71 -5
  49. package/dist/mjs/machine/index.js.map +1 -1
  50. package/dist/mjs/machine/types.d.ts +12 -1
  51. package/package.json +2 -2
@@ -0,0 +1,15 @@
1
+ import { Locale } from 'get-dictionary';
2
+ import React from 'react';
3
+ import { AuthInstance } from '../machine/types';
4
+ export interface ForgotPasswordProps {
5
+ locale?: Locale;
6
+ authServiceInstance: AuthInstance;
7
+ forgeId?: string;
8
+ logoImage?: React.ReactNode;
9
+ cryptoUtils: {
10
+ hashUserInfo: (_userInfo: string) => string;
11
+ generateSecureHash: (_data: string, _salt: string, _keyDerivationFunction: 'argon2d' | 'pbkdf2') => Promise<string>;
12
+ };
13
+ }
14
+ declare const ForgotPassword: ({ locale, authServiceInstance, forgeId, logoImage, cryptoUtils, }: ForgotPasswordProps) => React.JSX.Element;
15
+ export default ForgotPassword;
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
27
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
28
+ return new (P || (P = Promise))(function (resolve, reject) {
29
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
30
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
31
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
32
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
33
+ });
34
+ };
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ /* eslint-disable @next/next/no-img-element */
40
+ const solid_1 = require("@heroicons/react/20/solid");
41
+ const yup_1 = require("@hookform/resolvers/yup");
42
+ const react_1 = require("@xstate/react");
43
+ const flowbite_react_1 = require("flowbite-react");
44
+ const react_2 = __importStar(require("react"));
45
+ const react_hook_form_1 = require("react-hook-form");
46
+ const tailwind_merge_1 = require("tailwind-merge");
47
+ const yup = __importStar(require("yup"));
48
+ const helpers_1 = require("../components/FormRules/helpers");
49
+ const helpers_2 = require("../helpers");
50
+ const useDictionary_1 = __importDefault(require("../hooks/useDictionary"));
51
+ const utils_1 = require("../utils");
52
+ const InputForm = react_2.default.lazy(() => Promise.resolve().then(() => __importStar(require('../components/InputForm'))));
53
+ const BackButton = react_2.default.lazy(() => Promise.resolve().then(() => __importStar(require('../components/BackButton'))));
54
+ const FormRules = react_2.default.lazy(() => Promise.resolve().then(() => __importStar(require('../components/FormRules'))));
55
+ const envelopIcon = () => react_2.default.createElement(solid_1.EnvelopeIcon, { className: "size-4 text-gray-500" });
56
+ const lockClosedIcon = () => react_2.default.createElement(solid_1.LockClosedIcon, { className: "size-4 text-gray-500" });
57
+ const ForgotPassword = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, cryptoUtils, }) => {
58
+ const { hashUserInfo, generateSecureHash } = cryptoUtils;
59
+ const dictionary = (0, useDictionary_1.default)(locale);
60
+ const forgotPasswordDictionary = dictionary === null || dictionary === void 0 ? void 0 : dictionary.auth.forgotPassword;
61
+ const [authState, sendAuth] = (0, react_1.useActor)(authServiceInstance);
62
+ const { error: errorObj, forgotPasswordSession } = authState.context;
63
+ const displayError = (errorObj === null || errorObj === void 0 ? void 0 : errorObj.message) || '';
64
+ const hasDisplayError = !!displayError;
65
+ const emailFormSchema = yup
66
+ .object({
67
+ email: yup
68
+ .string()
69
+ .required(dictionary === null || dictionary === void 0 ? void 0 : dictionary.formValidation.required)
70
+ .email(dictionary === null || dictionary === void 0 ? void 0 : dictionary.formValidation.invalidEmail),
71
+ })
72
+ .required();
73
+ const passwordFormSchema = yup
74
+ .object({
75
+ password: yup.string().required(dictionary === null || dictionary === void 0 ? void 0 : dictionary.formValidation.required),
76
+ confirmPassword: yup.string().required(dictionary === null || dictionary === void 0 ? void 0 : dictionary.formValidation.required),
77
+ })
78
+ .required();
79
+ const emailDefaultValues = {
80
+ email: '',
81
+ };
82
+ const { control: emailControl, formState: { errors: emailErrors }, handleSubmit: handleSubmitEmail, getValues: getValuesEmail, } = (0, react_hook_form_1.useForm)({
83
+ resolver: (0, yup_1.yupResolver)(emailFormSchema),
84
+ mode: 'onSubmit',
85
+ reValidateMode: 'onSubmit',
86
+ defaultValues: emailDefaultValues,
87
+ });
88
+ (0, react_hook_form_1.useWatch)({ control: emailControl, name: ['email'] });
89
+ const passwordDefaultValues = {
90
+ password: '',
91
+ confirmPassword: '',
92
+ };
93
+ const { control: passwordControl, formState: { errors: passwordErrors, dirtyFields: passwordDirtyFields }, handleSubmit: handleSubmitPassword, getValues: getValuesPassword, } = (0, react_hook_form_1.useForm)({
94
+ resolver: (0, yup_1.yupResolver)(passwordFormSchema),
95
+ defaultValues: passwordDefaultValues,
96
+ });
97
+ (0, react_hook_form_1.useWatch)({ control: passwordControl, name: ['password'] });
98
+ (0, react_hook_form_1.useWatch)({ control: passwordControl, name: ['confirmPassword'] });
99
+ const isLoading = (0, react_2.useMemo)(() => authState.matches('active.forgotPassword.sendingCode') ||
100
+ authState.matches('active.forgotPassword.savingPassword'), [authState.value]);
101
+ const onSubmitEmail = (data) => __awaiter(void 0, void 0, void 0, function* () {
102
+ const { email } = data;
103
+ sendAuth({
104
+ type: 'SEND_CODE',
105
+ payload: {
106
+ email,
107
+ locale,
108
+ },
109
+ });
110
+ });
111
+ const onSubmitPassword = (data) => __awaiter(void 0, void 0, void 0, function* () {
112
+ const { password } = data;
113
+ const salt = forgotPasswordSession === null || forgotPasswordSession === void 0 ? void 0 : forgotPasswordSession.salt;
114
+ const token = forgotPasswordSession === null || forgotPasswordSession === void 0 ? void 0 : forgotPasswordSession.token;
115
+ const { userAgent } = window.navigator;
116
+ const device = hashUserInfo(userAgent);
117
+ if (salt && token) {
118
+ const secureHashArgon2d = yield generateSecureHash(password, salt, 'argon2d');
119
+ sendAuth({
120
+ type: 'CONFIRM_PASSWORD',
121
+ payload: {
122
+ salt,
123
+ token,
124
+ passwordHash: secureHashArgon2d,
125
+ device,
126
+ },
127
+ });
128
+ }
129
+ });
130
+ const isPasswordSubmitDisabled = (0, react_2.useMemo)(() => {
131
+ const passwordValues = getValuesPassword();
132
+ const userInfoValues = { email: getValuesEmail('email') };
133
+ let isValid = true;
134
+ helpers_1.passwordRules.forEach((rule) => {
135
+ if (!(0, helpers_1.ruleValidation)(rule, passwordValues, userInfoValues)) {
136
+ isValid = false;
137
+ }
138
+ });
139
+ return !isValid;
140
+ }, [getValuesPassword(), passwordDirtyFields]);
141
+ const getAuthError = () => {
142
+ var _a, _b, _c, _d, _e;
143
+ let authErrorTitle = (_a = dictionary === null || dictionary === void 0 ? void 0 : dictionary.auth.login) === null || _a === void 0 ? void 0 : _a.somethingWrong;
144
+ let authErrorDescription = (_b = dictionary === null || dictionary === void 0 ? void 0 : dictionary.auth.login) === null || _b === void 0 ? void 0 : _b.defaultError;
145
+ // Check for error code first
146
+ if (errorObj === null || errorObj === void 0 ? void 0 : errorObj.message) {
147
+ switch (errorObj.message) {
148
+ case 'INVALID_SESSION':
149
+ case 'EXPIRED_SESSION':
150
+ authErrorTitle = forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.expiredSessionTitle;
151
+ authErrorDescription = forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.expiredSessionDescription;
152
+ return { authErrorTitle, authErrorDescription };
153
+ case 'EMAIL_NOT_ALLOWED':
154
+ authErrorTitle = (_c = dictionary === null || dictionary === void 0 ? void 0 : dictionary.auth) === null || _c === void 0 ? void 0 : _c.emailDomainNotAllowed;
155
+ return { authErrorTitle, authErrorDescription };
156
+ default:
157
+ break;
158
+ }
159
+ }
160
+ // Fallback to checking the message string
161
+ const lower = (_d = displayError.toLowerCase) === null || _d === void 0 ? void 0 : _d.call(displayError);
162
+ if (displayError === 'EMAIL_NOT_ALLOWED') {
163
+ authErrorTitle = (_e = dictionary === null || dictionary === void 0 ? void 0 : dictionary.auth) === null || _e === void 0 ? void 0 : _e.emailDomainNotAllowed;
164
+ return { authErrorTitle, authErrorDescription };
165
+ }
166
+ if ((lower === null || lower === void 0 ? void 0 : lower.includes('invalid')) || (lower === null || lower === void 0 ? void 0 : lower.includes('expired'))) {
167
+ authErrorTitle = forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.invalidLink;
168
+ authErrorDescription = forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.invalidLinkDescription;
169
+ }
170
+ return { authErrorTitle, authErrorDescription };
171
+ };
172
+ const EmailInputStep = (0, react_2.useMemo)(() => {
173
+ var _a, _b, _c;
174
+ const { authErrorTitle, authErrorDescription } = getAuthError();
175
+ return (react_2.default.createElement("div", { "data-testid": "forgot-password-email-step" },
176
+ react_2.default.createElement(BackButton, { className: "mb-4", disabled: isLoading, onClick: () => {
177
+ sendAuth('BACK');
178
+ window.history.replaceState({}, '', window.location.pathname);
179
+ } }, dictionary === null || dictionary === void 0 ? void 0 : dictionary.back),
180
+ hasDisplayError ? (react_2.default.createElement("div", { className: "flex flex-col items-center justify-center gap-5" },
181
+ react_2.default.createElement("img", { src: utils_1.authErrorImage, alt: "error", width: 70 }),
182
+ react_2.default.createElement("div", { className: "flex flex-col items-center justify-center gap-2" },
183
+ react_2.default.createElement("span", { className: "font-poppins text-alr-red text-center text-xl font-bold" }, authErrorTitle),
184
+ react_2.default.createElement("span", { className: "text-alr-grey text-center font-medium" }, authErrorDescription),
185
+ (errorObj === null || errorObj === void 0 ? void 0 : errorObj.code) && (react_2.default.createElement("span", { className: "mt-1 text-center text-xs text-gray-500" }, `Error code: ${errorObj.code}`))))) : (react_2.default.createElement("div", { className: "flex flex-col items-center" },
186
+ react_2.default.createElement("span", { className: "font-poppins text-alr-grey mb-5 mt-6 font-bold" }, forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.resetPassword),
187
+ react_2.default.createElement("span", { className: "text-alr-grey mb-3 text-center font-medium" }, forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.resetPasswordDescription))),
188
+ react_2.default.createElement("div", { className: "mt-4 flex flex-col gap-y-5" },
189
+ react_2.default.createElement("form", { className: "flex flex-col gap-y-5", onSubmit: handleSubmitEmail((data) => onSubmitEmail(data)) },
190
+ react_2.default.createElement(InputForm, { className: "my-1", control: emailControl, errors: emailErrors, name: "email", type: "text", placeholder: (_a = dictionary === null || dictionary === void 0 ? void 0 : dictionary.auth.login) === null || _a === void 0 ? void 0 : _a.enterEmail, "data-testid": "forgot-password-email-input", icon: envelopIcon, autoFocus: true }),
191
+ react_2.default.createElement(flowbite_react_1.Button, { type: "submit", "data-testid": "forgot-password-send-button", disabled: (0, helpers_2.verifyEmptyValues)(getValuesEmail('email')) },
192
+ isLoading && react_2.default.createElement(flowbite_react_1.Spinner, { className: "mr-3 !h-5 w-full !fill-gray-300" }), forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 :
193
+ forgotPasswordDictionary.sendCode)),
194
+ react_2.default.createElement("div", { className: "h-[0.5px] w-full bg-gray-300" }),
195
+ react_2.default.createElement("span", { className: "text-center text-sm font-medium" }, (_b = dictionary === null || dictionary === void 0 ? void 0 : dictionary.auth.login) === null || _b === void 0 ? void 0 :
196
+ _b.dontHaveAccount,
197
+ react_2.default.createElement("div", { "data-testid": "sign-up-button", className: "cursor-pointer text-[var(--primary-color)] hover:text-[var(--primary-hover)]", onClick: () => {
198
+ sendAuth(['RESET', { type: 'INITIALIZE', forgeId }, 'SIGN_UP']);
199
+ } }, (_c = dictionary === null || dictionary === void 0 ? void 0 : dictionary.auth.login) === null || _c === void 0 ? void 0 : _c.signUp)))));
200
+ }, [getValuesEmail(), emailErrors, emailControl, isLoading, displayError]);
201
+ const EmailSentStep = (0, react_2.useMemo)(() => (react_2.default.createElement("div", { "data-testid": "forgot-password-email-sent-step" },
202
+ react_2.default.createElement(BackButton, { className: "mb-4", disabled: isLoading, onClick: () => {
203
+ sendAuth('BACK');
204
+ window.history.replaceState({}, '', window.location.pathname);
205
+ } }, dictionary === null || dictionary === void 0 ? void 0 : dictionary.back),
206
+ react_2.default.createElement("div", { className: "flex flex-col items-center justify-center" },
207
+ react_2.default.createElement("span", { className: "font-poppins text-alr-grey mb-5 mt-14 text-center text-xl font-bold" }, forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.emailSentTitle),
208
+ react_2.default.createElement("span", { className: "text-alr-grey mb-6 w-full text-center font-medium" }, forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.emailSentDescription),
209
+ react_2.default.createElement(flowbite_react_1.Button, { className: "flex w-full items-center justify-center", onClick: () => {
210
+ sendAuth('BACK');
211
+ window.history.replaceState({}, '', window.location.pathname);
212
+ }, "data-testid": "back-to-login-button" }, forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.backToLogin)))), [forgotPasswordDictionary]);
213
+ const NewPasswordStep = (0, react_2.useMemo)(() => {
214
+ const { authErrorTitle, authErrorDescription } = getAuthError();
215
+ return (react_2.default.createElement("div", { "data-testid": "forgot-password-new-password-step" },
216
+ react_2.default.createElement(BackButton, { className: "mb-4", disabled: isLoading, onClick: () => sendAuth('BACK') }, dictionary === null || dictionary === void 0 ? void 0 : dictionary.back),
217
+ hasDisplayError && (react_2.default.createElement("div", { className: "mb-4 flex flex-col items-center justify-center gap-2" },
218
+ react_2.default.createElement("img", { src: utils_1.authErrorImage, alt: "error", width: 70 }),
219
+ react_2.default.createElement("span", { className: "font-poppins text-alr-red text-center text-xl font-bold" }, authErrorTitle),
220
+ react_2.default.createElement("span", { className: "text-alr-grey text-center font-medium" }, authErrorDescription),
221
+ (errorObj === null || errorObj === void 0 ? void 0 : errorObj.code) && (react_2.default.createElement("span", { className: "text-center text-xs text-gray-500" }, `Error code: ${errorObj.code}`)))),
222
+ react_2.default.createElement("div", { className: "flex w-full flex-col" },
223
+ react_2.default.createElement("span", { className: "font-poppins text-alr-grey mb-5 text-center text-xl font-bold" }, forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.newPasswordTitle),
224
+ react_2.default.createElement("span", { className: "text-alr-grey mb-5 text-center text-sm font-medium" }, forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.newPasswordDescription),
225
+ react_2.default.createElement("form", { onSubmit: handleSubmitPassword((data) => onSubmitPassword(data)), className: "flex flex-col gap-y-4" },
226
+ react_2.default.createElement(InputForm, { control: passwordControl, errors: passwordErrors, name: "password", autoFocus: true, icon: lockClosedIcon, placeholder: forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.passwordLabel, label: forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.passwordLabel, type: "password", "data-testid": "forgot-password-password-input", disabled: isLoading }),
227
+ react_2.default.createElement(InputForm, { control: passwordControl, errors: passwordErrors, name: "confirmPassword", placeholder: forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.confirmPasswordLabel, label: forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.confirmPasswordLabel, icon: lockClosedIcon, type: "password", "data-testid": "forgot-password-confirm-password-input", disabled: isLoading }),
228
+ react_2.default.createElement(FormRules, { locale: locale, className: "!gap-y-1 md:!gap-y-2", passwordValues: getValuesPassword(), userValues: { email: getValuesEmail('email') } }),
229
+ react_2.default.createElement(flowbite_react_1.Button, { "data-testid": "forgot-password-submit-button", type: "submit", disabled: isPasswordSubmitDisabled || isLoading },
230
+ isLoading && react_2.default.createElement(flowbite_react_1.Spinner, { className: "mr-3 !h-5 w-full !fill-gray-300" }), forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 :
231
+ forgotPasswordDictionary.confirmButton)))));
232
+ }, [
233
+ isPasswordSubmitDisabled,
234
+ passwordControl,
235
+ passwordErrors,
236
+ getValuesPassword(),
237
+ passwordDirtyFields,
238
+ isLoading,
239
+ displayError,
240
+ ]);
241
+ const SuccessStep = (0, react_2.useMemo)(() => (react_2.default.createElement("div", { "data-testid": "forgot-password-success-step", className: "flex flex-col items-center justify-center" },
242
+ react_2.default.createElement("span", { className: "font-poppins text-alr-grey mb-5 mt-14 text-center text-2xl font-semibold" }, forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.successTitle),
243
+ react_2.default.createElement("span", { className: "text-alr-grey mb-6 w-full text-center font-medium" }, forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.successDescription),
244
+ react_2.default.createElement(flowbite_react_1.Button, { className: "flex w-full items-center justify-center", onClick: () => {
245
+ sendAuth('BACK');
246
+ window.history.replaceState({}, '', window.location.pathname);
247
+ }, "data-testid": "back-to-login-success-button" }, forgotPasswordDictionary === null || forgotPasswordDictionary === void 0 ? void 0 : forgotPasswordDictionary.backToLogin))), [forgotPasswordDictionary]);
248
+ return (react_2.default.createElement("div", { className: "flex size-full min-h-screen flex-col items-center justify-center gap-y-2 sm:gap-y-7", "data-testid": "forgot-password-page" },
249
+ forgeId ? (react_2.default.createElement("div", { className: "flex flex-col" },
250
+ react_2.default.createElement("span", { className: "font-poppins text-alr-grey text-center text-2xl font-black" }, "Tardezinha com Thiaguinho"),
251
+ react_2.default.createElement("div", { className: "flex w-full flex-row items-center justify-center gap-2" },
252
+ react_2.default.createElement("span", { className: "font-inter text-sm font-medium text-gray-900" }, dictionary === null || dictionary === void 0 ? void 0 : dictionary.auth.poweredBy),
253
+ react_2.default.createElement("img", { src: utils_1.aloreLogoBlack, alt: "alore logo", width: "60" })))) : (logoImage || (react_2.default.createElement("img", { src: utils_1.aloreLogoBlack, alt: "alore logo", width: 201 }))),
254
+ react_2.default.createElement(flowbite_react_1.Card, { className: (0, tailwind_merge_1.twMerge)(`md:child:!px-9 mx-5 flex min-w-[20rem] !rounded-2xl border-gray-200 px-2 py-4 md:mx-7 md:w-96`, isLoading ? 'pointer-events-none opacity-50' : '') }, isLoading ? (react_2.default.createElement(flowbite_react_1.Spinner, { className: "my-20 !h-14 w-full !fill-[var(--primary-color)]" })) : (react_2.default.createElement(react_2.default.Fragment, null,
255
+ authState.matches('active.forgotPassword.idle') && EmailInputStep,
256
+ authState.matches('active.forgotPassword.codeSent') && EmailSentStep,
257
+ (authState.matches('active.forgotPassword.newPassword') ||
258
+ authState.matches('active.forgotPassword.savingPassword')) &&
259
+ NewPasswordStep,
260
+ authState.matches('active.forgotPassword.passwordSaved') && SuccessStep)))));
261
+ };
262
+ exports.default = ForgotPassword;
263
+ //# sourceMappingURL=ForgotPassword.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ForgotPassword.js","sourceRoot":"","sources":["../../../src/auth/ForgotPassword.tsx"],"names":[],"mappings":"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"}
@@ -11,6 +11,24 @@ export interface LoginProps {
11
11
  hashUserInfo: (_userInfo: string) => string;
12
12
  generateSecureHash: (_data: string, _salt: string, _keyDerivationFunction: 'argon2d' | 'pbkdf2') => Promise<string>;
13
13
  };
14
+ customStyles?: {
15
+ borderRadius?: string;
16
+ borderWidth?: string;
17
+ borderColor?: string;
18
+ backgroundColor?: string;
19
+ padding?: string;
20
+ boxShadow?: string;
21
+ };
22
+ title?: string;
23
+ titleClassName?: string;
24
+ loginTitle?: string;
25
+ loginTitleClassName?: string;
26
+ emailInputLabel?: string;
27
+ inputClassName?: string;
28
+ contentAlignment?: 'left' | 'center' | 'right';
29
+ customClassName?: string;
30
+ titleSpacing?: string;
31
+ logoContainerClassName?: string;
14
32
  }
15
- declare const Login: ({ locale, authServiceInstance, forgeId, logoImage, keyshareWorker, cryptoUtils, }: LoginProps) => React.JSX.Element | null;
33
+ declare const Login: ({ locale, authServiceInstance, forgeId, logoImage, keyshareWorker, cryptoUtils, customStyles, title, titleClassName, loginTitle, loginTitleClassName, emailInputLabel, inputClassName, contentAlignment, customClassName, titleSpacing, logoContainerClassName, }: LoginProps) => React.JSX.Element | null;
16
34
  export default Login;
@@ -59,7 +59,7 @@ const lockClosedIcon = () => react_2.default.createElement(solid_1.LockClosedIco
59
59
  const HARDWARE = 1;
60
60
  const SOFTWARE = 2;
61
61
  const ABORT_CONDITIONAL_UI = 'abort-conditional-ui';
62
- const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshareWorker, cryptoUtils, }) => {
62
+ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshareWorker, cryptoUtils, customStyles, title, titleClassName, loginTitle, loginTitleClassName, emailInputLabel, inputClassName, contentAlignment = 'center', customClassName, titleSpacing = 'gap-y-2 sm:gap-y-7', logoContainerClassName, }) => {
63
63
  const { hashUserInfo, generateSecureHash } = cryptoUtils;
64
64
  const dictionary = (0, useDictionary_1.default)(locale);
65
65
  const loginDictionary = dictionary === null || dictionary === void 0 ? void 0 : dictionary.auth.login;
@@ -591,12 +591,13 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
591
591
  (displayError === null || displayError === void 0 ? void 0 : displayError.includes('beta')) ? (react_2.default.createElement("span", { className: "font-poppins text-alr-red text-center text-xl font-bold" }, displayError)) : (react_2.default.createElement(react_2.default.Fragment, null,
592
592
  react_2.default.createElement("span", { className: "font-poppins text-alr-red text-center text-xl font-bold" }, authErrorTitle),
593
593
  react_2.default.createElement("span", { className: "text-alr-grey text-center font-medium" }, authErrorDescription),
594
- (errorObj === null || errorObj === void 0 ? void 0 : errorObj.code) && (react_2.default.createElement("span", { className: "mt-1 text-center text-xs text-gray-500" }, `Error code: ${errorObj.code}`)))))) : (react_2.default.createElement("h1", { className: "font-inter text-center text-xl font-bold text-gray-700" }, forgeId ? loginDictionary === null || loginDictionary === void 0 ? void 0 : loginDictionary.forgeLogin : loginDictionary === null || loginDictionary === void 0 ? void 0 : loginDictionary.loginAccount)),
594
+ (errorObj === null || errorObj === void 0 ? void 0 : errorObj.code) && (react_2.default.createElement("span", { className: "mt-1 text-center text-xs text-gray-500" }, `Error code: ${errorObj.code}`)))))) : (react_2.default.createElement("h1", { className: loginTitleClassName || 'font-inter text-center text-xl font-bold text-gray-700' }, loginTitle || (forgeId ? loginDictionary === null || loginDictionary === void 0 ? void 0 : loginDictionary.forgeLogin : loginDictionary === null || loginDictionary === void 0 ? void 0 : loginDictionary.loginAccount))),
595
595
  react_2.default.createElement("div", { className: "mt-4 flex flex-col gap-y-5" },
596
596
  !onlyPasskeyLogin && requireEmailVerification && (react_2.default.createElement("form", { className: "flex flex-col gap-y-5", onSubmit: handleSubmitEmail((data) => onSubmitEmail(data)) },
597
- react_2.default.createElement(InputForm, { className: "my-1", control: emailControl, errors: emailErrors, name: "email", type: "text", placeholder: loginDictionary === null || loginDictionary === void 0 ? void 0 : loginDictionary.enterEmail, "data-testid": "login-email-input", icon: envelopIcon, autoComplete: authAbortController && isConditionalMediationAvailable
597
+ react_2.default.createElement(InputForm, { className: "my-1", inputClassName: inputClassName, control: emailControl, errors: emailErrors, name: "email", type: "text", placeholder: emailInputLabel || (loginDictionary === null || loginDictionary === void 0 ? void 0 : loginDictionary.enterEmail), "data-testid": "login-email-input", icon: envelopIcon, autoComplete: authAbortController && isConditionalMediationAvailable
598
598
  ? 'username webauthn'
599
599
  : undefined, autoFocus: true }),
600
+ react_2.default.createElement("span", { onClick: () => sendAuth('FORGOT_PASSWORD'), className: "cursor-pointer text-xs font-medium text-[var(--primary-color)] hover:text-[var(--primary-hover)]" }, "Forgot your password?"),
600
601
  react_2.default.createElement(flowbite_react_1.Button, { type: "submit", "data-testid": "login-button", disabled: (0, helpers_1.verifyEmptyValues)(getValuesEmail('email')) },
601
602
  isLoading && react_2.default.createElement(flowbite_react_1.Spinner, { className: "mr-3 !h-5 w-full !fill-gray-300" }),
602
603
  onlyPasskeyLogin ? loginDictionary === null || loginDictionary === void 0 ? void 0 : loginDictionary.passkeyLogin : loginDictionary === null || loginDictionary === void 0 ? void 0 : loginDictionary.login))),
@@ -624,7 +625,33 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
624
625
  react_2.default.createElement("div", { "data-testid": "sign-up-button", className: "cursor-pointer text-[var(--primary-color)] hover:text-[var(--primary-hover)]", onClick: () => {
625
626
  sendAuth(['RESET', { type: 'INITIALIZE', forgeId }, 'SIGN_UP']);
626
627
  } }, loginDictionary === null || loginDictionary === void 0 ? void 0 : loginDictionary.signUp)))));
627
- }, [getValuesEmail(), isLoginSubmitDisabled, emailErrors, emailControl, isLoading, displayError]);
628
+ }, [
629
+ getValuesEmail,
630
+ emailErrors,
631
+ emailControl,
632
+ isLoading,
633
+ displayError,
634
+ loginTitleClassName,
635
+ loginTitle,
636
+ inputClassName,
637
+ emailInputLabel,
638
+ forgeId,
639
+ loginDictionary,
640
+ authAbortController,
641
+ isConditionalMediationAvailable,
642
+ sendAuth,
643
+ socialProviders,
644
+ dictionary,
645
+ handleSubmitEmail,
646
+ onSubmitEmail,
647
+ handlePasskeyButton,
648
+ handleGoogleLogin,
649
+ handleMicrosoftLogin,
650
+ onlyPasskeyLogin,
651
+ requireEmailVerification,
652
+ errorObj,
653
+ hasDisplayError,
654
+ ]);
628
655
  const SelectLoginMethod = (0, react_2.useMemo)(() => {
629
656
  const { authErrorTitle, authErrorDescription } = getAuthError();
630
657
  return (react_2.default.createElement("div", null,
@@ -662,8 +689,9 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
662
689
  react_2.default.createElement("span", { className: "text-alr-grey text-center font-medium" }, authErrorDescription),
663
690
  (errorObj === null || errorObj === void 0 ? void 0 : errorObj.code) && (react_2.default.createElement("span", { className: "text-center text-xs text-gray-500" }, `Error code: ${errorObj.code}`))))),
664
691
  react_2.default.createElement("form", { onSubmit: handleSubmitPassword((data) => onSubmitLogin(data)), className: "flex flex-col gap-y-5", "data-testid": "login-password-step" },
665
- react_2.default.createElement(InputForm, { control: passwordControl, errors: passwordErrors, name: "password", placeholder: loginDictionary === null || loginDictionary === void 0 ? void 0 : loginDictionary.enterPassword, icon: lockClosedIcon, type: "password", label: dictionary === null || dictionary === void 0 ? void 0 : dictionary.password, "data-testid": "login-password" }),
666
- react_2.default.createElement(flowbite_react_1.Button, { type: "submit", "data-testid": "login-submit", disabled: (0, helpers_1.verifyEmptyValues)(getValuesPassword('password')) },
692
+ react_2.default.createElement(InputForm, { inputClassName: inputClassName, control: passwordControl, errors: passwordErrors, name: "password", placeholder: loginDictionary === null || loginDictionary === void 0 ? void 0 : loginDictionary.enterPassword, icon: lockClosedIcon, type: "password", label: dictionary === null || dictionary === void 0 ? void 0 : dictionary.password, "data-testid": "login-password" }),
693
+ react_2.default.createElement("span", { onClick: () => sendAuth('FORGOT_PASSWORD'), className: "cursor-pointer text-xs font-medium text-[var(--primary-color)] hover:text-[var(--primary-hover)]" }, "Forgot your password?"),
694
+ react_2.default.createElement(flowbite_react_1.Button, { type: "submit", "data-testid": "login-submit", disabled: isLoginSubmitDisabled },
667
695
  isLoading && react_2.default.createElement(flowbite_react_1.Spinner, { className: "mr-3 !h-5 w-full !fill-gray-300" }), loginDictionary === null || loginDictionary === void 0 ? void 0 :
668
696
  loginDictionary.login),
669
697
  react_2.default.createElement("span", { className: "text-center text-sm font-medium" }, loginDictionary === null || loginDictionary === void 0 ? void 0 :
@@ -672,12 +700,24 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
672
700
  sendAuth(['RESET', { type: 'INITIALIZE', forgeId }, 'SIGN_UP']);
673
701
  } }, loginDictionary === null || loginDictionary === void 0 ? void 0 : loginDictionary.signUp)))));
674
702
  }, [
675
- getValuesPassword(),
676
- isLoginSubmitDisabled,
703
+ getValuesPassword,
704
+ getValuesEmail,
705
+ googleUser === null || googleUser === void 0 ? void 0 : googleUser.email,
706
+ credentialEmail,
677
707
  passwordErrors,
678
708
  passwordControl,
679
709
  isLoading,
680
710
  displayError,
711
+ hasDisplayError,
712
+ errorObj,
713
+ inputClassName,
714
+ loginDictionary,
715
+ dictionary,
716
+ sendAuth,
717
+ handleSubmitPassword,
718
+ onSubmitLogin,
719
+ forgeId,
720
+ isLoginSubmitDisabled,
681
721
  ]);
682
722
  const VerifyEmail = (0, react_2.useMemo)(() => (react_2.default.createElement("div", { "data-testid": "login-verify-email-step" },
683
723
  react_2.default.createElement(BackButton, { className: "mb-4", disabled: isLoading, onClick: () => sendAuth('BACK') }, dictionary === null || dictionary === void 0 ? void 0 : dictionary.back),
@@ -738,15 +778,45 @@ const Login = ({ locale = 'pt', authServiceInstance, forgeId, logoImage, keyshar
738
778
  react_2.default.createElement("span", { onClick: () => resendSecureCode(), className: (0, tailwind_merge_1.twMerge)(`text-base font-medium duration-300`, sendEmailCooldown > 0
739
779
  ? 'pointer-events-none opacity-50'
740
780
  : 'hover:text-alr-red cursor-pointer opacity-100') }, `${loginDictionary === null || loginDictionary === void 0 ? void 0 : loginDictionary.resendCode}${sendEmailCooldown ? ` (${sendEmailCooldown}s)` : ''}`)))), [secureCodeEmail, sendEmailCooldown, isLoading, newDeviceInfo, displayError]);
781
+ // Create custom styles object for the Card component
782
+ const cardCustomStyles = (0, react_2.useMemo)(() => {
783
+ if (!customStyles)
784
+ return {};
785
+ const styles = {};
786
+ if (customStyles.borderRadius)
787
+ styles.borderRadius = customStyles.borderRadius;
788
+ if (customStyles.borderWidth)
789
+ styles.borderWidth = customStyles.borderWidth;
790
+ if (customStyles.borderColor)
791
+ styles.borderColor = customStyles.borderColor;
792
+ if (customStyles.backgroundColor)
793
+ styles.backgroundColor = customStyles.backgroundColor;
794
+ if (customStyles.padding)
795
+ styles.padding = customStyles.padding;
796
+ if (customStyles.boxShadow)
797
+ styles.boxShadow = customStyles.boxShadow;
798
+ return styles;
799
+ }, [customStyles]);
800
+ // Get alignment classes based on contentAlignment prop
801
+ const getAlignmentClasses = (0, react_2.useMemo)(() => {
802
+ const alignmentMap = {
803
+ left: 'items-start text-left',
804
+ center: 'items-center text-center',
805
+ right: 'items-end text-right',
806
+ };
807
+ return alignmentMap[contentAlignment];
808
+ }, [contentAlignment]);
741
809
  if (authState.matches('active.login.successfulLogin'))
742
810
  return null;
743
- return (react_2.default.createElement("div", { className: "flex size-full min-h-screen flex-col items-center justify-center gap-y-2 sm:gap-y-7", "data-testid": "login-page" },
811
+ return (react_2.default.createElement("div", { className: `flex size-full min-h-screen flex-col items-center justify-center ${titleSpacing}`, "data-testid": "login-page" },
744
812
  forgeId ? (react_2.default.createElement("div", { className: "flex flex-col" },
745
813
  react_2.default.createElement("span", { className: "font-poppins text-alr-grey text-center text-2xl font-black" }, "Tardezinha com Thiaguinho"),
746
814
  react_2.default.createElement("div", { className: "flex w-full flex-row items-center justify-center gap-2" },
747
815
  react_2.default.createElement("span", { className: "font-inter text-sm font-medium text-gray-900" }, dictionary === null || dictionary === void 0 ? void 0 : dictionary.auth.poweredBy),
748
- react_2.default.createElement("img", { src: utils_1.aloreLogoBlack, alt: "alore logo", width: "60" })))) : (logoImage || (react_2.default.createElement("img", { src: utils_1.aloreLogoBlack, alt: "alore logo", width: authState.matches('active.login.newDevice') ? 153 : 201 }))),
749
- react_2.default.createElement(flowbite_react_1.Card, { className: (0, tailwind_merge_1.twMerge)(`md:child:!px-9 mx-5 flex min-w-[20rem] !rounded-2xl border-gray-200 px-2 py-4 md:mx-7 md:w-96`, isLoading ? 'pointer-events-none opacity-50' : '') }, isLoading ? (react_2.default.createElement(flowbite_react_1.Spinner, { className: "my-20 !h-14 w-full !fill-[var(--primary-color)]" })) : (react_2.default.createElement(react_2.default.Fragment, null,
816
+ react_2.default.createElement("img", { src: utils_1.aloreLogoBlack, alt: "alore logo", width: "60" })))) : (react_2.default.createElement("div", { className: `mx-5 flex min-w-80 flex-col gap-3 px-6 md:mx-7 md:w-96 ${getAlignmentClasses} ${logoContainerClassName || ''}` },
817
+ logoImage || (react_2.default.createElement("img", { src: utils_1.aloreLogoBlack, alt: "alore logo", width: authState.matches('active.login.newDevice') ? 153 : 201 })),
818
+ title && react_2.default.createElement("h2", { className: titleClassName }, title))),
819
+ react_2.default.createElement(flowbite_react_1.Card, { className: (0, tailwind_merge_1.twMerge)(`md:child:!px-9 mx-5 flex min-w-[20rem] !rounded-2xl border-gray-200 px-2 py-4 md:mx-7 md:w-96`, isLoading ? 'pointer-events-none opacity-50' : '', customClassName), style: cardCustomStyles }, isLoading ? (react_2.default.createElement(flowbite_react_1.Spinner, { className: "my-20 !h-14 w-full !fill-[var(--primary-color)]" })) : (react_2.default.createElement(react_2.default.Fragment, null,
750
820
  forgeId && authState.matches('active.web3Connector') && 'TODO',
751
821
  (authState.matches('active.login.idle') ||
752
822
  authState.matches('active.login.googleLogin') ||