@homefile/components-v2 2.3.1 → 2.5.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 (203) hide show
  1. package/dist/assets/images/animations/index.d.ts +7 -0
  2. package/dist/assets/images/animations/index.js +7 -0
  3. package/dist/assets/images/animations/index.ts +15 -0
  4. package/dist/assets/images/animations/trees-cloudy.png +0 -0
  5. package/dist/assets/images/animations/trees-day-fall.png +0 -0
  6. package/dist/assets/images/animations/trees-day-summer.png +0 -0
  7. package/dist/assets/images/animations/trees-day-winter.png +0 -0
  8. package/dist/assets/images/animations/trees-evening.png +0 -0
  9. package/dist/assets/images/animations/trees-morning.png +0 -0
  10. package/dist/assets/images/animations/trees-night.png +0 -0
  11. package/dist/assets/images/book.svg +25 -0
  12. package/dist/assets/images/chat-bubble.svg +8 -0
  13. package/dist/assets/images/document2.svg +14 -0
  14. package/dist/assets/images/index.d.ts +5 -1
  15. package/dist/assets/images/index.js +5 -1
  16. package/dist/assets/images/index.ts +7 -0
  17. package/dist/assets/locales/en/index.json +11 -10
  18. package/dist/components/animations/CloudsAnimation.js +19 -3
  19. package/dist/components/animations/WeatherTrees.d.ts +6 -0
  20. package/dist/components/animations/WeatherTrees.js +36 -0
  21. package/dist/components/animations/index.d.ts +1 -0
  22. package/dist/components/animations/index.js +1 -0
  23. package/dist/components/badge/TextBadge.js +1 -1
  24. package/dist/components/folderPanel/folderDetails/FilesCounter.js +3 -5
  25. package/dist/components/footers/FooterButtons.d.ts +1 -1
  26. package/dist/components/footers/FooterButtons.js +2 -2
  27. package/dist/components/forms/BaseCounter.d.ts +2 -0
  28. package/dist/components/forms/BaseCounter.js +8 -0
  29. package/dist/components/forms/dynamicForm/fields/uiFields/TileCta.js +1 -1
  30. package/dist/components/forms/dynamicForm/fields/uiFields/TileCta.tsx +4 -2
  31. package/dist/components/forms/index.d.ts +1 -0
  32. package/dist/components/forms/index.js +1 -0
  33. package/dist/components/forms/readOnly/ReadOnlyDynamicForm.d.ts +1 -1
  34. package/dist/components/forms/readOnly/ReadOnlyDynamicForm.js +6 -4
  35. package/dist/components/forms/readOnly/fields/ReadOnlyGrid.d.ts +1 -1
  36. package/dist/components/forms/readOnly/fields/ReadOnlyGrid.js +7 -3
  37. package/dist/components/forms/readOnly/fields/ReadOnlyNotes.d.ts +2 -0
  38. package/dist/components/forms/readOnly/fields/ReadOnlyNotes.js +5 -0
  39. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyAppliances.js +1 -1
  40. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyAppliances.tsx +1 -1
  41. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyGuidelines.d.ts +2 -0
  42. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyGuidelines.js +11 -0
  43. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyGuidelines.tsx +33 -0
  44. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyHomeItemImages.js +1 -1
  45. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyHomeItemImages.tsx +1 -0
  46. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyItemRelated.d.ts +2 -0
  47. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyItemRelated.js +11 -0
  48. package/dist/components/forms/readOnly/fields/homeItem/ReadOnlyItemRelated.tsx +40 -0
  49. package/dist/components/forms/readOnly/fields/homeItem/index.d.ts +2 -0
  50. package/dist/components/forms/readOnly/fields/homeItem/index.js +2 -0
  51. package/dist/components/forms/readOnly/fields/homeItem/index.ts +2 -0
  52. package/dist/components/forms/readOnly/fields/index.d.ts +1 -0
  53. package/dist/components/forms/readOnly/fields/index.js +1 -0
  54. package/dist/components/homeAssistant/HomeAssistantWrapper.d.ts +1 -1
  55. package/dist/components/homeAssistant/HomeAssistantWrapper.js +20 -6
  56. package/dist/components/homeItems/ViewingHomeItemPanel.d.ts +1 -1
  57. package/dist/components/homeItems/ViewingHomeItemPanel.js +2 -2
  58. package/dist/components/inboxTile/InboxForwardBanner.js +2 -2
  59. package/dist/components/inboxTile/index.d.ts +1 -0
  60. package/dist/components/inboxTile/index.js +1 -0
  61. package/dist/components/inboxTile/panel/MessageCard.d.ts +2 -0
  62. package/dist/components/inboxTile/panel/MessageCard.js +14 -0
  63. package/dist/components/inboxTile/panel/MessageChatPanel.d.ts +4 -0
  64. package/dist/components/inboxTile/panel/MessageChatPanel.js +38 -0
  65. package/dist/components/inboxTile/panel/MessagePanel.d.ts +2 -0
  66. package/dist/components/inboxTile/panel/MessagePanel.js +12 -0
  67. package/dist/components/inboxTile/panel/index.d.ts +3 -0
  68. package/dist/components/inboxTile/panel/index.js +3 -0
  69. package/dist/components/myHomes/WrapperWithShadow.js +1 -1
  70. package/dist/components/myHomes/steps/MyHomeDetails.d.ts +1 -0
  71. package/dist/components/myHomes/steps/MyHomeDetails.js +1 -1
  72. package/dist/components/notifications/NotificationCard.d.ts +1 -1
  73. package/dist/components/notifications/NotificationCard.js +2 -47
  74. package/dist/components/rooms/VideosCounter.js +3 -5
  75. package/dist/helpers/forms/dynamicForm.helper.js +2 -1
  76. package/dist/hooks/inbox/index.d.ts +1 -0
  77. package/dist/hooks/inbox/index.js +1 -0
  78. package/dist/hooks/inbox/useMessagePanel.d.ts +7 -0
  79. package/dist/hooks/inbox/useMessagePanel.js +17 -0
  80. package/dist/hooks/index.d.ts +1 -0
  81. package/dist/hooks/index.js +1 -0
  82. package/dist/hooks/notifications/useNotificationsPanel.js +0 -5
  83. package/dist/index.d.ts +1 -1
  84. package/dist/index.js +1 -1
  85. package/dist/interfaces/appBar/UserProfile.interface.d.ts +2 -2
  86. package/dist/interfaces/footers/FooterButtons.interface.d.ts +1 -0
  87. package/dist/interfaces/forms/BaseCounter.interface.d.ts +5 -0
  88. package/dist/interfaces/forms/BaseCounter.interface.js +1 -0
  89. package/dist/interfaces/forms/dynamicForm/DynamicForm.interface.d.ts +4 -3
  90. package/dist/interfaces/forms/index.d.ts +1 -0
  91. package/dist/interfaces/forms/index.js +1 -0
  92. package/dist/interfaces/forms/readOnly/ReadOnlyGrid.interface.d.ts +2 -1
  93. package/dist/interfaces/forms/readOnly/homeItem/ReadOnlyGuidelines.interface.d.ts +4 -0
  94. package/dist/interfaces/forms/readOnly/homeItem/ReadOnlyGuidelines.interface.js +1 -0
  95. package/dist/interfaces/forms/readOnly/homeItem/index.d.ts +1 -0
  96. package/dist/interfaces/forms/readOnly/homeItem/index.js +1 -0
  97. package/dist/interfaces/homeItems/ViewingHomeItemPanel.interface.d.ts +1 -0
  98. package/dist/interfaces/inboxTile/MessageCard.interface.d.ts +16 -0
  99. package/dist/interfaces/inboxTile/MessageCard.interface.js +1 -0
  100. package/dist/interfaces/inboxTile/MessageChatPanel.interface.d.ts +12 -0
  101. package/dist/interfaces/inboxTile/MessageChatPanel.interface.js +1 -0
  102. package/dist/interfaces/inboxTile/MessagePanel.interface.d.ts +6 -0
  103. package/dist/interfaces/inboxTile/MessagePanel.interface.js +1 -0
  104. package/dist/interfaces/inboxTile/index.d.ts +3 -0
  105. package/dist/interfaces/inboxTile/index.js +3 -0
  106. package/dist/interfaces/notifications/NotificationsPanel.interface.d.ts +3 -2
  107. package/dist/mocks/forms/dynamicForm.mock.js +60 -0
  108. package/dist/mocks/inbox/index.d.ts +1 -0
  109. package/dist/mocks/inbox/index.js +1 -0
  110. package/dist/mocks/inbox/messages.d.ts +2 -0
  111. package/dist/mocks/inbox/messages.js +136 -0
  112. package/dist/mocks/index.d.ts +1 -0
  113. package/dist/mocks/index.js +1 -0
  114. package/dist/mocks/notifications/notifications.mock.js +4 -4
  115. package/dist/stories/assets/Illustrations.stories.js +2 -2
  116. package/dist/stories/homeItems/ViewingHomeItem.stories.js +1 -0
  117. package/dist/stories/inboxTile/MessagePanel.stories.d.ts +5 -0
  118. package/dist/stories/inboxTile/MessagePanel.stories.js +24 -0
  119. package/dist/theme/colors.d.ts +4 -1
  120. package/dist/theme/colors.js +4 -1
  121. package/dist/utils/Animations.utils.d.ts +6 -0
  122. package/dist/utils/Animations.utils.js +31 -0
  123. package/dist/utils/Avatars.utils.d.ts +1 -1
  124. package/dist/utils/Avatars.utils.js +1 -1
  125. package/dist/utils/index.d.ts +1 -0
  126. package/dist/utils/index.js +1 -0
  127. package/package.json +1 -1
  128. package/src/assets/images/animations/index.ts +15 -0
  129. package/src/assets/images/animations/trees-cloudy.png +0 -0
  130. package/src/assets/images/animations/trees-day-fall.png +0 -0
  131. package/src/assets/images/animations/trees-day-summer.png +0 -0
  132. package/src/assets/images/animations/trees-day-winter.png +0 -0
  133. package/src/assets/images/animations/trees-evening.png +0 -0
  134. package/src/assets/images/animations/trees-morning.png +0 -0
  135. package/src/assets/images/animations/trees-night.png +0 -0
  136. package/src/assets/images/book.svg +25 -0
  137. package/src/assets/images/chat-bubble.svg +8 -0
  138. package/src/assets/images/document2.svg +14 -0
  139. package/src/assets/images/index.ts +7 -0
  140. package/src/assets/locales/en/index.json +11 -10
  141. package/src/components/animations/CloudsAnimation.tsx +34 -17
  142. package/src/components/animations/WeatherTrees.tsx +37 -0
  143. package/src/components/animations/index.ts +1 -0
  144. package/src/components/badge/TextBadge.tsx +1 -1
  145. package/src/components/folderPanel/folderDetails/FilesCounter.tsx +6 -21
  146. package/src/components/footers/FooterButtons.tsx +2 -1
  147. package/src/components/forms/BaseCounter.tsx +30 -0
  148. package/src/components/forms/dynamicForm/fields/uiFields/TileCta.tsx +4 -2
  149. package/src/components/forms/index.ts +1 -0
  150. package/src/components/forms/readOnly/ReadOnlyDynamicForm.tsx +8 -2
  151. package/src/components/forms/readOnly/fields/ReadOnlyGrid.tsx +32 -3
  152. package/src/components/forms/readOnly/fields/ReadOnlyNotes.tsx +16 -0
  153. package/src/components/forms/readOnly/fields/homeItem/ReadOnlyAppliances.tsx +1 -1
  154. package/src/components/forms/readOnly/fields/homeItem/ReadOnlyGuidelines.tsx +33 -0
  155. package/src/components/forms/readOnly/fields/homeItem/ReadOnlyHomeItemImages.tsx +1 -0
  156. package/src/components/forms/readOnly/fields/homeItem/ReadOnlyItemRelated.tsx +40 -0
  157. package/src/components/forms/readOnly/fields/homeItem/index.ts +2 -0
  158. package/src/components/forms/readOnly/fields/index.ts +1 -0
  159. package/src/components/homeAssistant/HomeAssistantWrapper.tsx +31 -18
  160. package/src/components/homeItems/ViewingHomeItemPanel.tsx +2 -1
  161. package/src/components/inboxTile/InboxForwardBanner.tsx +5 -4
  162. package/src/components/inboxTile/index.ts +1 -0
  163. package/src/components/inboxTile/panel/MessageCard.tsx +112 -0
  164. package/src/components/inboxTile/panel/MessageChatPanel.tsx +105 -0
  165. package/src/components/inboxTile/panel/MessagePanel.tsx +64 -0
  166. package/src/components/inboxTile/panel/index.ts +3 -0
  167. package/src/components/myHomes/WrapperWithShadow.tsx +1 -0
  168. package/src/components/myHomes/steps/MyHomeDetails.tsx +1 -1
  169. package/src/components/notifications/NotificationCard.tsx +2 -106
  170. package/src/components/onboarding/pages/SignIn.tsx +1 -0
  171. package/src/components/rooms/VideosCounter.tsx +2 -18
  172. package/src/helpers/forms/dynamicForm.helper.ts +2 -0
  173. package/src/hooks/inbox/index.ts +1 -0
  174. package/src/hooks/inbox/useMessagePanel.ts +23 -0
  175. package/src/hooks/index.ts +1 -0
  176. package/src/hooks/notifications/useNotificationsPanel.ts +0 -5
  177. package/src/index.ts +2 -0
  178. package/src/interfaces/appBar/UserProfile.interface.ts +2 -2
  179. package/src/interfaces/footers/FooterButtons.interface.ts +2 -1
  180. package/src/interfaces/forms/BaseCounter.interface.ts +5 -0
  181. package/src/interfaces/forms/dynamicForm/DynamicForm.interface.ts +9 -1
  182. package/src/interfaces/forms/index.ts +1 -0
  183. package/src/interfaces/forms/readOnly/ReadOnlyGrid.interface.ts +3 -1
  184. package/src/interfaces/forms/readOnly/homeItem/ReadOnlyGuidelines.interface.ts +6 -0
  185. package/src/interfaces/forms/readOnly/homeItem/index.ts +1 -0
  186. package/src/interfaces/homeItems/ViewingHomeItemPanel.interface.ts +1 -0
  187. package/src/interfaces/inboxTile/MessageCard.interface.ts +18 -0
  188. package/src/interfaces/inboxTile/MessageChatPanel.interface.ts +13 -0
  189. package/src/interfaces/inboxTile/MessagePanel.interface.ts +7 -0
  190. package/src/interfaces/inboxTile/index.ts +3 -0
  191. package/src/interfaces/notifications/NotificationsPanel.interface.ts +3 -9
  192. package/src/mocks/forms/dynamicForm.mock.ts +60 -0
  193. package/src/mocks/inbox/index.ts +1 -0
  194. package/src/mocks/inbox/messages.ts +139 -0
  195. package/src/mocks/index.ts +1 -0
  196. package/src/mocks/notifications/notifications.mock.ts +4 -4
  197. package/src/stories/assets/Illustrations.stories.tsx +4 -0
  198. package/src/stories/homeItems/ViewingHomeItem.stories.tsx +1 -0
  199. package/src/stories/inboxTile/MessagePanel.stories.tsx +47 -0
  200. package/src/theme/colors.ts +4 -1
  201. package/src/utils/Animations.utils.ts +39 -0
  202. package/src/utils/Avatars.utils.ts +2 -2
  203. package/src/utils/index.ts +1 -0
