@@ -215,7 +200,7 @@ const RegisterPage = ({ onRegister }) => {
{' '}
Политикой конфиденциальности
@@ -225,7 +210,7 @@ const RegisterPage = ({ onRegister }) => {
{' '}
Условиями использования сервиса
diff --git a/src/pages/ShelterPage/ShelterPage.jsx b/src/pages/ShelterPage/ShelterPage.jsx
index ddf32ad7..b367ae50 100644
--- a/src/pages/ShelterPage/ShelterPage.jsx
+++ b/src/pages/ShelterPage/ShelterPage.jsx
@@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react';
import { Outlet, useParams } from 'react-router-dom';
import './ShelterPage.css';
import MainContainer from '../../components/MainContainer/MainContainer';
-import NestedRoutesMenu from '../../components/NestedRoutesMenu/NestedRoutesMenu';
+import NestedRoutesMenu from '../../modules/NestedRoutesMenu/NestedRoutesMenu';
import shelterApi from './api';
import { shelterLinkList } from '../../utils/constants';
diff --git a/src/pages/SheltersListPage/SheltersListPage.jsx b/src/pages/SheltersListPage/SheltersListPage.jsx
index b2a17cb5..b0110197 100644
--- a/src/pages/SheltersListPage/SheltersListPage.jsx
+++ b/src/pages/SheltersListPage/SheltersListPage.jsx
@@ -1,12 +1,53 @@
-import React from 'react';
-import { Link, Outlet } from 'react-router-dom';
+import React, { useEffect, useState } from 'react';
+import { Link, useParams } from 'react-router-dom';
import './SheltersListPage.css';
import MainContainer from '../../components/MainContainer/MainContainer';
-import NestedRoutesMenu from '../../components/NestedRoutesMenu/NestedRoutesMenu';
+import NestedRoutesMenu from '../../modules/NestedRoutesMenu/NestedRoutesMenu';
import SearchInput from '../../components/SearchInput/SearchInput';
+import ShelterCard from '../../components/ShelterCard/ShelterCard';
+import ShelterList from '../../modules/ShelterList/ShelterList';
import { colorLinkList } from '../../utils/constants';
+import mapShelterResponse from './utils/mapShelterResponse';
+import SheltersListApi from './api';
const SheltersListPage = () => {
+ const { color } = useParams();
+
+ const [sheltersList, setSheltersList] = useState([]);
+
+ const [isDataLoading, setIsDataLoading] = useState(true);
+
+ useEffect(() => {
+ const queryParams = color === 'all' ? {} : { warnings: color };
+
+ SheltersListApi.getShelters(queryParams)
+ .then((newSheltersList) => {
+ setSheltersList(newSheltersList.map(mapShelterResponse));
+ setIsDataLoading(false);
+ })
+ .catch((err) => {
+ setIsDataLoading(true);
+ throw new Error(err);
+ });
+ }, [color]);
+
+ // Получение списка приютов и их отображение в виде карточек приютов
+ const shelters = sheltersList.map((shelter) => {
+ return (
+
+
+
+ );
+ });
+
return (
@@ -14,13 +55,15 @@ const SheltersListPage = () => {
Все приюты
- Показать приюты на карте
+
+ Показать приюты на карте
+
-
+
);
diff --git a/src/pages/SheltersListPage/api.js b/src/pages/SheltersListPage/api.js
new file mode 100644
index 00000000..ab20df18
--- /dev/null
+++ b/src/pages/SheltersListPage/api.js
@@ -0,0 +1,26 @@
+import BaseApi from '../../utils/BaseApi';
+import { baseUrl, apiHeaders } from '../../utils/constants';
+
+class SheltersListApi extends BaseApi {
+ constructor({ _baseUrl, _headers }) {
+ super({ _baseUrl });
+ this._headers = _headers;
+ }
+
+ getShelters(queryParams = {}) {
+ const url = `${this._baseUrl}/v1/shelters/?${new URLSearchParams(queryParams)}`;
+
+ return fetch(url, {
+ headers: this._headers,
+ }).then((res) => {
+ return super._processTheResponse(res);
+ });
+ }
+}
+
+const sheltersLisApi = new SheltersListApi({
+ _baseUrl: baseUrl,
+ _headers: apiHeaders,
+});
+
+export default sheltersLisApi;
diff --git a/src/pages/SheltersListPage/modules.js b/src/pages/SheltersListPage/modules.js
deleted file mode 100644
index 9e811b84..00000000
--- a/src/pages/SheltersListPage/modules.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import RedShelters from '../../modules/RedShelters/RedShelters';
-import YellowShelters from '../../modules/YellowShelters/YellowShelters';
-import GreenShelters from '../../modules/GreenShelters/GreenShelters';
-
-export {
- RedShelters,
- YellowShelters,
- GreenShelters,
-};
diff --git a/src/pages/SheltersListPage/styles/shelter-search.css b/src/pages/SheltersListPage/styles/shelter-search.css
index 8ea3f672..a5e029a1 100644
--- a/src/pages/SheltersListPage/styles/shelter-search.css
+++ b/src/pages/SheltersListPage/styles/shelter-search.css
@@ -1,6 +1,6 @@
.shelter-search {
display: flex;
- width: 1440px;
+ width: 100%;
padding: 44px 132px 32px;
flex-direction: column;
background-color: var(--color-background-base);
diff --git a/src/pages/SheltersListPage/utils/mapShelterResponse.js b/src/pages/SheltersListPage/utils/mapShelterResponse.js
new file mode 100644
index 00000000..e35bda7e
--- /dev/null
+++ b/src/pages/SheltersListPage/utils/mapShelterResponse.js
@@ -0,0 +1,15 @@
+const mapShelterResponse = (res) => {
+ return {
+ id: res.id,
+ profileImage: res.profile_image,
+ address: res.address,
+ name: res.name,
+ startHour: res.working_from_hour,
+ finishHour: res.working_to_hour,
+ webSite: res.web_site,
+ logo: res.logo,
+ warning: res.warning,
+ };
+};
+
+export default mapShelterResponse;
diff --git a/src/pages/TermsPage/TermsPage.jsx b/src/pages/TermsPage/TermsPage.jsx
new file mode 100644
index 00000000..d1aa1827
--- /dev/null
+++ b/src/pages/TermsPage/TermsPage.jsx
@@ -0,0 +1,124 @@
+import React from 'react';
+import './TermsPage.scss';
+import DetailsCard from '../../components/DetailsCard/DetailsCard';
+import MainContainer from '../../components/MainContainer/MainContainer';
+
+const TermsOfServicePage = () => {
+ return (
+
+
+
+ -
+
+
+
+ Настоящее Пользовательское Соглашение (Далее Соглашение) регулирует отношения между владельцем https://lapkipomoshi.ru/ (далее Лапки помощи
+ или Администрация) с одной стороны и пользователем сайта с другой. Сайт Лапки помощи не является средством массовой информации.
+
+
Используя сайт, Вы соглашаетесь с условиями данного соглашения.
+
+ Если Вы не согласны с условиями данного соглашения, не используйте сайт Лапки помощи!
+
+
+
+
+
+ -
+
+
+
+ - Пользователь имеет право:
+ - - осуществлять поиск информации на сайте
+ - - получать информацию на сайте
+ - - создавать информацию для сайта
+ - - распространять информацию на сайте
+ - - комментировать контент, выложенный на сайте
+ - - изменять рейтинг пользователей
+ - - копировать информацию на другие сайты с указанием источника
+ - - требовать от администрации скрытия любой информации о пользователе
+ - - требовать от администрации скрытия любой информации переданной пользователем сайту
+ - - использовать информацию сайта в личных некоммерческих целях
+ - - использовать информацию сайта в коммерческих целях с разрешения Администрации
+ - - использовать информацию сайта в коммерческих целях с разрешения правообладателей
+ - - использовать информацию сайта в коммерческих целях без специального разрешения
+
+
+
+ - Администрация имеет право:
+ - - по своему усмотрению и необходимости создавать, изменять, отменять правила
+ - - получать информацию на сайте
+ - - создавать, изменять, удалять информацию
+ - - удалять учетные записи
+
+
+
+ - Пользователь обязуется:
+ - - обеспечить достоверность предоставляемой информации
+ - - обеспечивать сохранность личных данных от доступа третьих лиц
+ - - обновлять Персональные данные, предоставленные при регистрации, в случае их изменения
+ - - при копировании информации с других источников, включать в её состав информацию об авторе
+ -
+ - не распространять информацию, которая направлена на пропаганду войны, разжигание национальной, расовой или религиозной ненависти и вражды,
+ а также иной информации, за распространение которой предусмотрена уголовная или административная ответственность
+
+ - - не нарушать работоспособность сайта
+ - - не совершать действия, направленные на введение других Пользователей в заблуждение
+ -
+ - не размещать материалы рекламного, эротического, порнографического или оскорбительного характера, а также иную информацию, размещение
+ которой запрещено или противоречит нормам действующего законодательства РФ
+
+ - - не использовать скрипты (программы) для автоматизированного сбора информации и/или взаимодействия с Сайтом и его Сервисами
+
+
+
+ - Администрация обязуется:
+ - - поддерживать работоспособность сайта за исключением случаев, когда это невозможно по независящим от Администрации причинам.
+ - - осуществлять разностороннюю защиту учетной записи Пользователя
+ -
+ - защищать информацию, распространение которой ограничено или запрещено законами путем вынесения предупреждения либо удалением учетной
+ записи пользователя, нарушившего правила
+
+ -
+ - предоставить всю доступную информацию о Пользователе уполномоченным на то органам государственной власти в случаях, установленных законом
+
+
+
+
+
+
+ -
+
+
+
+ - - пользователь лично несет полную ответственность за распространяемую им информацию
+ - - администрация не несет никакой ответственности за достоверность информации, скопированной из других источников
+ - - администрация не несёт ответственность за несовпадение ожидаемых Пользователем и реально полученных услуг
+ - - администрация не несет никакой ответственности за услуги, предоставляемые третьими лицами
+ -
+ - в случае возникновения форс-мажорной ситуации (боевые действия, чрезвычайное положение, стихийное бедствие и т. д.) Администрация не
+ гарантирует сохранность информации, размещённой Пользователем, а также бесперебойную работу информационного ресурса
+
+
+
+
+
+
+ -
+
+
+
+ - Данное Соглашение вступает в силу при любом использовании данного сайта.
+ - Соглашение перестает действовать при появлении его новой версии.
+ - Администрация оставляет за собой право в одностороннем порядке изменять данное соглашение по своему усмотрению.
+ - Администрация не оповещает пользователей об изменении в Соглашении.
+
+
+
+
+
+
+
+ );
+};
+
+export default TermsOfServicePage;
diff --git a/src/pages/TermsPage/TermsPage.scss b/src/pages/TermsPage/TermsPage.scss
new file mode 100644
index 00000000..2fa9e5ce
--- /dev/null
+++ b/src/pages/TermsPage/TermsPage.scss
@@ -0,0 +1,6 @@
+@import url('./styles/__container/terms__container.scss');
+@import url('./styles/__description-container/terms__description-container.scss');
+@import url('./styles/__description/terms__description.scss');
+@import url('./styles/__item/terms__item.scss');
+@import url('./styles/__list/terms__list.scss');
+@import url('./styles/__description-subtitle/terms__description-subtitle.scss');
diff --git a/src/pages/TermsPage/styles/__container/terms__container.scss b/src/pages/TermsPage/styles/__container/terms__container.scss
new file mode 100644
index 00000000..b772add3
--- /dev/null
+++ b/src/pages/TermsPage/styles/__container/terms__container.scss
@@ -0,0 +1,13 @@
+.terms__container {
+ box-sizing: border-box;
+ background-color: var(--color-background-additional);
+ margin: 20px auto 80px;
+ padding: 40px;
+ border-radius: 20px;
+ width: 550px; //макета на адаптив пока нет, поставила временные значения
+
+ @media (min-width: 1200px) {
+ width: 1176px;
+ margin: 44px auto 80px;
+ }
+}
diff --git a/src/pages/TermsPage/styles/__description-container/terms__description-container.scss b/src/pages/TermsPage/styles/__description-container/terms__description-container.scss
new file mode 100644
index 00000000..20d4bed8
--- /dev/null
+++ b/src/pages/TermsPage/styles/__description-container/terms__description-container.scss
@@ -0,0 +1,7 @@
+.terms__description-container {
+ background-color: var(--color-background-additional);
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+ padding: 16px 60px 0 0;
+}
diff --git a/src/pages/TermsPage/styles/__description-subtitle/terms__description-subtitle.scss b/src/pages/TermsPage/styles/__description-subtitle/terms__description-subtitle.scss
new file mode 100644
index 00000000..1b7b6756
--- /dev/null
+++ b/src/pages/TermsPage/styles/__description-subtitle/terms__description-subtitle.scss
@@ -0,0 +1,3 @@
+.terms__description-subtitle {
+ margin-bottom: 8px;
+}
diff --git a/src/pages/TermsPage/styles/__description/terms__description.scss b/src/pages/TermsPage/styles/__description/terms__description.scss
new file mode 100644
index 00000000..3e9cff4e
--- /dev/null
+++ b/src/pages/TermsPage/styles/__description/terms__description.scss
@@ -0,0 +1,5 @@
+.terms__description {
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+}
diff --git a/src/pages/TermsPage/styles/__item/terms__item.scss b/src/pages/TermsPage/styles/__item/terms__item.scss
new file mode 100644
index 00000000..a925951e
--- /dev/null
+++ b/src/pages/TermsPage/styles/__item/terms__item.scss
@@ -0,0 +1,3 @@
+.terms__item:not(:last-child) {
+ padding-bottom: 24px;
+}
diff --git a/src/pages/TermsPage/styles/__list/terms__list.scss b/src/pages/TermsPage/styles/__list/terms__list.scss
new file mode 100644
index 00000000..4e8d547e
--- /dev/null
+++ b/src/pages/TermsPage/styles/__list/terms__list.scss
@@ -0,0 +1,6 @@
+.terms__list {
+ width: 100%;
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+}
diff --git a/src/templates/chageEmailTemplate.html b/src/templates/chageEmailTemplate.html
new file mode 100644
index 00000000..b5c42dc4
--- /dev/null
+++ b/src/templates/chageEmailTemplate.html
@@ -0,0 +1,343 @@
+
+
+
+
+
+
Изменение Email
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Изменение Email
+ Здравствуйте, Имя Отчество!
+
+ Вы успешно изменили адрес электронной почты для доступа к учетной записи на сайте «Лапки помощи».
+
+
+
+
+
+
+
+ Ваши обновленные учетные данные для входа в личный кабинет сайта «Лапки помощи».
+ |
+
+
+
+
+ Ваш логин: mail@gmail.com
+ Ваш пароль: 435sfd8
+ |
+
+
+
+
+
+
+ Если вы не пытались зарегистрироваться на сайте «Лапки помощи», то просто проигнорируйте это письмо. Возможно, кто-то совершил ошибку.
+
+
+
+
+
+
+
+ Спасибо
+ Искренне ваша, команда «Лапки помощи»
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/src/templates/changePasswordTemplate.html b/src/templates/changePasswordTemplate.html
new file mode 100644
index 00000000..9e194381
--- /dev/null
+++ b/src/templates/changePasswordTemplate.html
@@ -0,0 +1,343 @@
+
+
+
+
+
+
Изменение пароля
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Изменение пароля
+ Здравствуйте, Имя Отчество!
+
+ Вы успешно установили новый пароль для доступа к учетной записи на сайте «Лапки помощи».
+
+
+
+
+
+
+
+ Ваши обновленные учетные данные для входа в личный кабинет сайта «Лапки помощи».
+ |
+
+
+
+
+ Ваш логин: mail@gmail.com
+ Ваш пароль: 435sfd8
+ |
+
+
+
+
+
+
+ Если вы не пытались зарегистрироваться на сайте «Лапки помощи», то просто проигнорируйте это письмо. Возможно, кто-то совершил ошибку.
+
+
+
+
+
+
+
+ Спасибо
+ Искренне ваша, команда «Лапки помощи»
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/src/templates/emailConfirmationTemplate.html b/src/templates/emailConfirmationTemplate.html
new file mode 100644
index 00000000..cdcb4638
--- /dev/null
+++ b/src/templates/emailConfirmationTemplate.html
@@ -0,0 +1,360 @@
+
+
+
+
+
+
Подтверждение email
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Подтверждение Email
+ Здравствуйте, Имя Отчество!
+
+ Мы недавно получили запрос на создание Аккаунта на сайте «Лапки помощи».
+
+ Чтобы проверить, что Вы совершили данный запрос, мы послали Вам данное подтверждающее письмо.
+
+
+
+ Обратите внимание: срок действия ссылки 24 часа.
+
+ Если вы не пытались зарегистрироваться на сайте «Лапки помощи», то просто проигнорируйте это письмо. Возможно, кто-то совершил ошибку.
+
+
+
+
+
+
+
+ Спасибо
+ Искренне ваша, команда «Лапки помощи»
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/src/templates/icons/footer__icon_classmates.svg b/src/templates/icons/footer__icon_classmates.svg
new file mode 100644
index 00000000..25b20afc
--- /dev/null
+++ b/src/templates/icons/footer__icon_classmates.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/templates/icons/footer__icon_telegram.svg b/src/templates/icons/footer__icon_telegram.svg
new file mode 100644
index 00000000..a72eb5fe
--- /dev/null
+++ b/src/templates/icons/footer__icon_telegram.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/templates/icons/footer__icon_vk.svg b/src/templates/icons/footer__icon_vk.svg
new file mode 100644
index 00000000..d4278277
--- /dev/null
+++ b/src/templates/icons/footer__icon_vk.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/templates/icons/ic_paw.svg b/src/templates/icons/ic_paw.svg
new file mode 100644
index 00000000..95810620
--- /dev/null
+++ b/src/templates/icons/ic_paw.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/templates/resetPasswordTemplate.html b/src/templates/resetPasswordTemplate.html
new file mode 100644
index 00000000..4d309e2a
--- /dev/null
+++ b/src/templates/resetPasswordTemplate.html
@@ -0,0 +1,359 @@
+
+
+
+
+
+
Восстановление пароля
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Восстановление пароля
+ Здравствуйте, Имя Отчество!
+
+ Вы не смогли войти на сайт «Лапки помощи» и запросили
+ восстановление пароля.
+
+ Перейдите по этой ссылке и придумайте новый пароль.
+
+
+
+ Обратите внимание: срок действия ссылки 24 часа.
+
+ Если вы не пытались зарегистрироваться на сайте «Лапки помощи», то просто проигнорируйте это письмо. Возможно, кто-то совершил ошибку.
+
+
+
+
+
+
+
+ Спасибо
+ Искренне ваша, команда «Лапки помощи»
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/src/templates/successRegistrationTemplate.html b/src/templates/successRegistrationTemplate.html
new file mode 100644
index 00000000..69e41867
--- /dev/null
+++ b/src/templates/successRegistrationTemplate.html
@@ -0,0 +1,416 @@
+
+
+
+
+
+
Успешная регистрация
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Успешная регистрация!
+ Здравствуйте, Имя Отчество!
+
+ Поздравляем Вас с успешной регистрацией на сайте «Лапки помощи».
+
+ Для авторизации перейдите по ссылке:
+
+
+
+
+
+
+
+
+ Ваши учетные данные для входа в личный кабинет сайта «Лапки помощи».
+ |
+
+
+
+
+ Ваш логин: mail@gmail.com
+ |
+
+
+
+
+ Ваш пароль: 435sfd8
+ |
+
+
+
+
+
+
+ Обратите внимание: срок действия ссылки 24 часа.
+
+ Если вы не пытались зарегистрироваться на сайте «Лапки помощи», то просто проигнорируйте это письмо. Возможно, кто-то совершил
+ ошибку.
+
+
+
+
+
+
+
+
+ Спасибо
+ Искренне ваша, команда «Лапки помощи»
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/src/ui/Input/Input.jsx b/src/ui/Input/Input.jsx
index 7a8b06fb..168dfb8c 100644
--- a/src/ui/Input/Input.jsx
+++ b/src/ui/Input/Input.jsx
@@ -2,7 +2,7 @@ import React from 'react';
import './Input.scss';
function Input({
- labelText, inputName, inputType, spanText, onBlur, onChange, minLength, maxLength, errorMessage, isValid, value,
+ labelText, inputName, inputType, spanText, onChange, minLength, maxLength, errorMessage, isValid, value,
}) {
return (
@@ -15,7 +15,6 @@ function Input({
maxLength={maxLength}
value={value}
required
- onBlur={onBlur}
onChange={onChange}
/>
{spanText}
diff --git a/src/ui/Input/Input.scss b/src/ui/Input/Input.scss
index 083998a8..9d0f9468 100644
--- a/src/ui/Input/Input.scss
+++ b/src/ui/Input/Input.scss
@@ -20,6 +20,10 @@
border-radius: 8px;
padding: 8px 16px;
+ &:-webkit-autofill {
+ -webkit-box-shadow: 0 0 0 1000px white inset;
+ }
+
&:focus {
outline: none;
}
diff --git a/src/ui/PasswordInput/PasswordInput.jsx b/src/ui/PasswordInput/PasswordInput.jsx
index 8372d43f..b3c96710 100644
--- a/src/ui/PasswordInput/PasswordInput.jsx
+++ b/src/ui/PasswordInput/PasswordInput.jsx
@@ -2,7 +2,7 @@ import React, { useState } from 'react';
import './PasswordInput.scss';
function PasswordInput({
- spanText, minLength, maxLength, onChange, onBlur, errorMessage, isValid, spanPrompt,
+ spanText, minLength, maxLength, onChange, errorMessage, isValid, spanPrompt,
}) {
const [isOpen, setIsOpen] = useState(false);
function showPassword() {
@@ -35,7 +35,6 @@ function PasswordInput({
minLength={minLength}
maxLength={maxLength}
onChange={onChange}
- onBlur={onBlur}
/>
diff --git a/src/ui/PasswordInput/PasswordInput.scss b/src/ui/PasswordInput/PasswordInput.scss
index ac170722..990fefb8 100644
--- a/src/ui/PasswordInput/PasswordInput.scss
+++ b/src/ui/PasswordInput/PasswordInput.scss
@@ -46,6 +46,10 @@ $images-path: '../../images';
border: none;
border-radius: 8px;
+ &:-webkit-autofill {
+ -webkit-box-shadow: 0 0 0 1000px white inset;
+ }
+
&:focus {
outline: none;
}
diff --git a/src/utils/constants.js b/src/utils/constants.js
index 9510fd3b..0409e09e 100644
--- a/src/utils/constants.js
+++ b/src/utils/constants.js
@@ -13,18 +13,23 @@ export const shelterLinkList = [
export const colorLinkList = [
{
- to: 'red',
+ to: '/shelters/list/red',
caption: 'Красные',
explanation: 'Красные приюты - те, которым для сбора нужной суммы не хватает больше всего. Им особенно нужна ваша помощь!',
},
{
- to: 'yellow',
+ to: '/shelters/list/yellow',
caption: 'Жёлтые',
explanation: 'Жёлтые приюты - те, которым для сбора нужной суммы не хватает совсем чуть-чуть. Возможно, именно вы поможете закрыть сбор!',
},
{
- to: 'green',
+ to: '/shelters/list/green',
caption: 'Зелёные',
explanation: 'Зелёные приюты - те, у которых успешно закрыт сбор материальных средств. Но вы так же можете оказать им нематериальную помощь!',
},
+ {
+ to: '/shelters/list/all',
+ caption: 'Все приюты',
+ explanation: 'Все приюты – это список всех имеющихся на сайте приютов.',
+ },
];