"use client"; import { HTMLAttributes } from "react"; interface ProgressBarProps extends HTMLAttributes { value: number; max: number; variant?: "hp" | "xp" | "default"; showLabel?: boolean; label?: string; } const variantClasses = { hp: { high: "from-green-600 to-green-700", medium: "from-yellow-600 to-orange-700", low: "from-red-700 to-red-900", }, xp: "from-pixel-gold/80 via-pixel-gold/70 to-pixel-gold/80", default: "from-pixel-gold/80 via-pixel-gold/70 to-pixel-gold/80", }; export default function ProgressBar({ value, max, variant = "default", showLabel = false, label, className = "", ...props }: ProgressBarProps) { const percentage = Math.min(100, Math.max(0, (value / max) * 100)); let gradientClass = ""; if (variant === "hp") { if (percentage > 60) { gradientClass = variantClasses.hp.high; } else if (percentage > 30) { gradientClass = variantClasses.hp.medium; } else { gradientClass = variantClasses.hp.low; } } else if (variant === "xp") { gradientClass = variantClasses.xp; } else { gradientClass = variantClasses.default; } return (
{showLabel && (
{label || variant.toUpperCase()} {value} / {max}
)}
{variant === "hp" && percentage < 30 && (
)}
); }