crush-level-web/src/app/(auth)/login/login-page.tsx

69 lines
1.9 KiB
TypeScript
Raw Normal View History

2025-11-28 06:31:36 +00:00
'use client'
import Image from 'next/image'
import { LoginForm } from './components/login-form'
import { LeftPanel } from './components/LeftPanel'
import { IconButton } from '@/components/ui/button'
import { useRouter } from 'next/navigation'
2025-11-13 08:38:25 +00:00
2025-11-28 06:31:36 +00:00
const scrollBg = '/images/login/v1/bg.png'
2025-11-13 08:38:25 +00:00
const images = [
2025-11-28 06:31:36 +00:00
'/images/login/v1/1.png',
'/images/login/v1/2.png',
'/images/login/v1/3.png',
'/images/login/v1/4.png',
'/images/login/v1/5.png',
'/images/login/v1/6.png',
'/images/login/v1/7.png',
'/images/login/v1/8.png',
'/images/login/v1/9.png',
'/images/login/v1/10.png',
2025-11-13 08:38:25 +00:00
]
export default function LoginPage() {
2025-11-28 06:31:36 +00:00
const router = useRouter()
2025-11-13 08:38:25 +00:00
const handleClose = () => {
2025-11-28 06:31:36 +00:00
router.replace('/')
2025-11-13 08:38:25 +00:00
}
return (
<div className="flex h-screen w-screen overflow-hidden">
{/* 左侧 - 滚动背景 + 图片轮播 (桌面端显示) */}
2025-11-28 06:31:36 +00:00
<div className="relative hidden lg:block lg:w-1/2">
2025-11-13 08:38:25 +00:00
<LeftPanel scrollBg={scrollBg} images={images} />
2025-11-28 06:31:36 +00:00
2025-11-13 08:38:25 +00:00
{/* 关闭按钮 - 桌面端 */}
<IconButton
iconfont="icon-close"
variant="tertiaryDark"
size="large"
className="absolute top-6 left-6 z-20"
onClick={handleClose}
/>
</div>
{/* 右侧 - 登录表单 */}
2025-11-28 06:31:36 +00:00
<div className="relative flex w-full flex-col items-center justify-center px-6 sm:px-12 lg:w-1/2">
2025-11-13 08:38:25 +00:00
{/* 关闭按钮 - 移动端 */}
<IconButton
iconfont="icon-close"
variant="tertiary"
size="large"
2025-11-28 06:31:36 +00:00
className="absolute top-4 right-4 z-20 lg:hidden"
2025-11-13 08:38:25 +00:00
onClick={handleClose}
/>
{/* Logo */}
2025-11-28 06:31:36 +00:00
<div className="relative mb-8 h-[48px] w-[120px] sm:mb-12 sm:h-[64px] sm:w-[160px]">
<Image src="/logo.svg" alt="Crush Level" fill className="object-contain" priority />
2025-11-13 08:38:25 +00:00
</div>
{/* 登录表单 */}
<div className="w-full max-w-[340px]">
<LoginForm />
</div>
</div>
</div>
)
}