@homefile/components-v2 1.0.15 → 1.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.
Files changed (176) hide show
  1. package/dist/assets/images/index.d.ts +3 -1
  2. package/dist/assets/images/index.js +3 -1
  3. package/dist/assets/images/index.ts +4 -0
  4. package/dist/assets/images/sms.svg +21 -0
  5. package/dist/assets/images/social.svg +10 -0
  6. package/dist/assets/locales/en/index.json +29 -1
  7. package/dist/components/contacts/ContactCard.d.ts +1 -1
  8. package/dist/components/contacts/ContactCard.js +2 -2
  9. package/dist/components/contacts/ContactCardHeader.d.ts +1 -1
  10. package/dist/components/contacts/ContactCardHeader.js +5 -4
  11. package/dist/components/contacts/ContactsContent.d.ts +1 -1
  12. package/dist/components/contacts/ContactsContent.js +2 -2
  13. package/dist/components/contacts/ShareContactPopover.d.ts +2 -0
  14. package/dist/components/contacts/ShareContactPopover.js +32 -0
  15. package/dist/components/contacts/index.d.ts +2 -0
  16. package/dist/components/contacts/index.js +2 -0
  17. package/dist/components/contacts/shareContactForms/ShareContactByEmail.d.ts +2 -0
  18. package/dist/components/contacts/shareContactForms/ShareContactByEmail.js +21 -0
  19. package/dist/components/contacts/shareContactForms/index.d.ts +1 -0
  20. package/dist/components/contacts/shareContactForms/index.js +1 -0
  21. package/dist/components/folderPanel/displayFiles/GridFile.js +1 -1
  22. package/dist/components/folderPanel/displayFiles/IconMenuWithMove.js +1 -1
  23. package/dist/components/folderPanel/displayFiles/ListFile.js +1 -1
  24. package/dist/components/folderPanel/displayFiles/MoveModal.js +1 -1
  25. package/dist/components/forms/dynamicForm/HiddenField.d.ts +1 -1
  26. package/dist/components/forms/dynamicForm/HiddenField.js +7 -2
  27. package/dist/components/headers/TabsHeader.js +1 -1
  28. package/dist/components/homeBoard/HomeBoard.js +1 -1
  29. package/dist/components/homeBoard/HomeCard.js +1 -1
  30. package/dist/components/homeSummary/DocumentMenu.js +1 -1
  31. package/dist/components/icons/ShareIcon.d.ts +4 -0
  32. package/dist/components/icons/ShareIcon.js +5 -0
  33. package/dist/components/icons/index.d.ts +1 -0
  34. package/dist/components/icons/index.js +1 -0
  35. package/dist/components/launchpad/IconMenu.js +1 -1
  36. package/dist/components/myHomes/MyHomeCard.js +1 -1
  37. package/dist/components/myHomes/MyHomes.js +1 -1
  38. package/dist/components/myProfile/MyProfileBody.d.ts +1 -1
  39. package/dist/components/myProfile/MyProfileBody.js +6 -2
  40. package/dist/components/myProfile/index.d.ts +1 -0
  41. package/dist/components/myProfile/index.js +1 -0
  42. package/dist/components/myProfile/permissions/ActionCheckbox.d.ts +2 -0
  43. package/dist/components/myProfile/permissions/ActionCheckbox.js +6 -0
  44. package/dist/components/myProfile/permissions/ActionLabel.d.ts +5 -0
  45. package/dist/components/myProfile/permissions/ActionLabel.js +17 -0
  46. package/dist/components/myProfile/permissions/PermissionsBanner.d.ts +5 -0
  47. package/dist/components/myProfile/permissions/PermissionsBanner.js +23 -0
  48. package/dist/components/myProfile/permissions/RoleButton.d.ts +2 -0
  49. package/dist/components/myProfile/permissions/RoleButton.js +11 -0
  50. package/dist/components/myProfile/permissions/RolePermissionsTab.d.ts +2 -0
  51. package/dist/components/myProfile/permissions/RolePermissionsTab.js +19 -0
  52. package/dist/components/myProfile/permissions/index.d.ts +5 -0
  53. package/dist/components/myProfile/permissions/index.js +5 -0
  54. package/dist/components/overlay/Overlay.d.ts +1 -1
  55. package/dist/components/overlay/Overlay.js +2 -2
  56. package/dist/components/rooms/GroupCard.d.ts +1 -1
  57. package/dist/components/rooms/GroupCard.js +3 -3
  58. package/dist/components/rooms/ItemCard.d.ts +1 -1
  59. package/dist/components/rooms/ItemCard.js +2 -2
  60. package/dist/components/sendDocument/RecipientCard.js +1 -1
  61. package/dist/components/sharedHomePanel/ShareHomeContactList.js +1 -1
  62. package/dist/helpers/HomeRoles.helper.d.ts +3 -1
  63. package/dist/helpers/HomeRoles.helper.js +6 -1
  64. package/dist/helpers/homeAssistant/HomeAssistant.helper.js +6 -7
  65. package/dist/helpers/myProfile/RolePermissions.helper.d.ts +2 -0
  66. package/dist/helpers/myProfile/RolePermissions.helper.js +72 -0
  67. package/dist/helpers/myProfile/index.d.ts +1 -0
  68. package/dist/helpers/myProfile/index.js +1 -0
  69. package/dist/hooks/myProfile/index.d.ts +1 -0
  70. package/dist/hooks/myProfile/index.js +1 -0
  71. package/dist/hooks/myProfile/useRolePermissionsTab.d.ts +11 -0
  72. package/dist/hooks/myProfile/useRolePermissionsTab.js +68 -0
  73. package/dist/index.d.ts +2 -2
  74. package/dist/index.js +2 -2
  75. package/dist/interfaces/contacts/ContactCard.interface.d.ts +3 -1
  76. package/dist/interfaces/contacts/ContactCardHeader.interface.d.ts +3 -1
  77. package/dist/interfaces/contacts/ContactsContent.interface.d.ts +4 -2
  78. package/dist/interfaces/contacts/ShareContactByEmail.interface.d.ts +11 -0
  79. package/dist/interfaces/contacts/ShareContactByEmail.interface.js +1 -0
  80. package/dist/interfaces/contacts/ShareContactPopover.interface.d.ts +8 -0
  81. package/dist/interfaces/contacts/ShareContactPopover.interface.js +1 -0
  82. package/dist/interfaces/contacts/index.d.ts +2 -0
  83. package/dist/interfaces/contacts/index.js +2 -0
  84. package/dist/interfaces/forms/dynamicForm/HiddenField.interface.d.ts +2 -0
  85. package/dist/interfaces/myProfile/MyProfileBody.interface.d.ts +5 -4
  86. package/dist/interfaces/myProfile/index.d.ts +1 -0
  87. package/dist/interfaces/myProfile/index.js +1 -0
  88. package/dist/interfaces/myProfile/permissions/ActionCheckbox.interface.d.ts +8 -0
  89. package/dist/interfaces/myProfile/permissions/ActionCheckbox.interface.js +1 -0
  90. package/dist/interfaces/myProfile/permissions/RoleButton.interface.d.ts +7 -0
  91. package/dist/interfaces/myProfile/permissions/RoleButton.interface.js +1 -0
  92. package/dist/interfaces/myProfile/permissions/RolePermissionsTab.interface.d.ts +12 -0
  93. package/dist/interfaces/myProfile/permissions/RolePermissionsTab.interface.js +1 -0
  94. package/dist/interfaces/myProfile/permissions/index.d.ts +3 -0
  95. package/dist/interfaces/myProfile/permissions/index.js +3 -0
  96. package/dist/interfaces/overlay/Overlay.interface.d.ts +2 -1
  97. package/dist/interfaces/rooms/GroupCard.interface.d.ts +1 -0
  98. package/dist/interfaces/rooms/ItemCard.interface.d.ts +1 -0
  99. package/dist/mocks/myProfile/Permissions.mock.d.ts +2 -0
  100. package/dist/mocks/myProfile/Permissions.mock.js +66 -0
  101. package/dist/mocks/myProfile/index.d.ts +1 -0
  102. package/dist/mocks/myProfile/index.js +1 -0
  103. package/dist/stories/assets/Illustrations.stories.js +2 -2
  104. package/dist/stories/myProfile/MyProfilePanel.stories.js +3 -4
  105. package/dist/stories/myProfile/permissions/RolePermissionsTab.stories.d.ts +5 -0
  106. package/dist/stories/myProfile/permissions/RolePermissionsTab.stories.js +16 -0
  107. package/dist/theme/colors.d.ts +1 -0
  108. package/dist/theme/colors.js +1 -0
  109. package/package.json +1 -1
  110. package/src/assets/images/index.ts +4 -0
  111. package/src/assets/images/sms.svg +21 -0
  112. package/src/assets/images/social.svg +10 -0
  113. package/src/assets/locales/en/index.json +29 -1
  114. package/src/components/contacts/ContactCard.tsx +13 -2
  115. package/src/components/contacts/ContactCardHeader.tsx +33 -8
  116. package/src/components/contacts/ContactsContent.tsx +4 -0
  117. package/src/components/contacts/ShareContactPopover.tsx +106 -0
  118. package/src/components/contacts/index.ts +3 -1
  119. package/src/components/contacts/shareContactForms/ShareContactByEmail.tsx +50 -0
  120. package/src/components/contacts/shareContactForms/index.ts +1 -0
  121. package/src/components/folderPanel/displayFiles/GridFile.tsx +1 -0
  122. package/src/components/folderPanel/displayFiles/IconMenuWithMove.tsx +1 -1
  123. package/src/components/folderPanel/displayFiles/ListFile.tsx +1 -0
  124. package/src/components/folderPanel/displayFiles/MoveModal.tsx +1 -1
  125. package/src/components/forms/dynamicForm/HiddenField.tsx +16 -2
  126. package/src/components/headers/TabsHeader.tsx +1 -0
  127. package/src/components/homeBoard/HomeBoard.tsx +1 -0
  128. package/src/components/homeBoard/HomeCard.tsx +1 -0
  129. package/src/components/homeSummary/DocumentMenu.tsx +1 -1
  130. package/src/components/icons/ShareIcon.tsx +74 -0
  131. package/src/components/icons/index.ts +1 -0
  132. package/src/components/launchpad/IconMenu.tsx +1 -1
  133. package/src/components/myHomes/MyHomeCard.tsx +12 -8
  134. package/src/components/myHomes/MyHomes.tsx +1 -1
  135. package/src/components/myProfile/MyProfileBody.tsx +6 -1
  136. package/src/components/myProfile/index.ts +1 -0
  137. package/src/components/myProfile/permissions/ActionCheckbox.tsx +22 -0
  138. package/src/components/myProfile/permissions/ActionLabel.tsx +18 -0
  139. package/src/components/myProfile/permissions/PermissionsBanner.tsx +35 -0
  140. package/src/components/myProfile/permissions/RoleButton.tsx +39 -0
  141. package/src/components/myProfile/permissions/RolePermissionsTab.tsx +111 -0
  142. package/src/components/myProfile/permissions/index.ts +5 -0
  143. package/src/components/overlay/Overlay.tsx +2 -0
  144. package/src/components/rooms/GroupCard.tsx +3 -1
  145. package/src/components/rooms/ItemCard.tsx +2 -0
  146. package/src/components/sendDocument/RecipientCard.tsx +1 -0
  147. package/src/components/sharedHomePanel/ShareHomeContactList.tsx +1 -1
  148. package/src/helpers/HomeRoles.helper.ts +16 -1
  149. package/src/helpers/homeAssistant/HomeAssistant.helper.tsx +6 -7
  150. package/src/helpers/myProfile/RolePermissions.helper.ts +74 -0
  151. package/src/helpers/myProfile/index.ts +1 -0
  152. package/src/hooks/myProfile/index.ts +2 -1
  153. package/src/hooks/myProfile/useRolePermissionsTab.ts +112 -0
  154. package/src/index.ts +2 -1
  155. package/src/interfaces/contacts/ContactCard.interface.ts +3 -1
  156. package/src/interfaces/contacts/ContactCardHeader.interface.ts +4 -2
  157. package/src/interfaces/contacts/ContactsContent.interface.ts +5 -3
  158. package/src/interfaces/contacts/ShareContactByEmail.interface.ts +12 -0
  159. package/src/interfaces/contacts/ShareContactPopover.interface.ts +9 -0
  160. package/src/interfaces/contacts/index.ts +3 -1
  161. package/src/interfaces/forms/dynamicForm/HiddenField.interface.ts +2 -0
  162. package/src/interfaces/myProfile/MyProfileBody.interface.ts +5 -4
  163. package/src/interfaces/myProfile/index.ts +1 -0
  164. package/src/interfaces/myProfile/permissions/ActionCheckbox.interface.ts +9 -0
  165. package/src/interfaces/myProfile/permissions/RoleButton.interface.ts +8 -0
  166. package/src/interfaces/myProfile/permissions/RolePermissionsTab.interface.ts +19 -0
  167. package/src/interfaces/myProfile/permissions/index.ts +3 -0
  168. package/src/interfaces/overlay/Overlay.interface.ts +2 -1
  169. package/src/interfaces/rooms/GroupCard.interface.ts +1 -0
  170. package/src/interfaces/rooms/ItemCard.interface.ts +1 -0
  171. package/src/mocks/myProfile/Permissions.mock.ts +68 -0
  172. package/src/mocks/myProfile/index.ts +2 -1
  173. package/src/stories/assets/Illustrations.stories.tsx +4 -0
  174. package/src/stories/myProfile/MyProfilePanel.stories.tsx +8 -8
  175. package/src/stories/myProfile/permissions/RolePermissionsTab.stories.tsx +23 -0
  176. package/src/theme/colors.ts +1 -0
