diff --git a/components/Layers/DTP/CardContent/CardContent.module.css b/features/DTP/CardContent/CardContent.module.css
similarity index 100%
rename from components/Layers/DTP/CardContent/CardContent.module.css
rename to features/DTP/CardContent/CardContent.module.css
diff --git a/components/Layers/DTP/CardContent/CardContent.tsx b/features/DTP/CardContent/CardContent.tsx
similarity index 100%
rename from components/Layers/DTP/CardContent/CardContent.tsx
rename to features/DTP/CardContent/CardContent.tsx
diff --git a/components/Layers/DTP/CardContent/CardContent.types.tsx b/features/DTP/CardContent/CardContent.types.tsx
similarity index 53%
rename from components/Layers/DTP/CardContent/CardContent.types.tsx
rename to features/DTP/CardContent/CardContent.types.tsx
index fa1c040d..259417e3 100644
--- a/components/Layers/DTP/CardContent/CardContent.types.tsx
+++ b/features/DTP/CardContent/CardContent.types.tsx
@@ -1,4 +1,4 @@
-import { DTPObject } from 'components/Layers/DTP/dtp';
+import { DTPObject } from 'features/DTP/dtp';
export type DTPCardContentProps = {
placemark: DTPObject;
diff --git a/components/Layers/DTP/CardContent/components/Participants/Participant/Participant.module.css b/features/DTP/CardContent/components/Participants/Participant/Participant.module.css
similarity index 100%
rename from components/Layers/DTP/CardContent/components/Participants/Participant/Participant.module.css
rename to features/DTP/CardContent/components/Participants/Participant/Participant.module.css
diff --git a/components/Layers/DTP/CardContent/components/Participants/Participant/Participant.tsx b/features/DTP/CardContent/components/Participants/Participant/Participant.tsx
similarity index 96%
rename from components/Layers/DTP/CardContent/components/Participants/Participant/Participant.tsx
rename to features/DTP/CardContent/components/Participants/Participant/Participant.tsx
index ad5129a5..acad5a23 100644
--- a/components/Layers/DTP/CardContent/components/Participants/Participant/Participant.tsx
+++ b/features/DTP/CardContent/components/Participants/Participant/Participant.tsx
@@ -1,9 +1,9 @@
import React, { useMemo } from 'react';
-import { DTPParticipant } from 'components/Layers/DTP/dtp';
+import { DTPParticipant } from 'features/DTP/dtp';
import { Info } from 'components/Card/components/Info/Info';
-import { Label } from 'components/Card/components/Label/Label';
+import { Label } from 'shared/UI/Label/Label';
import { getYearNameByValue } from 'shared/helpers/getYearNameByValue';
import { HealthStatusType } from '../Participants.types';
import styles from './Participant.module.css';
diff --git a/components/Layers/DTP/CardContent/components/Participants/Participants.module.css b/features/DTP/CardContent/components/Participants/Participants.module.css
similarity index 100%
rename from components/Layers/DTP/CardContent/components/Participants/Participants.module.css
rename to features/DTP/CardContent/components/Participants/Participants.module.css
diff --git a/components/Layers/DTP/CardContent/components/Participants/Participants.tsx b/features/DTP/CardContent/components/Participants/Participants.tsx
similarity index 96%
rename from components/Layers/DTP/CardContent/components/Participants/Participants.tsx
rename to features/DTP/CardContent/components/Participants/Participants.tsx
index cea2897e..557d671a 100644
--- a/components/Layers/DTP/CardContent/components/Participants/Participants.tsx
+++ b/features/DTP/CardContent/components/Participants/Participants.tsx
@@ -1,9 +1,9 @@
import React from 'react';
-import { Label } from 'components/Card/components/Label/Label';
+import { Label } from 'shared/UI/Label/Label';
import { Section } from 'components/Card/components/Section/Section';
-import { DTPParticipant, DTPVehicle } from 'components/Layers/DTP/dtp';
+import { DTPParticipant, DTPVehicle } from 'features/DTP/dtp';
import { healthStatusToType, HEALTH_STATUS_COLOR, Participant } from './Participant/Participant';
import { ParticipantsProps, HealthStatusType } from './Participants.types';
diff --git a/components/Layers/DTP/CardContent/components/Participants/Participants.types.ts b/features/DTP/CardContent/components/Participants/Participants.types.ts
similarity index 81%
rename from components/Layers/DTP/CardContent/components/Participants/Participants.types.ts
rename to features/DTP/CardContent/components/Participants/Participants.types.ts
index c9821522..5f5349ec 100644
--- a/components/Layers/DTP/CardContent/components/Participants/Participants.types.ts
+++ b/features/DTP/CardContent/components/Participants/Participants.types.ts
@@ -1,4 +1,4 @@
-import { DTPObjectProperties } from 'components/Layers/DTP/dtp';
+import { DTPObjectProperties } from 'features/DTP/dtp';
export type ParticipantsProps = {
participants: DTPObjectProperties['participants'];
diff --git a/components/Layers/DTP/DTP.constants.ts b/features/DTP/DTP.constants.ts
similarity index 100%
rename from components/Layers/DTP/DTP.constants.ts
rename to features/DTP/DTP.constants.ts
diff --git a/components/Map/layers/DtpSource.tsx b/features/DTP/DtpSource.tsx
similarity index 93%
rename from components/Map/layers/DtpSource.tsx
rename to features/DTP/DtpSource.tsx
index a2093c8f..6e24fd7e 100644
--- a/components/Map/layers/DtpSource.tsx
+++ b/features/DTP/DtpSource.tsx
@@ -4,12 +4,12 @@ import type { CircleLayer, HeatmapLayer } from 'react-map-gl';
import { useSelector } from 'react-redux';
import { activeFilterSelector, activeFilterParamsSelector } from 'state/features/selectors';
import { FilterType } from 'types/Filters.types';
-import { SEVERITY_CONFIG } from 'components/Layers/DTP/DTP.constants';
-import { MapItemType } from 'types/map-item';
+import { SEVERITY_CONFIG } from 'features/DTP/DTP.constants';
+import { MapItemType } from 'types/Content.types';
import { MAX_ZOOM, MIN_ZOOM } from 'constants/map';
import dtp from 'public/ekb-dtp.json';
-import { usePopup } from 'components/Map/providers/usePopup';
-import useMapObjectState from 'components/Map/providers/useMapObjectState';
+import { usePopup } from 'features/Map/providers/usePopup';
+import useMapObjectState from 'features/Map/helpers/useMapObjectState';
const DTP_LAYER_ID = 'dtp-point';
const DTP_LAYER_HEATMAP_ID = 'dtp-point-heatmap';
diff --git a/components/Layers/DTP/Filter/DTPFilter.module.css b/features/DTP/Filter/DTPFilter.module.css
similarity index 100%
rename from components/Layers/DTP/Filter/DTPFilter.module.css
rename to features/DTP/Filter/DTPFilter.module.css
diff --git a/components/Layers/DTP/Filter/DTPFilter.state.ts b/features/DTP/Filter/DTPFilter.state.ts
similarity index 100%
rename from components/Layers/DTP/Filter/DTPFilter.state.ts
rename to features/DTP/Filter/DTPFilter.state.ts
diff --git a/components/Layers/DTP/Filter/DTPFilter.tsx b/features/DTP/Filter/DTPFilter.tsx
similarity index 97%
rename from components/Layers/DTP/Filter/DTPFilter.tsx
rename to features/DTP/Filter/DTPFilter.tsx
index 6022ec0d..c93fa328 100644
--- a/components/Layers/DTP/Filter/DTPFilter.tsx
+++ b/features/DTP/Filter/DTPFilter.tsx
@@ -3,13 +3,13 @@ import { useDispatch } from 'react-redux';
import { setFilter } from 'state/features/dataLayers';
-import { dtp, DTPFiltersParams } from 'components/Layers/DTP/dtp';
+import { dtp, DTPFiltersParams } from 'features/DTP/dtp';
import { Checkbox } from 'shared/UI/Checkbox/Checkbox';
import { FilterLoader } from 'shared/UI/Loader/FilterLoader/FilterLoader';
import { FilterType } from 'types/Filters.types';
import { MinMax } from 'shared/UI/RangeHistogram/types';
-import { RangeBaseFilter } from 'shared/UI/RangeBaseFilter/RangeBaseFilter';
+import { RangeBaseFilter } from 'components/RangeBaseFilter/RangeBaseFilter';
import { DtpParticipantType } from '../dtpParticipantType';
import { DtpSeverityType } from '../dtpSeverityType';
diff --git a/components/Layers/DTP/Filter/DTPFilter.types.ts b/features/DTP/Filter/DTPFilter.types.ts
similarity index 100%
rename from components/Layers/DTP/Filter/DTPFilter.types.ts
rename to features/DTP/Filter/DTPFilter.types.ts
diff --git a/components/Layers/DTP/dtp.ts b/features/DTP/dtp.ts
similarity index 97%
rename from components/Layers/DTP/dtp.ts
rename to features/DTP/dtp.ts
index 9cbc7ab5..0874c832 100644
--- a/components/Layers/DTP/dtp.ts
+++ b/features/DTP/dtp.ts
@@ -1,6 +1,6 @@
import groupBy from 'lodash/groupBy';
import { Range } from 'shared/UI/RangeHistogram/types';
-import { DTP_YEARS_RANGE } from 'components/Layers/DTP/DTP.constants';
+import { DTP_YEARS_RANGE } from 'features/DTP/DTP.constants';
import { fetchAPI } from 'shared/helpers/fetchApi';
import dtpData from 'public/ekb-dtp.json';
diff --git a/components/Layers/DTP/dtpParticipantType.ts b/features/DTP/dtpParticipantType.ts
similarity index 100%
rename from components/Layers/DTP/dtpParticipantType.ts
rename to features/DTP/dtpParticipantType.ts
diff --git a/components/Layers/DTP/dtpSeverityType.ts b/features/DTP/dtpSeverityType.ts
similarity index 100%
rename from components/Layers/DTP/dtpSeverityType.ts
rename to features/DTP/dtpSeverityType.ts
diff --git a/components/Layers/DesignCode/CardContent/CardContent.tsx b/features/DesignCode/CardContent/CardContent.tsx
similarity index 91%
rename from components/Layers/DesignCode/CardContent/CardContent.tsx
rename to features/DesignCode/CardContent/CardContent.tsx
index f66e9215..1c7cd17f 100644
--- a/components/Layers/DesignCode/CardContent/CardContent.tsx
+++ b/features/DesignCode/CardContent/CardContent.tsx
@@ -1,8 +1,8 @@
import { Header } from 'components/Card/components/Header/Header';
-import { Label } from 'components/Card/components/Label/Label';
+import { Label } from 'shared/UI/Label/Label';
import { Section } from 'components/Card/components/Section/Section';
-import { DESIGN_MAP_HOST } from 'components/Layers/DesignCode/designCode';
+import { DESIGN_MAP_HOST } from 'features/DesignCode/designCode';
import styles from 'styles/CardContent.module.css';
import { Sources } from 'components/Card/components/Sources/Sources';
import { DESIGN_CODE_MARKER_COLOR_BY_TYPE } from '../MapData/MapData.constants';
diff --git a/components/Layers/DesignCode/DesignCode.constants.ts b/features/DesignCode/DesignCode.constants.ts
similarity index 100%
rename from components/Layers/DesignCode/DesignCode.constants.ts
rename to features/DesignCode/DesignCode.constants.ts
diff --git a/shared/helpers/DesignCodeMarker.module.css b/features/DesignCode/DesignCodeMarker.module.css
similarity index 100%
rename from shared/helpers/DesignCodeMarker.module.css
rename to features/DesignCode/DesignCodeMarker.module.css
diff --git a/components/Map/layers/DesignCodeSource.tsx b/features/DesignCode/DesignCodeSource.tsx
similarity index 83%
rename from components/Map/layers/DesignCodeSource.tsx
rename to features/DesignCode/DesignCodeSource.tsx
index c0f616f6..afc0b610 100644
--- a/components/Map/layers/DesignCodeSource.tsx
+++ b/features/DesignCode/DesignCodeSource.tsx
@@ -4,14 +4,14 @@ import { useSelector } from 'react-redux';
import classNames from 'classnames';
import { activeFilterSelector, activeFilterParamsSelector } from 'state/features/selectors';
import { FilterType } from 'types/Filters.types';
-import { DESIGN_CODE_ITEMS_COLORS } from 'components/Layers/DesignCode/DesignCode.constants';
-import { MapItemType } from 'types/map-item';
-import { DESIGN_MAP_HOST } from 'components/Layers/DesignCode/designCode';
-import styles from 'shared/helpers/DesignCodeMarker.module.css';
-import { getLayerStyle } from 'components/Map/helpers/getFeatureState';
+import { DESIGN_CODE_ITEMS_COLORS } from 'features/DesignCode/DesignCode.constants';
+import { MapItemType } from 'types/Content.types';
+import { DESIGN_MAP_HOST } from 'features/DesignCode/designCode';
+import { getLayerStyle } from 'features/Map/helpers/getFeatureState';
import geojson from 'public/ekb-design-code.json';
-import { usePopup } from 'components/Map/providers/usePopup';
-import useMapObjectState from 'components/Map/providers/useMapObjectState';
+import { usePopup } from 'features/Map/providers/usePopup';
+import useMapObjectState from 'features/Map/helpers/useMapObjectState';
+import styles from './DesignCodeMarker.module.css';
const DESIGN_CODE_LAYER_ID = 'design-code-point';
diff --git a/components/Layers/DesignCode/Filter/DesignCodeFilter.module.css b/features/DesignCode/Filter/DesignCodeFilter.module.css
similarity index 100%
rename from components/Layers/DesignCode/Filter/DesignCodeFilter.module.css
rename to features/DesignCode/Filter/DesignCodeFilter.module.css
diff --git a/components/Layers/DesignCode/Filter/DesignCodeFilter.state.ts b/features/DesignCode/Filter/DesignCodeFilter.state.ts
similarity index 100%
rename from components/Layers/DesignCode/Filter/DesignCodeFilter.state.ts
rename to features/DesignCode/Filter/DesignCodeFilter.state.ts
diff --git a/components/Layers/DesignCode/Filter/DesignCodeFilter.tsx b/features/DesignCode/Filter/DesignCodeFilter.tsx
similarity index 100%
rename from components/Layers/DesignCode/Filter/DesignCodeFilter.tsx
rename to features/DesignCode/Filter/DesignCodeFilter.tsx
diff --git a/components/Layers/DesignCode/Filter/DesignCodeFilter.types.ts b/features/DesignCode/Filter/DesignCodeFilter.types.ts
similarity index 100%
rename from components/Layers/DesignCode/Filter/DesignCodeFilter.types.ts
rename to features/DesignCode/Filter/DesignCodeFilter.types.ts
diff --git a/components/Layers/DesignCode/MapData/MapData.constants.ts b/features/DesignCode/MapData/MapData.constants.ts
similarity index 100%
rename from components/Layers/DesignCode/MapData/MapData.constants.ts
rename to features/DesignCode/MapData/MapData.constants.ts
diff --git a/components/Layers/DesignCode/designCode.ts b/features/DesignCode/designCode.ts
similarity index 100%
rename from components/Layers/DesignCode/designCode.ts
rename to features/DesignCode/designCode.ts
diff --git a/components/Layers/DesignCode/designCodeObject.ts b/features/DesignCode/designCodeObject.ts
similarity index 95%
rename from components/Layers/DesignCode/designCodeObject.ts
rename to features/DesignCode/designCodeObject.ts
index 0a42fa95..6544037a 100644
--- a/components/Layers/DesignCode/designCodeObject.ts
+++ b/features/DesignCode/designCodeObject.ts
@@ -1,4 +1,4 @@
-import { Image } from 'types/objectsBase';
+import { Image } from 'types/ObjectsBase.types';
export enum DesignCodeItemType {
LogosAndIdentic = 'Логотипы и айдентика',
diff --git a/components/Card/components/Facade/Facade.module.css b/features/Facade/CardContent/Facade.module.css
similarity index 100%
rename from components/Card/components/Facade/Facade.module.css
rename to features/Facade/CardContent/Facade.module.css
diff --git a/components/Card/components/Facade/Facade.tsx b/features/Facade/CardContent/Facade.tsx
similarity index 81%
rename from components/Card/components/Facade/Facade.tsx
rename to features/Facade/CardContent/Facade.tsx
index df209996..75e32a54 100644
--- a/components/Card/components/Facade/Facade.tsx
+++ b/features/Facade/CardContent/Facade.tsx
@@ -1,4 +1,4 @@
-import DownloadButton from '../DownloadButton/DownloadButton';
+import DownloadButton from 'components/Card/components/DownloadButton/DownloadButton';
import styles from './Facade.module.css';
type Props = {
diff --git a/components/Map/layers/FacadeSource.tsx b/features/Facade/FacadeSource.tsx
similarity index 91%
rename from components/Map/layers/FacadeSource.tsx
rename to features/Facade/FacadeSource.tsx
index c7af987f..2df3550a 100644
--- a/components/Map/layers/FacadeSource.tsx
+++ b/features/Facade/FacadeSource.tsx
@@ -1,13 +1,13 @@
import { useEffect } from 'react';
import { useMap } from 'react-map-gl';
import { useSelector } from 'react-redux';
-import { getLayerStyle } from 'components/Map/helpers/getFeatureState';
+import { getLayerStyle } from 'features/Map/helpers/getFeatureState';
import { BUILDING_LAYER_ID } from 'constants/map';
import { DEFAULT_BULDING_COLOR_NORMAL } from 'constants/colors';
import { activeFilterSelector } from 'state/features/selectors';
import { FilterType } from 'types/Filters.types';
import facades from 'public/ekb-facades.json';
-import useMapObjectState from 'components/Map/providers/useMapObjectState';
+import useMapObjectState from 'features/Map/helpers/useMapObjectState';
const FACADES_IDS = Object.keys(facades);
diff --git a/components/Layers/Facade/Filter/FacadeFilter.module.css b/features/Facade/Filter/FacadeFilter.module.css
similarity index 100%
rename from components/Layers/Facade/Filter/FacadeFilter.module.css
rename to features/Facade/Filter/FacadeFilter.module.css
diff --git a/components/Layers/Facade/Filter/FacadeFilter.tsx b/features/Facade/Filter/FacadeFilter.tsx
similarity index 94%
rename from components/Layers/Facade/Filter/FacadeFilter.tsx
rename to features/Facade/Filter/FacadeFilter.tsx
index 9e3c27ab..8533b3e2 100644
--- a/components/Layers/Facade/Filter/FacadeFilter.tsx
+++ b/features/Facade/Filter/FacadeFilter.tsx
@@ -1,4 +1,4 @@
-import { Link } from 'components/Card/components/Link/Link';
+import { Link } from 'shared/UI/Link/Link';
import styles from './FacadeFilter.module.css';
diff --git a/components/Filters/Filters.module.css b/features/Filters/Filters.module.css
similarity index 100%
rename from components/Filters/Filters.module.css
rename to features/Filters/Filters.module.css
diff --git a/components/Filters/Filters.tsx b/features/Filters/Filters.tsx
similarity index 82%
rename from components/Filters/Filters.tsx
rename to features/Filters/Filters.tsx
index ff105375..42382f13 100644
--- a/components/Filters/Filters.tsx
+++ b/features/Filters/Filters.tsx
@@ -1,14 +1,13 @@
import React, { useCallback } from 'react';
import { useDispatch, useSelector } from 'react-redux';
-import { FilterConfigItem, FilterType } from 'types/Filters.types';
-import { Toggle } from 'components/Filters/components/Toggle/Toggle';
-import { Filter } from 'components/Filters/components/Filter/Filter';
-import { FILTERS_CONFIG } from 'components/Layers/Filters.config';
+import { FilterConfig, FilterConfigItem, FilterType } from 'types/Filters.types';
+import { Toggle } from 'features/Filters/components/Toggle/Toggle';
+import { Filter } from 'features/Filters/components/Filter/Filter';
import { activeFilterSelector } from 'state/features/selectors';
import { toggleData } from 'state/features/dataLayers';
import styles from './Filters.module.css';
-export function Filters() {
+export function Filters({ filters }: { filters: FilterConfig }) {
const dispatch = useDispatch();
const onToggleClick = useCallback(
@@ -22,7 +21,7 @@ export function Filters() {
return (
- {(Object.entries(FILTERS_CONFIG) as [FilterType, FilterConfigItem][]).map(
+ {(Object.entries(filters) as [FilterType, FilterConfigItem][]).map(
([type, { component, title, isVerified }], idx) => {
const id = `id:${type}-${idx}`;
const isActive = type === activeFilter;
diff --git a/components/Filters/MobileFilters/MobileFilters.tsx b/features/Filters/MobileFilters/MobileFilters.tsx
similarity index 70%
rename from components/Filters/MobileFilters/MobileFilters.tsx
rename to features/Filters/MobileFilters/MobileFilters.tsx
index 296e0148..dbc10c29 100644
--- a/components/Filters/MobileFilters/MobileFilters.tsx
+++ b/features/Filters/MobileFilters/MobileFilters.tsx
@@ -1,9 +1,10 @@
import React, { useRef } from 'react';
import Sheet, { SheetRef } from 'react-modal-sheet';
-import { Filters } from 'components/Filters/Filters';
+import { Filters } from 'features/Filters/Filters';
+import { FilterConfig } from 'types/Filters.types';
-export function MobileFilters() {
+export function MobileFilters({ filters }: { filters: FilterConfig }) {
const ref = useRef
();
return (
@@ -19,7 +20,7 @@ export function MobileFilters() {
-
+
diff --git a/components/Filters/components/Filter/Filter.module.css b/features/Filters/components/Filter/Filter.module.css
similarity index 100%
rename from components/Filters/components/Filter/Filter.module.css
rename to features/Filters/components/Filter/Filter.module.css
diff --git a/components/Filters/components/Filter/Filter.tsx b/features/Filters/components/Filter/Filter.tsx
similarity index 100%
rename from components/Filters/components/Filter/Filter.tsx
rename to features/Filters/components/Filter/Filter.tsx
diff --git a/components/Filters/components/Toggle/Toggle.module.css b/features/Filters/components/Toggle/Toggle.module.css
similarity index 100%
rename from components/Filters/components/Toggle/Toggle.module.css
rename to features/Filters/components/Toggle/Toggle.module.css
diff --git a/components/Filters/components/Toggle/Toggle.tsx b/features/Filters/components/Toggle/Toggle.tsx
similarity index 100%
rename from components/Filters/components/Toggle/Toggle.tsx
rename to features/Filters/components/Toggle/Toggle.tsx
diff --git a/components/Filters/index.ts b/features/Filters/index.ts
similarity index 63%
rename from components/Filters/index.ts
rename to features/Filters/index.ts
index 14ebab31..e15ed89e 100644
--- a/components/Filters/index.ts
+++ b/features/Filters/index.ts
@@ -1 +1,2 @@
+export { Filters } from './Filters';
export { MobileFilters } from './MobileFilters/MobileFilters';
diff --git a/components/Layers/Houses/CardContent/CardContent.module.css b/features/Houses/CardContent/CardContent.module.css
similarity index 100%
rename from components/Layers/Houses/CardContent/CardContent.module.css
rename to features/Houses/CardContent/CardContent.module.css
diff --git a/components/Layers/Houses/CardContent/CardContent.tsx b/features/Houses/CardContent/CardContent.tsx
similarity index 92%
rename from components/Layers/Houses/CardContent/CardContent.tsx
rename to features/Houses/CardContent/CardContent.tsx
index f9c69a13..96600291 100644
--- a/components/Layers/Houses/CardContent/CardContent.tsx
+++ b/features/Houses/CardContent/CardContent.tsx
@@ -1,16 +1,16 @@
import { useContext, useEffect, useMemo, useState } from 'react';
import { useMap } from 'react-map-gl';
-import { HouseObject } from 'components/Layers/Houses/houseBase';
-import { MapContext } from 'components/Map/providers/MapProvider';
-import { usePopup } from 'components/Map/providers/usePopup';
+import { HouseObject } from 'features/Houses/houseBase';
+import { MapContext } from 'features/Map/providers/MapProvider';
+import { usePopup } from 'features/Map/providers/usePopup';
import { ConstructionInfo } from 'components/Card/components/ConstructionInfo/ConstructionInfo';
-import Facade from 'components/Card/components/Facade/Facade';
+import Facade from 'features/Facade/CardContent/Facade';
import { Header } from 'components/Card/components/Header/Header';
import { Info } from 'components/Card/components/Info/Info';
-import { Label } from 'components/Card/components/Label/Label';
+import { Label } from 'shared/UI/Label/Label';
import { Section } from 'components/Card/components/Section/Section';
import { Sources } from 'components/Card/components/Sources/Sources';
-import { EditObjectButtonLink } from 'components/EditObjectButtonLink/EditObjectButtonLink';
+import { EditObjectButtonLink } from 'components/Card/components/EditObjectButtonLink/EditObjectButtonLink';
import { FilterLoader } from 'shared/UI/Loader/FilterLoader/FilterLoader';
import { getLatLngFromHash } from 'shared/helpers/hash';
import { useIsDesktop } from 'shared/helpers/isDesktop';
diff --git a/components/Layers/Houses/CardContent/CardContent.types.ts b/features/Houses/CardContent/CardContent.types.ts
similarity index 51%
rename from components/Layers/Houses/CardContent/CardContent.types.ts
rename to features/Houses/CardContent/CardContent.types.ts
index cf9fc363..e7404001 100644
--- a/components/Layers/Houses/CardContent/CardContent.types.ts
+++ b/features/Houses/CardContent/CardContent.types.ts
@@ -1,4 +1,4 @@
-import { HouseObject } from 'components/Layers/Houses/houseBase';
+import { HouseObject } from 'features/Houses/houseBase';
export interface HousesCardContentProps {
placemark: HouseObject;
diff --git a/components/Layers/Houses/Filter/Age/HouseAgeFilter.constants.ts b/features/Houses/Filter/Age/HouseAgeFilter.constants.ts
similarity index 100%
rename from components/Layers/Houses/Filter/Age/HouseAgeFilter.constants.ts
rename to features/Houses/Filter/Age/HouseAgeFilter.constants.ts
diff --git a/components/Layers/Houses/Filter/Age/HouseAgeFilter.module.css b/features/Houses/Filter/Age/HouseAgeFilter.module.css
similarity index 100%
rename from components/Layers/Houses/Filter/Age/HouseAgeFilter.module.css
rename to features/Houses/Filter/Age/HouseAgeFilter.module.css
diff --git a/components/Layers/Houses/Filter/Age/HouseAgeFilter.tsx b/features/Houses/Filter/Age/HouseAgeFilter.tsx
similarity index 87%
rename from components/Layers/Houses/Filter/Age/HouseAgeFilter.tsx
rename to features/Houses/Filter/Age/HouseAgeFilter.tsx
index 522f44eb..cc27d10f 100644
--- a/components/Layers/Houses/Filter/Age/HouseAgeFilter.tsx
+++ b/features/Houses/Filter/Age/HouseAgeFilter.tsx
@@ -3,8 +3,8 @@ import { useDispatch } from 'react-redux';
import { MinMax } from 'shared/UI/RangeHistogram/types';
-import { houseBase } from 'components/Layers/Houses/houseBase';
-import { AGE_FILTERS_DATA, HouseSourceType } from 'components/Layers/Houses/Houses.constants';
+import { houseBase } from 'features/Houses/houseBase';
+import { AGE_FILTERS_DATA, HouseSourceType } from 'features/Houses/Houses.constants';
import { setFilterParams } from 'state/features/dataLayers';
import { HouseBaseFilter } from '../Base/HouseBaseFilter';
diff --git a/components/Layers/Houses/Filter/Base/HouseBaseFilter.constants.ts b/features/Houses/Filter/Base/HouseBaseFilter.constants.ts
similarity index 100%
rename from components/Layers/Houses/Filter/Base/HouseBaseFilter.constants.ts
rename to features/Houses/Filter/Base/HouseBaseFilter.constants.ts
diff --git a/components/Layers/Houses/Filter/Base/HouseBaseFilter.tsx b/features/Houses/Filter/Base/HouseBaseFilter.tsx
similarity index 89%
rename from components/Layers/Houses/Filter/Base/HouseBaseFilter.tsx
rename to features/Houses/Filter/Base/HouseBaseFilter.tsx
index 8387020c..41f5b0f5 100644
--- a/components/Layers/Houses/Filter/Base/HouseBaseFilter.tsx
+++ b/features/Houses/Filter/Base/HouseBaseFilter.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import { HistogramData, MinMax } from 'shared/UI/RangeHistogram/types';
-import { RangeBaseFilter } from 'shared/UI/RangeBaseFilter/RangeBaseFilter';
+import { RangeBaseFilter } from 'components/RangeBaseFilter/RangeBaseFilter';
export interface HouseBaseFilterProps {
defaultMin: number;
diff --git a/components/Layers/Houses/Filter/Facade/HouseFacadeFilter.tsx b/features/Houses/Filter/Facade/HouseFacadeFilter.tsx
similarity index 100%
rename from components/Layers/Houses/Filter/Facade/HouseFacadeFilter.tsx
rename to features/Houses/Filter/Facade/HouseFacadeFilter.tsx
diff --git a/components/Layers/Houses/Filter/Floor/HouseFloorFilter.constants.ts b/features/Houses/Filter/Floor/HouseFloorFilter.constants.ts
similarity index 100%
rename from components/Layers/Houses/Filter/Floor/HouseFloorFilter.constants.ts
rename to features/Houses/Filter/Floor/HouseFloorFilter.constants.ts
diff --git a/components/Layers/Houses/Filter/Floor/HouseFloorFilter.tsx b/features/Houses/Filter/Floor/HouseFloorFilter.tsx
similarity index 86%
rename from components/Layers/Houses/Filter/Floor/HouseFloorFilter.tsx
rename to features/Houses/Filter/Floor/HouseFloorFilter.tsx
index 6b9a5103..5f405b79 100644
--- a/components/Layers/Houses/Filter/Floor/HouseFloorFilter.tsx
+++ b/features/Houses/Filter/Floor/HouseFloorFilter.tsx
@@ -2,10 +2,10 @@ import React, { useCallback } from 'react';
import { useDispatch } from 'react-redux';
import { MinMax } from 'shared/UI/RangeHistogram/types';
-import { houseBase } from 'components/Layers/Houses/houseBase';
+import { houseBase } from 'features/Houses/houseBase';
import { setFilterParams } from 'state/features/dataLayers';
-import { FLOOR_FILTERS_DATA, HouseSourceType } from 'components/Layers/Houses/Houses.constants';
+import { FLOOR_FILTERS_DATA, HouseSourceType } from 'features/Houses/Houses.constants';
import { HouseBaseFilter } from '../Base/HouseBaseFilter';
import { MAX_FLOOR, MIN_FLOOR } from './HouseFloorFilter.constants';
diff --git a/components/Layers/Houses/Filter/WearTear/HouseWearTearFilter.tsx b/features/Houses/Filter/WearTear/HouseWearTearFilter.tsx
similarity index 79%
rename from components/Layers/Houses/Filter/WearTear/HouseWearTearFilter.tsx
rename to features/Houses/Filter/WearTear/HouseWearTearFilter.tsx
index 2182904b..6079b18c 100644
--- a/components/Layers/Houses/Filter/WearTear/HouseWearTearFilter.tsx
+++ b/features/Houses/Filter/WearTear/HouseWearTearFilter.tsx
@@ -1,8 +1,8 @@
import React, { useCallback } from 'react';
import { useDispatch } from 'react-redux';
-import { HouseBaseFilter } from 'components/Layers/Houses/Filter/Base/HouseBaseFilter';
-import { houseBase } from 'components/Layers/Houses/houseBase';
-import { HouseSourceType, WEAR_TEAR_FILTERS_DATA } from 'components/Layers/Houses/Houses.constants';
+import { HouseBaseFilter } from 'features/Houses/Filter/Base/HouseBaseFilter';
+import { houseBase } from 'features/Houses/houseBase';
+import { HouseSourceType, WEAR_TEAR_FILTERS_DATA } from 'features/Houses/Houses.constants';
import { MinMax } from 'shared/UI/RangeHistogram/types';
import { setFilterParams } from 'state/features/dataLayers';
diff --git a/components/Layers/Houses/HealthProgress/HealthProgress.module.css b/features/Houses/HealthProgress/HealthProgress.module.css
similarity index 100%
rename from components/Layers/Houses/HealthProgress/HealthProgress.module.css
rename to features/Houses/HealthProgress/HealthProgress.module.css
diff --git a/components/Layers/Houses/HealthProgress/HealthProgress.tsx b/features/Houses/HealthProgress/HealthProgress.tsx
similarity index 100%
rename from components/Layers/Houses/HealthProgress/HealthProgress.tsx
rename to features/Houses/HealthProgress/HealthProgress.tsx
diff --git a/components/Layers/Houses/Houses.constants.ts b/features/Houses/Houses.constants.ts
similarity index 100%
rename from components/Layers/Houses/Houses.constants.ts
rename to features/Houses/Houses.constants.ts
diff --git a/components/Layers/Houses/houseBase.ts b/features/Houses/houseBase.ts
similarity index 100%
rename from components/Layers/Houses/houseBase.ts
rename to features/Houses/houseBase.ts
diff --git a/features/Index/App.tsx b/features/Index/App.tsx
new file mode 100644
index 00000000..5211ad84
--- /dev/null
+++ b/features/Index/App.tsx
@@ -0,0 +1,30 @@
+import React from 'react';
+import { Provider } from 'react-redux';
+import { MapProvider } from 'react-map-gl';
+import { store } from 'state';
+import { AboutProjectIcons } from 'features/About/AboutProjectIcons/AboutProjectIcons';
+import { AboutProjectProvider } from 'features/About/AboutProjectProvider';
+import { Copyright } from 'features/Copyright/Copyright';
+import { MapContextProvider } from 'features/Map/providers/MapProvider';
+import { Footer } from 'components/Footer/Footer';
+import { Map } from 'features/Map/Map';
+import { FILTERS_CONFIG } from './Filters.config';
+import { Sidebars } from './Sidebars';
+
+export default function App() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/components/Layers/Content.config.ts b/features/Index/Content.config.ts
similarity index 51%
rename from components/Layers/Content.config.ts
rename to features/Index/Content.config.ts
index 46a9d69e..93b483eb 100644
--- a/components/Layers/Content.config.ts
+++ b/features/Index/Content.config.ts
@@ -1,18 +1,18 @@
-import { MapItemType } from 'types/map-item';
-import { designCode } from 'components/Layers/DesignCode/designCode';
-import { dtp } from 'components/Layers/DTP/dtp';
-import { okn } from 'components/Layers/OKN/okn';
+import { ContentConfig, MapItemType } from 'types/Content.types';
+import { designCode } from 'features/DesignCode/designCode';
+import { dtp } from 'features/DTP/dtp';
+import { okn } from 'features/OKN/okn';
-import { lines } from 'components/Layers/Lines/lines';
-import { LinesCardContent } from 'components/Layers/Lines/CardContent/CardContent';
-import { QuarterCardContent } from 'components/Layers/Quarter/CardContent/CardContent';
-import { quarter } from 'components/Layers/Quarter/quarter';
-import { DesignCodeCardContent } from './DesignCode/CardContent/CardContent';
-import { DTPCardContent } from './DTP/CardContent/CardContent';
-import { HousesCardContent } from './Houses/CardContent/CardContent';
-import { OKNCardContent } from './OKN/CardContent';
+import { lines } from 'features/Lines/lines';
+import { LinesCardContent } from 'features/Lines/CardContent/CardContent';
+import { QuarterCardContent } from 'features/Quarter/CardContent/CardContent';
+import { quarter } from 'features/Quarter/quarter';
+import { DesignCodeCardContent } from 'features/DesignCode/CardContent/CardContent';
+import { DTPCardContent } from 'features/DTP/CardContent/CardContent';
+import { HousesCardContent } from 'features/Houses/CardContent/CardContent';
+import { OKNCardContent } from 'features/OKN/CardContent';
-export const CONTENTS_CONFIG = {
+export const CONTENTS_CONFIG: ContentConfig = {
[MapItemType.Houses]: {
cardContent: HousesCardContent,
oneItemRequest: () => Promise.resolve(),
diff --git a/components/Layers/Filters.config.tsx b/features/Index/Filters.config.tsx
similarity index 71%
rename from components/Layers/Filters.config.tsx
rename to features/Index/Filters.config.tsx
index 4c8633ac..b7fdeae3 100644
--- a/components/Layers/Filters.config.tsx
+++ b/features/Index/Filters.config.tsx
@@ -1,14 +1,14 @@
-import { DTPFilter } from 'components/Layers/DTP/Filter/DTPFilter';
-import { DesignCodeFilter } from 'components/Layers/DesignCode/Filter/DesignCodeFilter';
-import { HouseAgeFilter } from 'components/Layers/Houses/Filter/Age/HouseAgeFilter';
-import { HouseFloorFilter } from 'components/Layers/Houses/Filter/Floor/HouseFloorFilter';
-import { HouseWearTearFilter } from 'components/Layers/Houses/Filter/WearTear/HouseWearTearFilter';
-import { LinesFilter } from 'components/Layers/Lines/Filter/LinesFilter';
-import { OknFilter } from 'components/Layers/OKN/Filter/OknFilter';
-import { QuarterFilter } from 'components/Layers/Quarter/Filter/QuarterFilter';
+import { DTPFilter } from 'features/DTP/Filter/DTPFilter';
+import { DesignCodeFilter } from 'features/DesignCode/Filter/DesignCodeFilter';
+import { HouseAgeFilter } from 'features/Houses/Filter/Age/HouseAgeFilter';
+import { HouseFloorFilter } from 'features/Houses/Filter/Floor/HouseFloorFilter';
+import { HouseWearTearFilter } from 'features/Houses/Filter/WearTear/HouseWearTearFilter';
+import { LinesFilter } from 'features/Lines/Filter/LinesFilter';
+import { OknFilter } from 'features/OKN/Filter/OknFilter';
+import { QuarterFilter } from 'features/Quarter/Filter/QuarterFilter';
import { SOURCES_BY_TYPE } from 'constants/sources';
import { FilterConfig, FilterType } from 'types/Filters.types';
-import { FacadeFilter } from './Facade/Filter/FacadeFilter';
+import { FacadeFilter } from 'features/Facade/Filter/FacadeFilter';
export const FILTERS_CONFIG: FilterConfig = {
[FilterType.HouseAge]: {
diff --git a/features/Index/Sidebars.tsx b/features/Index/Sidebars.tsx
new file mode 100644
index 00000000..93972952
--- /dev/null
+++ b/features/Index/Sidebars.tsx
@@ -0,0 +1,43 @@
+import { useContext } from 'react';
+import { useIsDesktop } from 'shared/helpers/isDesktop';
+import { DesktopCard, MobileCard } from 'components/Card';
+import { LeftSidebar } from 'components/LeftSidebar/LeftSidebar';
+import { RightSidebar } from 'components/RightSidebar/RightSidebar';
+import { AboutProjectModal } from 'features/About/AboutProjectModal';
+import { MobileAboutProject } from 'features/About/MobileAboutProject';
+import { MapContext } from 'features/Map/providers/MapProvider';
+import { Filters, MobileFilters } from 'features/Filters';
+import { CONTENTS_CONFIG } from './Content.config';
+import { FILTERS_CONFIG } from './Filters.config';
+
+export function Sidebars() {
+ const isDesktop = useIsDesktop();
+ const popupProps = useContext(MapContext);
+
+ const cardProps = {
+ ...popupProps,
+ contentConfig: CONTENTS_CONFIG,
+ };
+
+ if (isDesktop) {
+ return (
+ <>
+
+
+
+
+
+
+
+ >
+ );
+ }
+
+ return (
+ <>
+
+
+
+ >
+ );
+}
diff --git a/components/Layers/Lines/CardContent/CardContent.tsx b/features/Lines/CardContent/CardContent.tsx
similarity index 93%
rename from components/Layers/Lines/CardContent/CardContent.tsx
rename to features/Lines/CardContent/CardContent.tsx
index ecea514d..0b2bd67f 100644
--- a/components/Layers/Lines/CardContent/CardContent.tsx
+++ b/features/Lines/CardContent/CardContent.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import { Header } from 'components/Card/components/Header/Header';
import { Section } from 'components/Card/components/Section/Section';
-import { Link } from 'components/Card/components/Link/Link';
+import { Link } from 'shared/UI/Link/Link';
import styles from 'styles/CardContent.module.css';
import { LineObject } from '../lineType';
diff --git a/components/Layers/Lines/Filter/LinesFilter.module.css b/features/Lines/Filter/LinesFilter.module.css
similarity index 100%
rename from components/Layers/Lines/Filter/LinesFilter.module.css
rename to features/Lines/Filter/LinesFilter.module.css
diff --git a/components/Layers/Lines/Filter/LinesFilter.state.ts b/features/Lines/Filter/LinesFilter.state.ts
similarity index 100%
rename from components/Layers/Lines/Filter/LinesFilter.state.ts
rename to features/Lines/Filter/LinesFilter.state.ts
diff --git a/components/Layers/Lines/Filter/LinesFilter.tsx b/features/Lines/Filter/LinesFilter.tsx
similarity index 97%
rename from components/Layers/Lines/Filter/LinesFilter.tsx
rename to features/Lines/Filter/LinesFilter.tsx
index fe4548c0..1085587a 100644
--- a/components/Layers/Lines/Filter/LinesFilter.tsx
+++ b/features/Lines/Filter/LinesFilter.tsx
@@ -3,7 +3,7 @@ import { useDispatch } from 'react-redux';
import { setFilter } from 'state/features/dataLayers';
import { FilterType } from 'types/Filters.types';
-import { lines } from 'components/Layers/Lines/lines';
+import { lines } from 'features/Lines/lines';
import { Checkbox } from 'shared/UI/Checkbox/Checkbox';
import { FilterLoader } from 'shared/UI/Loader/FilterLoader/FilterLoader';
diff --git a/components/Layers/Lines/Filter/LinesFilter.types.ts b/features/Lines/Filter/LinesFilter.types.ts
similarity index 100%
rename from components/Layers/Lines/Filter/LinesFilter.types.ts
rename to features/Lines/Filter/LinesFilter.types.ts
diff --git a/components/Layers/Lines/Lines.constants.ts b/features/Lines/Lines.constants.ts
similarity index 100%
rename from components/Layers/Lines/Lines.constants.ts
rename to features/Lines/Lines.constants.ts
diff --git a/components/Map/layers/LinesSource.tsx b/features/Lines/LinesSource.tsx
similarity index 87%
rename from components/Map/layers/LinesSource.tsx
rename to features/Lines/LinesSource.tsx
index a7d2b261..ab1b9f8d 100644
--- a/components/Map/layers/LinesSource.tsx
+++ b/features/Lines/LinesSource.tsx
@@ -4,12 +4,12 @@ import type { CircleLayer, LineLayer } from 'react-map-gl';
import { useSelector } from 'react-redux';
import { activeFilterSelector, activeFilterParamsSelector } from 'state/features/selectors';
import { FilterType } from 'types/Filters.types';
-import { LINES_CONFIG } from 'components/Layers/Lines/Lines.constants';
-import { MapItemType } from 'types/map-item';
-import { usePopup } from 'components/Map/providers/usePopup';
-import { getLayerStyle } from 'components/Map/helpers/getFeatureState';
-import { LineType } from 'components/Layers/Lines/lineType';
-import useMapObjectState from 'components/Map/providers/useMapObjectState';
+import { LINES_CONFIG } from 'features/Lines/Lines.constants';
+import { MapItemType } from 'types/Content.types';
+import { usePopup } from 'features/Map/providers/usePopup';
+import { getLayerStyle } from 'features/Map/helpers/getFeatureState';
+import { LineType } from 'features/Lines/lineType';
+import useMapObjectState from 'features/Map/helpers/useMapObjectState';
export function LinesSource() {
const ekbMap = useMap();
diff --git a/components/Layers/Lines/lineType.ts b/features/Lines/lineType.ts
similarity index 100%
rename from components/Layers/Lines/lineType.ts
rename to features/Lines/lineType.ts
diff --git a/components/Layers/Lines/lines.ts b/features/Lines/lines.ts
similarity index 100%
rename from components/Layers/Lines/lines.ts
rename to features/Lines/lines.ts
diff --git a/components/Map/Map.tsx b/features/Map/Map.tsx
similarity index 64%
rename from components/Map/Map.tsx
rename to features/Map/Map.tsx
index 00b6c72d..33c1eef0 100644
--- a/components/Map/Map.tsx
+++ b/features/Map/Map.tsx
@@ -4,16 +4,15 @@ import { useContext } from 'react';
import maplibregl from 'maplibre-gl';
import MapGl from 'react-map-gl';
-import { COORDS_EKATERINBURG } from 'constants/coords';
-import { MAX_ZOOM, MIN_ZOOM } from 'constants/map';
+import { MAX_ZOOM, MIN_ZOOM, CENTER_COORDS } from 'constants/map';
-import { BuildingSource } from './layers/BuildingSource';
-import { DesignCodeSource } from './layers/DesignCodeSource';
-import { DtpSource } from './layers/DtpSource';
-import { LinesSource } from './layers/LinesSource';
-import { OknSource } from './layers/OknSource';
-import { QuarterSource } from './layers/QuarterSource';
-import { FacadeSource } from './layers/FacadeSource';
+import { BuildingSource } from 'features/Building/BuildingSource';
+import { DesignCodeSource } from 'features/DesignCode/DesignCodeSource';
+import { DtpSource } from 'features/DTP/DtpSource';
+import { LinesSource } from 'features/Lines/LinesSource';
+import { OknSource } from 'features/OKN/OknSource';
+import { QuarterSource } from 'features/Quarter/QuarterSource';
+import { FacadeSource } from 'features/Facade/FacadeSource';
import { MapContext } from './providers/MapProvider';
import 'maplibre-gl/dist/maplibre-gl.css';
@@ -39,8 +38,8 @@ export function Map() {
- {/*
- Посмотреть телефон и почту квартального
-
- */}