@homefile/components-v2 1.0.8 → 1.0.10
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/forms/dynamicForm/DynamicFormSimple.js +1 -1
- package/dist/components/homeAssistant/HomeAssistantButton.js +2 -1
- package/dist/components/homeAssistant/HomeAssistantSteps.d.ts +1 -1
- package/dist/components/homeAssistant/HomeAssistantSteps.js +22 -2
- package/dist/components/homeBoard/HomeBoard.js +15 -5
- package/dist/helpers/forms/dynamicForm.helper.js +2 -1
- package/dist/hooks/homeBoard/useHomeBoard.d.ts +4 -0
- package/dist/hooks/homeBoard/useHomeBoard.js +21 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/interfaces/forms/dynamicForm/DynamicForm.interface.d.ts +1 -1
- package/dist/interfaces/homeAssistant/HomeAssistantSteps.interface.d.ts +1 -0
- package/dist/mocks/homeAssistant/homeAssistantForms.d.ts +1 -0
- package/dist/mocks/homeAssistant/homeAssistantForms.js +47 -0
- package/dist/stories/homeAssistant/panel/HomeAssistantPanel.stories.js +2 -2
- package/dist/theme/index.d.ts +2 -1
- package/dist/theme/index.js +2 -1
- package/package.json +19 -19
- package/src/components/forms/dynamicForm/DynamicFormSimple.tsx +1 -1
- package/src/components/homeAssistant/HomeAssistantButton.tsx +2 -1
- package/src/components/homeAssistant/HomeAssistantSteps.tsx +25 -2
- package/src/components/homeBoard/HomeBoard.tsx +40 -3
- package/src/helpers/forms/dynamicForm.helper.ts +2 -2
- package/src/hooks/homeBoard/useHomeBoard.ts +26 -2
- package/src/index.ts +3 -2
- package/src/interfaces/forms/dynamicForm/DynamicForm.interface.ts +1 -0
- package/src/interfaces/homeAssistant/HomeAssistantSteps.interface.ts +1 -0
- package/src/mocks/homeAssistant/homeAssistantForms.ts +50 -13
- package/src/stories/homeAssistant/panel/HomeAssistantPanel.stories.tsx +2 -1
- package/src/theme/index.ts +2 -1
|
@@ -13,7 +13,7 @@ export const DynamicFormSimple = ({ form: fields }) => {
|
|
|
13
13
|
id,
|
|
14
14
|
value,
|
|
15
15
|
icon: icon ? fieldIcons[icon] : undefined,
|
|
16
|
-
placeholder: name
|
|
16
|
+
placeholder: name !== null && name !== void 0 ? name : description,
|
|
17
17
|
};
|
|
18
18
|
switch (type) {
|
|
19
19
|
case 'number':
|
|
@@ -10,7 +10,8 @@ export const HomeAssistantButton = ({ currentStep, onStepClick, status, step, })
|
|
|
10
10
|
if (!isPending)
|
|
11
11
|
onStepClick(currentStep);
|
|
12
12
|
};
|
|
13
|
-
|
|
13
|
+
const buttonId = `homeAssistantButton-${currentStep}`;
|
|
14
|
+
return (_jsxs(Box, { position: "relative", id: buttonId, children: [isCompleted && (_jsx(Image, { src: CheckInCircle, alt: "check", w: "22px", h: "auto", position: "absolute", top: "-4px", left: "-2px", boxShadow: "lg", borderRadius: "full" })), _jsxs(Stack, Object.assign({ as: "button", spacing: "2", borderRadius: "lg", boxShadow: "lg", border: "1px solid transparent", w: "116px", align: "center", h: "106px", py: "base", onClick: handleClick }, setStyles(status), { children: [_jsx(Center, { h: "60%", children: _jsx(Image, { src: step.icon, alt: iconAltText, w: "auto", h: "38px" }) }), _jsx(Center, { h: "40%", children: _jsx(Text, { fontSize: "sm", textTransform: "uppercase", textAlign: "center", lineHeight: "14px", children: step.title }) })] }))] }));
|
|
14
15
|
};
|
|
15
16
|
const setStyles = (status) => {
|
|
16
17
|
switch (status) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { HomeAssistantStepsI } from '../../interfaces';
|
|
2
|
-
export declare const HomeAssistantSteps: ({ currentStep, onStepClick, }: HomeAssistantStepsI) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const HomeAssistantSteps: ({ currentStep, onStepClick, isPanelOpen, }: HomeAssistantStepsI) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -2,8 +2,28 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Center, SimpleGrid, Stack } from '@chakra-ui/react';
|
|
3
3
|
import { HomeAssistantButton, HomeAssistantStepper } from '..';
|
|
4
4
|
import { homeAssistantSteps } from '../../helpers';
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { useState } from 'react';
|
|
6
|
+
import { useComponentStyles } from '../../hooks';
|
|
7
|
+
export const HomeAssistantSteps = ({ currentStep, onStepClick, isPanelOpen, }) => {
|
|
8
|
+
const [step, setStep] = useState(currentStep);
|
|
9
|
+
const stepId = `homeAssistantButton-${step}`;
|
|
10
|
+
const componentIds = isPanelOpen
|
|
11
|
+
? [
|
|
12
|
+
'homeAssistantButton-1',
|
|
13
|
+
'homeAssistantButton-2',
|
|
14
|
+
'homeAssistantButton-3',
|
|
15
|
+
'homeAssistantButton-4',
|
|
16
|
+
'homeAssistantButton-5',
|
|
17
|
+
'homeAssistantButton-6',
|
|
18
|
+
]
|
|
19
|
+
: [];
|
|
20
|
+
const handleStepClick = (step) => {
|
|
21
|
+
onStepClick(step);
|
|
22
|
+
setStep(step);
|
|
23
|
+
};
|
|
24
|
+
useComponentStyles(componentIds, stepId);
|
|
25
|
+
const wrapperZIndex = isPanelOpen ? undefined : '2';
|
|
26
|
+
return (_jsxs(Stack, { spacing: "8", w: "fit-content", position: "relative", top: ['-10px', '-30px'], zIndex: wrapperZIndex, children: [_jsx(HomeAssistantStepper, { currentStep: currentStep, totalSteps: 6 }), _jsx(SimpleGrid, { columns: [2, 3], spacing: "base", children: homeAssistantSteps.map((step, index) => (_jsx(Center, { w: "100%", children: _jsx(HomeAssistantButton, { currentStep: index + 1, onStepClick: handleStepClick, status: getStatus(index + 1, currentStep), step: step }) }, step.title))) })] }));
|
|
7
27
|
};
|
|
8
28
|
const getStatus = (index, currentStep) => {
|
|
9
29
|
if (index === currentStep)
|
|
@@ -9,13 +9,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
11
11
|
import { Box, DrawerBody, DrawerContent, DrawerHeader, Flex, Stack, } from '@chakra-ui/react';
|
|
12
|
-
import { HomeHeader, HomeCardWithRecipent, AddFolder, EditAccountType, FolderSharing, RightPanel, HomeBoardTour, RoomsMenu, ContactsContent, AppBar, BarDivider, ContactList, PeopleConnected, StorageUsed, TourButton, Trash, TutorialsButton, FolderTypeSelection, DisplayFiles, DisplayOptions, FilesUploader, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, SharedAccounts, ReceiptAutofiler, HomeBoardGrid, ShortPartnerTile, ValueMonitor, TrendingValue, ReceiptsFiled, PropertyTaxes, AddHomeItem, SendCommunication, PartnerCatalogPanel, DynamicForm, PanelHeader, EditHomePanel, HomeCard, EditHomeFooter, HomeAssistant, } from '..';
|
|
12
|
+
import { HomeHeader, HomeCardWithRecipent, AddFolder, EditAccountType, FolderSharing, RightPanel, HomeBoardTour, RoomsMenu, ContactsContent, AppBar, BarDivider, ContactList, PeopleConnected, StorageUsed, TourButton, Trash, TutorialsButton, FolderTypeSelection, DisplayFiles, DisplayOptions, FilesUploader, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, SharedAccounts, ReceiptAutofiler, HomeBoardGrid, ShortPartnerTile, ValueMonitor, TrendingValue, ReceiptsFiled, PropertyTaxes, AddHomeItem, SendCommunication, PartnerCatalogPanel, DynamicForm, PanelHeader, EditHomePanel, HomeCard, EditHomeFooter, HomeAssistant, HomeAssistantPanel, } from '..';
|
|
13
13
|
import { HomeCards, recipientsDb, FoldersDB, selectOptions, RoomsList, RoomsToAdd, } from '../../helpers';
|
|
14
|
-
import { ContactsMock, DisplayFilesMock, formFieldsMock, homeBoardRecorsMock, lineChartData, menuMock, partnerCatalogMock, sharedAccountsMock, socialLinksMock2, taxesMock, userMock, videoMock, } from '../../mocks';
|
|
14
|
+
import { ContactsMock, DisplayFilesMock, formFieldsMock, homeBoardRecorsMock, lineChartData, menuMock, partnerCatalogMock, sharedAccountsMock, socialLinksMock2, taxesMock, userMock, videoMock, homeAssitantStep1FormMock, homeAssitantStep2FormMock, homeAssitantStep3FormMock, homeAssitantStep4FormMock, homeAssitantStep5FormMock, homeAssitantStep6FormMock, } from '../../mocks';
|
|
15
15
|
import { useHomeBoard, useWindowDimensions } from '../../hooks';
|
|
16
16
|
import { Painting } from '../../assets/images';
|
|
17
|
+
const forms = {
|
|
18
|
+
1: homeAssitantStep1FormMock,
|
|
19
|
+
2: homeAssitantStep2FormMock,
|
|
20
|
+
3: homeAssitantStep3FormMock,
|
|
21
|
+
4: homeAssitantStep4FormMock,
|
|
22
|
+
5: homeAssitantStep5FormMock,
|
|
23
|
+
6: homeAssitantStep6FormMock,
|
|
24
|
+
};
|
|
17
25
|
export const HomeBoard = () => {
|
|
18
|
-
const { currentStep, activeTour, currentComponent, form, handleClose, handleEditHomeClick, handleFolderClick, handleNewFolder, handleStep, homeName, isRightOpen, onRightClose, setActiveTour, setShowFooter, showFooter, showOverlay, } = useHomeBoard();
|
|
26
|
+
const { currentStep, activeTour, currentComponent, form, handleClose, handleEditHomeClick, handleFolderClick, handleNewFolder, handleStep, homeName, isRightOpen, onRightClose, setActiveTour, setShowFooter, showFooter, showOverlay, handleHomeAssistantFormChange, handleHomeAssistantBack, homeAssistantCurrentStep, handleHomeAssistantClick, } = useHomeBoard();
|
|
27
|
+
const currentHomeAssistantForm = forms[homeAssistantCurrentStep];
|
|
19
28
|
const rightPanelComponents = {
|
|
20
29
|
AddFolder: (_jsx(AddFolder, { handleClose: onRightClose, handleSubmit: (_) => {
|
|
21
30
|
onRightClose();
|
|
@@ -37,11 +46,12 @@ export const HomeBoard = () => {
|
|
|
37
46
|
handleClick: () => null,
|
|
38
47
|
},
|
|
39
48
|
] })),
|
|
40
|
-
PartnerCatalog: (_jsx(PartnerCatalogPanel, { onClose:
|
|
49
|
+
PartnerCatalog: (_jsx(PartnerCatalogPanel, { onClose: onRightClose, onPartnerAdd: () => null, partners: partnerCatalogMock })),
|
|
41
50
|
AddHouseholdItem: (_jsxs(DrawerContent, { bg: "lightBlue.1", children: [_jsx(DrawerHeader, { p: "0", children: _jsx(PanelHeader, { handleCloseButton: handleClose, icon: Painting, title: "Add Household Item" }) }), _jsx(DrawerBody, { children: _jsx(DynamicForm, { form: formFieldsMock }) })] })),
|
|
51
|
+
HomeAssistant: (_jsx(HomeAssistantPanel, { currentStep: homeAssistantCurrentStep, currentForm: currentHomeAssistantForm, onNext: handleHomeAssistantFormChange, onBack: handleHomeAssistantBack, onApplianceClick: () => null, onClose: onRightClose })),
|
|
42
52
|
};
|
|
43
53
|
const panelSize = currentComponent === 'PartnerCatalog' ? 'lg' : 'md';
|
|
44
|
-
return (_jsxs(Box, { overflowX: "hidden", children: [_jsx(RightPanel, { overlay: showOverlay, isOpen: isRightOpen, onClose: onRightClose, size: panelSize, children: rightPanelComponents[currentComponent] }), _jsxs(Flex, { w: "full", minH: "100dvh", children: [_jsx(RoomsMenu, { activeRoom: "homeboard", handleAddRoom: (id) => __awaiter(void 0, void 0, void 0, function* () { return console.log(id); }), handleClick: () => null, handleHomeClick: () => null, rooms: RoomsList, roomsToAdd: RoomsToAdd }), _jsxs(Box, { w: "full", children: [_jsx(AppBarComponent, { setActiveTour: setActiveTour }), _jsxs(Stack, { spacing: "base", p: "base", children: [_jsx(HomeHeader, { buttonLabel: "Partner catalog", onBack: () => null, homeName: homeName, onAdd: () => null }), _jsxs(HomeBoardGrid, { children: [_jsx(HomeCardWithRecipent, { address: HomeCards[0].address, handleEdit: handleEditHomeClick, handleDeleteAccountType: (email) => email, handleSubmitAccountType: (form) => form, _id: HomeCards[0]._id, image: HomeCards[0].image, loading: false, name: HomeCards[0].name, menu: menuMock, addImage: () => null, recipients: recipientsDb, records: homeBoardRecorsMock }), _jsx(HomeAssistant, { currentStep: 6, onStepClick:
|
|
54
|
+
return (_jsxs(Box, { overflowX: "hidden", children: [_jsx(RightPanel, { overlay: showOverlay, isOpen: isRightOpen, onClose: onRightClose, size: panelSize, children: rightPanelComponents[currentComponent] }), _jsxs(Flex, { w: "full", minH: "100dvh", children: [_jsx(RoomsMenu, { activeRoom: "homeboard", handleAddRoom: (id) => __awaiter(void 0, void 0, void 0, function* () { return console.log(id); }), handleClick: () => null, handleHomeClick: () => null, rooms: RoomsList, roomsToAdd: RoomsToAdd }), _jsxs(Box, { w: "full", children: [_jsx(AppBarComponent, { setActiveTour: setActiveTour }), _jsxs(Stack, { spacing: "base", p: "base", children: [_jsx(HomeHeader, { buttonLabel: "Partner catalog", onBack: () => null, homeName: homeName, onAdd: () => null }), _jsxs(HomeBoardGrid, { children: [_jsx(HomeCardWithRecipent, { address: HomeCards[0].address, handleEdit: handleEditHomeClick, handleDeleteAccountType: (email) => email, handleSubmitAccountType: (form) => form, _id: HomeCards[0]._id, image: HomeCards[0].image, loading: false, name: HomeCards[0].name, menu: menuMock, addImage: () => null, recipients: recipientsDb, records: homeBoardRecorsMock }), _jsx(HomeAssistant, { isPanelOpen: isRightOpen, currentStep: 6, onStepClick: handleHomeAssistantClick }), _jsx(PropertyTaxes, { estimatedTaxValue: 1000, menuItems: menuMock, taxes: taxesMock, title: "Travis County Property Taxes" }), _jsxs(Stack, { spacing: "base", children: [_jsx(ReceiptAutofiler, { onClick: () => null, totalReceipts: 36, totalTitle: "Receipts Received", forwardTo: "reciepts@homefile.cloud", onFilter: () => null, children: _jsx(ReceiptsFiled, { incidentalItemsNumber: 0, incidentalSpent: 0, inventoryItemsNumber: 0, inventorySpent: 0, total: 0 }) }), _jsx(ValueMonitor, { menuItems: menuMock, balance: "+3%", totalValue: 323421, year: "2023", yearValue: 5684 })] }), _jsx(ShortPartnerTile, { _id: "1", buttonText: "Contact Audrey Scheck", description: "Full-service design firm focusing on residential remodels, furnishing, and styling.", onClick: () => null, socialLinks: socialLinksMock2, logo: "https://static.wixstatic.com/media/258105_8e04439070694f278e4787a310ea9f4b~mv2.png", partnerName: "Audrey Scheck", websiteUrl: "" }), _jsx(TrendingValue, { chartData: lineChartData, marketValue: 894000, menuItems: menuMock, mortgageBalance: 220532, purchasePrice: 220532, roi: "+234%" }), _jsx(ShortPartnerTile, { _id: "2", buttonText: "Contact Audrey Scheck", description: "Full-service design firm focusing on residential remodels, furnishing, and styling.", onClick: () => null, socialLinks: socialLinksMock2, logo: "https://static.wixstatic.com/media/258105_8e04439070694f278e4787a310ea9f4b~mv2.png", partnerName: "Audrey Scheck", websiteUrl: "" }), _jsx(FolderSharing, { folders: FoldersDB, handleAddNewFolder: handleNewFolder, handleFolderClick: handleFolderClick, handleSelect: () => null, initialSelectItem: selectOptions[0], menuItems: menuMock, selectItems: selectOptions }), _jsxs(Stack, { spacing: "base", children: [_jsx(AddHomeItem, { handleClick: () => null }), _jsx(SendCommunication, { documentList: [] })] }), _jsx(ShortPartnerTile, { _id: "3", buttonText: "Contact Audrey Scheck", description: "Full-service design firm focusing on residential remodels, furnishing, and styling.", onClick: () => null, socialLinks: socialLinksMock2, logo: "https://static.wixstatic.com/media/258105_8e04439070694f278e4787a310ea9f4b~mv2.png", partnerName: "Audrey Scheck", websiteUrl: "" })] })] })] })] }), _jsx(HomeBoardTour, { currentStep: currentStep, handleClose: handleClose, handleStep: handleStep, meetStepUrl: videoMock, isActive: activeTour })] }));
|
|
45
55
|
};
|
|
46
56
|
export const AppBarComponent = ({ setActiveTour = (value) => { } }) => {
|
|
47
57
|
const handleTour = () => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Paint, Receipt, Barcode, GoldenBars, Heart, Rating, Notes, Book, ImgIcon, Registry, ShareWith, Calendar, Tools2, Billing, Calc, CheckPen, GenericField, Price, Battery2, Co2, Detector, Electricity, Sprinkler, SixtyEight, DropCalendar, MobileDrop, SolarPanel, Calendar2, Drop, Wind, Foundation, Heater, Light, Plate, Pool2, Closet, Structure, GlassWater, Roof2, } from '../../assets/images';
|
|
1
|
+
import { Paint, Receipt, Barcode, GoldenBars, Heart, Rating, Notes, Book, ImgIcon, Registry, ShareWith, Calendar, Tools2, Billing, Calc, CheckPen, GenericField, Price, Battery2, Co2, Detector, Electricity, Sprinkler, SixtyEight, DropCalendar, MobileDrop, SolarPanel, Calendar2, Drop, Wind, Foundation, Heater, Light, Plate, Pool2, Closet, Structure, GlassWater, Roof2, Target, } from '../../assets/images';
|
|
2
2
|
export const fieldIcons = {
|
|
3
3
|
barcode: Barcode,
|
|
4
4
|
billing: Billing,
|
|
@@ -40,4 +40,5 @@ export const fieldIcons = {
|
|
|
40
40
|
umbrella: Closet,
|
|
41
41
|
water: GlassWater,
|
|
42
42
|
house: Structure,
|
|
43
|
+
target: Target,
|
|
43
44
|
};
|
|
@@ -17,4 +17,8 @@ export declare const useHomeBoard: () => {
|
|
|
17
17
|
setShowFooter: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
18
18
|
showFooter: boolean;
|
|
19
19
|
showOverlay: boolean;
|
|
20
|
+
handleHomeAssistantFormChange: () => void;
|
|
21
|
+
handleHomeAssistantBack: () => void;
|
|
22
|
+
homeAssistantCurrentStep: number;
|
|
23
|
+
handleHomeAssistantClick: (step: number) => void;
|
|
20
24
|
};
|
|
@@ -7,8 +7,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { useDisclosure } from '@chakra-ui/react';
|
|
11
10
|
import { useEffect, useState } from 'react';
|
|
11
|
+
import { useDisclosure } from '@chakra-ui/react';
|
|
12
12
|
export const useHomeBoard = () => {
|
|
13
13
|
const homeName = 'The Edmunds';
|
|
14
14
|
const { isOpen: isRightOpen, onOpen: onRightOpen, onClose: onRightClose, } = useDisclosure();
|
|
@@ -17,6 +17,17 @@ export const useHomeBoard = () => {
|
|
|
17
17
|
const [activeTour, setActiveTour] = useState(false);
|
|
18
18
|
const [showFooter, setShowFooter] = useState(false);
|
|
19
19
|
const [currentStep, setCurrentStep] = useState('homeboard');
|
|
20
|
+
const [homeAssistantCurrentStep, setHomeAssistantCurrentStep] = useState(6);
|
|
21
|
+
const handleHomeAssistantFormChange = () => setHomeAssistantCurrentStep((prev) => {
|
|
22
|
+
if (prev === 6)
|
|
23
|
+
return 1;
|
|
24
|
+
return prev + 1;
|
|
25
|
+
});
|
|
26
|
+
const handleHomeAssistantBack = () => setHomeAssistantCurrentStep((prev) => {
|
|
27
|
+
if (prev === 1)
|
|
28
|
+
return 6;
|
|
29
|
+
return prev - 1;
|
|
30
|
+
});
|
|
20
31
|
const handleNewFolder = () => {
|
|
21
32
|
setCurrentComponent('AddFolder');
|
|
22
33
|
onRightOpen();
|
|
@@ -29,6 +40,11 @@ export const useHomeBoard = () => {
|
|
|
29
40
|
setCurrentComponent('EditHome');
|
|
30
41
|
onRightOpen();
|
|
31
42
|
};
|
|
43
|
+
const handleHomeAssistantClick = (step) => {
|
|
44
|
+
setCurrentComponent('HomeAssistant');
|
|
45
|
+
setHomeAssistantCurrentStep(step);
|
|
46
|
+
onRightOpen();
|
|
47
|
+
};
|
|
32
48
|
const componentsByStep = {
|
|
33
49
|
nameFolder: 'AddFolder',
|
|
34
50
|
addFiles: 'FolderDetail',
|
|
@@ -113,5 +129,9 @@ export const useHomeBoard = () => {
|
|
|
113
129
|
setShowFooter,
|
|
114
130
|
showFooter,
|
|
115
131
|
showOverlay,
|
|
132
|
+
handleHomeAssistantFormChange,
|
|
133
|
+
handleHomeAssistantBack,
|
|
134
|
+
homeAssistantCurrentStep,
|
|
135
|
+
handleHomeAssistantClick,
|
|
116
136
|
};
|
|
117
137
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { ActivateAccount, ActiveSubscription, AddCardBanner, AddFolder, AddHomeContent, AddHomeItem, AddHomeItemHeader, AddMedia, AddPropertyRecords, Address, AddPopup, AddTile, AlertBanner, AphwTile, AppBar, AssignableReceipts, BackHeader, BarDivider, CancelAccount, CatalogPopup, CloudsAnimation, ContactList, ContactsContent, ContainerHeader, CreateDocumentHeader, CreateHouseholdItemHeader, CreditCardContainer, CreditCardError, CustomerTile, DeleteBanner, DisplayFiles, DisplayFilesDetail, DisplayOptions, DisplayReceipts, DocumentMenu, DocumentNameHeader, DocumentPreview, DynamicForm, EditAccountType, EditHomeBody, EditHomeFooter, EditHomeHeader, EditHomePanel, EmailPermissions, EmailValidation, Feedback, FileDetail, FilesUploader, FlowStep, FolderDetail, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, FolderSharing, FolderTypeSelection, FooterButtons, FooterDrawer, GenericBackHeader, GroupCard, GroupsContainer, GroupsHeader, Header, HelpContent, HomeAssistant, HomeAssistantPanel, HomeBoardGrid, HomeBoardTour, HomeCard, HomeCardWithRecipent, HomeHeader, HomeSharedWith, InboxTile, ItemNameHeader, ItemsReviewBanner, ItemSubTypeSelect, Launchpad, LaunchpadAutofilerBanner, LaunchpadReceiptAutofiler, LaunchpadTour, LeftPanel, MediaDetailsStep, MonthlyCharge, MortgageInfo, MoveModal, MyHomes, MyProfileContent, MyProfileFooter, MyProfilePanel, NewCreditCard, NewCreditCardHeader, NewPassword, NotBeChargedBanner, Overlay, PanelHeader, PartnerActiveSubscription, PartnerCatalogPanel, PartnerContent, PartnerCustomerCode, PartnerDetails, PartnerImages, PartnerPanel, PasswordInput, 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, RoomHeader, RoomsBoardTour, RoomsMenu, RoomsMenuMobile, RoomStep, RoomVideo, SalesTax, SatisfactionTile, SectionHeader, SendCommunication, SharedAccounts, SharedHomeContent, SharedHomeHeader, ShareHome, ShareHomeConnections, ShareHomeForm, ShortPartnerTile, SignIn, SignUp, StepHeader, StorageUsed, Subscription, SubscriptionCard, SubscriptionTable, Summary, TabsHeader, TextInput, ToBeDeletedBody, ToBeDeletedContent, ToBeDeletedFooter, ToBeDeletedHeader, TourButton, Trash, TrendingValue, TrialBanner, TutorialsButton, TwoFactor, TwoFactorSetting, UpdateList, UserDetails, ValueMonitor, VideoPlayer, VideoPlayerModal, WellDone, YtdTile, } from './components';
|
|
2
2
|
export { useCustomToast } from './hooks';
|
|
3
|
-
export { theme } from './theme';
|
|
4
3
|
export { billingProxy, dynamicFormProxy, homeCardProxy, partnerContentProxy, partnerDetailsProxy, paymentMethodProxy, recordsInputsProxy, recordsInputsToDBProxy, userDetailsProxy, confirmAddressProxy } from './proxies';
|
|
4
|
+
import theme from './theme';
|
|
5
|
+
export { theme };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { ActivateAccount, ActiveSubscription, AddCardBanner, AddFolder, AddHomeContent, AddHomeItem, AddHomeItemHeader, AddMedia, AddPropertyRecords, Address, AddPopup, AddTile, AlertBanner, AphwTile, AppBar, AssignableReceipts, BackHeader, BarDivider, CancelAccount, CatalogPopup, CloudsAnimation, ContactList, ContactsContent, ContainerHeader, CreateDocumentHeader, CreateHouseholdItemHeader, CreditCardContainer, CreditCardError, CustomerTile, DeleteBanner, DisplayFiles, DisplayFilesDetail, DisplayOptions, DisplayReceipts, DocumentMenu, DocumentNameHeader, DocumentPreview, DynamicForm, EditAccountType, EditHomeBody, EditHomeFooter, EditHomeHeader, EditHomePanel, EmailPermissions, EmailValidation, Feedback, FileDetail, FilesUploader, FlowStep, FolderDetail, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, FolderSharing, FolderTypeSelection, FooterButtons, FooterDrawer, GenericBackHeader, GroupCard, GroupsContainer, GroupsHeader, Header, HelpContent, HomeAssistant, HomeAssistantPanel, HomeBoardGrid, HomeBoardTour, HomeCard, HomeCardWithRecipent, HomeHeader, HomeSharedWith, InboxTile, ItemNameHeader, ItemsReviewBanner, ItemSubTypeSelect, Launchpad, LaunchpadAutofilerBanner, LaunchpadReceiptAutofiler, LaunchpadTour, LeftPanel, MediaDetailsStep, MonthlyCharge, MortgageInfo, MoveModal, MyHomes, MyProfileContent, MyProfileFooter, MyProfilePanel, NewCreditCard, NewCreditCardHeader, NewPassword, NotBeChargedBanner, Overlay, PanelHeader, PartnerActiveSubscription, PartnerCatalogPanel, PartnerContent, PartnerCustomerCode, PartnerDetails, PartnerImages, PartnerPanel, PasswordInput, 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, RoomHeader, RoomsBoardTour, RoomsMenu, RoomsMenuMobile, RoomStep, RoomVideo, SalesTax, SatisfactionTile, SectionHeader, SendCommunication, SharedAccounts, SharedHomeContent, SharedHomeHeader, ShareHome, ShareHomeConnections, ShareHomeForm, ShortPartnerTile, SignIn, SignUp, StepHeader, StorageUsed, Subscription, SubscriptionCard, SubscriptionTable, Summary, TabsHeader, TextInput, ToBeDeletedBody, ToBeDeletedContent, ToBeDeletedFooter, ToBeDeletedHeader, TourButton, Trash, TrendingValue, TrialBanner, TutorialsButton, TwoFactor, TwoFactorSetting, UpdateList, UserDetails, ValueMonitor, VideoPlayer, VideoPlayerModal, WellDone, YtdTile, } from './components';
|
|
2
2
|
export { useCustomToast } from './hooks';
|
|
3
|
-
export { theme } from './theme';
|
|
4
3
|
export { billingProxy, dynamicFormProxy, homeCardProxy, partnerContentProxy, partnerDetailsProxy, paymentMethodProxy, recordsInputsProxy, recordsInputsToDBProxy, userDetailsProxy, confirmAddressProxy } from './proxies';
|
|
4
|
+
import theme from './theme';
|
|
5
|
+
export { theme };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FolderFileI } from '../..';
|
|
2
2
|
type KindTypes = 'checkbox' | 'currency' | 'date' | 'email' | 'file' | 'grid' | 'group' | 'number' | 'radio' | 'rating' | 'select' | 'string' | 'switch' | 'telephone' | 'text' | 'textarea' | 'default';
|
|
3
|
-
export type IconTypes = 'barcode' | 'battery' | 'billing' | 'book' | 'calc' | 'calendar' | 'check' | 'co2' | 'date' | 'default' | 'detector' | 'electricity' | 'goldbars' | 'heart' | 'image' | 'notes' | 'palette' | 'people' | 'price' | 'rating' | 'receipt' | 'registry' | 'sprinkler' | 'tools' | 'wind' | '68' | 'calendar2' | 'water' | 'calendar-drop' | 'umbrella' | 'heater' | 'roof' | 'foundation' | 'solar-panel' | 'pool' | 'drop' | 'mobile-drop' | 'light' | 'plate' | 'house';
|
|
3
|
+
export type IconTypes = 'barcode' | 'battery' | 'billing' | 'book' | 'calc' | 'calendar' | 'check' | 'co2' | 'date' | 'default' | 'detector' | 'electricity' | 'goldbars' | 'heart' | 'image' | 'notes' | 'palette' | 'people' | 'price' | 'rating' | 'receipt' | 'registry' | 'sprinkler' | 'tools' | 'wind' | '68' | 'calendar2' | 'water' | 'calendar-drop' | 'umbrella' | 'heater' | 'roof' | 'foundation' | 'solar-panel' | 'pool' | 'drop' | 'mobile-drop' | 'light' | 'plate' | 'house' | 'target';
|
|
4
4
|
export type ValueTypes = string | string[] | number | boolean;
|
|
5
5
|
export type OptionsTypes = string[] | number[] | null;
|
|
6
6
|
export interface ReportI {
|
|
@@ -4,3 +4,4 @@ export declare const homeAssitantStep2FormMock: ReportI[];
|
|
|
4
4
|
export declare const homeAssitantStep3FormMock: ReportI[];
|
|
5
5
|
export declare const homeAssitantStep4FormMock: ReportI[];
|
|
6
6
|
export declare const homeAssitantStep5FormMock: ReportI[];
|
|
7
|
+
export declare const homeAssitantStep6FormMock: ReportI[];
|
|
@@ -236,3 +236,50 @@ export const homeAssitantStep5FormMock = [
|
|
|
236
236
|
icon: 'plate',
|
|
237
237
|
},
|
|
238
238
|
];
|
|
239
|
+
export const homeAssitantStep6FormMock = [
|
|
240
|
+
{
|
|
241
|
+
id: faker.database.mongodbObjectId(),
|
|
242
|
+
name: 'Save money',
|
|
243
|
+
description: 'I want to save money.',
|
|
244
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
245
|
+
value: 'Highest',
|
|
246
|
+
type: 'select',
|
|
247
|
+
icon: 'target',
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
id: faker.database.mongodbObjectId(),
|
|
251
|
+
name: 'Maintain home',
|
|
252
|
+
description: 'I want to know how to maintain my home.',
|
|
253
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
254
|
+
value: 'Highest',
|
|
255
|
+
type: 'select',
|
|
256
|
+
icon: 'target',
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
id: faker.database.mongodbObjectId(),
|
|
260
|
+
name: 'Investments',
|
|
261
|
+
description: 'I want to know how to make good investmemts into my home to maximize my ROI.',
|
|
262
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
263
|
+
value: 'Highest',
|
|
264
|
+
type: 'select',
|
|
265
|
+
icon: 'target',
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
id: faker.database.mongodbObjectId(),
|
|
269
|
+
name: 'Investments',
|
|
270
|
+
description: 'I want to be able to see how much I invest into my home.',
|
|
271
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
272
|
+
value: 'Highest',
|
|
273
|
+
type: 'select',
|
|
274
|
+
icon: 'target',
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
id: faker.database.mongodbObjectId(),
|
|
278
|
+
name: 'Investments',
|
|
279
|
+
description: 'I want to be able to see how much I invest into my home.',
|
|
280
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
281
|
+
value: 'Highest',
|
|
282
|
+
type: 'select',
|
|
283
|
+
icon: 'target',
|
|
284
|
+
},
|
|
285
|
+
];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { action } from '@storybook/addon-actions';
|
|
3
3
|
import { HomeAssistantPanel, RightPanel } from '../../../components';
|
|
4
|
-
import { homeAssitantStep1FormMock, homeAssitantStep2FormMock, homeAssitantStep3FormMock, homeAssitantStep4FormMock, homeAssitantStep5FormMock, } from '../../../mocks';
|
|
4
|
+
import { homeAssitantStep1FormMock, homeAssitantStep2FormMock, homeAssitantStep3FormMock, homeAssitantStep4FormMock, homeAssitantStep5FormMock, homeAssitantStep6FormMock, } from '../../../mocks';
|
|
5
5
|
import { useState } from 'react';
|
|
6
6
|
export default {
|
|
7
7
|
title: 'Components/HomeAssistant',
|
|
@@ -22,7 +22,7 @@ export const HomeAssistantPanelComponent = (args) => {
|
|
|
22
22
|
3: homeAssitantStep3FormMock,
|
|
23
23
|
4: homeAssitantStep4FormMock,
|
|
24
24
|
5: homeAssitantStep5FormMock,
|
|
25
|
-
6:
|
|
25
|
+
6: homeAssitantStep6FormMock,
|
|
26
26
|
};
|
|
27
27
|
const handleFormChange = () => setCurrentStep((prev) => {
|
|
28
28
|
if (prev === 6)
|
package/dist/theme/index.d.ts
CHANGED
package/dist/theme/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import '@fontsource/poppins';
|
|
|
3
3
|
import { extendTheme } from '@chakra-ui/react';
|
|
4
4
|
import { Button, Checkbox, Container, Drawer, Input, Progress, Select, Switch, Text, Tooltip, Textarea, } from './components';
|
|
5
5
|
import { colors } from './colors';
|
|
6
|
-
|
|
6
|
+
const theme = extendTheme({
|
|
7
7
|
styles: {
|
|
8
8
|
global: {
|
|
9
9
|
'html, body': {
|
|
@@ -135,3 +135,4 @@ export const theme = extendTheme({
|
|
|
135
135
|
},
|
|
136
136
|
},
|
|
137
137
|
});
|
|
138
|
+
export default theme;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@homefile/components-v2",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10",
|
|
4
4
|
"author": "Homefile",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -25,36 +25,36 @@
|
|
|
25
25
|
"@chakra-ui/storybook-addon": "^5.1.0",
|
|
26
26
|
"@chromatic-com/storybook": "^1.6.1",
|
|
27
27
|
"@faker-js/faker": "^8.1.0",
|
|
28
|
-
"@storybook/addon-a11y": "^8.2.
|
|
29
|
-
"@storybook/addon-essentials": "^8.2.
|
|
30
|
-
"@storybook/addon-interactions": "^8.2.
|
|
31
|
-
"@storybook/addon-links": "^8.2.
|
|
32
|
-
"@storybook/addon-onboarding": "^8.2.
|
|
33
|
-
"@storybook/addon-viewport": "^8.2.
|
|
34
|
-
"@storybook/blocks": "^8.2.
|
|
35
|
-
"@storybook/builder-vite": "^8.2.
|
|
28
|
+
"@storybook/addon-a11y": "^8.2.4",
|
|
29
|
+
"@storybook/addon-essentials": "^8.2.4",
|
|
30
|
+
"@storybook/addon-interactions": "^8.2.4",
|
|
31
|
+
"@storybook/addon-links": "^8.2.4",
|
|
32
|
+
"@storybook/addon-onboarding": "^8.2.4",
|
|
33
|
+
"@storybook/addon-viewport": "^8.2.4",
|
|
34
|
+
"@storybook/blocks": "^8.2.4",
|
|
35
|
+
"@storybook/builder-vite": "^8.2.4",
|
|
36
36
|
"@storybook/jest": "^0.2.3",
|
|
37
|
-
"@storybook/react": "^8.2.
|
|
38
|
-
"@storybook/react-vite": "^8.2.
|
|
39
|
-
"@storybook/test": "^8.2.
|
|
40
|
-
"@types/node": "^20.14.
|
|
37
|
+
"@storybook/react": "^8.2.4",
|
|
38
|
+
"@storybook/react-vite": "^8.2.4",
|
|
39
|
+
"@storybook/test": "^8.2.4",
|
|
40
|
+
"@types/node": "^20.14.11",
|
|
41
41
|
"@types/react": "^18.3.3",
|
|
42
42
|
"@types/react-dom": "^18.3.0",
|
|
43
43
|
"@vitejs/plugin-react": "^4.0.4",
|
|
44
44
|
"axe-playwright": "^2.0.1",
|
|
45
45
|
"copyfiles": "^2.4.1",
|
|
46
46
|
"git-commit-msg-linter": "^5.0.4",
|
|
47
|
-
"husky": "^9.0
|
|
47
|
+
"husky": "^9.1.0",
|
|
48
48
|
"jest": "^29.7.0",
|
|
49
49
|
"json-loader": "^0.5.7",
|
|
50
50
|
"rimraf": "^5.0.1",
|
|
51
51
|
"semantic-release": "^24.0.0",
|
|
52
|
-
"storybook": "^8.2.
|
|
52
|
+
"storybook": "^8.2.4",
|
|
53
53
|
"storybook-react-i18next": "^3.1.1",
|
|
54
54
|
"tsconfig-replace-paths": "^0.0.14",
|
|
55
55
|
"tscpaths": "^0.0.9",
|
|
56
56
|
"typescript": "^5.5.3",
|
|
57
|
-
"vite": "^5.3.
|
|
57
|
+
"vite": "^5.3.4"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
60
|
"@chakra-ui/react": "^2.8.1",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"@hookform/resolvers": "^3.3.1",
|
|
67
67
|
"axios": "^1.7.2",
|
|
68
68
|
"date-fns": "^3.6.0",
|
|
69
|
-
"framer-motion": "^11.3.
|
|
69
|
+
"framer-motion": "^11.3.6",
|
|
70
70
|
"i18next": "^23.12.1",
|
|
71
71
|
"i18next-browser-languagedetector": "^8.0.0",
|
|
72
72
|
"i18next-http-backend": "^2.2.2",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"react-dom": "^18.2.0",
|
|
75
75
|
"react-dropzone": "^14.2.3",
|
|
76
76
|
"react-hook-form": "^7.46.2",
|
|
77
|
-
"react-i18next": "^
|
|
77
|
+
"react-i18next": "^15.0.0",
|
|
78
78
|
"react-icons": "^5.2.1",
|
|
79
79
|
"react-modern-calendar-datepicker": "^3.1.6",
|
|
80
80
|
"react-quill": "^2.0.0",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"clean": "rimraf dist/",
|
|
91
91
|
"convert": "tsc --project tsconfig.json && tscpaths -p tsconfig.json -s ./src -o ./dist",
|
|
92
92
|
"copy": "copyfiles -u 1 src/assets/**/* src/assets/**/**/* src/styles/* src/components/**/**/**/**/* dist/",
|
|
93
|
-
"prepare": "husky
|
|
93
|
+
"prepare": "husky",
|
|
94
94
|
"test-storybook": "test-storybook"
|
|
95
95
|
},
|
|
96
96
|
"plugins": [
|
|
@@ -27,7 +27,7 @@ export const DynamicFormSimple = ({ form: fields }: DynamicFormSimpleI) => {
|
|
|
27
27
|
id,
|
|
28
28
|
value,
|
|
29
29
|
icon: icon ? (fieldIcons[icon] as IconTypes) : undefined,
|
|
30
|
-
placeholder: name
|
|
30
|
+
placeholder: name ?? description,
|
|
31
31
|
}
|
|
32
32
|
switch (type) {
|
|
33
33
|
case 'number':
|
|
@@ -15,8 +15,9 @@ export const HomeAssistantButton = ({
|
|
|
15
15
|
const handleClick = () => {
|
|
16
16
|
if (!isPending) onStepClick(currentStep)
|
|
17
17
|
}
|
|
18
|
+
const buttonId = `homeAssistantButton-${currentStep}`
|
|
18
19
|
return (
|
|
19
|
-
<Box position="relative">
|
|
20
|
+
<Box position="relative" id={buttonId}>
|
|
20
21
|
{isCompleted && (
|
|
21
22
|
<Image
|
|
22
23
|
src={CheckInCircle}
|
|
@@ -2,18 +2,41 @@ import { Center, SimpleGrid, Stack } from '@chakra-ui/react'
|
|
|
2
2
|
import { HomeAssistantStepsI } from '@/interfaces'
|
|
3
3
|
import { HomeAssistantButton, HomeAssistantStepper } from '@/components'
|
|
4
4
|
import { homeAssistantSteps } from '@/helpers'
|
|
5
|
+
import { useState } from 'react'
|
|
6
|
+
import { useComponentStyles } from '@/hooks'
|
|
5
7
|
|
|
6
8
|
export const HomeAssistantSteps = ({
|
|
7
9
|
currentStep,
|
|
8
10
|
onStepClick,
|
|
11
|
+
isPanelOpen,
|
|
9
12
|
}: HomeAssistantStepsI) => {
|
|
13
|
+
const [step, setStep] = useState(currentStep)
|
|
14
|
+
const stepId = `homeAssistantButton-${step}`
|
|
15
|
+
const componentIds = isPanelOpen
|
|
16
|
+
? [
|
|
17
|
+
'homeAssistantButton-1',
|
|
18
|
+
'homeAssistantButton-2',
|
|
19
|
+
'homeAssistantButton-3',
|
|
20
|
+
'homeAssistantButton-4',
|
|
21
|
+
'homeAssistantButton-5',
|
|
22
|
+
'homeAssistantButton-6',
|
|
23
|
+
]
|
|
24
|
+
: []
|
|
25
|
+
|
|
26
|
+
const handleStepClick = (step: number) => {
|
|
27
|
+
onStepClick(step)
|
|
28
|
+
setStep(step)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
useComponentStyles(componentIds, stepId)
|
|
32
|
+
const wrapperZIndex = isPanelOpen ? undefined : '2'
|
|
10
33
|
return (
|
|
11
34
|
<Stack
|
|
12
35
|
spacing="8"
|
|
13
36
|
w="fit-content"
|
|
14
37
|
position="relative"
|
|
15
38
|
top={['-10px', '-30px']}
|
|
16
|
-
zIndex=
|
|
39
|
+
zIndex={wrapperZIndex}
|
|
17
40
|
>
|
|
18
41
|
<HomeAssistantStepper currentStep={currentStep} totalSteps={6} />
|
|
19
42
|
<SimpleGrid columns={[2, 3]} spacing="base">
|
|
@@ -21,7 +44,7 @@ export const HomeAssistantSteps = ({
|
|
|
21
44
|
<Center key={step.title} w="100%">
|
|
22
45
|
<HomeAssistantButton
|
|
23
46
|
currentStep={index + 1}
|
|
24
|
-
onStepClick={
|
|
47
|
+
onStepClick={handleStepClick}
|
|
25
48
|
status={getStatus(index + 1, currentStep)}
|
|
26
49
|
step={step}
|
|
27
50
|
/>
|
|
@@ -50,6 +50,7 @@ import {
|
|
|
50
50
|
HomeCard,
|
|
51
51
|
EditHomeFooter,
|
|
52
52
|
HomeAssistant,
|
|
53
|
+
HomeAssistantPanel,
|
|
53
54
|
} from '@/components'
|
|
54
55
|
import {
|
|
55
56
|
HomeCards,
|
|
@@ -60,7 +61,6 @@ import {
|
|
|
60
61
|
RoomsToAdd,
|
|
61
62
|
} from '@/helpers'
|
|
62
63
|
|
|
63
|
-
|
|
64
64
|
import {
|
|
65
65
|
ContactsMock,
|
|
66
66
|
DisplayFilesMock,
|
|
@@ -74,10 +74,27 @@ import {
|
|
|
74
74
|
taxesMock,
|
|
75
75
|
userMock,
|
|
76
76
|
videoMock,
|
|
77
|
+
homeAssitantStep1FormMock,
|
|
78
|
+
homeAssitantStep2FormMock,
|
|
79
|
+
homeAssitantStep3FormMock,
|
|
80
|
+
homeAssitantStep4FormMock,
|
|
81
|
+
homeAssitantStep5FormMock,
|
|
82
|
+
homeAssitantStep6FormMock,
|
|
77
83
|
} from '@/mocks'
|
|
78
84
|
import { useHomeBoard, useWindowDimensions } from '@/hooks'
|
|
79
85
|
import { Painting } from '@/assets/images'
|
|
80
86
|
|
|
87
|
+
import { ReportI } from '@/interfaces'
|
|
88
|
+
|
|
89
|
+
const forms: Record<number, ReportI[]> = {
|
|
90
|
+
1: homeAssitantStep1FormMock,
|
|
91
|
+
2: homeAssitantStep2FormMock,
|
|
92
|
+
3: homeAssitantStep3FormMock,
|
|
93
|
+
4: homeAssitantStep4FormMock,
|
|
94
|
+
5: homeAssitantStep5FormMock,
|
|
95
|
+
6: homeAssitantStep6FormMock,
|
|
96
|
+
}
|
|
97
|
+
|
|
81
98
|
export const HomeBoard = () => {
|
|
82
99
|
const {
|
|
83
100
|
currentStep,
|
|
@@ -96,8 +113,14 @@ export const HomeBoard = () => {
|
|
|
96
113
|
setShowFooter,
|
|
97
114
|
showFooter,
|
|
98
115
|
showOverlay,
|
|
116
|
+
handleHomeAssistantFormChange,
|
|
117
|
+
handleHomeAssistantBack,
|
|
118
|
+
homeAssistantCurrentStep,
|
|
119
|
+
handleHomeAssistantClick,
|
|
99
120
|
} = useHomeBoard()
|
|
100
121
|
|
|
122
|
+
const currentHomeAssistantForm = forms[homeAssistantCurrentStep]
|
|
123
|
+
|
|
101
124
|
const rightPanelComponents: { [key: string]: JSX.Element } = {
|
|
102
125
|
AddFolder: (
|
|
103
126
|
<AddFolder
|
|
@@ -212,7 +235,7 @@ export const HomeBoard = () => {
|
|
|
212
235
|
),
|
|
213
236
|
PartnerCatalog: (
|
|
214
237
|
<PartnerCatalogPanel
|
|
215
|
-
onClose={
|
|
238
|
+
onClose={onRightClose}
|
|
216
239
|
onPartnerAdd={() => null}
|
|
217
240
|
partners={partnerCatalogMock}
|
|
218
241
|
/>
|
|
@@ -231,6 +254,16 @@ export const HomeBoard = () => {
|
|
|
231
254
|
</DrawerBody>
|
|
232
255
|
</DrawerContent>
|
|
233
256
|
),
|
|
257
|
+
HomeAssistant: (
|
|
258
|
+
<HomeAssistantPanel
|
|
259
|
+
currentStep={homeAssistantCurrentStep}
|
|
260
|
+
currentForm={currentHomeAssistantForm}
|
|
261
|
+
onNext={handleHomeAssistantFormChange}
|
|
262
|
+
onBack={handleHomeAssistantBack}
|
|
263
|
+
onApplianceClick={() => null}
|
|
264
|
+
onClose={onRightClose}
|
|
265
|
+
/>
|
|
266
|
+
),
|
|
234
267
|
}
|
|
235
268
|
|
|
236
269
|
const panelSize = currentComponent === 'PartnerCatalog' ? 'lg' : 'md'
|
|
@@ -280,7 +313,11 @@ export const HomeBoard = () => {
|
|
|
280
313
|
records={homeBoardRecorsMock}
|
|
281
314
|
/>
|
|
282
315
|
|
|
283
|
-
<HomeAssistant
|
|
316
|
+
<HomeAssistant
|
|
317
|
+
isPanelOpen={isRightOpen}
|
|
318
|
+
currentStep={6}
|
|
319
|
+
onStepClick={handleHomeAssistantClick}
|
|
320
|
+
/>
|
|
284
321
|
<PropertyTaxes
|
|
285
322
|
estimatedTaxValue={1000}
|
|
286
323
|
menuItems={menuMock}
|
|
@@ -34,12 +34,11 @@ import {
|
|
|
34
34
|
Light,
|
|
35
35
|
Plate,
|
|
36
36
|
Pool2,
|
|
37
|
-
Roof,
|
|
38
37
|
Closet,
|
|
39
|
-
Water,
|
|
40
38
|
Structure,
|
|
41
39
|
GlassWater,
|
|
42
40
|
Roof2,
|
|
41
|
+
Target,
|
|
43
42
|
} from '@/assets/images'
|
|
44
43
|
import { IconTypes } from '@/interfaces'
|
|
45
44
|
|
|
@@ -84,4 +83,5 @@ export const fieldIcons: Record<IconTypes, string> = {
|
|
|
84
83
|
umbrella: Closet,
|
|
85
84
|
water: GlassWater,
|
|
86
85
|
house: Structure,
|
|
86
|
+
target: Target,
|
|
87
87
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { EditHomeFormI, FolderI } from '@/interfaces'
|
|
2
|
-
import { useDisclosure } from '@chakra-ui/react'
|
|
3
1
|
import { useEffect, useState } from 'react'
|
|
2
|
+
import { useDisclosure } from '@chakra-ui/react'
|
|
3
|
+
import { EditHomeFormI, FolderI } from '@/interfaces'
|
|
4
4
|
|
|
5
5
|
export const useHomeBoard = () => {
|
|
6
6
|
const homeName = 'The Edmunds'
|
|
@@ -15,6 +15,20 @@ export const useHomeBoard = () => {
|
|
|
15
15
|
const [activeTour, setActiveTour] = useState(false)
|
|
16
16
|
const [showFooter, setShowFooter] = useState(false)
|
|
17
17
|
const [currentStep, setCurrentStep] = useState('homeboard')
|
|
18
|
+
const [homeAssistantCurrentStep, setHomeAssistantCurrentStep] =
|
|
19
|
+
useState<number>(6)
|
|
20
|
+
|
|
21
|
+
const handleHomeAssistantFormChange = () =>
|
|
22
|
+
setHomeAssistantCurrentStep((prev) => {
|
|
23
|
+
if (prev === 6) return 1
|
|
24
|
+
return prev + 1
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
const handleHomeAssistantBack = () =>
|
|
28
|
+
setHomeAssistantCurrentStep((prev) => {
|
|
29
|
+
if (prev === 1) return 6
|
|
30
|
+
return prev - 1
|
|
31
|
+
})
|
|
18
32
|
|
|
19
33
|
const handleNewFolder = () => {
|
|
20
34
|
setCurrentComponent('AddFolder')
|
|
@@ -31,6 +45,12 @@ export const useHomeBoard = () => {
|
|
|
31
45
|
onRightOpen()
|
|
32
46
|
}
|
|
33
47
|
|
|
48
|
+
const handleHomeAssistantClick = (step: number) => {
|
|
49
|
+
setCurrentComponent('HomeAssistant')
|
|
50
|
+
setHomeAssistantCurrentStep(step)
|
|
51
|
+
onRightOpen()
|
|
52
|
+
}
|
|
53
|
+
|
|
34
54
|
const componentsByStep: Record<string, string> = {
|
|
35
55
|
nameFolder: 'AddFolder',
|
|
36
56
|
addFiles: 'FolderDetail',
|
|
@@ -122,5 +142,9 @@ export const useHomeBoard = () => {
|
|
|
122
142
|
setShowFooter,
|
|
123
143
|
showFooter,
|
|
124
144
|
showOverlay,
|
|
145
|
+
handleHomeAssistantFormChange,
|
|
146
|
+
handleHomeAssistantBack,
|
|
147
|
+
homeAssistantCurrentStep,
|
|
148
|
+
handleHomeAssistantClick,
|
|
125
149
|
}
|
|
126
150
|
}
|
package/src/index.ts
CHANGED
|
@@ -187,8 +187,6 @@ export {
|
|
|
187
187
|
|
|
188
188
|
export { useCustomToast } from './hooks'
|
|
189
189
|
|
|
190
|
-
export { theme} from './theme'
|
|
191
|
-
|
|
192
190
|
export {
|
|
193
191
|
billingProxy,
|
|
194
192
|
dynamicFormProxy,
|
|
@@ -201,3 +199,6 @@ export {
|
|
|
201
199
|
userDetailsProxy,
|
|
202
200
|
confirmAddressProxy
|
|
203
201
|
} from './proxies'
|
|
202
|
+
|
|
203
|
+
import theme from './theme'
|
|
204
|
+
export {theme}
|
|
@@ -1,17 +1,5 @@
|
|
|
1
1
|
import { faker } from '@faker-js/faker'
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
CookTop,
|
|
5
|
-
Dishwasher,
|
|
6
|
-
Dryer,
|
|
7
|
-
Freezer,
|
|
8
|
-
Fridge,
|
|
9
|
-
Hood,
|
|
10
|
-
Microwave,
|
|
11
|
-
Oven,
|
|
12
|
-
Range,
|
|
13
|
-
Washer,
|
|
14
|
-
} from '@/assets/images'
|
|
2
|
+
import { ReportI } from '@/interfaces'
|
|
15
3
|
|
|
16
4
|
export const homeAssitantStep1FormMock: ReportI[] = [
|
|
17
5
|
{
|
|
@@ -255,3 +243,52 @@ export const homeAssitantStep5FormMock: ReportI[] = [
|
|
|
255
243
|
icon: 'plate',
|
|
256
244
|
},
|
|
257
245
|
]
|
|
246
|
+
|
|
247
|
+
export const homeAssitantStep6FormMock: ReportI[] = [
|
|
248
|
+
{
|
|
249
|
+
id: faker.database.mongodbObjectId(),
|
|
250
|
+
name: 'Save money',
|
|
251
|
+
description: 'I want to save money.',
|
|
252
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
253
|
+
value: 'Highest',
|
|
254
|
+
type: 'select',
|
|
255
|
+
icon: 'target',
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
id: faker.database.mongodbObjectId(),
|
|
259
|
+
name: 'Maintain home',
|
|
260
|
+
description: 'I want to know how to maintain my home.',
|
|
261
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
262
|
+
value: 'Highest',
|
|
263
|
+
type: 'select',
|
|
264
|
+
icon: 'target',
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
id: faker.database.mongodbObjectId(),
|
|
268
|
+
name: 'Investments',
|
|
269
|
+
description:
|
|
270
|
+
'I want to know how to make good investmemts into my home to maximize my ROI.',
|
|
271
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
272
|
+
value: 'Highest',
|
|
273
|
+
type: 'select',
|
|
274
|
+
icon: 'target',
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
id: faker.database.mongodbObjectId(),
|
|
278
|
+
name: 'Investments',
|
|
279
|
+
description: 'I want to be able to see how much I invest into my home.',
|
|
280
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
281
|
+
value: 'Highest',
|
|
282
|
+
type: 'select',
|
|
283
|
+
icon: 'target',
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
id: faker.database.mongodbObjectId(),
|
|
287
|
+
name: 'Investments',
|
|
288
|
+
description: 'I want to be able to see how much I invest into my home.',
|
|
289
|
+
options: ['Highest', 'High', 'Neutral', 'Low', 'None'],
|
|
290
|
+
value: 'Highest',
|
|
291
|
+
type: 'select',
|
|
292
|
+
icon: 'target',
|
|
293
|
+
},
|
|
294
|
+
]
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
homeAssitantStep3FormMock,
|
|
9
9
|
homeAssitantStep4FormMock,
|
|
10
10
|
homeAssitantStep5FormMock,
|
|
11
|
+
homeAssitantStep6FormMock,
|
|
11
12
|
} from '@/mocks'
|
|
12
13
|
import { useState } from 'react'
|
|
13
14
|
|
|
@@ -35,7 +36,7 @@ export const HomeAssistantPanelComponent = (args: HomeAssistantPanelI) => {
|
|
|
35
36
|
3: homeAssitantStep3FormMock,
|
|
36
37
|
4: homeAssitantStep4FormMock,
|
|
37
38
|
5: homeAssitantStep5FormMock,
|
|
38
|
-
6:
|
|
39
|
+
6: homeAssitantStep6FormMock,
|
|
39
40
|
}
|
|
40
41
|
const handleFormChange = () =>
|
|
41
42
|
setCurrentStep((prev) => {
|
package/src/theme/index.ts
CHANGED
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
} from './components'
|
|
17
17
|
import { colors } from './colors'
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
const theme = extendTheme({
|
|
20
20
|
styles: {
|
|
21
21
|
global: {
|
|
22
22
|
'html, body': {
|
|
@@ -150,3 +150,4 @@ export const theme = extendTheme({
|
|
|
150
150
|
})
|
|
151
151
|
|
|
152
152
|
|
|
153
|
+
export default theme
|