use ratatui::{
layout::{Constraint, Direction, Layout, Rect},
Frame,
};
use crate::app::App;
use super::super::theme::get_theme_colors;
use super::social_components::*;
pub fn render_user_search_modal_refactored(frame: &mut Frame, app: &mut App, area: Rect) {
let theme = get_theme_colors(app);
let config = SocialModalConfig {
title: " Search Users ",
..Default::default()
};
let inner = create_modal_container(frame, area, &config, &theme);
if app.user_search_state.loading {
render_loading_state(frame, inner, "Searching...", &theme);
return;
}
let chunks = Layout::default()
.direction(Direction::Vertical)
.constraints([
Constraint::Length(3), Constraint::Min(0), Constraint::Length(3), ])
.split(inner);
let search_config = SearchBarConfig {
query: &app.user_search_state.search_query,
is_active: true, placeholder: "Type to search users...",
};
render_search_bar(frame, chunks[0], &search_config, &theme);
let results = &app.user_search_state.search_results;
if results.is_empty() {
let empty_msg = if app.user_search_state.search_query.is_empty() {
"Start typing to search for users"
} else if app.user_search_state.search_query.len() < 2 {
"Type at least 2 characters to search"
} else {
"No users found matching your search"
};
render_empty_state(frame, chunks[1], empty_msg, &theme);
} else {
impl UserListItem for crate::app::UserSearchResult {
fn username(&self) -> &str {
&self.username
}
}
let list_config = UserListConfig {
selected_index: app.user_search_state.selected_index,
show_stats: false, };
render_user_list(frame, chunks[1], results, &list_config, &theme);
}
let shortcuts = "↑/↓/j/k: Navigate | Enter: View Profile | d: Send DM | Esc: Close";
render_modal_footer(frame, chunks[2], shortcuts, &theme);
}