@@ -1,6 +1,7 @@
1
1
  export * from './email';
2
2
  export * from './details';
3
3
  export * from './payment';
4
+ export * from './permissions';
4
5
  export * from './CancelAccount.interface';
5
6
  export * from './ContextButtons.interface';
6
7
  export * from './MyProfileBody.interface';
@@ -0,0 +1,8 @@
1
+ import { ActionsPermitted } from '../..';
2
+ export interface ActionCheckboxI {
3
+ action: ActionsPermitted;
4
+ label?: string;
5
+ isChecked: boolean;
6
+ isDisabled: boolean;
7
+ onChange: (action: ActionsPermitted) => void;
8
+ }
@@ -0,0 +1,7 @@
1
+ import { RoleType } from '../../../helpers';
2
+ export interface RoleButtonI {
3
+ role: RoleType;
4
+ onClick: () => void;
5
+ isSelected: boolean;
6
+ showBorder?: boolean;
7
+ }
@@ -0,0 +1,12 @@
1
+ import { ReducedRoleType } from '../../../helpers';
2
+ export type ActionsPermitted = 'view' | 'add' | 'edit' | 'delete';
3
+ export interface RolePermissionI {
4
+ id: string;
5
+ label: string;
6
+ permissions: Record<ActionsPermitted, string[]>;
7
+ }
8
+ export type RolePermissionObject = Record<ReducedRoleType, Record<ActionsPermitted, string[]>>;
9
+ export interface RolePermissionsTabI {
10
+ selected: RolePermissionObject;
11
+ onSelect(object: RolePermissionObject): void;
12
+ }
@@ -0,0 +1,3 @@
1
+ export * from './ActionCheckbox.interface';
2
+ export * from './RoleButton.interface';
3
+ export * from './RolePermissionsTab.interface';
@@ -0,0 +1,3 @@
1
+ export * from './ActionCheckbox.interface';
2
+ export * from './RoleButton.interface';
3
+ export * from './RolePermissionsTab.interface';
@@ -1,4 +1,5 @@
1
- import { ChakraProps } from "@chakra-ui/react";
1
+ import { ChakraProps } from '@chakra-ui/react';
2
2
  export interface OverlayI extends ChakraProps {
3
3
  showOverlay?: boolean;
4
+ onClick?: () => void;
4
5
  }
@@ -8,4 +8,5 @@ export interface GroupCardI extends GroupCardHeaderI, Omit<MoveModalI, 'title'>
8
8
  onClickDetails: (id: string) => void;
9
9
  onMove: (data: Partial<ReportsI>) => void;
10
10
  disabled?: boolean;
11
+ itemsDisabled?: boolean;
11
12
  }
@@ -6,4 +6,5 @@ export interface ItemCardI extends MoveModalI, Partial<ReportsI> {
6
6
  onClickDelete: (id: string) => void;
7
7
  onClickDetails: (id: string) => void;
8
8
  onMove: (data: Partial<ReportsI>) => void;
9
+ disabled?: boolean;
9
10
  }
@@ -0,0 +1,2 @@
1
+ import { RolePermissionObject } from '../../interfaces';
2
+ export declare const featuresSelectedMock: RolePermissionObject;
@@ -0,0 +1,66 @@
1
+ export const featuresSelectedMock = {
2
+ member: {
3
+ view: [
4
+ 'property-data',
5
+ 'financial-data',
6
+ 'partners',
7
+ 'folders',
8
+ 'home-items',
9
+ 'rooms',
10
+ 'rooms-categories',
11
+ ],
12
+ add: [],
13
+ edit: [],
14
+ delete: [],
15
+ },
16
+ contributor: {
17
+ view: [
18
+ 'property-data',
19
+ 'financial-data',
20
+ 'partners',
21
+ 'folders',
22
+ 'home-items',
23
+ 'rooms',
24
+ 'rooms-categories',
25
+ ],
26
+ add: ['home-items', 'rooms', 'rooms-categories'],
27
+ edit: ['folders', 'rooms', 'rooms-categories'],
28
+ delete: ['rooms-categories'],
29
+ },
30
+ manager: {
31
+ view: [
32
+ 'property-data',
33
+ 'financial-data',
34
+ 'partners',
35
+ 'folders',
36
+ 'home-items',
37
+ 'rooms',
38
+ 'rooms-categories',
39
+ ],
40
+ add: [
41
+ 'property-data',
42
+ 'financial-data',
43
+ 'partners',
44
+ 'folders',
45
+ 'home-items',
46
+ 'rooms',
47
+ 'rooms-categories',
48
+ ],
49
+ edit: [
50
+ 'property-data',
51
+ 'financial-data',
52
+ 'folders',
53
+ 'home-items',
54
+ 'rooms',
55
+ 'rooms-categories',
56
+ ],
57
+ delete: [
58
+ 'financial-data',
59
+ 'partners',
60
+ 'folders',
61
+ 'home-items',
62
+ 'rooms',
63
+ 'rooms-categories',
64
+ ],
65
+ },
66
+ };
@@ -1 +1,2 @@
1
+ export * from './Permissions.mock';
1
2
  export * from './Receipts.mock';
