Refactor
This commit is contained in:
83
src/app/(stats)/player/[ign]/_stats/bedwars/components.tsx
Normal file
83
src/app/(stats)/player/[ign]/_stats/bedwars/components.tsx
Normal file
@@ -0,0 +1,83 @@
|
||||
import { getBedwarsStar, getPrestigeName, getTextColor } from "@/lib/hypixel/bedwars"
|
||||
import { getBWLevelForExp } from "@/lib/hypixel/bedwarsLevel"
|
||||
import { bedwarsLevelColors } from "@/lib/hypixelFormatters"
|
||||
import { cn } from "@/lib/utils"
|
||||
import Multicolored from "../../_components/Multicolored"
|
||||
|
||||
export function BedwarsLevel({ xp }: { xp: number }) {
|
||||
const level = getBWLevelForExp(xp)
|
||||
const color = bedwarsLevelColors(level)
|
||||
const star = getBedwarsStar(level)
|
||||
const val = `[${level}${star}]`
|
||||
|
||||
return <Multicolored val={val} color={color} />
|
||||
}
|
||||
|
||||
export function BedwarsProgress({ level, percent }: { level: number, percent: number }) {
|
||||
return (
|
||||
<div className="flex items-center mb-10">
|
||||
<LevelNumber level={level} className="mr-2" />
|
||||
<Progress level={level} percent={percent} />
|
||||
<div className="flex-1 h-5 rounded-r-md bg-background"></div>
|
||||
<LevelNumber level={level + 1} className="ml-2" />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export function BedWarsPrestige({ level }: { level: number }) {
|
||||
if (level >= 1000 && level < 1100) {
|
||||
return (
|
||||
<span
|
||||
style={{
|
||||
backgroundImage: "linear-gradient(to left,#a0a,#f5f,#5ff,#5f5,#ff5,#fa0,#f55)",
|
||||
WebkitBackgroundClip: "text",
|
||||
color: "transparent"
|
||||
}}
|
||||
>
|
||||
{`${getPrestigeName(level)} ${getBedwarsStar(level)}`}
|
||||
</span>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<span className={`text-mc-${getTextColor(level)}`}>
|
||||
{`${getPrestigeName(level)} ${getBedwarsStar(level)}`}
|
||||
</span>
|
||||
)
|
||||
}
|
||||
|
||||
function LevelNumber({ level, className }: { level: number, className?: string }) {
|
||||
if (level >= 1000 && level < 1100) {
|
||||
return (
|
||||
<div
|
||||
className={className}
|
||||
style={{
|
||||
backgroundImage: "linear-gradient(to left,#a0a,#f5f,#5ff,#5f5,#ff5,#fa0,#f55)",
|
||||
WebkitBackgroundClip: "text",
|
||||
color: "transparent"
|
||||
}}
|
||||
>
|
||||
{level}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
return <div className={cn(`text-mc-${getTextColor(level)}`, className)}>{level}</div>
|
||||
}
|
||||
|
||||
function Progress({ level, percent }: { level: number, percent: number }) {
|
||||
if (level >= 1000 && level < 1100) {
|
||||
return (
|
||||
<div
|
||||
className="h-5 rounded-l-md"
|
||||
style={{
|
||||
width: `${percent}%`,
|
||||
background: "repeating-linear-gradient(to right,#f55,#fa0,#ff5,#5f5,#5ff,#f5f,#a0a,#f55 16rem)"
|
||||
}}
|
||||
>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
return <div className={`h-5 bg-mc-${getTextColor(level)} rounded-l-md`} style={{ width: `${percent}%` }}></div>
|
||||
}
|
||||
Reference in New Issue
Block a user