diff --git a/app/course/[id]/page.tsx b/app/course/[id]/page.tsx index a9f4d48..2f847e1 100644 --- a/app/course/[id]/page.tsx +++ b/app/course/[id]/page.tsx @@ -1,6 +1,6 @@ "use client" -import { ArrowLeft, Star, Clock, Users, PlayCircle, Lock, Share2 } from "lucide-react" +import { ArrowLeft, Star, Clock, Users, PlayCircle, Lock, Share2, Coins } from "lucide-react" import Image from "next/image" import Link from "next/link" import { useState } from "react" @@ -160,9 +160,11 @@ export default function CourseDetailPage({ params }: { params: { id: string } }) -
+ {/* Updated currency display */} +
{course.price} - 钻石 + + {course.originalPrice}
diff --git a/app/hotel/page.tsx b/app/hotel/page.tsx index ea1a761..1e24e93 100644 --- a/app/hotel/page.tsx +++ b/app/hotel/page.tsx @@ -1,11 +1,11 @@ "use client" import { useState } from "react" -import { Search, MapPin, Filter, Star, ArrowLeft, ChevronDown } from "lucide-react" -import { useRouter } from "next/navigation" +import { Search, MapPin, Filter, Star, ArrowLeft, ChevronDown, CheckCircle2, X, Map, Navigation } from "lucide-react" +import { useRouter, useSearchParams } from "next/navigation" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" -import { toast } from "@/hooks/use-toast" import Image from "next/image" +import { Suspense } from "react" const hotels = [ { @@ -16,8 +16,10 @@ const hotels = [ price: 398, distance: "0.8km", tags: ["RTX4090", "电竞椅", "24h餐饮"], - district: "西湖区/黄龙体育中心", - image: "esports hotel room neon lights gaming setup luxury", + district: "思明区/SM广场", + image: "/hotel-1.jpg", + lat: 24.4798, + lng: 118.0894, }, { id: 2, @@ -27,8 +29,10 @@ const hotels = [ price: 268, distance: "1.2km", tags: ["五黑房", "投影", "免费停车"], - district: "拱墅区/万达广场", - image: "gaming apartment interior cozy modern pc setup", + district: "湖里区/万达广场", + image: "/hotel-2.jpg", + lat: 24.5103, + lng: 118.1287, }, { id: 3, @@ -38,8 +42,10 @@ const hotels = [ price: 328, distance: "2.5km", tags: ["情侣房", "PS5", "VR体验"], - district: "滨江区/网易园区", - image: "vr gaming room couple setup futuristic lighting", + district: "集美区/软件园", + image: "/hotel-3.jpg", + lat: 24.5745, + lng: 118.1012, }, ] @@ -52,8 +58,10 @@ const cafes = [ price: 12, distance: "0.5km", tags: ["3080显卡", "特权公馆", "现磨咖啡"], - district: "武林广场商圈", - image: "internet cafe luxury rows of computers modern design", + district: "湖里区/万达广场", + image: "/cafe-1.jpg", + lat: 24.5089, + lng: 118.1256, }, { id: 102, @@ -63,24 +71,122 @@ const cafes = [ price: 10, distance: "1.8km", tags: ["赛事级配置", "美女陪玩", "独立包间"], - district: "城西银泰", - image: "esports arena internet cafe private room", + district: "思明区/中山路", + image: "/cafe-2.jpg", + lat: 24.4512, + lng: 118.0823, }, ] -export default function HotelPage() { +function HotelContent() { const router = useRouter() - const [activeTab, setActiveTab] = useState("hotel") + const searchParams = useSearchParams() + const defaultTab = searchParams.get("tab") || "hotel" + const [activeTab, setActiveTab] = useState(defaultTab) + const [showPaymentSuccess, setShowPaymentSuccess] = useState(false) + const [paymentInfo, setPaymentInfo] = useState({ name: "", price: 0, type: "" }) + const [showMap, setShowMap] = useState(false) + const [selectedLocation, setSelectedLocation] = useState<{ name: string; lat: number; lng: number } | null>(null) - const handleBook = (name: string) => { - toast({ - title: "预订成功", - description: `您已成功预订 ${name}`, - }) + const handleBook = (name: string, price: number, type: string) => { + setPaymentInfo({ name, price, type }) + setShowPaymentSuccess(true) + } + + const handleShowMap = (item: { name: string; lat: number; lng: number }) => { + setSelectedLocation(item) + setShowMap(true) } return (
+ {/* 支付成功弹窗 */} + {showPaymentSuccess && ( +
+
+
+ +
+
+
+ +
+

{paymentInfo.type === "hotel" ? "预订成功" : "抢座成功"}

+

+ 您已成功{paymentInfo.type === "hotel" ? "预订" : "抢座"} {paymentInfo.name} +

+
+
+ 支付金额 + + ¥{paymentInfo.price} + {paymentInfo.type === "cafe" ? "/时" : ""} + +
+
+ +
+
+
+ )} + + {showMap && selectedLocation && ( +
+
+
+
+ +

{selectedLocation.name}

+
+ +
+
+ {/* 厦门市地图占位 */} +
+ 厦门市地图 +
+ +

{selectedLocation.name}

+

厦门市

+
+
+
+
+ +
+
+
+ )} + {/* Header with Search */}
@@ -95,10 +201,13 @@ export default function HotelPage() { className="bg-transparent border-none outline-none text-xs w-full h-full text-white placeholder:text-white/30" />
-
+
+
{/* Tab Switcher & Filters */} @@ -138,25 +247,14 @@ export default function HotelPage() {
- {/* Added Header for Recommendations */}
热门推荐
{hotels.map((hotel) => ( -
handleBook(hotel.name)} - > - {/* Added Image on the left */} +
- {hotel.name} + {hotel.name} {hotel.id === 1 && (
热门 @@ -168,6 +266,12 @@ export default function HotelPage() {

{hotel.name}

+
@@ -200,7 +304,10 @@ export default function HotelPage() { {hotel.price}
-
@@ -215,24 +322,22 @@ export default function HotelPage() {
{cafes.map((cafe) => ( -
handleBook(cafe.name)} - > - {/* Added Image on the left */} +
- {cafe.name} + {cafe.name}
-

{cafe.name}

+
+

{cafe.name}

+ +
@@ -262,7 +367,10 @@ export default function HotelPage() { {cafe.price} /时
-
@@ -275,3 +383,17 @@ export default function HotelPage() {
) } + +export default function HotelPage() { + return ( + +
+
+ } + > + +
+ ) +} diff --git a/app/live/page.tsx b/app/live/page.tsx index 1a69095..5bca376 100644 --- a/app/live/page.tsx +++ b/app/live/page.tsx @@ -18,10 +18,10 @@ import { Bookmark, ShoppingCart, X, + Check, } from "lucide-react" import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog" import { Button } from "@/components/ui/button" -import { toast } from "@/hooks/use-toast" import { useAppContext } from "@/components/providers/app-provider" const STREAMERS = [ @@ -133,7 +133,6 @@ export default function TikTokStyleLivePage() { const [streamers, setStreamers] = useState(STREAMERS) const [showComments, setShowComments] = useState(false) const [showGifts, setShowGifts] = useState(false) - const [showShare, setShowShare] = useState(false) const [showCourse, setShowCourse] = useState(false) const [comment, setComment] = useState("") const [comments, setComments] = useState([ @@ -142,6 +141,7 @@ export default function TikTokStyleLivePage() { { id: 3, user: "游戏玩家", avatar: "/viewer-3.jpg", text: "学到了学到了", time: "2分钟前" }, ]) const [floatingHearts, setFloatingHearts] = useState<{ id: number; x: number }[]>([]) + const [showLikeSuccess, setShowLikeSuccess] = useState(false) const containerRef = useRef(null) const startY = useRef(0) const commentIdRef = useRef(4) @@ -172,14 +172,14 @@ export default function TikTokStyleLivePage() { setTimeout(() => { setFloatingHearts((prev) => prev.filter((h) => h.id !== newHeart.id)) }, 1500) + + // 显示点赞成功提示 + setShowLikeSuccess(true) + setTimeout(() => setShowLikeSuccess(false), 1000) } const handleFollow = () => { setStreamers((prev) => prev.map((s, i) => (i === currentIndex ? { ...s, isFollowed: !s.isFollowed } : s))) - toast({ - title: currentStreamer.isFollowed ? "已取消关注" : "关注成功", - description: currentStreamer.isFollowed ? "" : `已关注 ${currentStreamer.name}`, - }) } const handleSendComment = () => { @@ -194,35 +194,24 @@ export default function TikTokStyleLivePage() { setComments((prev) => [newComment, ...prev]) setComment("") setStreamers((prev) => prev.map((s, i) => (i === currentIndex ? { ...s, comments: s.comments + 1 } : s))) - toast({ title: "评论成功", description: "你的评论已发送" }) } const handleSendGift = (gift: (typeof GIFTS)[0]) => { - pay(gift.price, "diamonds", `送出${gift.name}`, "product") + pay(gift.price, `送出${gift.name}`, "product") setShowGifts(false) - toast({ - title: "送礼成功", - description: `成功送出 ${gift.icon} ${gift.name}`, - }) } - const handleShare = (platform: string) => { + const handleShare = () => { setStreamers((prev) => prev.map((s, i) => (i === currentIndex ? { ...s, shares: s.shares + 1 } : s))) - toast({ title: "分享成功", description: `已分享到${platform}` }) - setShowShare(false) } const handleBuyCourse = () => { const course = currentStreamer.course - pay(course.price, "coins", `购买${course.name}`, "product") + pay(course.price, `购买${course.name}`, "product") setShowCourse(false) - toast({ - title: "购买成功", - description: `已购买 ${currentStreamer.name} 的《${course.name}》课程`, - }) setTimeout(() => { router.push(`/course/${currentStreamer.id}`) - }, 1000) + }, 500) } const formatNumber = (num: number) => { @@ -250,6 +239,15 @@ export default function TikTokStyleLivePage() {
+ {showLikeSuccess && ( +
+
+ + 点赞成功 +
+
+ )} + {/* 飘心动画 */}
{floatingHearts.map((heart) => ( @@ -320,10 +318,7 @@ export default function TikTokStyleLivePage() { {/* 直播间信息 - 左侧底部 */}
- {/* 直播标题 */}

{currentStreamer.title}

- - {/* 音乐标签 */}
@@ -370,11 +365,7 @@ export default function TikTokStyleLivePage() { 收藏 - {/* 分享 */} - ))}
- {/* 分享弹窗 */} - - - - 分享直播间 - -
- {[ - { name: "微信", icon: "💬", color: "bg-green-500" }, - { name: "朋友圈", icon: "🌟", color: "bg-green-600" }, - { name: "QQ", icon: "🐧", color: "bg-blue-500" }, - { name: "微博", icon: "📢", color: "bg-red-500" }, - ].map((platform) => ( - - ))} -
-
- - -
-
-
- {/* 课程弹窗 */} {currentStreamer.name} 的课程 -
+
-
-
- Course -
-
-

{currentStreamer.course.name}

-

{currentStreamer.course.lessons} 节课程

-
- ¥{currentStreamer.course.price} - ¥{currentStreamer.course.price * 2} -
-
+

{currentStreamer.course.name}

+

{currentStreamer.course.lessons} 节课程

+
+ {currentStreamer.course.price} 币 +
-
- -
) } diff --git a/app/mall/page.tsx b/app/mall/page.tsx index 22d5337..43f03c9 100644 --- a/app/mall/page.tsx +++ b/app/mall/page.tsx @@ -2,7 +2,6 @@ import { ShoppingBag, - Diamond, Crown, Sparkles, Zap, @@ -28,8 +27,8 @@ export default function MallPage() { const { wallet, pay } = useAppContext() const router = useRouter() - const handleBuy = (price: number, currency: "diamonds" | "coins", name: string, type: "product" | "service") => { - pay(price, currency, name, type) + const handleBuy = (price: number, name: string, type: "product" | "service") => { + pay(price, name, type) } const dressItems = [ @@ -70,18 +69,13 @@ export default function MallPage() { {/* Header */}

商城中心

-
-
router.push("/recharge")} - > - - {wallet.diamonds} -
-
- - {wallet.coins} -
+
router.push("/recharge")} + > + + {wallet.balance} +
@@ -109,7 +103,7 @@ export default function MallPage() { }, { name: "电竞外设", icon: Keyboard, color: "text-purple-400", bg: "bg-purple-500/10", href: "/mall/gear" }, { name: "电竞酒店", icon: Hotel, color: "text-orange-400", bg: "bg-orange-500/10", href: "/hotel" }, - { name: "附近网咖", icon: Coffee, color: "text-cyan-400", bg: "bg-cyan-500/10", href: "/hotel" }, + { name: "附近网咖", icon: Coffee, color: "text-cyan-400", bg: "bg-cyan-500/10", href: "/hotel?tab=cafe" }, { name: "游戏代练", icon: Trophy, @@ -125,11 +119,11 @@ export default function MallPage() { href: "/services/account?tab=buy", }, { - name: "账号金融", + name: "账号典当", icon: Wallet, - color: "text-indigo-400", - bg: "bg-indigo-500/10", - href: "/services/account?tab=finance", + color: "text-amber-400", + bg: "bg-amber-500/10", + href: "/services/account?tab=pawn", }, ].map((item, i) => ( - {/* Categories */}
{["热门推荐", "限定头像", "动态边框", "入场特效", "聊天气泡"].map((cat, i) => (
@@ -227,14 +220,14 @@ export default function MallPage() {
handleBuy(item.price, "diamonds", item.name, "product")} + onClick={() => handleBuy(item.price, item.name, "product")} >
{item.icon}

{item.name}

- - {item.price} + + {item.price} 币
@@ -251,21 +244,21 @@ export default function MallPage() { { name: "双倍经验卡", price: 500, icon: Zap }, ].map((item, i) => (
-
- +
+

{item.name}

-
+
- {item.price} + {item.price} 币
diff --git a/app/page.tsx b/app/page.tsx index 35d3c29..00f6168 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -15,14 +15,17 @@ import { Shield, Wand2, Users, + Coins, } from "lucide-react" import Image from "next/image" import Link from "next/link" import { toast } from "@/hooks/use-toast" import { useRouter } from "next/navigation" +import { useAppContext } from "@/components/providers/app-provider" export default function HomePage() { const router = useRouter() + const { wallet } = useAppContext() const handleJoinTeam = () => { toast({ @@ -160,6 +163,14 @@ export default function HomePage() {

玩值电竞

+ + + {wallet.balance} + + @@ -196,7 +207,7 @@ export default function HomePage() {
- {/* 游戏点卡补贴 - 移除主播分享赚佣金banner */} + {/* 游戏点卡补贴 */}

@@ -259,7 +270,7 @@ export default function HomePage() {

@@ -275,7 +286,7 @@ export default function HomePage() {
- {/* 游戏专区图标 - 移除魔兽世界专区,改为7列布局 */} + {/* 游戏专区图标 */}
{gameIcons.map((game, i) => { const IconComponent = game.icon diff --git a/app/profile/page.tsx b/app/profile/page.tsx index 6593592..e22605c 100644 --- a/app/profile/page.tsx +++ b/app/profile/page.tsx @@ -14,6 +14,7 @@ import { History, User, Medal, + Coins, } from "lucide-react" import Image from "next/image" import Link from "next/link" @@ -23,7 +24,7 @@ import { toast } from "@/hooks/use-toast" import { Card, CardContent } from "@/components/ui/card" export default function ProfilePage() { - const { user } = useAppContext() + const { user, wallet } = useAppContext() const handleComingSoon = (feature: string) => { toast({ @@ -49,6 +50,14 @@ export default function ProfilePage() {
+ + + {wallet.balance} + +

享网咖8折、酒店9折特权

@@ -117,7 +129,7 @@ export default function ProfilePage() {
diff --git a/app/recharge/page.tsx b/app/recharge/page.tsx index 8292789..ca0e2c0 100644 --- a/app/recharge/page.tsx +++ b/app/recharge/page.tsx @@ -1,22 +1,26 @@ "use client" import { useRouter } from "next/navigation" -import { ArrowLeft, Wallet, CreditCard, Gem } from "lucide-react" +import { ArrowLeft, Coins, Gem } from "lucide-react" import { useAppContext } from "@/components/providers/app-provider" export default function RechargePage() { const router = useRouter() - const { recharge } = useAppContext() + const { recharge, wallet } = useAppContext() const amounts = [ - { value: 6, bonus: 0 }, - { value: 30, bonus: 2 }, - { value: 68, bonus: 5 }, - { value: 128, bonus: 12 }, - { value: 328, bonus: 35 }, - { value: 648, bonus: 80 }, + { value: 6, coins: 60, bonus: 0 }, + { value: 30, coins: 300, bonus: 20 }, + { value: 68, coins: 680, bonus: 50 }, + { value: 128, coins: 1280, bonus: 120 }, + { value: 328, coins: 3280, bonus: 350 }, + { value: 648, coins: 6480, bonus: 800 }, ] + const handleRecharge = (coins: number, bonus: number) => { + recharge(coins + bonus) + } + return (
@@ -27,8 +31,23 @@ export default function RechargePage() {
+ {/* 当前余额 */} +
+
+
+ +
+
+

当前余额

+

+ {wallet.balance} +

+
+
+
+ {/* Banner */} -
+

首充双倍

限时特惠 赠送绝版头像框

@@ -38,35 +57,34 @@ export default function RechargePage() {
- {/* Grid */}
{amounts.map((item) => ( ))}
- {/* Payment Methods */} + {/* 支付方式 */}

支付方式

- +
微信支付
@@ -76,7 +94,7 @@ export default function RechargePage() {
- +
支付宝
diff --git a/app/vip/page.tsx b/app/vip/page.tsx new file mode 100644 index 0000000..cf8b9c9 --- /dev/null +++ b/app/vip/page.tsx @@ -0,0 +1,137 @@ +"use client" + +import { ArrowLeft, Crown, Coins, Building2, Coffee, Gamepad2, Gift, Star } from "lucide-react" +import { useRouter } from "next/navigation" +import { useAppContext } from "@/components/providers/app-provider" +import { useState } from "react" + +export default function VIPPage() { + const router = useRouter() + const { pay, wallet, updateUser, user } = useAppContext() + const [selectedPlan, setSelectedPlan] = useState<"month" | "quarter" | "year">("month") + + const plans = { + month: { price: 30, coins: 300, label: "月卡", days: 30 }, + quarter: { price: 80, coins: 800, label: "季卡", days: 90, save: "11%" }, + year: { price: 280, coins: 2800, label: "年卡", days: 365, save: "22%" }, + } + + const benefits = [ + { icon: Building2, title: "电竞酒店9折", desc: "全国合作酒店通用" }, + { icon: Coffee, title: "网咖8折特权", desc: "特权公馆专属" }, + { icon: Gamepad2, title: "陪玩优先匹配", desc: "专属匹配通道" }, + { icon: Gift, title: "每月专属礼包", desc: "限定装扮+道具" }, + { icon: Star, title: "专属客服", desc: "1对1VIP服务" }, + { icon: Crown, title: "尊贵标识", desc: "个人主页专属展示" }, + ] + + const handleSubscribe = () => { + const plan = plans[selectedPlan] + const success = pay(plan.coins, `玩值黑卡会员${plan.label}`, "service") + if (success) { + updateUser({ isVip: true }) + router.push("/profile") + } + } + + return ( +
+ {/* Header */} +
+ +

玩值黑卡会员

+
+ +
+ {/* VIP Card */} +
+
+
+
+
+ +
+
+

玩值黑卡

+

尊享电竞特权

+
+
+
+ + 当前余额: {wallet.balance} 币 +
+
+
+ + {/* Plan Selection */} +
+

选择套餐

+
+ {(Object.entries(plans) as [keyof typeof plans, typeof plans.month][]).map(([key, plan]) => ( + + ))} +
+
+ + {/* Benefits */} +
+

会员特权

+
+ {benefits.map((benefit, i) => ( +
+
+ +
+
+

{benefit.title}

+

{benefit.desc}

+
+
+ ))} +
+
+
+ + {/* Bottom Purchase Bar */} +
+
+
+

已选: {plans[selectedPlan].label}

+

+ + {plans[selectedPlan].coins} 币 +

+
+ +
+
+
+ ) +} diff --git a/components/providers/app-provider.tsx b/components/providers/app-provider.tsx index 7b929c6..e8c2e43 100644 --- a/components/providers/app-provider.tsx +++ b/components/providers/app-provider.tsx @@ -18,8 +18,7 @@ type User = { } type Wallet = { - diamonds: number // For booking stars (Paid currency) - coins: number // For mall items (Earned/Free currency) - Renamed to Wanzi Coin in UI + balance: number // 玩值币 - 唯一货币 } type Order = { @@ -27,7 +26,6 @@ type Order = { type: "service" | "product" title: string price: number - currency: "diamonds" | "coins" status: "pending" | "completed" | "cancelled" date: string image?: string @@ -38,23 +36,16 @@ type AppContextType = { wallet: Wallet orders: Order[] recharge: (amount: number) => void - pay: ( - amount: number, - currency: "diamonds" | "coins", - title: string, - type: "service" | "product", - image?: string, - ) => boolean + pay: (amount: number, title: string, type: "service" | "product", image?: string) => boolean updateUser: (updates: Partial) => void } const AppContext = createContext(undefined) export function AppProvider({ children }: { children: React.ReactNode }) { - // Initial mock state const [user, setUser] = useState({ - name: "卡若", // Updated name to 卡若 - avatar: "/gamer-boy-esports-jersey.jpg", // Updated avatar + name: "卡若", + avatar: "/gamer-boy-esports-jersey.jpg", level: 12, isVip: false, id: "888888", @@ -65,8 +56,7 @@ export function AppProvider({ children }: { children: React.ReactNode }) { }) const [wallet, setWallet] = useState({ - diamonds: 1280, - coins: 5600, + balance: 6880, // 统一的玩值币余额 }) const [orders, setOrders] = useState([ @@ -75,16 +65,14 @@ export function AppProvider({ children }: { children: React.ReactNode }) { type: "service", title: "LOL陪玩 - 1小时", price: 50, - currency: "diamonds", status: "completed", date: "2023-11-15", image: "/lol.jpg", }, ]) - // Persist to localStorage (optional, for demo feel) useEffect(() => { - const savedWallet = localStorage.getItem("wanzhi_wallet") + const savedWallet = localStorage.getItem("wanzhi_wallet_v2") if (savedWallet) setWallet(JSON.parse(savedWallet)) const savedOrders = localStorage.getItem("wanzhi_orders") @@ -92,7 +80,7 @@ export function AppProvider({ children }: { children: React.ReactNode }) { }, []) useEffect(() => { - localStorage.setItem("wanzhi_wallet", JSON.stringify(wallet)) + localStorage.setItem("wanzhi_wallet_v2", JSON.stringify(wallet)) }, [wallet]) useEffect(() => { @@ -100,41 +88,32 @@ export function AppProvider({ children }: { children: React.ReactNode }) { }, [orders]) const recharge = (amount: number) => { - setWallet((prev) => ({ ...prev, diamonds: prev.diamonds + amount })) + setWallet((prev) => ({ ...prev, balance: prev.balance + amount })) } - const pay = ( - amount: number, - currency: "diamonds" | "coins", - title: string, - type: "service" | "product", - image?: string, - ): boolean => { - if (wallet[currency] < amount) { + const pay = (amount: number, title: string, type: "service" | "product", image?: string): boolean => { + if (wallet.balance < amount) { toast({ title: "余额不足", - description: `您的${currency === "diamonds" ? "钻石" : "丸子币"}不足,请充值`, // Updated currency name to Wanzi Coin + description: "您的玩值币不足,请充值", variant: "destructive", }) return false } - setWallet((prev) => ({ ...prev, [currency]: prev[currency] - amount })) + setWallet((prev) => ({ ...prev, balance: prev.balance - amount })) const newOrder: Order = { id: Math.random().toString(36).substr(2, 9), type, title, price: amount, - currency, - status: "completed", // Auto-complete for demo + status: "completed", date: new Date().toISOString().split("T")[0], image, } setOrders((prev) => [newOrder, ...prev]) - - // 不再显示支付成功提示 return true } diff --git a/components/shared/purchase-bar.tsx b/components/shared/purchase-bar.tsx index bf411b4..cc2ee1e 100644 --- a/components/shared/purchase-bar.tsx +++ b/components/shared/purchase-bar.tsx @@ -1,6 +1,6 @@ "use client" -import { Heart, MessageCircle } from "lucide-react" +import { Heart, MessageCircle, Coins } from "lucide-react" import { Button } from "@/components/ui/button" import { useAppContext } from "@/components/providers/app-provider" import { useRouter } from "next/navigation" @@ -31,7 +31,7 @@ export function PurchaseBar({ const [isCollected, setIsCollected] = useState(false) const handlePurchase = () => { - const success = pay(price, "diamonds", productName, "product") + const success = pay(price, productName, "product") if (success) { if (onSuccess) { onSuccess() @@ -63,7 +63,8 @@ export function PurchaseBar({ )}
diff --git a/public/cafe-1.jpg b/public/cafe-1.jpg new file mode 100644 index 0000000..8ea6513 Binary files /dev/null and b/public/cafe-1.jpg differ diff --git a/public/cafe-2.jpg b/public/cafe-2.jpg new file mode 100644 index 0000000..adc77eb Binary files /dev/null and b/public/cafe-2.jpg differ diff --git a/public/hotel-1.jpg b/public/hotel-1.jpg new file mode 100644 index 0000000..428939d Binary files /dev/null and b/public/hotel-1.jpg differ diff --git a/public/hotel-2.jpg b/public/hotel-2.jpg new file mode 100644 index 0000000..5e4ebbc Binary files /dev/null and b/public/hotel-2.jpg differ diff --git a/public/hotel-3.jpg b/public/hotel-3.jpg new file mode 100644 index 0000000..11d595a Binary files /dev/null and b/public/hotel-3.jpg differ diff --git a/public/xiamen-city-map-with-location-pin.jpg b/public/xiamen-city-map-with-location-pin.jpg new file mode 100644 index 0000000..4fbc46d Binary files /dev/null and b/public/xiamen-city-map-with-location-pin.jpg differ