+
+
{t('UI Style')}
+
+ {t('Choose between the new interface and the classic interface.')}
+
+
+
+
+
+
+
+ )
+}
diff --git a/web/default/src/features/profile/components/language-preferences-card.tsx b/web/default/src/features/profile/components/language-preferences-card.tsx
index c0d307f27e4..06394ef4c91 100644
--- a/web/default/src/features/profile/components/language-preferences-card.tsx
+++ b/web/default/src/features/profile/components/language-preferences-card.tsx
@@ -14,6 +14,7 @@ import { TitledCard } from '@/components/ui/titled-card'
import { updateUserLanguage } from '../api'
import { parseUserSettings } from '../lib'
import type { UserProfile } from '../types'
+import { setFrontendTheme, normalizeFrontendTheme } from '@/lib/frontend-theme'
const LANGUAGE_OPTIONS = [
{ value: 'zh', label: '简体中文' },
@@ -83,6 +84,13 @@ export function LanguagePreferencesCard(props: LanguagePreferencesCardProps) {
})
}
+ if (typeof document !== 'undefined') {
+ const setting = parseUserSettings(props.profile?.setting)
+ if (setting.frontend_theme) {
+ setFrontendTheme(normalizeFrontendTheme(setting.frontend_theme))
+ }
+ }
+
props.onProfileUpdate()
toast.success(t('Language preference saved'))
} catch (_error) {
diff --git a/web/default/src/features/profile/index.tsx b/web/default/src/features/profile/index.tsx
index 903a23985c4..2df9605162b 100644
--- a/web/default/src/features/profile/index.tsx
+++ b/web/default/src/features/profile/index.tsx
@@ -6,6 +6,7 @@ import {
CardStaggerItem,
} from '@/components/page-transition'
import { CheckinCalendarCard } from './components/checkin-calendar-card'
+import { FrontendThemeCard } from './components/frontend-theme-card'
import { LanguagePreferencesCard } from './components/language-preferences-card'
import { PasskeyCard } from './components/passkey-card'
import { ProfileHeader } from './components/profile-header'
@@ -45,6 +46,7 @@ export function Profile() {
loading={loading}
onProfileUpdate={refreshProfile}
/>
+