@@ -1 +1,2 @@
1
+ export * from './Permissions.mock';
1
2
  export * from './Receipts.mock';
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Center, Grid, Image, Text } from '@chakra-ui/react';
3
- import { AlertDelete, AlertDeletePurple, Arrow, Balustrades, Barcode, Batery, Bathroom, Battery2, Bedding, Bedroom, Billing, BillingAddress, BlueFolder, BlueFolderShared, Book, Box as BoxIcon, Building, Calc, Calendar, Calendar2, Catalog, Check, CheckInCircle, CheckPen, Chemistry, Cleaning, Closet, Co2, ComputerReport, Confirmation, Construction, Contacts, Contacts2, Contributor, Cookware, Countertops, CreditCard, Detector, Diamond, DiningRoom, DocIcon, Document, Doors, Drop, DropCalendar, Electricity, Electronics, Entryway, Equipment, Exclamation, Exterior, Face, Feedback, FileUploading, Finance, Fire, Flag, Flooring, FormSent, Foundation, Furniture, Garage, GearPencil, GearTime, GenericField, GlassWater, GoldenBars, GreenFolder, Group, Groups, GuestBedroom, Hallway, HandPencil, Hardware, Heart, Heater, Help, HomeAddress, Homeowner, House, HouseHands, IA, ImageDefault, ImgIcon, Inbox, Insect, Kitchen, LargeAppliances, Laundry, Light, Lighting, LivingRoom, LogoSmall, MagnifyingGlassReport, Manager, MasterBedroom, Mattress, Member, Message, MobileDrop, Money, Mudroom, NeedHelp, Notes, Office, Paint, Painting, PartnerGeneric, Patio, PdfIcon, PersonMail, Plants, Plate, Play, Plus, Pool, Pool2, Porch, Price, Profile, ProgressReport, Proposal, Rating, RealEstate, Receipt, ReceiptBg, ReceiptHouse, Receipts, Recipient, Records, Register, Registry, RelationshipHome, ResendPassword, Rocket, Roof, Roof2, Security, Send, ShareHome, ShareWith, SixtyEight, SmallAppliances, SolarPanel, Sprinkler, Steps, Structure, Structures, Subscription, Supplies, Table, Target, Temperature, Theatre, Thumbnail, ThumbnailSmall, ThumbUp, Tile, Tools, Tools2, Trash, Utensils, VideoIcon, VideoPlay, VioletFolder, WallDecor, Warning, Warranty, Water, WellDone, WholeHome, Wind, Window, Wizard, WizardDetailed, WizardQuick, YellowFolder, YellowFolderUnshared, } from '../../assets/images';
3
+ import { AlertDelete, AlertDeletePurple, Arrow, Balustrades, Barcode, Batery, Bathroom, Battery2, Bedding, Bedroom, Billing, BillingAddress, BlueFolder, BlueFolderShared, Book, Box as BoxIcon, Building, Calc, Calendar, Calendar2, Catalog, Check, CheckInCircle, CheckPen, Chemistry, Cleaning, Closet, Co2, ComputerReport, Confirmation, Construction, Contacts, Contacts2, Contributor, Cookware, Countertops, CreditCard, Detector, Diamond, DiningRoom, DocIcon, Document, Doors, Drop, DropCalendar, Electricity, Electronics, Entryway, Equipment, Exclamation, Exterior, Face, Feedback, FileUploading, Finance, Fire, Flag, Flooring, FormSent, Foundation, Furniture, Garage, GearPencil, GearTime, GenericField, GlassWater, GoldenBars, GreenFolder, Group, Groups, GuestBedroom, Hallway, HandPencil, Hardware, Heart, Heater, Help, HomeAddress, Homeowner, House, HouseHands, IA, ImageDefault, ImgIcon, Inbox, Insect, Kitchen, LargeAppliances, Laundry, Light, Lighting, LivingRoom, LogoSmall, MagnifyingGlassReport, Manager, MasterBedroom, Mattress, Member, Message, MobileDrop, Money, Mudroom, NeedHelp, Notes, Office, Paint, Painting, PartnerGeneric, Patio, PdfIcon, PersonMail, Plants, Plate, Play, Plus, Pool, Pool2, Porch, Price, Profile, ProgressReport, Proposal, Rating, RealEstate, Receipt, ReceiptBg, ReceiptHouse, Receipts, Recipient, Records, Register, Registry, RelationshipHome, ResendPassword, Rocket, Roof, Roof2, Security, Send, ShareHome, ShareWith, SixtyEight, SMS, Social, SmallAppliances, SolarPanel, Sprinkler, Steps, Structure, Structures, Subscription, Supplies, Table, Target, Temperature, Theatre, Thumbnail, ThumbnailSmall, ThumbUp, Tile, Tools, Tools2, Trash, Utensils, VideoIcon, VideoPlay, VioletFolder, WallDecor, Warning, Warranty, Water, WellDone, WholeHome, Wind, Window, Wizard, WizardDetailed, WizardQuick, YellowFolder, YellowFolderUnshared, } from '../../assets/images';
4
4
  import { CookTop, Dishwasher, Dryer, Freezer, Fridge, Microwave, Oven, Range, Washer, } from '../../assets/images/appliances';
5
5
  export default {
6
6
  title: 'Assets/Illustrations',
7
7
  };
