{"ast":null,"code":"import React,{useState,useEffect}from'react';import{useNavigate}from'react-router-dom';import{useAuth}from'../contexts/AuthContext';import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";const Login=()=>{const[formData,setFormData]=useState({username:'',password:''});const[error,setError]=useState('');const[loading,setLoading]=useState(false);const{login,isAuthenticated}=useAuth();const navigate=useNavigate();// Redirect if already authenticated\nuseEffect(()=>{if(isAuthenticated){navigate('/',{replace:true});}},[isAuthenticated,navigate]);const handleChange=e=>{setFormData({...formData,[e.target.name]:e.target.value});setError('');// Clear error when user types\n};const handleSubmit=async e=>{e.preventDefault();setLoading(true);setError('');const result=await login(formData.username,formData.password);if(!result.success){setError(result.message);setLoading(false);}else{// Success! The useEffect will handle the redirect when isAuthenticated becomes true\nsetLoading(false);}};return/*#__PURE__*/_jsx(\"div\",{className:\"min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100 flex items-center justify-center py-12 px-4 sm:px-6 lg:px-8\",children:/*#__PURE__*/_jsxs(\"div\",{className:\"max-w-md w-full space-y-8\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"text-center\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"mx-auto h-16 w-16 bg-indigo-600 rounded-full flex items-center justify-center\",children:/*#__PURE__*/_jsx(\"svg\",{className:\"h-8 w-8 text-white\",fill:\"none\",stroke:\"currentColor\",viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"path\",{strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:2,d:\"M13 10V3L4 14h7v7l9-11h-7z\"})})}),/*#__PURE__*/_jsx(\"h2\",{className:\"mt-6 text-3xl font-extrabold text-gray-900\",children:\"SolarBank IoT Dashboard\"}),/*#__PURE__*/_jsx(\"p\",{className:\"mt-2 text-sm text-gray-600\",children:\"Sign in to access your dashboard\"})]}),/*#__PURE__*/_jsx(\"form\",{className:\"mt-8 space-y-6\",onSubmit:handleSubmit,children:/*#__PURE__*/_jsxs(\"div\",{className:\"bg-white shadow-lg rounded-lg p-6\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"space-y-4\",children:[/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"username\",className:\"block text-sm font-medium text-gray-700\",children:\"Username\"}),/*#__PURE__*/_jsx(\"input\",{id:\"username\",name:\"username\",type:\"text\",required:true,value:formData.username,onChange:handleChange,className:\"mt-1 appearance-none relative block w-full px-3 py-2 border border-gray-300 placeholder-gray-500 text-gray-900 rounded-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm\",placeholder:\"Enter your username\"})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"password\",className:\"block text-sm font-medium text-gray-700\",children:\"Password\"}),/*#__PURE__*/_jsx(\"input\",{id:\"password\",name:\"password\",type:\"password\",required:true,value:formData.password,onChange:handleChange,className:\"mt-1 appearance-none relative block w-full px-3 py-2 border border-gray-300 placeholder-gray-500 text-gray-900 rounded-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm\",placeholder:\"Enter your password\"})]})]}),error&&/*#__PURE__*/_jsx(\"div\",{className:\"mt-4 bg-red-50 border border-red-200 text-red-600 px-4 py-3 rounded-md text-sm\",children:error}),/*#__PURE__*/_jsx(\"div\",{className:\"mt-6\",children:/*#__PURE__*/_jsx(\"button\",{type:\"submit\",disabled:loading,className:`group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white ${loading?'bg-gray-400 cursor-not-allowed':'bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500'}`,children:loading?/*#__PURE__*/_jsxs(\"div\",{className:\"flex items-center\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"animate-spin rounded-full h-4 w-4 border-b-2 border-white mr-2\"}),\"Signing in...\"]}):'Sign in'})})]})}),/*#__PURE__*/_jsx(\"div\",{className:\"text-center\",children:/*#__PURE__*/_jsxs(\"div\",{className:\"bg-blue-50 border border-blue-200 rounded-md p-4\",children:[/*#__PURE__*/_jsx(\"p\",{className:\"text-sm text-blue-600 font-medium\",children:\"Default Login Credentials:\"}),/*#__PURE__*/_jsxs(\"p\",{className:\"text-xs text-blue-500 mt-1\",children:[\"Username: \",/*#__PURE__*/_jsx(\"strong\",{children:\"admin\"}),\" | Password: \",/*#__PURE__*/_jsx(\"strong\",{children:\"admin123\"})]})]})})]})});};export default Login;","map":{"version":3,"names":["React","useState","useEffect","useNavigate","useAuth","jsx","_jsx","jsxs","_jsxs","Login","formData","setFormData","username","password","error","setError","loading","setLoading","login","isAuthenticated","navigate","replace","handleChange","e","target","name","value","handleSubmit","preventDefault","result","success","message","className","children","fill","stroke","viewBox","strokeLinecap","strokeLinejoin","strokeWidth","d","onSubmit","htmlFor","id","type","required","onChange","placeholder","disabled"],"sources":["/home/m3mo/Desktop/temparea/solarbank/frontend/src/components/Login.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useAuth } from '../contexts/AuthContext';\n\nconst Login = () => {\n const [formData, setFormData] = useState({\n username: '',\n password: '',\n });\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n const { login, isAuthenticated } = useAuth();\n const navigate = useNavigate();\n\n // Redirect if already authenticated\n useEffect(() => {\n if (isAuthenticated) {\n navigate('/', { replace: true });\n }\n }, [isAuthenticated, navigate]);\n\n const handleChange = (e) => {\n setFormData({\n ...formData,\n [e.target.name]: e.target.value,\n });\n setError(''); // Clear error when user types\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n setLoading(true);\n setError('');\n\n const result = await login(formData.username, formData.password);\n \n if (!result.success) {\n setError(result.message);\n setLoading(false);\n } else {\n // Success! The useEffect will handle the redirect when isAuthenticated becomes true\n setLoading(false);\n }\n };\n\n return (\n
\n
\n
\n
\n \n \n \n
\n

\n SolarBank IoT Dashboard\n

\n

\n Sign in to access your dashboard\n

\n
\n \n
\n
\n
\n
\n \n \n
\n \n
\n \n \n
\n
\n\n {error && (\n
\n {error}\n
\n )}\n\n
\n \n {loading ? (\n
\n
\n Signing in...\n
\n ) : (\n 'Sign in'\n )}\n \n
\n
\n
\n\n
\n
\n

Default Login Credentials:

\n

\n Username: admin | Password: admin123\n

\n
\n
\n
\n
\n );\n};\n\nexport default Login; "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}