pub mod activity_bar;
pub mod backend;
pub mod board;
pub mod button;
pub(crate) mod caret_blink;
mod cg;
pub mod chart;
pub mod command_center;
pub mod command_line;
pub mod completions;
pub mod context_menu;
pub mod data_table;
pub mod date_picker;
pub mod dialog;
pub mod diff_view;
pub mod drop_overlay;
pub mod editor;
pub mod events;
pub mod form;
pub mod headless;
pub mod image;
pub mod list;
pub mod menu_bar;
pub(crate) mod menu_bar_install;
pub mod message_list;
pub mod minimap;
pub mod multi_section_view;
pub mod palette;
pub mod panel;
pub mod pipeline_view;
pub mod progress;
pub mod radio_group;
pub mod rich_text_popup;
mod run;
pub mod scrollbar;
pub mod services;
pub mod shell_runner;
pub mod sidebar_panel;
pub mod spinner;
pub mod split;
pub mod split_tree;
pub mod status_bar;
pub mod switch;
mod surface;
pub mod tab_bar;
pub mod terminal;
pub mod testing;
pub mod text;
pub mod text_display;
pub mod text_input;
pub(crate) mod text_selection;
pub mod toast;
pub mod toolbar;
pub mod tooltip;
pub mod tree;
pub(crate) mod tray;
pub use activity_bar::{draw_activity_bar, draw_activity_bar_with_style, mac_activity_bar_layout};
pub use backend::MacBackend;
pub use board::mac_board_layout;
pub use button::mac_button_layout;
pub use chart::mac_chart_layout;
pub use command_center::{draw_command_center, mac_command_center_layout};
pub use command_line::draw_command_line;
pub use completions::draw_completions;
pub use context_menu::draw_context_menu;
pub use data_table::{draw_data_table, mac_data_table_layout};
pub use dialog::draw_dialog;
pub use editor::draw_editor;
pub use form::{draw_settings_chrome, mac_form_layout};
pub use list::{draw_list, mac_list_layout};
pub use menu_bar::{draw_menu_bar, mac_menu_bar_layout};
pub use message_list::draw_message_list;
pub use minimap::mac_minimap_layout;
pub use multi_section_view::{draw_multi_section_view, mac_msv_layout, mac_msv_metrics};
pub use palette::{draw_palette, mac_palette_layout};
pub use panel::mac_panel_layout;
pub use pipeline_view::mac_pipeline_view_layout;
pub use progress::mac_progress_layout;
pub use radio_group::mac_radio_group_layout;
pub use rich_text_popup::draw_rich_text_popup;
pub use run::{run, run_with, MacRunner, RunConfig, StepOutcome};
pub use services::MacPlatformServices;
pub use sidebar_panel::mac_sidebar_panel_layout;
pub use spinner::{draw_spinner, mac_spinner_layout};
pub use split::mac_split_layout;
pub use split_tree::mac_split_tree_layout;
pub use status_bar::mac_status_bar_layout;
pub use switch::mac_switch_layout;
pub use tab_bar::{draw_tab_bar, mac_tab_bar_layout};
pub use text_display::mac_text_display_layout;
pub use toast::mac_toast_stack_layout;
pub use toolbar::{draw_toolbar, draw_toolbar_with_options, mac_toolbar_layout};
pub use tooltip::{draw_tooltip, draw_tooltip_with_chrome};
pub use tree::{draw_tree, mac_tree_layout};
#[cfg(test)]
static REAL_PASTEBOARD_LOCK: std::sync::Mutex<()> = std::sync::Mutex::new(());
#[cfg(test)]
pub(crate) fn lock_real_pasteboard() -> std::sync::MutexGuard<'static, ()> {
REAL_PASTEBOARD_LOCK
.lock()
.unwrap_or_else(|poisoned| poisoned.into_inner())
}