Documentation Index
Fetch the complete documentation index at: https://grantmaster.dev/llms.txt
Use this file to discover all available pages before exploring further.
Modals Inventory
Scope Snapshot
101modal/dialog component files undersrc/86direct<Modal>uses52direct<Dialog>uses51useConfirmDialogsites
Migration Matrix
| Area | Component | Path | Purpose | Entities | Owns State | Receives | Triggers | Target Pattern | Status |
|---|---|---|---|---|---|---|---|---|---|
| Grantors | RevokeTokenModal | src/features/grantors/components/portal/RevokeTokenModal.tsx | Revoke stakeholder access link | PortalToken, project | optional reason, submit loading | isOpen, token, projectName | onRevoked, onClose | ConfirmDialog | migrated |
| Grantors | ReviewSubmissionModal | src/features/grantors/components/portal/ReviewSubmissionModal.tsx | Inspect a submission and accept/reject/mark under review | PortalSubmission, project | review notes, pending action | isOpen, submission, projectName | onReviewed, onClose | ReviewDialog | migrated |
| Grantors | CreateTokenModal | src/features/grantors/components/portal/CreateTokenModal.tsx | Create and reveal a stakeholder access token | token form, generated token | form fields, async submit | project and stakeholder context | create token callbacks | AppModal | migrated |
| Grantors | GrantorEditorModal | src/features/grantors/components/pages/grantors-page/GrantorEditorModal.tsx | Edit grantor details | grantor | large form state | selected grantor | save callbacks | AppModal | migrated |
| Users | RoleAssignmentModal | src/features/users/components/users/RoleAssignmentModal.tsx | Change a user role | User, role list | selected role, submit loading | isOpen, user, roleOptions | onSubmit, onClose | AppModal | migrated |
| Users | UserActionsDialog | src/features/users/components/users/UserActionsDialog.tsx | Present admin actions for a user | User | none | open, user, permissions flags | role/deactivate/reset/resend callbacks | ActionListDialog | migrated |
| Users | DeactivateUserModal | src/features/users/components/DeactivateUserModal.tsx | Deactivate or reactivate a user with consequences and notes | User | confirmation checkbox, notes, email toggle, loading | isOpen, user | onDeactivate, onReactivate, onClose | AppModal | migrated |
| Users | InviteUserModal | src/features/users/components/InviteUserModal.tsx | Invite a new user | invite payload | form state | isOpen | invite callback | AppModal | migrated |
| Users | UserProfileModal | src/features/users/components/profile/UserProfileModal.tsx | Edit or inspect a user profile | User | form and nested actions | selected user | save/delete/confirm actions | shared modal shell + ConfirmDialog | migrated shell |
| Users | Contractors dialogs | src/features/users/components/contractors/**/*.tsx, src/features/users/components/contractors-dashboard/**/*.tsx | Contractor detail, upsert, delete flows | contractor | varies | contractor selection | create/update/delete callbacks | AppModal / ConfirmDialog | migrated |
| Extensions | ActivateModuleModal | src/features/extensions/components/ExtensionModals.tsx | Activate a module | ModuleManifest | none | isOpen, manifest | onConfirm, onClose | ConfirmDialog | migrated |
| Extensions | DeactivateModuleModal | src/features/extensions/components/ExtensionModals.tsx | Deactivate a module | ModuleManifest | none | isOpen, manifest | onConfirm, onClose | ConfirmDialog | migrated |
| Extensions | InstallModuleDialog | src/features/extensions/components/InstallExtensionDialog.tsx | Choose install mode and install a module | ModuleManifest | async action state | open, manifest, pricing flags | onInstall, onOpenChange | DecisionDialog | migrated |
| Extensions | UninstallModuleDialog | src/features/extensions/components/UninstallExtensionDialog.tsx | Preview data impact, optionally purge data, uninstall module | ModuleManifest, data stats | purge checkbox, stats loading | open, manifest | onUninstall, onLoadStats, onOpenChange | ConfirmDialog | migrated |
| Extensions | ExtensionDetailDrawer | src/features/extensions/components/ExtensionDetailDrawer.tsx | Inspect module detail and launch activate/deactivate flows | ModuleManifest | none | isOpen, manifest | action callbacks | AppModal | migrated |
Long-Tail Wave
src/features/extensions/components/extensions-page/dialogs.tsxThe legacy extension-page activate/deactivate dialogs are migrated to the shared shell; the remaining detail drawer stays custom by design.src/features/grantors/components/RelationshipsTab.tsxThe “Log Interaction” and “Link Contact to Grantor” flows are migrated toAppModal.src/features/grantors/components/ReportingCalendarTab.tsxThe “Add Reporting Deadline” flow is migrated toAppModal.src/features/users/components/department-structure/DepartmentStructure.tsxThe org-chart context dialog is migrated to the shared shell and shared info blocks.src/features/users/components/department-structure/components/UsersAssignmentDialog.tsxThe assign-users flow is migrated toAppModal.src/features/users/components/pages/TeamPageContent.tsxThe workload rebalance dialog is migrated toAppModal.src/features/users/components/StaffAssignmentPlanner.tsxThe assignment editor dialog is migrated toAppModal.src/features/users/components/VolunteerManagement.tsxThe add/edit volunteer and log-hours dialogs are migrated toAppModal; the old StrictMode portal workaround is removed.src/features/users/components/EffortCertificationDashboard.tsxThe certification review/sign dialog is migrated toAppModal.src/features/users/components/CapacityDashboard.tsxThe weekly pulse survey dialog is migrated toAppModal.src/features/users/components/TrainingDashboard.tsxThe add-training and requirements dialogs are migrated toAppModal.src/features/users/components/UserDocumentsDashboard.tsxThe upload and verify dialogs are migrated toAppModal.src/features/users/components/ValuesManagement.tsxThe value, behavior, and competency-link dialogs are migrated toAppModal.src/features/users/org-chart/components/OrgChartVacancyDialog.tsxThe vacancy creation dialog is migrated toAppModal.
Notable Outliers
src/features/users/components/DeactivateUserModal.tsxCarries meaningful consequence explanation, side effects, checkboxes, and notes. It should stay a richAppModal, not be compressed intoConfirmDialog.src/features/extensions/components/UninstallExtensionDialog.tsxHas asynchronous data-impact loading and an optional purge decision. This is a confirm-plus-details flow, not a simple alert.src/features/grantors/components/portal/ReviewSubmissionModal.tsxNeeds a body-first review surface with status, attachments, and notes.ReviewDialogfits better than a genericDecisionDialog.src/features/users/components/profile/UserProfileModal.tsxBehaves more like a routed editor workspace than a conventional open/close modal. It should keep the shared modal sections, notices, and footer contract without being artificially forced intoAppModal.
Remaining Raw-Hit Check
- A grep scan for
DialogContent,AlertDialogContent, and the legacyModalpath no longer finds real product dialogs in the targeted Grantors, Users, and Extensions feature areas. - The remaining literal matches are false positives from internal helper component names such as
UninstallModuleDialogContentandUsersAssignmentDialogContent, not raw dialog primitives.
Rollout Order
- Portal access and submission review flows
- User admin actions and role changes
- User lifecycle actions such as deactivate/reactivate
- Extension activate/install/uninstall flows
- Long-tail form/detail modals still on legacy
Modal - Direct
Dialogusage that has become product UI rather than low-level composition
Deprecation Targets
src/hooks/useConfirmDialog.tsxshould remain only as a compatibility shim over the new modal system- feature-level hand-built
DialogHeader/DialogFooterlayouts should be migrated tomodal-system - new product flows should not be added directly on
alert-dialog