"use client"; import type React from "react"; import Link from "next/link"; import { Shield, Zap, Eye, Brain, Heart, Menu, X, Award } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Progress } from "@/components/ui/progress"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card"; import { Separator } from "@/components/ui/separator"; import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet"; import { useUser } from "@/context/user-context"; // Import the NameInputModal component import { MobileNav } from "@/components/mobile-nav"; import { NameInputModal } from "@/components/name-input-modal"; export default function Dashboard() { const { userStats, addExp, completeQuest } = useUser(); // Calculate progress percentage for XP bar const expPercentage = (userStats.exp / userStats.expToNextLevel) * 100; return (
{/* Add the NameInputModal component */}
{/* Header */}

SOLO LEVEL UP

Quests Inventory Equipment Combat Skills Profile

Menu

{/* Main Status Panel */}

STATUS

{/* Level and Title */}
{userStats.level}
LEVEL
{/* Add name display above job */}
NAME:
{userStats.name || "Unnamed"}
JOB:
{userStats.job || "None"}
TITLE:
{userStats.title || "None"}
{/* HP/MP Bars */}
HP {userStats.hp}/{userStats.maxHp}
MP {userStats.mp}/{userStats.maxMp}
EXP {userStats.exp}/{userStats.expToNextLevel}
FATIGUE {userStats.fatigue}
{/* Stats Grid */}
} name="STR" value={userStats.stats.str} /> } name="VIT" value={userStats.stats.vit} /> } name="AGI" value={userStats.stats.agi} /> } name="INT" value={userStats.stats.int} /> } name="PER" value={userStats.stats.per} />
Available Points
{userStats.statPoints}
{/* Equipment Section */}

EQUIPMENT

{/* Active Quests Section */}

ACTIVE QUESTS

{userStats.quests .filter((q) => !q.completed) .slice(0, 4) .map((quest) => ( completeQuest(quest.id)} /> ))} {userStats.quests.filter((q) => !q.completed).length === 0 && (
No active quests. Create some quests to start leveling up!
)}
{/* Add the mobile navigation bar */}
); } function StatDisplay({ icon, name, value, }: { icon: React.ReactNode; name: string; value: number; }) { return (
{icon}
{name}
{value}
); } function EquipmentCard({ name, rarity, stats, setBonus, slot, }: { name: string; rarity: "Common" | "Uncommon" | "Rare" | "Epic" | "Legendary"; stats: string[]; setBonus: string; slot: string; }) { const rarityColors = { Common: "text-gray-400", Uncommon: "text-green-400", Rare: "text-[#4cc9ff]", Epic: "text-purple-400", Legendary: "text-yellow-400", }; return (
{name} {slot}
{rarity}
{stats.map((stat, index) => (
{stat}
))}
{setBonus}
); } function QuestCard({ title, description, reward, progress, difficulty, onComplete, }: { title: string; description: string; reward: string; progress: number; difficulty: "S" | "A" | "B" | "C" | "D" | "E"; onComplete: () => void; }) { const difficultyColors = { S: "bg-red-500", A: "bg-orange-500", B: "bg-yellow-500", C: "bg-green-500", D: "bg-blue-500", E: "bg-purple-500", }; return (
{title}
{difficulty}
{description}
Progress {progress}%
Reward: {reward}
); }