@homefile/components-v2 2.62.0 → 2.63.1
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/components/onboarding/CardFooter.js +2 -1
- package/dist/components/onboarding/PageTitle.d.ts +1 -1
- package/dist/components/onboarding/PageTitle.js +5 -3
- package/dist/components/onboarding/pages/ActivateAccount.js +3 -3
- package/dist/components/onboarding/pages/AuthHeader.js +2 -2
- package/dist/components/onboarding/pages/BasePageWrapper.d.ts +32 -1
- package/dist/components/onboarding/pages/BasePageWrapper.js +23 -3
- package/dist/components/onboarding/pages/EmailValidation.js +2 -2
- package/dist/components/onboarding/pages/MessagePage.d.ts +2 -0
- package/dist/components/onboarding/pages/MessagePage.js +11 -0
- package/dist/components/onboarding/pages/NewPassword.js +3 -3
- package/dist/components/onboarding/pages/ResendResetPassword.js +2 -2
- package/dist/components/onboarding/pages/ResetPassword.js +3 -3
- 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.js +3 -3
- package/dist/components/onboarding/pages/TwoFactor.d.ts +1 -1
- package/dist/components/onboarding/pages/TwoFactor.js +15 -4
- package/dist/components/onboarding/pages/Welcome.js +2 -2
- package/dist/components/onboarding/pages/index.d.ts +1 -0
- package/dist/components/onboarding/pages/index.js +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/interfaces/onboarding/PageTitle.interface.d.ts +1 -0
- package/dist/interfaces/pages/MessagePage.interface.d.ts +6 -0
- package/dist/interfaces/pages/MessagePage.interface.js +1 -0
- package/dist/interfaces/pages/SignIn.interface.d.ts +3 -1
- package/dist/interfaces/pages/TwoFactor.interface.d.ts +6 -0
- package/dist/interfaces/pages/index.d.ts +1 -0
- package/dist/interfaces/pages/index.js +1 -0
- package/dist/stories/onboarding/CardFooter.stories.d.ts +2 -1
- package/dist/stories/onboarding/CardFooter.stories.js +24 -0
- package/dist/stories/onboarding/PageTitle.stories.d.ts +2 -1
- package/dist/stories/onboarding/PageTitle.stories.js +31 -0
- package/dist/stories/onboarding/pages/ActivateAccount.stories.d.ts +3 -1
- package/dist/stories/onboarding/pages/ActivateAccount.stories.js +41 -0
- package/dist/stories/onboarding/pages/EmailValidation.stories.d.ts +3 -1
- package/dist/stories/onboarding/pages/EmailValidation.stories.js +43 -0
- package/dist/stories/onboarding/pages/MessagePage.stories.d.ts +9 -0
- package/dist/stories/onboarding/pages/MessagePage.stories.js +73 -0
- package/dist/stories/onboarding/pages/NewPassword.stories.d.ts +3 -1
- package/dist/stories/onboarding/pages/NewPassword.stories.js +44 -0
- package/dist/stories/onboarding/pages/ResendResetPassword.stories.d.ts +3 -1
- package/dist/stories/onboarding/pages/ResendResetPassword.stories.js +47 -0
- package/dist/stories/onboarding/pages/ResetPassword.stories.d.ts +3 -1
- package/dist/stories/onboarding/pages/ResetPassword.stories.js +45 -0
- package/dist/stories/onboarding/pages/SignIn.stories.d.ts +10 -1
- package/dist/stories/onboarding/pages/SignIn.stories.js +96 -0
- package/dist/stories/onboarding/pages/SignUp.stories.d.ts +2 -1
- package/dist/stories/onboarding/pages/SignUp.stories.js +34 -0
- package/dist/stories/onboarding/pages/TwoFactor.stories.d.ts +11 -2
- package/dist/stories/onboarding/pages/TwoFactor.stories.js +118 -3
- package/dist/stories/onboarding/pages/Welcome.stories.d.ts +2 -1
- package/dist/stories/onboarding/pages/Welcome.stories.js +29 -0
- package/dist/stories/onboarding/phoneLayout.d.ts +20 -0
- package/dist/stories/onboarding/phoneLayout.js +89 -0
- package/dist/stories/partner/adminTiles/InboxCard.stories.d.ts +1 -1
- package/dist/stories/partner/adminTiles/InboxCard.stories.js +8 -5
- package/dist/stories/typography/NoWidow.stories.d.ts +8 -0
- package/dist/stories/typography/NoWidow.stories.js +61 -0
- package/dist/theme/components/TextStyles.d.ts +5 -0
- package/dist/theme/components/TextStyles.js +8 -0
- package/package.json +6 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Container, Text } from '@chakra-ui/react';
|
|
3
|
+
import { ONBOARDING_PAGE_PX } from '../../components';
|
|
3
4
|
export const CardFooter = ({ title = '', buttonLabel, handleButtonClick, children, }) => {
|
|
4
|
-
return (_jsx(Container, { variant: "secondary", centerContent: true, w: "full", flex: { base: 1, md: 'initial' }, children: _jsxs(Box, { w: "full", px:
|
|
5
|
+
return (_jsx(Container, { variant: "secondary", centerContent: true, w: "full", flex: { base: 1, md: 'initial' }, children: _jsxs(Box, { w: "full", px: ONBOARDING_PAGE_PX,
|
|
5
6
|
// Mobile: keep the footer text pinned at the top of the (grown) green
|
|
6
7
|
// area instead of vertically centering it. Desktop: centered as before.
|
|
7
8
|
my: { base: 0, md: 'auto' }, py: "2rem", children: [_jsxs(Text, { textAlign: "center", variant: "body", children: [title, ' ', _jsx(Box, { as: "button", type: "button", display: "inline", color: "link.default", fontWeight: "medium", onClick: handleButtonClick, _hover: { textDecoration: 'underline' }, _focusVisible: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { PageTitleI } from '../../interfaces';
|
|
2
|
-
export declare const PageTitle: ({ title }: PageTitleI) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const PageTitle: ({ title, description }: PageTitleI) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Container, Text } from '@chakra-ui/react';
|
|
3
|
-
export const PageTitle = ({ title }) => {
|
|
4
|
-
return (
|
|
3
|
+
export const PageTitle = ({ title, description }) => {
|
|
4
|
+
return (_jsxs(Container, { variant: "ghost", mt: 4, mb: 6, children: [_jsx(Text, { variant: "title", textAlign: "center", px: [10, 0], noOfLines: [2, 1], children: title }), description && (_jsx(Text, { variant: "info", color: "text.body", lineHeight: "20px", textAlign: "center", mt: "2",
|
|
5
|
+
// Centred text wraps into even lines (no widows).
|
|
6
|
+
sx: { textWrap: 'balance' }, children: description }))] }));
|
|
5
7
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { t } from 'i18next';
|
|
3
3
|
import { Box, Container, Text, Center, Button } from '@chakra-ui/react';
|
|
4
|
-
import { Logo, WelcomeHeader, ButtonLoader, BasePageWrapper, } from '../../../components';
|
|
4
|
+
import { Logo, WelcomeHeader, ButtonLoader, BasePageWrapper, ONBOARDING_PHONE_PX, onboardingCardProps, } from '../../../components';
|
|
5
5
|
import { useWindowDimensions } from '../../../hooks';
|
|
6
6
|
export const ActivateAccount = ({ name, isLoading = false, handleActivateBt, }) => {
|
|
7
7
|
const { windowDimensions: { width }, } = useWindowDimensions();
|
|
8
|
-
return (_jsx(BasePageWrapper, { children: _jsxs(Container, { size: "validation",
|
|
8
|
+
return (_jsx(BasePageWrapper, { flushMobile: true, flushBelow: "sm", children: _jsxs(Container, Object.assign({ size: "validation" }, onboardingCardProps({ below: 'sm', maxW: 'container.lg' }), { children: [_jsx(Container, { variant: "secondary", children: _jsx(Logo, {}) }), _jsxs(Box, { px: [ONBOARDING_PHONE_PX, 'container.lg'], children: [_jsx(WelcomeHeader, { description: t('registration.instruction'), greeting: t('welcome.greeting'), name: name }), _jsx(Center, { children: _jsx(Button, { onClick: handleActivateBt, isLoading: isLoading, spinner: _jsx(ButtonLoader, {}), size: "onboarding", children: width < 400
|
|
9
9
|
? t('registration.activateBtShort')
|
|
10
|
-
: t('registration.activateBt') }) }), _jsx(Text, { variant: "info", mt: "8", children: t('welcome.signature') })] }), _jsx(Container, { variant: "tertiary", mt: "8", children: _jsx(Center, { h: "12", px: "4", children: _jsx(Text, { variant: "label", children: t('registration.notReply') }) }) })] }) }));
|
|
10
|
+
: t('registration.activateBt') }) }), _jsx(Text, { variant: "info", mt: "8", children: t('welcome.signature') })] }), _jsx(Container, { variant: "tertiary", mt: "8", children: _jsx(Center, { h: "12", px: "4", children: _jsx(Text, { variant: "label", children: t('registration.notReply') }) }) })] })) }));
|
|
11
11
|
};
|
|
@@ -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 { Flex, Text, Box, Image } from '@chakra-ui/react';
|
|
4
|
-
import { Logo } from '../../../components';
|
|
4
|
+
import { Logo, ONBOARDING_PAGE_PX } from '../../../components';
|
|
5
5
|
import { HomefileUpdate } from '../../../assets/images';
|
|
6
6
|
export const AuthHeader = ({ isPartner = false }) => {
|
|
7
7
|
if (!isPartner)
|
|
8
8
|
return _jsx(Logo, {});
|
|
9
|
-
return (_jsxs(Flex, { align: "center", justify: "space-between", w: "full", h: "container.xxs", px:
|
|
9
|
+
return (_jsxs(Flex, { align: "center", justify: "space-between", w: "full", h: "container.xxs", px: ONBOARDING_PAGE_PX, children: [_jsx(Image, { src: HomefileUpdate, 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
10
|
};
|
|
@@ -1,6 +1,37 @@
|
|
|
1
1
|
import { PropsWithChildren } from 'react';
|
|
2
|
+
export declare const ONBOARDING_PHONE_PX = "base";
|
|
3
|
+
export declare const ONBOARDING_PAGE_PX: string[];
|
|
4
|
+
export type FlushBelow = 'sm' | 'md';
|
|
5
|
+
export declare const onboardingCardProps: ({ below, shadow, maxW, }?: {
|
|
6
|
+
below?: FlushBelow;
|
|
7
|
+
shadow?: string;
|
|
8
|
+
maxW?: string;
|
|
9
|
+
}) => {
|
|
10
|
+
boxShadow: {
|
|
11
|
+
[x: string]: string;
|
|
12
|
+
base: string;
|
|
13
|
+
};
|
|
14
|
+
borderRadius: {
|
|
15
|
+
[x: string]: string | number;
|
|
16
|
+
base: number;
|
|
17
|
+
};
|
|
18
|
+
maxW: {
|
|
19
|
+
[x: string]: string;
|
|
20
|
+
base: string;
|
|
21
|
+
};
|
|
22
|
+
flex: {
|
|
23
|
+
[x: string]: string | number;
|
|
24
|
+
base: number;
|
|
25
|
+
};
|
|
26
|
+
display: {
|
|
27
|
+
[x: string]: string;
|
|
28
|
+
base: string;
|
|
29
|
+
};
|
|
30
|
+
flexDirection: "column";
|
|
31
|
+
};
|
|
2
32
|
interface BasePageWrapperProps {
|
|
3
33
|
flushMobile?: boolean;
|
|
34
|
+
flushBelow?: FlushBelow;
|
|
4
35
|
}
|
|
5
|
-
export declare const BasePageWrapper: ({ children, flushMobile, }: PropsWithChildren<BasePageWrapperProps>) => import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
export declare const BasePageWrapper: ({ children, flushMobile, flushBelow, }: PropsWithChildren<BasePageWrapperProps>) => import("react/jsx-runtime").JSX.Element;
|
|
6
37
|
export {};
|
|
@@ -1,9 +1,29 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Box } from '@chakra-ui/react';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
// The side padding of every onboarding page on a phone: 13px ('base', Matt
|
|
4
|
+
// 2026-10-07). The one place that says it.
|
|
5
|
+
export const ONBOARDING_PHONE_PX = 'base';
|
|
6
|
+
// The side padding of the sign-in family of onboarding pages (sign in, the code
|
|
7
|
+
// step, sign up, reset and new password, the message pages, the Sign-up box and
|
|
8
|
+
// the partner header): the phone value, 32px from 480px and 48px from 768px.
|
|
9
|
+
// One value, so the pages can't drift apart.
|
|
10
|
+
export const ONBOARDING_PAGE_PX = [ONBOARDING_PHONE_PX, 'container.md', 'container.lg'];
|
|
11
|
+
// Sign in's card on a phone, the one copy every onboarding page uses: below
|
|
12
|
+
// `below` the card is the whole page (no shadow, square corners, full width)
|
|
13
|
+
// and grows so the copyright sits at the bottom of the screen. From `below` up
|
|
14
|
+
// it is a card again, with the page's own shadow and width.
|
|
15
|
+
export const onboardingCardProps = ({ below = 'md', shadow = 'lg', maxW = 'container.md', } = {}) => ({
|
|
16
|
+
boxShadow: { base: 'none', [below]: shadow },
|
|
17
|
+
borderRadius: { base: 0, [below]: 'sm' },
|
|
18
|
+
maxW: { base: '100%', [below]: maxW },
|
|
19
|
+
flex: { base: 1, [below]: 'initial' },
|
|
20
|
+
display: { base: 'flex', [below]: 'block' },
|
|
21
|
+
flexDirection: 'column',
|
|
22
|
+
});
|
|
23
|
+
export const BasePageWrapper = ({ children, flushMobile, flushBelow = 'md', }) => {
|
|
24
|
+
return (_jsx(Box, { w: "container.full", zIndex: "2", position: "relative", mt: flushMobile ? { base: '0', [flushBelow]: 'onboarding.top' } : 'onboarding.top',
|
|
5
25
|
// Mobile full-screen: this wrapper is the full-height flex column holding
|
|
6
26
|
// the card + the copyright footer, so the card can flex to fill the space
|
|
7
27
|
// above the copyright (which stays pinned at the bottom) with NO overflow.
|
|
8
|
-
minH: flushMobile ? { base: '100vh',
|
|
28
|
+
minH: flushMobile ? { base: '100vh', [flushBelow]: 'auto' } : undefined, display: flushMobile ? { base: 'flex', [flushBelow]: 'block' } : undefined, flexDirection: flushMobile ? 'column' : undefined, children: children }));
|
|
9
29
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { t } from 'i18next';
|
|
3
3
|
import { chakra, Container, Text, Image, Center, Button, } from '@chakra-ui/react';
|
|
4
|
-
import { Logo, ButtonLoader, BasePageWrapper } from '../../../components';
|
|
4
|
+
import { Logo, ButtonLoader, BasePageWrapper, ONBOARDING_PHONE_PX, onboardingCardProps, } from '../../../components';
|
|
5
5
|
import { Confirmation } from '../../../assets/images';
|
|
6
6
|
export const EmailValidation = ({ email, isLoading = false, handleResendBt, }) => {
|
|
7
|
-
return (_jsx(BasePageWrapper, { children: _jsxs(Container, { size: "validation",
|
|
7
|
+
return (_jsx(BasePageWrapper, { flushMobile: true, flushBelow: "sm", children: _jsxs(Container, Object.assign({ size: "validation" }, onboardingCardProps({ below: 'sm', maxW: 'container.lg' }), { children: [_jsxs(Container, { variant: "secondary", children: [_jsx(Logo, {}), _jsxs(Text, { variant: "title", textAlign: "center", px: [ONBOARDING_PHONE_PX, 'container.xl'], pb: 6, minH: "6rem", children: [_jsx(chakra.span, { color: "gray.3", children: t('validation.title1') }), _jsx(chakra.span, { color: "gray.3", children: email }), _jsx(chakra.span, { color: "gray.3", children: t('validation.title2') })] }), _jsx(Center, { children: _jsx(Image, { src: Confirmation, alt: "Activate account", h: ['100px', '145px'], w: "auto" }) })] }), _jsx(Text, { variant: "info", px: ['container.md', 'container.lg'], py: "2rem", textAlign: "center", children: t('validation.alert1') }), _jsx(Center, { children: _jsx(Button, { mb: 10, mx: [ONBOARDING_PHONE_PX, 4], variant: "secondary", onClick: handleResendBt, isLoading: isLoading, spinner: _jsx(ButtonLoader, { isOutlined: true }), size: "onboarding", children: t('validation.resendBt') }) })] })) }));
|
|
8
8
|
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Button, Container, Stack, Text } from '@chakra-ui/react';
|
|
3
|
+
import { Footer, BasePageWrapper, ONBOARDING_PAGE_PX, onboardingCardProps, AuthHeader, } from '../../../components';
|
|
4
|
+
// A page with only a message: a title, a line under it and, optionally, one link
|
|
5
|
+
// button (e.g. "Back to my texts" opening the texting app).
|
|
6
|
+
export const MessagePage = ({ title, description, actionLabel, actionHref, }) => {
|
|
7
|
+
const showAction = Boolean(actionLabel && actionHref);
|
|
8
|
+
return (_jsxs(BasePageWrapper, { flushMobile: true, children: [_jsxs(Container, Object.assign({ size: "onboarding", bg: "neutral.white" }, onboardingCardProps(), { children: [_jsx(AuthHeader, {}), _jsxs(Stack, { my: "6", children: [_jsx(Text, { variant: "title", textAlign: "center", px: "10", children: title }), _jsx(Text, { fontFamily: "secondary", textAlign: "center", px: ['10', '20'],
|
|
9
|
+
// Centred text wraps into even lines (no widows).
|
|
10
|
+
sx: { textWrap: 'balance' }, children: description })] }), showAction && (_jsx(Box, { px: ONBOARDING_PAGE_PX, pb: "container.md", mb: "6", children: _jsx(Button, { as: "a", href: actionHref, w: "full", children: actionLabel }) }))] })), _jsx(Footer, {})] }));
|
|
11
|
+
};
|
|
@@ -1,12 +1,12 @@
|
|
|
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, chakra } from '@chakra-ui/react';
|
|
4
|
-
import { Logo, Footer, ButtonLoader, PasswordInput, BasePageWrapper, } from '../../../components';
|
|
4
|
+
import { Logo, Footer, ButtonLoader, PasswordInput, BasePageWrapper, ONBOARDING_PAGE_PX, onboardingCardProps, } from '../../../components';
|
|
5
5
|
import { isValidPassword, passwordMatch } from '../../../utils';
|
|
6
6
|
import { useNewPassword } from '../../../hooks';
|
|
7
7
|
export const NewPassword = ({ isLoading, handleReset, userEmail, errorMessage, errorActionText, handleErrorAction, supportEmail, }) => {
|
|
8
8
|
const { inputs, handleInputChange, handleSubmit, isValidated } = useNewPassword(handleReset);
|
|
9
|
-
return (_jsxs(BasePageWrapper, { children: [_jsxs(Container, { size: "onboarding",
|
|
9
|
+
return (_jsxs(BasePageWrapper, { flushMobile: true, flushBelow: "sm", children: [_jsxs(Container, Object.assign({ size: "onboarding" }, onboardingCardProps({ below: 'sm' }), { children: [_jsx(Logo, {}), _jsx(Container, { variant: "ghost", mt: 4, mb: 6, children: _jsxs(Text, { variant: "title", textAlign: "center", px: [10, 0], noOfLines: [2, 1], children: [_jsx(chakra.span, { color: "gray.3", children: t('welcome.greeting2') }), _jsx(chakra.span, { color: "gray.3", children: userEmail }), _jsx(chakra.span, { color: "gray.3", children: "," })] }) }), _jsx(Box, { px: ONBOARDING_PAGE_PX, pb: "container.lg", mb: 6, children: _jsxs(Stack, { spacing: 8, children: [_jsxs(Stack, { spacing: errorMessage ? 'base' : 8, children: [_jsx(Text, { textAlign: "center", variant: "info", children: t('newPassword.title') }), Boolean(errorMessage) && (
|
|
10
10
|
// Faint magenta box behind the whole message (Matt, 2026-10-06).
|
|
11
11
|
_jsxs(Stack, { spacing: 2, align: "center", bg: "status.errorBg", borderRadius: "sm", px: 4, py: 3, children: [_jsx(Text, { variant: "error", textAlign: "center", children: errorMessage }), Boolean(errorActionText) && handleErrorAction && (_jsx(Button, { variant: "text", fontSize: "xs", lineHeight: "13px", h: "auto", onClick: handleErrorAction, children: errorActionText })), Boolean(supportEmail) && (_jsxs(Text, { textAlign: "center", variant: "hint", children: [t('newPassword.support'), ' ', _jsx("a", { href: `mailto:${supportEmail}`, children: supportEmail })] }))] })), _jsxs(Stack, { spacing: 3, children: [_jsx(PasswordInput, { errorMessage: !isValidPassword(inputs.password)
|
|
12
12
|
? t('forms.errorPasswordLength')
|
|
@@ -16,5 +16,5 @@ export const NewPassword = ({ isLoading, handleReset, userEmail, errorMessage, e
|
|
|
16
16
|
? t('forms.errorPasswordLength')
|
|
17
17
|
: t('forms.errorPasswordMatch'), hasError: isValidated &&
|
|
18
18
|
(!isValidPassword(inputs.confirmPassword) ||
|
|
19
|
-
!passwordMatch(inputs.password, inputs.confirmPassword)), id: "confirmPassword", placeholder: t('newPassword.confirm'), value: inputs.confirmPassword || '', handleChange: handleInputChange })] })] }), _jsx(Button, { isLoading: isLoading, spinner: _jsx(ButtonLoader, {}), onClick: handleSubmit, children: t('reset.resetBt') })] }) })] }), _jsx(Footer, {})] }));
|
|
19
|
+
!passwordMatch(inputs.password, inputs.confirmPassword)), id: "confirmPassword", placeholder: t('newPassword.confirm'), value: inputs.confirmPassword || '', handleChange: handleInputChange })] })] }), _jsx(Button, { isLoading: isLoading, spinner: _jsx(ButtonLoader, {}), onClick: handleSubmit, children: t('reset.resetBt') })] }) })] })), _jsx(Footer, {})] }));
|
|
20
20
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { t } from 'i18next';
|
|
3
3
|
import { chakra, Container, Text, Image, Center, Button, } from '@chakra-ui/react';
|
|
4
|
-
import { BasePageWrapper, ButtonLoader, Logo } from '../../../components';
|
|
4
|
+
import { BasePageWrapper, ButtonLoader, Logo, ONBOARDING_PHONE_PX, onboardingCardProps, } from '../../../components';
|
|
5
5
|
import { ResendPassword } from '../../../assets/images';
|
|
6
6
|
export const ResendResetPassword = ({ email, isLoading = false, handleResendBt, handleBack }) => {
|
|
7
|
-
return (_jsx(BasePageWrapper, { children: _jsxs(Container, { size: "validation",
|
|
7
|
+
return (_jsx(BasePageWrapper, { flushMobile: true, flushBelow: "sm", children: _jsxs(Container, Object.assign({ size: "validation" }, onboardingCardProps({ below: 'sm', maxW: 'container.lg' }), { children: [_jsxs(Container, { variant: "secondary", children: [_jsx(Logo, {}), _jsxs(Text, { variant: "title", textAlign: "center", px: [ONBOARDING_PHONE_PX, 'container.xl'], pb: 6, minH: "6rem", children: [_jsx(chakra.span, { color: "gray.3", children: t('validation.title1') }), _jsx(chakra.span, { color: "gray.3", children: email }), _jsx(Text, { variant: "title", children: t('validation.title3') })] }), _jsx(Center, { children: _jsx(Image, { src: ResendPassword, alt: "Activate account", h: ['100px', '145px'], w: "auto" }) })] }), _jsx(Text, { variant: "info", px: ['container.md', 'container.lg'], py: "2rem", textAlign: "center", children: t('validation.alert1') }), _jsx(Center, { children: _jsx(Button, { mb: handleBack ? 5 : 10, mx: [ONBOARDING_PHONE_PX, 4], variant: "secondary", onClick: handleResendBt, isLoading: isLoading, spinner: _jsx(ButtonLoader, { isOutlined: true }), size: "onboarding", children: t('validation.resendResetBt') }) }), handleBack && (_jsx(Center, { children: _jsx(Button, { mb: 10, mx: [ONBOARDING_PHONE_PX, 4], variant: "primary", onClick: handleBack, isLoading: isLoading, spinner: _jsx(ButtonLoader, { isOutlined: true }), size: "onboarding", children: t('validation.backToLogin') }) }))] })) }));
|
|
8
8
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
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 } from '@chakra-ui/react';
|
|
4
|
-
import { Logo, Footer, PageTitle, CardFooter, TextInput, ButtonLoader, BasePageWrapper, } from '../../../components';
|
|
4
|
+
import { Logo, Footer, PageTitle, CardFooter, TextInput, ButtonLoader, BasePageWrapper, ONBOARDING_PAGE_PX, onboardingCardProps, } from '../../../components';
|
|
5
5
|
import { isEmptyField, isValidEmail } from '../../../utils';
|
|
6
6
|
import { useResetPassword } from '../../../hooks';
|
|
7
7
|
export const ResetPassword = ({ isLoading, handleReset, handleSignIn, resetError, }) => {
|
|
@@ -9,10 +9,10 @@ export const ResetPassword = ({ isLoading, handleReset, handleSignIn, resetError
|
|
|
9
9
|
const resetErrorType = resetError
|
|
10
10
|
? t('forms.errorEmailNotActivated')
|
|
11
11
|
: t('forms.errorEmail');
|
|
12
|
-
return (_jsxs(BasePageWrapper, { children: [_jsxs(Container, { size: "onboarding",
|
|
12
|
+
return (_jsxs(BasePageWrapper, { flushMobile: true, flushBelow: "sm", children: [_jsxs(Container, Object.assign({ size: "onboarding" }, onboardingCardProps({ below: 'sm' }), { children: [_jsx(Logo, {}), _jsx(PageTitle, { title: t('reset.title') }), _jsx(Box, { px: ONBOARDING_PAGE_PX, mb: 6, children: _jsxs(Stack, { spacing: 8, children: [_jsx(Text, { textAlign: "center", variant: "info", children: t('reset.instruction') }), _jsx(Stack, { spacing: 3, children: _jsx(TextInput, { autoCapitalize: "none", autoCorrect: "off", errorMessage: isEmptyField(inputs.email)
|
|
13
13
|
? t('forms.email') + ' ' + t('forms.required')
|
|
14
14
|
: resetErrorType, hasError: isValidated &&
|
|
15
15
|
(resetError ||
|
|
16
16
|
isEmptyField(inputs.email) ||
|
|
17
|
-
!isValidEmail(inputs.email)), id: "email", placeholder: t('reset.email'), value: inputs.email, handleChange: handleInputChange }) }), _jsx(Stack, { spacing: 4, children: _jsx(Button, { isLoading: isLoading, spinner: _jsx(ButtonLoader, {}), onClick: handleSubmit, children: t('reset.resetBt') }) })] }) }), _jsx(CardFooter, { buttonLabel: t('reset.signinBt'), handleButtonClick: handleSignIn })] }), _jsx(Footer, {})] }));
|
|
17
|
+
!isValidEmail(inputs.email)), id: "email", placeholder: t('reset.email'), value: inputs.email, handleChange: handleInputChange }) }), _jsx(Stack, { spacing: 4, children: _jsx(Button, { isLoading: isLoading, spinner: _jsx(ButtonLoader, {}), onClick: handleSubmit, children: t('reset.resetBt') }) })] }) }), _jsx(CardFooter, { buttonLabel: t('reset.signinBt'), handleButtonClick: handleSignIn })] })), _jsx(Footer, {})] }));
|
|
18
18
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { SignInI } from '../../../interfaces';
|
|
2
|
-
export declare const SignIn: ({ isPartner, isLoading, handleForgotPassword, handleSignIn, handleSignUp, handleGoogleSignIn, handleAppleSignIn, loginErrorMessage, values, }: SignInI) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const SignIn: ({ isPartner, isLoading, handleForgotPassword, handleSignIn, handleSignUp, handleGoogleSignIn, handleAppleSignIn, loginErrorMessage, heading, description, values, }: SignInI) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -10,16 +10,16 @@ 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, Divider, Flex, Stack, Text, } from '@chakra-ui/react';
|
|
13
|
-
import { Footer, PageTitle, CardFooter, PasswordInput, TextInput, ButtonLoader, BasePageWrapper, AuthHeader, GoogleIcon, AppleIcon, } from '../../../components';
|
|
13
|
+
import { Footer, PageTitle, CardFooter, PasswordInput, TextInput, ButtonLoader, BasePageWrapper, ONBOARDING_PAGE_PX, onboardingCardProps, AuthHeader, GoogleIcon, AppleIcon, } from '../../../components';
|
|
14
14
|
import { isEmptyField } from '../../../utils';
|
|
15
15
|
import { useSignIn } from '../../../hooks';
|
|
16
|
-
export const SignIn = ({ isPartner, isLoading, handleForgotPassword, handleSignIn, handleSignUp, handleGoogleSignIn, handleAppleSignIn, loginErrorMessage, values = { email: '', password: '' }, }) => {
|
|
16
|
+
export const SignIn = ({ isPartner, isLoading, handleForgotPassword, handleSignIn, handleSignUp, handleGoogleSignIn, handleAppleSignIn, loginErrorMessage, heading, description, values = { email: '', password: '' }, }) => {
|
|
17
17
|
const { inputs, handleInputChange, isValidated, setIsValidated } = useSignIn(values);
|
|
18
18
|
// Social sign-in renders only when a handler is provided (dark otherwise).
|
|
19
19
|
const showGoogle = Boolean(handleGoogleSignIn);
|
|
20
20
|
const showApple = Boolean(handleAppleSignIn);
|
|
21
21
|
const showSocial = showGoogle || showApple;
|
|
22
|
-
return (_jsxs(BasePageWrapper, { flushMobile: true, children: [_jsxs(Container, { size: "onboarding", bg: "neutral.white"
|
|
22
|
+
return (_jsxs(BasePageWrapper, { flushMobile: true, children: [_jsxs(Container, Object.assign({ size: "onboarding", bg: "neutral.white" }, onboardingCardProps(), { children: [_jsx(AuthHeader, { isPartner: isPartner }), _jsx(PageTitle, { title: heading !== null && heading !== void 0 ? heading : (showSocial ? t('signin.titleSocial') : t('signin.title')), description: description }), _jsx(Box, { px: ONBOARDING_PAGE_PX, mb: 6, children: _jsxs(Stack, { spacing: "base", children: [showSocial && (_jsxs(Stack, { spacing: "base", children: [showGoogle && (_jsx(Button, { variant: "secondary", leftIcon: _jsx(GoogleIcon, { size: 20 }), onClick: handleGoogleSignIn, children: t('signup.continueGoogle') })), showApple && (_jsx(Button, { variant: "secondary", leftIcon: _jsx(AppleIcon, { size: 20 }), onClick: handleAppleSignIn, children: t('signup.continueApple') })), _jsxs(Flex, { align: "center", gap: "3", py: "0", children: [_jsx(Divider, { flex: "1", borderColor: "border.default" }), _jsx(Text, { variant: "caption", children: t('signup.or') }), _jsx(Divider, { flex: "1", borderColor: "border.default" })] })] })), _jsxs(Stack, { spacing: "base", as: "form", children: [Boolean(loginErrorMessage) && (_jsx(Text, { variant: "error", children: loginErrorMessage })), _jsx(TextInput, { showLabel: false, 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) => {
|
|
23
23
|
values.email = event.target.value;
|
|
24
24
|
handleInputChange(event);
|
|
25
25
|
} }), _jsx(PasswordInput, { showLabel: false, 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) => {
|
|
@@ -31,5 +31,5 @@ export const SignIn = ({ isPartner, isLoading, handleForgotPassword, handleSignI
|
|
|
31
31
|
!isEmptyField(inputs.password)) {
|
|
32
32
|
handleSignIn(inputs);
|
|
33
33
|
}
|
|
34
|
-
}), 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, {})] }));
|
|
34
|
+
}), children: t('signin.signinBt') }), _jsx(Center, { children: _jsx(Button, { onClick: handleForgotPassword, variant: "text", children: t('signin.forgotBt') }) })] })] }) }), handleSignUp && (_jsx(CardFooter, { title: isPartner ? t('signin.signupPartner') : t('signin.signup'), buttonLabel: t('signin.signupBt'), handleButtonClick: handleSignUp }))] })), _jsx(Footer, {})] }));
|
|
35
35
|
};
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { useState } from 'react';
|
|
3
3
|
import { t } from 'i18next';
|
|
4
4
|
import { Box, Button, Center, Container, Divider, Flex, Stack, Text, } from '@chakra-ui/react';
|
|
5
|
-
import { Footer, CardFooter, PageTitle, PasswordInput, PasswordStrengthMeter, TextInput, ButtonLoader, BasePageWrapper, AuthHeader, GoogleIcon, AppleIcon, } from '../../../components';
|
|
5
|
+
import { Footer, CardFooter, PageTitle, PasswordInput, PasswordStrengthMeter, TextInput, ButtonLoader, BasePageWrapper, ONBOARDING_PAGE_PX, onboardingCardProps, AuthHeader, GoogleIcon, AppleIcon, } from '../../../components';
|
|
6
6
|
import { isEmptyField, isValidEmail, isValidPassword } from '../../../utils';
|
|
7
7
|
import { useSignUp } from '../../../hooks';
|
|
8
8
|
export const SignUp = ({ isLoading, isPartner, handleCreateAccount, handleSignIn, handleGoogleSignIn, handleAppleSignIn, signupErrorMessage, values = {
|
|
@@ -25,6 +25,6 @@ export const SignUp = ({ isLoading, isPartner, handleCreateAccount, handleSignIn
|
|
|
25
25
|
const showGoogle = Boolean(handleGoogleSignIn);
|
|
26
26
|
const showApple = Boolean(handleAppleSignIn);
|
|
27
27
|
const showSocial = showGoogle || showApple;
|
|
28
|
-
return (_jsxs(BasePageWrapper, { flushMobile: true, children: [_jsxs(Container, { size: "onboarding", bg: "neutral.white"
|
|
29
|
-
(isEmptyField(inputs.email) || !isValidEmail(inputs.email)), id: "email", placeholder: t('forms.email'), value: inputs.email, handleChange: handleInputChange, autoComplete: "email" }), _jsxs(Box, { children: [_jsx(PasswordInput, { showLabel: false, errorMessage: passwordErrorMessage(values.password), hasError: isValidated && !isValidPassword(inputs.password), id: "password", placeholder: t('forms.password'), value: (_b = inputs.password) !== null && _b !== void 0 ? _b : '', handleChange: (event) => handleInputChange(event), autoComplete: "new-password" }), _jsx(PasswordStrengthMeter, { password: (_c = inputs.password) !== null && _c !== void 0 ? _c : '' })] }), _jsx(Center, { children: _jsx(Button, { variant: "text", leftIcon: _jsx(Text, { as: "span", fontSize: "md", lineHeight: "1", children: "+" }), onClick: () => setShowPartnerCode((prev) => !prev), children: t('signup.partnerCodePrompt') }) }), showPartnerCode && (_jsx(TextInput, { showLabel: false, autoCapitalize: "none", autoCorrect: "off", id: "partnerCode", placeholder: t('forms.promoCode'), value: (_d = inputs.partnerCode) !== null && _d !== void 0 ? _d : '', handleChange: handleInputChange, autoComplete: "off" })), _jsx(Button, { isLoading: isLoading, spinner: _jsx(ButtonLoader, {}), onClick: handleSubmit, children: t('signup.signupBt') }), showSocial && (_jsxs(_Fragment, { children: [_jsxs(Flex, { align: "center", gap: "3", py: "1", children: [_jsx(Divider, { flex: "1", borderColor: "border.default" }), _jsx(Text, { variant: "caption", children: t('signup.or') }), _jsx(Divider, { flex: "1", borderColor: "border.default" })] }), showGoogle && (_jsx(Button, { variant: "secondary", leftIcon: _jsx(GoogleIcon, { size: 20 }), onClick: handleGoogleSignIn, children: t('signup.continueGoogle') })), showApple && (_jsx(Button, { variant: "secondary", leftIcon: _jsx(AppleIcon, { size: 20 }), onClick: handleAppleSignIn, children: t('signup.continueApple') }))] }))] }) }), _jsx(CardFooter, { title: isPartner ? t('signup.signinPartner') : t('signup.signin'), buttonLabel: t('signup.signinBt'), handleButtonClick: handleSignIn, children: _jsxs(Text, { textAlign: "center", variant: "info", w: "100%", children: [t('signup.terms'), ' ', _jsxs(Text, { as: "span", whiteSpace: "nowrap", children: ["Homefile", ' ', _jsx("a", { target: "_blank", href: t('footer.termsUrl'), children: t('footer.termsLink') }), "."] })] }) })] }), _jsx(Footer, {})] }));
|
|
28
|
+
return (_jsxs(BasePageWrapper, { flushMobile: true, children: [_jsxs(Container, Object.assign({ size: "onboarding", bg: "neutral.white" }, onboardingCardProps(), { children: [_jsx(AuthHeader, { isPartner: isPartner }), _jsx(PageTitle, { title: isPartner ? t('signup.titlePartner') : t('signup.title') }), _jsx(Box, { px: ONBOARDING_PAGE_PX, mb: 6, children: _jsxs(Stack, { spacing: "base", as: "form", children: [Boolean(signupErrorMessage) && (_jsx(Text, { variant: "error", children: signupErrorMessage })), _jsx(TextInput, { showLabel: false, errorMessage: t('forms.fullName') + ' ' + t('forms.required'), hasError: isValidated && isEmptyField(inputs.name), id: "name", placeholder: t('forms.fullName'), value: (_a = inputs.name) !== null && _a !== void 0 ? _a : '', handleChange: handleInputChange, autoComplete: "name" }), _jsx(TextInput, { showLabel: false, autoCapitalize: "none", autoCorrect: "off", errorMessage: t('forms.email') + ' ' + t('forms.required'), hasError: isValidated &&
|
|
29
|
+
(isEmptyField(inputs.email) || !isValidEmail(inputs.email)), id: "email", placeholder: t('forms.email'), value: inputs.email, handleChange: handleInputChange, autoComplete: "email" }), _jsxs(Box, { children: [_jsx(PasswordInput, { showLabel: false, errorMessage: passwordErrorMessage(values.password), hasError: isValidated && !isValidPassword(inputs.password), id: "password", placeholder: t('forms.password'), value: (_b = inputs.password) !== null && _b !== void 0 ? _b : '', handleChange: (event) => handleInputChange(event), autoComplete: "new-password" }), _jsx(PasswordStrengthMeter, { password: (_c = inputs.password) !== null && _c !== void 0 ? _c : '' })] }), _jsx(Center, { children: _jsx(Button, { variant: "text", leftIcon: _jsx(Text, { as: "span", fontSize: "md", lineHeight: "1", children: "+" }), onClick: () => setShowPartnerCode((prev) => !prev), children: t('signup.partnerCodePrompt') }) }), showPartnerCode && (_jsx(TextInput, { showLabel: false, autoCapitalize: "none", autoCorrect: "off", id: "partnerCode", placeholder: t('forms.promoCode'), value: (_d = inputs.partnerCode) !== null && _d !== void 0 ? _d : '', handleChange: handleInputChange, autoComplete: "off" })), _jsx(Button, { isLoading: isLoading, spinner: _jsx(ButtonLoader, {}), onClick: handleSubmit, children: t('signup.signupBt') }), showSocial && (_jsxs(_Fragment, { children: [_jsxs(Flex, { align: "center", gap: "3", py: "1", children: [_jsx(Divider, { flex: "1", borderColor: "border.default" }), _jsx(Text, { variant: "caption", children: t('signup.or') }), _jsx(Divider, { flex: "1", borderColor: "border.default" })] }), showGoogle && (_jsx(Button, { variant: "secondary", leftIcon: _jsx(GoogleIcon, { size: 20 }), onClick: handleGoogleSignIn, children: t('signup.continueGoogle') })), showApple && (_jsx(Button, { variant: "secondary", leftIcon: _jsx(AppleIcon, { size: 20 }), onClick: handleAppleSignIn, children: t('signup.continueApple') }))] }))] }) }), _jsx(CardFooter, { title: isPartner ? t('signup.signinPartner') : t('signup.signin'), buttonLabel: t('signup.signinBt'), handleButtonClick: handleSignIn, children: _jsxs(Text, { textAlign: "center", variant: "info", w: "100%", children: [t('signup.terms'), ' ', _jsxs(Text, { as: "span", whiteSpace: "nowrap", children: ["Homefile", ' ', _jsx("a", { target: "_blank", href: t('footer.termsUrl'), children: t('footer.termsLink') }), "."] })] }) })] })), _jsx(Footer, {})] }));
|
|
30
30
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { TwoFactorI } from '../../../interfaces';
|
|
2
|
-
export declare const TwoFactor: ({ onReset, onResend, isDialog, isLoading, isPartner, twoFactorMethod, }: TwoFactorI) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const TwoFactor: ({ onReset, onResend, isDialog, isLoading, isPartner, twoFactorMethod, heading, description, note, submitLabel, errorMessage, resendNote, }: TwoFactorI) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, 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 { Footer, ButtonLoader, TextInput, BasePageWrapper, AuthHeader, } from '../../../components';
|
|
4
|
+
import { Footer, ButtonLoader, TextInput, BasePageWrapper, ONBOARDING_PAGE_PX, onboardingCardProps, AuthHeader, } from '../../../components';
|
|
5
5
|
import { isEmptyField } from '../../../utils';
|
|
6
6
|
import { useTwoFactor } from '../../../hooks';
|
|
7
|
-
|
|
7
|
+
// In a dialog (Account 2FA) the code step is a plain card at every width.
|
|
8
|
+
const DIALOG_CARD = {
|
|
9
|
+
boxShadow: 'none',
|
|
10
|
+
borderRadius: 'sm',
|
|
11
|
+
maxW: 'container.md',
|
|
12
|
+
flex: 'initial',
|
|
13
|
+
display: 'block',
|
|
14
|
+
flexDirection: 'column',
|
|
15
|
+
};
|
|
16
|
+
export const TwoFactor = ({ onReset, onResend, isDialog, isLoading, isPartner, twoFactorMethod, heading, description, note, submitLabel, errorMessage, resendNote, }) => {
|
|
8
17
|
const { code, handleInputChange, handleSubmit, isValidated } = useTwoFactor(onReset);
|
|
9
|
-
return (_jsxs(BasePageWrapper, { flushMobile: !isDialog, children: [_jsxs(Container, { size: "onboarding", bg: "neutral.white"
|
|
18
|
+
return (_jsxs(BasePageWrapper, { flushMobile: !isDialog, children: [_jsxs(Container, Object.assign({ size: "onboarding", bg: "neutral.white" }, (isDialog ? DIALOG_CARD : onboardingCardProps()), { children: [_jsx(AuthHeader, { isPartner: isPartner }), _jsxs(Stack, { my: "6", children: [_jsx(Text, { variant: "title", textAlign: "center", px: "10", children: heading !== null && heading !== void 0 ? heading : t('reset.2FA.title') }), _jsx(Text, { fontFamily: "secondary", textAlign: "center", px: ['10', '20'],
|
|
19
|
+
// Centred text wraps into even lines (no widows).
|
|
20
|
+
sx: { textWrap: 'balance' }, children: description !== null && description !== void 0 ? description : (_jsxs(_Fragment, { children: [twoFactorMethod === 'email' && t('reset.2FA.subtitleEmail'), twoFactorMethod === 'sms' && t('reset.2FA.subtitleSms')] })) }), note && (_jsx(Text, { fontFamily: "secondary", textAlign: "center", px: ['10', '20'], pt: "4", sx: { textWrap: 'balance' }, children: note }))] }), _jsx(Box, { px: ONBOARDING_PAGE_PX, pb: "container.md", mb: "6", children: _jsxs(Stack, { spacing: "4", children: [Boolean(errorMessage) && _jsx(Text, { variant: "error", children: errorMessage }), _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: submitLabel !== null && submitLabel !== void 0 ? submitLabel : t('forms.submit') }), onResend && (_jsx(Center, { children: _jsx(Button, { onClick: onResend, variant: "text", children: t('reset.2FA.resend') }) })), resendNote && (_jsx(Text, { fontFamily: "secondary", textAlign: "center", sx: { textWrap: 'balance' }, children: resendNote }))] }) })] })), !isDialog && _jsx(Footer, {})] }));
|
|
10
21
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { t } from 'i18next';
|
|
3
3
|
import { Box, Container, Text, Center, Button, Stack, AspectRatio, } from '@chakra-ui/react';
|
|
4
|
-
import { Logo, WelcomeHeader } from '../../../components';
|
|
4
|
+
import { Logo, WelcomeHeader, ONBOARDING_PHONE_PX } from '../../../components';
|
|
5
5
|
export const Welcome = ({ handleClick, name, videoUrl = '' }) => {
|
|
6
|
-
return (_jsx(Box, { w: "container.full", children: _jsxs(Container, { size: "validation", children: [_jsx(Container, { variant: "secondary", children: _jsx(Logo, {}) }), _jsx(Text, { variant: "heading", textAlign: "center", mt: "3rem", children: t('welcome.title') }), _jsx(Box, { px: [
|
|
6
|
+
return (_jsx(Box, { w: "container.full", children: _jsxs(Container, { size: "validation", children: [_jsx(Container, { variant: "secondary", children: _jsx(Logo, {}) }), _jsx(Text, { variant: "heading", textAlign: "center", mt: "3rem", children: t('welcome.title') }), _jsx(Box, { px: [ONBOARDING_PHONE_PX, 'container.lg'], children: _jsxs(Stack, { spacing: "8", children: [_jsx(WelcomeHeader, { description: t('welcome.message'), greeting: t('welcome.greeting'), name: name }), videoUrl !== '' && (_jsx(AspectRatio, { w: "full", children: _jsx("iframe", { title: "Welcome Homefile", src: videoUrl, allowFullScreen: true }) })), _jsx(Text, { variant: "info", children: t('welcome.message2') }), _jsx(Text, { variant: "info", children: t('welcome.signature') }), _jsx(Center, { children: _jsx(Button, { onClick: handleClick, size: "onboarding", mb: "4rem", children: t('welcome.welcomeBt') }) })] }) }), _jsx(Container, { variant: "tertiary", h: "container.xxs" })] }) }));
|
|
7
7
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ActivateAccount, ActiveSubscription, AddCardBanner, AddEditContactPanel, AddFolder, AddHomeContent, AddHomeItem, AddHomeItemHeader, AddMedia, AddPopup, AddPropertyRecords, Address, AddTile, AddToHomefile, AlertBanner, AphwTile, AppBar, AppliancesReceived, AssignableReceipts, BackendAlert, BackHeader, BarDivider, BrandLogo, CalendarWidget, CancelAccount, CatalogPopup, CloudsAnimation, Close, ConfirmHomeDetails, ConfirmProperty, ConfirmPropertyBody, ConfirmPropertyFooter, ConfirmPropertyRecords, ContactList, ContactsContent, ContainerHeader, ControlledWizard, CreateDocumentHeader, CreateHouseholdItemHeader, CreditCardContainer, CreditCardError, CustomerTile, DeleteBanner, Dialog, DisplayFiles, DisplayFilesDetail, DisplayOptions, DisplayReceipts, DocumentMenu, DocumentNameHeader, DocumentPreview, DragDropArea, DynamicForm, EditAccountType, EditHomeBody, EditHomeFooter, EditHomeHeader, EditHomePanel, EditItemName, EmailPermissions, EmailValidation, Feedback, FileDetail, FilesUploader, FlowStep, FolderDetail, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, FolderSharing, FolderTypeSelection, FooterButtons, FooterDrawer, GenericBackHeader, GroupCard, GroupsContainer, GroupsHeader, Header, HelpContent, HomeAssistant, HomeAssistantPanel, HomeAssistantTutorial, HomeAssistantWizardPanel, HomeAssistantWizardSteps, HomeBoardGrid, HomeBoardTour, HomeCard, HomeCardWithRecipent, HomeDetailsContent, HomefileMonitoring, HomeHeader, HomiPresence, HomiVoice, InlineEditField, ProgressBar, RevealValueCard, StaggerReveal, HomeItemList, HomeItemManualInfo, HomeMonitor, HomeMonitorPanel, HomeMonitorSteps, HomeSharedWith, HomieAddItems, HomiSms, InboxForwardBanner, InboxTile, IncludePublicRecords, ItemFormPanel, ItemFormTabs, ItemNameHeader, ItemsReviewBanner, ItemSubTypeSelect, Launchpad, LaunchpadApplianceAutofiler, LaunchpadAppliancePanel, LaunchpadAutofilerBanner, LaunchpadReceiptAutofiler, LaunchpadReceiptPanel, LaunchpadTour, LeftPanel, Loading, MediaDetailsStep, MessageChatPanel, MessagePanel, MinimizedTile, MinimizedTiles, MonthlyCharge, MortgageInfo, MortgageInfoReadOnly, MoveModal, MyHomeCard, MyHomes, MyProfileBody, MyProfileContent, MyProfileFooter, MyProfileHeader, MyProfilePanel, NewCreditCard, NewCreditCardHeader, NewHomeDetails, NewParterDetails, NewPassword, NotBeChargedBanner, NotificationCard, Notifications, NotificationsPanel, NotificationsReminder, NpsScore, Overlay, PanelHeader, PartnerActiveSubscription, PartnerCatalogPanel, PartnerContent, PartnerCustomerCard, PartnerCustomerCode, PartnerCustomersToolbar, PartnerCustomersWrapper, PartnerDetails, PartnerHomeHeader, PartnerImages, PartnerPanel, PartnerServiceCard, PartnerServiceTicketCard, PartnerServiceTicketsToolbar, PartnerServiceTicketsWrapper, PartnerSidebarMenu, PartnerWizardStepBrand, PartnerWizardStepServices, PartnerWizardStepServicesSelect, PartnerWizardStepServiceZones, PartnerWizardStepCta, PartnerWizardStepSocial, PartnerWizardStepHeader, PartnerWizardStepLayout, PartnerWizardSuccessHeader, PartnerWizardSuccessBody, PartnerWizardSteps, PasswordInput, PaymentBanner, PaymentReceipts, PdfButton, PeopleConnected, ProfileDetailsTab, ProfilePaymentTab, ProjectList, PropertyRecords, PropertyTaxes, ReadOnlyDynamicForm, ReadOnlyImage, ReadOnlyToggle, ReceiptAutofiler, ReceiptBody, ReceiptContent, ReceiptDetails, ReceiptFilters, ReceiptFooter, ReceiptHeader, ReceiptInfos, ReceiptItem, ReceiptItems, ReceiptPDF, ReceiptsDisplayOptions, ReceiptsFiled, ReceiptsHeader, ReceiptsInfo, ReceiptsReceivedContent, RecipientForm, RecipientsToShare, RecipientTab, RecordsInputs, ResendResetPassword, ResetPassword, ReviewBanner, RightPanel, RolePermissionsTab, RoomHeader, RoomsBoardTour, RoomsMenu, RoomsMenuMobile, RoomStep, RoomVideo, SalesTax, SatisfactionTile, SearchItemLoader, SearchRecords, SectionHeader, SendCommunication, ShareContactsContent, SharedAccounts, SharedHomeContent, SharedHomeHeader, ShareHome, ShareHomeConnections, ShareHomeForm, ShineTile, ShortPartnerTile, SignIn, SignUp, SkeletonBox, StartHomiSetup, StepHeader, StorageUsed, Subscription, SubscriptionCard, SubscriptionTable, Summary, TabsHeader, TextInput, ToBeDeletedBody, ToBeDeletedContent, ToBeDeletedFooter, ToBeDeletedHeader, TourButton, Trash, TrendingValue, TrialBanner, TutorialsButton, TwoFactor, TwoFactorDialog, TwoFactorSetting, UpdateList, UploadTile, UserDetails, ValueMonitor, VideoPlayer, VideoPlayerModal, ViewContactPanel, WeatherWidget, WidgetCarousel, WellDone, WizardBodyPadding, WizardStepGoal, WizardStepPrompt, WizardSuccessHeader, WizardTextHeader, WizardValueSummary, WizardValueSummaryBody, WizardValueSummaryFooter, YtdTile, } from './components';
|
|
1
|
+
export { ActivateAccount, ActiveSubscription, AddCardBanner, AddEditContactPanel, AddFolder, AddHomeContent, AddHomeItem, AddHomeItemHeader, AddMedia, AddPopup, AddPropertyRecords, Address, AddTile, AddToHomefile, AlertBanner, AphwTile, AppBar, AppliancesReceived, AssignableReceipts, BackendAlert, BackHeader, BarDivider, BrandLogo, CalendarWidget, CancelAccount, CatalogPopup, CloudsAnimation, Close, ConfirmHomeDetails, ConfirmProperty, ConfirmPropertyBody, ConfirmPropertyFooter, ConfirmPropertyRecords, ContactList, ContactsContent, ContainerHeader, ControlledWizard, CreateDocumentHeader, CreateHouseholdItemHeader, CreditCardContainer, CreditCardError, CustomerTile, DeleteBanner, Dialog, DisplayFiles, DisplayFilesDetail, DisplayOptions, DisplayReceipts, DocumentMenu, DocumentNameHeader, DocumentPreview, DragDropArea, DynamicForm, EditAccountType, EditHomeBody, EditHomeFooter, EditHomeHeader, EditHomePanel, EditItemName, EmailPermissions, EmailValidation, Feedback, FileDetail, FilesUploader, FlowStep, FolderDetail, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, FolderSharing, FolderTypeSelection, FooterButtons, FooterDrawer, GenericBackHeader, GroupCard, GroupsContainer, GroupsHeader, Header, HelpContent, HomeAssistant, HomeAssistantPanel, HomeAssistantTutorial, HomeAssistantWizardPanel, HomeAssistantWizardSteps, HomeBoardGrid, HomeBoardTour, HomeCard, HomeCardWithRecipent, HomeDetailsContent, HomefileMonitoring, HomeHeader, HomiPresence, HomiVoice, InlineEditField, ProgressBar, RevealValueCard, StaggerReveal, HomeItemList, HomeItemManualInfo, HomeMonitor, HomeMonitorPanel, HomeMonitorSteps, HomeSharedWith, HomieAddItems, HomiSms, InboxForwardBanner, InboxTile, IncludePublicRecords, ItemFormPanel, ItemFormTabs, ItemNameHeader, ItemsReviewBanner, ItemSubTypeSelect, Launchpad, LaunchpadApplianceAutofiler, LaunchpadAppliancePanel, LaunchpadAutofilerBanner, LaunchpadReceiptAutofiler, LaunchpadReceiptPanel, LaunchpadTour, LeftPanel, Loading, MediaDetailsStep, MessageChatPanel, MessagePage, MessagePanel, MinimizedTile, MinimizedTiles, MonthlyCharge, MortgageInfo, MortgageInfoReadOnly, MoveModal, MyHomeCard, MyHomes, MyProfileBody, MyProfileContent, MyProfileFooter, MyProfileHeader, MyProfilePanel, NewCreditCard, NewCreditCardHeader, NewHomeDetails, NewParterDetails, NewPassword, NotBeChargedBanner, NotificationCard, Notifications, NotificationsPanel, NotificationsReminder, NpsScore, Overlay, PanelHeader, PartnerActiveSubscription, PartnerCatalogPanel, PartnerContent, PartnerCustomerCard, PartnerCustomerCode, PartnerCustomersToolbar, PartnerCustomersWrapper, PartnerDetails, PartnerHomeHeader, PartnerImages, PartnerPanel, PartnerServiceCard, PartnerServiceTicketCard, PartnerServiceTicketsToolbar, PartnerServiceTicketsWrapper, PartnerSidebarMenu, PartnerWizardStepBrand, PartnerWizardStepServices, PartnerWizardStepServicesSelect, PartnerWizardStepServiceZones, PartnerWizardStepCta, PartnerWizardStepSocial, PartnerWizardStepHeader, PartnerWizardStepLayout, PartnerWizardSuccessHeader, PartnerWizardSuccessBody, PartnerWizardSteps, PasswordInput, PaymentBanner, PaymentReceipts, PdfButton, PeopleConnected, ProfileDetailsTab, ProfilePaymentTab, ProjectList, PropertyRecords, PropertyTaxes, ReadOnlyDynamicForm, ReadOnlyImage, ReadOnlyToggle, ReceiptAutofiler, ReceiptBody, ReceiptContent, ReceiptDetails, ReceiptFilters, ReceiptFooter, ReceiptHeader, ReceiptInfos, ReceiptItem, ReceiptItems, ReceiptPDF, ReceiptsDisplayOptions, ReceiptsFiled, ReceiptsHeader, ReceiptsInfo, ReceiptsReceivedContent, RecipientForm, RecipientsToShare, RecipientTab, RecordsInputs, ResendResetPassword, ResetPassword, ReviewBanner, RightPanel, RolePermissionsTab, RoomHeader, RoomsBoardTour, RoomsMenu, RoomsMenuMobile, RoomStep, RoomVideo, SalesTax, SatisfactionTile, SearchItemLoader, SearchRecords, SectionHeader, SendCommunication, ShareContactsContent, SharedAccounts, SharedHomeContent, SharedHomeHeader, ShareHome, ShareHomeConnections, ShareHomeForm, ShineTile, ShortPartnerTile, SignIn, SignUp, SkeletonBox, StartHomiSetup, StepHeader, StorageUsed, Subscription, SubscriptionCard, SubscriptionTable, Summary, TabsHeader, TextInput, ToBeDeletedBody, ToBeDeletedContent, ToBeDeletedFooter, ToBeDeletedHeader, TourButton, Trash, TrendingValue, TrialBanner, TutorialsButton, TwoFactor, TwoFactorDialog, TwoFactorSetting, UpdateList, UploadTile, UserDetails, ValueMonitor, VideoPlayer, VideoPlayerModal, ViewContactPanel, WeatherWidget, WidgetCarousel, WellDone, WizardBodyPadding, WizardStepGoal, WizardStepPrompt, WizardSuccessHeader, WizardTextHeader, WizardValueSummary, WizardValueSummaryBody, WizardValueSummaryFooter, YtdTile, } from './components';
|
|
2
2
|
export { useCustomToast, useConfirmPropertyModel, usePrefersReducedMotion, useCountUp, useDirtySave, } from './hooks';
|
|
3
3
|
export { useFilesUploader } from './hooks/folderPanel/useFilesUploader';
|
|
4
4
|
export { randomColor, mapApiObjectToFormFields, mapForecastToWidget, } from './utils';
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ActivateAccount, ActiveSubscription, AddCardBanner, AddEditContactPanel, AddFolder, AddHomeContent, AddHomeItem, AddHomeItemHeader, AddMedia, AddPopup, AddPropertyRecords, Address, AddTile, AddToHomefile, AlertBanner, AphwTile, AppBar, AppliancesReceived, AssignableReceipts, BackendAlert, BackHeader, BarDivider, BrandLogo, CalendarWidget, CancelAccount, CatalogPopup, CloudsAnimation, Close, ConfirmHomeDetails, ConfirmProperty, ConfirmPropertyBody, ConfirmPropertyFooter, ConfirmPropertyRecords, ContactList, ContactsContent, ContainerHeader, ControlledWizard, CreateDocumentHeader, CreateHouseholdItemHeader, CreditCardContainer, CreditCardError, CustomerTile, DeleteBanner, Dialog, DisplayFiles, DisplayFilesDetail, DisplayOptions, DisplayReceipts, DocumentMenu, DocumentNameHeader, DocumentPreview, DragDropArea, DynamicForm, EditAccountType, EditHomeBody, EditHomeFooter, EditHomeHeader, EditHomePanel, EditItemName, EmailPermissions, EmailValidation, Feedback, FileDetail, FilesUploader, FlowStep, FolderDetail, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, FolderSharing, FolderTypeSelection, FooterButtons, FooterDrawer, GenericBackHeader, GroupCard, GroupsContainer, GroupsHeader, Header, HelpContent, HomeAssistant, HomeAssistantPanel, HomeAssistantTutorial, HomeAssistantWizardPanel, HomeAssistantWizardSteps, HomeBoardGrid, HomeBoardTour, HomeCard, HomeCardWithRecipent, HomeDetailsContent, HomefileMonitoring, HomeHeader, HomiPresence, HomiVoice, InlineEditField, ProgressBar, RevealValueCard, StaggerReveal, HomeItemList, HomeItemManualInfo, HomeMonitor, HomeMonitorPanel, HomeMonitorSteps, HomeSharedWith, HomieAddItems, HomiSms, InboxForwardBanner, InboxTile, IncludePublicRecords, ItemFormPanel, ItemFormTabs, ItemNameHeader, ItemsReviewBanner, ItemSubTypeSelect, Launchpad, LaunchpadApplianceAutofiler, LaunchpadAppliancePanel, LaunchpadAutofilerBanner, LaunchpadReceiptAutofiler, LaunchpadReceiptPanel, LaunchpadTour, LeftPanel, Loading, MediaDetailsStep, MessageChatPanel, MessagePanel, MinimizedTile, MinimizedTiles, MonthlyCharge, MortgageInfo, MortgageInfoReadOnly, MoveModal, MyHomeCard, MyHomes, MyProfileBody, MyProfileContent, MyProfileFooter, MyProfileHeader, MyProfilePanel, NewCreditCard, NewCreditCardHeader, NewHomeDetails, NewParterDetails, NewPassword, NotBeChargedBanner, NotificationCard, Notifications, NotificationsPanel, NotificationsReminder, NpsScore, Overlay, PanelHeader, PartnerActiveSubscription, PartnerCatalogPanel, PartnerContent, PartnerCustomerCard, PartnerCustomerCode, PartnerCustomersToolbar, PartnerCustomersWrapper, PartnerDetails, PartnerHomeHeader, PartnerImages, PartnerPanel, PartnerServiceCard, PartnerServiceTicketCard, PartnerServiceTicketsToolbar, PartnerServiceTicketsWrapper, PartnerSidebarMenu, PartnerWizardStepBrand, PartnerWizardStepServices, PartnerWizardStepServicesSelect, PartnerWizardStepServiceZones, PartnerWizardStepCta, PartnerWizardStepSocial, PartnerWizardStepHeader, PartnerWizardStepLayout, PartnerWizardSuccessHeader, PartnerWizardSuccessBody, PartnerWizardSteps, PasswordInput, PaymentBanner, PaymentReceipts, PdfButton, PeopleConnected, ProfileDetailsTab, ProfilePaymentTab, ProjectList, PropertyRecords, PropertyTaxes, ReadOnlyDynamicForm, ReadOnlyImage, ReadOnlyToggle, ReceiptAutofiler, ReceiptBody, ReceiptContent, ReceiptDetails, ReceiptFilters, ReceiptFooter, ReceiptHeader, ReceiptInfos, ReceiptItem, ReceiptItems, ReceiptPDF, ReceiptsDisplayOptions, ReceiptsFiled, ReceiptsHeader, ReceiptsInfo, ReceiptsReceivedContent, RecipientForm, RecipientsToShare, RecipientTab, RecordsInputs, ResendResetPassword, ResetPassword, ReviewBanner, RightPanel, RolePermissionsTab, RoomHeader, RoomsBoardTour, RoomsMenu, RoomsMenuMobile, RoomStep, RoomVideo, SalesTax, SatisfactionTile, SearchItemLoader, SearchRecords, SectionHeader, SendCommunication, ShareContactsContent, SharedAccounts, SharedHomeContent, SharedHomeHeader, ShareHome, ShareHomeConnections, ShareHomeForm, ShineTile, ShortPartnerTile, SignIn, SignUp, SkeletonBox, StartHomiSetup, StepHeader, StorageUsed, Subscription, SubscriptionCard, SubscriptionTable, Summary, TabsHeader, TextInput, ToBeDeletedBody, ToBeDeletedContent, ToBeDeletedFooter, ToBeDeletedHeader, TourButton, Trash, TrendingValue, TrialBanner, TutorialsButton, TwoFactor, TwoFactorDialog, TwoFactorSetting, UpdateList, UploadTile, UserDetails, ValueMonitor, VideoPlayer, VideoPlayerModal, ViewContactPanel, WeatherWidget, WidgetCarousel, WellDone, WizardBodyPadding, WizardStepGoal, WizardStepPrompt, WizardSuccessHeader, WizardTextHeader, WizardValueSummary, WizardValueSummaryBody, WizardValueSummaryFooter, YtdTile, } from './components';
|
|
1
|
+
export { ActivateAccount, ActiveSubscription, AddCardBanner, AddEditContactPanel, AddFolder, AddHomeContent, AddHomeItem, AddHomeItemHeader, AddMedia, AddPopup, AddPropertyRecords, Address, AddTile, AddToHomefile, AlertBanner, AphwTile, AppBar, AppliancesReceived, AssignableReceipts, BackendAlert, BackHeader, BarDivider, BrandLogo, CalendarWidget, CancelAccount, CatalogPopup, CloudsAnimation, Close, ConfirmHomeDetails, ConfirmProperty, ConfirmPropertyBody, ConfirmPropertyFooter, ConfirmPropertyRecords, ContactList, ContactsContent, ContainerHeader, ControlledWizard, CreateDocumentHeader, CreateHouseholdItemHeader, CreditCardContainer, CreditCardError, CustomerTile, DeleteBanner, Dialog, DisplayFiles, DisplayFilesDetail, DisplayOptions, DisplayReceipts, DocumentMenu, DocumentNameHeader, DocumentPreview, DragDropArea, DynamicForm, EditAccountType, EditHomeBody, EditHomeFooter, EditHomeHeader, EditHomePanel, EditItemName, EmailPermissions, EmailValidation, Feedback, FileDetail, FilesUploader, FlowStep, FolderDetail, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, FolderSharing, FolderTypeSelection, FooterButtons, FooterDrawer, GenericBackHeader, GroupCard, GroupsContainer, GroupsHeader, Header, HelpContent, HomeAssistant, HomeAssistantPanel, HomeAssistantTutorial, HomeAssistantWizardPanel, HomeAssistantWizardSteps, HomeBoardGrid, HomeBoardTour, HomeCard, HomeCardWithRecipent, HomeDetailsContent, HomefileMonitoring, HomeHeader, HomiPresence, HomiVoice, InlineEditField, ProgressBar, RevealValueCard, StaggerReveal, HomeItemList, HomeItemManualInfo, HomeMonitor, HomeMonitorPanel, HomeMonitorSteps, HomeSharedWith, HomieAddItems, HomiSms, InboxForwardBanner, InboxTile, IncludePublicRecords, ItemFormPanel, ItemFormTabs, ItemNameHeader, ItemsReviewBanner, ItemSubTypeSelect, Launchpad, LaunchpadApplianceAutofiler, LaunchpadAppliancePanel, LaunchpadAutofilerBanner, LaunchpadReceiptAutofiler, LaunchpadReceiptPanel, LaunchpadTour, LeftPanel, Loading, MediaDetailsStep, MessageChatPanel, MessagePage, MessagePanel, MinimizedTile, MinimizedTiles, MonthlyCharge, MortgageInfo, MortgageInfoReadOnly, MoveModal, MyHomeCard, MyHomes, MyProfileBody, MyProfileContent, MyProfileFooter, MyProfileHeader, MyProfilePanel, NewCreditCard, NewCreditCardHeader, NewHomeDetails, NewParterDetails, NewPassword, NotBeChargedBanner, NotificationCard, Notifications, NotificationsPanel, NotificationsReminder, NpsScore, Overlay, PanelHeader, PartnerActiveSubscription, PartnerCatalogPanel, PartnerContent, PartnerCustomerCard, PartnerCustomerCode, PartnerCustomersToolbar, PartnerCustomersWrapper, PartnerDetails, PartnerHomeHeader, PartnerImages, PartnerPanel, PartnerServiceCard, PartnerServiceTicketCard, PartnerServiceTicketsToolbar, PartnerServiceTicketsWrapper, PartnerSidebarMenu, PartnerWizardStepBrand, PartnerWizardStepServices, PartnerWizardStepServicesSelect, PartnerWizardStepServiceZones, PartnerWizardStepCta, PartnerWizardStepSocial, PartnerWizardStepHeader, PartnerWizardStepLayout, PartnerWizardSuccessHeader, PartnerWizardSuccessBody, PartnerWizardSteps, PasswordInput, PaymentBanner, PaymentReceipts, PdfButton, PeopleConnected, ProfileDetailsTab, ProfilePaymentTab, ProjectList, PropertyRecords, PropertyTaxes, ReadOnlyDynamicForm, ReadOnlyImage, ReadOnlyToggle, ReceiptAutofiler, ReceiptBody, ReceiptContent, ReceiptDetails, ReceiptFilters, ReceiptFooter, ReceiptHeader, ReceiptInfos, ReceiptItem, ReceiptItems, ReceiptPDF, ReceiptsDisplayOptions, ReceiptsFiled, ReceiptsHeader, ReceiptsInfo, ReceiptsReceivedContent, RecipientForm, RecipientsToShare, RecipientTab, RecordsInputs, ResendResetPassword, ResetPassword, ReviewBanner, RightPanel, RolePermissionsTab, RoomHeader, RoomsBoardTour, RoomsMenu, RoomsMenuMobile, RoomStep, RoomVideo, SalesTax, SatisfactionTile, SearchItemLoader, SearchRecords, SectionHeader, SendCommunication, ShareContactsContent, SharedAccounts, SharedHomeContent, SharedHomeHeader, ShareHome, ShareHomeConnections, ShareHomeForm, ShineTile, ShortPartnerTile, SignIn, SignUp, SkeletonBox, StartHomiSetup, StepHeader, StorageUsed, Subscription, SubscriptionCard, SubscriptionTable, Summary, TabsHeader, TextInput, ToBeDeletedBody, ToBeDeletedContent, ToBeDeletedFooter, ToBeDeletedHeader, TourButton, Trash, TrendingValue, TrialBanner, TutorialsButton, TwoFactor, TwoFactorDialog, TwoFactorSetting, UpdateList, UploadTile, UserDetails, ValueMonitor, VideoPlayer, VideoPlayerModal, ViewContactPanel, WeatherWidget, WidgetCarousel, WellDone, WizardBodyPadding, WizardStepGoal, WizardStepPrompt, WizardSuccessHeader, WizardTextHeader, WizardValueSummary, WizardValueSummaryBody, WizardValueSummaryFooter, YtdTile, } from './components';
|
|
2
2
|
export { useCustomToast, useConfirmPropertyModel, usePrefersReducedMotion, useCountUp, useDirtySave, } from './hooks';
|
|
3
3
|
export { useFilesUploader } from './hooks/folderPanel/useFilesUploader';
|
|
4
4
|
export { randomColor, mapApiObjectToFormFields, mapForecastToWidget, } from './utils';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -7,9 +7,11 @@ export interface SignInI {
|
|
|
7
7
|
isPartner?: boolean;
|
|
8
8
|
handleForgotPassword: () => void;
|
|
9
9
|
handleSignIn: (form: SignInFormI) => void;
|
|
10
|
-
handleSignUp
|
|
10
|
+
handleSignUp?: () => void;
|
|
11
11
|
handleGoogleSignIn?: () => void;
|
|
12
12
|
handleAppleSignIn?: () => void;
|
|
13
13
|
loginErrorMessage?: string;
|
|
14
|
+
heading?: string;
|
|
15
|
+
description?: string;
|
|
14
16
|
values?: SignInFormI;
|
|
15
17
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta } from '@storybook/react';
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
2
|
import { CardFooterI } from '../../interfaces';
|
|
3
3
|
declare const _default: Meta<CardFooterI>;
|
|
4
4
|
export default _default;
|
|
@@ -9,3 +9,4 @@ export declare const CardFooterComponent: {
|
|
|
9
9
|
buttonLabel: string;
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
+
export declare const CardFooterPhone: StoryObj<CardFooterI>;
|
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
import { within } from '@storybook/test';
|
|
2
12
|
import { CardFooter } from '../../components';
|
|
13
|
+
import { PHONE, expectCardFullWidth, expectSides, getCard } from './phoneLayout';
|
|
3
14
|
export default {
|
|
4
15
|
title: 'Components/Onboarding',
|
|
5
16
|
component: CardFooter,
|
|
@@ -11,3 +22,16 @@ CardFooterComponent.args = {
|
|
|
11
22
|
title: 'Card title',
|
|
12
23
|
buttonLabel: 'Click here',
|
|
13
24
|
};
|
|
25
|
+
// The Sign-up box on a phone: its text keeps 13px from the sides of the screen.
|
|
26
|
+
export const CardFooterPhone = {
|
|
27
|
+
parameters: PHONE,
|
|
28
|
+
args: {
|
|
29
|
+
title: 'Card title',
|
|
30
|
+
buttonLabel: 'Click here',
|
|
31
|
+
},
|
|
32
|
+
play: (_a) => __awaiter(void 0, [_a], void 0, function* ({ canvasElement }) {
|
|
33
|
+
const box = getCard(canvasElement);
|
|
34
|
+
yield expectCardFullWidth(box);
|
|
35
|
+
yield expectSides(box, { text: within(canvasElement).getByText('Card title') });
|
|
36
|
+
}),
|
|
37
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta } from '@storybook/react';
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
2
|
import { PageTitleI } from '../../interfaces';
|
|
3
3
|
declare const _default: Meta<PageTitleI>;
|
|
4
4
|
export default _default;
|
|
@@ -8,3 +8,4 @@ export declare const PageTitleComponent: {
|
|
|
8
8
|
title: string;
|
|
9
9
|
};
|
|
10
10
|
};
|
|
11
|
+
export declare const PageTitleWithDescription: StoryObj<PageTitleI>;
|