Commit 8f614368 by asranov0003

feat: add modal box utility classes

parent e9b9e13b
...@@ -113,12 +113,18 @@ ...@@ -113,12 +113,18 @@
"createTitle": "Create your PIN Code", "createTitle": "Create your PIN Code",
"confirmTitle": "Confirm your PIN Code" "confirmTitle": "Confirm your PIN Code"
}, },
"logout": {
"title": "Logout",
"desc": "Are you sure you want to continue?"
},
"button": { "button": {
"login": "Login", "login": "Login",
"register": "Register", "register": "Register",
"recover": "Recover", "recover": "Recover",
"continue": "Continue", "continue": "Continue",
"resetPassword": "Reset Password" "resetPassword": "Reset Password",
"logout": "Logout",
"cancel": "Cancel"
}, },
"notFound": { "notFound": {
"code": "404", "code": "404",
......
...@@ -113,12 +113,18 @@ ...@@ -113,12 +113,18 @@
"createTitle": "Создайте PIN-код", "createTitle": "Создайте PIN-код",
"confirmTitle": "Подтвердите PIN-код" "confirmTitle": "Подтвердите PIN-код"
}, },
"logout": {
"title": "Выйти",
"desc": "Вы уверены, что хотите продолжить?"
},
"button": { "button": {
"login": "Войти", "login": "Войти",
"register": "Зарегистрироваться", "register": "Зарегистрироваться",
"recover": "Восстановить", "recover": "Восстановить",
"continue": "Продолжить", "continue": "Продолжить",
"resetPassword": "Сбросить пароль" "resetPassword": "Сбросить пароль",
"logout": "Выйти",
"cancel": "Отмена"
}, },
"notFound": { "notFound": {
"code": "404", "code": "404",
......
import React from "react"; import React, { useState } from "react";
import "./Settings.css"; import "./Settings.css";
import { useLanguage } from "../../contexts/LanguageContext/useLanguage"; import { useLanguage } from "../../contexts/LanguageContext/useLanguage";
import CSelect from "../../components/CSelect"; import CSelect from "../../components/CSelect";
...@@ -10,12 +10,19 @@ import { MdOutlineLogout } from "react-icons/md"; ...@@ -10,12 +10,19 @@ import { MdOutlineLogout } from "react-icons/md";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { useAppDispatch } from "../../stores/store"; import { useAppDispatch } from "../../stores/store";
import { logout } from "../../stores/slices/authSlice"; import { logout } from "../../stores/slices/authSlice";
import CModal from "../../components/CModal";
import CButton from "../../components/CButton";
const Settings: React.FC = () => { const Settings: React.FC = () => {
const [isOpenLogoutModal, setIsOpenLogoutModal] = useState(false);
const { language, changeLanguage } = useLanguage(); const { language, changeLanguage } = useLanguage();
const { t } = useTranslation(); const { t } = useTranslation();
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const toggleLogoutModal = () => {
setIsOpenLogoutModal((prev) => !prev);
};
return ( return (
<div className="settings"> <div className="settings">
<h3 className="settings__title">{t("settings.title")}</h3> <h3 className="settings__title">{t("settings.title")}</h3>
...@@ -62,14 +69,30 @@ const Settings: React.FC = () => { ...@@ -62,14 +69,30 @@ const Settings: React.FC = () => {
{t("settings.recoverPassword")} {t("settings.recoverPassword")}
</div> </div>
<div <div className="settings__content__action" onClick={toggleLogoutModal}>
className="settings__content__action"
onClick={() => dispatch(logout())}
>
<MdOutlineLogout className="settings__content__action__icon" />{" "} <MdOutlineLogout className="settings__content__action__icon" />{" "}
{t("settings.logout")} {t("settings.logout")}
</div> </div>
</div> </div>
<CModal
isOpen={isOpenLogoutModal}
onToggle={toggleLogoutModal}
content={
<div className="modal__box">
<h3 className="modal__box__title">{t("logout.title")}</h3>
<p>{t("logout.desc")}</p>
<div className="modal__box__actions">
<CButton title={t("button.cancel")} onClick={toggleLogoutModal} />
<CButton
title={t("button.logout")}
variant="danger"
onClick={() => dispatch(logout())}
/>
</div>
</div>
}
/>
</div> </div>
); );
}; };
......
...@@ -55,4 +55,19 @@ html[data-theme='dark'] { ...@@ -55,4 +55,19 @@ html[data-theme='dark'] {
--content-bg-color: #000000; --content-bg-color: #000000;
--text-color: #ffffff; --text-color: #ffffff;
--on-text-color: #000000; --on-text-color: #000000;
}
.modal__box {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.modal__box__title {
text-align: center;
}
.modal__box__actions {
display: flex;
gap: 0.5rem;
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment