'use client' import { Badge } from '@/components/ui/badge' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { CheckCircle2, AlertCircle, AlertTriangle, Layers, GitBranch, ArrowRight } from 'lucide-react' import { cn } from '@/lib/utils' import { validateAll } from '@/lib/pipeline-validation' import type { WizardState, ValidationResult } from '@/types/pipeline-wizard' type ReviewSectionProps = { state: WizardState } function ValidationStatusIcon({ result }: { result: ValidationResult }) { if (result.valid && result.warnings.length === 0) { return } if (result.valid && result.warnings.length > 0) { return } return } function ValidationSection({ label, result, }: { label: string result: ValidationResult }) { return (

{label}

{result.errors.map((err, i) => (

{err}

))} {result.warnings.map((warn, i) => (

{warn}

))} {result.valid && result.errors.length === 0 && result.warnings.length === 0 && (

Looks good

)}
) } export function ReviewSection({ state }: ReviewSectionProps) { const validation = validateAll(state) const totalTracks = state.tracks.length const mainTracks = state.tracks.filter((t) => t.kind === 'MAIN').length const awardTracks = state.tracks.filter((t) => t.kind === 'AWARD').length const totalStages = state.tracks.reduce((sum, t) => sum + t.stages.length, 0) const totalTransitions = state.tracks.reduce( (sum, t) => sum + Math.max(0, t.stages.length - 1), 0 ) const enabledNotifications = Object.values(state.notificationConfig).filter(Boolean).length return (
{/* Overall Status */}
{validation.valid ? ( <>

Pipeline is ready to be saved

) : ( <>

Pipeline has validation errors that must be fixed

)}
{/* Validation Checks */} Validation Checks {/* Structure Summary */} Structure Summary

{totalTracks}

Tracks

{totalStages}

Stages

{totalTransitions}

Transitions

{enabledNotifications}

Notifications

{/* Track breakdown */}
{state.tracks.map((track, i) => (
{track.kind} {track.name || '(unnamed)'}
{track.stages.length} stages
))}
) }