Components
Project completion decision
Make the treatment of unfinished tasks explicit before completing a project.
On this page
Purpose and usage
Make the treatment of unfinished tasks explicit before completing a project.
Use for project completion with unresolved work; a routine binary task toggle does not need this dialog.
Anatomy
| Part | Contract |
|---|---|
| Question | Names the project being completed. |
| Remaining work | Count of incomplete tasks. |
| Choices | Cancel, complete remaining tasks, or leave tasks incomplete. |
Variants and configuration
| Configuration | Behavior |
|---|---|
| incompleteCount | Number of unfinished tasks to explain the decision. |
| Callbacks | onCancel, onCompleteAll, onLeaveIncomplete. |
State coverage
| State | Implemented behavior |
|---|---|
| Open | Body scroll locked and an initial focus target requested. |
| Cancel | Returns to the previous context without completing. |
| Decision made | Parent chooses the actual status/task mutations. |
Interaction and responsive behavior
- Show this decision only when incomplete work exists.
- State clearly what each choice will do to task records.
- Restore the previous focus when the dialog leaves the page.
Accessibility contract
- role=alertdialog with title/description IDs and aria-modal.
- Escape calls cancel; an initial focus target is selected by data attribute.
- Test containment and focus restoration independently.
Known gaps and readiness
No complete accessibility certification is implied. Captures use no-op mutation callbacks, so they do not change tasks or project status.
Composition example
<ProjectCompletionDialog projectTitle={project.project}
incompleteCount={remainingCount} onCancel={close}
onCompleteAll={completeRemaining} onLeaveIncomplete={completeOnly} />Source references
| File | Responsibility |
|---|---|
| app/components/project-completion-dialog.tsx | Decision alertdialog |
| app/components/project-detail-content.tsx | Completion orchestration |
Examples from the app
Actual Radarist components with fictional data. Captured at 2× resolution or higher. Select an image to inspect it full size.
Related topics
Source audit: 2026-10-07 · Revision 0103e2549959 · Documentation v0.1