diff --git a/web/src/views/LoginView.vue b/web/src/views/LoginView.vue index 720118b6..40ec0d99 100644 --- a/web/src/views/LoginView.vue +++ b/web/src/views/LoginView.vue @@ -3,19 +3,41 @@ import { ref } from 'vue' import { useRouter, useRoute } from 'vue-router' import { useI18n } from 'vue-i18n' import { useAuthStore } from '@/stores/auth' -import { Monitor, Lock, Eye, EyeOff, User } from 'lucide-vue-next' +import { + supportedLanguages, + setLanguage, + getCurrentLanguage, + type SupportedLocale, +} from '@/i18n' +import { Button } from '@/components/ui/button' +import { Input } from '@/components/ui/input' +import { Label } from '@/components/ui/label' +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from '@/components/ui/dropdown-menu' +import { Monitor, Lock, Eye, EyeOff, User, Languages } from 'lucide-vue-next' const { t } = useI18n() const router = useRouter() const route = useRoute() const authStore = useAuthStore() +const currentLanguage = ref(getCurrentLanguage()) const username = ref('') const password = ref('') const showPassword = ref(false) const loading = ref(false) const error = ref('') +function switchLanguage(lang: SupportedLocale) { + currentLanguage.value = lang + setLanguage(lang) +} + async function handleLogin() { if (!username.value) { error.value = t('auth.enterUsername') @@ -40,76 +62,90 @@ async function handleLogin() { loading.value = false } - -function handleKeydown(e: KeyboardEvent) { - if (e.key === 'Enter') { - handleLogin() - } -}