UI/UX audit fixes: clickable pipelines, broken links, isActive locking

- Make pipeline cards clickable on list page (navigate to detail view)
- Fix broken nav link: applicant /messages → /mentor
- Fix broken nav link: mentor /messages → /projects
- Add isActive field locking to all 7 wizard sections (intake, main-track,
  filtering, assignment, awards, live-finals, notifications)
- Add minLoad ≤ maxLoad cross-field validation in assignment section
- Add duplicate stage slug detection in main track section
- Add active pipeline warning banners in intake and main track sections

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-13 20:50:22 +01:00
parent 31225b099e
commit 7d1c87e938
11 changed files with 149 additions and 79 deletions

View File

@@ -309,6 +309,7 @@ export default function EditPipelinePage() {
onChange={(c) =>
updateStageConfig('INTAKE', c as unknown as Record<string, unknown>)
}
isActive={isActive}
/>
</WizardSection>
@@ -323,6 +324,7 @@ export default function EditPipelinePage() {
<MainTrackSection
stages={mainTrack?.stages ?? []}
onChange={updateMainTrackStages}
isActive={isActive}
/>
</WizardSection>
@@ -339,6 +341,7 @@ export default function EditPipelinePage() {
onChange={(c) =>
updateStageConfig('FILTER', c as unknown as Record<string, unknown>)
}
isActive={isActive}
/>
</WizardSection>
@@ -355,6 +358,7 @@ export default function EditPipelinePage() {
onChange={(c) =>
updateStageConfig('EVALUATION', c as unknown as Record<string, unknown>)
}
isActive={isActive}
/>
</WizardSection>
@@ -369,6 +373,7 @@ export default function EditPipelinePage() {
<AwardsSection
tracks={state.tracks}
onChange={(tracks) => updateState({ tracks })}
isActive={isActive}
/>
</WizardSection>
@@ -385,6 +390,7 @@ export default function EditPipelinePage() {
onChange={(c) =>
updateStageConfig('LIVE_FINAL', c as unknown as Record<string, unknown>)
}
isActive={isActive}
/>
</WizardSection>
@@ -403,6 +409,7 @@ export default function EditPipelinePage() {
onOverridePolicyChange={(overridePolicy) =>
updateState({ overridePolicy })
}
isActive={isActive}
/>
</WizardSection>