From 02843b95c986bd3f13189586266aa1855216db14 Mon Sep 17 00:00:00 2001 From: ryanwong Date: Sat, 26 Nov 2022 01:23:44 -0500 Subject: [PATCH] first commit --- .env.development | 13 + .eslintignore | 3 + .eslintrc.json | 81 + .github/workflows/deploy-production.yml | 45 + .github/workflows/deploy-qa.yml | 45 + .github/workflows/deploy-staging.yml | 46 + .gitignore | 57 + .husky/.gitignore | 1 + .husky/common.sh | 0 .husky/pre-commit | 4 + .prettierignore | 3 + .prettierrc | 8 + .prettierrc.json | 9 + .storybook/main.js | 29 + .storybook/preview-body.html | 1 + .storybook/preview-head.html | 15 + .storybook/preview.js | 85 + .vs/VSWorkspaceState.json | 6 + .vs/slnx.sqlite | Bin 0 -> 151552 bytes .vscode/extensions.json | 3 + .vscode/settings.json | 2 + README.md | 79 + config/.eslintrc.json | 50 + config/envPath.js | 8 + config/paths.js | 17 + config/webpack.base.js | 155 + config/webpack.dev.js | 76 + .../1-getting-started/auth.spec.js | 67 + package.json | 205 + postcss.config.js | 20 + public/_redirects | 1 + screenshot_1.png | Bin 0 -> 366344 bytes screenshot_2.png | Bin 0 -> 279266 bytes screenshot_3.png | Bin 0 -> 296144 bytes src/app/App.css | 28 + src/app/App.tsx | 25 + src/app/index.ts | 3 + src/images/favicon.png | Bin 0 -> 2118 bytes src/index.html | 31 + src/index.tsx | 45 + src/routes/PrivateRoutes.tsx | 38 + src/routes/PublicRoutes.tsx | 112 + src/routes/RedirectRoute.tsx | 19 + src/routes/Routes.tsx | 391 + src/routes/index.ts | 4 + src/shared/Assets/actions-default.svg | 4 + src/shared/Assets/actions-purple.svg | 4 + src/shared/Assets/add-button-lg.svg | 4 + src/shared/Assets/add-button-sm.svg | 4 + src/shared/Assets/addressBuilding.svg | 36 + src/shared/Assets/air-mover.svg | 6 + src/shared/Assets/air-scrubber.svg | 15 + src/shared/Assets/apple.svg | 4 + src/shared/Assets/appliances-sm.svg | 10 + src/shared/Assets/appliances.svg | 10 + src/shared/Assets/arrow-left.svg | 3 + src/shared/Assets/asbestos.svg | 11 + src/shared/Assets/australiaflag.svg | 28 + src/shared/Assets/basement.svg | 4 + src/shared/Assets/bathroom.svg | 13 + src/shared/Assets/bedroom.svg | 12 + src/shared/Assets/bookmark-outline-purple.svg | 3 + src/shared/Assets/bookmark-photo.svg | 3 + src/shared/Assets/bookmark-purple.svg | 3 + src/shared/Assets/bookmark.svg | 3 + src/shared/Assets/bookmarked-photo.svg | 3 + src/shared/Assets/canadaflag.svg | 11 + src/shared/Assets/caret-down.svg | 3 + src/shared/Assets/caret-up.svg | 3 + src/shared/Assets/carousel-next.svg | 4 + src/shared/Assets/carousel-prev.svg | 4 + src/shared/Assets/carpentry.svg | 16 + src/shared/Assets/ceiling-sm.svg | 4 + src/shared/Assets/ceiling.svg | 4 + src/shared/Assets/checkbox.svg | 4 + src/shared/Assets/checked-mark-purple-bg.svg | 5 + src/shared/Assets/checked-mark.svg | 3 + src/shared/Assets/chevron-down.svg | 3 + src/shared/Assets/chevron-next.svg | 3 + src/shared/Assets/chevron-previous.svg | 3 + src/shared/Assets/circle-16.svg | 3 + src/shared/Assets/circle.svg | 3 + src/shared/Assets/cleaning.svg | 9 + src/shared/Assets/close-sm.svg | 3 + src/shared/Assets/close.svg | 4 + src/shared/Assets/closecircle.svg | 18 + src/shared/Assets/commercial.svg | 37 + src/shared/Assets/company-arrow.svg | 3 + src/shared/Assets/confirm-purple.svg | 4 + src/shared/Assets/confirm-sm.svg | 4 + src/shared/Assets/confirm.svg | 4 + src/shared/Assets/copy.svg | 4 + src/shared/Assets/crew.svg | 15 + src/shared/Assets/cube-plus-lg.svg | 4 + src/shared/Assets/cube-plus.svg | 4 + src/shared/Assets/cube.svg | 9 + src/shared/Assets/custom-damage-add.svg | 4 + src/shared/Assets/custom-damage-type.svg | 7 + src/shared/Assets/custom-room.svg | 4 + src/shared/Assets/dashboard.svg | 3 + src/shared/Assets/deck.svg | 4 + src/shared/Assets/dehumidifier.svg | 18 + src/shared/Assets/den.svg | 18 + src/shared/Assets/dining-room.svg | 22 + src/shared/Assets/dot.svg | 3 + src/shared/Assets/download-purple.svg | 4 + src/shared/Assets/download.svg | 4 + src/shared/Assets/dropzone-background.svg | 5 + src/shared/Assets/drying-mat.svg | 8 + src/shared/Assets/eastfacing.svg | 9 + src/shared/Assets/edit-lg.svg | 3 + src/shared/Assets/edit-md.svg | 3 + src/shared/Assets/edit.svg | 3 + src/shared/Assets/electrical-32.svg | 4 + src/shared/Assets/electrical-room.svg | 7 + src/shared/Assets/electrical.svg | 4 + src/shared/Assets/elevator.svg | 16 + src/shared/Assets/email-new.svg | 3 + src/shared/Assets/employee-phone.svg | 3 + src/shared/Assets/ensuite.svg | 4 + src/shared/Assets/equipment-log.svg | 15 + src/shared/Assets/exterior-32.svg | 7 + src/shared/Assets/exterior-add.svg | 9 + src/shared/Assets/exterior.svg | 7 + src/shared/Assets/eye-closed.svg | 3 + src/shared/Assets/eye.svg | 3 + src/shared/Assets/facebook.svg | 4 + src/shared/Assets/filter.svg | 3 + src/shared/Assets/fire.svg | 11 + src/shared/Assets/flag-outline-purple.svg | 4 + src/shared/Assets/flag-photo.svg | 4 + src/shared/Assets/flag-purple.svg | 4 + src/shared/Assets/flag.svg | 4 + src/shared/Assets/flagged-photo.svg | 4 + src/shared/Assets/floor-add.svg | 9 + src/shared/Assets/floor-sm.svg | 7 + src/shared/Assets/floor.svg | 11 + src/shared/Assets/flooring-32.svg | 4 + src/shared/Assets/flooring.svg | 4 + src/shared/Assets/funnel-fill.svg | 3 + src/shared/Assets/galleryplaceholder.svg | 4 + src/shared/Assets/garage.svg | 11 + src/shared/Assets/google.svg | 27 + src/shared/Assets/gym.svg | 5 + src/shared/Assets/hallway.svg | 4 + src/shared/Assets/hamburger-menu.svg | 5 + src/shared/Assets/hand.svg | 1 + src/shared/Assets/highrise-small.svg | 37 + src/shared/Assets/highrise.svg | 54 + src/shared/Assets/impact.svg | 4 + src/shared/Assets/info.svg | 4 + src/shared/Assets/inject-dryer.svg | 17 + src/shared/Assets/inspection.svg | 11 + src/shared/Assets/kitchen.svg | 18 + src/shared/Assets/landscape.svg | 3 + src/shared/Assets/laundry.svg | 20 + src/shared/Assets/link-open.svg | 5 + src/shared/Assets/link.svg | 3 + src/shared/Assets/living-room.svg | 17 + src/shared/Assets/lobby.svg | 11 + src/shared/Assets/logo-horizontal.svg | 10 + src/shared/Assets/logo-icon.svg | 10 + src/shared/Assets/logo-mobile.svg | 26 + src/shared/Assets/logo.png | Bin 0 -> 15664 bytes src/shared/Assets/logo.svg | 9 + src/shared/Assets/lunchroom.svg | 20 + src/shared/Assets/maintenance-room.svg | 7 + src/shared/Assets/meeting-room.svg | 18 + src/shared/Assets/misc.svg | 4 + src/shared/Assets/mobile-app-icon.svg | 9 + src/shared/Assets/modal-close.svg | 3 + src/shared/Assets/moisture-log.svg | 6 + src/shared/Assets/mold.svg | 16 + src/shared/Assets/multiunit-lg.svg | 36 + src/shared/Assets/natural.svg | 13 + src/shared/Assets/newzealandflag.svg | 16 + src/shared/Assets/no-company.svg | 12 + src/shared/Assets/northfacing.svg | 9 + src/shared/Assets/not-found.svg | 36 + src/shared/Assets/office-building.svg | 42 + src/shared/Assets/office.svg | 20 + src/shared/Assets/patio.svg | 4 + src/shared/Assets/people-pink-medium.svg | 4 + src/shared/Assets/people-pink-small.svg | 4 + src/shared/Assets/people-pink.svg | 8 + src/shared/Assets/people.svg | 3 + src/shared/Assets/person-purple.svg | 4 + src/shared/Assets/person.svg | 3 + src/shared/Assets/phone.svg | 9 + src/shared/Assets/photo-bookmark.svg | 11 + src/shared/Assets/photo-flag.svg | 12 + src/shared/Assets/photo-note.svg | 4 + src/shared/Assets/photo-share-error.svg | 10 + src/shared/Assets/photo-share.svg | 10 + src/shared/Assets/pin.svg | 19 + src/shared/Assets/pinActive.svg | 18 + src/shared/Assets/plaza.svg | 4 + src/shared/Assets/plumbing-32.svg | 5 + src/shared/Assets/plumbing.svg | 5 + src/shared/Assets/plus.svg | 3 + src/shared/Assets/pool.svg | 6 + src/shared/Assets/private-office.svg | 17 + src/shared/Assets/projects.svg | 3 + src/shared/Assets/protection.svg | 5 + src/shared/Assets/radio.svg | 4 + src/shared/Assets/reception.svg | 4 + src/shared/Assets/reports-type-compact.svg | 19 + src/shared/Assets/reports-type-expanded.svg | 12 + src/shared/Assets/reports-type-large.svg | 15 + src/shared/Assets/restroom.svg | 5 + src/shared/Assets/roof.svg | 5 + src/shared/Assets/roofing-32.svg | 23 + src/shared/Assets/roofing.svg | 23 + src/shared/Assets/search.svg | 3 + src/shared/Assets/share-32.svg | 3 + src/shared/Assets/share.svg | 3 + src/shared/Assets/shop.svg | 16 + src/shared/Assets/side-bar-close.svg | 3 + src/shared/Assets/side-bar-left-arrow.svg | 4 + src/shared/Assets/side-bar-right-arrow.svg | 4 + src/shared/Assets/single-home-sm.svg | 16 + src/shared/Assets/single-home.svg | 16 + src/shared/Assets/smoke.svg | 13 + src/shared/Assets/sms-icon.svg | 7 + src/shared/Assets/sms.svg | 3 + src/shared/Assets/southfacing.svg | 9 + src/shared/Assets/square.svg | 3 + src/shared/Assets/stairway.svg | 4 + src/shared/Assets/storage.svg | 6 + src/shared/Assets/structural-32.svg | 4 + src/shared/Assets/structural.svg | 4 + src/shared/Assets/support.svg | 4 + src/shared/Assets/three-dots.svg | 3 + src/shared/Assets/trash-md.svg | 3 + src/shared/Assets/trash-photo.svg | 3 + src/shared/Assets/trash-sm-dark.svg | 3 + src/shared/Assets/trash-sm-disabled.svg | 4 + src/shared/Assets/trash-sm.svg | 3 + src/shared/Assets/trash.svg | 3 + src/shared/Assets/unit-add.svg | 8 + src/shared/Assets/unit-lg.svg | 6 + src/shared/Assets/unit-sm.svg | 6 + src/shared/Assets/unit.svg | 6 + src/shared/Assets/unitedkingdomflag.svg | 15 + src/shared/Assets/unitedstatesflag.svg | 27 + src/shared/Assets/utilityroom.svg | 10 + src/shared/Assets/walls-32.svg | 4 + src/shared/Assets/walls.svg | 4 + src/shared/Assets/water.svg | 4 + src/shared/Assets/welcome-aboard.svg | 362 + src/shared/Assets/westfacing.svg | 9 + .../CountryAutocomplete.tsx | 63 + .../countryAutocomplete.module.css | 53 + .../Address/CountryAutocomplete/index.ts | 1 + .../Address/FieldList/FieldList.tsx | 40 + .../Address/FieldList/ListItem/ListItem.tsx | 32 + .../Address/FieldList/ListItem/index.ts | 1 + .../FieldList/ListItem/listItem.module.css | 14 + .../Address/FieldList/fieldList.module.css | 17 + .../components/Address/FieldList/index.ts | 1 + .../GoogleAutocomplete/GoogleAutocomplete.tsx | 60 + .../PlacePredictions/Place/Place.tsx | 37 + .../PlacePredictions/Place/index.ts | 1 + .../PlacePredictions/Place/place.module.css | 35 + .../PlacePredictions/PlacePredictions.tsx | 31 + .../PlacePredictions/index.ts | 1 + .../placePredictions.module.css | 17 + .../googleAutocomplete.module.css | 50 + .../Address/GoogleAutocomplete/index.ts | 1 + .../ProvinceAutocomplete.tsx | 61 + .../Address/ProvinceAutocomplete/index.ts | 1 + .../provinceAutocomplete.module.css | 53 + src/shared/components/Address/index.ts | 3 + src/shared/components/Anchor/Anchor.tsx | 71 + .../Anchor/EmailAnchor/EmailAnchor.tsx | 29 + .../Anchor/EmailAnchor/emailAnchor.module.css | 13 + .../components/Anchor/EmailAnchor/index.ts | 1 + .../Anchor/NewTabAnchor/NewTabAnchor.tsx | 24 + .../components/Anchor/NewTabAnchor/index.ts | 1 + .../NewTabAnchor/newTabAnchor.module.css | 14 + .../Anchor/PhoneAnchor/PhoneAnchor.tsx | 30 + .../components/Anchor/PhoneAnchor/index.ts | 1 + .../Anchor/PhoneAnchor/phone.module.css | 12 + .../components/Anchor/anchor.module.css | 6 + src/shared/components/Anchor/index.ts | 1 + .../components/Avatar/Avatar/Avatar.tsx | 20 + .../Avatar/Avatar/avatar.module.css | 5 + src/shared/components/Avatar/Avatar/index.ts | 1 + .../AvatarOrInitials/AvatarOrInitials.tsx | 31 + .../avatarOrInitials.module.css | 14 + .../Avatar/AvatarOrInitials/index.ts | 1 + src/shared/components/Avatar/index.ts | 2 + .../components/Button/Button/Button.tsx | 78 + src/shared/components/Button/Button/index.ts | 1 + .../Button/CancelButton/CancelButton.tsx | 26 + .../CancelButton/cancelButton.module.css | 14 + .../components/Button/CancelButton/index.ts | 1 + .../Button/CategoryButton/CategoryButton.tsx | 43 + .../CategoryButton/categoryButton.module.css | 59 + .../components/Button/CategoryButton/index.ts | 1 + .../Button/ClearButton/ClearButton.tsx | 25 + .../Button/ClearButton/clearButton.module.css | 22 + .../components/Button/ClearButton/index.ts | 1 + .../Button/CloseButton/CloseButton.tsx | 28 + .../Button/CloseButton/closeButton.module.css | 20 + .../components/Button/CloseButton/index.ts | 1 + .../DarkPurpleButton/DarkPurpleButton.tsx | 53 + .../darkPurpleButton.module.css | 17 + .../Button/DarkPurpleButton/index.ts | 1 + .../Button/DeleteButton/DeleteButton.tsx | 41 + .../DeleteButton/deleteButton.module.css | 14 + .../components/Button/DeleteButton/index.ts | 1 + .../Button/EditButton/EditButton.tsx | 23 + .../Button/EditButton/editButton.module.css | 8 + .../components/Button/EditButton/index.ts | 1 + .../Button/LoadMoreButton/LoadMoreButton.tsx | 29 + .../components/Button/LoadMoreButton/index.ts | 1 + .../LoadMoreButton/loadMoreButton.module.css | 27 + .../Button/OutlineButton/OutlineButton.tsx | 26 + .../components/Button/OutlineButton/index.ts | 1 + .../OutlineButton/outlineButton.module.css | 14 + .../ProjectScreenButton.tsx | 76 + .../Button/ProjectScreenButton/index.ts | 1 + .../projectScreenButton.module.css | 112 + .../Button/PurpleButton/PurpleButton.tsx | 53 + .../components/Button/PurpleButton/index.ts | 1 + .../PurpleButton/purpleButton.module.css | 31 + .../Button/RadioButton/RadioButton.tsx | 48 + .../components/Button/RadioButton/index.ts | 1 + .../Button/RadioButton/radioButton.module.css | 26 + .../Button/RoomButton/RoomButton.tsx | 47 + .../components/Button/RoomButton/index.ts | 1 + .../Button/RoomButton/roomButton.module.css | 25 + .../Button/TileButton/TileButton.tsx | 40 + .../components/Button/TileButton/index.ts | 1 + .../Button/TileButton/tileButton.module.css | 36 + src/shared/components/Button/index.ts | 12 + src/shared/components/CheckBox/CheckBox.tsx | 42 + src/shared/components/CheckBox/index.ts | 1 + .../CompanyHeader/CompanyHeader.tsx | 17 + src/shared/components/CompanyHeader/index.ts | 1 + src/shared/components/Crew/Crew/Crew.tsx | 44 + .../components/Crew/Crew/crew.module.css | 38 + src/shared/components/Crew/Crew/index.ts | 1 + .../Crew/CrewPlaceholder/CrewPlaceholder.tsx | 27 + .../crewPlaceholder.module.css | 44 + .../components/Crew/CrewPlaceholder/index.ts | 1 + .../Crew/CrewWrapper/CrewWrapper.tsx | 26 + .../Crew/CrewWrapper/crewWrapper.module.css | 3 + .../components/Crew/CrewWrapper/index.ts | 1 + .../EmployeeDirectory/EmployeeDirectory.tsx | 82 + .../employeeDirectory.module.css | 79 + .../Crew/EmployeeDirectory/index.ts | 1 + .../Crew/EmployeeRow/EmployeeRow.tsx | 59 + .../Crew/EmployeeRow/employeeRow.module.css | 62 + .../components/Crew/EmployeeRow/index.ts | 1 + .../EmployeesEmptyPlaceholder.tsx | 20 + .../employeesEmptyPlaceholder.module.css | 38 + .../Crew/EmployeesEmptyPlaceholder/index.ts | 1 + .../RemoveMemberModal/RemoveMemberModal.tsx | 90 + .../Crew/RemoveMemberModal/index.ts | 1 + .../removeMemberModal.module.css | 101 + src/shared/components/Crew/index.ts | 5 + .../CreateProjectButton.tsx | 24 + .../Dashboard/CreateProjectButton/index.ts | 1 + src/shared/components/Dashboard/Dashboard.tsx | 18 + .../DashboardGoogleMap/DashboardGoogleMap.tsx | 33 + .../dashboardGoogleMap.module.css | 4 + .../Dashboard/ProjectRow/ProjectRow.tsx | 38 + .../components/Dashboard/ProjectRow/index.ts | 1 + .../ProjectRow/projectRow.module.css | 57 + .../ProjectSelection/ProjectSelection.tsx | 75 + .../Dashboard/ProjectSelection/index.ts | 1 + .../projectSelection.module.css | 84 + .../RecentlyAccessed/RecentlyAccessed.tsx | 24 + .../Dashboard/RecentlyAccessed/index.ts | 1 + .../recentlyAccessed.module.css | 39 + src/shared/components/Dashboard/index.ts | 2 + src/shared/components/DropDown/DropDown.tsx | 53 + .../DropDown/DropDownItem/DropDownItem.tsx | 58 + .../DropDownItem/dropDownItem.module.css | 19 + .../components/DropDown/DropDownItem/index.ts | 1 + .../MiniDropdownItem/MiniDropdownItem.tsx | 58 + .../DropDown/MiniDropdownItem/index.ts | 1 + .../miniDropdownItem.module.css | 24 + .../MiniOptionsDropdown.tsx | 75 + .../DropDown/MiniOptionsDropdown/index.ts | 1 + .../miniOptionsDropdown.module.css | 23 + .../components/DropDown/dropDown.module.css | 16 + .../components/DropDown/dropdownSizes.ts | 4 + src/shared/components/DropDown/index.ts | 3 + src/shared/components/DropZone/DropZone.tsx | 35 + .../components/DropZone/dropzone.module.css | 41 + src/shared/components/DropZone/index.ts | 1 + .../ErrorMessages/ErrorMessages.tsx | 25 + .../ErrorMessages/errorMessages.module.css | 12 + src/shared/components/ErrorMessages/index.ts | 1 + .../FloorDropDown/FloorDropDown.tsx | 66 + .../FloorDropDown/floorDropDown.module.css | 19 + src/shared/components/FloorDropDown/index.tsx | 1 + src/shared/components/Form/Form.tsx | 122 + src/shared/components/Form/form.module.css | 3 + src/shared/components/Form/index.ts | 1 + src/shared/components/GoogleMap/GoogleMap.tsx | 68 + src/shared/components/GoogleMap/MapStyle.tsx | 162 + .../components/GoogleMap/googleMap.module.css | 18 + src/shared/components/GoogleMap/index.ts | 1 + .../components/HubSpotModal/HubSpotModal.tsx | 64 + .../HubSpotModal/hubSpotModal.module.css | 52 + src/shared/components/HubSpotModal/index.ts | 1 + .../Icons/ActionsDefault/ActionsDefault.tsx | 32 + .../ActionsDefault/actionsDefault.module.css | 3 + .../components/Icons/ActionsDefault/index.ts | 1 + .../Icons/ActionsPurple/ActionsPurple.tsx | 32 + .../ActionsPurple/actionsPurple.module.css | 3 + .../components/Icons/ActionsPurple/index.ts | 1 + .../components/Icons/AddButton/AddButton.tsx | 34 + .../Icons/AddButton/addButton.module.css | 3 + .../components/Icons/AddButton/index.ts | 1 + .../Icons/AddressBuilding/AddressBuilding.tsx | 32 + .../addressBuilding.module.css | 3 + .../components/Icons/AddressBuilding/index.ts | 1 + .../components/Icons/AirMover/AirMover.tsx | 27 + .../Icons/AirMover/airMover.module.css | 3 + src/shared/components/Icons/AirMover/index.ts | 1 + .../Icons/AirScrubber/AirScrubber.tsx | 32 + .../Icons/AirScrubber/airScrubber.module.css | 3 + .../components/Icons/AirScrubber/index.ts | 1 + src/shared/components/Icons/Apple/Apple.tsx | 27 + .../components/Icons/Apple/apple.module.css | 3 + src/shared/components/Icons/Apple/index.ts | 1 + .../components/Icons/ArrowLeft/ArrowLeft.tsx | 27 + .../Icons/ArrowLeft/arrowLeft.module.css | 3 + .../components/Icons/ArrowLeft/index.ts | 1 + .../components/Icons/BathRoom/BathRoom.tsx | 27 + .../Icons/BathRoom/bathRoom.module.css | 3 + src/shared/components/Icons/BathRoom/index.ts | 1 + .../components/Icons/BedRoom/BedRoom.tsx | 27 + .../Icons/BedRoom/bedRoom.module.css | 3 + src/shared/components/Icons/BedRoom/index.ts | 1 + .../components/Icons/Bookmark/Bookmark.tsx | 74 + .../Icons/Bookmark/bookmark.module.css | 3 + src/shared/components/Icons/Bookmark/index.ts | 1 + .../components/Icons/CaretDown/CaretDown.tsx | 27 + .../Icons/CaretDown/caretDown.module.css | 3 + .../components/Icons/CaretDown/index.ts | 1 + .../components/Icons/CaretUp/CaretUp.tsx | 27 + .../Icons/CaretUp/caretUp.module.css | 3 + src/shared/components/Icons/CaretUp/index.ts | 1 + .../CarouselController/CarouselController.tsx | 38 + .../carouselController.module.css | 3 + .../Icons/CarouselController/index.ts | 1 + .../components/Icons/Checkbox/Checkbox.tsx | 32 + .../Icons/Checkbox/checkBox.module.css | 3 + src/shared/components/Icons/Checkbox/index.ts | 1 + .../Icons/CheckedMark/CheckedMark.tsx | 50 + .../Icons/CheckedMark/checkedMark.module.css | 3 + .../components/Icons/CheckedMark/index.ts | 1 + .../Icons/ChevronIcons/ChevronIcons.tsx | 38 + .../ChevronIcons/chevronIcons.module.css | 3 + .../components/Icons/ChevronIcons/index.ts | 1 + src/shared/components/Icons/Circle/Circle.tsx | 33 + src/shared/components/Icons/Circle/index.ts | 1 + src/shared/components/Icons/Close/Close.tsx | 40 + .../components/Icons/Close/close.module.css | 3 + src/shared/components/Icons/Close/index.ts | 1 + .../Icons/CloseCircle/CloseCircle.tsx | 32 + .../Icons/CloseCircle/closeCircle.module.css | 3 + .../components/Icons/CloseCircle/index.ts | 1 + .../Icons/Commercial/Commercial.tsx | 28 + .../Icons/Commercial/commercial.module.css | 3 + .../components/Icons/Commercial/index.ts | 1 + .../Icons/CompanyArrow/CompanyArrow.tsx | 32 + .../CompanyArrow/companyArrow.module.css | 3 + .../components/Icons/CompanyArrow/index.ts | 1 + .../Icons/ConfirmChecked/ConfirmChecked.tsx | 59 + .../ConfirmChecked/confirmChecked.module.css | 3 + .../components/Icons/ConfirmChecked/index.ts | 1 + src/shared/components/Icons/Copy/Copy.tsx | 27 + .../components/Icons/Copy/copy.module.css | 3 + src/shared/components/Icons/Copy/index.ts | 1 + .../Icons/CountryFlag/CountryFlag.tsx | 43 + .../Icons/CountryFlag/countryFlag.module.css | 3 + .../components/Icons/CountryFlag/index.ts | 1 + src/shared/components/Icons/Crew/Crew.tsx | 27 + .../components/Icons/Crew/crew.module.css | 3 + src/shared/components/Icons/Crew/index.ts | 1 + src/shared/components/Icons/Cube/Cube.tsx | 27 + .../components/Icons/Cube/cube.module.css | 3 + src/shared/components/Icons/Cube/index.ts | 1 + .../components/Icons/CubePlus/CubePlus.tsx | 27 + .../Icons/CubePlus/cubePlus.module.css | 3 + src/shared/components/Icons/CubePlus/index.ts | 1 + .../Icons/CubePlusLarge/CubePlusLarge.tsx | 27 + .../Icons/CubePlusLarge/cubePlusLg.module.css | 3 + .../components/Icons/CubePlusLarge/index.ts | 1 + .../Icons/CustomRoom/CustomRoom.tsx | 27 + .../Icons/CustomRoom/customRoom.module.css | 4 + .../components/Icons/CustomRoom/index.ts | 1 + .../Icons/DamageIcon/DamageIcon.tsx | 107 + .../components/Icons/DamageIcon/index.ts | 1 + .../Icons/DamageTypes/AddCustom/AddCustom.tsx | 27 + .../AddCustom/addCustom.module.css | 4 + .../Icons/DamageTypes/AddCustom/index.ts | 1 + .../DamageTypes/Appliances/Appliances.tsx | 49 + .../Appliances/appliances.module.css | 4 + .../Icons/DamageTypes/Appliances/index.ts | 1 + .../Icons/DamageTypes/Asbestos/Asbestos.tsx | 27 + .../DamageTypes/Asbestos/asbestos.module.css | 4 + .../Icons/DamageTypes/Asbestos/index.ts | 1 + .../Icons/DamageTypes/Carpentry/Carpentry.tsx | 27 + .../Carpentry/carpentry.module.css | 3 + .../Icons/DamageTypes/Carpentry/index.ts | 1 + .../Icons/DamageTypes/Ceiling/Ceiling.tsx | 44 + .../DamageTypes/Ceiling/ceiling.module.css | 4 + .../Icons/DamageTypes/Ceiling/index.ts | 1 + .../Icons/DamageTypes/Cleaning/Cleaning.tsx | 27 + .../DamageTypes/Cleaning/cleaning.module.css | 3 + .../Icons/DamageTypes/Cleaning/index.ts | 1 + .../Icons/DamageTypes/Custom/Custom.tsx | 27 + .../DamageTypes/Custom/custom.module.css | 5 + .../Icons/DamageTypes/Custom/index.ts | 1 + .../DamageTypes/Electrical/Electrical.tsx | 49 + .../Electrical/electrical.module.css | 4 + .../Icons/DamageTypes/Electrical/index.ts | 1 + .../ExteriorDamage/ExteriorDamage.tsx | 50 + .../ExteriorDamage/exteriorDamage.module.css | 4 + .../Icons/DamageTypes/ExteriorDamage/index.ts | 1 + .../Icons/DamageTypes/Fire/Fire.tsx | 27 + .../Icons/DamageTypes/Fire/fire.module.css | 4 + .../Icons/DamageTypes/Fire/index.ts | 1 + .../Icons/DamageTypes/Flooring/Flooring.tsx | 50 + .../DamageTypes/Flooring/flooring.module.css | 4 + .../Icons/DamageTypes/Flooring/index.ts | 1 + .../Icons/DamageTypes/Impact/Impact.tsx | 27 + .../DamageTypes/Impact/impact.module.css | 4 + .../Icons/DamageTypes/Impact/index.ts | 1 + .../DamageTypes/Inspection/Inspection.tsx | 27 + .../Icons/DamageTypes/Inspection/index.ts | 1 + .../Inspection/inspection.module.css | 4 + .../Icons/DamageTypes/Misc/Misc.tsx | 27 + .../Icons/DamageTypes/Misc/index.ts | 1 + .../Icons/DamageTypes/Misc/misc.module.css | 3 + .../Icons/DamageTypes/Mold/Mold.tsx | 27 + .../Icons/DamageTypes/Mold/index.ts | 1 + .../Icons/DamageTypes/Mold/mold.module.css | 4 + .../Icons/DamageTypes/Natural/Natural.tsx | 27 + .../Icons/DamageTypes/Natural/index.ts | 1 + .../DamageTypes/Natural/natural.module.css | 4 + .../Icons/DamageTypes/Plumbing/Plumbing.tsx | 50 + .../Icons/DamageTypes/Plumbing/index.ts | 1 + .../DamageTypes/Plumbing/plumbing.module.css | 4 + .../DamageTypes/Protection/Protection.tsx | 27 + .../Icons/DamageTypes/Protection/index.ts | 1 + .../Protection/protection.module.css | 3 + .../Icons/DamageTypes/Roofing/Roofing.tsx | 45 + .../Icons/DamageTypes/Roofing/index.ts | 1 + .../DamageTypes/Roofing/roofing.module.css | 4 + .../Icons/DamageTypes/Smoke/Smoke.tsx | 27 + .../Icons/DamageTypes/Smoke/index.ts | 1 + .../Icons/DamageTypes/Smoke/smoke.module.css | 4 + .../DamageTypes/Structural/Structural.tsx | 51 + .../Icons/DamageTypes/Structural/index.ts | 1 + .../Structural/structural.module.css | 4 + .../Icons/DamageTypes/Walls/Walls.tsx | 40 + .../Icons/DamageTypes/Walls/index.ts | 1 + .../Icons/DamageTypes/Walls/walls.module.css | 4 + .../Icons/DamageTypes/Water/Water.tsx | 27 + .../Icons/DamageTypes/Water/index.ts | 1 + .../Icons/DamageTypes/Water/water.module.css | 4 + .../components/Icons/DamageTypes/index.ts | 23 + .../components/Icons/Dashboard/Dashboard.tsx | 35 + .../Icons/Dashboard/dashboard.module.css | 3 + .../components/Icons/Dashboard/index.ts | 1 + .../Icons/Dehumidifier/Dehumidifier.tsx | 32 + .../Dehumidifier/dehumidifier.module.css | 3 + .../components/Icons/Dehumidifier/index.ts | 1 + src/shared/components/Icons/Den/Den.tsx | 27 + .../components/Icons/Den/den.module.css | 3 + src/shared/components/Icons/Den/index.ts | 1 + .../Icons/DiningRoom/DiningRoom.tsx | 27 + .../Icons/DiningRoom/diningRoom.module.css | 3 + .../components/Icons/DiningRoom/index.ts | 1 + src/shared/components/Icons/Dot/Dot.tsx | 25 + src/shared/components/Icons/Dot/index.ts | 1 + .../components/Icons/Download/Download.tsx | 46 + .../Icons/Download/download.module.css | 3 + src/shared/components/Icons/Download/index.ts | 1 + .../Icons/DropdownArrow/DropdownArrow.tsx | 27 + .../DropdownArrow/dropdownArrow.module.css | 3 + .../components/Icons/DropdownArrow/index.ts | 1 + .../DropzoneBackground/DropzoneBackground.tsx | 32 + .../dropzonebackground.module.css | 3 + .../Icons/DropzoneBackground/index.ts | 1 + .../components/Icons/DryingMat/DryingMat.tsx | 27 + .../Icons/DryingMat/dryingMat.module.css | 3 + .../components/Icons/DryingMat/index.ts | 1 + src/shared/components/Icons/Edit/Edit.tsx | 42 + .../components/Icons/Edit/edit.module.css | 3 + src/shared/components/Icons/Edit/index.ts | 1 + .../Icons/ElectricalRoom/ElectricalRoom.tsx | 32 + .../ElectricalRoom/electricalRoom.module.css | 3 + .../components/Icons/ElectricalRoom/index.ts | 1 + .../components/Icons/Elevator/Elevator.tsx | 27 + .../Icons/Elevator/elevator.module.css | 3 + src/shared/components/Icons/Elevator/index.ts | 1 + src/shared/components/Icons/Email/Email.tsx | 27 + .../components/Icons/Email/email.module.css | 3 + src/shared/components/Icons/Email/index.ts | 1 + .../Icons/EmployeePhone/EmployeePhone.tsx | 32 + .../EmployeePhone/employeePhone.module.css | 3 + .../components/Icons/EmployeePhone/index.ts | 1 + .../components/Icons/Ensuite/Ensuite.tsx | 27 + .../Icons/Ensuite/ensuite.module.css | 3 + src/shared/components/Icons/Ensuite/index.ts | 1 + .../components/Icons/Equipment/Equipment.tsx | 27 + .../Icons/Equipment/equipment.module.css | 4 + .../components/Icons/Equipment/index.ts | 1 + .../components/Icons/Exterior/Exterior.tsx | 50 + .../Icons/Exterior/exterior.module.css | 0 src/shared/components/Icons/Exterior/index.ts | 1 + src/shared/components/Icons/Eye/Eye.tsx | 28 + .../components/Icons/Eye/eye.module.css | 3 + src/shared/components/Icons/Eye/index.ts | 1 + .../components/Icons/EyeClosed/EyeClosed.tsx | 27 + .../Icons/EyeClosed/eyeClosed.module.css | 3 + .../components/Icons/EyeClosed/index.ts | 1 + .../components/Icons/Facebook/Facebook.tsx | 27 + .../Icons/Facebook/facebook.module.css | 3 + src/shared/components/Icons/Facebook/index.ts | 1 + src/shared/components/Icons/Filter/Filter.tsx | 27 + .../components/Icons/Filter/filter.module.css | 3 + src/shared/components/Icons/Filter/index.ts | 1 + src/shared/components/Icons/Flag/Flag.tsx | 63 + .../components/Icons/Flag/flag.module.css | 3 + src/shared/components/Icons/Flag/index.ts | 1 + src/shared/components/Icons/Floor/Floor.tsx | 44 + .../components/Icons/Floor/floor.module.css | 3 + src/shared/components/Icons/Floor/index.ts | 1 + src/shared/components/Icons/Funnel/Funnel.tsx | 27 + .../components/Icons/Funnel/funnel.module.css | 3 + src/shared/components/Icons/Funnel/index.ts | 1 + .../GalleryPlaceholder/GalleryPlaceholder.tsx | 20 + .../Icons/GalleryPlaceholder/index.ts | 1 + src/shared/components/Icons/Google/Google.tsx | 27 + .../components/Icons/Google/google.module.css | 3 + src/shared/components/Icons/Google/index.ts | 1 + src/shared/components/Icons/Gym/Gym.tsx | 27 + .../components/Icons/Gym/gym.module.css | 3 + src/shared/components/Icons/Gym/index.ts | 1 + .../components/Icons/Hallway/Hallway.tsx | 27 + .../Icons/Hallway/hallway.module.css | 3 + src/shared/components/Icons/Hallway/index.ts | 1 + .../Icons/HamburgerMenu/HamburgerMenu.tsx | 32 + .../HamburgerMenu/hamburgerMenu.module.css | 3 + .../components/Icons/HamburgerMenu/index.ts | 1 + src/shared/components/Icons/Hand/Hand.tsx | 27 + .../components/Icons/Hand/hand.module.css | 3 + src/shared/components/Icons/Hand/index.ts | 1 + .../components/Icons/Highrise/Highrise.tsx | 51 + .../Icons/Highrise/highrise.module.css | 3 + src/shared/components/Icons/Highrise/index.ts | 1 + src/shared/components/Icons/Icon.tsx | 356 + src/shared/components/Icons/Info/Info.tsx | 27 + src/shared/components/Icons/Info/index.ts | 1 + .../components/Icons/Info/info.module.css | 4 + .../Icons/InjectDryer/InjectDryer.tsx | 32 + .../components/Icons/InjectDryer/index.ts | 1 + .../Icons/InjectDryer/injectDryer.module.css | 3 + .../components/Icons/Kitchen/Kitchen.tsx | 27 + src/shared/components/Icons/Kitchen/index.ts | 1 + .../Icons/Kitchen/kitchen.module.css | 3 + .../components/Icons/LandScape/LandScape.tsx | 27 + .../components/Icons/LandScape/index.ts | 1 + .../Icons/LandScape/landscape.module.css | 0 .../components/Icons/Laundry/Laundry.tsx | 27 + src/shared/components/Icons/Laundry/index.ts | 1 + .../Icons/Laundry/laundry.module.css | 3 + src/shared/components/Icons/Link/Link.tsx | 24 + src/shared/components/Icons/Link/index.ts | 1 + .../components/Icons/LinkOpen/LinkOpen.tsx | 26 + src/shared/components/Icons/LinkOpen/index.ts | 1 + .../Icons/LinkOpen/linkOpen.module.css | 3 + .../Icons/LivingRoom/LivingRoom.tsx | 27 + .../components/Icons/LivingRoom/index.ts | 1 + .../Icons/LivingRoom/livingRoom.module.css | 3 + src/shared/components/Icons/Lobby/Lobby.tsx | 27 + src/shared/components/Icons/Lobby/index.ts | 1 + .../components/Icons/Lobby/lobby.module.css | 3 + src/shared/components/Icons/Logo/Logo.tsx | 27 + src/shared/components/Icons/Logo/index.ts | 1 + .../components/Icons/Logo/logo.module.css | 3 + .../components/Icons/LogoIcon/LogoIcon.tsx | 27 + src/shared/components/Icons/LogoIcon/index.ts | 1 + .../Icons/LogoIcon/logoIcon.module.css | 3 + .../Icons/LogoMobile/LogoMobile.tsx | 27 + .../components/Icons/LogoMobile/index.ts | 1 + .../Icons/LogoMobile/logoMobile.module.css | 3 + .../components/Icons/LunchRoom/LunchRoom.tsx | 27 + .../components/Icons/LunchRoom/index.ts | 1 + .../Icons/LunchRoom/lunchRoom.module.css | 3 + .../Icons/MaintenanceRoom/MaintenanceRoom.tsx | 32 + .../components/Icons/MaintenanceRoom/index.ts | 1 + .../maintenanceRoom.module.css | 3 + .../Icons/MeetingRoom/MeetingRoom.tsx | 32 + .../components/Icons/MeetingRoom/index.ts | 1 + .../Icons/MeetingRoom/meetingRoom.module.css | 3 + .../components/Icons/MobileApp/MobileApp.tsx | 24 + .../components/Icons/MobileApp/index.ts | 1 + .../Icons/ModalClose/ModalClose.tsx | 28 + .../components/Icons/ModalClose/index.ts | 1 + .../Icons/ModalClose/modalClose.module.css | 3 + .../components/Icons/Moisture/Moisture.tsx | 27 + src/shared/components/Icons/Moisture/index.ts | 1 + .../Icons/Moisture/moisture.module.css | 3 + .../components/Icons/MultiUnit/MultiUnit.tsx | 27 + .../components/Icons/MultiUnit/index.ts | 1 + .../Icons/MultiUnit/multiunit.module.css | 4 + .../components/Icons/NoCompany/NoCompany.tsx | 18 + .../components/Icons/NoCompany/index.ts | 1 + .../components/Icons/NotFound/NotFound.tsx | 18 + src/shared/components/Icons/NotFound/index.ts | 1 + src/shared/components/Icons/Office/Office.tsx | 27 + src/shared/components/Icons/Office/index.ts | 1 + .../components/Icons/Office/office.module.css | 3 + .../Icons/OfficeBuilding/OfficeBuilding.tsx | 27 + .../components/Icons/OfficeBuilding/index.ts | 1 + .../OfficeBuilding/officeBuilding.module.css | 3 + src/shared/components/Icons/People/People.tsx | 35 + .../Icons/People/PeoplePink/PeoplePink.tsx | 61 + .../Icons/People/PeoplePink/index.ts | 1 + .../People/PeoplePink/peoplePink.module.css | 3 + src/shared/components/Icons/People/index.ts | 2 + .../components/Icons/People/people.module.css | 3 + src/shared/components/Icons/Person/Person.tsx | 46 + src/shared/components/Icons/Person/index.ts | 1 + .../components/Icons/Person/person.module.css | 3 + src/shared/components/Icons/Phone/Phone.tsx | 27 + src/shared/components/Icons/Phone/index.ts | 1 + .../components/Icons/Phone/phone.module.css | 8 + .../Icons/PhotoBookmark/PhotoBookmark.tsx | 32 + .../components/Icons/PhotoBookmark/index.ts | 1 + .../PhotoBookmark/photoBookmark.module.css | 3 + .../components/Icons/PhotoFlag/PhotoFlag.tsx | 32 + .../components/Icons/PhotoFlag/index.ts | 1 + .../Icons/PhotoFlag/photoFlag.module.css | 3 + .../components/Icons/PhotoNote/PhotoNote.tsx | 27 + .../components/Icons/PhotoNote/index.ts | 1 + .../Icons/PhotoNote/photoNote.module.css | 3 + .../Icons/PhotoShare/PhotoShare.tsx | 30 + .../components/Icons/PhotoShare/index.ts | 1 + src/shared/components/Icons/Pin/Pin.tsx | 27 + src/shared/components/Icons/Pin/index.ts | 1 + .../components/Icons/Pin/pin.module.css | 3 + .../components/Icons/PinActive/PinActive.tsx | 27 + .../components/Icons/PinActive/index.ts | 1 + .../Icons/PinActive/pinActive.module.css | 3 + src/shared/components/Icons/Plus/Plus.tsx | 32 + src/shared/components/Icons/Plus/index.ts | 1 + .../components/Icons/Plus/plus.module.css | 3 + .../Icons/PrivateOffice/PrivateOffice.tsx | 32 + .../components/Icons/PrivateOffice/index.ts | 1 + .../PrivateOffice/privateOffice.module.css | 3 + .../components/Icons/Projects/Projects.tsx | 35 + src/shared/components/Icons/Projects/index.ts | 1 + .../Icons/Projects/projects.module.css | 3 + src/shared/components/Icons/Radio/Radio.tsx | 27 + src/shared/components/Icons/Radio/index.ts | 1 + .../components/Icons/Radio/radio.module.css | 3 + .../components/Icons/Reception/Reception.tsx | 27 + .../components/Icons/Reception/index.ts | 1 + .../Icons/Reception/reception.module.css | 3 + .../Icons/ReportsType/ReportsType.tsx | 60 + .../components/Icons/ReportsType/index.ts | 1 + .../Icons/ReportsType/reportsType.module.css | 3 + .../Icons/RocketEmblem/RocketEmblem.tsx | 40 + .../components/Icons/RocketEmblem/index.ts | 1 + .../RocketEmblem/rocketEmblem.module.css | 3 + .../components/Icons/RoomIcon/RoomIcon.tsx | 130 + src/shared/components/Icons/RoomIcon/index.ts | 1 + .../Icons/RoomTypes/Basement/Basement.tsx | 27 + .../RoomTypes/Basement/basement.module.css | 3 + .../Icons/RoomTypes/Basement/index.ts | 1 + .../Icons/RoomTypes/Compass/Compass.tsx | 71 + .../RoomTypes/Compass/compass.module.css | 3 + .../Icons/RoomTypes/Compass/index.ts | 1 + .../components/Icons/RoomTypes/Deck/Deck.tsx | 27 + .../Icons/RoomTypes/Deck/deck.module.css | 3 + .../components/Icons/RoomTypes/Deck/index.ts | 1 + .../Icons/RoomTypes/Garage/Garage.tsx | 27 + .../Icons/RoomTypes/Garage/garage.module.css | 3 + .../Icons/RoomTypes/Garage/index.ts | 1 + .../Icons/RoomTypes/Patio/Patio.tsx | 27 + .../components/Icons/RoomTypes/Patio/index.ts | 1 + .../Icons/RoomTypes/Patio/patio.module.css | 3 + .../Icons/RoomTypes/Plaza/Plaza.tsx | 27 + .../components/Icons/RoomTypes/Plaza/index.ts | 1 + .../Icons/RoomTypes/Plaza/plaza.module.css | 3 + .../components/Icons/RoomTypes/Pool/Pool.tsx | 27 + .../components/Icons/RoomTypes/Pool/index.ts | 1 + .../Icons/RoomTypes/Pool/pool.module.css | 3 + .../components/Icons/RoomTypes/Roof/Roof.tsx | 27 + .../components/Icons/RoomTypes/Roof/index.ts | 1 + .../Icons/RoomTypes/Roof/roof.module.css | 3 + .../components/Icons/RoomTypes/Shop/Shop.tsx | 27 + .../components/Icons/RoomTypes/Shop/index.ts | 1 + .../Icons/RoomTypes/Shop/shop.module.css | 3 + .../RoomTypes/UtilityRoom/UtilityRoom.tsx | 32 + .../Icons/RoomTypes/UtilityRoom/index.ts | 1 + .../UtilityRoom/utilityroom.module.css | 3 + .../components/Icons/RoomTypes/index.ts | 10 + src/shared/components/Icons/Search/Search.tsx | 25 + src/shared/components/Icons/Search/index.ts | 1 + src/shared/components/Icons/Share/Share.tsx | 38 + src/shared/components/Icons/Share/index.ts | 1 + .../components/Icons/Share/share.module.css | 3 + .../Icons/SideBarClose/SideBarClose.tsx | 27 + .../components/Icons/SideBarClose/index.ts | 1 + .../SideBarClose/sideBarClose.module.css | 3 + .../SideBarLeftArrow/SideBarLeftArrow.tsx | 32 + .../Icons/SideBarLeftArrow/index.ts | 1 + .../sideBarLeftArrow.module.css | 3 + .../SideBarRightArrow/SideBarRightArrow.tsx | 33 + .../Icons/SideBarRightArrow/index.ts | 1 + .../sideBarRightArrow.module.css | 3 + .../Icons/SingleHome/SingleHome.tsx | 49 + .../components/Icons/SingleHome/index.ts | 1 + .../Icons/SingleHome/singleHome.module.css | 3 + src/shared/components/Icons/Sms/Sms.tsx | 27 + src/shared/components/Icons/Sms/index.ts | 1 + .../components/Icons/Sms/sms.module.css | 3 + src/shared/components/Icons/Square/Square.tsx | 27 + src/shared/components/Icons/Square/index.ts | 1 + .../components/Icons/Square/square.module.css | 3 + .../components/Icons/Stairway/Stairway.tsx | 27 + src/shared/components/Icons/Stairway/index.ts | 1 + .../Icons/Stairway/stairway.module.css | 3 + .../components/Icons/Storage/Storage.tsx | 27 + src/shared/components/Icons/Storage/index.ts | 1 + .../Icons/Storage/storage.module.css | 3 + .../components/Icons/Support/Support.tsx | 28 + src/shared/components/Icons/Support/index.ts | 1 + .../Icons/Support/support.module.css | 3 + .../components/Icons/ThreeDots/ThreeDots.tsx | 27 + .../components/Icons/ThreeDots/index.ts | 1 + .../Icons/ThreeDots/threeDots.module.css | 3 + src/shared/components/Icons/Trash/Trash.tsx | 69 + src/shared/components/Icons/Trash/index.ts | 1 + .../components/Icons/Trash/trash.module.css | 3 + src/shared/components/Icons/Unit/Unit.tsx | 48 + src/shared/components/Icons/Unit/index.ts | 1 + .../components/Icons/Unit/unit.module.css | 3 + .../Icons/WelcomeAboard/WelcomeAboard.tsx | 18 + .../components/Icons/WelcomeAboard/index.ts | 1 + src/shared/components/Icons/index.ts | 3 + .../ImageDeleteModal/ImageDeleteModal.tsx | 44 + .../imageDeleteModal.module.css | 79 + .../components/ImageDeleteModal/index.ts | 1 + .../components/ImageNotes/ImageNotes.tsx | 80 + .../ImageNotes/NoteItem/NoteItem.tsx | 20 + .../components/ImageNotes/NoteItem/index.ts | 1 + .../ImageNotes/NoteItem/noteItem.module.css | 3 + .../ImageNotes/imageNotes.module.css | 56 + src/shared/components/ImageNotes/index.ts | 1 + .../ImagePlaceHolder/ImagePlaceHolder.tsx | 22 + .../image.place.holder.module.css | 26 + .../components/ImagePlaceHolder/index.ts | 1 + .../InviteEmployees/InviteEmployees.tsx | 109 + .../InviteEmployeesToast.tsx | 35 + .../InviteEmployeesToast/index.ts | 1 + .../inviteEmployeesToast.module.css | 78 + .../components/InviteEmployees/index.ts | 1 + .../inviteEmployees.module.css | 198 + src/shared/components/Label/Label.tsx | 26 + src/shared/components/Label/index.ts | 1 + .../DashboardLayout/DashboardLayout.tsx | 41 + .../dashboardLayout.module.css | 46 + .../Layouts/DashboardLayout/index.ts | 1 + .../Layouts/GuestLayout/GuestLayout.tsx | 39 + .../GuestLayout/guestLayout.module.css | 60 + .../components/Layouts/GuestLayout/index.ts | 1 + .../Layouts/NotFoundLayout/NotFoundLayout.tsx | 38 + .../Layouts/NotFoundLayout/index.ts | 1 + .../NotFoundLayout/notFoundLayout.module.css | 47 + .../PhotoShareLayout/PhotoShareLayout.tsx | 17 + .../Layouts/PhotoShareLayout/index.ts | 1 + .../photoShareLayout.module.css | 45 + .../PhotoViewLayout/PhotoViewLayout.tsx | 14 + .../Layouts/PhotoViewLayout/index.ts | 1 + .../photoViewLayout.module.css | 6 + .../Layouts/Placeholder/PlaceholderLayout.tsx | 22 + .../components/Layouts/Placeholder/index.ts | 1 + .../ProjectTabsLayout/ProjectTabsLayout.tsx | 38 + .../ProjectTabsLayout/index.ts | 1 + .../projectTabsLayout.module.css | 9 + .../ProjectTabsLayout/TabsMenu/TabsMenu.tsx | 38 + .../ProjectTabsLayout/TabsMenu/index.ts | 1 + .../TabsMenu/tabsMenu.module.css | 26 + .../Layouts/ProjectTabsLayout/index.ts | 2 + .../SplashPageLayout/SplashPageLayout.tsx | 15 + .../Layouts/SplashPageLayout/index.ts | 1 + .../Layouts/UserTabsLayout/UserTabsLayout.tsx | 43 + .../Layouts/UserTabsLayout/index.ts | 1 + .../UserTabsLayout/userTabsLayout.module.css | 9 + src/shared/components/Layouts/index.ts | 6 + src/shared/components/MapPin/MapPin.tsx | 22 + src/shared/components/MapPin/index.ts | 1 + .../components/MapPin/mapPin.module.css | 0 src/shared/components/Mask/Mask.tsx | 24 + src/shared/components/Mask/index.ts | 1 + src/shared/components/Mask/mask.module.css | 9 + .../MobileWarningModal/MobileWarningModal.tsx | 35 + .../components/MobileWarningModal/index.ts | 1 + .../mobileWarningModal.module.css | 58 + src/shared/components/Modal/Modal.tsx | 176 + src/shared/components/Modal/index.ts | 1 + src/shared/components/Nav/Nav.tsx | 58 + src/shared/components/Nav/index.ts | 1 + src/shared/components/Nav/nav.module.css | 101 + .../NoEmployeesPlaceholder.tsx | 20 + .../NoEmployeesPlaceholder/index.ts | 1 + .../noEmployeesPlaceholder.module.css | 31 + .../AllNotesAccordion/AllNotesAccordion.tsx | 64 + .../allNotesAccordion.module.css | 66 + .../Notes/AllNotesAccordion/index.ts | 1 + .../Notes/CreateNoteForm/CreateNoteForm.tsx | 72 + .../CreateNoteForm/createNoteForm.module.css | 59 + .../components/Notes/CreateNoteForm/index.ts | 1 + .../Notes/CreatePhotoNote/CreatePhotoNote.tsx | 34 + .../createPhotoNote.module.css | 3 + .../components/Notes/CreatePhotoNote/index.ts | 1 + .../Notes/DeleteNote/DeleteNote.tsx | 43 + .../Notes/DeleteNoteModal/DeleteNoteModal.tsx | 43 + .../deleteNoteModal.module.css | 98 + .../components/Notes/DeleteNoteModal/index.ts | 1 + .../LoadMoreNotesButton.tsx | 30 + .../Notes/LoadMoreNotesButton/index.ts | 1 + .../loadMoreNotesButton.module.css | 27 + .../components/Notes/NoteCard/NoteCard.tsx | 81 + .../NoteCard/NoteContent/NoteContent.tsx | 30 + .../Notes/NoteCard/NoteContent/index.ts | 1 + .../NoteContent/noteContent.module.css | 17 + .../Notes/NoteCard/NoteHeader/NoteHeader.tsx | 57 + .../Notes/NoteCard/NoteHeader/index.ts | 1 + .../NoteCard/NoteHeader/noteHeader.module.css | 15 + src/shared/components/Notes/NoteCard/index.ts | 1 + .../Notes/NoteCard/noteCard.module.css | 17 + .../Notes/NoteEditForm/NoteEditForm.tsx | 68 + .../components/Notes/NoteEditForm/index.ts | 1 + .../NoteEditForm/noteEditForm.module.css | 40 + .../components/Notes/NoteItems/NoteItems.tsx | 20 + .../components/Notes/NoteItems/index.ts | 1 + .../Notes/NotesDropdown/NotesDropdown.tsx | 76 + .../components/Notes/NotesDropdown/index.ts | 1 + .../NotesDropdown/notesDropdown.module.css | 59 + .../Notes/NotesFilter/NotesFilter.tsx | 33 + .../components/Notes/NotesFilter/index.ts | 1 + .../Notes/NotesFilter/notesFilter.module.css | 30 + .../NotesPlaceholder/NotesPlaceholder.tsx | 34 + .../Notes/NotesPlaceholder/index.ts | 1 + .../notesPlaceholder.module.css | 55 + .../Notes/NotesToast/NotesToast.tsx | 52 + .../components/Notes/NotesToast/index.ts | 1 + .../Notes/NotesToast/notesToast.module.css | 58 + .../Notes/NotesWrapper/NotesWrapper.tsx | 26 + .../components/Notes/NotesWrapper/index.ts | 1 + .../NotesWrapper/notesWrapper.module.css | 3 + src/shared/components/Notes/index.ts | 12 + .../OptionToolBar/OptionToolBar.tsx | 52 + src/shared/components/OptionToolBar/index.ts | 1 + .../OptionToolBar/optionToolBar.module.css | 56 + .../components/Pagination/Next/Next.tsx | 17 + .../components/Pagination/Next/index.ts | 1 + .../Pagination/Pagination/Pagination.tsx | 31 + .../components/Pagination/Pagination/index.ts | 1 + .../Pagination/pagination.module.css | 48 + .../Pagination/Previous/Previous.tsx | 17 + .../components/Pagination/Previous/index.ts | 1 + src/shared/components/Pagination/index.ts | 3 + .../ContactsTab/ContactCard/ContactCard.tsx | 73 + .../ContactCard/contactCard.module.css | 102 + .../ContactsTab/ContactCard/index.ts | 1 + .../ContactsTab/ContactForm/ContactForm.tsx | 281 + .../ContactForm/contactForm.module.css | 37 + .../ContactsTab/ContactForm/index.ts | 1 + .../ContactTypeAutoComplete.tsx | 65 + .../contactTypeAutoComplete.module.css | 9 + .../ContactTypeAutoComplete/index.ts | 1 + .../ContactTypeToast/ContactTypeToast.tsx | 45 + .../ContactsTab/ContactTypeToast/index.ts | 1 + .../ContactsTab/ContactsTab/ContactsTab.tsx | 44 + .../ContactsTab/contactsTab.module.css | 27 + .../ContactsTab/ContactsTab/index.ts | 1 + .../CreateContactModal/CreateContactModal.tsx | 46 + .../createContactModal.module.css | 20 + .../ContactsTab/CreateContactModal/index.ts | 1 + .../EditContactModal/EditContactModal.tsx | 46 + .../editContactModal.module.css | 20 + .../ContactsTab/EditContactModal/index.ts | 1 + .../People/PeopleTabs/ContactsTab/index.ts | 6 + .../PeopleTabs/DeleteToast/DeleteToast.tsx | 46 + .../DeleteToast/deleteToast.module.css | 77 + .../People/PeopleTabs/DeleteToast/index.ts | 1 + .../PeopleTabs/EmployeeCard/EmployeeCard.tsx | 60 + .../EmployeeCard/employeeCard.module.css | 105 + .../People/PeopleTabs/EmployeeCard/index.ts | 1 + .../EditEmployee/EditEmployee.tsx | 153 + .../EditEmployee/editEmployee.module.css | 86 + .../EmployeesTab/EditEmployee/index.ts | 1 + .../EmployeesTab/EmployeesTab.tsx | 40 + .../EmployeesTab/employeesTab.module.css | 29 + .../EmployeesTab/EmployeesTab/index.ts | 1 + .../People/PeopleTabs/EmployeesTab/index.ts | 2 + .../InvitePlaceholder/InvitePlaceholder.tsx | 36 + .../PeopleTabs/InvitePlaceholder/index.ts | 1 + .../invitePlaceHolder.module.css | 31 + .../PeopleTabs/LetterHeader/LetterHeader.tsx | 24 + .../People/PeopleTabs/LetterHeader/index.ts | 1 + .../LetterHeader/letterHeader.module.css | 20 + .../DeleteCardModal/DeleteCardModal.tsx | 64 + .../deleteCardModal.module.css | 84 + .../PeopleList/DeleteCardModal/index.ts | 1 + .../InfoCardModal/InfoCardModal.tsx | 119 + .../PeopleList/InfoCardModal/index.ts | 1 + .../InfoCardModal/infoCardModal.module.css | 130 + .../People/PeopleTabs/PeopleList/index.ts | 2 + .../components/People/PeopleTabs/index.ts | 7 + src/shared/components/People/index.ts | 1 + .../PhotoErrorToast/PhotoErrorToast.tsx | 52 + .../components/PhotoErrorToast/index.ts | 1 + .../photoErrorToast.module.css | 56 + .../PhotoFileSizeMenu/PhotoFileSizeMenu.tsx | 52 + .../components/PhotoFileSizeMenu/index.ts | 1 + .../photoFileSizeMenu.module.css | 56 + .../components/PhotoFilter/PhotoFilter.tsx | 68 + src/shared/components/PhotoFilter/index.ts | 1 + .../PhotoFilter/photo.filter.module.css | 100 + .../components/PhotoGallery/PhotoGallery.tsx | 83 + src/shared/components/PhotoGallery/index.ts | 1 + .../PhotoGallery/photogallery.module.css | 51 + .../components/PhotoShare/Header/Header.tsx | 41 + .../PhotoShare/Header/header.module.css | 63 + .../components/PhotoShare/Header/index.ts | 1 + .../components/PhotoShare/PhotoShare.tsx | 47 + .../PhotoShareBreadCrumb.tsx | 26 + .../PhotoShare/PhotoShareBreadCrumb/index.ts | 1 + .../photoShareBreadCrumb.module.css | 19 + .../PhotoShareGallery/Album/Album.tsx | 27 + .../PhotoShareGallery/Album/album.module.css | 8 + .../PhotoShareGallery/Album/index.ts | 1 + .../PhotoShareGallery/PhotoShareGallery.tsx | 59 + .../PhotoShareGallery/Photos/Photos.tsx | 31 + .../PhotoShareGallery/Photos/index.ts | 1 + .../Photos/photos.module.css | 4 + .../PhotoShare/PhotoShareGallery/index.ts | 3 + .../photoShareGallery.module.css | 60 + .../PhotoShareNotes/PhotoShareNotes.tsx | 28 + .../PhotoShare/PhotoShareNotes/index.ts | 1 + .../photoShareNotes.module.css | 18 + src/shared/components/PhotoShare/index.ts | 2 + .../PhotoShare/photoShare.module.css | 16 + .../PhotoShareSplashView.tsx | 68 + .../components/PhotoShareSplashView/index.ts | 1 + .../photoShareSplashView.module.css | 105 + src/shared/components/PhotoView/PhotoView.tsx | 50 + src/shared/components/PhotoView/index.ts | 1 + .../components/PhotoView/photoView.module.css | 19 + .../CarouselItem/CarouselItem.tsx | 35 + .../CarouselItem/carouselItem.module.css | 31 + .../PhotoViewCarousal/CarouselItem/index.ts | 1 + .../PhotoViewCarousal/PhotoViewCarousal.tsx | 52 + .../PhotoViewCarousal/index.ts | 1 + .../photoViewCarousel.module.css | 53 + .../components/PhotoViewCarousal/index.ts | 2 + src/shared/components/PillBadge/PillBadge.tsx | 20 + src/shared/components/PillBadge/index.ts | 1 + .../components/PillBadge/pillBadge.module.css | 13 + .../components/PillButton/PillButton.tsx | 45 + src/shared/components/PillButton/index.ts | 1 + .../PillButton/pillButton.module.css | 16 + .../components/Profiles/About/About.tsx | 43 + .../Profiles/About/about.module.css | 132 + src/shared/components/Profiles/About/index.ts | 1 + .../CompanyInfoCard/CompanyInfoCard.tsx | 48 + .../companyInfoCard.module.css | 49 + .../CompanyProfile/CompanyInfoCard/index.ts | 1 + .../Account/CompanyProfile/CompanyProfile.tsx | 157 + .../EditCompanyInfo/EditCompanyInfo.tsx | 294 + .../editCompanyInfo.module.css | 73 + .../CompanyProfile/EditCompanyInfo/index.ts | 1 + .../CompanyProfile/companyProfile.module.css | 97 + .../Profiles/Account/CompanyProfile/index.ts | 3 + .../Account/UploadAvatar/UploadAvatar.tsx | 70 + .../Profiles/Account/UploadAvatar/index.ts | 1 + .../UploadAvatar/uploadAvatar.module.css | 81 + .../UserProfile/EditUserInfo/EditUserInfo.tsx | 164 + .../EditUserInfo/editUserInfo.module.css | 67 + .../Account/UserProfile/EditUserInfo/index.ts | 1 + .../UserProfile/UserInfoCard/UserInfoCard.tsx | 36 + .../Account/UserProfile/UserInfoCard/index.ts | 1 + .../UserInfoCard/userInfoCard.module.css | 42 + .../Account/UserProfile/UserProfile.tsx | 102 + .../Profiles/Account/UserProfile/index.ts | 3 + .../UserProfile/userProfile.module.css | 83 + .../components/Profiles/Account/index.ts | 3 + .../ProfileUpdatedToast.tsx | 46 + .../Profiles/ProfileUpdatedToast/index.ts | 1 + .../profileUpdatedToast.module.css | 78 + .../UserProfileWrapper/UserProfileWrapper.tsx | 24 + .../Profiles/UserProfileWrapper/index.ts | 1 + .../userProfileWrapper.module.css | 3 + src/shared/components/Profiles/index.ts | 12 + .../components/ProgressBar/ProgressBar.tsx | 52 + src/shared/components/ProgressBar/index.ts | 1 + .../ProgressBar/progressBar.module.css | 28 + .../DeleteProjectModal/DeleteProjectModal.tsx | 86 + .../deleteProjectModal.module.css | 44 + .../Project/DeleteProjectModal/index.ts | 1 + .../EditAddressModal/EditAddressModal.tsx | 187 + .../editAddressModal.module.css | 102 + .../Project/EditAddressModal/index.ts | 1 + .../ProjectAliasModal/ProjectAliasModal.tsx | 57 + .../Project/ProjectAliasModal/index.ts | 1 + .../projectAliasModal.module.css | 34 + .../ProjectUnavailable/ProjectUnavailable.tsx | 24 + .../Project/ProjectUnavailable/index.ts | 1 + .../projectUnavailable.module.css | 27 + .../Unit/Rooms/Room/Albums/Album/Album.tsx | 27 + .../Room/Albums/Album/Photos/Photo/Photo.tsx | 31 + .../Album/Photos/Photo/photo.module.css | 19 + .../Rooms/Room/Albums/Album/Photos/Photos.tsx | 31 + .../Albums/Album/Photos/photos.module.css | 4 + .../Rooms/Room/Albums/Album/album.module.css | 14 + .../Unit/Rooms/Room/Albums/Album/index.ts | 1 + .../Project/Unit/Rooms/Room/Albums/Albums.tsx | 23 + .../Unit/Rooms/Room/Albums/albums.module.css | 5 + .../Project/Unit/Rooms/Room/Room.tsx | 37 + .../Project/Unit/Rooms/Room/index.ts | 1 + .../Project/Unit/Rooms/Room/room.module.css | 33 + .../Unit/Rooms/RoomButtons/RoomButtons.tsx | 42 + .../Project/Unit/Rooms/RoomButtons/index.ts | 1 + .../Project/Unit/UnitContent/UnitContent.tsx | 33 + .../Project/Unit/UnitContent/index.ts | 1 + .../Unit/UnitContent/unitContent.module.css | 3 + .../Project/Unit/UnitHeader/UnitHeader.tsx | 37 + .../Project/Unit/UnitHeader/index.ts | 1 + .../Unit/UnitHeader/unitHeader.module.css | 55 + src/shared/components/Project/Unit/index.ts | 2 + src/shared/components/Project/index.ts | 4 + .../ProjectData/ClaimsData/ClaimsData.tsx | 32 + .../ClaimsDataEdit/ClaimsDataEdit.tsx | 131 + .../ClaimsDataEdit/claimsDataEdit.module.css | 20 + .../ClaimsData/ClaimsDataEdit/index.ts | 1 + .../ClaimsDataView/ClaimsDataView.tsx | 61 + .../ClaimsDataView/claimsDataView.module.css | 29 + .../ClaimsData/ClaimsDataView/index.ts | 1 + .../ClaimsDataWrapper/ClaimsDataWrapper.tsx | 14 + .../ClaimsData/ClaimsDataWrapper/index.ts | 1 + .../ClaimsData/UnitClaims/UnitClaims.tsx | 20 + .../DeleteUnitClaimModal.tsx | 57 + .../deleteUnitClaimModal.module.css | 60 + .../DeleteUnitClaimModal/index.ts | 1 + .../UnitClaimsButton/UnitClaimsButton.tsx | 27 + .../UnitClaimsList/UnitClaimsButton/index.ts | 1 + .../unitClaimsbutton.module.css | 47 + .../UnitClaimsList/UnitClaimsList.tsx | 34 + .../UnitClaimsLocation/UnitClaimsLocation.tsx | 23 + .../UnitClaimsLocation/index.ts | 1 + .../unitClaimsLocation.module.css | 8 + .../UnitClaims/UnitClaimsList/index.ts | 4 + .../UnitClaimsList/unitClaimsList.module.css | 25 + .../ClaimsData/UnitClaims/index.ts | 2 + .../UnitClaims/unitClaims.module.css | 21 + .../UnitClaimsModal/UnitClaimsModal.tsx | 233 + .../ClaimsData/UnitClaimsModal/index.ts | 1 + .../unitClaimsModal.module.css | 52 + .../ClaimsData/claimsData.module.css | 40 + .../ProjectData/ClaimsData/index.ts | 6 + .../components/ProjectData/Header/Header.tsx | 38 + .../ProjectData/Header/header.module.css | 24 + .../components/ProjectData/Header/index.ts | 1 + .../AffectedLocationModal.tsx | 130 + .../affectedLocationModal.module.css | 32 + .../LossData/AffectedLocationModal/index.ts | 1 + .../AffectedLocations/AffectedLocations.tsx | 53 + .../affectedLocations.module.css | 15 + .../LossData/AffectedLocations/index.ts | 1 + .../CategoryOfDamageEdit.tsx | 32 + .../categoryOfDamageEdit.module.css | 4 + .../LossData/CategoryOfDamageEdit/index.ts | 1 + .../CauseOfDamageEdit/CauseOfDamageEdit.tsx | 34 + .../causeOfDamageEdit.module.css | 3 + .../LossData/CauseOfDamageEdit/index.ts | 1 + .../CustomDamageTypeModal.tsx | 71 + .../customDamageTypeModal.module.css | 64 + .../LossData/CustomDamageTypeModal/index.ts | 1 + .../DamageInfoEdit/DamageInfoEdit.tsx | 33 + .../DamageInfoEdit/damageInfoEdit.module.css | 14 + .../LossData/DamageInfoEdit/index.ts | 1 + .../DamageInfoView/DamageInfoView.tsx | 46 + .../DamageInfoView/damageInfoView.module.css | 18 + .../LossData/DamageInfoView/index.ts | 1 + .../DamageTypeItem/DamageTypeItem.tsx | 20 + .../DamageTypeItem/damageTypeItem.module.css | 10 + .../LossData/DamageTypeItem/index.ts | 1 + .../DamageTypeItems/DamageTypeItems.tsx | 25 + .../damageTypeItems.module.css | 4 + .../LossData/DamageTypeItems/index.ts | 1 + .../LossData/DamageTypes/DamageTypes.tsx | 52 + .../DamageTypes/damageTypes.module.css | 33 + .../ProjectData/LossData/DamageTypes/index.ts | 1 + .../DateOfLossEdit/DateOfLossEdit.tsx | 34 + .../DateOfLossEdit/dateOfLossEdit.module.css | 14 + .../LossData/DateOfLossEdit/index.ts | 1 + .../LossData/LocationRow/LocationRow.tsx | 27 + .../ProjectData/LossData/LocationRow/index.ts | 1 + .../LocationRow/locationRow.module.css | 36 + .../LossData/LossData/LossData.tsx | 25 + .../ProjectData/LossData/LossData/index.ts | 1 + .../LossData/LossData/lossData.module.css | 9 + .../LossDataDamageTypeButton.tsx | 30 + .../LossDataDamageTypeButton/index.ts | 1 + .../lossDataDamageTypeButton.module.css | 28 + .../NoDamageSelected/NoDamageSelected.tsx | 23 + .../LossData/NoDamageSelected/index.ts | 1 + .../noDamageSelected.module.css | 27 + .../NoLocationPlaceholder.tsx | 17 + .../LossData/NoLocationPlaceholder/index.ts | 1 + .../noLocationPlaceholder.module.css | 20 + .../components/ProjectData/LossData/index.ts | 16 + .../LossDataWrapper/LossDataWrapper.tsx | 14 + .../ProjectData/LossDataWrapper/index.ts | 1 + .../OptionsDropDown/OptionsDropDown.tsx | 81 + .../ProjectData/OptionsDropDown/index.ts | 1 + .../optionsDropDown.module.css | 25 + .../ProjectDataWrapper/ProjectDataWrapper.tsx | 26 + .../ProjectData/ProjectDataWrapper/index.ts | 1 + .../projectDataWrapper.module.css | 3 + .../ProjectData/PropertyData/PropertyData.tsx | 88 + .../PropertyDataEdit/PropertyDataEdit.tsx | 144 + .../PropertyData/PropertyDataEdit/index.ts | 1 + .../propertyDataEdit.module.css | 44 + .../PropertyDataView/PropertyDataView.tsx | 62 + .../PropertyData/PropertyDataView/index.ts | 1 + .../propertyDataView.module.css | 20 + .../ProjectData/PropertyData/index.ts | 2 + .../PropertyData/propertyData.module.css | 45 + .../PropertyDataWrapper.tsx | 14 + .../ProjectData/PropertyDataWrapper/index.ts | 1 + src/shared/components/ProjectData/index.ts | 34 + .../Projects/CreateProject/CreateProject.tsx | 29 + .../CreateProject/createProject.module.css | 35 + .../Projects/CreateProject/index.ts | 1 + .../CreateProjectMain/CreateProjectMain.tsx | 32 + .../createProjectMain.module.css | 59 + .../Projects/CreateProjectMain/index.ts | 1 + .../Projects/EditAddress/EditAddress.tsx | 165 + .../EditAddress/editAddress.module.css | 102 + .../components/Projects/EditAddress/index.ts | 1 + .../PhotoDownloadModal/PhotoDownloadModal.tsx | 78 + .../Projects/PhotoDownloadModal/index.ts | 1 + .../photoDownloadModal.module.css | 68 + .../ProjectsPagination/ProjectsPagination.tsx | 21 + .../Projects/ProjectsPagination/index.ts | 1 + .../projectsPagination.module.css | 6 + .../CompletedProjects/CompletedProjects.tsx | 57 + .../completedProjects.module.css | 7 + .../ProjectsTabs/CompletedProjects/index.ts | 1 + .../ProjectsTabs/MyProjects/MyProjects.tsx | 57 + .../Projects/ProjectsTabs/MyProjects/index.ts | 1 + .../MyProjects/myProjects.module.css | 7 + .../NoProjectsTable/NoProjectsTable.tsx | 47 + .../ProjectsTabs/NoProjectsTable/index.ts | 1 + .../noProjectsTable.module.css | 50 + .../ProjectsList/ProjectsList.tsx | 124 + .../ProjectsTabs/ProjectsList/index.ts | 1 + .../ProjectsList/projectsList.module.css | 87 + .../ProjectsTabs/WipProjects/WipProjects.tsx | 57 + .../ProjectsTabs/WipProjects/index.ts | 1 + .../WipProjects/wipProjects.module.css | 7 + .../components/Projects/ProjectsTabs/index.ts | 4 + src/shared/components/Projects/index.ts | 6 + src/shared/components/Public/Album/Album.tsx | 27 + .../components/Public/Album/album.module.css | 8 + src/shared/components/Public/Album/index.ts | 1 + .../components/Public/Albums/Albums.tsx | 23 + .../Public/Albums/albums.module.css | 5 + src/shared/components/Public/Albums/index.ts | 1 + .../components/Public/Location/Location.tsx | 34 + .../components/Public/Location/index.ts | 1 + .../Public/Location/location.module.css | 29 + src/shared/components/Public/Photo/Photo.tsx | 31 + src/shared/components/Public/Photo/index.ts | 1 + .../components/Public/Photo/photo.module.css | 19 + .../components/Public/Photos/Photos.tsx | 31 + src/shared/components/Public/Photos/index.ts | 1 + .../Public/Photos/photos.module.css | 4 + src/shared/components/Public/Room/Room.tsx | 34 + src/shared/components/Public/Room/index.ts | 1 + .../components/Public/Room/room.module.css | 35 + src/shared/components/Public/index.ts | 6 + .../components/RadioButton/RadioButton.tsx | 19 + src/shared/components/RadioButton/index.ts | 1 + .../RecentlyAccessed/RecentlyAccessed.tsx | 53 + .../components/RecentlyAccessed/index.ts | 1 + .../recentlyAccessed.module.css | 83 + .../ChooseReportTypeModal.tsx | 40 + .../chooseReportTypeModal.module.css | 40 + .../Reports/ChooseReportTypeModal/index.ts | 1 + .../DeleteReportModal/DeleteReportModal.tsx | 49 + .../deleteReportModal.module.css | 45 + .../Reports/DeleteReportModal/index.ts | 1 + .../DownloadReportModal.tsx | 33 + .../downloadReportModal.module.css | 47 + .../Reports/DownloadReportModal/index.ts | 1 + .../DryingReportForm/DryingReportForm.tsx | 165 + .../dryingReportForm.module.css | 60 + .../GenerateReport/DryingReportForm/index.ts | 1 + .../PhotoReportForm/PhotoReportForm.tsx | 216 + .../GenerateReport/PhotoReportForm/index.ts | 1 + .../photoReportForm.module.css | 62 + .../Reports/GenerateReport/index.ts | 2 + .../GenerateReportWrapper.tsx | 24 + .../generateReportWrapper.module.css | 3 + .../Reports/GenerateReportWrapper/index.ts | 1 + .../Reports/ReportLocation/ReportLocation.tsx | 28 + .../Reports/ReportLocation/index.ts | 1 + .../ReportLocation/reportLocation.module.css | 14 + .../Reports/Reports/Reports.tsx | 29 + .../Reports/Reports/index.ts | 1 + .../Reports/Reports/reports.module.css | 24 + .../Reports/ReportsEmpty/ReportsEmpty.tsx | 16 + .../Reports/ReportsEmpty/index.ts | 1 + .../ReportsEmpty/reportsEmpty.module.css | 14 + .../Reports/ReportsTable/ReportsTable.tsx | 105 + .../Reports/ReportsTable/index.ts | 1 + .../ReportsTable/reportsTable.module.css | 31 + .../ShareReportModal/ShareReportModal.tsx | 72 + .../Reports/ShareReportModal/index.ts | 1 + .../shareReportModal.module.css | 57 + .../ReportsAndDocuments/Reports/index.ts | 9 + .../ReportsAndDocumentsWrapper.tsx | 25 + .../ReportsAndDocumentsWrapper/index.ts | 1 + .../reportsAndDocumentsWrapper.module.css | 3 + .../components/ReportsAndDocuments/index.ts | 13 + .../EquipmentCount/EquipmentCount.tsx | 28 + .../EquipmentCount/equipmentCount.module.css | 46 + .../EquipmentLog/EquipmentCount/index.ts | 1 + .../RocketDry/EquipmentLog/EquipmentLog.tsx | 20 + .../EquipmentLogInfoModal.tsx | 30 + .../equipmentLogInfoModal.module.css | 15 + .../EquipmentLogInfoModal/index.ts | 1 + .../LocationEquipment/LocationEquipment.tsx | 46 + .../EquipmentLog/LocationEquipment/index.ts | 1 + .../locationEquipment.module.css | 37 + .../NoEquipmentPlaceholder.tsx | 18 + .../NoEquipmentPlaceholder/index.ts | 1 + .../noEquipmentPlaceholder.module.css | 21 + .../TotalEquipment/TotalEquipment.tsx | 47 + .../EquipmentLog/TotalEquipment/index.ts | 1 + .../TotalEquipment/totalEquipment.module.css | 11 + .../EquipmentLog/equipmentLog.module.css | 23 + .../RocketDry/EquipmentLog/index.ts | 6 + .../ExternalAtmosphericTable.tsx | 43 + .../externalAtmosphericTable.module.css | 24 + .../ExternalAtmosphericTable/index.ts | 1 + .../InternalAtmosphericTable.tsx | 45 + .../InternalAtmosphericTable/index.ts | 1 + .../internalAtmosphericTable.module.css | 36 + .../MoistureAtmospheric.tsx | 18 + .../MoistureAtmosphericWrapper.tsx | 14 + .../MoistureAtmosphericWrapper/index.ts | 1 + .../RocketDry/MoistureAtmospheric/index.ts | 2 + .../moistureAtmospheric.module.css | 22 + .../MoistureLogsTable/MoistureLogsTable.tsx | 50 + .../RocketDry/MoistureLogsTable/index.ts | 1 + .../moistureLogsTable.module.css | 36 + .../NoRecordingsPlaceholder.tsx | 18 + .../NoRecordingsPlaceholder/index.ts | 1 + .../noRecordingsPlaceholder.module.css | 20 + .../RocketDry/RocketDryBody/RocketDryBody.tsx | 35 + .../RocketDry/RocketDryBody/index.ts | 1 + .../RocketDryBody/rocketDryBody.module.css | 45 + .../RocketDryLocationAccordion.tsx | 61 + .../RocketDryLocationAccordion/index.ts | 1 + .../rocketDryLocationAccordion.module.css | 48 + .../RocketDryRoomHeader.tsx | 23 + .../RocketDry/RocketDryRoomHeader/index.ts | 1 + .../rocketDryRoomHeader.module.css | 17 + .../RocketDryWrapper/RocketDryWrapper.tsx | 27 + .../RocketDry/RocketDryWrapper/index.ts | 1 + .../rocketDryWrapper.module.css | 3 + src/shared/components/RocketDry/index.ts | 17 + .../ChoosePropertyType/ChoosePropertyType.tsx | 38 + .../choosePropertyType.module.css | 20 + .../RocketScan/ChoosePropertyType/index.ts | 1 + .../InaccessiblePlaceholder.tsx | 30 + .../inaccessiblePlaceholder.module.css | 40 + .../InaccessiblePlaceholder/index.ts | 1 + .../RocketScan/LoadingBox/LoadingBox.tsx | 17 + .../RocketScan/LoadingBox/index.tsx | 1 + .../LoadingBox/loadingBox.module.css | 27 + .../LoadingThumbnail/LoadingThumbnail.tsx | 15 + .../RocketScan/LoadingThumbnail/index.tsx | 1 + .../loadingThumbnail.module.css | 20 + .../AddRoomPlaceholder/AddRoomPlaceholder.tsx | 39 + .../addRoomPlaceholder.module.css | 23 + .../MultiUnit/AddRoomPlaceholder/index.ts | 1 + .../CreateFloorModal/CreateFloorModal.tsx | 76 + .../createFloorModal.module.css | 25 + .../MultiUnit/CreateFloorModal/index.ts | 1 + .../CreateUnitModal/CreateUnitModal.tsx | 89 + .../createUnitModal.module.css | 25 + .../MultiUnit/CreateUnitModal/index.ts | 1 + .../DeleteLocationModal.tsx | 101 + .../deleteLocationModal.module.css | 43 + .../MultiUnit/DeleteLocationModal/index.ts | 1 + .../EditLocationModal/EditLocationModal.tsx | 90 + .../editLocationModal.module.css | 25 + .../MultiUnit/EditLocationModal/index.ts | 1 + .../MultiUnit/Location/Location.tsx | 35 + .../RocketScan/MultiUnit/Location/index.ts | 1 + .../MultiUnit/Location/location.module.css | 22 + .../MultiUnit/LocationForm/LocationForm.tsx | 129 + .../MultiUnit/LocationForm/index.ts | 1 + .../LocationForm/locationForm.module.css | 98 + .../MultiUnit/Locations/Locations.tsx | 29 + .../RocketScan/MultiUnit/Locations/index.ts | 1 + .../MultiUnit/Locations/locationts.module.css | 12 + .../components/RocketScan/MultiUnit/index.ts | 8 + .../PhotoView/Carousal/Carousal/Carousal.tsx | 54 + .../Carousal/Carousal/carousel.module.css | 73 + .../PhotoView/Carousal/Carousal/index.ts | 1 + .../Carousal/CarouselItem/CarouselItem.tsx | 34 + .../CarouselItem/carouselItem.module.css | 28 + .../PhotoView/Carousal/CarouselItem/index.ts | 1 + .../RocketScan/PhotoView/Carousal/index.ts | 2 + .../PhotoSettings/PhotoSettings.tsx | 68 + .../PhotoSettings/PhotoSettings/index.ts | 1 + .../PhotoSettings/photoSettings.module.css | 112 + .../PhotoView/PhotoSettings/index.ts | 1 + .../PhotoView/PhotoView/PhotoView.tsx | 56 + .../RocketScan/PhotoView/PhotoView/index.ts | 1 + .../PhotoView/PhotoView/photoView.module.css | 60 + .../components/RocketScan/PhotoView/index.ts | 2 + .../RocketScanWrapper/RocketScanWrapper.tsx | 27 + .../RocketScan/RocketScanWrapper/index.ts | 1 + .../rocketScanWrapper.module.css | 3 + .../RocketScan/RoomTile/RoomTile.tsx | 60 + .../components/RocketScan/RoomTile/index.ts | 1 + .../RocketScan/RoomTile/roomTile.module.css | 56 + .../RoomsView/AddCustomForm/AddCustomForm.tsx | 95 + .../AddCustomForm/addCustomForm.module.css | 65 + .../RoomsView/AddCustomForm/index.ts | 1 + .../CreateRoom/CreateRoom/CreateRoom.tsx | 87 + .../CreateRoom/createRoom.module.css | 62 + .../RoomsView/CreateRoom/CreateRoom/index.ts | 1 + .../CreateRoom/RoomTypeItem/RoomTypeItem.tsx | 46 + .../CreateRoom/RoomTypeItem/index.ts | 1 + .../RoomTypeItem/roomTypeItem.module.css | 34 + .../RocketScan/RoomsView/CreateRoom/index.ts | 2 + .../DamagedMaterialToast.tsx | 47 + .../damagedMaterialToast.module.css | 61 + .../RoomsView/DamagedMaterialToast/index.ts | 1 + .../DamagedMaterials/DamagedMaterials.tsx | 44 + .../damagedMaterials.module.css | 51 + .../RoomsView/DamagedMaterials/index.ts | 1 + .../DamagedMaterialsPlaceholder.tsx | 17 + .../damagedMaterialsPlaceholder.module.css | 23 + .../DamagedMaterialsPlaceholder/index.ts | 1 + .../DamagedMaterial/DamagedMaterial.tsx | 33 + .../damagedMaterial.module.css | 16 + .../DamagedMaterial/index.ts | 1 + .../DamagedMaterialScope.tsx | 39 + .../damagedMaterialScope.module.css | 8 + .../DamagedMaterialScope/index.ts | 1 + .../DamagedMaterialViewList.tsx | 21 + .../damagedMaterialViewList.module.css | 4 + .../DamagedMaterialViewList/index.ts | 1 + .../DamagedMaterialsModal.tsx | 43 + .../damagedMaterialsModal.module.css | 25 + .../DamagedMaterialsModal/index.ts | 1 + .../DamagedMaterialsView.tsx | 20 + .../damagedMaterialsView.module.css | 51 + .../DamagedMaterialsView/index.ts | 1 + .../RoomsView/DamagedMaterialsView/index.ts | 5 + .../DamagedMaterialsWrapper.tsx | 19 + .../DamagedMaterialsWrapper/index.ts | 1 + .../DeleteRoomModal/DeleteRoomModal.tsx | 92 + .../deleteRoomModal.module.css | 43 + .../RoomsView/DeleteRoomModal/index.ts | 1 + .../EmptyRoomsPlaceholder.tsx | 16 + .../emptyRoomsPlaceholder.module.css | 18 + .../RoomsView/EmptyRoomsPlaceholder/index.ts | 1 + .../RoomsView/PhotoFilter/PhotoFilter.tsx | 50 + .../RocketScan/RoomsView/PhotoFilter/index.ts | 1 + .../PhotoFilter/photo.filter.module.css | 94 + .../CategoryTypeButton/CategoryTypeButton.tsx | 33 + .../categoryTypeButton.module.css | 20 + .../PhotosFilter/CategoryTypeButton/index.ts | 1 + .../RoomsView/PhotosFilter/PhotosFilter.tsx | 75 + .../RoomsView/PhotosFilter/index.ts | 2 + .../PhotosFilter/photosFilter.module.css | 53 + .../RoomsView/RoomButtons/RoomButtons.tsx | 47 + .../RocketScan/RoomsView/RoomButtons/index.ts | 1 + .../DamageTypeButton/DamageTypeButton.tsx | 36 + .../damageTypeButton.module.css | 35 + .../RoomContent/DamageTypeButton/index.ts | 1 + .../DamageTypesMenu/DamageTypesMenu.tsx | 22 + .../damageTypesMenu.module.css | 4 + .../RoomContent/DamageTypesMenu/index.ts | 1 + .../DamagedMaterialRow/DamagedMaterialRow.tsx | 38 + .../damagedMaterialRow.module.css | 24 + .../RoomContent/DamagedMaterialRow/index.ts | 1 + .../RoomContent/Gallery/DropZone/DropZone.tsx | 35 + .../Gallery/DropZone/dropzone.module.css | 41 + .../RoomContent/Gallery/DropZone/index.ts | 1 + .../RoomContent/Gallery/Gallery/Gallery.tsx | 83 + .../Gallery/Gallery/gallery.module.css | 49 + .../RoomContent/Gallery/Gallery/index.ts | 1 + .../NoPhotoPlaceholder/NoPhotoPlaceholder.tsx | 22 + .../Gallery/NoPhotoPlaceholder/index.ts | 1 + .../noPhotoPlaceholder.module.css | 15 + .../Gallery/Photos/Photo/Photo.tsx | 54 + .../RoomContent/Gallery/Photos/Photo/index.ts | 1 + .../Gallery/Photos/Photo/photo.module.css | 15 + .../Gallery/Photos/Photos/Photos.tsx | 37 + .../Gallery/Photos/Photos/index.ts | 1 + .../Gallery/Photos/Photos/photos.module.css | 4 + .../RoomContent/Gallery/Photos/index.ts | 2 + .../RoomsView/RoomContent/Gallery/index.ts | 4 + .../ScopeOfWorkDropdown.tsx | 69 + .../RoomContent/ScopeOfWorkDropdown/index.ts | 1 + .../scopeOfWorkDropdown.module.css | 19 + .../RocketScan/RoomsView/RoomContent/index.ts | 5 + .../RoomsView/RoomLevel/RoomLevel.tsx | 27 + .../RocketScan/RoomsView/RoomLevel/index.ts | 1 + .../RoomsView/RoomLevel/roomLevel.module.css | 23 + .../components/RocketScan/RoomsView/index.ts | 29 + .../DeletePhotosPreviewModal.tsx | 60 + .../deletePhotosPreviewModal.module.css | 78 + .../DeletePhotosPreviewModal/index.ts | 1 + .../PhotoShareLink/PhotoShareLink.tsx | 83 + .../PhotoShareLink/index.ts | 1 + .../PhotoShareLink/photoShareLink.module.css | 172 + .../PhotoSharePreviewModal.tsx | 82 + .../PhotoShareToast/PhotoShareToast.tsx | 35 + .../PhotoShareToast/index.ts | 1 + .../photoShareToast.module.css | 80 + .../SelectedPhoto/SelectedPhoto.tsx | 29 + .../SelectedPhoto/index.ts | 1 + .../SelectedPhoto/selectedPhoto.module.css | 7 + .../PhotoSharePreviewModal/index.ts | 4 + .../photoSharePreviewModal.module.css | 78 + .../SelectActionsCentre.tsx | 60 + .../RocketScan/SelectActionsCentre/index.ts | 3 + .../selectActionsCentre.module.css | 33 + src/shared/components/RocketScan/index.ts | 51 + .../components/RoleDropDown/RoleDropDown.tsx | 64 + src/shared/components/RoleDropDown/index.ts | 1 + .../RoleDropDown/roleDropDown.module.css | 19 + .../Rooms/CreateRoom/CreateRoom.tsx | 67 + .../CreateRoom/RoomTypeItem/RoomTypeItem.tsx | 30 + .../Rooms/CreateRoom/RoomTypeItem/index.ts | 1 + .../RoomTypeItem/roomTypeItem.module.css | 32 + .../Rooms/CreateRoom/createRoom.module.css | 20 + .../components/Rooms/CreateRoom/index.ts | 1 + .../components/Rooms/RoomLevel/RoomLevel.tsx | 24 + .../components/Rooms/RoomLevel/index.ts | 1 + .../Rooms/RoomLevel/roomLevel.module.css | 23 + .../components/Rooms/RoomTile/RoomTile.tsx | 42 + src/shared/components/Rooms/RoomTile/index.ts | 1 + .../Rooms/RoomTile/roomTile.module.css | 75 + src/shared/components/SearchBox/SearchBox.tsx | 46 + src/shared/components/SearchBox/index.ts | 1 + .../components/SearchBox/searchBox.module.css | 37 + .../SecondarySpinner/SecondarySpinner.tsx | 19 + .../components/SecondarySpinner/index.tsx | 1 + .../secondarySpinner.module.css | 53 + .../Selectors/LevelSelector/LevelSelector.tsx | 98 + .../Selectors/LevelSelector/index.ts | 1 + .../LevelSelector/levelSelector.module.css | 87 + .../Selectors/UnitLink/UnitLink.tsx | 19 + .../components/Selectors/UnitLink/index.ts | 1 + .../Selectors/UnitLink/unitLink.module.css | 28 + .../Selectors/UnitSelector/UnitSelector.tsx | 86 + .../Selectors/UnitSelector/index.ts | 1 + .../UnitSelector/unitSelector.module.css | 71 + .../Selectors/UnitsMenu/Item/Item.tsx | 87 + .../Selectors/UnitsMenu/Item/index.ts | 1 + .../Selectors/UnitsMenu/Item/item.module.css | 88 + .../Selectors/UnitsMenu/UnitsMenu.tsx | 35 + .../components/Selectors/UnitsMenu/index.ts | 1 + src/shared/components/SideBar/SideBar.tsx | 81 + .../SideBar/SideBarFixed/SideBarFixed.tsx | 37 + .../components/SideBar/SideBarFixed/index.ts | 1 + .../SideBarFixed/sideBarFixed.module.css | 46 + .../SideBar/SideBarNav/SideBarNav.tsx | 42 + .../components/SideBar/SideBarNav/index.ts | 1 + .../SideBar/SideBarNav/sideBarNav.module.css | 0 .../SideBar/SideBarNavItem/SideBarNavItem.tsx | 43 + .../SideBar/SideBarNavItem/index.ts | 1 + .../SideBarNavItem/sideBarNavItem.module.css | 71 + src/shared/components/SideBar/index.ts | 2 + .../components/SideBar/sideBar.module.css | 147 + .../components/SignIn/Blocked/Blocked.tsx | 40 + .../SignIn/Blocked/blocked.module.css | 25 + src/shared/components/SignIn/Blocked/index.ts | 1 + .../CompanyInviteBanner.tsx | 31 + .../companyInviteBanner.module.css | 45 + .../SignIn/CompanyInviteBanner/index.ts | 1 + .../CountryCodeSelector.tsx | 103 + .../countryCodeSelector.module.css | 122 + .../SignIn/CountryCodeSelector/index.ts | 1 + .../ForgotPassword/ForgotPassword.tsx | 83 + .../ForgotPassword/forgotpassword.module.css | 141 + .../ForgotPassword/ForgotPassword/index.ts | 1 + .../ForgotPasswordEmailSent.tsx | 46 + .../forgotPasswordEmailSent.module.css | 22 + .../ForgotPasswordEmailSent/index.ts | 1 + .../ResetPassword/ResetPassword.tsx | 127 + .../ForgotPassword/ResetPassword/index.ts | 1 + .../ResetPassword/resetpassword.module.css | 241 + .../components/SignIn/ForgotPassword/index.ts | 3 + .../KeepMeSignedInForgotPassword.tsx | 26 + .../KeepMeSignedInForgotPassword/index.ts | 1 + .../keepmesignedin.forgotpassword.module.css | 45 + .../components/SignIn/NoCompany/NoCompany.tsx | 25 + .../components/SignIn/NoCompany/index.ts | 1 + .../SignIn/NoCompany/noCompany.module.css | 18 + .../PhoneVerification/PhoneVerification.tsx | 116 + .../SignIn/PhoneVerification/index.ts | 1 + .../phoneVerification.module.css | 266 + .../PhoneVerificationCode.tsx | 252 + .../SignIn/PhoneVerificationCode/index.ts | 1 + .../phoneVerificationCode.module.css | 164 + .../SelectAccountType/SelectAccountType.tsx | 63 + .../SignIn/SelectAccountType/index.ts | 1 + .../selectAccountType.module.css | 75 + .../SignIn/SignInEmail/SignInEmail.tsx | 134 + .../components/SignIn/SignInEmail/index.ts | 1 + .../SignInEmail/signIn.email.module.css | 198 + .../components/SignIn/SignInHow/SignInHow.tsx | 79 + .../components/SignIn/SignInHow/index.ts | 1 + .../SignIn/SignInHow/signInHow.module.css | 164 + .../SignIn/SignInWrapper/SignInWrapper.tsx | 62 + .../components/SignIn/SignInWrapper/index.ts | 1 + .../SignInWrapper/signIn.wrapper.module.css | 34 + .../SignIn/SignUpEmail/SignUpEmail.tsx | 162 + .../components/SignIn/SignUpEmail/index.ts | 1 + .../SignIn/SignUpEmail/signUpEmail.module.css | 248 + .../SignUpUserInformation.tsx | 129 + .../SignIn/SignUpUserInformation/index.ts | 1 + .../signUpUserInformation.module.css | 245 + .../SignIn/WelcomeAboard/WelcomeAboard.tsx | 26 + .../components/SignIn/WelcomeAboard/index.ts | 1 + .../WelcomeAboard/welcomeAboard.module.css | 16 + src/shared/components/SignIn/index.ts | 6 + .../components/SocialMedia/SocialMedia.tsx | 75 + src/shared/components/SocialMedia/index.ts | 1 + .../SocialMedia/socialMedia.module.css | 30 + .../components/SourceMarker/SourceMarker.tsx | 31 + src/shared/components/SourceMarker/index.ts | 1 + .../SourceMarker/sourceMarker.module.css | 38 + src/shared/components/Span/Span.tsx | 24 + src/shared/components/Span/index.ts | 1 + src/shared/components/Spinner/Spinner.tsx | 25 + src/shared/components/Spinner/index.ts | 1 + .../components/Spinner/spinner.module.css | 37 + .../components/SpinnerBlock/SpinnerBlock.tsx | 22 + src/shared/components/SpinnerBlock/index.ts | 1 + .../SpinnerBlock/spinnerBlock.module.css | 5 + .../MultiUnitBody/MultiUnitBody.tsx | 87 + .../TabContentBody/MultiUnitBody/index.ts | 1 + .../MultiUnitBody/multiUnitBody.module.css | 18 + src/shared/components/TabContentBody/index.ts | 1 + .../TabContentHeader/TabContentHeader.tsx | 78 + .../components/TabContentHeader/index.ts | 1 + .../tabContentHeader.module.css | 65 + src/shared/components/Table/Table/Table.tsx | 17 + src/shared/components/Table/Table/index.ts | 1 + .../components/Table/TableBody/TableBody.tsx | 10 + .../components/Table/TableBody/index.ts | 1 + .../Table/TableCaption/TableCaption.tsx | 9 + .../components/Table/TableCaption/index.ts | 1 + .../Table/TableColumn/TableColumn.tsx | 31 + .../components/Table/TableColumn/index.ts | 1 + .../Table/TableFooter/TableFooter.tsx | 9 + .../components/Table/TableFooter/index.ts | 1 + .../Table/TableHeadItem/TableHeadItem.tsx | 39 + .../components/Table/TableHeadItem/index.ts | 1 + .../TableHeadItem/tableHeadItem.module.css | 23 + .../Table/TableHeader/TableHeader.tsx | 10 + .../components/Table/TableHeader/index.ts | 1 + src/shared/components/Table/TableOld.tsx | 44 + .../components/Table/TableRow/TableRow.tsx | 22 + src/shared/components/Table/TableRow/index.ts | 1 + .../components/Table/TableTh/TableTh.tsx | 16 + src/shared/components/Table/TableTh/index.ts | 1 + src/shared/components/Table/index.ts | 9 + .../Tabs/LocationsTabs/LocationsTabs.tsx | 116 + .../components/Tabs/LocationsTabs/index.ts | 1 + .../LocationsTabs/locations.tabs.module.css | 75 + .../MultiUnitRoomTabs/MultiUnitRoomTabs.tsx | 87 + .../Tabs/MultiUnitRoomTabs/index.ts | 1 + .../multiUnitRoom.tabs.module.css | 94 + .../Tabs/MultiUnitTabs/MultiUnitTabs.tsx | 104 + .../components/Tabs/MultiUnitTabs/index.ts | 1 + .../MultiUnitTabs/multiUnit.tabs.module.css | 120 + .../components/Tabs/PeopleTabs/PeopleTabs.tsx | 95 + .../components/Tabs/PeopleTabs/index.ts | 1 + .../Tabs/PeopleTabs/people.tabs.module.css | 87 + .../Tabs/ProjectTabMenu/ProjectTabMenu.tsx | 95 + .../components/Tabs/ProjectTabMenu/index.ts | 1 + .../ProjectTabMenu/projectTabMenu.module.css | 58 + .../Tabs/ProjectsTabMenu/ProjectsTabMenu.tsx | 92 + .../components/Tabs/ProjectsTabMenu/index.ts | 1 + .../projectsTabMenu.module.css | 94 + .../Tabs/ProjectsTabs/MobileProjectsTabs.tsx | 135 + .../components/Tabs/ProjectsTabs/index.ts | 1 + .../mobileProjectsTabs.module.css | 113 + src/shared/components/Tabs/Tab/Tab.tsx | 74 + src/shared/components/Tabs/Tab/index.ts | 1 + src/shared/components/Tabs/Tab/tab.module.css | 22 + .../components/Tabs/TabContent/TabContent.tsx | 19 + .../components/Tabs/TabContent/index.ts | 1 + src/shared/components/Tabs/index.ts | 6 + src/shared/components/TabsMenu/TabsMenu.tsx | 38 + src/shared/components/TabsMenu/index.ts | 1 + .../components/TabsMenu/tabsMenu.module.css | 26 + src/shared/components/TextArea/TextArea.tsx | 129 + src/shared/components/TextArea/index.ts | 1 + .../components/TextArea/textArea.module.css | 3 + src/shared/components/TextBox/TextBox.tsx | 116 + src/shared/components/TextBox/index.ts | 1 + .../LoadingThumbnail/LoadingThumbnail.tsx | 16 + .../Thumbnail/LoadingThumbnail/index.ts | 1 + .../loadingThumbnail.module.css | 8 + .../Thumbnail/ThumbOverlay/ThumbOverlay.tsx | 22 + .../Thumbnail/ThumbOverlay/index.ts | 1 + .../ThumbOverlay/thumbOverlay.module.css | 25 + .../Thumbnail/Thumbnail/Thumbnail.tsx | 95 + .../components/Thumbnail/Thumbnail/index.ts | 1 + .../Thumbnail/Thumbnail/thumbnail.module.css | 90 + src/shared/components/Thumbnail/index.ts | 3 + .../Toast/GeneralToast/GeneralToast.tsx | 57 + .../GeneralToast/generalToast.module.css | 76 + .../components/Toast/GeneralToast/index.ts | 1 + src/shared/components/Toast/Toast/Toast.tsx | 85 + src/shared/components/Toast/Toast/index.ts | 1 + .../components/Toast/Toast/toast.module.css | 75 + src/shared/components/Toast/index.ts | 2 + src/shared/components/Toggle/Toggle.tsx | 46 + src/shared/components/Toggle/index.ts | 1 + .../components/Toggle/toggle.module.css | 61 + .../Units/CreateFloor/CreateFloor.tsx | 73 + .../Units/CreateFloor/createFloor.module.css | 85 + .../components/Units/CreateFloor/index.ts | 1 + .../Units/CreateUnit/CreateUnit.tsx | 86 + .../Units/CreateUnit/createUnit.module.css | 106 + .../components/Units/CreateUnit/index.ts | 1 + .../CategoryRow/CategoryRow.tsx | 28 + .../CategoryRow/categoryRow.module.css | 20 + .../User/PhotoCategories/CategoryRow/index.ts | 1 + .../EditPhotoCategories.tsx | 45 + .../editPhotoCategories.module.css | 24 + .../EditPhotoCategories/index.ts | 1 + .../PhotoCategories/PhotoCategories.tsx | 41 + .../PhotoCategories/PhotoCategories/index.ts | 1 + .../photoCategories.module.css | 49 + .../components/User/PhotoCategories/index.ts | 3 + src/shared/components/User/index.ts | 1 + .../ValidateBackGround/ValidateBackGround.tsx | 24 + .../Validation/ValidateBackGround/index.ts | 1 + .../validation.background.wrapper.module.css | 12 + src/shared/components/Validation/index.ts | 1 + .../ActionButtonWrapper.tsx | 28 + .../containers/ActionButtonWrapper/index.ts | 1 + .../AddLocationTab/AddLocationTab.tsx | 104 + .../ChoosePropertyType/ChoosePropertyType.tsx | 26 + .../choosePropertyType.module.css | 18 + .../ChoosePropertyType/index.ts | 1 + .../containers/AddLocationTab/actions.ts | 19 + src/shared/containers/AddLocationTab/index.ts | 3 + .../containers/AddLocationTab/reducer.ts | 37 + .../containers/AddLocationTab/selector.ts | 1 + .../CountryAutocomplete.tsx | 154 + .../Models/CountryModel/CountryModel.ts | 11 + .../Models/CountryModel/index.ts | 1 + .../Address/CountryAutocomplete/index.ts | 1 + .../GoogleAutocomplete/GoogleAutocomplete.tsx | 172 + .../Address/GoogleAutocomplete/index.ts | 1 + .../Models/ProvinceModel/ProvinceModel.ts | 7 + .../Models/ProvinceModel/index.ts | 1 + .../ProvinceAutocomplete.tsx | 99 + .../Address/ProvinceAutocomplete/index.ts | 1 + src/shared/containers/Address/actions.ts | 112 + src/shared/containers/Address/index.ts | 3 + src/shared/containers/Address/reducer.ts | 51 + .../Auth/GuestWrapper/GuestWrapper.tsx | 15 + .../containers/Auth/GuestWrapper/index.ts | 1 + src/shared/containers/Auth/actions.ts | 145 + src/shared/containers/Auth/index.ts | 3 + src/shared/containers/Auth/reducer.ts | 52 + src/shared/containers/Auth/selector.ts | 1 + .../AutoFocusInput/AutoFocusInput.tsx | 58 + src/shared/containers/AutoFocusInput/index.ts | 1 + .../AutoFocusTextArea/AutoFocusTextArea.tsx | 59 + .../containers/AutoFocusTextArea/index.ts | 1 + .../ProjectScreenButton.tsx | 17 + .../Button/ProjectScreenButton/index.ts | 1 + src/shared/containers/Company/actions.ts | 247 + src/shared/containers/Company/index.ts | 1 + src/shared/containers/Company/reducers.ts | 128 + src/shared/containers/Company/selectors.ts | 32 + src/shared/containers/Core/actions.ts | 86 + src/shared/containers/Core/index.ts | 2 + src/shared/containers/Core/reducer.ts | 85 + src/shared/containers/Core/selectors.ts | 4 + src/shared/containers/Crew/Crew/Crew.tsx | 143 + .../containers/Crew/Crew/crew.module.css | 3 + src/shared/containers/Crew/Crew/index.ts | 1 + src/shared/containers/Crew/Member/Member.tsx | 57 + src/shared/containers/Crew/Member/index.ts | 1 + .../containers/Crew/Members/Members.tsx | 153 + src/shared/containers/Crew/Members/index.ts | 1 + .../Crew/Members/members.module.css | 12 + .../SelectMembersModal/SelectMembersModal.tsx | 172 + .../Crew/SelectMembersModal/index.ts | 1 + .../selectMembersModal.module.css | 26 + src/shared/containers/Crew/actions.ts | 142 + src/shared/containers/Crew/index.ts | 4 + src/shared/containers/Crew/reducer.ts | 77 + src/shared/containers/Crew/selectors.ts | 8 + .../Dashboard/Dashboard/Dashboard.tsx | 17 + .../containers/Dashboard/Dashboard/index.ts | 1 + .../CreateProjectButton.tsx | 23 + .../CreateProjectButton/index.ts | 1 + .../DashboardWrapper/DashboardWrapper.tsx | 65 + .../DashboardWrapper/index.ts | 1 + .../DashboardWrapper/SideBar/SideBar.tsx | 34 + .../DashboardWrapper/SideBar/index.ts | 1 + .../Dashboard/DashboardWrapper/index.ts | 3 + src/shared/containers/Dashboard/actions.ts | 32 + src/shared/containers/Dashboard/index.ts | 2 + src/shared/containers/Dashboard/reducer.ts | 21 + src/shared/containers/Dashboard/selector.ts | 8 + .../DropDown/DropDownItem/DropDownItem.tsx | 57 + .../containers/DropDown/DropDownItem/index.ts | 1 + src/shared/containers/DropDown/index.ts | 1 + src/shared/containers/DropZone/DropZone.tsx | 115 + src/shared/containers/DropZone/actions.ts | 54 + src/shared/containers/DropZone/index.ts | 1 + src/shared/containers/DropZone/reducer.ts | 25 + src/shared/containers/DropZone/selector.ts | 2 + .../FloorDropDown/FloorDropDown.tsx | 88 + src/shared/containers/FloorDropDown/index.ts | 1 + src/shared/containers/Form/Form.tsx | 39 + src/shared/containers/Form/index.ts | 1 + .../GalleryHeader/GalleryHeader.tsx | 60 + .../GalleryHeader/galleryHeader.module.css | 26 + src/shared/containers/GalleryHeader/index.ts | 1 + .../containers/HubSpotModal/HubSpotModal.tsx | 46 + src/shared/containers/HubSpotModal/index.ts | 1 + .../ImageDeleteModal/ImageDeleteModal.tsx | 34 + .../containers/ImageDeleteModal/index.ts | 1 + src/shared/containers/ImageTile/ImageTile.tsx | 30 + .../containers/ImageTile/imageTile.module.css | 42 + src/shared/containers/ImageTile/index.ts | 1 + .../InviteEmployees/InviteEmployees.tsx | 134 + .../containers/InviteEmployees/actions.ts | 57 + .../containers/InviteEmployees/index.ts | 1 + .../containers/InviteEmployees/reducer.ts | 24 + .../containers/InviteEmployees/selectors.ts | 4 + .../ProjectTabsLayout/ProjectTabsLayout.tsx | 38 + .../Layouts/ProjectTabsLayout/index.ts | 1 + .../containers/Layouts/TabsMenu/TabsMenu.tsx | 37 + .../containers/Layouts/TabsMenu/index.ts | 1 + src/shared/containers/Layouts/index.ts | 2 + src/shared/containers/Location/Location.tsx | 8 + src/shared/containers/Location/index.ts | 1 + .../LocationsPlaceholder.tsx | 42 + .../containers/LocationsPlaceholder/index.ts | 1 + .../locationsPlaceholder.module.css | 52 + src/shared/containers/MapPin/MapPin.tsx | 26 + src/shared/containers/MapPin/index.ts | 1 + .../MobileWarningModal/MobileWarningModal.tsx | 29 + .../containers/MobileWarningModal/index.ts | 1 + .../containers/MultiUnitAdd/MultiUnitAdd.tsx | 17 + src/shared/containers/MultiUnitAdd/index.ts | 1 + .../MultiUnitAdd/multiUnitAdd.module.css | 3 + src/shared/containers/Nav/Nav.tsx | 73 + src/shared/containers/Nav/actions.ts | 17 + src/shared/containers/Nav/index.ts | 5 + src/shared/containers/Nav/nav.module.css | 4 + src/shared/containers/Nav/reducer.ts | 20 + .../NotFoundWrapper/NotFoundWrapper.tsx | 23 + .../containers/NotFoundWrapper/index.ts | 1 + .../containers/Notes/EditNote/EditNote.tsx | 66 + src/shared/containers/Notes/EditNote/index.ts | 1 + .../containers/Notes/Models/NotesModel.ts | 23 + src/shared/containers/Notes/Models/index.ts | 1 + .../containers/Notes/NoteItem/NoteItem.tsx | 108 + src/shared/containers/Notes/NoteItem/index.ts | 1 + src/shared/containers/Notes/Notes/Notes.tsx | 134 + src/shared/containers/Notes/Notes/index.ts | 1 + .../containers/Notes/Notes/notes.module.css | 13 + .../NotesDamagedMaterials.tsx | 163 + .../Notes/NotesDamagedMaterials/index.ts | 1 + .../Notes/NotesFilter/NotesFilter.tsx | 30 + .../containers/Notes/NotesFilter/index.ts | 1 + .../Notes/NotesHeader/NotesHeader.tsx | 37 + .../containers/Notes/NotesHeader/index.ts | 1 + .../NotesLocation/NotesLocation.tsx | 154 + .../NotesLocations/NotesLocation/index.ts | 1 + .../NotesLocations/NotesLocations.tsx | 93 + .../NotesLocations/NotesLocations/index.ts | 1 + .../containers/Notes/NotesLocations/index.ts | 2 + .../NotesPhotos/NotesPhoto/NotesPhoto.tsx | 159 + .../Notes/NotesPhotos/NotesPhoto/index.ts | 1 + .../NotesPhoto/notesPhoto.module.css | 8 + .../NotesPhotos/NotesPhotos/NotesPhotos.tsx | 107 + .../Notes/NotesPhotos/NotesPhotos/index.ts | 1 + .../NotesPhotos/notesPhotos.module.css | 0 .../containers/Notes/NotesPhotos/index.ts | 2 + .../Notes/NotesRooms/NotesRoom/NotesRoom.tsx | 161 + .../Notes/NotesRooms/NotesRoom/index.ts | 1 + .../NotesRooms/NotesRooms/NotesRooms.tsx | 95 + .../Notes/NotesRooms/NotesRooms/index.ts | 1 + .../containers/Notes/NotesRooms/index.ts | 2 + .../Notes/NotesSearch/NotesSearch.tsx | 31 + .../containers/Notes/NotesSearch/index.ts | 1 + .../Notes/NotesSearch/notesSearch.module.css | 3 + src/shared/containers/Notes/actions.ts | 283 + src/shared/containers/Notes/index.ts | 11 + src/shared/containers/Notes/reducer.ts | 71 + src/shared/containers/Notes/selectors.ts | 15 + .../OptionToolBar/OptionToolBar.tsx | 44 + src/shared/containers/OptionToolBar/index.ts | 1 + .../People/EmployeeCard/EmployeeCard.tsx | 57 + .../containers/People/EmployeeCard/index.ts | 1 + src/shared/containers/People/People.tsx | 9 + .../ContactsTab/ContactCard/ContactCard.tsx | 57 + .../ContactsTab/ContactCard/index.ts | 1 + .../ContactTypeAutoComplete.tsx | 102 + .../ContactTypeAutoComplete/index.ts | 1 + .../ContactsTab/Contacts/Contacts.tsx | 47 + .../PeopleTabs/ContactsTab/Contacts/index.ts | 1 + .../ContactsTab/ContactsTab/ContactsTab.tsx | 293 + .../ContactsTab/ContactsTab/index.ts | 1 + .../CreateContact/CreateContact.tsx | 225 + .../ContactsTab/CreateContact/index.ts | 1 + .../ContactsTab/EditContact/EditContact.tsx | 264 + .../ContactsTab/EditContact/index.ts | 1 + .../People/PeopleTabs/ContactsTab/actions.ts | 259 + .../People/PeopleTabs/ContactsTab/index.ts | 6 + .../People/PeopleTabs/ContactsTab/reducer.ts | 194 + .../PeopleTabs/ContactsTab/selectors.ts | 23 + .../EmployeesTab/Employees/Employees.tsx | 27 + .../EmployeesTab/Employees/index.ts | 1 + .../EmployeesTab/EmployeesTab.tsx | 301 + .../EmployeesTab/EmployeesTab/index.ts | 1 + .../People/PeopleTabs/EmployeesTab/actions.ts | 127 + .../People/PeopleTabs/EmployeesTab/index.ts | 2 + .../People/PeopleTabs/EmployeesTab/reducer.ts | 116 + .../PeopleTabs/EmployeesTab/selectors.ts | 19 + .../People/PeopleTabs/PeopleTabs.tsx | 20 + .../containers/People/PeopleTabs/index.ts | 3 + src/shared/containers/People/Roles/Roles.tsx | 30 + src/shared/containers/People/Roles/index.ts | 1 + .../containers/People/Roles/roles.module.css | 6 + src/shared/containers/People/index.ts | 4 + .../PhotoErrorToast/PhotoErrorToast.tsx | 40 + .../containers/PhotoErrorToast/actions.ts | 27 + .../containers/PhotoErrorToast/index.ts | 1 + .../containers/PhotoErrorToast/reducer.ts | 23 + .../containers/PhotoErrorToast/selector.ts | 1 + .../containers/PhotoFilter/PhotoFilter.tsx | 54 + src/shared/containers/PhotoFilter/index.ts | 1 + .../containers/PhotoGallery/PhotoGallery.tsx | 204 + src/shared/containers/PhotoGallery/index.ts | 1 + .../PhotoView/ImageNotes/ImageNotes.tsx | 44 + .../containers/PhotoView/ImageNotes/index.ts | 1 + src/shared/containers/PhotoView/PhotoView.tsx | 70 + .../PhotoViewWrapper/PhotoViewWrapper.tsx | 20 + .../PhotoView/PhotoViewWrapper/index.ts | 1 + src/shared/containers/PhotoView/actions.ts | 45 + src/shared/containers/PhotoView/index.ts | 2 + src/shared/containers/PhotoView/reducer.ts | 43 + src/shared/containers/PhotoView/selectors.ts | 18 + .../CarouselItems/CarouselItems.tsx | 37 + .../PhotoViewCarousel/CarouselItems/index.ts | 1 + .../Models/PhotoModal/PhotoModal.ts | 79 + .../Models/PhotoModal/index.ts | 1 + .../PhotoViewCarousel/Models/index.ts | 1 + .../PhotoViewCarousel/PhotoViewCarousel.tsx | 116 + .../PhotoViewCarousel/index.ts | 1 + .../containers/PhotoViewCarousel/actions.ts | 118 + .../containers/PhotoViewCarousel/index.ts | 2 + .../containers/PhotoViewCarousel/reducer.ts | 71 + .../containers/PhotoViewCarousel/selector.ts | 9 + .../PhotosPlaceholder/PhotosPlaceholder.tsx | 36 + .../containers/PhotosPlaceholder/index.ts | 1 + .../photosPlaceholder.module.css | 23 + .../Project/AddLocations/AddLocations.tsx | 16 + .../MultiUnitAddRoom/MultiUnitAddRoom.tsx | 16 + .../MultiUnitContent/MultiUnitAddContent.tsx | 191 + .../MultiUnitContent/index.ts | 1 + .../multiUnitContent.module.css | 24 + .../MultiUnitHeader/MultiUnitHeader.tsx | 47 + .../MultiUnitAddRoom/MultiUnitHeader/index.ts | 1 + .../MultiUnitHeader/projectHeader.module.css | 50 + .../MultiUnitPhotoGallery.tsx | 220 + .../MultiUnitPhotoGallery/index.ts | 1 + .../MultiUnitRoomGallery.tsx | 58 + .../MultiUnitRoomGallery/index.ts | 1 + .../multiUnitRoomGallery.module.css | 3 + .../AddLocations/MultiUnitAddRoom/index.ts | 3 + .../containers/Project/AddLocations/index.ts | 1 + .../Project/AllLocations/AllLocations.tsx | 69 + .../containers/Project/AllLocations/index.ts | 1 + .../DeleteProjectModal/DeleteProjectModal.tsx | 93 + .../Project/DeleteProjectModal/index.ts | 1 + .../EditAddressModal/EditAddressModal.tsx | 184 + .../Project/EditAddressModal/index.ts | 1 + .../containers/Project/Floor/actions.ts | 124 + .../containers/Project/Floor/reducer.ts | 56 + .../containers/Project/Floor/selectors.ts | 4 + .../MultiUnit/FloorListItem/FloorListItem.tsx | 43 + .../FloorListItem/floorListItem.module.css | 28 + .../Project/MultiUnit/FloorListItem/index.ts | 1 + .../FloorRoomTile/FloorRoomTile.tsx | 53 + .../FloorRoomTiles/FloorRoomTile/index.ts | 1 + .../FloorRoomTiles/FloorRoomTiles.tsx | 15 + .../Project/MultiUnit/FloorRoomTiles/index.ts | 1 + .../Project/MultiUnit/FloorTile/FloorTile.tsx | 36 + .../MultiUnit/FloorTile/floorTile.module.css | 26 + .../Project/MultiUnit/FloorTile/index.ts | 1 + .../MultiUnit/FloorTiles/FloorTiles.tsx | 15 + .../Project/MultiUnit/FloorTiles/index.ts | 1 + .../Project/MultiUnit/MultiUnit/MultiUnit.tsx | 110 + .../MultiUnit/MultiUnitTabs/MultiUnitTabs.tsx | 76 + .../MultiUnit/MultiUnitTabs/index.ts | 1 + .../MultiUnitTabs/multiUnitTabs.module.css | 20 + .../Project/MultiUnit/MultiUnit/index.ts | 2 + .../MultiUnit/MultiUnit/multiUnit.module.css | 36 + .../MultiUnit/RoomTiles/RoomTile/RoomTile.tsx | 29 + .../MultiUnit/RoomTiles/RoomTile/index.ts | 1 + .../Project/MultiUnit/RoomTiles/RoomTiles.tsx | 69 + .../Project/MultiUnit/RoomTiles/index.ts | 2 + .../MultiUnit/UnitListItem/UnitListItem.tsx | 43 + .../Project/MultiUnit/UnitListItem/index.ts | 1 + .../UnitListItem/unitListItem.module.css | 28 + .../UnitRoomTile/UnitRoomTile.tsx | 60 + .../UnitRoomTiles/UnitRoomTile/index.ts | 1 + .../MultiUnit/UnitRoomTiles/UnitRoomTiles.tsx | 15 + .../Project/MultiUnit/UnitRoomTiles/index.ts | 1 + .../Project/MultiUnit/UnitTile/UnitTile.tsx | 36 + .../Project/MultiUnit/UnitTile/index.ts | 1 + .../MultiUnit/UnitTile/unitTile.module.css | 26 + .../Project/MultiUnit/UnitTiles/UnitTiles.tsx | 15 + .../Project/MultiUnit/UnitTiles/index.ts | 1 + .../containers/Project/MultiUnit/index.ts | 2 + .../containers/Project/Project/Project.tsx | 102 + .../containers/Project/Project/index.ts | 1 + .../Project/ProjectAlias/ProjectAlias.tsx | 78 + .../containers/Project/ProjectAlias/index.ts | 1 + .../ProjectAlias/projectAlias.module.css | 9 + .../Project/ProjectOptions/ProjectOptions.tsx | 85 + .../Project/ProjectOptions/index.ts | 1 + .../ProjectOptions/projectOptions.module.css | 46 + .../Project/ProjectTabs/ProjectTabs.tsx | 85 + .../containers/Project/ProjectTabs/actions.ts | 19 + .../containers/Project/ProjectTabs/index.ts | 3 + .../containers/Project/ProjectTabs/reducer.ts | 18 + .../Unit/MultiUnitList/MultiUnitList.tsx | 28 + .../Project/Unit/MultiUnitList/index.ts | 1 + .../Unit/Rooms/Room/Albums/Album/Album.tsx | 101 + .../Room/Albums/Album/Photos/Photo/Photo.tsx | 53 + .../Room/Albums/Album/Photos/Photo/index.ts | 1 + .../Unit/Rooms/Room/Albums/Album/index.ts | 1 + .../Project/Unit/Rooms/Room/Albums/Albums.tsx | 78 + .../Project/Unit/Rooms/Room/Albums/index.ts | 1 + .../Project/Unit/Rooms/Room/Room.tsx | 22 + .../Project/Unit/Rooms/Room/index.ts | 1 + .../Unit/Rooms/RoomButtons/RoomButtons.tsx | 71 + .../Project/Unit/Rooms/RoomButtons/index.ts | 1 + .../containers/Project/Unit/Rooms/Rooms.tsx | 28 + .../containers/Project/Unit/Rooms/actions.ts | 172 + .../containers/Project/Unit/Rooms/index.ts | 1 + .../containers/Project/Unit/Rooms/reducer.ts | 143 + .../Project/Unit/Rooms/selectors.ts | 10 + .../Project/Unit/SingleUnit/SingleUnit.tsx | 76 + .../Project/Unit/SingleUnit/index.ts | 1 + .../Project/Unit/UnitContent/UnitContent.tsx | 106 + .../Project/Unit/UnitContent/index.ts | 1 + src/shared/containers/Project/Unit/actions.ts | 256 + src/shared/containers/Project/Unit/reducer.ts | 96 + .../containers/Project/Unit/selector.ts | 7 + src/shared/containers/Project/actions.ts | 199 + src/shared/containers/Project/index.ts | 5 + src/shared/containers/Project/reducer.ts | 57 + src/shared/containers/Project/selectors.ts | 16 + .../ProjectContent/Models/RoomModel.ts | 7 + .../ProjectContent/Models/RoomTypeModel.ts | 6 + .../containers/ProjectContent/Models/index.ts | 2 + .../MultiUnitContent/MultiUnitContent.tsx | 123 + .../ProjectContent/MultiUnitContent/index.ts | 2 + .../multiUnitContent.module.css | 25 + .../ProjectContent/ProjectContent.tsx | 222 + .../containers/ProjectContent/actions.ts | 45 + src/shared/containers/ProjectContent/index.ts | 2 + .../ProjectContent/projectContent.module.css | 24 + .../containers/ProjectContent/reducer.ts | 23 + .../ProjectData/ClaimsData/ClaimsData.tsx | 22 + .../ClaimsDataEdit/ClaimsDataEdit.tsx | 142 + .../ClaimsData/ClaimsDataEdit/index.ts | 1 + .../ClaimsDataView/ClaimsDataView.tsx | 57 + .../ClaimsData/ClaimsDataView/index.ts | 1 + .../DeleteUnitClaimModal.tsx | 76 + .../DeleteUnitClaimModal/index.ts | 1 + .../EditUnitClaimsModal.tsx | 186 + .../EditUnitClaimsModal/index.ts | 1 + .../UnitClaimsButton/UnitClaimsButton.tsx | 44 + .../UnitClaimsList/UnitClaimsButton/index.ts | 1 + .../UnitClaimsList/UnitClaimsList.tsx | 16 + .../UnitClaimsLocation/UnitClaimsLocation.tsx | 69 + .../UnitClaimsLocation/index.ts | 1 + .../ClaimsData/UnitClaimsList/index.ts | 3 + .../UnitClaimsModal/UnitClaimsModal.tsx | 176 + .../ClaimsData/UnitClaimsModal/index.ts | 1 + .../ProjectData/ClaimsData/actions.ts | 129 + .../ProjectData/ClaimsData/index.ts | 5 + .../ProjectData/ClaimsData/reducers.ts | 63 + .../ProjectData/ClaimsData/selectors.ts | 19 + .../AffectedLocationDamageTypeButton.tsx | 37 + .../AffectedLocationDamageTypeButton/index.ts | 1 + .../AffectedLocationModal.tsx | 200 + .../LossData/AffectedLocationModal/index.ts | 1 + .../LossData/AffectedLocationModal/options.ts | 6 + .../AffectedLocations/AffectedLocations.tsx | 33 + .../LossData/AffectedLocations/index.ts | 1 + .../CategoryOfDamageEdit.tsx | 26 + .../LossData/CategoryOfDamageEdit/index.ts | 1 + .../CauseOfDamageEdit/CauseOfDamageEdit.tsx | 67 + .../LossData/CauseOfDamageEdit/index.ts | 1 + .../CustomDamageTypeModal.tsx | 75 + .../LossData/CustomDamageTypeModal/index.ts | 1 + .../LossData/DamageInfo/DamageInfo.tsx | 104 + .../ProjectData/LossData/DamageInfo/index.ts | 1 + .../LossData/DamageTypes/DamageTypes.tsx | 28 + .../ProjectData/LossData/DamageTypes/index.ts | 1 + .../DateOfLossEdit/DateOfLossEdit.tsx | 20 + .../LossData/DateOfLossEdit/index.ts | 1 + .../LossData/LocationRow/LocationRow.tsx | 23 + .../ProjectData/LossData/LocationRow/index.ts | 1 + .../ProjectData/LossData/LossData.tsx | 120 + .../LossDataDamageTypeButton.tsx | 35 + .../LossDataDamageTypeButton/index.ts | 1 + .../ProjectData/LossData/actions.ts | 341 + .../containers/ProjectData/LossData/index.ts | 12 + .../ProjectData/LossData/reducer.ts | 96 + .../ProjectData/LossData/selectors.ts | 16 + .../OptionsDropDown/OptionsDropDown.tsx | 124 + .../ProjectData/OptionsDropDown/index.ts | 1 + .../ProjectData/ProjectData/ProjectData.tsx | 20 + .../ProjectData/ProjectData/index.ts | 1 + .../ProjectDataHeader/ProjectDataHeader.tsx | 37 + .../ProjectData/ProjectDataHeader/index.ts | 1 + .../ProjectStatusBadge/ProjectStatusBadge.tsx | 23 + .../ProjectData/ProjectStatusBadge/index.ts | 1 + .../ProjectData/PropertyData/PropertyData.tsx | 203 + .../PropertyDataEdit/PropertyDataEdit.tsx | 233 + .../PropertyData/PropertyDataEdit/index.ts | 1 + .../propertyDataEdit.module.css | 43 + .../ProjectData/PropertyData/actions.ts | 156 + .../ProjectData/PropertyData/index.ts | 2 + .../ProjectData/PropertyData/reducer.ts | 42 + .../ProjectData/PropertyData/selectors.ts | 9 + src/shared/containers/ProjectData/index.ts | 20 + .../ProjectHeader/ProjectHeader.tsx | 105 + src/shared/containers/ProjectHeader/index.ts | 1 + .../ProjectHeader/projectHeader.module.css | 50 + .../containers/ProjectRow/ProjectRow.tsx | 50 + src/shared/containers/ProjectRow/index.ts | 1 + .../Projects/CreateProject/CreateProject.tsx | 27 + .../Projects/CreateProject/index.ts | 1 + .../CreateProjectMain/CreateProjectMain.tsx | 74 + .../Projects/CreateProjectMain/index.ts | 1 + .../DownloadProject/DownloadProject.tsx | 43 + .../downloadProject.module.css | 3 + .../DownloadProject/DownloadProject/index.ts | 1 + .../Projects/DownloadProject/index.ts | 1 + .../Projects/EditAddress/EditAddress.tsx | 161 + .../containers/Projects/EditAddress/index.ts | 1 + .../CompanyProjectsModal.ts | 89 + .../Modals/CompanyProjectsModal/index.ts | 1 + .../containers/Projects/Modals/index.ts | 6 + .../PhotoDownloadModal/PhotoDownloadModal.tsx | 72 + .../Projects/PhotoDownloadModal/index.ts | 1 + src/shared/containers/Projects/Projects.tsx | 37 + .../ProjectsSearch/ProjectsSearch.tsx | 30 + .../Projects/ProjectsSearch/index.ts | 1 + .../ProjectsSearch/projectsSearch.module.css | 3 + .../CompletedProjects/CompletedProjects.tsx | 118 + .../ProjectsTabs/CompletedProjects/index.ts | 1 + .../ProjectsTabs/MyProjects/MyProjects.tsx | 115 + .../Projects/ProjectsTabs/MyProjects/index.ts | 1 + .../NoProjectsTable/NoProjectsTable.tsx | 21 + .../ProjectsTabs/NoProjectsTable/index.ts | 1 + .../ProjectsTabs/ProjectTabs/ProjectsTabs.tsx | 30 + .../ProjectsTabs/ProjectTabs/index.ts | 1 + .../ProjectsTabs/WipProjects/WipProjects.tsx | 118 + .../ProjectsTabs/WipProjects/index.ts | 1 + .../containers/Projects/ProjectsTabs/index.ts | 5 + src/shared/containers/Projects/actions.ts | 533 + src/shared/containers/Projects/index.ts | 7 + src/shared/containers/Projects/reducer.ts | 244 + src/shared/containers/Projects/selectors.ts | 75 + src/shared/containers/Public/Album/Album.tsx | 111 + .../containers/Public/Album/albums.module.css | 5 + src/shared/containers/Public/Album/index.ts | 1 + .../containers/Public/Albums/Albums.tsx | 21 + src/shared/containers/Public/Albums/index.ts | 1 + src/shared/containers/Public/Floor/Floor.tsx | 48 + src/shared/containers/Public/Floor/index.ts | 1 + .../containers/Public/Location/Location.tsx | 48 + .../containers/Public/Location/index.ts | 1 + src/shared/containers/Public/Photo/Photo.tsx | 46 + src/shared/containers/Public/Photo/index.ts | 1 + .../Public/PhotoShare/PhotoShare.tsx | 61 + .../PhotoShareCarousel/PhotoShareCarousel.tsx | 94 + .../PhotoShare/PhotoShareCarousel/actions.ts | 51 + .../PhotoShare/PhotoShareCarousel/index.ts | 1 + .../PhotoShareGallery/PhotoShareGallery.tsx | 62 + .../PhotoShare/PhotoShareGallery/index.ts | 1 + .../PhotoShareNoteCard/PhotoShareNoteCard.tsx | 47 + .../PhotoShare/PhotoShareNoteCard/index.ts | 1 + .../PhotoShareSplashView.tsx | 72 + .../PhotoShare/PhotoShareSplashView/index.ts | 1 + .../LocationItem/LocationMenuItem.tsx | 67 + .../PhotoShareWrapper/LocationItem/index.ts | 1 + .../LocationRoomsMenu/LocationRoomsMenu.tsx | 35 + .../LocationRoomsMenu/index.ts | 1 + .../PhotoShareWrapper/PhotoShareWrapper.tsx | 20 + .../RoomSelector/RoomSelector.tsx | 27 + .../PhotoShareWrapper/RoomSelector/index.ts | 1 + .../SideBarFixed/SideBarFixed.tsx | 17 + .../PhotoShareWrapper/SideBarFixed/index.ts | 1 + .../SideBarMenu/SideBarMenu.tsx | 53 + .../PhotoShareWrapper/SideBarMenu/actions.ts | 72 + .../PhotoShareWrapper/SideBarMenu/index.ts | 3 + .../PhotoShareWrapper/SideBarMenu/reducer.ts | 23 + .../PhotoShareWrapper/SideBarMenu/selector.ts | 2 + .../PhotoShare/PhotoShareWrapper/index.ts | 5 + .../containers/Public/PhotoShare/actions.ts | 212 + .../containers/Public/PhotoShare/index.ts | 5 + .../containers/Public/PhotoShare/reducer.ts | 186 + .../containers/Public/PhotoShare/selectors.ts | 13 + src/shared/containers/Public/Room/Room.tsx | 20 + src/shared/containers/Public/Room/index.ts | 1 + src/shared/containers/Public/index.ts | 6 + .../DryingReport/DryingReport.tsx | 120 + .../GenerateReport/DryingReport/index.ts | 1 + .../PhotoReport/PhotoReport.tsx | 129 + .../GenerateReport/PhotoReport/index.ts | 1 + .../Reports/GenerateReport/index.ts | 2 + .../Reports/ReportLocation/ReportLocation.tsx | 30 + .../Reports/ReportLocation/index.ts | 1 + .../ReportLocations/ReportLocations.tsx | 34 + .../Reports/ReportLocations/index.ts | 1 + .../reportLocations.module.css | 4 + .../Reports/Reports/Reports.tsx | 48 + .../Reports/Reports/index.ts | 1 + .../Reports/ReportsTable/ReportsTable.tsx | 255 + .../Reports/ReportsTable/index.ts | 1 + .../ReportsAndDocuments/Reports/actions.ts | 125 + .../ReportsAndDocuments/Reports/index.ts | 6 + .../ReportsAndDocuments/Reports/reducer.ts | 88 + .../ReportsAndDocuments/Reports/selectors.ts | 11 + .../ReportsAndDocuments.tsx | 14 + .../ReportsAndDocuments/index.ts | 1 + .../containers/ReportsAndDocuments/index.ts | 10 + .../EquipmentLogInfoModal.tsx | 19 + .../EquipmentLogInfoModal/index.ts | 1 + .../EquipmentLogRoom/EquipmentLogRoom.tsx | 79 + .../equipmentLogRoom.module.css | 5 + .../EquipmentLog/EquipmentLogRoom/index.ts | 1 + .../TotalEquipment/TotalEquipment.tsx | 56 + .../EquipmentLog/TotalEquipment/index.ts | 1 + .../TotalEquipment/totalEquipment.module.css | 5 + .../RocketDry/EquipmentLog/index.ts | 3 + .../ExternalAtmosphericTable.tsx | 49 + .../externalAtmosphericTable.module.css | 5 + .../ExternalAtmosphericTable/index.ts | 1 + .../MoistureAtmosphericRoom.tsx | 132 + .../MoistureAtmosphericRoom/index.ts | 1 + .../moistureAtmosphericRoom.module.css | 17 + .../MoistureLogs/MoistureLogs.tsx | 139 + .../MoistureAtmospheric/MoistureLogs/index.ts | 1 + .../MoistureLogsTable/MoistureLogsTable.tsx | 20 + .../MoistureLogsTable/index.ts | 1 + .../RocketDry/MoistureAtmospheric/index.ts | 4 + .../RocketDry/RocketDry/RocketDry.tsx | 17 + .../containers/RocketDry/RocketDry/index.ts | 1 + .../RocketDry/RocketDryBody/RocketDryBody.tsx | 35 + .../RocketDry/RocketDryBody/index.ts | 1 + .../RocketDryLocation/RocketDryLocation.tsx | 37 + .../RocketDry/RocketDryLocation/index.ts | 1 + .../RocketDryLocations/RocketDryLocations.tsx | 81 + .../RocketDry/RocketDryLocations/index.ts | 1 + .../rocketDryLocations.module.css | 5 + .../RocketDryRooms/RocketDryRooms.tsx | 93 + .../RocketDry/RocketDryRooms/index.ts | 1 + .../RocketDryRooms/rocketDryRooms.module.css | 5 + src/shared/containers/RocketDry/actions.ts | 251 + src/shared/containers/RocketDry/index.ts | 12 + src/shared/containers/RocketDry/reducer.ts | 29 + src/shared/containers/RocketDry/selectors.ts | 2 + .../CarouselItems/CarouselItems.tsx | 37 + .../RocketScan/CarouselItems/index.ts | 1 + .../RocketScan/Exterior/Exterior/Exterior.tsx | 62 + .../Exterior/Exterior/exterior.module.css | 7 + .../RocketScan/Exterior/Exterior/index.ts | 1 + .../containers/RocketScan/Exterior/index.ts | 1 + .../ActionsCenter/ActionsCenter.tsx | 221 + .../ActionsCenter/ActionsCenter/index.ts | 1 + .../DeletePhotosPreviewModal.tsx | 119 + .../DeletePhotosPreviewModal/index.ts | 1 + .../PhotoShareLink/PhotoShareLink.tsx | 107 + .../PhotoShareLink/index.ts | 1 + .../PhotoSharePreviewModal.tsx | 173 + .../PhotoSharePreviewModal/index.ts | 1 + .../PhotoSharePreviewModal/index.ts | 2 + .../SelectedPhoto/SelectedPhoto.tsx | 25 + .../ActionsCenter/SelectedPhoto/index.ts | 1 + .../SelectedPhotos/SelectedPhotos.tsx | 39 + .../ActionsCenter/SelectedPhotos/index.ts | 1 + .../Header/ActionsCenter/actions.ts | 235 + .../RocketScan/Header/ActionsCenter/index.ts | 5 + .../Header/ActionsCenter/reducer.ts | 137 + .../Header/ActionsCenter/selectors.ts | 20 + .../Header/EditLocation/EditLocation.tsx | 156 + .../RocketScan/Header/EditLocation/index.ts | 1 + .../RocketScan/Header/Header/Header.tsx | 50 + .../RocketScan/Header/Header/index.ts | 1 + .../Header/LocationHeader/LocationHeader.tsx | 27 + .../RocketScan/Header/LocationHeader/index.ts | 1 + .../containers/RocketScan/Header/index.ts | 11 + .../InaccessiblePlaceholderEdit.tsx | 163 + .../InaccessiblePlaceholderEdit/index.ts | 1 + .../CreateExterior/CreateExterior.tsx | 102 + .../MultiUnit/CreateExterior/index.ts | 1 + .../MultiUnit/CreateFloor/CreateFloor.tsx | 135 + .../RocketScan/MultiUnit/CreateFloor/index.ts | 1 + .../MultiUnit/CreateUnit/CreateUnit.tsx | 160 + .../RocketScan/MultiUnit/CreateUnit/index.ts | 1 + .../DeleteLocationModal.tsx | 65 + .../Locations/DeleteLocationModal/index.ts | 1 + .../MultiUnit/Locations/Location/Location.tsx | 67 + .../MultiUnit/Locations/Location/index.ts | 1 + .../LocationNotes/LocationNotes.tsx | 182 + .../LocationNotes/LocationNotes/index.ts | 1 + .../LocationNotes/locationNotes.module.css | 4 + .../Locations/LocationNotes/actions.ts | 78 + .../Locations/LocationNotes/index.ts | 1 + .../Locations/LocationNotes/reducer.ts | 78 + .../Locations/LocationNotes/selectors.ts | 11 + .../Locations/Locations/Locations.tsx | 74 + .../MultiUnit/Locations/Locations/index.ts | 1 + .../RocketScan/MultiUnit/Locations/actions.ts | 612 + .../RocketScan/MultiUnit/Locations/index.ts | 4 + .../RocketScan/MultiUnit/Locations/reducer.ts | 157 + .../MultiUnit/Locations/selectors.ts | 35 + .../MultiUnit/MultiUnit/MultiUnit.tsx | 126 + .../RocketScan/MultiUnit/MultiUnit/index.ts | 1 + .../MultiUnit/MultiUnit/multiUnit.module.css | 3 + .../MultiUnitLocationHeader.tsx | 57 + .../MultiUnitLocationHeader/index.ts | 1 + .../multiUnitLocationHeader.module.css | 20 + .../MultiUnitRooms/MultiUnitRooms.tsx | 82 + .../MultiUnit/MultiUnitRooms/index.ts | 1 + .../MultiUnitRooms/multiUnitRooms.module.css | 3 + .../MultiUnit/RoomTiles/RoomTile/RoomTile.tsx | 176 + .../MultiUnit/RoomTiles/RoomTile/actions.ts | 21 + .../MultiUnit/RoomTiles/RoomTile/index.ts | 1 + .../RoomTileThumbnail/RoomTileThumbnail.tsx | 25 + .../RoomTiles/RoomTileThumbnail/index.ts | 1 + .../roomTileThumbnail.module.css | 34 + .../RoomTiles/RoomTiles/RoomTiles.tsx | 178 + .../MultiUnit/RoomTiles/RoomTiles/index.ts | 1 + .../RocketScan/MultiUnit/RoomTiles/actions.ts | 22 + .../RocketScan/MultiUnit/RoomTiles/index.ts | 3 + .../containers/RocketScan/MultiUnit/index.ts | 8 + .../PhotoView/Carousel/Carousel/Carousel.tsx | 128 + .../PhotoView/Carousel/Carousel/index.ts | 1 + .../RocketScan/PhotoView/Carousel/actions.ts | 89 + .../RocketScan/PhotoView/Carousel/index.ts | 1 + .../RocketScan/PhotoView/Carousel/reducer.ts | 56 + .../PhotoView/Carousel/selectors.ts | 9 + .../PhotoNotes/PhotoNotes/PhotoNotes.tsx | 155 + .../PhotoView/PhotoNotes/PhotoNotes/index.ts | 1 + .../PhotoNotes/photoNotes.module.css | 34 + .../PhotoView/PhotoNotes/actions.ts | 76 + .../RocketScan/PhotoView/PhotoNotes/index.ts | 1 + .../PhotoView/PhotoNotes/reducer.ts | 37 + .../PhotoView/PhotoNotes/selectors.ts | 6 + .../PhotoView/PhotoSettings/PhotoSettings.tsx | 91 + .../PhotoView/PhotoSettings/index.ts | 1 + .../PhotoView/PhotoView/PhotoView.tsx | 59 + .../RocketScan/PhotoView/PhotoView/index.ts | 1 + .../containers/RocketScan/PhotoView/index.ts | 4 + .../ProjectNotes/ProjectNotes.tsx | 215 + .../ProjectNotes/ProjectNotes/index.ts | 1 + .../ProjectNotes/projectNotes.module.css | 6 + .../RocketScan/ProjectNotes/actions.ts | 83 + .../RocketScan/ProjectNotes/index.ts | 1 + .../RocketScan/ProjectNotes/reducer.ts | 72 + .../RocketScan/ProjectNotes/selectors.ts | 10 + .../RocketScan/RocketScan/RocketScan.tsx | 262 + .../containers/RocketScan/RocketScan/index.ts | 1 + .../RocketScan/rocketScan.module.css | 3 + .../RocketScanWrapper/RocketScanWrapper.tsx | 14 + .../RocketScan/RocketScanWrapper/index.ts | 1 + .../rocketScanWrapper.module.css | 0 .../RoomsView/AddExterior/AddExterior.tsx | 164 + .../AddExterior/addExterior.module.css | 15 + .../RocketScan/RoomsView/AddExterior/index.ts | 1 + .../RocketScan/RoomsView/AddRoom/AddRoom.tsx | 239 + .../RoomsView/AddRoom/addRoom.module.css | 16 + .../RocketScan/RoomsView/AddRoom/index.ts | 1 + .../CreateCustomLevel/CreateCustomLevel.tsx | 88 + .../RoomsView/CreateCustomLevel/actions.ts | 94 + .../createCustomLevel.module.css | 8 + .../RoomsView/CreateCustomLevel/index.ts | 1 + .../RoomsView/CreateCustomLevel/reducer.ts | 50 + .../RoomsView/CreateCustomLevel/selectors.ts | 6 + .../CreateCustomRoom/CreateCustomRoom.tsx | 152 + .../createCustomRoom.module.css | 16 + .../CreateCustomRoom/index.ts | 1 + .../RoomsView/CreateCustomRoom/actions.ts | 96 + .../RoomsView/CreateCustomRoom/index.ts | 1 + .../RoomsView/CreateCustomRoom/reducer.ts | 36 + .../RoomsView/CreateCustomRoom/selectors.ts | 6 + .../CreateCustomDamagedMaterial.tsx | 95 + .../createCustomDamagedMaterial.module.css | 8 + .../CreateCustomDamagedMaterial/index.ts | 1 + .../DamageTypeButton/DamageTypeButton.tsx | 44 + .../DamageTypeButton/index.ts | 1 + .../DamagedMaterialList.tsx | 36 + .../DamagedMaterialList/index.ts | 1 + .../DamagedMaterialListItem.tsx | 46 + .../DamagedMaterialListItem/index.ts | 1 + .../DamagedMaterialScope.tsx | 46 + .../DamagedMaterialScope/index.ts | 1 + .../DamagedMaterialToast.tsx | 55 + .../DamagedMaterialToast/index.ts | 1 + .../DamagedMaterials/DamagedMaterials.tsx | 24 + .../DamagedMaterials/index.ts | 1 + .../DamagedMaterialsModal.tsx | 21 + .../DamagedMaterialsModal/index.ts | 1 + .../DamagedType/DamagedType.tsx | 42 + .../DamagedType/damageType.module.css | 26 + .../DamagedMaterialsView/DamagedType/index.ts | 1 + .../DamagedMaterialsView/index.ts | 1 + .../EditCustomDamagedMaterial.tsx | 133 + .../editCustomDamagedMaterial.module.css | 25 + .../EditCustomDamagedMaterial/index.ts | 1 + .../ScopeOfWorkDropdown.tsx | 90 + .../ScopeOfWorkEdit/ScopeOfWorkEdit.tsx | 102 + .../DamagedMaterials/ScopeOfWorkEdit/index.ts | 1 + .../scopeOfWorkEdit.module.css | 26 + .../RoomsView/DamagedMaterials/actions.ts | 135 + .../RoomsView/DamagedMaterials/index.ts | 10 + .../RoomsView/DamagedMaterials/reducer.ts | 50 + .../RoomsView/DamagedMaterials/selectors.ts | 21 + .../DeleteRoomModal/DeleteRoomModal.tsx | 64 + .../RoomsView/DeleteRoomModal/index.ts | 1 + .../EditCustomLevel/EditCustomLevel.tsx | 123 + .../editCustomLevel.module.css | 36 + .../RoomsView/EditCustomLevel/index.ts | 1 + .../RoomsView/EditCustomLevel/selectors.ts | 8 + .../EditCustomRoom/EditCustomRoom.tsx | 94 + .../EditCustomRoom/editCustomRoom.module.css | 20 + .../RoomsView/EditCustomRoom/index.ts | 1 + .../RoomsView/PhotoFilter/PhotoFilter.tsx | 24 + .../RocketScan/RoomsView/PhotoFilter/index.ts | 1 + .../CategoryItem/CategoryItem.tsx | 51 + .../PhotosFilter/CategoryItem/index.ts | 1 + .../CategoryList/CategoryList.tsx | 47 + .../PhotosFilter/CategoryList/index.ts | 1 + .../RoomsView/PhotosFilter/PhotosFilter.tsx | 52 + .../RoomsView/PhotosFilter/index.ts | 3 + .../RoomButtons/RoomButton/RoomButton.tsx | 63 + .../RoomsView/RoomButtons/RoomButton/index.ts | 1 + .../RoomButton/roomButton.module.css | 35 + .../RoomButtons/RoomButtons/RoomButtons.tsx | 38 + .../RoomButtons/RoomButtons/index.ts | 1 + .../RoomsView/RoomButtons/actions.ts | 87 + .../RocketScan/RoomsView/RoomButtons/index.ts | 2 + .../RoomsView/RoomButtons/reducer.ts | 107 + .../RoomsView/RoomButtons/selectors.ts | 8 + .../RoomButtonsContent/RoomButtonsContent.tsx | 50 + .../RoomsView/RoomButtonsContent/index.ts | 1 + .../roomButtonsContent.module.css | 5 + .../RoomContent/Galleries/Galleries.tsx | 38 + .../RoomsView/RoomContent/Galleries/index.ts | 1 + .../Gallery/DropZone/DropZone/DropZone.tsx | 83 + .../Gallery/DropZone/DropZone/index.ts | 1 + .../RoomContent/Gallery/DropZone/actions.ts | 54 + .../RoomContent/Gallery/DropZone/index.ts | 1 + .../RoomContent/Gallery/DropZone/reducer.ts | 25 + .../RoomContent/Gallery/DropZone/selector.ts | 2 + .../RoomContent/Gallery/DropZone/worker.ts | 89 + .../RoomContent/Gallery/Gallery/Gallery.tsx | 206 + .../RoomContent/Gallery/Gallery/index.ts | 1 + .../RoomContent/Gallery/Photo/Photo.tsx | 98 + .../RoomContent/Gallery/Photo/index.ts | 1 + .../RoomsView/RoomContent/Gallery/actions.ts | 47 + .../RoomsView/RoomContent/Gallery/index.ts | 3 + .../RoomsView/RoomContent/Gallery/reducer.ts | 22 + .../RoomContent/Gallery/selectors.ts | 1 + .../LevelSelector/LevelSelector.tsx | 98 + .../LevelSelector/LevelSelector/index.ts | 1 + .../RoomContent/LevelSelector/actions.ts | 41 + .../RoomContent/LevelSelector/index.ts | 3 + .../RoomContent/LevelSelector/reducer.ts | 25 + .../RoomContent/LevelSelector/selectors.ts | 2 + .../RoomContent/RoomContent/RoomContent.tsx | 121 + .../RoomContent/RoomContent/index.ts | 1 + .../RoomContent/roomContent.module.css | 7 + .../RoomContentBody/RoomContentBody.tsx | 155 + .../RoomContent/RoomContentBody/index.ts | 1 + .../RoomContentHeader/RoomContentHeader.tsx | 114 + .../RoomContent/RoomContentHeader/index.ts | 1 + .../roomContentHeader.module.css | 66 + .../RocketScan/RoomsView/RoomContent/index.ts | 4 + .../RoomNotes/RoomNotes/RoomNotes.tsx | 225 + .../RoomsView/RoomNotes/RoomNotes/index.ts | 1 + .../RoomNotes/RoomNotes/roomNotes.module.css | 15 + .../RocketScan/RoomsView/RoomNotes/actions.ts | 49 + .../RocketScan/RoomsView/RoomNotes/index.ts | 1 + .../RocketScan/RoomsView/RoomNotes/reducer.ts | 19 + .../RoomsView/RoomNotes/selectors.ts | 2 + .../RoomsView/RoomTypeItem/RoomTypeItem.tsx | 28 + .../RoomsView/RoomTypeItem/index.ts | 1 + .../RoomsView/Rooms/Rooms/Rooms.tsx | 86 + .../RocketScan/RoomsView/Rooms/Rooms/index.ts | 1 + .../RoomsView/Rooms/Rooms/rooms.module.css | 27 + .../RocketScan/RoomsView/Rooms/actions.ts | 215 + .../RocketScan/RoomsView/Rooms/index.ts | 1 + .../RocketScan/RoomsView/Rooms/reducer.ts | 189 + .../RocketScan/RoomsView/Rooms/selectors.ts | 11 + .../RoomsView/RoomsView/RoomsView.tsx | 44 + .../RocketScan/RoomsView/RoomsView/index.ts | 1 + .../RoomsView/RoomsView/roomsView.module.css | 13 + .../containers/RocketScan/RoomsView/index.ts | 28 + .../SingleLocation/SingleLocation.tsx | 62 + .../SingleLocation/SingleLocation/index.ts | 1 + .../RocketScan/SingleLocation/index.ts | 1 + .../SingleUnit/SingleUnit/SingleUnit.tsx | 62 + .../RocketScan/SingleUnit/SingleUnit/index.ts | 1 + .../SingleUnit/singleUnit.module.css | 7 + .../containers/RocketScan/SingleUnit/index.ts | 1 + src/shared/containers/RocketScan/actions.ts | 735 + .../RocketScan/damageTypeFilters.ts | 13 + src/shared/containers/RocketScan/index.ts | 69 + src/shared/containers/RocketScan/reducer.ts | 311 + src/shared/containers/RocketScan/selectors.ts | 43 + .../containers/RoleDropDown/RoleDropDown.tsx | 79 + src/shared/containers/RoleDropDown/index.ts | 1 + .../containers/RoomButton/RoomButton.tsx | 36 + src/shared/containers/RoomButton/index.ts | 1 + .../RoomButton/roomButton.module.css | 16 + .../containers/RoomGallery/RoomGallery.tsx | 57 + src/shared/containers/RoomGallery/index.ts | 1 + .../RoomGallery/roomGallery.module.css | 3 + .../containers/SignIn/Blocked/Blocked.tsx | 35 + src/shared/containers/SignIn/Blocked/index.ts | 1 + .../ForgotPassword/ForgotPassword.tsx | 100 + .../ForgotPassword/ForgotPassword/actions.ts | 46 + .../ForgotPassword/ForgotPassword/index.ts | 2 + .../ForgotPassword/ForgotPassword/reducer.ts | 25 + .../ForgotPasswordEmailSent.tsx | 56 + .../ForgotPasswordEmailSent/index.ts | 1 + .../ResetPassword/ResetPassword.tsx | 133 + .../ForgotPassword/ResetPassword/actions.ts | 51 + .../ForgotPassword/ResetPassword/index.ts | 2 + .../ForgotPassword/ResetPassword/reducer.ts | 30 + .../ForgotPassword/ResetPassword/selectors.ts | 5 + .../containers/SignIn/ForgotPassword/index.ts | 3 + .../containers/SignIn/NoCompany/NoCompany.tsx | 11 + .../containers/SignIn/NoCompany/index.ts | 1 + .../PhoneVerification/PhoneVerification.tsx | 191 + .../SignIn/PhoneVerification/actions.ts | 14 + .../SignIn/PhoneVerification/index.ts | 3 + .../SignIn/PhoneVerification/reducer.ts | 20 + .../PhoneVerificationCode.tsx | 171 + .../SignIn/PhoneVerificationCode/actions.ts | 12 + .../SignIn/PhoneVerificationCode/index.ts | 3 + .../SignIn/PhoneVerificationCode/reducer.ts | 16 + .../SelectAccountType/SelectAccountType.tsx | 32 + .../SignIn/SelectAccountType/index.ts | 1 + .../SignIn/SignInEmail/SignInEmail.tsx | 120 + .../containers/SignIn/SignInEmail/actions.ts | 49 + .../containers/SignIn/SignInEmail/index.ts | 3 + .../containers/SignIn/SignInEmail/reducer.ts | 19 + .../containers/SignIn/SignInHow/SignInHow.tsx | 119 + .../containers/SignIn/SignInHow/actions.ts | 89 + .../containers/SignIn/SignInHow/index.ts | 2 + .../containers/SignIn/SignInHow/reducer.ts | 48 + .../containers/SignIn/SignInHow/selector.ts | 7 + .../SignIn/SignUpEmail/SignUpEmail.tsx | 129 + .../containers/SignIn/SignUpEmail/index.ts | 1 + .../SignUpUserInformation.tsx | 179 + .../SignIn/SignUpUserInformation/actions.ts | 16 + .../SignIn/SignUpUserInformation/index.ts | 3 + .../SignIn/SignUpUserInformation/reducer.ts | 36 + .../SignIn/WelcomeAboard/WelcomeAboard.tsx | 26 + .../containers/SignIn/WelcomeAboard/index.ts | 1 + src/shared/containers/SignIn/index.ts | 12 + .../SingleUnitAdd/SingleUnitAdd.tsx | 20 + src/shared/containers/SingleUnitAdd/index.ts | 1 + .../SingleUnitAdd/singleUnitAdd.module.css | 9 + .../containers/SourceMarker/SourceMarker.tsx | 35 + src/shared/containers/SourceMarker/index.ts | 1 + .../SplashPageWrapper/SplashPageWrapper.tsx | 15 + .../containers/SplashPageWrapper/index.ts | 1 + .../containers/Table/TableHead/TableHead.tsx | 24 + .../containers/Table/TableHead/index.ts | 1 + .../Table/TableHeadItem/TableHeadItem.tsx | 40 + .../containers/Table/TableHeadItem/index.ts | 1 + src/shared/containers/Table/index.ts | 2 + src/shared/containers/Thumbnail/Thumbnail.tsx | 106 + src/shared/containers/Thumbnail/actions.ts | 47 + src/shared/containers/Thumbnail/index.ts | 2 + src/shared/containers/Thumbnail/reducer.ts | 19 + src/shared/containers/Thumbnail/selector.ts | 1 + .../containers/Thumbnail/thumbnail.module.css | 37 + .../containers/UnitGallery/UnitGallery.tsx | 48 + src/shared/containers/UnitGallery/index.ts | 1 + .../UnitGallery/unitGallery.module.css | 19 + .../UnitSelector/UnitLink/UnitLink.tsx | 21 + .../containers/UnitSelector/UnitSelector.tsx | 84 + .../UnitSelectorRoom/UnitSelectorRoom.tsx | 27 + .../UnitSelector/UnitSelectorRoom/index.ts | 1 + src/shared/containers/UnitSelector/actions.ts | 41 + src/shared/containers/UnitSelector/index.ts | 3 + src/shared/containers/UnitSelector/reducer.ts | 18 + .../containers/UnitSelector/selector.ts | 1 + .../Units/CreateFloor/CreateFloor.tsx | 112 + .../containers/Units/CreateFloor/index.ts | 1 + .../Units/CreateUnit/CreateUnit.tsx | 112 + .../containers/Units/CreateUnit/index.ts | 1 + src/shared/containers/User/About/About.tsx | 16 + src/shared/containers/User/About/index.ts | 1 + .../containers/User/Account/Account.tsx | 76 + .../CompanyInfoCard/CompanyInfoCard.tsx | 69 + .../CompanyProfile/CompanyInfoCard/index.ts | 1 + .../Account/CompanyProfile/CompanyProfile.tsx | 345 + .../User/Account/CompanyProfile/index.ts | 2 + .../CategoryRow/CategoryRow.tsx | 22 + .../PhotoCategories/CategoryRow/index.ts | 1 + .../EditPhotoCategories.tsx | 64 + .../EditPhotoCategories/index.ts | 1 + .../PhotoCategories/PhotoCategories.tsx | 53 + .../PhotoCategories/PhotoCategories/index.ts | 1 + .../User/Account/PhotoCategories/index.ts | 3 + .../Account/UploadAvatar/UploadAvatar.tsx | 135 + .../User/Account/UploadAvatar/index.ts | 1 + .../UserProfile/UserInfoCard/UserInfoCard.tsx | 56 + .../Account/UserProfile/UserInfoCard/index.ts | 1 + .../User/Account/UserProfile/UserProfile.tsx | 188 + .../User/Account/UserProfile/index.ts | 2 + src/shared/containers/User/Account/index.ts | 5 + .../UserCompaniesModel/UserCompaniesModel.ts | 42 + .../User/Models/UserCompaniesModel/index.ts | 1 + .../UserFeatureFlagsModel.tsx | 7 + .../Models/UserFeatureFlagsModel/index.ts | 1 + .../User/Models/UserModel/UserModel.ts | 36 + .../containers/User/Models/UserModel/index.ts | 1 + .../Models/UserPhonesModel/UserPhonesModel.ts | 37 + .../User/Models/UserPhonesModel/index.ts | 1 + src/shared/containers/User/actions.ts | 315 + src/shared/containers/User/index.ts | 14 + src/shared/containers/User/reducer.ts | 132 + src/shared/containers/User/selector.ts | 42 + src/shared/containers/User/worker.ts | 27 + .../context/ClaimsData/ClaimsDataContext.ts | 101 + .../context/ClaimsData/ClaimsDataProvider.tsx | 19 + src/shared/context/ClaimsData/index.ts | 2 + src/shared/context/Core/CoreProvider.tsx | 117 + src/shared/context/Core/index.ts | 1 + .../context/LossData/LossDataContext.ts | 86 + .../context/LossData/LossDataProvider.tsx | 17 + src/shared/context/LossData/index.ts | 2 + .../MoistureAtmosphericContext.ts | 16 + .../MoistureAtmosphericProvider.tsx | 23 + .../context/MoistureAtmospheric/index.ts | 6 + src/shared/context/Notes/NotesContext.ts | 81 + src/shared/context/Notes/NotesProvider.tsx | 32 + src/shared/context/Notes/index.ts | 2 + .../context/PhotoShare/PhotoShareProvider.tsx | 56 + .../LocationsView/LocationsViewContext.tsx | 38 + .../LocationsView/LocationsViewProvider.tsx | 19 + .../context/Project/LocationsView/index.ts | 2 + .../Project/RoomsView/RoomsViewContext.tsx | 30 + .../Project/RoomsView/RoomsViewProvider.tsx | 19 + src/shared/context/Project/RoomsView/index.ts | 2 + .../SingleProject/SingleProjectProvider.tsx | 298 + .../context/Project/SingleProject/index.ts | 1 + src/shared/context/Project/index.ts | 3 + .../context/Projects/ProjectsContext.ts | 34 + .../context/Projects/ProjectsProvider.tsx | 17 + src/shared/context/Projects/index.ts | 2 + .../PropertyData/PropertyDataContext.ts | 45 + .../PropertyData/PropertyDataProvider.tsx | 19 + src/shared/context/PropertyData/index.ts | 2 + .../context/RocketDry/RocketDryContext.ts | 26 + .../context/RocketDry/RocketDryProvider.tsx | 19 + src/shared/context/RocketDry/index.ts | 2 + .../DamagedMaterialsContext.ts | 157 + .../DamagedMaterialsProvider.tsx | 22 + .../RocketScan/DamagedMaterials/index.ts | 6 + .../context/RocketScan/Room/RoomContext.ts | 14 + .../context/RocketScan/Room/RoomProvider.tsx | 17 + src/shared/context/RocketScan/Room/index.ts | 2 + src/shared/context/RocketScan/index.ts | 2 + src/shared/context/User/UserContext.ts | 84 + src/shared/context/User/UserProvider.tsx | 26 + src/shared/context/User/index.ts | 2 + src/shared/hoc/ClickOutsideListener.tsx | 35 + src/shared/hooks/index.ts | 4 + src/shared/hooks/useDebounce/index.ts | 1 + src/shared/hooks/useDebounce/useDebounce.tsx | 5 + src/shared/hooks/useOnScreen/index.ts | 1 + src/shared/hooks/useOnScreen/useOnScreen.tsx | 25 + src/shared/hooks/useProjectEvents/index.ts | 1 + .../useProjectEvents/useProjectEvents.tsx | 45 + src/shared/hooks/useProjectsEvents/index.ts | 1 + .../useProjectsEvents/useProjectsEvents.tsx | 49 + src/shared/hooks/useUserRoleEvents/index.ts | 1 + .../useUserRoleEvents/useUserRoleEvents.tsx | 34 + src/shared/themes/form/form.module.css | 87 + src/shared/themes/toast/coreToast.module.css | 71 + src/shared/utils/api.ts | 80 + src/shared/utils/awsStore.ts | 100 + src/shared/utils/constants.ts | 6 + src/shared/utils/cookies.ts | 3 + src/shared/utils/data.ts | 88 + src/shared/utils/dates.ts | 11 + src/shared/utils/debounce.ts | 3 + src/shared/utils/equalityChecks.ts | 10 + src/shared/utils/google.ts | 26 + src/shared/utils/handleApiRequest.ts | 87 + src/shared/utils/helpers.ts | 276 + src/shared/utils/imageUploading.ts | 54 + src/shared/utils/navItems.ts | 14 + src/shared/utils/numbers.ts | 1 + src/shared/utils/oauth2.ts | 132 + src/shared/utils/regex.ts | 15 + .../utils/rocketDryMaterialWhitelist.ts | 104 + src/shared/utils/roles.ts | 4 + src/shared/utils/screen.ts | 4 + src/shared/utils/table.ts | 179 + src/shared/utils/tabs.ts | 29 + src/shared/utils/types.ts | 246 + src/store/combinedReducers.ts | 116 + src/store/index.ts | 1 + src/store/store.ts | 11 + src/types/css.d.ts | 2 + src/types/fileloader.d.ts | 14 + src/types/maps.d.ts | 4 + src/types/webworker.d.ts | 6 + tsconfig.json | 94 + yarn.lock | 16177 ++++++++++++++++ 2776 files changed, 102795 insertions(+) create mode 100644 .env.development create mode 100644 .eslintignore create mode 100644 .eslintrc.json create mode 100644 .github/workflows/deploy-production.yml create mode 100644 .github/workflows/deploy-qa.yml create mode 100644 .github/workflows/deploy-staging.yml create mode 100644 .gitignore create mode 100644 .husky/.gitignore create mode 100644 .husky/common.sh create mode 100755 .husky/pre-commit create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .prettierrc.json create mode 100644 .storybook/main.js create mode 100644 .storybook/preview-body.html create mode 100644 .storybook/preview-head.html create mode 100644 .storybook/preview.js create mode 100644 .vs/VSWorkspaceState.json create mode 100644 .vs/slnx.sqlite create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 README.md create mode 100644 config/.eslintrc.json create mode 100644 config/envPath.js create mode 100644 config/paths.js create mode 100644 config/webpack.base.js create mode 100644 config/webpack.dev.js create mode 100644 cypress/integration/1-getting-started/auth.spec.js create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 public/_redirects create mode 100644 screenshot_1.png create mode 100644 screenshot_2.png create mode 100644 screenshot_3.png create mode 100644 src/app/App.css create mode 100644 src/app/App.tsx create mode 100644 src/app/index.ts create mode 100644 src/images/favicon.png create mode 100644 src/index.html create mode 100644 src/index.tsx create mode 100644 src/routes/PrivateRoutes.tsx create mode 100644 src/routes/PublicRoutes.tsx create mode 100644 src/routes/RedirectRoute.tsx create mode 100644 src/routes/Routes.tsx create mode 100644 src/routes/index.ts create mode 100644 src/shared/Assets/actions-default.svg create mode 100644 src/shared/Assets/actions-purple.svg create mode 100644 src/shared/Assets/add-button-lg.svg create mode 100644 src/shared/Assets/add-button-sm.svg create mode 100644 src/shared/Assets/addressBuilding.svg create mode 100644 src/shared/Assets/air-mover.svg create mode 100644 src/shared/Assets/air-scrubber.svg create mode 100644 src/shared/Assets/apple.svg create mode 100644 src/shared/Assets/appliances-sm.svg create mode 100644 src/shared/Assets/appliances.svg create mode 100644 src/shared/Assets/arrow-left.svg create mode 100644 src/shared/Assets/asbestos.svg create mode 100644 src/shared/Assets/australiaflag.svg create mode 100644 src/shared/Assets/basement.svg create mode 100644 src/shared/Assets/bathroom.svg create mode 100644 src/shared/Assets/bedroom.svg create mode 100644 src/shared/Assets/bookmark-outline-purple.svg create mode 100644 src/shared/Assets/bookmark-photo.svg create mode 100644 src/shared/Assets/bookmark-purple.svg create mode 100644 src/shared/Assets/bookmark.svg create mode 100644 src/shared/Assets/bookmarked-photo.svg create mode 100644 src/shared/Assets/canadaflag.svg create mode 100644 src/shared/Assets/caret-down.svg create mode 100644 src/shared/Assets/caret-up.svg create mode 100644 src/shared/Assets/carousel-next.svg create mode 100644 src/shared/Assets/carousel-prev.svg create mode 100644 src/shared/Assets/carpentry.svg create mode 100644 src/shared/Assets/ceiling-sm.svg create mode 100644 src/shared/Assets/ceiling.svg create mode 100644 src/shared/Assets/checkbox.svg create mode 100644 src/shared/Assets/checked-mark-purple-bg.svg create mode 100644 src/shared/Assets/checked-mark.svg create mode 100644 src/shared/Assets/chevron-down.svg create mode 100644 src/shared/Assets/chevron-next.svg create mode 100644 src/shared/Assets/chevron-previous.svg create mode 100644 src/shared/Assets/circle-16.svg create mode 100644 src/shared/Assets/circle.svg create mode 100644 src/shared/Assets/cleaning.svg create mode 100644 src/shared/Assets/close-sm.svg create mode 100644 src/shared/Assets/close.svg create mode 100644 src/shared/Assets/closecircle.svg create mode 100644 src/shared/Assets/commercial.svg create mode 100644 src/shared/Assets/company-arrow.svg create mode 100644 src/shared/Assets/confirm-purple.svg create mode 100644 src/shared/Assets/confirm-sm.svg create mode 100644 src/shared/Assets/confirm.svg create mode 100644 src/shared/Assets/copy.svg create mode 100644 src/shared/Assets/crew.svg create mode 100644 src/shared/Assets/cube-plus-lg.svg create mode 100644 src/shared/Assets/cube-plus.svg create mode 100644 src/shared/Assets/cube.svg create mode 100644 src/shared/Assets/custom-damage-add.svg create mode 100644 src/shared/Assets/custom-damage-type.svg create mode 100644 src/shared/Assets/custom-room.svg create mode 100644 src/shared/Assets/dashboard.svg create mode 100644 src/shared/Assets/deck.svg create mode 100644 src/shared/Assets/dehumidifier.svg create mode 100644 src/shared/Assets/den.svg create mode 100644 src/shared/Assets/dining-room.svg create mode 100644 src/shared/Assets/dot.svg create mode 100644 src/shared/Assets/download-purple.svg create mode 100644 src/shared/Assets/download.svg create mode 100644 src/shared/Assets/dropzone-background.svg create mode 100644 src/shared/Assets/drying-mat.svg create mode 100644 src/shared/Assets/eastfacing.svg create mode 100644 src/shared/Assets/edit-lg.svg create mode 100644 src/shared/Assets/edit-md.svg create mode 100644 src/shared/Assets/edit.svg create mode 100644 src/shared/Assets/electrical-32.svg create mode 100644 src/shared/Assets/electrical-room.svg create mode 100644 src/shared/Assets/electrical.svg create mode 100644 src/shared/Assets/elevator.svg create mode 100644 src/shared/Assets/email-new.svg create mode 100644 src/shared/Assets/employee-phone.svg create mode 100644 src/shared/Assets/ensuite.svg create mode 100644 src/shared/Assets/equipment-log.svg create mode 100644 src/shared/Assets/exterior-32.svg create mode 100644 src/shared/Assets/exterior-add.svg create mode 100644 src/shared/Assets/exterior.svg create mode 100644 src/shared/Assets/eye-closed.svg create mode 100644 src/shared/Assets/eye.svg create mode 100644 src/shared/Assets/facebook.svg create mode 100644 src/shared/Assets/filter.svg create mode 100644 src/shared/Assets/fire.svg create mode 100644 src/shared/Assets/flag-outline-purple.svg create mode 100644 src/shared/Assets/flag-photo.svg create mode 100644 src/shared/Assets/flag-purple.svg create mode 100644 src/shared/Assets/flag.svg create mode 100644 src/shared/Assets/flagged-photo.svg create mode 100644 src/shared/Assets/floor-add.svg create mode 100644 src/shared/Assets/floor-sm.svg create mode 100644 src/shared/Assets/floor.svg create mode 100644 src/shared/Assets/flooring-32.svg create mode 100644 src/shared/Assets/flooring.svg create mode 100644 src/shared/Assets/funnel-fill.svg create mode 100644 src/shared/Assets/galleryplaceholder.svg create mode 100644 src/shared/Assets/garage.svg create mode 100644 src/shared/Assets/google.svg create mode 100644 src/shared/Assets/gym.svg create mode 100644 src/shared/Assets/hallway.svg create mode 100644 src/shared/Assets/hamburger-menu.svg create mode 100644 src/shared/Assets/hand.svg create mode 100644 src/shared/Assets/highrise-small.svg create mode 100644 src/shared/Assets/highrise.svg create mode 100644 src/shared/Assets/impact.svg create mode 100644 src/shared/Assets/info.svg create mode 100644 src/shared/Assets/inject-dryer.svg create mode 100644 src/shared/Assets/inspection.svg create mode 100644 src/shared/Assets/kitchen.svg create mode 100644 src/shared/Assets/landscape.svg create mode 100644 src/shared/Assets/laundry.svg create mode 100644 src/shared/Assets/link-open.svg create mode 100644 src/shared/Assets/link.svg create mode 100644 src/shared/Assets/living-room.svg create mode 100644 src/shared/Assets/lobby.svg create mode 100644 src/shared/Assets/logo-horizontal.svg create mode 100644 src/shared/Assets/logo-icon.svg create mode 100644 src/shared/Assets/logo-mobile.svg create mode 100644 src/shared/Assets/logo.png create mode 100644 src/shared/Assets/logo.svg create mode 100644 src/shared/Assets/lunchroom.svg create mode 100644 src/shared/Assets/maintenance-room.svg create mode 100644 src/shared/Assets/meeting-room.svg create mode 100644 src/shared/Assets/misc.svg create mode 100644 src/shared/Assets/mobile-app-icon.svg create mode 100644 src/shared/Assets/modal-close.svg create mode 100644 src/shared/Assets/moisture-log.svg create mode 100644 src/shared/Assets/mold.svg create mode 100644 src/shared/Assets/multiunit-lg.svg create mode 100644 src/shared/Assets/natural.svg create mode 100644 src/shared/Assets/newzealandflag.svg create mode 100644 src/shared/Assets/no-company.svg create mode 100644 src/shared/Assets/northfacing.svg create mode 100644 src/shared/Assets/not-found.svg create mode 100644 src/shared/Assets/office-building.svg create mode 100644 src/shared/Assets/office.svg create mode 100644 src/shared/Assets/patio.svg create mode 100644 src/shared/Assets/people-pink-medium.svg create mode 100644 src/shared/Assets/people-pink-small.svg create mode 100644 src/shared/Assets/people-pink.svg create mode 100644 src/shared/Assets/people.svg create mode 100644 src/shared/Assets/person-purple.svg create mode 100644 src/shared/Assets/person.svg create mode 100644 src/shared/Assets/phone.svg create mode 100644 src/shared/Assets/photo-bookmark.svg create mode 100644 src/shared/Assets/photo-flag.svg create mode 100644 src/shared/Assets/photo-note.svg create mode 100644 src/shared/Assets/photo-share-error.svg create mode 100644 src/shared/Assets/photo-share.svg create mode 100644 src/shared/Assets/pin.svg create mode 100644 src/shared/Assets/pinActive.svg create mode 100644 src/shared/Assets/plaza.svg create mode 100644 src/shared/Assets/plumbing-32.svg create mode 100644 src/shared/Assets/plumbing.svg create mode 100644 src/shared/Assets/plus.svg create mode 100644 src/shared/Assets/pool.svg create mode 100644 src/shared/Assets/private-office.svg create mode 100644 src/shared/Assets/projects.svg create mode 100644 src/shared/Assets/protection.svg create mode 100644 src/shared/Assets/radio.svg create mode 100644 src/shared/Assets/reception.svg create mode 100644 src/shared/Assets/reports-type-compact.svg create mode 100644 src/shared/Assets/reports-type-expanded.svg create mode 100644 src/shared/Assets/reports-type-large.svg create mode 100644 src/shared/Assets/restroom.svg create mode 100644 src/shared/Assets/roof.svg create mode 100644 src/shared/Assets/roofing-32.svg create mode 100644 src/shared/Assets/roofing.svg create mode 100644 src/shared/Assets/search.svg create mode 100644 src/shared/Assets/share-32.svg create mode 100644 src/shared/Assets/share.svg create mode 100644 src/shared/Assets/shop.svg create mode 100644 src/shared/Assets/side-bar-close.svg create mode 100644 src/shared/Assets/side-bar-left-arrow.svg create mode 100644 src/shared/Assets/side-bar-right-arrow.svg create mode 100644 src/shared/Assets/single-home-sm.svg create mode 100644 src/shared/Assets/single-home.svg create mode 100644 src/shared/Assets/smoke.svg create mode 100644 src/shared/Assets/sms-icon.svg create mode 100644 src/shared/Assets/sms.svg create mode 100644 src/shared/Assets/southfacing.svg create mode 100644 src/shared/Assets/square.svg create mode 100644 src/shared/Assets/stairway.svg create mode 100644 src/shared/Assets/storage.svg create mode 100644 src/shared/Assets/structural-32.svg create mode 100644 src/shared/Assets/structural.svg create mode 100644 src/shared/Assets/support.svg create mode 100644 src/shared/Assets/three-dots.svg create mode 100644 src/shared/Assets/trash-md.svg create mode 100644 src/shared/Assets/trash-photo.svg create mode 100644 src/shared/Assets/trash-sm-dark.svg create mode 100644 src/shared/Assets/trash-sm-disabled.svg create mode 100644 src/shared/Assets/trash-sm.svg create mode 100644 src/shared/Assets/trash.svg create mode 100644 src/shared/Assets/unit-add.svg create mode 100644 src/shared/Assets/unit-lg.svg create mode 100644 src/shared/Assets/unit-sm.svg create mode 100644 src/shared/Assets/unit.svg create mode 100644 src/shared/Assets/unitedkingdomflag.svg create mode 100644 src/shared/Assets/unitedstatesflag.svg create mode 100644 src/shared/Assets/utilityroom.svg create mode 100644 src/shared/Assets/walls-32.svg create mode 100644 src/shared/Assets/walls.svg create mode 100644 src/shared/Assets/water.svg create mode 100644 src/shared/Assets/welcome-aboard.svg create mode 100644 src/shared/Assets/westfacing.svg create mode 100644 src/shared/components/Address/CountryAutocomplete/CountryAutocomplete.tsx create mode 100644 src/shared/components/Address/CountryAutocomplete/countryAutocomplete.module.css create mode 100644 src/shared/components/Address/CountryAutocomplete/index.ts create mode 100644 src/shared/components/Address/FieldList/FieldList.tsx create mode 100644 src/shared/components/Address/FieldList/ListItem/ListItem.tsx create mode 100644 src/shared/components/Address/FieldList/ListItem/index.ts create mode 100644 src/shared/components/Address/FieldList/ListItem/listItem.module.css create mode 100644 src/shared/components/Address/FieldList/fieldList.module.css create mode 100644 src/shared/components/Address/FieldList/index.ts create mode 100644 src/shared/components/Address/GoogleAutocomplete/GoogleAutocomplete.tsx create mode 100644 src/shared/components/Address/GoogleAutocomplete/PlacePredictions/Place/Place.tsx create mode 100644 src/shared/components/Address/GoogleAutocomplete/PlacePredictions/Place/index.ts create mode 100644 src/shared/components/Address/GoogleAutocomplete/PlacePredictions/Place/place.module.css create mode 100644 src/shared/components/Address/GoogleAutocomplete/PlacePredictions/PlacePredictions.tsx create mode 100644 src/shared/components/Address/GoogleAutocomplete/PlacePredictions/index.ts create mode 100644 src/shared/components/Address/GoogleAutocomplete/PlacePredictions/placePredictions.module.css create mode 100644 src/shared/components/Address/GoogleAutocomplete/googleAutocomplete.module.css create mode 100644 src/shared/components/Address/GoogleAutocomplete/index.ts create mode 100644 src/shared/components/Address/ProvinceAutocomplete/ProvinceAutocomplete.tsx create mode 100644 src/shared/components/Address/ProvinceAutocomplete/index.ts create mode 100644 src/shared/components/Address/ProvinceAutocomplete/provinceAutocomplete.module.css create mode 100644 src/shared/components/Address/index.ts create mode 100644 src/shared/components/Anchor/Anchor.tsx create mode 100644 src/shared/components/Anchor/EmailAnchor/EmailAnchor.tsx create mode 100644 src/shared/components/Anchor/EmailAnchor/emailAnchor.module.css create mode 100644 src/shared/components/Anchor/EmailAnchor/index.ts create mode 100644 src/shared/components/Anchor/NewTabAnchor/NewTabAnchor.tsx create mode 100644 src/shared/components/Anchor/NewTabAnchor/index.ts create mode 100644 src/shared/components/Anchor/NewTabAnchor/newTabAnchor.module.css create mode 100644 src/shared/components/Anchor/PhoneAnchor/PhoneAnchor.tsx create mode 100644 src/shared/components/Anchor/PhoneAnchor/index.ts create mode 100644 src/shared/components/Anchor/PhoneAnchor/phone.module.css create mode 100644 src/shared/components/Anchor/anchor.module.css create mode 100644 src/shared/components/Anchor/index.ts create mode 100644 src/shared/components/Avatar/Avatar/Avatar.tsx create mode 100644 src/shared/components/Avatar/Avatar/avatar.module.css create mode 100644 src/shared/components/Avatar/Avatar/index.ts create mode 100644 src/shared/components/Avatar/AvatarOrInitials/AvatarOrInitials.tsx create mode 100644 src/shared/components/Avatar/AvatarOrInitials/avatarOrInitials.module.css create mode 100644 src/shared/components/Avatar/AvatarOrInitials/index.ts create mode 100644 src/shared/components/Avatar/index.ts create mode 100644 src/shared/components/Button/Button/Button.tsx create mode 100644 src/shared/components/Button/Button/index.ts create mode 100644 src/shared/components/Button/CancelButton/CancelButton.tsx create mode 100644 src/shared/components/Button/CancelButton/cancelButton.module.css create mode 100644 src/shared/components/Button/CancelButton/index.ts create mode 100644 src/shared/components/Button/CategoryButton/CategoryButton.tsx create mode 100644 src/shared/components/Button/CategoryButton/categoryButton.module.css create mode 100644 src/shared/components/Button/CategoryButton/index.ts create mode 100644 src/shared/components/Button/ClearButton/ClearButton.tsx create mode 100644 src/shared/components/Button/ClearButton/clearButton.module.css create mode 100644 src/shared/components/Button/ClearButton/index.ts create mode 100644 src/shared/components/Button/CloseButton/CloseButton.tsx create mode 100644 src/shared/components/Button/CloseButton/closeButton.module.css create mode 100644 src/shared/components/Button/CloseButton/index.ts create mode 100644 src/shared/components/Button/DarkPurpleButton/DarkPurpleButton.tsx create mode 100644 src/shared/components/Button/DarkPurpleButton/darkPurpleButton.module.css create mode 100644 src/shared/components/Button/DarkPurpleButton/index.ts create mode 100644 src/shared/components/Button/DeleteButton/DeleteButton.tsx create mode 100644 src/shared/components/Button/DeleteButton/deleteButton.module.css create mode 100644 src/shared/components/Button/DeleteButton/index.ts create mode 100644 src/shared/components/Button/EditButton/EditButton.tsx create mode 100644 src/shared/components/Button/EditButton/editButton.module.css create mode 100644 src/shared/components/Button/EditButton/index.ts create mode 100644 src/shared/components/Button/LoadMoreButton/LoadMoreButton.tsx create mode 100644 src/shared/components/Button/LoadMoreButton/index.ts create mode 100644 src/shared/components/Button/LoadMoreButton/loadMoreButton.module.css create mode 100644 src/shared/components/Button/OutlineButton/OutlineButton.tsx create mode 100644 src/shared/components/Button/OutlineButton/index.ts create mode 100644 src/shared/components/Button/OutlineButton/outlineButton.module.css create mode 100644 src/shared/components/Button/ProjectScreenButton/ProjectScreenButton.tsx create mode 100644 src/shared/components/Button/ProjectScreenButton/index.ts create mode 100644 src/shared/components/Button/ProjectScreenButton/projectScreenButton.module.css create mode 100644 src/shared/components/Button/PurpleButton/PurpleButton.tsx create mode 100644 src/shared/components/Button/PurpleButton/index.ts create mode 100644 src/shared/components/Button/PurpleButton/purpleButton.module.css create mode 100644 src/shared/components/Button/RadioButton/RadioButton.tsx create mode 100644 src/shared/components/Button/RadioButton/index.ts create mode 100644 src/shared/components/Button/RadioButton/radioButton.module.css create mode 100644 src/shared/components/Button/RoomButton/RoomButton.tsx create mode 100644 src/shared/components/Button/RoomButton/index.ts create mode 100644 src/shared/components/Button/RoomButton/roomButton.module.css create mode 100644 src/shared/components/Button/TileButton/TileButton.tsx create mode 100644 src/shared/components/Button/TileButton/index.ts create mode 100644 src/shared/components/Button/TileButton/tileButton.module.css create mode 100644 src/shared/components/Button/index.ts create mode 100644 src/shared/components/CheckBox/CheckBox.tsx create mode 100644 src/shared/components/CheckBox/index.ts create mode 100644 src/shared/components/CompanyHeader/CompanyHeader.tsx create mode 100644 src/shared/components/CompanyHeader/index.ts create mode 100644 src/shared/components/Crew/Crew/Crew.tsx create mode 100644 src/shared/components/Crew/Crew/crew.module.css create mode 100644 src/shared/components/Crew/Crew/index.ts create mode 100644 src/shared/components/Crew/CrewPlaceholder/CrewPlaceholder.tsx create mode 100644 src/shared/components/Crew/CrewPlaceholder/crewPlaceholder.module.css create mode 100644 src/shared/components/Crew/CrewPlaceholder/index.ts create mode 100644 src/shared/components/Crew/CrewWrapper/CrewWrapper.tsx create mode 100644 src/shared/components/Crew/CrewWrapper/crewWrapper.module.css create mode 100644 src/shared/components/Crew/CrewWrapper/index.ts create mode 100644 src/shared/components/Crew/EmployeeDirectory/EmployeeDirectory.tsx create mode 100644 src/shared/components/Crew/EmployeeDirectory/employeeDirectory.module.css create mode 100644 src/shared/components/Crew/EmployeeDirectory/index.ts create mode 100644 src/shared/components/Crew/EmployeeRow/EmployeeRow.tsx create mode 100644 src/shared/components/Crew/EmployeeRow/employeeRow.module.css create mode 100644 src/shared/components/Crew/EmployeeRow/index.ts create mode 100644 src/shared/components/Crew/EmployeesEmptyPlaceholder/EmployeesEmptyPlaceholder.tsx create mode 100644 src/shared/components/Crew/EmployeesEmptyPlaceholder/employeesEmptyPlaceholder.module.css create mode 100644 src/shared/components/Crew/EmployeesEmptyPlaceholder/index.ts create mode 100644 src/shared/components/Crew/RemoveMemberModal/RemoveMemberModal.tsx create mode 100644 src/shared/components/Crew/RemoveMemberModal/index.ts create mode 100644 src/shared/components/Crew/RemoveMemberModal/removeMemberModal.module.css create mode 100644 src/shared/components/Crew/index.ts create mode 100644 src/shared/components/Dashboard/CreateProjectButton/CreateProjectButton.tsx create mode 100644 src/shared/components/Dashboard/CreateProjectButton/index.ts create mode 100644 src/shared/components/Dashboard/Dashboard.tsx create mode 100644 src/shared/components/Dashboard/DashboardGoogleMap/DashboardGoogleMap.tsx create mode 100644 src/shared/components/Dashboard/DashboardGoogleMap/dashboardGoogleMap.module.css create mode 100644 src/shared/components/Dashboard/ProjectRow/ProjectRow.tsx create mode 100644 src/shared/components/Dashboard/ProjectRow/index.ts create mode 100644 src/shared/components/Dashboard/ProjectRow/projectRow.module.css create mode 100644 src/shared/components/Dashboard/ProjectSelection/ProjectSelection.tsx create mode 100644 src/shared/components/Dashboard/ProjectSelection/index.ts create mode 100644 src/shared/components/Dashboard/ProjectSelection/projectSelection.module.css create mode 100644 src/shared/components/Dashboard/RecentlyAccessed/RecentlyAccessed.tsx create mode 100644 src/shared/components/Dashboard/RecentlyAccessed/index.ts create mode 100644 src/shared/components/Dashboard/RecentlyAccessed/recentlyAccessed.module.css create mode 100644 src/shared/components/Dashboard/index.ts create mode 100644 src/shared/components/DropDown/DropDown.tsx create mode 100644 src/shared/components/DropDown/DropDownItem/DropDownItem.tsx create mode 100644 src/shared/components/DropDown/DropDownItem/dropDownItem.module.css create mode 100644 src/shared/components/DropDown/DropDownItem/index.ts create mode 100644 src/shared/components/DropDown/MiniDropdownItem/MiniDropdownItem.tsx create mode 100644 src/shared/components/DropDown/MiniDropdownItem/index.ts create mode 100644 src/shared/components/DropDown/MiniDropdownItem/miniDropdownItem.module.css create mode 100644 src/shared/components/DropDown/MiniOptionsDropdown/MiniOptionsDropdown.tsx create mode 100644 src/shared/components/DropDown/MiniOptionsDropdown/index.ts create mode 100644 src/shared/components/DropDown/MiniOptionsDropdown/miniOptionsDropdown.module.css create mode 100644 src/shared/components/DropDown/dropDown.module.css create mode 100644 src/shared/components/DropDown/dropdownSizes.ts create mode 100644 src/shared/components/DropDown/index.ts create mode 100644 src/shared/components/DropZone/DropZone.tsx create mode 100644 src/shared/components/DropZone/dropzone.module.css create mode 100644 src/shared/components/DropZone/index.ts create mode 100644 src/shared/components/ErrorMessages/ErrorMessages.tsx create mode 100644 src/shared/components/ErrorMessages/errorMessages.module.css create mode 100644 src/shared/components/ErrorMessages/index.ts create mode 100644 src/shared/components/FloorDropDown/FloorDropDown.tsx create mode 100644 src/shared/components/FloorDropDown/floorDropDown.module.css create mode 100644 src/shared/components/FloorDropDown/index.tsx create mode 100644 src/shared/components/Form/Form.tsx create mode 100644 src/shared/components/Form/form.module.css create mode 100644 src/shared/components/Form/index.ts create mode 100644 src/shared/components/GoogleMap/GoogleMap.tsx create mode 100644 src/shared/components/GoogleMap/MapStyle.tsx create mode 100644 src/shared/components/GoogleMap/googleMap.module.css create mode 100644 src/shared/components/GoogleMap/index.ts create mode 100644 src/shared/components/HubSpotModal/HubSpotModal.tsx create mode 100644 src/shared/components/HubSpotModal/hubSpotModal.module.css create mode 100644 src/shared/components/HubSpotModal/index.ts create mode 100644 src/shared/components/Icons/ActionsDefault/ActionsDefault.tsx create mode 100644 src/shared/components/Icons/ActionsDefault/actionsDefault.module.css create mode 100644 src/shared/components/Icons/ActionsDefault/index.ts create mode 100644 src/shared/components/Icons/ActionsPurple/ActionsPurple.tsx create mode 100644 src/shared/components/Icons/ActionsPurple/actionsPurple.module.css create mode 100644 src/shared/components/Icons/ActionsPurple/index.ts create mode 100644 src/shared/components/Icons/AddButton/AddButton.tsx create mode 100644 src/shared/components/Icons/AddButton/addButton.module.css create mode 100644 src/shared/components/Icons/AddButton/index.ts create mode 100644 src/shared/components/Icons/AddressBuilding/AddressBuilding.tsx create mode 100644 src/shared/components/Icons/AddressBuilding/addressBuilding.module.css create mode 100644 src/shared/components/Icons/AddressBuilding/index.ts create mode 100644 src/shared/components/Icons/AirMover/AirMover.tsx create mode 100644 src/shared/components/Icons/AirMover/airMover.module.css create mode 100644 src/shared/components/Icons/AirMover/index.ts create mode 100644 src/shared/components/Icons/AirScrubber/AirScrubber.tsx create mode 100644 src/shared/components/Icons/AirScrubber/airScrubber.module.css create mode 100644 src/shared/components/Icons/AirScrubber/index.ts create mode 100644 src/shared/components/Icons/Apple/Apple.tsx create mode 100644 src/shared/components/Icons/Apple/apple.module.css create mode 100644 src/shared/components/Icons/Apple/index.ts create mode 100644 src/shared/components/Icons/ArrowLeft/ArrowLeft.tsx create mode 100644 src/shared/components/Icons/ArrowLeft/arrowLeft.module.css create mode 100644 src/shared/components/Icons/ArrowLeft/index.ts create mode 100644 src/shared/components/Icons/BathRoom/BathRoom.tsx create mode 100644 src/shared/components/Icons/BathRoom/bathRoom.module.css create mode 100644 src/shared/components/Icons/BathRoom/index.ts create mode 100644 src/shared/components/Icons/BedRoom/BedRoom.tsx create mode 100644 src/shared/components/Icons/BedRoom/bedRoom.module.css create mode 100644 src/shared/components/Icons/BedRoom/index.ts create mode 100644 src/shared/components/Icons/Bookmark/Bookmark.tsx create mode 100644 src/shared/components/Icons/Bookmark/bookmark.module.css create mode 100644 src/shared/components/Icons/Bookmark/index.ts create mode 100644 src/shared/components/Icons/CaretDown/CaretDown.tsx create mode 100644 src/shared/components/Icons/CaretDown/caretDown.module.css create mode 100644 src/shared/components/Icons/CaretDown/index.ts create mode 100644 src/shared/components/Icons/CaretUp/CaretUp.tsx create mode 100644 src/shared/components/Icons/CaretUp/caretUp.module.css create mode 100644 src/shared/components/Icons/CaretUp/index.ts create mode 100644 src/shared/components/Icons/CarouselController/CarouselController.tsx create mode 100644 src/shared/components/Icons/CarouselController/carouselController.module.css create mode 100644 src/shared/components/Icons/CarouselController/index.ts create mode 100644 src/shared/components/Icons/Checkbox/Checkbox.tsx create mode 100644 src/shared/components/Icons/Checkbox/checkBox.module.css create mode 100644 src/shared/components/Icons/Checkbox/index.ts create mode 100644 src/shared/components/Icons/CheckedMark/CheckedMark.tsx create mode 100644 src/shared/components/Icons/CheckedMark/checkedMark.module.css create mode 100644 src/shared/components/Icons/CheckedMark/index.ts create mode 100644 src/shared/components/Icons/ChevronIcons/ChevronIcons.tsx create mode 100644 src/shared/components/Icons/ChevronIcons/chevronIcons.module.css create mode 100644 src/shared/components/Icons/ChevronIcons/index.ts create mode 100644 src/shared/components/Icons/Circle/Circle.tsx create mode 100644 src/shared/components/Icons/Circle/index.ts create mode 100644 src/shared/components/Icons/Close/Close.tsx create mode 100644 src/shared/components/Icons/Close/close.module.css create mode 100644 src/shared/components/Icons/Close/index.ts create mode 100644 src/shared/components/Icons/CloseCircle/CloseCircle.tsx create mode 100644 src/shared/components/Icons/CloseCircle/closeCircle.module.css create mode 100644 src/shared/components/Icons/CloseCircle/index.ts create mode 100644 src/shared/components/Icons/Commercial/Commercial.tsx create mode 100644 src/shared/components/Icons/Commercial/commercial.module.css create mode 100644 src/shared/components/Icons/Commercial/index.ts create mode 100644 src/shared/components/Icons/CompanyArrow/CompanyArrow.tsx create mode 100644 src/shared/components/Icons/CompanyArrow/companyArrow.module.css create mode 100644 src/shared/components/Icons/CompanyArrow/index.ts create mode 100644 src/shared/components/Icons/ConfirmChecked/ConfirmChecked.tsx create mode 100644 src/shared/components/Icons/ConfirmChecked/confirmChecked.module.css create mode 100644 src/shared/components/Icons/ConfirmChecked/index.ts create mode 100644 src/shared/components/Icons/Copy/Copy.tsx create mode 100644 src/shared/components/Icons/Copy/copy.module.css create mode 100644 src/shared/components/Icons/Copy/index.ts create mode 100644 src/shared/components/Icons/CountryFlag/CountryFlag.tsx create mode 100644 src/shared/components/Icons/CountryFlag/countryFlag.module.css create mode 100644 src/shared/components/Icons/CountryFlag/index.ts create mode 100644 src/shared/components/Icons/Crew/Crew.tsx create mode 100644 src/shared/components/Icons/Crew/crew.module.css create mode 100644 src/shared/components/Icons/Crew/index.ts create mode 100644 src/shared/components/Icons/Cube/Cube.tsx create mode 100644 src/shared/components/Icons/Cube/cube.module.css create mode 100644 src/shared/components/Icons/Cube/index.ts create mode 100644 src/shared/components/Icons/CubePlus/CubePlus.tsx create mode 100644 src/shared/components/Icons/CubePlus/cubePlus.module.css create mode 100644 src/shared/components/Icons/CubePlus/index.ts create mode 100644 src/shared/components/Icons/CubePlusLarge/CubePlusLarge.tsx create mode 100644 src/shared/components/Icons/CubePlusLarge/cubePlusLg.module.css create mode 100644 src/shared/components/Icons/CubePlusLarge/index.ts create mode 100644 src/shared/components/Icons/CustomRoom/CustomRoom.tsx create mode 100644 src/shared/components/Icons/CustomRoom/customRoom.module.css create mode 100644 src/shared/components/Icons/CustomRoom/index.ts create mode 100644 src/shared/components/Icons/DamageIcon/DamageIcon.tsx create mode 100644 src/shared/components/Icons/DamageIcon/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/AddCustom/AddCustom.tsx create mode 100644 src/shared/components/Icons/DamageTypes/AddCustom/addCustom.module.css create mode 100644 src/shared/components/Icons/DamageTypes/AddCustom/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Appliances/Appliances.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Appliances/appliances.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Appliances/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Asbestos/Asbestos.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Asbestos/asbestos.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Asbestos/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Carpentry/Carpentry.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Carpentry/carpentry.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Carpentry/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Ceiling/Ceiling.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Ceiling/ceiling.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Ceiling/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Cleaning/Cleaning.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Cleaning/cleaning.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Cleaning/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Custom/Custom.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Custom/custom.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Custom/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Electrical/Electrical.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Electrical/electrical.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Electrical/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/ExteriorDamage/ExteriorDamage.tsx create mode 100644 src/shared/components/Icons/DamageTypes/ExteriorDamage/exteriorDamage.module.css create mode 100644 src/shared/components/Icons/DamageTypes/ExteriorDamage/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Fire/Fire.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Fire/fire.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Fire/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Flooring/Flooring.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Flooring/flooring.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Flooring/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Impact/Impact.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Impact/impact.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Impact/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Inspection/Inspection.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Inspection/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Inspection/inspection.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Misc/Misc.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Misc/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Misc/misc.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Mold/Mold.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Mold/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Mold/mold.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Natural/Natural.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Natural/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Natural/natural.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Plumbing/Plumbing.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Plumbing/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Plumbing/plumbing.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Protection/Protection.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Protection/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Protection/protection.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Roofing/Roofing.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Roofing/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Roofing/roofing.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Smoke/Smoke.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Smoke/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Smoke/smoke.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Structural/Structural.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Structural/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Structural/structural.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Walls/Walls.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Walls/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Walls/walls.module.css create mode 100644 src/shared/components/Icons/DamageTypes/Water/Water.tsx create mode 100644 src/shared/components/Icons/DamageTypes/Water/index.ts create mode 100644 src/shared/components/Icons/DamageTypes/Water/water.module.css create mode 100644 src/shared/components/Icons/DamageTypes/index.ts create mode 100644 src/shared/components/Icons/Dashboard/Dashboard.tsx create mode 100644 src/shared/components/Icons/Dashboard/dashboard.module.css create mode 100644 src/shared/components/Icons/Dashboard/index.ts create mode 100644 src/shared/components/Icons/Dehumidifier/Dehumidifier.tsx create mode 100644 src/shared/components/Icons/Dehumidifier/dehumidifier.module.css create mode 100644 src/shared/components/Icons/Dehumidifier/index.ts create mode 100644 src/shared/components/Icons/Den/Den.tsx create mode 100644 src/shared/components/Icons/Den/den.module.css create mode 100644 src/shared/components/Icons/Den/index.ts create mode 100644 src/shared/components/Icons/DiningRoom/DiningRoom.tsx create mode 100644 src/shared/components/Icons/DiningRoom/diningRoom.module.css create mode 100644 src/shared/components/Icons/DiningRoom/index.ts create mode 100644 src/shared/components/Icons/Dot/Dot.tsx create mode 100644 src/shared/components/Icons/Dot/index.ts create mode 100644 src/shared/components/Icons/Download/Download.tsx create mode 100644 src/shared/components/Icons/Download/download.module.css create mode 100644 src/shared/components/Icons/Download/index.ts create mode 100644 src/shared/components/Icons/DropdownArrow/DropdownArrow.tsx create mode 100644 src/shared/components/Icons/DropdownArrow/dropdownArrow.module.css create mode 100644 src/shared/components/Icons/DropdownArrow/index.ts create mode 100644 src/shared/components/Icons/DropzoneBackground/DropzoneBackground.tsx create mode 100644 src/shared/components/Icons/DropzoneBackground/dropzonebackground.module.css create mode 100644 src/shared/components/Icons/DropzoneBackground/index.ts create mode 100644 src/shared/components/Icons/DryingMat/DryingMat.tsx create mode 100644 src/shared/components/Icons/DryingMat/dryingMat.module.css create mode 100644 src/shared/components/Icons/DryingMat/index.ts create mode 100644 src/shared/components/Icons/Edit/Edit.tsx create mode 100644 src/shared/components/Icons/Edit/edit.module.css create mode 100644 src/shared/components/Icons/Edit/index.ts create mode 100644 src/shared/components/Icons/ElectricalRoom/ElectricalRoom.tsx create mode 100644 src/shared/components/Icons/ElectricalRoom/electricalRoom.module.css create mode 100644 src/shared/components/Icons/ElectricalRoom/index.ts create mode 100644 src/shared/components/Icons/Elevator/Elevator.tsx create mode 100644 src/shared/components/Icons/Elevator/elevator.module.css create mode 100644 src/shared/components/Icons/Elevator/index.ts create mode 100644 src/shared/components/Icons/Email/Email.tsx create mode 100644 src/shared/components/Icons/Email/email.module.css create mode 100644 src/shared/components/Icons/Email/index.ts create mode 100644 src/shared/components/Icons/EmployeePhone/EmployeePhone.tsx create mode 100644 src/shared/components/Icons/EmployeePhone/employeePhone.module.css create mode 100644 src/shared/components/Icons/EmployeePhone/index.ts create mode 100644 src/shared/components/Icons/Ensuite/Ensuite.tsx create mode 100644 src/shared/components/Icons/Ensuite/ensuite.module.css create mode 100644 src/shared/components/Icons/Ensuite/index.ts create mode 100644 src/shared/components/Icons/Equipment/Equipment.tsx create mode 100644 src/shared/components/Icons/Equipment/equipment.module.css create mode 100644 src/shared/components/Icons/Equipment/index.ts create mode 100644 src/shared/components/Icons/Exterior/Exterior.tsx create mode 100644 src/shared/components/Icons/Exterior/exterior.module.css create mode 100644 src/shared/components/Icons/Exterior/index.ts create mode 100644 src/shared/components/Icons/Eye/Eye.tsx create mode 100644 src/shared/components/Icons/Eye/eye.module.css create mode 100644 src/shared/components/Icons/Eye/index.ts create mode 100644 src/shared/components/Icons/EyeClosed/EyeClosed.tsx create mode 100644 src/shared/components/Icons/EyeClosed/eyeClosed.module.css create mode 100644 src/shared/components/Icons/EyeClosed/index.ts create mode 100644 src/shared/components/Icons/Facebook/Facebook.tsx create mode 100644 src/shared/components/Icons/Facebook/facebook.module.css create mode 100644 src/shared/components/Icons/Facebook/index.ts create mode 100644 src/shared/components/Icons/Filter/Filter.tsx create mode 100644 src/shared/components/Icons/Filter/filter.module.css create mode 100644 src/shared/components/Icons/Filter/index.ts create mode 100644 src/shared/components/Icons/Flag/Flag.tsx create mode 100644 src/shared/components/Icons/Flag/flag.module.css create mode 100644 src/shared/components/Icons/Flag/index.ts create mode 100644 src/shared/components/Icons/Floor/Floor.tsx create mode 100644 src/shared/components/Icons/Floor/floor.module.css create mode 100644 src/shared/components/Icons/Floor/index.ts create mode 100644 src/shared/components/Icons/Funnel/Funnel.tsx create mode 100644 src/shared/components/Icons/Funnel/funnel.module.css create mode 100644 src/shared/components/Icons/Funnel/index.ts create mode 100644 src/shared/components/Icons/GalleryPlaceholder/GalleryPlaceholder.tsx create mode 100644 src/shared/components/Icons/GalleryPlaceholder/index.ts create mode 100644 src/shared/components/Icons/Google/Google.tsx create mode 100644 src/shared/components/Icons/Google/google.module.css create mode 100644 src/shared/components/Icons/Google/index.ts create mode 100644 src/shared/components/Icons/Gym/Gym.tsx create mode 100644 src/shared/components/Icons/Gym/gym.module.css create mode 100644 src/shared/components/Icons/Gym/index.ts create mode 100644 src/shared/components/Icons/Hallway/Hallway.tsx create mode 100644 src/shared/components/Icons/Hallway/hallway.module.css create mode 100644 src/shared/components/Icons/Hallway/index.ts create mode 100644 src/shared/components/Icons/HamburgerMenu/HamburgerMenu.tsx create mode 100644 src/shared/components/Icons/HamburgerMenu/hamburgerMenu.module.css create mode 100644 src/shared/components/Icons/HamburgerMenu/index.ts create mode 100644 src/shared/components/Icons/Hand/Hand.tsx create mode 100644 src/shared/components/Icons/Hand/hand.module.css create mode 100644 src/shared/components/Icons/Hand/index.ts create mode 100644 src/shared/components/Icons/Highrise/Highrise.tsx create mode 100644 src/shared/components/Icons/Highrise/highrise.module.css create mode 100644 src/shared/components/Icons/Highrise/index.ts create mode 100644 src/shared/components/Icons/Icon.tsx create mode 100644 src/shared/components/Icons/Info/Info.tsx create mode 100644 src/shared/components/Icons/Info/index.ts create mode 100644 src/shared/components/Icons/Info/info.module.css create mode 100644 src/shared/components/Icons/InjectDryer/InjectDryer.tsx create mode 100644 src/shared/components/Icons/InjectDryer/index.ts create mode 100644 src/shared/components/Icons/InjectDryer/injectDryer.module.css create mode 100644 src/shared/components/Icons/Kitchen/Kitchen.tsx create mode 100644 src/shared/components/Icons/Kitchen/index.ts create mode 100644 src/shared/components/Icons/Kitchen/kitchen.module.css create mode 100644 src/shared/components/Icons/LandScape/LandScape.tsx create mode 100644 src/shared/components/Icons/LandScape/index.ts create mode 100644 src/shared/components/Icons/LandScape/landscape.module.css create mode 100644 src/shared/components/Icons/Laundry/Laundry.tsx create mode 100644 src/shared/components/Icons/Laundry/index.ts create mode 100644 src/shared/components/Icons/Laundry/laundry.module.css create mode 100644 src/shared/components/Icons/Link/Link.tsx create mode 100644 src/shared/components/Icons/Link/index.ts create mode 100644 src/shared/components/Icons/LinkOpen/LinkOpen.tsx create mode 100644 src/shared/components/Icons/LinkOpen/index.ts create mode 100644 src/shared/components/Icons/LinkOpen/linkOpen.module.css create mode 100644 src/shared/components/Icons/LivingRoom/LivingRoom.tsx create mode 100644 src/shared/components/Icons/LivingRoom/index.ts create mode 100644 src/shared/components/Icons/LivingRoom/livingRoom.module.css create mode 100644 src/shared/components/Icons/Lobby/Lobby.tsx create mode 100644 src/shared/components/Icons/Lobby/index.ts create mode 100644 src/shared/components/Icons/Lobby/lobby.module.css create mode 100644 src/shared/components/Icons/Logo/Logo.tsx create mode 100644 src/shared/components/Icons/Logo/index.ts create mode 100644 src/shared/components/Icons/Logo/logo.module.css create mode 100644 src/shared/components/Icons/LogoIcon/LogoIcon.tsx create mode 100644 src/shared/components/Icons/LogoIcon/index.ts create mode 100644 src/shared/components/Icons/LogoIcon/logoIcon.module.css create mode 100644 src/shared/components/Icons/LogoMobile/LogoMobile.tsx create mode 100644 src/shared/components/Icons/LogoMobile/index.ts create mode 100644 src/shared/components/Icons/LogoMobile/logoMobile.module.css create mode 100644 src/shared/components/Icons/LunchRoom/LunchRoom.tsx create mode 100644 src/shared/components/Icons/LunchRoom/index.ts create mode 100644 src/shared/components/Icons/LunchRoom/lunchRoom.module.css create mode 100644 src/shared/components/Icons/MaintenanceRoom/MaintenanceRoom.tsx create mode 100644 src/shared/components/Icons/MaintenanceRoom/index.ts create mode 100644 src/shared/components/Icons/MaintenanceRoom/maintenanceRoom.module.css create mode 100644 src/shared/components/Icons/MeetingRoom/MeetingRoom.tsx create mode 100644 src/shared/components/Icons/MeetingRoom/index.ts create mode 100644 src/shared/components/Icons/MeetingRoom/meetingRoom.module.css create mode 100644 src/shared/components/Icons/MobileApp/MobileApp.tsx create mode 100644 src/shared/components/Icons/MobileApp/index.ts create mode 100644 src/shared/components/Icons/ModalClose/ModalClose.tsx create mode 100644 src/shared/components/Icons/ModalClose/index.ts create mode 100644 src/shared/components/Icons/ModalClose/modalClose.module.css create mode 100644 src/shared/components/Icons/Moisture/Moisture.tsx create mode 100644 src/shared/components/Icons/Moisture/index.ts create mode 100644 src/shared/components/Icons/Moisture/moisture.module.css create mode 100644 src/shared/components/Icons/MultiUnit/MultiUnit.tsx create mode 100644 src/shared/components/Icons/MultiUnit/index.ts create mode 100644 src/shared/components/Icons/MultiUnit/multiunit.module.css create mode 100644 src/shared/components/Icons/NoCompany/NoCompany.tsx create mode 100644 src/shared/components/Icons/NoCompany/index.ts create mode 100644 src/shared/components/Icons/NotFound/NotFound.tsx create mode 100644 src/shared/components/Icons/NotFound/index.ts create mode 100644 src/shared/components/Icons/Office/Office.tsx create mode 100644 src/shared/components/Icons/Office/index.ts create mode 100644 src/shared/components/Icons/Office/office.module.css create mode 100644 src/shared/components/Icons/OfficeBuilding/OfficeBuilding.tsx create mode 100644 src/shared/components/Icons/OfficeBuilding/index.ts create mode 100644 src/shared/components/Icons/OfficeBuilding/officeBuilding.module.css create mode 100644 src/shared/components/Icons/People/People.tsx create mode 100644 src/shared/components/Icons/People/PeoplePink/PeoplePink.tsx create mode 100644 src/shared/components/Icons/People/PeoplePink/index.ts create mode 100644 src/shared/components/Icons/People/PeoplePink/peoplePink.module.css create mode 100644 src/shared/components/Icons/People/index.ts create mode 100644 src/shared/components/Icons/People/people.module.css create mode 100644 src/shared/components/Icons/Person/Person.tsx create mode 100644 src/shared/components/Icons/Person/index.ts create mode 100644 src/shared/components/Icons/Person/person.module.css create mode 100644 src/shared/components/Icons/Phone/Phone.tsx create mode 100644 src/shared/components/Icons/Phone/index.ts create mode 100644 src/shared/components/Icons/Phone/phone.module.css create mode 100644 src/shared/components/Icons/PhotoBookmark/PhotoBookmark.tsx create mode 100644 src/shared/components/Icons/PhotoBookmark/index.ts create mode 100644 src/shared/components/Icons/PhotoBookmark/photoBookmark.module.css create mode 100644 src/shared/components/Icons/PhotoFlag/PhotoFlag.tsx create mode 100644 src/shared/components/Icons/PhotoFlag/index.ts create mode 100644 src/shared/components/Icons/PhotoFlag/photoFlag.module.css create mode 100644 src/shared/components/Icons/PhotoNote/PhotoNote.tsx create mode 100644 src/shared/components/Icons/PhotoNote/index.ts create mode 100644 src/shared/components/Icons/PhotoNote/photoNote.module.css create mode 100644 src/shared/components/Icons/PhotoShare/PhotoShare.tsx create mode 100644 src/shared/components/Icons/PhotoShare/index.ts create mode 100644 src/shared/components/Icons/Pin/Pin.tsx create mode 100644 src/shared/components/Icons/Pin/index.ts create mode 100644 src/shared/components/Icons/Pin/pin.module.css create mode 100644 src/shared/components/Icons/PinActive/PinActive.tsx create mode 100644 src/shared/components/Icons/PinActive/index.ts create mode 100644 src/shared/components/Icons/PinActive/pinActive.module.css create mode 100644 src/shared/components/Icons/Plus/Plus.tsx create mode 100644 src/shared/components/Icons/Plus/index.ts create mode 100644 src/shared/components/Icons/Plus/plus.module.css create mode 100644 src/shared/components/Icons/PrivateOffice/PrivateOffice.tsx create mode 100644 src/shared/components/Icons/PrivateOffice/index.ts create mode 100644 src/shared/components/Icons/PrivateOffice/privateOffice.module.css create mode 100644 src/shared/components/Icons/Projects/Projects.tsx create mode 100644 src/shared/components/Icons/Projects/index.ts create mode 100644 src/shared/components/Icons/Projects/projects.module.css create mode 100644 src/shared/components/Icons/Radio/Radio.tsx create mode 100644 src/shared/components/Icons/Radio/index.ts create mode 100644 src/shared/components/Icons/Radio/radio.module.css create mode 100644 src/shared/components/Icons/Reception/Reception.tsx create mode 100644 src/shared/components/Icons/Reception/index.ts create mode 100644 src/shared/components/Icons/Reception/reception.module.css create mode 100644 src/shared/components/Icons/ReportsType/ReportsType.tsx create mode 100644 src/shared/components/Icons/ReportsType/index.ts create mode 100644 src/shared/components/Icons/ReportsType/reportsType.module.css create mode 100644 src/shared/components/Icons/RocketEmblem/RocketEmblem.tsx create mode 100644 src/shared/components/Icons/RocketEmblem/index.ts create mode 100644 src/shared/components/Icons/RocketEmblem/rocketEmblem.module.css create mode 100644 src/shared/components/Icons/RoomIcon/RoomIcon.tsx create mode 100644 src/shared/components/Icons/RoomIcon/index.ts create mode 100644 src/shared/components/Icons/RoomTypes/Basement/Basement.tsx create mode 100644 src/shared/components/Icons/RoomTypes/Basement/basement.module.css create mode 100644 src/shared/components/Icons/RoomTypes/Basement/index.ts create mode 100644 src/shared/components/Icons/RoomTypes/Compass/Compass.tsx create mode 100644 src/shared/components/Icons/RoomTypes/Compass/compass.module.css create mode 100644 src/shared/components/Icons/RoomTypes/Compass/index.ts create mode 100644 src/shared/components/Icons/RoomTypes/Deck/Deck.tsx create mode 100644 src/shared/components/Icons/RoomTypes/Deck/deck.module.css create mode 100644 src/shared/components/Icons/RoomTypes/Deck/index.ts create mode 100644 src/shared/components/Icons/RoomTypes/Garage/Garage.tsx create mode 100644 src/shared/components/Icons/RoomTypes/Garage/garage.module.css create mode 100644 src/shared/components/Icons/RoomTypes/Garage/index.ts create mode 100644 src/shared/components/Icons/RoomTypes/Patio/Patio.tsx create mode 100644 src/shared/components/Icons/RoomTypes/Patio/index.ts create mode 100644 src/shared/components/Icons/RoomTypes/Patio/patio.module.css create mode 100644 src/shared/components/Icons/RoomTypes/Plaza/Plaza.tsx create mode 100644 src/shared/components/Icons/RoomTypes/Plaza/index.ts create mode 100644 src/shared/components/Icons/RoomTypes/Plaza/plaza.module.css create mode 100644 src/shared/components/Icons/RoomTypes/Pool/Pool.tsx create mode 100644 src/shared/components/Icons/RoomTypes/Pool/index.ts create mode 100644 src/shared/components/Icons/RoomTypes/Pool/pool.module.css create mode 100644 src/shared/components/Icons/RoomTypes/Roof/Roof.tsx create mode 100644 src/shared/components/Icons/RoomTypes/Roof/index.ts create mode 100644 src/shared/components/Icons/RoomTypes/Roof/roof.module.css create mode 100644 src/shared/components/Icons/RoomTypes/Shop/Shop.tsx create mode 100644 src/shared/components/Icons/RoomTypes/Shop/index.ts create mode 100644 src/shared/components/Icons/RoomTypes/Shop/shop.module.css create mode 100644 src/shared/components/Icons/RoomTypes/UtilityRoom/UtilityRoom.tsx create mode 100644 src/shared/components/Icons/RoomTypes/UtilityRoom/index.ts create mode 100644 src/shared/components/Icons/RoomTypes/UtilityRoom/utilityroom.module.css create mode 100644 src/shared/components/Icons/RoomTypes/index.ts create mode 100644 src/shared/components/Icons/Search/Search.tsx create mode 100644 src/shared/components/Icons/Search/index.ts create mode 100644 src/shared/components/Icons/Share/Share.tsx create mode 100644 src/shared/components/Icons/Share/index.ts create mode 100644 src/shared/components/Icons/Share/share.module.css create mode 100644 src/shared/components/Icons/SideBarClose/SideBarClose.tsx create mode 100644 src/shared/components/Icons/SideBarClose/index.ts create mode 100644 src/shared/components/Icons/SideBarClose/sideBarClose.module.css create mode 100644 src/shared/components/Icons/SideBarLeftArrow/SideBarLeftArrow.tsx create mode 100644 src/shared/components/Icons/SideBarLeftArrow/index.ts create mode 100644 src/shared/components/Icons/SideBarLeftArrow/sideBarLeftArrow.module.css create mode 100644 src/shared/components/Icons/SideBarRightArrow/SideBarRightArrow.tsx create mode 100644 src/shared/components/Icons/SideBarRightArrow/index.ts create mode 100644 src/shared/components/Icons/SideBarRightArrow/sideBarRightArrow.module.css create mode 100644 src/shared/components/Icons/SingleHome/SingleHome.tsx create mode 100644 src/shared/components/Icons/SingleHome/index.ts create mode 100644 src/shared/components/Icons/SingleHome/singleHome.module.css create mode 100644 src/shared/components/Icons/Sms/Sms.tsx create mode 100644 src/shared/components/Icons/Sms/index.ts create mode 100644 src/shared/components/Icons/Sms/sms.module.css create mode 100644 src/shared/components/Icons/Square/Square.tsx create mode 100644 src/shared/components/Icons/Square/index.ts create mode 100644 src/shared/components/Icons/Square/square.module.css create mode 100644 src/shared/components/Icons/Stairway/Stairway.tsx create mode 100644 src/shared/components/Icons/Stairway/index.ts create mode 100644 src/shared/components/Icons/Stairway/stairway.module.css create mode 100644 src/shared/components/Icons/Storage/Storage.tsx create mode 100644 src/shared/components/Icons/Storage/index.ts create mode 100644 src/shared/components/Icons/Storage/storage.module.css create mode 100644 src/shared/components/Icons/Support/Support.tsx create mode 100644 src/shared/components/Icons/Support/index.ts create mode 100644 src/shared/components/Icons/Support/support.module.css create mode 100644 src/shared/components/Icons/ThreeDots/ThreeDots.tsx create mode 100644 src/shared/components/Icons/ThreeDots/index.ts create mode 100644 src/shared/components/Icons/ThreeDots/threeDots.module.css create mode 100644 src/shared/components/Icons/Trash/Trash.tsx create mode 100644 src/shared/components/Icons/Trash/index.ts create mode 100644 src/shared/components/Icons/Trash/trash.module.css create mode 100644 src/shared/components/Icons/Unit/Unit.tsx create mode 100644 src/shared/components/Icons/Unit/index.ts create mode 100644 src/shared/components/Icons/Unit/unit.module.css create mode 100644 src/shared/components/Icons/WelcomeAboard/WelcomeAboard.tsx create mode 100644 src/shared/components/Icons/WelcomeAboard/index.ts create mode 100644 src/shared/components/Icons/index.ts create mode 100644 src/shared/components/ImageDeleteModal/ImageDeleteModal.tsx create mode 100644 src/shared/components/ImageDeleteModal/imageDeleteModal.module.css create mode 100644 src/shared/components/ImageDeleteModal/index.ts create mode 100644 src/shared/components/ImageNotes/ImageNotes.tsx create mode 100644 src/shared/components/ImageNotes/NoteItem/NoteItem.tsx create mode 100644 src/shared/components/ImageNotes/NoteItem/index.ts create mode 100644 src/shared/components/ImageNotes/NoteItem/noteItem.module.css create mode 100644 src/shared/components/ImageNotes/imageNotes.module.css create mode 100644 src/shared/components/ImageNotes/index.ts create mode 100644 src/shared/components/ImagePlaceHolder/ImagePlaceHolder.tsx create mode 100644 src/shared/components/ImagePlaceHolder/image.place.holder.module.css create mode 100644 src/shared/components/ImagePlaceHolder/index.ts create mode 100644 src/shared/components/InviteEmployees/InviteEmployees.tsx create mode 100644 src/shared/components/InviteEmployees/InviteEmployeesToast/InviteEmployeesToast.tsx create mode 100644 src/shared/components/InviteEmployees/InviteEmployeesToast/index.ts create mode 100644 src/shared/components/InviteEmployees/InviteEmployeesToast/inviteEmployeesToast.module.css create mode 100644 src/shared/components/InviteEmployees/index.ts create mode 100644 src/shared/components/InviteEmployees/inviteEmployees.module.css create mode 100644 src/shared/components/Label/Label.tsx create mode 100644 src/shared/components/Label/index.ts create mode 100644 src/shared/components/Layouts/DashboardLayout/DashboardLayout.tsx create mode 100644 src/shared/components/Layouts/DashboardLayout/dashboardLayout.module.css create mode 100644 src/shared/components/Layouts/DashboardLayout/index.ts create mode 100644 src/shared/components/Layouts/GuestLayout/GuestLayout.tsx create mode 100644 src/shared/components/Layouts/GuestLayout/guestLayout.module.css create mode 100644 src/shared/components/Layouts/GuestLayout/index.ts create mode 100644 src/shared/components/Layouts/NotFoundLayout/NotFoundLayout.tsx create mode 100644 src/shared/components/Layouts/NotFoundLayout/index.ts create mode 100644 src/shared/components/Layouts/NotFoundLayout/notFoundLayout.module.css create mode 100644 src/shared/components/Layouts/PhotoShareLayout/PhotoShareLayout.tsx create mode 100644 src/shared/components/Layouts/PhotoShareLayout/index.ts create mode 100644 src/shared/components/Layouts/PhotoShareLayout/photoShareLayout.module.css create mode 100644 src/shared/components/Layouts/PhotoViewLayout/PhotoViewLayout.tsx create mode 100644 src/shared/components/Layouts/PhotoViewLayout/index.ts create mode 100644 src/shared/components/Layouts/PhotoViewLayout/photoViewLayout.module.css create mode 100644 src/shared/components/Layouts/Placeholder/PlaceholderLayout.tsx create mode 100644 src/shared/components/Layouts/Placeholder/index.ts create mode 100644 src/shared/components/Layouts/ProjectTabsLayout/ProjectTabsLayout/ProjectTabsLayout.tsx create mode 100644 src/shared/components/Layouts/ProjectTabsLayout/ProjectTabsLayout/index.ts create mode 100644 src/shared/components/Layouts/ProjectTabsLayout/ProjectTabsLayout/projectTabsLayout.module.css create mode 100644 src/shared/components/Layouts/ProjectTabsLayout/TabsMenu/TabsMenu.tsx create mode 100644 src/shared/components/Layouts/ProjectTabsLayout/TabsMenu/index.ts create mode 100644 src/shared/components/Layouts/ProjectTabsLayout/TabsMenu/tabsMenu.module.css create mode 100644 src/shared/components/Layouts/ProjectTabsLayout/index.ts create mode 100644 src/shared/components/Layouts/SplashPageLayout/SplashPageLayout.tsx create mode 100644 src/shared/components/Layouts/SplashPageLayout/index.ts create mode 100644 src/shared/components/Layouts/UserTabsLayout/UserTabsLayout.tsx create mode 100644 src/shared/components/Layouts/UserTabsLayout/index.ts create mode 100644 src/shared/components/Layouts/UserTabsLayout/userTabsLayout.module.css create mode 100644 src/shared/components/Layouts/index.ts create mode 100644 src/shared/components/MapPin/MapPin.tsx create mode 100644 src/shared/components/MapPin/index.ts create mode 100644 src/shared/components/MapPin/mapPin.module.css create mode 100644 src/shared/components/Mask/Mask.tsx create mode 100644 src/shared/components/Mask/index.ts create mode 100644 src/shared/components/Mask/mask.module.css create mode 100644 src/shared/components/MobileWarningModal/MobileWarningModal.tsx create mode 100644 src/shared/components/MobileWarningModal/index.ts create mode 100644 src/shared/components/MobileWarningModal/mobileWarningModal.module.css create mode 100644 src/shared/components/Modal/Modal.tsx create mode 100644 src/shared/components/Modal/index.ts create mode 100644 src/shared/components/Nav/Nav.tsx create mode 100644 src/shared/components/Nav/index.ts create mode 100644 src/shared/components/Nav/nav.module.css create mode 100644 src/shared/components/NoEmployeesPlaceholder/NoEmployeesPlaceholder.tsx create mode 100644 src/shared/components/NoEmployeesPlaceholder/index.ts create mode 100644 src/shared/components/NoEmployeesPlaceholder/noEmployeesPlaceholder.module.css create mode 100644 src/shared/components/Notes/AllNotesAccordion/AllNotesAccordion.tsx create mode 100644 src/shared/components/Notes/AllNotesAccordion/allNotesAccordion.module.css create mode 100644 src/shared/components/Notes/AllNotesAccordion/index.ts create mode 100644 src/shared/components/Notes/CreateNoteForm/CreateNoteForm.tsx create mode 100644 src/shared/components/Notes/CreateNoteForm/createNoteForm.module.css create mode 100644 src/shared/components/Notes/CreateNoteForm/index.ts create mode 100644 src/shared/components/Notes/CreatePhotoNote/CreatePhotoNote.tsx create mode 100644 src/shared/components/Notes/CreatePhotoNote/createPhotoNote.module.css create mode 100644 src/shared/components/Notes/CreatePhotoNote/index.ts create mode 100644 src/shared/components/Notes/DeleteNote/DeleteNote.tsx create mode 100644 src/shared/components/Notes/DeleteNoteModal/DeleteNoteModal.tsx create mode 100644 src/shared/components/Notes/DeleteNoteModal/deleteNoteModal.module.css create mode 100644 src/shared/components/Notes/DeleteNoteModal/index.ts create mode 100644 src/shared/components/Notes/LoadMoreNotesButton/LoadMoreNotesButton.tsx create mode 100644 src/shared/components/Notes/LoadMoreNotesButton/index.ts create mode 100644 src/shared/components/Notes/LoadMoreNotesButton/loadMoreNotesButton.module.css create mode 100644 src/shared/components/Notes/NoteCard/NoteCard.tsx create mode 100644 src/shared/components/Notes/NoteCard/NoteContent/NoteContent.tsx create mode 100644 src/shared/components/Notes/NoteCard/NoteContent/index.ts create mode 100644 src/shared/components/Notes/NoteCard/NoteContent/noteContent.module.css create mode 100644 src/shared/components/Notes/NoteCard/NoteHeader/NoteHeader.tsx create mode 100644 src/shared/components/Notes/NoteCard/NoteHeader/index.ts create mode 100644 src/shared/components/Notes/NoteCard/NoteHeader/noteHeader.module.css create mode 100644 src/shared/components/Notes/NoteCard/index.ts create mode 100644 src/shared/components/Notes/NoteCard/noteCard.module.css create mode 100644 src/shared/components/Notes/NoteEditForm/NoteEditForm.tsx create mode 100644 src/shared/components/Notes/NoteEditForm/index.ts create mode 100644 src/shared/components/Notes/NoteEditForm/noteEditForm.module.css create mode 100644 src/shared/components/Notes/NoteItems/NoteItems.tsx create mode 100644 src/shared/components/Notes/NoteItems/index.ts create mode 100644 src/shared/components/Notes/NotesDropdown/NotesDropdown.tsx create mode 100644 src/shared/components/Notes/NotesDropdown/index.ts create mode 100644 src/shared/components/Notes/NotesDropdown/notesDropdown.module.css create mode 100644 src/shared/components/Notes/NotesFilter/NotesFilter.tsx create mode 100644 src/shared/components/Notes/NotesFilter/index.ts create mode 100644 src/shared/components/Notes/NotesFilter/notesFilter.module.css create mode 100644 src/shared/components/Notes/NotesPlaceholder/NotesPlaceholder.tsx create mode 100644 src/shared/components/Notes/NotesPlaceholder/index.ts create mode 100644 src/shared/components/Notes/NotesPlaceholder/notesPlaceholder.module.css create mode 100644 src/shared/components/Notes/NotesToast/NotesToast.tsx create mode 100644 src/shared/components/Notes/NotesToast/index.ts create mode 100644 src/shared/components/Notes/NotesToast/notesToast.module.css create mode 100644 src/shared/components/Notes/NotesWrapper/NotesWrapper.tsx create mode 100644 src/shared/components/Notes/NotesWrapper/index.ts create mode 100644 src/shared/components/Notes/NotesWrapper/notesWrapper.module.css create mode 100644 src/shared/components/Notes/index.ts create mode 100644 src/shared/components/OptionToolBar/OptionToolBar.tsx create mode 100644 src/shared/components/OptionToolBar/index.ts create mode 100644 src/shared/components/OptionToolBar/optionToolBar.module.css create mode 100644 src/shared/components/Pagination/Next/Next.tsx create mode 100644 src/shared/components/Pagination/Next/index.ts create mode 100644 src/shared/components/Pagination/Pagination/Pagination.tsx create mode 100644 src/shared/components/Pagination/Pagination/index.ts create mode 100644 src/shared/components/Pagination/Pagination/pagination.module.css create mode 100644 src/shared/components/Pagination/Previous/Previous.tsx create mode 100644 src/shared/components/Pagination/Previous/index.ts create mode 100644 src/shared/components/Pagination/index.ts create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactCard/ContactCard.tsx create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactCard/contactCard.module.css create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactCard/index.ts create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactForm/ContactForm.tsx create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactForm/contactForm.module.css create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactForm/index.ts create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactTypeAutoComplete/ContactTypeAutoComplete.tsx create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactTypeAutoComplete/contactTypeAutoComplete.module.css create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactTypeAutoComplete/index.ts create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactTypeToast/ContactTypeToast.tsx create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactTypeToast/index.ts create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactsTab/ContactsTab.tsx create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactsTab/contactsTab.module.css create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/ContactsTab/index.ts create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/CreateContactModal/CreateContactModal.tsx create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/CreateContactModal/createContactModal.module.css create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/CreateContactModal/index.ts create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/EditContactModal/EditContactModal.tsx create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/EditContactModal/editContactModal.module.css create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/EditContactModal/index.ts create mode 100644 src/shared/components/People/PeopleTabs/ContactsTab/index.ts create mode 100644 src/shared/components/People/PeopleTabs/DeleteToast/DeleteToast.tsx create mode 100644 src/shared/components/People/PeopleTabs/DeleteToast/deleteToast.module.css create mode 100644 src/shared/components/People/PeopleTabs/DeleteToast/index.ts create mode 100644 src/shared/components/People/PeopleTabs/EmployeeCard/EmployeeCard.tsx create mode 100644 src/shared/components/People/PeopleTabs/EmployeeCard/employeeCard.module.css create mode 100644 src/shared/components/People/PeopleTabs/EmployeeCard/index.ts create mode 100644 src/shared/components/People/PeopleTabs/EmployeesTab/EditEmployee/EditEmployee.tsx create mode 100644 src/shared/components/People/PeopleTabs/EmployeesTab/EditEmployee/editEmployee.module.css create mode 100644 src/shared/components/People/PeopleTabs/EmployeesTab/EditEmployee/index.ts create mode 100644 src/shared/components/People/PeopleTabs/EmployeesTab/EmployeesTab/EmployeesTab.tsx create mode 100644 src/shared/components/People/PeopleTabs/EmployeesTab/EmployeesTab/employeesTab.module.css create mode 100644 src/shared/components/People/PeopleTabs/EmployeesTab/EmployeesTab/index.ts create mode 100644 src/shared/components/People/PeopleTabs/EmployeesTab/index.ts create mode 100644 src/shared/components/People/PeopleTabs/InvitePlaceholder/InvitePlaceholder.tsx create mode 100644 src/shared/components/People/PeopleTabs/InvitePlaceholder/index.ts create mode 100644 src/shared/components/People/PeopleTabs/InvitePlaceholder/invitePlaceHolder.module.css create mode 100644 src/shared/components/People/PeopleTabs/LetterHeader/LetterHeader.tsx create mode 100644 src/shared/components/People/PeopleTabs/LetterHeader/index.ts create mode 100644 src/shared/components/People/PeopleTabs/LetterHeader/letterHeader.module.css create mode 100644 src/shared/components/People/PeopleTabs/PeopleList/DeleteCardModal/DeleteCardModal.tsx create mode 100644 src/shared/components/People/PeopleTabs/PeopleList/DeleteCardModal/deleteCardModal.module.css create mode 100644 src/shared/components/People/PeopleTabs/PeopleList/DeleteCardModal/index.ts create mode 100644 src/shared/components/People/PeopleTabs/PeopleList/InfoCardModal/InfoCardModal.tsx create mode 100644 src/shared/components/People/PeopleTabs/PeopleList/InfoCardModal/index.ts create mode 100644 src/shared/components/People/PeopleTabs/PeopleList/InfoCardModal/infoCardModal.module.css create mode 100644 src/shared/components/People/PeopleTabs/PeopleList/index.ts create mode 100644 src/shared/components/People/PeopleTabs/index.ts create mode 100644 src/shared/components/People/index.ts create mode 100644 src/shared/components/PhotoErrorToast/PhotoErrorToast.tsx create mode 100644 src/shared/components/PhotoErrorToast/index.ts create mode 100644 src/shared/components/PhotoErrorToast/photoErrorToast.module.css create mode 100644 src/shared/components/PhotoFileSizeMenu/PhotoFileSizeMenu.tsx create mode 100644 src/shared/components/PhotoFileSizeMenu/index.ts create mode 100644 src/shared/components/PhotoFileSizeMenu/photoFileSizeMenu.module.css create mode 100644 src/shared/components/PhotoFilter/PhotoFilter.tsx create mode 100644 src/shared/components/PhotoFilter/index.ts create mode 100644 src/shared/components/PhotoFilter/photo.filter.module.css create mode 100644 src/shared/components/PhotoGallery/PhotoGallery.tsx create mode 100644 src/shared/components/PhotoGallery/index.ts create mode 100644 src/shared/components/PhotoGallery/photogallery.module.css create mode 100644 src/shared/components/PhotoShare/Header/Header.tsx create mode 100644 src/shared/components/PhotoShare/Header/header.module.css create mode 100644 src/shared/components/PhotoShare/Header/index.ts create mode 100644 src/shared/components/PhotoShare/PhotoShare.tsx create mode 100644 src/shared/components/PhotoShare/PhotoShareBreadCrumb/PhotoShareBreadCrumb.tsx create mode 100644 src/shared/components/PhotoShare/PhotoShareBreadCrumb/index.ts create mode 100644 src/shared/components/PhotoShare/PhotoShareBreadCrumb/photoShareBreadCrumb.module.css create mode 100644 src/shared/components/PhotoShare/PhotoShareGallery/Album/Album.tsx create mode 100644 src/shared/components/PhotoShare/PhotoShareGallery/Album/album.module.css create mode 100644 src/shared/components/PhotoShare/PhotoShareGallery/Album/index.ts create mode 100644 src/shared/components/PhotoShare/PhotoShareGallery/PhotoShareGallery.tsx create mode 100644 src/shared/components/PhotoShare/PhotoShareGallery/Photos/Photos.tsx create mode 100644 src/shared/components/PhotoShare/PhotoShareGallery/Photos/index.ts create mode 100644 src/shared/components/PhotoShare/PhotoShareGallery/Photos/photos.module.css create mode 100644 src/shared/components/PhotoShare/PhotoShareGallery/index.ts create mode 100644 src/shared/components/PhotoShare/PhotoShareGallery/photoShareGallery.module.css create mode 100644 src/shared/components/PhotoShare/PhotoShareNotes/PhotoShareNotes.tsx create mode 100644 src/shared/components/PhotoShare/PhotoShareNotes/index.ts create mode 100644 src/shared/components/PhotoShare/PhotoShareNotes/photoShareNotes.module.css create mode 100644 src/shared/components/PhotoShare/index.ts create mode 100644 src/shared/components/PhotoShare/photoShare.module.css create mode 100644 src/shared/components/PhotoShareSplashView/PhotoShareSplashView.tsx create mode 100644 src/shared/components/PhotoShareSplashView/index.ts create mode 100644 src/shared/components/PhotoShareSplashView/photoShareSplashView.module.css create mode 100644 src/shared/components/PhotoView/PhotoView.tsx create mode 100644 src/shared/components/PhotoView/index.ts create mode 100644 src/shared/components/PhotoView/photoView.module.css create mode 100644 src/shared/components/PhotoViewCarousal/CarouselItem/CarouselItem.tsx create mode 100644 src/shared/components/PhotoViewCarousal/CarouselItem/carouselItem.module.css create mode 100644 src/shared/components/PhotoViewCarousal/CarouselItem/index.ts create mode 100644 src/shared/components/PhotoViewCarousal/PhotoViewCarousal/PhotoViewCarousal.tsx create mode 100644 src/shared/components/PhotoViewCarousal/PhotoViewCarousal/index.ts create mode 100644 src/shared/components/PhotoViewCarousal/PhotoViewCarousal/photoViewCarousel.module.css create mode 100644 src/shared/components/PhotoViewCarousal/index.ts create mode 100644 src/shared/components/PillBadge/PillBadge.tsx create mode 100644 src/shared/components/PillBadge/index.ts create mode 100644 src/shared/components/PillBadge/pillBadge.module.css create mode 100644 src/shared/components/PillButton/PillButton.tsx create mode 100644 src/shared/components/PillButton/index.ts create mode 100644 src/shared/components/PillButton/pillButton.module.css create mode 100644 src/shared/components/Profiles/About/About.tsx create mode 100644 src/shared/components/Profiles/About/about.module.css create mode 100644 src/shared/components/Profiles/About/index.ts create mode 100644 src/shared/components/Profiles/Account/CompanyProfile/CompanyInfoCard/CompanyInfoCard.tsx create mode 100644 src/shared/components/Profiles/Account/CompanyProfile/CompanyInfoCard/companyInfoCard.module.css create mode 100644 src/shared/components/Profiles/Account/CompanyProfile/CompanyInfoCard/index.ts create mode 100644 src/shared/components/Profiles/Account/CompanyProfile/CompanyProfile.tsx create mode 100644 src/shared/components/Profiles/Account/CompanyProfile/EditCompanyInfo/EditCompanyInfo.tsx create mode 100644 src/shared/components/Profiles/Account/CompanyProfile/EditCompanyInfo/editCompanyInfo.module.css create mode 100644 src/shared/components/Profiles/Account/CompanyProfile/EditCompanyInfo/index.ts create mode 100644 src/shared/components/Profiles/Account/CompanyProfile/companyProfile.module.css create mode 100644 src/shared/components/Profiles/Account/CompanyProfile/index.ts create mode 100644 src/shared/components/Profiles/Account/UploadAvatar/UploadAvatar.tsx create mode 100644 src/shared/components/Profiles/Account/UploadAvatar/index.ts create mode 100644 src/shared/components/Profiles/Account/UploadAvatar/uploadAvatar.module.css create mode 100644 src/shared/components/Profiles/Account/UserProfile/EditUserInfo/EditUserInfo.tsx create mode 100644 src/shared/components/Profiles/Account/UserProfile/EditUserInfo/editUserInfo.module.css create mode 100644 src/shared/components/Profiles/Account/UserProfile/EditUserInfo/index.ts create mode 100644 src/shared/components/Profiles/Account/UserProfile/UserInfoCard/UserInfoCard.tsx create mode 100644 src/shared/components/Profiles/Account/UserProfile/UserInfoCard/index.ts create mode 100644 src/shared/components/Profiles/Account/UserProfile/UserInfoCard/userInfoCard.module.css create mode 100644 src/shared/components/Profiles/Account/UserProfile/UserProfile.tsx create mode 100644 src/shared/components/Profiles/Account/UserProfile/index.ts create mode 100644 src/shared/components/Profiles/Account/UserProfile/userProfile.module.css create mode 100644 src/shared/components/Profiles/Account/index.ts create mode 100644 src/shared/components/Profiles/ProfileUpdatedToast/ProfileUpdatedToast.tsx create mode 100644 src/shared/components/Profiles/ProfileUpdatedToast/index.ts create mode 100644 src/shared/components/Profiles/ProfileUpdatedToast/profileUpdatedToast.module.css create mode 100644 src/shared/components/Profiles/UserProfileWrapper/UserProfileWrapper.tsx create mode 100644 src/shared/components/Profiles/UserProfileWrapper/index.ts create mode 100644 src/shared/components/Profiles/UserProfileWrapper/userProfileWrapper.module.css create mode 100644 src/shared/components/Profiles/index.ts create mode 100644 src/shared/components/ProgressBar/ProgressBar.tsx create mode 100644 src/shared/components/ProgressBar/index.ts create mode 100644 src/shared/components/ProgressBar/progressBar.module.css create mode 100644 src/shared/components/Project/DeleteProjectModal/DeleteProjectModal.tsx create mode 100644 src/shared/components/Project/DeleteProjectModal/deleteProjectModal.module.css create mode 100644 src/shared/components/Project/DeleteProjectModal/index.ts create mode 100644 src/shared/components/Project/EditAddressModal/EditAddressModal.tsx create mode 100644 src/shared/components/Project/EditAddressModal/editAddressModal.module.css create mode 100644 src/shared/components/Project/EditAddressModal/index.ts create mode 100644 src/shared/components/Project/ProjectAliasModal/ProjectAliasModal.tsx create mode 100644 src/shared/components/Project/ProjectAliasModal/index.ts create mode 100644 src/shared/components/Project/ProjectAliasModal/projectAliasModal.module.css create mode 100644 src/shared/components/Project/ProjectUnavailable/ProjectUnavailable.tsx create mode 100644 src/shared/components/Project/ProjectUnavailable/index.ts create mode 100644 src/shared/components/Project/ProjectUnavailable/projectUnavailable.module.css create mode 100644 src/shared/components/Project/Unit/Rooms/Room/Albums/Album/Album.tsx create mode 100644 src/shared/components/Project/Unit/Rooms/Room/Albums/Album/Photos/Photo/Photo.tsx create mode 100644 src/shared/components/Project/Unit/Rooms/Room/Albums/Album/Photos/Photo/photo.module.css create mode 100644 src/shared/components/Project/Unit/Rooms/Room/Albums/Album/Photos/Photos.tsx create mode 100644 src/shared/components/Project/Unit/Rooms/Room/Albums/Album/Photos/photos.module.css create mode 100644 src/shared/components/Project/Unit/Rooms/Room/Albums/Album/album.module.css create mode 100644 src/shared/components/Project/Unit/Rooms/Room/Albums/Album/index.ts create mode 100644 src/shared/components/Project/Unit/Rooms/Room/Albums/Albums.tsx create mode 100644 src/shared/components/Project/Unit/Rooms/Room/Albums/albums.module.css create mode 100644 src/shared/components/Project/Unit/Rooms/Room/Room.tsx create mode 100644 src/shared/components/Project/Unit/Rooms/Room/index.ts create mode 100644 src/shared/components/Project/Unit/Rooms/Room/room.module.css create mode 100644 src/shared/components/Project/Unit/Rooms/RoomButtons/RoomButtons.tsx create mode 100644 src/shared/components/Project/Unit/Rooms/RoomButtons/index.ts create mode 100644 src/shared/components/Project/Unit/UnitContent/UnitContent.tsx create mode 100644 src/shared/components/Project/Unit/UnitContent/index.ts create mode 100644 src/shared/components/Project/Unit/UnitContent/unitContent.module.css create mode 100644 src/shared/components/Project/Unit/UnitHeader/UnitHeader.tsx create mode 100644 src/shared/components/Project/Unit/UnitHeader/index.ts create mode 100644 src/shared/components/Project/Unit/UnitHeader/unitHeader.module.css create mode 100644 src/shared/components/Project/Unit/index.ts create mode 100644 src/shared/components/Project/index.ts create mode 100644 src/shared/components/ProjectData/ClaimsData/ClaimsData.tsx create mode 100644 src/shared/components/ProjectData/ClaimsData/ClaimsDataEdit/ClaimsDataEdit.tsx create mode 100644 src/shared/components/ProjectData/ClaimsData/ClaimsDataEdit/claimsDataEdit.module.css create mode 100644 src/shared/components/ProjectData/ClaimsData/ClaimsDataEdit/index.ts create mode 100644 src/shared/components/ProjectData/ClaimsData/ClaimsDataView/ClaimsDataView.tsx create mode 100644 src/shared/components/ProjectData/ClaimsData/ClaimsDataView/claimsDataView.module.css create mode 100644 src/shared/components/ProjectData/ClaimsData/ClaimsDataView/index.ts create mode 100644 src/shared/components/ProjectData/ClaimsData/ClaimsDataWrapper/ClaimsDataWrapper.tsx create mode 100644 src/shared/components/ProjectData/ClaimsData/ClaimsDataWrapper/index.ts create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/UnitClaims.tsx create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/UnitClaimsList/DeleteUnitClaimModal/DeleteUnitClaimModal.tsx create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/UnitClaimsList/DeleteUnitClaimModal/deleteUnitClaimModal.module.css create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/UnitClaimsList/DeleteUnitClaimModal/index.ts create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/UnitClaimsList/UnitClaimsButton/UnitClaimsButton.tsx create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/UnitClaimsList/UnitClaimsButton/index.ts create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/UnitClaimsList/UnitClaimsButton/unitClaimsbutton.module.css create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/UnitClaimsList/UnitClaimsList.tsx create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/UnitClaimsList/UnitClaimsLocation/UnitClaimsLocation.tsx create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/UnitClaimsList/UnitClaimsLocation/index.ts create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/UnitClaimsList/UnitClaimsLocation/unitClaimsLocation.module.css create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/UnitClaimsList/index.ts create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/UnitClaimsList/unitClaimsList.module.css create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/index.ts create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaims/unitClaims.module.css create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaimsModal/UnitClaimsModal.tsx create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaimsModal/index.ts create mode 100644 src/shared/components/ProjectData/ClaimsData/UnitClaimsModal/unitClaimsModal.module.css create mode 100644 src/shared/components/ProjectData/ClaimsData/claimsData.module.css create mode 100644 src/shared/components/ProjectData/ClaimsData/index.ts create mode 100644 src/shared/components/ProjectData/Header/Header.tsx create mode 100644 src/shared/components/ProjectData/Header/header.module.css create mode 100644 src/shared/components/ProjectData/Header/index.ts create mode 100644 src/shared/components/ProjectData/LossData/AffectedLocationModal/AffectedLocationModal.tsx create mode 100644 src/shared/components/ProjectData/LossData/AffectedLocationModal/affectedLocationModal.module.css create mode 100644 src/shared/components/ProjectData/LossData/AffectedLocationModal/index.ts create mode 100644 src/shared/components/ProjectData/LossData/AffectedLocations/AffectedLocations.tsx create mode 100644 src/shared/components/ProjectData/LossData/AffectedLocations/affectedLocations.module.css create mode 100644 src/shared/components/ProjectData/LossData/AffectedLocations/index.ts create mode 100644 src/shared/components/ProjectData/LossData/CategoryOfDamageEdit/CategoryOfDamageEdit.tsx create mode 100644 src/shared/components/ProjectData/LossData/CategoryOfDamageEdit/categoryOfDamageEdit.module.css create mode 100644 src/shared/components/ProjectData/LossData/CategoryOfDamageEdit/index.ts create mode 100644 src/shared/components/ProjectData/LossData/CauseOfDamageEdit/CauseOfDamageEdit.tsx create mode 100644 src/shared/components/ProjectData/LossData/CauseOfDamageEdit/causeOfDamageEdit.module.css create mode 100644 src/shared/components/ProjectData/LossData/CauseOfDamageEdit/index.ts create mode 100644 src/shared/components/ProjectData/LossData/CustomDamageTypeModal/CustomDamageTypeModal.tsx create mode 100644 src/shared/components/ProjectData/LossData/CustomDamageTypeModal/customDamageTypeModal.module.css create mode 100644 src/shared/components/ProjectData/LossData/CustomDamageTypeModal/index.ts create mode 100644 src/shared/components/ProjectData/LossData/DamageInfoEdit/DamageInfoEdit.tsx create mode 100644 src/shared/components/ProjectData/LossData/DamageInfoEdit/damageInfoEdit.module.css create mode 100644 src/shared/components/ProjectData/LossData/DamageInfoEdit/index.ts create mode 100644 src/shared/components/ProjectData/LossData/DamageInfoView/DamageInfoView.tsx create mode 100644 src/shared/components/ProjectData/LossData/DamageInfoView/damageInfoView.module.css create mode 100644 src/shared/components/ProjectData/LossData/DamageInfoView/index.ts create mode 100644 src/shared/components/ProjectData/LossData/DamageTypeItem/DamageTypeItem.tsx create mode 100644 src/shared/components/ProjectData/LossData/DamageTypeItem/damageTypeItem.module.css create mode 100644 src/shared/components/ProjectData/LossData/DamageTypeItem/index.ts create mode 100644 src/shared/components/ProjectData/LossData/DamageTypeItems/DamageTypeItems.tsx create mode 100644 src/shared/components/ProjectData/LossData/DamageTypeItems/damageTypeItems.module.css create mode 100644 src/shared/components/ProjectData/LossData/DamageTypeItems/index.ts create mode 100644 src/shared/components/ProjectData/LossData/DamageTypes/DamageTypes.tsx create mode 100644 src/shared/components/ProjectData/LossData/DamageTypes/damageTypes.module.css create mode 100644 src/shared/components/ProjectData/LossData/DamageTypes/index.ts create mode 100644 src/shared/components/ProjectData/LossData/DateOfLossEdit/DateOfLossEdit.tsx create mode 100644 src/shared/components/ProjectData/LossData/DateOfLossEdit/dateOfLossEdit.module.css create mode 100644 src/shared/components/ProjectData/LossData/DateOfLossEdit/index.ts create mode 100644 src/shared/components/ProjectData/LossData/LocationRow/LocationRow.tsx create mode 100644 src/shared/components/ProjectData/LossData/LocationRow/index.ts create mode 100644 src/shared/components/ProjectData/LossData/LocationRow/locationRow.module.css create mode 100644 src/shared/components/ProjectData/LossData/LossData/LossData.tsx create mode 100644 src/shared/components/ProjectData/LossData/LossData/index.ts create mode 100644 src/shared/components/ProjectData/LossData/LossData/lossData.module.css create mode 100644 src/shared/components/ProjectData/LossData/LossDataDamageTypeButton/LossDataDamageTypeButton.tsx create mode 100644 src/shared/components/ProjectData/LossData/LossDataDamageTypeButton/index.ts create mode 100644 src/shared/components/ProjectData/LossData/LossDataDamageTypeButton/lossDataDamageTypeButton.module.css create mode 100644 src/shared/components/ProjectData/LossData/NoDamageSelected/NoDamageSelected.tsx create mode 100644 src/shared/components/ProjectData/LossData/NoDamageSelected/index.ts create mode 100644 src/shared/components/ProjectData/LossData/NoDamageSelected/noDamageSelected.module.css create mode 100644 src/shared/components/ProjectData/LossData/NoLocationPlaceholder/NoLocationPlaceholder.tsx create mode 100644 src/shared/components/ProjectData/LossData/NoLocationPlaceholder/index.ts create mode 100644 src/shared/components/ProjectData/LossData/NoLocationPlaceholder/noLocationPlaceholder.module.css create mode 100644 src/shared/components/ProjectData/LossData/index.ts create mode 100644 src/shared/components/ProjectData/LossDataWrapper/LossDataWrapper.tsx create mode 100644 src/shared/components/ProjectData/LossDataWrapper/index.ts create mode 100644 src/shared/components/ProjectData/OptionsDropDown/OptionsDropDown.tsx create mode 100644 src/shared/components/ProjectData/OptionsDropDown/index.ts create mode 100644 src/shared/components/ProjectData/OptionsDropDown/optionsDropDown.module.css create mode 100644 src/shared/components/ProjectData/ProjectDataWrapper/ProjectDataWrapper.tsx create mode 100644 src/shared/components/ProjectData/ProjectDataWrapper/index.ts create mode 100644 src/shared/components/ProjectData/ProjectDataWrapper/projectDataWrapper.module.css create mode 100644 src/shared/components/ProjectData/PropertyData/PropertyData.tsx create mode 100644 src/shared/components/ProjectData/PropertyData/PropertyDataEdit/PropertyDataEdit.tsx create mode 100644 src/shared/components/ProjectData/PropertyData/PropertyDataEdit/index.ts create mode 100644 src/shared/components/ProjectData/PropertyData/PropertyDataEdit/propertyDataEdit.module.css create mode 100644 src/shared/components/ProjectData/PropertyData/PropertyDataView/PropertyDataView.tsx create mode 100644 src/shared/components/ProjectData/PropertyData/PropertyDataView/index.ts create mode 100644 src/shared/components/ProjectData/PropertyData/PropertyDataView/propertyDataView.module.css create mode 100644 src/shared/components/ProjectData/PropertyData/index.ts create mode 100644 src/shared/components/ProjectData/PropertyData/propertyData.module.css create mode 100644 src/shared/components/ProjectData/PropertyDataWrapper/PropertyDataWrapper.tsx create mode 100644 src/shared/components/ProjectData/PropertyDataWrapper/index.ts create mode 100644 src/shared/components/ProjectData/index.ts create mode 100644 src/shared/components/Projects/CreateProject/CreateProject.tsx create mode 100644 src/shared/components/Projects/CreateProject/createProject.module.css create mode 100644 src/shared/components/Projects/CreateProject/index.ts create mode 100644 src/shared/components/Projects/CreateProjectMain/CreateProjectMain.tsx create mode 100644 src/shared/components/Projects/CreateProjectMain/createProjectMain.module.css create mode 100644 src/shared/components/Projects/CreateProjectMain/index.ts create mode 100644 src/shared/components/Projects/EditAddress/EditAddress.tsx create mode 100644 src/shared/components/Projects/EditAddress/editAddress.module.css create mode 100644 src/shared/components/Projects/EditAddress/index.ts create mode 100644 src/shared/components/Projects/PhotoDownloadModal/PhotoDownloadModal.tsx create mode 100644 src/shared/components/Projects/PhotoDownloadModal/index.ts create mode 100644 src/shared/components/Projects/PhotoDownloadModal/photoDownloadModal.module.css create mode 100644 src/shared/components/Projects/ProjectsPagination/ProjectsPagination.tsx create mode 100644 src/shared/components/Projects/ProjectsPagination/index.ts create mode 100644 src/shared/components/Projects/ProjectsPagination/projectsPagination.module.css create mode 100644 src/shared/components/Projects/ProjectsTabs/CompletedProjects/CompletedProjects.tsx create mode 100644 src/shared/components/Projects/ProjectsTabs/CompletedProjects/completedProjects.module.css create mode 100644 src/shared/components/Projects/ProjectsTabs/CompletedProjects/index.ts create mode 100644 src/shared/components/Projects/ProjectsTabs/MyProjects/MyProjects.tsx create mode 100644 src/shared/components/Projects/ProjectsTabs/MyProjects/index.ts create mode 100644 src/shared/components/Projects/ProjectsTabs/MyProjects/myProjects.module.css create mode 100644 src/shared/components/Projects/ProjectsTabs/NoProjectsTable/NoProjectsTable.tsx create mode 100644 src/shared/components/Projects/ProjectsTabs/NoProjectsTable/index.ts create mode 100644 src/shared/components/Projects/ProjectsTabs/NoProjectsTable/noProjectsTable.module.css create mode 100644 src/shared/components/Projects/ProjectsTabs/ProjectsList/ProjectsList.tsx create mode 100644 src/shared/components/Projects/ProjectsTabs/ProjectsList/index.ts create mode 100644 src/shared/components/Projects/ProjectsTabs/ProjectsList/projectsList.module.css create mode 100644 src/shared/components/Projects/ProjectsTabs/WipProjects/WipProjects.tsx create mode 100644 src/shared/components/Projects/ProjectsTabs/WipProjects/index.ts create mode 100644 src/shared/components/Projects/ProjectsTabs/WipProjects/wipProjects.module.css create mode 100644 src/shared/components/Projects/ProjectsTabs/index.ts create mode 100644 src/shared/components/Projects/index.ts create mode 100644 src/shared/components/Public/Album/Album.tsx create mode 100644 src/shared/components/Public/Album/album.module.css create mode 100644 src/shared/components/Public/Album/index.ts create mode 100644 src/shared/components/Public/Albums/Albums.tsx create mode 100644 src/shared/components/Public/Albums/albums.module.css create mode 100644 src/shared/components/Public/Albums/index.ts create mode 100644 src/shared/components/Public/Location/Location.tsx create mode 100644 src/shared/components/Public/Location/index.ts create mode 100644 src/shared/components/Public/Location/location.module.css create mode 100644 src/shared/components/Public/Photo/Photo.tsx create mode 100644 src/shared/components/Public/Photo/index.ts create mode 100644 src/shared/components/Public/Photo/photo.module.css create mode 100644 src/shared/components/Public/Photos/Photos.tsx create mode 100644 src/shared/components/Public/Photos/index.ts create mode 100644 src/shared/components/Public/Photos/photos.module.css create mode 100644 src/shared/components/Public/Room/Room.tsx create mode 100644 src/shared/components/Public/Room/index.ts create mode 100644 src/shared/components/Public/Room/room.module.css create mode 100644 src/shared/components/Public/index.ts create mode 100644 src/shared/components/RadioButton/RadioButton.tsx create mode 100644 src/shared/components/RadioButton/index.ts create mode 100644 src/shared/components/RecentlyAccessed/RecentlyAccessed.tsx create mode 100644 src/shared/components/RecentlyAccessed/index.ts create mode 100644 src/shared/components/RecentlyAccessed/recentlyAccessed.module.css create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ChooseReportTypeModal/ChooseReportTypeModal.tsx create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ChooseReportTypeModal/chooseReportTypeModal.module.css create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ChooseReportTypeModal/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/Reports/DeleteReportModal/DeleteReportModal.tsx create mode 100644 src/shared/components/ReportsAndDocuments/Reports/DeleteReportModal/deleteReportModal.module.css create mode 100644 src/shared/components/ReportsAndDocuments/Reports/DeleteReportModal/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/Reports/DownloadReportModal/DownloadReportModal.tsx create mode 100644 src/shared/components/ReportsAndDocuments/Reports/DownloadReportModal/downloadReportModal.module.css create mode 100644 src/shared/components/ReportsAndDocuments/Reports/DownloadReportModal/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/Reports/GenerateReport/DryingReportForm/DryingReportForm.tsx create mode 100644 src/shared/components/ReportsAndDocuments/Reports/GenerateReport/DryingReportForm/dryingReportForm.module.css create mode 100644 src/shared/components/ReportsAndDocuments/Reports/GenerateReport/DryingReportForm/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/Reports/GenerateReport/PhotoReportForm/PhotoReportForm.tsx create mode 100644 src/shared/components/ReportsAndDocuments/Reports/GenerateReport/PhotoReportForm/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/Reports/GenerateReport/PhotoReportForm/photoReportForm.module.css create mode 100644 src/shared/components/ReportsAndDocuments/Reports/GenerateReport/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/Reports/GenerateReportWrapper/GenerateReportWrapper.tsx create mode 100644 src/shared/components/ReportsAndDocuments/Reports/GenerateReportWrapper/generateReportWrapper.module.css create mode 100644 src/shared/components/ReportsAndDocuments/Reports/GenerateReportWrapper/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ReportLocation/ReportLocation.tsx create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ReportLocation/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ReportLocation/reportLocation.module.css create mode 100644 src/shared/components/ReportsAndDocuments/Reports/Reports/Reports.tsx create mode 100644 src/shared/components/ReportsAndDocuments/Reports/Reports/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/Reports/Reports/reports.module.css create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ReportsEmpty/ReportsEmpty.tsx create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ReportsEmpty/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ReportsEmpty/reportsEmpty.module.css create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ReportsTable/ReportsTable.tsx create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ReportsTable/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ReportsTable/reportsTable.module.css create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ShareReportModal/ShareReportModal.tsx create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ShareReportModal/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/Reports/ShareReportModal/shareReportModal.module.css create mode 100644 src/shared/components/ReportsAndDocuments/Reports/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/ReportsAndDocumentsWrapper/ReportsAndDocumentsWrapper.tsx create mode 100644 src/shared/components/ReportsAndDocuments/ReportsAndDocumentsWrapper/index.ts create mode 100644 src/shared/components/ReportsAndDocuments/ReportsAndDocumentsWrapper/reportsAndDocumentsWrapper.module.css create mode 100644 src/shared/components/ReportsAndDocuments/index.ts create mode 100644 src/shared/components/RocketDry/EquipmentLog/EquipmentCount/EquipmentCount.tsx create mode 100644 src/shared/components/RocketDry/EquipmentLog/EquipmentCount/equipmentCount.module.css create mode 100644 src/shared/components/RocketDry/EquipmentLog/EquipmentCount/index.ts create mode 100644 src/shared/components/RocketDry/EquipmentLog/EquipmentLog.tsx create mode 100644 src/shared/components/RocketDry/EquipmentLog/EquipmentLogInfoModal/EquipmentLogInfoModal.tsx create mode 100644 src/shared/components/RocketDry/EquipmentLog/EquipmentLogInfoModal/equipmentLogInfoModal.module.css create mode 100644 src/shared/components/RocketDry/EquipmentLog/EquipmentLogInfoModal/index.ts create mode 100644 src/shared/components/RocketDry/EquipmentLog/LocationEquipment/LocationEquipment.tsx create mode 100644 src/shared/components/RocketDry/EquipmentLog/LocationEquipment/index.ts create mode 100644 src/shared/components/RocketDry/EquipmentLog/LocationEquipment/locationEquipment.module.css create mode 100644 src/shared/components/RocketDry/EquipmentLog/NoEquipmentPlaceholder/NoEquipmentPlaceholder.tsx create mode 100644 src/shared/components/RocketDry/EquipmentLog/NoEquipmentPlaceholder/index.ts create mode 100644 src/shared/components/RocketDry/EquipmentLog/NoEquipmentPlaceholder/noEquipmentPlaceholder.module.css create mode 100644 src/shared/components/RocketDry/EquipmentLog/TotalEquipment/TotalEquipment.tsx create mode 100644 src/shared/components/RocketDry/EquipmentLog/TotalEquipment/index.ts create mode 100644 src/shared/components/RocketDry/EquipmentLog/TotalEquipment/totalEquipment.module.css create mode 100644 src/shared/components/RocketDry/EquipmentLog/equipmentLog.module.css create mode 100644 src/shared/components/RocketDry/EquipmentLog/index.ts create mode 100644 src/shared/components/RocketDry/ExternalAtmosphericTable/ExternalAtmosphericTable.tsx create mode 100644 src/shared/components/RocketDry/ExternalAtmosphericTable/externalAtmosphericTable.module.css create mode 100644 src/shared/components/RocketDry/ExternalAtmosphericTable/index.ts create mode 100644 src/shared/components/RocketDry/InternalAtmosphericTable/InternalAtmosphericTable.tsx create mode 100644 src/shared/components/RocketDry/InternalAtmosphericTable/index.ts create mode 100644 src/shared/components/RocketDry/InternalAtmosphericTable/internalAtmosphericTable.module.css create mode 100644 src/shared/components/RocketDry/MoistureAtmospheric/MoistureAtmospheric.tsx create mode 100644 src/shared/components/RocketDry/MoistureAtmospheric/MoistureAtmosphericWrapper/MoistureAtmosphericWrapper.tsx create mode 100644 src/shared/components/RocketDry/MoistureAtmospheric/MoistureAtmosphericWrapper/index.ts create mode 100644 src/shared/components/RocketDry/MoistureAtmospheric/index.ts create mode 100644 src/shared/components/RocketDry/MoistureAtmospheric/moistureAtmospheric.module.css create mode 100644 src/shared/components/RocketDry/MoistureLogsTable/MoistureLogsTable.tsx create mode 100644 src/shared/components/RocketDry/MoistureLogsTable/index.ts create mode 100644 src/shared/components/RocketDry/MoistureLogsTable/moistureLogsTable.module.css create mode 100644 src/shared/components/RocketDry/NoRecordingsPlaceholder/NoRecordingsPlaceholder.tsx create mode 100644 src/shared/components/RocketDry/NoRecordingsPlaceholder/index.ts create mode 100644 src/shared/components/RocketDry/NoRecordingsPlaceholder/noRecordingsPlaceholder.module.css create mode 100644 src/shared/components/RocketDry/RocketDryBody/RocketDryBody.tsx create mode 100644 src/shared/components/RocketDry/RocketDryBody/index.ts create mode 100644 src/shared/components/RocketDry/RocketDryBody/rocketDryBody.module.css create mode 100644 src/shared/components/RocketDry/RocketDryLocationAccordion/RocketDryLocationAccordion.tsx create mode 100644 src/shared/components/RocketDry/RocketDryLocationAccordion/index.ts create mode 100644 src/shared/components/RocketDry/RocketDryLocationAccordion/rocketDryLocationAccordion.module.css create mode 100644 src/shared/components/RocketDry/RocketDryRoomHeader/RocketDryRoomHeader.tsx create mode 100644 src/shared/components/RocketDry/RocketDryRoomHeader/index.ts create mode 100644 src/shared/components/RocketDry/RocketDryRoomHeader/rocketDryRoomHeader.module.css create mode 100644 src/shared/components/RocketDry/RocketDryWrapper/RocketDryWrapper.tsx create mode 100644 src/shared/components/RocketDry/RocketDryWrapper/index.ts create mode 100644 src/shared/components/RocketDry/RocketDryWrapper/rocketDryWrapper.module.css create mode 100644 src/shared/components/RocketDry/index.ts create mode 100644 src/shared/components/RocketScan/ChoosePropertyType/ChoosePropertyType.tsx create mode 100644 src/shared/components/RocketScan/ChoosePropertyType/choosePropertyType.module.css create mode 100644 src/shared/components/RocketScan/ChoosePropertyType/index.ts create mode 100644 src/shared/components/RocketScan/InaccessiblePlaceholder/InaccessiblePlaceholder.tsx create mode 100644 src/shared/components/RocketScan/InaccessiblePlaceholder/inaccessiblePlaceholder.module.css create mode 100644 src/shared/components/RocketScan/InaccessiblePlaceholder/index.ts create mode 100644 src/shared/components/RocketScan/LoadingBox/LoadingBox.tsx create mode 100644 src/shared/components/RocketScan/LoadingBox/index.tsx create mode 100644 src/shared/components/RocketScan/LoadingBox/loadingBox.module.css create mode 100644 src/shared/components/RocketScan/LoadingThumbnail/LoadingThumbnail.tsx create mode 100644 src/shared/components/RocketScan/LoadingThumbnail/index.tsx create mode 100644 src/shared/components/RocketScan/LoadingThumbnail/loadingThumbnail.module.css create mode 100644 src/shared/components/RocketScan/MultiUnit/AddRoomPlaceholder/AddRoomPlaceholder.tsx create mode 100644 src/shared/components/RocketScan/MultiUnit/AddRoomPlaceholder/addRoomPlaceholder.module.css create mode 100644 src/shared/components/RocketScan/MultiUnit/AddRoomPlaceholder/index.ts create mode 100644 src/shared/components/RocketScan/MultiUnit/CreateFloorModal/CreateFloorModal.tsx create mode 100644 src/shared/components/RocketScan/MultiUnit/CreateFloorModal/createFloorModal.module.css create mode 100644 src/shared/components/RocketScan/MultiUnit/CreateFloorModal/index.ts create mode 100644 src/shared/components/RocketScan/MultiUnit/CreateUnitModal/CreateUnitModal.tsx create mode 100644 src/shared/components/RocketScan/MultiUnit/CreateUnitModal/createUnitModal.module.css create mode 100644 src/shared/components/RocketScan/MultiUnit/CreateUnitModal/index.ts create mode 100644 src/shared/components/RocketScan/MultiUnit/DeleteLocationModal/DeleteLocationModal.tsx create mode 100644 src/shared/components/RocketScan/MultiUnit/DeleteLocationModal/deleteLocationModal.module.css create mode 100644 src/shared/components/RocketScan/MultiUnit/DeleteLocationModal/index.ts create mode 100644 src/shared/components/RocketScan/MultiUnit/EditLocationModal/EditLocationModal.tsx create mode 100644 src/shared/components/RocketScan/MultiUnit/EditLocationModal/editLocationModal.module.css create mode 100644 src/shared/components/RocketScan/MultiUnit/EditLocationModal/index.ts create mode 100644 src/shared/components/RocketScan/MultiUnit/Location/Location.tsx create mode 100644 src/shared/components/RocketScan/MultiUnit/Location/index.ts create mode 100644 src/shared/components/RocketScan/MultiUnit/Location/location.module.css create mode 100644 src/shared/components/RocketScan/MultiUnit/LocationForm/LocationForm.tsx create mode 100644 src/shared/components/RocketScan/MultiUnit/LocationForm/index.ts create mode 100644 src/shared/components/RocketScan/MultiUnit/LocationForm/locationForm.module.css create mode 100644 src/shared/components/RocketScan/MultiUnit/Locations/Locations.tsx create mode 100644 src/shared/components/RocketScan/MultiUnit/Locations/index.ts create mode 100644 src/shared/components/RocketScan/MultiUnit/Locations/locationts.module.css create mode 100644 src/shared/components/RocketScan/MultiUnit/index.ts create mode 100644 src/shared/components/RocketScan/PhotoView/Carousal/Carousal/Carousal.tsx create mode 100644 src/shared/components/RocketScan/PhotoView/Carousal/Carousal/carousel.module.css create mode 100644 src/shared/components/RocketScan/PhotoView/Carousal/Carousal/index.ts create mode 100644 src/shared/components/RocketScan/PhotoView/Carousal/CarouselItem/CarouselItem.tsx create mode 100644 src/shared/components/RocketScan/PhotoView/Carousal/CarouselItem/carouselItem.module.css create mode 100644 src/shared/components/RocketScan/PhotoView/Carousal/CarouselItem/index.ts create mode 100644 src/shared/components/RocketScan/PhotoView/Carousal/index.ts create mode 100644 src/shared/components/RocketScan/PhotoView/PhotoSettings/PhotoSettings/PhotoSettings.tsx create mode 100644 src/shared/components/RocketScan/PhotoView/PhotoSettings/PhotoSettings/index.ts create mode 100644 src/shared/components/RocketScan/PhotoView/PhotoSettings/PhotoSettings/photoSettings.module.css create mode 100644 src/shared/components/RocketScan/PhotoView/PhotoSettings/index.ts create mode 100644 src/shared/components/RocketScan/PhotoView/PhotoView/PhotoView.tsx create mode 100644 src/shared/components/RocketScan/PhotoView/PhotoView/index.ts create mode 100644 src/shared/components/RocketScan/PhotoView/PhotoView/photoView.module.css create mode 100644 src/shared/components/RocketScan/PhotoView/index.ts create mode 100644 src/shared/components/RocketScan/RocketScanWrapper/RocketScanWrapper.tsx create mode 100644 src/shared/components/RocketScan/RocketScanWrapper/index.ts create mode 100644 src/shared/components/RocketScan/RocketScanWrapper/rocketScanWrapper.module.css create mode 100644 src/shared/components/RocketScan/RoomTile/RoomTile.tsx create mode 100644 src/shared/components/RocketScan/RoomTile/index.ts create mode 100644 src/shared/components/RocketScan/RoomTile/roomTile.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/AddCustomForm/AddCustomForm.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/AddCustomForm/addCustomForm.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/AddCustomForm/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/CreateRoom/CreateRoom/CreateRoom.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/CreateRoom/CreateRoom/createRoom.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/CreateRoom/CreateRoom/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/CreateRoom/RoomTypeItem/RoomTypeItem.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/CreateRoom/RoomTypeItem/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/CreateRoom/RoomTypeItem/roomTypeItem.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/CreateRoom/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialToast/DamagedMaterialToast.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialToast/damagedMaterialToast.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialToast/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterials/DamagedMaterials.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterials/damagedMaterials.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterials/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsPlaceholder/DamagedMaterialsPlaceholder.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsPlaceholder/damagedMaterialsPlaceholder.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsPlaceholder/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterial/DamagedMaterial.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterial/damagedMaterial.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterial/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterialScope/DamagedMaterialScope.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterialScope/damagedMaterialScope.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterialScope/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterialViewList/DamagedMaterialViewList.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterialViewList/damagedMaterialViewList.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterialViewList/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterialsModal/DamagedMaterialsModal.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterialsModal/damagedMaterialsModal.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterialsModal/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterialsView/DamagedMaterialsView.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterialsView/damagedMaterialsView.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/DamagedMaterialsView/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsView/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsWrapper/DamagedMaterialsWrapper.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/DamagedMaterialsWrapper/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/DeleteRoomModal/DeleteRoomModal.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/DeleteRoomModal/deleteRoomModal.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/DeleteRoomModal/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/EmptyRoomsPlaceholder/EmptyRoomsPlaceholder.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/EmptyRoomsPlaceholder/emptyRoomsPlaceholder.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/EmptyRoomsPlaceholder/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/PhotoFilter/PhotoFilter.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/PhotoFilter/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/PhotoFilter/photo.filter.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/PhotosFilter/CategoryTypeButton/CategoryTypeButton.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/PhotosFilter/CategoryTypeButton/categoryTypeButton.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/PhotosFilter/CategoryTypeButton/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/PhotosFilter/PhotosFilter.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/PhotosFilter/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/PhotosFilter/photosFilter.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/RoomButtons/RoomButtons.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/RoomButtons/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/DamageTypeButton/DamageTypeButton.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/DamageTypeButton/damageTypeButton.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/DamageTypeButton/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/DamageTypesMenu/DamageTypesMenu.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/DamageTypesMenu/damageTypesMenu.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/DamageTypesMenu/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/DamagedMaterialRow/DamagedMaterialRow.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/DamagedMaterialRow/damagedMaterialRow.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/DamagedMaterialRow/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/DropZone/DropZone.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/DropZone/dropzone.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/DropZone/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/Gallery/Gallery.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/Gallery/gallery.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/Gallery/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/NoPhotoPlaceholder/NoPhotoPlaceholder.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/NoPhotoPlaceholder/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/NoPhotoPlaceholder/noPhotoPlaceholder.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/Photos/Photo/Photo.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/Photos/Photo/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/Photos/Photo/photo.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/Photos/Photos/Photos.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/Photos/Photos/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/Photos/Photos/photos.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/Photos/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/Gallery/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/ScopeOfWorkDropdown/ScopeOfWorkDropdown.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/ScopeOfWorkDropdown/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/ScopeOfWorkDropdown/scopeOfWorkDropdown.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/RoomContent/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomLevel/RoomLevel.tsx create mode 100644 src/shared/components/RocketScan/RoomsView/RoomLevel/index.ts create mode 100644 src/shared/components/RocketScan/RoomsView/RoomLevel/roomLevel.module.css create mode 100644 src/shared/components/RocketScan/RoomsView/index.ts create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/DeletePhotosPreviewModal/DeletePhotosPreviewModal.tsx create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/DeletePhotosPreviewModal/deletePhotosPreviewModal.module.css create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/DeletePhotosPreviewModal/index.ts create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/PhotoSharePreviewModal/PhotoShareLink/PhotoShareLink.tsx create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/PhotoSharePreviewModal/PhotoShareLink/index.ts create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/PhotoSharePreviewModal/PhotoShareLink/photoShareLink.module.css create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/PhotoSharePreviewModal/PhotoSharePreviewModal.tsx create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/PhotoSharePreviewModal/PhotoShareToast/PhotoShareToast.tsx create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/PhotoSharePreviewModal/PhotoShareToast/index.ts create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/PhotoSharePreviewModal/PhotoShareToast/photoShareToast.module.css create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/PhotoSharePreviewModal/SelectedPhoto/SelectedPhoto.tsx create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/PhotoSharePreviewModal/SelectedPhoto/index.ts create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/PhotoSharePreviewModal/SelectedPhoto/selectedPhoto.module.css create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/PhotoSharePreviewModal/index.ts create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/PhotoSharePreviewModal/photoSharePreviewModal.module.css create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/SelectActionsCentre.tsx create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/index.ts create mode 100644 src/shared/components/RocketScan/SelectActionsCentre/selectActionsCentre.module.css create mode 100644 src/shared/components/RocketScan/index.ts create mode 100644 src/shared/components/RoleDropDown/RoleDropDown.tsx create mode 100644 src/shared/components/RoleDropDown/index.ts create mode 100644 src/shared/components/RoleDropDown/roleDropDown.module.css create mode 100644 src/shared/components/Rooms/CreateRoom/CreateRoom.tsx create mode 100644 src/shared/components/Rooms/CreateRoom/RoomTypeItem/RoomTypeItem.tsx create mode 100644 src/shared/components/Rooms/CreateRoom/RoomTypeItem/index.ts create mode 100644 src/shared/components/Rooms/CreateRoom/RoomTypeItem/roomTypeItem.module.css create mode 100644 src/shared/components/Rooms/CreateRoom/createRoom.module.css create mode 100644 src/shared/components/Rooms/CreateRoom/index.ts create mode 100644 src/shared/components/Rooms/RoomLevel/RoomLevel.tsx create mode 100644 src/shared/components/Rooms/RoomLevel/index.ts create mode 100644 src/shared/components/Rooms/RoomLevel/roomLevel.module.css create mode 100644 src/shared/components/Rooms/RoomTile/RoomTile.tsx create mode 100644 src/shared/components/Rooms/RoomTile/index.ts create mode 100644 src/shared/components/Rooms/RoomTile/roomTile.module.css create mode 100644 src/shared/components/SearchBox/SearchBox.tsx create mode 100644 src/shared/components/SearchBox/index.ts create mode 100644 src/shared/components/SearchBox/searchBox.module.css create mode 100644 src/shared/components/SecondarySpinner/SecondarySpinner.tsx create mode 100644 src/shared/components/SecondarySpinner/index.tsx create mode 100644 src/shared/components/SecondarySpinner/secondarySpinner.module.css create mode 100644 src/shared/components/Selectors/LevelSelector/LevelSelector.tsx create mode 100644 src/shared/components/Selectors/LevelSelector/index.ts create mode 100644 src/shared/components/Selectors/LevelSelector/levelSelector.module.css create mode 100644 src/shared/components/Selectors/UnitLink/UnitLink.tsx create mode 100644 src/shared/components/Selectors/UnitLink/index.ts create mode 100644 src/shared/components/Selectors/UnitLink/unitLink.module.css create mode 100644 src/shared/components/Selectors/UnitSelector/UnitSelector.tsx create mode 100644 src/shared/components/Selectors/UnitSelector/index.ts create mode 100644 src/shared/components/Selectors/UnitSelector/unitSelector.module.css create mode 100644 src/shared/components/Selectors/UnitsMenu/Item/Item.tsx create mode 100644 src/shared/components/Selectors/UnitsMenu/Item/index.ts create mode 100644 src/shared/components/Selectors/UnitsMenu/Item/item.module.css create mode 100644 src/shared/components/Selectors/UnitsMenu/UnitsMenu.tsx create mode 100644 src/shared/components/Selectors/UnitsMenu/index.ts create mode 100644 src/shared/components/SideBar/SideBar.tsx create mode 100644 src/shared/components/SideBar/SideBarFixed/SideBarFixed.tsx create mode 100644 src/shared/components/SideBar/SideBarFixed/index.ts create mode 100644 src/shared/components/SideBar/SideBarFixed/sideBarFixed.module.css create mode 100644 src/shared/components/SideBar/SideBarNav/SideBarNav.tsx create mode 100644 src/shared/components/SideBar/SideBarNav/index.ts create mode 100644 src/shared/components/SideBar/SideBarNav/sideBarNav.module.css create mode 100644 src/shared/components/SideBar/SideBarNavItem/SideBarNavItem.tsx create mode 100644 src/shared/components/SideBar/SideBarNavItem/index.ts create mode 100644 src/shared/components/SideBar/SideBarNavItem/sideBarNavItem.module.css create mode 100644 src/shared/components/SideBar/index.ts create mode 100644 src/shared/components/SideBar/sideBar.module.css create mode 100644 src/shared/components/SignIn/Blocked/Blocked.tsx create mode 100644 src/shared/components/SignIn/Blocked/blocked.module.css create mode 100644 src/shared/components/SignIn/Blocked/index.ts create mode 100644 src/shared/components/SignIn/CompanyInviteBanner/CompanyInviteBanner.tsx create mode 100644 src/shared/components/SignIn/CompanyInviteBanner/companyInviteBanner.module.css create mode 100644 src/shared/components/SignIn/CompanyInviteBanner/index.ts create mode 100644 src/shared/components/SignIn/CountryCodeSelector/CountryCodeSelector.tsx create mode 100644 src/shared/components/SignIn/CountryCodeSelector/countryCodeSelector.module.css create mode 100644 src/shared/components/SignIn/CountryCodeSelector/index.ts create mode 100644 src/shared/components/SignIn/ForgotPassword/ForgotPassword/ForgotPassword.tsx create mode 100644 src/shared/components/SignIn/ForgotPassword/ForgotPassword/forgotpassword.module.css create mode 100644 src/shared/components/SignIn/ForgotPassword/ForgotPassword/index.ts create mode 100644 src/shared/components/SignIn/ForgotPassword/ForgotPasswordEmailSent/ForgotPasswordEmailSent.tsx create mode 100644 src/shared/components/SignIn/ForgotPassword/ForgotPasswordEmailSent/forgotPasswordEmailSent.module.css create mode 100644 src/shared/components/SignIn/ForgotPassword/ForgotPasswordEmailSent/index.ts create mode 100644 src/shared/components/SignIn/ForgotPassword/ResetPassword/ResetPassword.tsx create mode 100644 src/shared/components/SignIn/ForgotPassword/ResetPassword/index.ts create mode 100644 src/shared/components/SignIn/ForgotPassword/ResetPassword/resetpassword.module.css create mode 100644 src/shared/components/SignIn/ForgotPassword/index.ts create mode 100644 src/shared/components/SignIn/KeepMeSignedInForgotPassword/KeepMeSignedInForgotPassword.tsx create mode 100644 src/shared/components/SignIn/KeepMeSignedInForgotPassword/index.ts create mode 100644 src/shared/components/SignIn/KeepMeSignedInForgotPassword/keepmesignedin.forgotpassword.module.css create mode 100644 src/shared/components/SignIn/NoCompany/NoCompany.tsx create mode 100644 src/shared/components/SignIn/NoCompany/index.ts create mode 100644 src/shared/components/SignIn/NoCompany/noCompany.module.css create mode 100644 src/shared/components/SignIn/PhoneVerification/PhoneVerification.tsx create mode 100644 src/shared/components/SignIn/PhoneVerification/index.ts create mode 100644 src/shared/components/SignIn/PhoneVerification/phoneVerification.module.css create mode 100644 src/shared/components/SignIn/PhoneVerificationCode/PhoneVerificationCode.tsx create mode 100644 src/shared/components/SignIn/PhoneVerificationCode/index.ts create mode 100644 src/shared/components/SignIn/PhoneVerificationCode/phoneVerificationCode.module.css create mode 100644 src/shared/components/SignIn/SelectAccountType/SelectAccountType.tsx create mode 100644 src/shared/components/SignIn/SelectAccountType/index.ts create mode 100644 src/shared/components/SignIn/SelectAccountType/selectAccountType.module.css create mode 100644 src/shared/components/SignIn/SignInEmail/SignInEmail.tsx create mode 100644 src/shared/components/SignIn/SignInEmail/index.ts create mode 100644 src/shared/components/SignIn/SignInEmail/signIn.email.module.css create mode 100644 src/shared/components/SignIn/SignInHow/SignInHow.tsx create mode 100644 src/shared/components/SignIn/SignInHow/index.ts create mode 100644 src/shared/components/SignIn/SignInHow/signInHow.module.css create mode 100644 src/shared/components/SignIn/SignInWrapper/SignInWrapper.tsx create mode 100644 src/shared/components/SignIn/SignInWrapper/index.ts create mode 100644 src/shared/components/SignIn/SignInWrapper/signIn.wrapper.module.css create mode 100644 src/shared/components/SignIn/SignUpEmail/SignUpEmail.tsx create mode 100644 src/shared/components/SignIn/SignUpEmail/index.ts create mode 100644 src/shared/components/SignIn/SignUpEmail/signUpEmail.module.css create mode 100644 src/shared/components/SignIn/SignUpUserInformation/SignUpUserInformation.tsx create mode 100644 src/shared/components/SignIn/SignUpUserInformation/index.ts create mode 100644 src/shared/components/SignIn/SignUpUserInformation/signUpUserInformation.module.css create mode 100644 src/shared/components/SignIn/WelcomeAboard/WelcomeAboard.tsx create mode 100644 src/shared/components/SignIn/WelcomeAboard/index.ts create mode 100644 src/shared/components/SignIn/WelcomeAboard/welcomeAboard.module.css create mode 100644 src/shared/components/SignIn/index.ts create mode 100644 src/shared/components/SocialMedia/SocialMedia.tsx create mode 100644 src/shared/components/SocialMedia/index.ts create mode 100644 src/shared/components/SocialMedia/socialMedia.module.css create mode 100644 src/shared/components/SourceMarker/SourceMarker.tsx create mode 100644 src/shared/components/SourceMarker/index.ts create mode 100644 src/shared/components/SourceMarker/sourceMarker.module.css create mode 100644 src/shared/components/Span/Span.tsx create mode 100644 src/shared/components/Span/index.ts create mode 100644 src/shared/components/Spinner/Spinner.tsx create mode 100644 src/shared/components/Spinner/index.ts create mode 100644 src/shared/components/Spinner/spinner.module.css create mode 100644 src/shared/components/SpinnerBlock/SpinnerBlock.tsx create mode 100644 src/shared/components/SpinnerBlock/index.ts create mode 100644 src/shared/components/SpinnerBlock/spinnerBlock.module.css create mode 100644 src/shared/components/TabContentBody/MultiUnitBody/MultiUnitBody.tsx create mode 100644 src/shared/components/TabContentBody/MultiUnitBody/index.ts create mode 100644 src/shared/components/TabContentBody/MultiUnitBody/multiUnitBody.module.css create mode 100644 src/shared/components/TabContentBody/index.ts create mode 100644 src/shared/components/TabContentHeader/TabContentHeader.tsx create mode 100644 src/shared/components/TabContentHeader/index.ts create mode 100644 src/shared/components/TabContentHeader/tabContentHeader.module.css create mode 100644 src/shared/components/Table/Table/Table.tsx create mode 100644 src/shared/components/Table/Table/index.ts create mode 100644 src/shared/components/Table/TableBody/TableBody.tsx create mode 100644 src/shared/components/Table/TableBody/index.ts create mode 100644 src/shared/components/Table/TableCaption/TableCaption.tsx create mode 100644 src/shared/components/Table/TableCaption/index.ts create mode 100644 src/shared/components/Table/TableColumn/TableColumn.tsx create mode 100644 src/shared/components/Table/TableColumn/index.ts create mode 100644 src/shared/components/Table/TableFooter/TableFooter.tsx create mode 100644 src/shared/components/Table/TableFooter/index.ts create mode 100644 src/shared/components/Table/TableHeadItem/TableHeadItem.tsx create mode 100644 src/shared/components/Table/TableHeadItem/index.ts create mode 100644 src/shared/components/Table/TableHeadItem/tableHeadItem.module.css create mode 100644 src/shared/components/Table/TableHeader/TableHeader.tsx create mode 100644 src/shared/components/Table/TableHeader/index.ts create mode 100644 src/shared/components/Table/TableOld.tsx create mode 100644 src/shared/components/Table/TableRow/TableRow.tsx create mode 100644 src/shared/components/Table/TableRow/index.ts create mode 100644 src/shared/components/Table/TableTh/TableTh.tsx create mode 100644 src/shared/components/Table/TableTh/index.ts create mode 100644 src/shared/components/Table/index.ts create mode 100644 src/shared/components/Tabs/LocationsTabs/LocationsTabs.tsx create mode 100644 src/shared/components/Tabs/LocationsTabs/index.ts create mode 100644 src/shared/components/Tabs/LocationsTabs/locations.tabs.module.css create mode 100644 src/shared/components/Tabs/MultiUnitRoomTabs/MultiUnitRoomTabs.tsx create mode 100644 src/shared/components/Tabs/MultiUnitRoomTabs/index.ts create mode 100644 src/shared/components/Tabs/MultiUnitRoomTabs/multiUnitRoom.tabs.module.css create mode 100644 src/shared/components/Tabs/MultiUnitTabs/MultiUnitTabs.tsx create mode 100644 src/shared/components/Tabs/MultiUnitTabs/index.ts create mode 100644 src/shared/components/Tabs/MultiUnitTabs/multiUnit.tabs.module.css create mode 100644 src/shared/components/Tabs/PeopleTabs/PeopleTabs.tsx create mode 100644 src/shared/components/Tabs/PeopleTabs/index.ts create mode 100644 src/shared/components/Tabs/PeopleTabs/people.tabs.module.css create mode 100644 src/shared/components/Tabs/ProjectTabMenu/ProjectTabMenu.tsx create mode 100644 src/shared/components/Tabs/ProjectTabMenu/index.ts create mode 100644 src/shared/components/Tabs/ProjectTabMenu/projectTabMenu.module.css create mode 100644 src/shared/components/Tabs/ProjectsTabMenu/ProjectsTabMenu.tsx create mode 100644 src/shared/components/Tabs/ProjectsTabMenu/index.ts create mode 100644 src/shared/components/Tabs/ProjectsTabMenu/projectsTabMenu.module.css create mode 100644 src/shared/components/Tabs/ProjectsTabs/MobileProjectsTabs.tsx create mode 100644 src/shared/components/Tabs/ProjectsTabs/index.ts create mode 100644 src/shared/components/Tabs/ProjectsTabs/mobileProjectsTabs.module.css create mode 100644 src/shared/components/Tabs/Tab/Tab.tsx create mode 100644 src/shared/components/Tabs/Tab/index.ts create mode 100644 src/shared/components/Tabs/Tab/tab.module.css create mode 100644 src/shared/components/Tabs/TabContent/TabContent.tsx create mode 100644 src/shared/components/Tabs/TabContent/index.ts create mode 100644 src/shared/components/Tabs/index.ts create mode 100644 src/shared/components/TabsMenu/TabsMenu.tsx create mode 100644 src/shared/components/TabsMenu/index.ts create mode 100644 src/shared/components/TabsMenu/tabsMenu.module.css create mode 100644 src/shared/components/TextArea/TextArea.tsx create mode 100644 src/shared/components/TextArea/index.ts create mode 100644 src/shared/components/TextArea/textArea.module.css create mode 100644 src/shared/components/TextBox/TextBox.tsx create mode 100644 src/shared/components/TextBox/index.ts create mode 100644 src/shared/components/Thumbnail/LoadingThumbnail/LoadingThumbnail.tsx create mode 100644 src/shared/components/Thumbnail/LoadingThumbnail/index.ts create mode 100644 src/shared/components/Thumbnail/LoadingThumbnail/loadingThumbnail.module.css create mode 100644 src/shared/components/Thumbnail/ThumbOverlay/ThumbOverlay.tsx create mode 100644 src/shared/components/Thumbnail/ThumbOverlay/index.ts create mode 100644 src/shared/components/Thumbnail/ThumbOverlay/thumbOverlay.module.css create mode 100644 src/shared/components/Thumbnail/Thumbnail/Thumbnail.tsx create mode 100644 src/shared/components/Thumbnail/Thumbnail/index.ts create mode 100644 src/shared/components/Thumbnail/Thumbnail/thumbnail.module.css create mode 100644 src/shared/components/Thumbnail/index.ts create mode 100644 src/shared/components/Toast/GeneralToast/GeneralToast.tsx create mode 100644 src/shared/components/Toast/GeneralToast/generalToast.module.css create mode 100644 src/shared/components/Toast/GeneralToast/index.ts create mode 100644 src/shared/components/Toast/Toast/Toast.tsx create mode 100644 src/shared/components/Toast/Toast/index.ts create mode 100644 src/shared/components/Toast/Toast/toast.module.css create mode 100644 src/shared/components/Toast/index.ts create mode 100644 src/shared/components/Toggle/Toggle.tsx create mode 100644 src/shared/components/Toggle/index.ts create mode 100644 src/shared/components/Toggle/toggle.module.css create mode 100644 src/shared/components/Units/CreateFloor/CreateFloor.tsx create mode 100644 src/shared/components/Units/CreateFloor/createFloor.module.css create mode 100644 src/shared/components/Units/CreateFloor/index.ts create mode 100644 src/shared/components/Units/CreateUnit/CreateUnit.tsx create mode 100644 src/shared/components/Units/CreateUnit/createUnit.module.css create mode 100644 src/shared/components/Units/CreateUnit/index.ts create mode 100644 src/shared/components/User/PhotoCategories/CategoryRow/CategoryRow.tsx create mode 100644 src/shared/components/User/PhotoCategories/CategoryRow/categoryRow.module.css create mode 100644 src/shared/components/User/PhotoCategories/CategoryRow/index.ts create mode 100644 src/shared/components/User/PhotoCategories/EditPhotoCategories/EditPhotoCategories.tsx create mode 100644 src/shared/components/User/PhotoCategories/EditPhotoCategories/editPhotoCategories.module.css create mode 100644 src/shared/components/User/PhotoCategories/EditPhotoCategories/index.ts create mode 100644 src/shared/components/User/PhotoCategories/PhotoCategories/PhotoCategories.tsx create mode 100644 src/shared/components/User/PhotoCategories/PhotoCategories/index.ts create mode 100644 src/shared/components/User/PhotoCategories/PhotoCategories/photoCategories.module.css create mode 100644 src/shared/components/User/PhotoCategories/index.ts create mode 100644 src/shared/components/User/index.ts create mode 100644 src/shared/components/Validation/ValidateBackGround/ValidateBackGround.tsx create mode 100644 src/shared/components/Validation/ValidateBackGround/index.ts create mode 100644 src/shared/components/Validation/ValidateBackGround/validation.background.wrapper.module.css create mode 100644 src/shared/components/Validation/index.ts create mode 100644 src/shared/containers/ActionButtonWrapper/ActionButtonWrapper.tsx create mode 100644 src/shared/containers/ActionButtonWrapper/index.ts create mode 100644 src/shared/containers/AddLocationTab/AddLocationTab.tsx create mode 100644 src/shared/containers/AddLocationTab/ChoosePropertyType/ChoosePropertyType.tsx create mode 100644 src/shared/containers/AddLocationTab/ChoosePropertyType/choosePropertyType.module.css create mode 100644 src/shared/containers/AddLocationTab/ChoosePropertyType/index.ts create mode 100644 src/shared/containers/AddLocationTab/actions.ts create mode 100644 src/shared/containers/AddLocationTab/index.ts create mode 100644 src/shared/containers/AddLocationTab/reducer.ts create mode 100644 src/shared/containers/AddLocationTab/selector.ts create mode 100644 src/shared/containers/Address/CountryAutocomplete/CountryAutocomplete.tsx create mode 100644 src/shared/containers/Address/CountryAutocomplete/Models/CountryModel/CountryModel.ts create mode 100644 src/shared/containers/Address/CountryAutocomplete/Models/CountryModel/index.ts create mode 100644 src/shared/containers/Address/CountryAutocomplete/index.ts create mode 100644 src/shared/containers/Address/GoogleAutocomplete/GoogleAutocomplete.tsx create mode 100644 src/shared/containers/Address/GoogleAutocomplete/index.ts create mode 100644 src/shared/containers/Address/ProvinceAutocomplete/Models/ProvinceModel/ProvinceModel.ts create mode 100644 src/shared/containers/Address/ProvinceAutocomplete/Models/ProvinceModel/index.ts create mode 100644 src/shared/containers/Address/ProvinceAutocomplete/ProvinceAutocomplete.tsx create mode 100644 src/shared/containers/Address/ProvinceAutocomplete/index.ts create mode 100644 src/shared/containers/Address/actions.ts create mode 100644 src/shared/containers/Address/index.ts create mode 100644 src/shared/containers/Address/reducer.ts create mode 100644 src/shared/containers/Auth/GuestWrapper/GuestWrapper.tsx create mode 100644 src/shared/containers/Auth/GuestWrapper/index.ts create mode 100644 src/shared/containers/Auth/actions.ts create mode 100644 src/shared/containers/Auth/index.ts create mode 100644 src/shared/containers/Auth/reducer.ts create mode 100644 src/shared/containers/Auth/selector.ts create mode 100644 src/shared/containers/AutoFocusInput/AutoFocusInput.tsx create mode 100644 src/shared/containers/AutoFocusInput/index.ts create mode 100644 src/shared/containers/AutoFocusTextArea/AutoFocusTextArea.tsx create mode 100644 src/shared/containers/AutoFocusTextArea/index.ts create mode 100644 src/shared/containers/Button/ProjectScreenButton/ProjectScreenButton.tsx create mode 100644 src/shared/containers/Button/ProjectScreenButton/index.ts create mode 100644 src/shared/containers/Company/actions.ts create mode 100644 src/shared/containers/Company/index.ts create mode 100644 src/shared/containers/Company/reducers.ts create mode 100644 src/shared/containers/Company/selectors.ts create mode 100644 src/shared/containers/Core/actions.ts create mode 100644 src/shared/containers/Core/index.ts create mode 100644 src/shared/containers/Core/reducer.ts create mode 100644 src/shared/containers/Core/selectors.ts create mode 100644 src/shared/containers/Crew/Crew/Crew.tsx create mode 100644 src/shared/containers/Crew/Crew/crew.module.css create mode 100644 src/shared/containers/Crew/Crew/index.ts create mode 100644 src/shared/containers/Crew/Member/Member.tsx create mode 100644 src/shared/containers/Crew/Member/index.ts create mode 100644 src/shared/containers/Crew/Members/Members.tsx create mode 100644 src/shared/containers/Crew/Members/index.ts create mode 100644 src/shared/containers/Crew/Members/members.module.css create mode 100644 src/shared/containers/Crew/SelectMembersModal/SelectMembersModal.tsx create mode 100644 src/shared/containers/Crew/SelectMembersModal/index.ts create mode 100644 src/shared/containers/Crew/SelectMembersModal/selectMembersModal.module.css create mode 100644 src/shared/containers/Crew/actions.ts create mode 100644 src/shared/containers/Crew/index.ts create mode 100644 src/shared/containers/Crew/reducer.ts create mode 100644 src/shared/containers/Crew/selectors.ts create mode 100644 src/shared/containers/Dashboard/Dashboard/Dashboard.tsx create mode 100644 src/shared/containers/Dashboard/Dashboard/index.ts create mode 100644 src/shared/containers/Dashboard/DashboardWrapper/CreateProjectButton/CreateProjectButton.tsx create mode 100644 src/shared/containers/Dashboard/DashboardWrapper/CreateProjectButton/index.ts create mode 100644 src/shared/containers/Dashboard/DashboardWrapper/DashboardWrapper/DashboardWrapper.tsx create mode 100644 src/shared/containers/Dashboard/DashboardWrapper/DashboardWrapper/index.ts create mode 100644 src/shared/containers/Dashboard/DashboardWrapper/SideBar/SideBar.tsx create mode 100644 src/shared/containers/Dashboard/DashboardWrapper/SideBar/index.ts create mode 100644 src/shared/containers/Dashboard/DashboardWrapper/index.ts create mode 100644 src/shared/containers/Dashboard/actions.ts create mode 100644 src/shared/containers/Dashboard/index.ts create mode 100644 src/shared/containers/Dashboard/reducer.ts create mode 100644 src/shared/containers/Dashboard/selector.ts create mode 100644 src/shared/containers/DropDown/DropDownItem/DropDownItem.tsx create mode 100644 src/shared/containers/DropDown/DropDownItem/index.ts create mode 100644 src/shared/containers/DropDown/index.ts create mode 100644 src/shared/containers/DropZone/DropZone.tsx create mode 100644 src/shared/containers/DropZone/actions.ts create mode 100644 src/shared/containers/DropZone/index.ts create mode 100644 src/shared/containers/DropZone/reducer.ts create mode 100644 src/shared/containers/DropZone/selector.ts create mode 100644 src/shared/containers/FloorDropDown/FloorDropDown.tsx create mode 100644 src/shared/containers/FloorDropDown/index.ts create mode 100644 src/shared/containers/Form/Form.tsx create mode 100644 src/shared/containers/Form/index.ts create mode 100644 src/shared/containers/GalleryHeader/GalleryHeader.tsx create mode 100644 src/shared/containers/GalleryHeader/galleryHeader.module.css create mode 100644 src/shared/containers/GalleryHeader/index.ts create mode 100644 src/shared/containers/HubSpotModal/HubSpotModal.tsx create mode 100644 src/shared/containers/HubSpotModal/index.ts create mode 100644 src/shared/containers/ImageDeleteModal/ImageDeleteModal.tsx create mode 100644 src/shared/containers/ImageDeleteModal/index.ts create mode 100644 src/shared/containers/ImageTile/ImageTile.tsx create mode 100644 src/shared/containers/ImageTile/imageTile.module.css create mode 100644 src/shared/containers/ImageTile/index.ts create mode 100644 src/shared/containers/InviteEmployees/InviteEmployees.tsx create mode 100644 src/shared/containers/InviteEmployees/actions.ts create mode 100644 src/shared/containers/InviteEmployees/index.ts create mode 100644 src/shared/containers/InviteEmployees/reducer.ts create mode 100644 src/shared/containers/InviteEmployees/selectors.ts create mode 100644 src/shared/containers/Layouts/ProjectTabsLayout/ProjectTabsLayout.tsx create mode 100644 src/shared/containers/Layouts/ProjectTabsLayout/index.ts create mode 100644 src/shared/containers/Layouts/TabsMenu/TabsMenu.tsx create mode 100644 src/shared/containers/Layouts/TabsMenu/index.ts create mode 100644 src/shared/containers/Layouts/index.ts create mode 100644 src/shared/containers/Location/Location.tsx create mode 100644 src/shared/containers/Location/index.ts create mode 100644 src/shared/containers/LocationsPlaceholder/LocationsPlaceholder.tsx create mode 100644 src/shared/containers/LocationsPlaceholder/index.ts create mode 100644 src/shared/containers/LocationsPlaceholder/locationsPlaceholder.module.css create mode 100644 src/shared/containers/MapPin/MapPin.tsx create mode 100644 src/shared/containers/MapPin/index.ts create mode 100644 src/shared/containers/MobileWarningModal/MobileWarningModal.tsx create mode 100644 src/shared/containers/MobileWarningModal/index.ts create mode 100644 src/shared/containers/MultiUnitAdd/MultiUnitAdd.tsx create mode 100644 src/shared/containers/MultiUnitAdd/index.ts create mode 100644 src/shared/containers/MultiUnitAdd/multiUnitAdd.module.css create mode 100644 src/shared/containers/Nav/Nav.tsx create mode 100644 src/shared/containers/Nav/actions.ts create mode 100644 src/shared/containers/Nav/index.ts create mode 100644 src/shared/containers/Nav/nav.module.css create mode 100644 src/shared/containers/Nav/reducer.ts create mode 100644 src/shared/containers/NotFoundWrapper/NotFoundWrapper.tsx create mode 100644 src/shared/containers/NotFoundWrapper/index.ts create mode 100644 src/shared/containers/Notes/EditNote/EditNote.tsx create mode 100644 src/shared/containers/Notes/EditNote/index.ts create mode 100644 src/shared/containers/Notes/Models/NotesModel.ts create mode 100644 src/shared/containers/Notes/Models/index.ts create mode 100644 src/shared/containers/Notes/NoteItem/NoteItem.tsx create mode 100644 src/shared/containers/Notes/NoteItem/index.ts create mode 100644 src/shared/containers/Notes/Notes/Notes.tsx create mode 100644 src/shared/containers/Notes/Notes/index.ts create mode 100644 src/shared/containers/Notes/Notes/notes.module.css create mode 100644 src/shared/containers/Notes/NotesDamagedMaterials/NotesDamagedMaterials.tsx create mode 100644 src/shared/containers/Notes/NotesDamagedMaterials/index.ts create mode 100644 src/shared/containers/Notes/NotesFilter/NotesFilter.tsx create mode 100644 src/shared/containers/Notes/NotesFilter/index.ts create mode 100644 src/shared/containers/Notes/NotesHeader/NotesHeader.tsx create mode 100644 src/shared/containers/Notes/NotesHeader/index.ts create mode 100644 src/shared/containers/Notes/NotesLocations/NotesLocation/NotesLocation.tsx create mode 100644 src/shared/containers/Notes/NotesLocations/NotesLocation/index.ts create mode 100644 src/shared/containers/Notes/NotesLocations/NotesLocations/NotesLocations.tsx create mode 100644 src/shared/containers/Notes/NotesLocations/NotesLocations/index.ts create mode 100644 src/shared/containers/Notes/NotesLocations/index.ts create mode 100644 src/shared/containers/Notes/NotesPhotos/NotesPhoto/NotesPhoto.tsx create mode 100644 src/shared/containers/Notes/NotesPhotos/NotesPhoto/index.ts create mode 100644 src/shared/containers/Notes/NotesPhotos/NotesPhoto/notesPhoto.module.css create mode 100644 src/shared/containers/Notes/NotesPhotos/NotesPhotos/NotesPhotos.tsx create mode 100644 src/shared/containers/Notes/NotesPhotos/NotesPhotos/index.ts create mode 100644 src/shared/containers/Notes/NotesPhotos/NotesPhotos/notesPhotos.module.css create mode 100644 src/shared/containers/Notes/NotesPhotos/index.ts create mode 100644 src/shared/containers/Notes/NotesRooms/NotesRoom/NotesRoom.tsx create mode 100644 src/shared/containers/Notes/NotesRooms/NotesRoom/index.ts create mode 100644 src/shared/containers/Notes/NotesRooms/NotesRooms/NotesRooms.tsx create mode 100644 src/shared/containers/Notes/NotesRooms/NotesRooms/index.ts create mode 100644 src/shared/containers/Notes/NotesRooms/index.ts create mode 100644 src/shared/containers/Notes/NotesSearch/NotesSearch.tsx create mode 100644 src/shared/containers/Notes/NotesSearch/index.ts create mode 100644 src/shared/containers/Notes/NotesSearch/notesSearch.module.css create mode 100644 src/shared/containers/Notes/actions.ts create mode 100644 src/shared/containers/Notes/index.ts create mode 100644 src/shared/containers/Notes/reducer.ts create mode 100644 src/shared/containers/Notes/selectors.ts create mode 100644 src/shared/containers/OptionToolBar/OptionToolBar.tsx create mode 100644 src/shared/containers/OptionToolBar/index.ts create mode 100644 src/shared/containers/People/EmployeeCard/EmployeeCard.tsx create mode 100644 src/shared/containers/People/EmployeeCard/index.ts create mode 100644 src/shared/containers/People/People.tsx create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/ContactCard/ContactCard.tsx create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/ContactCard/index.ts create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/ContactTypeAutoComplete/ContactTypeAutoComplete.tsx create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/ContactTypeAutoComplete/index.ts create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/Contacts/Contacts.tsx create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/Contacts/index.ts create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/ContactsTab/ContactsTab.tsx create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/ContactsTab/index.ts create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/CreateContact/CreateContact.tsx create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/CreateContact/index.ts create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/EditContact/EditContact.tsx create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/EditContact/index.ts create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/actions.ts create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/index.ts create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/reducer.ts create mode 100644 src/shared/containers/People/PeopleTabs/ContactsTab/selectors.ts create mode 100644 src/shared/containers/People/PeopleTabs/EmployeesTab/Employees/Employees.tsx create mode 100644 src/shared/containers/People/PeopleTabs/EmployeesTab/Employees/index.ts create mode 100644 src/shared/containers/People/PeopleTabs/EmployeesTab/EmployeesTab/EmployeesTab.tsx create mode 100644 src/shared/containers/People/PeopleTabs/EmployeesTab/EmployeesTab/index.ts create mode 100644 src/shared/containers/People/PeopleTabs/EmployeesTab/actions.ts create mode 100644 src/shared/containers/People/PeopleTabs/EmployeesTab/index.ts create mode 100644 src/shared/containers/People/PeopleTabs/EmployeesTab/reducer.ts create mode 100644 src/shared/containers/People/PeopleTabs/EmployeesTab/selectors.ts create mode 100644 src/shared/containers/People/PeopleTabs/PeopleTabs.tsx create mode 100644 src/shared/containers/People/PeopleTabs/index.ts create mode 100644 src/shared/containers/People/Roles/Roles.tsx create mode 100644 src/shared/containers/People/Roles/index.ts create mode 100644 src/shared/containers/People/Roles/roles.module.css create mode 100644 src/shared/containers/People/index.ts create mode 100644 src/shared/containers/PhotoErrorToast/PhotoErrorToast.tsx create mode 100644 src/shared/containers/PhotoErrorToast/actions.ts create mode 100644 src/shared/containers/PhotoErrorToast/index.ts create mode 100644 src/shared/containers/PhotoErrorToast/reducer.ts create mode 100644 src/shared/containers/PhotoErrorToast/selector.ts create mode 100644 src/shared/containers/PhotoFilter/PhotoFilter.tsx create mode 100644 src/shared/containers/PhotoFilter/index.ts create mode 100644 src/shared/containers/PhotoGallery/PhotoGallery.tsx create mode 100644 src/shared/containers/PhotoGallery/index.ts create mode 100644 src/shared/containers/PhotoView/ImageNotes/ImageNotes.tsx create mode 100644 src/shared/containers/PhotoView/ImageNotes/index.ts create mode 100644 src/shared/containers/PhotoView/PhotoView.tsx create mode 100644 src/shared/containers/PhotoView/PhotoViewWrapper/PhotoViewWrapper.tsx create mode 100644 src/shared/containers/PhotoView/PhotoViewWrapper/index.ts create mode 100644 src/shared/containers/PhotoView/actions.ts create mode 100644 src/shared/containers/PhotoView/index.ts create mode 100644 src/shared/containers/PhotoView/reducer.ts create mode 100644 src/shared/containers/PhotoView/selectors.ts create mode 100644 src/shared/containers/PhotoViewCarousel/CarouselItems/CarouselItems.tsx create mode 100644 src/shared/containers/PhotoViewCarousel/CarouselItems/index.ts create mode 100644 src/shared/containers/PhotoViewCarousel/Models/PhotoModal/PhotoModal.ts create mode 100644 src/shared/containers/PhotoViewCarousel/Models/PhotoModal/index.ts create mode 100644 src/shared/containers/PhotoViewCarousel/Models/index.ts create mode 100644 src/shared/containers/PhotoViewCarousel/PhotoViewCarousel/PhotoViewCarousel.tsx create mode 100644 src/shared/containers/PhotoViewCarousel/PhotoViewCarousel/index.ts create mode 100644 src/shared/containers/PhotoViewCarousel/actions.ts create mode 100644 src/shared/containers/PhotoViewCarousel/index.ts create mode 100644 src/shared/containers/PhotoViewCarousel/reducer.ts create mode 100644 src/shared/containers/PhotoViewCarousel/selector.ts create mode 100644 src/shared/containers/PhotosPlaceholder/PhotosPlaceholder.tsx create mode 100644 src/shared/containers/PhotosPlaceholder/index.ts create mode 100644 src/shared/containers/PhotosPlaceholder/photosPlaceholder.module.css create mode 100644 src/shared/containers/Project/AddLocations/AddLocations.tsx create mode 100644 src/shared/containers/Project/AddLocations/MultiUnitAddRoom/MultiUnitAddRoom.tsx create mode 100644 src/shared/containers/Project/AddLocations/MultiUnitAddRoom/MultiUnitContent/MultiUnitAddContent.tsx create mode 100644 src/shared/containers/Project/AddLocations/MultiUnitAddRoom/MultiUnitContent/index.ts create mode 100644 src/shared/containers/Project/AddLocations/MultiUnitAddRoom/MultiUnitContent/multiUnitContent.module.css create mode 100644 src/shared/containers/Project/AddLocations/MultiUnitAddRoom/MultiUnitHeader/MultiUnitHeader.tsx create mode 100644 src/shared/containers/Project/AddLocations/MultiUnitAddRoom/MultiUnitHeader/index.ts create mode 100644 src/shared/containers/Project/AddLocations/MultiUnitAddRoom/MultiUnitHeader/projectHeader.module.css create mode 100644 src/shared/containers/Project/AddLocations/MultiUnitAddRoom/MultiUnitPhotoGallery/MultiUnitPhotoGallery.tsx create mode 100644 src/shared/containers/Project/AddLocations/MultiUnitAddRoom/MultiUnitPhotoGallery/index.ts create mode 100644 src/shared/containers/Project/AddLocations/MultiUnitAddRoom/MultiUnitRoomGallery/MultiUnitRoomGallery.tsx create mode 100644 src/shared/containers/Project/AddLocations/MultiUnitAddRoom/MultiUnitRoomGallery/index.ts create mode 100644 src/shared/containers/Project/AddLocations/MultiUnitAddRoom/MultiUnitRoomGallery/multiUnitRoomGallery.module.css create mode 100644 src/shared/containers/Project/AddLocations/MultiUnitAddRoom/index.ts create mode 100644 src/shared/containers/Project/AddLocations/index.ts create mode 100644 src/shared/containers/Project/AllLocations/AllLocations.tsx create mode 100644 src/shared/containers/Project/AllLocations/index.ts create mode 100644 src/shared/containers/Project/DeleteProjectModal/DeleteProjectModal.tsx create mode 100644 src/shared/containers/Project/DeleteProjectModal/index.ts create mode 100644 src/shared/containers/Project/EditAddressModal/EditAddressModal.tsx create mode 100644 src/shared/containers/Project/EditAddressModal/index.ts create mode 100644 src/shared/containers/Project/Floor/actions.ts create mode 100644 src/shared/containers/Project/Floor/reducer.ts create mode 100644 src/shared/containers/Project/Floor/selectors.ts create mode 100644 src/shared/containers/Project/MultiUnit/FloorListItem/FloorListItem.tsx create mode 100644 src/shared/containers/Project/MultiUnit/FloorListItem/floorListItem.module.css create mode 100644 src/shared/containers/Project/MultiUnit/FloorListItem/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/FloorRoomTiles/FloorRoomTile/FloorRoomTile.tsx create mode 100644 src/shared/containers/Project/MultiUnit/FloorRoomTiles/FloorRoomTile/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/FloorRoomTiles/FloorRoomTiles.tsx create mode 100644 src/shared/containers/Project/MultiUnit/FloorRoomTiles/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/FloorTile/FloorTile.tsx create mode 100644 src/shared/containers/Project/MultiUnit/FloorTile/floorTile.module.css create mode 100644 src/shared/containers/Project/MultiUnit/FloorTile/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/FloorTiles/FloorTiles.tsx create mode 100644 src/shared/containers/Project/MultiUnit/FloorTiles/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/MultiUnit/MultiUnit.tsx create mode 100644 src/shared/containers/Project/MultiUnit/MultiUnit/MultiUnitTabs/MultiUnitTabs.tsx create mode 100644 src/shared/containers/Project/MultiUnit/MultiUnit/MultiUnitTabs/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/MultiUnit/MultiUnitTabs/multiUnitTabs.module.css create mode 100644 src/shared/containers/Project/MultiUnit/MultiUnit/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/MultiUnit/multiUnit.module.css create mode 100644 src/shared/containers/Project/MultiUnit/RoomTiles/RoomTile/RoomTile.tsx create mode 100644 src/shared/containers/Project/MultiUnit/RoomTiles/RoomTile/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/RoomTiles/RoomTiles.tsx create mode 100644 src/shared/containers/Project/MultiUnit/RoomTiles/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/UnitListItem/UnitListItem.tsx create mode 100644 src/shared/containers/Project/MultiUnit/UnitListItem/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/UnitListItem/unitListItem.module.css create mode 100644 src/shared/containers/Project/MultiUnit/UnitRoomTiles/UnitRoomTile/UnitRoomTile.tsx create mode 100644 src/shared/containers/Project/MultiUnit/UnitRoomTiles/UnitRoomTile/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/UnitRoomTiles/UnitRoomTiles.tsx create mode 100644 src/shared/containers/Project/MultiUnit/UnitRoomTiles/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/UnitTile/UnitTile.tsx create mode 100644 src/shared/containers/Project/MultiUnit/UnitTile/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/UnitTile/unitTile.module.css create mode 100644 src/shared/containers/Project/MultiUnit/UnitTiles/UnitTiles.tsx create mode 100644 src/shared/containers/Project/MultiUnit/UnitTiles/index.ts create mode 100644 src/shared/containers/Project/MultiUnit/index.ts create mode 100644 src/shared/containers/Project/Project/Project.tsx create mode 100644 src/shared/containers/Project/Project/index.ts create mode 100644 src/shared/containers/Project/ProjectAlias/ProjectAlias.tsx create mode 100644 src/shared/containers/Project/ProjectAlias/index.ts create mode 100644 src/shared/containers/Project/ProjectAlias/projectAlias.module.css create mode 100644 src/shared/containers/Project/ProjectOptions/ProjectOptions.tsx create mode 100644 src/shared/containers/Project/ProjectOptions/index.ts create mode 100644 src/shared/containers/Project/ProjectOptions/projectOptions.module.css create mode 100644 src/shared/containers/Project/ProjectTabs/ProjectTabs.tsx create mode 100644 src/shared/containers/Project/ProjectTabs/actions.ts create mode 100644 src/shared/containers/Project/ProjectTabs/index.ts create mode 100644 src/shared/containers/Project/ProjectTabs/reducer.ts create mode 100644 src/shared/containers/Project/Unit/MultiUnitList/MultiUnitList.tsx create mode 100644 src/shared/containers/Project/Unit/MultiUnitList/index.ts create mode 100644 src/shared/containers/Project/Unit/Rooms/Room/Albums/Album/Album.tsx create mode 100644 src/shared/containers/Project/Unit/Rooms/Room/Albums/Album/Photos/Photo/Photo.tsx create mode 100644 src/shared/containers/Project/Unit/Rooms/Room/Albums/Album/Photos/Photo/index.ts create mode 100644 src/shared/containers/Project/Unit/Rooms/Room/Albums/Album/index.ts create mode 100644 src/shared/containers/Project/Unit/Rooms/Room/Albums/Albums.tsx create mode 100644 src/shared/containers/Project/Unit/Rooms/Room/Albums/index.ts create mode 100644 src/shared/containers/Project/Unit/Rooms/Room/Room.tsx create mode 100644 src/shared/containers/Project/Unit/Rooms/Room/index.ts create mode 100644 src/shared/containers/Project/Unit/Rooms/RoomButtons/RoomButtons.tsx create mode 100644 src/shared/containers/Project/Unit/Rooms/RoomButtons/index.ts create mode 100644 src/shared/containers/Project/Unit/Rooms/Rooms.tsx create mode 100644 src/shared/containers/Project/Unit/Rooms/actions.ts create mode 100644 src/shared/containers/Project/Unit/Rooms/index.ts create mode 100644 src/shared/containers/Project/Unit/Rooms/reducer.ts create mode 100644 src/shared/containers/Project/Unit/Rooms/selectors.ts create mode 100644 src/shared/containers/Project/Unit/SingleUnit/SingleUnit.tsx create mode 100644 src/shared/containers/Project/Unit/SingleUnit/index.ts create mode 100644 src/shared/containers/Project/Unit/UnitContent/UnitContent.tsx create mode 100644 src/shared/containers/Project/Unit/UnitContent/index.ts create mode 100644 src/shared/containers/Project/Unit/actions.ts create mode 100644 src/shared/containers/Project/Unit/reducer.ts create mode 100644 src/shared/containers/Project/Unit/selector.ts create mode 100644 src/shared/containers/Project/actions.ts create mode 100644 src/shared/containers/Project/index.ts create mode 100644 src/shared/containers/Project/reducer.ts create mode 100644 src/shared/containers/Project/selectors.ts create mode 100644 src/shared/containers/ProjectContent/Models/RoomModel.ts create mode 100644 src/shared/containers/ProjectContent/Models/RoomTypeModel.ts create mode 100644 src/shared/containers/ProjectContent/Models/index.ts create mode 100644 src/shared/containers/ProjectContent/MultiUnitContent/MultiUnitContent.tsx create mode 100644 src/shared/containers/ProjectContent/MultiUnitContent/index.ts create mode 100644 src/shared/containers/ProjectContent/MultiUnitContent/multiUnitContent.module.css create mode 100644 src/shared/containers/ProjectContent/ProjectContent.tsx create mode 100644 src/shared/containers/ProjectContent/actions.ts create mode 100644 src/shared/containers/ProjectContent/index.ts create mode 100644 src/shared/containers/ProjectContent/projectContent.module.css create mode 100644 src/shared/containers/ProjectContent/reducer.ts create mode 100644 src/shared/containers/ProjectData/ClaimsData/ClaimsData.tsx create mode 100644 src/shared/containers/ProjectData/ClaimsData/ClaimsDataEdit/ClaimsDataEdit.tsx create mode 100644 src/shared/containers/ProjectData/ClaimsData/ClaimsDataEdit/index.ts create mode 100644 src/shared/containers/ProjectData/ClaimsData/ClaimsDataView/ClaimsDataView.tsx create mode 100644 src/shared/containers/ProjectData/ClaimsData/ClaimsDataView/index.ts create mode 100644 src/shared/containers/ProjectData/ClaimsData/UnitClaimsList/EditUnitClaimsModal/DeleteUnitClaimModal/DeleteUnitClaimModal.tsx create mode 100644 src/shared/containers/ProjectData/ClaimsData/UnitClaimsList/EditUnitClaimsModal/DeleteUnitClaimModal/index.ts create mode 100644 src/shared/containers/ProjectData/ClaimsData/UnitClaimsList/EditUnitClaimsModal/EditUnitClaimsModal.tsx create mode 100644 src/shared/containers/ProjectData/ClaimsData/UnitClaimsList/EditUnitClaimsModal/index.ts create mode 100644 src/shared/containers/ProjectData/ClaimsData/UnitClaimsList/UnitClaimsButton/UnitClaimsButton.tsx create mode 100644 src/shared/containers/ProjectData/ClaimsData/UnitClaimsList/UnitClaimsButton/index.ts create mode 100644 src/shared/containers/ProjectData/ClaimsData/UnitClaimsList/UnitClaimsList.tsx create mode 100644 src/shared/containers/ProjectData/ClaimsData/UnitClaimsList/UnitClaimsLocation/UnitClaimsLocation.tsx create mode 100644 src/shared/containers/ProjectData/ClaimsData/UnitClaimsList/UnitClaimsLocation/index.ts create mode 100644 src/shared/containers/ProjectData/ClaimsData/UnitClaimsList/index.ts create mode 100644 src/shared/containers/ProjectData/ClaimsData/UnitClaimsModal/UnitClaimsModal.tsx create mode 100644 src/shared/containers/ProjectData/ClaimsData/UnitClaimsModal/index.ts create mode 100644 src/shared/containers/ProjectData/ClaimsData/actions.ts create mode 100644 src/shared/containers/ProjectData/ClaimsData/index.ts create mode 100644 src/shared/containers/ProjectData/ClaimsData/reducers.ts create mode 100644 src/shared/containers/ProjectData/ClaimsData/selectors.ts create mode 100644 src/shared/containers/ProjectData/LossData/AffectedLocationDamageTypeButton/AffectedLocationDamageTypeButton.tsx create mode 100644 src/shared/containers/ProjectData/LossData/AffectedLocationDamageTypeButton/index.ts create mode 100644 src/shared/containers/ProjectData/LossData/AffectedLocationModal/AffectedLocationModal.tsx create mode 100644 src/shared/containers/ProjectData/LossData/AffectedLocationModal/index.ts create mode 100644 src/shared/containers/ProjectData/LossData/AffectedLocationModal/options.ts create mode 100644 src/shared/containers/ProjectData/LossData/AffectedLocations/AffectedLocations.tsx create mode 100644 src/shared/containers/ProjectData/LossData/AffectedLocations/index.ts create mode 100644 src/shared/containers/ProjectData/LossData/CategoryOfDamageEdit/CategoryOfDamageEdit.tsx create mode 100644 src/shared/containers/ProjectData/LossData/CategoryOfDamageEdit/index.ts create mode 100644 src/shared/containers/ProjectData/LossData/CauseOfDamageEdit/CauseOfDamageEdit.tsx create mode 100644 src/shared/containers/ProjectData/LossData/CauseOfDamageEdit/index.ts create mode 100644 src/shared/containers/ProjectData/LossData/CustomDamageTypeModal/CustomDamageTypeModal.tsx create mode 100644 src/shared/containers/ProjectData/LossData/CustomDamageTypeModal/index.ts create mode 100644 src/shared/containers/ProjectData/LossData/DamageInfo/DamageInfo.tsx create mode 100644 src/shared/containers/ProjectData/LossData/DamageInfo/index.ts create mode 100644 src/shared/containers/ProjectData/LossData/DamageTypes/DamageTypes.tsx create mode 100644 src/shared/containers/ProjectData/LossData/DamageTypes/index.ts create mode 100644 src/shared/containers/ProjectData/LossData/DateOfLossEdit/DateOfLossEdit.tsx create mode 100644 src/shared/containers/ProjectData/LossData/DateOfLossEdit/index.ts create mode 100644 src/shared/containers/ProjectData/LossData/LocationRow/LocationRow.tsx create mode 100644 src/shared/containers/ProjectData/LossData/LocationRow/index.ts create mode 100644 src/shared/containers/ProjectData/LossData/LossData.tsx create mode 100644 src/shared/containers/ProjectData/LossData/LossDataDamageTypeButton/LossDataDamageTypeButton.tsx create mode 100644 src/shared/containers/ProjectData/LossData/LossDataDamageTypeButton/index.ts create mode 100644 src/shared/containers/ProjectData/LossData/actions.ts create mode 100644 src/shared/containers/ProjectData/LossData/index.ts create mode 100644 src/shared/containers/ProjectData/LossData/reducer.ts create mode 100644 src/shared/containers/ProjectData/LossData/selectors.ts create mode 100644 src/shared/containers/ProjectData/OptionsDropDown/OptionsDropDown.tsx create mode 100644 src/shared/containers/ProjectData/OptionsDropDown/index.ts create mode 100644 src/shared/containers/ProjectData/ProjectData/ProjectData.tsx create mode 100644 src/shared/containers/ProjectData/ProjectData/index.ts create mode 100644 src/shared/containers/ProjectData/ProjectDataHeader/ProjectDataHeader.tsx create mode 100644 src/shared/containers/ProjectData/ProjectDataHeader/index.ts create mode 100644 src/shared/containers/ProjectData/ProjectStatusBadge/ProjectStatusBadge.tsx create mode 100644 src/shared/containers/ProjectData/ProjectStatusBadge/index.ts create mode 100644 src/shared/containers/ProjectData/PropertyData/PropertyData.tsx create mode 100644 src/shared/containers/ProjectData/PropertyData/PropertyDataEdit/PropertyDataEdit.tsx create mode 100644 src/shared/containers/ProjectData/PropertyData/PropertyDataEdit/index.ts create mode 100644 src/shared/containers/ProjectData/PropertyData/PropertyDataEdit/propertyDataEdit.module.css create mode 100644 src/shared/containers/ProjectData/PropertyData/actions.ts create mode 100644 src/shared/containers/ProjectData/PropertyData/index.ts create mode 100644 src/shared/containers/ProjectData/PropertyData/reducer.ts create mode 100644 src/shared/containers/ProjectData/PropertyData/selectors.ts create mode 100644 src/shared/containers/ProjectData/index.ts create mode 100644 src/shared/containers/ProjectHeader/ProjectHeader.tsx create mode 100644 src/shared/containers/ProjectHeader/index.ts create mode 100644 src/shared/containers/ProjectHeader/projectHeader.module.css create mode 100644 src/shared/containers/ProjectRow/ProjectRow.tsx create mode 100644 src/shared/containers/ProjectRow/index.ts create mode 100644 src/shared/containers/Projects/CreateProject/CreateProject.tsx create mode 100644 src/shared/containers/Projects/CreateProject/index.ts create mode 100644 src/shared/containers/Projects/CreateProjectMain/CreateProjectMain.tsx create mode 100644 src/shared/containers/Projects/CreateProjectMain/index.ts create mode 100644 src/shared/containers/Projects/DownloadProject/DownloadProject/DownloadProject.tsx create mode 100644 src/shared/containers/Projects/DownloadProject/DownloadProject/downloadProject.module.css create mode 100644 src/shared/containers/Projects/DownloadProject/DownloadProject/index.ts create mode 100644 src/shared/containers/Projects/DownloadProject/index.ts create mode 100644 src/shared/containers/Projects/EditAddress/EditAddress.tsx create mode 100644 src/shared/containers/Projects/EditAddress/index.ts create mode 100644 src/shared/containers/Projects/Modals/CompanyProjectsModal/CompanyProjectsModal.ts create mode 100644 src/shared/containers/Projects/Modals/CompanyProjectsModal/index.ts create mode 100644 src/shared/containers/Projects/Modals/index.ts create mode 100644 src/shared/containers/Projects/PhotoDownloadModal/PhotoDownloadModal.tsx create mode 100644 src/shared/containers/Projects/PhotoDownloadModal/index.ts create mode 100644 src/shared/containers/Projects/Projects.tsx create mode 100644 src/shared/containers/Projects/ProjectsSearch/ProjectsSearch.tsx create mode 100644 src/shared/containers/Projects/ProjectsSearch/index.ts create mode 100644 src/shared/containers/Projects/ProjectsSearch/projectsSearch.module.css create mode 100644 src/shared/containers/Projects/ProjectsTabs/CompletedProjects/CompletedProjects.tsx create mode 100644 src/shared/containers/Projects/ProjectsTabs/CompletedProjects/index.ts create mode 100644 src/shared/containers/Projects/ProjectsTabs/MyProjects/MyProjects.tsx create mode 100644 src/shared/containers/Projects/ProjectsTabs/MyProjects/index.ts create mode 100644 src/shared/containers/Projects/ProjectsTabs/NoProjectsTable/NoProjectsTable.tsx create mode 100644 src/shared/containers/Projects/ProjectsTabs/NoProjectsTable/index.ts create mode 100644 src/shared/containers/Projects/ProjectsTabs/ProjectTabs/ProjectsTabs.tsx create mode 100644 src/shared/containers/Projects/ProjectsTabs/ProjectTabs/index.ts create mode 100644 src/shared/containers/Projects/ProjectsTabs/WipProjects/WipProjects.tsx create mode 100644 src/shared/containers/Projects/ProjectsTabs/WipProjects/index.ts create mode 100644 src/shared/containers/Projects/ProjectsTabs/index.ts create mode 100644 src/shared/containers/Projects/actions.ts create mode 100644 src/shared/containers/Projects/index.ts create mode 100644 src/shared/containers/Projects/reducer.ts create mode 100644 src/shared/containers/Projects/selectors.ts create mode 100644 src/shared/containers/Public/Album/Album.tsx create mode 100644 src/shared/containers/Public/Album/albums.module.css create mode 100644 src/shared/containers/Public/Album/index.ts create mode 100644 src/shared/containers/Public/Albums/Albums.tsx create mode 100644 src/shared/containers/Public/Albums/index.ts create mode 100644 src/shared/containers/Public/Floor/Floor.tsx create mode 100644 src/shared/containers/Public/Floor/index.ts create mode 100644 src/shared/containers/Public/Location/Location.tsx create mode 100644 src/shared/containers/Public/Location/index.ts create mode 100644 src/shared/containers/Public/Photo/Photo.tsx create mode 100644 src/shared/containers/Public/Photo/index.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShare.tsx create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareCarousel/PhotoShareCarousel.tsx create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareCarousel/actions.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareCarousel/index.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareGallery/PhotoShareGallery.tsx create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareGallery/index.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareNoteCard/PhotoShareNoteCard.tsx create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareNoteCard/index.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareSplashView/PhotoShareSplashView.tsx create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareSplashView/index.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/LocationItem/LocationMenuItem.tsx create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/LocationItem/index.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/LocationRoomsMenu/LocationRoomsMenu.tsx create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/LocationRoomsMenu/index.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/PhotoShareWrapper.tsx create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/RoomSelector/RoomSelector.tsx create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/RoomSelector/index.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/SideBarFixed/SideBarFixed.tsx create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/SideBarFixed/index.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/SideBarMenu/SideBarMenu.tsx create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/SideBarMenu/actions.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/SideBarMenu/index.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/SideBarMenu/reducer.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/SideBarMenu/selector.ts create mode 100644 src/shared/containers/Public/PhotoShare/PhotoShareWrapper/index.ts create mode 100644 src/shared/containers/Public/PhotoShare/actions.ts create mode 100644 src/shared/containers/Public/PhotoShare/index.ts create mode 100644 src/shared/containers/Public/PhotoShare/reducer.ts create mode 100644 src/shared/containers/Public/PhotoShare/selectors.ts create mode 100644 src/shared/containers/Public/Room/Room.tsx create mode 100644 src/shared/containers/Public/Room/index.ts create mode 100644 src/shared/containers/Public/index.ts create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/GenerateReport/DryingReport/DryingReport.tsx create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/GenerateReport/DryingReport/index.ts create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/GenerateReport/PhotoReport/PhotoReport.tsx create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/GenerateReport/PhotoReport/index.ts create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/GenerateReport/index.ts create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/ReportLocation/ReportLocation.tsx create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/ReportLocation/index.ts create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/ReportLocations/ReportLocations.tsx create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/ReportLocations/index.ts create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/ReportLocations/reportLocations.module.css create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/Reports/Reports.tsx create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/Reports/index.ts create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/ReportsTable/ReportsTable.tsx create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/ReportsTable/index.ts create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/actions.ts create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/index.ts create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/reducer.ts create mode 100644 src/shared/containers/ReportsAndDocuments/Reports/selectors.ts create mode 100644 src/shared/containers/ReportsAndDocuments/ReportsAndDocuments/ReportsAndDocuments.tsx create mode 100644 src/shared/containers/ReportsAndDocuments/ReportsAndDocuments/index.ts create mode 100644 src/shared/containers/ReportsAndDocuments/index.ts create mode 100644 src/shared/containers/RocketDry/EquipmentLog/EquipmentLogInfoModal/EquipmentLogInfoModal.tsx create mode 100644 src/shared/containers/RocketDry/EquipmentLog/EquipmentLogInfoModal/index.ts create mode 100644 src/shared/containers/RocketDry/EquipmentLog/EquipmentLogRoom/EquipmentLogRoom.tsx create mode 100644 src/shared/containers/RocketDry/EquipmentLog/EquipmentLogRoom/equipmentLogRoom.module.css create mode 100644 src/shared/containers/RocketDry/EquipmentLog/EquipmentLogRoom/index.ts create mode 100644 src/shared/containers/RocketDry/EquipmentLog/TotalEquipment/TotalEquipment.tsx create mode 100644 src/shared/containers/RocketDry/EquipmentLog/TotalEquipment/index.ts create mode 100644 src/shared/containers/RocketDry/EquipmentLog/TotalEquipment/totalEquipment.module.css create mode 100644 src/shared/containers/RocketDry/EquipmentLog/index.ts create mode 100644 src/shared/containers/RocketDry/MoistureAtmospheric/ExternalAtmosphericTable/ExternalAtmosphericTable.tsx create mode 100644 src/shared/containers/RocketDry/MoistureAtmospheric/ExternalAtmosphericTable/externalAtmosphericTable.module.css create mode 100644 src/shared/containers/RocketDry/MoistureAtmospheric/ExternalAtmosphericTable/index.ts create mode 100644 src/shared/containers/RocketDry/MoistureAtmospheric/MoistureAtmosphericRoom/MoistureAtmosphericRoom.tsx create mode 100644 src/shared/containers/RocketDry/MoistureAtmospheric/MoistureAtmosphericRoom/index.ts create mode 100644 src/shared/containers/RocketDry/MoistureAtmospheric/MoistureAtmosphericRoom/moistureAtmosphericRoom.module.css create mode 100644 src/shared/containers/RocketDry/MoistureAtmospheric/MoistureLogs/MoistureLogs.tsx create mode 100644 src/shared/containers/RocketDry/MoistureAtmospheric/MoistureLogs/index.ts create mode 100644 src/shared/containers/RocketDry/MoistureAtmospheric/MoistureLogsTable/MoistureLogsTable.tsx create mode 100644 src/shared/containers/RocketDry/MoistureAtmospheric/MoistureLogsTable/index.ts create mode 100644 src/shared/containers/RocketDry/MoistureAtmospheric/index.ts create mode 100644 src/shared/containers/RocketDry/RocketDry/RocketDry.tsx create mode 100644 src/shared/containers/RocketDry/RocketDry/index.ts create mode 100644 src/shared/containers/RocketDry/RocketDryBody/RocketDryBody.tsx create mode 100644 src/shared/containers/RocketDry/RocketDryBody/index.ts create mode 100644 src/shared/containers/RocketDry/RocketDryLocation/RocketDryLocation.tsx create mode 100644 src/shared/containers/RocketDry/RocketDryLocation/index.ts create mode 100644 src/shared/containers/RocketDry/RocketDryLocations/RocketDryLocations.tsx create mode 100644 src/shared/containers/RocketDry/RocketDryLocations/index.ts create mode 100644 src/shared/containers/RocketDry/RocketDryLocations/rocketDryLocations.module.css create mode 100644 src/shared/containers/RocketDry/RocketDryRooms/RocketDryRooms.tsx create mode 100644 src/shared/containers/RocketDry/RocketDryRooms/index.ts create mode 100644 src/shared/containers/RocketDry/RocketDryRooms/rocketDryRooms.module.css create mode 100644 src/shared/containers/RocketDry/actions.ts create mode 100644 src/shared/containers/RocketDry/index.ts create mode 100644 src/shared/containers/RocketDry/reducer.ts create mode 100644 src/shared/containers/RocketDry/selectors.ts create mode 100644 src/shared/containers/RocketScan/CarouselItems/CarouselItems.tsx create mode 100644 src/shared/containers/RocketScan/CarouselItems/index.ts create mode 100644 src/shared/containers/RocketScan/Exterior/Exterior/Exterior.tsx create mode 100644 src/shared/containers/RocketScan/Exterior/Exterior/exterior.module.css create mode 100644 src/shared/containers/RocketScan/Exterior/Exterior/index.ts create mode 100644 src/shared/containers/RocketScan/Exterior/index.ts create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/ActionsCenter/ActionsCenter.tsx create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/ActionsCenter/index.ts create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/DeletePhotosPreviewModal/DeletePhotosPreviewModal.tsx create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/DeletePhotosPreviewModal/index.ts create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/PhotoSharePreviewModal/PhotoShareLink/PhotoShareLink.tsx create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/PhotoSharePreviewModal/PhotoShareLink/index.ts create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/PhotoSharePreviewModal/PhotoSharePreviewModal/PhotoSharePreviewModal.tsx create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/PhotoSharePreviewModal/PhotoSharePreviewModal/index.ts create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/PhotoSharePreviewModal/index.ts create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/SelectedPhoto/SelectedPhoto.tsx create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/SelectedPhoto/index.ts create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/SelectedPhotos/SelectedPhotos.tsx create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/SelectedPhotos/index.ts create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/actions.ts create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/index.ts create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/reducer.ts create mode 100644 src/shared/containers/RocketScan/Header/ActionsCenter/selectors.ts create mode 100644 src/shared/containers/RocketScan/Header/EditLocation/EditLocation.tsx create mode 100644 src/shared/containers/RocketScan/Header/EditLocation/index.ts create mode 100644 src/shared/containers/RocketScan/Header/Header/Header.tsx create mode 100644 src/shared/containers/RocketScan/Header/Header/index.ts create mode 100644 src/shared/containers/RocketScan/Header/LocationHeader/LocationHeader.tsx create mode 100644 src/shared/containers/RocketScan/Header/LocationHeader/index.ts create mode 100644 src/shared/containers/RocketScan/Header/index.ts create mode 100644 src/shared/containers/RocketScan/InaccessiblePlaceholderEdit/InaccessiblePlaceholderEdit.tsx create mode 100644 src/shared/containers/RocketScan/InaccessiblePlaceholderEdit/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/CreateExterior/CreateExterior.tsx create mode 100644 src/shared/containers/RocketScan/MultiUnit/CreateExterior/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/CreateFloor/CreateFloor.tsx create mode 100644 src/shared/containers/RocketScan/MultiUnit/CreateFloor/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/CreateUnit/CreateUnit.tsx create mode 100644 src/shared/containers/RocketScan/MultiUnit/CreateUnit/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/DeleteLocationModal/DeleteLocationModal.tsx create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/DeleteLocationModal/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/Location/Location.tsx create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/Location/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/LocationNotes/LocationNotes/LocationNotes.tsx create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/LocationNotes/LocationNotes/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/LocationNotes/LocationNotes/locationNotes.module.css create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/LocationNotes/actions.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/LocationNotes/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/LocationNotes/reducer.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/LocationNotes/selectors.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/Locations/Locations.tsx create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/Locations/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/actions.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/reducer.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/Locations/selectors.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/MultiUnit/MultiUnit.tsx create mode 100644 src/shared/containers/RocketScan/MultiUnit/MultiUnit/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/MultiUnit/multiUnit.module.css create mode 100644 src/shared/containers/RocketScan/MultiUnit/MultiUnitLocationHeader/MultiUnitLocationHeader.tsx create mode 100644 src/shared/containers/RocketScan/MultiUnit/MultiUnitLocationHeader/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/MultiUnitLocationHeader/multiUnitLocationHeader.module.css create mode 100644 src/shared/containers/RocketScan/MultiUnit/MultiUnitRooms/MultiUnitRooms.tsx create mode 100644 src/shared/containers/RocketScan/MultiUnit/MultiUnitRooms/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/MultiUnitRooms/multiUnitRooms.module.css create mode 100644 src/shared/containers/RocketScan/MultiUnit/RoomTiles/RoomTile/RoomTile.tsx create mode 100644 src/shared/containers/RocketScan/MultiUnit/RoomTiles/RoomTile/actions.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/RoomTiles/RoomTile/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/RoomTiles/RoomTileThumbnail/RoomTileThumbnail.tsx create mode 100644 src/shared/containers/RocketScan/MultiUnit/RoomTiles/RoomTileThumbnail/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/RoomTiles/RoomTileThumbnail/roomTileThumbnail.module.css create mode 100644 src/shared/containers/RocketScan/MultiUnit/RoomTiles/RoomTiles/RoomTiles.tsx create mode 100644 src/shared/containers/RocketScan/MultiUnit/RoomTiles/RoomTiles/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/RoomTiles/actions.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/RoomTiles/index.ts create mode 100644 src/shared/containers/RocketScan/MultiUnit/index.ts create mode 100644 src/shared/containers/RocketScan/PhotoView/Carousel/Carousel/Carousel.tsx create mode 100644 src/shared/containers/RocketScan/PhotoView/Carousel/Carousel/index.ts create mode 100644 src/shared/containers/RocketScan/PhotoView/Carousel/actions.ts create mode 100644 src/shared/containers/RocketScan/PhotoView/Carousel/index.ts create mode 100644 src/shared/containers/RocketScan/PhotoView/Carousel/reducer.ts create mode 100644 src/shared/containers/RocketScan/PhotoView/Carousel/selectors.ts create mode 100644 src/shared/containers/RocketScan/PhotoView/PhotoNotes/PhotoNotes/PhotoNotes.tsx create mode 100644 src/shared/containers/RocketScan/PhotoView/PhotoNotes/PhotoNotes/index.ts create mode 100644 src/shared/containers/RocketScan/PhotoView/PhotoNotes/PhotoNotes/photoNotes.module.css create mode 100644 src/shared/containers/RocketScan/PhotoView/PhotoNotes/actions.ts create mode 100644 src/shared/containers/RocketScan/PhotoView/PhotoNotes/index.ts create mode 100644 src/shared/containers/RocketScan/PhotoView/PhotoNotes/reducer.ts create mode 100644 src/shared/containers/RocketScan/PhotoView/PhotoNotes/selectors.ts create mode 100644 src/shared/containers/RocketScan/PhotoView/PhotoSettings/PhotoSettings.tsx create mode 100644 src/shared/containers/RocketScan/PhotoView/PhotoSettings/index.ts create mode 100644 src/shared/containers/RocketScan/PhotoView/PhotoView/PhotoView.tsx create mode 100644 src/shared/containers/RocketScan/PhotoView/PhotoView/index.ts create mode 100644 src/shared/containers/RocketScan/PhotoView/index.ts create mode 100644 src/shared/containers/RocketScan/ProjectNotes/ProjectNotes/ProjectNotes.tsx create mode 100644 src/shared/containers/RocketScan/ProjectNotes/ProjectNotes/index.ts create mode 100644 src/shared/containers/RocketScan/ProjectNotes/ProjectNotes/projectNotes.module.css create mode 100644 src/shared/containers/RocketScan/ProjectNotes/actions.ts create mode 100644 src/shared/containers/RocketScan/ProjectNotes/index.ts create mode 100644 src/shared/containers/RocketScan/ProjectNotes/reducer.ts create mode 100644 src/shared/containers/RocketScan/ProjectNotes/selectors.ts create mode 100644 src/shared/containers/RocketScan/RocketScan/RocketScan.tsx create mode 100644 src/shared/containers/RocketScan/RocketScan/index.ts create mode 100644 src/shared/containers/RocketScan/RocketScan/rocketScan.module.css create mode 100644 src/shared/containers/RocketScan/RocketScanWrapper/RocketScanWrapper.tsx create mode 100644 src/shared/containers/RocketScan/RocketScanWrapper/index.ts create mode 100644 src/shared/containers/RocketScan/RocketScanWrapper/rocketScanWrapper.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/AddExterior/AddExterior.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/AddExterior/addExterior.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/AddExterior/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/AddRoom/AddRoom.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/AddRoom/addRoom.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/AddRoom/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/CreateCustomLevel/CreateCustomLevel.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/CreateCustomLevel/actions.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/CreateCustomLevel/createCustomLevel.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/CreateCustomLevel/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/CreateCustomLevel/reducer.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/CreateCustomLevel/selectors.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/CreateCustomRoom/CreateCustomRoom/CreateCustomRoom.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/CreateCustomRoom/CreateCustomRoom/createCustomRoom.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/CreateCustomRoom/CreateCustomRoom/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/CreateCustomRoom/actions.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/CreateCustomRoom/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/CreateCustomRoom/reducer.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/CreateCustomRoom/selectors.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/CreateCustomDamagedMaterial/CreateCustomDamagedMaterial.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/CreateCustomDamagedMaterial/createCustomDamagedMaterial.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/CreateCustomDamagedMaterial/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamageTypeButton/DamageTypeButton.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamageTypeButton/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialList/DamagedMaterialList.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialList/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialListItem/DamagedMaterialListItem.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialListItem/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialScope/DamagedMaterialScope.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialScope/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialToast/DamagedMaterialToast.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialToast/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterials/DamagedMaterials.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterials/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialsModal/DamagedMaterialsModal.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialsModal/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialsView/DamagedType/DamagedType.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialsView/DamagedType/damageType.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialsView/DamagedType/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/DamagedMaterialsView/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/EditCustomDamagedMaterial/EditCustomDamagedMaterial.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/EditCustomDamagedMaterial/editCustomDamagedMaterial.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/EditCustomDamagedMaterial/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/ScopeOfWorkDropdown/ScopeOfWorkDropdown.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/ScopeOfWorkEdit/ScopeOfWorkEdit.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/ScopeOfWorkEdit/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/ScopeOfWorkEdit/scopeOfWorkEdit.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/actions.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/reducer.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DamagedMaterials/selectors.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/DeleteRoomModal/DeleteRoomModal.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/DeleteRoomModal/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/EditCustomLevel/EditCustomLevel.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/EditCustomLevel/editCustomLevel.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/EditCustomLevel/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/EditCustomLevel/selectors.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/EditCustomRoom/EditCustomRoom.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/EditCustomRoom/editCustomRoom.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/EditCustomRoom/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/PhotoFilter/PhotoFilter.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/PhotoFilter/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/PhotosFilter/CategoryItem/CategoryItem.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/PhotosFilter/CategoryItem/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/PhotosFilter/CategoryList/CategoryList.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/PhotosFilter/CategoryList/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/PhotosFilter/PhotosFilter.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/PhotosFilter/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomButtons/RoomButton/RoomButton.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomButtons/RoomButton/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomButtons/RoomButton/roomButton.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomButtons/RoomButtons/RoomButtons.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomButtons/RoomButtons/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomButtons/actions.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomButtons/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomButtons/reducer.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomButtons/selectors.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomButtonsContent/RoomButtonsContent.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomButtonsContent/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomButtonsContent/roomButtonsContent.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Galleries/Galleries.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Galleries/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/DropZone/DropZone/DropZone.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/DropZone/DropZone/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/DropZone/actions.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/DropZone/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/DropZone/reducer.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/DropZone/selector.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/DropZone/worker.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/Gallery/Gallery.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/Gallery/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/Photo/Photo.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/Photo/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/actions.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/reducer.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/Gallery/selectors.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/LevelSelector/LevelSelector/LevelSelector.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/LevelSelector/LevelSelector/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/LevelSelector/actions.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/LevelSelector/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/LevelSelector/reducer.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/LevelSelector/selectors.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/RoomContent/RoomContent.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/RoomContent/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/RoomContent/roomContent.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/RoomContentBody/RoomContentBody.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/RoomContentBody/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/RoomContentHeader/RoomContentHeader.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/RoomContentHeader/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/RoomContentHeader/roomContentHeader.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomContent/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomNotes/RoomNotes/RoomNotes.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomNotes/RoomNotes/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomNotes/RoomNotes/roomNotes.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomNotes/actions.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomNotes/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomNotes/reducer.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomNotes/selectors.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomTypeItem/RoomTypeItem.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomTypeItem/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/Rooms/Rooms/Rooms.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/Rooms/Rooms/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/Rooms/Rooms/rooms.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/Rooms/actions.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/Rooms/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/Rooms/reducer.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/Rooms/selectors.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomsView/RoomsView.tsx create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomsView/index.ts create mode 100644 src/shared/containers/RocketScan/RoomsView/RoomsView/roomsView.module.css create mode 100644 src/shared/containers/RocketScan/RoomsView/index.ts create mode 100644 src/shared/containers/RocketScan/SingleLocation/SingleLocation/SingleLocation.tsx create mode 100644 src/shared/containers/RocketScan/SingleLocation/SingleLocation/index.ts create mode 100644 src/shared/containers/RocketScan/SingleLocation/index.ts create mode 100644 src/shared/containers/RocketScan/SingleUnit/SingleUnit/SingleUnit.tsx create mode 100644 src/shared/containers/RocketScan/SingleUnit/SingleUnit/index.ts create mode 100644 src/shared/containers/RocketScan/SingleUnit/SingleUnit/singleUnit.module.css create mode 100644 src/shared/containers/RocketScan/SingleUnit/index.ts create mode 100644 src/shared/containers/RocketScan/actions.ts create mode 100644 src/shared/containers/RocketScan/damageTypeFilters.ts create mode 100644 src/shared/containers/RocketScan/index.ts create mode 100644 src/shared/containers/RocketScan/reducer.ts create mode 100644 src/shared/containers/RocketScan/selectors.ts create mode 100644 src/shared/containers/RoleDropDown/RoleDropDown.tsx create mode 100644 src/shared/containers/RoleDropDown/index.ts create mode 100644 src/shared/containers/RoomButton/RoomButton.tsx create mode 100644 src/shared/containers/RoomButton/index.ts create mode 100644 src/shared/containers/RoomButton/roomButton.module.css create mode 100644 src/shared/containers/RoomGallery/RoomGallery.tsx create mode 100644 src/shared/containers/RoomGallery/index.ts create mode 100644 src/shared/containers/RoomGallery/roomGallery.module.css create mode 100644 src/shared/containers/SignIn/Blocked/Blocked.tsx create mode 100644 src/shared/containers/SignIn/Blocked/index.ts create mode 100644 src/shared/containers/SignIn/ForgotPassword/ForgotPassword/ForgotPassword.tsx create mode 100644 src/shared/containers/SignIn/ForgotPassword/ForgotPassword/actions.ts create mode 100644 src/shared/containers/SignIn/ForgotPassword/ForgotPassword/index.ts create mode 100644 src/shared/containers/SignIn/ForgotPassword/ForgotPassword/reducer.ts create mode 100644 src/shared/containers/SignIn/ForgotPassword/ForgotPasswordEmailSent/ForgotPasswordEmailSent.tsx create mode 100644 src/shared/containers/SignIn/ForgotPassword/ForgotPasswordEmailSent/index.ts create mode 100644 src/shared/containers/SignIn/ForgotPassword/ResetPassword/ResetPassword.tsx create mode 100644 src/shared/containers/SignIn/ForgotPassword/ResetPassword/actions.ts create mode 100644 src/shared/containers/SignIn/ForgotPassword/ResetPassword/index.ts create mode 100644 src/shared/containers/SignIn/ForgotPassword/ResetPassword/reducer.ts create mode 100644 src/shared/containers/SignIn/ForgotPassword/ResetPassword/selectors.ts create mode 100644 src/shared/containers/SignIn/ForgotPassword/index.ts create mode 100644 src/shared/containers/SignIn/NoCompany/NoCompany.tsx create mode 100644 src/shared/containers/SignIn/NoCompany/index.ts create mode 100644 src/shared/containers/SignIn/PhoneVerification/PhoneVerification.tsx create mode 100644 src/shared/containers/SignIn/PhoneVerification/actions.ts create mode 100644 src/shared/containers/SignIn/PhoneVerification/index.ts create mode 100644 src/shared/containers/SignIn/PhoneVerification/reducer.ts create mode 100644 src/shared/containers/SignIn/PhoneVerificationCode/PhoneVerificationCode.tsx create mode 100644 src/shared/containers/SignIn/PhoneVerificationCode/actions.ts create mode 100644 src/shared/containers/SignIn/PhoneVerificationCode/index.ts create mode 100644 src/shared/containers/SignIn/PhoneVerificationCode/reducer.ts create mode 100644 src/shared/containers/SignIn/SelectAccountType/SelectAccountType.tsx create mode 100644 src/shared/containers/SignIn/SelectAccountType/index.ts create mode 100644 src/shared/containers/SignIn/SignInEmail/SignInEmail.tsx create mode 100644 src/shared/containers/SignIn/SignInEmail/actions.ts create mode 100644 src/shared/containers/SignIn/SignInEmail/index.ts create mode 100644 src/shared/containers/SignIn/SignInEmail/reducer.ts create mode 100644 src/shared/containers/SignIn/SignInHow/SignInHow.tsx create mode 100644 src/shared/containers/SignIn/SignInHow/actions.ts create mode 100644 src/shared/containers/SignIn/SignInHow/index.ts create mode 100644 src/shared/containers/SignIn/SignInHow/reducer.ts create mode 100644 src/shared/containers/SignIn/SignInHow/selector.ts create mode 100644 src/shared/containers/SignIn/SignUpEmail/SignUpEmail.tsx create mode 100644 src/shared/containers/SignIn/SignUpEmail/index.ts create mode 100644 src/shared/containers/SignIn/SignUpUserInformation/SignUpUserInformation.tsx create mode 100644 src/shared/containers/SignIn/SignUpUserInformation/actions.ts create mode 100644 src/shared/containers/SignIn/SignUpUserInformation/index.ts create mode 100644 src/shared/containers/SignIn/SignUpUserInformation/reducer.ts create mode 100644 src/shared/containers/SignIn/WelcomeAboard/WelcomeAboard.tsx create mode 100644 src/shared/containers/SignIn/WelcomeAboard/index.ts create mode 100644 src/shared/containers/SignIn/index.ts create mode 100644 src/shared/containers/SingleUnitAdd/SingleUnitAdd.tsx create mode 100644 src/shared/containers/SingleUnitAdd/index.ts create mode 100644 src/shared/containers/SingleUnitAdd/singleUnitAdd.module.css create mode 100644 src/shared/containers/SourceMarker/SourceMarker.tsx create mode 100644 src/shared/containers/SourceMarker/index.ts create mode 100644 src/shared/containers/SplashPageWrapper/SplashPageWrapper.tsx create mode 100644 src/shared/containers/SplashPageWrapper/index.ts create mode 100644 src/shared/containers/Table/TableHead/TableHead.tsx create mode 100644 src/shared/containers/Table/TableHead/index.ts create mode 100644 src/shared/containers/Table/TableHeadItem/TableHeadItem.tsx create mode 100644 src/shared/containers/Table/TableHeadItem/index.ts create mode 100644 src/shared/containers/Table/index.ts create mode 100644 src/shared/containers/Thumbnail/Thumbnail.tsx create mode 100644 src/shared/containers/Thumbnail/actions.ts create mode 100644 src/shared/containers/Thumbnail/index.ts create mode 100644 src/shared/containers/Thumbnail/reducer.ts create mode 100644 src/shared/containers/Thumbnail/selector.ts create mode 100644 src/shared/containers/Thumbnail/thumbnail.module.css create mode 100644 src/shared/containers/UnitGallery/UnitGallery.tsx create mode 100644 src/shared/containers/UnitGallery/index.ts create mode 100644 src/shared/containers/UnitGallery/unitGallery.module.css create mode 100644 src/shared/containers/UnitSelector/UnitLink/UnitLink.tsx create mode 100644 src/shared/containers/UnitSelector/UnitSelector.tsx create mode 100644 src/shared/containers/UnitSelector/UnitSelectorRoom/UnitSelectorRoom.tsx create mode 100644 src/shared/containers/UnitSelector/UnitSelectorRoom/index.ts create mode 100644 src/shared/containers/UnitSelector/actions.ts create mode 100644 src/shared/containers/UnitSelector/index.ts create mode 100644 src/shared/containers/UnitSelector/reducer.ts create mode 100644 src/shared/containers/UnitSelector/selector.ts create mode 100644 src/shared/containers/Units/CreateFloor/CreateFloor.tsx create mode 100644 src/shared/containers/Units/CreateFloor/index.ts create mode 100644 src/shared/containers/Units/CreateUnit/CreateUnit.tsx create mode 100644 src/shared/containers/Units/CreateUnit/index.ts create mode 100644 src/shared/containers/User/About/About.tsx create mode 100644 src/shared/containers/User/About/index.ts create mode 100644 src/shared/containers/User/Account/Account.tsx create mode 100644 src/shared/containers/User/Account/CompanyProfile/CompanyInfoCard/CompanyInfoCard.tsx create mode 100644 src/shared/containers/User/Account/CompanyProfile/CompanyInfoCard/index.ts create mode 100644 src/shared/containers/User/Account/CompanyProfile/CompanyProfile.tsx create mode 100644 src/shared/containers/User/Account/CompanyProfile/index.ts create mode 100644 src/shared/containers/User/Account/PhotoCategories/CategoryRow/CategoryRow.tsx create mode 100644 src/shared/containers/User/Account/PhotoCategories/CategoryRow/index.ts create mode 100644 src/shared/containers/User/Account/PhotoCategories/EditPhotoCategories/EditPhotoCategories.tsx create mode 100644 src/shared/containers/User/Account/PhotoCategories/EditPhotoCategories/index.ts create mode 100644 src/shared/containers/User/Account/PhotoCategories/PhotoCategories/PhotoCategories.tsx create mode 100644 src/shared/containers/User/Account/PhotoCategories/PhotoCategories/index.ts create mode 100644 src/shared/containers/User/Account/PhotoCategories/index.ts create mode 100644 src/shared/containers/User/Account/UploadAvatar/UploadAvatar.tsx create mode 100644 src/shared/containers/User/Account/UploadAvatar/index.ts create mode 100644 src/shared/containers/User/Account/UserProfile/UserInfoCard/UserInfoCard.tsx create mode 100644 src/shared/containers/User/Account/UserProfile/UserInfoCard/index.ts create mode 100644 src/shared/containers/User/Account/UserProfile/UserProfile.tsx create mode 100644 src/shared/containers/User/Account/UserProfile/index.ts create mode 100644 src/shared/containers/User/Account/index.ts create mode 100644 src/shared/containers/User/Models/UserCompaniesModel/UserCompaniesModel.ts create mode 100644 src/shared/containers/User/Models/UserCompaniesModel/index.ts create mode 100644 src/shared/containers/User/Models/UserFeatureFlagsModel/UserFeatureFlagsModel.tsx create mode 100644 src/shared/containers/User/Models/UserFeatureFlagsModel/index.ts create mode 100644 src/shared/containers/User/Models/UserModel/UserModel.ts create mode 100644 src/shared/containers/User/Models/UserModel/index.ts create mode 100644 src/shared/containers/User/Models/UserPhonesModel/UserPhonesModel.ts create mode 100644 src/shared/containers/User/Models/UserPhonesModel/index.ts create mode 100644 src/shared/containers/User/actions.ts create mode 100644 src/shared/containers/User/index.ts create mode 100644 src/shared/containers/User/reducer.ts create mode 100644 src/shared/containers/User/selector.ts create mode 100644 src/shared/containers/User/worker.ts create mode 100644 src/shared/context/ClaimsData/ClaimsDataContext.ts create mode 100644 src/shared/context/ClaimsData/ClaimsDataProvider.tsx create mode 100644 src/shared/context/ClaimsData/index.ts create mode 100644 src/shared/context/Core/CoreProvider.tsx create mode 100644 src/shared/context/Core/index.ts create mode 100644 src/shared/context/LossData/LossDataContext.ts create mode 100644 src/shared/context/LossData/LossDataProvider.tsx create mode 100644 src/shared/context/LossData/index.ts create mode 100644 src/shared/context/MoistureAtmospheric/MoistureAtmosphericContext.ts create mode 100644 src/shared/context/MoistureAtmospheric/MoistureAtmosphericProvider.tsx create mode 100644 src/shared/context/MoistureAtmospheric/index.ts create mode 100644 src/shared/context/Notes/NotesContext.ts create mode 100644 src/shared/context/Notes/NotesProvider.tsx create mode 100644 src/shared/context/Notes/index.ts create mode 100644 src/shared/context/PhotoShare/PhotoShareProvider.tsx create mode 100644 src/shared/context/Project/LocationsView/LocationsViewContext.tsx create mode 100644 src/shared/context/Project/LocationsView/LocationsViewProvider.tsx create mode 100644 src/shared/context/Project/LocationsView/index.ts create mode 100644 src/shared/context/Project/RoomsView/RoomsViewContext.tsx create mode 100644 src/shared/context/Project/RoomsView/RoomsViewProvider.tsx create mode 100644 src/shared/context/Project/RoomsView/index.ts create mode 100644 src/shared/context/Project/SingleProject/SingleProjectProvider.tsx create mode 100644 src/shared/context/Project/SingleProject/index.ts create mode 100644 src/shared/context/Project/index.ts create mode 100644 src/shared/context/Projects/ProjectsContext.ts create mode 100644 src/shared/context/Projects/ProjectsProvider.tsx create mode 100644 src/shared/context/Projects/index.ts create mode 100644 src/shared/context/PropertyData/PropertyDataContext.ts create mode 100644 src/shared/context/PropertyData/PropertyDataProvider.tsx create mode 100644 src/shared/context/PropertyData/index.ts create mode 100644 src/shared/context/RocketDry/RocketDryContext.ts create mode 100644 src/shared/context/RocketDry/RocketDryProvider.tsx create mode 100644 src/shared/context/RocketDry/index.ts create mode 100644 src/shared/context/RocketScan/DamagedMaterials/DamagedMaterialsContext.ts create mode 100644 src/shared/context/RocketScan/DamagedMaterials/DamagedMaterialsProvider.tsx create mode 100644 src/shared/context/RocketScan/DamagedMaterials/index.ts create mode 100644 src/shared/context/RocketScan/Room/RoomContext.ts create mode 100644 src/shared/context/RocketScan/Room/RoomProvider.tsx create mode 100644 src/shared/context/RocketScan/Room/index.ts create mode 100644 src/shared/context/RocketScan/index.ts create mode 100644 src/shared/context/User/UserContext.ts create mode 100644 src/shared/context/User/UserProvider.tsx create mode 100644 src/shared/context/User/index.ts create mode 100644 src/shared/hoc/ClickOutsideListener.tsx create mode 100644 src/shared/hooks/index.ts create mode 100644 src/shared/hooks/useDebounce/index.ts create mode 100644 src/shared/hooks/useDebounce/useDebounce.tsx create mode 100644 src/shared/hooks/useOnScreen/index.ts create mode 100644 src/shared/hooks/useOnScreen/useOnScreen.tsx create mode 100644 src/shared/hooks/useProjectEvents/index.ts create mode 100644 src/shared/hooks/useProjectEvents/useProjectEvents.tsx create mode 100644 src/shared/hooks/useProjectsEvents/index.ts create mode 100644 src/shared/hooks/useProjectsEvents/useProjectsEvents.tsx create mode 100644 src/shared/hooks/useUserRoleEvents/index.ts create mode 100644 src/shared/hooks/useUserRoleEvents/useUserRoleEvents.tsx create mode 100644 src/shared/themes/form/form.module.css create mode 100644 src/shared/themes/toast/coreToast.module.css create mode 100644 src/shared/utils/api.ts create mode 100644 src/shared/utils/awsStore.ts create mode 100644 src/shared/utils/constants.ts create mode 100644 src/shared/utils/cookies.ts create mode 100644 src/shared/utils/data.ts create mode 100644 src/shared/utils/dates.ts create mode 100644 src/shared/utils/debounce.ts create mode 100644 src/shared/utils/equalityChecks.ts create mode 100644 src/shared/utils/google.ts create mode 100644 src/shared/utils/handleApiRequest.ts create mode 100644 src/shared/utils/helpers.ts create mode 100644 src/shared/utils/imageUploading.ts create mode 100644 src/shared/utils/navItems.ts create mode 100644 src/shared/utils/numbers.ts create mode 100644 src/shared/utils/oauth2.ts create mode 100644 src/shared/utils/regex.ts create mode 100644 src/shared/utils/rocketDryMaterialWhitelist.ts create mode 100644 src/shared/utils/roles.ts create mode 100644 src/shared/utils/screen.ts create mode 100644 src/shared/utils/table.ts create mode 100644 src/shared/utils/tabs.ts create mode 100644 src/shared/utils/types.ts create mode 100644 src/store/combinedReducers.ts create mode 100644 src/store/index.ts create mode 100644 src/store/store.ts create mode 100644 src/types/css.d.ts create mode 100644 src/types/fileloader.d.ts create mode 100644 src/types/maps.d.ts create mode 100644 src/types/webworker.d.ts create mode 100644 tsconfig.json create mode 100644 yarn.lock diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..f947ff9 --- /dev/null +++ b/.env.development @@ -0,0 +1,13 @@ +REACT_APP_BASE_URL="https://rptest.manaknightdigital.com/" +REACT_APP_API_URL="https://rptest.manaknightdigital.com/api/" +REACT_APP_SANCTUM_URL="https://rptest.manaknightdigital.com/sanctum/csrf-cookie" +REACT_VAPOR_URL="https://api-qa-mongoose-br2wu78v1.rocketplantech.com/vapor/signed-storage-url" +REACT_VAPOR_STORAGE_URL="https://storage-qa-mongoose-br2wu78v1.rocketplantech.com" +REACT_GOOGLE_API_KEY="AIzaSyBcqQuMIk9je3UKcjZCKS5sdKqEfIaNHAk" +REACT_GOOGLE_API=//maps.googleapis.com/maps/api/js?key=AIzaSyBcqQuMIk9je3UKcjZCKS5sdKqEfIaNHAk&libraries=places +REACT_INTERCOM_ID=t6huw9xl +REACT_TRANSLOADIT_TEMPLATE_ID=34b580b62cea4964aca081d52e36800a +REACT_TRANSLOADIT_AUTH_ID=b62a748ff0114d87910e454d4aff7f4b +REACT_TRANSLOADIT_LOGO_TEMPLATE_ID=33425f0eff0543778e7cdb2403fa42f6 +REACT_TRANSLOADIT_AVATAR_TEMPLATE_ID=5a639725d71e43489deeb3bdcf338aec +REACT_APP_PUSHER_APP_KEY=f17c0735529857c8b4e9 diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..0999d85 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +node_modules/** +.storybook/** +--ignore-pattern '!.storybook/**'" \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..8391ac9 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,81 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": ["plugin:react/recommended", "airbnb"], + "ignorePatterns": ["!**/*", "**/*.js"], + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": 12, + "sourceType": "module" + }, + "plugins": ["react", "@typescript-eslint", "import"], + "rules": { + "no-shadow": "off", + "no-useless-constructor": "off", + "no-use-before-define": [0], + "@typescript-eslint/no-use-before-define": [1], + "@typescript-eslint/no-unused-vars": "error", + "react/jsx-filename-extension": [1, { "extensions": [".tsx", ".jsx"] }], + "max-len": "off", + "import/extensions": [ + "error", + "ignorePackages", + { + "js": "never", + "jsx": "never", + "ts": "never", + "tsx": "never" + } + ], + "react/jsx-uses-vars": "error", + "react/jsx-uses-react": "error", + "jsx-a11y/anchor-is-valid": 0, + "jsx-a11y/label-has-associated-control": "off", + "indent": "off", + "no-case-declarations": "off", + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "no-restricted-globals": "off", + "implicit-arrow-linebreak": "off", + "import/no-webpack-loader-syntax": "off", + "linebreak-style": "off", + "import/no-unresolved": "off", + "import/prefer-default-export": "off", + "no-param-reassign": "off", + "no-return-await": "off", + "semi-style": "off", + "no-console": "error", + "react/no-unescaped-entities": "off", + "no-alert": "off", + "react/button-has-type": "off", + "brace-style": [2, "stroustrup", { "allowSingleLine": true }], + "prefer-destructuring": "off" + }, + "settings": { + "import/resolver": { + "alias": { + "map": [ + ["Assets", "./shared/assets"], + ["Components", "./src/shared/components"], + ["Containers", "./src/shared/containers"], + ["Context", "./src/shared/context"], + ["HOC", "./src/shared/hoc"], + ["Utils", "./src/shared/utils"], + ["Pages", "./src/pages"], + ["Hooks", "./src/shared/hooks"], + ["Themes", "./src/shared/themes"] + ], + "extensions": [".mjs", ".js", ".jsx", ".ts", ".tsx"] + //"extensions": [".mjs", ".jsx", ".ts", ".tsx"] + } + } + } +} diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml new file mode 100644 index 0000000..4a65dfb --- /dev/null +++ b/.github/workflows/deploy-production.yml @@ -0,0 +1,45 @@ +name: Deploy Release to AWS Production +on: + push: + tags: + - v* +jobs: + deploy: + name: Deploy to AWS + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set up Node.js + uses: actions/setup-node@v2 + with: + node-version: '14.x' + + - name: Build application + run: + yarn deploy-production + env: + CI: false + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-2 + + - name: Upload dist folder to S3 + run: + aws s3 sync --delete dist s3://app.rocketplantech.com --acl public-read + + - name: Invalidate Cloudfront Distribution + run: + aws cloudfront create-invalidation --distribution-id=E16H1FFD3URB32 --paths /* + + - name: Upload artifacts + uses: actions/upload-artifact@v2 + if: failure() + with: + name: Logs + path: ./storage/logs diff --git a/.github/workflows/deploy-qa.yml b/.github/workflows/deploy-qa.yml new file mode 100644 index 0000000..513a1f7 --- /dev/null +++ b/.github/workflows/deploy-qa.yml @@ -0,0 +1,45 @@ +name: Deploy Dev Branch to AWS +on: + push: + branches: [ dev ] + #pull_request: + #branches: [ dev ] +jobs: + deploy: + name: Deploy to AWS + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set up Node.js + uses: actions/setup-node@v2 + with: + node-version: '14.x' + + - name: Build application + run: + CI=FALSE && yarn deploy-qa + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.QA_AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.QA_AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-2 + + - name: Upload dist folder to S3 + run: | + aws s3 sync --delete dist s3://web-qa-mongoose-br2wu78v1.rocketplantech.com --acl public-read + aws s3 cp s3://web-qa-mongoose-br2wu78v1.rocketplantech.com/index.html s3://web-qa-mongoose-br2wu78v1.rocketplantech.com/index.html --cache-control "max-age=0, must-revalidate" --content-type "text/html" --metadata-directive REPLACE --acl public-read + + - name: Invalidate Cloudfront Distribution + run: + aws cloudfront create-invalidation --distribution-id=E1WZB3ALA7L1DR --paths /* + + - name: Upload artifacts + uses: actions/upload-artifact@v2 + if: failure() + with: + name: Logs + path: ./storage/logs diff --git a/.github/workflows/deploy-staging.yml b/.github/workflows/deploy-staging.yml new file mode 100644 index 0000000..49e7d7f --- /dev/null +++ b/.github/workflows/deploy-staging.yml @@ -0,0 +1,46 @@ +name: Deploy Master Branch to AWS +on: + push: + branches: [ master ] + #pull_request: + #branches: [ dev ] +jobs: + deploy: + name: Deploy to AWS + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set up Node.js + uses: actions/setup-node@v2 + with: + node-version: '14.x' + + - name: Build application + run: + yarn deploy-staging + env: + CI: false + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.STAGING_AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.STAGING_AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-2 + + - name: Upload dist folder to S3 + run: + aws s3 sync --delete dist s3://web-staging-mongoose-n5tr2spgf.rocketplantech.com --acl public-read + + - name: Invalidate Cloudfront Distribution + run: + aws cloudfront create-invalidation --distribution-id=E8LDW9E1E0R8T --paths /* + + - name: Upload artifacts + uses: actions/upload-artifact@v2 + if: failure() + with: + name: Logs + path: ./storage/logs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e98af66 --- /dev/null +++ b/.gitignore @@ -0,0 +1,57 @@ +# Compiled source # +################### +*.com +*.class +*.dll +*.exe +*.o +*.so + +# Archives # +############ +*.7z +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.zip + +# Logs and databases # +###################### +*.log + +# OS generated files # +###################### +.DS_Store +*.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db +.cache + +# Packages # +###################### +_resources/* +node_modules/* +bower_modules/* +bower_components/* +composer.lock +build/* +dist/* +_lessons/* +storybook-static/* +coverage/* + +# Custom # +###################### +webroot/api/vendor/* + +# local env # +###################### +.env.development.local +node_modules +.idea/ diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 0000000..31354ec --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/common.sh b/.husky/common.sh new file mode 100644 index 0000000..e69de29 diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..e6b136c --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npm run lint-staged && git add --all diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..0e5ab65 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +node_modules/** +build +coverage \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..22f83ac --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "semi": true, + "trailingComma": "es5", + "printWidth": 120, + "singleQuote": true, + "arrowParens": "always", + "proseWrap": "preserve" +} diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..dc5eef5 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,9 @@ +{ + "trailingComma": "es5", + "singleQuote": true, + "tabWidth": 4, + "printWidth": 80, + "semi": true, + "arrowParens": "always", + "proseWrap": "preserve" +} diff --git a/.storybook/main.js b/.storybook/main.js new file mode 100644 index 0000000..8506796 --- /dev/null +++ b/.storybook/main.js @@ -0,0 +1,29 @@ +/* eslint-disable */ +const path = require('path'); +module.exports = { + stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + addons: ['@storybook/addon-links', '@storybook/addon-essentials', '@storybook/addon-controls'], + core: { + builder: 'webpack5', + }, + webpackFinal: async (config) => { + config.resolve.alias['/'] = path.resolve(__dirname, '../src/shared'); + config.resolve.alias['Assets'] = path.resolve(__dirname, '../src/shared/assets'); + config.resolve.alias['Components'] = path.resolve(__dirname, '../src/shared/components'); + config.resolve.alias['Containers'] = path.resolve(__dirname, '../src/shared/containers'); + config.resolve.alias['Context'] = path.resolve(__dirname, '../src/shared/context'); + config.resolve.alias['HOC'] = path.resolve(__dirname, '../src/shared/hoc'); + config.resolve.alias['Utils'] = path.resolve(__dirname, '../src/shared/utils'); + config.resolve.alias['Hooks'] = path.resolve(__dirname, '../src/shared/hooks'); + config.resolve.alias['Themes'] = path.resolve(__dirname, '../src/shared/themes'); + config.resolve.alias['Routes'] = path.resolve(__dirname, '../src/routes'); + //This fixed Storybook crashing all the time + // config.cache = false; + return config; + }, + //This handles the error when importing svgs + babel: async (options) => { + options.plugins.push('babel-plugin-inline-react-svg'); + return options; + }, +}; diff --git a/.storybook/preview-body.html b/.storybook/preview-body.html new file mode 100644 index 0000000..6c217c6 --- /dev/null +++ b/.storybook/preview-body.html @@ -0,0 +1 @@ +
diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html new file mode 100644 index 0000000..0a6ea27 --- /dev/null +++ b/.storybook/preview-head.html @@ -0,0 +1,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.storybook/preview.js b/.storybook/preview.js new file mode 100644 index 0000000..85d0219 --- /dev/null +++ b/.storybook/preview.js @@ -0,0 +1,85 @@ +/*eslint-disable */ +import { MINIMAL_VIEWPORTS } from '@storybook/addon-viewport'; +import React from 'react'; +import { Provider } from 'react-redux'; + +import { setupStore } from '../src/store'; + +//Use this to trigger responsive viewports +const customViewports = { + 'x-small': { + name: 'x-small', + styles: { + width: '575px', //<576px + height: '100vh', + }, + }, + small: { + name: 'small', + styles: { + width: '768px', //≥576px + height: '100vh', + }, + }, + medium: { + name: 'medium', + styles: { + width: '992px', //≥768px + height: '100vh', + }, + }, + large: { + name: 'large', + styles: { + width: '1199px', //≥992px + height: '100vh', + }, + }, + 'x-large': { + name: 'x-large', + styles: { + width: '1399px', //≥1200px + height: '100vh', + }, + }, + 'xx-large': { + name: 'xx-large', + styles: { + width: '100%', //≥1400px + height: '100vh', + }, + }, +}; + +export const parameters = { + actions: { argTypesRegex: '^on[A-Z].*' }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, + layout: 'centered', + viewport: { + viewports: { + ...MINIMAL_VIEWPORTS, + ...customViewports, + }, + }, +}; + +export const decorators = [ + (Story) => ( + +
+
+
+
+ +
+
+
+
+
+ ), +]; diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..6b61141 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,6 @@ +{ + "ExpandedNodes": [ + "" + ], + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..88859f29932320e8788c756b24a8892409bff461 GIT binary patch literal 151552 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

~g**SA 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 F{{t!is)_&r literal 0 HcmV?d00001 diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..e3593bd --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["entepe85.gitlens"] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..290f0ed --- /dev/null +++ b/README.md @@ -0,0 +1,79 @@ +# Web App + +Boilerplate Webpack 5, React and Bootstrap 5 project with global Css and Css modules enabled. + +# Hosts File Config +In order to run this application in local, you'll need to modify your hosts file configuration. Then you will be able to access/serve your application at https://test.rocketplantech.com:3000 + +### Windows +Please include the following line in your hosts file + +`127.0.0.1 test.rocketplantech.com` + +### Mac +Please do the following steps + +`sudo nano /private/etc/hosts` + +add `127.0.0.1 test.rocketplantech.com` to the end of the file and save + +run `sudo dscacheutil -flushcache` to flush the DNS cache + +you might need to run `chmod +x .husky/pre-commit` to have the linter activated on commits + +# App Setup + +This project is setup to use yarn. + +to get started. + +`run yarn prep` + +This will install husky and then download and install the nodule modules +Husky is used to run the linting. + +# Dev Build + +`yarn run start` + +# Staging Build + +`yarn run staging` + +# Production Build + +`yarn run production` + +# Task + +- To login go to https://test.rocketplantech.com:3000/ +- kevin@rocketplantech.com / Abcdef123 +- Create the form page https://test.rocketplantech.com:3000/form as in screenshot_1 +- Create delete modal and it can delete the form as well screenshot_2 +- When we click on add button, it will open modal popup showing form. need to integrate the ADD FORM api +- Need to integrate API to load the table + +## API for getting Contract Forms +``` +GET `/companies/${companyId}/contract-forms` +``` + +## API for Adding Contract Forms +``` +Request Body: { +company_id: companyId, +name: formName, +replacement_tags: typeof String, +status: 'active', +template: typeof string, +has_signature: true || false, +} +``` + +``` +POST `/contract-forms` +``` +## API for deleting Contract Forms +``` +DELETE `/contract-forms/${contractId}` +``` \ No newline at end of file diff --git a/config/.eslintrc.json b/config/.eslintrc.json new file mode 100644 index 0000000..09c1323 --- /dev/null +++ b/config/.eslintrc.json @@ -0,0 +1,50 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": ["plugin:react/recommended", "airbnb"], + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": 12, + "sourceType": "module" + }, + "plugins": ["react", "@typescript-eslint", "import"], + "rules": { + "no-shadow": "off", + "no-useless-constructor": "off", + "no-use-before-define": [0], + "@typescript-eslint/no-use-before-define": [1], + "no-unused-vars": 2, //Keep this as the files in this folder don't use TypeScript. + "@typescript-eslint/no-unused-vars": "error", + "react/jsx-filename-extension": [1, { "extensions": [".tsx", ".jsx"] }], + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "max-len": "off", + "import/extensions": [ + "error", + "ignorePackages", + { + "js": "never", + "jsx": "never", + "ts": "never", + "tsx": "never" + } + ], + "jsx-a11y/anchor-is-valid": 0, + "jsx-a11y/label-has-associated-control": "off", + "indent": "off", + "no-case-declarations": "off", + "no-restricted-globals": "off", + "implicit-arrow-linebreak": "off", + "import/no-webpack-loader-syntax": "off", + "linebreak-style": "off", + "import/no-unresolved": "off" + } +} diff --git a/config/envPath.js b/config/envPath.js new file mode 100644 index 0000000..7951e2b --- /dev/null +++ b/config/envPath.js @@ -0,0 +1,8 @@ +//Determine which env file to use, based on the environment +const root = require('./paths').root; +const envPaths = { + development: `${root}/.env.development`, + staging: `${root}/.env.staging`, + production: `${root}/.env`, +}; +module.exports = envPaths[process.env.NODE_ENV] || envPaths['production']; diff --git a/config/paths.js b/config/paths.js new file mode 100644 index 0000000..f91b2e5 --- /dev/null +++ b/config/paths.js @@ -0,0 +1,17 @@ +const path = require('path'); + +module.exports = { + //Root of the application + root: path.normalize(path.resolve('./')), + + // Source files + src: path.normalize(path.resolve(__dirname, '../src')), + + assets: path.normalize(path.resolve(__dirname, '../src/shared/assets')), + + // Production build files + build: path.normalize(path.resolve(__dirname, '../dist')), + + // Static files that get copied to build folder + public: path.normalize(path.resolve(__dirname, '../public')), +}; diff --git a/config/webpack.base.js b/config/webpack.base.js new file mode 100644 index 0000000..45381e2 --- /dev/null +++ b/config/webpack.base.js @@ -0,0 +1,155 @@ +const { CleanWebpackPlugin } = require('clean-webpack-plugin'); +const CopyWebpackPlugin = require('copy-webpack-plugin'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const ESLintPlugin = require('eslint-webpack-plugin'); +const Dotenv = require('dotenv-webpack'); +const path = require('path'); +const paths = require('./paths'); +const envPath = require('./envPath'); + +module.exports = { + // Where webpack looks to start building the bundle + entry: [path.normalize(`${paths.src}/index.tsx`)], + + // Where webpack outputs the assets and bundles + output: { + path: path.normalize(paths.build), + filename: '[name].bundle.js', + publicPath: '/', + }, + + // Customize the webpack build process + plugins: [ + // Removes/cleans build folders and unused assets when rebuilding + new CleanWebpackPlugin(), + + // Puts variables in .env files into process.env + new Dotenv({ + path: path.normalize(envPath), + }), + new CopyWebpackPlugin({ + patterns: [ + { + from: path.normalize(`${paths.src}/netlify-redirect`), + to: path.normalize(paths.build), + globOptions: { + ignore: ['*.DS_Store'], + }, + noErrorOnMissing: true, + }, + { + from: './node_modules/@pdftron/webviewer/public', + to: path.normalize(`${paths.build}/public/webviewer`), + globOptions: { + ignore: ['*.DS_Store'], + }, + }, + ], + }), + + // Generates an HTML file from a template + new HtmlWebpackPlugin({ + title: 'Company', + inject: 'body', + appMountId: 'app', + favicon: paths.src + '/images/favicon.png', + template: `${paths.src}/index.html`, // template file + filename: 'index.html', // output file + // ', //Lets us load the appropriate dev scripts in the html + axios: 'https://cdn.jsdelivr.net/npm/axios@0.21.1/dist/axios.min.js', + bootstrap: 'https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.min.js', + bootStrapCss: 'https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css', + + react: 'https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js', + reactDom: 'https://cdn.jsdelivr.net/npm/react-dom@17.0.2/index.min.js', // Lets us load the appropriate dev scripts in the html + popper: 'https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/cjs/popper.min.js', + + redux: 'https://cdn.jsdelivr.net/npm/redux@4.1.0/lib/redux.min.js', + reactRedux: 'https://cdn.jsdelivr.net/npm/react-redux@7.2.4/lib/index.min.js', + reactRouterDom: 'https://cdn.jsdelivr.net/npm/react-router-dom@5.2.0/index.min.js', + }), + // ESLint configuration + new ESLintPlugin({ + files: ['.', 'src', 'config'], + formatter: 'table', + failOnError: false, + emitWarning: true, + }), + + // Prettier configuration + // new PrettierPlugin(), + ], + resolve: { + alias: { + RocketAssets: `${paths.src}/shared/assets`, + Components: path.normalize(`${paths.src}/shared/components`), + Containers: path.normalize(`${paths.src}/shared/containers`), + Context: path.normalize(`${paths.src}/shared/context`), + HOC: path.normalize(`${paths.src}/shared/hoc`), + Utils: path.normalize(`${paths.src}/shared/utils`), + Hooks: path.normalize(`${paths.src}/shared/hooks`), + Themes: path.normalize(`${paths.src}/shared/themes`), + Routes: path.normalize(`${paths.src}/routes`), + }, + symlinks: false, + cacheWithContext: false, + extensions: ['.ts', '.tsx', '.js', '.json', '.jsx', '.mjs', '.css', '.scss', '.sass'], + }, + + // Determine how modules within the project are treated + module: { + rules: [ + // JavaScript: Use Babel to transpile JavaScript files + { + test: /\.(js|jsx|tsx|ts|mjs)$/, + exclude: /(node_modules|bower_components)/, + loader: 'babel-loader', + }, + { + test: /\.(ts|tsx)$/, + use: [ + { + loader: 'ts-loader', + }, + ], + }, + { + test: /\.svg$/, + use: ['@svgr/webpack'], + }, + { + test: /\.(?:ico|png|jpg|gif|jpeg|ttf)$/, + type: 'assets/resource', + }, + + // Images: Copy image files to build folder + { test: /\.(?:ico|gif|png|jpg|jpeg)$/i, type: 'assets' }, + + // Fonts and SVGs: Inline files + // { test: /\.(woff(2)?|eot|ttf|otf|svg|)$/, type: 'assets/inline' }, + ], + }, + // externals: { + // axios: { + // amd: 'axios', + // }, + // bootstrap: 'bootstrap', + // react: 'React', // Case matters here + // 'react-dom': 'ReactDOM', + // 'react-router-dom': 'react-router-dom', + // popperCore: { + // root: 'PopperJS', + // commonjs2: 'popper.js', + // commonjs: 'popper.js', + // amd: 'popper.js', + // }, + // 'react-router-dom': 'ReactRouter', + // redux: 'redux', + // 'react-redux': 'react-redux', + // }, + // externalsPresets: { web: false, webAsync: true }, + // optimization: { + // // fix node modules not packaged into zip + // concatenateModules: false, + // }, +}; diff --git a/config/webpack.dev.js b/config/webpack.dev.js new file mode 100644 index 0000000..2c23d29 --- /dev/null +++ b/config/webpack.dev.js @@ -0,0 +1,76 @@ +const webpack = require('webpack'); +const { merge } = require('webpack-merge'); +const common = require('./webpack.base.js'); +const paths = require('./paths'); +const path = require('path'); + +module.exports = merge(common, { + // Set the mode to development or production + mode: 'development', + + // Control how source maps are generated + devtool: 'inline-source-map', + output: { + path: path.normalize(paths.build), + publicPath: '/', + filename: 'js/[name].[contenthash].bundle.js', + }, + // Spin up a server for quick development + devServer: { + historyApiFallback: true, + contentBase: path.normalize(paths.build), + index: '/', + open: true, + compress: true, + hot: true, + port: 3000, + host: 'test.rocketplantech.com', + https: true, + noInfo: true, //This turns off information regarding the bundle. Set to false if you need to view the messages + }, + + module: { + rules: [ + // Styles: Inject CSS into the head with source maps + { + test: /\.(scss|css)$/i, + use: [ + 'style-loader', + { + loader: 'css-loader', + options: { + sourceMap: true, + importLoaders: 1, + // modules: true, + modules: { + localIdentName: '[name]__[local]___[hash:base64:5]', + }, + }, + }, + { loader: 'postcss-loader', options: { sourceMap: true } }, + { loader: 'sass-loader', options: { sourceMap: true } }, + ], + include: /\.module\.css$/i, + }, + { + test: /\.(scss|css)$/i, + use: [ + 'style-loader', + // 'css-loader', + { + loader: 'css-loader', + options: { sourceMap: true, importLoaders: 1 }, + }, + { loader: 'postcss-loader', options: { sourceMap: true } }, + { loader: 'sass-loader', options: { sourceMap: true } }, + ], + exclude: /\.module\.css$/i, + }, + ], + }, + + plugins: [ + // Only update what has changed on hot reload + new webpack.HotModuleReplacementPlugin(), + ], +}); diff --git a/cypress/integration/1-getting-started/auth.spec.js b/cypress/integration/1-getting-started/auth.spec.js new file mode 100644 index 0000000..71c6cea --- /dev/null +++ b/cypress/integration/1-getting-started/auth.spec.js @@ -0,0 +1,67 @@ +/// + +// Welcome to Cypress! +// +// To learn more about how Cypress works and +// what makes it such an awesome testing tool, +// please read our getting started guide: +// https://on.cypress.io/introduction-to-cypress + +const newUserEmail = 'aj3@rocketplantech.com'; +const existingUserAccount = { email: 'aj@rocketplantech.com', password: 'signon123' }; +// Gotta keep updating the line below after every test run +const newUserAccount = { email: 'aj00@rocketplantech.com', password: 'signon123', phone: '236-833-6689' }; + +describe('rocketplan tech', () => { + beforeEach(() => { + // Cypress starts out with a blank slate for each test + // so we must tell it to visit our website with the `cy.visit()` command. + // Since we want to visit the same URL at the start of all our tests, + // we include it in our beforeEach function so that it runs before each test + cy.visit('https://test.rocketplantech.com:3000/'); + }); + + it('log in existing user', () => { + // We use the `cy.get()` command to get all elements that match the selector. + // Then, we use `should` to assert that there are two matched items, + // which are the two default items. + cy.wait(4000); + cy.get('input[name=email]') + .should('have.length', 1) + .type(existingUserAccount.email) + .should('have.value', existingUserAccount.email); + cy.wait(2000); + cy.get('input[name=password]') + .should('have.length', 1) + .type(existingUserAccount.password) + .should('have.value', existingUserAccount.password); + cy.get('button[type=submit]').click(); + cy.get('#Dashboard').should('have.length', 1); + }); + + // This reaches the phone verification screen + it('create new user', () => { + cy.wait(4000); + cy.get('input[name=email]') + .should('have.length', 1) + .type(newUserAccount.email) + .should('have.value', newUserAccount.email); + cy.wait(2000); + cy.get('#CreateCompany_Button').click(); + cy.get('input[name=password]') + .should('have.length', 1) + .type(newUserAccount.password) + .should('have.value', newUserAccount.password); + cy.get('input[name=confirm_password]') + .should('have.length', 1) + .type(newUserAccount.password) + .should('have.value', newUserAccount.password); + cy.get('#Signup_Next').click(); + cy.wait(1000); + cy.get('#Signup_PhoneNumber') + .should('have.length', 1) + .type(newUserAccount.phone) + .should('have.value', newUserAccount.phone); + cy.get('button[type=submit]').click(); + }); +}); diff --git a/package.json b/package.json new file mode 100644 index 0000000..5a32e26 --- /dev/null +++ b/package.json @@ -0,0 +1,205 @@ +{ + "name": "company-tech", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "scripts": { + "start": "cross-env NODE_ENV=development webpack serve --config config/webpack.dev.js", + "prep": "yarn && yarn prepare-husky && yarn start", + "lint": "eslint --ext 'mjs,js,jsx,ts,tsx' --fix", + "lint-staged": "lint-staged", + "prepare-husky": "husky install", + "storybook": "start-storybook -p 6006", + "test": "npx cypress open" + }, + "husky": { + "hooks": { + "pre-commit": "npm run lint-staged && git add --all" + } + }, + "lint-staged": { + "*.(js|ts|jsx|tsx)": [ + "eslint --fix", + "prettier --write" + ] + }, + "dependencies": { + "@pdftron/webviewer": "^8.1.0", + "@popperjs/core": "^2.9.2", + "@sentry/react": "^6.13.3", + "@sentry/tracing": "^6.13.3", + "@shopify/react-web-worker": "^2.1.6", + "@types/googlemaps": "^3.43.3", + "@uppy/core": "^2.1.6", + "@uppy/robodog": "^2.5.0", + "@uppy/transloadit": "^2.1.2", + "axios": "^0.21.1", + "bootstrap": "^5.0.2", + "buffer": "^6.0.3", + "date-fns": "^2.22.1", + "deep-equal": "^2.0.5", + "email-validator": "^2.0.4", + "google-map-react": "^2.1.10", + "history": "^5.0.0", + "laravel-echo": "^1.11.2", + "lodash": "^4.17.21", + "password-validator": "^5.1.1", + "pusher-js": "^7.0.3", + "qs": "^6.10.1", + "query-string": "^7.0.1", + "react": "^17.0.2", + "react-anchorme": "^2.2.1", + "react-copy-to-clipboard": "^5.0.3", + "react-datepicker": "^4.4.0", + "react-dom": "^17.0.2", + "react-dropzone": "^11.3.4", + "react-geocode": "^0.2.3", + "react-google-autocomplete": "^2.4.0", + "react-input-mask": "^2.0.4", + "react-paginate": "^7.1.3", + "react-phone-number-input": "^3.1.35", + "react-redux": "^7.2.4", + "react-router-dom": "^5.2.0", + "react-textarea-autosize": "^8.3.3", + "react-use-intercom": "^1.4.0", + "redux": "^4.1.0", + "redux-thunk": "^2.3.0", + "screen-size-detector": "^1.0.4", + "uuid": "^8.3.2" + }, + "devDependencies": { + "@babel/cli": "^7.14.5", + "@babel/core": "^7.14.6", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/preset-env": "^7.14.7", + "@babel/preset-react": "^7.14.5", + "@babel/preset-typescript": "^7.14.5", + "@storybook/addon-actions": "^6.3.4", + "@storybook/addon-essentials": "^6.3.4", + "@storybook/addon-links": "^6.3.4", + "@storybook/addon-viewport": "^6.3.4", + "@storybook/builder-webpack5": "^6.3.4", + "@storybook/manager-webpack5": "^6.3.4", + "@storybook/react": "^6.3.4", + "@svgr/webpack": "^5.5.0", + "@testing-library/jest-dom": "^5.14.1", + "@testing-library/react": "^12.0.0", + "@types/bootstrap": "^5.0.17", + "@types/jest": "^26.0.24", + "@types/react": "^17.0.14", + "@types/react-dom": "^17.0.9", + "@types/react-redux": "^7.1.18", + "@types/react-router-dom": "^5.1.8", + "@typescript-eslint/eslint-plugin": "^4.28.3", + "@typescript-eslint/parser": "^4.28.3", + "autoprefixer": "^10.3.1", + "babel-jest": "^27.0.6", + "babel-loader": "^8.2.2", + "babel-plugin-inline-react-svg": "^2.0.1", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "clean-webpack-plugin": "^3.0.0", + "copy-webpack-plugin": "^9.1.0", + "core-js": "^3.15.2", + "cross-env": "^7.0.3", + "css-loader": "^6.1.0", + "css-minimizer-webpack-plugin": "^3.0.2", + "cypress": "^8.7.0", + "dotenv-webpack": "^7.0.3", + "eslint": "^7.31.0", + "eslint-config-airbnb": "^18.2.1", + "eslint-config-prettier": "^8.3.0", + "eslint-import-resolver-alias": "^1.1.2", + "eslint-import-resolver-webpack": "^0.13.2", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-prettier": "^3.4.0", + "eslint-plugin-react": "^7.24.0", + "eslint-plugin-react-hooks": "^4.2.0", + "eslint-webpack-plugin": "^2.5.4", + "html-loader": "^2.1.2", + "html-webpack-plugin": "^5.3.1", + "husky": "^7.0.1", + "jest": "^27.0.6", + "jest-cli": "^27.0.6", + "lint-staged": "^11.0.1", + "mini-css-extract-plugin": "^2.1.0", + "node-sass": "^6.0.1", + "postcss": "^8.3.5", + "postcss-loader": "^6.1.1", + "postcss-preset-env": "^6.7.0", + "prettier": "^2.3.2", + "rimraf": "^3.0.2", + "sass-loader": "^12.1.0", + "style-loader": "^3.1.0", + "terser-webpack-plugin": "^5.1.4", + "ts-jest": "^27.0.3", + "ts-loader": "^9.2.3", + "typescript": "^4.3.5", + "webpack": "^5.45.1", + "webpack-cli": "^4.7.2", + "webpack-dev-server": "^3.11.2", + "webpack-merge": "^5.8.0", + "worker-loader": "^3.0.8" + }, + "babel": { + "presets": [ + [ + "@babel/preset-env", + { + "debug": true, + "useBuiltIns": "usage", + "corejs": "3.6.5" + } + ], + [ + "@babel/preset-react" + ] + ], + "plugins": [ + "syntax-dynamic-import", + "transform-class-properties", + "@babel/plugin-transform-modules-commonjs" + ] + }, + "jest": { + "coverageDirectory": "dist/test-results", + "setupFilesAfterEnv": [ + "/stories/setupTests.js" + ], + "transform": { + "\\.(js|ts|tsx)": "ts-jest", + "\\.(js|jsx)": "babel-jest", + ".svg": "/__mocks__/mockModule.js" + }, + "testPathIgnorePatterns": [ + "/node_modules/", + "/lib/" + ], + "testRegex": "(/test/.*|\\.(test|spec))\\.(ts|tsx|js)$", + "moduleFileExtensions": [ + "ts", + "tsx", + "js", + "json" + ], + "moduleNameMapper": { + "RocketAssets/(.*)": "/src/shared/assets/$1", + "Components/(.*)": "/src/shared/components/$1", + "Containers/(.*)": "/src/shared/containers/$1", + "HOC/(.*)": "/src/shared/hoc/$1", + "Hooks/(.*)": "/src/shared/hooks/$1", + "Utils/(.*)": "/src/shared/utils/$1", + "Context/(.*)": "/src/shared/context/$1", + "Routes/(.*)": "/src/routes/$1" + }, + "coverageThreshold": { + "global": { + "branches": 4, + "functions": 4, + "lines": 4, + "statements": 4 + } + } + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..8e5c6b2 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,20 @@ +const postCssPresetEnv = require('postcss-preset-env'); +const autoprefixer = require('autoprefixer'); + +module.exports = { + plugins: [ + postCssPresetEnv({ + browsers: 'last 1 versions', + }), + autoprefixer, + ], +}; + +// module.exports = { +// plugins: [ +// require('postcss-preset-env')({ +// browsers: 'last 1 versions', +// }), +// require('autoprefixer'), +// ], +// }; diff --git a/public/_redirects b/public/_redirects new file mode 100644 index 0000000..f824337 --- /dev/null +++ b/public/_redirects @@ -0,0 +1 @@ +/* /index.html 200 \ No newline at end of file diff --git a/screenshot_1.png b/screenshot_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6197534beade9057f2c344c89cbabbfb52b1d7f1 GIT binary patch literal 366344 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

  • 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
    + + + + diff --git a/src/index.tsx b/src/index.tsx new file mode 100644 index 0000000..73315f6 --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,45 @@ +/*eslint-disable */ +// //the linter generates an error about App.default. Imported JSX component default must be in PascalCase or SCREAMING_SNAKE_CASE react/jsx-pascal-case +// //However this is what React needs to render the app. +import React from 'react'; +import { render } from 'react-dom'; +//import { Api } from 'Utils/api'; +//import * as Sentry from '@sentry/react'; +//import { Integrations } from '@sentry/tracing'; + +// Sentry integration on production, staging, and qa +// if (window.location.hostname !== 'test.rocketplantech.com') { +// Sentry.init({ +// dsn: 'https://cc9581db4cc94680a8ede2385b796888@o537211.ingest.sentry.io/5662701', +// integrations: [new Integrations.BrowserTracing()], +// environment: process.env.NODE_ENV === 'production' ? 'production' : 'qa', +// // We recommend adjusting this value in production, or using tracesSampler +// // for finer control +// tracesSampleRate: 1.0, +// }); +// } +// Need to get the google api loaded +//const script = document.createElement(`script`); +//script.src = process.env.REACT_GOOGLE_API; +//document.body.appendChild(script); +//Add an event listener for the script tag. This will ensure that the Google api is loaded before the app +//Make the callback async so we can use the await keyword, when importing the App component +//script.addEventListener(`load`, async () => { + //We need to dynamically import the App component, after the google maps api has been loaded. + //This prevents the error Uncaught ReferenceError: google is not defined. + //Ie, in the maps.ts file, this error will occur if the api has not be instantiated + //before the App component is rendered. + //Api.csrfHeader().then(async (exists: boolean) => { + //if (exists) { + //Dynamically import the App component +(async() => { + const App = await import('./app'); + render(, document.getElementById('app')); + return; +} +)(); + //} + //Todo we need to create an error page with contact info for support + // alert('Please contact support. The application cannot load.'); + //}); +//}); diff --git a/src/routes/PrivateRoutes.tsx b/src/routes/PrivateRoutes.tsx new file mode 100644 index 0000000..030aafb --- /dev/null +++ b/src/routes/PrivateRoutes.tsx @@ -0,0 +1,38 @@ +import React, { memo } from 'react'; +import { Redirect, Route } from 'react-router-dom'; +import { useSelector } from 'react-redux'; + +import { areEqual } from 'Utils/equalityChecks'; +import { userVerificationsSelector } from 'Containers/User/selector'; + +const PrivateRoute = ({ exact, path, render }: any) => { + const userVerifications = useSelector(userVerificationsSelector, areEqual); + const { authenticated, sms, company, approved } = userVerifications; + + // we'll redirect if the user: + // is not authenticated, + // doesn't has a company, + // or company is not approved, + if (!authenticated && !sms && !company && !approved) { + return ( + ( + + )} + /> + ); + } + + return ; +}; + +const PrivateRouteMemo = memo(PrivateRoute, areEqual); + +export { PrivateRouteMemo as PrivateRoute }; diff --git a/src/routes/PublicRoutes.tsx b/src/routes/PublicRoutes.tsx new file mode 100644 index 0000000..8f7dbcd --- /dev/null +++ b/src/routes/PublicRoutes.tsx @@ -0,0 +1,112 @@ +import React, { memo } from 'react'; +import { Redirect, Route } from 'react-router-dom'; +import { useSelector } from 'react-redux'; +import { areEqual } from 'Utils/equalityChecks'; +import { userVerificationsSelector } from 'Containers/User/selector'; +import { getAppRedirectPathLocal } from 'Containers/Core/actions'; + +// list of URLs of signup flow, unverified users should be able to access these routes +const excludes = ['/phoneverificationcode', '/welcomeaboard', '/welcomeback']; + +const PublicRoute = ({ exact, path, render }: any) => { + const userVerifications = useSelector(userVerificationsSelector, areEqual); + const appRedirectPath = getAppRedirectPathLocal(); + + // if the user is authenticated we'll do the following + if (userVerifications?.authenticated) { + const { sms, company, approved, isNew } = userVerifications; + // verified users with an approved company attached are redirected to the dashboard screen + if (sms && company && approved) { + return ( + ( + + )} + /> + ); + } + + // verified users that don't have a company attached are redirected to the signupuserinformation screen + if (sms && !company) { + if (path === '/signupuserinformation') { + return ; + } + + return ( + ( + + )} + /> + ); + } + + // verified users that are attached to a company, but aren't approved yet are redirected to the blocked screen + if (sms && company && !approved) { + if (path === '/welcomeback') { + return ; + } + + return ( + ( + + )} + /> + ); + } + + // unverified users will always be redirected to the phone verification page + if (!sms && !excludes.includes(path)) { + // if the path is `phoneverification` we'll return the route otherwise trigger a redirect + // this is to prevent infinite redirection on this path + if (path === '/phoneverification') { + return ; + } + + return ( + ( + + )} + /> + ); + } + } + + // public default route + return ; +}; + +const PublicRouteMemo = memo(PublicRoute, areEqual); + +export { PublicRouteMemo as PublicRoute }; diff --git a/src/routes/RedirectRoute.tsx b/src/routes/RedirectRoute.tsx new file mode 100644 index 0000000..afbc0d3 --- /dev/null +++ b/src/routes/RedirectRoute.tsx @@ -0,0 +1,19 @@ +/* eslint-disable */ +import { Redirect, Route } from 'react-router-dom'; +import React from 'react'; + +export const RedirectRoute = ({ children, redirect = '/login', ...rest }) => { + return ( + ( + + )} + /> + ); +}; diff --git a/src/routes/Routes.tsx b/src/routes/Routes.tsx new file mode 100644 index 0000000..2d58e00 --- /dev/null +++ b/src/routes/Routes.tsx @@ -0,0 +1,391 @@ +import React from 'react'; + +import { BrowserRouter, Route, Switch } from 'react-router-dom'; + +import queryString from 'query-string'; + +// layout wrappers and dashboard container +import { Dashboard, DashboardWrapper } from 'Containers/Dashboard'; +import { GuestWrapper } from 'Containers/Auth'; +import { PhotoViewWrapper } from 'Containers/PhotoView/PhotoViewWrapper'; +import { SplashPageWrapper } from 'Containers/SplashPageWrapper'; + +import { PhotoShare, PhotoShareGallery, PhotoShareWrapper } from 'Containers/Public'; + +import { NotFoundWrapper } from 'Containers/NotFoundWrapper'; +// guest components +import { + SignInHow, + SignInEmail, + SignUpEmail, + ForgotPassword, + ForgotPasswordEmailSent, + ResetPassword, + PhoneVerification, + PhoneVerificationCode, + SignUpUserInformation, + WelcomeAboard, + NoCompany, + SelectAccountType, + Blocked, +} from 'Containers/SignIn'; + +import { PhotoView } from 'Containers/PhotoView'; +import { PhotoView as NewPhotoView, RocketScan, MultiUnit, MultiUnitRooms } from 'Containers/RocketScan'; +import { PhotoShareSplashView } from 'Containers/Public/PhotoShare/PhotoShareSplashView'; + +// dashboard components +import { CreateProjectMain, Projects } from 'Containers/Projects'; +import { People } from 'Containers/People'; +import { Crew } from 'Containers/Crew'; +import { Project } from 'Containers/Project'; +import { Account, About } from 'Containers/User'; +import { ProjectData } from 'Containers/ProjectData'; +import { RocketDry } from 'Containers/RocketDry'; + +// route components +import { PhotoShareProvider } from 'Context/PhotoShare/PhotoShareProvider'; + +import { ProjectsProvider } from 'Context/Projects'; +import { SingleProjectProvider } from 'Context/Project'; +import { Notes } from 'Containers/Notes'; +import { NotesProvider } from 'Context/Notes'; +import { PhotoReport, DryingReport, ReportsAndDocuments } from 'Containers/ReportsAndDocuments'; +import { PrivateRoute } from './PrivateRoutes'; +import { PublicRoute } from './PublicRoutes'; + +// Render Props. Create here to prevent a rerender, on a route change, due to arrow functions always being considered new +const signInHowRoute = () => ( + + + +); +const SignInRoute = () => ( + + + +); +const SignUpRoute = () => ( + + + +); +const ForgotPasswordRoute = () => ( + + + +); +const ForgotPasswordEmailSentRoute = () => ( + + + +); +const PhoneVerificationRoute = () => ( + + + +); +const PhoneVerificationCodeRoute = () => ( + + + +); +const SignUpUserInformationRoute = () => ( + + + +); + +const WelcomeAboardRoute = () => ( + + + +); + +const WelcomeBackRoute = () => ( + + + +); + +const NoCompanyRoute = () => ( + + + +); + +const SelectAccountTypeRoute = () => ( + + + +); +// This route is for a user that clicks on an email reset link. +const ResetPasswordRoute = ({ location: { search } }: any) => { + // destructure search from location in props. + const { token, email } = queryString.parse(search.replace('+', '%2B')); + return ( + + + + ); +}; + +// dashboard routes - home screen +const DashboardRoute = ({ location: { search } }: any) => { + // destructure search from location in props. + const { ft } = queryString.parse(search); + return ( + + + + ); +}; + +// Projects related routes +const ProjectsRoute = () => ( + + + + + +); + +/* + * single project routes: tabs specific + * */ +const ProjectRoute = () => ( + + + +); +const ProjectPhotoManagementRoute = () => ( + + + +); + +const CreateProjectRoute = () => ( + + + +); +const EditAddressRoute = () => ( + + + +); + +// people related routes +const PeopleRoute = () => ( + + + +); + +const PhotoViewRoute = () => ( + + + +); + +const SignUpFromInviteRoute = () => ( + + + +); +const PhotoShareSplashRoute = () => ( + + + +); + +const PhotoShareRoute = () => ( + + + +); + +const PhotoShareGalleryRoute = () => ( + + + + + +); + +const RocketScanRoute = () => ( + + + +); + +const RocketScanMultiUnitRoute = () => ( + + + +); + +const RocketScanCommercialRoute = () => ( + + + +); + +const AccountRoute = () => ( + + + +); + +const AboutRoute = () => ( + + + +); + +const RocketScanMultiUnitContentViewRoute = () => ( + + + +); + +const RocketScanCommercialRoomsViewRoute = () => ( + + + +); + +const AllNotesRoute = () => ( + + + + + +); + +const CrewRoute = () => ( + + + +); + +const RocketScanPhotoViewRoute = () => ( + + + + + +); + +const ProjectDataRoute = () => ( + + + +); + +const RocketReportsRoute = () => ( + + + +); + +const GeneratePhotoReportRoute = () => ( + + + +); + +const GenerateDryingReportRoute = () => ( + + + +); + +const RocketDryRoute = () => ( + + + +); + +const NotFoundRoute = () => ; + +export const Routes = () => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); diff --git a/src/routes/index.ts b/src/routes/index.ts new file mode 100644 index 0000000..393979c --- /dev/null +++ b/src/routes/index.ts @@ -0,0 +1,4 @@ +export { Routes } from './Routes'; +export { PrivateRoute } from './PrivateRoutes'; +export { PublicRoute } from './PublicRoutes'; +export { RedirectRoute } from './RedirectRoute'; diff --git a/src/shared/Assets/actions-default.svg b/src/shared/Assets/actions-default.svg new file mode 100644 index 0000000..c09328a --- /dev/null +++ b/src/shared/Assets/actions-default.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/shared/Assets/actions-purple.svg b/src/shared/Assets/actions-purple.svg new file mode 100644 index 0000000..f9db43c --- /dev/null +++ b/src/shared/Assets/actions-purple.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/add-button-lg.svg b/src/shared/Assets/add-button-lg.svg new file mode 100644 index 0000000..2a64b54 --- /dev/null +++ b/src/shared/Assets/add-button-lg.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/add-button-sm.svg b/src/shared/Assets/add-button-sm.svg new file mode 100644 index 0000000..3046488 --- /dev/null +++ b/src/shared/Assets/add-button-sm.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/addressBuilding.svg b/src/shared/Assets/addressBuilding.svg new file mode 100644 index 0000000..815fa30 --- /dev/null +++ b/src/shared/Assets/addressBuilding.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/air-mover.svg b/src/shared/Assets/air-mover.svg new file mode 100644 index 0000000..e871319 --- /dev/null +++ b/src/shared/Assets/air-mover.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/shared/Assets/air-scrubber.svg b/src/shared/Assets/air-scrubber.svg new file mode 100644 index 0000000..daf47c2 --- /dev/null +++ b/src/shared/Assets/air-scrubber.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/apple.svg b/src/shared/Assets/apple.svg new file mode 100644 index 0000000..228eca8 --- /dev/null +++ b/src/shared/Assets/apple.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/appliances-sm.svg b/src/shared/Assets/appliances-sm.svg new file mode 100644 index 0000000..18e20eb --- /dev/null +++ b/src/shared/Assets/appliances-sm.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/shared/Assets/appliances.svg b/src/shared/Assets/appliances.svg new file mode 100644 index 0000000..92ef54b --- /dev/null +++ b/src/shared/Assets/appliances.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/shared/Assets/arrow-left.svg b/src/shared/Assets/arrow-left.svg new file mode 100644 index 0000000..551a35c --- /dev/null +++ b/src/shared/Assets/arrow-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/shared/Assets/asbestos.svg b/src/shared/Assets/asbestos.svg new file mode 100644 index 0000000..64ec54a --- /dev/null +++ b/src/shared/Assets/asbestos.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/shared/Assets/australiaflag.svg b/src/shared/Assets/australiaflag.svg new file mode 100644 index 0000000..83f3ae8 --- /dev/null +++ b/src/shared/Assets/australiaflag.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/basement.svg b/src/shared/Assets/basement.svg new file mode 100644 index 0000000..5b26c5b --- /dev/null +++ b/src/shared/Assets/basement.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/bathroom.svg b/src/shared/Assets/bathroom.svg new file mode 100644 index 0000000..2418bfb --- /dev/null +++ b/src/shared/Assets/bathroom.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/shared/Assets/bedroom.svg b/src/shared/Assets/bedroom.svg new file mode 100644 index 0000000..a05c92b --- /dev/null +++ b/src/shared/Assets/bedroom.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/shared/Assets/bookmark-outline-purple.svg b/src/shared/Assets/bookmark-outline-purple.svg new file mode 100644 index 0000000..79cde89 --- /dev/null +++ b/src/shared/Assets/bookmark-outline-purple.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/bookmark-photo.svg b/src/shared/Assets/bookmark-photo.svg new file mode 100644 index 0000000..899b2f4 --- /dev/null +++ b/src/shared/Assets/bookmark-photo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/bookmark-purple.svg b/src/shared/Assets/bookmark-purple.svg new file mode 100644 index 0000000..d6ba107 --- /dev/null +++ b/src/shared/Assets/bookmark-purple.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/bookmark.svg b/src/shared/Assets/bookmark.svg new file mode 100644 index 0000000..1dbbda3 --- /dev/null +++ b/src/shared/Assets/bookmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/bookmarked-photo.svg b/src/shared/Assets/bookmarked-photo.svg new file mode 100644 index 0000000..d7c61fd --- /dev/null +++ b/src/shared/Assets/bookmarked-photo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/canadaflag.svg b/src/shared/Assets/canadaflag.svg new file mode 100644 index 0000000..7c432b7 --- /dev/null +++ b/src/shared/Assets/canadaflag.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/shared/Assets/caret-down.svg b/src/shared/Assets/caret-down.svg new file mode 100644 index 0000000..ccf11d2 --- /dev/null +++ b/src/shared/Assets/caret-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/shared/Assets/caret-up.svg b/src/shared/Assets/caret-up.svg new file mode 100644 index 0000000..c714c98 --- /dev/null +++ b/src/shared/Assets/caret-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/shared/Assets/carousel-next.svg b/src/shared/Assets/carousel-next.svg new file mode 100644 index 0000000..55968d6 --- /dev/null +++ b/src/shared/Assets/carousel-next.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/carousel-prev.svg b/src/shared/Assets/carousel-prev.svg new file mode 100644 index 0000000..652acd1 --- /dev/null +++ b/src/shared/Assets/carousel-prev.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/carpentry.svg b/src/shared/Assets/carpentry.svg new file mode 100644 index 0000000..80036d5 --- /dev/null +++ b/src/shared/Assets/carpentry.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/ceiling-sm.svg b/src/shared/Assets/ceiling-sm.svg new file mode 100644 index 0000000..496feab --- /dev/null +++ b/src/shared/Assets/ceiling-sm.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/ceiling.svg b/src/shared/Assets/ceiling.svg new file mode 100644 index 0000000..f2a1e32 --- /dev/null +++ b/src/shared/Assets/ceiling.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/checkbox.svg b/src/shared/Assets/checkbox.svg new file mode 100644 index 0000000..ee7e432 --- /dev/null +++ b/src/shared/Assets/checkbox.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/checked-mark-purple-bg.svg b/src/shared/Assets/checked-mark-purple-bg.svg new file mode 100644 index 0000000..41250ea --- /dev/null +++ b/src/shared/Assets/checked-mark-purple-bg.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/Assets/checked-mark.svg b/src/shared/Assets/checked-mark.svg new file mode 100644 index 0000000..942c15a --- /dev/null +++ b/src/shared/Assets/checked-mark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/chevron-down.svg b/src/shared/Assets/chevron-down.svg new file mode 100644 index 0000000..1f0b8bc --- /dev/null +++ b/src/shared/Assets/chevron-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/shared/Assets/chevron-next.svg b/src/shared/Assets/chevron-next.svg new file mode 100644 index 0000000..4e6e256 --- /dev/null +++ b/src/shared/Assets/chevron-next.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/chevron-previous.svg b/src/shared/Assets/chevron-previous.svg new file mode 100644 index 0000000..021e119 --- /dev/null +++ b/src/shared/Assets/chevron-previous.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/circle-16.svg b/src/shared/Assets/circle-16.svg new file mode 100644 index 0000000..591c0ac --- /dev/null +++ b/src/shared/Assets/circle-16.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/circle.svg b/src/shared/Assets/circle.svg new file mode 100644 index 0000000..c96373a --- /dev/null +++ b/src/shared/Assets/circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/cleaning.svg b/src/shared/Assets/cleaning.svg new file mode 100644 index 0000000..f99ba3c --- /dev/null +++ b/src/shared/Assets/cleaning.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/shared/Assets/close-sm.svg b/src/shared/Assets/close-sm.svg new file mode 100644 index 0000000..c89fd1b --- /dev/null +++ b/src/shared/Assets/close-sm.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/close.svg b/src/shared/Assets/close.svg new file mode 100644 index 0000000..4367699 --- /dev/null +++ b/src/shared/Assets/close.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/closecircle.svg b/src/shared/Assets/closecircle.svg new file mode 100644 index 0000000..2693cab --- /dev/null +++ b/src/shared/Assets/closecircle.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/commercial.svg b/src/shared/Assets/commercial.svg new file mode 100644 index 0000000..243783a --- /dev/null +++ b/src/shared/Assets/commercial.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/company-arrow.svg b/src/shared/Assets/company-arrow.svg new file mode 100644 index 0000000..c72e489 --- /dev/null +++ b/src/shared/Assets/company-arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/confirm-purple.svg b/src/shared/Assets/confirm-purple.svg new file mode 100644 index 0000000..c0464ac --- /dev/null +++ b/src/shared/Assets/confirm-purple.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/confirm-sm.svg b/src/shared/Assets/confirm-sm.svg new file mode 100644 index 0000000..4a3dd32 --- /dev/null +++ b/src/shared/Assets/confirm-sm.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/confirm.svg b/src/shared/Assets/confirm.svg new file mode 100644 index 0000000..db4bffb --- /dev/null +++ b/src/shared/Assets/confirm.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/copy.svg b/src/shared/Assets/copy.svg new file mode 100644 index 0000000..a64846e --- /dev/null +++ b/src/shared/Assets/copy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/crew.svg b/src/shared/Assets/crew.svg new file mode 100644 index 0000000..db4c544 --- /dev/null +++ b/src/shared/Assets/crew.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/cube-plus-lg.svg b/src/shared/Assets/cube-plus-lg.svg new file mode 100644 index 0000000..9ccbef4 --- /dev/null +++ b/src/shared/Assets/cube-plus-lg.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/cube-plus.svg b/src/shared/Assets/cube-plus.svg new file mode 100644 index 0000000..1613973 --- /dev/null +++ b/src/shared/Assets/cube-plus.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/cube.svg b/src/shared/Assets/cube.svg new file mode 100644 index 0000000..07c1fbd --- /dev/null +++ b/src/shared/Assets/cube.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/shared/Assets/custom-damage-add.svg b/src/shared/Assets/custom-damage-add.svg new file mode 100644 index 0000000..d3ce6dd --- /dev/null +++ b/src/shared/Assets/custom-damage-add.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/custom-damage-type.svg b/src/shared/Assets/custom-damage-type.svg new file mode 100644 index 0000000..7c0c92b --- /dev/null +++ b/src/shared/Assets/custom-damage-type.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/shared/Assets/custom-room.svg b/src/shared/Assets/custom-room.svg new file mode 100644 index 0000000..eb12a49 --- /dev/null +++ b/src/shared/Assets/custom-room.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/dashboard.svg b/src/shared/Assets/dashboard.svg new file mode 100644 index 0000000..0a2d87f --- /dev/null +++ b/src/shared/Assets/dashboard.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/deck.svg b/src/shared/Assets/deck.svg new file mode 100644 index 0000000..ce51d54 --- /dev/null +++ b/src/shared/Assets/deck.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/dehumidifier.svg b/src/shared/Assets/dehumidifier.svg new file mode 100644 index 0000000..5e6f412 --- /dev/null +++ b/src/shared/Assets/dehumidifier.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/den.svg b/src/shared/Assets/den.svg new file mode 100644 index 0000000..6c9fa10 --- /dev/null +++ b/src/shared/Assets/den.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/dining-room.svg b/src/shared/Assets/dining-room.svg new file mode 100644 index 0000000..aa693cd --- /dev/null +++ b/src/shared/Assets/dining-room.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/dot.svg b/src/shared/Assets/dot.svg new file mode 100644 index 0000000..590f218 --- /dev/null +++ b/src/shared/Assets/dot.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/download-purple.svg b/src/shared/Assets/download-purple.svg new file mode 100644 index 0000000..62cdb7f --- /dev/null +++ b/src/shared/Assets/download-purple.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/download.svg b/src/shared/Assets/download.svg new file mode 100644 index 0000000..fde363c --- /dev/null +++ b/src/shared/Assets/download.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/dropzone-background.svg b/src/shared/Assets/dropzone-background.svg new file mode 100644 index 0000000..4522d46 --- /dev/null +++ b/src/shared/Assets/dropzone-background.svg @@ -0,0 +1,5 @@ + + + diff --git a/src/shared/Assets/drying-mat.svg b/src/shared/Assets/drying-mat.svg new file mode 100644 index 0000000..d086466 --- /dev/null +++ b/src/shared/Assets/drying-mat.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/shared/Assets/eastfacing.svg b/src/shared/Assets/eastfacing.svg new file mode 100644 index 0000000..d8b5f91 --- /dev/null +++ b/src/shared/Assets/eastfacing.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/shared/Assets/edit-lg.svg b/src/shared/Assets/edit-lg.svg new file mode 100644 index 0000000..81d5bc8 --- /dev/null +++ b/src/shared/Assets/edit-lg.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/edit-md.svg b/src/shared/Assets/edit-md.svg new file mode 100644 index 0000000..58fc1c1 --- /dev/null +++ b/src/shared/Assets/edit-md.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/edit.svg b/src/shared/Assets/edit.svg new file mode 100644 index 0000000..d10ad77 --- /dev/null +++ b/src/shared/Assets/edit.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/electrical-32.svg b/src/shared/Assets/electrical-32.svg new file mode 100644 index 0000000..4ed9732 --- /dev/null +++ b/src/shared/Assets/electrical-32.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/electrical-room.svg b/src/shared/Assets/electrical-room.svg new file mode 100644 index 0000000..5136243 --- /dev/null +++ b/src/shared/Assets/electrical-room.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/shared/Assets/electrical.svg b/src/shared/Assets/electrical.svg new file mode 100644 index 0000000..659ca93 --- /dev/null +++ b/src/shared/Assets/electrical.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/elevator.svg b/src/shared/Assets/elevator.svg new file mode 100644 index 0000000..fe5f747 --- /dev/null +++ b/src/shared/Assets/elevator.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/email-new.svg b/src/shared/Assets/email-new.svg new file mode 100644 index 0000000..bdb15b7 --- /dev/null +++ b/src/shared/Assets/email-new.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/shared/Assets/employee-phone.svg b/src/shared/Assets/employee-phone.svg new file mode 100644 index 0000000..a7fbd98 --- /dev/null +++ b/src/shared/Assets/employee-phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/ensuite.svg b/src/shared/Assets/ensuite.svg new file mode 100644 index 0000000..15be024 --- /dev/null +++ b/src/shared/Assets/ensuite.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/equipment-log.svg b/src/shared/Assets/equipment-log.svg new file mode 100644 index 0000000..88af3a0 --- /dev/null +++ b/src/shared/Assets/equipment-log.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/exterior-32.svg b/src/shared/Assets/exterior-32.svg new file mode 100644 index 0000000..03a54cc --- /dev/null +++ b/src/shared/Assets/exterior-32.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/shared/Assets/exterior-add.svg b/src/shared/Assets/exterior-add.svg new file mode 100644 index 0000000..2ae851b --- /dev/null +++ b/src/shared/Assets/exterior-add.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/shared/Assets/exterior.svg b/src/shared/Assets/exterior.svg new file mode 100644 index 0000000..75ec9c5 --- /dev/null +++ b/src/shared/Assets/exterior.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/shared/Assets/eye-closed.svg b/src/shared/Assets/eye-closed.svg new file mode 100644 index 0000000..ecfd503 --- /dev/null +++ b/src/shared/Assets/eye-closed.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/eye.svg b/src/shared/Assets/eye.svg new file mode 100644 index 0000000..c28398a --- /dev/null +++ b/src/shared/Assets/eye.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/facebook.svg b/src/shared/Assets/facebook.svg new file mode 100644 index 0000000..93c9e64 --- /dev/null +++ b/src/shared/Assets/facebook.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/filter.svg b/src/shared/Assets/filter.svg new file mode 100644 index 0000000..ea7d219 --- /dev/null +++ b/src/shared/Assets/filter.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/shared/Assets/fire.svg b/src/shared/Assets/fire.svg new file mode 100644 index 0000000..4a403b5 --- /dev/null +++ b/src/shared/Assets/fire.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/shared/Assets/flag-outline-purple.svg b/src/shared/Assets/flag-outline-purple.svg new file mode 100644 index 0000000..676aeb6 --- /dev/null +++ b/src/shared/Assets/flag-outline-purple.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/flag-photo.svg b/src/shared/Assets/flag-photo.svg new file mode 100644 index 0000000..fef2f8f --- /dev/null +++ b/src/shared/Assets/flag-photo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/flag-purple.svg b/src/shared/Assets/flag-purple.svg new file mode 100644 index 0000000..fcd00a1 --- /dev/null +++ b/src/shared/Assets/flag-purple.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/flag.svg b/src/shared/Assets/flag.svg new file mode 100644 index 0000000..7da6872 --- /dev/null +++ b/src/shared/Assets/flag.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/flagged-photo.svg b/src/shared/Assets/flagged-photo.svg new file mode 100644 index 0000000..fb77be1 --- /dev/null +++ b/src/shared/Assets/flagged-photo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/floor-add.svg b/src/shared/Assets/floor-add.svg new file mode 100644 index 0000000..ed2ff7b --- /dev/null +++ b/src/shared/Assets/floor-add.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/shared/Assets/floor-sm.svg b/src/shared/Assets/floor-sm.svg new file mode 100644 index 0000000..15f838f --- /dev/null +++ b/src/shared/Assets/floor-sm.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/shared/Assets/floor.svg b/src/shared/Assets/floor.svg new file mode 100644 index 0000000..d708dbd --- /dev/null +++ b/src/shared/Assets/floor.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/shared/Assets/flooring-32.svg b/src/shared/Assets/flooring-32.svg new file mode 100644 index 0000000..95bd64d --- /dev/null +++ b/src/shared/Assets/flooring-32.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/flooring.svg b/src/shared/Assets/flooring.svg new file mode 100644 index 0000000..78c55c5 --- /dev/null +++ b/src/shared/Assets/flooring.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/funnel-fill.svg b/src/shared/Assets/funnel-fill.svg new file mode 100644 index 0000000..5f16f16 --- /dev/null +++ b/src/shared/Assets/funnel-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/shared/Assets/galleryplaceholder.svg b/src/shared/Assets/galleryplaceholder.svg new file mode 100644 index 0000000..7f44c29 --- /dev/null +++ b/src/shared/Assets/galleryplaceholder.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/garage.svg b/src/shared/Assets/garage.svg new file mode 100644 index 0000000..e9a7d23 --- /dev/null +++ b/src/shared/Assets/garage.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/shared/Assets/google.svg b/src/shared/Assets/google.svg new file mode 100644 index 0000000..b42e503 --- /dev/null +++ b/src/shared/Assets/google.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/gym.svg b/src/shared/Assets/gym.svg new file mode 100644 index 0000000..5f81499 --- /dev/null +++ b/src/shared/Assets/gym.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/Assets/hallway.svg b/src/shared/Assets/hallway.svg new file mode 100644 index 0000000..6bc947b --- /dev/null +++ b/src/shared/Assets/hallway.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/hamburger-menu.svg b/src/shared/Assets/hamburger-menu.svg new file mode 100644 index 0000000..527c6b9 --- /dev/null +++ b/src/shared/Assets/hamburger-menu.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/Assets/hand.svg b/src/shared/Assets/hand.svg new file mode 100644 index 0000000..5b96bf4 --- /dev/null +++ b/src/shared/Assets/hand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/shared/Assets/highrise-small.svg b/src/shared/Assets/highrise-small.svg new file mode 100644 index 0000000..e6d79d8 --- /dev/null +++ b/src/shared/Assets/highrise-small.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/highrise.svg b/src/shared/Assets/highrise.svg new file mode 100644 index 0000000..e1886c8 --- /dev/null +++ b/src/shared/Assets/highrise.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/impact.svg b/src/shared/Assets/impact.svg new file mode 100644 index 0000000..7f985af --- /dev/null +++ b/src/shared/Assets/impact.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/info.svg b/src/shared/Assets/info.svg new file mode 100644 index 0000000..d6a3431 --- /dev/null +++ b/src/shared/Assets/info.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/inject-dryer.svg b/src/shared/Assets/inject-dryer.svg new file mode 100644 index 0000000..91fcbe7 --- /dev/null +++ b/src/shared/Assets/inject-dryer.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/inspection.svg b/src/shared/Assets/inspection.svg new file mode 100644 index 0000000..6efc0fc --- /dev/null +++ b/src/shared/Assets/inspection.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/shared/Assets/kitchen.svg b/src/shared/Assets/kitchen.svg new file mode 100644 index 0000000..bdc0649 --- /dev/null +++ b/src/shared/Assets/kitchen.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/landscape.svg b/src/shared/Assets/landscape.svg new file mode 100644 index 0000000..458f88f --- /dev/null +++ b/src/shared/Assets/landscape.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/laundry.svg b/src/shared/Assets/laundry.svg new file mode 100644 index 0000000..9cbbd2b --- /dev/null +++ b/src/shared/Assets/laundry.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/link-open.svg b/src/shared/Assets/link-open.svg new file mode 100644 index 0000000..c28c2c1 --- /dev/null +++ b/src/shared/Assets/link-open.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/Assets/link.svg b/src/shared/Assets/link.svg new file mode 100644 index 0000000..6a7f5cf --- /dev/null +++ b/src/shared/Assets/link.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/living-room.svg b/src/shared/Assets/living-room.svg new file mode 100644 index 0000000..9814081 --- /dev/null +++ b/src/shared/Assets/living-room.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/lobby.svg b/src/shared/Assets/lobby.svg new file mode 100644 index 0000000..0249db7 --- /dev/null +++ b/src/shared/Assets/lobby.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/shared/Assets/logo-horizontal.svg b/src/shared/Assets/logo-horizontal.svg new file mode 100644 index 0000000..2df0a13 --- /dev/null +++ b/src/shared/Assets/logo-horizontal.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/shared/Assets/logo-icon.svg b/src/shared/Assets/logo-icon.svg new file mode 100644 index 0000000..67e756b --- /dev/null +++ b/src/shared/Assets/logo-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/shared/Assets/logo-mobile.svg b/src/shared/Assets/logo-mobile.svg new file mode 100644 index 0000000..2f361db --- /dev/null +++ b/src/shared/Assets/logo-mobile.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/logo.png b/src/shared/Assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..990248e242ee1526fc9e3b1e886cb14d905eaac3 GIT binary patch literal 15664 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

    BhYSrN1#;(4%mn4_bm(^XurR|n)r-<2}FPX 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 OFf`TlRI8M&!u}t7cYSgI literal 0 HcmV?d00001 diff --git a/src/shared/Assets/logo.svg b/src/shared/Assets/logo.svg new file mode 100644 index 0000000..9112b06 --- /dev/null +++ b/src/shared/Assets/logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/shared/Assets/lunchroom.svg b/src/shared/Assets/lunchroom.svg new file mode 100644 index 0000000..5aa4c71 --- /dev/null +++ b/src/shared/Assets/lunchroom.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/maintenance-room.svg b/src/shared/Assets/maintenance-room.svg new file mode 100644 index 0000000..99c7533 --- /dev/null +++ b/src/shared/Assets/maintenance-room.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/shared/Assets/meeting-room.svg b/src/shared/Assets/meeting-room.svg new file mode 100644 index 0000000..fd9547f --- /dev/null +++ b/src/shared/Assets/meeting-room.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/misc.svg b/src/shared/Assets/misc.svg new file mode 100644 index 0000000..45fc15a --- /dev/null +++ b/src/shared/Assets/misc.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/mobile-app-icon.svg b/src/shared/Assets/mobile-app-icon.svg new file mode 100644 index 0000000..0df0725 --- /dev/null +++ b/src/shared/Assets/mobile-app-icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/shared/Assets/modal-close.svg b/src/shared/Assets/modal-close.svg new file mode 100644 index 0000000..c89fd1b --- /dev/null +++ b/src/shared/Assets/modal-close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/moisture-log.svg b/src/shared/Assets/moisture-log.svg new file mode 100644 index 0000000..9ca8e98 --- /dev/null +++ b/src/shared/Assets/moisture-log.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/shared/Assets/mold.svg b/src/shared/Assets/mold.svg new file mode 100644 index 0000000..1a891c2 --- /dev/null +++ b/src/shared/Assets/mold.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/multiunit-lg.svg b/src/shared/Assets/multiunit-lg.svg new file mode 100644 index 0000000..4690850 --- /dev/null +++ b/src/shared/Assets/multiunit-lg.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/natural.svg b/src/shared/Assets/natural.svg new file mode 100644 index 0000000..1b3beb1 --- /dev/null +++ b/src/shared/Assets/natural.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/shared/Assets/newzealandflag.svg b/src/shared/Assets/newzealandflag.svg new file mode 100644 index 0000000..53d7787 --- /dev/null +++ b/src/shared/Assets/newzealandflag.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/no-company.svg b/src/shared/Assets/no-company.svg new file mode 100644 index 0000000..1fc4998 --- /dev/null +++ b/src/shared/Assets/no-company.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/shared/Assets/northfacing.svg b/src/shared/Assets/northfacing.svg new file mode 100644 index 0000000..540db79 --- /dev/null +++ b/src/shared/Assets/northfacing.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/shared/Assets/not-found.svg b/src/shared/Assets/not-found.svg new file mode 100644 index 0000000..de5a728 --- /dev/null +++ b/src/shared/Assets/not-found.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/office-building.svg b/src/shared/Assets/office-building.svg new file mode 100644 index 0000000..81e15f2 --- /dev/null +++ b/src/shared/Assets/office-building.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/office.svg b/src/shared/Assets/office.svg new file mode 100644 index 0000000..e345823 --- /dev/null +++ b/src/shared/Assets/office.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/patio.svg b/src/shared/Assets/patio.svg new file mode 100644 index 0000000..eaf0bd0 --- /dev/null +++ b/src/shared/Assets/patio.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/people-pink-medium.svg b/src/shared/Assets/people-pink-medium.svg new file mode 100644 index 0000000..06038d1 --- /dev/null +++ b/src/shared/Assets/people-pink-medium.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/people-pink-small.svg b/src/shared/Assets/people-pink-small.svg new file mode 100644 index 0000000..4038292 --- /dev/null +++ b/src/shared/Assets/people-pink-small.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/people-pink.svg b/src/shared/Assets/people-pink.svg new file mode 100644 index 0000000..6c61065 --- /dev/null +++ b/src/shared/Assets/people-pink.svg @@ -0,0 +1,8 @@ + + + + Layer 1 + + + + \ No newline at end of file diff --git a/src/shared/Assets/people.svg b/src/shared/Assets/people.svg new file mode 100644 index 0000000..da28b1f --- /dev/null +++ b/src/shared/Assets/people.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/person-purple.svg b/src/shared/Assets/person-purple.svg new file mode 100644 index 0000000..378e671 --- /dev/null +++ b/src/shared/Assets/person-purple.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/person.svg b/src/shared/Assets/person.svg new file mode 100644 index 0000000..478d566 --- /dev/null +++ b/src/shared/Assets/person.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/phone.svg b/src/shared/Assets/phone.svg new file mode 100644 index 0000000..4adbbbc --- /dev/null +++ b/src/shared/Assets/phone.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/src/shared/Assets/photo-bookmark.svg b/src/shared/Assets/photo-bookmark.svg new file mode 100644 index 0000000..7999333 --- /dev/null +++ b/src/shared/Assets/photo-bookmark.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/shared/Assets/photo-flag.svg b/src/shared/Assets/photo-flag.svg new file mode 100644 index 0000000..9ad800e --- /dev/null +++ b/src/shared/Assets/photo-flag.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/shared/Assets/photo-note.svg b/src/shared/Assets/photo-note.svg new file mode 100644 index 0000000..983e83b --- /dev/null +++ b/src/shared/Assets/photo-note.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/photo-share-error.svg b/src/shared/Assets/photo-share-error.svg new file mode 100644 index 0000000..ae0c606 --- /dev/null +++ b/src/shared/Assets/photo-share-error.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/shared/Assets/photo-share.svg b/src/shared/Assets/photo-share.svg new file mode 100644 index 0000000..82d03ed --- /dev/null +++ b/src/shared/Assets/photo-share.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/shared/Assets/pin.svg b/src/shared/Assets/pin.svg new file mode 100644 index 0000000..fe0afcc --- /dev/null +++ b/src/shared/Assets/pin.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/pinActive.svg b/src/shared/Assets/pinActive.svg new file mode 100644 index 0000000..8b69049 --- /dev/null +++ b/src/shared/Assets/pinActive.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/plaza.svg b/src/shared/Assets/plaza.svg new file mode 100644 index 0000000..bd8c642 --- /dev/null +++ b/src/shared/Assets/plaza.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/plumbing-32.svg b/src/shared/Assets/plumbing-32.svg new file mode 100644 index 0000000..582ce3e --- /dev/null +++ b/src/shared/Assets/plumbing-32.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/Assets/plumbing.svg b/src/shared/Assets/plumbing.svg new file mode 100644 index 0000000..ba66604 --- /dev/null +++ b/src/shared/Assets/plumbing.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/Assets/plus.svg b/src/shared/Assets/plus.svg new file mode 100644 index 0000000..23445b9 --- /dev/null +++ b/src/shared/Assets/plus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/shared/Assets/pool.svg b/src/shared/Assets/pool.svg new file mode 100644 index 0000000..379fcea --- /dev/null +++ b/src/shared/Assets/pool.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/shared/Assets/private-office.svg b/src/shared/Assets/private-office.svg new file mode 100644 index 0000000..e140b41 --- /dev/null +++ b/src/shared/Assets/private-office.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/projects.svg b/src/shared/Assets/projects.svg new file mode 100644 index 0000000..9ac37af --- /dev/null +++ b/src/shared/Assets/projects.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/protection.svg b/src/shared/Assets/protection.svg new file mode 100644 index 0000000..16c8fb6 --- /dev/null +++ b/src/shared/Assets/protection.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/Assets/radio.svg b/src/shared/Assets/radio.svg new file mode 100644 index 0000000..2c241a1 --- /dev/null +++ b/src/shared/Assets/radio.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/reception.svg b/src/shared/Assets/reception.svg new file mode 100644 index 0000000..cd080d9 --- /dev/null +++ b/src/shared/Assets/reception.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/reports-type-compact.svg b/src/shared/Assets/reports-type-compact.svg new file mode 100644 index 0000000..b3aa1fe --- /dev/null +++ b/src/shared/Assets/reports-type-compact.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/reports-type-expanded.svg b/src/shared/Assets/reports-type-expanded.svg new file mode 100644 index 0000000..5f9d1e0 --- /dev/null +++ b/src/shared/Assets/reports-type-expanded.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/shared/Assets/reports-type-large.svg b/src/shared/Assets/reports-type-large.svg new file mode 100644 index 0000000..87cf7eb --- /dev/null +++ b/src/shared/Assets/reports-type-large.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/restroom.svg b/src/shared/Assets/restroom.svg new file mode 100644 index 0000000..2d4be90 --- /dev/null +++ b/src/shared/Assets/restroom.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/Assets/roof.svg b/src/shared/Assets/roof.svg new file mode 100644 index 0000000..59287b0 --- /dev/null +++ b/src/shared/Assets/roof.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/Assets/roofing-32.svg b/src/shared/Assets/roofing-32.svg new file mode 100644 index 0000000..fb0435a --- /dev/null +++ b/src/shared/Assets/roofing-32.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/roofing.svg b/src/shared/Assets/roofing.svg new file mode 100644 index 0000000..a83d810 --- /dev/null +++ b/src/shared/Assets/roofing.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/search.svg b/src/shared/Assets/search.svg new file mode 100644 index 0000000..2cf858f --- /dev/null +++ b/src/shared/Assets/search.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/share-32.svg b/src/shared/Assets/share-32.svg new file mode 100644 index 0000000..69aa640 --- /dev/null +++ b/src/shared/Assets/share-32.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/share.svg b/src/shared/Assets/share.svg new file mode 100644 index 0000000..352e599 --- /dev/null +++ b/src/shared/Assets/share.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/shop.svg b/src/shared/Assets/shop.svg new file mode 100644 index 0000000..24b4f44 --- /dev/null +++ b/src/shared/Assets/shop.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/side-bar-close.svg b/src/shared/Assets/side-bar-close.svg new file mode 100644 index 0000000..07d72e0 --- /dev/null +++ b/src/shared/Assets/side-bar-close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/side-bar-left-arrow.svg b/src/shared/Assets/side-bar-left-arrow.svg new file mode 100644 index 0000000..d0486bc --- /dev/null +++ b/src/shared/Assets/side-bar-left-arrow.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/side-bar-right-arrow.svg b/src/shared/Assets/side-bar-right-arrow.svg new file mode 100644 index 0000000..e8f0905 --- /dev/null +++ b/src/shared/Assets/side-bar-right-arrow.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/single-home-sm.svg b/src/shared/Assets/single-home-sm.svg new file mode 100644 index 0000000..70f7f13 --- /dev/null +++ b/src/shared/Assets/single-home-sm.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/single-home.svg b/src/shared/Assets/single-home.svg new file mode 100644 index 0000000..8f98809 --- /dev/null +++ b/src/shared/Assets/single-home.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/smoke.svg b/src/shared/Assets/smoke.svg new file mode 100644 index 0000000..64efa95 --- /dev/null +++ b/src/shared/Assets/smoke.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/shared/Assets/sms-icon.svg b/src/shared/Assets/sms-icon.svg new file mode 100644 index 0000000..25a96d4 --- /dev/null +++ b/src/shared/Assets/sms-icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/shared/Assets/sms.svg b/src/shared/Assets/sms.svg new file mode 100644 index 0000000..f33e87a --- /dev/null +++ b/src/shared/Assets/sms.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/southfacing.svg b/src/shared/Assets/southfacing.svg new file mode 100644 index 0000000..bb64bf9 --- /dev/null +++ b/src/shared/Assets/southfacing.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/shared/Assets/square.svg b/src/shared/Assets/square.svg new file mode 100644 index 0000000..f917974 --- /dev/null +++ b/src/shared/Assets/square.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/stairway.svg b/src/shared/Assets/stairway.svg new file mode 100644 index 0000000..2c06b88 --- /dev/null +++ b/src/shared/Assets/stairway.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/storage.svg b/src/shared/Assets/storage.svg new file mode 100644 index 0000000..b7979b8 --- /dev/null +++ b/src/shared/Assets/storage.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/shared/Assets/structural-32.svg b/src/shared/Assets/structural-32.svg new file mode 100644 index 0000000..a7b3e30 --- /dev/null +++ b/src/shared/Assets/structural-32.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/structural.svg b/src/shared/Assets/structural.svg new file mode 100644 index 0000000..b275d31 --- /dev/null +++ b/src/shared/Assets/structural.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/support.svg b/src/shared/Assets/support.svg new file mode 100644 index 0000000..5bdfbbe --- /dev/null +++ b/src/shared/Assets/support.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/three-dots.svg b/src/shared/Assets/three-dots.svg new file mode 100644 index 0000000..2b46428 --- /dev/null +++ b/src/shared/Assets/three-dots.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/trash-md.svg b/src/shared/Assets/trash-md.svg new file mode 100644 index 0000000..c754785 --- /dev/null +++ b/src/shared/Assets/trash-md.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/trash-photo.svg b/src/shared/Assets/trash-photo.svg new file mode 100644 index 0000000..f24163d --- /dev/null +++ b/src/shared/Assets/trash-photo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/trash-sm-dark.svg b/src/shared/Assets/trash-sm-dark.svg new file mode 100644 index 0000000..420f71f --- /dev/null +++ b/src/shared/Assets/trash-sm-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/trash-sm-disabled.svg b/src/shared/Assets/trash-sm-disabled.svg new file mode 100644 index 0000000..ecbe567 --- /dev/null +++ b/src/shared/Assets/trash-sm-disabled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/trash-sm.svg b/src/shared/Assets/trash-sm.svg new file mode 100644 index 0000000..2342716 --- /dev/null +++ b/src/shared/Assets/trash-sm.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/trash.svg b/src/shared/Assets/trash.svg new file mode 100644 index 0000000..bf8773e --- /dev/null +++ b/src/shared/Assets/trash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/Assets/unit-add.svg b/src/shared/Assets/unit-add.svg new file mode 100644 index 0000000..89d2fc5 --- /dev/null +++ b/src/shared/Assets/unit-add.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/shared/Assets/unit-lg.svg b/src/shared/Assets/unit-lg.svg new file mode 100644 index 0000000..536a176 --- /dev/null +++ b/src/shared/Assets/unit-lg.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/shared/Assets/unit-sm.svg b/src/shared/Assets/unit-sm.svg new file mode 100644 index 0000000..b1d1799 --- /dev/null +++ b/src/shared/Assets/unit-sm.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/shared/Assets/unit.svg b/src/shared/Assets/unit.svg new file mode 100644 index 0000000..42d368a --- /dev/null +++ b/src/shared/Assets/unit.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/shared/Assets/unitedkingdomflag.svg b/src/shared/Assets/unitedkingdomflag.svg new file mode 100644 index 0000000..e8ff378 --- /dev/null +++ b/src/shared/Assets/unitedkingdomflag.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/unitedstatesflag.svg b/src/shared/Assets/unitedstatesflag.svg new file mode 100644 index 0000000..249e4e1 --- /dev/null +++ b/src/shared/Assets/unitedstatesflag.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/utilityroom.svg b/src/shared/Assets/utilityroom.svg new file mode 100644 index 0000000..4e86a0a --- /dev/null +++ b/src/shared/Assets/utilityroom.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/shared/Assets/walls-32.svg b/src/shared/Assets/walls-32.svg new file mode 100644 index 0000000..1afd88b --- /dev/null +++ b/src/shared/Assets/walls-32.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/walls.svg b/src/shared/Assets/walls.svg new file mode 100644 index 0000000..a69f97f --- /dev/null +++ b/src/shared/Assets/walls.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/water.svg b/src/shared/Assets/water.svg new file mode 100644 index 0000000..4b07b9e --- /dev/null +++ b/src/shared/Assets/water.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/Assets/welcome-aboard.svg b/src/shared/Assets/welcome-aboard.svg new file mode 100644 index 0000000..c62b0ec --- /dev/null +++ b/src/shared/Assets/welcome-aboard.svg @@ -0,0 +1,362 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shared/Assets/westfacing.svg b/src/shared/Assets/westfacing.svg new file mode 100644 index 0000000..dc1f7a0 --- /dev/null +++ b/src/shared/Assets/westfacing.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/shared/components/Address/CountryAutocomplete/CountryAutocomplete.tsx b/src/shared/components/Address/CountryAutocomplete/CountryAutocomplete.tsx new file mode 100644 index 0000000..38af02e --- /dev/null +++ b/src/shared/components/Address/CountryAutocomplete/CountryAutocomplete.tsx @@ -0,0 +1,63 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { TextBox } from 'Components/TextBox'; +import { FieldList } from 'Components/Address/FieldList'; +import { Icon } from 'Components/Icons'; + +import classes from './countryAutocomplete.module.css'; + +interface Props { + className?: string; + country: string; + countries: Array; + invalid?: boolean; + showDropDown: boolean; + showCaretIcon: boolean; + onChangeCountry: (e: any) => void; + onSelectItem: (e: any) => void; + onClickCaretIcon: (e: any) => void; +} + +const CountryAutocomplete = ({ + className, + country, + countries, + invalid, + onChangeCountry, + onSelectItem, + showDropDown, + showCaretIcon, + onClickCaretIcon, +}: Props) => ( +

    + + + {showCaretIcon && ( + + )} + + {countries.length > 0 && ( + + )} +
    +); + +CountryAutocomplete.defaultProps = { + className: undefined, + invalid: false, +}; + +const CountryAutocompleteMemo = memo(CountryAutocomplete, areEqual); + +export { CountryAutocompleteMemo as CountryAutocomplete }; diff --git a/src/shared/components/Address/CountryAutocomplete/countryAutocomplete.module.css b/src/shared/components/Address/CountryAutocomplete/countryAutocomplete.module.css new file mode 100644 index 0000000..f645a90 --- /dev/null +++ b/src/shared/components/Address/CountryAutocomplete/countryAutocomplete.module.css @@ -0,0 +1,53 @@ +.validateField { + background-image: unset !important; + border-color: unset !important; + border-top: unset !important; + border-left: unset !important; + border-right: unset !important; + border-radius: unset !important; + background-position: unset !important; + background-repeat: unset !important; + background-size: unset !important; + padding-top: 0.375rem !important; + padding-bottom: 0.375rem !important; + padding-right: 0.75rem !important; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #000000 !important; + padding-left: 8px; +} + +.validField { + border-bottom: 1px solid #d2cfda !important; +} + +.invalidField { + background-color: #fff0f0; + border-bottom: 1px solid #e82828 !important; +} + +.validateField::placeholder { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + /* Placeholder text color */ + color: #b3abc6; + /* opacity: 1; */ + /* Firefox */ +} + +.validateField:focus { + box-shadow: unset !important; + background-color: unset; +} + +.icon { + position: absolute; + right: 0; + top: 40%; +} diff --git a/src/shared/components/Address/CountryAutocomplete/index.ts b/src/shared/components/Address/CountryAutocomplete/index.ts new file mode 100644 index 0000000..66f0d9e --- /dev/null +++ b/src/shared/components/Address/CountryAutocomplete/index.ts @@ -0,0 +1 @@ +export { CountryAutocomplete } from './CountryAutocomplete'; diff --git a/src/shared/components/Address/FieldList/FieldList.tsx b/src/shared/components/Address/FieldList/FieldList.tsx new file mode 100644 index 0000000..5600813 --- /dev/null +++ b/src/shared/components/Address/FieldList/FieldList.tsx @@ -0,0 +1,40 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { ListItem } from './ListItem'; + +import classes from './fieldList.module.css'; + +type ListTypes = { + id: number; + name: string; +}; + +interface Props { + id: string; + className?: string; + list: Array; + showDropDown: boolean; + onSelectItem: (e: any) => void; +} + +const FieldList = ({ id, className, list, onSelectItem, showDropDown }: Props) => ( +
      + {list.map((item) => ( + + ))} +
    +); + +FieldList.defaultProps = { + className: undefined, +}; + +const FieldListMemo = memo(FieldList, areEqual); + +export { FieldListMemo as FieldList }; diff --git a/src/shared/components/Address/FieldList/ListItem/ListItem.tsx b/src/shared/components/Address/FieldList/ListItem/ListItem.tsx new file mode 100644 index 0000000..afd0601 --- /dev/null +++ b/src/shared/components/Address/FieldList/ListItem/ListItem.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { Anchor } from 'Components/Anchor'; + +import classes from './listItem.module.css'; + +interface Props { + id: number; + name: string; + onSelectItem: (e: any) => void; +} + +const ListItem = ({ id, name, onSelectItem }: Props) => ( +

    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 N*ZY1@^!}bB{{}ZdATR&` literal 0 HcmV?d00001 diff --git a/screenshot_2.png b/screenshot_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0fbad852451f55b263ab71a5a134e9d31f3bb58f GIT binary patch literal 279266 zcmb4q1y~zfyDkoeQXE>m#a)X#1&RfVI|Ygahu{z>UW%1sE$+c7?hd7BfZz_rQ{4TA z{qH09p6C4gxp~I2X4XvR)AxJVN`yK<0T-Jb8wm*sSMlu|4J0J&G$bU<4_Fw87A+S^ zK19PDP*zr5QC5~#-POqoXm5#x^fn?f8Bz7R6 z>wb3Dnc#DYi;UWP93++?4$`g86r}Y?Y=)y%>C=fCH<5jo4wUC#kdX}RW3+~%A|vIW zs|*Fyd)6c8r8x;PgYIq~9wwQMG7?ac5(1q`bqD$t8c<(Ah0PUTA{C;3TDCXI*6W|f zpGu-de|6jZ_3HPnbicku6k|*;{ZC9f6-*?x57i8QNT1F>Wt#M?(s_RxpiYxB%EnqH z47n3V5g=RrjWxfu1=T)A>Y94n@*IiKRpevbnJVCZ`PjPXxO&!)B=+L9)g^wmR$8CQ zVF2~;L*1>|Y!7wPFIsGRf}?@EFDK2ZqJm1jIi)+5MC|J^(|I2P*9O*MqvC7toWrbsaJN?LmU8=!?k|lp4q|%wLLY0jDJT&S z6G%x@yVk|~Wp+G|VzHNt*%whR(-2yW zAIRZ=3|b^??-QKFXf!AZ*B7j-AQ=&&Mh7tw(#)UGDrpJw0%zZrp?txke^1SfJSg>|5DDICrH<+mw3tOri54!+CiDyt ze6qsZfZ-U3DfR5S6NmfhQs6tRAZPq1IWj(9cs?M{N|)oK9*4_h+b~lr1@pd?pbz?> z{-g$__#=0A&m6b)^Tf%kzsN`6Nlm0xoEiI{|###D42^kw## z_DOcf76Xg*3$F@$i(Mv33(GX;bEnEZw98B#60+oeyt*VHd?FlT8Dc9#v`V@9ay7cC zsi~-`{`#qV_O-^D?V0Q@*@W+;Bq7TiLvwDPU}m~Uxy89|5n?LO^bhG*BDEq+ZtMKS!(V^qY>Z8fJ%c&IBvg6Q zy3)E*t9+DT32@CNIA9WYVq+%>E&yK|zspmY#+e+PoX?srzIaPh=2Rjn8<27T><)A- zt62-V25hKsWcqmRf>CEWrf8SmXLmXVvtiJM$%n0mnRl0kSw9VrvXKvz7nV7eg=V^uYnH~(Q`Vt~Kjtr1wgL&q2NqMLo* zK3*R(`=hbaJIXu4JNF8V^BN~Cw8K17F1goNnQf4GFfpkt300>_hrPtSM7|_^iXM&x zM}dpLQw8)W!c@zLJyPxJew2lmb<|Cr7gO190hwy%9j7f~D=+HEW~XPDU1&wPsXkMZ zQ~6KAMQV>17zVY*cO@w9_@zjj=0(s|tQK z{5DTmFHo<$@3Aj-LACEGUP#SD%_c4)-sa`wtt6HzhS@sQ%G+A!y=Z2`xAxrbIav$O zlJt^tORR6e>Cq|6sqmi@NJX$y`GNm(AW#S91v^)PpYWYo-0U64-@xwp?g9>zF~6bx zK;1>jKubY)MZLg~u$bcpeZ&056`U4KFRc)~gn5I;g}sj@9U2mz5bhSPArmiSCqond zJ?yBPygRI0yo)T%^UeELIj;oXESSBh5-P=*a?aCT&-qpTuBR}hFr|=btZwY<_W5%m zMqVq6q3#`0m>kT|LYke;!{Se_P)S2jgQ?Yf>z?7l^dtTyhBo>(w!jo_CbNL9=ANt` z_XxbNrSTsW)BD%gqt?ULFIZl(B(fZ9K_=vil3}N?5TL_O!|D2ID?*>L){YsonX7T{ zl3aX~CQGlXIY*{4(*5o}T-1JXLr?5;n-mL!_^3J44ZRXOAOa3~Y77K+A zNiybqa+R~*A|FndtXHsS;v^cx@xvA%d#ap6@0)AAPYLdy5I63xiIB%PO@<#J2&ZZ}}v3ZuuR1lW$n(Wp2 zz;`P)7LJukMo6?tGN+xVjINh9Zgvky?5d|dDo%{*EyO)qZSMAPktufBYFQ)MZUlbX z+t0pP)@s|?+Z0aa(rMJ)TacM~HUFw2rrdGfw$1%+3i>)I#jsYoc6k12UD?vPzo_TU z8C9TYiU;|A>CDv*<|>}2XXt@#QFUp_T=b%G&CO26y120u(tb5%}9nD?uQ8KtsHD)?vRJd}Ve)YqSVsFu! zCLPsUOg8Km22KZw(4;AfgHHZLRWEMkj2H{ic-*UyRl_IH+j081u8qVzB3z2jsukj4 zbs^%6=<2^dR#zi?wc?Ha1R|*u7z4fumzVWDC4ZoPPIs8;WfTzmoe4?xS6+hLkQ7qP zEra#zFWCuiA_9>-K$_9*Dk*!LA{mjNn3abxL)W5TA~kp*wY??&Jhq43n=Jme@&aj_ z`T6vzQuix^wtj~j{N)YmUJsVb@M!p*lh5te(*%-+;DC__6a(ky`_I0FN+Q7SXG=Xr zD^*n_R>UzD5*ji&5<21t8L>(rQ~c+#JTfy9>R;_BNJ!y8B(%S;0U-8|pD&2@vCqHu zs9(d7FcIGf5vx}g%70vqotB0AAIF#<5a*DjHDwhQ5qnJwS4&Grkd2d@`@8ueM8gy3 zxB4I?BvOXQ6ah;QPrY~0+OMYy;;Jv})+`8b_it+{xFg@w7edAWFbIS^NHfV>^u%)B@pL3IDR z$$#AEjU~v!73k~+baJG9ysw$Lle?Svt5=T?`p?h5ey61u@V}nq2>ScA5HHB}c!rCI zlbh>5?~Ujx_Sh<-4)n6L*M9?aK*$X73<(|~VP3JnI{c4Q|MkfK)>ZGny7CJ02>kc1 z|LxTO+f^H6=_>2wfOx2z#D6L5@6P}IyH`(<5rKwlF>8p7isCboqUynkiMikSeIfxB`^|T<{fR3WMdaQj zk>HJ=0(zs36fOQ&e3TF=Lf3Yg{r>*ObK!OaU(dbP;wIaRr9~>&>vhA}v|{7hsbcNS zRy9wnYhRsdznl4GYFd7LB;>!AK#R{EtKG(0bO0mG`1XN|>#qrk)R?3(?$3y>Ff9o5 zE(i66r`k|E+uwEtBy9@=!+EeiBK_M%N&qF&e}+P6z3YL=Pr%yDxUH}ws$=I+;n^5F z-evHoJd+sAN7$Y!=#_HlAa# zrB1j*WD8^O8*pnQmqw6x4=8LQ#Y5h<@Cb5)%WNrBWPBk)G+SCBaY8);A~Y$a#|1+W z84G}UaVPCTi-hv;7WF46l`9i5n;Q1B0{3?3q{kJNA)j7&eA%&E&2&wM^^fJ{W4#wvWV0(O9n9tGnAl;;9BpPL0nLCuPN+YAf8=cvEv|7!a~6Fu@1w%2 zn%Xs|QXcX1*exP#EC-<@5^7oIbZTAVMZr(?5ehCqvrOG1@0g@Ah665L&ECXkpQqKy z(l&iC3oF=2zFRC6wtX)w4-AMHMJR$*5h)0!H2#MDZyPNnM8Qwf>5rC4`FC1D=u90W zP|w*Gvy#{#um)Pk(voBnT9Q8$LePyJpMTj5P74y}Sb(*z4tQ&|d9@TO~@gA$Ba zH5m&oF>bZV#nQ|5k;O8`S&bLmbSyKM=L$~67BgI@t}YF3D3px%-d}Wu|4voi|1a&x z1l9l~hwo+eo#!&?cEydn`o^7wbsWeI>X7#()WU(mfn2gEsP0S&V{MQ~AO)AS3jaI0P zQuz(a-?5|kB~mAFa)Ff|``wLBP%U5i=C;K*23FLO?TzsPFaU)u_odl`7mnA0SG z&mfKP`$Dw9mvlmVGmC1Nb-1J17uP$7OUSz-g#&Lran;KOd$e>bh~cWQC&Ws_3>2o+ zZ!m4Q8;ER+9QaMtS&wL6V*KS;Qtku@$7|Xrt3v;mB>uN;pa#~rAlMp#5{XxD+#-S3 zl+E}M>A;R%cW29&{msv9td7|n$~%^Bo=v?RMmI`a(>~Y2FBEZKb!wIlhFXk)fAKmxh zq6{|=)$|we5t+cV3QS7>=wm`YZ(A6aN%0sqs-9@ouAFv^`1@QS>TiQ-HDk;n-ARJq zcHM&Jp>JD1yvaIuirw?7v-HA^PB&1tP%FU=DU5rG@wfYNhdhyT7720UjKTN^wR@u! ztRzUj+=33en^I~D!1KI#HJ+fn6|H%eoau>ue#+xcGh?f;&o=!*%R=;kbiCUx;mGmo z_Y9k*?q$MG2`c98B;!tz!J|_SNXW8GyR>*EY+Q8KGbyl@^^2`x?az9(zNe=;MYXvY zP)zyG3=rl3@OgH$ zGdjR9IupYR+29S4#NrMtCQPIDtH_*c9aU}?43&YgD18vIlny=t>}%(YuY8&7N=%I~c132oXBy6CG z9#l#lyg0Ob!!=)rb|Vp4Gx-0>n$wAvwXR&<&v?PBoRIijMP-5x*RMKL8v4l!rXP!7 zY7*I=h-B~QQBm)F`o~e=#i)@YNE@MjTDtAvZ`Hu#!`Y{`*pS8yC7Hc}7-=Zbsj(6l+WMaU?G@@}kHK+DG`vOnFF5f(1Nz@B zwBmv0L7FT#N;H#}{c&qnCPm(jaZ|~&;6EnZU-!`?JKwnA)SEWxzc7Y4_>lgO+`Dy0 zu+Q7{jZ_x6%19rTn|=D3aq#)Kt~p*5{qot98nN~KE(@%D*zc+;)|Mzl>J9wG*w7hz z4zw0Bs7q>TH&P|h6|ph#s6YW$XX~uiKxD;d&4ydG8s4unsprzak9N2{%t9zOLH7M9 z4&W-bIlUf(u)SEt01*^G5t;||CCKd zhw+ty3--C5?7Fzr27q2|brC?0{@X2SrxZJgESV^}#k*khvg@I9!yA8Au5rR2E98}r3W; zJt)B$HD^okNU#MjNnqF%d2yMtB{m%bg5U*8a|rFd<4UQxD^ES&`!&{oqGvProXR4- z*rv%Js5hyFqj2`Bogj4B#06UYC2@Ye@r?iK_E0;tB)#q4uslhL-$jQ?wGqEU0Qu?d zzXb4{@KGRy^#tMnB#<{Kbt_r}Ere99k^5NeQcqb$7|xcyh2rq4tg=Fh{}Tp`D{tiK z)~VRry(mKK%-AtOfPlgCk=5E7A@Z$h{ZMZ$qtVhXh-4yf61LGEv(I#ugfxSXrn;g3 z8*fjTTs-ylN+rZ7+Pe2Gxs7Kt*{09)=3crsP%gOvYCO7U$Z|&MUPrTW_!u@|4rG?iwEh zs!x45+8%!;j(lGH0p}`QW+H05pBoqcd=@=k2MHQaTgD2$zg$3|46g8hi!z2YOr78N zGI;^CB@AgBO;7axVj%<2y6)-@3_B6rI z66PN1V?!0GdO|q1GHu#|F>^fb)o(J^aC~B4c>a_vJ?M(kW=;s*a^I7H0jRf)}kUGkA z&CC=u)SjwPBY^*hdG->&Ci~&zABQ$C=`Y3(r0a0grd%4l*7=8o`p2qXHwLUyC6$ac zj7v4ow|4V*L@GS>D%29P%x1v>jIpYHM3|45++$*n?#LoeYdhB?+tY(VSW^YQlBRNk z3nR}Rpc`ua2kZv4DVb~Vm2`a*cx7wX39J02q=VLqq<02kdIlM`ioV-GB0#ORG$uwe z*R?{#j;xVQL0(Z9BbRY%yil>P{Lmd*K)E-oamhrfNv0Jb?AEt;4!9EXqMDE?f<8lo zC~8$=piDkiAGNmaO-_)i0pl4@5y=uh~BKX&U55rrMMAMJn)we^}1b zj?poQ_wFHBs6O)Pd@HhzIl7-1&(CLZsI*fi=Cm|DG}OW>&NZ*uN5x740JWk{Oj~9W zPAAf;FRN%xceKB;L8w0;|G8Tb?2PMTbeGK6rue16US8|GMWER&8%<0O{I(-0Sssr5 zRU>-n6pJnW*Z{X*2?AYQ%q`BE8vTvWvk>>i%Q`OK=?~uPx5uUe5X0))A_b=r;uR@7y@zpczx+?Tu9Zp`b zT|bCL{4@|pH9xVEm8_c5^+#k|dqoB2SxDJ8cL88UYHu`^+*_5;x{S(sKHL(xB zJ)9M0)V@)X9a0EnIPI?3yGOq{QwN{=#{T%9i+$!6@rT!X$FEcN#hDg0+ZN;CZSR(TbMzbsyO0UPpJ^@ z{w&=$BK{xPn2)gt5pS}00-14-y)D1vN!maWTt)q8=CmQ$r8C3rM{rU=x`dC9^2p~h zwpp3`rYiQ5SG@bQFtUAD5n)px3yL0Ke87Mee!Pvt?S9?Q^jLO9L-)@}V=@+p8BtT% zfaL=xn^Ygr!1y2mRcaFoHowE;g8FxNh1XLZwR7l@)^yZ~<*j^YEz-KyakY8VSR4#S zhB1k{Fuji=&qE=#O2?CFGDRF}cv!&ZOodcRI#fo{gpRS7ZQ0B#FQ7&o8J|+$FW|OVo(LQ+&u>%sCwVcob3- z@XscccWoBFSMo|mec7|lM}xG$E45ZZ%ufJUFJ`LqGtV9S<+KeeE;TM=GtJdBA1_ej z8Dl|%^zLI!NoQSSNjV#UFP^>#{s+!W2f<7m9AQH|UL_$7`|7&}{aJ)qrfVZU26h*01wGC`CH znE#Fq5|(G@-$>H2XT2bg>VlCoT-e(G4uASsz7wMa%R4t&xYM*=d+9B@-K&=M$h0uT zdVIDmxD_zFuj(t20R97- z0k(Ey#ZHzjJr(|60SI7{3;0F- z4*_)?e>6zbcvWklX8e+@{s~HOfQX=3}=eEA&Gzr4lz6n0_MI-!66h#Lag=|L(b=VM;P5=3b%iYUid^Jn~Q? zzwU5PeQQf-oLvW6z*W%Ij$7cbqpCFb8b>KCUl=8Kq+oTYL@TDtrd zkNC=pw(^S7GnF2zXAP{U@8QBZLc5GOiAOO5McmwRt9PSYAYpmU?b``v00 zW1Oe!Y$ks)+xMx_1avbw&Al#hT|wg`W?eztRMIMdjzm1PVo+Cjcx)mP4!qURZ-1_1 z;5;zP7=dxpS9JX>2zE$%jaHJsw35f#h@Y0EMB-1&?e$oBdmZ5NB9i65Lymz;1fxN) zQxZVFE89rd{eZ2qT9Q8T#uCF4l(@A2Y9Qv$`xgl*^`ZL_W9w%_CjDP;8L-Y(E`m-s zszh;sF8m`E)z~M64O#l3Y5}a4>?93y?@r4t!9hx=1zB~spN{tnA{oU`J1x{2$)TU) z{$d=4&bSeI9k{=sUgSIn{sINN%}Z++I-SLrE*7g$sN}#3%x>`?OU4A5_v%=H3;X@t z-dMNs?IU;o2aB>A(LzTbz1GgY_JyNQ%M$C_mmY-F5@~q;*hKUGp9y0C`YRQH>)i@p zn+JijuJl-f@Z#*qwwdSlXA6ts6A}eURsk*QKT^)+FA-_HOEM;%o}Ya)RiM7p9?2N9_Q|Z8ilfk?791!an`3%zQ>+ z6|~7QZAQwOT>m$JCI3((0_XZ!tWvNBs#Z+vM7I z_Q=PIVV#Ap8oY|UWIOS@w5Yt${GHZXDd=`+a};Mmue!lD1$$DNnSkA(@aj166yx&( zqhf8-_r6EgbA{Oq6J9@@k7}1a$DT2WsXF?}jFqB_hJNX4nJ{Zn6=Qv!bXpCdOBS<0 z;M)^g-E`!?IMi?p1gP+9uN(Pe(*FVfhl)4c}X!0*Za&@Ycy5AQ$e z1bSEM7iaf)0V~V%Fe+YNwEC_X8qaD}prFX9q14%D%yT@Lw*7>0*tlB!AW> z-RN2|4Vm`hJ@BR*VZ6%8mB9Ryi;WTA*fc%e1cJWR-JGVq#jl{_(V^PK!iZXcnVoQu zX3X7s0Oge7^H$|U1D4JrtA2_muL0~5KMAW3_1=Q7=QY1qY_uL84O0?7qgA(jn4 z!rcCWGs!|jd2~Hhl}=qfvvKQGbCdAFRHe?PJYjc!TUUN7pc zpkvMO8$FNJXt-#mlf>qWSeg7!Tp+&jb$wj^JM-$dv)PMxr(Mv+%=FZya<=aZE&CbK z(>U_u(x}zG8}!3N&s#Kn*r2Hwule{Yl%Rv>QET$3mITfkM7J_=0WV)@$6`YSnoFk@ zCskos^6>}?iNO6jamPfhYBRl;Ita#I^BxCA|Qo;g&ujaguUN4h5!jqiQ z&8r*HD(AWwawabtX6`0DL`Z$`pYJ{r9J`*+xBekhA?KV1Y3exlau9ypEkX%QHoyuo z$(cs5qD`VnlM_gH=(lS+rhw! zHF4kM>7hGlQ*oSu!cR&ai78pk1n%*9l?(L;rl?4Ew!sgPje-KOPfupi&BHy;U{%X* z?_vqDA$DfemN+S8!>2od_RC)t6RkO9)y6l{@Cw z#hD?$e%7#tmtGT~YqnaDH~e8v(c>uP^zcFAZOM#o^m-6t9HskZ%csS)cegUXoex#A zyNWPX!hojkFn04X`mr71%u?u=;W!>D+aOplCf+!OQ;Rg6d{h<;AiDQUilXNosL{yz z-W@(QHdASVNT`hy3r7CZ&C-7BxhZq+$kNJ9=Tu8F4hldOcKKuRyTGH0XRwUD)l`d9 zDCAaZKqB{bsM-jhYO8=ogdQYq`n^`T5u~TUXflBU=frCH`NP>j7mb@-TVUXQ_B~;a ze0ye5WBlgS*!l@Pm=!{yoe0B`n11WN*{)b)ZGJ#RTR`$OX*W~u(wc@gk{QZmQ)4kV z-8*vdId%Ov;mhL;MQdTgD8GwAiFWXwXeyUNW-Hb7mMO3k$de68Pj1@;HK2{`^|#*cN{^=(g^+D%8qwQ{^ta*EOF~l&#N3^Jz+KUO83w zw5VbB_>=1w$2IwZonKQt-%8v_9)FxxfaAxEyD_s}w$j(@GyUS08HSV{4*Tg;`ERO0 zPWC)g%f|BxgAb#YLswj1BfNDtf&k0=;;H`I=jU1D6(;`h?~Vo!tO4=m&$4vKFL={W zO~y6kKb?H39v3;$!_Zj0@)Q?w{E?o5PogRt>_vtJuprHkY3SOi+qiSv77wGT2kK6Y zai0y30?E-JKxTq6lh%~;gJrcoDo;w)ObPKZ;Klx8Ptd^JoI%QKJJQL?UZ<2;$$KFV zlNO=Fhq>uC`Mtfph{~^|m=j!!r#hY($rjjm22^90IAt<**+^#bftHBd^$VtdpXnK$_42vQaiNUia!@AS>bmu0&bbpPV-;{W=kQe zi)?2y7mR-kh>`K%GJY{}w*CBhh^-b=?Xd4i5iG+xJ}h9T{yK+rVTyRW?@z7yH0ti} z2e}J(O(#$3pJ62nrZnB$&eTIS&c^)>XP82N}VMtSQs)dZn|tcK6%VuhnYplQofi zx$`v-tkpGkcrDKEAtXJB0SgdGpw!M83ehi4J%0A5`C9RU2JHhuc>z=)b>n@J^Yx(V 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%0D3GuEK;=F(R{?O! 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 literal 0 HcmV?d00001 diff --git a/screenshot_3.png b/screenshot_3.png new file mode 100644 index 0000000000000000000000000000000000000000..155daf8e9d12ec04fa7ae4043124f7bf6e5db101 GIT binary patch literal 296144 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 literal 0 HcmV?d00001 diff --git a/src/app/App.css b/src/app/App.css new file mode 100644 index 0000000..64d6c48 --- /dev/null +++ b/src/app/App.css @@ -0,0 +1,28 @@ +/* css reset to remove the scrollbar,until it's needed */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} +html { + height: 100%; +} + +body { + margin: 0; + min-height: 100vh; + background-color: #000; + font-family: sans-serif; + border: unset; +} + +.textAlignCenter { + text-align: center; +} + +.modal-backdrop { + z-index: 1000000000; +} +.modal { + z-index: 1000000001; +} diff --git a/src/app/App.tsx b/src/app/App.tsx new file mode 100644 index 0000000..a35d52a --- /dev/null +++ b/src/app/App.tsx @@ -0,0 +1,25 @@ +import React from 'react'; + +import { Provider } from 'react-redux'; +import { Routes } from 'Routes/Routes'; + +import { UserProvider } from 'Context/User'; +import { CoreProvider } from 'Context/Core'; + +// Pull the mock data +import { setupStore } from '../store'; +import './App.css'; + +// Create the store +const store = setupStore(); + +const App = () => ( + + + + + + + +); +export default App; diff --git a/src/app/index.ts b/src/app/index.ts new file mode 100644 index 0000000..f1f2a24 --- /dev/null +++ b/src/app/index.ts @@ -0,0 +1,3 @@ +import App from './App'; + +export default App; diff --git a/src/images/favicon.png b/src/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..d6cd5e31d51e336fc82dcd1c2cf4547cc7c322e3 GIT binary patch literal 2118 zcmV-M2)Xx(P)> zjX3`Rbr9?qq$NR&iFM4$%7)sEHKA1NfHg0Z)@dthoQ=kI9KXvs=f3A8B_$g-dhvbN z@7?n`=X}oRToXR#D8eLmqmeaEXu$E11|dbD1o3zLS>yk1h%gV&nP~yjXLN1nK|4M0 zGt}7-3f+60?7pK&d@dWtp+Q2d2l!OVzW$+W@R1ALm@aTP`A>vEdKbSZ8=d_0=`zJ?9hEtE7jiSNE=EhsN!W*thunmmFoe=y1j=xn`!ZAlqgYGXldO!CJ z@Kyybzms{2)3hT1HlB76nfzKgn(7~o;C!itKk+4I*oZM~+93hKfAYEj(K%0L$R>sX zk%RjSgnqu}N(Qf&Xj>3;yXQoq>giu}rBZ`o{AQ?OB;*|i%ruwwV4-AFv)YyJy3O^5KA2%4B?lVx_NJ*tfAR3RK^E62Ic_7BbynE2lP?e}zGkAW;!|?);$|4nWP}l$%ZsNkb5JF z6NRwq!)v9s8o#k%@XoByBeJZxRQAv}%CD0*EL?CJXlHu|!bqeXT$x(q99rkCahnFg z;05{hqaEa01ZwzFjCxoV|1#c2<=7f4q|I+N-|o;c;PIOimcR!Gs3(M0*5TWMFJz-w zWCgFUSlhQY_dJTcP9JYx=rdB;TZu!DNd)B5H`RWr{D zAcP;ul%w;S>(Q5oqe$mAjLSGW9M((5OJ`bmf8LsPR6R*kW($hcos}i&q>cbfg#B1^ z6QMv)#c4%;jE#Nk>@IxV@k(h8bLF;fA%HuS)!yaU5~8j0FC3`dTxyGekSLnXJn&FH z_KA$2f2L(#DXs;I*wGRz)KInbdlsTSa)yv7n_8Hc+?$K-^k)Ymc)ik)CrL_@+bUiv ztpYyeBsb_|x#+gWr$-uCsI*?dU zIL?)Bu?!otyyVe2F|HAFbeAK8(QN@tjnwhi%DOT}d{=4p`9^-@R4xbU;Kf7S>^_(m zeK9US@6BGGY8pP(V0f}e2uB^x1Dcvgig7$q-L3aE*V_W%(!`o=SXyoxR!yNVT-e+{ zWftu*I5a?bXU0RDZ8LQnQ~#KC#_BbbxH}!jlhqzkL=`0gbv)N)3CiQu@dlpHui}S` z2~|$tS-%m%IC5U_DHc?Ir(KDp@b~v*L#h*hpKc?Ht|_OCUam@0nH|5SPwwGdpUlVc zXrUV?N8=si(jm`DqvE{-;}Q*xm6F#gsOL8*i;c`CWzp{+;(l>?LPQT0IXOEPq#2(r zud)^x+-V3WSSw7xWEoecTedSI=#D<|jqMdu5!lo@A1+w^xLlDQfs)J>Kp6+zdaYgl z^~jx%@^h7j*$`sjjfp0He`eK+v#)f4g4$l;b3xYlyU(yvO7D;}CP%aMWB*td3O0NY z-@owwRr+>3$yNBkR<i-PEQ$3UaQp&UgF! z9DJ`DrzP%;EL4kav@)Cbb~fKgDg?x{BP;F;rGIY$@n~V!MuPn^4bF;Qr&p@-2`q{w zL7Asx^yH;oxXN6a9Y1-w{ACet>t2pYDx3-JgpSUkZdz%c>J^ z&$jd+B4bY~%t8jb_jC*g(iZG%<4ydz+~jAd9D-M34K`EYM|1ZKM(Io0 z7!LMD6im|B1JQ^EgAq_yr&?xlW_^VNGQsf}`zhi}|7-sp0c-$a`9oKhX~RNFe4GIP w<}pc41v$%H14}%c=k?hJLQ~~CczpZ#599)Iw~~Lk*Z=?k07*qoM6N<$f + + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + + + + + + +

  • + + {name} + +
  • +); + +const ListItemMemo = memo(ListItem, areEqual); + +export { ListItemMemo as ListItem }; diff --git a/src/shared/components/Address/FieldList/ListItem/index.ts b/src/shared/components/Address/FieldList/ListItem/index.ts new file mode 100644 index 0000000..fe0e47c --- /dev/null +++ b/src/shared/components/Address/FieldList/ListItem/index.ts @@ -0,0 +1 @@ +export { ListItem } from "./ListItem"; diff --git a/src/shared/components/Address/FieldList/ListItem/listItem.module.css b/src/shared/components/Address/FieldList/ListItem/listItem.module.css new file mode 100644 index 0000000..0a2f388 --- /dev/null +++ b/src/shared/components/Address/FieldList/ListItem/listItem.module.css @@ -0,0 +1,14 @@ +.listItemText { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 21px; + color: #000000; + padding: 16px 0; + border-bottom: 1px solid #E8E7ED; +} + +.listItemText:hover { + background-color: transparent !important; +} diff --git a/src/shared/components/Address/FieldList/fieldList.module.css b/src/shared/components/Address/FieldList/fieldList.module.css new file mode 100644 index 0000000..e04e726 --- /dev/null +++ b/src/shared/components/Address/FieldList/fieldList.module.css @@ -0,0 +1,17 @@ +.fieldListBase { + inset: unset!important; + transform: unset!important; + background: #FFFFFF; + border: 1px solid #E8E7ED; + box-sizing: border-box; + box-shadow: 0px -3px 6px rgba(142, 134, 163, 0.1); + border-radius: 0px 0px 16px 16px; + width: 100%; + height: 292px; + padding: 0 26px 10px; + overflow-y: auto; +} + +.fieldListBase:focus, .fieldListBase:focus-visible { + outline: unset!important; +} diff --git a/src/shared/components/Address/FieldList/index.ts b/src/shared/components/Address/FieldList/index.ts new file mode 100644 index 0000000..9f85346 --- /dev/null +++ b/src/shared/components/Address/FieldList/index.ts @@ -0,0 +1 @@ +export { FieldList } from "./FieldList"; diff --git a/src/shared/components/Address/GoogleAutocomplete/GoogleAutocomplete.tsx b/src/shared/components/Address/GoogleAutocomplete/GoogleAutocomplete.tsx new file mode 100644 index 0000000..39ddbc1 --- /dev/null +++ b/src/shared/components/Address/GoogleAutocomplete/GoogleAutocomplete.tsx @@ -0,0 +1,60 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; +import ClickOutsideListener from 'HOC/ClickOutsideListener'; + +import { Label } from 'Components/Label'; +import { TextBox } from 'Components/TextBox'; +import { ValidateBackGround } from 'Components/Validation'; +import { PlacePredictions } from 'Components/Address/GoogleAutocomplete/PlacePredictions'; + +import classes from './googleAutocomplete.module.css'; + +interface Props { + address: string; + isValid?: boolean; + placePredictions: any; + showDropDown: boolean; + onChangeAddress: (e: any) => void; + onSelectItem: (e: any) => void; + onblur: (e: any) => void; +} + +const GoogleAutocomplete = ({ + address, + onChangeAddress, + isValid, + placePredictions, + onSelectItem, + showDropDown, + onblur, +}: Props) => ( +
    + + + + + + + +
    +); + +GoogleAutocomplete.defaultProps = { + isValid: true, +}; + +const GoogleAutocompleteMemo = memo(GoogleAutocomplete, areEqual); + +export { GoogleAutocompleteMemo as GoogleAutocomplete }; diff --git a/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/Place/Place.tsx b/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/Place/Place.tsx new file mode 100644 index 0000000..3ca007e --- /dev/null +++ b/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/Place/Place.tsx @@ -0,0 +1,37 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { Button } from 'Components/Button'; + +import classes from './place.module.css'; + +type PlaceType = { + placeId: string; + mainText: string; + secondaryText: string; +}; + +interface Props { + place: PlaceType; + onSelectItem: (e: any) => void; +} + +const Place = ({ place, onSelectItem }: Props) => ( +
  • + +
  • +); + +const PlaceMemo = memo(Place, areEqual); + +export { PlaceMemo as Place }; diff --git a/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/Place/index.ts b/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/Place/index.ts new file mode 100644 index 0000000..b9da560 --- /dev/null +++ b/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/Place/index.ts @@ -0,0 +1 @@ +export { Place } from "./Place"; diff --git a/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/Place/place.module.css b/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/Place/place.module.css new file mode 100644 index 0000000..97b28e4 --- /dev/null +++ b/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/Place/place.module.css @@ -0,0 +1,35 @@ +.placeText { + display: flex; + flex-direction: column; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 21px; + color: #000000; + padding: 16px 0; + border-bottom: 1px solid #E8E7ED; +} + +.placeText:hover { + background-color: transparent !important; +} + +.mainText { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 21px; + color: #000000; +} + +.secondaryText { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 12px; + line-height: 16px; + color: #777185; + margin-top: 5px; +} diff --git a/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/PlacePredictions.tsx b/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/PlacePredictions.tsx new file mode 100644 index 0000000..0e3fce7 --- /dev/null +++ b/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/PlacePredictions.tsx @@ -0,0 +1,31 @@ +import React, { memo } from "react"; + +import { areEqual } from "Utils/equalityChecks"; + +import { Place } from "Components/Address/GoogleAutocomplete/PlacePredictions/Place"; + +import classes from "./placePredictions.module.css"; + +type PlacesType = { + placeId: string; + mainText: string; + secondaryText: string; +}; + +interface Props { + placePredictions: Array; + showDropDown: boolean; + onSelectItem: (e: any) => void; +} + +const PlacePredictions = ({ placePredictions, showDropDown, onSelectItem }: Props) => ( +
      + {placePredictions.map((place) => ( + + ))} +
    +); + +const PlacePredictionsMemo = memo(PlacePredictions, areEqual); + +export { PlacePredictionsMemo as PlacePredictions }; diff --git a/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/index.ts b/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/index.ts new file mode 100644 index 0000000..8aca7b7 --- /dev/null +++ b/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/index.ts @@ -0,0 +1 @@ +export { PlacePredictions } from "./PlacePredictions"; diff --git a/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/placePredictions.module.css b/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/placePredictions.module.css new file mode 100644 index 0000000..4d09a45 --- /dev/null +++ b/src/shared/components/Address/GoogleAutocomplete/PlacePredictions/placePredictions.module.css @@ -0,0 +1,17 @@ +.placeListBase { + inset: unset!important; + transform: unset!important; + background: #FFFFFF; + border: 1px solid #E8E7ED; + box-sizing: border-box; + box-shadow: 0px -3px 6px rgba(142, 134, 163, 0.1); + border-radius: 0px 0px 16px 16px; + width: 100%; + height: 463px; + padding: 0 26px 10px; + overflow-y: auto; + } + +.placeListBase:focus, .placeListBase:focus-visible { + outline: unset!important; +} diff --git a/src/shared/components/Address/GoogleAutocomplete/googleAutocomplete.module.css b/src/shared/components/Address/GoogleAutocomplete/googleAutocomplete.module.css new file mode 100644 index 0000000..38f4c56 --- /dev/null +++ b/src/shared/components/Address/GoogleAutocomplete/googleAutocomplete.module.css @@ -0,0 +1,50 @@ + +.label { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 16px; + line-height: 20px; + color: #5b476b; + padding-left: 8px; +} + +.validateField { + background-image: unset !important; + border-color: unset !important; + border-top: unset !important; + border-left: unset !important; + border-right: unset !important; + border-radius: unset !important; + background-position: unset !important; + background-repeat: unset !important; + background-size: unset !important; + padding-top: 0.375rem !important; + padding-bottom: 0.375rem !important; + padding-right: 0.75rem !important; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #000000 !important; + padding-left: 8px; +} + +.validField { + border-bottom: 1px solid #d2cfda !important; +} + +.validateField::placeholder { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #b3abc6; +} + +.validateField:focus { + box-shadow: unset !important; + background-color: unset; +} diff --git a/src/shared/components/Address/GoogleAutocomplete/index.ts b/src/shared/components/Address/GoogleAutocomplete/index.ts new file mode 100644 index 0000000..d2c2b03 --- /dev/null +++ b/src/shared/components/Address/GoogleAutocomplete/index.ts @@ -0,0 +1 @@ +export { GoogleAutocomplete } from "./GoogleAutocomplete"; diff --git a/src/shared/components/Address/ProvinceAutocomplete/ProvinceAutocomplete.tsx b/src/shared/components/Address/ProvinceAutocomplete/ProvinceAutocomplete.tsx new file mode 100644 index 0000000..b40bdd5 --- /dev/null +++ b/src/shared/components/Address/ProvinceAutocomplete/ProvinceAutocomplete.tsx @@ -0,0 +1,61 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { TextBox } from 'Components/TextBox'; +import { FieldList } from 'Components/Address/FieldList'; +import { Icon } from 'Components/Icons'; + +import classes from './provinceAutocomplete.module.css'; + +interface Props { + className?: string; + province: string; + provinces: Array; + invalid?: boolean; + showDropDown: boolean; + showCaretIcon: boolean; + onChangeProvince: (e: any) => void; + onSelectItem: (e: any) => void; + onClickCaretIcon: (e: any) => void; +} + +const ProvinceAutocomplete = ({ + className, + province, + provinces, + invalid, + onChangeProvince, + onSelectItem, + showDropDown, + showCaretIcon, + onClickCaretIcon, +}: Props) => ( +
    + + {showCaretIcon && ( + + )} + {provinces.length > 0 && ( + + )} +
    +); + +ProvinceAutocomplete.defaultProps = { + className: undefined, + invalid: false, +}; + +const ProvinceAutocompleteMemo = memo(ProvinceAutocomplete, areEqual); + +export { ProvinceAutocompleteMemo as ProvinceAutocomplete }; diff --git a/src/shared/components/Address/ProvinceAutocomplete/index.ts b/src/shared/components/Address/ProvinceAutocomplete/index.ts new file mode 100644 index 0000000..ac1eeb6 --- /dev/null +++ b/src/shared/components/Address/ProvinceAutocomplete/index.ts @@ -0,0 +1 @@ +export { ProvinceAutocomplete } from './ProvinceAutocomplete'; diff --git a/src/shared/components/Address/ProvinceAutocomplete/provinceAutocomplete.module.css b/src/shared/components/Address/ProvinceAutocomplete/provinceAutocomplete.module.css new file mode 100644 index 0000000..f645a90 --- /dev/null +++ b/src/shared/components/Address/ProvinceAutocomplete/provinceAutocomplete.module.css @@ -0,0 +1,53 @@ +.validateField { + background-image: unset !important; + border-color: unset !important; + border-top: unset !important; + border-left: unset !important; + border-right: unset !important; + border-radius: unset !important; + background-position: unset !important; + background-repeat: unset !important; + background-size: unset !important; + padding-top: 0.375rem !important; + padding-bottom: 0.375rem !important; + padding-right: 0.75rem !important; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #000000 !important; + padding-left: 8px; +} + +.validField { + border-bottom: 1px solid #d2cfda !important; +} + +.invalidField { + background-color: #fff0f0; + border-bottom: 1px solid #e82828 !important; +} + +.validateField::placeholder { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + /* Placeholder text color */ + color: #b3abc6; + /* opacity: 1; */ + /* Firefox */ +} + +.validateField:focus { + box-shadow: unset !important; + background-color: unset; +} + +.icon { + position: absolute; + right: 0; + top: 40%; +} diff --git a/src/shared/components/Address/index.ts b/src/shared/components/Address/index.ts new file mode 100644 index 0000000..6068e4b --- /dev/null +++ b/src/shared/components/Address/index.ts @@ -0,0 +1,3 @@ +export { CountryAutocomplete } from "./CountryAutocomplete"; +export { ProvinceAutocomplete } from "./ProvinceAutocomplete"; +export { GoogleAutocomplete } from "./GoogleAutocomplete"; diff --git a/src/shared/components/Anchor/Anchor.tsx b/src/shared/components/Anchor/Anchor.tsx new file mode 100644 index 0000000..b0e0bc1 --- /dev/null +++ b/src/shared/components/Anchor/Anchor.tsx @@ -0,0 +1,71 @@ +import React, { memo, KeyboardEvent } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +// import classes from './anchor.module.css'; + +interface Props { + id?: string; + className?: string; + href?: string; + ariaLabel?: string; + role?: string; + tabIndex?: number; + dataId?: number | string; + dataName?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: KeyboardEvent) => void; + onMouseUp?: (e: any) => void; + onMouseDown?: (e: any) => void; + children: any; +} +const Anchor = ({ + id, + className = '', + href = '/', + ariaLabel, + role, + tabIndex, + dataId, + dataName, + children, + onClick, + onKeyUp, + onMouseDown, + onMouseUp, +}: Props) => ( +
    + {children} + +); + +Anchor.defaultProps = { + id: null, + className: null, + href: null, + role: 'link', + tabIndex: undefined, + ariaLabel: null, + dataId: null, + dataName: null, + onClick: null, + onMouseUp: null, + onMouseDown: null, + onKeyUp: null, +}; + +// This to allows default props +const AnchorMemo = memo(Anchor, areEqual); +export { AnchorMemo as Anchor }; diff --git a/src/shared/components/Anchor/EmailAnchor/EmailAnchor.tsx b/src/shared/components/Anchor/EmailAnchor/EmailAnchor.tsx new file mode 100644 index 0000000..4b17fa2 --- /dev/null +++ b/src/shared/components/Anchor/EmailAnchor/EmailAnchor.tsx @@ -0,0 +1,29 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; +import { Icon } from 'Components/Icons'; + +import classes from './emailAnchor.module.css'; + +interface Props { + address: string; + children: any; + className?: string; +} + +const EmailAnchor = ({ address, children, className }: Props) => ( + + + + + {children} + +); + +EmailAnchor.defaultProps = { + className: undefined, +}; +const EmailAnchorMemo = memo(EmailAnchor, areEqual); +export { EmailAnchorMemo as EmailAnchor }; diff --git a/src/shared/components/Anchor/EmailAnchor/emailAnchor.module.css b/src/shared/components/Anchor/EmailAnchor/emailAnchor.module.css new file mode 100644 index 0000000..874d2f5 --- /dev/null +++ b/src/shared/components/Anchor/EmailAnchor/emailAnchor.module.css @@ -0,0 +1,13 @@ +.emailAnchorBase { + text-decoration: none; + color: #777185; +} + +/* .icon { + transform: scale(0.8); +}*/ + +.text { + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/src/shared/components/Anchor/EmailAnchor/index.ts b/src/shared/components/Anchor/EmailAnchor/index.ts new file mode 100644 index 0000000..6d3acaa --- /dev/null +++ b/src/shared/components/Anchor/EmailAnchor/index.ts @@ -0,0 +1 @@ +export { EmailAnchor } from './EmailAnchor'; diff --git a/src/shared/components/Anchor/NewTabAnchor/NewTabAnchor.tsx b/src/shared/components/Anchor/NewTabAnchor/NewTabAnchor.tsx new file mode 100644 index 0000000..33ed006 --- /dev/null +++ b/src/shared/components/Anchor/NewTabAnchor/NewTabAnchor.tsx @@ -0,0 +1,24 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +import classes from './newTabAnchor.module.css'; + +interface Props { + href: string; + className?: string; + children: any; +} + +const NewTabAnchor = ({ href, className, children }: Props) => ( + + {children} + +); + +NewTabAnchor.defaultProps = { + className: undefined, +}; + +// This to allows default props +const NewTabAnchorMemo = memo(NewTabAnchor, areEqual); +export { NewTabAnchorMemo as NewTabAnchor }; diff --git a/src/shared/components/Anchor/NewTabAnchor/index.ts b/src/shared/components/Anchor/NewTabAnchor/index.ts new file mode 100644 index 0000000..43665fc --- /dev/null +++ b/src/shared/components/Anchor/NewTabAnchor/index.ts @@ -0,0 +1 @@ +export { NewTabAnchor } from './NewTabAnchor'; diff --git a/src/shared/components/Anchor/NewTabAnchor/newTabAnchor.module.css b/src/shared/components/Anchor/NewTabAnchor/newTabAnchor.module.css new file mode 100644 index 0000000..fc8fc45 --- /dev/null +++ b/src/shared/components/Anchor/NewTabAnchor/newTabAnchor.module.css @@ -0,0 +1,14 @@ +.anchorBase { + text-decoration: none; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 16px; + line-height: 24px; + transition: color 150ms ease-in-out; + color: #9A00FF; +} + +.anchorBase:active, .anchorBase:focus { + color: #6D00E6; +} diff --git a/src/shared/components/Anchor/PhoneAnchor/PhoneAnchor.tsx b/src/shared/components/Anchor/PhoneAnchor/PhoneAnchor.tsx new file mode 100644 index 0000000..23fc228 --- /dev/null +++ b/src/shared/components/Anchor/PhoneAnchor/PhoneAnchor.tsx @@ -0,0 +1,30 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; +import { Icon } from 'Components/Icons'; + +import classes from './phone.module.css'; + +interface Props { + phone: string; + children: any; + className?: string; +} + +const PhoneAnchor = ({ phone, children, className }: Props) => ( + + + + + {children} + +); + +PhoneAnchor.defaultProps = { + className: undefined, +}; + +const PhoneAnchorMemo = memo(PhoneAnchor, areEqual); +export { PhoneAnchorMemo as PhoneAnchor }; diff --git a/src/shared/components/Anchor/PhoneAnchor/index.ts b/src/shared/components/Anchor/PhoneAnchor/index.ts new file mode 100644 index 0000000..ac90774 --- /dev/null +++ b/src/shared/components/Anchor/PhoneAnchor/index.ts @@ -0,0 +1 @@ +export { PhoneAnchor } from './PhoneAnchor'; diff --git a/src/shared/components/Anchor/PhoneAnchor/phone.module.css b/src/shared/components/Anchor/PhoneAnchor/phone.module.css new file mode 100644 index 0000000..6ea1094 --- /dev/null +++ b/src/shared/components/Anchor/PhoneAnchor/phone.module.css @@ -0,0 +1,12 @@ +.text { + padding-left: 15px; +} + +.phoneAnchorBase { + text-decoration: none; + color: #777185; +} + +.phoneInfo svg { + transform: scale(0.6); +} diff --git a/src/shared/components/Anchor/anchor.module.css b/src/shared/components/Anchor/anchor.module.css new file mode 100644 index 0000000..c1155f8 --- /dev/null +++ b/src/shared/components/Anchor/anchor.module.css @@ -0,0 +1,6 @@ +.anchor { + color: navy; +} +.anchorVisited { + color: #6a0dce; +} diff --git a/src/shared/components/Anchor/index.ts b/src/shared/components/Anchor/index.ts new file mode 100644 index 0000000..a194899 --- /dev/null +++ b/src/shared/components/Anchor/index.ts @@ -0,0 +1 @@ +export { Anchor } from './Anchor'; diff --git a/src/shared/components/Avatar/Avatar/Avatar.tsx b/src/shared/components/Avatar/Avatar/Avatar.tsx new file mode 100644 index 0000000..f8c3327 --- /dev/null +++ b/src/shared/components/Avatar/Avatar/Avatar.tsx @@ -0,0 +1,20 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +import classes from './avatar.module.css'; + +interface Props { + className?: string; + avatar: string; +} + +const Avatar = ({ className, avatar }: Props) => ( + avatar +); + +Avatar.defaultProps = { + className: '', +}; + +const AvatarMemo = memo(Avatar, areEqual); +export { AvatarMemo as Avatar }; diff --git a/src/shared/components/Avatar/Avatar/avatar.module.css b/src/shared/components/Avatar/Avatar/avatar.module.css new file mode 100644 index 0000000..b5f977e --- /dev/null +++ b/src/shared/components/Avatar/Avatar/avatar.module.css @@ -0,0 +1,5 @@ +.avatarDefault { + width: 40px; + height: 40px; + border-radius: 20px; +} diff --git a/src/shared/components/Avatar/Avatar/index.ts b/src/shared/components/Avatar/Avatar/index.ts new file mode 100644 index 0000000..d3fb6df --- /dev/null +++ b/src/shared/components/Avatar/Avatar/index.ts @@ -0,0 +1 @@ +export { Avatar } from './Avatar'; diff --git a/src/shared/components/Avatar/AvatarOrInitials/AvatarOrInitials.tsx b/src/shared/components/Avatar/AvatarOrInitials/AvatarOrInitials.tsx new file mode 100644 index 0000000..aad1c5d --- /dev/null +++ b/src/shared/components/Avatar/AvatarOrInitials/AvatarOrInitials.tsx @@ -0,0 +1,31 @@ +import React, { memo } from 'react'; + +import { initials } from 'Utils/helpers'; +import { areEqual } from 'Utils/equalityChecks'; + +import { Avatar } from 'Components/Avatar'; + +import classes from './avatarOrInitials.module.css'; + +interface Props { + avatar: string; + firstName: string; + lastName?: string; + avatarClassName?: string; +} + +const AvatarOrInitials = ({ avatar, firstName, lastName, avatarClassName }: Props) => + typeof avatar === 'string' && avatar.length > 0 ? ( + + ) : ( +
    {initials(firstName, lastName)}
    + ); + +AvatarOrInitials.defaultProps = { + avatarClassName: undefined, + lastName: '', +}; + +const AvatarOrInitialsMemo = memo(AvatarOrInitials, areEqual); + +export { AvatarOrInitialsMemo as AvatarOrInitials }; diff --git a/src/shared/components/Avatar/AvatarOrInitials/avatarOrInitials.module.css b/src/shared/components/Avatar/AvatarOrInitials/avatarOrInitials.module.css new file mode 100644 index 0000000..36b524b --- /dev/null +++ b/src/shared/components/Avatar/AvatarOrInitials/avatarOrInitials.module.css @@ -0,0 +1,14 @@ +.initials { + display: flex; + justify-content: center; + align-items: center; + font-weight: 600; + font-size: 16px; + line-height: 20px; + color: #5b476b; + height: 40px; + width: 40px; + background-color: #d2cfda; + border: 1px solid #ffffff; + border-radius: 50%; +} diff --git a/src/shared/components/Avatar/AvatarOrInitials/index.ts b/src/shared/components/Avatar/AvatarOrInitials/index.ts new file mode 100644 index 0000000..b76989d --- /dev/null +++ b/src/shared/components/Avatar/AvatarOrInitials/index.ts @@ -0,0 +1 @@ +export { AvatarOrInitials } from './AvatarOrInitials'; diff --git a/src/shared/components/Avatar/index.ts b/src/shared/components/Avatar/index.ts new file mode 100644 index 0000000..c6e954c --- /dev/null +++ b/src/shared/components/Avatar/index.ts @@ -0,0 +1,2 @@ +export { Avatar } from './Avatar'; +export { AvatarOrInitials } from './AvatarOrInitials'; diff --git a/src/shared/components/Button/Button/Button.tsx b/src/shared/components/Button/Button/Button.tsx new file mode 100644 index 0000000..15e1824 --- /dev/null +++ b/src/shared/components/Button/Button/Button.tsx @@ -0,0 +1,78 @@ +import React, { KeyboardEvent, memo, MouseEvent } from 'react'; +import { areEqualShallow } from 'Utils/equalityChecks'; +/* + Todo: Use the bs markup and base classes. + THen test with an overload on witdh and see which takes precedence. +*/ +interface Props { + className?: string; + disabled?: boolean; + type?: 'button' | 'submit' | 'reset'; + id?: string; + ariaLabel?: string; + value?: any; + children?: any; + dataId?: number | string; + dataName?: string; + onClick?: (e: MouseEvent) => void; + onKeyUp?: (e: KeyboardEvent) => void; +} +const Button = React.forwardRef( + ( + { ariaLabel, type, className, disabled = false, id, value, children, dataId, dataName, onClick, onKeyUp }: Props, + buttonRef: any + ) => + buttonRef ? ( + + ) : ( + + ) +); + +Button.defaultProps = { + className: undefined, + onClick: undefined, + onKeyUp: undefined, + disabled: undefined, + id: undefined, + value: undefined, + dataId: null, + dataName: null, + type: 'button', + ariaLabel: undefined, + children: undefined, +}; +// This to allows default props +const ButtonMemo = memo(Button, areEqualShallow); + +// Export it with the correct name +export { ButtonMemo as Button }; diff --git a/src/shared/components/Button/Button/index.ts b/src/shared/components/Button/Button/index.ts new file mode 100644 index 0000000..fe9c53c --- /dev/null +++ b/src/shared/components/Button/Button/index.ts @@ -0,0 +1 @@ +export { Button } from './Button'; diff --git a/src/shared/components/Button/CancelButton/CancelButton.tsx b/src/shared/components/Button/CancelButton/CancelButton.tsx new file mode 100644 index 0000000..085273d --- /dev/null +++ b/src/shared/components/Button/CancelButton/CancelButton.tsx @@ -0,0 +1,26 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; + +import { Button } from '../Button'; +import classes from './cancelButton.module.css'; + +interface Props { + className?: string; + children: any; + onClick: (e: any) => void; +} + +const CancelButton = ({ className, children, onClick }: Props) => ( + +); + +CancelButton.defaultProps = { + className: undefined, +}; + +const CancelButtonMemo = memo(CancelButton, areEqualShallow); + +export { CancelButtonMemo as CancelButton }; diff --git a/src/shared/components/Button/CancelButton/cancelButton.module.css b/src/shared/components/Button/CancelButton/cancelButton.module.css new file mode 100644 index 0000000..c2ae64d --- /dev/null +++ b/src/shared/components/Button/CancelButton/cancelButton.module.css @@ -0,0 +1,14 @@ +.btnBase { + display: flex; + /* flex-direction: row; */ + justify-content: center; + align-items: center; + width: 100%; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + border-color: #5b476b !important; + color: #5b476b !important; +} diff --git a/src/shared/components/Button/CancelButton/index.ts b/src/shared/components/Button/CancelButton/index.ts new file mode 100644 index 0000000..43def47 --- /dev/null +++ b/src/shared/components/Button/CancelButton/index.ts @@ -0,0 +1 @@ +export { CancelButton } from './CancelButton'; diff --git a/src/shared/components/Button/CategoryButton/CategoryButton.tsx b/src/shared/components/Button/CategoryButton/CategoryButton.tsx new file mode 100644 index 0000000..144455c --- /dev/null +++ b/src/shared/components/Button/CategoryButton/CategoryButton.tsx @@ -0,0 +1,43 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import { Icon } from 'Components/Icons'; +import { Button } from '../Button'; +import classes from './categoryButton.module.css'; + +interface Props { + className?: string; + selectedCount?: number; + isOpen?: boolean; + onClick?: (e: any) => void; +} + +const CategoryButton = ({ className, isOpen, selectedCount = 0, onClick }: Props) => ( + +); + +CategoryButton.defaultProps = { + className: undefined, + selectedCount: undefined, + isOpen: undefined, + onClick: undefined, +}; + +const CategoryButtonMemo = memo(CategoryButton, areEqualShallow); + +export { CategoryButtonMemo as CategoryButton }; diff --git a/src/shared/components/Button/CategoryButton/categoryButton.module.css b/src/shared/components/Button/CategoryButton/categoryButton.module.css new file mode 100644 index 0000000..1086cbe --- /dev/null +++ b/src/shared/components/Button/CategoryButton/categoryButton.module.css @@ -0,0 +1,59 @@ +.categoryButtonBase { + width: auto; + min-width: 160px; + height: 32px; + padding: 0 8px !important; + background: #e8e7ed; + border: 1px solid #e8e7ed; + border-radius: 32px; + display: flex; + align-items: center; + justify-content: space-between; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #5b476b; +} +.categoryButtonBase:focus { + box-shadow: none; +} + +.categoryButtonBase svg { + cursor: unset; +} + +.counter { + width: 24px; + height: 24px; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #ffffff; + background: #9a00ff; + border-radius: 50%; + margin-left: 10px; + margin-right: 10px; +} +.hasCategories, +.showCategories { + color: #ffffff !important; + background-color: #5b476b; +} +.hasCategories svg path, +.showCategories svg path { + fill: #ffffff; +} +.hasCategories:hover { + color: #ffffff; +} +.caretIcon { + transition: transform 0.2s; +} +.rotateIcon { + transform: rotate(-180deg); + transition: transform 0.2s; +} diff --git a/src/shared/components/Button/CategoryButton/index.ts b/src/shared/components/Button/CategoryButton/index.ts new file mode 100644 index 0000000..4832756 --- /dev/null +++ b/src/shared/components/Button/CategoryButton/index.ts @@ -0,0 +1 @@ +export { CategoryButton } from './CategoryButton'; diff --git a/src/shared/components/Button/ClearButton/ClearButton.tsx b/src/shared/components/Button/ClearButton/ClearButton.tsx new file mode 100644 index 0000000..f504d1a --- /dev/null +++ b/src/shared/components/Button/ClearButton/ClearButton.tsx @@ -0,0 +1,25 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import { Icon } from 'Components/Icons'; +import { Button } from '../Button'; +import classes from './clearButton.module.css'; + +interface Props { + className?: string; + onClick: (e: any) => void; +} + +const ClearButton = ({ className, onClick }: Props) => ( + +); + +ClearButton.defaultProps = { + className: undefined, +}; + +const ClearButtonMemo = memo(ClearButton, areEqualShallow); + +export { ClearButtonMemo as ClearButton }; diff --git a/src/shared/components/Button/ClearButton/clearButton.module.css b/src/shared/components/Button/ClearButton/clearButton.module.css new file mode 100644 index 0000000..693985e --- /dev/null +++ b/src/shared/components/Button/ClearButton/clearButton.module.css @@ -0,0 +1,22 @@ +.btnBase { + width: 86px; + height: 32px; + padding: 8px !important; + background: #FFFFFF; + border: 1px solid #D2CFDA; + box-shadow: 0 6px 12px rgba(142, 134, 163, 0.2); + border-radius: 16px; + display: flex; + align-items: center; + justify-content: space-between; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 16px; + line-height: 24px; + color: #000000; +} + +.btnBase svg { + cursor: unset; +} diff --git a/src/shared/components/Button/ClearButton/index.ts b/src/shared/components/Button/ClearButton/index.ts new file mode 100644 index 0000000..f8bef72 --- /dev/null +++ b/src/shared/components/Button/ClearButton/index.ts @@ -0,0 +1 @@ +export { ClearButton } from './ClearButton'; diff --git a/src/shared/components/Button/CloseButton/CloseButton.tsx b/src/shared/components/Button/CloseButton/CloseButton.tsx new file mode 100644 index 0000000..e675d6c --- /dev/null +++ b/src/shared/components/Button/CloseButton/CloseButton.tsx @@ -0,0 +1,28 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import { Button } from "../Button"; +import { Icon } from "Components/Icons"; +import classes from "./closeButton.module.css" + +interface Props { + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +// This button is based on the BS close button and is used to close anything that needs closing. +const CloseButton = ({ onClick, onKeyUp }: Props) => ( + +); + +CloseButton.defaultProps = { + onClick: undefined, + onKeyUp: undefined, +}; +// This to allows default props +const CloseButtonMemo = memo(CloseButton, areEqualShallow); + +// Export it with the correct name +export { CloseButtonMemo as CloseButton }; diff --git a/src/shared/components/Button/CloseButton/closeButton.module.css b/src/shared/components/Button/CloseButton/closeButton.module.css new file mode 100644 index 0000000..901394d --- /dev/null +++ b/src/shared/components/Button/CloseButton/closeButton.module.css @@ -0,0 +1,20 @@ +.btnBase { + color: #fff; + background: linear-gradient(135deg, #9601FF 0%, #6D00E6 100%); + transition: color 300ms ease-out, background 300ms ease-out; + width: 56px; + height: 56px; + padding: 0rem !important; +} + +.closeButton { + display: flex; + align-items: center; + justify-content: center; + margin-right: 8px; +} + +.closeButtonIcon { + transform-origin: center; + transform: rotate(45deg) scale(2); +} \ No newline at end of file diff --git a/src/shared/components/Button/CloseButton/index.ts b/src/shared/components/Button/CloseButton/index.ts new file mode 100644 index 0000000..f8dff69 --- /dev/null +++ b/src/shared/components/Button/CloseButton/index.ts @@ -0,0 +1 @@ +export { CloseButton } from "./CloseButton"; diff --git a/src/shared/components/Button/DarkPurpleButton/DarkPurpleButton.tsx b/src/shared/components/Button/DarkPurpleButton/DarkPurpleButton.tsx new file mode 100644 index 0000000..184c888 --- /dev/null +++ b/src/shared/components/Button/DarkPurpleButton/DarkPurpleButton.tsx @@ -0,0 +1,53 @@ +import React, { KeyboardEvent, memo, MouseEvent } from 'react'; +import { areEqualShallow } from 'Utils/equalityChecks'; +import { Button } from '../Button'; + +import classes from './darkPurpleButton.module.css'; + +interface Props { + className?: string; + disabled?: boolean; + type?: 'button' | 'submit' | 'reset'; + outlined?: boolean; + id?: string; + children: any; + onClick?: (e: MouseEvent) => void; + onKeyUp?: (e: KeyboardEvent) => void; +} + +const DarkPurpleButton = ({ + className, + type, + disabled = false, + outlined = false, + id, + children, + onClick, + onKeyUp, +}: Props) => ( + +); + +DarkPurpleButton.defaultProps = { + className: undefined, + onClick: null, + onKeyUp: null, + disabled: false, + outlined: false, + id: null, + type: 'button', +}; +// This to allows default props +const DarkPurpleButtonMemo = memo(DarkPurpleButton, areEqualShallow); + +// Export it with the correct name +export { DarkPurpleButtonMemo as DarkPurpleButton }; diff --git a/src/shared/components/Button/DarkPurpleButton/darkPurpleButton.module.css b/src/shared/components/Button/DarkPurpleButton/darkPurpleButton.module.css new file mode 100644 index 0000000..ae4068f --- /dev/null +++ b/src/shared/components/Button/DarkPurpleButton/darkPurpleButton.module.css @@ -0,0 +1,17 @@ +.btnBase { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + padding: 10px 49px; + color: #5b476b; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + background: #ffffff; + border: 1px solid #5b476b; + box-sizing: border-box; + border-radius: 5px; +} diff --git a/src/shared/components/Button/DarkPurpleButton/index.ts b/src/shared/components/Button/DarkPurpleButton/index.ts new file mode 100644 index 0000000..e956ab4 --- /dev/null +++ b/src/shared/components/Button/DarkPurpleButton/index.ts @@ -0,0 +1 @@ +export { DarkPurpleButton } from './DarkPurpleButton'; diff --git a/src/shared/components/Button/DeleteButton/DeleteButton.tsx b/src/shared/components/Button/DeleteButton/DeleteButton.tsx new file mode 100644 index 0000000..7ab7a00 --- /dev/null +++ b/src/shared/components/Button/DeleteButton/DeleteButton.tsx @@ -0,0 +1,41 @@ +import React, { KeyboardEvent, memo, MouseEvent } from 'react'; +import { areEqualShallow } from 'Utils/equalityChecks'; +import { Button } from '../Button'; + +import classes from './deleteButton.module.css'; + +interface Props { + className?: string; + disabled?: boolean; + id?: string; + children: any; + onClick?: (e: MouseEvent) => void; + onKeyUp?: (e: KeyboardEvent) => void; +} + +const DeleteButton = ({ className, disabled = false, id, children, onClick, onKeyUp }: Props) => ( + +); + +// This to allows default props +DeleteButton.defaultProps = { + className: undefined, + onClick: null, + onKeyUp: null, + disabled: false, + id: null, +}; + +const DeleteButtonMemo = memo(DeleteButton, areEqualShallow); + +// Export it with the correct name +export { DeleteButtonMemo as DeleteButton }; diff --git a/src/shared/components/Button/DeleteButton/deleteButton.module.css b/src/shared/components/Button/DeleteButton/deleteButton.module.css new file mode 100644 index 0000000..70ce4e9 --- /dev/null +++ b/src/shared/components/Button/DeleteButton/deleteButton.module.css @@ -0,0 +1,14 @@ +.btnBase { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + width: 100%; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + border-color: #e82828 !important; + color: #e82828 !important; +} diff --git a/src/shared/components/Button/DeleteButton/index.ts b/src/shared/components/Button/DeleteButton/index.ts new file mode 100644 index 0000000..45cf4a7 --- /dev/null +++ b/src/shared/components/Button/DeleteButton/index.ts @@ -0,0 +1 @@ +export { DeleteButton } from './DeleteButton'; diff --git a/src/shared/components/Button/EditButton/EditButton.tsx b/src/shared/components/Button/EditButton/EditButton.tsx new file mode 100644 index 0000000..e17c1aa --- /dev/null +++ b/src/shared/components/Button/EditButton/EditButton.tsx @@ -0,0 +1,23 @@ +import React, { memo } from 'react'; +import { areEqualShallow } from 'Utils/equalityChecks'; +import { PurpleButton } from '../PurpleButton'; + +import classes from './editButton.module.css'; + +interface Props { + editable: boolean; + onClick: (e: any) => void; +} + +const EditButton = ({ editable, onClick }: Props) => ( +
    + + {editable ? 'Done' : 'Edit'} + +
    +); + +const EditButtonMemo = memo(EditButton, areEqualShallow); + +// Export it with the correct name +export { EditButtonMemo as EditButton }; diff --git a/src/shared/components/Button/EditButton/editButton.module.css b/src/shared/components/Button/EditButton/editButton.module.css new file mode 100644 index 0000000..a2d753e --- /dev/null +++ b/src/shared/components/Button/EditButton/editButton.module.css @@ -0,0 +1,8 @@ +.button { + width: 148px; + height: 32px; +} + +.button:focus { + box-shadow: unset; +} diff --git a/src/shared/components/Button/EditButton/index.ts b/src/shared/components/Button/EditButton/index.ts new file mode 100644 index 0000000..1422c38 --- /dev/null +++ b/src/shared/components/Button/EditButton/index.ts @@ -0,0 +1 @@ +export { EditButton } from './EditButton'; diff --git a/src/shared/components/Button/LoadMoreButton/LoadMoreButton.tsx b/src/shared/components/Button/LoadMoreButton/LoadMoreButton.tsx new file mode 100644 index 0000000..abbc0dd --- /dev/null +++ b/src/shared/components/Button/LoadMoreButton/LoadMoreButton.tsx @@ -0,0 +1,29 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; +import { Button } from 'Components/Button'; +import { Icon } from 'Components/Icons'; + +import classes from './loadMoreButton.module.css'; + +interface Props { + type: string; + totalItems?: number; + loadMoreItemsClick?: (e: any) => void; +} + +const LoadMoreButton = ({ type, totalItems, loadMoreItemsClick }: Props) => ( + +); + +LoadMoreButton.defaultProps = { + totalItems: undefined, + loadMoreItemsClick: undefined, +}; +const LoadMoreButtonMemo = memo(LoadMoreButton, areEqual); + +export { LoadMoreButtonMemo as LoadMoreButton }; diff --git a/src/shared/components/Button/LoadMoreButton/index.ts b/src/shared/components/Button/LoadMoreButton/index.ts new file mode 100644 index 0000000..f53f937 --- /dev/null +++ b/src/shared/components/Button/LoadMoreButton/index.ts @@ -0,0 +1 @@ +export { LoadMoreButton } from './LoadMoreButton'; diff --git a/src/shared/components/Button/LoadMoreButton/loadMoreButton.module.css b/src/shared/components/Button/LoadMoreButton/loadMoreButton.module.css new file mode 100644 index 0000000..0ef5303 --- /dev/null +++ b/src/shared/components/Button/LoadMoreButton/loadMoreButton.module.css @@ -0,0 +1,27 @@ +.loadMoreButton { + margin-top: 24px; + min-height: 33px; + display: grid; + grid-template-columns: minmax(20px, 1fr) auto minmax(20px, 1fr); + align-items: center; + text-align: center; + grid-gap: 20px; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #777185; + width: 100%; +} +.loadMoreButton:focus { + box-shadow: none; +} +.loadMoreButton:before, +.loadMoreButton:after { + content: ''; + border-top: 1px solid #d2cfda; +} +.loadMoreButton svg { + margin-left: 14px; +} diff --git a/src/shared/components/Button/OutlineButton/OutlineButton.tsx b/src/shared/components/Button/OutlineButton/OutlineButton.tsx new file mode 100644 index 0000000..164d897 --- /dev/null +++ b/src/shared/components/Button/OutlineButton/OutlineButton.tsx @@ -0,0 +1,26 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; + +import { Button } from '../Button'; +import classes from './outlineButton.module.css'; + +interface Props { + className?: string; + children: any; + onClick: (e: any) => void; +} + +const OutlineButton = ({ className, children, onClick }: Props) => ( + +); + +OutlineButton.defaultProps = { + className: undefined, +}; + +const OutlineButtonMemo = memo(OutlineButton, areEqualShallow); + +export { OutlineButtonMemo as OutlineButton }; diff --git a/src/shared/components/Button/OutlineButton/index.ts b/src/shared/components/Button/OutlineButton/index.ts new file mode 100644 index 0000000..59ee957 --- /dev/null +++ b/src/shared/components/Button/OutlineButton/index.ts @@ -0,0 +1 @@ +export { OutlineButton } from './OutlineButton'; diff --git a/src/shared/components/Button/OutlineButton/outlineButton.module.css b/src/shared/components/Button/OutlineButton/outlineButton.module.css new file mode 100644 index 0000000..c2ae64d --- /dev/null +++ b/src/shared/components/Button/OutlineButton/outlineButton.module.css @@ -0,0 +1,14 @@ +.btnBase { + display: flex; + /* flex-direction: row; */ + justify-content: center; + align-items: center; + width: 100%; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + border-color: #5b476b !important; + color: #5b476b !important; +} diff --git a/src/shared/components/Button/ProjectScreenButton/ProjectScreenButton.tsx b/src/shared/components/Button/ProjectScreenButton/ProjectScreenButton.tsx new file mode 100644 index 0000000..3454860 --- /dev/null +++ b/src/shared/components/Button/ProjectScreenButton/ProjectScreenButton.tsx @@ -0,0 +1,76 @@ +import React, { KeyboardEvent, memo, MouseEvent } from 'react'; +import { areEqualShallow } from 'Utils/equalityChecks'; + +import { Icon } from 'Components/Icons'; +import { Modal } from 'Components/Modal'; +import { Anchor } from 'Components/Anchor'; +import { Button } from '../Button'; + +import classes from './projectScreenButton.module.css'; + +interface Props { + type?: 'button'; + id?: string; + isModalOpen: boolean; + onClick?: (e: MouseEvent) => void; + onKeyUp?: (e: KeyboardEvent) => void; + setModalStatus: () => void; +} + +const ProjectScreenButton = ({ type, id, isModalOpen, onClick, onKeyUp, setModalStatus }: Props) => ( + <> + +
      +
    • + + Add a Contact + + +
    • +
    • + {/* + Create Project + + */} +
    • +
    +
    + + {!isModalOpen && ( + + )} + +); + +ProjectScreenButton.defaultProps = { + onClick: undefined, + onKeyUp: undefined, + id: undefined, + type: 'button', +}; + +const ProjectScreenButtonMemo = memo(ProjectScreenButton, areEqualShallow); +export { ProjectScreenButtonMemo as ProjectScreenButton }; diff --git a/src/shared/components/Button/ProjectScreenButton/index.ts b/src/shared/components/Button/ProjectScreenButton/index.ts new file mode 100644 index 0000000..ef45624 --- /dev/null +++ b/src/shared/components/Button/ProjectScreenButton/index.ts @@ -0,0 +1 @@ +export { ProjectScreenButton } from './ProjectScreenButton'; \ No newline at end of file diff --git a/src/shared/components/Button/ProjectScreenButton/projectScreenButton.module.css b/src/shared/components/Button/ProjectScreenButton/projectScreenButton.module.css new file mode 100644 index 0000000..61d741c --- /dev/null +++ b/src/shared/components/Button/ProjectScreenButton/projectScreenButton.module.css @@ -0,0 +1,112 @@ +/* Plus Button */ + +.btnBase { + display: flex; + justify-content: center; + align-items: center; + color: #fff; + background: linear-gradient(135deg, #9601ff 0%, #6d00e6 100%); + transition: color 300ms ease-out, background 300ms ease-out; + width: 56px; + height: 56px; + padding: 0rem !important; +} + +.btnBase:hover, +.btnBase:active { + color: #fff !important; + background: linear-gradient(135deg, #6d00e6 0%, #6d00e6 100%); +} + +.btnIcon { + transform-origin: center; + transform: scale(2); +} + +.plusButton { + display: flex; + align-items: center; + justify-content: center; +} + +.outlined { + color: #9a00ff; + background: linear-gradient(0, transparent 0%, transparent 100%); +} + +.btn-important { + border-radius: 3px !important; +} + +/* Modal */ + +.modalOverride { + background-color: rgba(255, 255, 255, 0.75); +} + +.modalDialogOverride { + background-color: unset !important; + width: 100%; + height: 100%; + display: flex; + align-items: flex-end; + flex-direction: column-reverse; + margin: 0rem !important; +} + +.modalContentOverride { + background-color: unset !important; + border: unset !important; +} + +.modalLinkOverride { + border: none !important; + background-color: unset !important; + padding-top: 24px; +} + +.linkText { + text-decoration: none !important; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 18px; + line-height: 23px; + text-align: right; + color: #000000 !important; +} + +.iconContainer { + background-color: #f4e5ff; + margin-left: 24px; + border: 0.5px solid #d2cfda; + box-shadow: 0px 3px 8px rgba(142, 134, 163, 0.25); + height: 40px; + width: 40px; + text-align: center; + padding: 0rem !important; +} + +.listIcon { + transform-origin: center; + transform: scale(0.8); +} + +.closeButtonContainer { + display: flex; + align-items: center; + justify-content: center; + padding-top: 32px; +} + +.closeButton { + display: flex; + align-items: center; + justify-content: center; + margin-right: -8px; +} + +.closeButtonIcon { + transform-origin: center; + transform: rotate(45deg) scale(2); +} diff --git a/src/shared/components/Button/PurpleButton/PurpleButton.tsx b/src/shared/components/Button/PurpleButton/PurpleButton.tsx new file mode 100644 index 0000000..6e78752 --- /dev/null +++ b/src/shared/components/Button/PurpleButton/PurpleButton.tsx @@ -0,0 +1,53 @@ +import React, { KeyboardEvent, memo, MouseEvent } from "react"; +import { areEqualShallow } from "Utils/equalityChecks"; +import { Button } from "../Button"; + +import classes from "./purpleButton.module.css"; + +interface Props { + className?: string; + disabled?: boolean; + type?: "button" | "submit" | "reset"; + outlined?: boolean; + id?: string; + children: any; + onClick?: (e: MouseEvent) => void; + onKeyUp?: (e: KeyboardEvent) => void; +} + +const PurpleButton = ({ + className, + type, + disabled = false, + outlined = false, + id, + children, + onClick, + onKeyUp, +}: Props) => ( + +); + +PurpleButton.defaultProps = { + className: undefined, + onClick: null, + onKeyUp: null, + disabled: false, + outlined: false, + id: null, + type: "button", +}; +// This to allows default props +const PurpleButtonMemo = memo(PurpleButton, areEqualShallow); + +// Export it with the correct name +export { PurpleButtonMemo as PurpleButton }; diff --git a/src/shared/components/Button/PurpleButton/index.ts b/src/shared/components/Button/PurpleButton/index.ts new file mode 100644 index 0000000..492c011 --- /dev/null +++ b/src/shared/components/Button/PurpleButton/index.ts @@ -0,0 +1 @@ +export { PurpleButton } from './PurpleButton'; diff --git a/src/shared/components/Button/PurpleButton/purpleButton.module.css b/src/shared/components/Button/PurpleButton/purpleButton.module.css new file mode 100644 index 0000000..e392972 --- /dev/null +++ b/src/shared/components/Button/PurpleButton/purpleButton.module.css @@ -0,0 +1,31 @@ +.btnBase { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + width: 100%; + padding: 10px 49px; + color: #fff; + border-radius: 5px; + border-color: #9A00FF; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + background: -webkit-linear-gradient(135deg, #9601FF 0%, #6D00E6 100%); + background: -moz-linear-gradient(135deg, #9601FF 0%, #6D00E6 100%); + background: -o-linear-gradient(135deg, #9601FF 0%, #6D00E6 100%); + background: linear-gradient(135deg, #9601FF 0%, #6D00E6 100%); + transition: color 300ms ease-out,background 300ms ease-out; +} + +.btnBase:hover, .btnBase:active { + color: #fff; + background: linear-gradient(135deg, #6D00E6 0%, #6D00E6 100%); +} + +.outlined { + color: #9A00FF; + background: linear-gradient(0, transparent 0%, transparent 100%); +} diff --git a/src/shared/components/Button/RadioButton/RadioButton.tsx b/src/shared/components/Button/RadioButton/RadioButton.tsx new file mode 100644 index 0000000..00087a5 --- /dev/null +++ b/src/shared/components/Button/RadioButton/RadioButton.tsx @@ -0,0 +1,48 @@ +import React, { KeyboardEvent, memo, MouseEvent } from 'react'; +import { areEqualShallow } from 'Utils/equalityChecks'; +import { Icon } from 'Components/Icons'; +import { Button } from '../Button'; + +import classes from './radioButton.module.css'; + +interface Props { + className?: string; + selected?: boolean; + disabled?: boolean; + id?: string; + value?: string; + children: any; + onClick?: (e: MouseEvent) => void; + onKeyUp?: (e: KeyboardEvent) => void; +} + +const RadioButton = ({ className, selected, disabled, value, id, children, onClick, onKeyUp }: Props) => ( + +); + +RadioButton.defaultProps = { + value: undefined, + className: undefined, + onClick: null, + onKeyUp: null, + selected: false, + disabled: false, + id: null, +}; + +// This to allows default props +const RadioButtonMemo = memo(RadioButton, areEqualShallow); + +// Export it with the correct name +export { RadioButtonMemo as RadioButton }; diff --git a/src/shared/components/Button/RadioButton/index.ts b/src/shared/components/Button/RadioButton/index.ts new file mode 100644 index 0000000..f268c5f --- /dev/null +++ b/src/shared/components/Button/RadioButton/index.ts @@ -0,0 +1 @@ +export { RadioButton } from './RadioButton'; diff --git a/src/shared/components/Button/RadioButton/radioButton.module.css b/src/shared/components/Button/RadioButton/radioButton.module.css new file mode 100644 index 0000000..d1497c0 --- /dev/null +++ b/src/shared/components/Button/RadioButton/radioButton.module.css @@ -0,0 +1,26 @@ +.btnBase { + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px; + color: #000000; + background: linear-gradient(0, transparent 0%, transparent 100%); + border-radius: 8px; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 500; + font-size: 16px; + line-height: 24px; +} + +.btnBase:focus { + box-shadow: unset!important; +} + +.outlined { + border-color: #9A00FF; +} + +.btnBase svg { + margin-right: 16px; +} diff --git a/src/shared/components/Button/RoomButton/RoomButton.tsx b/src/shared/components/Button/RoomButton/RoomButton.tsx new file mode 100644 index 0000000..e5e4b42 --- /dev/null +++ b/src/shared/components/Button/RoomButton/RoomButton.tsx @@ -0,0 +1,47 @@ +import React, { KeyboardEvent, memo, MouseEvent } from 'react'; +import { areEqualShallow } from 'Utils/equalityChecks'; +import { Button } from '../Button'; + +import classes from './roomButton.module.css'; + +interface Props { + className?: string; + disabled?: boolean; + type?: 'button' | 'submit' | 'reset'; + isActive?: boolean; + id?: string; + children: any; + onClick?: (e: MouseEvent) => void; + onKeyUp?: (e: KeyboardEvent) => void; +} + +const RoomButton = React.forwardRef( + ({ className, type, disabled = false, isActive, id, children, onClick, onKeyUp }: Props, buttonsRef: any) => ( + + ) +); + +RoomButton.defaultProps = { + className: undefined, + onClick: null, + onKeyUp: null, + disabled: false, + isActive: false, + id: null, + type: 'button', +}; +// This to allows default props +const RoomButtonMemo = memo(RoomButton, areEqualShallow); + +// Export it with the correct name +export { RoomButtonMemo as RoomButton }; diff --git a/src/shared/components/Button/RoomButton/index.ts b/src/shared/components/Button/RoomButton/index.ts new file mode 100644 index 0000000..90e08b6 --- /dev/null +++ b/src/shared/components/Button/RoomButton/index.ts @@ -0,0 +1 @@ +export { RoomButton } from "./RoomButton"; diff --git a/src/shared/components/Button/RoomButton/roomButton.module.css b/src/shared/components/Button/RoomButton/roomButton.module.css new file mode 100644 index 0000000..d4079c1 --- /dev/null +++ b/src/shared/components/Button/RoomButton/roomButton.module.css @@ -0,0 +1,25 @@ +.roomBtnBase { + display: flex; + align-items: center; + width: 100%; + padding: 10px 49px; + color: #000000; + border-radius: 5px; + border: 1px solid #d2cfda; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + background-color: #ffffff; + overflow: hidden; + white-space: nowrap; +} + +.roomBtnBase:hover, +.roomBtnBase:active, +.isActive { + border: 1px solid #9a00ff; + box-shadow: 0px 3px 6px rgba(142, 134, 163, 0.1); + transition: 0.3s ease-in-out; +} diff --git a/src/shared/components/Button/TileButton/TileButton.tsx b/src/shared/components/Button/TileButton/TileButton.tsx new file mode 100644 index 0000000..77ec51b --- /dev/null +++ b/src/shared/components/Button/TileButton/TileButton.tsx @@ -0,0 +1,40 @@ +import React, { memo, ReactNode } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { Button } from '..'; + +import classes from './tileButton.module.css'; + +interface Props { + caption?: string; + icon?: ReactNode; + sizeSmall?: boolean; + className?: string; + disabled?: boolean; + onTileClick?: (e: any) => void; +} + +const TileButtonContainer = ({ caption, icon, sizeSmall, className, disabled = false, onTileClick }: Props) => ( + +); + +TileButtonContainer.defaultProps = { + caption: undefined, + icon: undefined, + sizeSmall: false, + className: undefined, + onTileClick: undefined, + disabled: false, +}; + +const TileButtonContainerMemo = memo(TileButtonContainer, areEqual); + +export { TileButtonContainerMemo as TileButton }; diff --git a/src/shared/components/Button/TileButton/index.ts b/src/shared/components/Button/TileButton/index.ts new file mode 100644 index 0000000..11e9a71 --- /dev/null +++ b/src/shared/components/Button/TileButton/index.ts @@ -0,0 +1 @@ +export { TileButton } from './TileButton'; diff --git a/src/shared/components/Button/TileButton/tileButton.module.css b/src/shared/components/Button/TileButton/tileButton.module.css new file mode 100644 index 0000000..e948b33 --- /dev/null +++ b/src/shared/components/Button/TileButton/tileButton.module.css @@ -0,0 +1,36 @@ +.imageTileCard { + height: 199px; + width: 199px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + border: 1px solid #d2cfda; + border-radius: 10px; + margin: 0.75em 0.75em; + background-color: unset !important; +} +.imageTileCard:hover { + box-shadow: 0px 6px 12px rgba(142, 134, 163, 0.2); + border-color: rgba(154, 0, 255, 0.5); + transition: ease-in-out 0.2s; +} +.imageCaption { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 20px; + line-height: 31px; + text-align: center; +} +.sizeSmall { + width: 156px; + height: 156px; + padding-top: 36px; + margin: 0; + justify-content: flex-start; +} +.sizeSmall .imageCaption { + font-size: 16px; + line-height: 24px; +} diff --git a/src/shared/components/Button/index.ts b/src/shared/components/Button/index.ts new file mode 100644 index 0000000..c6193d5 --- /dev/null +++ b/src/shared/components/Button/index.ts @@ -0,0 +1,12 @@ +export { Button } from './Button'; +export { CancelButton } from './CancelButton'; +export { CategoryButton } from './CategoryButton'; +export { ClearButton } from './ClearButton'; +export { DarkPurpleButton } from './DarkPurpleButton'; +export { DeleteButton } from './DeleteButton'; +export { OutlineButton } from './OutlineButton'; +export { ProjectScreenButton } from './ProjectScreenButton'; +export { PurpleButton } from './PurpleButton'; +export { TileButton } from './TileButton'; +export { RadioButton } from './RadioButton'; +export { LoadMoreButton } from './LoadMoreButton'; diff --git a/src/shared/components/CheckBox/CheckBox.tsx b/src/shared/components/CheckBox/CheckBox.tsx new file mode 100644 index 0000000..2850d6c --- /dev/null +++ b/src/shared/components/CheckBox/CheckBox.tsx @@ -0,0 +1,42 @@ +import React, { ChangeEvent, KeyboardEvent, memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +/* + Todo: Use the bs markup and base classes. + THen test with an overload on witdh and see which takes precedence. +*/ +interface Props { + id?: string; + checked: boolean; + className: string; + name?: string; + autoComplete?: string; + disabled?: boolean; + onChange: (e: ChangeEvent) => void; + onKeyUp?: (e: KeyboardEvent) => void; +} +const CheckBox = ({ id, checked, className, name, autoComplete = 'off', disabled, onChange, onKeyUp }: Props) => ( + +); + +CheckBox.defaultProps = { + id: undefined, + onKeyUp: undefined, + name: undefined, + disabled: false, + autoComplete: undefined, +}; + +const CheckBoxMemo = memo(CheckBox, areEqual); +export { CheckBoxMemo as CheckBox }; diff --git a/src/shared/components/CheckBox/index.ts b/src/shared/components/CheckBox/index.ts new file mode 100644 index 0000000..0a1de62 --- /dev/null +++ b/src/shared/components/CheckBox/index.ts @@ -0,0 +1 @@ +export { CheckBox } from './CheckBox'; diff --git a/src/shared/components/CompanyHeader/CompanyHeader.tsx b/src/shared/components/CompanyHeader/CompanyHeader.tsx new file mode 100644 index 0000000..b2066b5 --- /dev/null +++ b/src/shared/components/CompanyHeader/CompanyHeader.tsx @@ -0,0 +1,17 @@ +import { Icon } from 'Components/Icons'; +import React, { memo } from 'react'; +import { areEqualShallow } from 'Utils/equalityChecks'; + +interface Props { + iconClassName: string; + iconType?: string; +} +const CompanyHeader = ({ iconClassName, iconType }: Props) => ; + +CompanyHeader.defaultProps = { + iconType: 'logo', +}; + +const CompanyHeaderMemo = memo(CompanyHeader, areEqualShallow); + +export { CompanyHeaderMemo as CompanyHeader }; diff --git a/src/shared/components/CompanyHeader/index.ts b/src/shared/components/CompanyHeader/index.ts new file mode 100644 index 0000000..2c1357c --- /dev/null +++ b/src/shared/components/CompanyHeader/index.ts @@ -0,0 +1 @@ +export { CompanyHeader } from './CompanyHeader'; diff --git a/src/shared/components/Crew/Crew/Crew.tsx b/src/shared/components/Crew/Crew/Crew.tsx new file mode 100644 index 0000000..9c069b5 --- /dev/null +++ b/src/shared/components/Crew/Crew/Crew.tsx @@ -0,0 +1,44 @@ +import React, { memo, ReactNode } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; +import { PurpleButton } from 'Components/Button'; +import { ProjectDataHeader } from 'Containers/ProjectData'; + +import classes from './crew.module.css'; + +interface Props { + children?: ReactNode; + hasCrew: boolean; + currentUserName: any; + currentUserAvatar: any; + onClickAddCrew: (e: any) => void; +} + +const Crew = ({ children, hasCrew, currentUserName, currentUserAvatar, onClickAddCrew }: Props) => ( +
    +
    + + {hasCrew && ( + + Add Crew + + )} +
    + +
    + {currentUserAvatar} +
    +
    {currentUserName}
    + (You) +
    +
    +
    {children}
    +
    +); +Crew.defaultProps = { + children: undefined, +}; + +const CrewMemo = memo(Crew, areEqual); + +export { CrewMemo as Crew }; diff --git a/src/shared/components/Crew/Crew/crew.module.css b/src/shared/components/Crew/Crew/crew.module.css new file mode 100644 index 0000000..7575aa6 --- /dev/null +++ b/src/shared/components/Crew/Crew/crew.module.css @@ -0,0 +1,38 @@ +.crewContent { + width: 100%; + padding: 0 0 24px; + position: relative; +} +.contentHeader h2 { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 32px; + line-height: 19px; + color: #000000; + margin: 0; +} +.addCrewButton { + background: #ffffff; + color: #9a00ff; + font-weight: 500; + width: 244px; + border-radius: 5px; + margin-left: 20px; +} +.addCrewButton:focus { + box-shadow: none; +} +.userNameArea { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 18px; + line-height: 24px; + color: #777185; + margin-left: 10px; +} +.currentUser { + align-self: flex-start; + padding: 30px; +} diff --git a/src/shared/components/Crew/Crew/index.ts b/src/shared/components/Crew/Crew/index.ts new file mode 100644 index 0000000..361b5d7 --- /dev/null +++ b/src/shared/components/Crew/Crew/index.ts @@ -0,0 +1 @@ +export { Crew } from './Crew'; diff --git a/src/shared/components/Crew/CrewPlaceholder/CrewPlaceholder.tsx b/src/shared/components/Crew/CrewPlaceholder/CrewPlaceholder.tsx new file mode 100644 index 0000000..d97d1ca --- /dev/null +++ b/src/shared/components/Crew/CrewPlaceholder/CrewPlaceholder.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; +import { Icon } from 'Components/Icons'; + +import { PurpleButton } from 'Components/Button'; +import { areEqual } from 'Utils/equalityChecks'; +import classes from './crewPlaceholder.module.css'; + +interface Props { + onClickAddCrew: () => void; +} + +const CrewPlaceholder = ({ onClickAddCrew }: Props) => ( +
    +
    + +
    You haven’t added any team members yet
    +
    Click the ‘Add Crew Member’ button to create your best team!
    + + Add Crew + +
    +
    +); + +const CrewPlaceholderMemo = memo(CrewPlaceholder, areEqual); + +export { CrewPlaceholderMemo as CrewPlaceholder }; diff --git a/src/shared/components/Crew/CrewPlaceholder/crewPlaceholder.module.css b/src/shared/components/Crew/CrewPlaceholder/crewPlaceholder.module.css new file mode 100644 index 0000000..66059ad --- /dev/null +++ b/src/shared/components/Crew/CrewPlaceholder/crewPlaceholder.module.css @@ -0,0 +1,44 @@ +.content { + max-width: 310px; + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; +} +.content > svg { + transform: scale(0.7); +} +.heading { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + text-align: center; + color: #777185; + margin-bottom: 10px; +} +.copy { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 14px; + line-height: 21px; + text-align: center; + color: #777185; + width: 280px; +} +.content button, +.content button:hover, +.content button:focus { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + width: 244px; + margin-top: 16px; + background: linear-gradient(135deg, #9601ff 0%, #6d00e6 100%); + color: #ffffff; + box-shadow: none; +} diff --git a/src/shared/components/Crew/CrewPlaceholder/index.ts b/src/shared/components/Crew/CrewPlaceholder/index.ts new file mode 100644 index 0000000..94ed90d --- /dev/null +++ b/src/shared/components/Crew/CrewPlaceholder/index.ts @@ -0,0 +1 @@ +export { CrewPlaceholder } from './CrewPlaceholder'; diff --git a/src/shared/components/Crew/CrewWrapper/CrewWrapper.tsx b/src/shared/components/Crew/CrewWrapper/CrewWrapper.tsx new file mode 100644 index 0000000..a690e7f --- /dev/null +++ b/src/shared/components/Crew/CrewWrapper/CrewWrapper.tsx @@ -0,0 +1,26 @@ +import React, { memo, ReactNode } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +import { SingleProjectProvider } from 'Context/Project'; +import { ProjectTabsLayout } from 'Containers/Layouts/ProjectTabsLayout'; +import { TabContent } from 'Components/Tabs'; + +import classes from './crewWrapper.module.css'; + +interface Props { + children: ReactNode; +} + +const CrewWrapper = ({ children }: Props) => ( + + + + {children} + + + +); + +const CrewWrapperMemo = memo(CrewWrapper, areEqual); + +export { CrewWrapperMemo as CrewWrapper }; diff --git a/src/shared/components/Crew/CrewWrapper/crewWrapper.module.css b/src/shared/components/Crew/CrewWrapper/crewWrapper.module.css new file mode 100644 index 0000000..f2feaed --- /dev/null +++ b/src/shared/components/Crew/CrewWrapper/crewWrapper.module.css @@ -0,0 +1,3 @@ +.tabContent { + min-height: calc(100vh - 150px); +} \ No newline at end of file diff --git a/src/shared/components/Crew/CrewWrapper/index.ts b/src/shared/components/Crew/CrewWrapper/index.ts new file mode 100644 index 0000000..1872c7a --- /dev/null +++ b/src/shared/components/Crew/CrewWrapper/index.ts @@ -0,0 +1 @@ +export { CrewWrapper } from './CrewWrapper'; diff --git a/src/shared/components/Crew/EmployeeDirectory/EmployeeDirectory.tsx b/src/shared/components/Crew/EmployeeDirectory/EmployeeDirectory.tsx new file mode 100644 index 0000000..7eced83 --- /dev/null +++ b/src/shared/components/Crew/EmployeeDirectory/EmployeeDirectory.tsx @@ -0,0 +1,82 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +import { UserModel } from 'Containers/User/Models/UserModel'; +import { PurpleButton } from 'Components/Button'; + +import { EmployeeRow } from 'Components/Crew'; +import { Icon } from 'Components/Icons'; +import classes from './employeeDirectory.module.css'; + +interface Props { + employees: Array; + selectedMembers: any[]; + showError: boolean; + disableButton: boolean; + searchValue: string; + onClickMemberRow: (e: any) => void; + onClickSelectCrew: (e: any) => void; +} + +const EmployeeDirectory = ({ + employees, + selectedMembers, + showError, + disableButton, + searchValue, + onClickMemberRow, + onClickSelectCrew, +}: Props) => ( +
    + {showError &&

    Please select one or more team members

    } + +

    Employee Directory

    + + {employees.length > 0 && + employees.map( + ({ id, first_name: firstName, last_name: lastName, full_name: fullName, avatar_url: avatar, roles }) => ( + + ) + )} + + {employees.length === 0 && searchValue.length > 0 && ( +
    +

    Please find an employee and select them to add them to the project.

    +
    +
    + +
    +

    No Contacts found matching:

    +

    {`"${searchValue}"`}

    +
    +
    + + Select Crew + +
    +
    + )} + + {employees.length > 0 && ( +
    + + Select Crew + +
    + )} +
    +); + +const EmployeeDirectoryMemo = memo(EmployeeDirectory, areEqual); + +export { EmployeeDirectoryMemo as EmployeeDirectory }; diff --git a/src/shared/components/Crew/EmployeeDirectory/employeeDirectory.module.css b/src/shared/components/Crew/EmployeeDirectory/employeeDirectory.module.css new file mode 100644 index 0000000..941298d --- /dev/null +++ b/src/shared/components/Crew/EmployeeDirectory/employeeDirectory.module.css @@ -0,0 +1,79 @@ +.employeeDirectoryBase { + margin: 20px 0; +} + +.errorMessage { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 14px; + line-height: 21px; + color: #E82828; + margin-bottom: 16px; +} + +.title { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #777185; + margin-bottom: 24px; +} + +.buttonContainer { + width: 100%; + display: flex; + justify-content: center; + margin-top: 24px; +} + +.buttonContainer button { + width: 240px; +} + +.noEmployeesContainer { + width: 100%; + height: 300px; + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 16px; + line-height: 24px; + text-align: center; + color: #777185; +} + +.noMatchContainer { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.searchIcon { + width: 56px; + height: 56px; + border-radius: 28px; + display: flex; + justify-content: center; + align-items: center; + background: #F4E5FF; + margin-bottom: 10px; +} + +.noEmployeesText { + margin-bottom: 0; +} + +.searchText { + font-weight: 600; + color: #000000; +} diff --git a/src/shared/components/Crew/EmployeeDirectory/index.ts b/src/shared/components/Crew/EmployeeDirectory/index.ts new file mode 100644 index 0000000..88e776b --- /dev/null +++ b/src/shared/components/Crew/EmployeeDirectory/index.ts @@ -0,0 +1 @@ +export { EmployeeDirectory } from './EmployeeDirectory'; diff --git a/src/shared/components/Crew/EmployeeRow/EmployeeRow.tsx b/src/shared/components/Crew/EmployeeRow/EmployeeRow.tsx new file mode 100644 index 0000000..d54bb27 --- /dev/null +++ b/src/shared/components/Crew/EmployeeRow/EmployeeRow.tsx @@ -0,0 +1,59 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; +import { Avatar } from 'Components/Avatar'; +import { initials } from 'Utils/helpers'; + +import { Roles } from 'Containers/People'; +import { Icon } from 'Components/Icons'; +import classes from './employeeRow.module.css'; + +const getAvatar = (avatar, firstName, lastName) => + avatar ? ( + + ) : ( +
    {initials(firstName, lastName)}
    + ); + +interface Props { + id: string; + firstName: string; + lastName: string; + fullName: string; + avatar: string; + roles: any[]; + selectedMembers: any[]; + onClickMemberRow: (e: any) => void; +} + +const EmployeeRow = ({ + id, + firstName, + lastName, + fullName, + avatar, + roles, + selectedMembers, + onClickMemberRow, +}: Props) => ( +
    +
    + {getAvatar(avatar, firstName, lastName)} +

    {fullName}

    +
    +
    + + +
    +
    +); + +const EmployeeRowMemo = memo(EmployeeRow, areEqual); + +export { EmployeeRowMemo as EmployeeRow }; diff --git a/src/shared/components/Crew/EmployeeRow/employeeRow.module.css b/src/shared/components/Crew/EmployeeRow/employeeRow.module.css new file mode 100644 index 0000000..9446248 --- /dev/null +++ b/src/shared/components/Crew/EmployeeRow/employeeRow.module.css @@ -0,0 +1,62 @@ +.memberRowBase { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + margin: 16px 24px 0; + padding-bottom: 14px; + border-bottom: 1px solid #e8e7ed; +} + +.memberDetails { + display: flex; + flex-direction: row; + align-items: center; +} + +.avatar { + width: 40px; + height: 40px; + border-radius: 20px; +} + +.initials { + width: 40px; + height: 40px; + border-radius: 20px; + background: #d2cfda; + border: 1px solid #ffffff; + display: flex; + justify-content: center; + align-items: center; +} + +.name { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #000000; + margin: 0 0 0 16px; +} + +.checkBox { + width: 32px; + height: 32px; + order: 1; + z-index: 2; + position: absolute; + right: 30px; + top: 50%; + transform: translateY(-50%); + cursor: pointer; + visibility: hidden; +} + +.roleTags { + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin: auto 16px; +} diff --git a/src/shared/components/Crew/EmployeeRow/index.ts b/src/shared/components/Crew/EmployeeRow/index.ts new file mode 100644 index 0000000..bfd3b30 --- /dev/null +++ b/src/shared/components/Crew/EmployeeRow/index.ts @@ -0,0 +1 @@ +export { EmployeeRow } from './EmployeeRow'; diff --git a/src/shared/components/Crew/EmployeesEmptyPlaceholder/EmployeesEmptyPlaceholder.tsx b/src/shared/components/Crew/EmployeesEmptyPlaceholder/EmployeesEmptyPlaceholder.tsx new file mode 100644 index 0000000..b931e19 --- /dev/null +++ b/src/shared/components/Crew/EmployeesEmptyPlaceholder/EmployeesEmptyPlaceholder.tsx @@ -0,0 +1,20 @@ +import React, { memo } from 'react'; +import { Icon } from 'Components/Icons'; + +import { areEqual } from 'Utils/equalityChecks'; + +import classes from './employeesEmptyPlaceholder.module.css'; + +const EmployeesEmptyPlaceholder = () => ( +
    +
    + +
    You haven’t added any team employees yet
    +
    Go to the people section, and invite your employees to join your company!
    +
    +
    +); + +const EmployeesEmptyPlaceholderMemo = memo(EmployeesEmptyPlaceholder, areEqual); + +export { EmployeesEmptyPlaceholderMemo as EmployeesEmptyPlaceholder }; diff --git a/src/shared/components/Crew/EmployeesEmptyPlaceholder/employeesEmptyPlaceholder.module.css b/src/shared/components/Crew/EmployeesEmptyPlaceholder/employeesEmptyPlaceholder.module.css new file mode 100644 index 0000000..43fb8ac --- /dev/null +++ b/src/shared/components/Crew/EmployeesEmptyPlaceholder/employeesEmptyPlaceholder.module.css @@ -0,0 +1,38 @@ +.contentWrapper { + width: 100%; + height: 400px; +} + +.content { + max-width: 350px; + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; +} + +.content > svg { + transform: scale(0.7); +} + +.heading { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + text-align: center; + color: #777185; + margin-bottom: 10px; +} + +.copy { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 14px; + line-height: 21px; + text-align: center; + color: #777185; + width: 280px; +} diff --git a/src/shared/components/Crew/EmployeesEmptyPlaceholder/index.ts b/src/shared/components/Crew/EmployeesEmptyPlaceholder/index.ts new file mode 100644 index 0000000..ec6fc8d --- /dev/null +++ b/src/shared/components/Crew/EmployeesEmptyPlaceholder/index.ts @@ -0,0 +1 @@ +export { EmployeesEmptyPlaceholder } from './EmployeesEmptyPlaceholder'; diff --git a/src/shared/components/Crew/RemoveMemberModal/RemoveMemberModal.tsx b/src/shared/components/Crew/RemoveMemberModal/RemoveMemberModal.tsx new file mode 100644 index 0000000..3cec395 --- /dev/null +++ b/src/shared/components/Crew/RemoveMemberModal/RemoveMemberModal.tsx @@ -0,0 +1,90 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; +import { Modal } from 'Components/Modal'; +import { EmailAnchor } from 'Components/Anchor/EmailAnchor'; +import { PhoneAnchor } from 'Components/Anchor/PhoneAnchor'; +import { DeleteButton } from 'Components/Button'; +import { Icon } from 'Components/Icons'; +import { Roles } from 'Containers/People'; + +import classes from './removeMemberModal.module.css'; + +interface Props { + id: string; + avatar?: any; + name: string; + email?: string; + flag: string; + phone?: string; + extension?: string; + roles: any[]; + isOpen: boolean; + fetching: boolean; + modalCloseClick: (e: any) => void; + onClickRemoveProject: (e: any) => void; +} + +const RemoveMemberModal = ({ + id, + isOpen, + fetching, + avatar, + name, + email, + flag, + phone, + extension, + roles, + modalCloseClick, + onClickRemoveProject, +}: Props) => ( +
    + +
    + {avatar} + {name} + +
    + +
    + {email && ( + + {email} + + )} + + {phone && ( + + + {phone} {extension && {`\u2022 Ext ${extension}`}} + + )} + + Remove From Project + +
    +
    +
    +); + +RemoveMemberModal.defaultProps = { + avatar: undefined, + email: 'email@example.com', + phone: '999 999 9999', + extension: undefined, +}; + +const RemoveMemberModalMemo = memo(RemoveMemberModal, areEqual); + +export { RemoveMemberModalMemo as RemoveMemberModal }; diff --git a/src/shared/components/Crew/RemoveMemberModal/index.ts b/src/shared/components/Crew/RemoveMemberModal/index.ts new file mode 100644 index 0000000..46cba99 --- /dev/null +++ b/src/shared/components/Crew/RemoveMemberModal/index.ts @@ -0,0 +1 @@ +export { RemoveMemberModal } from './RemoveMemberModal'; diff --git a/src/shared/components/Crew/RemoveMemberModal/removeMemberModal.module.css b/src/shared/components/Crew/RemoveMemberModal/removeMemberModal.module.css new file mode 100644 index 0000000..acbf6f8 --- /dev/null +++ b/src/shared/components/Crew/RemoveMemberModal/removeMemberModal.module.css @@ -0,0 +1,101 @@ +.modalContent { + height: 420px; + padding: 1.3em 1.5em; + box-shadow: 0px 24px 44px rgba(119, 113, 133, 0.2); + border-radius: 5px; +} +.modalDialog { + max-width: 648px; +} +.modalHeader { + padding: 0 0 0.5em 0; + height: 40px; + border-color: #e8e7ed; +} +.modalHeader > h5 { + align-items: flex-start; +} +.modalTitle { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 18px; + line-height: 24px; + color: #5b476b; + width: 85%; + text-align: center; +} +.modalBody { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; + padding: 1.3rem 0 1.1rem 0; +} + +.infoModalHeader { + width: 100%; + max-width: 343px; + border-bottom: 1px solid #d2cfda; + padding-bottom: 9px !important; +} + +.headerName { + font-weight: 600; + font-size: 20px; + line-height: 30px; + color: #000000; +} +.buttonsWrapper { + margin-top: 1.7em; +} +.modalButtons { + background-color: #ffffff; + width: 327px; + height: 44px; +} +.modalPill { + justify-content: center; + color: #777185; + border: 1px solid #d2cfda; + border-radius: 24px; +} +.modalPill:hover, +.modalPill:focus { + color: #777185; +} + +.email { + justify-content: center; + color: #777185 !important; +} + +.edit { + color: #9a00ff; + border-color: #9a00ff; + border-radius: 5px; +} +.edit:hover, +.edit:focus { + color: #ffffff; + background-color: #9a00ff; +} +.modalFooter { + padding: 1rem 0 0 0; + border: none; + justify-content: center; +} + +.removeButton { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + text-align: center; + color: #e82828; +} + +.roleTag { + margin-top: unset; +} diff --git a/src/shared/components/Crew/index.ts b/src/shared/components/Crew/index.ts new file mode 100644 index 0000000..0f39596 --- /dev/null +++ b/src/shared/components/Crew/index.ts @@ -0,0 +1,5 @@ +export { Crew } from './Crew'; +export { CrewWrapper } from './CrewWrapper'; +export { EmployeeDirectory } from './EmployeeDirectory'; +export { EmployeeRow } from './EmployeeRow'; +export { EmployeesEmptyPlaceholder } from './EmployeesEmptyPlaceholder'; diff --git a/src/shared/components/Dashboard/CreateProjectButton/CreateProjectButton.tsx b/src/shared/components/Dashboard/CreateProjectButton/CreateProjectButton.tsx new file mode 100644 index 0000000..66dfb82 --- /dev/null +++ b/src/shared/components/Dashboard/CreateProjectButton/CreateProjectButton.tsx @@ -0,0 +1,24 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +import { Icon } from 'Components/Icons'; +import { PurpleButton } from 'Components/Button'; + +interface Props { + className?: string; +} + +const CreateProjectButton = ({ className }: Props) => ( + // + // Create Project + // + <>{className} +); + +CreateProjectButton.defaultProps = { + className: null, +}; + +const CreateProjectButtonButtonMemo = memo(CreateProjectButton, areEqual); + +export { CreateProjectButtonButtonMemo as CreateProjectButton }; diff --git a/src/shared/components/Dashboard/CreateProjectButton/index.ts b/src/shared/components/Dashboard/CreateProjectButton/index.ts new file mode 100644 index 0000000..3741108 --- /dev/null +++ b/src/shared/components/Dashboard/CreateProjectButton/index.ts @@ -0,0 +1 @@ +export { CreateProjectButton } from "./CreateProjectButton"; diff --git a/src/shared/components/Dashboard/Dashboard.tsx b/src/shared/components/Dashboard/Dashboard.tsx new file mode 100644 index 0000000..7f27c58 --- /dev/null +++ b/src/shared/components/Dashboard/Dashboard.tsx @@ -0,0 +1,18 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +interface Props {} + +const Dashboard = ({}: Props) => ( +
    +
    +
    +
    +
    +
    +); + +const DashboardMemo = memo(Dashboard, areEqual); + +export { DashboardMemo as Dashboard }; diff --git a/src/shared/components/Dashboard/DashboardGoogleMap/DashboardGoogleMap.tsx b/src/shared/components/Dashboard/DashboardGoogleMap/DashboardGoogleMap.tsx new file mode 100644 index 0000000..f926720 --- /dev/null +++ b/src/shared/components/Dashboard/DashboardGoogleMap/DashboardGoogleMap.tsx @@ -0,0 +1,33 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +import { GoogleMap } from 'Components/GoogleMap'; + +import { CompanyProjectsDataModal } from 'Containers/Projects/Modals'; +import classes from './dashboardGoogleMap.module.css'; + +interface Props { + myProjects: CompanyProjectsDataModal; + fetching: any; + activeProject: any; + handleChangeProject: any; + center: any; + zoom: any; +} + +const DashboardGoogleMap = ({ myProjects, fetching, activeProject, handleChangeProject, center, zoom }: Props) => ( +
    + +
    +); + +const DashboardGoogleMapMemo = memo(DashboardGoogleMap, areEqual); + +export { DashboardGoogleMapMemo as DashboardGoogleMap }; diff --git a/src/shared/components/Dashboard/DashboardGoogleMap/dashboardGoogleMap.module.css b/src/shared/components/Dashboard/DashboardGoogleMap/dashboardGoogleMap.module.css new file mode 100644 index 0000000..dbb7fcf --- /dev/null +++ b/src/shared/components/Dashboard/DashboardGoogleMap/dashboardGoogleMap.module.css @@ -0,0 +1,4 @@ +.cardBase { + background-color: #ffffff; + box-shadow: 0 1px 18px rgba(122, 111, 252, 0.15); +} diff --git a/src/shared/components/Dashboard/ProjectRow/ProjectRow.tsx b/src/shared/components/Dashboard/ProjectRow/ProjectRow.tsx new file mode 100644 index 0000000..2bf91f5 --- /dev/null +++ b/src/shared/components/Dashboard/ProjectRow/ProjectRow.tsx @@ -0,0 +1,38 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +import classes from './projectRow.module.css'; + +interface Props { + title: any; + uid: any; + alias: any; + numOfUnits: number; + numOfPhotos: number; + numOfFloors: number; + selected: boolean; + onClick: any; +} + +const ProjectRow = ({ title, uid, alias, numOfPhotos, numOfUnits, selected, onClick, numOfFloors }: Props) => ( +
    +
    {title}
    +
    +
    {uid}
    +
    + {`${numOfUnits} Units • ${numOfFloors} Floors • ${numOfPhotos} Photos`} +
    +
    + {alias &&
    {alias}
    } +
    +); + +const ProjectRowMemo = memo(ProjectRow, areEqual); + +export { ProjectRowMemo as ProjectRow }; diff --git a/src/shared/components/Dashboard/ProjectRow/index.ts b/src/shared/components/Dashboard/ProjectRow/index.ts new file mode 100644 index 0000000..ce0dedb --- /dev/null +++ b/src/shared/components/Dashboard/ProjectRow/index.ts @@ -0,0 +1 @@ +export { ProjectRow } from './ProjectRow'; diff --git a/src/shared/components/Dashboard/ProjectRow/projectRow.module.css b/src/shared/components/Dashboard/ProjectRow/projectRow.module.css new file mode 100644 index 0000000..b417140 --- /dev/null +++ b/src/shared/components/Dashboard/ProjectRow/projectRow.module.css @@ -0,0 +1,57 @@ +.main { + padding: 8px 0; + border-bottom: 1px solid #E8E7ED; +} + +.mainActive { + padding: 8px 0; + border-bottom: 1px solid rgba(154, 0, 255, 0.5); +} + +.title, .titleActive, .uid, .numbers, .alias { + font-family: IBM Plex Sans; + font-style: normal; +} + +.title { + font-weight: 600; + font-size: 16px; + line-height: 24px; +} + +.titleActive { + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #9A00FF; +} + +.row { + display: flex; + justify-content: space-between; + margin-top: 5px; +} + +.uid { + width: 40%; + font-weight: 600; + font-size: 14px; + line-height: 18px; + letter-spacing: -0.015em; + color: #777185; +} + +.numbers { + width: 60%; + text-align: right; + font-weight: normal; + font-size: 12.003px; + line-height: 20px; + color: #777185; +} + +.alias { + font-weight: 600; + font-size: 14px; + line-height: 18px; +} diff --git a/src/shared/components/Dashboard/ProjectSelection/ProjectSelection.tsx b/src/shared/components/Dashboard/ProjectSelection/ProjectSelection.tsx new file mode 100644 index 0000000..fc5a2f3 --- /dev/null +++ b/src/shared/components/Dashboard/ProjectSelection/ProjectSelection.tsx @@ -0,0 +1,75 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; +import { CompanyProjectsDataModal } from 'Containers/Projects/Modals'; + +// import { Spinner } from 'Components/Spinner'; +import { ProjectRow } from 'Containers/ProjectRow'; +import { Spinner } from 'Components/Spinner'; +import classes from './projectSelection.module.css'; + +interface Props { + myProjects: CompanyProjectsDataModal; + fetching: any; + handleChangeProject: any; + activeProject: any; + setTabWIP?: any; + setTabProjects: any; + activeTab: number; + handleViewAll: any; +} + +const ProjectSelection = ({ + myProjects, + fetching, + handleChangeProject, + activeProject, + // setTabWIP, + setTabProjects, + activeTab, + handleViewAll, +}: Props) => ( +
    +
    + View All +
    +
    +
    + My Projects +
    +
    + {fetching && ( +
    + +
    + )} +
    + {/* TODO:: TO AJ - don't use nested ternary expressions (eslint doesn't like them) */} + {!fetching && + myProjects?.data?.length > 0 && + myProjects.data.map((project) => ( + + ))} +
    +
    +); + +const ProjectSelectionMemo = memo(ProjectSelection, areEqual); + +export { ProjectSelectionMemo as ProjectSelection }; diff --git a/src/shared/components/Dashboard/ProjectSelection/index.ts b/src/shared/components/Dashboard/ProjectSelection/index.ts new file mode 100644 index 0000000..615d9fe --- /dev/null +++ b/src/shared/components/Dashboard/ProjectSelection/index.ts @@ -0,0 +1 @@ +export { ProjectSelection } from './ProjectSelection'; diff --git a/src/shared/components/Dashboard/ProjectSelection/projectSelection.module.css b/src/shared/components/Dashboard/ProjectSelection/projectSelection.module.css new file mode 100644 index 0000000..80ae2c8 --- /dev/null +++ b/src/shared/components/Dashboard/ProjectSelection/projectSelection.module.css @@ -0,0 +1,84 @@ +.cardBase { + background-color: #ffffff; + box-shadow: 0 1px 18px rgba(122, 111, 252, 0.15); + height: calc(100vh - 95px); + padding: 25px; + /* Keep it visible on small devices ? */ + min-width: 240px; + overflow: hidden; +} + +.tabsRow { + display: flex; + justify-content: flex-start; + position: absolute; + left: 0; + margin-top: 32px; + padding-left: 24px; + padding-right: 24px; + border-bottom: 1px solid #D2CFDA; + width: 100%; + padding-bottom: 33px; +} + +.tabContainer { + cursor: pointer; + border-bottom: 2px solid white; + position: absolute; + left: 0; + padding: 0 24px; + text-align: center; + + font-family: IBM Plex Sans; + font-size: 16px; + line-height: 24px; +} + +.selectedTabContainer { + font-style: normal; + font-weight: 600; +} + +.selectedTabContainer::after { + content: ''; + position: absolute; + bottom: -10px; + height: 2px; + width: 100%; + background: #9A00FF; + left: 0; +} + +.secondPosition { + position: absolute; + left: 140px; +} + +.viewAll { + cursor: pointer; + position: absolute; + right: 0; + padding: 0 24px; + text-decoration: underline; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 14px; + line-height: 16px; + /* identical to box height, or 114% */ + + color: #777185; +} + +.projectsContainer { + position: absolute; + top: 90px; + max-height: calc(100vh - 200px); + width: calc(100% - 48px); +} + +.relativePos { + position: relative; + margin-top: auto; + margin-bottom: auto; +} diff --git a/src/shared/components/Dashboard/RecentlyAccessed/RecentlyAccessed.tsx b/src/shared/components/Dashboard/RecentlyAccessed/RecentlyAccessed.tsx new file mode 100644 index 0000000..95e1928 --- /dev/null +++ b/src/shared/components/Dashboard/RecentlyAccessed/RecentlyAccessed.tsx @@ -0,0 +1,24 @@ +import React, { memo } from "react"; +import { areEqual } from "Utils/equalityChecks"; + +import { Anchor } from "Components/Anchor"; +import { CreateProjectButton } from "Containers/Dashboard"; + +import classes from "./recentlyAccessed.module.css"; + +const RecentlyAccessed = () => ( +
    +
    +
    Recently Accessed
    + + View All + +
    +

    No projects yet. Create a new project.

    + +
    +); + +const RecentlyAccessedMemo = memo(RecentlyAccessed, areEqual); + +export { RecentlyAccessedMemo as RecentlyAccessed }; diff --git a/src/shared/components/Dashboard/RecentlyAccessed/index.ts b/src/shared/components/Dashboard/RecentlyAccessed/index.ts new file mode 100644 index 0000000..30cb5de --- /dev/null +++ b/src/shared/components/Dashboard/RecentlyAccessed/index.ts @@ -0,0 +1 @@ +export { RecentlyAccessed } from "./RecentlyAccessed"; diff --git a/src/shared/components/Dashboard/RecentlyAccessed/recentlyAccessed.module.css b/src/shared/components/Dashboard/RecentlyAccessed/recentlyAccessed.module.css new file mode 100644 index 0000000..7d9bc2e --- /dev/null +++ b/src/shared/components/Dashboard/RecentlyAccessed/recentlyAccessed.module.css @@ -0,0 +1,39 @@ +.cardBase { + background-color: #ffffff; + box-shadow: 0 1px 18px rgba(122, 111, 252, 0.15); + height: calc(100vh - 95px); + padding: 25px; +} + +.title { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #000000; +} + +.anchor { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 14px; + line-height: 16px; + text-decoration-line: underline; + color: #777185; +} + +.p { + margin-top: 22px; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 16px; + line-height: 24px; + color: #777185; +} + +.createProjectButton { + margin-top: 45px; +} \ No newline at end of file diff --git a/src/shared/components/Dashboard/index.ts b/src/shared/components/Dashboard/index.ts new file mode 100644 index 0000000..fad1e39 --- /dev/null +++ b/src/shared/components/Dashboard/index.ts @@ -0,0 +1,2 @@ +export { Dashboard } from "./Dashboard"; +export { CreateProjectButton } from "./CreateProjectButton"; diff --git a/src/shared/components/DropDown/DropDown.tsx b/src/shared/components/DropDown/DropDown.tsx new file mode 100644 index 0000000..b8923c8 --- /dev/null +++ b/src/shared/components/DropDown/DropDown.tsx @@ -0,0 +1,53 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { DropDownItem } from 'Containers/DropDown'; + +import classes from './dropDown.module.css'; + +type ListTypes = { + id: number; + name: string; + // eslint-disable-next-line + display_name?: string; +}; +interface Props { + id: string; + className?: string; + selected: number; + items: Array; + showDropDown: boolean; + size?: string; + onSelectItem: (e: any) => void; +} + +const DropDown = ({ id, className, selected, items, onSelectItem, showDropDown, size }: Props) => ( +
      + {items.length > 0 && + items.map((item) => ( + + ))} +
    +); + +DropDown.defaultProps = { + className: undefined, + size: 'default', +}; + +const DropDownMemo = memo(DropDown, areEqual); + +export { DropDownMemo as DropDown }; diff --git a/src/shared/components/DropDown/DropDownItem/DropDownItem.tsx b/src/shared/components/DropDown/DropDownItem/DropDownItem.tsx new file mode 100644 index 0000000..7831b81 --- /dev/null +++ b/src/shared/components/DropDown/DropDownItem/DropDownItem.tsx @@ -0,0 +1,58 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { Anchor } from 'Components/Anchor'; + +import classes from './dropDownItem.module.css'; + +interface Props { + id: number; + name: string; + selected: number; + onSelectItem: (e: any) => void; +} + +const DropDownItem = React.forwardRef(({ id, name, selected, onSelectItem }: Props, dropDownRef: any) => + dropDownRef ? ( +
  • { + dropDownRef.current = ref; + }} + > + + {name} + +
  • + ) : ( +
  • + + {name} + +
  • + ) +); + +const DropDownMemo = memo(DropDownItem, areEqual); + +export { DropDownMemo as DropDownItem }; diff --git a/src/shared/components/DropDown/DropDownItem/dropDownItem.module.css b/src/shared/components/DropDown/DropDownItem/dropDownItem.module.css new file mode 100644 index 0000000..6b8b598 --- /dev/null +++ b/src/shared/components/DropDown/DropDownItem/dropDownItem.module.css @@ -0,0 +1,19 @@ +.dropDownItemText { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 21px; + color: #000000; + padding: 16px 0; + border-bottom: 1px solid #E8E7ED; + text-align: center; +} + +.dropDownItemText:hover { + background-color: #E8E7ED !important; +} + +.dropDownItemTextSelected { + background-color: #F4E5FF !important; +} diff --git a/src/shared/components/DropDown/DropDownItem/index.ts b/src/shared/components/DropDown/DropDownItem/index.ts new file mode 100644 index 0000000..56af884 --- /dev/null +++ b/src/shared/components/DropDown/DropDownItem/index.ts @@ -0,0 +1 @@ +export { DropDownItem } from './DropDownItem'; diff --git a/src/shared/components/DropDown/MiniDropdownItem/MiniDropdownItem.tsx b/src/shared/components/DropDown/MiniDropdownItem/MiniDropdownItem.tsx new file mode 100644 index 0000000..2d3e7a2 --- /dev/null +++ b/src/shared/components/DropDown/MiniDropdownItem/MiniDropdownItem.tsx @@ -0,0 +1,58 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { Anchor } from 'Components/Anchor'; + +import classes from './miniDropdownItem.module.css'; + +interface Props { + id: number; + name: string; + selected: number; + onSelectItem: (e: any) => void; +} + +const MiniDropdownItem = React.forwardRef(({ id, name, selected, onSelectItem }: Props, dropDownRef: any) => + dropDownRef ? ( +
  • { + dropDownRef.current = ref; + }} + > + + {name} + +
  • + ) : ( +
  • + + {name} + +
  • + ) +); + +const MiniDropdownItemMemo = memo(MiniDropdownItem, areEqual); + +export { MiniDropdownItemMemo as MiniDropdownItem }; diff --git a/src/shared/components/DropDown/MiniDropdownItem/index.ts b/src/shared/components/DropDown/MiniDropdownItem/index.ts new file mode 100644 index 0000000..3ec0b1d --- /dev/null +++ b/src/shared/components/DropDown/MiniDropdownItem/index.ts @@ -0,0 +1 @@ +export { MiniDropdownItem } from './MiniDropdownItem'; diff --git a/src/shared/components/DropDown/MiniDropdownItem/miniDropdownItem.module.css b/src/shared/components/DropDown/MiniDropdownItem/miniDropdownItem.module.css new file mode 100644 index 0000000..81cf79b --- /dev/null +++ b/src/shared/components/DropDown/MiniDropdownItem/miniDropdownItem.module.css @@ -0,0 +1,24 @@ +.miniDropdownItem { + height: 10px; + width: inherit; +} + +.dropDownItemText { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 400; + font-size: 12px; + line-height: 0; + color: #000000; + padding: 16px 0; + border-bottom: 1px solid #E8E7ED; + text-align: center; +} + +.dropDownItemText:hover { + background-color: #E8E7ED !important; +} + +.dropDownItemTextSelected { + background-color: #F4E5FF !important; +} diff --git a/src/shared/components/DropDown/MiniOptionsDropdown/MiniOptionsDropdown.tsx b/src/shared/components/DropDown/MiniOptionsDropdown/MiniOptionsDropdown.tsx new file mode 100644 index 0000000..98da23c --- /dev/null +++ b/src/shared/components/DropDown/MiniOptionsDropdown/MiniOptionsDropdown.tsx @@ -0,0 +1,75 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +import { TextBox } from 'Components/TextBox'; +import { Icon } from 'Components/Icons'; +import { DropDown, dropdownSizes } from 'Components/DropDown'; + +import formClasses from 'Themes/form/form.module.css'; +import classes from './miniOptionsDropdown.module.css'; + +type ListTypes = { + id: number; + name: string; +}; + +interface Props { + className?: string; + optionSelected: string; + items: Array; + selectedOptionId: number; + invalid?: boolean; + placeHolder?: string; + showDropdown: boolean; + onSelectItem: (e: any) => void; + onClickIcon: (e: any) => void; +} + +const MiniOptionsDropdown = ({ + className, + optionSelected, + items, + selectedOptionId, + invalid, + placeHolder, + showDropdown, + onSelectItem, + onClickIcon, +}: Props) => ( +
    + 0 ? optionSelected : `${placeHolder}`} + /> + + {items && ( + + )} +
    +); + +MiniOptionsDropdown.defaultProps = { + className: undefined, + invalid: false, + placeHolder: undefined, +}; + +const MiniOptionsDropdownMemo = memo(MiniOptionsDropdown, areEqual); + +export { MiniOptionsDropdownMemo as MiniOptionsDropdown }; diff --git a/src/shared/components/DropDown/MiniOptionsDropdown/index.ts b/src/shared/components/DropDown/MiniOptionsDropdown/index.ts new file mode 100644 index 0000000..b09c1e9 --- /dev/null +++ b/src/shared/components/DropDown/MiniOptionsDropdown/index.ts @@ -0,0 +1 @@ +export { MiniOptionsDropdown } from './MiniOptionsDropdown'; diff --git a/src/shared/components/DropDown/MiniOptionsDropdown/miniOptionsDropdown.module.css b/src/shared/components/DropDown/MiniOptionsDropdown/miniOptionsDropdown.module.css new file mode 100644 index 0000000..147b9bd --- /dev/null +++ b/src/shared/components/DropDown/MiniOptionsDropdown/miniOptionsDropdown.module.css @@ -0,0 +1,23 @@ +.optionSelectBase { + position: relative; + margin-bottom: 1px; +} + +.icon { + position: absolute; + right: 16px; + top: 40%; +} + +.dropDown { + max-height: 272px; +} +.optionSelectBase > input { + background-color: transparent !important; + padding: 8px !important; +} + +.input { + font-size: 12px !important; + font-weight: 400 !important; +} \ No newline at end of file diff --git a/src/shared/components/DropDown/dropDown.module.css b/src/shared/components/DropDown/dropDown.module.css new file mode 100644 index 0000000..a2c3ca5 --- /dev/null +++ b/src/shared/components/DropDown/dropDown.module.css @@ -0,0 +1,16 @@ +.fieldListBase { + inset: unset!important; + transform: unset!important; + background: #FFFFFF; + border: 1px solid #E8E7ED; + box-sizing: border-box; + box-shadow: 0px -3px 6px rgba(142, 134, 163, 0.1); + width: 100%; + height: auto; + padding: 0; + overflow-y: auto; +} + +.fieldListBase:focus, .fieldListBase:focus-visible { + outline: unset!important; +} diff --git a/src/shared/components/DropDown/dropdownSizes.ts b/src/shared/components/DropDown/dropdownSizes.ts new file mode 100644 index 0000000..a30b953 --- /dev/null +++ b/src/shared/components/DropDown/dropdownSizes.ts @@ -0,0 +1,4 @@ +export const dropdownSizes = { + default: 'default', + small: 'small,', +}; diff --git a/src/shared/components/DropDown/index.ts b/src/shared/components/DropDown/index.ts new file mode 100644 index 0000000..ddd6005 --- /dev/null +++ b/src/shared/components/DropDown/index.ts @@ -0,0 +1,3 @@ +export { DropDown } from './DropDown'; +export { MiniOptionsDropdown } from './MiniOptionsDropdown'; +export { dropdownSizes } from './dropdownSizes'; diff --git a/src/shared/components/DropZone/DropZone.tsx b/src/shared/components/DropZone/DropZone.tsx new file mode 100644 index 0000000..a4dad46 --- /dev/null +++ b/src/shared/components/DropZone/DropZone.tsx @@ -0,0 +1,35 @@ +/* eslint-disable */ +//The linter does not like prop spreading, but dropzone requires it +import React, { memo } from "react"; + +import { areEqual } from "Utils/equalityChecks"; +import classes from "./dropzone.module.css"; +import { Icon } from "Components/Icons"; + +interface Props { + className?: string; + hasImages: boolean; + getRootProps: any; + getInputProps: any; +} + +const Dropzone = ({ className, hasImages, getRootProps, getInputProps }: Props) => ( + <> +
    + +
    +
    +
    + +
    +
    +

    Click to upload or drop into an album

    +
    +
    + +); +Dropzone.defaultProps = { + className: undefined, +}; +const DropzoneMemo = memo(Dropzone, areEqual); +export { DropzoneMemo as Dropzone }; diff --git a/src/shared/components/DropZone/dropzone.module.css b/src/shared/components/DropZone/dropzone.module.css new file mode 100644 index 0000000..be9c2cb --- /dev/null +++ b/src/shared/components/DropZone/dropzone.module.css @@ -0,0 +1,41 @@ +.container { + display: flex; + flex-direction: column; + background-color: #fff; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 12.003px; + line-height: 20px; + text-align: center; + color: #777185; +} +.hasImages { + flex-direction: row !important; + align-items: baseline !important; + padding-bottom: 1.5rem; +} +.dropZoneWrapper { + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + width: 100%; + border: 1px dashed #d2cfda; + border-radius: 8px; + margin-top: 1em; + margin-left: 0.5em; +} + +.uploadIcon { + height: 28px !important; + width: 28px !important; + text-align: center; + padding-top: 40px; +} +.messageContainer { + padding-top: 40px; + padding-bottom: 0px; + padding-left: 10px; + padding-right: 10px; +} \ No newline at end of file diff --git a/src/shared/components/DropZone/index.ts b/src/shared/components/DropZone/index.ts new file mode 100644 index 0000000..aa14770 --- /dev/null +++ b/src/shared/components/DropZone/index.ts @@ -0,0 +1 @@ +export { Dropzone } from './DropZone'; diff --git a/src/shared/components/ErrorMessages/ErrorMessages.tsx b/src/shared/components/ErrorMessages/ErrorMessages.tsx new file mode 100644 index 0000000..e27350d --- /dev/null +++ b/src/shared/components/ErrorMessages/ErrorMessages.tsx @@ -0,0 +1,25 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +// css +import classes from './errorMessages.module.css'; + +// props +interface Props { + message: string; + className?: string; +} + +const ErrorMessages = ({ message, className }: Props) => ( +
    +

    {message}

    +
    +); + +ErrorMessages.defaultProps = { + className: undefined, +}; + +const ErrorMessagesMemo = memo(ErrorMessages, areEqual); + +export { ErrorMessagesMemo as ErrorMessages }; diff --git a/src/shared/components/ErrorMessages/errorMessages.module.css b/src/shared/components/ErrorMessages/errorMessages.module.css new file mode 100644 index 0000000..396a634 --- /dev/null +++ b/src/shared/components/ErrorMessages/errorMessages.module.css @@ -0,0 +1,12 @@ +.errorMessageWrapper { + margin: 25px 0; +} + +.errorMessage { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 14px; + line-height: 20px; + color: #E82828; +} diff --git a/src/shared/components/ErrorMessages/index.ts b/src/shared/components/ErrorMessages/index.ts new file mode 100644 index 0000000..3a8c387 --- /dev/null +++ b/src/shared/components/ErrorMessages/index.ts @@ -0,0 +1 @@ +export { ErrorMessages } from './ErrorMessages'; diff --git a/src/shared/components/FloorDropDown/FloorDropDown.tsx b/src/shared/components/FloorDropDown/FloorDropDown.tsx new file mode 100644 index 0000000..639a0d2 --- /dev/null +++ b/src/shared/components/FloorDropDown/FloorDropDown.tsx @@ -0,0 +1,66 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +import { TextBox } from 'Components/TextBox'; +import { Icon } from 'Components/Icons'; +import { DropDown } from 'Components/DropDown'; + +import formClasses from 'Themes/form/form.module.css'; +import classes from './floorDropDown.module.css'; + +interface Props { + className?: string; + floorSelect: string; + numbers: Array; + selectedFloor: number; + invalid?: boolean; + showDropDown: boolean; + onChangeFloorSelect: (e: any) => void; + onSelectItem: (e: any) => void; + onClickIcon: (e: any) => void; +} + +const FloorDropDown = ({ + className, + floorSelect, + numbers, + selectedFloor, + invalid, + showDropDown, + onChangeFloorSelect, + onSelectItem, + onClickIcon, +}: Props) => ( +
    + + + {numbers && ( + + )} +
    +); + +FloorDropDown.defaultProps = { + className: undefined, + invalid: false, +}; + +const FloorDropDownMemo = memo(FloorDropDown, areEqual); + +export { FloorDropDownMemo as FloorDropDown }; diff --git a/src/shared/components/FloorDropDown/floorDropDown.module.css b/src/shared/components/FloorDropDown/floorDropDown.module.css new file mode 100644 index 0000000..89b6e86 --- /dev/null +++ b/src/shared/components/FloorDropDown/floorDropDown.module.css @@ -0,0 +1,19 @@ +.floorSelectBase { + position: relative; +} + +.icon { + position: absolute; + right: 0; + top: 40%; +} + +.dropDown { + max-height: 245px; +} +.floorSelectBase > input { + background-color: transparent; + padding-left: 0 !important; + padding-right: 0 !important; + border-bottom: none !important; +} diff --git a/src/shared/components/FloorDropDown/index.tsx b/src/shared/components/FloorDropDown/index.tsx new file mode 100644 index 0000000..0624877 --- /dev/null +++ b/src/shared/components/FloorDropDown/index.tsx @@ -0,0 +1 @@ +export { FloorDropDown } from './FloorDropDown'; diff --git a/src/shared/components/Form/Form.tsx b/src/shared/components/Form/Form.tsx new file mode 100644 index 0000000..74e1f76 --- /dev/null +++ b/src/shared/components/Form/Form.tsx @@ -0,0 +1,122 @@ +import React, { memo, ReactNode, useCallback, useRef, useState } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import { useDebounce } from "Hooks/useDebounce"; + +interface Props { + id?: string; + className?: string; + noValidate?: boolean; + submitButton?: ReactNode; + children: any; + onSubmit: (formValues: any) => void; +} + +/* + Note: + The form can use either a Submit button or the internal onChange to send form data back to the user + + A form button needs to be pass in through props and not children. We need a way to detect if a button + is being used or not to handle the form submission +*/ +const Form = ({ id, className, noValidate = true, submitButton, onSubmit, children }: Props) => { + // Using a reference is how we are going to do things the React way, with Bootstrap. + const formRef = useRef(null); + const [formData, setFormData] = useState({}); + const validate = useCallback( + (formData: any) => { + onSubmit(formData); + }, + [formData] + ); + + const submitWhenNoSubmitButton = (e: any) => { + e.preventDefault(); + }; + + // This will be the loca form submit. + const onSubmitLocal = useDebounce((e: any) => { + e.preventDefault(); + + formRef.current.classList.add("was-validated"); + + let value = ""; + switch (e.target.type) { + case "checkbox": + value = e.target.checked; + break; + case "text": + case "tel": + case "email": + value = e.target.value.trim(); + break; + default: + break; + } + + // This will handle an empty input + if (value?.length === 0) { + validate({ [e.target.name]: e.target.value, isValid: true }); + formRef.current.classList.remove("was-validated"); + return; + } + + if (!formRef.current.checkValidity()) { + e.preventDefault(); + e.stopPropagation(); + + // This will let the parent know that validation is false + validate({ [e.target.name]: e.target.value, isValid: false }); + return; + } + + // Update the control value in formData + setFormData({ + ...formData, + [e.target.name]: value, + }); + + // Pass formdata to the parent to check if + validate({ + ...formData, + [e.target.name]: e.target.value, + isValid: true, + isFinishedValidation: true, + }); + }, 700); + + const onChange = (e: any) => { + // If the submitButton prop does not exist, then trigger onSubmitLocal + if (!submitButton) onSubmitLocal(e); + }; + + return ( +
    +
    { + formRef.current = ref; + }} + onSubmit={(submitButton && onSubmitLocal) || submitWhenNoSubmitButton} + id={id} + className={`requires-validation ${className || ""}`} + noValidate={noValidate} + > + {children} + + {submitButton &&
    {submitButton}
    } +
    +
    + ); +}; + +Form.defaultProps = { + id: undefined, + className: undefined, + noValidate: true, + submitButton: undefined, +}; + +const FormMemo = memo(Form, areEqualShallow); + +export { FormMemo as Form }; diff --git a/src/shared/components/Form/form.module.css b/src/shared/components/Form/form.module.css new file mode 100644 index 0000000..61eec7a --- /dev/null +++ b/src/shared/components/Form/form.module.css @@ -0,0 +1,3 @@ +.form { + max-width: 100%; +} diff --git a/src/shared/components/Form/index.ts b/src/shared/components/Form/index.ts new file mode 100644 index 0000000..d39070f --- /dev/null +++ b/src/shared/components/Form/index.ts @@ -0,0 +1 @@ +export { Form } from './Form'; diff --git a/src/shared/components/GoogleMap/GoogleMap.tsx b/src/shared/components/GoogleMap/GoogleMap.tsx new file mode 100644 index 0000000..084b9a6 --- /dev/null +++ b/src/shared/components/GoogleMap/GoogleMap.tsx @@ -0,0 +1,68 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; +import GoogleMapReact from 'google-map-react'; +import { CompanyProjectsDataModal } from 'Containers/Projects/Modals'; +import { MapPin } from 'Containers/MapPin'; + +import { parseNumber } from 'Utils/numbers'; +// import { getCoordinatesFromAddress } from 'Utils/google'; +import classes from './googleMap.module.css'; +import MapStyle from './MapStyle'; + +interface Props { + center: { + lat?: number; + lng?: number; + }; + zoom: number; + myProjects: CompanyProjectsDataModal; + fetching: any; + handleChangeProject: any; + activeProject: any; +} + +const GoogleMap = ({ center, zoom, myProjects, fetching, handleChangeProject, activeProject }: Props) => ( +
    + + {!fetching && myProjects.data.length + ? myProjects.data.map((project) => { + // TODO:: need to find a better plugin to replace this logic in the MapPin container + + const { id, uid, address } = project; + const { latitude, longitude } = address; + + // const [lat] = useState(parseNumber(latitude)); + // const [lng] = useState(parseNumber(longitude)); + + // useEffect(() => { + // if (!latitude) { + // getCoordinatesFromAddress(address, setLat, setLng); + // } + // }, []); + + // this plugin require following props (lat, lng) in order to show a custom marker on the map + // so had to generate coordinates here for addresses that are entered manually + return ( + + ); + }) + : null} + +
    +); + +const GoogleMapMemo = memo(GoogleMap, areEqual); + +export { GoogleMapMemo as GoogleMap }; diff --git a/src/shared/components/GoogleMap/MapStyle.tsx b/src/shared/components/GoogleMap/MapStyle.tsx new file mode 100644 index 0000000..9626260 --- /dev/null +++ b/src/shared/components/GoogleMap/MapStyle.tsx @@ -0,0 +1,162 @@ +export default { + mapStyle: [ + { + elementType: 'geometry', + stylers: [ + { + color: '#f5f5f5', + }, + ], + }, + { + elementType: 'labels.icon', + stylers: [ + { + visibility: 'off', + }, + ], + }, + { + elementType: 'labels.text.fill', + stylers: [ + { + color: '#616161', + }, + ], + }, + { + elementType: 'labels.text.stroke', + stylers: [ + { + color: '#f5f5f5', + }, + ], + }, + { + featureType: 'administrative.land_parcel', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#bdbdbd', + }, + ], + }, + { + featureType: 'poi', + elementType: 'geometry', + stylers: [ + { + color: '#eeeeee', + }, + ], + }, + { + featureType: 'poi', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#757575', + }, + ], + }, + { + featureType: 'poi.park', + elementType: 'geometry', + stylers: [ + { + color: '#e5e5e5', + }, + ], + }, + { + featureType: 'poi.park', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#9e9e9e', + }, + ], + }, + { + featureType: 'road', + elementType: 'geometry', + stylers: [ + { + color: '#ffffff', + }, + ], + }, + { + featureType: 'road.arterial', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#757575', + }, + ], + }, + { + featureType: 'road.highway', + elementType: 'geometry', + stylers: [ + { + color: '#dadada', + }, + ], + }, + { + featureType: 'road.highway', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#616161', + }, + ], + }, + { + featureType: 'road.local', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#9e9e9e', + }, + ], + }, + { + featureType: 'transit.line', + elementType: 'geometry', + stylers: [ + { + color: '#e5e5e5', + }, + ], + }, + { + featureType: 'transit.station', + elementType: 'geometry', + stylers: [ + { + color: '#eeeeee', + }, + ], + }, + { + featureType: 'water', + elementType: 'geometry', + stylers: [ + { + color: '#c9c9c9', + }, + ], + }, + { + featureType: 'water', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#9e9e9e', + }, + ], + }, + ], +}; diff --git a/src/shared/components/GoogleMap/googleMap.module.css b/src/shared/components/GoogleMap/googleMap.module.css new file mode 100644 index 0000000..c643994 --- /dev/null +++ b/src/shared/components/GoogleMap/googleMap.module.css @@ -0,0 +1,18 @@ +.googleMapBase { + width: 100%; + height: calc(100vh - 95px); +} + +.header { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + color: #777185; +} + +.tagline { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + color: #9692a0; +} \ No newline at end of file diff --git a/src/shared/components/GoogleMap/index.ts b/src/shared/components/GoogleMap/index.ts new file mode 100644 index 0000000..65d8b4d --- /dev/null +++ b/src/shared/components/GoogleMap/index.ts @@ -0,0 +1 @@ +export { GoogleMap } from "./GoogleMap"; diff --git a/src/shared/components/HubSpotModal/HubSpotModal.tsx b/src/shared/components/HubSpotModal/HubSpotModal.tsx new file mode 100644 index 0000000..8aa681a --- /dev/null +++ b/src/shared/components/HubSpotModal/HubSpotModal.tsx @@ -0,0 +1,64 @@ +import React, { memo } from 'react'; + +import { Modal } from 'Components/Modal'; + +import { areEqual } from 'Utils/equalityChecks'; +import { Button, PurpleButton } from 'Components/Button'; + +import { InviteEmployees } from 'Containers/InviteEmployees'; +import classes from './hubSpotModal.module.css'; + +interface Props { + isOpen: boolean; + modalCloseClick: (e: any) => void; + chooseBook: (e: any) => void; + chooseSkip: (e: any) => void; + closeAll: (e: any) => void; + chosenAction: any; +} + +const HubSpotModal = ({ isOpen, modalCloseClick, chooseSkip, chooseBook, chosenAction, closeAll }: Props) => ( + +

    + Our Customers Get The Most Out Of Company By Booking a Discovery Call Before Beginning +

    +
    + {!chosenAction && ( + + Book Discovery Call + + )} + {!chosenAction && ( + + )} + +

    + It’s Easy To Get Your Team Started +

    +
    Copy and send them the link or invite by email
    +
    + } + footer={ +
    + + Done + +
    + } + isOpen={chosenAction === 0} + modalCloseClick={closeAll} + /> +
    +); + +const HubSpotModalMemo = memo(HubSpotModal, areEqual); + +export { HubSpotModalMemo as HubSpotModal }; diff --git a/src/shared/components/HubSpotModal/hubSpotModal.module.css b/src/shared/components/HubSpotModal/hubSpotModal.module.css new file mode 100644 index 0000000..5c66082 --- /dev/null +++ b/src/shared/components/HubSpotModal/hubSpotModal.module.css @@ -0,0 +1,52 @@ +.modal { + font-family: IBM Plex Sans; + font-style: normal; + text-align: center; + background: white; +} + +.modalDialog { + height: 100%; + width: 100%; + margin: 0 auto; +} + +.modalContent { + height: 100%; + width: 100%; + border: unset; + border-radius: unset; +} + +.modalBody { + padding-top: 40px; +} + +.importantText { + padding-bottom: 25px; + + font-weight: bold; + font-size: 28px; + line-height: 40px; + + color: #000000; +} + +.image { + padding-top: 25px; + width: 150px; +} + +.text { + padding-top: 25px; + + font-weight: normal; + font-size: 16px; + line-height: 24px; + + color: #777185; +} + +.button { + margin-top: 1rem; +} diff --git a/src/shared/components/HubSpotModal/index.ts b/src/shared/components/HubSpotModal/index.ts new file mode 100644 index 0000000..e46397f --- /dev/null +++ b/src/shared/components/HubSpotModal/index.ts @@ -0,0 +1 @@ +export { HubSpotModal } from './HubSpotModal'; diff --git a/src/shared/components/Icons/ActionsDefault/ActionsDefault.tsx b/src/shared/components/Icons/ActionsDefault/ActionsDefault.tsx new file mode 100644 index 0000000..4c94f76 --- /dev/null +++ b/src/shared/components/Icons/ActionsDefault/ActionsDefault.tsx @@ -0,0 +1,32 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import ActionsDefault from "../../../Assets/actions-default.svg"; + +// Custom css +import classes from "./actionsDefault.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ActionsDefaultSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +ActionsDefaultSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ActionsDefaultSvgMemo = memo(ActionsDefaultSvg, areEqualShallow); +export { ActionsDefaultSvgMemo as ActionsDefaultSvg }; diff --git a/src/shared/components/Icons/ActionsDefault/actionsDefault.module.css b/src/shared/components/Icons/ActionsDefault/actionsDefault.module.css new file mode 100644 index 0000000..264ea7b --- /dev/null +++ b/src/shared/components/Icons/ActionsDefault/actionsDefault.module.css @@ -0,0 +1,3 @@ +.actionsDefaultBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/ActionsDefault/index.ts b/src/shared/components/Icons/ActionsDefault/index.ts new file mode 100644 index 0000000..aadff45 --- /dev/null +++ b/src/shared/components/Icons/ActionsDefault/index.ts @@ -0,0 +1 @@ +export { ActionsDefaultSvg } from "./ActionsDefault"; diff --git a/src/shared/components/Icons/ActionsPurple/ActionsPurple.tsx b/src/shared/components/Icons/ActionsPurple/ActionsPurple.tsx new file mode 100644 index 0000000..3842924 --- /dev/null +++ b/src/shared/components/Icons/ActionsPurple/ActionsPurple.tsx @@ -0,0 +1,32 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import ActionsPurple from "../../../Assets/actions-purple.svg"; + +// Custom css +import classes from "./actionsPurple.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ActionsPurpleSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +ActionsPurpleSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ActionsPurpleSvgMemo = memo(ActionsPurpleSvg, areEqualShallow); +export { ActionsPurpleSvgMemo as ActionsPurpleSvg }; diff --git a/src/shared/components/Icons/ActionsPurple/actionsPurple.module.css b/src/shared/components/Icons/ActionsPurple/actionsPurple.module.css new file mode 100644 index 0000000..7b6d81f --- /dev/null +++ b/src/shared/components/Icons/ActionsPurple/actionsPurple.module.css @@ -0,0 +1,3 @@ +.actionsPurpleBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/ActionsPurple/index.ts b/src/shared/components/Icons/ActionsPurple/index.ts new file mode 100644 index 0000000..e19a03b --- /dev/null +++ b/src/shared/components/Icons/ActionsPurple/index.ts @@ -0,0 +1 @@ +export { ActionsPurpleSvg } from "./ActionsPurple"; diff --git a/src/shared/components/Icons/AddButton/AddButton.tsx b/src/shared/components/Icons/AddButton/AddButton.tsx new file mode 100644 index 0000000..fde061f --- /dev/null +++ b/src/shared/components/Icons/AddButton/AddButton.tsx @@ -0,0 +1,34 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import AddButton from '../../../Assets/add-button-lg.svg'; +import AddButtonSmall from '../../../Assets/add-button-sm.svg'; + +// Custom css +import classes from './addButton.module.css'; + +interface Props { + className?: string; + id?: string; + svgItem?: number; +} + +const AddButtonSvg = ({ className = '', id, svgItem }: Props) => { + switch (svgItem) { + case 2: + return ; + + default: + return ; + } +}; + +AddButtonSvg.defaultProps = { + svgItem: 1, + className: undefined, + id: undefined, +}; + +const AddButtonSvgMemo = memo(AddButtonSvg, areEqualShallow); + +export { AddButtonSvgMemo as AddButtonSvg }; diff --git a/src/shared/components/Icons/AddButton/addButton.module.css b/src/shared/components/Icons/AddButton/addButton.module.css new file mode 100644 index 0000000..b8481b8 --- /dev/null +++ b/src/shared/components/Icons/AddButton/addButton.module.css @@ -0,0 +1,3 @@ +.addButtonBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/AddButton/index.ts b/src/shared/components/Icons/AddButton/index.ts new file mode 100644 index 0000000..a856ab5 --- /dev/null +++ b/src/shared/components/Icons/AddButton/index.ts @@ -0,0 +1 @@ +export { AddButtonSvg } from './AddButton'; diff --git a/src/shared/components/Icons/AddressBuilding/AddressBuilding.tsx b/src/shared/components/Icons/AddressBuilding/AddressBuilding.tsx new file mode 100644 index 0000000..115a2d3 --- /dev/null +++ b/src/shared/components/Icons/AddressBuilding/AddressBuilding.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import AddressBuilding from '../../../Assets/addressBuilding.svg'; + +// Custom css +import classes from './addressBuilding.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const AddressBuildingSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +AddressBuildingSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const AddressBuildingSvgMemo = memo(AddressBuildingSvg, areEqualShallow); +export { AddressBuildingSvgMemo as AddressBuildingSvg }; diff --git a/src/shared/components/Icons/AddressBuilding/addressBuilding.module.css b/src/shared/components/Icons/AddressBuilding/addressBuilding.module.css new file mode 100644 index 0000000..f4acda9 --- /dev/null +++ b/src/shared/components/Icons/AddressBuilding/addressBuilding.module.css @@ -0,0 +1,3 @@ +.addressBuildingBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/AddressBuilding/index.ts b/src/shared/components/Icons/AddressBuilding/index.ts new file mode 100644 index 0000000..6d4a195 --- /dev/null +++ b/src/shared/components/Icons/AddressBuilding/index.ts @@ -0,0 +1 @@ +export { AddressBuildingSvg } from './AddressBuilding'; diff --git a/src/shared/components/Icons/AirMover/AirMover.tsx b/src/shared/components/Icons/AirMover/AirMover.tsx new file mode 100644 index 0000000..c835872 --- /dev/null +++ b/src/shared/components/Icons/AirMover/AirMover.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import AirMover from '../../../Assets/air-mover.svg'; + +// Custom css +import classes from './airMover.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const AirMoverSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +AirMoverSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const AirMoverSvgMemo = memo(AirMoverSvg, areEqualShallow); +export { AirMoverSvgMemo as AirMoverSvg }; diff --git a/src/shared/components/Icons/AirMover/airMover.module.css b/src/shared/components/Icons/AirMover/airMover.module.css new file mode 100644 index 0000000..b620679 --- /dev/null +++ b/src/shared/components/Icons/AirMover/airMover.module.css @@ -0,0 +1,3 @@ +.airMoverBase { + cursor: default; +} \ No newline at end of file diff --git a/src/shared/components/Icons/AirMover/index.ts b/src/shared/components/Icons/AirMover/index.ts new file mode 100644 index 0000000..b0eb7ab --- /dev/null +++ b/src/shared/components/Icons/AirMover/index.ts @@ -0,0 +1 @@ +export { AirMoverSvg } from './AirMover'; diff --git a/src/shared/components/Icons/AirScrubber/AirScrubber.tsx b/src/shared/components/Icons/AirScrubber/AirScrubber.tsx new file mode 100644 index 0000000..93f1f0d --- /dev/null +++ b/src/shared/components/Icons/AirScrubber/AirScrubber.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import AirScrubber from '../../../Assets/air-scrubber.svg'; + +// Custom css +import classes from './airScrubber.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const AirScrubberSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +AirScrubberSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const AirScrubberSvgMemo = memo(AirScrubberSvg, areEqualShallow); +export { AirScrubberSvgMemo as AirScrubberSvg }; diff --git a/src/shared/components/Icons/AirScrubber/airScrubber.module.css b/src/shared/components/Icons/AirScrubber/airScrubber.module.css new file mode 100644 index 0000000..0f77105 --- /dev/null +++ b/src/shared/components/Icons/AirScrubber/airScrubber.module.css @@ -0,0 +1,3 @@ +.airScrubberBase { + cursor: default; +} \ No newline at end of file diff --git a/src/shared/components/Icons/AirScrubber/index.ts b/src/shared/components/Icons/AirScrubber/index.ts new file mode 100644 index 0000000..db44390 --- /dev/null +++ b/src/shared/components/Icons/AirScrubber/index.ts @@ -0,0 +1 @@ +export { AirScrubberSvg } from './AirScrubber'; diff --git a/src/shared/components/Icons/Apple/Apple.tsx b/src/shared/components/Icons/Apple/Apple.tsx new file mode 100644 index 0000000..c049f34 --- /dev/null +++ b/src/shared/components/Icons/Apple/Apple.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Apple from '../../../Assets/apple.svg'; + +// Custom css +import classes from './apple.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const AppleSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +AppleSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const AppleSvgMemo = memo(AppleSvg, areEqualShallow); +export { AppleSvgMemo as AppleSvg }; diff --git a/src/shared/components/Icons/Apple/apple.module.css b/src/shared/components/Icons/Apple/apple.module.css new file mode 100644 index 0000000..570ab44 --- /dev/null +++ b/src/shared/components/Icons/Apple/apple.module.css @@ -0,0 +1,3 @@ +.appleBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Apple/index.ts b/src/shared/components/Icons/Apple/index.ts new file mode 100644 index 0000000..21a42d9 --- /dev/null +++ b/src/shared/components/Icons/Apple/index.ts @@ -0,0 +1 @@ +export { AppleSvg } from './Apple'; diff --git a/src/shared/components/Icons/ArrowLeft/ArrowLeft.tsx b/src/shared/components/Icons/ArrowLeft/ArrowLeft.tsx new file mode 100644 index 0000000..1a07e6b --- /dev/null +++ b/src/shared/components/Icons/ArrowLeft/ArrowLeft.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import ArrowLeft from "../../../Assets/arrow-left.svg"; + +// Custom css +import classes from "./arrowLeft.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ArrowLeftSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +ArrowLeftSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ArrowLeftSvgMemo = memo(ArrowLeftSvg, areEqualShallow); +export { ArrowLeftSvgMemo as ArrowLeftSvg }; diff --git a/src/shared/components/Icons/ArrowLeft/arrowLeft.module.css b/src/shared/components/Icons/ArrowLeft/arrowLeft.module.css new file mode 100644 index 0000000..39dbd51 --- /dev/null +++ b/src/shared/components/Icons/ArrowLeft/arrowLeft.module.css @@ -0,0 +1,3 @@ +.arrowLeftBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/ArrowLeft/index.ts b/src/shared/components/Icons/ArrowLeft/index.ts new file mode 100644 index 0000000..01b8507 --- /dev/null +++ b/src/shared/components/Icons/ArrowLeft/index.ts @@ -0,0 +1 @@ +export { ArrowLeftSvg } from "./ArrowLeft"; diff --git a/src/shared/components/Icons/BathRoom/BathRoom.tsx b/src/shared/components/Icons/BathRoom/BathRoom.tsx new file mode 100644 index 0000000..224dd22 --- /dev/null +++ b/src/shared/components/Icons/BathRoom/BathRoom.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import BathRoom from "../../../Assets/bathroom.svg"; + +// Custom css +import classes from "./bathRoom.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const BathRoomSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +BathRoomSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const BathRoomSvgMemo = memo(BathRoomSvg, areEqualShallow); +export { BathRoomSvgMemo as BathRoomSvg }; diff --git a/src/shared/components/Icons/BathRoom/bathRoom.module.css b/src/shared/components/Icons/BathRoom/bathRoom.module.css new file mode 100644 index 0000000..ea56406 --- /dev/null +++ b/src/shared/components/Icons/BathRoom/bathRoom.module.css @@ -0,0 +1,3 @@ +.bathRoomBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/BathRoom/index.ts b/src/shared/components/Icons/BathRoom/index.ts new file mode 100644 index 0000000..bd96824 --- /dev/null +++ b/src/shared/components/Icons/BathRoom/index.ts @@ -0,0 +1 @@ +export { BathRoomSvg } from "./BathRoom"; diff --git a/src/shared/components/Icons/BedRoom/BedRoom.tsx b/src/shared/components/Icons/BedRoom/BedRoom.tsx new file mode 100644 index 0000000..1b0825a --- /dev/null +++ b/src/shared/components/Icons/BedRoom/BedRoom.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import BedRoom from "../../../Assets/bedroom.svg"; + +// Custom css +import classes from "./bedRoom.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const BedRoomSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +BedRoomSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const BedRoomSvgMemo = memo(BedRoomSvg, areEqualShallow); +export { BedRoomSvgMemo as BedRoomSvg }; diff --git a/src/shared/components/Icons/BedRoom/bedRoom.module.css b/src/shared/components/Icons/BedRoom/bedRoom.module.css new file mode 100644 index 0000000..fa58d0b --- /dev/null +++ b/src/shared/components/Icons/BedRoom/bedRoom.module.css @@ -0,0 +1,3 @@ +.bedRoomBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/BedRoom/index.ts b/src/shared/components/Icons/BedRoom/index.ts new file mode 100644 index 0000000..0e701ea --- /dev/null +++ b/src/shared/components/Icons/BedRoom/index.ts @@ -0,0 +1 @@ +export { BedRoomSvg } from "./BedRoom"; diff --git a/src/shared/components/Icons/Bookmark/Bookmark.tsx b/src/shared/components/Icons/Bookmark/Bookmark.tsx new file mode 100644 index 0000000..c38c9dc --- /dev/null +++ b/src/shared/components/Icons/Bookmark/Bookmark.tsx @@ -0,0 +1,74 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Bookmark from '../../../Assets/bookmark.svg'; +import BookmarkPurple from '../../../Assets/bookmark-purple.svg'; +import BookmarkPhoto from '../../../Assets/bookmark-photo.svg'; +import BookmarkedPhoto from '../../../Assets/bookmarked-photo.svg'; +import BookmarkOutlinePurple from '../../../Assets/bookmark-outline-purple.svg'; +// Custom css +import classes from './bookmark.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const BookmarkSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case 'bookmarkPhoto': + return ( + + ); + case 'bookmarkedPhoto': + return ( + + ); + case 'purple': + return ( + + ); + case 'outlinepurple': + return ( + + ); + default: + return ( + + ); + } +}; + +BookmarkSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: 'default', + onClick: undefined, + onKeyUp: undefined, +}; + +const BookmarkSvgMemo = memo(BookmarkSvg, areEqualShallow); +export { BookmarkSvgMemo as BookmarkSvg }; diff --git a/src/shared/components/Icons/Bookmark/bookmark.module.css b/src/shared/components/Icons/Bookmark/bookmark.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/Bookmark/bookmark.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Bookmark/index.ts b/src/shared/components/Icons/Bookmark/index.ts new file mode 100644 index 0000000..d6c3e37 --- /dev/null +++ b/src/shared/components/Icons/Bookmark/index.ts @@ -0,0 +1 @@ +export { BookmarkSvg } from './Bookmark'; diff --git a/src/shared/components/Icons/CaretDown/CaretDown.tsx b/src/shared/components/Icons/CaretDown/CaretDown.tsx new file mode 100644 index 0000000..87d1fe9 --- /dev/null +++ b/src/shared/components/Icons/CaretDown/CaretDown.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import CaretDown from "../../../Assets/caret-down.svg"; + +// Custom css +import classes from "./caretDown.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CaretDownSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +CaretDownSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CaretDownSvgMemo = memo(CaretDownSvg, areEqualShallow); +export { CaretDownSvgMemo as CaretDownSvg }; diff --git a/src/shared/components/Icons/CaretDown/caretDown.module.css b/src/shared/components/Icons/CaretDown/caretDown.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/CaretDown/caretDown.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/CaretDown/index.ts b/src/shared/components/Icons/CaretDown/index.ts new file mode 100644 index 0000000..077ee28 --- /dev/null +++ b/src/shared/components/Icons/CaretDown/index.ts @@ -0,0 +1 @@ +export { CaretDownSvg } from "./CaretDown"; diff --git a/src/shared/components/Icons/CaretUp/CaretUp.tsx b/src/shared/components/Icons/CaretUp/CaretUp.tsx new file mode 100644 index 0000000..1063d1d --- /dev/null +++ b/src/shared/components/Icons/CaretUp/CaretUp.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import CaretUp from "../../../Assets/caret-up.svg"; + +// Custom css +import classes from "./caretUp.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CaretUpSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +CaretUpSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CaretUpSvgMemo = memo(CaretUpSvg, areEqualShallow); +export { CaretUpSvgMemo as CaretUpSvg }; diff --git a/src/shared/components/Icons/CaretUp/caretUp.module.css b/src/shared/components/Icons/CaretUp/caretUp.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/CaretUp/caretUp.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/CaretUp/index.ts b/src/shared/components/Icons/CaretUp/index.ts new file mode 100644 index 0000000..42f5881 --- /dev/null +++ b/src/shared/components/Icons/CaretUp/index.ts @@ -0,0 +1 @@ +export { CaretUpSvg } from "./CaretUp"; diff --git a/src/shared/components/Icons/CarouselController/CarouselController.tsx b/src/shared/components/Icons/CarouselController/CarouselController.tsx new file mode 100644 index 0000000..d3e0329 --- /dev/null +++ b/src/shared/components/Icons/CarouselController/CarouselController.tsx @@ -0,0 +1,38 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Next from '../../../Assets/carousel-next.svg'; +import Prev from '../../../Assets/carousel-prev.svg'; + +// Custom css +import classes from './carouselController.module.css'; + +interface Props { + className?: string; + id?: string; + iconType: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const CarouselControllerSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case 'next': + return ; + case 'prev': + return ; + default: + return null; + } +}; + +CarouselControllerSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CarouselControllerSvgMemo = memo(CarouselControllerSvg, areEqualShallow); + +export { CarouselControllerSvgMemo as CarouselControllerSvg }; diff --git a/src/shared/components/Icons/CarouselController/carouselController.module.css b/src/shared/components/Icons/CarouselController/carouselController.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/CarouselController/carouselController.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/CarouselController/index.ts b/src/shared/components/Icons/CarouselController/index.ts new file mode 100644 index 0000000..d11bbfc --- /dev/null +++ b/src/shared/components/Icons/CarouselController/index.ts @@ -0,0 +1 @@ +export { CarouselControllerSvg } from './CarouselController'; diff --git a/src/shared/components/Icons/Checkbox/Checkbox.tsx b/src/shared/components/Icons/Checkbox/Checkbox.tsx new file mode 100644 index 0000000..cac7a68 --- /dev/null +++ b/src/shared/components/Icons/Checkbox/Checkbox.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Checkbox from '../../../Assets/checkbox.svg'; + +// Custom css +import classes from './checkBox.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CheckboxSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +CheckboxSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CheckboxSvgMemo = memo(CheckboxSvg, areEqualShallow); +export { CheckboxSvgMemo as CheckboxSvg }; diff --git a/src/shared/components/Icons/Checkbox/checkBox.module.css b/src/shared/components/Icons/Checkbox/checkBox.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/Checkbox/checkBox.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Checkbox/index.ts b/src/shared/components/Icons/Checkbox/index.ts new file mode 100644 index 0000000..086e4e8 --- /dev/null +++ b/src/shared/components/Icons/Checkbox/index.ts @@ -0,0 +1 @@ +export { CheckboxSvg } from './Checkbox'; diff --git a/src/shared/components/Icons/CheckedMark/CheckedMark.tsx b/src/shared/components/Icons/CheckedMark/CheckedMark.tsx new file mode 100644 index 0000000..c4524d3 --- /dev/null +++ b/src/shared/components/Icons/CheckedMark/CheckedMark.tsx @@ -0,0 +1,50 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import CheckedMark from '../../../Assets/checked-mark.svg'; +import CheckedMarkPurple from '../../../Assets/checked-mark-purple-bg.svg'; + +// Custom css +import classes from './checkedMark.module.css'; + +interface Props { + className?: string; + id?: string; + type?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const CheckedMarkSvg = ({ className = '', id, type, onClick, onKeyUp }: Props) => { + switch (type) { + case 'purple-bg': + return ( + + ); + default: + return ( + + ); + } +}; + +CheckedMarkSvg.defaultProps = { + className: undefined, + id: undefined, + type: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CheckedMarkSvgMemo = memo(CheckedMarkSvg, areEqualShallow); +export { CheckedMarkSvgMemo as CheckedMarkSvg }; diff --git a/src/shared/components/Icons/CheckedMark/checkedMark.module.css b/src/shared/components/Icons/CheckedMark/checkedMark.module.css new file mode 100644 index 0000000..5fa642e --- /dev/null +++ b/src/shared/components/Icons/CheckedMark/checkedMark.module.css @@ -0,0 +1,3 @@ +.checkedMarkBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/CheckedMark/index.ts b/src/shared/components/Icons/CheckedMark/index.ts new file mode 100644 index 0000000..b0193f2 --- /dev/null +++ b/src/shared/components/Icons/CheckedMark/index.ts @@ -0,0 +1 @@ +export { CheckedMarkSvg } from './CheckedMark'; diff --git a/src/shared/components/Icons/ChevronIcons/ChevronIcons.tsx b/src/shared/components/Icons/ChevronIcons/ChevronIcons.tsx new file mode 100644 index 0000000..cfd5ced --- /dev/null +++ b/src/shared/components/Icons/ChevronIcons/ChevronIcons.tsx @@ -0,0 +1,38 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Next from '../../../Assets/chevron-next.svg'; +import Previous from '../../../Assets/chevron-previous.svg'; + +// Custom css +import classes from './chevronIcons.module.css'; + +interface Props { + className?: string; + id?: string; + iconType: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ChevronIconsSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case 'next': + return ; + case 'previous': + return ( + + ); + default: + return null; + } +}; + +ChevronIconsSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ChevronIconsSvgMemo = memo(ChevronIconsSvg, areEqualShallow); +export { ChevronIconsSvgMemo as ChevronIconsSvg }; diff --git a/src/shared/components/Icons/ChevronIcons/chevronIcons.module.css b/src/shared/components/Icons/ChevronIcons/chevronIcons.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/ChevronIcons/chevronIcons.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/ChevronIcons/index.ts b/src/shared/components/Icons/ChevronIcons/index.ts new file mode 100644 index 0000000..ab325bc --- /dev/null +++ b/src/shared/components/Icons/ChevronIcons/index.ts @@ -0,0 +1 @@ +export { ChevronIconsSvg } from './ChevronIcons'; diff --git a/src/shared/components/Icons/Circle/Circle.tsx b/src/shared/components/Icons/Circle/Circle.tsx new file mode 100644 index 0000000..52fa70e --- /dev/null +++ b/src/shared/components/Icons/Circle/Circle.tsx @@ -0,0 +1,33 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Circle from '../../../Assets/circle.svg'; +import Circle16 from '../../../Assets/circle-16.svg'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const CircleSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case '16': + return ; + default: + return ; + } +}; + +CircleSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CircleSvgMemo = memo(CircleSvg, areEqualShallow); +export { CircleSvgMemo as CircleSvg }; diff --git a/src/shared/components/Icons/Circle/index.ts b/src/shared/components/Icons/Circle/index.ts new file mode 100644 index 0000000..8fd9808 --- /dev/null +++ b/src/shared/components/Icons/Circle/index.ts @@ -0,0 +1 @@ +export { CircleSvg } from './Circle'; diff --git a/src/shared/components/Icons/Close/Close.tsx b/src/shared/components/Icons/Close/Close.tsx new file mode 100644 index 0000000..ac1014c --- /dev/null +++ b/src/shared/components/Icons/Close/Close.tsx @@ -0,0 +1,40 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Close from '../../../Assets/close.svg'; +import CloseSmall from '../../../Assets/close-sm.svg'; + +// Custom css +import classes from './close.module.css'; + +interface Props { + className?: string; + id?: string; + type?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const CloseSvg = ({ className = '', id, type, onClick, onKeyUp }: Props) => { + switch (type) { + case 'plain-sm': + return ( + + ); + default: + return ( + + ); + } +}; + +CloseSvg.defaultProps = { + className: undefined, + id: undefined, + type: 'default-circle', + onClick: undefined, + onKeyUp: undefined, +}; + +const CloseSvgMemo = memo(CloseSvg, areEqualShallow); +export { CloseSvgMemo as CloseSvg }; diff --git a/src/shared/components/Icons/Close/close.module.css b/src/shared/components/Icons/Close/close.module.css new file mode 100644 index 0000000..2053825 --- /dev/null +++ b/src/shared/components/Icons/Close/close.module.css @@ -0,0 +1,3 @@ +.closeBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Close/index.ts b/src/shared/components/Icons/Close/index.ts new file mode 100644 index 0000000..a53ac22 --- /dev/null +++ b/src/shared/components/Icons/Close/index.ts @@ -0,0 +1 @@ +export { CloseSvg } from './Close'; diff --git a/src/shared/components/Icons/CloseCircle/CloseCircle.tsx b/src/shared/components/Icons/CloseCircle/CloseCircle.tsx new file mode 100644 index 0000000..0462703 --- /dev/null +++ b/src/shared/components/Icons/CloseCircle/CloseCircle.tsx @@ -0,0 +1,32 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import CloseCircle from "../../../Assets/closecircle.svg"; + +// Custom css +import classes from "./closeCircle.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CloseCircleSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +CloseCircleSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CloseCircleSvgMemo = memo(CloseCircleSvg, areEqualShallow); +export { CloseCircleSvgMemo as CloseCircleSvg }; diff --git a/src/shared/components/Icons/CloseCircle/closeCircle.module.css b/src/shared/components/Icons/CloseCircle/closeCircle.module.css new file mode 100644 index 0000000..c247c28 --- /dev/null +++ b/src/shared/components/Icons/CloseCircle/closeCircle.module.css @@ -0,0 +1,3 @@ +.closeCircleBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/CloseCircle/index.ts b/src/shared/components/Icons/CloseCircle/index.ts new file mode 100644 index 0000000..c70d88e --- /dev/null +++ b/src/shared/components/Icons/CloseCircle/index.ts @@ -0,0 +1 @@ +export { CloseCircleSvg } from "./CloseCircle"; diff --git a/src/shared/components/Icons/Commercial/Commercial.tsx b/src/shared/components/Icons/Commercial/Commercial.tsx new file mode 100644 index 0000000..813751d --- /dev/null +++ b/src/shared/components/Icons/Commercial/Commercial.tsx @@ -0,0 +1,28 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Commercial from '../../../Assets/commercial.svg'; + +// Custom css +import classes from './commercial.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const CommercialSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +CommercialSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CommercialSvgMemo = memo(CommercialSvg, areEqualShallow); +export { CommercialSvgMemo as CommercialSvg }; diff --git a/src/shared/components/Icons/Commercial/commercial.module.css b/src/shared/components/Icons/Commercial/commercial.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/Commercial/commercial.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Commercial/index.ts b/src/shared/components/Icons/Commercial/index.ts new file mode 100644 index 0000000..b1c4547 --- /dev/null +++ b/src/shared/components/Icons/Commercial/index.ts @@ -0,0 +1 @@ +export { CommercialSvg } from './Commercial'; diff --git a/src/shared/components/Icons/CompanyArrow/CompanyArrow.tsx b/src/shared/components/Icons/CompanyArrow/CompanyArrow.tsx new file mode 100644 index 0000000..bf1c030 --- /dev/null +++ b/src/shared/components/Icons/CompanyArrow/CompanyArrow.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import CompanyArrow from '../../../Assets/company-arrow.svg'; + +// Custom css +import classes from './companyArrow.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CompanyArrowSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +CompanyArrowSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CompanyArrowSvgMemo = memo(CompanyArrowSvg, areEqualShallow); +export { CompanyArrowSvgMemo as CompanyArrowSvg }; diff --git a/src/shared/components/Icons/CompanyArrow/companyArrow.module.css b/src/shared/components/Icons/CompanyArrow/companyArrow.module.css new file mode 100644 index 0000000..3e8d844 --- /dev/null +++ b/src/shared/components/Icons/CompanyArrow/companyArrow.module.css @@ -0,0 +1,3 @@ +.companyArrowBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/CompanyArrow/index.ts b/src/shared/components/Icons/CompanyArrow/index.ts new file mode 100644 index 0000000..23a6ef1 --- /dev/null +++ b/src/shared/components/Icons/CompanyArrow/index.ts @@ -0,0 +1 @@ +export { CompanyArrowSvg } from './CompanyArrow'; diff --git a/src/shared/components/Icons/ConfirmChecked/ConfirmChecked.tsx b/src/shared/components/Icons/ConfirmChecked/ConfirmChecked.tsx new file mode 100644 index 0000000..77f49dc --- /dev/null +++ b/src/shared/components/Icons/ConfirmChecked/ConfirmChecked.tsx @@ -0,0 +1,59 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import ConfirmChecked from '../../../Assets/confirm.svg'; +import ConfirmCheckedSm from '../../../Assets/confirm-sm.svg'; +import ConfirmCheckedPurple from '../../../Assets/confirm-purple.svg'; + +// Custom css +import classes from './confirmChecked.module.css'; + +interface Props { + className?: string; + id?: string; + svgItem?: number; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ConfirmCheckedSvg = ({ className = '', id, svgItem, onClick, onKeyUp }: Props) => { + switch (svgItem) { + case 3: + return ( + + ); + case 2: + return ( + + ); + default: + return ( + + ); + } +}; + +ConfirmCheckedSvg.defaultProps = { + className: undefined, + id: undefined, + svgItem: 1, + onClick: undefined, + onKeyUp: undefined, +}; + +const ConfirmCheckedSvgMemo = memo(ConfirmCheckedSvg, areEqualShallow); +export { ConfirmCheckedSvgMemo as ConfirmCheckedSvg }; diff --git a/src/shared/components/Icons/ConfirmChecked/confirmChecked.module.css b/src/shared/components/Icons/ConfirmChecked/confirmChecked.module.css new file mode 100644 index 0000000..9dc61ec --- /dev/null +++ b/src/shared/components/Icons/ConfirmChecked/confirmChecked.module.css @@ -0,0 +1,3 @@ +.confirmCheckedBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/ConfirmChecked/index.ts b/src/shared/components/Icons/ConfirmChecked/index.ts new file mode 100644 index 0000000..b1b9528 --- /dev/null +++ b/src/shared/components/Icons/ConfirmChecked/index.ts @@ -0,0 +1 @@ +export { ConfirmCheckedSvg } from './ConfirmChecked'; diff --git a/src/shared/components/Icons/Copy/Copy.tsx b/src/shared/components/Icons/Copy/Copy.tsx new file mode 100644 index 0000000..fd2414c --- /dev/null +++ b/src/shared/components/Icons/Copy/Copy.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Copy from '../../../Assets/copy.svg'; + +// Custom css +import classes from './copy.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CopySvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +CopySvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CopySvgMemo = memo(CopySvg, areEqualShallow); +export { CopySvgMemo as CopySvg }; diff --git a/src/shared/components/Icons/Copy/copy.module.css b/src/shared/components/Icons/Copy/copy.module.css new file mode 100644 index 0000000..40e3d95 --- /dev/null +++ b/src/shared/components/Icons/Copy/copy.module.css @@ -0,0 +1,3 @@ +.copyBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Copy/index.ts b/src/shared/components/Icons/Copy/index.ts new file mode 100644 index 0000000..8c9e7ab --- /dev/null +++ b/src/shared/components/Icons/Copy/index.ts @@ -0,0 +1 @@ +export { CopySvg } from './Copy'; diff --git a/src/shared/components/Icons/CountryFlag/CountryFlag.tsx b/src/shared/components/Icons/CountryFlag/CountryFlag.tsx new file mode 100644 index 0000000..ae74af2 --- /dev/null +++ b/src/shared/components/Icons/CountryFlag/CountryFlag.tsx @@ -0,0 +1,43 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import CanadaFlag from '../../../Assets/canadaflag.svg'; +import UnitedStatesFlag from '../../../Assets/unitedstatesflag.svg'; +import UnitedKingdomFlag from '../../../Assets/unitedkingdomflag.svg'; +import NewZealandFlag from '../../../Assets/newzealandflag.svg'; +import AustraliaFlag from '../../../Assets/australiaflag.svg'; + +// Custom css +import classes from './countryFlag.module.css'; + +interface Props { + className?: string; + id?: string; + svgItem?: number; +} + +const CountryFlagSvg = ({ className = '', id, svgItem }: Props) => { + switch (svgItem) { + case 2: + return ; + case 3: + return ; + case 4: + return ; + case 5: + return ; + + default: + return ; + } +}; + +CountryFlagSvg.defaultProps = { + svgItem: 1, + className: undefined, + id: undefined, +}; + +const CountryFlagSvgMemo = memo(CountryFlagSvg, areEqualShallow); + +export { CountryFlagSvgMemo as CountryFlagSvg }; diff --git a/src/shared/components/Icons/CountryFlag/countryFlag.module.css b/src/shared/components/Icons/CountryFlag/countryFlag.module.css new file mode 100644 index 0000000..235a967 --- /dev/null +++ b/src/shared/components/Icons/CountryFlag/countryFlag.module.css @@ -0,0 +1,3 @@ +.flagIconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/CountryFlag/index.ts b/src/shared/components/Icons/CountryFlag/index.ts new file mode 100644 index 0000000..4537781 --- /dev/null +++ b/src/shared/components/Icons/CountryFlag/index.ts @@ -0,0 +1 @@ +export { CountryFlagSvg } from './CountryFlag'; diff --git a/src/shared/components/Icons/Crew/Crew.tsx b/src/shared/components/Icons/Crew/Crew.tsx new file mode 100644 index 0000000..881bb2f --- /dev/null +++ b/src/shared/components/Icons/Crew/Crew.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Crew from '../../../Assets/crew.svg'; + +// Custom css +import classes from './crew.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CrewSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +CrewSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CrewSvgMemo = memo(CrewSvg, areEqualShallow); +export { CrewSvgMemo as CrewSvg }; diff --git a/src/shared/components/Icons/Crew/crew.module.css b/src/shared/components/Icons/Crew/crew.module.css new file mode 100644 index 0000000..11af697 --- /dev/null +++ b/src/shared/components/Icons/Crew/crew.module.css @@ -0,0 +1,3 @@ +.crewBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Crew/index.ts b/src/shared/components/Icons/Crew/index.ts new file mode 100644 index 0000000..4016d71 --- /dev/null +++ b/src/shared/components/Icons/Crew/index.ts @@ -0,0 +1 @@ +export { CrewSvg } from './Crew'; diff --git a/src/shared/components/Icons/Cube/Cube.tsx b/src/shared/components/Icons/Cube/Cube.tsx new file mode 100644 index 0000000..00f0e91 --- /dev/null +++ b/src/shared/components/Icons/Cube/Cube.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Cube from '../../../Assets/cube.svg'; + +// Custom css +import classes from './cube.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CubeSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +CubeSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CubeSvgMemo = memo(CubeSvg, areEqualShallow); +export { CubeSvgMemo as CubeSvg }; diff --git a/src/shared/components/Icons/Cube/cube.module.css b/src/shared/components/Icons/Cube/cube.module.css new file mode 100644 index 0000000..a3c502a --- /dev/null +++ b/src/shared/components/Icons/Cube/cube.module.css @@ -0,0 +1,3 @@ +.cubeBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Cube/index.ts b/src/shared/components/Icons/Cube/index.ts new file mode 100644 index 0000000..19fe360 --- /dev/null +++ b/src/shared/components/Icons/Cube/index.ts @@ -0,0 +1 @@ +export { CubeSvg } from './Cube'; diff --git a/src/shared/components/Icons/CubePlus/CubePlus.tsx b/src/shared/components/Icons/CubePlus/CubePlus.tsx new file mode 100644 index 0000000..cb7683b --- /dev/null +++ b/src/shared/components/Icons/CubePlus/CubePlus.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import CubePlus from '../../../Assets/cube-plus.svg'; + +// Custom css +import classes from './cubePlus.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CubePlusSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +CubePlusSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CubePlusSvgMemo = memo(CubePlusSvg, areEqualShallow); +export { CubePlusSvgMemo as CubePlusSvg }; diff --git a/src/shared/components/Icons/CubePlus/cubePlus.module.css b/src/shared/components/Icons/CubePlus/cubePlus.module.css new file mode 100644 index 0000000..b4e9426 --- /dev/null +++ b/src/shared/components/Icons/CubePlus/cubePlus.module.css @@ -0,0 +1,3 @@ +.cubePlusBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/CubePlus/index.ts b/src/shared/components/Icons/CubePlus/index.ts new file mode 100644 index 0000000..6eae583 --- /dev/null +++ b/src/shared/components/Icons/CubePlus/index.ts @@ -0,0 +1 @@ +export { CubePlusSvg } from './CubePlus'; diff --git a/src/shared/components/Icons/CubePlusLarge/CubePlusLarge.tsx b/src/shared/components/Icons/CubePlusLarge/CubePlusLarge.tsx new file mode 100644 index 0000000..feeb400 --- /dev/null +++ b/src/shared/components/Icons/CubePlusLarge/CubePlusLarge.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import CubePlusLg from '../../../Assets/cube-plus-lg.svg'; + +// Custom css +import classes from './cubePlusLg.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CubePlusLgSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +CubePlusLgSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CubePlusLgSvgMemo = memo(CubePlusLgSvg, areEqualShallow); +export { CubePlusLgSvgMemo as CubePlusLgSvg }; diff --git a/src/shared/components/Icons/CubePlusLarge/cubePlusLg.module.css b/src/shared/components/Icons/CubePlusLarge/cubePlusLg.module.css new file mode 100644 index 0000000..fa6c8f6 --- /dev/null +++ b/src/shared/components/Icons/CubePlusLarge/cubePlusLg.module.css @@ -0,0 +1,3 @@ +.cubePlusLgBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/CubePlusLarge/index.ts b/src/shared/components/Icons/CubePlusLarge/index.ts new file mode 100644 index 0000000..62396d3 --- /dev/null +++ b/src/shared/components/Icons/CubePlusLarge/index.ts @@ -0,0 +1 @@ +export { CubePlusLgSvg } from './CubePlusLarge'; diff --git a/src/shared/components/Icons/CustomRoom/CustomRoom.tsx b/src/shared/components/Icons/CustomRoom/CustomRoom.tsx new file mode 100644 index 0000000..9a8d8cc --- /dev/null +++ b/src/shared/components/Icons/CustomRoom/CustomRoom.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import CustomRoom from '../../../Assets/custom-room.svg'; + +// Custom css +import classes from './customRoom.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CustomRoomSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +CustomRoomSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CustomRoomSvgMemo = memo(CustomRoomSvg, areEqualShallow); +export { CustomRoomSvgMemo as CustomRoomSvg }; diff --git a/src/shared/components/Icons/CustomRoom/customRoom.module.css b/src/shared/components/Icons/CustomRoom/customRoom.module.css new file mode 100644 index 0000000..25ba62e --- /dev/null +++ b/src/shared/components/Icons/CustomRoom/customRoom.module.css @@ -0,0 +1,4 @@ +.customRoomBase { + cursor: auto; + pointer-events: none; +} diff --git a/src/shared/components/Icons/CustomRoom/index.ts b/src/shared/components/Icons/CustomRoom/index.ts new file mode 100644 index 0000000..43b7b81 --- /dev/null +++ b/src/shared/components/Icons/CustomRoom/index.ts @@ -0,0 +1 @@ +export { CustomRoomSvg } from './CustomRoom'; diff --git a/src/shared/components/Icons/DamageIcon/DamageIcon.tsx b/src/shared/components/Icons/DamageIcon/DamageIcon.tsx new file mode 100644 index 0000000..759adf1 --- /dev/null +++ b/src/shared/components/Icons/DamageIcon/DamageIcon.tsx @@ -0,0 +1,107 @@ +import React, { memo, useEffect, useState } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { + AppliancesSvg, + CeilingSvg, + ElectricalSvg, + ExteriorDamageSvg, + FlooringSvg, + PlumbingSvg, + RoofingSvg, + StructuralSvg, + WallsSvg, + WaterSvg, + FireSvg, + ImpactSvg, + MoldSvg, + SmokeSvg, + AsbestosSvg, + InspectionSvg, + NaturalSvg, + CustomSvg, + AddCustomSvg, + CarpentrySvg, + CleaningSvg, + MiscSvg, + ProtectionSvg, +} from '../DamageTypes'; + +interface Props { + type: string; + className?: string; + events?: any; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const getIcon = (type, className, onClick, onKeyUp) => { + const icons = { + // damaged material icons + appliances: , + appliances32: , + ceiling: , + ceiling32: , + electrical: , + electrical32: , + exterior: , + exterior32: , + flooring: , + flooring32: , + plumbing: , + plumbing32: , + roofing: , + roofing32: , + structural: , + structural32: , + walls: , + walls32: , + + // property damage icons + water: , + fire: , + impact: , + mold: , + smoke: , + asbestos: , + inspection: , + natural: , + custom: , + addcustom: , + carpentry: , + cleaning: , + 'misc.': , + protection: , + // mitigation is supposed to use the water svg + mitigation: , + }; + + // return null to avoid errors in case if the icon type is not present in the icons list + return icons[type] || null; +}; + +const DamageIcon = ({ className, onClick, onKeyUp, type }: Props) => { + const [icon, setIcon] = useState(null); + + useEffect(() => { + if (type) { + // Remove all white space from the string, with the regex + const iconType = type.toLocaleLowerCase().replace(/\s+/g, ''); + + // set the icon based on icon type change, useful for conditional icon renderings + setIcon(getIcon(iconType, className, onClick, onKeyUp)); + } + }, [type]); + + return icon; +}; + +DamageIcon.defaultProps = { + className: undefined, + events: undefined, +}; + +const DamageIconMemo = memo(DamageIcon, areEqual); + +export { DamageIconMemo as DamageIcon }; diff --git a/src/shared/components/Icons/DamageIcon/index.ts b/src/shared/components/Icons/DamageIcon/index.ts new file mode 100644 index 0000000..e0f5c69 --- /dev/null +++ b/src/shared/components/Icons/DamageIcon/index.ts @@ -0,0 +1 @@ +export { DamageIcon } from './DamageIcon'; diff --git a/src/shared/components/Icons/DamageTypes/AddCustom/AddCustom.tsx b/src/shared/components/Icons/DamageTypes/AddCustom/AddCustom.tsx new file mode 100644 index 0000000..699d6d8 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/AddCustom/AddCustom.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Custom from '../../../../Assets/custom-damage-add.svg'; + +// Custom css +import classes from './addCustom.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const AddCustomSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +AddCustomSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const AddCustomSvgMemo = memo(AddCustomSvg, areEqualShallow); +export { AddCustomSvgMemo as AddCustomSvg }; diff --git a/src/shared/components/Icons/DamageTypes/AddCustom/addCustom.module.css b/src/shared/components/Icons/DamageTypes/AddCustom/addCustom.module.css new file mode 100644 index 0000000..863ea3b --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/AddCustom/addCustom.module.css @@ -0,0 +1,4 @@ +.customBase { + cursor: pointer; + pointer-events: none; + } \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/AddCustom/index.ts b/src/shared/components/Icons/DamageTypes/AddCustom/index.ts new file mode 100644 index 0000000..3a5f680 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/AddCustom/index.ts @@ -0,0 +1 @@ +export { AddCustomSvg } from './AddCustom'; diff --git a/src/shared/components/Icons/DamageTypes/Appliances/Appliances.tsx b/src/shared/components/Icons/DamageTypes/Appliances/Appliances.tsx new file mode 100644 index 0000000..72f558a --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Appliances/Appliances.tsx @@ -0,0 +1,49 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Appliances from '../../../../Assets/appliances.svg'; +import Appliances32 from '../../../../Assets/appliances-sm.svg'; + +// Custom css +import classes from './appliances.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const AppliancesSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case '32': + return ( + + ); + default: + return ( + + ); + } +}; + +AppliancesSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const AppliancesSvgMemo = memo(AppliancesSvg, areEqualShallow); +export { AppliancesSvgMemo as AppliancesSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Appliances/appliances.module.css b/src/shared/components/Icons/DamageTypes/Appliances/appliances.module.css new file mode 100644 index 0000000..dc49d69 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Appliances/appliances.module.css @@ -0,0 +1,4 @@ +.appliancesBase { + cursor: pointer; + pointer-events: none; +} diff --git a/src/shared/components/Icons/DamageTypes/Appliances/index.ts b/src/shared/components/Icons/DamageTypes/Appliances/index.ts new file mode 100644 index 0000000..3a806c1 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Appliances/index.ts @@ -0,0 +1 @@ +export { AppliancesSvg } from './Appliances'; diff --git a/src/shared/components/Icons/DamageTypes/Asbestos/Asbestos.tsx b/src/shared/components/Icons/DamageTypes/Asbestos/Asbestos.tsx new file mode 100644 index 0000000..37ed1c3 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Asbestos/Asbestos.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Asbestos from '../../../../Assets/asbestos.svg'; + +// Custom css +import classes from './asbestos.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const AsbestosSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +AsbestosSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const AsbestosSvgMemo = memo(AsbestosSvg, areEqualShallow); +export { AsbestosSvgMemo as AsbestosSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Asbestos/asbestos.module.css b/src/shared/components/Icons/DamageTypes/Asbestos/asbestos.module.css new file mode 100644 index 0000000..446358a --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Asbestos/asbestos.module.css @@ -0,0 +1,4 @@ +.asbestosBase { + cursor: pointer; + pointer-events: none; + } \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/Asbestos/index.ts b/src/shared/components/Icons/DamageTypes/Asbestos/index.ts new file mode 100644 index 0000000..7fca228 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Asbestos/index.ts @@ -0,0 +1 @@ +export { AsbestosSvg } from './Asbestos'; diff --git a/src/shared/components/Icons/DamageTypes/Carpentry/Carpentry.tsx b/src/shared/components/Icons/DamageTypes/Carpentry/Carpentry.tsx new file mode 100644 index 0000000..74ec9b8 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Carpentry/Carpentry.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Carpentry from '../../../../Assets/carpentry.svg'; + +// Custom css +import classes from './carpentry.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CarpentrySvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +CarpentrySvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CarpentrySvgMemo = memo(CarpentrySvg, areEqualShallow); +export { CarpentrySvgMemo as CarpentrySvg }; diff --git a/src/shared/components/Icons/DamageTypes/Carpentry/carpentry.module.css b/src/shared/components/Icons/DamageTypes/Carpentry/carpentry.module.css new file mode 100644 index 0000000..bfdeca4 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Carpentry/carpentry.module.css @@ -0,0 +1,3 @@ +.carpentryBase { + cursor: default; +} \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/Carpentry/index.ts b/src/shared/components/Icons/DamageTypes/Carpentry/index.ts new file mode 100644 index 0000000..c315f02 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Carpentry/index.ts @@ -0,0 +1 @@ +export { CarpentrySvg } from './Carpentry'; diff --git a/src/shared/components/Icons/DamageTypes/Ceiling/Ceiling.tsx b/src/shared/components/Icons/DamageTypes/Ceiling/Ceiling.tsx new file mode 100644 index 0000000..7611526 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Ceiling/Ceiling.tsx @@ -0,0 +1,44 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Ceiling from '../../../../Assets/ceiling.svg'; +import Ceiling32 from '../../../../Assets/ceiling-sm.svg'; + +// Custom css +import classes from './ceiling.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CeilingSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case '32': + return ( + + ); + default: + return ( + + ); + } +}; + +CeilingSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CeilingSvgMemo = memo(CeilingSvg, areEqualShallow); +export { CeilingSvgMemo as CeilingSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Ceiling/ceiling.module.css b/src/shared/components/Icons/DamageTypes/Ceiling/ceiling.module.css new file mode 100644 index 0000000..a40629d --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Ceiling/ceiling.module.css @@ -0,0 +1,4 @@ +.ceilingBase { + cursor: pointer; + pointer-events: none; +} diff --git a/src/shared/components/Icons/DamageTypes/Ceiling/index.ts b/src/shared/components/Icons/DamageTypes/Ceiling/index.ts new file mode 100644 index 0000000..7070dbb --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Ceiling/index.ts @@ -0,0 +1 @@ +export { CeilingSvg } from './Ceiling'; diff --git a/src/shared/components/Icons/DamageTypes/Cleaning/Cleaning.tsx b/src/shared/components/Icons/DamageTypes/Cleaning/Cleaning.tsx new file mode 100644 index 0000000..8f60cd1 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Cleaning/Cleaning.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Cleaning from '../../../../Assets/cleaning.svg'; + +// Custom css +import classes from './cleaning.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CleaningSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +CleaningSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CleaningSvgMemo = memo(CleaningSvg, areEqualShallow); +export { CleaningSvgMemo as CleaningSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Cleaning/cleaning.module.css b/src/shared/components/Icons/DamageTypes/Cleaning/cleaning.module.css new file mode 100644 index 0000000..7b8178f --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Cleaning/cleaning.module.css @@ -0,0 +1,3 @@ +.cleaningBase { + cursor: default; +} \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/Cleaning/index.ts b/src/shared/components/Icons/DamageTypes/Cleaning/index.ts new file mode 100644 index 0000000..dc973a6 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Cleaning/index.ts @@ -0,0 +1 @@ +export { CleaningSvg } from './Cleaning'; diff --git a/src/shared/components/Icons/DamageTypes/Custom/Custom.tsx b/src/shared/components/Icons/DamageTypes/Custom/Custom.tsx new file mode 100644 index 0000000..3fea90e --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Custom/Custom.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Custom from '../../../../Assets/custom-damage-type.svg'; + +// Custom css +import classes from './custom.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const CustomSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +CustomSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const CustomSvgMemo = memo(CustomSvg, areEqualShallow); +export { CustomSvgMemo as CustomSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Custom/custom.module.css b/src/shared/components/Icons/DamageTypes/Custom/custom.module.css new file mode 100644 index 0000000..889a5fa --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Custom/custom.module.css @@ -0,0 +1,5 @@ +.customBase { + cursor: pointer; + pointer-events: none; + } + \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/Custom/index.ts b/src/shared/components/Icons/DamageTypes/Custom/index.ts new file mode 100644 index 0000000..4d2f6f5 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Custom/index.ts @@ -0,0 +1 @@ +export { CustomSvg } from './Custom'; diff --git a/src/shared/components/Icons/DamageTypes/Electrical/Electrical.tsx b/src/shared/components/Icons/DamageTypes/Electrical/Electrical.tsx new file mode 100644 index 0000000..49d100d --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Electrical/Electrical.tsx @@ -0,0 +1,49 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Electrical from '../../../../Assets/electrical.svg'; +import Electrical32 from '../../../../Assets/electrical-32.svg'; + +// Custom css +import classes from './electrical.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ElectricalSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case '32': + return ( + + ); + default: + return ( + + ); + } +}; + +ElectricalSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ElectricalSvgMemo = memo(ElectricalSvg, areEqualShallow); +export { ElectricalSvgMemo as ElectricalSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Electrical/electrical.module.css b/src/shared/components/Icons/DamageTypes/Electrical/electrical.module.css new file mode 100644 index 0000000..b57bdca --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Electrical/electrical.module.css @@ -0,0 +1,4 @@ +.electricalBase { + cursor: pointer; + pointer-events: none; +} diff --git a/src/shared/components/Icons/DamageTypes/Electrical/index.ts b/src/shared/components/Icons/DamageTypes/Electrical/index.ts new file mode 100644 index 0000000..dedb444 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Electrical/index.ts @@ -0,0 +1 @@ +export { ElectricalSvg } from './Electrical'; diff --git a/src/shared/components/Icons/DamageTypes/ExteriorDamage/ExteriorDamage.tsx b/src/shared/components/Icons/DamageTypes/ExteriorDamage/ExteriorDamage.tsx new file mode 100644 index 0000000..90b0826 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/ExteriorDamage/ExteriorDamage.tsx @@ -0,0 +1,50 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import ExteriorDamage from '../../../../Assets/exterior.svg'; +import Exterior32 from '../../../../Assets/exterior-32.svg'; +// reusing for now....possible asset change in the future + +// Custom css +import classes from './exteriorDamage.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ExteriorDamageSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case '32': + return ( + + ); + default: + return ( + + ); + } +}; + +ExteriorDamageSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ExteriorDamageSvgMemo = memo(ExteriorDamageSvg, areEqualShallow); +export { ExteriorDamageSvgMemo as ExteriorDamageSvg }; diff --git a/src/shared/components/Icons/DamageTypes/ExteriorDamage/exteriorDamage.module.css b/src/shared/components/Icons/DamageTypes/ExteriorDamage/exteriorDamage.module.css new file mode 100644 index 0000000..14aa0cf --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/ExteriorDamage/exteriorDamage.module.css @@ -0,0 +1,4 @@ +.exteriorDamageBase { + cursor: pointer; + pointer-events: none; +} diff --git a/src/shared/components/Icons/DamageTypes/ExteriorDamage/index.ts b/src/shared/components/Icons/DamageTypes/ExteriorDamage/index.ts new file mode 100644 index 0000000..82304e2 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/ExteriorDamage/index.ts @@ -0,0 +1 @@ +export { ExteriorDamageSvg } from './ExteriorDamage'; diff --git a/src/shared/components/Icons/DamageTypes/Fire/Fire.tsx b/src/shared/components/Icons/DamageTypes/Fire/Fire.tsx new file mode 100644 index 0000000..038d889 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Fire/Fire.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Fire from '../../../../Assets/fire.svg'; + +// Custom css +import classes from './fire.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const FireSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +FireSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const FireSvgMemo = memo(FireSvg, areEqualShallow); +export { FireSvgMemo as FireSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Fire/fire.module.css b/src/shared/components/Icons/DamageTypes/Fire/fire.module.css new file mode 100644 index 0000000..4f16980 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Fire/fire.module.css @@ -0,0 +1,4 @@ +.fireBase { + cursor: pointer; + pointer-events: none; + } \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/Fire/index.ts b/src/shared/components/Icons/DamageTypes/Fire/index.ts new file mode 100644 index 0000000..d40af16 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Fire/index.ts @@ -0,0 +1 @@ +export { FireSvg } from './Fire'; diff --git a/src/shared/components/Icons/DamageTypes/Flooring/Flooring.tsx b/src/shared/components/Icons/DamageTypes/Flooring/Flooring.tsx new file mode 100644 index 0000000..661e4ac --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Flooring/Flooring.tsx @@ -0,0 +1,50 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Flooring from '../../../../Assets/flooring.svg'; +import Flooring32 from '../../../../Assets/flooring-32.svg'; +// reusing for now....possible asset change in the future + +// Custom css +import classes from './flooring.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const FlooringSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case '32': + return ( + + ); + default: + return ( + + ); + } +}; + +FlooringSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const FlooringSvgMemo = memo(FlooringSvg, areEqualShallow); +export { FlooringSvgMemo as FlooringSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Flooring/flooring.module.css b/src/shared/components/Icons/DamageTypes/Flooring/flooring.module.css new file mode 100644 index 0000000..adc435d --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Flooring/flooring.module.css @@ -0,0 +1,4 @@ +.flooringBase { + cursor: pointer; + pointer-events: none; +} diff --git a/src/shared/components/Icons/DamageTypes/Flooring/index.ts b/src/shared/components/Icons/DamageTypes/Flooring/index.ts new file mode 100644 index 0000000..fbe9c74 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Flooring/index.ts @@ -0,0 +1 @@ +export { FlooringSvg } from './Flooring'; diff --git a/src/shared/components/Icons/DamageTypes/Impact/Impact.tsx b/src/shared/components/Icons/DamageTypes/Impact/Impact.tsx new file mode 100644 index 0000000..30b7114 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Impact/Impact.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Impact from '../../../../Assets/impact.svg'; + +// Custom css +import classes from './impact.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ImpactSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +ImpactSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ImpactSvgMemo = memo(ImpactSvg, areEqualShallow); +export { ImpactSvgMemo as ImpactSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Impact/impact.module.css b/src/shared/components/Icons/DamageTypes/Impact/impact.module.css new file mode 100644 index 0000000..173464d --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Impact/impact.module.css @@ -0,0 +1,4 @@ +.impactBase { + cursor: pointer; + pointer-events: none; + } \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/Impact/index.ts b/src/shared/components/Icons/DamageTypes/Impact/index.ts new file mode 100644 index 0000000..e73c9e3 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Impact/index.ts @@ -0,0 +1 @@ +export { ImpactSvg } from './Impact'; diff --git a/src/shared/components/Icons/DamageTypes/Inspection/Inspection.tsx b/src/shared/components/Icons/DamageTypes/Inspection/Inspection.tsx new file mode 100644 index 0000000..4bab633 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Inspection/Inspection.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Inspection from '../../../../Assets/inspection.svg'; + +// Custom css +import classes from './inspection.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const InspectionSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +InspectionSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const InspectionSvgMemo = memo(InspectionSvg, areEqualShallow); +export { InspectionSvgMemo as InspectionSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Inspection/index.ts b/src/shared/components/Icons/DamageTypes/Inspection/index.ts new file mode 100644 index 0000000..3f96f50 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Inspection/index.ts @@ -0,0 +1 @@ +export { InspectionSvg } from './Inspection'; diff --git a/src/shared/components/Icons/DamageTypes/Inspection/inspection.module.css b/src/shared/components/Icons/DamageTypes/Inspection/inspection.module.css new file mode 100644 index 0000000..d160376 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Inspection/inspection.module.css @@ -0,0 +1,4 @@ +.inspectionBase { + cursor: pointer; + pointer-events: none; + } \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/Misc/Misc.tsx b/src/shared/components/Icons/DamageTypes/Misc/Misc.tsx new file mode 100644 index 0000000..cf25d72 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Misc/Misc.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Misc from '../../../../Assets/misc.svg'; + +// Custom css +import classes from './misc.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const MiscSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +MiscSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const MiscSvgMemo = memo(MiscSvg, areEqualShallow); +export { MiscSvgMemo as MiscSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Misc/index.ts b/src/shared/components/Icons/DamageTypes/Misc/index.ts new file mode 100644 index 0000000..8b6bb63 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Misc/index.ts @@ -0,0 +1 @@ +export { MiscSvg } from './Misc'; diff --git a/src/shared/components/Icons/DamageTypes/Misc/misc.module.css b/src/shared/components/Icons/DamageTypes/Misc/misc.module.css new file mode 100644 index 0000000..e9eb57e --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Misc/misc.module.css @@ -0,0 +1,3 @@ +.miscBase { + cursor: default; +} \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/Mold/Mold.tsx b/src/shared/components/Icons/DamageTypes/Mold/Mold.tsx new file mode 100644 index 0000000..eb49074 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Mold/Mold.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Mold from '../../../../Assets/mold.svg'; + +// Custom css +import classes from './mold.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const MoldSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +MoldSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const MoldSvgMemo = memo(MoldSvg, areEqualShallow); +export { MoldSvgMemo as MoldSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Mold/index.ts b/src/shared/components/Icons/DamageTypes/Mold/index.ts new file mode 100644 index 0000000..04d6f1a --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Mold/index.ts @@ -0,0 +1 @@ +export { MoldSvg } from './Mold'; diff --git a/src/shared/components/Icons/DamageTypes/Mold/mold.module.css b/src/shared/components/Icons/DamageTypes/Mold/mold.module.css new file mode 100644 index 0000000..4a7c4af --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Mold/mold.module.css @@ -0,0 +1,4 @@ +.moldBase { + cursor: pointer; + pointer-events: none; + } \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/Natural/Natural.tsx b/src/shared/components/Icons/DamageTypes/Natural/Natural.tsx new file mode 100644 index 0000000..5fb1bd9 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Natural/Natural.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Natural from '../../../../Assets/natural.svg'; + +// Custom css +import classes from './natural.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const NaturalSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +NaturalSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const NaturalSvgMemo = memo(NaturalSvg, areEqualShallow); +export { NaturalSvgMemo as NaturalSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Natural/index.ts b/src/shared/components/Icons/DamageTypes/Natural/index.ts new file mode 100644 index 0000000..4698cce --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Natural/index.ts @@ -0,0 +1 @@ +export { NaturalSvg } from './Natural'; diff --git a/src/shared/components/Icons/DamageTypes/Natural/natural.module.css b/src/shared/components/Icons/DamageTypes/Natural/natural.module.css new file mode 100644 index 0000000..2e44d63 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Natural/natural.module.css @@ -0,0 +1,4 @@ +.naturalBase { + cursor: pointer; + pointer-events: none; + } \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/Plumbing/Plumbing.tsx b/src/shared/components/Icons/DamageTypes/Plumbing/Plumbing.tsx new file mode 100644 index 0000000..c50dd35 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Plumbing/Plumbing.tsx @@ -0,0 +1,50 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Plumbing from '../../../../Assets/plumbing.svg'; +import Plumbing32 from '../../../../Assets/plumbing-32.svg'; +// reusing for now....possible asset change in the future + +// Custom css +import classes from './plumbing.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const PlumbingSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case '32': + return ( + + ); + default: + return ( + + ); + } +}; + +PlumbingSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const PlumbingSvgMemo = memo(PlumbingSvg, areEqualShallow); +export { PlumbingSvgMemo as PlumbingSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Plumbing/index.ts b/src/shared/components/Icons/DamageTypes/Plumbing/index.ts new file mode 100644 index 0000000..1ea4561 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Plumbing/index.ts @@ -0,0 +1 @@ +export { PlumbingSvg } from './Plumbing'; diff --git a/src/shared/components/Icons/DamageTypes/Plumbing/plumbing.module.css b/src/shared/components/Icons/DamageTypes/Plumbing/plumbing.module.css new file mode 100644 index 0000000..c462432 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Plumbing/plumbing.module.css @@ -0,0 +1,4 @@ +.plumbingBase { + cursor: pointer; + pointer-events: none; +} diff --git a/src/shared/components/Icons/DamageTypes/Protection/Protection.tsx b/src/shared/components/Icons/DamageTypes/Protection/Protection.tsx new file mode 100644 index 0000000..e0af051 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Protection/Protection.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Protection from '../../../../Assets/protection.svg'; + +// Custom css +import classes from './protection.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ProtectionSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +ProtectionSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ProtectionSvgMemo = memo(ProtectionSvg, areEqualShallow); +export { ProtectionSvgMemo as ProtectionSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Protection/index.ts b/src/shared/components/Icons/DamageTypes/Protection/index.ts new file mode 100644 index 0000000..2b1598f --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Protection/index.ts @@ -0,0 +1 @@ +export { ProtectionSvg } from './Protection'; diff --git a/src/shared/components/Icons/DamageTypes/Protection/protection.module.css b/src/shared/components/Icons/DamageTypes/Protection/protection.module.css new file mode 100644 index 0000000..40625ce --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Protection/protection.module.css @@ -0,0 +1,3 @@ +.protectionBase { + cursor: default; +} \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/Roofing/Roofing.tsx b/src/shared/components/Icons/DamageTypes/Roofing/Roofing.tsx new file mode 100644 index 0000000..8c79214 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Roofing/Roofing.tsx @@ -0,0 +1,45 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Roofing from '../../../../Assets/roofing.svg'; +import Roofing32 from '../../../../Assets/roofing-32.svg'; +// reusing for now....possible asset change in the future + +// Custom css +import classes from './roofing.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const RoofingSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case '32': + return ( + + ); + default: + return ( + + ); + } +}; + +RoofingSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const RoofingSvgMemo = memo(RoofingSvg, areEqualShallow); +export { RoofingSvgMemo as RoofingSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Roofing/index.ts b/src/shared/components/Icons/DamageTypes/Roofing/index.ts new file mode 100644 index 0000000..94314ca --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Roofing/index.ts @@ -0,0 +1 @@ +export { RoofingSvg } from './Roofing'; diff --git a/src/shared/components/Icons/DamageTypes/Roofing/roofing.module.css b/src/shared/components/Icons/DamageTypes/Roofing/roofing.module.css new file mode 100644 index 0000000..9b8af2d --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Roofing/roofing.module.css @@ -0,0 +1,4 @@ +.roofingBase { + cursor: pointer; + pointer-events: none; +} diff --git a/src/shared/components/Icons/DamageTypes/Smoke/Smoke.tsx b/src/shared/components/Icons/DamageTypes/Smoke/Smoke.tsx new file mode 100644 index 0000000..b2388bb --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Smoke/Smoke.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Smoke from '../../../../Assets/smoke.svg'; + +// Custom css +import classes from './smoke.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const SmokeSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +SmokeSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const SmokeSvgMemo = memo(SmokeSvg, areEqualShallow); +export { SmokeSvgMemo as SmokeSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Smoke/index.ts b/src/shared/components/Icons/DamageTypes/Smoke/index.ts new file mode 100644 index 0000000..5568575 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Smoke/index.ts @@ -0,0 +1 @@ +export { SmokeSvg } from './Smoke'; diff --git a/src/shared/components/Icons/DamageTypes/Smoke/smoke.module.css b/src/shared/components/Icons/DamageTypes/Smoke/smoke.module.css new file mode 100644 index 0000000..b72db2e --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Smoke/smoke.module.css @@ -0,0 +1,4 @@ +.smokeBase { + cursor: pointer; + pointer-events: none; + } \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/Structural/Structural.tsx b/src/shared/components/Icons/DamageTypes/Structural/Structural.tsx new file mode 100644 index 0000000..4964591 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Structural/Structural.tsx @@ -0,0 +1,51 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Structural from '../../../../Assets/structural.svg'; +import Structural32 from '../../../../Assets/structural-32.svg'; + +// reusing for now....possible asset change in the future + +// Custom css +import classes from './structural.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const StructuralSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case '32': + return ( + + ); + default: + return ( + + ); + } +}; + +StructuralSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const StructuralSvgMemo = memo(StructuralSvg, areEqualShallow); +export { StructuralSvgMemo as StructuralSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Structural/index.ts b/src/shared/components/Icons/DamageTypes/Structural/index.ts new file mode 100644 index 0000000..32ab38b --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Structural/index.ts @@ -0,0 +1 @@ +export { StructuralSvg } from './Structural'; diff --git a/src/shared/components/Icons/DamageTypes/Structural/structural.module.css b/src/shared/components/Icons/DamageTypes/Structural/structural.module.css new file mode 100644 index 0000000..bd2d33f --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Structural/structural.module.css @@ -0,0 +1,4 @@ +.structuralBase { + cursor: pointer; + pointer-events: none; +} diff --git a/src/shared/components/Icons/DamageTypes/Walls/Walls.tsx b/src/shared/components/Icons/DamageTypes/Walls/Walls.tsx new file mode 100644 index 0000000..f855c1d --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Walls/Walls.tsx @@ -0,0 +1,40 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Walls from '../../../../Assets/walls.svg'; +import Walls32 from '../../../../Assets/walls-32.svg'; +// reusing for now....possible asset change in the future + +// Custom css +import classes from './walls.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const WallsSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case '32': + return ( + + ); + default: + return ( + + ); + } +}; + +WallsSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const WallsSvgMemo = memo(WallsSvg, areEqualShallow); +export { WallsSvgMemo as WallsSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Walls/index.ts b/src/shared/components/Icons/DamageTypes/Walls/index.ts new file mode 100644 index 0000000..a42cc47 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Walls/index.ts @@ -0,0 +1 @@ +export { WallsSvg } from './Walls'; diff --git a/src/shared/components/Icons/DamageTypes/Walls/walls.module.css b/src/shared/components/Icons/DamageTypes/Walls/walls.module.css new file mode 100644 index 0000000..92ac298 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Walls/walls.module.css @@ -0,0 +1,4 @@ +.wallsBase { + cursor: pointer; + pointer-events: none; +} diff --git a/src/shared/components/Icons/DamageTypes/Water/Water.tsx b/src/shared/components/Icons/DamageTypes/Water/Water.tsx new file mode 100644 index 0000000..3478bac --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Water/Water.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Water from '../../../../Assets/water.svg'; + +// Custom css +import classes from './water.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const WaterSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +WaterSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const WaterSvgMemo = memo(WaterSvg, areEqualShallow); +export { WaterSvgMemo as WaterSvg }; diff --git a/src/shared/components/Icons/DamageTypes/Water/index.ts b/src/shared/components/Icons/DamageTypes/Water/index.ts new file mode 100644 index 0000000..e36b85f --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Water/index.ts @@ -0,0 +1 @@ +export { WaterSvg } from './Water'; diff --git a/src/shared/components/Icons/DamageTypes/Water/water.module.css b/src/shared/components/Icons/DamageTypes/Water/water.module.css new file mode 100644 index 0000000..9f8c7c0 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/Water/water.module.css @@ -0,0 +1,4 @@ +.waterBase { + cursor: pointer; + pointer-events: none; +} \ No newline at end of file diff --git a/src/shared/components/Icons/DamageTypes/index.ts b/src/shared/components/Icons/DamageTypes/index.ts new file mode 100644 index 0000000..c5990b4 --- /dev/null +++ b/src/shared/components/Icons/DamageTypes/index.ts @@ -0,0 +1,23 @@ +export { AppliancesSvg } from './Appliances'; +export { AsbestosSvg } from './Asbestos'; +export { CeilingSvg } from './Ceiling'; +export { CustomSvg } from './Custom'; +export { AddCustomSvg } from './AddCustom'; +export { ElectricalSvg } from './Electrical'; +export { ExteriorDamageSvg } from './ExteriorDamage'; +export { FireSvg } from './Fire'; +export { FlooringSvg } from './Flooring'; +export { ImpactSvg } from './Impact'; +export { InspectionSvg } from './Inspection'; +export { MoldSvg } from './Mold'; +export { NaturalSvg } from './Natural'; +export { PlumbingSvg } from './Plumbing'; +export { RoofingSvg } from './Roofing'; +export { SmokeSvg } from './Smoke'; +export { StructuralSvg } from './Structural'; +export { WallsSvg } from './Walls'; +export { WaterSvg } from './Water'; +export { CarpentrySvg } from './Carpentry'; +export { CleaningSvg } from './Cleaning'; +export { MiscSvg } from './Misc'; +export { ProtectionSvg } from './Protection'; diff --git a/src/shared/components/Icons/Dashboard/Dashboard.tsx b/src/shared/components/Icons/Dashboard/Dashboard.tsx new file mode 100644 index 0000000..1d726c6 --- /dev/null +++ b/src/shared/components/Icons/Dashboard/Dashboard.tsx @@ -0,0 +1,35 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; + +import Dashboard from '../../../Assets/dashboard.svg'; + +// Custom css +import classes from './dashboard.module.css'; + +interface Props { + className?: string; + fill: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const DashboardSvg = ({ className = '', fill = '#5B476B', id, onClick, onKeyUp }: Props) => ( + +); + +DashboardSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const DashboardSvgMemo = memo(DashboardSvg, areEqualShallow); +export { DashboardSvgMemo as DashboardSvg }; diff --git a/src/shared/components/Icons/Dashboard/dashboard.module.css b/src/shared/components/Icons/Dashboard/dashboard.module.css new file mode 100644 index 0000000..e613bc5 --- /dev/null +++ b/src/shared/components/Icons/Dashboard/dashboard.module.css @@ -0,0 +1,3 @@ +.dashboardBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Dashboard/index.ts b/src/shared/components/Icons/Dashboard/index.ts new file mode 100644 index 0000000..7aa70f8 --- /dev/null +++ b/src/shared/components/Icons/Dashboard/index.ts @@ -0,0 +1 @@ +export { DashboardSvg } from './Dashboard'; diff --git a/src/shared/components/Icons/Dehumidifier/Dehumidifier.tsx b/src/shared/components/Icons/Dehumidifier/Dehumidifier.tsx new file mode 100644 index 0000000..3bca916 --- /dev/null +++ b/src/shared/components/Icons/Dehumidifier/Dehumidifier.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Dehumidifier from '../../../Assets/dehumidifier.svg'; + +// Custom css +import classes from './dehumidifier.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const DehumidifierSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +DehumidifierSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const DehumidifierSvgMemo = memo(DehumidifierSvg, areEqualShallow); +export { DehumidifierSvgMemo as DehumidifierSvg }; diff --git a/src/shared/components/Icons/Dehumidifier/dehumidifier.module.css b/src/shared/components/Icons/Dehumidifier/dehumidifier.module.css new file mode 100644 index 0000000..d38255f --- /dev/null +++ b/src/shared/components/Icons/Dehumidifier/dehumidifier.module.css @@ -0,0 +1,3 @@ +.dehumidifierBase { + cursor: default; +} \ No newline at end of file diff --git a/src/shared/components/Icons/Dehumidifier/index.ts b/src/shared/components/Icons/Dehumidifier/index.ts new file mode 100644 index 0000000..8c5bdc9 --- /dev/null +++ b/src/shared/components/Icons/Dehumidifier/index.ts @@ -0,0 +1 @@ +export { DehumidifierSvg } from './Dehumidifier'; diff --git a/src/shared/components/Icons/Den/Den.tsx b/src/shared/components/Icons/Den/Den.tsx new file mode 100644 index 0000000..f5ca643 --- /dev/null +++ b/src/shared/components/Icons/Den/Den.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import Den from "../../../Assets/den.svg"; + +// Custom css +import classes from "./den.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const DenSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +DenSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const DenSvgMemo = memo(DenSvg, areEqualShallow); +export { DenSvgMemo as DenSvg }; diff --git a/src/shared/components/Icons/Den/den.module.css b/src/shared/components/Icons/Den/den.module.css new file mode 100644 index 0000000..e968c9e --- /dev/null +++ b/src/shared/components/Icons/Den/den.module.css @@ -0,0 +1,3 @@ +.denBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Den/index.ts b/src/shared/components/Icons/Den/index.ts new file mode 100644 index 0000000..d67dba5 --- /dev/null +++ b/src/shared/components/Icons/Den/index.ts @@ -0,0 +1 @@ +export { DenSvg } from "./Den"; diff --git a/src/shared/components/Icons/DiningRoom/DiningRoom.tsx b/src/shared/components/Icons/DiningRoom/DiningRoom.tsx new file mode 100644 index 0000000..bd6c934 --- /dev/null +++ b/src/shared/components/Icons/DiningRoom/DiningRoom.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import DiningRoom from "../../../Assets/dining-room.svg"; + +// Custom css +import classes from "./diningRoom.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const DiningRoomSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +DiningRoomSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const DiningRoomSvgMemo = memo(DiningRoomSvg, areEqualShallow); +export { DiningRoomSvgMemo as DiningRoomSvg }; diff --git a/src/shared/components/Icons/DiningRoom/diningRoom.module.css b/src/shared/components/Icons/DiningRoom/diningRoom.module.css new file mode 100644 index 0000000..809d4c9 --- /dev/null +++ b/src/shared/components/Icons/DiningRoom/diningRoom.module.css @@ -0,0 +1,3 @@ +.diningRoomBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/DiningRoom/index.ts b/src/shared/components/Icons/DiningRoom/index.ts new file mode 100644 index 0000000..dfb254e --- /dev/null +++ b/src/shared/components/Icons/DiningRoom/index.ts @@ -0,0 +1 @@ +export { DiningRoomSvg } from "./DiningRoom"; diff --git a/src/shared/components/Icons/Dot/Dot.tsx b/src/shared/components/Icons/Dot/Dot.tsx new file mode 100644 index 0000000..d5b2a6d --- /dev/null +++ b/src/shared/components/Icons/Dot/Dot.tsx @@ -0,0 +1,25 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Dot from '../../../Assets/dot.svg'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const DotSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +DotSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const DotSvgMemo = memo(DotSvg, areEqualShallow); +export { DotSvgMemo as DotSvg }; diff --git a/src/shared/components/Icons/Dot/index.ts b/src/shared/components/Icons/Dot/index.ts new file mode 100644 index 0000000..a4e9e9d --- /dev/null +++ b/src/shared/components/Icons/Dot/index.ts @@ -0,0 +1 @@ +export { DotSvg } from './Dot'; diff --git a/src/shared/components/Icons/Download/Download.tsx b/src/shared/components/Icons/Download/Download.tsx new file mode 100644 index 0000000..ad2fde6 --- /dev/null +++ b/src/shared/components/Icons/Download/Download.tsx @@ -0,0 +1,46 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; + +import Download from '../../../Assets/download.svg'; +import DownloadPurple from '../../../Assets/download-purple.svg'; + +// Custom css +import classes from './download.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const DownloadSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case 'purple': + return ( + + ); + default: + return ( + + ); + } +}; + +DownloadSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const DownloadSvgMemo = memo(DownloadSvg, areEqualShallow); +export { DownloadSvgMemo as DownloadSvg }; diff --git a/src/shared/components/Icons/Download/download.module.css b/src/shared/components/Icons/Download/download.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/Download/download.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Download/index.ts b/src/shared/components/Icons/Download/index.ts new file mode 100644 index 0000000..06f9507 --- /dev/null +++ b/src/shared/components/Icons/Download/index.ts @@ -0,0 +1 @@ +export { DownloadSvg } from './Download'; diff --git a/src/shared/components/Icons/DropdownArrow/DropdownArrow.tsx b/src/shared/components/Icons/DropdownArrow/DropdownArrow.tsx new file mode 100644 index 0000000..ca11d81 --- /dev/null +++ b/src/shared/components/Icons/DropdownArrow/DropdownArrow.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqual } from "Utils/equalityChecks"; +import DropdownArrow from "../../../Assets/chevron-down.svg"; + +// Custom css +import classes from "./dropdownArrow.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const DropdownArrowSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +DropdownArrowSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const DropdownArrowSvgMemo = memo(DropdownArrowSvg, areEqual); +export { DropdownArrowSvgMemo as DropdownArrowSvg }; diff --git a/src/shared/components/Icons/DropdownArrow/dropdownArrow.module.css b/src/shared/components/Icons/DropdownArrow/dropdownArrow.module.css new file mode 100644 index 0000000..8cee42e --- /dev/null +++ b/src/shared/components/Icons/DropdownArrow/dropdownArrow.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} \ No newline at end of file diff --git a/src/shared/components/Icons/DropdownArrow/index.ts b/src/shared/components/Icons/DropdownArrow/index.ts new file mode 100644 index 0000000..2ab296f --- /dev/null +++ b/src/shared/components/Icons/DropdownArrow/index.ts @@ -0,0 +1 @@ +export { DropdownArrowSvg } from "./DropdownArrow"; diff --git a/src/shared/components/Icons/DropzoneBackground/DropzoneBackground.tsx b/src/shared/components/Icons/DropzoneBackground/DropzoneBackground.tsx new file mode 100644 index 0000000..7ea948e --- /dev/null +++ b/src/shared/components/Icons/DropzoneBackground/DropzoneBackground.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import DropzoneBackground from '../../../Assets/dropzone-background.svg'; + +// Custom css +import classes from './dropzonebackground.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const DropzoneBackgroundSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +DropzoneBackgroundSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const DropzoneBackgroundSvgMemo = memo(DropzoneBackgroundSvg, areEqualShallow); +export { DropzoneBackgroundSvgMemo as DropzoneBackgroundSvg }; diff --git a/src/shared/components/Icons/DropzoneBackground/dropzonebackground.module.css b/src/shared/components/Icons/DropzoneBackground/dropzonebackground.module.css new file mode 100644 index 0000000..de00a30 --- /dev/null +++ b/src/shared/components/Icons/DropzoneBackground/dropzonebackground.module.css @@ -0,0 +1,3 @@ +.dropzoneBackgroundBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/DropzoneBackground/index.ts b/src/shared/components/Icons/DropzoneBackground/index.ts new file mode 100644 index 0000000..d12c131 --- /dev/null +++ b/src/shared/components/Icons/DropzoneBackground/index.ts @@ -0,0 +1 @@ +export { DropzoneBackgroundSvg } from './DropzoneBackground'; diff --git a/src/shared/components/Icons/DryingMat/DryingMat.tsx b/src/shared/components/Icons/DryingMat/DryingMat.tsx new file mode 100644 index 0000000..2861838 --- /dev/null +++ b/src/shared/components/Icons/DryingMat/DryingMat.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import DryingMat from '../../../Assets/drying-mat.svg'; + +// Custom css +import classes from './dryingMat.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const DryingMatSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +DryingMatSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const DryingMatSvgMemo = memo(DryingMatSvg, areEqualShallow); +export { DryingMatSvgMemo as DryingMatSvg }; diff --git a/src/shared/components/Icons/DryingMat/dryingMat.module.css b/src/shared/components/Icons/DryingMat/dryingMat.module.css new file mode 100644 index 0000000..c24ae66 --- /dev/null +++ b/src/shared/components/Icons/DryingMat/dryingMat.module.css @@ -0,0 +1,3 @@ +.dryingMatBase { + cursor: default; +} \ No newline at end of file diff --git a/src/shared/components/Icons/DryingMat/index.ts b/src/shared/components/Icons/DryingMat/index.ts new file mode 100644 index 0000000..be76755 --- /dev/null +++ b/src/shared/components/Icons/DryingMat/index.ts @@ -0,0 +1 @@ +export { DryingMatSvg } from './DryingMat'; diff --git a/src/shared/components/Icons/Edit/Edit.tsx b/src/shared/components/Icons/Edit/Edit.tsx new file mode 100644 index 0000000..d4f8968 --- /dev/null +++ b/src/shared/components/Icons/Edit/Edit.tsx @@ -0,0 +1,42 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Edit from '../../../Assets/edit-lg.svg'; +import EditSm from '../../../Assets/edit.svg'; +import EditMd from '../../../Assets/edit-md.svg'; + +// Custom css +import classes from './edit.module.css'; + +interface Props { + className?: string; + id?: string; + svgItem?: number; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const EditSvg = ({ className = '', id, svgItem, onClick, onKeyUp }: Props) => { + switch (svgItem) { + case 2: + return ( + + ); + case 3: + return ( + + ); + default: + return ; + } +}; + +EditSvg.defaultProps = { + className: undefined, + id: undefined, + svgItem: 1, + onClick: undefined, + onKeyUp: undefined, +}; + +const EditSvgMemo = memo(EditSvg, areEqualShallow); +export { EditSvgMemo as EditSvg }; diff --git a/src/shared/components/Icons/Edit/edit.module.css b/src/shared/components/Icons/Edit/edit.module.css new file mode 100644 index 0000000..0ae552d --- /dev/null +++ b/src/shared/components/Icons/Edit/edit.module.css @@ -0,0 +1,3 @@ +.editBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Edit/index.ts b/src/shared/components/Icons/Edit/index.ts new file mode 100644 index 0000000..254ba31 --- /dev/null +++ b/src/shared/components/Icons/Edit/index.ts @@ -0,0 +1 @@ +export { EditSvg } from './Edit'; diff --git a/src/shared/components/Icons/ElectricalRoom/ElectricalRoom.tsx b/src/shared/components/Icons/ElectricalRoom/ElectricalRoom.tsx new file mode 100644 index 0000000..47e74e3 --- /dev/null +++ b/src/shared/components/Icons/ElectricalRoom/ElectricalRoom.tsx @@ -0,0 +1,32 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import ElectricalRoom from "../../../Assets/electrical-room.svg"; + +// Custom css +import classes from "./electricalRoom.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ElectricalRoomSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +ElectricalRoomSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ElectricalRoomSvgMemo = memo(ElectricalRoomSvg, areEqualShallow); +export { ElectricalRoomSvgMemo as ElectricalRoomSvg }; diff --git a/src/shared/components/Icons/ElectricalRoom/electricalRoom.module.css b/src/shared/components/Icons/ElectricalRoom/electricalRoom.module.css new file mode 100644 index 0000000..f81256f --- /dev/null +++ b/src/shared/components/Icons/ElectricalRoom/electricalRoom.module.css @@ -0,0 +1,3 @@ +.electricalRoomBase { + cursor: pointer; +} \ No newline at end of file diff --git a/src/shared/components/Icons/ElectricalRoom/index.ts b/src/shared/components/Icons/ElectricalRoom/index.ts new file mode 100644 index 0000000..99eca27 --- /dev/null +++ b/src/shared/components/Icons/ElectricalRoom/index.ts @@ -0,0 +1 @@ +export { ElectricalRoomSvg } from "./ElectricalRoom"; diff --git a/src/shared/components/Icons/Elevator/Elevator.tsx b/src/shared/components/Icons/Elevator/Elevator.tsx new file mode 100644 index 0000000..6dbeec3 --- /dev/null +++ b/src/shared/components/Icons/Elevator/Elevator.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import Elevator from "../../../Assets/elevator.svg"; + +// Custom css +import classes from "./elevator.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ElevatorSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +ElevatorSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ElevatorSvgMemo = memo(ElevatorSvg, areEqualShallow); +export { ElevatorSvgMemo as ElevatorSvg }; diff --git a/src/shared/components/Icons/Elevator/elevator.module.css b/src/shared/components/Icons/Elevator/elevator.module.css new file mode 100644 index 0000000..75c4a81 --- /dev/null +++ b/src/shared/components/Icons/Elevator/elevator.module.css @@ -0,0 +1,3 @@ +.elevatorBase { + cursor: pointer; +} \ No newline at end of file diff --git a/src/shared/components/Icons/Elevator/index.ts b/src/shared/components/Icons/Elevator/index.ts new file mode 100644 index 0000000..ec7e57f --- /dev/null +++ b/src/shared/components/Icons/Elevator/index.ts @@ -0,0 +1 @@ +export { ElevatorSvg } from "./Elevator"; diff --git a/src/shared/components/Icons/Email/Email.tsx b/src/shared/components/Icons/Email/Email.tsx new file mode 100644 index 0000000..e06e35e --- /dev/null +++ b/src/shared/components/Icons/Email/Email.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Email from '../../../Assets/email-new.svg'; + +// Custom css +import classes from './email.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const EmailSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +EmailSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const EmailSvgMemo = memo(EmailSvg, areEqualShallow); +export { EmailSvgMemo as EmailSvg }; diff --git a/src/shared/components/Icons/Email/email.module.css b/src/shared/components/Icons/Email/email.module.css new file mode 100644 index 0000000..8ef8662 --- /dev/null +++ b/src/shared/components/Icons/Email/email.module.css @@ -0,0 +1,3 @@ +.emailBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Email/index.ts b/src/shared/components/Icons/Email/index.ts new file mode 100644 index 0000000..4f0f271 --- /dev/null +++ b/src/shared/components/Icons/Email/index.ts @@ -0,0 +1 @@ +export { EmailSvg } from './Email'; diff --git a/src/shared/components/Icons/EmployeePhone/EmployeePhone.tsx b/src/shared/components/Icons/EmployeePhone/EmployeePhone.tsx new file mode 100644 index 0000000..ae45b1d --- /dev/null +++ b/src/shared/components/Icons/EmployeePhone/EmployeePhone.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import EmployeePhone from '../../../Assets/employee-phone.svg'; + +// Custom css +import classes from './employeePhone.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const EmployeePhoneSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +EmployeePhoneSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const EmployeePhoneSvgMemo = memo(EmployeePhoneSvg, areEqualShallow); +export { EmployeePhoneSvgMemo as EmployeePhoneSvg }; diff --git a/src/shared/components/Icons/EmployeePhone/employeePhone.module.css b/src/shared/components/Icons/EmployeePhone/employeePhone.module.css new file mode 100644 index 0000000..79cf5ba --- /dev/null +++ b/src/shared/components/Icons/EmployeePhone/employeePhone.module.css @@ -0,0 +1,3 @@ +.employeePhoneBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/EmployeePhone/index.ts b/src/shared/components/Icons/EmployeePhone/index.ts new file mode 100644 index 0000000..745c5f2 --- /dev/null +++ b/src/shared/components/Icons/EmployeePhone/index.ts @@ -0,0 +1 @@ +export { EmployeePhoneSvg } from './EmployeePhone'; diff --git a/src/shared/components/Icons/Ensuite/Ensuite.tsx b/src/shared/components/Icons/Ensuite/Ensuite.tsx new file mode 100644 index 0000000..4c882f1 --- /dev/null +++ b/src/shared/components/Icons/Ensuite/Ensuite.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import Ensuite from "../../../Assets/ensuite.svg"; + +// Custom css +import classes from "./ensuite.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const EnsuiteSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +EnsuiteSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const EnsuiteSvgMemo = memo(EnsuiteSvg, areEqualShallow); +export { EnsuiteSvgMemo as EnsuiteSvg }; diff --git a/src/shared/components/Icons/Ensuite/ensuite.module.css b/src/shared/components/Icons/Ensuite/ensuite.module.css new file mode 100644 index 0000000..f37f6e6 --- /dev/null +++ b/src/shared/components/Icons/Ensuite/ensuite.module.css @@ -0,0 +1,3 @@ +.ensuiteBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Ensuite/index.ts b/src/shared/components/Icons/Ensuite/index.ts new file mode 100644 index 0000000..a509d36 --- /dev/null +++ b/src/shared/components/Icons/Ensuite/index.ts @@ -0,0 +1 @@ +export { EnsuiteSvg } from "./Ensuite"; diff --git a/src/shared/components/Icons/Equipment/Equipment.tsx b/src/shared/components/Icons/Equipment/Equipment.tsx new file mode 100644 index 0000000..d73bb44 --- /dev/null +++ b/src/shared/components/Icons/Equipment/Equipment.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Equipment from '../../../Assets/equipment-log.svg'; + +// Custom css +import classes from './equipment.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const EquipmentSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +EquipmentSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const EquipmentSvgMemo = memo(EquipmentSvg, areEqualShallow); +export { EquipmentSvgMemo as EquipmentSvg }; diff --git a/src/shared/components/Icons/Equipment/equipment.module.css b/src/shared/components/Icons/Equipment/equipment.module.css new file mode 100644 index 0000000..f476e63 --- /dev/null +++ b/src/shared/components/Icons/Equipment/equipment.module.css @@ -0,0 +1,4 @@ +.equipmentBase { + cursor: pointer; +} + \ No newline at end of file diff --git a/src/shared/components/Icons/Equipment/index.ts b/src/shared/components/Icons/Equipment/index.ts new file mode 100644 index 0000000..a1af617 --- /dev/null +++ b/src/shared/components/Icons/Equipment/index.ts @@ -0,0 +1 @@ +export { EquipmentSvg } from './Equipment'; diff --git a/src/shared/components/Icons/Exterior/Exterior.tsx b/src/shared/components/Icons/Exterior/Exterior.tsx new file mode 100644 index 0000000..44dd1d8 --- /dev/null +++ b/src/shared/components/Icons/Exterior/Exterior.tsx @@ -0,0 +1,50 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; +import Exterior from '../../../Assets/exterior.svg'; +import ExteriorAdd from '../../../Assets/exterior-add.svg'; + +// Custom css +import classes from './exterior.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: number; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const ExteriorSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case 2: + return ( + + ); + default: + return ( + + ); + } +}; + +ExteriorSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: 1, + onClick: undefined, + onKeyUp: undefined, +}; + +const ExteriorSvgMemo = memo(ExteriorSvg, areEqual); +export { ExteriorSvgMemo as ExteriorSvg }; diff --git a/src/shared/components/Icons/Exterior/exterior.module.css b/src/shared/components/Icons/Exterior/exterior.module.css new file mode 100644 index 0000000..e69de29 diff --git a/src/shared/components/Icons/Exterior/index.ts b/src/shared/components/Icons/Exterior/index.ts new file mode 100644 index 0000000..4010e52 --- /dev/null +++ b/src/shared/components/Icons/Exterior/index.ts @@ -0,0 +1 @@ +export { ExteriorSvg } from './Exterior'; diff --git a/src/shared/components/Icons/Eye/Eye.tsx b/src/shared/components/Icons/Eye/Eye.tsx new file mode 100644 index 0000000..5a6c8d2 --- /dev/null +++ b/src/shared/components/Icons/Eye/Eye.tsx @@ -0,0 +1,28 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; +import Eye from '../../../Assets/eye.svg'; + +// Custom css +import classes from './eye.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const EyeSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +EyeSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const EyeSvgMemo = memo(EyeSvg, areEqual); +export { EyeSvgMemo as EyeSvg }; diff --git a/src/shared/components/Icons/Eye/eye.module.css b/src/shared/components/Icons/Eye/eye.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/Eye/eye.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Eye/index.ts b/src/shared/components/Icons/Eye/index.ts new file mode 100644 index 0000000..db90afc --- /dev/null +++ b/src/shared/components/Icons/Eye/index.ts @@ -0,0 +1 @@ +export { EyeSvg } from './Eye'; diff --git a/src/shared/components/Icons/EyeClosed/EyeClosed.tsx b/src/shared/components/Icons/EyeClosed/EyeClosed.tsx new file mode 100644 index 0000000..9ea0da6 --- /dev/null +++ b/src/shared/components/Icons/EyeClosed/EyeClosed.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; +import EyeClosed from '../../../Assets/eye-closed.svg'; + +// Custom css +import classes from './eyeClosed.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const EyeClosedSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +EyeClosedSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const EyeClosedSvgMemo = memo(EyeClosedSvg, areEqual); +export { EyeClosedSvgMemo as EyeClosedSvg }; diff --git a/src/shared/components/Icons/EyeClosed/eyeClosed.module.css b/src/shared/components/Icons/EyeClosed/eyeClosed.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/EyeClosed/eyeClosed.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/EyeClosed/index.ts b/src/shared/components/Icons/EyeClosed/index.ts new file mode 100644 index 0000000..c69d0c7 --- /dev/null +++ b/src/shared/components/Icons/EyeClosed/index.ts @@ -0,0 +1 @@ +export { EyeClosedSvg } from './EyeClosed'; diff --git a/src/shared/components/Icons/Facebook/Facebook.tsx b/src/shared/components/Icons/Facebook/Facebook.tsx new file mode 100644 index 0000000..f185c4b --- /dev/null +++ b/src/shared/components/Icons/Facebook/Facebook.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Facebook from '../../../Assets/facebook.svg'; + +// Custom css +import classes from './facebook.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const FacebookSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +FacebookSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const FacebookSvgMemo = memo(FacebookSvg, areEqualShallow); +export { FacebookSvgMemo as FacebookSvg }; diff --git a/src/shared/components/Icons/Facebook/facebook.module.css b/src/shared/components/Icons/Facebook/facebook.module.css new file mode 100644 index 0000000..4719777 --- /dev/null +++ b/src/shared/components/Icons/Facebook/facebook.module.css @@ -0,0 +1,3 @@ +.facebookBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Facebook/index.ts b/src/shared/components/Icons/Facebook/index.ts new file mode 100644 index 0000000..7f1d4f7 --- /dev/null +++ b/src/shared/components/Icons/Facebook/index.ts @@ -0,0 +1 @@ +export { FacebookSvg } from './Facebook'; diff --git a/src/shared/components/Icons/Filter/Filter.tsx b/src/shared/components/Icons/Filter/Filter.tsx new file mode 100644 index 0000000..645f1e6 --- /dev/null +++ b/src/shared/components/Icons/Filter/Filter.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import Filter from "../../../Assets/filter.svg"; + +// Custom css +import classes from "./filter.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const FilterSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +FilterSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const FilterSvgMemo = memo(FilterSvg, areEqualShallow); +export { FilterSvgMemo as FilterSvg }; diff --git a/src/shared/components/Icons/Filter/filter.module.css b/src/shared/components/Icons/Filter/filter.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/Filter/filter.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Filter/index.ts b/src/shared/components/Icons/Filter/index.ts new file mode 100644 index 0000000..1fb2390 --- /dev/null +++ b/src/shared/components/Icons/Filter/index.ts @@ -0,0 +1 @@ +export { FilterSvg } from "./Filter"; diff --git a/src/shared/components/Icons/Flag/Flag.tsx b/src/shared/components/Icons/Flag/Flag.tsx new file mode 100644 index 0000000..9126f2e --- /dev/null +++ b/src/shared/components/Icons/Flag/Flag.tsx @@ -0,0 +1,63 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Flag from '../../../Assets/flag.svg'; +import FlagPurple from '../../../Assets/flag-purple.svg'; +import FlagPhoto from '../../../Assets/flag-photo.svg'; +import FlaggedPhoto from '../../../Assets/flagged-photo.svg'; +import FlagOutlinePurple from '../../../Assets/flag-outline-purple.svg'; +// Custom css +import classes from './flag.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const FlagSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case 'flagPhoto': + return ( + + ); + case 'flaggedPhoto': + return ( + + ); + + case 'purple': + return ( + + ); + case 'outlinepurple': + return ( + + ); + default: + return ; + } +}; + +FlagSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: 'default', + onClick: undefined, + onKeyUp: undefined, +}; + +const FlagSvgMemo = memo(FlagSvg, areEqualShallow); +export { FlagSvgMemo as FlagSvg }; diff --git a/src/shared/components/Icons/Flag/flag.module.css b/src/shared/components/Icons/Flag/flag.module.css new file mode 100644 index 0000000..29da26c --- /dev/null +++ b/src/shared/components/Icons/Flag/flag.module.css @@ -0,0 +1,3 @@ +.flagBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Flag/index.ts b/src/shared/components/Icons/Flag/index.ts new file mode 100644 index 0000000..fd1b516 --- /dev/null +++ b/src/shared/components/Icons/Flag/index.ts @@ -0,0 +1 @@ +export { FlagSvg } from './Flag'; diff --git a/src/shared/components/Icons/Floor/Floor.tsx b/src/shared/components/Icons/Floor/Floor.tsx new file mode 100644 index 0000000..c70e5c6 --- /dev/null +++ b/src/shared/components/Icons/Floor/Floor.tsx @@ -0,0 +1,44 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Floor from '../../../Assets/floor.svg'; +import FloorSm from '../../../Assets/floor-sm.svg'; +import FloorAdd from '../../../Assets/floor-add.svg'; + +// Custom css +import classes from './floor.module.css'; + +interface Props { + className?: string; + id?: string; + svgItem?: number; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const FloorSvg = ({ className = '', id, svgItem, onClick, onKeyUp }: Props) => { + switch (svgItem) { + case 2: + return ( + + ); + case 3: + return ( + + ); + default: + return ( + + ); + } +}; + +FloorSvg.defaultProps = { + className: undefined, + id: undefined, + svgItem: 1, + onClick: undefined, + onKeyUp: undefined, +}; + +const FloorSvgMemo = memo(FloorSvg, areEqualShallow); +export { FloorSvgMemo as FloorSvg }; diff --git a/src/shared/components/Icons/Floor/floor.module.css b/src/shared/components/Icons/Floor/floor.module.css new file mode 100644 index 0000000..5474670 --- /dev/null +++ b/src/shared/components/Icons/Floor/floor.module.css @@ -0,0 +1,3 @@ +.floorBase { + cursor: pointer; +} \ No newline at end of file diff --git a/src/shared/components/Icons/Floor/index.ts b/src/shared/components/Icons/Floor/index.ts new file mode 100644 index 0000000..7a98343 --- /dev/null +++ b/src/shared/components/Icons/Floor/index.ts @@ -0,0 +1 @@ +export { FloorSvg } from "./Floor"; diff --git a/src/shared/components/Icons/Funnel/Funnel.tsx b/src/shared/components/Icons/Funnel/Funnel.tsx new file mode 100644 index 0000000..2c3cbdb --- /dev/null +++ b/src/shared/components/Icons/Funnel/Funnel.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqual } from "Utils/equalityChecks"; +import Funnel from "../../../Assets/funnel-fill.svg"; + +// Custom css +import classes from "./funnel.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const FunnelSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +FunnelSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const FunnelSvgMemo = memo(FunnelSvg, areEqual); +export { FunnelSvgMemo as FunnelSvg }; diff --git a/src/shared/components/Icons/Funnel/funnel.module.css b/src/shared/components/Icons/Funnel/funnel.module.css new file mode 100644 index 0000000..8cee42e --- /dev/null +++ b/src/shared/components/Icons/Funnel/funnel.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} \ No newline at end of file diff --git a/src/shared/components/Icons/Funnel/index.ts b/src/shared/components/Icons/Funnel/index.ts new file mode 100644 index 0000000..31bb7e1 --- /dev/null +++ b/src/shared/components/Icons/Funnel/index.ts @@ -0,0 +1 @@ +export { FunnelSvg } from "./Funnel"; diff --git a/src/shared/components/Icons/GalleryPlaceholder/GalleryPlaceholder.tsx b/src/shared/components/Icons/GalleryPlaceholder/GalleryPlaceholder.tsx new file mode 100644 index 0000000..610c6e3 --- /dev/null +++ b/src/shared/components/Icons/GalleryPlaceholder/GalleryPlaceholder.tsx @@ -0,0 +1,20 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import GalleryPlaceholder from '../../../Assets/galleryplaceholder.svg'; + +interface Props { + className?: string; + id?: string; +} +const GalleryPlaceholderSvg = ({ className = '', id }: Props) => ( + +); + +GalleryPlaceholderSvg.defaultProps = { + className: undefined, + id: undefined, +}; + +const GalleryPlaceholderSvgMemo = memo(GalleryPlaceholderSvg, areEqualShallow); +export { GalleryPlaceholderSvgMemo as GalleryPlaceholderSvg }; diff --git a/src/shared/components/Icons/GalleryPlaceholder/index.ts b/src/shared/components/Icons/GalleryPlaceholder/index.ts new file mode 100644 index 0000000..6e156ac --- /dev/null +++ b/src/shared/components/Icons/GalleryPlaceholder/index.ts @@ -0,0 +1 @@ +export { GalleryPlaceholderSvg } from './GalleryPlaceholder'; diff --git a/src/shared/components/Icons/Google/Google.tsx b/src/shared/components/Icons/Google/Google.tsx new file mode 100644 index 0000000..c6367fe --- /dev/null +++ b/src/shared/components/Icons/Google/Google.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Google from '../../../Assets/google.svg'; + +// Custom css +import classes from './google.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const GoogleSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +GoogleSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const GoogleSvgMemo = memo(GoogleSvg, areEqualShallow); +export { GoogleSvgMemo as GoogleSvg }; diff --git a/src/shared/components/Icons/Google/google.module.css b/src/shared/components/Icons/Google/google.module.css new file mode 100644 index 0000000..79a480e --- /dev/null +++ b/src/shared/components/Icons/Google/google.module.css @@ -0,0 +1,3 @@ +.googleBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Google/index.ts b/src/shared/components/Icons/Google/index.ts new file mode 100644 index 0000000..839b9fa --- /dev/null +++ b/src/shared/components/Icons/Google/index.ts @@ -0,0 +1 @@ +export { GoogleSvg } from './Google'; diff --git a/src/shared/components/Icons/Gym/Gym.tsx b/src/shared/components/Icons/Gym/Gym.tsx new file mode 100644 index 0000000..070eba8 --- /dev/null +++ b/src/shared/components/Icons/Gym/Gym.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import Gym from "../../../Assets/gym.svg"; + +// Custom css +import classes from "./gym.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const GymSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +GymSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const GymSvgMemo = memo(GymSvg, areEqualShallow); +export { GymSvgMemo as GymSvg }; diff --git a/src/shared/components/Icons/Gym/gym.module.css b/src/shared/components/Icons/Gym/gym.module.css new file mode 100644 index 0000000..a9f468d --- /dev/null +++ b/src/shared/components/Icons/Gym/gym.module.css @@ -0,0 +1,3 @@ +.gymBase { + cursor: pointer; +} \ No newline at end of file diff --git a/src/shared/components/Icons/Gym/index.ts b/src/shared/components/Icons/Gym/index.ts new file mode 100644 index 0000000..d87d8cc --- /dev/null +++ b/src/shared/components/Icons/Gym/index.ts @@ -0,0 +1 @@ +export { GymSvg } from "./Gym"; diff --git a/src/shared/components/Icons/Hallway/Hallway.tsx b/src/shared/components/Icons/Hallway/Hallway.tsx new file mode 100644 index 0000000..9d23149 --- /dev/null +++ b/src/shared/components/Icons/Hallway/Hallway.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import Hallway from "../../../Assets/hallway.svg"; + +// Custom css +import classes from "./hallway.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const HallwaySvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +HallwaySvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const HallwaySvgMemo = memo(HallwaySvg, areEqualShallow); +export { HallwaySvgMemo as HallwaySvg }; diff --git a/src/shared/components/Icons/Hallway/hallway.module.css b/src/shared/components/Icons/Hallway/hallway.module.css new file mode 100644 index 0000000..77d5c8c --- /dev/null +++ b/src/shared/components/Icons/Hallway/hallway.module.css @@ -0,0 +1,3 @@ +.hallwayBase { + cursor: pointer; +} \ No newline at end of file diff --git a/src/shared/components/Icons/Hallway/index.ts b/src/shared/components/Icons/Hallway/index.ts new file mode 100644 index 0000000..500431f --- /dev/null +++ b/src/shared/components/Icons/Hallway/index.ts @@ -0,0 +1 @@ +export { HallwaySvg } from "./Hallway"; diff --git a/src/shared/components/Icons/HamburgerMenu/HamburgerMenu.tsx b/src/shared/components/Icons/HamburgerMenu/HamburgerMenu.tsx new file mode 100644 index 0000000..6322c3b --- /dev/null +++ b/src/shared/components/Icons/HamburgerMenu/HamburgerMenu.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import HamburgerMenu from '../../../Assets/hamburger-menu.svg'; + +// Custom css +import classes from './hamburgerMenu.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const HamburgerMenuSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +HamburgerMenuSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const HamburgerMenuSvgMemo = memo(HamburgerMenuSvg, areEqualShallow); +export { HamburgerMenuSvgMemo as HamburgerMenuSvg }; diff --git a/src/shared/components/Icons/HamburgerMenu/hamburgerMenu.module.css b/src/shared/components/Icons/HamburgerMenu/hamburgerMenu.module.css new file mode 100644 index 0000000..c9c3b08 --- /dev/null +++ b/src/shared/components/Icons/HamburgerMenu/hamburgerMenu.module.css @@ -0,0 +1,3 @@ +.hamburgerMenuBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/HamburgerMenu/index.ts b/src/shared/components/Icons/HamburgerMenu/index.ts new file mode 100644 index 0000000..4553b69 --- /dev/null +++ b/src/shared/components/Icons/HamburgerMenu/index.ts @@ -0,0 +1 @@ +export { HamburgerMenuSvg } from './HamburgerMenu'; diff --git a/src/shared/components/Icons/Hand/Hand.tsx b/src/shared/components/Icons/Hand/Hand.tsx new file mode 100644 index 0000000..88f570b --- /dev/null +++ b/src/shared/components/Icons/Hand/Hand.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import Hand from "../../../Assets/hand.svg"; + +// Custom css +import classes from "./hand.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const HandSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +HandSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const HandSvgMemo = memo(HandSvg, areEqualShallow); +export { HandSvgMemo as HandSvg }; diff --git a/src/shared/components/Icons/Hand/hand.module.css b/src/shared/components/Icons/Hand/hand.module.css new file mode 100644 index 0000000..923d843 --- /dev/null +++ b/src/shared/components/Icons/Hand/hand.module.css @@ -0,0 +1,3 @@ +.handBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Hand/index.ts b/src/shared/components/Icons/Hand/index.ts new file mode 100644 index 0000000..e5d1a3f --- /dev/null +++ b/src/shared/components/Icons/Hand/index.ts @@ -0,0 +1 @@ +export { HandSvg } from "./Hand"; diff --git a/src/shared/components/Icons/Highrise/Highrise.tsx b/src/shared/components/Icons/Highrise/Highrise.tsx new file mode 100644 index 0000000..247014c --- /dev/null +++ b/src/shared/components/Icons/Highrise/Highrise.tsx @@ -0,0 +1,51 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import Highrise from '../../../Assets/highrise.svg'; +import HighriseSmall from '../../../Assets/highrise-small.svg'; + +import classes from './highrise.module.css'; + +interface Props { + id?: string; + className?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const HighriseSvg = ({ id, className, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case 'highrisesmall': + return ( + + ); + default: + return ( + + ); + } +}; + +HighriseSvg.defaultProps = { + id: undefined, + className: undefined, + iconType: 'highrise', + onClick: undefined, + onKeyUp: undefined, +}; + +const HighriseSvgMemo = memo(HighriseSvg, areEqual); + +export { HighriseSvgMemo as HighriseSvg }; diff --git a/src/shared/components/Icons/Highrise/highrise.module.css b/src/shared/components/Icons/Highrise/highrise.module.css new file mode 100644 index 0000000..ff44382 --- /dev/null +++ b/src/shared/components/Icons/Highrise/highrise.module.css @@ -0,0 +1,3 @@ +.highriseBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Highrise/index.ts b/src/shared/components/Icons/Highrise/index.ts new file mode 100644 index 0000000..32c0dc8 --- /dev/null +++ b/src/shared/components/Icons/Highrise/index.ts @@ -0,0 +1 @@ +export { HighriseSvg } from './Highrise'; diff --git a/src/shared/components/Icons/Icon.tsx b/src/shared/components/Icons/Icon.tsx new file mode 100644 index 0000000..978378f --- /dev/null +++ b/src/shared/components/Icons/Icon.tsx @@ -0,0 +1,356 @@ +import React, { memo, useEffect, useState } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { FilterSvg } from 'Components/Icons/Filter'; +import { CaretUpSvg } from 'Components/Icons/CaretUp'; +import { CaretDownSvg } from 'Components/Icons/CaretDown/CaretDown'; +import { ArrowLeftSvg } from 'Components/Icons/ArrowLeft'; +import { TrashSvg } from 'Components/Icons/Trash'; +import { CarouselControllerSvg } from 'Components/Icons/CarouselController'; +import { SupportSvg } from 'Components/Icons/Support'; +import { HighriseSvg } from 'Components/Icons/Highrise'; +import { ChevronIconsSvg } from 'Components/Icons/ChevronIcons'; +import { DownloadSvg } from 'Components/Icons/Download'; +import { BookmarkSvg } from 'Components/Icons/Bookmark'; +import { SearchSvg } from 'Components/Icons/Search'; +import { CircleSvg } from 'Components/Icons/Circle'; +import { MobileAppSvg } from 'Components/Icons/MobileApp'; +import { CrewSvg } from 'Components/Icons/Crew'; +import { CommercialSvg } from 'Components/Icons/Commercial'; +import { SquareSvg } from 'Components/Icons/Square'; +import { DotSvg } from 'Components/Icons/Dot'; +import { ReportsTypeSvg } from 'Components/Icons/ReportsType'; +import { RadioSvg } from 'Components/Icons/Radio'; +import { AddressBuildingSvg } from './AddressBuilding'; +import { PhoneSvg } from './Phone'; +import { CompanyArrowSvg } from './CompanyArrow'; +import { CubeSvg } from './Cube'; +import { CubePlusSvg } from './CubePlus'; +import { CubePlusLgSvg } from './CubePlusLarge'; +import { PersonSvg } from './Person'; +import { HamburgerMenuSvg } from './HamburgerMenu'; +import { SideBarCloseSvg } from './SideBarClose'; +import { EyeClosedSvg } from './EyeClosed'; +import { EyeSvg } from './Eye'; +import { DropzoneBackgroundSvg } from './DropzoneBackground'; +import { ModalCloseSvg } from './ModalClose'; +import { LogoSvg } from './Logo'; +import { SmsSvg } from './Sms'; +import { EmailSvg } from './Email'; +import { AppleSvg } from './Apple'; +import { FacebookSvg } from './Facebook'; +import { GoogleSvg } from './Google'; +import { CloseSvg } from './Close'; +import { CloseCircleSvg } from './CloseCircle'; +import { SideBarLeftArrowSvg } from './SideBarLeftArrow'; +import { SideBarRightArrowSvg } from './SideBarRightArrow'; +import { DropdownArrowSvg } from './DropdownArrow'; +import { FunnelSvg } from './Funnel'; +import { LogoIconSvg } from './LogoIcon'; +import { DashboardSvg } from './Dashboard'; +import { ProjectsSvg } from './Projects'; +import { PeopleSvg, PeoplePinkSvg } from './People'; +import { ThreeDotsSvg } from './ThreeDots'; +import { PlusSvg } from './Plus'; +import { RocketEmblemSvg } from './RocketEmblem'; +import { SingleHomeSvg } from './SingleHome'; +import { HandSvg } from './Hand'; +import { BathRoomSvg } from './BathRoom'; +import { BedRoomSvg } from './BedRoom'; +import { DenSvg } from './Den'; +import { DiningRoomSvg } from './DiningRoom'; +import { EnsuiteSvg } from './Ensuite'; +import { KitchenSvg } from './Kitchen'; +import { LaundrySvg } from './Laundry'; +import { LivingRoomSvg } from './LivingRoom'; +import { UnitSvg } from './Unit'; +import { FloorSvg } from './Floor'; +import { HallwaySvg } from './Hallway'; +import { StairwaySvg } from './Stairway'; +import { ElevatorSvg } from './Elevator'; +import { LobbySvg } from './Lobby'; +import { StorageSvg } from './Storage'; +import { GymSvg } from './Gym'; +import { ElectricalRoomSvg } from './ElectricalRoom'; +import { ActionsDefaultSvg } from './ActionsDefault'; +import { ActionsPurpleSvg } from './ActionsPurple'; +import { PhotoShareSvg } from './PhotoShare'; +import { LogoMobileSvg } from './LogoMobile'; +import { WelcomeAboardSvg } from './WelcomeAboard'; +import { NoCompanySvg } from './NoCompany'; +import { PinSvg } from './Pin'; +import { PinActiveSvg } from './PinActive'; +import { NotFoundSvg } from './NotFound'; +import { EmployeePhoneSvg } from './EmployeePhone'; +import { LinkSvg } from './Link'; +import { CopySvg } from './Copy'; +import { CustomRoomSvg } from './CustomRoom'; +import { AddButtonSvg } from './AddButton'; +import { EditSvg } from './Edit'; +import { CheckedMarkSvg } from './CheckedMark'; +import { ConfirmCheckedSvg } from './ConfirmChecked'; +import { ReceptionSvg } from './Reception'; +import { OfficeSvg } from './Office'; +import { PrivateOfficeSvg } from './PrivateOffice'; +import { MeetingRoomSvg } from './MeetingRoom'; +import { MaintenanceRoomSvg } from './MaintenanceRoom'; +import { LunchRoomSvg } from './LunchRoom'; +import { LinkOpenSvg } from './LinkOpen'; +import { FlagSvg } from './Flag'; +import { PhotoNoteSvg } from './PhotoNote'; +import { OfficeBuildingSvg } from './OfficeBuilding'; +import { CountryFlagSvg } from './CountryFlag'; +import { PhotoBookmarkSvg } from './PhotoBookmark'; +import { PhotoFlagSvg } from './PhotoFlag'; +import { BasementSvg, CompassSvg, GarageSvg, PlazaSvg, PoolSvg, RoofSvg, ShopSvg, UtilityRoomSvg } from './RoomTypes'; +import { MultiUnitSvg } from './MultiUnit'; +import { ExteriorSvg } from './Exterior'; +import { GalleryPlaceholderSvg } from './GalleryPlaceholder'; +import { ShareSvg } from './Share'; +import { LandScapeSvg } from './LandScape'; +import { CheckboxSvg } from './Checkbox'; +import { InfoSvg } from './Info'; +import { EquipmentSvg } from './Equipment'; +import { MoistureSvg } from './Moisture'; +import { DehumidifierSvg } from './Dehumidifier'; +import { AirMoverSvg } from './AirMover'; +import { DryingMatSvg } from './DryingMat'; +import { AirScrubberSvg } from './AirScrubber'; +import { InjectDryerSvg } from './InjectDryer'; + +interface Props { + type: string; + id?: string; + className?: string; + fill?: string; + events?: any; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const getIcon = (type, className, id, fill, onClick, onKeyUp) => { + const icons = { + logo: , + logoicon: , + logomobile: , + sms: , + email: , + apple: , + facebook: , + google: , + close: , + closeplainsm: , + closecircle: , + sidebarleftarrow: , + sidebarrightarrow: , + dropdownarrow: , + funnel: , + dashboard: , + projects: , + phone: , + plus: , + person: , + personpurple: , + people: , + peoplepink: , + peoplepinksmall: , + threedots: , + addressbuilding: , + companyarrow: , + hamburgermenu: , + sidebarclose: , + eye: , + eyeclosed: , + cube: , + cubeplus: , + cubepluslg: , + hand: , + bathroom: , // to be removed + bedroom: , // to be removed + masterbedroom: , // to be removed + den: , // to be removed + diningroom: , // to be removed + ensuite: , // to be removed + kitchen: , // to be removed + walkway: , // to be removed + laundry: , // to be removed + livingroom: , // to be removed + dropzonebackground: , + singlehome: , + singlehomesm: , + highrise: , + highrisesmall: , + modalclose: , + multiunit: , + filter: , + caretup: , + caretdown: , + unit: , + unitsm: , + unitlg: , + unitadd: , + floor: , + floorsm: , + flooradd: , + rocketemblem: , + rocketemblemtwo: , + rocketemblemthree: , + rocketemblemsmall: , + trash: , + trashsm: , + trashsmdisabled: , + trashsmdark: , + trashphoto: , + trashmd: , + arrowleft: , + hallway: , // to be removed + stairway: , // to be removed + elevator: , // to be removed + lobby: , // to be removed + storage: , // to be removed + bay: , // to be removed + mailroom: , // to be removed + gym: , // to be removed + electricalroom: , // to be removed + actionsdefault: , + actionspurple: , + photoshareerror: , + photoshare: , + welcomeaboard: , + nocompany: , + pin: , + pinactive: , + notfound: , + employeephone: , + link: , + copy: , + edit: , + editsm: , + editmd: , + confirm: , + confirmsm: , + confirmpurple: , + checkmark: , + checkmarkpurplebg: , + reception: , // to be removed + office: , // to be removed + privateoffice: , // to be removed + meetingroom: , // to be removed + maintenanceroom: , // to be removed + lunchroom: , // to be removed + barbequearea: , // to be removed + flag: , + flagpurple: , + flagoutlinepurple: , + flagphoto: , + flaggedphoto: , + customroom: , // to be removed + addbutton: , + addbuttonsm: , + usa: , + canada: , + uk: , + nz: , + aus: , + pool: , // to be removed + garage: , // to be removed + parkinggarage: , // to be removed + shed: , // to be removed + basement: , // to be removed + machineroom: , // to be removed + shop: , // to be removed + storefront: , // to be removed + utilityroom: , // to be removed + plaza: , // to be removed + courtyard: , // to be removed + roof: , // to be removed + rooftop: , // to be removed + northfacing: , // to be removed + southfacing: , // to be removed + eastfacing: , // to be removed + westfacing: , // to be removed + carouselcontrollernext: ( + + ), + carouselcontrollerprev: ( + + ), + support: , + chevronprevious: , + chevronnext: , + download: , + downloadpurple: , + linkopen: , + photonote: , + photoflag: , + photobookmark: , + bookmark: , + bookmarkpurple: , + bookmarkoutlinepurple: ( + + ), + bookmarkphoto: , + bookmarkedphoto: ( + + ), + officebuilding: , + exterior: , + exterioradd: , + mobileapp: , + crew: , + search: , + circle: , + circle16: , + commercial: , + galleryplaceholder: , + share: , + share32: , + landscape: , + checkbox: , + square: , + dot: , + reportscompact: , + reportsexpanded: , + reportslarge: , + radio: , + info: , + equipment: , + moisture: , + dehumidifier: , + airmover: , + dryingmat: , + airscrubber: , + injectdryer: , + }; + + // return null to avoid errors in case if the icon type is not present in the icons list + return icons[type] || null; +}; + +const Icon = ({ className, id, fill = '', onClick, onKeyUp, type }: Props) => { + const [icon, setIcon] = useState(null); + + useEffect(() => { + if (type) { + // Remove all white space from the string, with the regex + const iconType = type.toLocaleLowerCase().replace(/\s+/g, ''); + + // set the icon based on icon type change, useful for conditional icon renderings + setIcon(getIcon(iconType, className, id, fill, onClick, onKeyUp)); + } + }, [type, className]); + + return icon; +}; + +Icon.defaultProps = { + id: undefined, + className: undefined, + fill: undefined, + events: undefined, +}; + +const IconMemo = memo(Icon, areEqual); + +export { IconMemo as Icon }; diff --git a/src/shared/components/Icons/Info/Info.tsx b/src/shared/components/Icons/Info/Info.tsx new file mode 100644 index 0000000..352f293 --- /dev/null +++ b/src/shared/components/Icons/Info/Info.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Info from '../../../Assets/info.svg'; + +// Custom css +import classes from './info.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const InfoSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +InfoSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const InfoSvgMemo = memo(InfoSvg, areEqualShallow); +export { InfoSvgMemo as InfoSvg }; diff --git a/src/shared/components/Icons/Info/index.ts b/src/shared/components/Icons/Info/index.ts new file mode 100644 index 0000000..84eb9ab --- /dev/null +++ b/src/shared/components/Icons/Info/index.ts @@ -0,0 +1 @@ +export { InfoSvg } from './Info'; diff --git a/src/shared/components/Icons/Info/info.module.css b/src/shared/components/Icons/Info/info.module.css new file mode 100644 index 0000000..7a9a690 --- /dev/null +++ b/src/shared/components/Icons/Info/info.module.css @@ -0,0 +1,4 @@ +.iconBase { + cursor: pointer; + pointer-events: none; +} diff --git a/src/shared/components/Icons/InjectDryer/InjectDryer.tsx b/src/shared/components/Icons/InjectDryer/InjectDryer.tsx new file mode 100644 index 0000000..9e7eefb --- /dev/null +++ b/src/shared/components/Icons/InjectDryer/InjectDryer.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import InjectDryer from '../../../Assets/inject-dryer.svg'; + +// Custom css +import classes from './injectDryer.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const InjectDryerSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +InjectDryerSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const InjectDryerSvgMemo = memo(InjectDryerSvg, areEqualShallow); +export { InjectDryerSvgMemo as InjectDryerSvg }; diff --git a/src/shared/components/Icons/InjectDryer/index.ts b/src/shared/components/Icons/InjectDryer/index.ts new file mode 100644 index 0000000..66d032f --- /dev/null +++ b/src/shared/components/Icons/InjectDryer/index.ts @@ -0,0 +1 @@ +export { InjectDryerSvg } from './InjectDryer'; diff --git a/src/shared/components/Icons/InjectDryer/injectDryer.module.css b/src/shared/components/Icons/InjectDryer/injectDryer.module.css new file mode 100644 index 0000000..59dc780 --- /dev/null +++ b/src/shared/components/Icons/InjectDryer/injectDryer.module.css @@ -0,0 +1,3 @@ +.injectDryerBase { + cursor: default; +} \ No newline at end of file diff --git a/src/shared/components/Icons/Kitchen/Kitchen.tsx b/src/shared/components/Icons/Kitchen/Kitchen.tsx new file mode 100644 index 0000000..f76abdf --- /dev/null +++ b/src/shared/components/Icons/Kitchen/Kitchen.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import Kitchen from "../../../Assets/kitchen.svg"; + +// Custom css +import classes from "./kitchen.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const KitchenSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +KitchenSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const KitchenSvgMemo = memo(KitchenSvg, areEqualShallow); +export { KitchenSvgMemo as KitchenSvg }; diff --git a/src/shared/components/Icons/Kitchen/index.ts b/src/shared/components/Icons/Kitchen/index.ts new file mode 100644 index 0000000..80bd9ce --- /dev/null +++ b/src/shared/components/Icons/Kitchen/index.ts @@ -0,0 +1 @@ +export { KitchenSvg } from "./Kitchen"; diff --git a/src/shared/components/Icons/Kitchen/kitchen.module.css b/src/shared/components/Icons/Kitchen/kitchen.module.css new file mode 100644 index 0000000..c6a9e52 --- /dev/null +++ b/src/shared/components/Icons/Kitchen/kitchen.module.css @@ -0,0 +1,3 @@ +.kitchenBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/LandScape/LandScape.tsx b/src/shared/components/Icons/LandScape/LandScape.tsx new file mode 100644 index 0000000..7c184a6 --- /dev/null +++ b/src/shared/components/Icons/LandScape/LandScape.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import LandScape from '../../../Assets/landscape.svg'; + +import classes from './landscape.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const LandScapeSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +LandScapeSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const LandScapeSvgMemo = memo(LandScapeSvg, areEqualShallow); +export { LandScapeSvgMemo as LandScapeSvg }; diff --git a/src/shared/components/Icons/LandScape/index.ts b/src/shared/components/Icons/LandScape/index.ts new file mode 100644 index 0000000..bcdff72 --- /dev/null +++ b/src/shared/components/Icons/LandScape/index.ts @@ -0,0 +1 @@ +export { LandScapeSvg } from './LandScape'; diff --git a/src/shared/components/Icons/LandScape/landscape.module.css b/src/shared/components/Icons/LandScape/landscape.module.css new file mode 100644 index 0000000..e69de29 diff --git a/src/shared/components/Icons/Laundry/Laundry.tsx b/src/shared/components/Icons/Laundry/Laundry.tsx new file mode 100644 index 0000000..d78374c --- /dev/null +++ b/src/shared/components/Icons/Laundry/Laundry.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import Laundry from "../../../Assets/laundry.svg"; + +// Custom css +import classes from "./laundry.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const LaundrySvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +LaundrySvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const LaundrySvgMemo = memo(LaundrySvg, areEqualShallow); +export { LaundrySvgMemo as LaundrySvg }; diff --git a/src/shared/components/Icons/Laundry/index.ts b/src/shared/components/Icons/Laundry/index.ts new file mode 100644 index 0000000..bd71a77 --- /dev/null +++ b/src/shared/components/Icons/Laundry/index.ts @@ -0,0 +1 @@ +export { LaundrySvg } from "./Laundry"; diff --git a/src/shared/components/Icons/Laundry/laundry.module.css b/src/shared/components/Icons/Laundry/laundry.module.css new file mode 100644 index 0000000..a5587c1 --- /dev/null +++ b/src/shared/components/Icons/Laundry/laundry.module.css @@ -0,0 +1,3 @@ +.laundryBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Link/Link.tsx b/src/shared/components/Icons/Link/Link.tsx new file mode 100644 index 0000000..607898c --- /dev/null +++ b/src/shared/components/Icons/Link/Link.tsx @@ -0,0 +1,24 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Link from '../../../Assets/link.svg'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const LinkSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +LinkSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const LinkSvgMemo = memo(LinkSvg, areEqualShallow); +export { LinkSvgMemo as LinkSvg }; diff --git a/src/shared/components/Icons/Link/index.ts b/src/shared/components/Icons/Link/index.ts new file mode 100644 index 0000000..471141c --- /dev/null +++ b/src/shared/components/Icons/Link/index.ts @@ -0,0 +1 @@ +export { LinkSvg } from './Link'; diff --git a/src/shared/components/Icons/LinkOpen/LinkOpen.tsx b/src/shared/components/Icons/LinkOpen/LinkOpen.tsx new file mode 100644 index 0000000..3a4889c --- /dev/null +++ b/src/shared/components/Icons/LinkOpen/LinkOpen.tsx @@ -0,0 +1,26 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import LinkOpen from '../../../Assets/link-open.svg'; + +import classes from './linkOpen.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const LinkOpenSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +LinkOpenSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const LinkOpenSvgMemo = memo(LinkOpenSvg, areEqualShallow); +export { LinkOpenSvgMemo as LinkOpenSvg }; diff --git a/src/shared/components/Icons/LinkOpen/index.ts b/src/shared/components/Icons/LinkOpen/index.ts new file mode 100644 index 0000000..cbbef10 --- /dev/null +++ b/src/shared/components/Icons/LinkOpen/index.ts @@ -0,0 +1 @@ +export { LinkOpenSvg } from './LinkOpen'; diff --git a/src/shared/components/Icons/LinkOpen/linkOpen.module.css b/src/shared/components/Icons/LinkOpen/linkOpen.module.css new file mode 100644 index 0000000..b363ede --- /dev/null +++ b/src/shared/components/Icons/LinkOpen/linkOpen.module.css @@ -0,0 +1,3 @@ +.linkOpenBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/LivingRoom/LivingRoom.tsx b/src/shared/components/Icons/LivingRoom/LivingRoom.tsx new file mode 100644 index 0000000..69b6948 --- /dev/null +++ b/src/shared/components/Icons/LivingRoom/LivingRoom.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import LivingRoom from "../../../Assets/living-room.svg"; + +// Custom css +import classes from "./livingRoom.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const LivingRoomSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +LivingRoomSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const LivingRoomSvgMemo = memo(LivingRoomSvg, areEqualShallow); +export { LivingRoomSvgMemo as LivingRoomSvg }; diff --git a/src/shared/components/Icons/LivingRoom/index.ts b/src/shared/components/Icons/LivingRoom/index.ts new file mode 100644 index 0000000..99f99d9 --- /dev/null +++ b/src/shared/components/Icons/LivingRoom/index.ts @@ -0,0 +1 @@ +export { LivingRoomSvg } from "./LivingRoom"; diff --git a/src/shared/components/Icons/LivingRoom/livingRoom.module.css b/src/shared/components/Icons/LivingRoom/livingRoom.module.css new file mode 100644 index 0000000..52bafa7 --- /dev/null +++ b/src/shared/components/Icons/LivingRoom/livingRoom.module.css @@ -0,0 +1,3 @@ +.livingRoomBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Lobby/Lobby.tsx b/src/shared/components/Icons/Lobby/Lobby.tsx new file mode 100644 index 0000000..25dab44 --- /dev/null +++ b/src/shared/components/Icons/Lobby/Lobby.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import Lobby from "../../../Assets/lobby.svg"; + +// Custom css +import classes from "./lobby.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const LobbySvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +LobbySvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const LobbySvgMemo = memo(LobbySvg, areEqualShallow); +export { LobbySvgMemo as LobbySvg }; diff --git a/src/shared/components/Icons/Lobby/index.ts b/src/shared/components/Icons/Lobby/index.ts new file mode 100644 index 0000000..9ccf4b2 --- /dev/null +++ b/src/shared/components/Icons/Lobby/index.ts @@ -0,0 +1 @@ +export { LobbySvg } from "./Lobby"; diff --git a/src/shared/components/Icons/Lobby/lobby.module.css b/src/shared/components/Icons/Lobby/lobby.module.css new file mode 100644 index 0000000..5ae9a47 --- /dev/null +++ b/src/shared/components/Icons/Lobby/lobby.module.css @@ -0,0 +1,3 @@ +.lobbyBase { + cursor: pointer; +} \ No newline at end of file diff --git a/src/shared/components/Icons/Logo/Logo.tsx b/src/shared/components/Icons/Logo/Logo.tsx new file mode 100644 index 0000000..c906ef9 --- /dev/null +++ b/src/shared/components/Icons/Logo/Logo.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Logo from '../../../Assets/logo.svg'; + +// Custom css +import classes from './logo.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const LogoSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +LogoSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const LogoSvgMemo = memo(LogoSvg, areEqualShallow); +export { LogoSvgMemo as LogoSvg }; diff --git a/src/shared/components/Icons/Logo/index.ts b/src/shared/components/Icons/Logo/index.ts new file mode 100644 index 0000000..6071aa0 --- /dev/null +++ b/src/shared/components/Icons/Logo/index.ts @@ -0,0 +1 @@ +export { LogoSvg } from './Logo'; diff --git a/src/shared/components/Icons/Logo/logo.module.css b/src/shared/components/Icons/Logo/logo.module.css new file mode 100644 index 0000000..8d666f5 --- /dev/null +++ b/src/shared/components/Icons/Logo/logo.module.css @@ -0,0 +1,3 @@ +.logoBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/LogoIcon/LogoIcon.tsx b/src/shared/components/Icons/LogoIcon/LogoIcon.tsx new file mode 100644 index 0000000..ff2c4a8 --- /dev/null +++ b/src/shared/components/Icons/LogoIcon/LogoIcon.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import LogoIcon from '../../../Assets/logo-icon.svg'; + +// Custom css +import classes from './logoIcon.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const LogoIconSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +LogoIconSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const LogoIconSvgMemo = memo(LogoIconSvg, areEqualShallow); +export { LogoIconSvgMemo as LogoIconSvg }; diff --git a/src/shared/components/Icons/LogoIcon/index.ts b/src/shared/components/Icons/LogoIcon/index.ts new file mode 100644 index 0000000..477995e --- /dev/null +++ b/src/shared/components/Icons/LogoIcon/index.ts @@ -0,0 +1 @@ +export { LogoIconSvg } from './LogoIcon'; diff --git a/src/shared/components/Icons/LogoIcon/logoIcon.module.css b/src/shared/components/Icons/LogoIcon/logoIcon.module.css new file mode 100644 index 0000000..ab91373 --- /dev/null +++ b/src/shared/components/Icons/LogoIcon/logoIcon.module.css @@ -0,0 +1,3 @@ +.logoIconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/LogoMobile/LogoMobile.tsx b/src/shared/components/Icons/LogoMobile/LogoMobile.tsx new file mode 100644 index 0000000..0be67cd --- /dev/null +++ b/src/shared/components/Icons/LogoMobile/LogoMobile.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import LogoMobile from "../../../Assets/logo-mobile.svg"; + +// Custom css +import classes from "./logoMobile.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const LogoMobileSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +LogoMobileSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const LogoMobileSvgMemo = memo(LogoMobileSvg, areEqualShallow); +export { LogoMobileSvgMemo as LogoMobileSvg }; diff --git a/src/shared/components/Icons/LogoMobile/index.ts b/src/shared/components/Icons/LogoMobile/index.ts new file mode 100644 index 0000000..6e47ba2 --- /dev/null +++ b/src/shared/components/Icons/LogoMobile/index.ts @@ -0,0 +1 @@ +export { LogoMobileSvg } from "./LogoMobile"; diff --git a/src/shared/components/Icons/LogoMobile/logoMobile.module.css b/src/shared/components/Icons/LogoMobile/logoMobile.module.css new file mode 100644 index 0000000..f43c2c4 --- /dev/null +++ b/src/shared/components/Icons/LogoMobile/logoMobile.module.css @@ -0,0 +1,3 @@ +.logoMobileBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/LunchRoom/LunchRoom.tsx b/src/shared/components/Icons/LunchRoom/LunchRoom.tsx new file mode 100644 index 0000000..19c288b --- /dev/null +++ b/src/shared/components/Icons/LunchRoom/LunchRoom.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import LunchRoom from '../../../Assets/lunchroom.svg'; + +// Custom css +import classes from './lunchRoom.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const LunchRoomSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +LunchRoomSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const LunchRoomSvgMemo = memo(LunchRoomSvg, areEqualShallow); +export { LunchRoomSvgMemo as LunchRoomSvg }; diff --git a/src/shared/components/Icons/LunchRoom/index.ts b/src/shared/components/Icons/LunchRoom/index.ts new file mode 100644 index 0000000..3c3693f --- /dev/null +++ b/src/shared/components/Icons/LunchRoom/index.ts @@ -0,0 +1 @@ +export { LunchRoomSvg } from './LunchRoom'; diff --git a/src/shared/components/Icons/LunchRoom/lunchRoom.module.css b/src/shared/components/Icons/LunchRoom/lunchRoom.module.css new file mode 100644 index 0000000..5780465 --- /dev/null +++ b/src/shared/components/Icons/LunchRoom/lunchRoom.module.css @@ -0,0 +1,3 @@ +.lunchRoomBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/MaintenanceRoom/MaintenanceRoom.tsx b/src/shared/components/Icons/MaintenanceRoom/MaintenanceRoom.tsx new file mode 100644 index 0000000..e6c9561 --- /dev/null +++ b/src/shared/components/Icons/MaintenanceRoom/MaintenanceRoom.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import MaintenanceRoom from '../../../Assets/maintenance-room.svg'; + +// Custom css +import classes from './maintenanceRoom.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const MaintenanceRoomSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +MaintenanceRoomSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const MaintenanceRoomSvgMemo = memo(MaintenanceRoomSvg, areEqualShallow); +export { MaintenanceRoomSvgMemo as MaintenanceRoomSvg }; diff --git a/src/shared/components/Icons/MaintenanceRoom/index.ts b/src/shared/components/Icons/MaintenanceRoom/index.ts new file mode 100644 index 0000000..d869256 --- /dev/null +++ b/src/shared/components/Icons/MaintenanceRoom/index.ts @@ -0,0 +1 @@ +export { MaintenanceRoomSvg } from './MaintenanceRoom'; diff --git a/src/shared/components/Icons/MaintenanceRoom/maintenanceRoom.module.css b/src/shared/components/Icons/MaintenanceRoom/maintenanceRoom.module.css new file mode 100644 index 0000000..5ad9552 --- /dev/null +++ b/src/shared/components/Icons/MaintenanceRoom/maintenanceRoom.module.css @@ -0,0 +1,3 @@ +.maintenanceRoomBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/MeetingRoom/MeetingRoom.tsx b/src/shared/components/Icons/MeetingRoom/MeetingRoom.tsx new file mode 100644 index 0000000..8495eb1 --- /dev/null +++ b/src/shared/components/Icons/MeetingRoom/MeetingRoom.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import MeetingRoom from '../../../Assets/meeting-room.svg'; + +// Custom css +import classes from './meetingRoom.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const MeetingRoomSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +MeetingRoomSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const MeetingRoomSvgMemo = memo(MeetingRoomSvg, areEqualShallow); +export { MeetingRoomSvgMemo as MeetingRoomSvg }; diff --git a/src/shared/components/Icons/MeetingRoom/index.ts b/src/shared/components/Icons/MeetingRoom/index.ts new file mode 100644 index 0000000..12ce3e0 --- /dev/null +++ b/src/shared/components/Icons/MeetingRoom/index.ts @@ -0,0 +1 @@ +export { MeetingRoomSvg } from './MeetingRoom'; diff --git a/src/shared/components/Icons/MeetingRoom/meetingRoom.module.css b/src/shared/components/Icons/MeetingRoom/meetingRoom.module.css new file mode 100644 index 0000000..acf3d7d --- /dev/null +++ b/src/shared/components/Icons/MeetingRoom/meetingRoom.module.css @@ -0,0 +1,3 @@ +.meetingRoomBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/MobileApp/MobileApp.tsx b/src/shared/components/Icons/MobileApp/MobileApp.tsx new file mode 100644 index 0000000..d2b810a --- /dev/null +++ b/src/shared/components/Icons/MobileApp/MobileApp.tsx @@ -0,0 +1,24 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import MobileApp from '../../../Assets/mobile-app-icon.svg'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const MobileAppSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +MobileAppSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const MobileAppSvgMemo = memo(MobileAppSvg, areEqualShallow); +export { MobileAppSvgMemo as MobileAppSvg }; diff --git a/src/shared/components/Icons/MobileApp/index.ts b/src/shared/components/Icons/MobileApp/index.ts new file mode 100644 index 0000000..b78e805 --- /dev/null +++ b/src/shared/components/Icons/MobileApp/index.ts @@ -0,0 +1 @@ +export { MobileAppSvg } from './MobileApp'; diff --git a/src/shared/components/Icons/ModalClose/ModalClose.tsx b/src/shared/components/Icons/ModalClose/ModalClose.tsx new file mode 100644 index 0000000..eff4c9b --- /dev/null +++ b/src/shared/components/Icons/ModalClose/ModalClose.tsx @@ -0,0 +1,28 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import ModalClose from "../../../Assets/modal-close.svg"; + +// Custom css +import classes from "./modalClose.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const ModalCloseSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +ModalCloseSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ModalCloseSvgMemo = memo(ModalCloseSvg, areEqualShallow); +export { ModalCloseSvgMemo as ModalCloseSvg }; diff --git a/src/shared/components/Icons/ModalClose/index.ts b/src/shared/components/Icons/ModalClose/index.ts new file mode 100644 index 0000000..8bc96fa --- /dev/null +++ b/src/shared/components/Icons/ModalClose/index.ts @@ -0,0 +1 @@ +export { ModalCloseSvg } from "./ModalClose"; diff --git a/src/shared/components/Icons/ModalClose/modalClose.module.css b/src/shared/components/Icons/ModalClose/modalClose.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/ModalClose/modalClose.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Moisture/Moisture.tsx b/src/shared/components/Icons/Moisture/Moisture.tsx new file mode 100644 index 0000000..8516b9c --- /dev/null +++ b/src/shared/components/Icons/Moisture/Moisture.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Moisture from '../../../Assets/moisture-log.svg'; + +// Custom css +import classes from './moisture.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const MoistureSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +MoistureSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const MoistureSvgMemo = memo(MoistureSvg, areEqualShallow); +export { MoistureSvgMemo as MoistureSvg }; diff --git a/src/shared/components/Icons/Moisture/index.ts b/src/shared/components/Icons/Moisture/index.ts new file mode 100644 index 0000000..c9e314e --- /dev/null +++ b/src/shared/components/Icons/Moisture/index.ts @@ -0,0 +1 @@ +export { MoistureSvg } from './Moisture'; diff --git a/src/shared/components/Icons/Moisture/moisture.module.css b/src/shared/components/Icons/Moisture/moisture.module.css new file mode 100644 index 0000000..330826e --- /dev/null +++ b/src/shared/components/Icons/Moisture/moisture.module.css @@ -0,0 +1,3 @@ +.moistureBase { + cursor: pointer; +} \ No newline at end of file diff --git a/src/shared/components/Icons/MultiUnit/MultiUnit.tsx b/src/shared/components/Icons/MultiUnit/MultiUnit.tsx new file mode 100644 index 0000000..fd6c754 --- /dev/null +++ b/src/shared/components/Icons/MultiUnit/MultiUnit.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import MultiUnit from '../../../Assets/multiunit-lg.svg'; + +// Custom css +import classes from './multiunit.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const MultiUnitSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +MultiUnitSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const MultiUnitSvgMemo = memo(MultiUnitSvg, areEqualShallow); +export { MultiUnitSvgMemo as MultiUnitSvg }; diff --git a/src/shared/components/Icons/MultiUnit/index.ts b/src/shared/components/Icons/MultiUnit/index.ts new file mode 100644 index 0000000..b48e61c --- /dev/null +++ b/src/shared/components/Icons/MultiUnit/index.ts @@ -0,0 +1 @@ +export { MultiUnitSvg } from './MultiUnit'; diff --git a/src/shared/components/Icons/MultiUnit/multiunit.module.css b/src/shared/components/Icons/MultiUnit/multiunit.module.css new file mode 100644 index 0000000..b8bca37 --- /dev/null +++ b/src/shared/components/Icons/MultiUnit/multiunit.module.css @@ -0,0 +1,4 @@ +.multiunitBase { + cursor: pointer; + height: 82px; +} diff --git a/src/shared/components/Icons/NoCompany/NoCompany.tsx b/src/shared/components/Icons/NoCompany/NoCompany.tsx new file mode 100644 index 0000000..bd78c92 --- /dev/null +++ b/src/shared/components/Icons/NoCompany/NoCompany.tsx @@ -0,0 +1,18 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import NoCompany from "../../../Assets/no-company.svg"; + +interface Props { + className?: string; + id?: string; +} +const NoCompanySvg = ({ className = "", id }: Props) => ; + +NoCompanySvg.defaultProps = { + className: undefined, + id: undefined, +}; + +const NoCompanySvgMemo = memo(NoCompanySvg, areEqualShallow); +export { NoCompanySvgMemo as NoCompanySvg }; diff --git a/src/shared/components/Icons/NoCompany/index.ts b/src/shared/components/Icons/NoCompany/index.ts new file mode 100644 index 0000000..ab0394e --- /dev/null +++ b/src/shared/components/Icons/NoCompany/index.ts @@ -0,0 +1 @@ +export { NoCompanySvg } from "./NoCompany"; diff --git a/src/shared/components/Icons/NotFound/NotFound.tsx b/src/shared/components/Icons/NotFound/NotFound.tsx new file mode 100644 index 0000000..159b42e --- /dev/null +++ b/src/shared/components/Icons/NotFound/NotFound.tsx @@ -0,0 +1,18 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import NotFound from '../../../Assets/not-found.svg'; + +interface Props { + className?: string; + id?: string; +} +const NotFoundSvg = ({ className = '', id }: Props) => ; + +NotFoundSvg.defaultProps = { + className: undefined, + id: undefined, +}; + +const NotFoundSvgMemo = memo(NotFoundSvg, areEqualShallow); +export { NotFoundSvgMemo as NotFoundSvg }; diff --git a/src/shared/components/Icons/NotFound/index.ts b/src/shared/components/Icons/NotFound/index.ts new file mode 100644 index 0000000..2787944 --- /dev/null +++ b/src/shared/components/Icons/NotFound/index.ts @@ -0,0 +1 @@ +export { NotFoundSvg } from './NotFound'; diff --git a/src/shared/components/Icons/Office/Office.tsx b/src/shared/components/Icons/Office/Office.tsx new file mode 100644 index 0000000..9c2be02 --- /dev/null +++ b/src/shared/components/Icons/Office/Office.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Office from '../../../Assets/office.svg'; + +// Custom css +import classes from './office.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const OfficeSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +OfficeSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const OfficeSvgMemo = memo(OfficeSvg, areEqualShallow); +export { OfficeSvgMemo as OfficeSvg }; diff --git a/src/shared/components/Icons/Office/index.ts b/src/shared/components/Icons/Office/index.ts new file mode 100644 index 0000000..df981af --- /dev/null +++ b/src/shared/components/Icons/Office/index.ts @@ -0,0 +1 @@ +export { OfficeSvg } from './Office'; diff --git a/src/shared/components/Icons/Office/office.module.css b/src/shared/components/Icons/Office/office.module.css new file mode 100644 index 0000000..81f9204 --- /dev/null +++ b/src/shared/components/Icons/Office/office.module.css @@ -0,0 +1,3 @@ +.officeBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/OfficeBuilding/OfficeBuilding.tsx b/src/shared/components/Icons/OfficeBuilding/OfficeBuilding.tsx new file mode 100644 index 0000000..032c8b9 --- /dev/null +++ b/src/shared/components/Icons/OfficeBuilding/OfficeBuilding.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Office from '../../../Assets/office-building.svg'; + +// Custom css +import classes from './officeBuilding.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const OfficeBuildingSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +OfficeBuildingSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const OfficeBuildingSvgMemo = memo(OfficeBuildingSvg, areEqualShallow); +export { OfficeBuildingSvgMemo as OfficeBuildingSvg }; diff --git a/src/shared/components/Icons/OfficeBuilding/index.ts b/src/shared/components/Icons/OfficeBuilding/index.ts new file mode 100644 index 0000000..89665df --- /dev/null +++ b/src/shared/components/Icons/OfficeBuilding/index.ts @@ -0,0 +1 @@ +export { OfficeBuildingSvg } from './OfficeBuilding'; diff --git a/src/shared/components/Icons/OfficeBuilding/officeBuilding.module.css b/src/shared/components/Icons/OfficeBuilding/officeBuilding.module.css new file mode 100644 index 0000000..4cbc6c8 --- /dev/null +++ b/src/shared/components/Icons/OfficeBuilding/officeBuilding.module.css @@ -0,0 +1,3 @@ +.officeBuildingBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/People/People.tsx b/src/shared/components/Icons/People/People.tsx new file mode 100644 index 0000000..23b4783 --- /dev/null +++ b/src/shared/components/Icons/People/People.tsx @@ -0,0 +1,35 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; + +import People from '../../../Assets/people.svg'; + +// Custom css +import classes from './people.module.css'; + +interface Props { + className?: string; + fill: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const PeopleSvg = ({ className = '', fill = '#5B476B', id, onClick, onKeyUp }: Props) => ( + +); + +PeopleSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const PeopleSvgMemo = memo(PeopleSvg, areEqualShallow); +export { PeopleSvgMemo as PeopleSvg }; diff --git a/src/shared/components/Icons/People/PeoplePink/PeoplePink.tsx b/src/shared/components/Icons/People/PeoplePink/PeoplePink.tsx new file mode 100644 index 0000000..7ad755e --- /dev/null +++ b/src/shared/components/Icons/People/PeoplePink/PeoplePink.tsx @@ -0,0 +1,61 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import PeoplePink from '../../../../Assets/people-pink.svg'; +import PeoplePinkSmall from '../../../../Assets/people-pink-small.svg'; +import PeoplePinkMedium from '../../../../Assets/people-pink-medium.svg'; + +// Custom css +import classes from './peoplePink.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; + iconType?: string; +} +const PeoplePinkSvg = ({ className = '', id, onClick, onKeyUp, iconType }: Props) => { + switch (iconType) { + case 'peoplepinksmall': + return ( + + ); + + case 'peoplepinkmedium': + return ( + + ); + + default: + return ( + + ); + } +}; + +PeoplePinkSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, + iconType: 'people', +}; + +const PeoplePinkMemo = memo(PeoplePinkSvg, areEqualShallow); +export { PeoplePinkMemo as PeoplePinkSvg }; diff --git a/src/shared/components/Icons/People/PeoplePink/index.ts b/src/shared/components/Icons/People/PeoplePink/index.ts new file mode 100644 index 0000000..3b7a55b --- /dev/null +++ b/src/shared/components/Icons/People/PeoplePink/index.ts @@ -0,0 +1 @@ +export { PeoplePinkSvg } from './PeoplePink'; diff --git a/src/shared/components/Icons/People/PeoplePink/peoplePink.module.css b/src/shared/components/Icons/People/PeoplePink/peoplePink.module.css new file mode 100644 index 0000000..108e58a --- /dev/null +++ b/src/shared/components/Icons/People/PeoplePink/peoplePink.module.css @@ -0,0 +1,3 @@ +.peoplePinkBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/People/index.ts b/src/shared/components/Icons/People/index.ts new file mode 100644 index 0000000..c557fd7 --- /dev/null +++ b/src/shared/components/Icons/People/index.ts @@ -0,0 +1,2 @@ +export { PeopleSvg } from './People'; +export { PeoplePinkSvg } from './PeoplePink'; diff --git a/src/shared/components/Icons/People/people.module.css b/src/shared/components/Icons/People/people.module.css new file mode 100644 index 0000000..525c079 --- /dev/null +++ b/src/shared/components/Icons/People/people.module.css @@ -0,0 +1,3 @@ +.peopleBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Person/Person.tsx b/src/shared/components/Icons/Person/Person.tsx new file mode 100644 index 0000000..025a4f2 --- /dev/null +++ b/src/shared/components/Icons/Person/Person.tsx @@ -0,0 +1,46 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Person from '../../../Assets/person.svg'; +import PersonPurple from '../../../Assets/person-purple.svg'; + +// Custom css +import classes from './person.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const PersonSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case 'personpurple': + return ( + + ); + default: + return ( + + ); + } +}; + +PersonSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: 'person', + onClick: undefined, + onKeyUp: undefined, +}; + +const PersonSvgMemo = memo(PersonSvg, areEqualShallow); + +export { PersonSvgMemo as PersonSvg }; diff --git a/src/shared/components/Icons/Person/index.ts b/src/shared/components/Icons/Person/index.ts new file mode 100644 index 0000000..3e16d3b --- /dev/null +++ b/src/shared/components/Icons/Person/index.ts @@ -0,0 +1 @@ +export { PersonSvg } from './Person'; diff --git a/src/shared/components/Icons/Person/person.module.css b/src/shared/components/Icons/Person/person.module.css new file mode 100644 index 0000000..bacebb0 --- /dev/null +++ b/src/shared/components/Icons/Person/person.module.css @@ -0,0 +1,3 @@ +.personBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Phone/Phone.tsx b/src/shared/components/Icons/Phone/Phone.tsx new file mode 100644 index 0000000..1be2ec0 --- /dev/null +++ b/src/shared/components/Icons/Phone/Phone.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Phone from '../../../Assets/phone.svg'; + +// Custom css +import classes from './phone.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const PhoneSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +PhoneSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const PhoneSvgMemo = memo(PhoneSvg, areEqualShallow); +export { PhoneSvgMemo as PhoneSvg }; diff --git a/src/shared/components/Icons/Phone/index.ts b/src/shared/components/Icons/Phone/index.ts new file mode 100644 index 0000000..392bff6 --- /dev/null +++ b/src/shared/components/Icons/Phone/index.ts @@ -0,0 +1 @@ +export { PhoneSvg } from './Phone'; diff --git a/src/shared/components/Icons/Phone/phone.module.css b/src/shared/components/Icons/Phone/phone.module.css new file mode 100644 index 0000000..4f86721 --- /dev/null +++ b/src/shared/components/Icons/Phone/phone.module.css @@ -0,0 +1,8 @@ +.phoneBase { + text-decoration: none; + font-style: normal; + font-weight: normal; + font-size: 12.003px; + line-height: 20px; + color: #000000 !important; +} diff --git a/src/shared/components/Icons/PhotoBookmark/PhotoBookmark.tsx b/src/shared/components/Icons/PhotoBookmark/PhotoBookmark.tsx new file mode 100644 index 0000000..919e8b7 --- /dev/null +++ b/src/shared/components/Icons/PhotoBookmark/PhotoBookmark.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import PhotoBookmark from '../../../Assets/photo-bookmark.svg'; + +// Custom css +import classes from './photoBookmark.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const PhotoBookmarkSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +PhotoBookmarkSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const PhotoBookmarkSvgMemo = memo(PhotoBookmarkSvg, areEqualShallow); +export { PhotoBookmarkSvgMemo as PhotoBookmarkSvg }; diff --git a/src/shared/components/Icons/PhotoBookmark/index.ts b/src/shared/components/Icons/PhotoBookmark/index.ts new file mode 100644 index 0000000..f30f657 --- /dev/null +++ b/src/shared/components/Icons/PhotoBookmark/index.ts @@ -0,0 +1 @@ +export { PhotoBookmarkSvg } from './PhotoBookmark'; diff --git a/src/shared/components/Icons/PhotoBookmark/photoBookmark.module.css b/src/shared/components/Icons/PhotoBookmark/photoBookmark.module.css new file mode 100644 index 0000000..2bd6071 --- /dev/null +++ b/src/shared/components/Icons/PhotoBookmark/photoBookmark.module.css @@ -0,0 +1,3 @@ +.photoBookmarkBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/PhotoFlag/PhotoFlag.tsx b/src/shared/components/Icons/PhotoFlag/PhotoFlag.tsx new file mode 100644 index 0000000..cf5b3fd --- /dev/null +++ b/src/shared/components/Icons/PhotoFlag/PhotoFlag.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import PhotoBookmark from '../../../Assets/photo-flag.svg'; + +// Custom css +import classes from './photoFlag.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const PhotoFlagSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +PhotoFlagSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const PhotoFlagSvgMemo = memo(PhotoFlagSvg, areEqualShallow); +export { PhotoFlagSvgMemo as PhotoFlagSvg }; diff --git a/src/shared/components/Icons/PhotoFlag/index.ts b/src/shared/components/Icons/PhotoFlag/index.ts new file mode 100644 index 0000000..2ec8c3b --- /dev/null +++ b/src/shared/components/Icons/PhotoFlag/index.ts @@ -0,0 +1 @@ +export { PhotoFlagSvg } from './PhotoFlag'; diff --git a/src/shared/components/Icons/PhotoFlag/photoFlag.module.css b/src/shared/components/Icons/PhotoFlag/photoFlag.module.css new file mode 100644 index 0000000..94772a3 --- /dev/null +++ b/src/shared/components/Icons/PhotoFlag/photoFlag.module.css @@ -0,0 +1,3 @@ +.photoFlagBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/PhotoNote/PhotoNote.tsx b/src/shared/components/Icons/PhotoNote/PhotoNote.tsx new file mode 100644 index 0000000..af49ab0 --- /dev/null +++ b/src/shared/components/Icons/PhotoNote/PhotoNote.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import PhotoNote from '../../../Assets/photo-note.svg'; + +// Custom css +import classes from './photoNote.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const PhotoNoteSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +PhotoNoteSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const PhotoNoteSvgMemo = memo(PhotoNoteSvg, areEqualShallow); +export { PhotoNoteSvgMemo as PhotoNoteSvg }; diff --git a/src/shared/components/Icons/PhotoNote/index.ts b/src/shared/components/Icons/PhotoNote/index.ts new file mode 100644 index 0000000..a88de1b --- /dev/null +++ b/src/shared/components/Icons/PhotoNote/index.ts @@ -0,0 +1 @@ +export { PhotoNoteSvg } from './PhotoNote'; diff --git a/src/shared/components/Icons/PhotoNote/photoNote.module.css b/src/shared/components/Icons/PhotoNote/photoNote.module.css new file mode 100644 index 0000000..0adedc7 --- /dev/null +++ b/src/shared/components/Icons/PhotoNote/photoNote.module.css @@ -0,0 +1,3 @@ +.photoNoteBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/PhotoShare/PhotoShare.tsx b/src/shared/components/Icons/PhotoShare/PhotoShare.tsx new file mode 100644 index 0000000..e0c7ca2 --- /dev/null +++ b/src/shared/components/Icons/PhotoShare/PhotoShare.tsx @@ -0,0 +1,30 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import PhotoShare from '../../../Assets/photo-share.svg'; +import PhotoShareError from '../../../Assets/photo-share-error.svg'; + +interface Props { + className?: string; + id?: string; + iconType?: string; +} + +const PhotoShareSvg = ({ className = '', id, iconType }: Props) => { + switch (iconType) { + case 'photoshareerror': + return ; + + default: + return ; + } +}; + +PhotoShareSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: 'photoshare', +}; + +const PhotoShareSvgMemo = memo(PhotoShareSvg, areEqualShallow); +export { PhotoShareSvgMemo as PhotoShareSvg }; diff --git a/src/shared/components/Icons/PhotoShare/index.ts b/src/shared/components/Icons/PhotoShare/index.ts new file mode 100644 index 0000000..67451e6 --- /dev/null +++ b/src/shared/components/Icons/PhotoShare/index.ts @@ -0,0 +1 @@ +export { PhotoShareSvg } from './PhotoShare'; diff --git a/src/shared/components/Icons/Pin/Pin.tsx b/src/shared/components/Icons/Pin/Pin.tsx new file mode 100644 index 0000000..137a13a --- /dev/null +++ b/src/shared/components/Icons/Pin/Pin.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Pin from '../../../Assets/pin.svg'; + +// Custom css +import classes from './pin.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const PinSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +PinSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const PinSvgMemo = memo(PinSvg, areEqualShallow); +export { PinSvgMemo as PinSvg }; diff --git a/src/shared/components/Icons/Pin/index.ts b/src/shared/components/Icons/Pin/index.ts new file mode 100644 index 0000000..b5205f0 --- /dev/null +++ b/src/shared/components/Icons/Pin/index.ts @@ -0,0 +1 @@ +export { PinSvg } from './Pin'; diff --git a/src/shared/components/Icons/Pin/pin.module.css b/src/shared/components/Icons/Pin/pin.module.css new file mode 100644 index 0000000..dc6df91 --- /dev/null +++ b/src/shared/components/Icons/Pin/pin.module.css @@ -0,0 +1,3 @@ +.pinBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/PinActive/PinActive.tsx b/src/shared/components/Icons/PinActive/PinActive.tsx new file mode 100644 index 0000000..b56f5ed --- /dev/null +++ b/src/shared/components/Icons/PinActive/PinActive.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import PinActive from '../../../Assets/pinActive.svg'; + +// Custom css +import classes from './pinActive.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const PinActiveSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +PinActiveSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const PinActiveSvgMemo = memo(PinActiveSvg, areEqualShallow); +export { PinActiveSvgMemo as PinActiveSvg }; diff --git a/src/shared/components/Icons/PinActive/index.ts b/src/shared/components/Icons/PinActive/index.ts new file mode 100644 index 0000000..a95a2ed --- /dev/null +++ b/src/shared/components/Icons/PinActive/index.ts @@ -0,0 +1 @@ +export { PinActiveSvg } from './PinActive'; diff --git a/src/shared/components/Icons/PinActive/pinActive.module.css b/src/shared/components/Icons/PinActive/pinActive.module.css new file mode 100644 index 0000000..c737163 --- /dev/null +++ b/src/shared/components/Icons/PinActive/pinActive.module.css @@ -0,0 +1,3 @@ +.pinBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Plus/Plus.tsx b/src/shared/components/Icons/Plus/Plus.tsx new file mode 100644 index 0000000..6fb8ea5 --- /dev/null +++ b/src/shared/components/Icons/Plus/Plus.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Plus from '../../../Assets/plus.svg'; + +// Custom css +import classes from './plus.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const PlusSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +PlusSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const PlusSvgMemo = memo(PlusSvg, areEqualShallow); +export { PlusSvgMemo as PlusSvg }; \ No newline at end of file diff --git a/src/shared/components/Icons/Plus/index.ts b/src/shared/components/Icons/Plus/index.ts new file mode 100644 index 0000000..7b5f245 --- /dev/null +++ b/src/shared/components/Icons/Plus/index.ts @@ -0,0 +1 @@ +export { PlusSvg } from './Plus'; diff --git a/src/shared/components/Icons/Plus/plus.module.css b/src/shared/components/Icons/Plus/plus.module.css new file mode 100644 index 0000000..dd9dfd5 --- /dev/null +++ b/src/shared/components/Icons/Plus/plus.module.css @@ -0,0 +1,3 @@ +.plusBase { + cursor: pointer; +} \ No newline at end of file diff --git a/src/shared/components/Icons/PrivateOffice/PrivateOffice.tsx b/src/shared/components/Icons/PrivateOffice/PrivateOffice.tsx new file mode 100644 index 0000000..8430a47 --- /dev/null +++ b/src/shared/components/Icons/PrivateOffice/PrivateOffice.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import PrivateOffice from '../../../Assets/private-office.svg'; + +// Custom css +import classes from './privateOffice.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const PrivateOfficeSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +PrivateOfficeSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const PrivateOfficeSvgMemo = memo(PrivateOfficeSvg, areEqualShallow); +export { PrivateOfficeSvgMemo as PrivateOfficeSvg }; diff --git a/src/shared/components/Icons/PrivateOffice/index.ts b/src/shared/components/Icons/PrivateOffice/index.ts new file mode 100644 index 0000000..bfd0476 --- /dev/null +++ b/src/shared/components/Icons/PrivateOffice/index.ts @@ -0,0 +1 @@ +export { PrivateOfficeSvg } from './PrivateOffice'; diff --git a/src/shared/components/Icons/PrivateOffice/privateOffice.module.css b/src/shared/components/Icons/PrivateOffice/privateOffice.module.css new file mode 100644 index 0000000..57f7aa2 --- /dev/null +++ b/src/shared/components/Icons/PrivateOffice/privateOffice.module.css @@ -0,0 +1,3 @@ +.privateOfficeBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Projects/Projects.tsx b/src/shared/components/Icons/Projects/Projects.tsx new file mode 100644 index 0000000..f94b086 --- /dev/null +++ b/src/shared/components/Icons/Projects/Projects.tsx @@ -0,0 +1,35 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; + +import Projects from '../../../Assets/projects.svg'; + +// Custom css +import classes from './projects.module.css'; + +interface Props { + className?: string; + fill: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ProjectsSvg = ({ className = '', fill = '#5B476B', id, onClick, onKeyUp }: Props) => ( + +); + +ProjectsSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ProjectsSvgMemo = memo(ProjectsSvg, areEqualShallow); +export { ProjectsSvgMemo as ProjectsSvg }; diff --git a/src/shared/components/Icons/Projects/index.ts b/src/shared/components/Icons/Projects/index.ts new file mode 100644 index 0000000..175c685 --- /dev/null +++ b/src/shared/components/Icons/Projects/index.ts @@ -0,0 +1 @@ +export { ProjectsSvg } from './Projects'; diff --git a/src/shared/components/Icons/Projects/projects.module.css b/src/shared/components/Icons/Projects/projects.module.css new file mode 100644 index 0000000..21205cf --- /dev/null +++ b/src/shared/components/Icons/Projects/projects.module.css @@ -0,0 +1,3 @@ +.projectsBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Radio/Radio.tsx b/src/shared/components/Icons/Radio/Radio.tsx new file mode 100644 index 0000000..6659d26 --- /dev/null +++ b/src/shared/components/Icons/Radio/Radio.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Radio from '../../../Assets/radio.svg'; + +// Custom css +import classes from './radio.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const RadioSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +RadioSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const RadioSvgMemo = memo(RadioSvg, areEqualShallow); +export { RadioSvgMemo as RadioSvg }; diff --git a/src/shared/components/Icons/Radio/index.ts b/src/shared/components/Icons/Radio/index.ts new file mode 100644 index 0000000..19a3418 --- /dev/null +++ b/src/shared/components/Icons/Radio/index.ts @@ -0,0 +1 @@ +export { RadioSvg } from './Radio'; diff --git a/src/shared/components/Icons/Radio/radio.module.css b/src/shared/components/Icons/Radio/radio.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/Radio/radio.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Reception/Reception.tsx b/src/shared/components/Icons/Reception/Reception.tsx new file mode 100644 index 0000000..bb7de1c --- /dev/null +++ b/src/shared/components/Icons/Reception/Reception.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Reception from '../../../Assets/reception.svg'; + +// Custom css +import classes from './reception.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ReceptionSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +ReceptionSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ReceptionSvgMemo = memo(ReceptionSvg, areEqualShallow); +export { ReceptionSvgMemo as ReceptionSvg }; diff --git a/src/shared/components/Icons/Reception/index.ts b/src/shared/components/Icons/Reception/index.ts new file mode 100644 index 0000000..16a204d --- /dev/null +++ b/src/shared/components/Icons/Reception/index.ts @@ -0,0 +1 @@ +export { ReceptionSvg } from './Reception'; diff --git a/src/shared/components/Icons/Reception/reception.module.css b/src/shared/components/Icons/Reception/reception.module.css new file mode 100644 index 0000000..8df015c --- /dev/null +++ b/src/shared/components/Icons/Reception/reception.module.css @@ -0,0 +1,3 @@ +.receptionBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/ReportsType/ReportsType.tsx b/src/shared/components/Icons/ReportsType/ReportsType.tsx new file mode 100644 index 0000000..7cecbc5 --- /dev/null +++ b/src/shared/components/Icons/ReportsType/ReportsType.tsx @@ -0,0 +1,60 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import ReportsCompact from '../../../Assets/reports-type-compact.svg'; +import ReportsExpanded from '../../../Assets/reports-type-expanded.svg'; +import ReportsLarge from '../../../Assets/reports-type-large.svg'; + +// Custom css +import classes from './reportsType.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const ReportsTypeSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case 'expanded': + return ( + + ); + case 'large': + return ( + + ); + default: + return ( + + ); + } +}; + +ReportsTypeSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: 'compact', + onClick: undefined, + onKeyUp: undefined, +}; + +const ReportsTypeSvgMemo = memo(ReportsTypeSvg, areEqualShallow); +export { ReportsTypeSvgMemo as ReportsTypeSvg }; diff --git a/src/shared/components/Icons/ReportsType/index.ts b/src/shared/components/Icons/ReportsType/index.ts new file mode 100644 index 0000000..4e7a7c1 --- /dev/null +++ b/src/shared/components/Icons/ReportsType/index.ts @@ -0,0 +1 @@ +export { ReportsTypeSvg } from './ReportsType'; diff --git a/src/shared/components/Icons/ReportsType/reportsType.module.css b/src/shared/components/Icons/ReportsType/reportsType.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/ReportsType/reportsType.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/RocketEmblem/RocketEmblem.tsx b/src/shared/components/Icons/RocketEmblem/RocketEmblem.tsx new file mode 100644 index 0000000..a41f88a --- /dev/null +++ b/src/shared/components/Icons/RocketEmblem/RocketEmblem.tsx @@ -0,0 +1,40 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import RocketEmblem from '../../../Assets/logo.svg'; +import RocketEmblemTwo from '../../../Assets/logo.svg'; +import RocketEmblemThree from '../../../Assets/logo.svg'; +import RocketEmblemSmall from '../../../Assets/logo.svg'; + +// Custom css +import classes from './rocketEmblem.module.css'; + +interface Props { + className?: string; + id?: string; + svgItem?: number; +} + +const RocketEmblemSvg = ({ className = '', id, svgItem }: Props) => { + switch (svgItem) { + case 2: + return ; + case 3: + return ; + case 4: + return ; + + default: + return ; + } +}; + +RocketEmblemSvg.defaultProps = { + svgItem: 1, + className: undefined, + id: undefined, +}; + +const RocketEmblemSvgMemo = memo(RocketEmblemSvg, areEqualShallow); + +export { RocketEmblemSvgMemo as RocketEmblemSvg }; diff --git a/src/shared/components/Icons/RocketEmblem/index.ts b/src/shared/components/Icons/RocketEmblem/index.ts new file mode 100644 index 0000000..be16fb7 --- /dev/null +++ b/src/shared/components/Icons/RocketEmblem/index.ts @@ -0,0 +1 @@ +export { RocketEmblemSvg } from './RocketEmblem'; diff --git a/src/shared/components/Icons/RocketEmblem/rocketEmblem.module.css b/src/shared/components/Icons/RocketEmblem/rocketEmblem.module.css new file mode 100644 index 0000000..e8feea6 --- /dev/null +++ b/src/shared/components/Icons/RocketEmblem/rocketEmblem.module.css @@ -0,0 +1,3 @@ +.rocketEmblemBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/RoomIcon/RoomIcon.tsx b/src/shared/components/Icons/RoomIcon/RoomIcon.tsx new file mode 100644 index 0000000..9d80dd8 --- /dev/null +++ b/src/shared/components/Icons/RoomIcon/RoomIcon.tsx @@ -0,0 +1,130 @@ +import React, { memo, useEffect, useState } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { BathRoomSvg } from '../BathRoom'; +import { BedRoomSvg } from '../BedRoom'; +import { CustomRoomSvg } from '../CustomRoom'; +import { DenSvg } from '../Den'; +import { DiningRoomSvg } from '../DiningRoom'; +import { ElectricalRoomSvg } from '../ElectricalRoom'; +import { ElevatorSvg } from '../Elevator'; +import { EnsuiteSvg } from '../Ensuite'; +import { GymSvg } from '../Gym'; +import { HallwaySvg } from '../Hallway'; +import { KitchenSvg } from '../Kitchen'; +import { LaundrySvg } from '../Laundry'; +import { LivingRoomSvg } from '../LivingRoom'; +import { LobbySvg } from '../Lobby'; +import { LunchRoomSvg } from '../LunchRoom'; +import { MaintenanceRoomSvg } from '../MaintenanceRoom'; +import { MeetingRoomSvg } from '../MeetingRoom'; +import { OfficeSvg } from '../Office'; +import { PrivateOfficeSvg } from '../PrivateOffice'; +import { ReceptionSvg } from '../Reception'; +import { StairwaySvg } from '../Stairway'; +import { StorageSvg } from '../Storage'; +import { + BasementSvg, + CompassSvg, + DeckSvg, + GarageSvg, + PatioSvg, + PlazaSvg, + PoolSvg, + RoofSvg, + ShopSvg, + UtilityRoomSvg, +} from '../RoomTypes'; + +interface Props { + type: string; + className?: string; + events?: any; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const getIcon = (type, className, onClick, onKeyUp) => { + const icons = { + balcony: , // potential image change + barbequearea: , + basement: , + bathroom: , + bay: , + bedroom: , + courtyard: , + customroom: , + deck: , // potential image change + den: , // potential image change + diningroom: , + eastfacing: , + electricalroom: , + elevator: , + ensuite: , // potential image change + entryway: , + garage: , + gym: , + hallway: , + kitchen: , + laundry: , + leisureroom: , + livingroom: , + lobby: , + lunchroom: , + machineroom: , + mailroom: , + maintenanceroom: , + masterbedroom: , + meetingroom: , + multipurposeroom: , + northfacing: , + office: , + parkinggarage: , + patio: , + plaza: , + pool: , + privateoffice: , + reception: , + roof: , + rooftop: , + shed: , + shop: , + southfacing: , + stairway: , + storage: , + storefront: , + terrace: , + utilityroom: , + walkway: , + westfacing: , + }; + + // return null to avoid errors in case if the icon type is not present in the icons list + return icons[type] || ; +}; + +const RoomIcon = ({ className, onClick, onKeyUp, type }: Props) => { + const [icon, setIcon] = useState(null); + + useEffect(() => { + if (type) { + // Remove all white space from the string, with the regex + const iconType = type.toLocaleLowerCase().replace(/\s+/g, ''); + + // set the icon based on icon type change, useful for conditional icon renderings + setIcon(getIcon(iconType, className, onClick, onKeyUp)); + } + }, [type]); + + return icon; +}; + +RoomIcon.defaultProps = { + className: undefined, + events: undefined, +}; + +const RoomIconMemo = memo(RoomIcon, areEqual); + +export { RoomIconMemo as RoomIcon }; diff --git a/src/shared/components/Icons/RoomIcon/index.ts b/src/shared/components/Icons/RoomIcon/index.ts new file mode 100644 index 0000000..932561e --- /dev/null +++ b/src/shared/components/Icons/RoomIcon/index.ts @@ -0,0 +1 @@ +export { RoomIcon } from './RoomIcon'; diff --git a/src/shared/components/Icons/RoomTypes/Basement/Basement.tsx b/src/shared/components/Icons/RoomTypes/Basement/Basement.tsx new file mode 100644 index 0000000..709eb6a --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Basement/Basement.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Basement from '../../../../Assets/basement.svg'; + +// Custom css +import classes from './basement.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const BasementSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +BasementSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const BasementSvgMemo = memo(BasementSvg, areEqualShallow); +export { BasementSvgMemo as BasementSvg }; diff --git a/src/shared/components/Icons/RoomTypes/Basement/basement.module.css b/src/shared/components/Icons/RoomTypes/Basement/basement.module.css new file mode 100644 index 0000000..0ec2b55 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Basement/basement.module.css @@ -0,0 +1,3 @@ +.basementBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/RoomTypes/Basement/index.ts b/src/shared/components/Icons/RoomTypes/Basement/index.ts new file mode 100644 index 0000000..447428d --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Basement/index.ts @@ -0,0 +1 @@ +export { BasementSvg } from './Basement'; diff --git a/src/shared/components/Icons/RoomTypes/Compass/Compass.tsx b/src/shared/components/Icons/RoomTypes/Compass/Compass.tsx new file mode 100644 index 0000000..d4cfcc7 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Compass/Compass.tsx @@ -0,0 +1,71 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import NorthFacing from '../../../../Assets/northfacing.svg'; +import SouthFacing from '../../../../Assets/southfacing.svg'; +import EastFacing from '../../../../Assets/eastfacing.svg'; +import WestFacing from '../../../../Assets/westfacing.svg'; + +import classes from './compass.module.css'; + +interface Props { + id?: string; + className?: string; + svgItem?: number; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const CompassSvg = ({ id, className, svgItem, onClick, onKeyUp }: Props) => { + switch (svgItem) { + case 2: + return ( + + ); + case 3: + return ( + + ); + case 4: + return ( + + ); + default: + return ( + + ); + } +}; + +CompassSvg.defaultProps = { + id: undefined, + className: undefined, + svgItem: 1, + onClick: undefined, + onKeyUp: undefined, +}; + +const CompassSvgMemo = memo(CompassSvg, areEqual); + +export { CompassSvgMemo as CompassSvg }; diff --git a/src/shared/components/Icons/RoomTypes/Compass/compass.module.css b/src/shared/components/Icons/RoomTypes/Compass/compass.module.css new file mode 100644 index 0000000..871021d --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Compass/compass.module.css @@ -0,0 +1,3 @@ +.compassBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/RoomTypes/Compass/index.ts b/src/shared/components/Icons/RoomTypes/Compass/index.ts new file mode 100644 index 0000000..78fa5d3 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Compass/index.ts @@ -0,0 +1 @@ +export { CompassSvg } from './Compass'; diff --git a/src/shared/components/Icons/RoomTypes/Deck/Deck.tsx b/src/shared/components/Icons/RoomTypes/Deck/Deck.tsx new file mode 100644 index 0000000..4db464a --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Deck/Deck.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Deck from '../../../../Assets/deck.svg'; + +// Custom css +import classes from './deck.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const DeckSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +DeckSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const DeckSvgMemo = memo(DeckSvg, areEqualShallow); +export { DeckSvgMemo as DeckSvg }; diff --git a/src/shared/components/Icons/RoomTypes/Deck/deck.module.css b/src/shared/components/Icons/RoomTypes/Deck/deck.module.css new file mode 100644 index 0000000..ab8a47d --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Deck/deck.module.css @@ -0,0 +1,3 @@ +.deckBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/RoomTypes/Deck/index.ts b/src/shared/components/Icons/RoomTypes/Deck/index.ts new file mode 100644 index 0000000..25c610b --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Deck/index.ts @@ -0,0 +1 @@ +export { DeckSvg } from './Deck'; diff --git a/src/shared/components/Icons/RoomTypes/Garage/Garage.tsx b/src/shared/components/Icons/RoomTypes/Garage/Garage.tsx new file mode 100644 index 0000000..658129c --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Garage/Garage.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Garage from '../../../../Assets/garage.svg'; + +// Custom css +import classes from './garage.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const GarageSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +GarageSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const GarageSvgMemo = memo(GarageSvg, areEqualShallow); +export { GarageSvgMemo as GarageSvg }; diff --git a/src/shared/components/Icons/RoomTypes/Garage/garage.module.css b/src/shared/components/Icons/RoomTypes/Garage/garage.module.css new file mode 100644 index 0000000..913dbf4 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Garage/garage.module.css @@ -0,0 +1,3 @@ +.garageBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/RoomTypes/Garage/index.ts b/src/shared/components/Icons/RoomTypes/Garage/index.ts new file mode 100644 index 0000000..f30b2e8 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Garage/index.ts @@ -0,0 +1 @@ +export { GarageSvg } from './Garage'; diff --git a/src/shared/components/Icons/RoomTypes/Patio/Patio.tsx b/src/shared/components/Icons/RoomTypes/Patio/Patio.tsx new file mode 100644 index 0000000..74e6146 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Patio/Patio.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Patio from '../../../../Assets/patio.svg'; + +// Custom css +import classes from './patio.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const PatioSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +PatioSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const PatioSvgMemo = memo(PatioSvg, areEqualShallow); +export { PatioSvgMemo as PatioSvg }; diff --git a/src/shared/components/Icons/RoomTypes/Patio/index.ts b/src/shared/components/Icons/RoomTypes/Patio/index.ts new file mode 100644 index 0000000..8536a49 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Patio/index.ts @@ -0,0 +1 @@ +export { PatioSvg } from './Patio'; diff --git a/src/shared/components/Icons/RoomTypes/Patio/patio.module.css b/src/shared/components/Icons/RoomTypes/Patio/patio.module.css new file mode 100644 index 0000000..53076cf --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Patio/patio.module.css @@ -0,0 +1,3 @@ +.patioBase { + cursor: pointer; + } \ No newline at end of file diff --git a/src/shared/components/Icons/RoomTypes/Plaza/Plaza.tsx b/src/shared/components/Icons/RoomTypes/Plaza/Plaza.tsx new file mode 100644 index 0000000..2a188d3 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Plaza/Plaza.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Plaza from '../../../../Assets/plaza.svg'; + +// Custom css +import classes from './plaza.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const PlazaSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +PlazaSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const PlazaSvgMemo = memo(PlazaSvg, areEqualShallow); +export { PlazaSvgMemo as PlazaSvg }; diff --git a/src/shared/components/Icons/RoomTypes/Plaza/index.ts b/src/shared/components/Icons/RoomTypes/Plaza/index.ts new file mode 100644 index 0000000..de78040 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Plaza/index.ts @@ -0,0 +1 @@ +export { PlazaSvg } from './Plaza'; diff --git a/src/shared/components/Icons/RoomTypes/Plaza/plaza.module.css b/src/shared/components/Icons/RoomTypes/Plaza/plaza.module.css new file mode 100644 index 0000000..9c14e74 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Plaza/plaza.module.css @@ -0,0 +1,3 @@ +.plazaBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/RoomTypes/Pool/Pool.tsx b/src/shared/components/Icons/RoomTypes/Pool/Pool.tsx new file mode 100644 index 0000000..09fd113 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Pool/Pool.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Pool from '../../../../Assets/pool.svg'; + +// Custom css +import classes from './pool.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const PoolSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +PoolSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const PoolSvgMemo = memo(PoolSvg, areEqualShallow); +export { PoolSvgMemo as PoolSvg }; diff --git a/src/shared/components/Icons/RoomTypes/Pool/index.ts b/src/shared/components/Icons/RoomTypes/Pool/index.ts new file mode 100644 index 0000000..87b7379 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Pool/index.ts @@ -0,0 +1 @@ +export { PoolSvg } from './Pool'; diff --git a/src/shared/components/Icons/RoomTypes/Pool/pool.module.css b/src/shared/components/Icons/RoomTypes/Pool/pool.module.css new file mode 100644 index 0000000..39a5901 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Pool/pool.module.css @@ -0,0 +1,3 @@ +.poolBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/RoomTypes/Roof/Roof.tsx b/src/shared/components/Icons/RoomTypes/Roof/Roof.tsx new file mode 100644 index 0000000..ad594b9 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Roof/Roof.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Roof from '../../../../Assets/roof.svg'; + +// Custom css +import classes from './roof.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const RoofSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +RoofSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const RoofSvgMemo = memo(RoofSvg, areEqualShallow); +export { RoofSvgMemo as RoofSvg }; diff --git a/src/shared/components/Icons/RoomTypes/Roof/index.ts b/src/shared/components/Icons/RoomTypes/Roof/index.ts new file mode 100644 index 0000000..7e0fc48 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Roof/index.ts @@ -0,0 +1 @@ +export { RoofSvg } from './Roof'; diff --git a/src/shared/components/Icons/RoomTypes/Roof/roof.module.css b/src/shared/components/Icons/RoomTypes/Roof/roof.module.css new file mode 100644 index 0000000..9886c6c --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Roof/roof.module.css @@ -0,0 +1,3 @@ +.roofBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/RoomTypes/Shop/Shop.tsx b/src/shared/components/Icons/RoomTypes/Shop/Shop.tsx new file mode 100644 index 0000000..6103d8f --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Shop/Shop.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Shop from '../../../../Assets/shop.svg'; + +// Custom css +import classes from './shop.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ShopSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +ShopSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ShopSvgMemo = memo(ShopSvg, areEqualShallow); +export { ShopSvgMemo as ShopSvg }; diff --git a/src/shared/components/Icons/RoomTypes/Shop/index.ts b/src/shared/components/Icons/RoomTypes/Shop/index.ts new file mode 100644 index 0000000..4eb27e9 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Shop/index.ts @@ -0,0 +1 @@ +export { ShopSvg } from './Shop'; diff --git a/src/shared/components/Icons/RoomTypes/Shop/shop.module.css b/src/shared/components/Icons/RoomTypes/Shop/shop.module.css new file mode 100644 index 0000000..8243f74 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/Shop/shop.module.css @@ -0,0 +1,3 @@ +.shopBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/RoomTypes/UtilityRoom/UtilityRoom.tsx b/src/shared/components/Icons/RoomTypes/UtilityRoom/UtilityRoom.tsx new file mode 100644 index 0000000..0fa5a21 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/UtilityRoom/UtilityRoom.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import UtilityRoom from '../../../../Assets/utilityroom.svg'; + +// Custom css +import classes from './utilityroom.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const UtilityRoomSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +UtilityRoomSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const UtilityRoomSvgMemo = memo(UtilityRoomSvg, areEqualShallow); +export { UtilityRoomSvgMemo as UtilityRoomSvg }; diff --git a/src/shared/components/Icons/RoomTypes/UtilityRoom/index.ts b/src/shared/components/Icons/RoomTypes/UtilityRoom/index.ts new file mode 100644 index 0000000..4f40f1b --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/UtilityRoom/index.ts @@ -0,0 +1 @@ +export { UtilityRoomSvg } from './UtilityRoom'; diff --git a/src/shared/components/Icons/RoomTypes/UtilityRoom/utilityroom.module.css b/src/shared/components/Icons/RoomTypes/UtilityRoom/utilityroom.module.css new file mode 100644 index 0000000..41d2fce --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/UtilityRoom/utilityroom.module.css @@ -0,0 +1,3 @@ +.utilityroomBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/RoomTypes/index.ts b/src/shared/components/Icons/RoomTypes/index.ts new file mode 100644 index 0000000..7a1a141 --- /dev/null +++ b/src/shared/components/Icons/RoomTypes/index.ts @@ -0,0 +1,10 @@ +export { BasementSvg } from './Basement'; +export { CompassSvg } from './Compass'; +export { DeckSvg } from './Deck'; +export { GarageSvg } from './Garage'; +export { PatioSvg } from './Patio'; +export { PlazaSvg } from './Plaza'; +export { PoolSvg } from './Pool'; +export { RoofSvg } from './Roof'; +export { ShopSvg } from './Shop'; +export { UtilityRoomSvg } from './UtilityRoom'; diff --git a/src/shared/components/Icons/Search/Search.tsx b/src/shared/components/Icons/Search/Search.tsx new file mode 100644 index 0000000..02b9744 --- /dev/null +++ b/src/shared/components/Icons/Search/Search.tsx @@ -0,0 +1,25 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Search from '../../../Assets/search.svg'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const SearchSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +SearchSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const SearchSvgMemo = memo(SearchSvg, areEqualShallow); +export { SearchSvgMemo as SearchSvg }; diff --git a/src/shared/components/Icons/Search/index.ts b/src/shared/components/Icons/Search/index.ts new file mode 100644 index 0000000..6ca70a7 --- /dev/null +++ b/src/shared/components/Icons/Search/index.ts @@ -0,0 +1 @@ +export { SearchSvg } from './Search'; diff --git a/src/shared/components/Icons/Share/Share.tsx b/src/shared/components/Icons/Share/Share.tsx new file mode 100644 index 0000000..b53e340 --- /dev/null +++ b/src/shared/components/Icons/Share/Share.tsx @@ -0,0 +1,38 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Share32 from '../../../Assets/share-32.svg'; +import Share from '../../../Assets/share.svg'; + +import classes from './share.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const ShareSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case '32': + return ( + + ); + default: + return ( + + ); + } +}; +ShareSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ShareSvgMemo = memo(ShareSvg, areEqualShallow); +export { ShareSvgMemo as ShareSvg }; diff --git a/src/shared/components/Icons/Share/index.ts b/src/shared/components/Icons/Share/index.ts new file mode 100644 index 0000000..fa88461 --- /dev/null +++ b/src/shared/components/Icons/Share/index.ts @@ -0,0 +1 @@ +export { ShareSvg } from './Share'; diff --git a/src/shared/components/Icons/Share/share.module.css b/src/shared/components/Icons/Share/share.module.css new file mode 100644 index 0000000..8d664f8 --- /dev/null +++ b/src/shared/components/Icons/Share/share.module.css @@ -0,0 +1,3 @@ +.shareBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/SideBarClose/SideBarClose.tsx b/src/shared/components/Icons/SideBarClose/SideBarClose.tsx new file mode 100644 index 0000000..1146d04 --- /dev/null +++ b/src/shared/components/Icons/SideBarClose/SideBarClose.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import SideBarClose from '../../../Assets/side-bar-close.svg'; + +// Custom css +import classes from './sideBarClose.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const SideBarCloseSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +SideBarCloseSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const SideBarCloseSvgMemo = memo(SideBarCloseSvg, areEqualShallow); +export { SideBarCloseSvgMemo as SideBarCloseSvg }; diff --git a/src/shared/components/Icons/SideBarClose/index.ts b/src/shared/components/Icons/SideBarClose/index.ts new file mode 100644 index 0000000..6249dd8 --- /dev/null +++ b/src/shared/components/Icons/SideBarClose/index.ts @@ -0,0 +1 @@ +export { SideBarCloseSvg } from './SideBarClose'; diff --git a/src/shared/components/Icons/SideBarClose/sideBarClose.module.css b/src/shared/components/Icons/SideBarClose/sideBarClose.module.css new file mode 100644 index 0000000..2053825 --- /dev/null +++ b/src/shared/components/Icons/SideBarClose/sideBarClose.module.css @@ -0,0 +1,3 @@ +.closeBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/SideBarLeftArrow/SideBarLeftArrow.tsx b/src/shared/components/Icons/SideBarLeftArrow/SideBarLeftArrow.tsx new file mode 100644 index 0000000..e025b48 --- /dev/null +++ b/src/shared/components/Icons/SideBarLeftArrow/SideBarLeftArrow.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import SideBarLeftArrow from '../../../Assets/side-bar-left-arrow.svg'; + +// Custom css +import classes from './sideBarLeftArrow.module.css'; + +interface Props { + className?: string; + id?: string; + onClick: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const SideBarLeftArrowSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +SideBarLeftArrowSvg.defaultProps = { + className: undefined, + id: undefined, + onKeyUp: undefined, +}; + +const SideBarLeftArrowSvgMemo = memo(SideBarLeftArrowSvg, areEqualShallow); +export { SideBarLeftArrowSvgMemo as SideBarLeftArrowSvg }; diff --git a/src/shared/components/Icons/SideBarLeftArrow/index.ts b/src/shared/components/Icons/SideBarLeftArrow/index.ts new file mode 100644 index 0000000..24ec851 --- /dev/null +++ b/src/shared/components/Icons/SideBarLeftArrow/index.ts @@ -0,0 +1 @@ +export { SideBarLeftArrowSvg } from './SideBarLeftArrow'; diff --git a/src/shared/components/Icons/SideBarLeftArrow/sideBarLeftArrow.module.css b/src/shared/components/Icons/SideBarLeftArrow/sideBarLeftArrow.module.css new file mode 100644 index 0000000..b992cba --- /dev/null +++ b/src/shared/components/Icons/SideBarLeftArrow/sideBarLeftArrow.module.css @@ -0,0 +1,3 @@ +.sideBarArrowBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/SideBarRightArrow/SideBarRightArrow.tsx b/src/shared/components/Icons/SideBarRightArrow/SideBarRightArrow.tsx new file mode 100644 index 0000000..ce75b1d --- /dev/null +++ b/src/shared/components/Icons/SideBarRightArrow/SideBarRightArrow.tsx @@ -0,0 +1,33 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import SideBarRightArrow from '../../../Assets/side-bar-right-arrow.svg'; + +// Custom css +import classes from './sideBarRightArrow.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const SideBarRightArrowSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +SideBarRightArrowSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const SideBarRightArrowSvgMemo = memo(SideBarRightArrowSvg, areEqualShallow); +export { SideBarRightArrowSvgMemo as SideBarRightArrowSvg }; diff --git a/src/shared/components/Icons/SideBarRightArrow/index.ts b/src/shared/components/Icons/SideBarRightArrow/index.ts new file mode 100644 index 0000000..8bad698 --- /dev/null +++ b/src/shared/components/Icons/SideBarRightArrow/index.ts @@ -0,0 +1 @@ +export { SideBarRightArrowSvg } from './SideBarRightArrow'; diff --git a/src/shared/components/Icons/SideBarRightArrow/sideBarRightArrow.module.css b/src/shared/components/Icons/SideBarRightArrow/sideBarRightArrow.module.css new file mode 100644 index 0000000..b992cba --- /dev/null +++ b/src/shared/components/Icons/SideBarRightArrow/sideBarRightArrow.module.css @@ -0,0 +1,3 @@ +.sideBarArrowBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/SingleHome/SingleHome.tsx b/src/shared/components/Icons/SingleHome/SingleHome.tsx new file mode 100644 index 0000000..808daf5 --- /dev/null +++ b/src/shared/components/Icons/SingleHome/SingleHome.tsx @@ -0,0 +1,49 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import SingleHome from '../../../Assets/single-home.svg'; +import SingleHomeSmall from '../../../Assets/single-home-sm.svg'; + +// Custom css +import classes from './singleHome.module.css'; + +interface Props { + className?: string; + id?: string; + iconType?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const SingleHomeSvg = ({ className = '', id, iconType, onClick, onKeyUp }: Props) => { + switch (iconType) { + case 'small': + return ( + + ); + default: + return ( + + ); + } +}; + +SingleHomeSvg.defaultProps = { + className: undefined, + id: undefined, + iconType: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const SingleHomeSvgMemo = memo(SingleHomeSvg, areEqualShallow); +export { SingleHomeSvgMemo as SingleHomeSvg }; diff --git a/src/shared/components/Icons/SingleHome/index.ts b/src/shared/components/Icons/SingleHome/index.ts new file mode 100644 index 0000000..c4659df --- /dev/null +++ b/src/shared/components/Icons/SingleHome/index.ts @@ -0,0 +1 @@ +export { SingleHomeSvg } from './SingleHome'; diff --git a/src/shared/components/Icons/SingleHome/singleHome.module.css b/src/shared/components/Icons/SingleHome/singleHome.module.css new file mode 100644 index 0000000..f0ae2ce --- /dev/null +++ b/src/shared/components/Icons/SingleHome/singleHome.module.css @@ -0,0 +1,3 @@ +.singleHomeBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Sms/Sms.tsx b/src/shared/components/Icons/Sms/Sms.tsx new file mode 100644 index 0000000..8e72547 --- /dev/null +++ b/src/shared/components/Icons/Sms/Sms.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Sms from '../../../Assets/sms-icon.svg'; + +// Custom css +import classes from './sms.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const SmsSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +SmsSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const SmsSvgMemo = memo(SmsSvg, areEqualShallow); +export { SmsSvgMemo as SmsSvg }; diff --git a/src/shared/components/Icons/Sms/index.ts b/src/shared/components/Icons/Sms/index.ts new file mode 100644 index 0000000..c0b5523 --- /dev/null +++ b/src/shared/components/Icons/Sms/index.ts @@ -0,0 +1 @@ +export { SmsSvg } from './Sms'; diff --git a/src/shared/components/Icons/Sms/sms.module.css b/src/shared/components/Icons/Sms/sms.module.css new file mode 100644 index 0000000..0b5fce8 --- /dev/null +++ b/src/shared/components/Icons/Sms/sms.module.css @@ -0,0 +1,3 @@ +.smsBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Square/Square.tsx b/src/shared/components/Icons/Square/Square.tsx new file mode 100644 index 0000000..8d5b7a0 --- /dev/null +++ b/src/shared/components/Icons/Square/Square.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Square from '../../../Assets/square.svg'; + +// Custom css +import classes from './square.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const SquareSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +SquareSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const SquareSvgMemo = memo(SquareSvg, areEqualShallow); +export { SquareSvgMemo as SquareSvg }; diff --git a/src/shared/components/Icons/Square/index.ts b/src/shared/components/Icons/Square/index.ts new file mode 100644 index 0000000..b230a1f --- /dev/null +++ b/src/shared/components/Icons/Square/index.ts @@ -0,0 +1 @@ +export { SquareSvg } from './Square'; diff --git a/src/shared/components/Icons/Square/square.module.css b/src/shared/components/Icons/Square/square.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/Square/square.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Stairway/Stairway.tsx b/src/shared/components/Icons/Stairway/Stairway.tsx new file mode 100644 index 0000000..97a8c16 --- /dev/null +++ b/src/shared/components/Icons/Stairway/Stairway.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import Stairway from "../../../Assets/stairway.svg"; + +// Custom css +import classes from "./stairway.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const StairwaySvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +StairwaySvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const StairwaySvgMemo = memo(StairwaySvg, areEqualShallow); +export { StairwaySvgMemo as StairwaySvg }; diff --git a/src/shared/components/Icons/Stairway/index.ts b/src/shared/components/Icons/Stairway/index.ts new file mode 100644 index 0000000..c78b5eb --- /dev/null +++ b/src/shared/components/Icons/Stairway/index.ts @@ -0,0 +1 @@ +export { StairwaySvg } from "./Stairway"; diff --git a/src/shared/components/Icons/Stairway/stairway.module.css b/src/shared/components/Icons/Stairway/stairway.module.css new file mode 100644 index 0000000..def19b4 --- /dev/null +++ b/src/shared/components/Icons/Stairway/stairway.module.css @@ -0,0 +1,3 @@ +.stairwayBase { + cursor: pointer; +} \ No newline at end of file diff --git a/src/shared/components/Icons/Storage/Storage.tsx b/src/shared/components/Icons/Storage/Storage.tsx new file mode 100644 index 0000000..78dcd0b --- /dev/null +++ b/src/shared/components/Icons/Storage/Storage.tsx @@ -0,0 +1,27 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import Storage from "../../../Assets/storage.svg"; + +// Custom css +import classes from "./storage.module.css"; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const StorageSvg = ({ className = "", id, onClick, onKeyUp }: Props) => ( + +); + +StorageSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const StorageSvgMemo = memo(StorageSvg, areEqualShallow); +export { StorageSvgMemo as StorageSvg }; diff --git a/src/shared/components/Icons/Storage/index.ts b/src/shared/components/Icons/Storage/index.ts new file mode 100644 index 0000000..206259e --- /dev/null +++ b/src/shared/components/Icons/Storage/index.ts @@ -0,0 +1 @@ +export { StorageSvg } from "./Storage"; diff --git a/src/shared/components/Icons/Storage/storage.module.css b/src/shared/components/Icons/Storage/storage.module.css new file mode 100644 index 0000000..4b251f6 --- /dev/null +++ b/src/shared/components/Icons/Storage/storage.module.css @@ -0,0 +1,3 @@ +.storageBase { + cursor: pointer; +} \ No newline at end of file diff --git a/src/shared/components/Icons/Support/Support.tsx b/src/shared/components/Icons/Support/Support.tsx new file mode 100644 index 0000000..c7490de --- /dev/null +++ b/src/shared/components/Icons/Support/Support.tsx @@ -0,0 +1,28 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Support from '../../../Assets/support.svg'; + +// Custom css +import classes from './support.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const SupportSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +SupportSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const SupportSvgMemo = memo(SupportSvg, areEqualShallow); + +export { SupportSvgMemo as SupportSvg }; diff --git a/src/shared/components/Icons/Support/index.ts b/src/shared/components/Icons/Support/index.ts new file mode 100644 index 0000000..8d9674f --- /dev/null +++ b/src/shared/components/Icons/Support/index.ts @@ -0,0 +1 @@ +export { SupportSvg } from './Support'; diff --git a/src/shared/components/Icons/Support/support.module.css b/src/shared/components/Icons/Support/support.module.css new file mode 100644 index 0000000..196ab2a --- /dev/null +++ b/src/shared/components/Icons/Support/support.module.css @@ -0,0 +1,3 @@ +.iconBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/ThreeDots/ThreeDots.tsx b/src/shared/components/Icons/ThreeDots/ThreeDots.tsx new file mode 100644 index 0000000..8e9dbc6 --- /dev/null +++ b/src/shared/components/Icons/ThreeDots/ThreeDots.tsx @@ -0,0 +1,27 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import ThreeDots from '../../../Assets/three-dots.svg'; + +// Custom css +import classes from './threeDots.module.css'; + +interface Props { + className?: string; + id?: string; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const ThreeDotsSvg = ({ className = '', id, onClick, onKeyUp }: Props) => ( + +); + +ThreeDotsSvg.defaultProps = { + className: undefined, + id: undefined, + onClick: undefined, + onKeyUp: undefined, +}; + +const ThreeDotsSvgMemo = memo(ThreeDotsSvg, areEqualShallow); +export { ThreeDotsSvgMemo as ThreeDotsSvg }; diff --git a/src/shared/components/Icons/ThreeDots/index.ts b/src/shared/components/Icons/ThreeDots/index.ts new file mode 100644 index 0000000..0589397 --- /dev/null +++ b/src/shared/components/Icons/ThreeDots/index.ts @@ -0,0 +1 @@ +export { ThreeDotsSvg } from './ThreeDots'; diff --git a/src/shared/components/Icons/ThreeDots/threeDots.module.css b/src/shared/components/Icons/ThreeDots/threeDots.module.css new file mode 100644 index 0000000..959af85 --- /dev/null +++ b/src/shared/components/Icons/ThreeDots/threeDots.module.css @@ -0,0 +1,3 @@ +.threeDotsBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Trash/Trash.tsx b/src/shared/components/Icons/Trash/Trash.tsx new file mode 100644 index 0000000..bcd1d63 --- /dev/null +++ b/src/shared/components/Icons/Trash/Trash.tsx @@ -0,0 +1,69 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Trash from '../../../Assets/trash.svg'; +import TrashSm from '../../../Assets/trash-sm.svg'; +import TrashMd from '../../../Assets/trash-md.svg'; +import TrashSmDisabled from '../../../Assets/trash-sm-disabled.svg'; +import TrashSmDark from '../../../Assets/trash-sm-dark.svg'; +import TrashPhoto from '../../../Assets/trash-photo.svg'; + +// Custom css +import classes from './trash.module.css'; + +interface Props { + className?: string; + id?: string; + svgItem?: number; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} +const TrashSvg = ({ className = '', id, svgItem, onClick, onKeyUp }: Props) => { + switch (svgItem) { + case 2: + return ( + + ); + case 3: + return ( + + ); + case 4: + return ( + + ); + case 5: + return ( + + ); + case 6: + return ( + + ); + default: + return ( + + ); + } +}; + +TrashSvg.defaultProps = { + className: undefined, + id: undefined, + svgItem: 1, + onClick: undefined, + onKeyUp: undefined, +}; + +const TrashSvgMemo = memo(TrashSvg, areEqualShallow); +export { TrashSvgMemo as TrashSvg }; diff --git a/src/shared/components/Icons/Trash/index.ts b/src/shared/components/Icons/Trash/index.ts new file mode 100644 index 0000000..c59ce33 --- /dev/null +++ b/src/shared/components/Icons/Trash/index.ts @@ -0,0 +1 @@ +export { TrashSvg } from "./Trash"; diff --git a/src/shared/components/Icons/Trash/trash.module.css b/src/shared/components/Icons/Trash/trash.module.css new file mode 100644 index 0000000..9905270 --- /dev/null +++ b/src/shared/components/Icons/Trash/trash.module.css @@ -0,0 +1,3 @@ +.trashBase { + cursor: pointer; +} diff --git a/src/shared/components/Icons/Unit/Unit.tsx b/src/shared/components/Icons/Unit/Unit.tsx new file mode 100644 index 0000000..b138bee --- /dev/null +++ b/src/shared/components/Icons/Unit/Unit.tsx @@ -0,0 +1,48 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; +import Unit from '../../../Assets/unit.svg'; +import UnitSm from '../../../Assets/unit-sm.svg'; +import UnitLg from '../../../Assets/unit-lg.svg'; +import UnitAdd from '../../../Assets/unit-add.svg'; + +// Custom css +import classes from './unit.module.css'; + +interface Props { + className?: string; + id?: string; + svgItem?: number; + onClick?: (e: any) => void; + onKeyUp?: (e: any) => void; +} + +const UnitSvg = ({ className = '', id, svgItem, onClick, onKeyUp }: Props) => { + switch (svgItem) { + case 2: + return ( + + ); + case 3: + return ( + + ); + case 4: + return ( + + ); + default: + return ; + } +}; + +UnitSvg.defaultProps = { + className: undefined, + id: undefined, + svgItem: 1, + onClick: undefined, + onKeyUp: undefined, +}; + +const UnitSvgMemo = memo(UnitSvg, areEqualShallow); +export { UnitSvgMemo as UnitSvg }; diff --git a/src/shared/components/Icons/Unit/index.ts b/src/shared/components/Icons/Unit/index.ts new file mode 100644 index 0000000..1521693 --- /dev/null +++ b/src/shared/components/Icons/Unit/index.ts @@ -0,0 +1 @@ +export { UnitSvg } from "./Unit"; diff --git a/src/shared/components/Icons/Unit/unit.module.css b/src/shared/components/Icons/Unit/unit.module.css new file mode 100644 index 0000000..5474670 --- /dev/null +++ b/src/shared/components/Icons/Unit/unit.module.css @@ -0,0 +1,3 @@ +.floorBase { + cursor: pointer; +} \ No newline at end of file diff --git a/src/shared/components/Icons/WelcomeAboard/WelcomeAboard.tsx b/src/shared/components/Icons/WelcomeAboard/WelcomeAboard.tsx new file mode 100644 index 0000000..900ad4c --- /dev/null +++ b/src/shared/components/Icons/WelcomeAboard/WelcomeAboard.tsx @@ -0,0 +1,18 @@ +import React, { memo } from "react"; + +import { areEqualShallow } from "Utils/equalityChecks"; +import WelcomeAboard from "../../../Assets/welcome-aboard.svg"; + +interface Props { + className?: string; + id?: string; +} +const WelcomeAboardSvg = ({ className = "", id }: Props) => ; + +WelcomeAboardSvg.defaultProps = { + className: undefined, + id: undefined, +}; + +const WelcomeAboardSvgMemo = memo(WelcomeAboardSvg, areEqualShallow); +export { WelcomeAboardSvgMemo as WelcomeAboardSvg }; diff --git a/src/shared/components/Icons/WelcomeAboard/index.ts b/src/shared/components/Icons/WelcomeAboard/index.ts new file mode 100644 index 0000000..29bc18d --- /dev/null +++ b/src/shared/components/Icons/WelcomeAboard/index.ts @@ -0,0 +1 @@ +export { WelcomeAboardSvg } from "./WelcomeAboard"; diff --git a/src/shared/components/Icons/index.ts b/src/shared/components/Icons/index.ts new file mode 100644 index 0000000..55d5c92 --- /dev/null +++ b/src/shared/components/Icons/index.ts @@ -0,0 +1,3 @@ +export { DamageIcon } from './DamageIcon'; +export { Icon } from './Icon'; +export { RoomIcon } from './RoomIcon'; diff --git a/src/shared/components/ImageDeleteModal/ImageDeleteModal.tsx b/src/shared/components/ImageDeleteModal/ImageDeleteModal.tsx new file mode 100644 index 0000000..5845b85 --- /dev/null +++ b/src/shared/components/ImageDeleteModal/ImageDeleteModal.tsx @@ -0,0 +1,44 @@ +import React, { memo } from 'react'; + +import { Modal } from 'Components/Modal'; + +import { areEqual } from 'Utils/equalityChecks'; +import { Button } from 'Components/Button'; +import classes from './imageDeleteModal.module.css'; + +interface Props { + id: number; + isOpen: boolean; + modalCloseClick: (e: any) => void; + onDeleteButtonClick: (e: any) => void; +} +const ImageDeleteModal = ({ id, isOpen, modalCloseClick, onDeleteButtonClick }: Props) => ( +
    + +
    +

    Are you sure you want to delete this photo?

    +

    You cannot undo this action

    +
    + + +
    +
    +); + +const ImageDeleteModalMemo = memo(ImageDeleteModal, areEqual); + +export { ImageDeleteModalMemo as ImageDeleteModal }; diff --git a/src/shared/components/ImageDeleteModal/imageDeleteModal.module.css b/src/shared/components/ImageDeleteModal/imageDeleteModal.module.css new file mode 100644 index 0000000..9c0aa0e --- /dev/null +++ b/src/shared/components/ImageDeleteModal/imageDeleteModal.module.css @@ -0,0 +1,79 @@ +.modalContent { + max-width: 415px; + height: 377px; + padding: 1.3em 1.5em; + box-shadow: 0px 24px 44px rgba(119, 113, 133, 0.2); + border-radius: 5px; +} +.modalHeader { + padding: 0 0 0.5em 0; + border-color: #e8e7ed; +} +.modalHeader svg path { + fill: #5b476b; +} +.modalHeader > svg path { + fill: #e82828; +} +.modalTitle { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 20px; + line-height: 30px; + color: #e82828; +} +.modalBody { + display: flex; + flex-direction: column; + justify-content: space-between; + padding: 1rem 0 0 0; +} +.modalBody .deleteModalCopy { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 16px; + line-height: 24px; + color: #777185; +} +.modalBody .deleteModalCopy p { + margin-bottom: 0.1rem; +} +.delete { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #e82828; + border-color: #e82828; +} +.delete:hover, +.delete:focus { + color: #ffffff; + background-color: #e82828; +} +.modalFooter { + padding: 1rem 0 0 0; + border: none; + justify-content: center; +} +.closeButtonClass { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #5b476b; + border: 1px solid #5b476b; + border-radius: 5px; + width: 100%; + margin-left: 0; + margin-right: 0; +} +.closeButtonClass:hover, +.closeButtonClass:focus { + color: #ffffff; + background-color: #5b476b; +} diff --git a/src/shared/components/ImageDeleteModal/index.ts b/src/shared/components/ImageDeleteModal/index.ts new file mode 100644 index 0000000..719d0ac --- /dev/null +++ b/src/shared/components/ImageDeleteModal/index.ts @@ -0,0 +1 @@ +export { ImageDeleteModal } from "./ImageDeleteModal"; diff --git a/src/shared/components/ImageNotes/ImageNotes.tsx b/src/shared/components/ImageNotes/ImageNotes.tsx new file mode 100644 index 0000000..8faba51 --- /dev/null +++ b/src/shared/components/ImageNotes/ImageNotes.tsx @@ -0,0 +1,80 @@ +import React, { memo } from 'react'; + +import { Icon } from 'Components/Icons'; +import { Button } from 'Components/Button'; +import { ImageDeleteModal } from 'Containers/ImageDeleteModal'; +import { areEqual } from 'Utils/equalityChecks'; +import { PhotoShareBreadCrumb } from 'Components/PhotoShare/PhotoShareBreadCrumb'; + +import { NoteItem } from './NoteItem/NoteItem'; + +import classes from './imageNotes.module.css'; + +type NoteItems = { + // eslint-disable-next-line + id: number; + // eslint-disable-next-line + content: string; +}; + +interface Props { + noteItems: Array; + isOpen?: boolean; + readonly?: boolean; + imageId?: number; + selectedPhoto: any; + modalCloseClick?: (e: any) => void; + openModal?: (e: any) => void; +} + +const ImageNotes = ({ + noteItems, + isOpen, + readonly = false, + openModal, + imageId, + selectedPhoto, + modalCloseClick, +}: Props) => ( +
    + {!readonly && ( +
    +
    + + +
    +
    + )} +
    + +
    + {noteItems.length > 0 && ( +
      + {noteItems.map((noteItem: NoteItems) => ( + + ))} +
    + )} + {!readonly && } +
    +); + +ImageNotes.defaultProps = { + isOpen: false, + readonly: undefined, + imageId: undefined, + modalCloseClick: undefined, + openModal: undefined, +}; + +const ImageNotesMemo = memo(ImageNotes, areEqual); + +export { ImageNotesMemo as ImageNotes }; diff --git a/src/shared/components/ImageNotes/NoteItem/NoteItem.tsx b/src/shared/components/ImageNotes/NoteItem/NoteItem.tsx new file mode 100644 index 0000000..41bf75d --- /dev/null +++ b/src/shared/components/ImageNotes/NoteItem/NoteItem.tsx @@ -0,0 +1,20 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import classes from './noteItem.module.css'; + +interface Props { + id: number; + content: string; +} + +const NoteItem = ({ id, content }: Props) => ( +
  • + {content} +
  • +); + +const NoteItemMemo = memo(NoteItem, areEqual); + +export { NoteItemMemo as NoteItem }; diff --git a/src/shared/components/ImageNotes/NoteItem/index.ts b/src/shared/components/ImageNotes/NoteItem/index.ts new file mode 100644 index 0000000..b35855e --- /dev/null +++ b/src/shared/components/ImageNotes/NoteItem/index.ts @@ -0,0 +1 @@ +export { NoteItem } from './NoteItem'; diff --git a/src/shared/components/ImageNotes/NoteItem/noteItem.module.css b/src/shared/components/ImageNotes/NoteItem/noteItem.module.css new file mode 100644 index 0000000..6747d70 --- /dev/null +++ b/src/shared/components/ImageNotes/NoteItem/noteItem.module.css @@ -0,0 +1,3 @@ +.noteCard { + padding: 1em; +} diff --git a/src/shared/components/ImageNotes/imageNotes.module.css b/src/shared/components/ImageNotes/imageNotes.module.css new file mode 100644 index 0000000..b905c69 --- /dev/null +++ b/src/shared/components/ImageNotes/imageNotes.module.css @@ -0,0 +1,56 @@ +.notesHeader { + display: flex; + justify-content: space-between; + align-items: center; + padding-bottom: 0.5em; + border-bottom: 1px solid #e8e7ed; +} +.colouredButtonsWrapper { + display: flex; + justify-content: flex-start; + align-items: center; +} +.notesHeader button { + display: flex; + align-items: center; +} +.notesHeader .deleteButton svg { + transform: scale(0.7); +} +.notesHeader .deleteButton span { + color: #e82828; +} +.notesHeader .deleteButton svg path { + fill: #e82828; +} +.notesHeader .optionsButton { + font-weight: 500; + font-size: 14px; + line-height: 20px; + color: #9a00ff; +} +.notesHeader .optionsButton svg path { + fill: #9a00ff; +} +.optionsIconWrapper { + display: flex; + justify-content: center; + align-items: center; + border: 1px solid #9a00ff; + height: 20px; + width: 20px; + border-radius: 30px; + margin-right: 0.7em; +} +.breadCrumb { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 500; + font-size: 14px; + line-height: 17px; + color: #777185; + margin-bottom: 0; + padding-top: 16px; + text-align: center; + padding: 0 !important; +} diff --git a/src/shared/components/ImageNotes/index.ts b/src/shared/components/ImageNotes/index.ts new file mode 100644 index 0000000..51c5efe --- /dev/null +++ b/src/shared/components/ImageNotes/index.ts @@ -0,0 +1 @@ +export { ImageNotes } from "./ImageNotes"; diff --git a/src/shared/components/ImagePlaceHolder/ImagePlaceHolder.tsx b/src/shared/components/ImagePlaceHolder/ImagePlaceHolder.tsx new file mode 100644 index 0000000..b0dcb3b --- /dev/null +++ b/src/shared/components/ImagePlaceHolder/ImagePlaceHolder.tsx @@ -0,0 +1,22 @@ +import React, { memo } from "react"; + +import { areEqual } from "Utils/equalityChecks"; +import classes from "./image.place.holder.module.css"; + +interface Props { + placeHolderClassName?: string; +} + +const ImagePlaceHolder = ({ placeHolderClassName }: Props) => ( +
    +); + +ImagePlaceHolder.defaultProps = { + placeHolderClassName: undefined, +}; +const ImagePlaceHolderMemo = memo(ImagePlaceHolder, areEqual); +export { ImagePlaceHolderMemo as ImagePlaceHolder }; diff --git a/src/shared/components/ImagePlaceHolder/image.place.holder.module.css b/src/shared/components/ImagePlaceHolder/image.place.holder.module.css new file mode 100644 index 0000000..ade1f9c --- /dev/null +++ b/src/shared/components/ImagePlaceHolder/image.place.holder.module.css @@ -0,0 +1,26 @@ +.dimensions { + height: 140px !important; + width: 140px !important; + border-radius: 8px; + margin: 0.25em; +} +.loadingImageBackground { + background: linear-gradient(134.11deg, #e8e7ed 2.7%, #d2cfda 53.61%, #e8e7ed 95.79%); + background-size: 400% 400%; + animation: gradient 3s ease infinite; +} +.pointer { + cursor: pointer; +} + +@keyframes gradient { + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } +} diff --git a/src/shared/components/ImagePlaceHolder/index.ts b/src/shared/components/ImagePlaceHolder/index.ts new file mode 100644 index 0000000..729a80f --- /dev/null +++ b/src/shared/components/ImagePlaceHolder/index.ts @@ -0,0 +1 @@ +export { ImagePlaceHolder } from "./ImagePlaceHolder"; diff --git a/src/shared/components/InviteEmployees/InviteEmployees.tsx b/src/shared/components/InviteEmployees/InviteEmployees.tsx new file mode 100644 index 0000000..3b96d21 --- /dev/null +++ b/src/shared/components/InviteEmployees/InviteEmployees.tsx @@ -0,0 +1,109 @@ +import React, { memo } from 'react'; + +import { areEqualShallow } from 'Utils/equalityChecks'; + +import { Icon } from 'Components/Icons'; +import { TextBox } from 'Components/TextBox'; +import { Form } from 'Components/Form'; +import { Label } from 'Components/Label'; +import { PurpleButton } from 'Components/Button'; +import { CopyToClipboard } from 'react-copy-to-clipboard'; +import { Modal } from 'Components/Modal'; +import { ValidateBackGround } from 'Components/Validation'; +import { InviteEmployeesToast } from './InviteEmployeesToast'; + +import classes from './inviteEmployees.module.css'; + +interface Props { + isOpen?: boolean; + emailLink: string; + inviteEmail: string; + isButtonDisabled: boolean; + formErrors: any; + showToast: boolean; + toastMessage: string; + onCopyClick: (e: any) => void; + onEmailChange: (e: any) => void; + onFormSubmit: (formData: any) => void; + onSendClick: (e: any) => void; + onClickCloseInviteEmployees: (e: any) => void; + header: any; + footer: any; +} + +const InviteEmployees = ({ + isOpen = false, + emailLink, + inviteEmail, + isButtonDisabled, + formErrors, + showToast, + toastMessage, + onCopyClick, + onEmailChange, + onFormSubmit, + onSendClick, + onClickCloseInviteEmployees, + header, + footer, +}: Props) => ( + } + > + {header} +
    +
    + + {emailLink} +
    + +
    + + Copy Link +
    +
    +
    +

    Or Send by email

    +
    + + + +
    {formErrors?.email?.[0]}
    + + Send + +
    +
    + {footer} +
    +); + +InviteEmployees.defaultProps = { + isOpen: false, +}; + +// This to allows default props +const InviteEmployeesMemo = memo(InviteEmployees, areEqualShallow); + +export { InviteEmployeesMemo as InviteEmployees }; diff --git a/src/shared/components/InviteEmployees/InviteEmployeesToast/InviteEmployeesToast.tsx b/src/shared/components/InviteEmployees/InviteEmployeesToast/InviteEmployeesToast.tsx new file mode 100644 index 0000000..dc53728 --- /dev/null +++ b/src/shared/components/InviteEmployees/InviteEmployeesToast/InviteEmployeesToast.tsx @@ -0,0 +1,35 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; +import { CheckedMarkSvg } from 'Components/Icons/CheckedMark'; + +import classes from './inviteEmployeesToast.module.css'; + +export interface Props { + showToast: boolean; + message: string; +} + +const InviteEmployeesToast = ({ showToast = false, message }: Props) => ( +
    +
    + {message} + + + +
    +
    +); + +InviteEmployeesToast.defaultProps = {}; + +const InviteEmployeesToastMemo = memo(InviteEmployeesToast, areEqual); + +export { InviteEmployeesToastMemo as InviteEmployeesToast }; diff --git a/src/shared/components/InviteEmployees/InviteEmployeesToast/index.ts b/src/shared/components/InviteEmployees/InviteEmployeesToast/index.ts new file mode 100644 index 0000000..d34ba58 --- /dev/null +++ b/src/shared/components/InviteEmployees/InviteEmployeesToast/index.ts @@ -0,0 +1 @@ +export { InviteEmployeesToast } from './InviteEmployeesToast'; diff --git a/src/shared/components/InviteEmployees/InviteEmployeesToast/inviteEmployeesToast.module.css b/src/shared/components/InviteEmployees/InviteEmployeesToast/inviteEmployeesToast.module.css new file mode 100644 index 0000000..0df7c9f --- /dev/null +++ b/src/shared/components/InviteEmployees/InviteEmployeesToast/inviteEmployeesToast.module.css @@ -0,0 +1,78 @@ +.toastBase { + height: 40px !important; + width: 100% !important; + z-index: 1000; + box-shadow: none; + border-radius: 0; + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + padding-top: 1rem !important; + padding-bottom: 1rem !important; + transition: opacity 0.15s linear; + position: absolute; + right: 0; + text-align: center; +} +.toast-body-override { + width: 95%; + padding: unset ip !important; +} +.toastCloseButtonContainer { + display: flex; + justify-content: flex-end; + width: 10%; +} +.toastCloseButton { + border-radius: 50% !important; + color: #5b476b !important; + background-color: #fff !important; + padding: 0.25rem !important; + opacity: unset !important; + /* This is the actual svg pulled from bootstrap. not the 0.5em beside center on the 2nd line. This is what has changed */ + background: transparent + url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") + center/0.5em auto no-repeat; +} +.toastIcon { + padding-left: 10px; +} +.toastCloseButton:hover { + color: #000; + text-decoration: none; + opacity: unset !important; +} +.toastText { + font-family: IBM Plex Sans !important; + font-style: normal !important; + font-weight: 600 !important; + font-size: 16px !important; + line-height: 24px !important; + color: #5b476b !important; +} + +.toastSuccess { + background-color: #dcf5f0; + border-bottom: 1px solid #40c9ae !important; +} + +.toastWarning { + background-color: #fff0f0; + border-bottom: 1px solid #e82828; +} + +.toastCloseIcon { + position: absolute; + right: 22px; +} + +@media (max-width: 768px) { + .toastBase { + width: 100%; + /* height: auto; */ + padding: 12px 66px 12px 22px; + } + + .toastText { + font-size: 14px; + } +} diff --git a/src/shared/components/InviteEmployees/index.ts b/src/shared/components/InviteEmployees/index.ts new file mode 100644 index 0000000..eb8b314 --- /dev/null +++ b/src/shared/components/InviteEmployees/index.ts @@ -0,0 +1 @@ +export { InviteEmployees } from './InviteEmployees'; diff --git a/src/shared/components/InviteEmployees/inviteEmployees.module.css b/src/shared/components/InviteEmployees/inviteEmployees.module.css new file mode 100644 index 0000000..e969de2 --- /dev/null +++ b/src/shared/components/InviteEmployees/inviteEmployees.module.css @@ -0,0 +1,198 @@ +.peopleIcon { + position: absolute; + transform: scale(0.5); + width: 40px; + padding-left: 25px; + top: -70px; +} + +.linkContainer { + width: 420px; + height: 96px; + background: #f3f3f6; + border-radius: 8px; + margin: 24px auto; +} + +.linkIcon { + padding-left: 16px; + padding-top: 12px; + border-bottom: 1px solid #ffffff; + padding-bottom: 12px; +} + +.linkText { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 18px; + line-height: 24px; + color: #777185; + padding-left: 9px; +} + +.copyIcon { + padding-top: 10px; + padding-left: 17.4px; +} + +.copyText { + color: #5b476b; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 500; + font-size: 16px; + line-height: 24px; + padding-left: 15px; + cursor: pointer; +} + +.optionText { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 500; + font-size: 16px; + line-height: 24px; + color: #777185; + text-align: center; + margin: 0 auto; + width: 420px; + display: flex; + align-items: center; +} + +.optionText::before, +.optionText::after { + content: ''; + flex: 1; + border-bottom: 1px solid #e8e7ed; +} + +.optionText:not(:empty)::before { + margin-right: 9px; +} + +.optionText:not(:empty)::after { + margin-left: 9px; +} + +.emailLabel { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 14px; + line-height: 20px; + color: #5b476b; + padding-left: 8px; +} + +.form { + max-width: 420px; + margin: 0 auto; + padding-top: 16px; +} + +.sendButton { + position: relative; + width: 136px; + height: 44px; + margin-top: 16px; + box-shadow: none !important; + margin-left: auto; + margin-bottom: 20px; +} + +.sendButton:disabled { + display: none; +} + +.modalTitle { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 20px; + line-height: 30px; + color: #5b476b; + text-align: center; +} + +.modalHeader { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: 0 0 0.5em 0; + border-color: #e8e7ed; + height: 40px; +} + +.modalBody { + padding: 0px 0px 12px 0px !important; + height: auto; +} + +.modalDialog { + max-width: 648px; +} + +.modalContent { + padding: 1.3em 1.5em; + box-shadow: 0px 24px 44px rgba(119, 113, 133, 0.2); + border-radius: 5px; +} + +.validateField { + background-image: unset !important; + border-color: unset !important; + border-top: unset !important; + border-left: unset !important; + border-right: unset !important; + border-radius: unset !important; + background-position: unset !important; + background-repeat: unset !important; + background-size: unset !important; + padding-top: 0.375rem !important; + padding-bottom: 0.375rem !important; + padding-right: 0.75rem !important; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + color: #000000 !important; + padding-left: 8px; +} + +.validateField:focus { + border-color: rgba(154, 0, 255, 0.5) !important; +} +.validField { + border-bottom: 1px solid #d2cfda !important; +} + +.invalidField { + background-color: #fff0f0; + border-bottom: 1px solid #e82828 !important; +} + +.validateField::placeholder { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + /* Placeholder text color */ + color: #b3abc6; + /* opacity: 1; */ + /* Firefox */ +} + +.validateField:focus { + box-shadow: unset !important; + background-color: unset; +} + +.invalidFieldFeedback { + background-color: #fff !important; + margin-top: 0 !important; +} diff --git a/src/shared/components/Label/Label.tsx b/src/shared/components/Label/Label.tsx new file mode 100644 index 0000000..4b2ad4b --- /dev/null +++ b/src/shared/components/Label/Label.tsx @@ -0,0 +1,26 @@ +import React, { memo } from 'react'; +import { areEqualShallow } from 'Utils/equalityChecks'; + +export interface Props { + id?: string; + ariaLabel: string; + htmlFor?: string; + className?: string; + children: any; +} + +const Label = ({ id, ariaLabel, htmlFor, className, children }: Props) => ( + // If htmlFor is not passed, use the id + +); +Label.defaultProps = { + id: undefined, + htmlFor: undefined, + className: undefined, +}; + +const LabelMemo = memo(Label, areEqualShallow); + +export { LabelMemo as Label }; diff --git a/src/shared/components/Label/index.ts b/src/shared/components/Label/index.ts new file mode 100644 index 0000000..dd0252d --- /dev/null +++ b/src/shared/components/Label/index.ts @@ -0,0 +1 @@ +export { Label } from './Label'; diff --git a/src/shared/components/Layouts/DashboardLayout/DashboardLayout.tsx b/src/shared/components/Layouts/DashboardLayout/DashboardLayout.tsx new file mode 100644 index 0000000..8885f64 --- /dev/null +++ b/src/shared/components/Layouts/DashboardLayout/DashboardLayout.tsx @@ -0,0 +1,41 @@ +import React, { memo, ReactNode } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { SideBar } from 'Containers/Dashboard'; +import { Nav } from 'Containers/Nav'; +import { Mask } from 'Components/Mask'; + +import classes from './dashboardLayout.module.css'; + +interface Props { + children: ReactNode; + sideBarDesktop: boolean; + sideBarMobile: boolean; + toggleSideBar: () => void; + pathname: string; +} + +const DashboardLayout = ({ children, sideBarDesktop, sideBarMobile, toggleSideBar, pathname }: Props) => ( +
    +
    + +
    +
    +
    +
    + {sideBarMobile && } +
    {children}
    +
    +
    +); + +const DashboardLayoutMemo = memo(DashboardLayout, areEqual); + +export { DashboardLayoutMemo as DashboardLayout }; diff --git a/src/shared/components/Layouts/DashboardLayout/dashboardLayout.module.css b/src/shared/components/Layouts/DashboardLayout/dashboardLayout.module.css new file mode 100644 index 0000000..8f44482 --- /dev/null +++ b/src/shared/components/Layouts/DashboardLayout/dashboardLayout.module.css @@ -0,0 +1,46 @@ +.dashboardBase { + background-color: #E5E5E5; + min-height: 100vh; + overflow-x: hidden; + z-index: 1; +} + +.mainContent { + display: flex; + flex-direction: column; + width: 100%; + min-height: 100vh; + position: relative; + left: 0; + padding-left: 265px; + transition: padding-left 300ms; +} + +.navBar { + width: 100%; + transition: width 1s; +} + +.content { + padding: 20px 25px; + width: 100%; +} + +/* + * sidebar closed styles +*/ + +.sideBarClosed .mainContent { + padding-left: 70px; +} + +/* + * Media queries +*/ + +@media screen and (max-width: 991px) { + .mainContent { + width: 100%; + padding-left: 0; + } +} diff --git a/src/shared/components/Layouts/DashboardLayout/index.ts b/src/shared/components/Layouts/DashboardLayout/index.ts new file mode 100644 index 0000000..b2848d6 --- /dev/null +++ b/src/shared/components/Layouts/DashboardLayout/index.ts @@ -0,0 +1 @@ +export { DashboardLayout } from './DashboardLayout'; diff --git a/src/shared/components/Layouts/GuestLayout/GuestLayout.tsx b/src/shared/components/Layouts/GuestLayout/GuestLayout.tsx new file mode 100644 index 0000000..0c63e28 --- /dev/null +++ b/src/shared/components/Layouts/GuestLayout/GuestLayout.tsx @@ -0,0 +1,39 @@ +import React, { memo, ReactNode } from 'react'; +import { Icon } from 'Components/Icons'; +import { Toast } from 'Components/Toast'; +import { Anchor } from 'Components/Anchor'; + +import { areEqual } from 'Utils/equalityChecks'; + +import classes from './guestLayout.module.css'; + +interface Props { + children: ReactNode; +} + +const GuestLayout = ({ children }: Props) => ( + // This will contain the basic css used to display the Company Authentication UIs +
    +
    +
    +
    +
    + + + +

    Ready, set and blast off!

    +

    Welcome to Company.

    +
    +
    +
    +
    + +
    {children}
    +
    +
    +
    +); + +const GuestLayoutMemo = memo(GuestLayout, areEqual); + +export { GuestLayoutMemo as GuestLayout }; diff --git a/src/shared/components/Layouts/GuestLayout/guestLayout.module.css b/src/shared/components/Layouts/GuestLayout/guestLayout.module.css new file mode 100644 index 0000000..4859b09 --- /dev/null +++ b/src/shared/components/Layouts/GuestLayout/guestLayout.module.css @@ -0,0 +1,60 @@ +/* Bootstrap override */ +/* Remove the padding which was triggering scrollbars */ +/* .container-fluid-override { + padding: 0 !important; +} */ + +/* Remove the margins which were triggering scrollbars */ +.row-override { + margin: 0 !important; +} +.noPadding { + padding: 0 !important; +} +/* End Bootstrap override */ + +/* Custom Css */ +.leftContainer { + background: linear-gradient(149.9deg, #6d00e6 33.97%, #9601ff 78.44%); + min-height: 100vh; + padding: 0 1.5em; + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; +} +.rightContainer { + height: 100vh; + background: #fff; + overflow: auto; +} + +.logoDesktop { + max-width: 300px; + margin-bottom: 3em; +} +.logoDesktop > path { + fill: #ffffff; +} +.leftContainerCopy { + color: #ffffff; + max-width: 380px; + margin-top: 5em; +} +.title { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: calc(1.12em + 0.6vw); + line-height: calc(1.12em + 0.6vw); + margin-bottom: 0.7rem; + text-align: left; +} + +.lede { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 18px; + line-height: 24px; +} diff --git a/src/shared/components/Layouts/GuestLayout/index.ts b/src/shared/components/Layouts/GuestLayout/index.ts new file mode 100644 index 0000000..fc8772d --- /dev/null +++ b/src/shared/components/Layouts/GuestLayout/index.ts @@ -0,0 +1 @@ +export { GuestLayout } from "./GuestLayout"; diff --git a/src/shared/components/Layouts/NotFoundLayout/NotFoundLayout.tsx b/src/shared/components/Layouts/NotFoundLayout/NotFoundLayout.tsx new file mode 100644 index 0000000..31ddcfb --- /dev/null +++ b/src/shared/components/Layouts/NotFoundLayout/NotFoundLayout.tsx @@ -0,0 +1,38 @@ +import React, { memo } from 'react'; + +import { Icon } from 'Components/Icons'; +import { PurpleButton } from 'Components/Button/PurpleButton'; + +import { areEqual } from 'Utils/equalityChecks'; + +import classes from './notFoundLayout.module.css'; + +interface Props { + onFormButtonClick; +} + +const NotFoundLayout = ({ onFormButtonClick }: Props) => ( +
    + +
    +
    Page Not Found
    + +
    + + Go Back To Homepage + +
    + +
    Sorry, we couldn't find the page you were looking for.
    +
    + If you need any further assistance please contact our +
    + support team at - support@rocketplantech.com +
    +
    +
    +); + +const NotFoundLayoutMemo = memo(NotFoundLayout, areEqual); + +export { NotFoundLayoutMemo as NotFoundLayout }; diff --git a/src/shared/components/Layouts/NotFoundLayout/index.ts b/src/shared/components/Layouts/NotFoundLayout/index.ts new file mode 100644 index 0000000..9edcf64 --- /dev/null +++ b/src/shared/components/Layouts/NotFoundLayout/index.ts @@ -0,0 +1 @@ +export { NotFoundLayout } from './NotFoundLayout'; diff --git a/src/shared/components/Layouts/NotFoundLayout/notFoundLayout.module.css b/src/shared/components/Layouts/NotFoundLayout/notFoundLayout.module.css new file mode 100644 index 0000000..bc6a5a7 --- /dev/null +++ b/src/shared/components/Layouts/NotFoundLayout/notFoundLayout.module.css @@ -0,0 +1,47 @@ +.logo { + max-width: 148px; + margin-bottom: 3em; + padding-top: 24.45px; + padding-left: 24px; +} +.header { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: bold; + font-size: 48px; + line-height: 40px; + color: #5b476b; + padding-bottom: 50px; +} +.buttonContainer { + width: 320px; + height: 45px; + margin: 0 auto; +} +.notFoundIcon { + padding-top: 50px; + box-sizing: content-box; +} +.description { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 500; + font-size: 20px; + line-height: 30px; + color: #777185; + padding-top: 56px; + margin: 0 auto; +} +.support { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 500; + font-size: 20px; + line-height: 30px; + padding-top: 61px; + max-width: 500px; + margin: 0 auto; +} +.container { + text-align: center; +} diff --git a/src/shared/components/Layouts/PhotoShareLayout/PhotoShareLayout.tsx b/src/shared/components/Layouts/PhotoShareLayout/PhotoShareLayout.tsx new file mode 100644 index 0000000..2904c68 --- /dev/null +++ b/src/shared/components/Layouts/PhotoShareLayout/PhotoShareLayout.tsx @@ -0,0 +1,17 @@ +import React, { memo, ReactNode } from "react"; + +import { areEqual } from "Utils/equalityChecks"; + +import classes from "./photoShareLayout.module.css"; + +interface Props { + children: ReactNode; +} + +const PhotoShareLayout = ({ children }: Props) => ( +
    {children}
    +); + +const PhotoShareLayoutMemo = memo(PhotoShareLayout, areEqual); + +export { PhotoShareLayoutMemo as PhotoShareLayout }; diff --git a/src/shared/components/Layouts/PhotoShareLayout/index.ts b/src/shared/components/Layouts/PhotoShareLayout/index.ts new file mode 100644 index 0000000..4fb2689 --- /dev/null +++ b/src/shared/components/Layouts/PhotoShareLayout/index.ts @@ -0,0 +1 @@ +export { PhotoShareLayout } from "./PhotoShareLayout"; diff --git a/src/shared/components/Layouts/PhotoShareLayout/photoShareLayout.module.css b/src/shared/components/Layouts/PhotoShareLayout/photoShareLayout.module.css new file mode 100644 index 0000000..9a84922 --- /dev/null +++ b/src/shared/components/Layouts/PhotoShareLayout/photoShareLayout.module.css @@ -0,0 +1,45 @@ +.photoShareBase { + min-height: 100vh; + /* overflow-x: hidden; */ + z-index: 1; +} + +/* .mainContent { + display: flex; + flex-direction: column; + width: 100%; + min-height: 100vh; + position: relative; + left: 0; + padding-left: 265px; + transition: padding-left 300ms; +} */ + +/* .navBar { + width: 100%; + transition: width 1s; +} + +.content { + padding: 20px 25px; + width: 100%; +} */ + +/* + * sidebar closed styles +*/ + +/* .sideBarClosed .mainContent { + padding-left: 70px; +} */ + +/* + * Media queries +*/ +/* +@media screen and (max-width: 991px) { + .mainContent { + width: 100%; + padding-left: 0; + } +} */ diff --git a/src/shared/components/Layouts/PhotoViewLayout/PhotoViewLayout.tsx b/src/shared/components/Layouts/PhotoViewLayout/PhotoViewLayout.tsx new file mode 100644 index 0000000..6551e47 --- /dev/null +++ b/src/shared/components/Layouts/PhotoViewLayout/PhotoViewLayout.tsx @@ -0,0 +1,14 @@ +import React, { memo, ReactNode } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; +import classes from './photoViewLayout.module.css'; + +interface Props { + children: ReactNode; +} + +const PhotoViewLayout = ({ children }: Props) =>
    {children}
    ; + +const PhotoViewLayoutMemo = memo(PhotoViewLayout, areEqual); + +export { PhotoViewLayoutMemo as PhotoViewLayout }; diff --git a/src/shared/components/Layouts/PhotoViewLayout/index.ts b/src/shared/components/Layouts/PhotoViewLayout/index.ts new file mode 100644 index 0000000..17673e5 --- /dev/null +++ b/src/shared/components/Layouts/PhotoViewLayout/index.ts @@ -0,0 +1 @@ +export { PhotoViewLayout } from "./PhotoViewLayout"; diff --git a/src/shared/components/Layouts/PhotoViewLayout/photoViewLayout.module.css b/src/shared/components/Layouts/PhotoViewLayout/photoViewLayout.module.css new file mode 100644 index 0000000..84a1e6f --- /dev/null +++ b/src/shared/components/Layouts/PhotoViewLayout/photoViewLayout.module.css @@ -0,0 +1,6 @@ +body { + background-color: #ffffff !important; +} +.photoViewBase { + min-height: 100vh; +} diff --git a/src/shared/components/Layouts/Placeholder/PlaceholderLayout.tsx b/src/shared/components/Layouts/Placeholder/PlaceholderLayout.tsx new file mode 100644 index 0000000..74935f0 --- /dev/null +++ b/src/shared/components/Layouts/Placeholder/PlaceholderLayout.tsx @@ -0,0 +1,22 @@ +import React, { memo } from "react"; + +import { RocketEmblemSvg } from "Components/Icons/RocketEmblem"; +import { areEqual } from "Utils/equalityChecks"; + +interface Props { + svgItem?: number; +} + +const PlaceholderLayout = ({ svgItem }: Props) => ( +
    + +
    +); + +PlaceholderLayout.defaultProps = { + svgItem: 1, +}; + +const PlaceholderLayoutMemo = memo(PlaceholderLayout, areEqual); + +export { PlaceholderLayoutMemo as PlaceholderLayout }; diff --git a/src/shared/components/Layouts/Placeholder/index.ts b/src/shared/components/Layouts/Placeholder/index.ts new file mode 100644 index 0000000..c22f5a2 --- /dev/null +++ b/src/shared/components/Layouts/Placeholder/index.ts @@ -0,0 +1 @@ +export { PlaceholderLayout } from './PlaceholderLayout'; diff --git a/src/shared/components/Layouts/ProjectTabsLayout/ProjectTabsLayout/ProjectTabsLayout.tsx b/src/shared/components/Layouts/ProjectTabsLayout/ProjectTabsLayout/ProjectTabsLayout.tsx new file mode 100644 index 0000000..80458f2 --- /dev/null +++ b/src/shared/components/Layouts/ProjectTabsLayout/ProjectTabsLayout/ProjectTabsLayout.tsx @@ -0,0 +1,38 @@ +import React, { memo, ReactNode } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +import { TabsMenu } from 'Containers/Layouts/TabsMenu'; +import { ProjectOptions } from 'Containers/Project'; +import { ProjectUnavailable } from 'Components/Project'; +import { projectTabs } from 'Utils/tabs'; + +import classes from './projectTabsLayout.module.css'; + +interface Props { + tab: string; + projectUnavailable: boolean; + children: ReactNode; + onTabClick: (tab: string) => void; +} + +const ProjectTabsLayout = ({ children, tab, projectUnavailable, onTabClick }: Props) => ( +
    +
    +
    +
    +
    + + {!projectUnavailable && } +
    +
    + {projectUnavailable ? : children} +
    +
    +
    +
    +
    +); + +const ProjectTabsLayoutMemo = memo(ProjectTabsLayout, areEqual); + +export { ProjectTabsLayoutMemo as ProjectTabsLayout }; diff --git a/src/shared/components/Layouts/ProjectTabsLayout/ProjectTabsLayout/index.ts b/src/shared/components/Layouts/ProjectTabsLayout/ProjectTabsLayout/index.ts new file mode 100644 index 0000000..961e922 --- /dev/null +++ b/src/shared/components/Layouts/ProjectTabsLayout/ProjectTabsLayout/index.ts @@ -0,0 +1 @@ +export { ProjectTabsLayout } from './ProjectTabsLayout'; diff --git a/src/shared/components/Layouts/ProjectTabsLayout/ProjectTabsLayout/projectTabsLayout.module.css b/src/shared/components/Layouts/ProjectTabsLayout/ProjectTabsLayout/projectTabsLayout.module.css new file mode 100644 index 0000000..e62cf55 --- /dev/null +++ b/src/shared/components/Layouts/ProjectTabsLayout/ProjectTabsLayout/projectTabsLayout.module.css @@ -0,0 +1,9 @@ +.projectsTabWrapper { + background-color: #ffffff; +} + +.tabsContainer { + width: 100%; + display: flex; + justify-content: space-between; +} diff --git a/src/shared/components/Layouts/ProjectTabsLayout/TabsMenu/TabsMenu.tsx b/src/shared/components/Layouts/ProjectTabsLayout/TabsMenu/TabsMenu.tsx new file mode 100644 index 0000000..af6bee7 --- /dev/null +++ b/src/shared/components/Layouts/ProjectTabsLayout/TabsMenu/TabsMenu.tsx @@ -0,0 +1,38 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; +import { Tab } from 'Components/Tabs/Tab'; + +import { width } from 'Utils/screen'; +import classes from './tabsMenu.module.css'; + +interface Props { + activeTab: string; + tabs: any[]; + onTabClick: (tab: string) => void; +} + +const TabsMenu = ({ activeTab, tabs, onTabClick }: Props) => ( +
      + {tabs.map(({ title, tab }: any) => ( + onTabClick(tab)} // limited usage, not recommend for reusable components + > + {title} + + ))} +
    +); + +const TabsMenuMemo = memo(TabsMenu, areEqual); + +export { TabsMenuMemo as TabsMenu }; diff --git a/src/shared/components/Layouts/ProjectTabsLayout/TabsMenu/index.ts b/src/shared/components/Layouts/ProjectTabsLayout/TabsMenu/index.ts new file mode 100644 index 0000000..e63d034 --- /dev/null +++ b/src/shared/components/Layouts/ProjectTabsLayout/TabsMenu/index.ts @@ -0,0 +1 @@ +export { TabsMenu } from './TabsMenu'; diff --git a/src/shared/components/Layouts/ProjectTabsLayout/TabsMenu/tabsMenu.module.css b/src/shared/components/Layouts/ProjectTabsLayout/TabsMenu/tabsMenu.module.css new file mode 100644 index 0000000..b9dfca0 --- /dev/null +++ b/src/shared/components/Layouts/ProjectTabsLayout/TabsMenu/tabsMenu.module.css @@ -0,0 +1,26 @@ +.flexCenter { + display: flex; + align-items: center; + justify-content: flex-start; +} + +.button { + min-width: 130px; +} + +.active-Tab, +.active-Tab:hover { + color: #ffffff !important; + font-weight: 600; + border-radius: 0 0 16px 16px; + background: linear-gradient(316.14deg, #6d00e6 1.84%, #9a00ff 96.25%) !important; +} +.active-Tab::after { + content: attr(data-text); + height: 0; + visibility: hidden; + overflow: hidden; + user-select: none; + pointer-events: none; + font-weight: 600 !important; +} diff --git a/src/shared/components/Layouts/ProjectTabsLayout/index.ts b/src/shared/components/Layouts/ProjectTabsLayout/index.ts new file mode 100644 index 0000000..e2c7911 --- /dev/null +++ b/src/shared/components/Layouts/ProjectTabsLayout/index.ts @@ -0,0 +1,2 @@ +export { ProjectTabsLayout } from './ProjectTabsLayout'; +export { TabsMenu } from '../../TabsMenu'; diff --git a/src/shared/components/Layouts/SplashPageLayout/SplashPageLayout.tsx b/src/shared/components/Layouts/SplashPageLayout/SplashPageLayout.tsx new file mode 100644 index 0000000..51ecc64 --- /dev/null +++ b/src/shared/components/Layouts/SplashPageLayout/SplashPageLayout.tsx @@ -0,0 +1,15 @@ +import React, { memo, ReactNode } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +interface Props { + children: ReactNode; +} + +const SplashPageLayout = ({ children }: Props) => ( +
    {children}
    +); + +const SplashPageLayoutMemo = memo(SplashPageLayout, areEqual); + +export { SplashPageLayoutMemo as SplashPageLayout }; diff --git a/src/shared/components/Layouts/SplashPageLayout/index.ts b/src/shared/components/Layouts/SplashPageLayout/index.ts new file mode 100644 index 0000000..444037a --- /dev/null +++ b/src/shared/components/Layouts/SplashPageLayout/index.ts @@ -0,0 +1 @@ +export { SplashPageLayout } from './SplashPageLayout'; diff --git a/src/shared/components/Layouts/UserTabsLayout/UserTabsLayout.tsx b/src/shared/components/Layouts/UserTabsLayout/UserTabsLayout.tsx new file mode 100644 index 0000000..8b8690f --- /dev/null +++ b/src/shared/components/Layouts/UserTabsLayout/UserTabsLayout.tsx @@ -0,0 +1,43 @@ +import React, { memo, ReactNode, useCallback } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; +import { useHistory } from 'react-router-dom'; + +import { TabsMenu } from 'Components/TabsMenu'; +import { userProfileTabs } from 'Utils/tabs'; + +import classes from './userTabsLayout.module.css'; + +interface Props { + tab: string; + children: ReactNode; +} + +const UserTabsLayout = ({ children, tab }: Props) => { + const history = useHistory(); + + // redirect to the specific tab route + const onTabClick = useCallback((tab: string) => { + history.push(`/user/${tab}`); + }, []); + + return ( +
    +
    +
    +
    +
    + +
    +
    + {children} +
    +
    +
    +
    +
    + ); +}; + +const UserTabsLayoutMemo = memo(UserTabsLayout, areEqual); + +export { UserTabsLayoutMemo as UserTabsLayout }; diff --git a/src/shared/components/Layouts/UserTabsLayout/index.ts b/src/shared/components/Layouts/UserTabsLayout/index.ts new file mode 100644 index 0000000..a8dac42 --- /dev/null +++ b/src/shared/components/Layouts/UserTabsLayout/index.ts @@ -0,0 +1 @@ +export { UserTabsLayout } from './UserTabsLayout'; diff --git a/src/shared/components/Layouts/UserTabsLayout/userTabsLayout.module.css b/src/shared/components/Layouts/UserTabsLayout/userTabsLayout.module.css new file mode 100644 index 0000000..7263fff --- /dev/null +++ b/src/shared/components/Layouts/UserTabsLayout/userTabsLayout.module.css @@ -0,0 +1,9 @@ +.userProfileTabWrapper { + background-color: #ffffff; +} + +.tabsContainer { + width: 100%; + display: flex; + justify-content: space-between; +} diff --git a/src/shared/components/Layouts/index.ts b/src/shared/components/Layouts/index.ts new file mode 100644 index 0000000..6032ca9 --- /dev/null +++ b/src/shared/components/Layouts/index.ts @@ -0,0 +1,6 @@ +export { GuestLayout } from './GuestLayout'; +export { DashboardLayout } from './DashboardLayout'; +export { PhotoViewLayout } from './PhotoViewLayout'; +export { SplashPageLayout } from './SplashPageLayout'; +export { PhotoShareLayout } from './PhotoShareLayout'; +export { NotFoundLayout } from './NotFoundLayout'; diff --git a/src/shared/components/MapPin/MapPin.tsx b/src/shared/components/MapPin/MapPin.tsx new file mode 100644 index 0000000..646ed17 --- /dev/null +++ b/src/shared/components/MapPin/MapPin.tsx @@ -0,0 +1,22 @@ +import { Icon } from 'Components/Icons'; +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +interface Props { + onClick: any; + selected: boolean; + // eslint-disable-next-line react/no-unused-prop-types + lat?: number; + // eslint-disable-next-line react/no-unused-prop-types + lng?: number; +} + +const MapPin = ({ onClick, selected }: Props) => ; + +MapPin.defaultProps = { + lat: 0, + lng: 0, +}; + +const MapPinMemo = memo(MapPin, areEqual); +export { MapPinMemo as MapPin }; diff --git a/src/shared/components/MapPin/index.ts b/src/shared/components/MapPin/index.ts new file mode 100644 index 0000000..351e041 --- /dev/null +++ b/src/shared/components/MapPin/index.ts @@ -0,0 +1 @@ +export { MapPin } from './MapPin'; diff --git a/src/shared/components/MapPin/mapPin.module.css b/src/shared/components/MapPin/mapPin.module.css new file mode 100644 index 0000000..e69de29 diff --git a/src/shared/components/Mask/Mask.tsx b/src/shared/components/Mask/Mask.tsx new file mode 100644 index 0000000..0b4a749 --- /dev/null +++ b/src/shared/components/Mask/Mask.tsx @@ -0,0 +1,24 @@ +import React, { memo } from "react"; + +import { areEqual } from "Utils/equalityChecks"; + +import classes from "./mask.module.css"; + +interface Props { + toggleSideBar: (e: any) => void; +} + +const Mask = ({ toggleSideBar }: Props) => ( + +); + +const MaskMemo = memo(Mask, areEqual); + +export { MaskMemo as Mask }; diff --git a/src/shared/components/Mask/index.ts b/src/shared/components/Mask/index.ts new file mode 100644 index 0000000..aa2cdb1 --- /dev/null +++ b/src/shared/components/Mask/index.ts @@ -0,0 +1 @@ +export { Mask } from './Mask'; diff --git a/src/shared/components/Mask/mask.module.css b/src/shared/components/Mask/mask.module.css new file mode 100644 index 0000000..6d23da6 --- /dev/null +++ b/src/shared/components/Mask/mask.module.css @@ -0,0 +1,9 @@ +.mask { + transition: opacity 600ms ease-out; + position: absolute; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.35); + overflow: hidden; + z-index: 999; +} diff --git a/src/shared/components/MobileWarningModal/MobileWarningModal.tsx b/src/shared/components/MobileWarningModal/MobileWarningModal.tsx new file mode 100644 index 0000000..26dfaa9 --- /dev/null +++ b/src/shared/components/MobileWarningModal/MobileWarningModal.tsx @@ -0,0 +1,35 @@ +import React, { memo } from 'react'; + +import { Modal } from 'Components/Modal'; +import { Icon } from 'Components/Icons'; + +import { areEqual } from 'Utils/equalityChecks'; +import { Button } from 'Components/Button'; + +import classes from './mobileWarningModal.module.css'; + +interface Props { + isOpen: boolean; + modalCloseClick: (e: any) => void; +} + +const MobileWarningModal = ({ isOpen, modalCloseClick }: Props) => ( + +

    We have an app!

    + +
    Try the Company iOS App with the link below
    + + App store link + +
    + Our Company WebApp isn’t optimized for mobile devices yet. We recommend using the iOS App for the best experience. +
    + +
    +); + +const MobileWarningModalMemo = memo(MobileWarningModal, areEqual); + +export { MobileWarningModalMemo as MobileWarningModal }; diff --git a/src/shared/components/MobileWarningModal/index.ts b/src/shared/components/MobileWarningModal/index.ts new file mode 100644 index 0000000..0afe1be --- /dev/null +++ b/src/shared/components/MobileWarningModal/index.ts @@ -0,0 +1 @@ +export { MobileWarningModal } from './MobileWarningModal'; diff --git a/src/shared/components/MobileWarningModal/mobileWarningModal.module.css b/src/shared/components/MobileWarningModal/mobileWarningModal.module.css new file mode 100644 index 0000000..bb12061 --- /dev/null +++ b/src/shared/components/MobileWarningModal/mobileWarningModal.module.css @@ -0,0 +1,58 @@ +.modal { + font-family: IBM Plex Sans; + font-style: normal; + text-align: center; + background: white; +} + +.modalDialog { + height: 100%; + width: 100%; + margin: 0 auto; +} + +.modalContent { + height: 100%; + width: 100%; + border: unset; + border-radius: unset; +} + +.modalBody { + padding-top: 40px; +} + +.importantText { + padding-bottom: 25px; + + font-weight: bold; + font-size: 28px; + line-height: 40px; + + color: #000000; +} + +.image { + padding-top: 25px; + width: 150px; +} + +.text { + padding-top: 25px; + + font-weight: normal; + font-size: 16px; + line-height: 24px; + + color: #777185; +} + +.button { + padding-top: 25px; + + font-weight: 600; + font-size: 16px; + line-height: 24px; + + color: #5b476b; +} diff --git a/src/shared/components/Modal/Modal.tsx b/src/shared/components/Modal/Modal.tsx new file mode 100644 index 0000000..626305c --- /dev/null +++ b/src/shared/components/Modal/Modal.tsx @@ -0,0 +1,176 @@ +import React, { useEffect, useRef, useState, MouseEvent, ReactNode, memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { CloseButton } from 'Components/Button/CloseButton'; +import { Modal as BsModal } from 'bootstrap'; +import { Icon } from 'Components/Icons'; + +interface CssClasses { + modal?: string; + modalDialog?: string; + modalContent?: string; + modalHeader?: string; + modalTitle?: string; + modalBody?: string; + modalFooter?: string; + closeButtonClass?: string; + saveButtonClass?: string; +} + +interface Props { + // Attributes + children: ReactNode; + classes?: CssClasses; + id?: string; + title: string; + isOpen: boolean; + closeButtonText?: string; + modalHeader?: boolean; + leftHeaderIcon?: string; + modalFooter?: boolean; + useCircleCloseButton?: boolean; + footerButtons?: ReactNode; + // Data Attributes + dataBsBackdrop?: string; + dataBsKeyboard?: string; + // Events + modalOpen?: () => void; + onLeftHeaderIconClick?: (e: MouseEvent) => void; + modalCloseClick?: (e: MouseEvent) => void; + setIsOpen?: (isOpen: boolean) => void; + toast?: ReactNode; +} + +const Modal = ({ + children, + classes, + id = 'modalId', + title, + isOpen = false, + closeButtonText = 'Close', + modalHeader, + leftHeaderIcon, + modalFooter, + useCircleCloseButton = false, + footerButtons, + modalOpen, + onLeftHeaderIconClick, + modalCloseClick, + setIsOpen, + dataBsBackdrop, + dataBsKeyboard, + toast, +}: Props) => { + const [modal, setModal] = useState(null); + const modalRef = useRef(undefined); + + useEffect(() => { + // Instantiate the bs modal + if (!modal) setModal(new BsModal(modalRef.current)); + + // If the modal exists and the user wants it open, open it + if (modal && isOpen) { + modal.show(); + + // If the parent sends in a method to handle the modal open. + if (modalOpen) modalOpen(); + } + + // If the modal exists and the user wants it close, close it + if (modal && !isOpen) { + modal.hide(); + } + + return () => { + if (modal && isOpen) { + modal.hide(); + } + }; + }, [isOpen, modal]); + + const onModalOpeCloseClick = (e: MouseEvent) => { + e.preventDefault(); + modal.hide(); + + // If the parent sends in a method to handle the modal close, fire it + if (modalCloseClick) modalCloseClick(e); + + // Reset the isOpen prop, sent in by the parent + if (setIsOpen) setIsOpen(!isOpen); + }; + return ( +
    { + // Set the ref.current to the ref, before useEffect is called. + modalRef.current = ref; + }} + tabIndex={-1} + id={id} + aria-labelledby={id} + aria-hidden="true" + data-bs-backdrop={dataBsBackdrop} + data-bs-keyboard={dataBsKeyboard} + > +
    +
    + {modalHeader && ( +
    + {leftHeaderIcon && } +
    + {title} +
    + + + +
    + )} + +
    {children}
    + + {useCircleCloseButton && ( +
    + +
    + )} + + {modalFooter && ( +
    + + {footerButtons} +
    + )} + {toast} +
    +
    +
    + ); +}; + +Modal.defaultProps = { + classes: undefined, + id: undefined, + closeButtonText: undefined, + modalHeader: false, + leftHeaderIcon: undefined, + modalFooter: false, + modalOpen: undefined, + modalCloseClick: undefined, + onLeftHeaderIconClick: undefined, + setIsOpen: undefined, + useCircleCloseButton: false, + footerButtons: undefined, + dataBsBackdrop: 'static', + dataBsKeyboard: 'false', + toast: undefined, +}; + +const ModalMemo = memo(Modal, areEqual); +export { ModalMemo as Modal }; diff --git a/src/shared/components/Modal/index.ts b/src/shared/components/Modal/index.ts new file mode 100644 index 0000000..8deb0a3 --- /dev/null +++ b/src/shared/components/Modal/index.ts @@ -0,0 +1 @@ +export { Modal } from './Modal'; diff --git a/src/shared/components/Nav/Nav.tsx b/src/shared/components/Nav/Nav.tsx new file mode 100644 index 0000000..541217d --- /dev/null +++ b/src/shared/components/Nav/Nav.tsx @@ -0,0 +1,58 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; + +import { Icon } from 'Components/Icons'; + +import { PurpleButton } from 'Components/Button'; +import classes from './nav.module.css'; + +interface Props { + userAvatar: any; + firstName: string; + toggleSideBar: (e: any) => void; + toAccountOnClick: (e: any) => void; +} + +const Nav = ({ userAvatar, firstName, toggleSideBar, toAccountOnClick }: Props) => ( +
    +
    + +
    +
    +
    + {/* + Create Project + */} +
    + +
    + + + +
    + + +
    + + {userAvatar} + +
    +
    +
    +); + +const NavMemo = memo(Nav, areEqual); +export { NavMemo as Nav }; diff --git a/src/shared/components/Nav/index.ts b/src/shared/components/Nav/index.ts new file mode 100644 index 0000000..d21bdc2 --- /dev/null +++ b/src/shared/components/Nav/index.ts @@ -0,0 +1 @@ +export { Nav } from './Nav'; diff --git a/src/shared/components/Nav/nav.module.css b/src/shared/components/Nav/nav.module.css new file mode 100644 index 0000000..ef8007b --- /dev/null +++ b/src/shared/components/Nav/nav.module.css @@ -0,0 +1,101 @@ +.container { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + padding: 10px 25px; + background-color: #ffffff; + width: 100%; + height: 70px; + -webkit-box-shadow: 0 1px 18px rgba(122, 111, 252, 0.15); + box-shadow: 0 1px 18px rgba(122, 111, 252, 0.15); + transition: height 300ms; +} + +.right { + display: flex; + flex-direction: row; + justify-content: flex-end; + align-self: center; + align-items: center; + width: 25%; +} + +.buttonContainer { + margin-right: 24px; +} + +.createProjectButton { + width: 160px; + height: 44px; + padding: 0; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + text-align: center; +} + +.welcomeContainer { + display: flex; + min-width: 86px; + max-width: 120px; + margin-right: 12px; +} + +.welcome { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 13px; + line-height: 16px; + color: #000000; + text-decoration: none; +} + +.logo { + width: 22px; + height: 22px; +} + +.accountBox { + width: 40px; + height: 40px; + border-radius: 50%; + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 18px; + line-height: 23px; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + color: #000000; + background-color: #d2cfda; +} + +.supportIconContainer { + margin-right: 16px; +} + +/* + * Media queries +*/ + +@media screen and (min-width: 991px) { + .hamburgerMenu { + display: none; + } +} + +@media screen and (max-width: 991px) { + .welcomeContainer { + display: none; + } + + .container { + height: 50px; + } +} diff --git a/src/shared/components/NoEmployeesPlaceholder/NoEmployeesPlaceholder.tsx b/src/shared/components/NoEmployeesPlaceholder/NoEmployeesPlaceholder.tsx new file mode 100644 index 0000000..e8e1c92 --- /dev/null +++ b/src/shared/components/NoEmployeesPlaceholder/NoEmployeesPlaceholder.tsx @@ -0,0 +1,20 @@ +import React, { memo } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; +import { Icon } from '../Icons'; + +import classes from './noEmployeesPlaceholder.module.css'; + +const NoEmployeesPlaceholder = () => ( +
    +
    + +
    +

    You haven't added any employees yet

    +

    Go to the people section, and invite your employees to join your company!

    +
    +); + +const NoEmployeesPlaceholderMemo = memo(NoEmployeesPlaceholder, areEqual); + +export { NoEmployeesPlaceholderMemo as NoEmployeesPlaceholder }; diff --git a/src/shared/components/NoEmployeesPlaceholder/index.ts b/src/shared/components/NoEmployeesPlaceholder/index.ts new file mode 100644 index 0000000..334e982 --- /dev/null +++ b/src/shared/components/NoEmployeesPlaceholder/index.ts @@ -0,0 +1 @@ +export { NoEmployeesPlaceholder } from './NoEmployeesPlaceholder'; diff --git a/src/shared/components/NoEmployeesPlaceholder/noEmployeesPlaceholder.module.css b/src/shared/components/NoEmployeesPlaceholder/noEmployeesPlaceholder.module.css new file mode 100644 index 0000000..6465d6e --- /dev/null +++ b/src/shared/components/NoEmployeesPlaceholder/noEmployeesPlaceholder.module.css @@ -0,0 +1,31 @@ +.container { + width: 100%; + height: 450px; +} + +.peopleIcon { + text-align: center; + padding-bottom: 16px; +} + +.information { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 24px; + text-align: center; + color: #777185; +} + +.instructions { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: normal; + font-size: 14px; + line-height: 21px; + text-align: center; + color: #000000; + max-width: 271px; + margin: auto; +} diff --git a/src/shared/components/Notes/AllNotesAccordion/AllNotesAccordion.tsx b/src/shared/components/Notes/AllNotesAccordion/AllNotesAccordion.tsx new file mode 100644 index 0000000..ee46e39 --- /dev/null +++ b/src/shared/components/Notes/AllNotesAccordion/AllNotesAccordion.tsx @@ -0,0 +1,64 @@ +import React, { memo, ReactNode } from 'react'; + +import { areEqual } from 'Utils/equalityChecks'; +import { Button } from 'Components/Button'; +import { Icon } from 'Components/Icons'; +import classes from './allNotesAccordion.module.css'; + +interface Props { + children: ReactNode; + id: number; + icon?: string; + type: string; + title: string; + totalNoteCount: number; + isOpen: boolean; + onToggleClick?: (e: any) => void; +} + +const AllNotesAccordion = ({ children, id, icon, type, title, isOpen, totalNoteCount, onToggleClick }: Props) => ( +
    +
    +
    +
    +
    + +
    {title}
    +
    + + {!isOpen &&
    {`${totalNoteCount} Notes`}
    } + +
    +
    +
    {children}
    +
    +
    +
    +
    +); + +AllNotesAccordion.defaultProps = { + icon: undefined, + onToggleClick: undefined, +}; +const AllNotesAccordionMemo = memo(AllNotesAccordion, areEqual); + +export { AllNotesAccordionMemo as AllNotesAccordion }; diff --git a/src/shared/components/Notes/AllNotesAccordion/allNotesAccordion.module.css b/src/shared/components/Notes/AllNotesAccordion/allNotesAccordion.module.css new file mode 100644 index 0000000..8a3e57d --- /dev/null +++ b/src/shared/components/Notes/AllNotesAccordion/allNotesAccordion.module.css @@ -0,0 +1,66 @@ +.allNotesAccordion { + width: 100%; + margin-top: 24px; + position: relative; +} +.allNotesAccordion .itemWrapper { + border-radius: 16px; + border: 1px solid #d2cfda; +} + +.itemWrapperOpened { + border: 2px solid rgba(154, 0, 255, 0.5) !important; +} + +.notesHeader { + height: 68px; + margin: 0 24px; + border-bottom: 1px solid transparent; +} +.headerOpen { + border-color: #e8e7ed; +} +.titleArea { + flex: 3; +} + +.title { + font-family: IBM Plex Sans; + font-style: normal; + font-weight: 600; + font-size: 20px; + line-height: 30px; + color: #6d00e6; + margin-left: 8px; +} +.noteCountText { + color: #777185; + font-weight: 600; + font-size: 14px; + line-height: 20px; + margin-right: 18px; +} +.allNotesAccordion .buttonOverride { + max-width: 48px; + height: 40px; + padding: 1rem; + border-radius: 0 16px 16px 0 !important; +} +.allNotesAccordion .buttonOverride::after { + width: 24px; + height: 24px; + background-size: 24px; +} +.allNotesAccordion .openState:not(.closed)::after { + transform: rotate(-180deg); +} +.allNotesAccordion .openState:focus, +.buttonOverride:focus { + box-shadow: none !important; +} +.bodyOverride { + padding: 24px 24px 20px; +} +.loadMoreComments > * { + width: 100%; +} diff --git a/src/shared/components/Notes/AllNotesAccordion/index.ts b/src/shared/components/Notes/AllNotesAccordion/index.ts new file mode 100644 index 0000000..35b7eb0 --- /dev/null +++ b/src/shared/components/Notes/AllNotesAccordion/index.ts @@ -0,0 +1 @@ +export { AllNotesAccordion } from './AllNotesAccordion'; diff --git a/src/shared/components/Notes/CreateNoteForm/CreateNoteForm.tsx b/src/shared/components/Notes/CreateNoteForm/CreateNoteForm.tsx new file mode 100644 index 0000000..dd1e262 --- /dev/null +++ b/src/shared/components/Notes/CreateNoteForm/CreateNoteForm.tsx @@ -0,0 +1,72 @@ +import React, { memo } from 'react'; +import { areEqual } from 'Utils/equalityChecks'; + +import { Button } from 'Components/Button'; +import { TextArea } from 'Components/TextArea'; + +import formClasses from 'Themes/form/form.module.css'; +import classes from './createNoteForm.module.css'; + +interface Props { + errors?: any; + noteText: string; + placeholderText: string; + pinkBackground?: boolean; + disabled?: boolean; + onNoteChange: (e: any) => void; + onPostButtonClick: (e: any) => void; +} + +const CreateNoteForm = ({ + errors, + noteText, + placeholderText, + pinkBackground, + disabled, + onNoteChange, + onPostButtonClick, +}: Props) => ( + <> +
    +