8
8
  export const Illustrations = () => {
9
- return (_jsxs(Grid, { maxW: "600px", templateColumns: "repeat(auto-fill, minmax(75px, 1fr))", p: "base", gap: "8", children: [_jsx(IconWrapper, { icon: CookTop, name: "CookTop" }), _jsx(IconWrapper, { icon: Dishwasher, name: "Dishwasher" }), _jsx(IconWrapper, { icon: Dryer, name: "Dryer" }), _jsx(IconWrapper, { icon: Freezer, name: "Freezer" }), _jsx(IconWrapper, { icon: Fridge, name: "Fridge" }), _jsx(IconWrapper, { icon: Microwave, name: "Microwave" }), _jsx(IconWrapper, { icon: Oven, name: "Oven" }), _jsx(IconWrapper, { icon: Range, name: "Range" }), _jsx(IconWrapper, { icon: Washer, name: "Washer" }), _jsx(IconWrapper, { icon: Barcode, name: "Barcode" }), _jsx(IconWrapper, { icon: Book, name: "Book" }), _jsx(IconWrapper, { icon: Calendar, name: "Calendar" }), _jsx(IconWrapper, { icon: GoldenBars, name: "GoldenBars" }), _jsx(IconWrapper, { icon: Heart, name: "Heart" }), _jsx(IconWrapper, { icon: Notes, name: "Notes" }), _jsx(IconWrapper, { icon: Rating, name: "Rating" }), _jsx(IconWrapper, { icon: Registry, name: "Registry" }), _jsx(IconWrapper, { icon: Tools2, name: "Tools2" }), _jsx(IconWrapper, { icon: Balustrades, name: "Balustrades" }), _jsx(IconWrapper, { icon: Bedding, name: "Bedding" }), _jsx(IconWrapper, { icon: Cookware, name: "Cookware" }), _jsx(IconWrapper, { icon: Countertops, name: "Countertops" }), _jsx(IconWrapper, { icon: Doors, name: "Doors" }), _jsx(IconWrapper, { icon: Electronics, name: "Electronics" }), _jsx(IconWrapper, { icon: Equipment, name: "Equipment" }), _jsx(IconWrapper, { icon: Exterior, name: "Exterior" }), _jsx(IconWrapper, { icon: Fire, name: "Fire" }), _jsx(IconWrapper, { icon: Flooring, name: "Flooring" }), _jsx(IconWrapper, { icon: Furniture, name: "Furniture" }), _jsx(IconWrapper, { icon: Hardware, name: "Hardware" }), _jsx(IconWrapper, { icon: IA, name: "IA" }), _jsx(IconWrapper, { icon: LargeAppliances, name: "LargeAppliances" }), _jsx(IconWrapper, { icon: Lighting, name: "Lighting" }), _jsx(IconWrapper, { icon: Mattress, name: "Mattress" }), _jsx(IconWrapper, { icon: Paint, name: "Paint" }), _jsx(IconWrapper, { icon: Plants, name: "Plants" }), _jsx(IconWrapper, { icon: Porch, name: "Porch" }), _jsx(IconWrapper, { icon: Roof, name: "Roof" }), _jsx(IconWrapper, { icon: SmallAppliances, name: "SmallAppliances" }), _jsx(IconWrapper, { icon: Steps, name: "Steps" }), _jsx(IconWrapper, { icon: Structures, name: "Structures" }), _jsx(IconWrapper, { icon: Supplies, name: "Supplies" }), _jsx(IconWrapper, { icon: Table, name: "Table" }), _jsx(IconWrapper, { icon: Temperature, name: "Temperature" }), _jsx(IconWrapper, { icon: Tile, name: "Tile" }), _jsx(IconWrapper, { icon: Tools, name: "Tools" }), _jsx(IconWrapper, { icon: Utensils, name: "Utensils" }), _jsx(IconWrapper, { icon: WallDecor, name: "WallDecor" }), _jsx(IconWrapper, { icon: Water, name: "Water" }), _jsx(IconWrapper, { icon: Window, name: "Window" }), _jsx(IconWrapper, { icon: AlertDelete, name: "AlertDelete" }), _jsx(IconWrapper, { icon: AlertDeletePurple, name: "AlertDeletePurple" }), _jsx(IconWrapper, { icon: Arrow, name: "Arrow" }), _jsx(IconWrapper, { icon: Batery, name: "Batery" }), _jsx(IconWrapper, { icon: Bathroom, name: "Bathroom" }), _jsx(IconWrapper, { icon: Battery2, name: "Battery2" }), _jsx(IconWrapper, { icon: Bedroom, name: "Bedroom" }), _jsx(IconWrapper, { icon: Billing, name: "Billing" }), _jsx(IconWrapper, { icon: BillingAddress, name: "BillingAddress" }), _jsx(IconWrapper, { icon: BlueFolder, name: "BlueFolder" }), _jsx(IconWrapper, { icon: BlueFolderShared, name: "BlueFolderShared" }), _jsx(IconWrapper, { icon: BoxIcon, name: "Box" }), _jsx(IconWrapper, { icon: Building, name: "Building" }), _jsx(IconWrapper, { icon: Calc, name: "Calc" }), _jsx(IconWrapper, { icon: Calendar2, name: "Calendar2" }), _jsx(IconWrapper, { icon: Catalog, name: "Catalog" }), _jsx(IconWrapper, { icon: Check, name: "Check" }), _jsx(IconWrapper, { icon: CheckInCircle, name: "CheckInCircle" }), _jsx(IconWrapper, { icon: CheckPen, name: "CheckPen" }), _jsx(IconWrapper, { icon: Chemistry, name: "Chemistry" }), _jsx(IconWrapper, { icon: Cleaning, name: "Cleaning" }), _jsx(IconWrapper, { icon: Closet, name: "Closet" }), _jsx(IconWrapper, { icon: Co2, name: "Co2" }), _jsx(IconWrapper, { icon: ComputerReport, name: "ComputerReport" }), _jsx(IconWrapper, { icon: Confirmation, name: "Confirmation" }), _jsx(IconWrapper, { icon: Construction, name: "Construction" }), _jsx(IconWrapper, { icon: Contacts, name: "Contacts" }), _jsx(IconWrapper, { icon: Contacts2, name: "Contacts2" }), _jsx(IconWrapper, { icon: Contributor, name: "Contributor" }), _jsx(IconWrapper, { icon: CreditCard, name: "CreditCard" }), _jsx(IconWrapper, { icon: Detector, name: "Detector" }), _jsx(IconWrapper, { icon: Diamond, name: "Diamond" }), _jsx(IconWrapper, { icon: DiningRoom, name: "DiningRoom" }), _jsx(IconWrapper, { icon: DocIcon, name: "DocIcon" }), _jsx(IconWrapper, { icon: Document, name: "Document" }), _jsx(IconWrapper, { icon: Drop, name: "Drop" }), _jsx(IconWrapper, { icon: DropCalendar, name: "DropCalendar" }), _jsx(IconWrapper, { icon: Electricity, name: "Electricity" }), _jsx(IconWrapper, { icon: Entryway, name: "Entryway" }), _jsx(IconWrapper, { icon: Exclamation, name: "Exclamation" }), _jsx(IconWrapper, { icon: Face, name: "Face" }), _jsx(IconWrapper, { icon: Feedback, name: "Feedback" }), _jsx(IconWrapper, { icon: FileUploading, name: "FileUploading" }), _jsx(IconWrapper, { icon: Finance, name: "Finance" }), _jsx(IconWrapper, { icon: Flag, name: "Flag" }), _jsx(IconWrapper, { icon: FormSent, name: "FormSent" }), _jsx(IconWrapper, { icon: Foundation, name: "Foundation" }), _jsx(IconWrapper, { icon: Garage, name: "Garage" }), _jsx(IconWrapper, { icon: GearPencil, name: "GearPencil" }), _jsx(IconWrapper, { icon: GearTime, name: "GearTime" }), _jsx(IconWrapper, { icon: GenericField, name: "GenericField" }), _jsx(IconWrapper, { icon: GlassWater, name: "GlassWater" }), _jsx(IconWrapper, { icon: GreenFolder, name: "GreenFolder" }), _jsx(IconWrapper, { icon: Group, name: "Group" }), _jsx(IconWrapper, { icon: Groups, name: "Groups" }), _jsx(IconWrapper, { icon: GuestBedroom, name: "GuestBedroom" }), _jsx(IconWrapper, { icon: Hallway, name: "Hallway" }), _jsx(IconWrapper, { icon: HandPencil, name: "HandPencil" }), _jsx(IconWrapper, { icon: Heater, name: "Heater" }), _jsx(IconWrapper, { icon: Help, name: "Help" }), _jsx(IconWrapper, { icon: HomeAddress, name: "HomeAddress" }), _jsx(IconWrapper, { icon: Homeowner, name: "Homeowner" }), _jsx(IconWrapper, { icon: House, name: "House" }), _jsx(IconWrapper, { icon: HouseHands, name: "HouseHands" }), _jsx(IconWrapper, { icon: ImageDefault, name: "ImageDefault" }), _jsx(IconWrapper, { icon: ImgIcon, name: "ImgIcon" }), _jsx(IconWrapper, { icon: Inbox, name: "Inbox" }), _jsx(IconWrapper, { icon: Insect, name: "Insect" }), _jsx(IconWrapper, { icon: Kitchen, name: "Kitchen" }), _jsx(IconWrapper, { icon: Laundry, name: "Laundry" }), _jsx(IconWrapper, { icon: Light, name: "Light" }), _jsx(IconWrapper, { icon: LivingRoom, name: "LivingRoom" }), _jsx(IconWrapper, { icon: LogoSmall, name: "LogoSmall" }), _jsx(IconWrapper, { icon: MagnifyingGlassReport, name: "MagnifyingGlassReport" }), _jsx(IconWrapper, { icon: Manager, name: "Manager" }), _jsx(IconWrapper, { icon: MasterBedroom, name: "MasterBedroom" }), _jsx(IconWrapper, { icon: Member, name: "Member" }), _jsx(IconWrapper, { icon: Message, name: "Message" }), _jsx(IconWrapper, { icon: MobileDrop, name: "MobileDrop" }), _jsx(IconWrapper, { icon: Money, name: "Money" }), _jsx(IconWrapper, { icon: Mudroom, name: "Mudroom" }), _jsx(IconWrapper, { icon: NeedHelp, name: "NeedHelp" }), _jsx(IconWrapper, { icon: Office, name: "Office" }), _jsx(IconWrapper, { icon: Painting, name: "Painting" }), _jsx(IconWrapper, { icon: PartnerGeneric, name: "PartnerGeneric" }), _jsx(IconWrapper, { icon: Patio, name: "Patio" }), _jsx(IconWrapper, { icon: PdfIcon, name: "PdfIcon" }), _jsx(IconWrapper, { icon: PersonMail, name: "PersonMail" }), _jsx(IconWrapper, { icon: Plate, name: "Plate" }), _jsx(IconWrapper, { icon: Play, name: "Play" }), _jsx(IconWrapper, { icon: Plus, name: "Plus" }), _jsx(IconWrapper, { icon: Pool, name: "Pool" }), _jsx(IconWrapper, { icon: Pool2, name: "Pool2" }), _jsx(IconWrapper, { icon: Price, name: "Price" }), _jsx(IconWrapper, { icon: Profile, name: "Profile" }), _jsx(IconWrapper, { icon: ProgressReport, name: "ProgressReport" }), _jsx(IconWrapper, { icon: Proposal, name: "Proposal" }), _jsx(IconWrapper, { icon: RealEstate, name: "RealEstate" }), _jsx(IconWrapper, { icon: Receipt, name: "Receipt" }), _jsx(IconWrapper, { icon: ReceiptBg, name: "ReceiptBg" }), _jsx(IconWrapper, { icon: ReceiptHouse, name: "ReceiptHouse" }), _jsx(IconWrapper, { icon: Receipts, name: "Receipts" }), _jsx(IconWrapper, { icon: Recipient, name: "Recipient" }), _jsx(IconWrapper, { icon: Records, name: "Records" }), _jsx(IconWrapper, { icon: Register, name: "Register" }), _jsx(IconWrapper, { icon: RelationshipHome, name: "RelationshipHome" }), _jsx(IconWrapper, { icon: ResendPassword, name: "ResendPassword" }), _jsx(IconWrapper, { icon: Rocket, name: "Rocket" }), _jsx(IconWrapper, { icon: Roof2, name: "Roof2" }), _jsx(IconWrapper, { icon: Security, name: "Security" }), _jsx(IconWrapper, { icon: Send, name: "Send" }), _jsx(IconWrapper, { icon: ShareHome, name: "ShareHome" }), _jsx(IconWrapper, { icon: ShareWith, name: "ShareWith" }), _jsx(IconWrapper, { icon: SixtyEight, name: "SixtyEight" }), _jsx(IconWrapper, { icon: SolarPanel, name: "SolarPanel" }), _jsx(IconWrapper, { icon: Sprinkler, name: "Sprinkler" }), _jsx(IconWrapper, { icon: Structure, name: "Structure" }), _jsx(IconWrapper, { icon: Subscription, name: "Subscription" }), _jsx(IconWrapper, { icon: Target, name: "Target" }), _jsx(IconWrapper, { icon: Theatre, name: "Theatre" }), _jsx(IconWrapper, { icon: Thumbnail, name: "Thumbnail" }), _jsx(IconWrapper, { icon: ThumbnailSmall, name: "ThumbnailSmall" }), _jsx(IconWrapper, { icon: ThumbUp, name: "ThumbUp" }), _jsx(IconWrapper, { icon: Trash, name: "Trash" }), _jsx(IconWrapper, { icon: VideoIcon, name: "VideoIcon" }), _jsx(IconWrapper, { icon: VideoPlay, name: "VideoPlay" }), _jsx(IconWrapper, { icon: VioletFolder, name: "VioletFolder" }), _jsx(IconWrapper, { icon: Warning, name: "Warning" }), _jsx(IconWrapper, { icon: Warranty, name: "Warranty" }), _jsx(IconWrapper, { icon: WellDone, name: "WellDone" }), _jsx(IconWrapper, { icon: WholeHome, name: "WholeHome" }), _jsx(IconWrapper, { icon: Wind, name: "Wind" }), _jsx(IconWrapper, { icon: Wizard, name: "Wizard" }), _jsx(IconWrapper, { icon: WizardDetailed, name: "WizardDetailed" }), _jsx(IconWrapper, { icon: WizardQuick, name: "WizardQuick" }), _jsx(IconWrapper, { icon: YellowFolder, name: "YellowFolder" }), _jsx(IconWrapper, { icon: YellowFolderUnshared, name: "YellowFolderUnshared" })] }));
9
+ return (_jsxs(Grid, { maxW: "600px", templateColumns: "repeat(auto-fill, minmax(75px, 1fr))", p: "base", gap: "8", children: [_jsx(IconWrapper, { icon: CookTop, name: "CookTop" }), _jsx(IconWrapper, { icon: Dishwasher, name: "Dishwasher" }), _jsx(IconWrapper, { icon: Dryer, name: "Dryer" }), _jsx(IconWrapper, { icon: Freezer, name: "Freezer" }), _jsx(IconWrapper, { icon: Fridge, name: "Fridge" }), _jsx(IconWrapper, { icon: Microwave, name: "Microwave" }), _jsx(IconWrapper, { icon: Oven, name: "Oven" }), _jsx(IconWrapper, { icon: Range, name: "Range" }), _jsx(IconWrapper, { icon: Washer, name: "Washer" }), _jsx(IconWrapper, { icon: Barcode, name: "Barcode" }), _jsx(IconWrapper, { icon: Book, name: "Book" }), _jsx(IconWrapper, { icon: Calendar, name: "Calendar" }), _jsx(IconWrapper, { icon: GoldenBars, name: "GoldenBars" }), _jsx(IconWrapper, { icon: Heart, name: "Heart" }), _jsx(IconWrapper, { icon: Notes, name: "Notes" }), _jsx(IconWrapper, { icon: Rating, name: "Rating" }), _jsx(IconWrapper, { icon: Registry, name: "Registry" }), _jsx(IconWrapper, { icon: Tools2, name: "Tools2" }), _jsx(IconWrapper, { icon: Balustrades, name: "Balustrades" }), _jsx(IconWrapper, { icon: Bedding, name: "Bedding" }), _jsx(IconWrapper, { icon: Cookware, name: "Cookware" }), _jsx(IconWrapper, { icon: Countertops, name: "Countertops" }), _jsx(IconWrapper, { icon: Doors, name: "Doors" }), _jsx(IconWrapper, { icon: Electronics, name: "Electronics" }), _jsx(IconWrapper, { icon: Equipment, name: "Equipment" }), _jsx(IconWrapper, { icon: Exterior, name: "Exterior" }), _jsx(IconWrapper, { icon: Fire, name: "Fire" }), _jsx(IconWrapper, { icon: Flooring, name: "Flooring" }), _jsx(IconWrapper, { icon: Furniture, name: "Furniture" }), _jsx(IconWrapper, { icon: Hardware, name: "Hardware" }), _jsx(IconWrapper, { icon: IA, name: "IA" }), _jsx(IconWrapper, { icon: LargeAppliances, name: "LargeAppliances" }), _jsx(IconWrapper, { icon: Lighting, name: "Lighting" }), _jsx(IconWrapper, { icon: Mattress, name: "Mattress" }), _jsx(IconWrapper, { icon: Paint, name: "Paint" }), _jsx(IconWrapper, { icon: Plants, name: "Plants" }), _jsx(IconWrapper, { icon: Porch, name: "Porch" }), _jsx(IconWrapper, { icon: Roof, name: "Roof" }), _jsx(IconWrapper, { icon: SmallAppliances, name: "SmallAppliances" }), _jsx(IconWrapper, { icon: Steps, name: "Steps" }), _jsx(IconWrapper, { icon: Structures, name: "Structures" }), _jsx(IconWrapper, { icon: Supplies, name: "Supplies" }), _jsx(IconWrapper, { icon: Table, name: "Table" }), _jsx(IconWrapper, { icon: Temperature, name: "Temperature" }), _jsx(IconWrapper, { icon: Tile, name: "Tile" }), _jsx(IconWrapper, { icon: Tools, name: "Tools" }), _jsx(IconWrapper, { icon: Utensils, name: "Utensils" }), _jsx(IconWrapper, { icon: WallDecor, name: "WallDecor" }), _jsx(IconWrapper, { icon: Water, name: "Water" }), _jsx(IconWrapper, { icon: Window, name: "Window" }), _jsx(IconWrapper, { icon: AlertDelete, name: "AlertDelete" }), _jsx(IconWrapper, { icon: AlertDeletePurple, name: "AlertDeletePurple" }), _jsx(IconWrapper, { icon: Arrow, name: "Arrow" }), _jsx(IconWrapper, { icon: Batery, name: "Batery" }), _jsx(IconWrapper, { icon: Bathroom, name: "Bathroom" }), _jsx(IconWrapper, { icon: Battery2, name: "Battery2" }), _jsx(IconWrapper, { icon: Bedroom, name: "Bedroom" }), _jsx(IconWrapper, { icon: Billing, name: "Billing" }), _jsx(IconWrapper, { icon: BillingAddress, name: "BillingAddress" }), _jsx(IconWrapper, { icon: BlueFolder, name: "BlueFolder" }), _jsx(IconWrapper, { icon: BlueFolderShared, name: "BlueFolderShared" }), _jsx(IconWrapper, { icon: BoxIcon, name: "Box" }), _jsx(IconWrapper, { icon: Building, name: "Building" }), _jsx(IconWrapper, { icon: Calc, name: "Calc" }), _jsx(IconWrapper, { icon: Calendar2, name: "Calendar2" }), _jsx(IconWrapper, { icon: Catalog, name: "Catalog" }), _jsx(IconWrapper, { icon: Check, name: "Check" }), _jsx(IconWrapper, { icon: CheckInCircle, name: "CheckInCircle" }), _jsx(IconWrapper, { icon: CheckPen, name: "CheckPen" }), _jsx(IconWrapper, { icon: Chemistry, name: "Chemistry" }), _jsx(IconWrapper, { icon: Cleaning, name: "Cleaning" }), _jsx(IconWrapper, { icon: Closet, name: "Closet" }), _jsx(IconWrapper, { icon: Co2, name: "Co2" }), _jsx(IconWrapper, { icon: ComputerReport, name: "ComputerReport" }), _jsx(IconWrapper, { icon: Confirmation, name: "Confirmation" }), _jsx(IconWrapper, { icon: Construction, name: "Construction" }), _jsx(IconWrapper, { icon: Contacts, name: "Contacts" }), _jsx(IconWrapper, { icon: Contacts2, name: "Contacts2" }), _jsx(IconWrapper, { icon: Contributor, name: "Contributor" }), _jsx(IconWrapper, { icon: CreditCard, name: "CreditCard" }), _jsx(IconWrapper, { icon: Detector, name: "Detector" }), _jsx(IconWrapper, { icon: Diamond, name: "Diamond" }), _jsx(IconWrapper, { icon: DiningRoom, name: "DiningRoom" }), _jsx(IconWrapper, { icon: DocIcon, name: "DocIcon" }), _jsx(IconWrapper, { icon: Document, name: "Document" }), _jsx(IconWrapper, { icon: Drop, name: "Drop" }), _jsx(IconWrapper, { icon: DropCalendar, name: "DropCalendar" }), _jsx(IconWrapper, { icon: Electricity, name: "Electricity" }), _jsx(IconWrapper, { icon: Entryway, name: "Entryway" }), _jsx(IconWrapper, { icon: Exclamation, name: "Exclamation" }), _jsx(IconWrapper, { icon: Face, name: "Face" }), _jsx(IconWrapper, { icon: Feedback, name: "Feedback" }), _jsx(IconWrapper, { icon: FileUploading, name: "FileUploading" }), _jsx(IconWrapper, { icon: Finance, name: "Finance" }), _jsx(IconWrapper, { icon: Flag, name: "Flag" }), _jsx(IconWrapper, { icon: FormSent, name: "FormSent" }), _jsx(IconWrapper, { icon: Foundation, name: "Foundation" }), _jsx(IconWrapper, { icon: Garage, name: "Garage" }), _jsx(IconWrapper, { icon: GearPencil, name: "GearPencil" }), _jsx(IconWrapper, { icon: GearTime, name: "GearTime" }), _jsx(IconWrapper, { icon: GenericField, name: "GenericField" }), _jsx(IconWrapper, { icon: GlassWater, name: "GlassWater" }), _jsx(IconWrapper, { icon: GreenFolder, name: "GreenFolder" }), _jsx(IconWrapper, { icon: Group, name: "Group" }), _jsx(IconWrapper, { icon: Groups, name: "Groups" }), _jsx(IconWrapper, { icon: GuestBedroom, name: "GuestBedroom" }), _jsx(IconWrapper, { icon: Hallway, name: "Hallway" }), _jsx(IconWrapper, { icon: HandPencil, name: "HandPencil" }), _jsx(IconWrapper, { icon: Heater, name: "Heater" }), _jsx(IconWrapper, { icon: Help, name: "Help" }), _jsx(IconWrapper, { icon: HomeAddress, name: "HomeAddress" }), _jsx(IconWrapper, { icon: Homeowner, name: "Homeowner" }), _jsx(IconWrapper, { icon: House, name: "House" }), _jsx(IconWrapper, { icon: HouseHands, name: "HouseHands" }), _jsx(IconWrapper, { icon: ImageDefault, name: "ImageDefault" }), _jsx(IconWrapper, { icon: ImgIcon, name: "ImgIcon" }), _jsx(IconWrapper, { icon: Inbox, name: "Inbox" }), _jsx(IconWrapper, { icon: Insect, name: "Insect" }), _jsx(IconWrapper, { icon: Kitchen, name: "Kitchen" }), _jsx(IconWrapper, { icon: Laundry, name: "Laundry" }), _jsx(IconWrapper, { icon: Light, name: "Light" }), _jsx(IconWrapper, { icon: LivingRoom, name: "LivingRoom" }), _jsx(IconWrapper, { icon: LogoSmall, name: "LogoSmall" }), _jsx(IconWrapper, { icon: MagnifyingGlassReport, name: "MagnifyingGlassReport" }), _jsx(IconWrapper, { icon: Manager, name: "Manager" }), _jsx(IconWrapper, { icon: MasterBedroom, name: "MasterBedroom" }), _jsx(IconWrapper, { icon: Member, name: "Member" }), _jsx(IconWrapper, { icon: Message, name: "Message" }), _jsx(IconWrapper, { icon: MobileDrop, name: "MobileDrop" }), _jsx(IconWrapper, { icon: Money, name: "Money" }), _jsx(IconWrapper, { icon: Mudroom, name: "Mudroom" }), _jsx(IconWrapper, { icon: NeedHelp, name: "NeedHelp" }), _jsx(IconWrapper, { icon: Office, name: "Office" }), _jsx(IconWrapper, { icon: Painting, name: "Painting" }), _jsx(IconWrapper, { icon: PartnerGeneric, name: "PartnerGeneric" }), _jsx(IconWrapper, { icon: Patio, name: "Patio" }), _jsx(IconWrapper, { icon: PdfIcon, name: "PdfIcon" }), _jsx(IconWrapper, { icon: PersonMail, name: "PersonMail" }), _jsx(IconWrapper, { icon: Plate, name: "Plate" }), _jsx(IconWrapper, { icon: Play, name: "Play" }), _jsx(IconWrapper, { icon: Plus, name: "Plus" }), _jsx(IconWrapper, { icon: Pool, name: "Pool" }), _jsx(IconWrapper, { icon: Pool2, name: "Pool2" }), _jsx(IconWrapper, { icon: Price, name: "Price" }), _jsx(IconWrapper, { icon: Profile, name: "Profile" }), _jsx(IconWrapper, { icon: ProgressReport, name: "ProgressReport" }), _jsx(IconWrapper, { icon: Proposal, name: "Proposal" }), _jsx(IconWrapper, { icon: RealEstate, name: "RealEstate" }), _jsx(IconWrapper, { icon: Receipt, name: "Receipt" }), _jsx(IconWrapper, { icon: ReceiptBg, name: "ReceiptBg" }), _jsx(IconWrapper, { icon: ReceiptHouse, name: "ReceiptHouse" }), _jsx(IconWrapper, { icon: Receipts, name: "Receipts" }), _jsx(IconWrapper, { icon: Recipient, name: "Recipient" }), _jsx(IconWrapper, { icon: Records, name: "Records" }), _jsx(IconWrapper, { icon: Register, name: "Register" }), _jsx(IconWrapper, { icon: RelationshipHome, name: "RelationshipHome" }), _jsx(IconWrapper, { icon: ResendPassword, name: "ResendPassword" }), _jsx(IconWrapper, { icon: Rocket, name: "Rocket" }), _jsx(IconWrapper, { icon: Roof2, name: "Roof2" }), _jsx(IconWrapper, { icon: Security, name: "Security" }), _jsx(IconWrapper, { icon: Send, name: "Send" }), _jsx(IconWrapper, { icon: ShareHome, name: "ShareHome" }), _jsx(IconWrapper, { icon: ShareWith, name: "ShareWith" }), _jsx(IconWrapper, { icon: SixtyEight, name: "SixtyEight" }), _jsx(IconWrapper, { icon: SMS, name: "SMS" }), _jsx(IconWrapper, { icon: Social, name: "Social" }), _jsx(IconWrapper, { icon: SolarPanel, name: "SolarPanel" }), _jsx(IconWrapper, { icon: Sprinkler, name: "Sprinkler" }), _jsx(IconWrapper, { icon: Structure, name: "Structure" }), _jsx(IconWrapper, { icon: Subscription, name: "Subscription" }), _jsx(IconWrapper, { icon: Target, name: "Target" }), _jsx(IconWrapper, { icon: Theatre, name: "Theatre" }), _jsx(IconWrapper, { icon: Thumbnail, name: "Thumbnail" }), _jsx(IconWrapper, { icon: ThumbnailSmall, name: "ThumbnailSmall" }), _jsx(IconWrapper, { icon: ThumbUp, name: "ThumbUp" }), _jsx(IconWrapper, { icon: Trash, name: "Trash" }), _jsx(IconWrapper, { icon: VideoIcon, name: "VideoIcon" }), _jsx(IconWrapper, { icon: VideoPlay, name: "VideoPlay" }), _jsx(IconWrapper, { icon: VioletFolder, name: "VioletFolder" }), _jsx(IconWrapper, { icon: Warning, name: "Warning" }), _jsx(IconWrapper, { icon: Warranty, name: "Warranty" }), _jsx(IconWrapper, { icon: WellDone, name: "WellDone" }), _jsx(IconWrapper, { icon: WholeHome, name: "WholeHome" }), _jsx(IconWrapper, { icon: Wind, name: "Wind" }), _jsx(IconWrapper, { icon: Wizard, name: "Wizard" }), _jsx(IconWrapper, { icon: WizardDetailed, name: "WizardDetailed" }), _jsx(IconWrapper, { icon: WizardQuick, name: "WizardQuick" }), _jsx(IconWrapper, { icon: YellowFolder, name: "YellowFolder" }), _jsx(IconWrapper, { icon: YellowFolderUnshared, name: "YellowFolderUnshared" })] }));
10
10
  };
