Files
frontend/src/app/(auth)/register/page.tsx

120 lines
7.3 KiB
TypeScript
Raw Normal View History

'use client';
2025-10-09 23:42:41 +08:00
import AuthForm from '@/components/auth/AuthForm';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
2025-10-09 23:42:41 +08:00
import { Button } from '@/components/ui/button';
import Link from 'next/link';
import Image from 'next/image';
import { useSearchParams } from 'next/navigation';
export default function RegisterPage() {
const searchParams = useSearchParams();
const callbackUrl = searchParams.get('callbackUrl') || '/';
return (
<div className="min-h-screen bg-gradient-to-br from-emerald-50 to-teal-100 dark:from-gray-900 dark:to-gray-800 relative overflow-hidden pb-8">
{/* 背景装饰元素 - 渐变模糊效果 */}
<div className="absolute inset-0 overflow-hidden pointer-events-none">
<div className="absolute -top-20 -right-20 w-80 h-80 bg-emerald-400/20 rounded-full blur-3xl"></div>
<div className="absolute -bottom-20 -left-20 w-96 h-96 bg-teal-500/20 rounded-full blur-3xl"></div>
<div className="absolute top-1/3 left-1/4 w-64 h-64 bg-emerald-300/10 rounded-full blur-3xl"></div>
</div>
{/* 主要内容区域 */}
<div className="relative z-10 flex flex-col items-center justify-center min-h-screen px-4 py-12">
<div className="w-full max-w-md">
{/* 装饰性头部 */}
<div className="text-center mb-8 sm:mb-10">
<div className="flex justify-center mb-6">
<div className="inline-flex items-center justify-center w-16 h-16 sm:w-20 sm:h-20 bg-emerald-600 rounded-2xl transform -rotate-6 shadow-lg transition-all duration-500 hover:rotate-0">
<div className="w-12 h-12 sm:w-14 sm:h-14 bg-white rounded-xl transform rotate-6 flex items-center justify-center transition-all duration-500 hover:rotate-0">
<Image
src="/images/mc-favicon.ico"
alt="Logo"
width={40}
height={40}
className="rounded-xl w-8 h-8"
/>
</div>
</div>
</div>
<h1 className="text-3xl sm:text-4xl font-bold text-gray-800 dark:text-white mb-3 tracking-tight">
<span className="text-emerald-600 dark:text-emerald-400"> HITWH</span>
</h1>
<p className="text-gray-600 dark:text-gray-400 text-sm sm:text-base leading-relaxed max-w-sm mx-auto">
Minecraft皮肤
</p>
</div>
{/* 注册卡片 */}
<div className="relative group">
{/* 卡片阴影装饰 */}
<div className="absolute inset-0 bg-emerald-500 rounded-2xl transform rotate-2 opacity-20 transition-all duration-500 group-hover:rotate-1 group-hover:scale-102"></div>
<div className="absolute inset-0 bg-teal-400 rounded-2xl transform -rotate-1 opacity-15 transition-all duration-500 group-hover:-rotate-0.5 group-hover:scale-101"></div>
<Card className="relative bg-white/95 dark:bg-gray-800/95 backdrop-blur-sm border border-emerald-200 dark:border-emerald-900/50 shadow-xl rounded-2xl overflow-hidden">
<div className="absolute top-0 left-0 w-full h-1 bg-gradient-to-r from-emerald-500 to-teal-500"></div>
<CardHeader className="text-center pb-6 pt-8">
<CardTitle className="text-xl sm:text-2xl font-bold text-gray-800 dark:text-white">
🎮
</CardTitle>
<div className="w-16 h-1 bg-gradient-to-r from-emerald-500 to-teal-500 mx-auto mt-2 rounded-full"></div>
</CardHeader>
<CardContent className="space-y-6 px-6 pb-8">
2025-10-09 23:42:41 +08:00
{/* 使用统一的认证表单组件 */}
<AuthForm type="register" />
{/* 分割线 */}
<div className="relative my-6">
<div className="absolute inset-0 flex items-center">
<div className="w-full border-t border-gray-200 dark:border-gray-700"></div>
</div>
<div className="relative flex justify-center text-sm">
<span className="px-3 bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400 rounded-full"></span>
</div>
</div>
{/* 登录链接 */}
<div className="text-center space-y-4">
<p className="text-gray-600 dark:text-gray-400">
</p>
<Button asChild variant="outline" className="w-full border-emerald-600 text-emerald-600 hover:bg-emerald-50 dark:border-emerald-400 dark:text-emerald-400 dark:hover:bg-emerald-900/20 rounded-xl py-6 transition-all duration-300 transform hover:-translate-y-1">
<Link href={`/login?callbackUrl=${encodeURIComponent(callbackUrl)}`}>
🎮
</Link>
</Button>
</div>
</CardContent>
</Card>
</div>
{/* 底部装饰 */}
<div className="text-center mt-8 sm:mt-10">
<div className="flex flex-wrap justify-center gap-x-4 gap-y-2 text-xs sm:text-sm text-gray-500 dark:text-gray-400">
<span>🎨 </span>
<span></span>
<span>🌍 </span>
<span></span>
<span> </span>
<span></span>
<span>👥 </span>
</div>
</div>
</div>
</div>
{/* 浮动装饰元素 */}
<div className="absolute bottom-8 left-8 text-emerald-600 opacity-20 dark:opacity-10">
<div className="text-4xl">🎨</div>
</div>
<div className="absolute top-8 right-8 text-teal-500 opacity-20 dark:opacity-10">
<div className="text-4xl">🌟</div>
</div>
</div>
);
}