{"ast":null,"code":"var _jsxFileName = \"/home/gnx/Desktop/GNX-mailEnterprise/frontend/src/pages/Login.js\",\n _s = $RefreshSig$();\nimport React, { useState } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { useForm } from 'react-hook-form';\nimport { Mail, Lock, Eye, EyeOff } from 'lucide-react';\nimport { useAuth } from '../hooks/useAuth';\nimport LoadingSpinner from '../components/LoadingSpinner';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst Login = () => {\n _s();\n const [showPassword, setShowPassword] = useState(false);\n const {\n login,\n isLoggingIn\n } = useAuth();\n const navigate = useNavigate();\n const {\n register,\n handleSubmit,\n formState: {\n errors\n }\n } = useForm();\n const onSubmit = async data => {\n try {\n await login(data);\n navigate('/dashboard');\n } catch (error) {\n // Error is handled by the auth hook\n }\n };\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"min-h-screen flex items-center justify-center bg-gray-50 py-12 px-4 sm:px-6 lg:px-8\",\n children: /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"max-w-md w-full space-y-8\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"mx-auto h-12 w-12 flex items-center justify-center rounded-full bg-primary-600\",\n children: /*#__PURE__*/_jsxDEV(Mail, {\n className: \"h-6 w-6 text-white\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 33,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 32,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"h2\", {\n className: \"mt-6 text-center text-3xl font-extrabold text-gray-900\",\n children: \"Sign in to your account\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 35,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"mt-2 text-center text-sm text-gray-600\",\n children: [\"Or\", ' ', /*#__PURE__*/_jsxDEV(Link, {\n to: \"/register\",\n className: \"font-medium text-primary-600 hover:text-primary-500\",\n children: \"create a new account\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 40,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 38,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 31,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n className: \"mt-8 space-y-6\",\n onSubmit: handleSubmit(onSubmit),\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-4\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n htmlFor: \"email\",\n className: \"block text-sm font-medium text-gray-700\",\n children: \"Email address\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 52,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"mt-1 relative\",\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n ...register('email', {\n required: 'Email is required',\n pattern: {\n value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i,\n message: 'Invalid email address'\n }\n }),\n type: \"email\",\n autoComplete: \"email\",\n className: `input ${errors.email ? 'input-error' : ''}`,\n placeholder: \"Enter your email\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 56,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(Mail, {\n className: \"absolute right-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-gray-400\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 69,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 55,\n columnNumber: 15\n }, this), errors.email && /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"mt-1 text-sm text-red-600\",\n children: errors.email.message\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 72,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 51,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n htmlFor: \"password\",\n className: \"block text-sm font-medium text-gray-700\",\n children: \"Password\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 77,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"mt-1 relative\",\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n ...register('password', {\n required: 'Password is required',\n minLength: {\n value: 8,\n message: 'Password must be at least 8 characters'\n }\n }),\n type: showPassword ? 'text' : 'password',\n autoComplete: \"current-password\",\n className: `input pr-10 ${errors.password ? 'input-error' : ''}`,\n placeholder: \"Enter your password\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 81,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"button\",\n className: \"absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600\",\n onClick: () => setShowPassword(!showPassword),\n children: showPassword ? /*#__PURE__*/_jsxDEV(EyeOff, {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 100,\n columnNumber: 21\n }, this) : /*#__PURE__*/_jsxDEV(Eye, {\n className: \"h-5 w-5\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 102,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 94,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 80,\n columnNumber: 15\n }, this), errors.password && /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"mt-1 text-sm text-red-600\",\n children: errors.password.message\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 107,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 76,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 50,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex items-center justify-between\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex items-center\",\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n id: \"remember-me\",\n name: \"remember-me\",\n type: \"checkbox\",\n className: \"h-4 w-4 text-primary-600 focus:ring-primary-500 border-gray-300 rounded\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 114,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n htmlFor: \"remember-me\",\n className: \"ml-2 block text-sm text-gray-900\",\n children: \"Remember me\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 120,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 113,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"text-sm\",\n children: /*#__PURE__*/_jsxDEV(\"a\", {\n href: \"#\",\n className: \"font-medium text-primary-600 hover:text-primary-500\",\n children: \"Forgot your password?\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 126,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 125,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 112,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"submit\",\n disabled: isLoggingIn,\n className: \"group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-primary-600 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 disabled:opacity-50 disabled:cursor-not-allowed\",\n children: isLoggingIn ? /*#__PURE__*/_jsxDEV(LoadingSpinner, {\n size: \"sm\",\n className: \"text-white\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 139,\n columnNumber: 17\n }, this) : 'Sign in'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 133,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 132,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 49,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 30,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 29,\n columnNumber: 5\n }, this);\n};\n_s(Login, \"lkpgzLvOZ6IXENo0Uo24Ggo3WzQ=\", false, function () {\n return [useAuth, useNavigate, useForm];\n});\n_c = Login;\nexport default Login;\nvar _c;\n$RefreshReg$(_c, \"Login\");","map":{"version":3,"names":["React","useState","Link","useNavigate","useForm","Mail","Lock","Eye","EyeOff","useAuth","LoadingSpinner","jsxDEV","_jsxDEV","Login","_s","showPassword","setShowPassword","login","isLoggingIn","navigate","register","handleSubmit","formState","errors","onSubmit","data","error","className","children","fileName","_jsxFileName","lineNumber","columnNumber","to","htmlFor","required","pattern","value","message","type","autoComplete","email","placeholder","minLength","password","onClick","id","name","href","disabled","size","_c","$RefreshReg$"],"sources":["/home/gnx/Desktop/GNX-mailEnterprise/frontend/src/pages/Login.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { useForm } from 'react-hook-form';\nimport { Mail, Lock, Eye, EyeOff } from 'lucide-react';\nimport { useAuth } from '../hooks/useAuth';\nimport LoadingSpinner from '../components/LoadingSpinner';\n\nconst Login = () => {\n const [showPassword, setShowPassword] = useState(false);\n const { login, isLoggingIn } = useAuth();\n const navigate = useNavigate();\n \n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm();\n\n const onSubmit = async (data) => {\n try {\n await login(data);\n navigate('/dashboard');\n } catch (error) {\n // Error is handled by the auth hook\n }\n };\n\n return (\n
\n Or{' '}\n \n create a new account\n \n
\n