11
11
  const IconWrapper = ({ icon, name }) => {
12
12
  return (_jsxs(Center, { flexDirection: "column", children: [_jsx(Image, { src: icon, boxSize: "30px", mb: "2" }), _jsx(Text, { variant: "home", children: name })] }));
@@ -1,9 +1,8 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { t } from 'i18next';
3
2
  import { Box, Divider, DrawerBody } from '@chakra-ui/react';
4
- import { ActiveSubscription, CancelAccount, CreditCardContainer, CreditCardError, EmailPermissions, MonthlyCharge, MyProfileBody, MyProfileHeader, MyProfilePanel, NewCreditCard, NewCreditCardHeader, PaymentReceipts, RightPanel, TwoFactorSetting, UserDetails, } from '../../components';
3
+ import { ActiveSubscription, CancelAccount, CreditCardContainer, CreditCardError, MonthlyCharge, MyProfileBody, MyProfileHeader, MyProfilePanel, NewCreditCard, NewCreditCardHeader, PaymentReceipts, RightPanel, RolePermissionsTab, TwoFactorSetting, UserDetails, } from '../../components';
5
4
  import { action } from '@storybook/addon-actions';
6
- import { menuMock, receiptsMock } from '../../mocks';
5
+ import { featuresSelectedMock, menuMock, receiptsMock } from '../../mocks';
7
6
  import { useState } from 'react';
8
7
  export default {
9
8
  title: 'Components/MyProfile',
@@ -15,5 +14,5 @@ export const MyProfilePanelComponent = () => {
15
14
  const handleCloseNewCreditCardPanel = () => setIsNewCreditCardPanelOpen(false);
16
15
  const handleOpenNewCreditCardPanel = () => setIsNewCreditCardPanelOpen(true);
17
16
  const handleError = () => setHasError(true);
18
- return (_jsxs(_Fragment, { children: [_jsx(RightPanel, { isOpen: true, onClose: action('onCloseClick'), children: _jsxs(MyProfilePanel, { children: [_jsx(MyProfileHeader, { onClose: action('onCloseClick') }), _jsx(MyProfileBody, { isLoading: false, account: _jsxs(_Fragment, { children: [_jsx(ActiveSubscription, { nextCharge: "2024-12-01", subscriptionPrice: 36, totalStorage: 2, totalUsed: 1, availableStorage: 200, state: 'trial' }), _jsx(Divider, { width: "calc(100% - 26px)", mx: "auto" }), _jsx(MonthlyCharge, { additionalPrice: 36, monthlyCharge: 36, monthDate: "03/01/2023", nextCharge: "01/12/2024", taxPercentage: 8.5, taxValue: 3.06, subtotal: 36.0 }), _jsx(CancelAccount, { label: "Contact Homefile", onClick: action('onCancelAccountClick') })] }), details: _jsxs(_Fragment, { children: [_jsx(UserDetails, { email: "gary.edmunds@gmail.com", firstName: "Gary", lastName: "Edmunds", onSave: action('onSaveClick'), bg: "#4CC35A" }), _jsx(TwoFactorSetting, { email: "gary.edmunds@gmail.com", sms: "2032409108", onChange: action('on2FAChangeClick'), onSave: action('onSaveClick'), defaultValue: "email", twoFactor: 'active' })] }), email: _jsx(EmailPermissions, { initialPermissions: ['Promotions', 'Homefile News'], emailPermissions: t('myProfile.email.permissions').split(', '), onSubmit: (data) => action('onDeleteCard')(data) }), payment: _jsxs(Box, { bg: "lightBlue.2", h: "inherit", children: [_jsx(CreditCardContainer, { cardNumber: "1234 5678 9012 3456", brand: "visa", onAddCard: action('onAddCard'), onDeleteCard: handleOpenNewCreditCardPanel, onSubmit: (data) => action('onDeleteCard')(data), cardHolder: "Gary Edmunds", cvv: "123", expirationMonth: "12", expirationYear: "2024" }), _jsx(PaymentReceipts, { receipts: receiptsMock, menuItems: menuMock })] }) })] }) }), _jsx(RightPanel, { isOpen: isNewCreditCardPanelOpen, onClose: handleCloseNewCreditCardPanel, children: _jsxs(MyProfilePanel, { children: [_jsx(MyProfileHeader, { onClose: handleCloseNewCreditCardPanel }), _jsxs(DrawerBody, { p: "0", children: [_jsx(NewCreditCardHeader, { onClick: handleCloseNewCreditCardPanel }), hasError && _jsx(CreditCardError, {}), _jsx(NewCreditCard, { hasError: hasError, onSubmit: handleError })] })] }) })] }));
17
+ return (_jsxs(_Fragment, { children: [_jsx(RightPanel, { isOpen: true, onClose: action('onCloseClick'), children: _jsxs(MyProfilePanel, { children: [_jsx(MyProfileHeader, { onClose: action('onCloseClick') }), _jsx(MyProfileBody, { isLoading: false, account: _jsxs(_Fragment, { children: [_jsx(ActiveSubscription, { nextCharge: "2024-12-01", subscriptionPrice: 36, totalStorage: 2, totalUsed: 1, availableStorage: 200, state: 'trial' }), _jsx(Divider, { width: "calc(100% - 26px)", mx: "auto" }), _jsx(MonthlyCharge, { additionalPrice: 36, monthlyCharge: 36, monthDate: "03/01/2023", nextCharge: "01/12/2024", taxPercentage: 8.5, taxValue: 3.06, subtotal: 36.0 }), _jsx(CancelAccount, { label: "Contact Homefile", onClick: action('onCancelAccountClick') })] }), details: _jsxs(_Fragment, { children: [_jsx(UserDetails, { email: "gary.edmunds@gmail.com", firstName: "Gary", lastName: "Edmunds", onSave: action('onSaveClick'), bg: "#4CC35A" }), _jsx(TwoFactorSetting, { email: "gary.edmunds@gmail.com", sms: "2032409108", onChange: action('on2FAChangeClick'), onSave: action('onSaveClick'), defaultValue: "email", twoFactor: 'active' })] }), payment: _jsxs(Box, { bg: "lightBlue.2", h: "inherit", children: [_jsx(CreditCardContainer, { cardNumber: "1234 5678 9012 3456", brand: "visa", onAddCard: action('onAddCard'), onDeleteCard: handleOpenNewCreditCardPanel, onSubmit: (data) => action('onDeleteCard')(data), cardHolder: "Gary Edmunds", cvv: "123", expirationMonth: "12", expirationYear: "2024" }), _jsx(PaymentReceipts, { receipts: receiptsMock, menuItems: menuMock })] }), rolePermissions: _jsx(RolePermissionsTab, { selected: featuresSelectedMock, onSelect: action('onSelect') }) })] }) }), _jsx(RightPanel, { isOpen: isNewCreditCardPanelOpen, onClose: handleCloseNewCreditCardPanel, children: _jsxs(MyProfilePanel, { children: [_jsx(MyProfileHeader, { onClose: handleCloseNewCreditCardPanel }), _jsxs(DrawerBody, { p: "0", children: [_jsx(NewCreditCardHeader, { onClick: handleCloseNewCreditCardPanel }), hasError && _jsx(CreditCardError, {}), _jsx(NewCreditCard, { hasError: hasError, onSubmit: handleError })] })] }) })] }));
19
18
  };
@@ -0,0 +1,5 @@
1
+ import { Meta } from '@storybook/react';
2
+ import { RolePermissionsTabI } from '../../../interfaces';
3
+ declare const _default: Meta<RolePermissionsTabI>;
4
+ export default _default;
5
+ export declare const RolePermissionsTabComponent: (args: RolePermissionsTabI) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box } from '@chakra-ui/react';
3
+ import { action } from '@storybook/addon-actions';
4
+ import { RolePermissionsTab } from '../../../components';
5
+ import { featuresSelectedMock } from '../../../mocks';
6
+ export default {
7
+ title: 'Components/MyProfile',
8
+ component: RolePermissionsTab,
9
+ args: {
10
+ selected: featuresSelectedMock,
11
+ onSelect: action('onSelect'),
12
+ },
13
+ };
14
+ export const RolePermissionsTabComponent = (args) => {
15
+ return (_jsx(Box, { w: ['full', '500px'], bg: "white", children: _jsx(RolePermissionsTab, Object.assign({}, args)) }));
16
+ };
@@ -110,4 +110,5 @@ export declare const colors: {
110
110
  2: string;
111
111
  };
112
112
  skyGradient: string;
113
+ overlay: string;
113
114
  };
