use eframe::egui::{self, RichText};
use crate::ui::theme::ThemeColors;
pub struct HeaderActions {
pub add_app_clicked: bool,
pub export_clicked: bool,
pub import_clicked: bool,
}
impl Default for HeaderActions {
fn default() -> Self {
Self {
add_app_clicked: false,
export_clicked: false,
import_clicked: false,
}
}
}
pub fn render_header(ui: &mut egui::Ui, search_filter: &mut String) -> HeaderActions {
let mut actions = HeaderActions::default();
ui.horizontal(|ui| {
ui.heading(RichText::new("🌈").size(32.0));
ui.add_space(8.0);
ui.vertical(|ui| {
ui.add_space(2.0);
ui.label(
RichText::new("Iris")
.size(24.0)
.strong()
.color(ThemeColors::TEXT_PRIMARY),
);
ui.label(
RichText::new("Mensageira dos Devs")
.size(11.0)
.color(egui::Color32::from_rgb(140, 140, 150)),
);
});
ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| {
let add_btn = egui::Button::new(
RichText::new("➕ Nova Aplicação")
.size(14.0)
.color(ThemeColors::TEXT_PRIMARY),
)
.fill(ThemeColors::BTN_PRIMARY)
.rounding(10.0)
.min_size(egui::vec2(140.0, 38.0));
if ui.add(add_btn).clicked() {
actions.add_app_clicked = true;
}
ui.add_space(8.0);
ui.menu_button(
RichText::new("⚙")
.size(16.0)
.color(ThemeColors::TEXT_SECONDARY),
|ui| {
ui.set_min_width(160.0);
if ui.button("📤 Exportar configurações").clicked() {
actions.export_clicked = true;
ui.close_menu();
}
if ui.button("📥 Importar configurações").clicked() {
actions.import_clicked = true;
ui.close_menu();
}
ui.separator();
ui.label(
RichText::new("Compartilhe suas configurações!")
.size(10.0)
.color(egui::Color32::from_rgb(120, 120, 130))
);
}
);
ui.add_space(16.0);
egui::Frame::none()
.fill(ThemeColors::BG_INPUT)
.rounding(10.0)
.inner_margin(egui::Margin::symmetric(12.0, 8.0))
.show(ui, |ui| {
ui.horizontal(|ui| {
ui.label(
RichText::new("🔍")
.size(14.0)
.color(egui::Color32::from_rgb(120, 120, 130)),
);
ui.add(
egui::TextEdit::singleline(search_filter)
.desired_width(180.0)
.frame(false)
.hint_text(
RichText::new("Buscar aplicações...")
.color(ThemeColors::TEXT_MUTED)
),
);
});
});
});
});
actions
}