@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.
Files changed (30) hide show
  1. package/dist/components/forms/dynamicForm/DynamicFormSimple.js +1 -1
  2. package/dist/components/homeAssistant/HomeAssistantButton.js +2 -1
  3. package/dist/components/homeAssistant/HomeAssistantSteps.d.ts +1 -1
  4. package/dist/components/homeAssistant/HomeAssistantSteps.js +22 -2
  5. package/dist/components/homeBoard/HomeBoard.js +15 -5
  6. package/dist/helpers/forms/dynamicForm.helper.js +2 -1
  7. package/dist/hooks/homeBoard/useHomeBoard.d.ts +4 -0
  8. package/dist/hooks/homeBoard/useHomeBoard.js +21 -1
  9. package/dist/index.d.ts +2 -1
  10. package/dist/index.js +2 -1
  11. package/dist/interfaces/forms/dynamicForm/DynamicForm.interface.d.ts +1 -1
  12. package/dist/interfaces/homeAssistant/HomeAssistantSteps.interface.d.ts +1 -0
  13. package/dist/mocks/homeAssistant/homeAssistantForms.d.ts +1 -0
  14. package/dist/mocks/homeAssistant/homeAssistantForms.js +47 -0
  15. package/dist/stories/homeAssistant/panel/HomeAssistantPanel.stories.js +2 -2
  16. package/dist/theme/index.d.ts +2 -1
  17. package/dist/theme/index.js +2 -1
  18. package/package.json +19 -19
  19. package/src/components/forms/dynamicForm/DynamicFormSimple.tsx +1 -1
  20. package/src/components/homeAssistant/HomeAssistantButton.tsx +2 -1
  21. package/src/components/homeAssistant/HomeAssistantSteps.tsx +25 -2
  22. package/src/components/homeBoard/HomeBoard.tsx +40 -3
  23. package/src/helpers/forms/dynamicForm.helper.ts +2 -2
  24. package/src/hooks/homeBoard/useHomeBoard.ts +26 -2
  25. package/src/index.ts +3 -2
  26. package/src/interfaces/forms/dynamicForm/DynamicForm.interface.ts +1 -0
  27. package/src/interfaces/homeAssistant/HomeAssistantSteps.interface.ts +1 -0
  28. package/src/mocks/homeAssistant/homeAssistantForms.ts +50 -13
  29. package/src/stories/homeAssistant/panel/HomeAssistantPanel.stories.tsx +2 -1
  30. 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 || description,
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
- return (_jsxs(Box, { position: "relative", 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 }) })] }))] }));
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
- export const HomeAssistantSteps = ({ currentStep, onStepClick, }) => {
6
- return (_jsxs(Stack, { spacing: "8", w: "fit-content", position: "relative", top: ['-10px', '-30px'], zIndex: "2", 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: onStepClick, status: getStatus(index + 1, currentStep), step: step }) }, step.title))) })] }));
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: () => null, onPartnerAdd: () => null, partners: partnerCatalogMock })),
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: () => null }), _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 })] }));
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 {
@@ -2,5 +2,6 @@ export interface HomeAssistantStepsI {
2
2
  currentStep: number;
3
3
  onStepClick: (step: number) => void;
4
4
  showTutorial?: boolean;
5
+ isPanelOpen?: boolean;
5
6
  tutorialUrl?: string;
6
7
  }
@@ -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: homeAssitantStep5FormMock,
25
+ 6: homeAssitantStep6FormMock,
26
26
  };
27
27
  const handleFormChange = () => setCurrentStep((prev) => {
28
28
  if (prev === 6)
@@ -1,3 +1,4 @@
1
1
  import '@fontsource/assistant';
2
2
  import '@fontsource/poppins';
3
- export declare const theme: Record<string, any>;
3
+ declare const theme: Record<string, any>;
4
+ export default theme;
@@ -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
- export const theme = extendTheme({
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.8",
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.3",
29
- "@storybook/addon-essentials": "^8.2.3",
30
- "@storybook/addon-interactions": "^8.2.3",
31
- "@storybook/addon-links": "^8.2.3",
32
- "@storybook/addon-onboarding": "^8.2.3",
33
- "@storybook/addon-viewport": "^8.2.3",
34
- "@storybook/blocks": "^8.2.3",
35
- "@storybook/builder-vite": "^8.2.3",
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.3",
38
- "@storybook/react-vite": "^8.2.3",
39
- "@storybook/test": "^8.2.3",
40
- "@types/node": "^20.14.10",
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.11",
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.3",
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.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.2",
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": "^14.1.3",
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 install",
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 || description,
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="2"
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={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={() => null}
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 currentStep={6} onStepClick={() => null} />
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}
@@ -60,6 +60,7 @@ export type IconTypes =
60
60
  | 'light'
61
61
  | 'plate'
62
62
  | 'house'
63
+ | 'target'
63
64
 
64
65
  export type ValueTypes = string | string[] | number | boolean
65
66
  export type OptionsTypes = string[] | number[] | null
@@ -2,5 +2,6 @@ export interface HomeAssistantStepsI {
2
2
  currentStep: number
3
3
  onStepClick: (step: number) => void
4
4
  showTutorial?: boolean
5
+ isPanelOpen?: boolean
5
6
  tutorialUrl?: string
6
7
  }
@@ -1,17 +1,5 @@
1
1
  import { faker } from '@faker-js/faker'
2
- import { ApplianceStepI, ReportI } from '@/interfaces'
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: homeAssitantStep5FormMock,
39
+ 6: homeAssitantStep6FormMock,
39
40
  }
40
41
  const handleFormChange = () =>
41
42
  setCurrentStep((prev) => {
@@ -16,7 +16,7 @@ import {
16
16
  } from './components'
17
17
  import { colors } from './colors'
18
18
 
19
- export const theme = extendTheme({
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