import { BasicSidebarItem, SidebarItem } from "@/app/(stats)/_components/sidebar" import { Button } from "@/components/ui/button" import { Card, CardContent } from "@/components/ui/card" import { Separator } from "@/components/ui/separator" import { getColor } from "@/lib/colors" import { formatDate, formatNumber } from "@/lib/formatters" import { getCoinMultiplier, getTotalChallenges, getTotalCoins, getTotalQuests, rewardClaimed } from "@/lib/hypixel/general/stats" import { getGame, getGameMode } from "@/lib/hypixel/general/status" import { getGuildMember, getGuildRankTag, getMemberGEXP, getMemberWeeklyGEXP } from "@/lib/hypixel/guild/guild" import { Guild } from "@/lib/schema/guild" import { Player } from "@/lib/schema/player" import { Session } from "@/lib/schema/status" import Link from "next/link" import SocialIcons from "./social-icons" type SidebarProps = { level: number ign: string player: Player["player"] guild: Guild["guild"] | undefined rank: string | undefined specialRank: string | undefined eulaCoins: boolean | undefined session: Session["session"] | null } export default function Sidebar({ level, ign, player, guild, rank, specialRank, eulaCoins, session }: SidebarProps) { const levelMultiplier = getCoinMultiplier(level, rank, specialRank, eulaCoins) const levelMultiplierVal = levelMultiplier.value const levelMultiplierText = levelMultiplier.level === true ? `(Level ${level.toString().split(".")[0]})` : `(${levelMultiplier.name})` function General() { return (

Hypixel level

{formatNumber(level)}

Karma

{formatNumber(player.karma)}

) } function Coins() { return (
{formatNumber(getTotalCoins(player.stats))}
) } function Other() { return (

Achievement Points {": "} {formatNumber(player.achievementPoints ?? 0)}

Quests Completed {": "} {formatNumber(getTotalQuests(player.quests))}

) } function DailyRewards() { return (
{rewardClaimed(player.lastClaimedReward) ? "Claimed" : "Unclaimed"}
) } function Gifting() { return (
) } function Logins() { return (
) } function SkyblockButton() { return ( ) } function GuildInfo() { if (!guild) return null return ( <>

Guild

{guild.name}
{`${getGuildMember(guild, player.uuid)?.rank} `} {getGuildRankTag(guild, player.uuid)}
) } function OnlineStatus() { if (!session?.online) { return ( <>

Online Status

) } const noMapGameTypes = ["BUILD_BATTLE", "HOUSING", "REPLAY"] const noMapArcadeModes = [ "DAYONE", "DEFENDER", "DRAGONWARS2", "DROPPER", "SOCCER", "STARWARS", "SIMON_SAYS", "PARTY", "DRAW_THEIR_THING", "PIXEL_PARTY", "THROW_OUT" ] const showMode = !(session.gameType === "REPLAY") const showMap = session.map !== undefined && session.gameType !== undefined && !noMapGameTypes.includes(session.gameType) && session.mode !== undefined && !(session.gameType === "ARCADE" && noMapArcadeModes.includes(session.mode)) const mode = session.mode === "LOBBY" ? "Lobby" : getGameMode(session.gameType, session.mode) return ( <>

Online Status

{session.gameType && } {showMode && } {showMap && }
) } function SoicalLinks() { return (

Social Links

) } return ( ) }