diff --git a/crates/op-editor-ui/src/widgets/ai_chat_transcript_tools.rs b/crates/op-editor-ui/src/widgets/ai_chat_transcript_tools.rs index 45b08663c..d195e293f 100644 --- a/crates/op-editor-ui/src/widgets/ai_chat_transcript_tools.rs +++ b/crates/op-editor-ui/src/widgets/ai_chat_transcript_tools.rs @@ -58,7 +58,7 @@ impl ToolLevel { Self::Create => Icon::Plus, Self::Modify => Icon::Pencil, Self::Delete => Icon::Trash, - Self::Orchestrate => Icon::Settings, + Self::Orchestrate => Icon::Wrench, } } } @@ -533,3 +533,15 @@ fn draw_line( ); cx.backend.draw_text(&layout, Point2D::new(x, baseline_y)); } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn orchestrate_tool_level_uses_ts_wrench_icon() { + let wrench = Icon::from_name("wrench").expect("wrench icon should be available"); + + assert_eq!(ToolLevel::Orchestrate.icon(), wrench); + } +} diff --git a/crates/op-editor-ui/src/widgets/icons.rs b/crates/op-editor-ui/src/widgets/icons.rs index 218143af0..8bb49b8a9 100644 --- a/crates/op-editor-ui/src/widgets/icons.rs +++ b/crates/op-editor-ui/src/widgets/icons.rs @@ -154,6 +154,8 @@ pub enum Icon { Image, /// Lucide `settings.svg` — used for the System settings tab. Settings, + /// Lucide `wrench.svg` — used for delegated/orchestrated tool cards. + Wrench, /// Lucide `save.svg` — file save / save-as menu rows. Save, /// Lucide `download.svg` — export image menu row. @@ -307,6 +309,7 @@ impl Icon { Icon::Terminal => TERMINAL, Icon::Image => IMAGE, Icon::Settings => SETTINGS, + Icon::Wrench => WRENCH, Icon::Save => SAVE, Icon::Download => DOWNLOAD, Icon::FileText => FILE_TEXT, @@ -402,6 +405,7 @@ impl Icon { "user" | "person" => Icon::User, "search" => Icon::Search, "settings" => Icon::Settings, + "wrench" | "tool" => Icon::Wrench, "image" | "image-icon" => Icon::Image, "github" => Icon::Github, "globe" => Icon::Globe, diff --git a/crates/op-editor-ui/src/widgets/icons_data.rs b/crates/op-editor-ui/src/widgets/icons_data.rs index ff7abfe9c..3a932c0a2 100644 --- a/crates/op-editor-ui/src/widgets/icons_data.rs +++ b/crates/op-editor-ui/src/widgets/icons_data.rs @@ -709,3 +709,8 @@ pub(super) const MILESTONE: &[&str] = &[ "M12 3v3", "M4 6a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h13a2 2 0 0 0 1.152-.365l3.424-2.317a1 1 0 0 0 0-1.635l-3.424-2.318A2 2 0 0 0 17 6z", ]; + +/// lucide `wrench` — used by TS for delegated/orchestrated tool cards. +pub(super) const WRENCH: &[&str] = &[ + "M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94z", +]; diff --git a/crates/op-editor-ui/src/widgets/icons_tests.rs b/crates/op-editor-ui/src/widgets/icons_tests.rs index c47402e82..c7160b29d 100644 --- a/crates/op-editor-ui/src/widgets/icons_tests.rs +++ b/crates/op-editor-ui/src/widgets/icons_tests.rs @@ -102,6 +102,7 @@ fn every_variant_paints_at_least_one_primitive() { Icon::Unlink, Icon::Check, Icon::ArrowUpRight, + Icon::Wrench, ] { let b = paint_one(icon); assert!(b.paths > 0, "{:?} drew nothing", icon); @@ -152,6 +153,7 @@ fn first_party_icon_font_names_all_resolve() { "focus", "chart-line", "settings-2", + "wrench", ] { assert!( Icon::from_name(name).is_some(),