'use client' import * as React from 'react' type ProgressBarProps = { label?: React.ReactNode value?: number | null // 0..100 indeterminate?: boolean // wenn true -> “läuft…” ohne Prozent showPercent?: boolean // zeigt “xx%” (nur determinate) rightLabel?: React.ReactNode // optionaler Text unter der Bar (z.B. 3/10) steps?: string[] // optional: Step-Labels currentStep?: number // 0-basiert size?: 'sm' | 'md' className?: string } export default function ProgressBar({ label, value = 0, indeterminate = false, showPercent = false, rightLabel, steps, currentStep, size = 'md', className, }: ProgressBarProps) { const clamped = Math.max(0, Math.min(100, Number(value) || 0)) const h = size === 'sm' ? 'h-1.5' : 'h-2' const hasSteps = Array.isArray(steps) && steps.length > 0 const stepCount = hasSteps ? steps!.length : 0 const stepAlign = (i: number) => { if (i === 0) return 'text-left' if (i === stepCount - 1) return 'text-right' return 'text-center' } const isActiveStep = (i: number) => { if (typeof currentStep !== 'number' || !Number.isFinite(currentStep)) return false return i <= currentStep } const showPct = showPercent && !indeterminate return (
{/* ✅ Label + Prozent jetzt ÜBER der Bar */} {(label || showPct) ? (
{label ? (

{label}

) : ( )} {showPct ? ( {Math.round(clamped)}% ) : null}
) : null}