pub use crate::ui::activity_heatmap::{
activity_day_key, activity_day_key_local, activity_day_key_with_offset,
build_activity_heatmap_grid, build_heatmap_month_row, build_visible_heatmap_month_row,
current_day_key_local, current_day_key_utc, heatmap_intensity_level, heatmap_max_count,
heatmap_month_markers, visible_heatmap_week_count,
};
pub use crate::ui::diff_util::{
DiffLine, DiffLineKind, diff_line_change_totals, diff_view_max_scroll_offset,
max_diff_line_number, parse_diff_lines, parse_hunk_header, selected_diff_lines,
wrap_diff_content,
};
pub use crate::ui::layout::{
CHAT_INPUT_MAX_VISIBLE_LINES, QuestionPanelAreas, bottom_pinned_scroll_offset,
calculate_input_height, calculate_input_viewport, centered_content_rect,
centered_horizontal_layout, compute_input_layout, first_table_column_width,
input_cursor_position, move_input_cursor_down, move_input_cursor_up, overlay_area_above,
panel_inner_width, placeholder_cursor_position, question_options_height, question_panel_areas,
question_panel_layout, question_panel_reserved_height, suggestion_dropdown_height,
};
pub(crate) use crate::ui::task_roadmap::{roadmap_task_lines, roadmap_task_max_scroll_offset};
pub use crate::ui::text_util::{
format_duration_compact, format_token_count, inline_text, split_trailing_line_block,
truncate_spans_with_ellipsis, truncate_with_ellipsis, wrap_lines, wrap_styled_line,
};