import React from 'react';
import { useNavigate, useLocation } from 'react-router';
import { Form, Input, Button, Typography, message } from 'antd';
import { UserOutlined, LockOutlined } from '@ant-design/icons';
import { useAppDispatch, useAppSelector } from '@/store/hooks';
import { loginUser } from '@/store/slices/authSlice';

const { Title, Text } = Typography;

const LoginPage: React.FC = () => {
  const navigate = useNavigate();
  const location = useLocation();
  const dispatch = useAppDispatch();
  const { loading } = useAppSelector((state) => state.auth);
  const [messageApi, contextHolder] = message.useMessage();

  const from = location.state?.from?.pathname || '/data';

  const onFinish = async (values: { username: string; password: string }) => {
    try {
      await dispatch(loginUser(values)).unwrap();
      messageApi.success('登录成功');
      navigate(from, { replace: true });
    } catch (loginError) {
      const messageText =
        typeof loginError === 'string' ? loginError : '账号或密码错误';
      messageApi.error(messageText);
    }
  };

  return (
    <div className="min-h-screen flex items-center justify-center bg-[#050b14] relative overflow-hidden">
      {contextHolder}

      {/* Background Effects */}
      <div className="absolute inset-0 z-0">
        <div className="absolute top-0 left-0 w-full h-full bg-[radial-gradient(ellipse_at_center,_var(--tw-gradient-stops))] from-blue-900/20 via-[#050b14] to-[#050b14]"></div>
        {/* Simple grid pattern if possible, or just gradient */}
      </div>

      <div className="absolute top-1/4 left-1/4 w-72 h-72 bg-blue-500/10 rounded-full blur-3xl animate-pulse"></div>
      <div className="absolute bottom-1/4 right-1/4 w-96 h-96 bg-cyan-500/10 rounded-full blur-3xl animate-pulse delay-700"></div>

      <div className="z-10 w-full max-w-md p-8 animate-[fadeIn_0.5s_ease-out_forwards]">
        <div className="backdrop-blur-xl bg-white/5 border border-white/10 rounded-2xl shadow-2xl p-8 relative overflow-hidden">
          {/* Decorative line */}
          <div className="absolute top-0 left-0 w-full h-1 bg-gradient-to-r from-transparent via-blue-500 to-transparent"></div>

          <div className="text-center mb-8">
            <div className="inline-flex items-center justify-center w-16 h-16 rounded-full bg-blue-500/20 mb-4 border border-blue-500/30">
              <svg className="w-8 h-8 text-blue-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
                <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" />
              </svg>
            </div>
            <Title level={2} className="!text-white !mb-2 tracking-wide font-bold">
              DataBuilder
            </Title>
            <Text className="text-gray-400! text-sm tracking-wider">
              一站式数据工作平台
            </Text>
          </div>

          <Form<{ username: string; password: string }>
            name="login"
            initialValues={{ username: 'admin', password: '123456' }}
            onFinish={onFinish}
            layout="vertical"
            size="large"
          >
            <Form.Item
              name="username"
              rules={[{ required: true, message: '请输入账号！' }]}
            >
              <Input
                prefix={<UserOutlined className="text-blue-400" />}
                placeholder="账号"
                className="!bg-white/5 !border-white/10 !text-white placeholder:!text-gray-600 hover:!border-blue-500/50 focus:!border-blue-500 !rounded-lg"
              />
            </Form.Item>
            <Form.Item
              name="password"
              rules={[{ required: true, message: '请输入密码！' }]}
            >
              <Input.Password
                prefix={<LockOutlined className="text-blue-400" />}
                type="password"
                placeholder="密码"
                className="!bg-white/5 !border-white/10 !text-white placeholder:!text-gray-600 hover:!border-blue-500/50 focus:!border-blue-500 !rounded-lg"
              />
            </Form.Item>

            <Form.Item className="mb-2">
              <Button
                type="primary"
                htmlType="submit"
                className="w-full bg-gradient-to-r from-blue-600 to-cyan-600 hover:from-blue-500 hover:to-cyan-500 border-none h-12 rounded-lg font-semibold tracking-wide shadow-lg shadow-blue-900/20"
                loading={loading}
              >
                登录系统
              </Button>
            </Form.Item>

            <div className="text-center mt-4">
              <Text className="text-gray-600! text-xs">
                数据处理平台 · 安全接入
              </Text>
            </div>
          </Form>
        </div>
      </div>
    </div>
  );
};

export default LoginPage;
