@homefile/components-v2 2.59.1 → 2.60.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.
Files changed (171) hide show
  1. package/dist/assets/locales/en/index.json +5 -2
  2. package/dist/components/folderPanel/displayFiles/GridFile.js +9 -1
  3. package/dist/components/folderPanel/displayFiles/ListFile.js +9 -1
  4. package/dist/components/forms/dynamicForm/DynamicForm.js +1 -1
  5. package/dist/components/forms/dynamicForm/HiddenField.js +2 -2
  6. package/dist/components/forms/dynamicForm/fields/HomeInitialSetup.js +3 -1
  7. package/dist/components/forms/readOnly/ReadOnlyDynamicForm.js +10 -2
  8. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyAppliances.js +21 -22
  9. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyGuidelines.js +6 -3
  10. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyHistory.d.ts +2 -0
  11. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyHistory.js +35 -0
  12. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyItemRelated.js +8 -3
  13. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyOverview.d.ts +2 -0
  14. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyOverview.js +16 -0
  15. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyPurchaseDetails.d.ts +2 -0
  16. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyPurchaseDetails.js +30 -0
  17. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyWarrantyBanner.d.ts +2 -0
  18. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyWarrantyBanner.js +42 -0
  19. package/dist/components/forms/readOnly/fields/homeItem/index.d.ts +4 -0
  20. package/dist/components/forms/readOnly/fields/homeItem/index.js +4 -0
  21. package/dist/components/headers/TabsHeader.js +1 -1
  22. package/dist/components/history/AddDocuments.d.ts +7 -0
  23. package/dist/components/history/AddDocuments.js +8 -0
  24. package/dist/components/history/DatePennant.d.ts +7 -0
  25. package/dist/components/history/DatePennant.js +6 -0
  26. package/dist/components/history/HistoryCard.d.ts +19 -0
  27. package/dist/components/history/HistoryCard.js +13 -0
  28. package/dist/components/history/index.d.ts +3 -0
  29. package/dist/components/history/index.js +3 -0
  30. package/dist/components/homeBoard/AddToHomefile.js +1 -1
  31. package/dist/components/homeBoard/HomeCard.js +1 -1
  32. package/dist/components/homeItems/ViewingHomeItemBody.d.ts +2 -0
  33. package/dist/components/homeItems/ViewingHomeItemBody.js +41 -0
  34. package/dist/components/homeItems/ViewingHomeItemPanel.js +17 -19
  35. package/dist/components/homeItems/index.d.ts +1 -0
  36. package/dist/components/homeItems/index.js +1 -0
  37. package/dist/components/homi/HomiPresence.d.ts +2 -0
  38. package/dist/components/homi/HomiPresence.js +31 -0
  39. package/dist/components/homi/HomiVoice.d.ts +2 -0
  40. package/dist/components/homi/HomiVoice.js +6 -0
  41. package/dist/components/homi/ProgressBar.d.ts +2 -0
  42. package/dist/components/homi/ProgressBar.js +9 -0
  43. package/dist/components/homi/RevealValueCard.d.ts +2 -0
  44. package/dist/components/homi/RevealValueCard.js +23 -0
  45. package/dist/components/homi/StaggerReveal.d.ts +2 -0
  46. package/dist/components/homi/StaggerReveal.js +29 -0
  47. package/dist/components/homi/index.d.ts +5 -0
  48. package/dist/components/homi/index.js +5 -0
  49. package/dist/components/inboxTile/InboxForwardBanner.js +1 -1
  50. package/dist/components/index.d.ts +2 -0
  51. package/dist/components/index.js +2 -0
  52. package/dist/components/inputs/InlineEditField.d.ts +2 -0
  53. package/dist/components/inputs/InlineEditField.js +15 -0
  54. package/dist/components/inputs/RadioCard.d.ts +3 -1
  55. package/dist/components/inputs/RadioCard.js +3 -3
  56. package/dist/components/inputs/TextInput.d.ts +1 -1
  57. package/dist/components/inputs/TextInput.js +11 -4
  58. package/dist/components/inputs/index.d.ts +1 -0
  59. package/dist/components/inputs/index.js +1 -0
  60. package/dist/components/myHomes/HomeDetailsContent.js +1 -1
  61. package/dist/components/myHomes/IncludePublicRecords.d.ts +13 -1
  62. package/dist/components/myHomes/IncludePublicRecords.js +16 -6
  63. package/dist/components/myHomes/edithome/EditHomeDetails.js +12 -3
  64. package/dist/components/myHomes/steps/NewHomeDetails.d.ts +1 -1
  65. package/dist/components/myHomes/steps/NewHomeDetails.js +3 -3
  66. package/dist/components/myProfile/MyProfileBody.d.ts +1 -1
  67. package/dist/components/myProfile/MyProfileBody.js +2 -2
  68. package/dist/components/myProfile/details/HomiSms.d.ts +1 -1
  69. package/dist/components/myProfile/details/HomiSms.js +53 -23
  70. package/dist/components/myProfile/details/TwoFactorSetting.js +2 -1
  71. package/dist/components/propertyTiles/propertyTaxes/PropertyTaxes.js +1 -1
  72. package/dist/components/propertyTiles/trendingValue/TrendingValue.js +1 -1
  73. package/dist/components/rooms/RoomHeader.d.ts +1 -1
  74. package/dist/components/rooms/RoomHeader.js +3 -3
  75. package/dist/components/wizard/ControlledWizard.d.ts +1 -1
  76. package/dist/components/wizard/ControlledWizard.js +42 -3
  77. package/dist/components/wizard/WizardInitialOptions.js +3 -3
  78. package/dist/components/wizard/WizardSelectCard.d.ts +14 -0
  79. package/dist/components/wizard/WizardSelectCard.js +32 -0
  80. package/dist/components/wizard/WizardStepPrompt.d.ts +11 -0
  81. package/dist/components/wizard/WizardStepPrompt.js +20 -0
  82. package/dist/components/wizard/WizardSuccessHeader.d.ts +1 -1
  83. package/dist/components/wizard/WizardSuccessHeader.js +2 -2
  84. package/dist/components/wizard/index.d.ts +2 -0
  85. package/dist/components/wizard/index.js +2 -0
  86. package/dist/helpers/forms/dynamicForm.helper.js +4 -0
  87. package/dist/hooks/folderPanel/useDisplayFiles.js +11 -2
  88. package/dist/hooks/forms/useAddressStored.js +8 -2
  89. package/dist/hooks/index.d.ts +2 -0
  90. package/dist/hooks/index.js +2 -0
  91. package/dist/hooks/motion/index.d.ts +2 -0
  92. package/dist/hooks/motion/index.js +2 -0
  93. package/dist/hooks/motion/useCountUp.d.ts +10 -0
  94. package/dist/hooks/motion/useCountUp.js +39 -0
  95. package/dist/hooks/motion/usePrefersReducedMotion.d.ts +14 -0
  96. package/dist/hooks/motion/usePrefersReducedMotion.js +15 -0
  97. package/dist/hooks/rooms/useRoomHeader.d.ts +4 -1
  98. package/dist/hooks/rooms/useRoomHeader.js +9 -1
  99. package/dist/hooks/useDirtySave.d.ts +14 -0
  100. package/dist/hooks/useDirtySave.js +33 -0
  101. package/dist/index.d.ts +3 -3
  102. package/dist/index.js +3 -3
  103. package/dist/interfaces/forms/dynamicForm/DynamicForm.interface.d.ts +7 -3
  104. package/dist/interfaces/forms/readOnly/homeItem/ReadOnlyOverview.interface.d.ts +2 -0
  105. package/dist/interfaces/forms/readOnly/homeItem/ReadOnlyOverview.interface.js +1 -0
  106. package/dist/interfaces/forms/readOnly/homeItem/ReadOnlyPurchaseDetails.interface.d.ts +5 -0
  107. package/dist/interfaces/forms/readOnly/homeItem/ReadOnlyPurchaseDetails.interface.js +1 -0
  108. package/dist/interfaces/forms/readOnly/homeItem/ReadOnlyWarrantyBanner.interface.d.ts +27 -0
  109. package/dist/interfaces/forms/readOnly/homeItem/ReadOnlyWarrantyBanner.interface.js +1 -0
  110. package/dist/interfaces/forms/readOnly/homeItem/index.d.ts +3 -0
  111. package/dist/interfaces/forms/readOnly/homeItem/index.js +3 -0
  112. package/dist/interfaces/homeItems/ViewingHomeItemPanel.interface.d.ts +1 -0
  113. package/dist/interfaces/homi/HomiPresence.interface.d.ts +9 -0
  114. package/dist/interfaces/homi/HomiPresence.interface.js +1 -0
  115. package/dist/interfaces/homi/ProgressBar.interface.d.ts +8 -0
  116. package/dist/interfaces/homi/ProgressBar.interface.js +1 -0
  117. package/dist/interfaces/homi/RevealValueCard.interface.d.ts +16 -0
  118. package/dist/interfaces/homi/RevealValueCard.interface.js +1 -0
  119. package/dist/interfaces/homi/StaggerReveal.interface.d.ts +9 -0
  120. package/dist/interfaces/homi/StaggerReveal.interface.js +1 -0
  121. package/dist/interfaces/homi/index.d.ts +4 -0
  122. package/dist/interfaces/homi/index.js +4 -0
  123. package/dist/interfaces/index.d.ts +1 -0
  124. package/dist/interfaces/index.js +1 -0
  125. package/dist/interfaces/inputs/InlineEditField.interface.d.ts +7 -0
  126. package/dist/interfaces/inputs/InlineEditField.interface.js +1 -0
  127. package/dist/interfaces/inputs/Input.interface.d.ts +6 -1
  128. package/dist/interfaces/inputs/index.d.ts +1 -0
  129. package/dist/interfaces/inputs/index.js +1 -0
  130. package/dist/interfaces/myHomes/AddHomeContent.interface.d.ts +3 -0
  131. package/dist/interfaces/myProfile/MyProfileBody.interface.d.ts +1 -0
  132. package/dist/interfaces/myProfile/details/HomiSms.interface.d.ts +11 -2
  133. package/dist/interfaces/rooms/RoomHeader.interface.d.ts +5 -0
  134. package/dist/interfaces/wizard/ControlledWizard.interface.d.ts +6 -0
  135. package/dist/interfaces/wizard/WizardStepPrompt.interface.d.ts +9 -0
  136. package/dist/interfaces/wizard/WizardStepPrompt.interface.js +1 -0
  137. package/dist/interfaces/wizard/index.d.ts +1 -0
  138. package/dist/interfaces/wizard/index.js +1 -0
  139. package/dist/stories/forms/readOnly/ReadOnlyAppliances.stories.d.ts +4 -0
  140. package/dist/stories/forms/readOnly/ReadOnlyAppliances.stories.js +33 -0
  141. package/dist/stories/forms/readOnly/ReadOnlyWarrantyBanner.stories.d.ts +4 -0
  142. package/dist/stories/forms/readOnly/ReadOnlyWarrantyBanner.stories.js +10 -0
  143. package/dist/stories/homeItems/ReadOnlyHistory.stories.d.ts +4 -0
  144. package/dist/stories/homeItems/ReadOnlyHistory.stories.js +46 -0
  145. package/dist/stories/homeItems/ReadOnlyOverview.stories.d.ts +5 -0
  146. package/dist/stories/homeItems/ReadOnlyOverview.stories.js +69 -0
  147. package/dist/stories/homeItems/ViewingHomeItemPanel.stories.d.ts +4 -0
  148. package/dist/stories/homeItems/ViewingHomeItemPanel.stories.js +204 -0
  149. package/dist/stories/homi/HomiPresence.stories.d.ts +18 -0
  150. package/dist/stories/homi/HomiPresence.stories.js +11 -0
  151. package/dist/stories/homi/HomiVoice.stories.d.ts +4 -0
  152. package/dist/stories/homi/HomiVoice.stories.js +8 -0
  153. package/dist/stories/homi/ProgressBar.stories.d.ts +10 -0
  154. package/dist/stories/homi/ProgressBar.stories.js +9 -0
  155. package/dist/stories/homi/RevealValueCard.stories.d.ts +19 -0
  156. package/dist/stories/homi/RevealValueCard.stories.js +22 -0
  157. package/dist/stories/homi/StaggerReveal.stories.d.ts +5 -0
  158. package/dist/stories/homi/StaggerReveal.stories.js +8 -0
  159. package/dist/stories/inputs/InlineEditField.stories.d.ts +10 -0
  160. package/dist/stories/inputs/InlineEditField.stories.js +11 -0
  161. package/dist/stories/myProfile/MyProfilePanel.stories.js +1 -1
  162. package/dist/stories/myProfile/details/HomiSms.stories.d.ts +3 -2
  163. package/dist/stories/myProfile/details/HomiSms.stories.js +3 -2
  164. package/dist/stories/wizard/ControlledWizard.stories.d.ts +9 -0
  165. package/dist/stories/wizard/ControlledWizard.stories.js +41 -60
  166. package/dist/theme/index.d.ts +3 -0
  167. package/dist/theme/index.js +7 -4
  168. package/dist/utils/Formaters.utils.d.ts +2 -0
  169. package/dist/utils/Formaters.utils.js +14 -0
  170. package/dist/utils/Weather.utils.js +11 -4
  171. package/package.json +1 -1
