From 41ad15e20b2ee5df5525a252fb812fe99b7a8254 Mon Sep 17 00:00:00 2001 From: Emmanuel Pelletier Date: Wed, 24 Jul 2024 16:51:35 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(frontend)=20new=20settings=20dialog?= =?UTF-8?q?=20to=20handle=20user=20account/language?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add a settings button directly in the homepage to change language or see user account settings --- src/frontend/panda.config.ts | 2 +- .../src/features/home/routes/Home.tsx | 3 ++ .../settings/components/SettingsButton.tsx | 16 +++++++ .../settings/components/SettingsDialog.tsx | 46 +++++++++++++++++++ src/frontend/src/features/settings/index.ts | 1 + src/frontend/src/i18n/LanguageSelector.tsx | 2 +- src/frontend/src/i18n/useLanguageLabels.ts | 8 +++- src/frontend/src/locales/de/settings.json | 15 ++++++ src/frontend/src/locales/en/settings.json | 15 ++++++ src/frontend/src/locales/fr/settings.json | 15 ++++++ src/frontend/src/primitives/Button.tsx | 22 +++++++-- 11 files changed, 139 insertions(+), 6 deletions(-) create mode 100644 src/frontend/src/features/settings/components/SettingsButton.tsx create mode 100644 src/frontend/src/features/settings/components/SettingsDialog.tsx create mode 100644 src/frontend/src/features/settings/index.ts create mode 100644 src/frontend/src/locales/de/settings.json create mode 100644 src/frontend/src/locales/en/settings.json create mode 100644 src/frontend/src/locales/fr/settings.json diff --git a/src/frontend/panda.config.ts b/src/frontend/panda.config.ts index 6e8b6101..c92970e8 100644 --- a/src/frontend/panda.config.ts +++ b/src/frontend/panda.config.ts @@ -231,7 +231,7 @@ const config: Config = { DEFAULT: { value: '{spacing.1}' }, lg: { value: '{spacing.2}' }, }, - paragraph: { value: '{spacing.1}' }, + paragraph: { value: '{spacing.0.5}' }, heading: { value: '{spacing.1}' }, gutter: { value: '{spacing.1}' }, textfield: { value: '{spacing.1}' }, diff --git a/src/frontend/src/features/home/routes/Home.tsx b/src/frontend/src/features/home/routes/Home.tsx index 2c9bb459..76051c4d 100644 --- a/src/frontend/src/features/home/routes/Home.tsx +++ b/src/frontend/src/features/home/routes/Home.tsx @@ -5,6 +5,7 @@ import { authUrl, useUser } from '@/features/auth' import { navigateToNewRoom } from '@/features/rooms' import { Screen } from '@/layout/Screen' import { JoinMeetingDialogContent } from '../components/JoinMeetingDialogContent' +import { SettingsButton } from '@/features/settings' export const Home = () => { const { t } = useTranslation('home') @@ -39,6 +40,8 @@ export const Home = () => { + + diff --git a/src/frontend/src/features/settings/components/SettingsButton.tsx b/src/frontend/src/features/settings/components/SettingsButton.tsx new file mode 100644 index 00000000..d0ddd9e2 --- /dev/null +++ b/src/frontend/src/features/settings/components/SettingsButton.tsx @@ -0,0 +1,16 @@ +import { useTranslation } from 'react-i18next' +import { RiSettings3Line } from '@remixicon/react' +import { Dialog, Button } from '@/primitives' +import { SettingsDialog } from './SettingsDialog' + +export const SettingsButton = () => { + const { t } = useTranslation('settings') + return ( + + + + + ) +} diff --git a/src/frontend/src/features/settings/components/SettingsDialog.tsx b/src/frontend/src/features/settings/components/SettingsDialog.tsx new file mode 100644 index 00000000..9d592e5a --- /dev/null +++ b/src/frontend/src/features/settings/components/SettingsDialog.tsx @@ -0,0 +1,46 @@ +import { Trans, useTranslation } from 'react-i18next' +import { useLanguageLabels } from '@/i18n/useLanguageLabels' +import { A, Badge, DialogContent, Field, H, P } from '@/primitives' +import { authUrl, logoutUrl, useUser } from '@/features/auth' + +export const SettingsDialog = () => { + const { t, i18n } = useTranslation('settings') + const { user, isLoggedIn } = useUser() + const { languagesList, currentLanguage } = useLanguageLabels() + return ( + + {t('account.heading')} + {isLoggedIn ? ( + <> +

+ ]} + /> +

+

+ {t('logout', { ns: 'global' })} +

+ + ) : ( + <> +

{t('account.youAreNotLoggedIn')}

+

+ {t('login', { ns: 'global' })} +

+ + )} + {t('language.heading')} + { + i18n.changeLanguage(lang as string) + }} + /> +
+ ) +} diff --git a/src/frontend/src/features/settings/index.ts b/src/frontend/src/features/settings/index.ts new file mode 100644 index 00000000..c1039a83 --- /dev/null +++ b/src/frontend/src/features/settings/index.ts @@ -0,0 +1 @@ +export { SettingsButton } from './components/SettingsButton' diff --git a/src/frontend/src/i18n/LanguageSelector.tsx b/src/frontend/src/i18n/LanguageSelector.tsx index 0254c790..8047757a 100644 --- a/src/frontend/src/i18n/LanguageSelector.tsx +++ b/src/frontend/src/i18n/LanguageSelector.tsx @@ -9,7 +9,7 @@ export const LanguageSelector = () => {