Initial public release of Warp.
Repo-Sync-Origin: warpdotdev/warp-internal@12af1d983b
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
use warpui::{
|
||||
elements::{MouseStateHandle, Text},
|
||||
Element,
|
||||
};
|
||||
|
||||
use crate::appearance::Appearance;
|
||||
use crate::terminal::alias::AliasedCommand;
|
||||
use crate::terminal::view::TerminalAction;
|
||||
|
||||
use super::{
|
||||
render_inline_block_list_banner, InlineBannerButtonState, InlineBannerCloseButton,
|
||||
InlineBannerContent, InlineBannerStyle, InlineBannerTextButton, InlineBannerTextButtonVariant,
|
||||
};
|
||||
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub enum AliasExpansionBannerAction {
|
||||
Enable,
|
||||
Dismiss,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum AliasExpansionBanner {
|
||||
#[default]
|
||||
Closed,
|
||||
Open {
|
||||
state: AliasExpansionBannerState,
|
||||
},
|
||||
}
|
||||
|
||||
pub struct AliasExpansionBannerState {
|
||||
pub id: usize,
|
||||
pub aliased_command: AliasedCommand,
|
||||
pub yes_button_mouse_state: MouseStateHandle,
|
||||
pub no_button_mouse_state: MouseStateHandle,
|
||||
}
|
||||
|
||||
pub fn render_alias_expansion_banner(
|
||||
state: &AliasExpansionBannerState,
|
||||
appearance: &Appearance,
|
||||
) -> Box<dyn Element> {
|
||||
let active_ui_text_color = appearance.theme().active_ui_text_color();
|
||||
let accent_color = appearance.theme().accent().into_solid();
|
||||
|
||||
let buttons = vec![InlineBannerTextButton {
|
||||
text: "Enable alias expansion".to_owned(),
|
||||
text_color: active_ui_text_color.into_solid(),
|
||||
button_state: InlineBannerButtonState {
|
||||
on_click_event: TerminalAction::AliasExpansionBanner(
|
||||
AliasExpansionBannerAction::Enable,
|
||||
),
|
||||
mouse_state_handle: state.yes_button_mouse_state.clone(),
|
||||
},
|
||||
font: Default::default(),
|
||||
position_id: None,
|
||||
variant: InlineBannerTextButtonVariant::Primary,
|
||||
}];
|
||||
|
||||
let close_button = InlineBannerCloseButton(InlineBannerButtonState {
|
||||
on_click_event: TerminalAction::AliasExpansionBanner(AliasExpansionBannerAction::Dismiss),
|
||||
mouse_state_handle: state.no_button_mouse_state.clone(),
|
||||
});
|
||||
|
||||
let content = vec![
|
||||
Text::new_inline(
|
||||
" | ",
|
||||
appearance.monospace_font_family(),
|
||||
appearance.monospace_font_size(),
|
||||
)
|
||||
.with_color(active_ui_text_color.with_opacity(20).into_solid()),
|
||||
Text::new_inline(
|
||||
state.aliased_command.alias.to_string(),
|
||||
appearance.monospace_font_family(),
|
||||
appearance.monospace_font_size(),
|
||||
)
|
||||
.with_color(accent_color),
|
||||
Text::new_inline(
|
||||
" --> ",
|
||||
appearance.monospace_font_family(),
|
||||
appearance.monospace_font_size(),
|
||||
)
|
||||
.with_color(active_ui_text_color.with_opacity(50).into_solid()),
|
||||
Text::new_inline(
|
||||
state.aliased_command.alias_value.clone(),
|
||||
appearance.monospace_font_family(),
|
||||
appearance.monospace_font_size(),
|
||||
)
|
||||
.with_color(accent_color),
|
||||
];
|
||||
|
||||
render_inline_block_list_banner(
|
||||
InlineBannerStyle::VeryLowPriority,
|
||||
appearance,
|
||||
InlineBannerContent {
|
||||
title: "Warp can auto-expand aliases.".into(),
|
||||
buttons,
|
||||
content: Some(content),
|
||||
close_button: Some(close_button),
|
||||
header_icon: Some(super::InlineBannerIcon {
|
||||
asset_path: "bundled/svg/info.svg",
|
||||
aspect_ratio: 1.32,
|
||||
..Default::default()
|
||||
}),
|
||||
vertical_align_title_content: false,
|
||||
},
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user