@@ -1,9 +1,15 @@
1
1
  import { useState, useEffect } from 'react';
2
2
  import { formatCurrency } from '../../utils';
3
- export const useRoomHeader = ({ onSubmit, room: { _id, name, type, active, home }, roomAmount, }) => {
3
+ export const useRoomHeader = ({ onSubmit, room: { _id, name, type, active, home }, roomAmount, roomEstimatedAmount, }) => {
4
4
  const [isEditing, setIsEditing] = useState(false);
5
5
  const [inputValue, setInputValue] = useState(null);
6
6
  const formattedAmount = formatCurrency({ value: roomAmount });
7
+ // Estimated value renders only when there is a real (non-zero) estimate —
8
+ // honest-empty until the enrichment side emits the est-value-field tag.
9
+ const hasEstimate = Number(roomEstimatedAmount) > 0;
10
+ const formattedEstimatedAmount = formatCurrency({
11
+ value: roomEstimatedAmount !== null && roomEstimatedAmount !== void 0 ? roomEstimatedAmount : 0,
12
+ });
7
13
  useEffect(() => {
8
14
  setInputValue(name);
9
15
  }, [name]);
@@ -19,6 +25,8 @@ export const useRoomHeader = ({ onSubmit, room: { _id, name, type, active, home
19
25
  };
20
26
  return {
21
27
  formattedAmount,
28
+ formattedEstimatedAmount,
29
+ hasEstimate,
22
30
  handleChange,
23
31
  handleClick,
24
32
  inputValue,
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Scalar dirty-tracking + save — the proven `TwoFactorSetting` pattern
3
+ * (`showButtons = value !== initial` → a conditional Save), extracted. On save
4
+ * the current value becomes the new baseline (so the Save affordance hides) and
5
+ * a transient `justSaved` flag fires for 1200ms (the "Saved ✓" flash). Scope: a
6
+ * single scalar value — no arbitrary-field abstraction (YAGNI, per Eli).
7
+ */
8
+ export declare const useDirtySave: (initial: string, onSave?: (value: string) => void) => {
9
+ value: string;
10
+ setValue: import("react").Dispatch<import("react").SetStateAction<string>>;
11
+ isDirty: boolean;
12
+ justSaved: boolean;
13
+ save: () => void;
14
+ };
@@ -0,0 +1,33 @@
1
+ import { useEffect, useRef, useState } from 'react';
2
+ /**
3
+ * Scalar dirty-tracking + save — the proven `TwoFactorSetting` pattern
4
+ * (`showButtons = value !== initial` → a conditional Save), extracted. On save
5
+ * the current value becomes the new baseline (so the Save affordance hides) and
6
+ * a transient `justSaved` flag fires for 1200ms (the "Saved ✓" flash). Scope: a
7
+ * single scalar value — no arbitrary-field abstraction (YAGNI, per Eli).
8
+ */
9
+ export const useDirtySave = (initial, onSave) => {
10
+ const [value, setValue] = useState(initial);
11
+ const [baseline, setBaseline] = useState(initial);
12
+ const [justSaved, setJustSaved] = useState(false);
13
+ const flashTimer = useRef(undefined);
14
+ // Re-sync when the source value changes (e.g. a freshly prepopulated name).
15
+ useEffect(() => {
16
+ setValue(initial);
17
+ setBaseline(initial);
18
+ }, [initial]);
19
+ useEffect(() => () => {
20
+ if (flashTimer.current)
21
+ clearTimeout(flashTimer.current);
22
+ }, []);
23
+ const isDirty = value !== baseline;
24
+ const save = () => {
25
+ onSave === null || onSave === void 0 ? void 0 : onSave(value);
26
+ setBaseline(value);
27
+ setJustSaved(true);
28
+ if (flashTimer.current)
29
+ clearTimeout(flashTimer.current);
30
+ flashTimer.current = window.setTimeout(() => setJustSaved(false), 1200);
31
+ };
32
+ return { value, setValue, isDirty, justSaved, save };
33
+ };
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- export { ActivateAccount, ActiveSubscription, AddCardBanner, AddEditContactPanel, AddFolder, AddHomeContent, AddHomeItem, AddHomeItemHeader, AddMedia, AddPopup, AddPropertyRecords, Address, AddTile, AddToHomefile, AlertBanner, AphwTile, AppBar, AppliancesReceived, AssignableReceipts, BackendAlert, BackHeader, BarDivider, CalendarWidget, CancelAccount, CatalogPopup, CloudsAnimation, ConfirmHomeDetails, ConfirmProperty, ConfirmPropertyBody, ConfirmPropertyFooter, ConfirmPropertyRecords, ContactList, ContactsContent, ContainerHeader, ControlledWizard, CreateDocumentHeader, CreateHouseholdItemHeader, CreditCardContainer, CreditCardError, CustomerTile, DeleteBanner, Dialog, DisplayFiles, DisplayFilesDetail, DisplayOptions, DisplayReceipts, DocumentMenu, DocumentNameHeader, DocumentPreview, DragDropArea, DynamicForm, EditAccountType, EditHomeBody, EditHomeFooter, EditHomeHeader, EditHomePanel, EditItemName, EmailPermissions, EmailValidation, Feedback, FileDetail, FilesUploader, FlowStep, FolderDetail, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, FolderSharing, FolderTypeSelection, FooterButtons, FooterDrawer, GenericBackHeader, GroupCard, GroupsContainer, GroupsHeader, Header, HelpContent, HomeAssistant, HomeAssistantPanel, HomeAssistantTutorial, HomeAssistantWizardPanel, HomeAssistantWizardSteps, HomeBoardGrid, HomeBoardTour, HomeCard, HomeCardWithRecipent, HomeDetailsContent, HomefileMonitoring, HomeHeader, HomeItemList, HomeItemManualInfo, HomeMonitor, HomeMonitorPanel, HomeMonitorSteps, HomeSharedWith, HomieAddItems, HomiSms, InboxForwardBanner, InboxTile, ItemFormPanel, ItemFormTabs, ItemNameHeader, ItemsReviewBanner, ItemSubTypeSelect, Launchpad, LaunchpadApplianceAutofiler, LaunchpadAppliancePanel, LaunchpadAutofilerBanner, LaunchpadReceiptAutofiler, LaunchpadReceiptPanel, LaunchpadTour, LeftPanel, Loading, MediaDetailsStep, MessageChatPanel, MessagePanel, MinimizedTile, MinimizedTiles, MonthlyCharge, MortgageInfo, MortgageInfoReadOnly, MoveModal, MyHomes, MyProfileBody, MyProfileContent, MyProfileFooter, MyProfileHeader, MyProfilePanel, NewCreditCard, NewCreditCardHeader, NewHomeDetails, NewParterDetails, NewPassword, NotBeChargedBanner, NotificationCard, Notifications, NotificationsPanel, NotificationsReminder, NpsScore, Overlay, PanelHeader, PartnerActiveSubscription, PartnerCatalogPanel, PartnerContent, PartnerCustomerCard, PartnerCustomerCode, PartnerCustomersToolbar, PartnerCustomersWrapper, PartnerDetails, PartnerHomeHeader, PartnerImages, PartnerPanel, PartnerServiceCard, PartnerServiceTicketCard, PartnerServiceTicketsToolbar, PartnerServiceTicketsWrapper, PartnerSidebarMenu, PartnerWizardStepBrand, PartnerWizardStepServices, PartnerWizardStepServicesSelect, PartnerWizardStepServiceZones, PartnerWizardStepCta, PartnerWizardStepSocial, PartnerWizardStepHeader, PartnerWizardStepLayout, PartnerWizardSuccessHeader, PartnerWizardSuccessBody, PartnerWizardSteps, PasswordInput, PaymentBanner, PaymentReceipts, PdfButton, PeopleConnected, ProfileDetailsTab, ProfilePaymentTab, ProjectList, PropertyRecords, PropertyTaxes, ReadOnlyDynamicForm, ReadOnlyImage, ReadOnlyToggle, ReceiptAutofiler, ReceiptBody, ReceiptContent, ReceiptDetails, ReceiptFilters, ReceiptFooter, ReceiptHeader, ReceiptInfos, ReceiptItem, ReceiptItems, ReceiptPDF, ReceiptsDisplayOptions, ReceiptsFiled, ReceiptsHeader, ReceiptsInfo, ReceiptsReceivedContent, RecipientForm, RecipientsToShare, RecipientTab, RecordsInputs, ResendResetPassword, ResetPassword, ReviewBanner, RightPanel, RolePermissionsTab, RoomHeader, RoomsBoardTour, RoomsMenu, RoomsMenuMobile, RoomStep, RoomVideo, SalesTax, SatisfactionTile, SearchItemLoader, SearchRecords, SectionHeader, SendCommunication, ShareContactsContent, SharedAccounts, SharedHomeContent, SharedHomeHeader, ShareHome, ShareHomeConnections, ShareHomeForm, ShineTile, ShortPartnerTile, SignIn, SignUp, SkeletonBox, StartHomiSetup, StepHeader, StorageUsed, Subscription, SubscriptionCard, SubscriptionTable, Summary, TabsHeader, TextInput, ToBeDeletedBody, ToBeDeletedContent, ToBeDeletedFooter, ToBeDeletedHeader, TourButton, Trash, TrendingValue, TrialBanner, TutorialsButton, TwoFactor, TwoFactorDialog, TwoFactorSetting, UpdateList, UploadTile, UserDetails, ValueMonitor, VideoPlayer, VideoPlayerModal, ViewContactPanel, WeatherWidget, WidgetCarousel, WellDone, WizardBodyPadding, WizardStepGoal, WizardSuccessHeader, WizardTextHeader, WizardValueSummary, WizardValueSummaryBody, WizardValueSummaryFooter, YtdTile, } from './components';
2
- export { useCustomToast, useConfirmPropertyModel } from './hooks';
1
+ export { ActivateAccount, ActiveSubscription, AddCardBanner, AddEditContactPanel, AddFolder, AddHomeContent, AddHomeItem, AddHomeItemHeader, AddMedia, AddPopup, AddPropertyRecords, Address, AddTile, AddToHomefile, AlertBanner, AphwTile, AppBar, AppliancesReceived, AssignableReceipts, BackendAlert, BackHeader, BarDivider, BrandLogo, CalendarWidget, CancelAccount, CatalogPopup, CloudsAnimation, Close, ConfirmHomeDetails, ConfirmProperty, ConfirmPropertyBody, ConfirmPropertyFooter, ConfirmPropertyRecords, ContactList, ContactsContent, ContainerHeader, ControlledWizard, CreateDocumentHeader, CreateHouseholdItemHeader, CreditCardContainer, CreditCardError, CustomerTile, DeleteBanner, Dialog, DisplayFiles, DisplayFilesDetail, DisplayOptions, DisplayReceipts, DocumentMenu, DocumentNameHeader, DocumentPreview, DragDropArea, DynamicForm, EditAccountType, EditHomeBody, EditHomeFooter, EditHomeHeader, EditHomePanel, EditItemName, EmailPermissions, EmailValidation, Feedback, FileDetail, FilesUploader, FlowStep, FolderDetail, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, FolderSharing, FolderTypeSelection, FooterButtons, FooterDrawer, GenericBackHeader, GroupCard, GroupsContainer, GroupsHeader, Header, HelpContent, HomeAssistant, HomeAssistantPanel, HomeAssistantTutorial, HomeAssistantWizardPanel, HomeAssistantWizardSteps, HomeBoardGrid, HomeBoardTour, HomeCard, HomeCardWithRecipent, HomeDetailsContent, HomefileMonitoring, HomeHeader, HomiPresence, HomiVoice, InlineEditField, ProgressBar, RevealValueCard, StaggerReveal, HomeItemList, HomeItemManualInfo, HomeMonitor, HomeMonitorPanel, HomeMonitorSteps, HomeSharedWith, HomieAddItems, HomiSms, InboxForwardBanner, InboxTile, IncludePublicRecords, ItemFormPanel, ItemFormTabs, ItemNameHeader, ItemsReviewBanner, ItemSubTypeSelect, Launchpad, LaunchpadApplianceAutofiler, LaunchpadAppliancePanel, LaunchpadAutofilerBanner, LaunchpadReceiptAutofiler, LaunchpadReceiptPanel, LaunchpadTour, LeftPanel, Loading, MediaDetailsStep, MessageChatPanel, MessagePanel, MinimizedTile, MinimizedTiles, MonthlyCharge, MortgageInfo, MortgageInfoReadOnly, MoveModal, MyHomeCard, MyHomes, MyProfileBody, MyProfileContent, MyProfileFooter, MyProfileHeader, MyProfilePanel, NewCreditCard, NewCreditCardHeader, NewHomeDetails, NewParterDetails, NewPassword, NotBeChargedBanner, NotificationCard, Notifications, NotificationsPanel, NotificationsReminder, NpsScore, Overlay, PanelHeader, PartnerActiveSubscription, PartnerCatalogPanel, PartnerContent, PartnerCustomerCard, PartnerCustomerCode, PartnerCustomersToolbar, PartnerCustomersWrapper, PartnerDetails, PartnerHomeHeader, PartnerImages, PartnerPanel, PartnerServiceCard, PartnerServiceTicketCard, PartnerServiceTicketsToolbar, PartnerServiceTicketsWrapper, PartnerSidebarMenu, PartnerWizardStepBrand, PartnerWizardStepServices, PartnerWizardStepServicesSelect, PartnerWizardStepServiceZones, PartnerWizardStepCta, PartnerWizardStepSocial, PartnerWizardStepHeader, PartnerWizardStepLayout, PartnerWizardSuccessHeader, PartnerWizardSuccessBody, PartnerWizardSteps, PasswordInput, PaymentBanner, PaymentReceipts, PdfButton, PeopleConnected, ProfileDetailsTab, ProfilePaymentTab, ProjectList, PropertyRecords, PropertyTaxes, ReadOnlyDynamicForm, ReadOnlyImage, ReadOnlyToggle, ReceiptAutofiler, ReceiptBody, ReceiptContent, ReceiptDetails, ReceiptFilters, ReceiptFooter, ReceiptHeader, ReceiptInfos, ReceiptItem, ReceiptItems, ReceiptPDF, ReceiptsDisplayOptions, ReceiptsFiled, ReceiptsHeader, ReceiptsInfo, ReceiptsReceivedContent, RecipientForm, RecipientsToShare, RecipientTab, RecordsInputs, ResendResetPassword, ResetPassword, ReviewBanner, RightPanel, RolePermissionsTab, RoomHeader, RoomsBoardTour, RoomsMenu, RoomsMenuMobile, RoomStep, RoomVideo, SalesTax, SatisfactionTile, SearchItemLoader, SearchRecords, SectionHeader, SendCommunication, ShareContactsContent, SharedAccounts, SharedHomeContent, SharedHomeHeader, ShareHome, ShareHomeConnections, ShareHomeForm, ShineTile, ShortPartnerTile, SignIn, SignUp, SkeletonBox, StartHomiSetup, StepHeader, StorageUsed, Subscription, SubscriptionCard, SubscriptionTable, Summary, TabsHeader, TextInput, ToBeDeletedBody, ToBeDeletedContent, ToBeDeletedFooter, ToBeDeletedHeader, TourButton, Trash, TrendingValue, TrialBanner, TutorialsButton, TwoFactor, TwoFactorDialog, TwoFactorSetting, UpdateList, UploadTile, UserDetails, ValueMonitor, VideoPlayer, VideoPlayerModal, ViewContactPanel, WeatherWidget, WidgetCarousel, WellDone, WizardBodyPadding, WizardStepGoal, WizardStepPrompt, WizardSuccessHeader, WizardTextHeader, WizardValueSummary, WizardValueSummaryBody, WizardValueSummaryFooter, YtdTile, } from './components';
2
+ export { useCustomToast, useConfirmPropertyModel, usePrefersReducedMotion, useCountUp, useDirtySave, } from './hooks';
3
3
  export { useFilesUploader } from './hooks/folderPanel/useFilesUploader';
4
4
  export { randomColor, mapApiObjectToFormFields, mapForecastToWidget, } from './utils';
5
- export { Ambulance, CookTop, Contacts, GuestBedroom, MagnifyingGlassReport, Message, Messages, Register, Receipts, Price, BlueFolderShared, Calendar, Create, Notes, WallDecor, YellowFolder, EstValue, Billing, Inbox, } from './assets/images';
5
+ export { Ambulance, CookTop, Contacts, GuestBedroom, MagnifyingGlassReport, Message, Messages, Register, Receipts, Price, BlueFolderShared, Calendar, Create, Notes, WallDecor, YellowFolder, EstValue, Billing, Inbox, Plus, VideoIcon, } from './assets/images';
6
6
  export { homeAssistantWizardSteps, partnerWizardSteps } from './helpers';
7
7
  export { billingProxy, dynamicFormProxy, homeCardProxy, partnerContentProxy, partnerDetailsProxy, paymentMethodProxy, recordsInputsProxy, recordsInputsToDBProxy, userDetailsProxy, confirmAddressProxy, addressProxy, } from './proxies';
8
8
  import theme from './theme';
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- export { ActivateAccount, ActiveSubscription, AddCardBanner, AddEditContactPanel, AddFolder, AddHomeContent, AddHomeItem, AddHomeItemHeader, AddMedia, AddPopup, AddPropertyRecords, Address, AddTile, AddToHomefile, AlertBanner, AphwTile, AppBar, AppliancesReceived, AssignableReceipts, BackendAlert, BackHeader, BarDivider, CalendarWidget, CancelAccount, CatalogPopup, CloudsAnimation, ConfirmHomeDetails, ConfirmProperty, ConfirmPropertyBody, ConfirmPropertyFooter, ConfirmPropertyRecords, ContactList, ContactsContent, ContainerHeader, ControlledWizard, CreateDocumentHeader, CreateHouseholdItemHeader, CreditCardContainer, CreditCardError, CustomerTile, DeleteBanner, Dialog, DisplayFiles, DisplayFilesDetail, DisplayOptions, DisplayReceipts, DocumentMenu, DocumentNameHeader, DocumentPreview, DragDropArea, DynamicForm, EditAccountType, EditHomeBody, EditHomeFooter, EditHomeHeader, EditHomePanel, EditItemName, EmailPermissions, EmailValidation, Feedback, FileDetail, FilesUploader, FlowStep, FolderDetail, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, FolderSharing, FolderTypeSelection, FooterButtons, FooterDrawer, GenericBackHeader, GroupCard, GroupsContainer, GroupsHeader, Header, HelpContent, HomeAssistant, HomeAssistantPanel, HomeAssistantTutorial, HomeAssistantWizardPanel, HomeAssistantWizardSteps, HomeBoardGrid, HomeBoardTour, HomeCard, HomeCardWithRecipent, HomeDetailsContent, HomefileMonitoring, HomeHeader, HomeItemList, HomeItemManualInfo, HomeMonitor, HomeMonitorPanel, HomeMonitorSteps, HomeSharedWith, HomieAddItems, HomiSms, InboxForwardBanner, InboxTile, ItemFormPanel, ItemFormTabs, ItemNameHeader, ItemsReviewBanner, ItemSubTypeSelect, Launchpad, LaunchpadApplianceAutofiler, LaunchpadAppliancePanel, LaunchpadAutofilerBanner, LaunchpadReceiptAutofiler, LaunchpadReceiptPanel, LaunchpadTour, LeftPanel, Loading, MediaDetailsStep, MessageChatPanel, MessagePanel, MinimizedTile, MinimizedTiles, MonthlyCharge, MortgageInfo, MortgageInfoReadOnly, MoveModal, MyHomes, MyProfileBody, MyProfileContent, MyProfileFooter, MyProfileHeader, MyProfilePanel, NewCreditCard, NewCreditCardHeader, NewHomeDetails, NewParterDetails, NewPassword, NotBeChargedBanner, NotificationCard, Notifications, NotificationsPanel, NotificationsReminder, NpsScore, Overlay, PanelHeader, PartnerActiveSubscription, PartnerCatalogPanel, PartnerContent, PartnerCustomerCard, PartnerCustomerCode, PartnerCustomersToolbar, PartnerCustomersWrapper, PartnerDetails, PartnerHomeHeader, PartnerImages, PartnerPanel, PartnerServiceCard, PartnerServiceTicketCard, PartnerServiceTicketsToolbar, PartnerServiceTicketsWrapper, PartnerSidebarMenu, PartnerWizardStepBrand, PartnerWizardStepServices, PartnerWizardStepServicesSelect, PartnerWizardStepServiceZones, PartnerWizardStepCta, PartnerWizardStepSocial, PartnerWizardStepHeader, PartnerWizardStepLayout, PartnerWizardSuccessHeader, PartnerWizardSuccessBody, PartnerWizardSteps, PasswordInput, PaymentBanner, PaymentReceipts, PdfButton, PeopleConnected, ProfileDetailsTab, ProfilePaymentTab, ProjectList, PropertyRecords, PropertyTaxes, ReadOnlyDynamicForm, ReadOnlyImage, ReadOnlyToggle, ReceiptAutofiler, ReceiptBody, ReceiptContent, ReceiptDetails, ReceiptFilters, ReceiptFooter, ReceiptHeader, ReceiptInfos, ReceiptItem, ReceiptItems, ReceiptPDF, ReceiptsDisplayOptions, ReceiptsFiled, ReceiptsHeader, ReceiptsInfo, ReceiptsReceivedContent, RecipientForm, RecipientsToShare, RecipientTab, RecordsInputs, ResendResetPassword, ResetPassword, ReviewBanner, RightPanel, RolePermissionsTab, RoomHeader, RoomsBoardTour, RoomsMenu, RoomsMenuMobile, RoomStep, RoomVideo, SalesTax, SatisfactionTile, SearchItemLoader, SearchRecords, SectionHeader, SendCommunication, ShareContactsContent, SharedAccounts, SharedHomeContent, SharedHomeHeader, ShareHome, ShareHomeConnections, ShareHomeForm, ShineTile, ShortPartnerTile, SignIn, SignUp, SkeletonBox, StartHomiSetup, StepHeader, StorageUsed, Subscription, SubscriptionCard, SubscriptionTable, Summary, TabsHeader, TextInput, ToBeDeletedBody, ToBeDeletedContent, ToBeDeletedFooter, ToBeDeletedHeader, TourButton, Trash, TrendingValue, TrialBanner, TutorialsButton, TwoFactor, TwoFactorDialog, TwoFactorSetting, UpdateList, UploadTile, UserDetails, ValueMonitor, VideoPlayer, VideoPlayerModal, ViewContactPanel, WeatherWidget, WidgetCarousel, WellDone, WizardBodyPadding, WizardStepGoal, WizardSuccessHeader, WizardTextHeader, WizardValueSummary, WizardValueSummaryBody, WizardValueSummaryFooter, YtdTile, } from './components';
2
- export { useCustomToast, useConfirmPropertyModel } from './hooks';
1
+ export { ActivateAccount, ActiveSubscription, AddCardBanner, AddEditContactPanel, AddFolder, AddHomeContent, AddHomeItem, AddHomeItemHeader, AddMedia, AddPopup, AddPropertyRecords, Address, AddTile, AddToHomefile, AlertBanner, AphwTile, AppBar, AppliancesReceived, AssignableReceipts, BackendAlert, BackHeader, BarDivider, BrandLogo, CalendarWidget, CancelAccount, CatalogPopup, CloudsAnimation, Close, ConfirmHomeDetails, ConfirmProperty, ConfirmPropertyBody, ConfirmPropertyFooter, ConfirmPropertyRecords, ContactList, ContactsContent, ContainerHeader, ControlledWizard, CreateDocumentHeader, CreateHouseholdItemHeader, CreditCardContainer, CreditCardError, CustomerTile, DeleteBanner, Dialog, DisplayFiles, DisplayFilesDetail, DisplayOptions, DisplayReceipts, DocumentMenu, DocumentNameHeader, DocumentPreview, DragDropArea, DynamicForm, EditAccountType, EditHomeBody, EditHomeFooter, EditHomeHeader, EditHomePanel, EditItemName, EmailPermissions, EmailValidation, Feedback, FileDetail, FilesUploader, FlowStep, FolderDetail, FolderDetailBody, FolderDetailContent, FolderDetailFooter, FolderDetailHeader, FolderInfo, FolderSharing, FolderTypeSelection, FooterButtons, FooterDrawer, GenericBackHeader, GroupCard, GroupsContainer, GroupsHeader, Header, HelpContent, HomeAssistant, HomeAssistantPanel, HomeAssistantTutorial, HomeAssistantWizardPanel, HomeAssistantWizardSteps, HomeBoardGrid, HomeBoardTour, HomeCard, HomeCardWithRecipent, HomeDetailsContent, HomefileMonitoring, HomeHeader, HomiPresence, HomiVoice, InlineEditField, ProgressBar, RevealValueCard, StaggerReveal, HomeItemList, HomeItemManualInfo, HomeMonitor, HomeMonitorPanel, HomeMonitorSteps, HomeSharedWith, HomieAddItems, HomiSms, InboxForwardBanner, InboxTile, IncludePublicRecords, ItemFormPanel, ItemFormTabs, ItemNameHeader, ItemsReviewBanner, ItemSubTypeSelect, Launchpad, LaunchpadApplianceAutofiler, LaunchpadAppliancePanel, LaunchpadAutofilerBanner, LaunchpadReceiptAutofiler, LaunchpadReceiptPanel, LaunchpadTour, LeftPanel, Loading, MediaDetailsStep, MessageChatPanel, MessagePanel, MinimizedTile, MinimizedTiles, MonthlyCharge, MortgageInfo, MortgageInfoReadOnly, MoveModal, MyHomeCard, MyHomes, MyProfileBody, MyProfileContent, MyProfileFooter, MyProfileHeader, MyProfilePanel, NewCreditCard, NewCreditCardHeader, NewHomeDetails, NewParterDetails, NewPassword, NotBeChargedBanner, NotificationCard, Notifications, NotificationsPanel, NotificationsReminder, NpsScore, Overlay, PanelHeader, PartnerActiveSubscription, PartnerCatalogPanel, PartnerContent, PartnerCustomerCard, PartnerCustomerCode, PartnerCustomersToolbar, PartnerCustomersWrapper, PartnerDetails, PartnerHomeHeader, PartnerImages, PartnerPanel, PartnerServiceCard, PartnerServiceTicketCard, PartnerServiceTicketsToolbar, PartnerServiceTicketsWrapper, PartnerSidebarMenu, PartnerWizardStepBrand, PartnerWizardStepServices, PartnerWizardStepServicesSelect, PartnerWizardStepServiceZones, PartnerWizardStepCta, PartnerWizardStepSocial, PartnerWizardStepHeader, PartnerWizardStepLayout, PartnerWizardSuccessHeader, PartnerWizardSuccessBody, PartnerWizardSteps, PasswordInput, PaymentBanner, PaymentReceipts, PdfButton, PeopleConnected, ProfileDetailsTab, ProfilePaymentTab, ProjectList, PropertyRecords, PropertyTaxes, ReadOnlyDynamicForm, ReadOnlyImage, ReadOnlyToggle, ReceiptAutofiler, ReceiptBody, ReceiptContent, ReceiptDetails, ReceiptFilters, ReceiptFooter, ReceiptHeader, ReceiptInfos, ReceiptItem, ReceiptItems, ReceiptPDF, ReceiptsDisplayOptions, ReceiptsFiled, ReceiptsHeader, ReceiptsInfo, ReceiptsReceivedContent, RecipientForm, RecipientsToShare, RecipientTab, RecordsInputs, ResendResetPassword, ResetPassword, ReviewBanner, RightPanel, RolePermissionsTab, RoomHeader, RoomsBoardTour, RoomsMenu, RoomsMenuMobile, RoomStep, RoomVideo, SalesTax, SatisfactionTile, SearchItemLoader, SearchRecords, SectionHeader, SendCommunication, ShareContactsContent, SharedAccounts, SharedHomeContent, SharedHomeHeader, ShareHome, ShareHomeConnections, ShareHomeForm, ShineTile, ShortPartnerTile, SignIn, SignUp, SkeletonBox, StartHomiSetup, StepHeader, StorageUsed, Subscription, SubscriptionCard, SubscriptionTable, Summary, TabsHeader, TextInput, ToBeDeletedBody, ToBeDeletedContent, ToBeDeletedFooter, ToBeDeletedHeader, TourButton, Trash, TrendingValue, TrialBanner, TutorialsButton, TwoFactor, TwoFactorDialog, TwoFactorSetting, UpdateList, UploadTile, UserDetails, ValueMonitor, VideoPlayer, VideoPlayerModal, ViewContactPanel, WeatherWidget, WidgetCarousel, WellDone, WizardBodyPadding, WizardStepGoal, WizardStepPrompt, WizardSuccessHeader, WizardTextHeader, WizardValueSummary, WizardValueSummaryBody, WizardValueSummaryFooter, YtdTile, } from './components';
2
+ export { useCustomToast, useConfirmPropertyModel, usePrefersReducedMotion, useCountUp, useDirtySave, } from './hooks';
3
3
  export { useFilesUploader } from './hooks/folderPanel/useFilesUploader';
4
4
  export { randomColor, mapApiObjectToFormFields, mapForecastToWidget, } from './utils';
5
- export { Ambulance, CookTop, Contacts, GuestBedroom, MagnifyingGlassReport, Message, Messages, Register, Receipts, Price, BlueFolderShared, Calendar, Create, Notes, WallDecor, YellowFolder, EstValue, Billing, Inbox, } from './assets/images';
5
+ export { Ambulance, CookTop, Contacts, GuestBedroom, MagnifyingGlassReport, Message, Messages, Register, Receipts, Price, BlueFolderShared, Calendar, Create, Notes, WallDecor, YellowFolder, EstValue, Billing, Inbox, Plus, VideoIcon, } from './assets/images';
6
6
  export { homeAssistantWizardSteps, partnerWizardSteps } from './helpers';
7
7
  export { billingProxy, dynamicFormProxy, homeCardProxy, partnerContentProxy, partnerDetailsProxy, paymentMethodProxy, recordsInputsProxy, recordsInputsToDBProxy, userDetailsProxy, confirmAddressProxy, addressProxy, } from './proxies';
8
8
  import theme from './theme';
@@ -1,13 +1,16 @@
1
1
  import { AIGridFieldI, AlertFieldType, AlertTabType, FolderFileI, MenuItemI, PartnerFooterI, TileCtaI } from '../../../interfaces';
2
2
  export type KindTypes = 'ai-image' | 'ai-grid' | 'checkbox' | 'checkbox-agreement' | 'checkbox-group' | 'collapsible' | 'currency' | 'date' | 'email' | 'file' | 'grid' | 'group' | 'hidden' | 'notes' | 'number' | 'radio' | 'rating' | 'select' | 'string' | 'switch' | 'telephone' | 'text' | 'textarea' | 'default' | 'video' | UIKindTypes | HomeItemTypes | AlertTabType | AlertFieldType | WizardTypes;
3
3
  export type UIKindTypes = 'tile-body' | 'tile-body-logo' | 'tile-body-header' | 'tile-body-section' | 'tile-body-section-grid' | 'tile-body-partner-image' | 'tile-body-description' | 'tile-form' | 'tile-body-action' | 'vertical-icon' | 'primary-cta' | 'secondary-cta';
4
- export type HomeItemTypes = 'appliances' | 'images' | 'guidelines' | 'item-related' | 'item-icon-btn';
5
- export type IconTypes = '68' | 'barcode' | 'battery' | 'billing' | 'book-opened' | 'book' | 'calc' | 'calendar-drop' | 'calendar' | 'calendar2' | 'check' | 'co2' | 'company' | 'contact' | 'date' | 'default' | 'detector' | 'drop' | 'electricity' | 'fire' | 'flower' | 'folder' | 'foundation' | 'gear' | 'goldbars' | 'heart' | 'heater' | 'house' | 'image' | 'life-preserver' | 'light' | 'mobile-drop' | 'notes' | 'palette' | 'people' | 'plant' | 'plate' | 'pool' | 'pressure-washer' | 'price' | 'rating' | 'receipt' | 'registry' | 'roof' | 'search-person' | 'solar-panel' | 'sprinkler' | 'target' | 'title' | 'tools' | 'umbrella' | 'wallet' | 'warranty' | 'water' | 'wind' | 'battery-smoke-detector' | 'cooktop' | 'dish-washer' | 'dryer' | 'filter-size' | 'fire-extinguisher' | 'freezer' | 'fridge' | 'furnace' | 'hood' | 'in-wall' | 'jacuzzi' | 'landscape-lights' | 'microwave' | 'mr-boxes' | 'mr-clock' | 'mr-couch' | 'mr-hand' | 'mr-make-ready' | 'mr-rental' | 'other' | 'oven' | 'range' | 'sprinkler-system' | 'sprinkler-system2' | 'tank-water' | 'tankless-water' | 'washer' | 'wired-smoke-detector' | UIIconTypes;
4
+ export type HomeItemTypes = 'appliances' | 'images' | 'guidelines' | 'item-related' | 'item-icon-btn' | 'warranty' | 'purchase' | 'overview' | 'history';
5
+ export type IconTypes = '68' | 'barcode' | 'battery' | 'billing' | 'book-opened' | 'book' | 'calc' | 'calendar-drop' | 'calendar' | 'calendar2' | 'check' | 'co2' | 'company' | 'contact' | 'date' | 'default' | 'detector' | 'drop' | 'electricity' | 'fire' | 'flower' | 'folder' | 'foundation' | 'gear' | 'goldbars' | 'heart' | 'heater' | 'house' | 'image' | 'life-preserver' | 'light' | 'mobile-drop' | 'notes' | 'palette' | 'people' | 'plant' | 'plate' | 'pool' | 'pdf' | 'pressure-washer' | 'price' | 'rating' | 'receipt' | 'registry' | 'roof' | 'search-person' | 'solar-panel' | 'sprinkler' | 'target' | 'title' | 'tools' | 'umbrella' | 'wallet' | 'warranty' | 'water' | 'wind' | 'battery-smoke-detector' | 'cooktop' | 'dish-washer' | 'dryer' | 'filter-size' | 'fire-extinguisher' | 'freezer' | 'fridge' | 'furnace' | 'hood' | 'in-wall' | 'jacuzzi' | 'landscape-lights' | 'microwave' | 'mr-boxes' | 'mr-clock' | 'mr-couch' | 'mr-hand' | 'mr-make-ready' | 'mr-rental' | 'other' | 'oven' | 'range' | 'sprinkler-system' | 'sprinkler-system2' | 'tank-water' | 'tankless-water' | 'washer' | 'wired-smoke-detector' | UIIconTypes;
6
6
  export type UIIconTypes = 'sh-pressure' | 'sh-window' | 'sh-roof' | 'sh-lights' | 'sh-gutter' | 'sh-home' | 'sh-house' | 'aa-mowing' | 'aa-fertilization' | 'aa-disease' | 'aa-weed' | 'aa-dressing' | 'aa-pest' | 'boc-service' | 'boc-filter' | 'boc-repair' | 'boc-renovation' | 'boc-green' | 'boc-warranty' | 'filter-size' | string;
7
- export type WizardTypes = 'home-wizard' | 'home-wizard-header' | 'home-wizard-initial-setup' | 'home-wizard-step-options';
7
+ export type WizardTypes = 'home-wizard' | 'home-wizard-header' | 'home-wizard-initial-setup' | 'home-wizard-step-options' | 'home-wizard-select-card';
8
8
  export type ValueTypes = string | string[] | number | boolean;
9
9
  export type OptionsTypes = string[] | number[] | null;
10
+ export type PanelTab = 'details' | 'specs' | 'history';
10
11
  export interface ReportI {
12
+ /** Optional accent color (e.g. a history event's date-pennant color). */
13
+ accentColor?: string;
11
14
  canBeHidden?: boolean;
12
15
  children?: ReportI[];
13
16
  comments?: string;
@@ -18,6 +21,7 @@ export interface ReportI {
18
21
  link?: string;
19
22
  name?: string;
20
23
  options?: OptionsTypes;
24
+ tab?: PanelTab;
21
25
  type: KindTypes;
22
26
  value: ValueTypes;
23
27
  visible?: boolean;
@@ -0,0 +1,2 @@
1
+ import { ReportI } from '../../../../interfaces';
2
+ export type ReadOnlyOverviewI = ReportI;
@@ -0,0 +1,5 @@
1
+ import { ReportI } from '../../../../interfaces';
2
+ export interface ReadOnlyPurchaseDetailsI extends ReportI {
3
+ onEdit?: (id: string) => void;
4
+ onClick?: (id: string) => void;
5
+ }
@@ -0,0 +1,27 @@
1
+ import { IconTypes, ValueTypes } from '../../../../interfaces';
2
+ /**
3
+ * The three warranty states the banner can render. Derived upstream from the
4
+ * item's purchase date + parsed warranty term (see tickets #356/#357):
5
+ * - `underWarranty` — still covered
6
+ * - `expired` — warranty term has lapsed
7
+ * - `recall` — an active manufacturer recall
8
+ *
9
+ * HONESTY: `recall` must ONLY be passed with REAL recall data. There is no
10
+ * recall data source in the platform today (#357), so callers must not pass
11
+ * state="recall" until one exists — the banner never fabricates an alert.
12
+ */
13
+ export type WarrantyBannerState = 'underWarranty' | 'expired' | 'recall';
14
+ export interface ReadOnlyWarrantyBannerI {
15
+ /** Status message, e.g. "This item is under the manufacturer's warranty till 2030." */
16
+ value?: ValueTypes;
17
+ /** `fieldIcons` key for the badge glyph (e.g. 'boc-warranty'). */
18
+ icon?: IconTypes;
19
+ /** Which state to render. Defaults to `underWarranty`. */
20
+ state?: WarrantyBannerState;
21
+ /**
22
+ * Optional destination for the banner. Down the road: a recall notice on
23
+ * `recall`, or a "purchase a warranty" link on `expired`. When present the
24
+ * message becomes a link.
25
+ */
26
+ link?: string;
27
+ }
@@ -1,2 +1,5 @@
1
1
  export * from './ReadOnlyAppliances.interface';
2
2
  export * from './ReadOnlyGuidelines.interface';
3
+ export * from './ReadOnlyOverview.interface';
4
+ export * from './ReadOnlyPurchaseDetails.interface';
5
+ export * from './ReadOnlyWarrantyBanner.interface';
@@ -1,2 +1,5 @@
1
1
  export * from './ReadOnlyAppliances.interface';
2
2
  export * from './ReadOnlyGuidelines.interface';
3
+ export * from './ReadOnlyOverview.interface';
4
+ export * from './ReadOnlyPurchaseDetails.interface';
5
+ export * from './ReadOnlyWarrantyBanner.interface';
@@ -5,3 +5,4 @@ export interface ViewingHomeItemPanelI {
5
5
  onEdit: (id: string) => void;
6
6
  onClick?: (id: string) => void;
7
7
  }
8
+ export type ViewingHomeItemBodyI = Omit<ViewingHomeItemPanelI, 'onClose'>;
@@ -0,0 +1,9 @@
1
+ export interface HomiPresenceI {
2
+ /**
3
+ * v1 presence states (presentation-only, no authority/meaning). `ambient` and
4
+ * `tap-to-talk` are future — do NOT build them here.
5
+ */
6
+ state?: 'guiding' | 'working';
7
+ /** Label shown beside the presence chip. */
8
+ label?: string;
9
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ export interface ProgressBarI {
2
+ /** Progress as a fraction complete (0–1). */
3
+ value: number;
4
+ /** Fill color token. */
5
+ color?: string;
6
+ /** Track color token. */
7
+ trackColor?: string;
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ export interface RevealFactI {
2
+ label: string;
3
+ value: string;
4
+ }
5
+ export interface RevealValueCardI {
6
+ /** Hero value (e.g. estimated home value) — animates via count-up on reveal. */
7
+ value: number;
8
+ /** Prefix for the hero value (e.g. '$'). */
9
+ valuePrefix?: string;
10
+ /** 2-column facts grid (year built / sqft / beds / …). */
11
+ facts?: RevealFactI[];
12
+ /** Secondary values row shown below the facts grid. */
13
+ subvals?: RevealFactI[];
14
+ /** Optional 30×30 thumbnails (e.g. comps / photos). */
15
+ thumbs?: string[];
16
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import { PropsWithChildren } from 'react';
2
+ export interface StaggerRevealI extends PropsWithChildren {
3
+ /** Delay between each child's entrance, in seconds (POC ≈ 0.07). */
4
+ stagger?: number;
5
+ /** Initial delay before the first child, in seconds. */
6
+ delay?: number;
7
+ /** Column gap between children (Chakra spacing token), so it can replace a Stack. */
8
+ spacing?: string | number;
9
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export * from './HomiPresence.interface';
2
+ export * from './ProgressBar.interface';
3
+ export * from './RevealValueCard.interface';
4
+ export * from './StaggerReveal.interface';
@@ -0,0 +1,4 @@
1
+ export * from './HomiPresence.interface';
2
+ export * from './ProgressBar.interface';
3
+ export * from './RevealValueCard.interface';
4
+ export * from './StaggerReveal.interface';
@@ -1,5 +1,6 @@
1
1
  export * from './AddItemWizard';
2
2
  export * from './appliances';
3
+ export * from './homi';
3
4
  export * from './apis';
4
5
  export * from './appBar';
5
6
  export * from './badge';
@@ -1,5 +1,6 @@
1
1
  export * from './AddItemWizard';
2
2
  export * from './appliances';
3
+ export * from './homi';
3
4
  export * from './apis';
4
5
  export * from './appBar';
5
6
  export * from './badge';
@@ -0,0 +1,7 @@
1
+ export interface InlineEditFieldI {
2
+ /** Prepopulated value, edited in place. */
3
+ value: string;
4
+ /** Called with the new value when the user saves. */
5
+ onSave?: (value: string) => void;
6
+ placeholder?: string;
7
+ }
@@ -1,5 +1,5 @@
1
1
  import { InputProps } from '@chakra-ui/react';
2
- export interface InputI extends InputProps {
2
+ export interface InputI extends Omit<InputProps, 'variant'> {
3
3
  autoCapitalize?: string;
4
4
  autoCorrect?: string;
5
5
  errorMessage?: string;
@@ -12,4 +12,9 @@ export interface InputI extends InputProps {
12
12
  value: string;
13
13
  showLabel?: boolean;
14
14
  hint?: string;
15
+ /**
16
+ * `'default'` (floating LabeledField) or `'conversational'` — a bare
17
+ * bottom-border input (no LabeledField) for the Typeform-style wizard.
18
+ */
19
+ variant?: 'default' | 'conversational';
15
20
  }
@@ -1,4 +1,5 @@
1
1
  export * from './ControlledInput.interface';
2
+ export * from './InlineEditField.interface';
2
3
  export * from './DatePicker.interface';
3
4
  export * from './EditFileUploader.interface';
4
5
  export * from './Input.interface';
@@ -1,4 +1,5 @@
1
1
  export * from './ControlledInput.interface';
2
+ export * from './InlineEditField.interface';
2
3
  export * from './DatePicker.interface';
3
4
  export * from './EditFileUploader.interface';
4
5
  export * from './Input.interface';
@@ -23,4 +23,7 @@ export interface AddHomeContentI {
23
23
  userFirstName?: string;
24
24
  values?: HomeFormI;
25
25
  isWizard?: boolean;
26
+ /** Show the home-name field. Off in the simplified wizard, where the home is
27
+ * named at the reveal step instead. Defaults on to preserve add-home flow. */
28
+ showName?: boolean;
26
29
  }
@@ -2,6 +2,7 @@ import { ReactNode } from 'react';
2
2
  export interface MyProfileBodyI {
3
3
  account?: ReactNode;
4
4
  details?: ReactNode;
5
+ defaultIndex?: number;
5
6
  email?: ReactNode;
6
7
  isLoading: boolean;
7
8
  payment?: ReactNode;
@@ -1,9 +1,18 @@
1
1
  export interface HomiSmsFormI {
2
- sms?: string;
2
+ enabled?: boolean;
3
+ phone?: string;
3
4
  }
4
5
  export interface HomiSmsI {
5
6
  mode?: 'full' | 'phone-only';
6
- sms?: string;
7
+ /** Initial toggle state — whether Homi SMS messaging is enabled. */
8
+ enabled?: boolean;
9
+ /**
10
+ * Initial phone number. The app pre-fills this from the user's number when
11
+ * 2FA is set to SMS/mobile, so the same number carries over automatically.
12
+ */
13
+ phone?: string;
14
+ /** Link to the SMS messaging consent language (content owned by legal). */
15
+ consentUrl?: string;
7
16
  loading?: boolean;
8
17
  onChange?: (value: HomiSmsFormI) => void;
9
18
  onSave?: (value: HomiSmsFormI) => void;
@@ -5,5 +5,10 @@ export interface RoomHeaderI {
5
5
  onSubmit: (room: RoomItemI) => void;
6
6
  room: RoomItemI;
7
7
  roomAmount: string;
8
+ /**
9
+ * Sum of item ESTIMATED values (est-value-field), shown as a separate "est."
10
+ * line — never blended with roomAmount (amount paid). Hidden when 0/absent.
11
+ */
12
+ roomEstimatedAmount?: string;
8
13
  disabled?: boolean;
9
14
  }
@@ -25,5 +25,11 @@ export type ControlledWizardI<Key extends string = string> = {
25
25
  height?: string;
26
26
  headerBlink?: boolean;
27
27
  footerBlink?: boolean;
28
+ /**
29
+ * Body step-transition idiom. `'crossfade'` (default) = the existing
30
+ * opacity/y/blur; `'directional'` = the wizard's horizontal slide + a subtle
31
+ * enter-flip (POC). Both are reduced-motion gated.
32
+ */
33
+ transition?: 'crossfade' | 'directional';
28
34
  } & (ControlledWizardLegacyProps | ControlledWizardKeyedProps<Key>);
29
35
  export {};
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+ export interface WizardStepPromptI {
3
+ /** Step marker, e.g. "1 →". Omit on the success / hand-off step. */
4
+ marker?: ReactNode;
5
+ /** Homi's prompt — the bold headline. Authored by the mind, not hardcoded. */
6
+ title: string;
7
+ /** Optional supporting line under the prompt. */
8
+ subtitle?: string;
9
+ }
@@ -1,4 +1,5 @@
1
1
  export * from './ControlledWizard.interface';
2
2
  export * from './WizardTextHeader.interface';
3
+ export * from './WizardStepPrompt.interface';
3
4
  export * from './WizardSuccessHeader.interface';
4
5
  export * from './WizardValueSummary.interface';
@@ -1,4 +1,5 @@
1
1
  export * from './ControlledWizard.interface';
2
2
  export * from './WizardTextHeader.interface';
3
+ export * from './WizardStepPrompt.interface';
3
4
  export * from './WizardSuccessHeader.interface';
4
5
  export * from './WizardValueSummary.interface';
@@ -0,0 +1,4 @@
1
+ import { Meta } from '@storybook/react';
2
+ declare const _default: Meta;
3
+ export default _default;
4
+ export declare const ApplianceCard: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box } from '@chakra-ui/react';
3
+ import { ReadOnlyAppliances } from '../../../components';
4
+ import { faker } from '@faker-js/faker';
5
+ export default {
6
+ title: 'Components/Forms/ReadOnlyDynamicForm',
7
+ component: ReadOnlyAppliances,
8
+ };
9
+ const images = [
10
+ faker.image.urlPicsumPhotos(),
11
+ faker.image.urlPicsumPhotos(),
12
+ faker.image.urlPicsumPhotos(),
13
+ faker.image.urlPicsumPhotos(),
14
+ ];
15
+ // Renders the appliance card the way the ReadOnlyDynamicForm switch does:
16
+ // name = "APPLIANCES" header, value = the item name, description, and typed
17
+ // children (images gallery, rating, and text field rows Brand/Model/Serial).
18
+ export const ApplianceCard = () => (_jsx(Box, { w: ['full', '500px'], children: _jsx(ReadOnlyAppliances, { id: "appliance", name: "Appliances", value: "Refrigerator", description: "KitchenAid Counter-depth 20-cu ft French Door Refrigerator with Ice Maker and Water dispenser (Stainless Steel) ENERGY STAR", onEdit: () => undefined, type: "appliances",
19
+ // eslint-disable-next-line react/no-children-prop
20
+ children: [
21
+ { id: 'imgs', type: 'images', value: images },
22
+ { id: 'rating', type: 'rating', value: 4 },
23
+ { id: 'brand', type: 'text', name: 'Brand', value: 'Kitchen Aid' },
24
+ { id: 'model', type: 'text', name: 'Model#', value: 'KRFC300ESS' },
25
+ { id: 'serial', type: 'text', name: 'Serial #', value: '' },
26
+ { id: 'retail', type: 'currency', name: 'Retail Price', value: '3125.12' },
27
+ {
28
+ id: 'replacement',
29
+ type: 'currency',
30
+ name: 'Est Replacement Cost',
31
+ value: '1895.03',
32
+ },
33
+ ] }) }));
@@ -0,0 +1,4 @@
1
+ import { Meta } from '@storybook/react';
2
+ declare const _default: Meta;
3
+ export default _default;
4
+ export declare const WarrantyBannerStates: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Stack, Text } from '@chakra-ui/react';
3
+ import { ReadOnlyWarrantyBanner } from '../../../components';
4
+ export default {
5
+ title: 'Components/Forms/ReadOnlyDynamicForm',
6
+ component: ReadOnlyWarrantyBanner,
7
+ };
8
+ // All three warranty states. `recall` is shown here for design review only —
9
+ // in production it stays dark until a real recall data source exists (#357).
10
+ export const WarrantyBannerStates = () => (_jsx(Box, { p: "base", bg: "neutral.white", w: ['full', '540px'], children: _jsxs(Stack, { spacing: "4", children: [_jsxs(Box, { children: [_jsx(Text, { fontSize: "xs", textTransform: "uppercase", color: "gray.2", mb: "1", children: "Under warranty" }), _jsx(ReadOnlyWarrantyBanner, { state: "underWarranty", icon: "warranty", value: "This item is under the manufacturer's warranty till 2030." })] }), _jsxs(Box, { children: [_jsx(Text, { fontSize: "xs", textTransform: "uppercase", color: "gray.2", mb: "1", children: "Expired" }), _jsx(ReadOnlyWarrantyBanner, { state: "expired", icon: "warranty", value: "This item's manufacturer warranty expired in 2022." })] }), _jsxs(Box, { children: [_jsx(Text, { fontSize: "xs", textTransform: "uppercase", color: "gray.2", mb: "1", children: "Recall (design-review only \u2014 dark in prod until #357)" }), _jsx(ReadOnlyWarrantyBanner, { state: "recall", icon: "warranty", value: "This item has an active manufacturer recall." })] })] }) }));
@@ -0,0 +1,4 @@
1
+ import { Meta } from '@storybook/react';
2
+ declare const _default: Meta;
3
+ export default _default;
4
+ export declare const Timeline: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Flex } from '@chakra-ui/react';
3
+ import { AddDocuments, ReadOnlyHistory } from '../../components';
4
+ import { faker } from '@faker-js/faker';
5
+ // Two derivatives of the core HistoryCard, from the XD "Card" / "Card 2".
6
+ const added = {
7
+ id: 'hist-added',
8
+ type: 'history',
9
+ name: 'Added Refrigerator',
10
+ value: '',
11
+ label: '01 23 2017',
12
+ accentColor: '#1E6388',
13
+ children: [
14
+ { id: 'ha-img', type: 'images', value: faker.image.urlPicsumPhotos() },
15
+ { id: 'ha-brand', type: 'text', name: 'Brand', value: 'Kitchen Aid' },
16
+ { id: 'ha-model', type: 'text', name: 'Model#', value: 'KRFC300ESS' },
17
+ { id: 'ha-rcpt', type: 'currency', name: 'Receipt', icon: 'pdf', value: '3125.12' },
18
+ ],
19
+ };
20
+ const service = {
21
+ id: 'hist-service',
22
+ type: 'history',
23
+ name: 'Service Record',
24
+ value: 'Acme Appliance Repair',
25
+ label: '01 15 2017',
26
+ accentColor: '#4E8A6B',
27
+ children: [
28
+ {
29
+ id: 'hs-logo',
30
+ type: 'images',
31
+ value: "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='48' height='48'><rect width='48' height='48' fill='%23E4E4E4'/><text x='24' y='28' font-family='Arial, sans-serif' font-size='9' fill='%23525458' text-anchor='middle'>Logo</text></svg>",
32
+ },
33
+ { id: 'hs-a1', type: 'text', value: '123 South First Avenue' },
34
+ { id: 'hs-a2', type: 'text', value: 'Suite 431' },
35
+ { id: 'hs-a3', type: 'text', value: 'Austin, TX 78732' },
36
+ { id: 'hs-a4', type: 'text', value: '512 365 5541' },
37
+ { id: 'hs-inv', type: 'currency', name: 'Invoice', icon: 'pdf', value: '345.12' },
38
+ ],
39
+ };
40
+ export default {
41
+ title: 'Components/HomeItems/ReadOnlyHistory',
42
+ component: ReadOnlyHistory,
43
+ };
44
+ // Full History tab: Add Documents on top, then the rail + events (mirrors
45
+ // ViewingHomeItemPanel's history section) so the layout is verifiable here.
46
+ export const Timeline = () => (_jsxs(Flex, { direction: "column", w: "500px", minH: "700px", bg: "lightBlue.1", children: [_jsx(AddDocuments, {}), _jsxs(Box, { position: "relative", flex: "1", children: [_jsx(Box, { position: "absolute", left: "0", top: "0", bottom: "0", w: "131px", bg: "#E9EDEF" }), _jsxs(Box, { position: "relative", children: [_jsx(ReadOnlyHistory, Object.assign({}, added)), _jsx(ReadOnlyHistory, Object.assign({}, service))] })] })] }));
@@ -0,0 +1,5 @@
1
+ import { Meta } from '@storybook/react';
2
+ declare const _default: Meta;
3
+ export default _default;
4
+ export declare const Overview: () => import("react/jsx-runtime").JSX.Element;
5
+ export declare const SpecsTab: () => import("react/jsx-runtime").JSX.Element;