import React, { useState } from 'react'; import { useLanguage } from '../LanguageContext'; import { apiService } from '../services/api'; import { Lock, User, Loader2, Languages, ArrowRight, ArrowLeftRight } from 'lucide-react'; interface LoginScreenProps { onLoginSuccess: (token: string, username: string) => void; onLoginError: (msg: string) => void; } const LoginScreen: React.FC = ({ onLoginSuccess, onLoginError }) => { const { t, language, setLanguage } = useLanguage(); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [isLoading, setIsLoading] = useState(false); const [localError, setLocalError] = useState(null); const [isLangMenuOpen, setIsLangMenuOpen] = useState(false); const handleLogin = async (e: React.FormEvent) => { e.preventDefault(); setIsLoading(true); setLocalError(null); try { // Mock credentials: admin / password const response = await apiService.login({ username, password }); if (response.status === 'success') { onLoginSuccess(response.data.token, response.data.username); } else { const errorMsg = response.message || t('auth.invalidCredentials'); setLocalError(errorMsg); onLoginError(errorMsg); } } catch (err) { setLocalError(t('auth.invalidCredentials')); } finally { setIsLoading(false); } }; return (
{/* Background decoration */}
{/* Language Switcher (Top Right) */}
{isLangMenuOpen && ( <>
setIsLangMenuOpen(false)}>
)}
{/* Main Card */}

PMS Playlist Sync

{localError && (
{localError}
)}
setUsername(e.target.value)} className="w-full h-11 pl-10 pr-4 bg-gray-800/50 border border-gray-600 rounded-lg text-white placeholder-gray-500 focus:border-plex-orange focus:ring-1 focus:ring-plex-orange focus:outline-none transition-all" placeholder="admin" />
setPassword(e.target.value)} className="w-full h-11 pl-10 pr-4 bg-gray-800/50 border border-gray-600 rounded-lg text-white placeholder-gray-500 focus:border-plex-orange focus:ring-1 focus:ring-plex-orange focus:outline-none transition-all" placeholder="password" />

© PMS Playlist Sync

); }; export default LoginScreen;