cocoanut 0.2.3

A minimal, declarative macOS GUI framework for Rust
//! Declarative macOS AppKit UI from Rust (`View` trees, `State`, events).
//!
//! ```
//! use cocoanut::prelude::*;
//!
//! let ui = View::vstack()
//!     .child(View::text("Hello").bold())
//!     .child(View::button("OK").on_click_fn(|| {}));
//! ```
//!
//! Unit tests compile the library with `cfg(test)` and lightweight AppKit stubs; use `cargo test`.

#![allow(unexpected_cfgs)]
#![cfg_attr(test, allow(clippy::missing_safety_doc))]

pub mod app;
pub mod async_support;
pub mod component;
pub mod delegate;
pub mod error;
pub mod event;
pub mod layout;
pub mod menu;
pub mod native;
pub mod renderer;
pub mod state;
pub mod style;
pub mod view;

pub use error::{CocoanutError, Result};

pub mod prelude {
    pub use crate::app::{App, AppBuilder, Appearance, app, set_appearance};
    pub use crate::async_support::{block_on, on_click_async, spawn};
    pub use crate::component::{Component, ComponentState};
    pub use crate::delegate::{
        TableDataSource, TextFieldDelegate, VectorTableDataSource, register_table_data_source,
        register_text_field_delegate,
    };
    pub use crate::error::{CocoanutError, Result};
    pub use crate::event::{self, CallbackId};
    pub use crate::layout::{
        ConstraintDescriptor, LayoutAttribute, LayoutPriority, LayoutRelation, apply_constraints,
        constraints, intrinsic_content_size, set_uses_auto_layout,
    };
    pub use crate::menu::{Menu, MenuItem, default_menus, install_menus};
    pub use crate::native::{animation, pasteboard, responder, view_properties, window};
    pub use crate::state::{Binding, State, counter_state, state};
    pub use crate::style::{Color, Style, Styled, color, font, style};
    pub use crate::view::{
        Alignment, KeyModifiers, Orientation, ScrollDirection, View, ViewDesc, ViewKind, ViewStyle,
        ViewTag,
    };

    pub use crate::component;
    pub use crate::stateful_component;
}