"use client"
import type React from "react"
import Link from "next/link"
import { Shield, Zap, Eye, Brain, Heart, ChevronLeft, Plus, Minus, HelpCircle } from "lucide-react"
import { Button } from "@/components/ui/button"
import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"
import { useUser } from "@/context/user-context"
import type { UserStats } from "@/utils/storage"
export default function StatsPage() {
const { userStats, allocateStatPoint, deallocateStatPoint } = useUser()
return (
{/* Header */}
{/* Stats Overview */}
Available Points
{userStats.statPoints}
}
name="str"
displayName="STR"
value={userStats.stats.str}
description="Enhances physical power and attack damage. Ideal for physical tasks and strength training."
onIncrease={() => allocateStatPoint("str")}
onDecrease={() => deallocateStatPoint("str")}
canIncrease={userStats.statPoints > 0}
canDecrease={userStats.stats.str > 10}
/>
}
name="agi"
displayName="AGI"
value={userStats.stats.agi}
description="Boosts speed, reflexes, and critical hit rate. Represents quickness and dexterity."
onIncrease={() => allocateStatPoint("agi")}
onDecrease={() => deallocateStatPoint("agi")}
canIncrease={userStats.statPoints > 0}
canDecrease={userStats.stats.agi > 10}
/>
}
name="per"
displayName="PER"
value={userStats.stats.per}
description="Increases precision and awareness. Reflects focus, attention to detail, and consistency."
onIncrease={() => allocateStatPoint("per")}
onDecrease={() => deallocateStatPoint("per")}
canIncrease={userStats.statPoints > 0}
canDecrease={userStats.stats.per > 10}
/>
}
name="int"
displayName="INT"
value={userStats.stats.int}
description="Enhances cognitive abilities and reduces skill cooldowns. Suitable for learning and problem-solving."
onIncrease={() => allocateStatPoint("int")}
onDecrease={() => deallocateStatPoint("int")}
canIncrease={userStats.statPoints > 0}
canDecrease={userStats.stats.int > 10}
/>
}
name="vit"
displayName="VIT"
value={userStats.stats.vit}
description="Increases health and defense. Represents endurance, resilience, and overall wellbeing."
onIncrease={() => allocateStatPoint("vit")}
onDecrease={() => deallocateStatPoint("vit")}
canIncrease={userStats.statPoints > 0}
canDecrease={userStats.stats.vit > 10}
/>
{/* Stat Effects */}
Stat Effects
Strength Effects
-
Base Attack Power
{userStats.stats.str * 2}
-
Physical Task Efficiency
+{userStats.stats.str}%
-
Carry Capacity
{userStats.stats.str * 3} units
Agility Effects
-
Critical Hit Rate
{(userStats.stats.agi * 0.5).toFixed(1)}%
-
Reaction Time
-{(userStats.stats.agi * 0.4).toFixed(1)}%
-
Movement Speed
+{userStats.stats.agi}%
Perception Effects
-
Accuracy
+{userStats.stats.per}%
-
Detection Range
{userStats.stats.per * 2} meters
-
Minimum Damage
{userStats.stats.per} points
Intelligence Effects
-
Mana Points (MP)
{userStats.maxMp}
-
Skill Cooldown Reduction
-{(userStats.stats.int * 0.5).toFixed(1)}%
-
Learning Efficiency
+{userStats.stats.int}%
Vitality Effects
-
Health Points (HP)
{userStats.maxHp}
-
Defense
{userStats.stats.vit * 2}
-
Stamina Recovery
+{(userStats.stats.vit * 0.5).toFixed(1)}%
)
}
// Update the StatAllocationRow component to make it more responsive
function StatAllocationRow({
icon,
name,
displayName,
value,
description,
onIncrease,
onDecrease,
canIncrease,
canDecrease,
}: {
icon: React.ReactNode
name: keyof UserStats["stats"]
displayName: string
value: number
description: string
onIncrease: () => void
onDecrease: () => void
canIncrease: boolean
canDecrease: boolean
}) {
return (
{icon}
{displayName}
{description}
{value}
)
}