fix(ux): resolve tickets #58 #60 — wizard review labels and assignment CTA clarity

#58: Split the merged "Type: BD / INT" field in the wizard review step into
separate "Order Type", "Allocation Type", and "Status on create" rows so
users can clearly distinguish commercial classification from lifecycle status.

#60: Relabel FillOpenDemandModal staging CTA from "+ Add to Plan" to
"+ Queue Assignment" and the proceed CTA from "Review (N)" to
"Review Queued (N)" to make the staged/non-final nature of the action clear.
Also correct the project detail Assignments label from "N active" to
"N planned" and update the tooltip to include PROPOSED in the definition.

Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
2026-04-03 16:17:16 +02:00
parent 2da29c8191
commit 9241f22993
3 changed files with 12 additions and 5 deletions
@@ -113,8 +113,8 @@ export default async function ProjectDetailPage({ params }: ProjectDetailPagePro
<dd className="mt-0.5 text-sm text-gray-900">{project.allocationType}</dd> <dd className="mt-0.5 text-sm text-gray-900">{project.allocationType}</dd>
</div> </div>
<div> <div>
<dt className="text-xs text-gray-500 flex items-center">Assignments<InfoTooltip content="Number of active resource assignments (confirmed or in-progress allocations) on this project." /></dt> <dt className="text-xs text-gray-500 flex items-center">Assignments<InfoTooltip content="Number of non-cancelled resource assignments on this project — includes PROPOSED (staged), CONFIRMED, and ACTIVE statuses." /></dt>
<dd className="mt-0.5 text-sm text-gray-900">{activeAssignments.length} active</dd> <dd className="mt-0.5 text-sm text-gray-900">{activeAssignments.length} planned</dd>
</div> </div>
<div> <div>
<dt className="text-xs text-gray-500 flex items-center">Open Demands<InfoTooltip content="Staffing requirements that still need resources. Unfilled seats are demand positions not yet assigned to a person." /></dt> <dt className="text-xs text-gray-500 flex items-center">Open Demands<InfoTooltip content="Staffing requirements that still need resources. Unfilled seats are demand positions not yet assigned to a person." /></dt>
@@ -368,7 +368,7 @@ export function FillOpenDemandModal({ allocation, onClose, onSuccess }: FillOpen
disabled={!resourceId || !avail || isAlreadyPlanned(resourceId)} disabled={!resourceId || !avail || isAlreadyPlanned(resourceId)}
className="px-4 py-2 border border-brand-600 text-brand-600 rounded-lg hover:bg-brand-50 dark:hover:bg-brand-900/20 text-sm font-medium disabled:opacity-40 disabled:cursor-not-allowed" className="px-4 py-2 border border-brand-600 text-brand-600 rounded-lg hover:bg-brand-50 dark:hover:bg-brand-900/20 text-sm font-medium disabled:opacity-40 disabled:cursor-not-allowed"
> >
+ Add to Plan + Queue Assignment
</button> </button>
{planned.length > 0 && ( {planned.length > 0 && (
<button <button
@@ -376,7 +376,7 @@ export function FillOpenDemandModal({ allocation, onClose, onSuccess }: FillOpen
onClick={() => setPhase("confirm")} onClick={() => setPhase("confirm")}
className="px-4 py-2 bg-brand-600 text-white rounded-lg hover:bg-brand-700 text-sm font-medium" className="px-4 py-2 bg-brand-600 text-white rounded-lg hover:bg-brand-700 text-sm font-medium"
> >
Review ({planned.length}) Review Queued ({planned.length})
</button> </button>
)} )}
</div> </div>
@@ -924,7 +924,14 @@ function Step5({ state, onChange, onSubmit, isSubmitting, submitError }: Step5Pr
<span className="font-medium">{state.name || "—"}</span> <span className="font-medium">{state.name || "—"}</span>
</div> </div>
<div> <div>
<span className="text-gray-500">Type:</span> {state.orderType} / {state.allocationType} <span className="text-gray-500">Order Type:</span> {state.orderType}
</div>
<div>
<span className="text-gray-500">Allocation Type:</span> {state.allocationType}
</div>
<div>
<span className="text-gray-500">Status on create:</span>{" "}
{state.saveAsDraft ? "Draft" : "Active"}
</div> </div>
<div> <div>
<span className="text-gray-500">Budget:</span>{" "} <span className="text-gray-500">Budget:</span>{" "}