Skip to main content

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

  • 101 modal/dialog component files under src/
  • 86 direct <Modal> uses
  • 52 direct <Dialog> uses
  • 51 useConfirmDialog sites
This matrix prioritizes the Grantors, Users, and Extensions areas first because they contain overlapping confirm, review, and action-list patterns that benefit most from convergence.

Migration Matrix

AreaComponentPathPurposeEntitiesOwns StateReceivesTriggersTarget PatternStatus
GrantorsRevokeTokenModalsrc/features/grantors/components/portal/RevokeTokenModal.tsxRevoke stakeholder access linkPortalToken, projectoptional reason, submit loadingisOpen, token, projectNameonRevoked, onCloseConfirmDialogmigrated
GrantorsReviewSubmissionModalsrc/features/grantors/components/portal/ReviewSubmissionModal.tsxInspect a submission and accept/reject/mark under reviewPortalSubmission, projectreview notes, pending actionisOpen, submission, projectNameonReviewed, onCloseReviewDialogmigrated
GrantorsCreateTokenModalsrc/features/grantors/components/portal/CreateTokenModal.tsxCreate and reveal a stakeholder access tokentoken form, generated tokenform fields, async submitproject and stakeholder contextcreate token callbacksAppModalmigrated
GrantorsGrantorEditorModalsrc/features/grantors/components/pages/grantors-page/GrantorEditorModal.tsxEdit grantor detailsgrantorlarge form stateselected grantorsave callbacksAppModalmigrated
UsersRoleAssignmentModalsrc/features/users/components/users/RoleAssignmentModal.tsxChange a user roleUser, role listselected role, submit loadingisOpen, user, roleOptionsonSubmit, onCloseAppModalmigrated
UsersUserActionsDialogsrc/features/users/components/users/UserActionsDialog.tsxPresent admin actions for a userUsernoneopen, user, permissions flagsrole/deactivate/reset/resend callbacksActionListDialogmigrated
UsersDeactivateUserModalsrc/features/users/components/DeactivateUserModal.tsxDeactivate or reactivate a user with consequences and notesUserconfirmation checkbox, notes, email toggle, loadingisOpen, useronDeactivate, onReactivate, onCloseAppModalmigrated
UsersInviteUserModalsrc/features/users/components/InviteUserModal.tsxInvite a new userinvite payloadform stateisOpeninvite callbackAppModalmigrated
UsersUserProfileModalsrc/features/users/components/profile/UserProfileModal.tsxEdit or inspect a user profileUserform and nested actionsselected usersave/delete/confirm actionsshared modal shell + ConfirmDialogmigrated shell
UsersContractors dialogssrc/features/users/components/contractors/**/*.tsx, src/features/users/components/contractors-dashboard/**/*.tsxContractor detail, upsert, delete flowscontractorvariescontractor selectioncreate/update/delete callbacksAppModal / ConfirmDialogmigrated
ExtensionsActivateModuleModalsrc/features/extensions/components/ExtensionModals.tsxActivate a moduleModuleManifestnoneisOpen, manifestonConfirm, onCloseConfirmDialogmigrated
ExtensionsDeactivateModuleModalsrc/features/extensions/components/ExtensionModals.tsxDeactivate a moduleModuleManifestnoneisOpen, manifestonConfirm, onCloseConfirmDialogmigrated
ExtensionsInstallModuleDialogsrc/features/extensions/components/InstallExtensionDialog.tsxChoose install mode and install a moduleModuleManifestasync action stateopen, manifest, pricing flagsonInstall, onOpenChangeDecisionDialogmigrated
ExtensionsUninstallModuleDialogsrc/features/extensions/components/UninstallExtensionDialog.tsxPreview data impact, optionally purge data, uninstall moduleModuleManifest, data statspurge checkbox, stats loadingopen, manifestonUninstall, onLoadStats, onOpenChangeConfirmDialogmigrated
ExtensionsExtensionDetailDrawersrc/features/extensions/components/ExtensionDetailDrawer.tsxInspect module detail and launch activate/deactivate flowsModuleManifestnoneisOpen, manifestaction callbacksAppModalmigrated

Long-Tail Wave

  • src/features/extensions/components/extensions-page/dialogs.tsx The 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.tsx The “Log Interaction” and “Link Contact to Grantor” flows are migrated to AppModal.
  • src/features/grantors/components/ReportingCalendarTab.tsx The “Add Reporting Deadline” flow is migrated to AppModal.
  • src/features/users/components/department-structure/DepartmentStructure.tsx The org-chart context dialog is migrated to the shared shell and shared info blocks.
  • src/features/users/components/department-structure/components/UsersAssignmentDialog.tsx The assign-users flow is migrated to AppModal.
  • src/features/users/components/pages/TeamPageContent.tsx The workload rebalance dialog is migrated to AppModal.
  • src/features/users/components/StaffAssignmentPlanner.tsx The assignment editor dialog is migrated to AppModal.
  • src/features/users/components/VolunteerManagement.tsx The add/edit volunteer and log-hours dialogs are migrated to AppModal; the old StrictMode portal workaround is removed.
  • src/features/users/components/EffortCertificationDashboard.tsx The certification review/sign dialog is migrated to AppModal.
  • src/features/users/components/CapacityDashboard.tsx The weekly pulse survey dialog is migrated to AppModal.
  • src/features/users/components/TrainingDashboard.tsx The add-training and requirements dialogs are migrated to AppModal.
  • src/features/users/components/UserDocumentsDashboard.tsx The upload and verify dialogs are migrated to AppModal.
  • src/features/users/components/ValuesManagement.tsx The value, behavior, and competency-link dialogs are migrated to AppModal.
  • src/features/users/org-chart/components/OrgChartVacancyDialog.tsx The vacancy creation dialog is migrated to AppModal.

Notable Outliers

  • src/features/users/components/DeactivateUserModal.tsx Carries meaningful consequence explanation, side effects, checkboxes, and notes. It should stay a rich AppModal, not be compressed into ConfirmDialog.
  • src/features/extensions/components/UninstallExtensionDialog.tsx Has 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.tsx Needs a body-first review surface with status, attachments, and notes. ReviewDialog fits better than a generic DecisionDialog.
  • src/features/users/components/profile/UserProfileModal.tsx Behaves 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 into AppModal.

Remaining Raw-Hit Check

  • A grep scan for DialogContent, AlertDialogContent, and the legacy Modal path 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 UninstallModuleDialogContent and UsersAssignmentDialogContent, not raw dialog primitives.

Rollout Order

  1. Portal access and submission review flows
  2. User admin actions and role changes
  3. User lifecycle actions such as deactivate/reactivate
  4. Extension activate/install/uninstall flows
  5. Long-tail form/detail modals still on legacy Modal
  6. Direct Dialog usage that has become product UI rather than low-level composition

Deprecation Targets

  • src/hooks/useConfirmDialog.tsx should remain only as a compatibility shim over the new modal system
  • feature-level hand-built DialogHeader/DialogFooter layouts should be migrated to modal-system
  • new product flows should not be added directly on alert-dialog