@@ -50,6 +50,7 @@ import {
50
50
  HomeCleaning,
51
51
  HouseWashing,
52
52
  PressureWasher,
53
+ BookOpened,
53
54
  } from '@/assets/images'
54
55
  import { IconTypes } from '@/interfaces'
55
56
 
@@ -57,6 +58,7 @@ export const fieldIcons: Record<IconTypes, string> = {
57
58
  barcode: Barcode,
58
59
  billing: Billing,
59
60
  book: Book,
61
+ 'book-opened': BookOpened,
60
62
  calc: Calc,
61
63
  check: CheckPen,
62
64
  contact: Contacts,
@@ -0,0 +1 @@
1
+ export * from './useMessagePanel'
@@ -0,0 +1,23 @@
1
+ import { t } from 'i18next'
2
+ import { useState } from 'react'
3
+ import { InboxMessageI, SelectItemI } from '@/interfaces'
4
+
5
+ export const useMessagePanel = (messages: InboxMessageI[]) => {
6
+ const [sortedMessages, setSortedMessages] = useState(messages)
7
+ const [currentSort, setCurrentSort] = useState<string>(t('forms.sortBy'))
8
+
9
+ const handleSelectItem = (item: string | SelectItemI<string>) => {
10
+ if (typeof item !== 'string') return
11
+ setCurrentSort(item)
12
+
13
+ if (item === t('forms.sortBy')) {
14
+ return setSortedMessages(messages)
15
+ }
16
+
17
+ setSortedMessages(messages.filter((message) => message.isNew))
18
+ }
19
+
20
+ const items = [t('forms.sortBy'), t('forms.new')] as string[]
21
+
22
+ return { currentSort, sortedMessages, handleSelectItem, items }
23
+ }
@@ -9,6 +9,7 @@ export * from './folderPanel'
9
9
  export * from './forms'
10
10
  export * from './help'
11
11
  export * from './homeBoard'
12
+ export * from './inbox'
12
13
  export * from './inputs'
13
14
  export * from './launchpad'
14
15
  export * from './myHomes'
@@ -31,11 +31,6 @@ export const useNotificationsPanel = ({
31
31
 
32
32
  const items = [
33
33
  t('forms.sortBy'),
34
- t('notifications.types.contact'),
35
- t('notifications.types.file'),
36
- t('notifications.types.folder'),
37
- t('notifications.types.payment'),
38
- t('notifications.types.receipt'),
39
34
  t('notifications.status.added'),
40
35
  t('notifications.status.removed'),
41
36
  t('notifications.status.shared'),
package/src/index.ts CHANGED
@@ -87,6 +87,8 @@ export {
87
87
  LaunchpadTour,
88
88
  LeftPanel,
89
89
  MediaDetailsStep,
90
+ MessagePanel,
91
+ MessageChatPanel,
90
92
  MonitorAlerts,
91
93
  MonthlyCharge,
92
94
  MortgageInfo,
@@ -1,9 +1,9 @@
1
- import { MenuItemI } from "@/interfaces"
1
+ import { MenuItemI } from '@/interfaces'
2
2
 
3
3
  export interface UserProfileI {
4
4
  avatarUrl: string
5
5
  firstName: string
6
6
  userName: string
7
- menuItems: MenuItemI[]
7
+ menuItems?: MenuItemI[]
8
8
  bg: string
9
9
  }
@@ -1,4 +1,4 @@
1
- type ButtonStyleProps = 'primaryFooter' | 'secondaryFooter' | 'tertiaryFooter'
1
+ type ButtonStyleProps = 'primaryFooter' | 'secondaryFooter' | 'tertiaryFooter'
2
2
 
3
3
  export interface FooterButtonI {
4
4
  buttonStyle: ButtonStyleProps | string
@@ -13,4 +13,5 @@ export interface FooterButtonsI {
13
13
  button1?: FooterButtonI
14
14
  button2?: FooterButtonI | null
15
15
  button3?: FooterButtonI
16
+ px?: string
16
17
  }
@@ -0,0 +1,5 @@
1
+ export interface BaseCounterI {
2
+ text: string
3
+ uploading?: boolean
4
+ uploadingText?: string
5
+ }
@@ -10,6 +10,7 @@ type KindTypes =
10
10
  | 'grid'
11
11
  | 'group'
12
12
  | 'hidden'
13
+ | 'notes'
13
14
  | 'number'
14
15
  | 'radio'
15
16
  | 'rating'
@@ -35,13 +36,19 @@ type UIKindTypes =
35
36
  | 'primary-cta'
36
37
  | 'secondary-cta'
37
38
 
38
- type HomeItemTypes = 'appliances' | 'images'
39
+ type HomeItemTypes =
40
+ | 'appliances'
41
+ | 'images'
42
+ | 'guidelines'
43
+ | 'item-related'
44
+ | 'item-icon-btn'
39
45
 
40
46
  export type IconTypes =
41
47
  | 'barcode'
42
48
  | 'battery'
43
49
  | 'billing'
44
50
  | 'book'
51
+ | 'book-opened'
45
52
  | 'calc'
46
53
  | 'calendar'
47
54
  | 'check'
@@ -131,4 +138,5 @@ export interface DynamicFormProxyI {
131
138
 
132
139
  export interface ReadOnlyDynamicFormI extends Pick<DynamicFormI, 'form'> {
133
140
  onEdit?: (id: string) => void
141
+ onClick?: (id: string) => void
134
142
  }
@@ -1,6 +1,7 @@
1
1
  export * from './dynamicForm'
2
2
  export * from './readOnly'
3
3
  export * from './Address.interface'
4
+ export * from './BaseCounter.interface'
4
5
  export * from './Collapsible.interface'
5
6
  export * from './EditItemName.interface'
6
7
  export * from './Input.interface'
@@ -3,4 +3,6 @@ import { FlexProps } from '@chakra-ui/react'
3
3
 
4
4
  export interface ReadOnlyGridI
5
5
  extends Pick<ReportI, 'children'>,
6
- Omit<FlexProps, 'children'> {}
6
+ Omit<FlexProps, 'children' | 'onClick'> {
7
+ onClick?: (id: string) => void
8
+ }
@@ -0,0 +1,6 @@
1
+ import { ReportI } from '@/interfaces'
2
+
3
+ export interface ReadOnlyGuidelinesI
4
+ extends Pick<ReportI, 'children' | 'name'> {
5
+ onClick?: (id: string) => void
6
+ }
@@ -1 +1,2 @@
1
1
  export * from './ReadOnlyAppliances.interface'
2
+ export * from './ReadOnlyGuidelines.interface'
@@ -4,4 +4,5 @@ export interface ViewingHomeItemPanelI {
4
4
  form: ReportI[]
5
5
  onClose: () => void
6
6
  onEdit: (id: string) => void
7
+ onClick?: (id: string) => void
7
8
  }
@@ -0,0 +1,18 @@
1
+ import { UserProfileI } from '@/interfaces'
2
+
3
+ export interface InboxMessageI {
4
+ _id: string
5
+ currentUser?: Partial<UserProfileI>
6
+ chatReplies?: InboxMessageI[]
7
+ description?: string
8
+ date: Date
9
+ from: string
10
+ isNew?: boolean
11
+ subject?: string
12
+ }
13
+
14
+ export interface MessageCardI {
15
+ message: InboxMessageI
16
+ onClick?: (message: InboxMessageI) => void
17
+ variant?: 'inbox' | 'chat'
18
+ }
@@ -0,0 +1,13 @@
1
+ import { InboxMessageI } from '@/interfaces'
2
+
3
+ interface InboxMessageReplyI {
4
+ id: string
5
+ message: string
6
+ }
7
+
8
+ export interface MessageChatPanelI {
9
+ message?: InboxMessageI
10
+ onReply: (props: InboxMessageReplyI) => void
11
+ onClose: () => void
12
+ onBack: () => void
13
+ }
@@ -0,0 +1,7 @@
1
+ import { InboxMessageI } from '@/interfaces'
2
+
3
+ export interface MessagePanelI {
4
+ messages: InboxMessageI[]
5
+ onClick: (message: InboxMessageI) => void
6
+ onClose: () => void
7
+ }
@@ -1,2 +1,5 @@
1
1
  export * from './InboxCard.interface'
2
2
  export * from './InboxTile.interface'
3
+ export * from './MessageCard.interface'
4
+ export * from './MessageChatPanel.interface'
5
+ export * from './MessagePanel.interface'
@@ -1,20 +1,14 @@
1
- type NotificationType =
2
- | 'file'
3
- | 'folder'
4
- | 'contact'
5
- | 'receipt'
6
- | 'user'
7
- | 'tile'
8
- | 'payment'
1
+ type NotificationType = 'simple'
9
2
  type NotificationStatus = 'added' | 'removed' | 'updated' | 'shared'
10
3
 
11
4
  export interface NotificationCardI {
12
5
  active: boolean
13
6
  createdAt: Date
14
7
  _id: string
8
+ label: string
15
9
  message: string
16
10
  status: NotificationStatus
17
- type: NotificationType
11
+ type?: NotificationType
18
12
  }
19
13
 
20
14
  export interface NotificationsPanelI {
@@ -646,4 +646,64 @@ export const viewingHomeItemMock: ReportI[] = [
646
646
  },
647
647
  ],
648
648
  },
649
+ {
650
+ id: faker.database.mongodbObjectId(),
651
+ value: '',
652
+ type: 'grid',
653
+ visible: true,
654
+ children: [
655
+ {
656
+ id: faker.database.mongodbObjectId(),
657
+ name: 'Care & Guidelines',
658
+ value: '',
659
+ type: 'guidelines',
660
+ visible: true,
661
+ children: [
662
+ {
663
+ id: faker.database.mongodbObjectId(),
664
+ icon: 'umbrella',
665
+ value: 'warranty',
666
+ type: 'item-icon-btn',
667
+ visible: true,
668
+ link: 'www.kitchenaid.com',
669
+ },
670
+ {
671
+ id: faker.database.mongodbObjectId(),
672
+ icon: 'book-opened',
673
+ value: 'manual',
674
+ type: 'item-icon-btn',
675
+ visible: true,
676
+ link: 'www.kitchenaid.com',
677
+ },
678
+ ],
679
+ },
680
+ {
681
+ id: faker.database.mongodbObjectId(),
682
+ name: 'Related',
683
+ value: '',
684
+ type: 'item-related',
685
+ visible: true,
686
+ children: [
687
+ {
688
+ id: faker.database.mongodbObjectId(),
689
+ icon: 'drop',
690
+ value: 'filter',
691
+ type: 'item-icon-btn',
692
+ visible: true,
693
+ link: 'www.kitchenaid.com',
694
+ },
695
+ ],
696
+ },
697
+ ],
698
+ },
699
+ {
700
+ id: faker.database.mongodbObjectId(),
701
+ name: 'Notes',
702
+ description: '',
703
+ comments: faker.lorem.sentence(),
704
+ value: faker.lorem.paragraphs(),
705
+ type: 'notes',
706
+ visible: true,
707
+ options: [],
708
+ },
649
709
  ]
@@ -0,0 +1 @@
1
+ export * from './messages'
@@ -0,0 +1,139 @@
1
+ import { InboxMessageI } from '@/interfaces'
2
+ import { faker } from '@faker-js/faker'
3
+
4
+ const currentUserName = faker.internet.userName()
5
+
6
+ export const messagesMock: InboxMessageI[] = [
7
+ {
8
+ _id: faker.database.mongodbObjectId(),
9
+ chatReplies: [
10
+ {
11
+ _id: faker.database.mongodbObjectId(),
12
+ chatReplies: [],
13
+ description: faker.lorem.paragraphs(),
14
+ date: faker.date.recent(),
15
+ from: faker.person.fullName(),
16
+ isNew: false,
17
+ subject: faker.lorem.words(),
18
+ },
19
+ {
20
+ _id: faker.database.mongodbObjectId(),
21
+ chatReplies: [
22
+ {
23
+ _id: faker.database.mongodbObjectId(),
24
+ chatReplies: [],
25
+ description: faker.lorem.paragraphs(),
26
+ date: faker.date.recent(),
27
+ from: faker.person.fullName(),
28
+ isNew: false,
29
+ subject: faker.lorem.words(),
30
+ },
31
+ ],
32
+ description: faker.lorem.paragraphs(),
33
+ date: faker.date.recent(),
34
+ from: currentUserName,
35
+ isNew: false,
36
+ subject: faker.lorem.words(),
37
+ },
38
+ ],
39
+ currentUser: {
40
+ userName: currentUserName,
41
+ },
42
+ date: faker.date.recent(),
43
+ from: faker.person.fullName(),
44
+ isNew: true,
45
+ subject: faker.lorem.words(),
46
+ },
47
+ {
48
+ _id: faker.database.mongodbObjectId(),
49
+ chatReplies: [
50
+ {
51
+ _id: faker.database.mongodbObjectId(),
52
+ chatReplies: [],
53
+ description: faker.lorem.paragraphs(),
54
+ date: faker.date.recent(),
55
+ from: faker.person.fullName(),
56
+ isNew: false,
57
+ subject: faker.lorem.words(),
58
+ },
59
+ {
60
+ _id: faker.database.mongodbObjectId(),
61
+ chatReplies: [],
62
+ description: faker.lorem.paragraphs(),
63
+ date: faker.date.recent(),
64
+ from: currentUserName,
65
+ isNew: false,
66
+ subject: faker.lorem.words(),
67
+ },
68
+ {
69
+ _id: faker.database.mongodbObjectId(),
70
+ chatReplies: [],
71
+ description: faker.lorem.paragraphs(),
72
+ date: faker.date.recent(),
73
+ from: faker.person.fullName(),
74
+ isNew: false,
75
+ subject: faker.lorem.words(),
76
+ },
77
+ ],
78
+ currentUser: {
79
+ userName: currentUserName,
80
+ },
81
+ description: faker.lorem.paragraphs(),
82
+ date: faker.date.recent(),
83
+ from: faker.person.fullName(),
84
+ isNew: false,
85
+ },
86
+ {
87
+ _id: faker.database.mongodbObjectId(),
88
+ chatReplies: [
89
+ {
90
+ _id: faker.database.mongodbObjectId(),
91
+ chatReplies: [],
92
+ description: faker.lorem.paragraphs(),
93
+ date: faker.date.recent(),
94
+ from: faker.person.fullName(),
95
+ isNew: false,
96
+ subject: faker.lorem.words(),
97
+ },
98
+ ],
99
+ currentUser: {
100
+ userName: currentUserName,
101
+ },
102
+ description: faker.lorem.paragraphs(),
103
+ date: faker.date.recent(),
104
+ from: faker.person.fullName(),
105
+ isNew: true,
106
+ subject: faker.lorem.words(),
107
+ },
108
+ {
109
+ _id: faker.database.mongodbObjectId(),
110
+ chatReplies: [
111
+ {
112
+ _id: faker.database.mongodbObjectId(),
113
+ chatReplies: [],
114
+ description: faker.lorem.paragraphs(),
115
+ date: faker.date.recent(),
116
+ from: currentUserName,
117
+ isNew: false,
118
+ subject: faker.lorem.words(),
119
+ },
120
+ {
121
+ _id: faker.database.mongodbObjectId(),
122
+ chatReplies: [],
123
+ description: faker.lorem.paragraphs(),
124
+ date: faker.date.recent(),
125
+ from: faker.person.fullName(),
126
+ isNew: false,
127
+ subject: faker.lorem.words(),
128
+ },
129
+ ],
130
+ currentUser: {
131
+ userName: currentUserName,
132
+ },
133
+ description: faker.lorem.paragraphs(),
134
+ date: faker.date.recent(),
135
+ from: faker.person.fullName(),
136
+ isNew: false,
137
+ subject: faker.lorem.words(),
138
+ },
139
+ ]
@@ -3,6 +3,7 @@ export * from './contacts'
3
3
  export * from './folderPanel'
4
4
  export * from './forms'
5
5
  export * from './homeAssistant'
6
+ export * from './inbox'
6
7
  export * from './myHomes'
7
8
  export * from './myProfile'
8
9
  export * from './notifications'
@@ -8,7 +8,7 @@ export const notificationsMock: NotificationCardI[] = [
8
8
  createdAt: new Date(),
9
9
  message: faker.lorem.sentence(),
10
10
  status: 'added',
11
- type: 'contact',
11
+ label: 'contact added',
12
12
  },
13
13
  {
14
14
  active: true,
@@ -16,7 +16,7 @@ export const notificationsMock: NotificationCardI[] = [
16
16
  createdAt: new Date(),
17
17
  message: faker.lorem.sentence(),
18
18
  status: 'removed',
19
- type: 'file',
19
+ label: 'file removed',
20
20
  },
21
21
  {
22
22
  active: true,
@@ -24,7 +24,7 @@ export const notificationsMock: NotificationCardI[] = [
24
24
  createdAt: new Date(),
25
25
  message: faker.lorem.sentence(),
26
26
  status: 'shared',
27
- type: 'folder',
27
+ label: 'folder shared',
28
28
  },
29
29
  {
30
30
  active: true,
@@ -32,6 +32,6 @@ export const notificationsMock: NotificationCardI[] = [
32
32
  createdAt: new Date(),
33
33
  message: faker.lorem.sentence(),
34
34
  status: 'updated',
35
- type: 'payment',
35
+ label: 'updated payment',
36
36
  },
37
37
  ]
@@ -46,6 +46,7 @@ import {
46
46
  DiningRoom,
47
47
  DocIcon,
48
48
  Document,
49
+ Document2,
49
50
  Doors,
50
51
  Drop,
51
52
  DropCalendar,
@@ -186,6 +187,7 @@ import {
186
187
  WizardQuick,
187
188
  YellowFolder,
188
189
  YellowFolderUnshared,
190
+ BookOpened,
189
191
  } from '@/assets/images'
190
192
 
191
193
  import {
@@ -278,6 +280,7 @@ export const Illustrations = () => {
278
280
  <IconWrapper icon={BillingAddress} name="BillingAddress" />
279
281
  <IconWrapper icon={BlueFolder} name="BlueFolder" />
280
282
  <IconWrapper icon={BlueFolderShared} name="BlueFolderShared" />
283
+ <IconWrapper icon={BookOpened} name="BookOpened" />
281
284
  <IconWrapper icon={BoxIcon} name="Box" />
282
285
  <IconWrapper icon={Building} name="Building" />
283
286
  <IconWrapper icon={Calc} name="Calc" />
@@ -304,6 +307,7 @@ export const Illustrations = () => {
304
307
  <IconWrapper icon={DiningRoom} name="DiningRoom" />
305
308
  <IconWrapper icon={DocIcon} name="DocIcon" />
306
309
  <IconWrapper icon={Document} name="Document" />
310
+ <IconWrapper icon={Document2} name="Document2" />
307
311
  <IconWrapper icon={Drop} name="Drop" />
308
312
  <IconWrapper icon={DropCalendar} name="DropCalendar" />
309
313
  <IconWrapper icon={Electricity} name="Electricity" />
@@ -10,6 +10,7 @@ export default {
10
10
  args: {
11
11
  form: viewingHomeItemMock,
12
12
  onEdit: action('onEdit'),
13
+ onClick: action('onClick'),
13
14
  },
14
15
  decorators: [
15
16
  (Story) => (
@@ -0,0 +1,47 @@
1
+ import { Meta } from '@storybook/react'
2
+ import { MessageChatPanel, MessagePanel, RightPanel } from '@/components'
3
+ import { action } from '@storybook/addon-actions'
4
+ import { InboxMessageI, MessagePanelI } from '@/interfaces'
5
+ import { messagesMock } from '@/mocks'
6
+ import { Fragment, useState } from 'react'
7
+
8
+ export default {
9
+ title: 'Components/Inbox',
10
+ component: MessagePanel,
11
+ args: {
12
+ messages: messagesMock,
13
+ },
14
+ decorators: [
15
+ (Story) => (
16
+ <RightPanel isOpen onClose={action('onClose')}>
17
+ <Story />
18
+ </RightPanel>
19
+ ),
20
+ ],
21
+ } as Meta<MessagePanelI>
22
+
23
+ export const MessagePanelComponent = (args: MessagePanelI) => {
24
+ const [showMessageChat, setShowMessageChat] = useState(false)
25
+ const [selectedMessage, setSelectedMessage] =
26
+ useState<InboxMessageI | undefined>(undefined)
27
+ const handleMessageChatToggle = () => setShowMessageChat(!showMessageChat)
28
+ return (
29
+ <Fragment>
30
+ <MessagePanel
31
+ {...args}
32
+ onClick={(message) => {
33
+ setSelectedMessage(message)
34
+ handleMessageChatToggle()
35
+ }}
36
+ />
37
+ <RightPanel isOpen={showMessageChat} onClose={handleMessageChatToggle}>
38
+ <MessageChatPanel
39
+ message={selectedMessage}
40
+ onReply={action('onReply')}
41
+ onClose={action('onCloseChatPanel')}
42
+ onBack={handleMessageChatToggle}
43
+ />
44
+ </RightPanel>
45
+ </Fragment>
46
+ )
47
+ }
@@ -115,7 +115,10 @@ export const colors = {
115
115
  1: '#f5ddf4',
116
116
  2: '#F544DA',
117
117
  },
118
- skyGradient: 'linear(to-b, #cff1fc, #F9FEFF)',
118
+ dayGradient: 'linear(to-b, #cff1fc, #F9FEFF)',
119
+ morningGradient: 'linear(to-b, #d2abf1, #f7dcac)',
120
+ eveningGradient: 'linear(to-b, #bcc5f2, #ee91f3)',
121
+ nightGradient: 'linear(to-b, #7a7bcf, #a4b0d7)',
119
122
  overlay: '#00000040',
120
123
  overlayWhite: '#FFFFFF80',
121
124
  }
@@ -0,0 +1,39 @@
1
+ export type TimeOfDay = 'morning' | 'day' | 'evening' | 'night'
2
+ export type Season = 'spring' | 'summer' | 'fall' | 'winter'
3
+ export type TimeOfDaySeason = `${TimeOfDay}-${Season}`
4
+
5
+ export const getTimeOfDay = (): TimeOfDay => {
6
+ const currentHour = new Date().getHours()
7
+
8
+ switch (true) {
9
+ case currentHour >= 6 && currentHour < 12:
10
+ return 'morning'
11
+ case currentHour >= 12 && currentHour < 18:
12
+ return 'day'
13
+ case currentHour >= 18 && currentHour < 21:
14
+ return 'evening'
15
+ default:
16
+ return 'night'
17
+ }
18
+ }
19
+
20
+ export const getSeason = (): Season => {
21
+ const currentMonth = new Date().getMonth()
22
+
23
+ switch (true) {
24
+ case currentMonth >= 2 && currentMonth < 5:
25
+ return 'spring'
26
+ case currentMonth >= 5 && currentMonth < 8:
27
+ return 'summer'
28
+ case currentMonth >= 8 && currentMonth < 11:
29
+ return 'fall'
30
+ default:
31
+ return 'winter'
32
+ }
33
+ }
34
+
35
+ export const getTimeOfDaySeason = (): TimeOfDaySeason => {
36
+ const timeOfDay = getTimeOfDay()
37
+ const season = getSeason()
38
+ return `${timeOfDay}-${season}` as TimeOfDaySeason
39
+ }
@@ -34,9 +34,9 @@ const colors = [
34
34
  '#37323E',
35
35
  ]
36
36
 
37
- export const randomColor = (index: number) => {
37
+ export const randomColor = (index = Math.floor(Math.random() * 30)) => {
38
38
  if (index >= colors.length) {
39
39
  return colors[index % colors.length]
40
40
  }
41
41
  return colors[index]
42
- }
42
+ }
@@ -1,4 +1,5 @@
1
1
  export * from './AddMedia.utils'
2
+ export * from './Animations.utils'
2
3
  export * from './Avatars.utils'
3
4
  export * from './BrowserDetectors.utils'
4
5
  export * from './BubblesTour.utils'