import React from 'react'; import { useLogin } from '@/hooks/useLogin'; const KEYFRAMES = ` @keyframes float-slow { 0%, 100% { transform: translate(0, 0) scale(1); } 25% { transform: translate(20px, -30px) scale(1.03); } 50% { transform: translate(-10px, -50px) scale(1.01); } 75% { transform: translate(15px, -20px) scale(1.04); } } @keyframes float-medium { 0%, 100% { transform: translate(0, 0) scale(1); } 25% { transform: translate(-25px, -40px) scale(1.02); } 50% { transform: translate(20px, -60px) scale(0.98); } 75% { transform: translate(-15px, -25px) scale(1.03); } } @keyframes float-fast { 0%, 100% { transform: translate(0, 0) scale(1); } 25% { transform: translate(15px, -20px) scale(1.01); } 50% { transform: translate(-20px, -35px) scale(1.02); } 75% { transform: translate(10px, -15px) scale(0.99); } } `; // Floating shapes: [width, height, top, left, color, opacity, animation, duration] const FLOATING_SHAPES: [number, number, string, string, string, number, string, string][] = [ [340, 280, '8%', '5%', 'linear-gradient(135deg, #e0f2fe 0%, #f3e8ff 100%)', 0.5, 'float-slow', '20s'], [240, 200, '55%', '2%', 'linear-gradient(135deg, #f3e8ff 0%, #ede9fe 100%)', 0.4, 'float-medium', '25s'], [180, 160, '70%', '15%', 'linear-gradient(135deg, #dbeafe 0%, #e0f2fe 100%)', 0.35, 'float-fast', '18s'], [280, 240, '20%', '18%', 'linear-gradient(135deg, #ede9fe 0%, #e0f2fe 100%)', 0.3, 'float-slow', '22s'], ]; export default function NeonCityView(): JSX.Element { const { username, password, loading, error, setUsername, setPassword, handleLogin } = useLogin(); const isDisabled = !username || !password || loading; return ( <>
企业级数据库审核与合规管理
© OpsxSQL · 安全合规的数据库管理