@homefile/components-v2 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/images/ia.svg +15 -16
- package/dist/assets/images/index.d.ts +2 -1
- package/dist/assets/images/index.js +2 -1
- package/dist/assets/images/index.ts +2 -0
- package/dist/assets/images/pressure-washer.svg +16 -0
- package/dist/assets/locales/en/index.json +8 -7
- package/dist/components/animations/HomieAnimation.d.ts +3 -1
- package/dist/components/animations/HomieAnimation.js +2 -2
- package/dist/components/contacts/ContactsContent.js +1 -1
- package/dist/components/forms/dynamicForm/DynamicForm.js +3 -1
- package/dist/components/forms/dynamicForm/fields/CheckboxGroupField.d.ts +2 -0
- package/dist/components/forms/dynamicForm/fields/CheckboxGroupField.js +18 -0
- package/dist/components/forms/dynamicForm/fields/SingleFields.js +3 -3
- package/dist/components/forms/dynamicForm/fields/index.d.ts +1 -0
- package/dist/components/forms/dynamicForm/fields/index.js +1 -0
- package/dist/components/forms/dynamicForm/fields/uiFields/TileBodyAction.d.ts +1 -1
- package/dist/components/forms/dynamicForm/fields/uiFields/TileBodyAction.js +2 -2
- package/dist/components/forms/dynamicForm/fields/uiFields/TileBodyAction.tsx +2 -2
- package/dist/components/forms/dynamicForm/fields/uiFields/TileCta.d.ts +1 -1
- package/dist/components/forms/dynamicForm/fields/uiFields/TileCta.js +15 -2
- package/dist/components/forms/dynamicForm/fields/uiFields/TileCta.tsx +3 -2
- package/dist/components/homeAssistant/HomeAssistantTutorial.js +1 -1
- package/dist/components/homeAssistant/HomeAssistantWrapper.js +1 -1
- package/dist/components/homeAssistant/HomeMonitorButton.d.ts +1 -1
- package/dist/components/homeAssistant/HomeMonitorButton.js +3 -8
- package/dist/components/homeAssistant/HomeMonitorSteps.js +18 -4
- package/dist/components/homeAssistant/monitorAlerts/HomefileMonitoring.js +1 -1
- package/dist/components/homeAssistant/panel/ApplianceSteps.js +4 -1
- package/dist/components/homeAssistant/panel/HomeAssistantPanel.js +14 -1
- package/dist/components/homeBoard/HomeBoard.js +7 -2
- package/dist/components/inputs/SelectButton.js +1 -1
- package/dist/components/launchpad/IconMenu.d.ts +1 -1
- package/dist/components/launchpad/IconMenu.js +2 -2
- package/dist/helpers/forms/dynamicForm.helper.js +2 -1
- package/dist/interfaces/forms/dynamicForm/DynamicForm.interface.d.ts +2 -2
- package/dist/interfaces/forms/dynamicForm/fields/UIFields.interface.d.ts +14 -3
- package/dist/interfaces/homeAssistant/ApplianceSteps.interface.d.ts +1 -2
- package/dist/interfaces/homeAssistant/HomeMonitorSteps.interface.d.ts +0 -1
- package/dist/interfaces/launchpad/IconMenu.interface.d.ts +2 -0
- package/dist/mocks/forms/dynamicForm.mock.js +66 -0
- package/dist/mocks/homeAssistant/homeAssistantForms.js +6 -0
- package/dist/stories/animations/HomieAnimation.stories.d.ts +1 -0
- package/dist/stories/animations/HomieAnimation.stories.js +1 -0
- package/dist/stories/assets/Illustrations.stories.js +2 -2
- package/dist/stories/forms/dynamicForm/DynamicForm.stories.js +1 -3
- package/package.json +1 -1
- package/src/assets/images/ia.svg +15 -16
- package/src/assets/images/index.ts +2 -0
- package/src/assets/images/pressure-washer.svg +16 -0
- package/src/assets/locales/en/index.json +8 -7
- package/src/components/animations/HomieAnimation.tsx +2 -2
- package/src/components/contacts/ContactsContent.tsx +1 -1
- package/src/components/forms/dynamicForm/DynamicForm.tsx +11 -0
- package/src/components/forms/dynamicForm/fields/CheckboxGroupField.tsx +65 -0
- package/src/components/forms/dynamicForm/fields/SingleFields.tsx +12 -2
- package/src/components/forms/dynamicForm/fields/index.ts +1 -0
- package/src/components/forms/dynamicForm/fields/uiFields/TileBodyAction.tsx +2 -2
- package/src/components/forms/dynamicForm/fields/uiFields/TileCta.tsx +3 -2
- package/src/components/homeAssistant/HomeAssistantTutorial.tsx +3 -0
- package/src/components/homeAssistant/HomeAssistantWrapper.tsx +0 -5
- package/src/components/homeAssistant/HomeMonitorButton.tsx +3 -17
- package/src/components/homeAssistant/HomeMonitorSteps.tsx +36 -10
- package/src/components/homeAssistant/monitorAlerts/HomefileMonitoring.tsx +1 -1
- package/src/components/homeAssistant/panel/ApplianceSteps.tsx +7 -1
- package/src/components/homeAssistant/panel/HomeAssistantPanel.tsx +21 -3
- package/src/components/homeBoard/HomeBoard.tsx +23 -0
- package/src/components/inputs/SelectButton.tsx +3 -1
- package/src/components/launchpad/IconMenu.tsx +4 -1
- package/src/helpers/forms/dynamicForm.helper.ts +2 -0
- package/src/interfaces/forms/dynamicForm/DynamicForm.interface.ts +3 -0
- package/src/interfaces/forms/dynamicForm/fields/UIFields.interface.ts +18 -3
- package/src/interfaces/homeAssistant/ApplianceSteps.interface.ts +1 -1
- package/src/interfaces/homeAssistant/HomeMonitorSteps.interface.ts +0 -1
- package/src/interfaces/launchpad/IconMenu.interface.ts +2 -0
- package/src/mocks/forms/dynamicForm.mock.ts +67 -0
- package/src/mocks/homeAssistant/homeAssistantForms.ts +6 -0
- package/src/stories/animations/HomieAnimation.stories.tsx +1 -0
- package/src/stories/assets/Illustrations.stories.tsx +2 -0
- package/src/stories/forms/dynamicForm/DynamicForm.stories.tsx +6 -3
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="
|
|
2
|
-
<g id="
|
|
3
|
-
<
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<line id="Line_3402" data-name="Line 3402" x2="2.485" transform="translate(14.052 14.039)" fill="none" stroke="#fff" stroke-width="2"/>
|
|
15
|
-
<path id="Path_15024" data-name="Path 15024" d="M-112.806,1761.029a2.621,2.621,0,0,0,2.622,2.231,2.666,2.666,0,0,0,2.618-2.231" transform="translate(122.294 -1742.01)" fill="none" stroke="#fff" stroke-linecap="round" stroke-width="1"/>
|
|
16
|
-
</g>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="30.202" height="30.2" viewBox="0 0 30.202 30.2">
|
|
2
|
+
<g id="Group_21564" data-name="Group 21564" transform="translate(10417.861 8318.462)">
|
|
3
|
+
<circle id="Ellipse_1093" data-name="Ellipse 1093" cx="2.157" cy="2.157" r="2.157" transform="translate(-10404.917 -8318.462)" fill="#bcd1d8"/>
|
|
4
|
+
<line id="Line_3403" data-name="Line 3403" y2="2.725" transform="translate(-10402.761 -8314.146)" fill="none" stroke="#bcd1d8" stroke-width="1"/>
|
|
5
|
+
<rect id="Rectangle_24537" data-name="Rectangle 24537" width="10.786" height="4.314" rx="2.157" transform="translate(-10408.155 -8311.99)" fill="#00a1aa"/>
|
|
6
|
+
<circle id="Ellipse_1090" data-name="Ellipse 1090" cx="3.236" cy="3.236" r="3.236" transform="translate(-10417.861 -8304.439)" fill="#00a1aa"/>
|
|
7
|
+
<ellipse id="Ellipse_1092" data-name="Ellipse 1092" cx="2.696" cy="3.236" rx="2.696" ry="3.236" transform="translate(-10393.053 -8304.439)" fill="#00a1aa"/>
|
|
8
|
+
<circle id="Ellipse_1091" data-name="Ellipse 1091" cx="3.236" cy="3.236" r="3.236" transform="translate(-10397.368 -8304.439)" fill="#00a1aa"/>
|
|
9
|
+
<rect id="Rectangle_24536" data-name="Rectangle 24536" width="23.729" height="21.572" rx="3" transform="translate(-10414.626 -8309.834)" fill="#02c0b7"/>
|
|
10
|
+
<rect id="Rectangle_24476" data-name="Rectangle 24476" width="15.1" height="6.472" rx="3" transform="translate(-10410.311 -8304.439)" fill="#324459"/>
|
|
11
|
+
<line id="Line_3401" data-name="Line 3401" x2="2.725" transform="translate(-10407.915 -8300.908)" fill="none" stroke="#fff" stroke-width="2"/>
|
|
12
|
+
<line id="Line_3402" data-name="Line 3402" x2="2.725" transform="translate(-10399.874 -8300.908)" fill="none" stroke="#fff" stroke-width="2"/>
|
|
13
|
+
<path id="Path_15024" data-name="Path 15024" d="M-112.806,1761.029a2.874,2.874,0,0,0,2.876,2.446,2.924,2.924,0,0,0,2.871-2.446" transform="translate(-10292.654 -10055.396)" fill="none" stroke="#fff" stroke-linecap="round" stroke-width="1"/>
|
|
17
14
|
</g>
|
|
18
15
|
</svg>
|
|
16
|
+
|
|
17
|
+
|
|
@@ -102,6 +102,7 @@ import Play from './play.svg';
|
|
|
102
102
|
import Plus from './plus.svg';
|
|
103
103
|
import Pool from './pool.svg';
|
|
104
104
|
import Pool2 from './pool2.svg';
|
|
105
|
+
import PressureWasher from './pressure-washer.svg';
|
|
105
106
|
import Price from './price.svg';
|
|
106
107
|
import Profile from './profile.svg';
|
|
107
108
|
import ProgressReport from './progress-report.svg';
|
|
@@ -153,7 +154,7 @@ import WizardDetailed from './wizard-detailed.svg';
|
|
|
153
154
|
import WizardQuick from './wizard-quick.svg';
|
|
154
155
|
import YellowFolder from './yellow-folder.svg';
|
|
155
156
|
import YellowFolderUnshared from './yellow-folder-unshared.svg';
|
|
156
|
-
export { AlertDelete, AlertDeletePurple, Arrow, Batery, Bathroom, Battery, Battery2, Bedroom, BgBlue, BgLogo, Billing, BillingAddress, BlueFolder, BlueFolderShared, Box, Building, Calc, Calendar2, Catalog, Check, CheckInCircle, CheckPen, Chemistry, CircleFace, Cleaning, Closet, Clouds, Co2, Company, ComputerReport, Confirmation, Construction, Contacts, Contacts2, Contributor, CreditCard, Detector, Diamond, DiningRoom, DocIcon, Document, Drop, DropCalendar, Electricity, Entryway, Exclamation, Face, Feedback, FileUploading, Finance, Fire, Flag, FormSent, Foundation, Garage, GearPencil, GearTime, GenericField, GlassWater, GreenFolder, Group, Groups, GuestBedroom, Hallway, HandPencil, Heater, Help, HomeAddress, Homeowner, House, HouseHands, IA, ImageDefault, ImgIcon, Inbox, Insect, Kitchen, Laundry, Light, LivingRoom, Loading, Location, LogoCompany, LogoSmall, MagnifyingGlassReport, Manager, MasterBedroom, Member, Message, MobileDrop, Money, Mudroom, NeedHelp, Office, Painting, PartnerGeneric, Patio, PdfIcon, PersonMail, Plate, Play, Plus, Pool, Pool2, Price, Profile, ProgressReport, Proposal, RealEstate, Receipt, ReceiptBg, ReceiptHouse, Receipts, Recipient, Records, Register, RelationshipHome, ResendPassword, Rocket, Roof2, Security, Send, ShareHome, ShareWith, SixtyEight, SMS, Social, SolarPanel, Sprinkler, Structure, Subscription, Target, Temperature, Theatre, Thumbnail, ThumbnailSmall, ThumbUp, Trash, Trees, TreesCrop, TreesCrop2, VideoIcon, VideoPlay, VioletFolder, Warning, Warranty, WellDone, WholeHome, Wind, WindWhite, Wizard, WizardDetailed, WizardQuick, YellowFolder, YellowFolderUnshared, };
|
|
157
|
+
export { AlertDelete, AlertDeletePurple, Arrow, Batery, Bathroom, Battery, Battery2, Bedroom, BgBlue, BgLogo, Billing, BillingAddress, BlueFolder, BlueFolderShared, Box, Building, Calc, Calendar2, Catalog, Check, CheckInCircle, CheckPen, Chemistry, CircleFace, Cleaning, Closet, Clouds, Co2, Company, ComputerReport, Confirmation, Construction, Contacts, Contacts2, Contributor, CreditCard, Detector, Diamond, DiningRoom, DocIcon, Document, Drop, DropCalendar, Electricity, Entryway, Exclamation, Face, Feedback, FileUploading, Finance, Fire, Flag, FormSent, Foundation, Garage, GearPencil, GearTime, GenericField, GlassWater, GreenFolder, Group, Groups, GuestBedroom, Hallway, HandPencil, Heater, Help, HomeAddress, Homeowner, House, HouseHands, IA, ImageDefault, ImgIcon, Inbox, Insect, Kitchen, Laundry, Light, LivingRoom, Loading, Location, LogoCompany, LogoSmall, MagnifyingGlassReport, Manager, MasterBedroom, Member, Message, MobileDrop, Money, Mudroom, NeedHelp, Office, Painting, PartnerGeneric, Patio, PdfIcon, PersonMail, Plate, Play, Plus, Pool, Pool2, PressureWasher, Price, Profile, ProgressReport, Proposal, RealEstate, Receipt, ReceiptBg, ReceiptHouse, Receipts, Recipient, Records, Register, RelationshipHome, ResendPassword, Rocket, Roof2, Security, Send, ShareHome, ShareWith, SixtyEight, SMS, Social, SolarPanel, Sprinkler, Structure, Subscription, Target, Temperature, Theatre, Thumbnail, ThumbnailSmall, ThumbUp, Trash, Trees, TreesCrop, TreesCrop2, VideoIcon, VideoPlay, VioletFolder, Warning, Warranty, WellDone, WholeHome, Wind, WindWhite, Wizard, WizardDetailed, WizardQuick, YellowFolder, YellowFolderUnshared, };
|
|
157
158
|
export * from './alerts';
|
|
158
159
|
export * from './appliances';
|
|
159
160
|
export * from './clouds-animation';
|
|
@@ -102,6 +102,7 @@ import Play from './play.svg';
|
|
|
102
102
|
import Plus from './plus.svg';
|
|
103
103
|
import Pool from './pool.svg';
|
|
104
104
|
import Pool2 from './pool2.svg';
|
|
105
|
+
import PressureWasher from './pressure-washer.svg';
|
|
105
106
|
import Price from './price.svg';
|
|
106
107
|
import Profile from './profile.svg';
|
|
107
108
|
import ProgressReport from './progress-report.svg';
|
|
@@ -153,7 +154,7 @@ import WizardDetailed from './wizard-detailed.svg';
|
|
|
153
154
|
import WizardQuick from './wizard-quick.svg';
|
|
154
155
|
import YellowFolder from './yellow-folder.svg';
|
|
155
156
|
import YellowFolderUnshared from './yellow-folder-unshared.svg';
|
|
156
|
-
export { AlertDelete, AlertDeletePurple, Arrow, Batery, Bathroom, Battery, Battery2, Bedroom, BgBlue, BgLogo, Billing, BillingAddress, BlueFolder, BlueFolderShared, Box, Building, Calc, Calendar2, Catalog, Check, CheckInCircle, CheckPen, Chemistry, CircleFace, Cleaning, Closet, Clouds, Co2, Company, ComputerReport, Confirmation, Construction, Contacts, Contacts2, Contributor, CreditCard, Detector, Diamond, DiningRoom, DocIcon, Document, Drop, DropCalendar, Electricity, Entryway, Exclamation, Face, Feedback, FileUploading, Finance, Fire, Flag, FormSent, Foundation, Garage, GearPencil, GearTime, GenericField, GlassWater, GreenFolder, Group, Groups, GuestBedroom, Hallway, HandPencil, Heater, Help, HomeAddress, Homeowner, House, HouseHands, IA, ImageDefault, ImgIcon, Inbox, Insect, Kitchen, Laundry, Light, LivingRoom, Loading, Location, LogoCompany, LogoSmall, MagnifyingGlassReport, Manager, MasterBedroom, Member, Message, MobileDrop, Money, Mudroom, NeedHelp, Office, Painting, PartnerGeneric, Patio, PdfIcon, PersonMail, Plate, Play, Plus, Pool, Pool2, Price, Profile, ProgressReport, Proposal, RealEstate, Receipt, ReceiptBg, ReceiptHouse, Receipts, Recipient, Records, Register, RelationshipHome, ResendPassword, Rocket, Roof2, Security, Send, ShareHome, ShareWith, SixtyEight, SMS, Social, SolarPanel, Sprinkler, Structure, Subscription, Target, Temperature, Theatre, Thumbnail, ThumbnailSmall, ThumbUp, Trash, Trees, TreesCrop, TreesCrop2, VideoIcon, VideoPlay, VioletFolder, Warning, Warranty, WellDone, WholeHome, Wind, WindWhite, Wizard, WizardDetailed, WizardQuick, YellowFolder, YellowFolderUnshared, };
|
|
157
|
+
export { AlertDelete, AlertDeletePurple, Arrow, Batery, Bathroom, Battery, Battery2, Bedroom, BgBlue, BgLogo, Billing, BillingAddress, BlueFolder, BlueFolderShared, Box, Building, Calc, Calendar2, Catalog, Check, CheckInCircle, CheckPen, Chemistry, CircleFace, Cleaning, Closet, Clouds, Co2, Company, ComputerReport, Confirmation, Construction, Contacts, Contacts2, Contributor, CreditCard, Detector, Diamond, DiningRoom, DocIcon, Document, Drop, DropCalendar, Electricity, Entryway, Exclamation, Face, Feedback, FileUploading, Finance, Fire, Flag, FormSent, Foundation, Garage, GearPencil, GearTime, GenericField, GlassWater, GreenFolder, Group, Groups, GuestBedroom, Hallway, HandPencil, Heater, Help, HomeAddress, Homeowner, House, HouseHands, IA, ImageDefault, ImgIcon, Inbox, Insect, Kitchen, Laundry, Light, LivingRoom, Loading, Location, LogoCompany, LogoSmall, MagnifyingGlassReport, Manager, MasterBedroom, Member, Message, MobileDrop, Money, Mudroom, NeedHelp, Office, Painting, PartnerGeneric, Patio, PdfIcon, PersonMail, Plate, Play, Plus, Pool, Pool2, PressureWasher, Price, Profile, ProgressReport, Proposal, RealEstate, Receipt, ReceiptBg, ReceiptHouse, Receipts, Recipient, Records, Register, RelationshipHome, ResendPassword, Rocket, Roof2, Security, Send, ShareHome, ShareWith, SixtyEight, SMS, Social, SolarPanel, Sprinkler, Structure, Subscription, Target, Temperature, Theatre, Thumbnail, ThumbnailSmall, ThumbUp, Trash, Trees, TreesCrop, TreesCrop2, VideoIcon, VideoPlay, VioletFolder, Warning, Warranty, WellDone, WholeHome, Wind, WindWhite, Wizard, WizardDetailed, WizardQuick, YellowFolder, YellowFolderUnshared, };
|
|
157
158
|
export * from './alerts';
|
|
158
159
|
export * from './appliances';
|
|
159
160
|
export * from './clouds-animation';
|
|
@@ -102,6 +102,7 @@ import Play from './play.svg'
|
|
|
102
102
|
import Plus from './plus.svg'
|
|
103
103
|
import Pool from './pool.svg'
|
|
104
104
|
import Pool2 from './pool2.svg'
|
|
105
|
+
import PressureWasher from './pressure-washer.svg'
|
|
105
106
|
import Price from './price.svg'
|
|
106
107
|
import Profile from './profile.svg'
|
|
107
108
|
import ProgressReport from './progress-report.svg'
|
|
@@ -259,6 +260,7 @@ export {
|
|
|
259
260
|
Plus,
|
|
260
261
|
Pool,
|
|
261
262
|
Pool2,
|
|
263
|
+
PressureWasher,
|
|
262
264
|
Price,
|
|
263
265
|
Profile,
|
|
264
266
|
ProgressReport,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<svg id="Group_22267" data-name="Group 22267" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="28.455" height="30.766" viewBox="0 0 28.455 30.766">
|
|
2
|
+
<defs>
|
|
3
|
+
<clipPath id="clip-path">
|
|
4
|
+
<rect id="Rectangle_25649" data-name="Rectangle 25649" width="28.455" height="30.766" fill="none"/>
|
|
5
|
+
</clipPath>
|
|
6
|
+
</defs>
|
|
7
|
+
<g id="Group_22266" data-name="Group 22266" clip-path="url(#clip-path)">
|
|
8
|
+
<path id="Path_17637" data-name="Path 17637" d="M2.623,97.179a2.624,2.624,0,1,1,2.392-3.7c.033.074.062.148.088.222l-.786.276c-.019-.054-.04-.107-.063-.158a1.79,1.79,0,1,0-.009,1.5,1.44,1.44,0,0,0,.067-.172c.014-.038.02-.052.024-.068s.011-.041.016-.057a.37.37,0,0,0,.014-.054c.01-.043.014-.064.018-.088l.821.14c-.007.043-.015.083-.025.126s-.021.09-.035.133-.026.087-.042.131A2.377,2.377,0,0,1,5,95.674a2.641,2.641,0,0,1-2.373,1.5" transform="translate(0 -66.413)" fill="#00c0b7"/>
|
|
9
|
+
<path id="Path_17638" data-name="Path 17638" d="M74.807,0V1.516H71.726V0Z" transform="translate(-51.817 0)" fill="#40566b"/>
|
|
10
|
+
<path id="Path_17639" data-name="Path 17639" d="M30.728,16.7v3.794h-2V16.7Z" transform="translate(-20.753 -12.064)" fill="#40566b"/>
|
|
11
|
+
<path id="Path_17640" data-name="Path 17640" d="M26.768,35.665a4,4,0,0,1,0,8.008H10.422V41.827H26.768a2.157,2.157,0,1,0,0-4.313H7.21a4.008,4.008,0,0,1-4.005-4V24.2A4.011,4.011,0,0,1,7.21,20.2h3.079v1.849H7.21A2.159,2.159,0,0,0,5.054,24.2v9.307A2.157,2.157,0,0,0,7.21,35.665Z" transform="translate(-2.315 -14.592)" fill="#00c0b7"/>
|
|
12
|
+
<path id="Path_17641" data-name="Path 17641" d="M18.926,98.119v1.846h-3.95a1.872,1.872,0,0,0,.086-.219.869.869,0,0,0,.036-.114.881.881,0,0,0,.031-.117c.009-.033.014-.064.02-.1a2.066,2.066,0,0,0,.036-.394,2.188,2.188,0,0,0-.12-.716c-.022-.064-.047-.128-.075-.189Z" transform="translate(-10.819 -70.884)" fill="#e24c5d"/>
|
|
13
|
+
<path id="Path_17642" data-name="Path 17642" d="M53.8,10.734V16.8a5.273,5.273,0,0,1-5.274,5.274H39.055a3.118,3.118,0,0,1-3.12-3.117V8.58a3.119,3.119,0,0,1,3.12-3.12h9.471A5.273,5.273,0,0,1,53.8,10.734m-4.158,7.594V9.4a.616.616,0,0,0-.616-.616H45.791a.618.618,0,0,0-.616.616v8.932a.617.617,0,0,0,.616.616h3.234a.615.615,0,0,0,.616-.616" transform="translate(-25.961 -3.944)" fill="#e24c5d"/>
|
|
14
|
+
<path id="Path_17643" data-name="Path 17643" d="M73.69,26.969a.615.615,0,0,1-.616.616H69.84a.617.617,0,0,1-.616-.616V18.037a.618.618,0,0,1,.616-.616h3.234a.616.616,0,0,1,.616.616Z" transform="translate(-50.01 -12.586)" fill="#ddeff2"/>
|
|
15
|
+
</g>
|
|
16
|
+
</svg>
|
|
@@ -399,8 +399,8 @@
|
|
|
399
399
|
}
|
|
400
400
|
},
|
|
401
401
|
"details": "Provide details about your home’s",
|
|
402
|
-
"homeMonitor": "
|
|
403
|
-
"homeMonitoring": "
|
|
402
|
+
"homeMonitor": "Homie",
|
|
403
|
+
"homeMonitoring": "Homie is monitoring your home.",
|
|
404
404
|
"monitorAlerts": {
|
|
405
405
|
"collapse": "Collapse Alert",
|
|
406
406
|
"homeAction": "Home Action",
|
|
@@ -418,10 +418,11 @@
|
|
|
418
418
|
"smoke": "Smoke & CO2 detectors",
|
|
419
419
|
"structure": "Structure"
|
|
420
420
|
},
|
|
421
|
-
"title": "
|
|
421
|
+
"title": "Set Up Homie",
|
|
422
422
|
"tutorialButton": "Start Quick Setup",
|
|
423
|
-
"tutorialDescription": "
|
|
424
|
-
"tutorialTitle": "Let’s quickly
|
|
423
|
+
"tutorialDescription": "Homie helps you manage every aspect of your home. We've added a short overview to help you learn more about it.",
|
|
424
|
+
"tutorialTitle": "Let’s quickly set up Homie, your friendly AI home assistant.",
|
|
425
|
+
"tutorialNote": "Just a few set-up questions to help Homie get going."
|
|
425
426
|
},
|
|
426
427
|
"homeBoard": {
|
|
427
428
|
"addRecords": "Add Property Records",
|
|
@@ -603,7 +604,7 @@
|
|
|
603
604
|
"newPassword": {
|
|
604
605
|
"confirm": "Confirm Password",
|
|
605
606
|
"create": "Create Password",
|
|
606
|
-
"title": "
|
|
607
|
+
"title": "Please enter your new password."
|
|
607
608
|
},
|
|
608
609
|
"partner": {
|
|
609
610
|
"aphw": {
|
|
@@ -743,7 +744,7 @@
|
|
|
743
744
|
"title": "Property Taxes"
|
|
744
745
|
},
|
|
745
746
|
"trending": {
|
|
746
|
-
"addMortgage": "
|
|
747
|
+
"addMortgage": "Mortgage Info",
|
|
747
748
|
"estimated": "Estimated Market Value",
|
|
748
749
|
"mortgage": "Mortgage Balance*",
|
|
749
750
|
"public": "*Estimated from Public Data",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useRive } from '@rive-app/react-canvas';
|
|
3
3
|
const url = import.meta.env.VITE_RIVE_ASSETS;
|
|
4
|
-
export const HomieAnimation = () => {
|
|
4
|
+
export const HomieAnimation = ({ animation = 'homie-v2' }) => {
|
|
5
5
|
const { RiveComponent } = useRive({
|
|
6
|
-
src: `${url}
|
|
6
|
+
src: `${url}/${animation}.riv`,
|
|
7
7
|
stateMachines: 'State Machine 1',
|
|
8
8
|
autoplay: true,
|
|
9
9
|
});
|
|
@@ -12,7 +12,7 @@ export const ContactsContent = ({ apiError, contacts, menuItems, handleClose, ch
|
|
|
12
12
|
});
|
|
13
13
|
const { windowDimensions: { width }, } = useWindowDimensions();
|
|
14
14
|
const maxW = width > 413 ? '16rem' : '10rem';
|
|
15
|
-
return (_jsxs(DrawerContent, { bg: "lightBlue.1", children: [_jsxs(DrawerHeader, { p: "0", children: [_jsx(PanelHeader, { handleCloseButton: handleClose, icon: Contacts, title: t('contacts.title') }), _jsxs(Flex, { justify: "space-between", pl: "base", my: "base", align: "center", gap: "base", children: [_jsx(SearchInput, { maxW: maxW, value: search, onChange: handleChange }), _jsx(LeftButtonAnimated, { onClick: handleAdd, label: t('contacts.addBtn'), disabled: disabled })] })] }), _jsxs(DrawerBody, { p: "0", overflowX: "hidden", children: [_jsxs(Stack, { spacing: "base", pt: "base", pb: "120px", pr: "base", bg: "lightBlue.
|
|
15
|
+
return (_jsxs(DrawerContent, { bg: "lightBlue.1", children: [_jsxs(DrawerHeader, { p: "0", children: [_jsx(PanelHeader, { handleCloseButton: handleClose, icon: Contacts, title: t('contacts.title') }), _jsxs(Flex, { justify: "space-between", pl: "base", my: "base", align: "center", gap: "base", children: [_jsx(SearchInput, { maxW: maxW, value: search, onChange: handleChange }), _jsx(LeftButtonAnimated, { onClick: handleAdd, label: t('contacts.addBtn'), disabled: disabled })] })] }), _jsxs(DrawerBody, { p: "0", overflowX: "hidden", children: [_jsxs(Stack, { spacing: "base", pt: "base", pb: "120px", pr: "base", bg: "lightBlue.2", minHeight: "full", children: [_jsxs(Flex, { gap: "3", pl: "base", children: [_jsx(Checkbox, { onChange: handleSelectAll }), _jsx(Text, { fontFamily: "secondary", fontSize: "xs", children: t('subscription.select') })] }), _jsx(Box, { children: Object.keys(splittedContacts).map((letter, idx) => {
|
|
16
16
|
const showLetterDivider = idx !== 0;
|
|
17
17
|
return (_jsxs(Stack, { spacing: "0", children: [showLetterDivider && _jsx(LetterDivider, { letter: letter }), _jsx(Stack, { spacing: "2px", children: splittedContacts[letter].map((contact, idx) => {
|
|
18
18
|
const selected = isItemSelected(contact._id);
|
|
@@ -13,7 +13,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
13
13
|
import { FormProvider } from 'react-hook-form';
|
|
14
14
|
import { t } from 'i18next';
|
|
15
15
|
import { Stack, Text } from '@chakra-ui/react';
|
|
16
|
-
import { HiddenFieldSection, GroupField, TextField, TextAreaField, SelectField, RatingField, GridField, FieldWithDelete, FileField, SwitchField, DateField, NumberField, CurrencyField, TileBody, } from '../..';
|
|
16
|
+
import { HiddenFieldSection, GroupField, TextField, TextAreaField, SelectField, RatingField, GridField, FieldWithDelete, FileField, SwitchField, DateField, NumberField, CurrencyField, TileBody, CheckboxGroupField, } from '../..';
|
|
17
17
|
import { useDynamicForm } from '../../../hooks';
|
|
18
18
|
import { fieldIcons } from '../../../helpers';
|
|
19
19
|
export const DynamicForm = (_a) => {
|
|
@@ -61,6 +61,8 @@ export const DynamicForm = (_a) => {
|
|
|
61
61
|
return (_jsx(FieldWithDelete, Object.assign({}, fieldWithDeleteBaseProps, { children: _jsx(FileField, { icon: baseProps.icon, description: description, onUpload: (files) => handleFilesUpload({ id, files }), uploading: uploadingFieldId === id }) })));
|
|
62
62
|
case 'group':
|
|
63
63
|
return (_jsx(GroupField, { id: id, fields: children, onRemove: handleRemove, canBeHidden: canBeHidden }, id));
|
|
64
|
+
case 'checkbox-group':
|
|
65
|
+
return (_jsx(CheckboxGroupField, { id: id, children: children, value: value, icon: baseProps.icon }, id));
|
|
64
66
|
case 'tile-body':
|
|
65
67
|
return (_jsx(TileBody, Object.assign({ callback: callback, fields: children, menuItems: menuItems }, props), id));
|
|
66
68
|
default:
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Checkbox, CheckboxGroup, Flex, SimpleGrid, Text, } from '@chakra-ui/react';
|
|
3
|
+
import { FormIcon } from '../../..';
|
|
4
|
+
import { Controller, useFormContext } from 'react-hook-form';
|
|
5
|
+
export const CheckboxGroupField = ({ children, icon, id, value, }) => {
|
|
6
|
+
const { control } = useFormContext();
|
|
7
|
+
const defaultValues = children === null || children === void 0 ? void 0 : children.map((child) => {
|
|
8
|
+
if (child.value) {
|
|
9
|
+
return child.id;
|
|
10
|
+
}
|
|
11
|
+
}).filter((value) => value);
|
|
12
|
+
return (_jsxs(Box, { children: [_jsx(Box, { p: "base", borderBottom: "1px dashed", borderColor: "lightBlue.6", children: _jsx(Text, { fontFamily: "secondary", fontSize: "sm", children: value }) }), _jsxs(Flex, { p: "base", gap: "base", children: [_jsx(FormIcon, { icon: icon }), _jsx(Controller, { control: control, name: id, defaultValue: defaultValues, render: ({ field: { onChange } }) => {
|
|
13
|
+
return (_jsx(CheckboxGroup, { defaultValue: defaultValues, onChange: onChange, children: _jsx(SimpleGrid, { columns: 2, spacing: "base", w: "full", children: children === null || children === void 0 ? void 0 : children.map((child) => {
|
|
14
|
+
const { id, name, value } = child;
|
|
15
|
+
return (_jsx(Checkbox, { value: String(id), isChecked: Boolean(value), children: _jsx(Text, { fontSize: "sm", children: name }) }, id));
|
|
16
|
+
}) }) }));
|
|
17
|
+
} })] })] }));
|
|
18
|
+
};
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
|
2
2
|
import { fieldIcons } from '../../../../helpers';
|
|
3
3
|
import { GridField, RatingField, TextAreaField, TextField, SelectField, SwitchField, NumberField, DateField, CurrencyField, TileBodyHeader, TileBodyLogo, VerticalIcon, TileBodySectionGrid, TileBodyAction, TileCta, } from '../../..';
|
|
4
4
|
export const SingleFields = ({ callback, fields, menuItems }) => {
|
|
5
|
-
return (_jsx(_Fragment, { children: fields === null || fields === void 0 ? void 0 : fields.map(({ children, description, id, name, type, value, icon, options = [], }) => {
|
|
5
|
+
return (_jsx(_Fragment, { children: fields === null || fields === void 0 ? void 0 : fields.map(({ children, description, id, name, type, value, icon, link, options = [], }) => {
|
|
6
6
|
const baseProps = {
|
|
7
7
|
key: id,
|
|
8
8
|
id,
|
|
@@ -45,9 +45,9 @@ export const SingleFields = ({ callback, fields, menuItems }) => {
|
|
|
45
45
|
case 'tile-body-action':
|
|
46
46
|
return (_jsx(TileBodyAction, { fields: children, callback: callback }, id));
|
|
47
47
|
case 'primary-cta':
|
|
48
|
-
return (_jsx(TileCta, { type: type, value: String(baseProps.value)
|
|
48
|
+
return (_jsx(TileCta, { callback: callback, description: description, icon: icon, id: id, name: name, type: type, link: link, value: String(baseProps.value) }, id));
|
|
49
49
|
case 'secondary-cta':
|
|
50
|
-
return (_jsx(TileCta, { type: type, value: String(baseProps.value)
|
|
50
|
+
return (_jsx(TileCta, { callback: callback, description: description, icon: icon, id: id, name: name, type: type, value: String(baseProps.value) }, id));
|
|
51
51
|
default:
|
|
52
52
|
return null;
|
|
53
53
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { TileBodyI } from '../../../../../interfaces';
|
|
2
|
-
export declare const TileBodyAction: ({ fields }: TileBodyI) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const TileBodyAction: ({ callback, fields }: TileBodyI) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Flex } from '@chakra-ui/react';
|
|
3
3
|
import { SingleFields } from '../../../..';
|
|
4
|
-
export const TileBodyAction = ({ fields }) => {
|
|
5
|
-
return (_jsx(Flex, { p: "base", align: "center", gap: "base", children: _jsx(SingleFields, { fields: fields }) }));
|
|
4
|
+
export const TileBodyAction = ({ callback, fields }) => {
|
|
5
|
+
return (_jsx(Flex, { p: "base", align: "center", gap: "base", children: _jsx(SingleFields, { fields: fields, callback: callback }) }));
|
|
6
6
|
};
|
|
@@ -2,10 +2,10 @@ import { Flex } from '@chakra-ui/react'
|
|
|
2
2
|
import { SingleFields } from '@/components'
|
|
3
3
|
import { TileBodyI } from '@/interfaces'
|
|
4
4
|
|
|
5
|
-
export const TileBodyAction = ({ fields }: TileBodyI) => {
|
|
5
|
+
export const TileBodyAction = ({ callback, fields }: TileBodyI) => {
|
|
6
6
|
return (
|
|
7
7
|
<Flex p="base" align="center" gap="base">
|
|
8
|
-
<SingleFields fields={fields} />
|
|
8
|
+
<SingleFields fields={fields} callback={callback} />
|
|
9
9
|
</Flex>
|
|
10
10
|
)
|
|
11
11
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { TileCtaI } from '../../../../../interfaces';
|
|
2
|
-
export declare const TileCta: ({ callback,
|
|
2
|
+
export declare const TileCta: ({ callback, ...props }: TileCtaI) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
1
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
13
|
import { Button } from '@chakra-ui/react';
|
|
3
|
-
export const TileCta = (
|
|
4
|
-
|
|
14
|
+
export const TileCta = (_a) => {
|
|
15
|
+
var { callback } = _a, props = __rest(_a, ["callback"]);
|
|
16
|
+
const { type, value } = props;
|
|
17
|
+
return (_jsx(Button, { onClick: () => callback === null || callback === void 0 ? void 0 : callback(Object.assign({}, props)), variant: type === 'primary-cta' ? 'tertiaryFooter' : 'secondaryFooter', fontSize: "sm", children: value }));
|
|
5
18
|
};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Button } from '@chakra-ui/react'
|
|
2
2
|
import { TileCtaI } from '@/interfaces'
|
|
3
3
|
|
|
4
|
-
export const TileCta = ({ callback,
|
|
4
|
+
export const TileCta = ({ callback, ...props }: TileCtaI) => {
|
|
5
|
+
const { type, value } = props
|
|
5
6
|
return (
|
|
6
7
|
<Button
|
|
7
|
-
onClick={() => callback?.(
|
|
8
|
+
onClick={() => callback?.({ ...props })}
|
|
8
9
|
variant={type === 'primary-cta' ? 'tertiaryFooter' : 'secondaryFooter'}
|
|
9
10
|
fontSize="sm"
|
|
10
11
|
>
|
|
@@ -6,5 +6,5 @@ import { ChevronRight, VideoPlayerModal, VideoPlayerTrigger, } from '..';
|
|
|
6
6
|
import { colors } from '../../theme/colors';
|
|
7
7
|
export const HomeAssistantTutorial = ({ onStart, videoUrl, }) => {
|
|
8
8
|
const [url, setUrl] = useState();
|
|
9
|
-
return (_jsxs(Stack, { spacing: "base", align: "center", maxW: "483px", px: ['base', 0], zIndex: "2", children: [_jsx(Text, { fontSize: "30px", lineHeight: "32px", textAlign: "center", children: t('homeAssistant.tutorialTitle') }), _jsx(Text, { fontFamily: "secondary", textAlign: "center", children: t('homeAssistant.tutorialDescription') }), _jsxs(Stack, { spacing: "base", w: "284px", children: [_jsx(Box, { boxShadow: "lg", children: _jsx(VideoPlayerTrigger, { url: videoUrl, value: videoUrl, ratio: 16 / 9, onPlay: (value) => setUrl(value) }) }), _jsx(Button, { onClick: onStart, textTransform: "capitalize", children: _jsxs(Flex, { align: "center", justify: "space-between", w: "100%", px: "base", children: [_jsx(Text, { color: "neutral.white", children: t('homeAssistant.tutorialButton') }), _jsx(Circle, { size: "40px", bg: "blue.1", color: "neutral.white", children: _jsx(ChevronRight, { size: 26, stroke: colors.neutral.white }) })] }) })] }), url && (_jsx(VideoPlayerModal, { url: url, onClose: () => setUrl(undefined), showOverlay: true }))] }));
|
|
9
|
+
return (_jsxs(Stack, { spacing: "base", align: "center", maxW: "483px", px: ['base', 0], zIndex: "2", children: [_jsx(Text, { fontSize: "30px", lineHeight: "32px", textAlign: "center", children: t('homeAssistant.tutorialTitle') }), _jsx(Text, { fontFamily: "secondary", textAlign: "center", children: t('homeAssistant.tutorialDescription') }), _jsxs(Stack, { spacing: "base", w: "284px", children: [_jsx(Box, { boxShadow: "lg", children: _jsx(VideoPlayerTrigger, { url: videoUrl, value: videoUrl, ratio: 16 / 9, onPlay: (value) => setUrl(value) }) }), _jsx(Button, { onClick: onStart, textTransform: "capitalize", children: _jsxs(Flex, { align: "center", justify: "space-between", w: "100%", px: "base", children: [_jsx(Text, { color: "neutral.white", children: t('homeAssistant.tutorialButton') }), _jsx(Circle, { size: "40px", bg: "blue.1", color: "neutral.white", children: _jsx(ChevronRight, { size: 26, stroke: colors.neutral.white }) })] }) })] }), _jsx(Text, { fontFamily: "secondary", textAlign: "center", children: t('homeAssistant.tutorialNote') }), url && (_jsx(VideoPlayerModal, { url: url, onClose: () => setUrl(undefined), showOverlay: true }))] }));
|
|
10
10
|
};
|
|
@@ -6,5 +6,5 @@ import { getImageAltText } from '../../utils';
|
|
|
6
6
|
import { colors } from '../../theme/colors';
|
|
7
7
|
export const HomeAssistantWrapper = ({ children, showAirplane, title, }) => {
|
|
8
8
|
const treesAlt = getImageAltText(TreesCrop);
|
|
9
|
-
return (_jsx(GridItem, { colSpan: [1, 2], children: _jsx(TileTooltip, { label: "homeAssistant", children: _jsxs(Box, { bgGradient: colors.skyGradient, boxShadow: "base", h: "full", position: "relative", overflowX: "hidden", children: [_jsx(ContainerHeader, { title: title, titleIcon: IA }), _jsx(Center, { minH: "477px", children: children }), _jsx(Image, { src: Cloud1, position: "absolute", w: "auto", h: "80px", top: "80px", animation: `${moveRightToLeftWithFade} 400s linear infinite
|
|
9
|
+
return (_jsx(GridItem, { colSpan: [1, 2], children: _jsx(TileTooltip, { label: "homeAssistant", children: _jsxs(Box, { bgGradient: colors.skyGradient, boxShadow: "base", h: "full", position: "relative", overflowX: "hidden", children: [_jsx(ContainerHeader, { title: title, titleIcon: IA }), _jsx(Center, { minH: "477px", children: children }), _jsx(Image, { src: Cloud1, position: "absolute", w: "auto", h: "80px", top: "80px", animation: `${moveRightToLeftWithFade} 400s linear infinite` }), _jsx(Image, { src: Cloud2, position: "absolute", w: "auto", h: "112px", top: "150px", animation: `${moveRightToLeft} 200s linear infinite` }), _jsx(Image, { src: Cloud3, position: "absolute", w: "auto", h: "160px", top: "200px", animation: `${moveRightToLeft} 130s linear infinite` }), showAirplane && (_jsx(Image, { src: Airplane, position: "absolute", w: "auto", h: "40px", top: "85px", animation: `${moveLeftToRightAirplane} 500s cubic-bezier(1, 1, 1, 500) infinite` })), _jsx(Image, { src: TreesCrop, alt: treesAlt, position: "absolute", bottom: "0", right: "2", w: "auto", h: "70px" })] }) }) }));
|
|
10
10
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { HomeMonitorButtonI } from '../../interfaces';
|
|
2
|
-
export declare const HomeMonitorButton: ({ currentStep,
|
|
2
|
+
export declare const HomeMonitorButton: ({ currentStep, onStepClick, status, step, }: HomeMonitorButtonI) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Center, Image, Stack, Text } from '@chakra-ui/react';
|
|
3
3
|
import { getIconAltText } from '../../utils';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
export const HomeMonitorButton = ({ currentStep, onStepClick, status = 'ok', step, }) => {
|
|
5
|
+
const buttonId = `homeMonitorButton-${currentStep}`;
|
|
6
6
|
const iconAltText = getIconAltText(step.icon);
|
|
7
|
-
|
|
8
|
-
if (status !== 'ok')
|
|
9
|
-
onStepClick(currentStep);
|
|
10
|
-
};
|
|
11
|
-
const isDisabled = Number(menuItems.length) === 0;
|
|
12
|
-
return (_jsxs(Box, { position: "relative", children: [_jsxs(Box, { position: "relative", bg: "neutral.white", borderRadius: "lg", boxShadow: "lg", zIndex: "2", children: [_jsx(Box, { bg: status === 'alert' ? 'error.2' : 'green.1', boxSize: "10px", borderRadius: "full", position: "absolute", top: "6px", left: "6px", zIndex: "8" }), _jsxs(Stack, Object.assign({ position: "relative", zIndex: "2", as: "button", spacing: "2", border: "1px solid transparent", w: "90px", align: "center", h: "96px", py: "base" }, setStyles(status), { onClick: handleClick, children: [_jsx(Center, { h: "60%", marginTop: "2", children: _jsx(Image, { src: step.icon, alt: iconAltText, w: "auto", h: "28px" }) }), _jsx(Center, { h: "40%", children: _jsx(Text, { fontSize: "xs", textTransform: "uppercase", textAlign: "center", lineHeight: "14px", children: step.title }) })] }))] }), _jsx(Box, { position: "absolute", top: "-2px", right: "4px", zIndex: "4", children: _jsx(IconMenu, { icon: _jsx(MoreHorizontal, { size: 26 }), itemForm: currentStep, menuItems: menuItems, disabled: isDisabled }) })] }));
|
|
7
|
+
return (_jsx(Box, { position: "relative", id: buttonId, children: _jsxs(Box, { position: "relative", bg: "neutral.white", borderRadius: "lg", boxShadow: "lg", zIndex: "2", children: [_jsx(Box, { bg: status === 'alert' ? 'error.2' : 'green.1', boxSize: "10px", borderRadius: "full", position: "absolute", top: "6px", left: "6px", zIndex: "8" }), _jsxs(Stack, Object.assign({ position: "relative", zIndex: "2", as: "button", spacing: "2", border: "1px solid transparent", w: "90px", align: "center", h: "96px", py: "base" }, setStyles(status), { onClick: () => onStepClick(currentStep), children: [_jsx(Center, { h: "60%", marginTop: "2", children: _jsx(Image, { src: step.icon, alt: iconAltText, w: "auto", h: "28px" }) }), _jsx(Center, { h: "40%", children: _jsx(Text, { fontSize: "xs", textTransform: "uppercase", textAlign: "center", lineHeight: "14px", children: step.title }) })] }))] }) }));
|
|
13
8
|
};
|
|
14
9
|
const setStyles = (status) => {
|
|
15
10
|
switch (status) {
|
|
@@ -1,9 +1,23 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Flex } from '@chakra-ui/react';
|
|
3
|
-
import { HomeMonitorButton } from '..';
|
|
3
|
+
import { HomeMonitorButton, IconMenu, MoreHorizontal } from '..';
|
|
4
4
|
import { homeAssistantSteps } from '../../helpers';
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { useComponentStyles } from '../../hooks';
|
|
6
|
+
import { useState } from 'react';
|
|
7
|
+
export const HomeMonitorSteps = ({ menuItems = [], onStepClick, stepsWithAlerts, }) => {
|
|
8
|
+
const ids = [
|
|
9
|
+
'homeMonitorButton-1',
|
|
10
|
+
'homeMonitorButton-2',
|
|
11
|
+
'homeMonitorButton-3',
|
|
12
|
+
'homeMonitorButton-4',
|
|
13
|
+
'homeMonitorButton-5',
|
|
14
|
+
'homeMonitorButton-6',
|
|
15
|
+
];
|
|
16
|
+
const [selectedId, setSelectedId] = useState('');
|
|
17
|
+
const isDisabled = menuItems.length === 0;
|
|
18
|
+
useComponentStyles({ ids, selectedId, zIndex: '2' });
|
|
19
|
+
const handleStepClick = (step) => onStepClick(step);
|
|
20
|
+
return (_jsx(Flex, { gap: "base", children: homeAssistantSteps.map((step, index) => (_jsx(Box, { position: "relative", children: _jsxs(Box, { flex: "auto", children: [_jsx(HomeMonitorButton, { currentStep: index + 1, onStepClick: handleStepClick, status: getStatus(index + 1, stepsWithAlerts), step: step }), _jsx(Box, { position: "absolute", top: "-2px", right: "4px", zIndex: "1400", children: _jsx(IconMenu, { zIndex: "2", icon: _jsx(MoreHorizontal, { size: 26 }), itemForm: index + 1, menuItems: menuItems, disabled: isDisabled, onClick: () => setSelectedId(`homeMonitorButton-${index + 1}`) }) })] }) }, step === null || step === void 0 ? void 0 : step.title))) }));
|
|
7
21
|
};
|
|
8
22
|
const getStatus = (index, stepsWithAlerts) => {
|
|
9
23
|
const hasAlert = stepsWithAlerts.includes(index);
|
|
@@ -3,5 +3,5 @@ import { t } from 'i18next';
|
|
|
3
3
|
import { Box, Flex, Text } from '@chakra-ui/react';
|
|
4
4
|
import { HomieAnimation } from '../..';
|
|
5
5
|
export const HomefileMonitoring = () => {
|
|
6
|
-
return (_jsx(Box, { p: "base", borderRadius: "lg", bg: "#C5E9F4", h: "66px", zIndex: "2", flex: "1", children: _jsxs(Flex, { align: "center", children: [_jsx(Box, { boxSize: "47px", children: _jsx(HomieAnimation, {}) }), _jsx(Text, { children: t('homeAssistant.homeMonitoring') })] }) }));
|
|
6
|
+
return (_jsx(Box, { p: "base", borderRadius: "lg", bg: "#C5E9F4", h: "66px", zIndex: "2", flex: "1", children: _jsxs(Flex, { align: "center", children: [_jsx(Box, { boxSize: "47px", children: _jsx(HomieAnimation, { animation: "homie-v3" }) }), _jsx(Text, { children: t('homeAssistant.homeMonitoring') })] }) }));
|
|
7
7
|
};
|
|
@@ -3,9 +3,12 @@ import { t } from 'i18next';
|
|
|
3
3
|
import { Center, SimpleGrid, Stack, Text } from '@chakra-ui/react';
|
|
4
4
|
import { ApplianceButton } from '../..';
|
|
5
5
|
import { Fridge, Freezer, Washer, Dryer, Dishwasher, CookTop, Oven, Hood, Microwave, Range, } from '../../../assets/images';
|
|
6
|
-
import { useState } from 'react';
|
|
6
|
+
import { useState, useEffect } from 'react';
|
|
7
7
|
export const ApplianceSteps = ({ addedAppliances = [], onClick, }) => {
|
|
8
8
|
const [appliances, setAppliances] = useState(addedAppliances);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
setAppliances(addedAppliances);
|
|
11
|
+
}, [addedAppliances]);
|
|
9
12
|
const handleClick = (id) => {
|
|
10
13
|
if (appliances.includes(id)) {
|
|
11
14
|
const newAppliances = appliances.filter((appliance) => appliance !== id);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
2
3
|
import { FormProvider } from 'react-hook-form';
|
|
3
4
|
import { t } from 'i18next';
|
|
4
5
|
import { DrawerContent, DrawerHeader, DrawerBody, Stack, Text, DrawerFooter, } from '@chakra-ui/react';
|
|
@@ -7,13 +8,25 @@ import { ApplianceSteps, SimpleDynamicForm, FooterButtons, HomeAssistantPanelSte
|
|
|
7
8
|
import { homeAssistantSteps } from '../../../helpers';
|
|
8
9
|
import { useSimpleDynamicForm } from '../../../hooks';
|
|
9
10
|
export const HomeAssistantPanel = ({ children, currentForm, currentStep, onApplianceClick, onBack, onClose, onNext, onSave, backDisabled, nextDisabled, }) => {
|
|
11
|
+
const [addedAppliances, updateAddedAppliances] = useState([]);
|
|
10
12
|
const { title } = homeAssistantSteps[currentStep - 1];
|
|
11
13
|
const text = `${t('homeAssistant.details')} ${title.toLowerCase()}:`;
|
|
12
14
|
const isAppliances = currentStep === 4;
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
var _a;
|
|
17
|
+
if (isAppliances) {
|
|
18
|
+
const targetAppliances = (_a = currentForm.find((field) => {
|
|
19
|
+
var _a;
|
|
20
|
+
return ((_a = field.name) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase()) === 'appliances list' &&
|
|
21
|
+
field.type === 'hidden';
|
|
22
|
+
})) === null || _a === void 0 ? void 0 : _a.value;
|
|
23
|
+
updateAddedAppliances(targetAppliances);
|
|
24
|
+
}
|
|
25
|
+
}, [currentForm, isAppliances]);
|
|
13
26
|
const { form, updatedFields } = useSimpleDynamicForm({
|
|
14
27
|
fields: currentForm,
|
|
15
28
|
});
|
|
16
|
-
return (_jsxs(DrawerContent, { bg: "lightBlue.1", children: [_jsx(DrawerHeader, { p: "0", children: _jsx(PanelHeader, { handleCloseButton: onClose, title: t('homeAssistant.title'), icon: IA }) }), _jsxs(DrawerBody, { p: "0", children: [_jsx(HomeAssistantPanelStep, { currentStep: currentStep }), children, isAppliances && _jsx(ApplianceSteps, { onClick: onApplianceClick }), _jsxs(Stack, { spacing: "base", p: "base", children: [_jsx(Text, { fontFamily: "secondary", fontSize: "sm", children: text }), _jsx(FormProvider, Object.assign({}, form, { children: _jsx(SimpleDynamicForm, { fields: currentForm }) }))] })] }), _jsx(DrawerFooter, { px: "0", py: "6", bg: "neutral.white", children: _jsx(FooterButtons, { button1: {
|
|
29
|
+
return (_jsxs(DrawerContent, { bg: "lightBlue.1", children: [_jsx(DrawerHeader, { p: "0", children: _jsx(PanelHeader, { handleCloseButton: onClose, title: t('homeAssistant.title'), icon: IA }) }), _jsxs(DrawerBody, { p: "0", children: [_jsx(HomeAssistantPanelStep, { currentStep: currentStep }), children, isAppliances && (_jsx(ApplianceSteps, { onClick: onApplianceClick, addedAppliances: addedAppliances })), _jsxs(Stack, { spacing: "base", p: "base", children: [_jsx(Text, { fontFamily: "secondary", fontSize: "sm", children: text }), _jsx(FormProvider, Object.assign({}, form, { children: _jsx(SimpleDynamicForm, { fields: currentForm }) }))] })] }), _jsx(DrawerFooter, { px: "0", py: "6", bg: "neutral.white", children: _jsx(FooterButtons, { button1: {
|
|
17
30
|
buttonStyle: 'secondaryFooter',
|
|
18
31
|
label: t('buttons.back'),
|
|
19
32
|
onClick: onBack,
|
|
@@ -9,7 +9,7 @@ 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, HomeAssistantPanel, } 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, HomeMonitor, HomefileMonitoring, Notifications, HomeMonitorSteps, } from '..';
|
|
13
13
|
import { HomeCards, recipientsDb, FoldersDB, selectOptions, RoomsList, RoomsToAdd, } from '../../helpers';
|
|
14
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';
|
|
@@ -51,7 +51,12 @@ export const HomeBoard = () => {
|
|
|
51
51
|
HomeAssistant: (_jsx(HomeAssistantPanel, { currentStep: homeAssistantCurrentStep, currentForm: currentHomeAssistantForm, onNext: handleHomeAssistantFormChange, onBack: handleHomeAssistantBack, onApplianceClick: () => null, onClose: onRightClose, onSave: () => { }, backDisabled: false, nextDisabled: false })),
|
|
52
52
|
};
|
|
53
53
|
const panelSize = currentComponent === 'PartnerCatalog' ? 'lg' : 'md';
|
|
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" }),
|
|
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" }), _jsx(HomeMonitor, { children: _jsxs(Stack, { spacing: "base", children: [_jsxs(Flex, { gap: "base", children: [_jsx(HomefileMonitoring, {}), _jsx(Notifications, { date: "10-10-24", local: "TX - Houston" })] }), _jsx(HomeMonitorSteps, { menuItems: [
|
|
55
|
+
{
|
|
56
|
+
label: 'Details',
|
|
57
|
+
handleClick: handleHomeAssistantClick,
|
|
58
|
+
},
|
|
59
|
+
], stepsWithAlerts: [], onStepClick: () => null })] }) }), _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 })] }));
|
|
55
60
|
};
|
|
56
61
|
export const AppBarComponent = ({ setActiveTour = (value) => { } }) => {
|
|
57
62
|
const handleTour = () => {
|
|
@@ -16,5 +16,5 @@ export const SelectButton = ({ height = 'sm', isDisabled, variant = 'primary', w
|
|
|
16
16
|
return (_jsx(MenuButton, Object.assign({ disabled: isDisabled }, triggerVariants[variant], { _disabled: {
|
|
17
17
|
bg: 'lightBlue.1',
|
|
18
18
|
cursor: 'not-allowed',
|
|
19
|
-
}, children: _jsxs(Flex, { align: "center", gap: "4", justify: "space-between", children: [_jsx(Text, Object.assign({}, textVariants[variant], { children: selectedValue })), _jsx(ChevronDown, Object.assign({}, iconVariants[variant]))] }) })));
|
|
19
|
+
}, children: _jsxs(Flex, { align: "center", gap: "4", justify: "space-between", children: [_jsx(Text, Object.assign({}, textVariants[variant], { children: selectedValue })), _jsx(Flex, { flexShrink: 0, children: _jsx(ChevronDown, Object.assign({}, iconVariants[variant])) })] }) })));
|
|
20
20
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { IconMenuI } from '../../interfaces';
|
|
2
|
-
export declare const IconMenu: <T extends unknown>({ disabled, icon, itemForm, menuItems, variant, width, }: IconMenuI<T>) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const IconMenu: <T extends unknown>({ disabled, icon, itemForm, menuItems, onClick, variant, width, zIndex, }: IconMenuI<T>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { MenuButton, IconButton, Menu, MenuItem, MenuList, } from '@chakra-ui/react';
|
|
3
3
|
import { Overlay } from '..';
|
|
4
|
-
export const IconMenu = ({ disabled = false, icon, itemForm, menuItems, variant = 'menuIcon', width = 'fit-content', }) => {
|
|
5
|
-
return (_jsx(Menu, { isLazy: true, children: ({ isOpen }) => (_jsxs(_Fragment, { children: [_jsx(Overlay, { bg: "overlay", showOverlay: isOpen, position: "fixed", zIndex:
|
|
4
|
+
export const IconMenu = ({ disabled = false, icon, itemForm, menuItems, onClick, variant = 'menuIcon', width = 'fit-content', zIndex, }) => {
|
|
5
|
+
return (_jsx(Menu, { isLazy: true, children: ({ isOpen }) => (_jsxs(_Fragment, { children: [_jsx(Overlay, { bg: "overlay", showOverlay: isOpen, position: "fixed", zIndex: zIndex }), _jsx(MenuButton, { as: IconButton, "aria-label": "Options", icon: icon, variant: variant, w: width, disabled: disabled, marginTop: "0 !important", onClick: onClick }), _jsx(MenuList, { zIndex: "5", children: menuItems === null || menuItems === void 0 ? void 0 : menuItems.map(({ handleClick, label }) => (_jsx(MenuItem, { onClick: () => handleClick(itemForm), _hover: {
|
|
6
6
|
bg: 'lightGreen.1',
|
|
7
7
|
}, _focus: {
|
|
8
8
|
bg: 'lightGreen.1',
|