@@ -110,4 +110,5 @@ export const colors = {
110
110
  2: '#F544DA',
111
111
  },
112
112
  skyGradient: 'linear(to-b, #cff1fc, #F9FEFF)',
113
+ overlay: '#00000040',
113
114
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homefile/components-v2",
3
- "version": "1.0.15",
3
+ "version": "1.2.0",
4
4
  "author": "Homefile",
5
5
  "license": "UNLICENSED",
6
6
  "typings": "dist/index.d.ts",
@@ -119,6 +119,8 @@ import Send from './send.svg'
119
119
  import ShareHome from './share-home.svg'
120
120
  import ShareWith from './share-with.svg'
121
121
  import SixtyEight from './sixty-eight.svg'
122
+ import SMS from './sms.svg'
123
+ import Social from './social.svg'
122
124
  import SolarPanel from './solar-panel.svg'
123
125
  import Sprinkler from './sprinkler.svg'
124
126
  import Structure from './structure.svg'
@@ -269,6 +271,8 @@ export {
269
271
  ShareHome,
270
272
  ShareWith,
271
273
  SixtyEight,
274
+ SMS,
275
+ Social,
272
276
  SolarPanel,
273
277
  Sprinkler,
274
278
  Structure,
@@ -0,0 +1,21 @@
1
+ <svg id="Group_18906" data-name="Group 18906" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20.228" height="24" viewBox="0 0 20.228 24">
2
+ <defs>
3
+ <clipPath id="clip-path">
4
+ <rect id="Rectangle_22680" data-name="Rectangle 22680" width="20.227" height="24" fill="none"/>
5
+ </clipPath>
6
+ </defs>
7
+ <g id="Group_18894" data-name="Group 18894" clip-path="url(#clip-path)">
8
+ <path id="Path_14256" data-name="Path 14256" d="M7.713,26.082H8.926l1.288,1.469L11.5,26.082h1.815v5.3H0V14.26H13.316v3.114h-5.6a.762.762,0,0,0-.76.76v7.188a.762.762,0,0,0,.76.76" transform="translate(0 -11.033)" fill="#40566b"/>
9
+ <path id="Path_14257" data-name="Path 14257" d="M15.3,26.083v5.3H3.618V14.26H15.3V26.083Z" transform="translate(-2.799 -11.033)" fill="#daf1f3"/>
10
+ <rect id="Rectangle_22678" data-name="Rectangle 22678" width="6.635" height="0.453" transform="matrix(0.707, -0.707, 0.707, 0.707, 3.174, 12.446)" fill="#fff"/>
11
+ <rect id="Rectangle_22679" data-name="Rectangle 22679" width="6.593" height="0.453" transform="matrix(0.707, -0.707, 0.707, 0.707, 3.174, 15.761)" fill="#fff"/>
12
+ <path id="Path_14258" data-name="Path 14258" d="M44,28.781v7.188a.762.762,0,0,1-.758.76H35.27L33.982,38.2l-1.287-1.469H31.481a.762.762,0,0,1-.76-.76V28.781a.762.762,0,0,1,.76-.76H43.238a.761.761,0,0,1,.758.76" transform="translate(-23.769 -21.68)" fill="#e24c5d"/>
13
+ <path id="Path_14259" data-name="Path 14259" d="M70.756,41.351a1.026,1.026,0,1,1-1.025,1.025,1.026,1.026,0,0,1,1.025-1.025" transform="translate(-53.95 -31.993)" fill="#fff"/>
14
+ <path id="Path_14260" data-name="Path 14260" d="M56.147,41.351a1.026,1.026,0,1,1-1.028,1.025,1.026,1.026,0,0,1,1.028-1.025" transform="translate(-42.645 -31.993)" fill="#fff"/>
15
+ <path id="Path_14261" data-name="Path 14261" d="M41.548,41.351a1.026,1.026,0,1,1-1.027,1.025,1.025,1.025,0,0,1,1.027-1.025" transform="translate(-31.351 -31.993)" fill="#fff"/>
16
+ <path id="Path_14262" data-name="Path 14262" d="M13.316,89.931v2.385a1.268,1.268,0,0,1-1.265,1.263H1.263A1.268,1.268,0,0,1,0,92.316V89.931Z" transform="translate(0 -69.579)" fill="#40566b"/>
17
+ <path id="Path_14263" data-name="Path 14263" d="M13.316,1.263V3.227H0V1.263A1.268,1.268,0,0,1,1.263,0H12.051a1.268,1.268,0,0,1,1.265,1.263" fill="#40566b"/>
18
+ <path id="Path_14264" data-name="Path 14264" d="M25.614,6.309h-2.34a.339.339,0,1,1,0-.679h2.34a.339.339,0,0,1,0,.679" transform="translate(-17.745 -4.356)" fill="#18252f"/>
19
+ <path id="Path_14265" data-name="Path 14265" d="M27.057,94.069a.977.977,0,1,1-.977-.977.977.977,0,0,1,.977.977" transform="translate(-19.422 -72.025)" fill="#323954"/>
20
+ </g>
21
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="22.558" height="17.29" viewBox="0 0 22.558 17.29">
2
+ <g id="Group_18914" data-name="Group 18914" transform="translate(-2445.885 -801.401)">
3
+ <g id="Group_18893" data-name="Group 18893" transform="translate(2445.885 801.401)">
4
+ <g id="Group_18913" data-name="Group 18913" transform="translate(0 0)">
5
+ <path id="Path_14254" data-name="Path 14254" d="M22.558,13.5A1.3,1.3,0,0,1,21.264,14.8H7.73L5.541,17.29,3.351,14.8H1.291A1.3,1.3,0,0,1,0,13.5V1.291A1.293,1.293,0,0,1,1.291,0H21.264a1.3,1.3,0,0,1,1.294,1.291Zm-4.34-6.51-5.272,0-5.274,0" transform="translate(0 0)" fill="#e24c5d"/>
6
+ </g>
7
+ </g>
8
+ <text id="_" data-name="#" transform="translate(2450.934 812.401)" fill="#fff" font-size="10" font-family="Poppins-Medium, Poppins" font-weight="500"><tspan x="0" y="0">#</tspan></text>
9
+ </g>
10
+ </svg>
@@ -108,6 +108,7 @@
108
108
  "next": "Next",
109
109
  "previous": "Previous",
110
110
  "save": "Save",
111
+ "send": "Send",
111
112
  "skip": "Skip for now"
112
113
  },
