diff --git a/apps/portal/src/app/components/ColorSchemeToggle.tsx b/apps/portal/src/app/components/ColorSchemeToggle.tsx
index 3f57d6041..e7bcd0ae8 100644
--- a/apps/portal/src/app/components/ColorSchemeToggle.tsx
+++ b/apps/portal/src/app/components/ColorSchemeToggle.tsx
@@ -1,4 +1,4 @@
-import { ActionIcon, useMantineColorScheme, useComputedColorScheme } from '@mantine/core';
+import { UnstyledButton, useMantineColorScheme, useComputedColorScheme, rem } from '@mantine/core';
import { IconSun, IconMoon } from '@tabler/icons-react';
import { useTranslation } from 'react-i18next';
@@ -9,13 +9,37 @@ export function ColorSchemeToggle() {
const isDark = computed === 'dark';
return (
- setColorScheme(isDark ? 'light' : 'dark')}
+ style={{
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'center',
+ width: rem(38),
+ height: rem(38),
+ borderRadius: rem(12),
+ background: 'var(--mantine-color-body)',
+ color: 'var(--mantine-color-gray-6)',
+ boxShadow: '0 1px 3px rgba(0,0,0,0.04), 0 0 0 1px rgba(0,0,0,0.06)',
+ transition: 'all 150ms ease',
+ cursor: 'pointer',
+ border: 'none',
+ }}
+ onMouseEnter={(e) => {
+ e.currentTarget.style.background = 'var(--mantine-color-primary-light)';
+ e.currentTarget.style.color = 'var(--mantine-color-primary-6)';
+ e.currentTarget.style.boxShadow =
+ '0 1px 3px rgba(0,0,0,0.04), 0 0 0 1px var(--mantine-color-primary-2)';
+ }}
+ onMouseLeave={(e) => {
+ e.currentTarget.style.background = 'var(--mantine-color-body)';
+ e.currentTarget.style.color = 'var(--mantine-color-gray-6)';
+ e.currentTarget.style.boxShadow =
+ '0 1px 3px rgba(0,0,0,0.04), 0 0 0 1px rgba(0,0,0,0.06)';
+ }}
>
- {isDark ? : }
-
+ {isDark ? : }
+
);
}
diff --git a/apps/portal/src/app/components/LanguageSwitcher.tsx b/apps/portal/src/app/components/LanguageSwitcher.tsx
index 3ea0d1f5c..18e8d9db9 100644
--- a/apps/portal/src/app/components/LanguageSwitcher.tsx
+++ b/apps/portal/src/app/components/LanguageSwitcher.tsx
@@ -1,5 +1,5 @@
-import { Menu, ActionIcon, Button } from '@mantine/core';
-import { IconWorld, IconCheck } from '@tabler/icons-react';
+import { Menu, UnstyledButton, Text, rem } from '@mantine/core';
+import { IconWorld, IconCheck, IconChevronDown } from '@tabler/icons-react';
import { useTranslation } from 'react-i18next';
import { SUPPORTED_LANGUAGES, type AppLanguage } from '../i18n/config';
@@ -19,21 +19,51 @@ export function LanguageSwitcher({ variant = 'icon' }: LanguageSwitcherProps) {
return (