+
+
+
+ {progressLabel}
+
+
+
+
+ {Array.from({ length: TOTAL_STEPS }, (_, i) => {
+ const dotStep = i + 1;
+ const active = clamped >= dotStep || (clamped === 0 && dotStep === 1);
+ return (
+
+ );
+ })}
+
+
+
{children}
+
+
+
+ );
+}
+
+function clampStep(step: number): 0 | 1 | 2 | 3 | 4 {
+ if (!Number.isFinite(step)) return 0;
+ const rounded = Math.floor(step);
+ if (rounded < 0) return 0;
+ if (rounded > 4) return 4;
+ return rounded as 0 | 1 | 2 | 3 | 4;
+}