113
114
  "createDocument": {
@@ -138,6 +139,11 @@
138
139
  },
139
140
  "contacts": {
140
141
  "addBtn": "Contact",
142
+ "error": "Email should be from a valid Homefile account",
143
+ "shareContact": "Share Contact",
144
+ "placeholders": {
145
+ "email": "Enter Email"
146
+ },
141
147
  "title": "Contacts"
142
148
  },
143
149
  "daysOfWeek": {
@@ -448,6 +454,13 @@
448
454
  "title": "My Homes"
449
455
  },
450
456
  "myProfile": {
457
+ "actions": {
458
+ "add": "Add",
459
+ "can": "Can",
460
+ "edit": "Edit",
461
+ "delete": "Delete",
462
+ "view": "View"
463
+ },
451
464
  "account": {
452
465
  "cancel": "Cancel Account",
453
466
  "cancelInfo": "To cancel your Homefile account, please contact Homefile below.",
@@ -477,6 +490,20 @@
477
490
  "receiptsTitle": "Receipts",
478
491
  "toDelete": "To delete a card, you must first add a new card."
479
492
  },
493
+ "permissions": {
494
+ "contributor": {
495
+ "description": "Can view, add, and edit the information when you share a home.",
496
+ "title": "Contributor Permissions"
497
+ },
498
+ "manager": {
499
+ "description": "Can view, add, and edit all home information within a home.",
500
+ "title": "Manager Permissions"
501
+ },
502
+ "member": {
503
+ "description": "Can only view information when you share a home.",
504
+ "title": "Member Permissions"
505
+ }
506
+ },
480
507
  "placeholders": {
481
508
  "cardHolder": "Name on card",
482
509
  "cardNumber": "Card number",
@@ -491,7 +518,8 @@
491
518
  "tab2": "Subscription",
492
519
  "tab3": "Payment",
493
520
  "tab4": "Email",
494
- "tab5": "Sharing"
521
+ "tab5": "Sharing",
522
+ "tab6": "Role Permissions"
495
523
  }
496
524
  },
