Polish prompt library UX (#12647)
This could still use some improvement UI-wise but the user experience should be a lot better. - [x] Show in "Window" application menu - [x] Load prompt as it's selected in the picker - [x] Refocus picker on `esc` - [x] When creating a new prompt, if a new prompt already exists and is unedited, activate it instead - [x] Add `/default` command - [x] Evaluate /commands on prompt insertion - [x] Autocomplete /commands (but don't evaluate) during prompt editing - [x] Show token count using the settings model, right-aligned in the editor - [x] Picker - [x] Sorted alpha - [x] 2 sublists - Default - Empty state: Star a prompt to add it to your default prompt - Otherwise show prompts with star on hover - All - Move prompts with star on hover Release Notes: - N/A
This commit is contained in:
parent
e4bb666eab
commit
c5b22eee2d
22 changed files with 716 additions and 358 deletions
|
@ -192,6 +192,7 @@ pub enum IconName {
|
|||
WholeWord,
|
||||
XCircle,
|
||||
ZedAssistant,
|
||||
ZedAssistantFilled,
|
||||
ZedXCopilot,
|
||||
}
|
||||
|
||||
|
@ -315,6 +316,7 @@ impl IconName {
|
|||
IconName::WholeWord => "icons/word_search.svg",
|
||||
IconName::XCircle => "icons/error.svg",
|
||||
IconName::ZedAssistant => "icons/zed_assistant.svg",
|
||||
IconName::ZedAssistantFilled => "icons/zed_assistant_filled.svg",
|
||||
IconName::ZedXCopilot => "icons/zed_x_copilot.svg",
|
||||
IconName::ArrowUpFromLine => "icons/arrow_up_from_line.svg",
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ pub struct ListSubHeader {
|
|||
label: SharedString,
|
||||
start_slot: Option<IconName>,
|
||||
inset: bool,
|
||||
selected: bool,
|
||||
}
|
||||
|
||||
impl ListSubHeader {
|
||||
|
@ -14,6 +15,7 @@ impl ListSubHeader {
|
|||
label: label.into(),
|
||||
start_slot: None,
|
||||
inset: false,
|
||||
selected: false,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -28,12 +30,22 @@ impl ListSubHeader {
|
|||
}
|
||||
}
|
||||
|
||||
impl Selectable for ListSubHeader {
|
||||
fn selected(mut self, selected: bool) -> Self {
|
||||
self.selected = selected;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
impl RenderOnce for ListSubHeader {
|
||||
fn render(self, _cx: &mut WindowContext) -> impl IntoElement {
|
||||
fn render(self, cx: &mut WindowContext) -> impl IntoElement {
|
||||
h_flex().flex_1().w_full().relative().py_1().child(
|
||||
div()
|
||||
.h_6()
|
||||
.when(self.inset, |this| this.px_2())
|
||||
.when(self.selected, |this| {
|
||||
this.bg(cx.theme().colors().ghost_element_selected)
|
||||
})
|
||||
.flex()
|
||||
.flex_1()
|
||||
.w_full()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue