import styles from "./ProgressBar.module.css";

type ProgressBarTone = "ok" | "wn" | "ng" | "ac" | "pr";

interface ProgressBarProps {
  /** 0〜100の割合。呼び出し側は生値を渡してよい（丸めは表示幅に影響しないため不要） */
  percent: number;
  tone?: ProgressBarTone;
}

/**
 * モック521〜523行のバー相当。F-01のスケジュール進捗、F-04のKPI4列で共用する。
 *
 * ★呼び出し元が null/未定義を渡さない前提だが、0除算由来のNaN/Infinityが
 *   万一渡ってもバーが壊れないよう、ここで最終防御として0にクランプする★
 */
export function ProgressBar({ percent, tone = "ok" }: ProgressBarProps) {
  const safePercent = Number.isFinite(percent) ? percent : 0;
  const clamped = Math.max(0, Math.min(100, safePercent));
  return (
    <div className={styles.track}>
      <div
        className={`${styles.fill} ${styles[tone]}`}
        style={{ width: `${clamped}%` }}
      />
    </div>
  );
}
