26 t.
panel_bg_darker = ImVec4(theme.window_bg.red * 0.8f, theme.window_bg.green * 0.8f,
27 theme.window_bg.blue * 0.8f, 1.0f);
114 return g_current_theme;
123 ImGui::PushStyleColor(ImGuiCol_ChildBg, theme.panel_bg_color);
124 ImGui::PushStyleColor(ImGuiCol_Border, theme.panel_border_color);
125 ImGui::PushStyleVar(ImGuiStyleVar_ChildRounding, 4.0f);
126 ImGui::PushStyleVar(ImGuiStyleVar_ChildBorderSize, 1.0f);
130 ImGui::PopStyleVar(2);
131 ImGui::PopStyleColor(2);
135 const ImVec4& color) {
136 ImGui::PushStyleColor(ImGuiCol_Text, color);
137 ImGui::Text(
"%s %s", icon, label);
138 ImGui::PopStyleColor();
144 ImVec4 color = active ? theme.status_active : theme.status_inactive;
145 ImGui::PushStyleColor(ImGuiCol_Text, color);
148 ImGui::Text(
"%s", label);
149 ImGui::PopStyleColor();
154 ImVec4 color = theme.provider_mock;
156 if (strcmp(provider,
"ollama") == 0) {
157 color = theme.provider_ollama;
158 }
else if (strcmp(provider,
"gemini") == 0) {
159 color = theme.provider_gemini;
160 }
else if (strcmp(provider,
"openai") == 0) {
161 color = theme.provider_openai;
164 ImGui::PushStyleColor(ImGuiCol_Text, color);
165 ImGui::Text(
"[%s]", provider);
166 ImGui::PopStyleColor();
175 bg_color = theme.status_success;
178 bg_color = theme.status_warning;
181 bg_color = theme.status_error;
184 bg_color = theme.accent_color;
188 bg_color = theme.panel_bg_darker;
192 ImGui::PushStyleColor(ImGuiCol_Button, bg_color);
193 ImGui::PushStyleColor(ImGuiCol_ButtonHovered, bg_color);
194 ImGui::PushStyleColor(ImGuiCol_ButtonActive, bg_color);
195 ImGui::SmallButton(text);
196 ImGui::PopStyleColor(3);
200 ImGui::Dummy(ImVec2(0.0f, amount));
205 ImGui::Dummy(ImVec2(amount, 0.0f));
209bool StyledButton(
const char* label,
const ImVec4& color,
const ImVec2& size) {
210 ImGui::PushStyleColor(ImGuiCol_Button, color);
211 ImGui::PushStyleColor(ImGuiCol_ButtonHovered,
212 ImVec4(color.x * 1.2f, color.y * 1.2f, color.z * 1.2f,
214 ImGui::PushStyleColor(ImGuiCol_ButtonActive,
215 ImVec4(color.x * 0.8f, color.y * 0.8f, color.z * 0.8f,
217 bool clicked = ImGui::Button(label, size);
218 ImGui::PopStyleColor(3);
223 ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0, 0, 0, 0));
224 bool clicked = ImGui::Button(icon);
225 ImGui::PopStyleColor();
227 if (tooltip && ImGui::IsItemHovered()) {
228 ImGui::SetTooltip(
"%s", tooltip);
const Theme & GetCurrentTheme() const
static ThemeManager & Get()
void RenderStatusIndicator(const char *label, bool active)
bool StyledButton(const char *label, const ImVec4 &color, const ImVec2 &size)
void HorizontalSpacing(float amount)
const AgentUITheme & GetTheme()
void RenderSectionHeader(const char *icon, const char *label, const ImVec4 &color)
void RenderProviderBadge(const char *provider)
void VerticalSpacing(float amount)
void StatusBadge(const char *text, ButtonColor color)
bool IconButton(const char *icon, const char *tooltip)
ImVec4 ConvertColorToImVec4(const Color &color)
Centralized theme colors for Agent UI components.
ImVec4 dungeon_room_border
ImVec4 collaboration_active
ImVec4 dungeon_selection_handle
ImVec4 dungeon_outline_layer1
ImVec4 dungeon_room_border_dark
ImVec4 dungeon_selection_primary
ImVec4 system_message_color
ImVec4 dungeon_outline_layer0
static AgentUITheme FromCurrentTheme()
ImVec4 dungeon_sprite_layer0
ImVec4 text_secondary_color
ImVec4 dungeon_object_chest
ImVec4 dungeon_object_pot
ImVec4 text_secondary_gray
ImVec4 dungeon_selection_secondary
ImVec4 agent_message_color
ImVec4 dungeon_object_wall
ImVec4 dungeon_grid_cell_border
ImVec4 dungeon_grid_cell_selected
ImVec4 dungeon_outline_layer2
ImVec4 panel_border_color
ImVec4 user_message_color
ImVec4 dungeon_drag_preview_outline
ImVec4 text_warning_yellow
ImVec4 text_success_green
ImVec4 dungeon_object_door
ImVec4 dungeon_object_decoration
ImVec4 dungeon_sprite_layer1
ImVec4 collaboration_inactive
ImVec4 dungeon_drag_preview
ImVec4 command_text_color
ImVec4 dungeon_object_stairs
ImVec4 dungeon_object_floor
ImVec4 dungeon_object_default
ImVec4 dungeon_grid_cell_highlight
ImVec4 dungeon_sprite_layer2
ImVec4 dungeon_selection_pulsing