Skip to main content

wisp/app/
navigation.rs

1use crate::screens::git_diff::GitDiffScreen;
2use crate::screens::plan_review::PlanReviewScreen;
3use crate::settings::overlay::SettingsOverlay;
4use crate::surfaces::modal::ElicitationModal;
5use crate::surfaces::session_picker::SessionPicker;
6use crate::surfaces::workspace_picker::WorkspacePicker;
7
8/// The full-screen destinations in the application.
9pub enum Route {
10    Conversation,
11    GitReview(Box<GitDiffScreen>),
12    PlanReview(Box<PlanReviewScreen>),
13}
14
15impl Route {
16    pub fn is_fullscreen(&self) -> bool {
17        !matches!(self, Self::Conversation)
18    }
19}
20
21/// The transient destination above the active route. Only one overlay receives
22/// normal input at a time.
23pub enum Overlay {
24    Settings(Box<SettingsOverlay>),
25    Sessions(SessionPicker),
26    Workspaces(WorkspacePicker),
27    Elicitation(ElicitationModal),
28}