diff --git a/backend/app/core/config.py b/backend/app/core/config.py index 659dc40..d280577 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -6,7 +6,7 @@ from pydantic_settings import BaseSettings, SettingsConfigDict # Single source of truth for the running app's version — surfaced in the API # title and embedded in exported backups so an old file can be told apart # from a current one. -APP_VERSION = "0.19.0" +APP_VERSION = "0.19.1" class Settings(BaseSettings): diff --git a/frontend/package.json b/frontend/package.json index a13d3ce..b789c67 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "aurum-frontend", "private": true, - "version": "0.19.0", + "version": "0.19.1", "type": "module", "scripts": { "dev": "vite", diff --git a/frontend/src/components/settings/LanguageCard.tsx b/frontend/src/components/settings/LanguageCard.tsx deleted file mode 100644 index f3e9647..0000000 --- a/frontend/src/components/settings/LanguageCard.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/Card"; -import { PillSelector } from "@/components/layout/PillSelector"; -import { useTranslation, type Language } from "@/lib/i18n"; - -export function LanguageCard() { - const { t, language, setLanguage } = useTranslation(); - - const options: Array<{ value: Language; label: string }> = [ - { value: "ru", label: t("settings.languageRussian") }, - { value: "en", label: t("settings.languageEnglish") }, - ]; - - return ( - - - {t("settings.language")} - - - - - - ); -} diff --git a/frontend/src/components/settings/PreferencesCard.tsx b/frontend/src/components/settings/PreferencesCard.tsx new file mode 100644 index 0000000..96d1e9e --- /dev/null +++ b/frontend/src/components/settings/PreferencesCard.tsx @@ -0,0 +1,42 @@ +import { Card, CardContent } from "@/components/ui/Card"; +import { PillSelector } from "@/components/layout/PillSelector"; +import { useTranslation, type Language } from "@/lib/i18n"; +import { useTheme, type Theme } from "@/lib/theme"; + +/** Language and theme side by side — both are pure client-side display + * preferences (unlike currency, which is server-persisted), so pairing + * them saves a whole card's worth of vertical space over listing each on + * its own. Stacks back to one column on mobile. */ +export function PreferencesCard() { + const { t, language, setLanguage } = useTranslation(); + const { theme, setTheme } = useTheme(); + + const languageOptions: Array<{ value: Language; label: string }> = [ + { value: "ru", label: t("settings.languageRussian") }, + { value: "en", label: t("settings.languageEnglish") }, + ]; + const themeOptions: Array<{ value: Theme; label: string }> = [ + { value: "light", label: t("settings.themeLight") }, + { value: "dark", label: t("settings.themeDark") }, + { value: "system", label: t("settings.themeSystem") }, + ]; + + return ( + + +
+

{t("settings.language")}

+
+ +
+
+
+

{t("settings.theme")}

+
+ +
+
+
+
+ ); +} diff --git a/frontend/src/components/settings/ThemeCard.tsx b/frontend/src/components/settings/ThemeCard.tsx deleted file mode 100644 index 9a127f8..0000000 --- a/frontend/src/components/settings/ThemeCard.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/Card"; -import { PillSelector } from "@/components/layout/PillSelector"; -import { useTranslation } from "@/lib/i18n"; -import { useTheme, type Theme } from "@/lib/theme"; - -export function ThemeCard() { - const { t } = useTranslation(); - const { theme, setTheme } = useTheme(); - - const options: Array<{ value: Theme; label: string }> = [ - { value: "light", label: t("settings.themeLight") }, - { value: "dark", label: t("settings.themeDark") }, - { value: "system", label: t("settings.themeSystem") }, - ]; - - return ( - - - {t("settings.theme")} - - - - - - ); -} diff --git a/frontend/src/pages/SettingsPage.tsx b/frontend/src/pages/SettingsPage.tsx index b5e11e7..16255ae 100644 --- a/frontend/src/pages/SettingsPage.tsx +++ b/frontend/src/pages/SettingsPage.tsx @@ -1,14 +1,12 @@ import { AlertThresholdsCard } from "@/components/settings/AlertThresholdsCard"; import { BackupCard } from "@/components/settings/BackupCard"; import { CurrencyCard } from "@/components/settings/CurrencyCard"; -import { LanguageCard } from "@/components/settings/LanguageCard"; -import { ThemeCard } from "@/components/settings/ThemeCard"; +import { PreferencesCard } from "@/components/settings/PreferencesCard"; export function SettingsPage() { return (
- - +