#[macro_export]
macro_rules! actions {
($namespace:path, [ $( $(#[$attr:meta])* $name:ident),* $(,)? ]) => {
$(
#[derive(
::std::clone::Clone,
::std::cmp::PartialEq,
::std::default::Default,
::std::fmt::Debug,
$crate::Action
)]
#[action(namespace = $namespace)]
$(#[$attr])*
pub struct $name;
)*
};
([ $( $(#[$attr:meta])* $name:ident),* $(,)? ]) => {
$(
#[derive(
::std::clone::Clone,
::std::cmp::PartialEq,
::std::default::Default,
::std::fmt::Debug,
$crate::Action
)]
$(#[$attr])*
pub struct $name;
)*
};
}
// Public facade decision — 2026-09-08:
pub use ::gpui::*;
#[doc(hidden)]
pub use ::gpui;
#[cfg(feature = "test-support")]
pub mod test;
pub use ::gpui_base as base;
#[cfg(not(any(target_os = "ios", target_os = "android")))]
pub use ::gpui_platform as platform;
#[cfg(target_family = "wasm")]
pub use ::gpui_web as web;
pub use gpui_base::is_mobile;
#[cfg(feature = "component")]
pub use ::gpui_component as component;
#[cfg(feature = "assets")]
pub use ::gpui_kit_assets as assets;
pub fn open_window<V: Render>(
options: WindowOptions,
cx: &mut App,
build: impl FnOnce(&mut Window, &mut App) -> Entity<V>,
) -> Result<(AnyWindowHandle, Entity<V>)> {
let mut built = None;
let window = cx.open_window(options, |window, cx| {
let view = build(window, cx);
built = Some(view.clone());
cx.new(|cx| base::Root::new(view, window, cx))
})?;
Ok((
window.into(),
built.expect("open_window ran its build closure"),
))
}
#[cfg(not(any(target_os = "ios", target_os = "android")))]
pub use ::gpui_platform::application;
pub fn init(cx: &mut App) {
#[cfg(feature = "component")]
gpui_component::init(cx);
#[cfg(not(feature = "component"))]
gpui_base::init(cx);
}
pub use gpui_base::TestSupportExt;