From 1ea457a39da063edb4cb19c7bede9b934424ae4c Mon Sep 17 00:00:00 2001 From: Daniil Bobrov Date: Sat, 8 Jun 2024 14:48:42 +0300 Subject: [PATCH 01/16] imported ApperearanceForm into settings --- frontend/src/pages/settings/index.jsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/src/pages/settings/index.jsx b/frontend/src/pages/settings/index.jsx index 6299dff2..87b99b40 100644 --- a/frontend/src/pages/settings/index.jsx +++ b/frontend/src/pages/settings/index.jsx @@ -8,6 +8,7 @@ import Container from 'react-bootstrap/Container'; import Row from 'react-bootstrap/Row'; import Stack from 'react-bootstrap/Stack'; +import ApperearanceForm from 'src/components/Forms/AppearanceForm.jsx'; import { actions as modalActions } from '../../slices/modalSlice.js'; import AvatarChangeForm from '../../components/Forms/AvatarChangeForm.jsx'; @@ -40,6 +41,8 @@ function SettingsPage() {
+
+ From 0b1070aedaa81f993dcbe27af6a5682cd1b3f090 Mon Sep 17 00:00:00 2001 From: Daniil Bobrov Date: Sat, 8 Jun 2024 15:04:36 +0300 Subject: [PATCH 02/16] added new locales --- frontend/src/locales/ru.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frontend/src/locales/ru.json b/frontend/src/locales/ru.json index 37382b37..000d01f1 100644 --- a/frontend/src/locales/ru.json +++ b/frontend/src/locales/ru.json @@ -395,6 +395,7 @@ "signUp": "Регистрация" }, "profileSettings": { + "appearance": "Внешний вид", "changeButton": "Изменить", "changePassword": "Изменить пароль", "currentPassword": "Текущий пароль", @@ -407,7 +408,11 @@ "updateButton": "Изменить", "updateFailed": "Не удалось обновить данные. Попробуйте позже", "updateSuccessful": "Данные аккаунта были обновлены", - "usernameLabel": "Имя пользователя" + "usernameLabel": "Имя пользователя", + "language": "Язык интерфейса", + "theme": "Тема", + "russian": "Русский", + "english": "English" }, "forgotPass": { "pageHeader": "Забыли пароль?", From b4936765bfe953e62da14857a2bc709ab8615c13 Mon Sep 17 00:00:00 2001 From: Daniil Bobrov Date: Sat, 8 Jun 2024 19:01:33 +0300 Subject: [PATCH 03/16] changed name of locales --- frontend/src/locales/ru.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/locales/ru.json b/frontend/src/locales/ru.json index 000d01f1..31fc5b17 100644 --- a/frontend/src/locales/ru.json +++ b/frontend/src/locales/ru.json @@ -411,8 +411,8 @@ "usernameLabel": "Имя пользователя", "language": "Язык интерфейса", "theme": "Тема", - "russian": "Русский", - "english": "English" + "ru": "Русский", + "en": "English" }, "forgotPass": { "pageHeader": "Забыли пароль?", From d3adf227ce938e3371356a91a4b345f36a8421a8 Mon Sep 17 00:00:00 2001 From: Daniil Bobrov Date: Sat, 8 Jun 2024 19:38:52 +0300 Subject: [PATCH 04/16] added eng locales --- frontend/src/locales/en.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index 38c60a63..d5d0685d 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -262,6 +262,7 @@ "signUp": "Sign Up" }, "profileSettings": { + "appearance": "Appearance", "changeButton": "Change", "changePassword": "Change Password", "currentPassword": "Current Password", @@ -274,7 +275,9 @@ "updateButton": "Update", "updateFailed": "Failed to update account data. Try again later", "updateSuccessful": "Profile has been updated successfully", - "usernameLabel": "Username" + "usernameLabel": "Username", + "ru": "Russian", + "en": "English" }, "forgotPass": { "pageHeader": "Forgot password?", From 2e484854918a2f35f4d93d30742459d2afe44624 Mon Sep 17 00:00:00 2001 From: Daniil Bobrov Date: Sat, 8 Jun 2024 19:41:34 +0300 Subject: [PATCH 05/16] created AppearanceForm component --- .../src/components/Forms/AppearanceForm.jsx | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 frontend/src/components/Forms/AppearanceForm.jsx diff --git a/frontend/src/components/Forms/AppearanceForm.jsx b/frontend/src/components/Forms/AppearanceForm.jsx new file mode 100644 index 00000000..d88e05da --- /dev/null +++ b/frontend/src/components/Forms/AppearanceForm.jsx @@ -0,0 +1,60 @@ +import { useFormik } from 'formik'; +import { Button } from 'react-bootstrap'; +import Form from 'react-bootstrap/Form'; +import { useTranslation } from 'react-i18next'; +import { useSelector } from 'react-redux'; +import { useLanguage } from '../../hooks'; + +function LanguageItem({ value, language }) { + const { t } = useTranslation(); + return value === language ? ( + + ) : ( + + ); +} + +function ApperearanceForm() { + const { t } = useTranslation(); + const { language, availableLanguages, setLanguage } = useLanguage(); + const userInfo = useSelector((state) => state.user.userInfo); + const initialValues = { + language: language, + theme: '', + }; + const formik = useFormik({ + initialValues, + onSubmit: (values) => {}, + }); + return ( +
+
{t('profileSettings.appearance')}
+ + {t('profileSettings.language')} + + {availableLanguages.map((lang) => { + return ; + })} + + + + {t('profileSettings.theme')} + + + + + + + +
+ ); +} + +export default ApperearanceForm; From 1e3cff396a2b9ba4e3e3c1a7dd253f95ffbf2f9e Mon Sep 17 00:00:00 2001 From: Daniil Bobrov Date: Sun, 9 Jun 2024 23:18:41 +0300 Subject: [PATCH 06/16] added themeItem for AppearanceForm --- .../src/components/Forms/AppearanceForm.jsx | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/Forms/AppearanceForm.jsx b/frontend/src/components/Forms/AppearanceForm.jsx index d88e05da..fb7a52a8 100644 --- a/frontend/src/components/Forms/AppearanceForm.jsx +++ b/frontend/src/components/Forms/AppearanceForm.jsx @@ -3,6 +3,7 @@ import { Button } from 'react-bootstrap'; import Form from 'react-bootstrap/Form'; import { useTranslation } from 'react-i18next'; import { useSelector } from 'react-redux'; +import { useTernaryDarkMode } from 'usehooks-ts'; import { useLanguage } from '../../hooks'; function LanguageItem({ value, language }) { @@ -14,13 +15,24 @@ function LanguageItem({ value, language }) { ); } +function ThemeItem({ value, theme }) { + const { t } = useTranslation(); + return value === theme ? ( + + ) : ( + + ); +} + function ApperearanceForm() { const { t } = useTranslation(); const { language, availableLanguages, setLanguage } = useLanguage(); - const userInfo = useSelector((state) => state.user.userInfo); + const { ternaryDarkMode, setTernaryDarkMode } = useTernaryDarkMode(); + const themes = ['system', 'light', 'dark']; + // const userInfo = useSelector((state) => state.user.userInfo); const initialValues = { - language: language, - theme: '', + language, + theme: ternaryDarkMode, }; const formik = useFormik({ initialValues, @@ -31,7 +43,7 @@ function ApperearanceForm() {
{t('profileSettings.appearance')}
{t('profileSettings.language')} - + {availableLanguages.map((lang) => { return ; })} @@ -39,10 +51,12 @@ function ApperearanceForm() { {t('profileSettings.theme')} - - - - + + {themes.map((theme) => { + return ( + + ); + })}