import {
ActionBlockerHint,
GuidedReviewList,
i18nMessage,
type ActionBlockerReason
} from "@govoplan/core-webui";
import type { BuildReviewProgress } from "./reviewProgress";
type InterventionHintProps = {
tone: "warning" | "danger";
summary: string;
requiredAction: string;
destination: string;
documentationTopicId: string;
};
function InterventionHint({ tone, summary, requiredAction, destination, documentationTopicId }: InterventionHintProps) {
const requiredActionLabel = i18nMessage("i18n:govoplan-campaign.required_action.f2429497");
const actorLabel = i18nMessage("i18n:govoplan-campaign.who_can_resolve_this.e60939b2");
const destinationLabel = i18nMessage("i18n:govoplan-campaign.where_to_go.bb1c6969");
const actor = i18nMessage("i18n:govoplan-campaign.campaign_editor_or_reviewer.7869b106");
const reason: ActionBlockerReason = {
summary,
requiredAction,
actor,
target: destination
};
return (
);
}
export function ValidationWorkflowGuidance({
errors,
warnings,
stale,
reviewSatisfied = false
}: {
errors: number;
warnings: number;
stale: boolean;
reviewSatisfied?: boolean;
}) {
return (
{errors > 0 && (
)}
{stale && (
)}
{warnings > 0 && !reviewSatisfied && (
)}
);
}
export function BuiltMessageReviewProgress({ progress }: { progress: BuildReviewProgress }) {
const blockerDetail = progress.blocking > 0
? i18nMessage("i18n:govoplan-campaign.must_be_corrected_before_delivery.b8e6a54b")
: i18nMessage("i18n:govoplan-campaign.no_critical_built_message_blockers_remain.97b3c64f");
const individualDetail = progress.individualRemaining > 0
? i18nMessage("i18n:govoplan-campaign.requires_an_individual_decision.44cd81c9")
: i18nMessage("i18n:govoplan-campaign.all_required_review_decisions_are_complete.503919dc");
const groupDetail = progress.groupRemaining > 0
? i18nMessage("i18n:govoplan-campaign.may_be_accepted_together_after_critical_review_is_comple.8753522f")
: progress.groupRequired > 0
? i18nMessage("i18n:govoplan-campaign.already_acknowledged_in_the_completed_review.76a263f6")
: i18nMessage("i18n:govoplan-campaign.all_required_review_decisions_are_complete.503919dc");
return (
0 ? "danger" : "success"
},
{
label: i18nMessage("i18n:govoplan-campaign.individual_review.402783bf"),
value: `${progress.individualReviewed} / ${progress.individualRequired}`,
detail: individualDetail,
tone: progress.individualRemaining > 0 ? "warning" : "success"
},
{
label: i18nMessage("i18n:govoplan-campaign.group_review.a809a9d9"),
value: `${progress.groupReviewed} / ${progress.groupRequired}`,
detail: groupDetail,
tone: progress.groupRemaining > 0 ? "warning" : "success"
}
]}
/>
);
}
export function BuiltMessageWorkflowGuidance({
progress
}: {
progress: BuildReviewProgress;
}) {
// Frozen job review requirements are authoritative. Aggregate build warnings
// also contain expected policy outcomes and already acknowledged conditions.
return (
{progress.blocking > 0 && (
)}
{progress.remaining > 0 && (
)}
);
}