@homefile/components-v2 2.40.22 → 2.40.23
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.
- package/dist/assets/locales/en/index.json +6 -2
- package/dist/components/onboarding/pages/AuthHeader.d.ts +3 -0
- package/dist/components/onboarding/pages/AuthHeader.js +10 -0
- package/dist/components/onboarding/pages/SignIn.d.ts +1 -1
- package/dist/components/onboarding/pages/SignIn.js +4 -4
- package/dist/components/onboarding/pages/SignUp.d.ts +1 -1
- package/dist/components/onboarding/pages/SignUp.js +4 -4
- package/dist/components/onboarding/pages/TwoFactor.d.ts +1 -1
- package/dist/components/onboarding/pages/TwoFactor.js +3 -3
- package/dist/components/onboarding/pages/index.d.ts +1 -0
- package/dist/components/onboarding/pages/index.js +1 -0
- package/dist/interfaces/pages/SignIn.interface.d.ts +1 -0
- package/dist/interfaces/pages/SignUp.interface.d.ts +1 -0
- package/dist/interfaces/pages/TwoFactor.interface.d.ts +2 -1
- package/dist/stories/onboarding/pages/SignUp.stories.js +4 -1
- package/dist/stories/onboarding/pages/TwoFactor.stories.d.ts +1 -7
- package/dist/stories/onboarding/pages/TwoFactor.stories.js +12 -5
- package/package.json +1 -1
|
@@ -686,6 +686,7 @@
|
|
|
686
686
|
"title": "Notifications"
|
|
687
687
|
},
|
|
688
688
|
"partner": {
|
|
689
|
+
"admin": "Partner Admin",
|
|
689
690
|
"aphw": {
|
|
690
691
|
"description": "APHW’s home warranty plans and cost cover your major home appliances and systems.",
|
|
691
692
|
"getQuote": "Get a Quote",
|
|
@@ -965,15 +966,18 @@
|
|
|
965
966
|
"title": "Please Log in",
|
|
966
967
|
"signinBt": "Log in",
|
|
967
968
|
"signupBt": "Sign up",
|
|
968
|
-
"signup": "Don’t have a Homefile account?"
|
|
969
|
+
"signup": "Don’t have a Homefile account?",
|
|
970
|
+
"signupPartner": "Don’t have a Homefile Partner account?"
|
|
969
971
|
},
|
|
970
972
|
"signup": {
|
|
971
973
|
"signin": "Already have a Homefile account?",
|
|
974
|
+
"signinPartner": "Already have a Homefile Partner account?",
|
|
972
975
|
"signinBt": "Log in",
|
|
973
976
|
"signupBt": "Create Account",
|
|
974
977
|
"subtitle": "Create a strong password",
|
|
975
978
|
"terms": "By creating an account you agree to the Homefile ",
|
|
976
|
-
"title": "Create your Homefile Account"
|
|
979
|
+
"title": "Create your Homefile Account",
|
|
980
|
+
"titlePartner": "Create your Homefile Partner Account"
|
|
977
981
|
},
|
|
978
982
|
"subscription": {
|
|
979
983
|
"active": "Active subscription",
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { t } from 'i18next';
|
|
3
|
+
import { Flex, Text, Box, Image } from '@chakra-ui/react';
|
|
4
|
+
import { Logo } from '../../../components';
|
|
5
|
+
import { Homefile } from '../../../assets/images';
|
|
6
|
+
export const AuthHeader = ({ isPartner = false }) => {
|
|
7
|
+
if (!isPartner)
|
|
8
|
+
return _jsx(Logo, {});
|
|
9
|
+
return (_jsxs(Flex, { align: "center", justify: "space-between", w: "full", h: "container.xxs", px: ['container.sm', 'container.md', 'container.lg'], children: [_jsx(Image, { src: Homefile, alt: "Homefile", h: "image.logo" }), _jsx(Box, { pl: "base", borderLeft: "1px solid", borderColor: "gray.200", children: _jsx(Text, { fontSize: "lg", fontWeight: "medium", children: t('partner.admin') }) })] }));
|
|
10
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { SignInI } from '../../../interfaces';
|
|
2
|
-
export declare const SignIn: ({ isLoading, handleForgotPassword, handleSignIn, handleSignUp, loginErrorMessage, values, }: SignInI) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const SignIn: ({ isPartner, isLoading, handleForgotPassword, handleSignIn, handleSignUp, loginErrorMessage, values, }: SignInI) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -10,12 +10,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
11
|
import { t } from 'i18next';
|
|
12
12
|
import { Box, Button, Center, Container, Stack, Text } from '@chakra-ui/react';
|
|
13
|
-
import {
|
|
13
|
+
import { Footer, PageTitle, CardFooter, PasswordInput, TextInput, ButtonLoader, BasePageWrapper, AuthHeader, } from '../../../components';
|
|
14
14
|
import { isEmptyField } from '../../../utils';
|
|
15
15
|
import { useSignIn } from '../../../hooks';
|
|
16
|
-
export const SignIn = ({ isLoading, handleForgotPassword, handleSignIn, handleSignUp, loginErrorMessage, values = { email: '', password: '' }, }) => {
|
|
16
|
+
export const SignIn = ({ isPartner, isLoading, handleForgotPassword, handleSignIn, handleSignUp, loginErrorMessage, values = { email: '', password: '' }, }) => {
|
|
17
17
|
const { inputs, handleInputChange, isValidated, setIsValidated } = useSignIn(values);
|
|
18
|
-
return (_jsxs(BasePageWrapper, { children: [_jsxs(Container, { size: "onboarding", boxShadow: "lg", children: [_jsx(
|
|
18
|
+
return (_jsxs(BasePageWrapper, { children: [_jsxs(Container, { size: "onboarding", boxShadow: "lg", children: [_jsx(AuthHeader, { isPartner: isPartner }), _jsx(PageTitle, { title: t('signin.title') }), _jsx(Box, { px: ['container.sm', 'container.md', 'container.lg'], mb: 6, children: _jsxs(Stack, { spacing: 8, children: [_jsxs(Stack, { spacing: "base", as: "form", children: [Boolean(loginErrorMessage) && (_jsx(Text, { variant: "error", children: loginErrorMessage })), _jsx(TextInput, { autoCapitalize: "none", autoCorrect: "off", autoComplete: "username", errorMessage: t('forms.email') + ' ' + t('forms.required'), hasError: isValidated && isEmptyField(inputs.email), id: "email", placeholder: t('forms.email'), value: values.email || inputs.email, handleChange: (event) => {
|
|
19
19
|
values.email = event.target.value;
|
|
20
20
|
handleInputChange(event);
|
|
21
21
|
} }), _jsx(PasswordInput, { autoComplete: "current-password", errorMessage: t('forms.password') + ' ' + t('forms.required'), hasError: isValidated && isEmptyField(inputs.password), id: "password", placeholder: t('forms.password'), value: values.password || inputs.password, handleChange: (event) => {
|
|
@@ -27,5 +27,5 @@ export const SignIn = ({ isLoading, handleForgotPassword, handleSignIn, handleSi
|
|
|
27
27
|
!isEmptyField(inputs.password)) {
|
|
28
28
|
handleSignIn(inputs);
|
|
29
29
|
}
|
|
30
|
-
}), children: t('signin.signinBt') }), _jsx(Center, { children: _jsx(Button, { onClick: handleForgotPassword, variant: "text", children: t('signin.forgotBt') }) })] })] }) }), _jsx(CardFooter, { title: t('signin.signup'), buttonLabel: t('signin.signupBt'), handleButtonClick: handleSignUp })] }), _jsx(Footer, {})] }));
|
|
30
|
+
}), children: t('signin.signinBt') }), _jsx(Center, { children: _jsx(Button, { onClick: handleForgotPassword, variant: "text", children: t('signin.forgotBt') }) })] })] }) }), _jsx(CardFooter, { title: isPartner ? t('signin.signupPartner') : t('signin.signup'), buttonLabel: t('signin.signupBt'), handleButtonClick: handleSignUp })] }), _jsx(Footer, {})] }));
|
|
31
31
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { SignUpI } from '../../../interfaces';
|
|
2
|
-
export declare const SignUp: ({ isLoading, handleCreateAccount, handleSignIn, showPromoCode, signupErrorMessage, values, }: SignUpI) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const SignUp: ({ isLoading, isPartner, handleCreateAccount, handleSignIn, showPromoCode, signupErrorMessage, values, }: SignUpI) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { t } from 'i18next';
|
|
3
3
|
import { Box, Button, Center, Container, Stack, Text } from '@chakra-ui/react';
|
|
4
|
-
import {
|
|
4
|
+
import { Footer, CardFooter, PageTitle, PasswordInput, TextInput, ButtonLoader, BasePageWrapper, AuthHeader, } from '../../../components';
|
|
5
5
|
import { isEmptyField, isValidEmail, isValidPassword, passwordMatch, } from '../../../utils';
|
|
6
6
|
import { useSignUp } from '../../../hooks';
|
|
7
|
-
export const SignUp = ({ isLoading, handleCreateAccount, handleSignIn, showPromoCode, signupErrorMessage, values = {
|
|
7
|
+
export const SignUp = ({ isLoading, isPartner, handleCreateAccount, handleSignIn, showPromoCode, signupErrorMessage, values = {
|
|
8
8
|
email: '',
|
|
9
9
|
firstName: '',
|
|
10
10
|
lastName: '',
|
|
@@ -17,10 +17,10 @@ export const SignUp = ({ isLoading, handleCreateAccount, handleSignIn, showPromo
|
|
|
17
17
|
handleCreateAccount,
|
|
18
18
|
values,
|
|
19
19
|
});
|
|
20
|
-
return (_jsxs(BasePageWrapper, { children: [_jsxs(Container, { size: "onboarding", boxShadow: "lg", children: [_jsx(
|
|
20
|
+
return (_jsxs(BasePageWrapper, { children: [_jsxs(Container, { size: "onboarding", boxShadow: "lg", children: [_jsx(AuthHeader, { isPartner: isPartner }), _jsx(PageTitle, { title: isPartner ? t('signup.titlePartner') : t('signup.title') }), _jsx(Box, { px: ['container.sm', 'container.md', 'container.lg'], mb: 6, children: _jsxs(Stack, { spacing: "base", as: "form", children: [Boolean(signupErrorMessage) && (_jsx(Text, { variant: "error", children: signupErrorMessage })), _jsx(TextInput, { errorMessage: t('forms.firstName') + ' ' + t('forms.required'), hasError: isValidated && isEmptyField(inputs.firstName), id: "firstName", placeholder: t('forms.firstName'), value: inputs.firstName, handleChange: handleInputChange, autoComplete: "given-name" }), _jsx(TextInput, { errorMessage: t('forms.lastName') + ' ' + t('forms.required'), hasError: isValidated && isEmptyField(inputs.lastName), id: "lastName", placeholder: t('forms.lastName'), value: inputs.lastName, handleChange: handleInputChange, autoComplete: "family-name" }), _jsx(TextInput, { autoCapitalize: "none", autoCorrect: "off", errorMessage: t('forms.email') + ' ' + t('forms.required'), hasError: isValidated &&
|
|
21
21
|
(isEmptyField(inputs.email) || !isValidEmail(inputs.email)), id: "email", placeholder: t('forms.email'), value: inputs.email, handleChange: handleInputChange, autoComplete: "email" }), showPromoCode && (_jsx(TextInput, { autoCapitalize: "none", autoCorrect: "off", id: "partnerCode", placeholder: t('forms.promoCode'), value: (_a = inputs.partnerCode) !== null && _a !== void 0 ? _a : '', handleChange: handleInputChange, autoComplete: "off" })), _jsx(Text, { textAlign: "center", variant: "caption", children: t('signup.subtitle') }), _jsx(PasswordInput, { errorMessage: passwordErrorMessage(values.password), hasError: isValidated &&
|
|
22
22
|
(!isValidPassword(inputs.password) ||
|
|
23
23
|
!passwordMatch(inputs.password, inputs.confirmPassword)), id: "password", placeholder: t('forms.password'), value: (_b = inputs.password) !== null && _b !== void 0 ? _b : '', handleChange: (event) => handleInputChange(event), autoComplete: "new-password" }), _jsx(PasswordInput, { errorMessage: passwordErrorMessage(inputs.confirmPassword), hasError: isValidated &&
|
|
24
24
|
(!isValidPassword(inputs.confirmPassword) ||
|
|
25
|
-
!passwordMatch(inputs.password, inputs.confirmPassword)), id: "confirmPassword", placeholder: t('forms.passwordConfirm'), value: (_c = inputs.confirmPassword) !== null && _c !== void 0 ? _c : '', handleChange: (event) => handleInputChange(event), autoComplete: "new-password" }), _jsx(Center, { px: ['container.sm', 'container.md', 'container.lg'], h: "4rem", children: _jsxs(Text, { textAlign: "center", variant: "info", w: "100%", children: [t('signup.terms'), _jsx("a", { target: "_blank", href: t('footer.termsUrl'), children: t('footer.termsLink') })] }) }), _jsx(Button, { isLoading: isLoading, spinner: _jsx(ButtonLoader, {}), onClick: handleSubmit, children: t('signup.signupBt') })] }) }), _jsx(CardFooter, { title: t('signup.signin'), buttonLabel: t('signup.signinBt'), handleButtonClick: handleSignIn })] }), _jsx(Footer, {})] }));
|
|
25
|
+
!passwordMatch(inputs.password, inputs.confirmPassword)), id: "confirmPassword", placeholder: t('forms.passwordConfirm'), value: (_c = inputs.confirmPassword) !== null && _c !== void 0 ? _c : '', handleChange: (event) => handleInputChange(event), autoComplete: "new-password" }), _jsx(Center, { px: ['container.sm', 'container.md', 'container.lg'], h: "4rem", children: _jsxs(Text, { textAlign: "center", variant: "info", w: "100%", children: [t('signup.terms'), _jsx("a", { target: "_blank", href: t('footer.termsUrl'), children: t('footer.termsLink') })] }) }), _jsx(Button, { isLoading: isLoading, spinner: _jsx(ButtonLoader, {}), onClick: handleSubmit, children: t('signup.signupBt') })] }) }), _jsx(CardFooter, { title: isPartner ? t('signup.signinPartner') : t('signup.signin'), buttonLabel: t('signup.signinBt'), handleButtonClick: handleSignIn })] }), _jsx(Footer, {})] }));
|
|
26
26
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { TwoFactorI } from '../../../interfaces';
|
|
2
|
-
export declare const TwoFactor: ({ onReset, onResend, isDialog, isLoading, twoFactorMethod, }: TwoFactorI) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const TwoFactor: ({ onReset, onResend, isDialog, isLoading, isPartner, twoFactorMethod, }: TwoFactorI) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { t } from 'i18next';
|
|
3
3
|
import { Box, Button, Text, Container, Stack, Center } from '@chakra-ui/react';
|
|
4
|
-
import {
|
|
4
|
+
import { Footer, ButtonLoader, TextInput, BasePageWrapper, AuthHeader, } from '../../../components';
|
|
5
5
|
import { isEmptyField } from '../../../utils';
|
|
6
6
|
import { useTwoFactor } from '../../../hooks';
|
|
7
|
-
export const TwoFactor = ({ onReset, onResend, isDialog, isLoading, twoFactorMethod, }) => {
|
|
7
|
+
export const TwoFactor = ({ onReset, onResend, isDialog, isLoading, isPartner, twoFactorMethod, }) => {
|
|
8
8
|
const { code, handleInputChange, handleSubmit, isValidated } = useTwoFactor(onReset);
|
|
9
|
-
return (_jsxs(BasePageWrapper, { children: [_jsxs(Container, { size: "onboarding", boxShadow: !isDialog ? 'lg' : 'none', children: [_jsx(
|
|
9
|
+
return (_jsxs(BasePageWrapper, { children: [_jsxs(Container, { size: "onboarding", boxShadow: !isDialog ? 'lg' : 'none', children: [_jsx(AuthHeader, { isPartner: isPartner }), _jsxs(Stack, { my: "6", children: [_jsx(Text, { variant: "title", textAlign: "center", px: "10", children: t('reset.2FA.title') }), _jsxs(Text, { fontFamily: "secondary", textAlign: "center", px: ['10', '20'], children: [twoFactorMethod === 'email' && t('reset.2FA.subtitleEmail'), twoFactorMethod === 'sms' && t('reset.2FA.subtitleSms')] })] }), _jsx(Box, { px: ['container.sm', 'container.md', 'container.lg'], pb: "container.md", mb: "6", children: _jsxs(Stack, { spacing: "4", children: [_jsx(TextInput, { errorMessage: t('forms.code') + ' ' + t('forms.required'), hasError: isValidated && isEmptyField(code), id: "code", placeholder: t('reset.2FA.placeholder'), value: code, handleChange: handleInputChange }), _jsx(Button, { isLoading: isLoading, spinner: _jsx(ButtonLoader, {}), onClick: handleSubmit, children: t('forms.submit') }), onResend && (_jsx(Center, { children: _jsx(Button, { onClick: onResend, variant: "text", children: t('reset.2FA.resend') }) }))] }) })] }), !isDialog && _jsx(Footer, {})] }));
|
|
10
10
|
};
|
|
@@ -3,9 +3,12 @@ import { CloudsAnimation, SignUp } from '../../../components';
|
|
|
3
3
|
export default {
|
|
4
4
|
title: 'Pages/Onboarding',
|
|
5
5
|
component: SignUp,
|
|
6
|
+
decorators: [
|
|
7
|
+
(Story) => (_jsx(CloudsAnimation, { children: _jsx(Story, {}) })),
|
|
8
|
+
],
|
|
6
9
|
};
|
|
7
10
|
export const SignUpPage = (args) => {
|
|
8
|
-
return
|
|
11
|
+
return _jsx(SignUp, Object.assign({}, args));
|
|
9
12
|
};
|
|
10
13
|
const valuesFilled = {
|
|
11
14
|
email: 'user@user.com',
|
|
@@ -2,10 +2,4 @@ import { Meta } from '@storybook/react';
|
|
|
2
2
|
import { TwoFactorI } from '../../../interfaces';
|
|
3
3
|
declare const _default: Meta<TwoFactorI>;
|
|
4
4
|
export default _default;
|
|
5
|
-
export declare const TwoFactorPage:
|
|
6
|
-
(args: TwoFactorI): import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
args: {
|
|
8
|
-
isLoading: boolean;
|
|
9
|
-
twoFactorMethod: string;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
5
|
+
export declare const TwoFactorPage: (args: TwoFactorI) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,11 +4,18 @@ import { TwoFactor } from '../../../components';
|
|
|
4
4
|
export default {
|
|
5
5
|
title: 'Pages/Onboarding',
|
|
6
6
|
component: TwoFactor,
|
|
7
|
+
args: {
|
|
8
|
+
isDialog: false,
|
|
9
|
+
isLoading: false,
|
|
10
|
+
isPartner: false,
|
|
11
|
+
twoFactorMethod: 'sms',
|
|
12
|
+
onReset: (code) => alert(`Code submitted: ${code}`),
|
|
13
|
+
onResend: () => alert('Resend code clicked'),
|
|
14
|
+
},
|
|
15
|
+
decorators: [
|
|
16
|
+
(Story) => (_jsx(Box, { p: "base", children: _jsx(Story, {}) })),
|
|
17
|
+
],
|
|
7
18
|
};
|
|
8
19
|
export const TwoFactorPage = (args) => {
|
|
9
|
-
return
|
|
10
|
-
};
|
|
11
|
-
TwoFactorPage.args = {
|
|
12
|
-
isLoading: false,
|
|
13
|
-
twoFactorMethod: 'sms',
|
|
20
|
+
return _jsx(TwoFactor, Object.assign({}, args));
|
|
14
21
|
};
|