"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 */}
{/* 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 */}
{/* 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 (
);
}
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 (
{description}
Progress
{progress}%
Reward:
{reward}
);
}