497
525
  "newPassword": {
@@ -7,7 +7,13 @@ import {
7
7
  } from '@/components'
8
8
  import { colors } from '@/theme/colors'
9
9
 
10
- export const ContactCard = ({ contact, index, menuItems }: ContactCardI) => {
10
+ export const ContactCard = ({
11
+ apiError,
12
+ contact,
13
+ index,
14
+ menuItems,
15
+ onShare,
16
+ }: ContactCardI) => {
11
17
  const {
12
18
  address,
13
19
  city,
@@ -22,7 +28,12 @@ export const ContactCard = ({ contact, index, menuItems }: ContactCardI) => {
22
28
  return (
23
29
  <Container maxW={'none'}>
24
30
  <Stack pb="base" px="base">
25
- <ContactCardHeader contact={contact} menuItems={menuItems} />
31
+ <ContactCardHeader
32
+ apiError={apiError}
33
+ contact={contact}
34
+ menuItems={menuItems}
35
+ onShare={onShare}
36
+ />
26
37
  <Flex justify="space-between" align="stretch" gap="base">
27
38
  <ContactCardInfo
28
39
  {...{ company, email, firstName, lastName, phone, index }}
@@ -1,14 +1,22 @@
1
1
  import { t } from 'i18next'
2
- import { Flex, Image, Text } from '@chakra-ui/react'
2
+ import { Flex, IconButton, Image, Text, useDisclosure } from '@chakra-ui/react'
3
3
  import { Contacts } from '@/assets/images'
4
- import { IconMenu, MoreHorizontal } from '@/components'
4
+ import {
5
+ IconMenu,
6
+ MoreHorizontal,
7
+ ShareContactPopover,
8
+ ShareIcon,
9
+ } from '@/components'
5
10
  import { ContactCardHeaderI } from '@/interfaces'
6
11
 
7
12
  export const ContactCardHeader = ({
13
+ apiError,
8
14
  contact,
9
15
  menuItems,
16
+ onShare,
10
17
  }: ContactCardHeaderI) => {
11
18
  const { category, title } = contact
19
+ const { isOpen, onOpen, onClose } = useDisclosure()
12
20
  return (
13
21
  <Flex align="center" justify="space-between">
14
22
  <Flex align="center" gap="base">
@@ -27,12 +35,29 @@ export const ContactCardHeader = ({
27
35
  <Text fontSize="xs">{title.toUpperCase()}</Text>
28
36
  </Flex>
29
37
  </Flex>
30
- <IconMenu
31
- icon={<MoreHorizontal size={32} />}
32
- itemForm={contact}
33
- menuItems={menuItems}
34
- disabled={!menuItems}
35
- />
38
+ <Flex align="center" position="relative" gap="base" py="base">
39
+ <IconButton
40
+ aria-label="share"
41
+ variant="menuIcon"
42
+ icon={<ShareIcon size={18} />}
43
+ onClick={onOpen}
44
+ w="fit-content"
45
+ />
46
+ <ShareContactPopover
47
+ apiError={apiError}
48
+ contact={contact}
49
+ isOpen={isOpen}
50
+ onClose={onClose}
51
+ onShare={onShare}
52
+ />
53
+
54
+ <IconMenu
55
+ icon={<MoreHorizontal size={32} />}
56
+ itemForm={contact}
57
+ menuItems={menuItems}
58
+ disabled={menuItems.length < 1}
59
+ />
60
+ </Flex>
36
61
  </Flex>
37
62
  )
38
63
  }
@@ -17,12 +17,14 @@ import { ContactsContentI } from '@/interfaces'
17
17
  import { useContactsContent, useWindowDimensions } from '@/hooks'
18
18
 
19
19
  export const ContactsContent = ({
20
+ apiError,
20
21
  contacts,
21
22
  menuItems,
22
23
  handleClose,
23
24
  children,
24
25
  handleAdd,
25
26
  disabled,
27
+ onShare,
26
28
  }: ContactsContentI) => {
27
29
  const { filteredContacts, handleChange, search } =
28
30
  useContactsContent(contacts)
@@ -60,9 +62,11 @@ export const ContactsContent = ({
60
62
  <Stack spacing="2" p="base" bg="lightBlue.2" minHeight="full">
61
63
  {filteredContacts.map((contact, idx) => (
62
64
  <ContactCard
65
+ apiError={apiError}
63
66
  key={contact._id}
64
67
  contact={contact}
65
68
  menuItems={menuItems}
69
+ onShare={onShare}
66
70
  index={idx}
67
71
  />
68
72
  ))}