From 05b48e88779b1fe76f13820ca18dddaed419e6ee Mon Sep 17 00:00:00 2001 From: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Date: Fri, 10 Jan 2025 19:20:20 -0300 Subject: [PATCH] zeta: Add tooltip to completion modal list items (#22987) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is an extra visual aid to make assessing the status of each list item faster/easier. Screenshot 2025-01-10 at 7 01 22 PM Release Notes: - N/A --- crates/zeta/src/rate_completion_modal.rs | 37 +++++++++++++++--------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/crates/zeta/src/rate_completion_modal.rs b/crates/zeta/src/rate_completion_modal.rs index cd21a10845..c733f684bd 100644 --- a/crates/zeta/src/rate_completion_modal.rs +++ b/crates/zeta/src/rate_completion_modal.rs @@ -550,27 +550,38 @@ impl Render for RateCompletionModal { let rated = self.zeta.read(cx).is_completion_rated(completion.id); + let (icon_name, icon_color, tooltip_text) = match (rated, completion.edits.is_empty()) { + (true, _) => (IconName::Check, Color::Success, "Rated Completion"), + (false, true) => (IconName::File, Color::Muted, "No Edits Produced"), + (false, false) => (IconName::FileDiff, Color::Accent, "Edits Available"), + }; + ListItem::new(completion.id) .inset(true) .spacing(ListItemSpacing::Sparse) .focused(index == self.selected_index) .toggle_state(selected) - .start_slot(if rated { - Icon::new(IconName::Check).color(Color::Success).size(IconSize::Small) - } else if completion.edits.is_empty() { - Icon::new(IconName::File).color(Color::Muted).size(IconSize::Small) - } else { - Icon::new(IconName::FileDiff).color(Color::Accent).size(IconSize::Small) - }) .child( - v_flex() - .pl_1p5() - .child(Label::new(completion.path.to_string_lossy().to_string()).size(LabelSize::Small)) - .child(Label::new(format!("{} ago, {:.2?}", format_time_ago(completion.response_received_at.elapsed()), completion.latency())) - .color(Color::Muted) - .size(LabelSize::XSmall) + h_flex() + .id("completion-content") + .gap_2p5() + .child( + Icon::new(icon_name) + .color(icon_color) + .size(IconSize::Small) + ) + .child( + v_flex() + .child(Label::new(completion.path.to_string_lossy().to_string()).size(LabelSize::Small)) + .child(Label::new(format!("{} ago, {:.2?}", format_time_ago(completion.response_received_at.elapsed()), completion.latency())) + .color(Color::Muted) + .size(LabelSize::XSmall) + ) ) ) + .tooltip(move |cx| { + Tooltip::text(tooltip_text, cx) + }) .on_click(cx.listener(move |this, _, cx| { this.select_completion(Some(completion.clone()), true, cx); }))