61 lines
1.8 KiB
Rust
61 lines
1.8 KiB
Rust
use gpui::{Context, FontWeight, IntoElement, Render, Window};
|
|
use ui::{prelude::*, tooltip_container};
|
|
|
|
pub struct BurnModeTooltip {
|
|
selected: bool,
|
|
}
|
|
|
|
impl BurnModeTooltip {
|
|
pub fn new() -> Self {
|
|
Self { selected: false }
|
|
}
|
|
|
|
pub fn selected(mut self, selected: bool) -> Self {
|
|
self.selected = selected;
|
|
self
|
|
}
|
|
}
|
|
|
|
impl Render for BurnModeTooltip {
|
|
fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
|
|
let (icon, color) = if self.selected {
|
|
(IconName::ZedBurnModeOn, Color::Error)
|
|
} else {
|
|
(IconName::ZedBurnMode, Color::Default)
|
|
};
|
|
|
|
let turned_on = h_flex()
|
|
.h_4()
|
|
.px_1()
|
|
.border_1()
|
|
.border_color(cx.theme().colors().border)
|
|
.bg(cx.theme().colors().text_accent.opacity(0.1))
|
|
.rounded_sm()
|
|
.child(
|
|
Label::new("ON")
|
|
.size(LabelSize::XSmall)
|
|
.weight(FontWeight::SEMIBOLD)
|
|
.color(Color::Accent),
|
|
);
|
|
|
|
let title = h_flex()
|
|
.gap_1p5()
|
|
.child(Icon::new(icon).size(IconSize::Small).color(color))
|
|
.child(Label::new("Burn Mode"))
|
|
.when(self.selected, |title| title.child(turned_on));
|
|
|
|
tooltip_container(window, cx, |this, _, _| {
|
|
this
|
|
.child(title)
|
|
.child(
|
|
div()
|
|
.max_w_64()
|
|
.child(
|
|
Label::new("Enables models to use large context windows, unlimited tool calls, and other capabilities for expanded reasoning.")
|
|
.size(LabelSize::Small)
|
|
.color(Color::Muted)
|
|
)
|
|
)
|
|
})
|
|
}
|
|
}
|