limo-platform/client/limo-mobile-h5/app/vip/page.tsx

318 lines
14 KiB
TypeScript
Raw Normal View History

2025-07-11 15:41:48 +08:00
"use client"
import { ArrowLeft, Crown, Check, Star, Zap, Shield, Gift, Sparkles, Trophy, Users } from "lucide-react"
import { Button } from "@/components/ui/button"
import Link from "next/link"
import { useState } from "react"
export default function VipPage() {
const [selectedPlan, setSelectedPlan] = useState("monthly")
const plans = [
{
id: "daily",
name: "体验版",
duration: "1天",
price: 9.9,
originalPrice: 19.9,
discount: "限时5折",
popular: false,
badge: "试用",
color: "from-blue-400 to-blue-500",
},
{
id: "monthly",
name: "月度会员",
duration: "1个月",
price: 68,
originalPrice: 98,
discount: "7折优惠",
popular: true,
badge: "推荐",
color: "from-purple-400 to-purple-500",
},
{
id: "quarterly",
name: "季度会员",
duration: "3个月",
price: 168,
originalPrice: 294,
discount: "超值4.3折",
popular: false,
badge: "超值",
color: "from-pink-400 to-pink-500",
},
{
id: "yearly",
name: "年度会员",
duration: "1年",
price: 588,
originalPrice: 1176,
discount: "超值5折",
popular: false,
badge: "最划算",
color: "from-orange-400 to-orange-500",
},
]
const privileges = [
{
icon: <Crown className="w-6 h-6" />,
title: "专属身份标识",
desc: "VIP专属标识彰显尊贵身份",
color: "from-yellow-400 to-orange-500",
},
{
icon: <Zap className="w-6 h-6" />,
title: "优先预约权",
desc: "热门场馆优先预约,不再排队等待",
color: "from-blue-400 to-blue-500",
},
{
icon: <Gift className="w-6 h-6" />,
title: "专属折扣",
desc: "场馆预订享受VIP专属折扣优惠",
color: "from-green-400 to-green-500",
},
{
icon: <Shield className="w-6 h-6" />,
title: "免费取消",
desc: "预约后可免费取消,无违约金",
color: "from-purple-400 to-purple-500",
},
{
icon: <Star className="w-6 h-6" />,
title: "专属客服",
desc: "7x24小时VIP专属客服服务",
color: "from-pink-400 to-pink-500",
},
{
icon: <Check className="w-6 h-6" />,
title: "高清回放",
desc: "无限制观看高清比赛回放视频",
color: "from-indigo-400 to-indigo-500",
},
]
const stats = [
{ label: "活跃用户", value: "50万+", icon: <Users className="w-5 h-5" /> },
{ label: "满意度", value: "98%", icon: <Star className="w-5 h-5" /> },
{ label: "场馆覆盖", value: "1000+", icon: <Trophy className="w-5 h-5" /> },
]
return (
<div className="min-h-screen bg-gradient-to-br from-yellow-50 via-orange-50 to-red-50">
{/* Header with premium gradient */}
<div className="bg-gradient-to-r from-yellow-400 via-orange-500 to-red-500 px-4 py-4 sticky top-0 z-10 shadow-2xl">
<div className="flex items-center justify-between">
<Link href="/profile">
<div className="w-10 h-10 bg-white/20 backdrop-blur-sm rounded-2xl flex items-center justify-center transition-all duration-300 hover:scale-105">
<ArrowLeft className="w-5 h-5 text-white" />
</div>
</Link>
<h1 className="text-xl font-bold text-white">VIP会员</h1>
<div className="w-10 h-10"></div>
</div>
</div>
{/* VIP Banner with enhanced styling */}
<div className="bg-gradient-to-r from-yellow-400 via-orange-500 to-red-500 px-4 pb-12 relative overflow-hidden">
{/* Background decorations */}
<div className="absolute top-0 left-0 w-32 h-32 bg-white/10 rounded-full -translate-x-16 -translate-y-16"></div>
<div className="absolute top-20 right-0 w-24 h-24 bg-white/10 rounded-full translate-x-12"></div>
<div className="absolute bottom-0 left-1/2 w-40 h-40 bg-white/5 rounded-full translate-x-20 translate-y-20"></div>
<div className="text-center relative z-10">
<div className="w-24 h-24 bg-white/20 backdrop-blur-sm rounded-full flex items-center justify-center mx-auto mb-4 shadow-2xl">
<Crown className="w-12 h-12 text-white" />
</div>
<h2 className="text-3xl font-bold text-white mb-2">LIMO VIP会员</h2>
<p className="text-white/90 text-lg"></p>
{/* Stats */}
<div className="flex justify-center space-x-8 mt-6">
{stats.map((stat, index) => (
<div key={index} className="text-center">
<div className="w-10 h-10 bg-white/20 backdrop-blur-sm rounded-xl flex items-center justify-center mx-auto mb-1">
{stat.icon}
</div>
<div className="text-white font-bold text-lg">{stat.value}</div>
<div className="text-white/80 text-xs">{stat.label}</div>
</div>
))}
</div>
</div>
</div>
{/* Pricing Plans with premium styling */}
<div className="px-4 -mt-8 relative z-10">
<div className="bg-white/90 backdrop-blur-xl rounded-3xl shadow-2xl p-6 border border-white/50">
<div className="text-center mb-6">
<h3 className="text-2xl font-bold text-gray-900 mb-2"></h3>
<p className="text-gray-500"></p>
</div>
<div className="grid grid-cols-2 gap-4">
{plans.map((plan) => (
<div
key={plan.id}
onClick={() => setSelectedPlan(plan.id)}
className={`relative border-2 rounded-3xl p-5 cursor-pointer transition-all duration-300 ${
selectedPlan === plan.id
? "border-transparent bg-gradient-to-br from-[#05C7C7]/10 to-[#04B5B5]/10 shadow-xl scale-[1.02]"
: "border-gray-200/50 bg-white/50 hover:border-gray-300/50 hover:shadow-lg"
} ${plan.popular ? "ring-2 ring-yellow-400/50" : ""}`}
>
{plan.popular && (
<div className="absolute -top-3 left-1/2 transform -translate-x-1/2">
<div className="bg-gradient-to-r from-yellow-400 to-orange-500 text-white px-4 py-1 rounded-full text-xs font-bold shadow-lg">
<Sparkles className="w-3 h-3 inline mr-1" />
</div>
</div>
)}
<div className="text-center">
<div
className={`w-12 h-12 bg-gradient-to-r ${plan.color} rounded-2xl flex items-center justify-center mx-auto mb-3 shadow-lg`}
>
<Crown className="w-6 h-6 text-white" />
</div>
<h4 className="font-bold text-gray-900 mb-1 text-lg">{plan.name}</h4>
<p className="text-sm text-gray-500 mb-3">{plan.duration}</p>
<div className="mb-3">
<span className="text-3xl font-bold text-[#05C7C7]">¥{plan.price}</span>
<span className="text-sm text-gray-400 line-through ml-2">¥{plan.originalPrice}</span>
</div>
<div className="bg-gradient-to-r from-red-100 to-red-50 text-red-600 px-3 py-1 rounded-xl text-xs font-bold border border-red-200/50">
{plan.discount}
</div>
</div>
{selectedPlan === plan.id && (
<div className="absolute top-3 right-3">
<div className="w-6 h-6 bg-gradient-to-r from-[#05C7C7] to-[#04B5B5] rounded-full flex items-center justify-center shadow-lg">
<Check className="w-4 h-4 text-white" />
</div>
</div>
)}
</div>
))}
</div>
</div>
</div>
{/* VIP Privileges with enhanced styling */}
<div className="px-4 mt-8">
<div className="bg-white/90 backdrop-blur-xl rounded-3xl shadow-2xl p-6 border border-white/50">
<h3 className="text-2xl font-bold text-gray-900 mb-6 flex items-center justify-center">
<div className="w-8 h-8 bg-gradient-to-r from-yellow-400 to-orange-500 rounded-2xl flex items-center justify-center mr-3 shadow-lg">
<Crown className="w-5 h-5 text-white" />
</div>
VIP专属特权
</h3>
<div className="grid grid-cols-1 gap-4">
{privileges.map((privilege, index) => (
<div
key={index}
className="flex items-start space-x-4 p-4 bg-gradient-to-r from-gray-50/50 to-white/50 rounded-2xl border border-gray-100/50 transition-all duration-300 hover:shadow-lg hover:scale-[1.01]"
>
<div
className={`w-12 h-12 bg-gradient-to-r ${privilege.color} rounded-2xl flex items-center justify-center text-white flex-shrink-0 shadow-lg`}
>
{privilege.icon}
</div>
<div className="flex-1">
<h4 className="font-bold text-gray-900 text-lg mb-1">{privilege.title}</h4>
<p className="text-sm text-gray-600 leading-relaxed">{privilege.desc}</p>
</div>
</div>
))}
</div>
</div>
</div>
{/* Testimonials */}
<div className="px-4 mt-8">
<div className="bg-white/90 backdrop-blur-xl rounded-3xl shadow-2xl p-6 border border-white/50">
<h3 className="text-xl font-bold text-gray-900 mb-4 text-center"></h3>
<div className="space-y-4">
<div className="bg-gradient-to-r from-blue-50 to-indigo-50 p-4 rounded-2xl border border-blue-100/50">
<div className="flex items-center space-x-2 mb-2">
<div className="w-8 h-8 bg-gradient-to-r from-blue-400 to-blue-500 rounded-full flex items-center justify-center">
<span className="text-white text-sm font-bold"></span>
</div>
<span className="font-semibold text-gray-900"></span>
<div className="flex space-x-1">
{[1, 2, 3, 4, 5].map((i) => (
<Star key={i} className="w-4 h-4 text-yellow-400" fill="currentColor" />
))}
</div>
</div>
<p className="text-sm text-gray-600">"VIP服务真的很棒预约场馆再也不用排队了"</p>
</div>
<div className="bg-gradient-to-r from-green-50 to-emerald-50 p-4 rounded-2xl border border-green-100/50">
<div className="flex items-center space-x-2 mb-2">
<div className="w-8 h-8 bg-gradient-to-r from-green-400 to-green-500 rounded-full flex items-center justify-center">
<span className="text-white text-sm font-bold"></span>
</div>
<span className="font-semibold text-gray-900"></span>
<div className="flex space-x-1">
{[1, 2, 3, 4, 5].map((i) => (
<Star key={i} className="w-4 h-4 text-yellow-400" fill="currentColor" />
))}
</div>
</div>
<p className="text-sm text-gray-600">"专属客服响应很快,解决问题很及时,值得推荐!"</p>
</div>
</div>
</div>
</div>
{/* Purchase Section with enhanced styling */}
<div className="px-4 mt-8 pb-8">
<div className="bg-white/90 backdrop-blur-xl rounded-3xl shadow-2xl p-6 border border-white/50">
<div className="flex items-center justify-between mb-6 p-4 bg-gradient-to-r from-gray-50 to-white rounded-2xl border border-gray-100/50">
<span className="text-gray-600 font-medium">:</span>
<div className="text-right">
<div className="font-bold text-gray-900 text-lg">{plans.find((p) => p.id === selectedPlan)?.name}</div>
<div className="text-2xl font-bold text-[#05C7C7]">
¥{plans.find((p) => p.id === selectedPlan)?.price}
</div>
</div>
</div>
<Button className="w-full bg-gradient-to-r from-yellow-400 via-orange-500 to-red-500 hover:from-yellow-500 hover:via-orange-600 hover:to-red-600 text-white py-5 rounded-2xl font-bold text-lg shadow-2xl shadow-orange-500/30 transition-all duration-300 hover:scale-[1.02] relative overflow-hidden">
<div className="absolute inset-0 bg-gradient-to-r from-white/20 to-transparent opacity-0 hover:opacity-100 transition-opacity duration-300"></div>
<Crown className="w-6 h-6 mr-2" />
VIP会员
</Button>
<div className="flex items-center justify-center space-x-4 mt-4 text-xs text-gray-400">
<div className="flex items-center space-x-1">
<Shield className="w-3 h-3" />
<span></span>
</div>
<div className="w-1 h-1 bg-gray-300 rounded-full"></div>
<div className="flex items-center space-x-1">
<Check className="w-3 h-3" />
<span></span>
</div>
<div className="w-1 h-1 bg-gray-300 rounded-full"></div>
<span>7退</span>
</div>
<p className="text-xs text-gray-400 text-center mt-4">VIP会员服务协议</p>
</div>
</div>
{/* Bottom Spacing */}
<div className="h-8"></div>
</div>
)
}