@homefile/components-v2 1.0.9 → 1.0.11

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 (26) 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 +16 -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/hooks/useComponentStyles.js +1 -1
  10. package/dist/interfaces/forms/dynamicForm/DynamicForm.interface.d.ts +1 -1
  11. package/dist/interfaces/homeAssistant/HomeAssistantSteps.interface.d.ts +1 -0
  12. package/dist/mocks/homeAssistant/homeAssistantForms.d.ts +1 -0
  13. package/dist/mocks/homeAssistant/homeAssistantForms.js +47 -0
  14. package/dist/stories/homeAssistant/panel/HomeAssistantPanel.stories.js +2 -2
  15. package/package.json +1 -1
  16. package/src/components/forms/dynamicForm/DynamicFormSimple.tsx +1 -1
  17. package/src/components/homeAssistant/HomeAssistantButton.tsx +2 -1
  18. package/src/components/homeAssistant/HomeAssistantSteps.tsx +17 -1
  19. package/src/components/homeBoard/HomeBoard.tsx +40 -3
  20. package/src/helpers/forms/dynamicForm.helper.ts +2 -2
  21. package/src/hooks/homeBoard/useHomeBoard.ts +26 -2
  22. package/src/hooks/useComponentStyles.ts +1 -1
  23. package/src/interfaces/forms/dynamicForm/DynamicForm.interface.ts +1 -0
  24. package/src/interfaces/homeAssistant/HomeAssistantSteps.interface.ts +1 -0
  25. package/src/mocks/homeAssistant/homeAssistantForms.ts +50 -13
  26. package/src/stories/homeAssistant/panel/HomeAssistantPanel.stories.tsx +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, currentPanel, }: HomeAssistantStepsI) => import("react/jsx-runtime").JSX.Element;
@@ -2,8 +2,22 @@ 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 { useComponentStyles } from '../../hooks';
6
+ export const HomeAssistantSteps = ({ currentStep, onStepClick, currentPanel, }) => {
7
+ const wrapperZIndex = currentPanel ? undefined : '2';
8
+ const stepId = `homeAssistantButton-${currentPanel}`;
9
+ const componentIds = currentPanel
10
+ ? [
11
+ 'homeAssistantButton-1',
12
+ 'homeAssistantButton-2',
13
+ 'homeAssistantButton-3',
14
+ 'homeAssistantButton-4',
15
+ 'homeAssistantButton-5',
16
+ 'homeAssistantButton-6',
17
+ ]
18
+ : [];
19
+ useComponentStyles(componentIds, stepId);
20
+ 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: onStepClick, status: getStatus(index + 1, currentStep), step: step }) }, step.title))) })] }));
7
21
  };
8
22
  const getStatus = (index, currentStep) => {
9
23
  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, { currentPanel: homeAssistantCurrentStep, 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
  };
@@ -9,6 +9,6 @@ export const useComponentStyles = (ids, selectedId) => {
9
9
  });
10
10
  const currentComponent = document.getElementById(selectedId);
11
11
  if (currentComponent) {
12
- currentComponent.style.zIndex = '99999';
12
+ currentComponent.style.zIndex = '1400';
13
13
  }
14
14
  };
@@ -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
+ currentPanel?: number;
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)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homefile/components-v2",
3
- "version": "1.0.9",
3
+ "version": "1.0.11",
4
4
  "author": "Homefile",
5
5
  "license": "UNLICENSED",
6
6
  "typings": "dist/index.d.ts",
@@ -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,34 @@ 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 { useComponentStyles } from '@/hooks'
5
6
 
6
7
  export const HomeAssistantSteps = ({
7
8
  currentStep,
8
9
  onStepClick,
10
+ currentPanel,
9
11
  }: HomeAssistantStepsI) => {
12
+ const wrapperZIndex = currentPanel ? undefined : '2'
13
+ const stepId = `homeAssistantButton-${currentPanel}`
14
+ const componentIds = currentPanel
15
+ ? [
16
+ 'homeAssistantButton-1',
17
+ 'homeAssistantButton-2',
18
+ 'homeAssistantButton-3',
19
+ 'homeAssistantButton-4',
20
+ 'homeAssistantButton-5',
21
+ 'homeAssistantButton-6',
22
+ ]
23
+ : []
24
+
25
+ useComponentStyles(componentIds, stepId)
10
26
  return (
11
27
  <Stack
12
28
  spacing="8"
13
29
  w="fit-content"
14
30
  position="relative"
15
31
  top={['-10px', '-30px']}
16
- zIndex="2"
32
+ zIndex={wrapperZIndex}
17
33
  >
18
34
  <HomeAssistantStepper currentStep={currentStep} totalSteps={6} />
19
35
  <SimpleGrid columns={[2, 3]} spacing="base">
@@ -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
+ currentPanel={homeAssistantCurrentStep}
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
  }
@@ -12,6 +12,6 @@ export const useComponentStyles = (ids: string[], selectedId: string) => {
12
12
  const currentComponent = document.getElementById(selectedId)
13
13
 
14
14
  if (currentComponent) {
15
- currentComponent.style.zIndex = '99999'
15
+ currentComponent.style.zIndex = '1400'
16
16
  }
17
17
  }
@@ -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
+ currentPanel?: number
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) => {