blaeck 0.4.0

A component-based terminal UI framework for Rust
Documentation
use blaeck::prelude::*;

pub fn build_ui() -> Element {
    Element::node::<Box>(
        BoxProps {
            flex_direction: FlexDirection::Column,
            padding: 1.0,
            gap: 1.0,
            ..Default::default()
        },
        vec![
            Element::node::<Text>(
                TextProps {
                    content: "Modal/Dialog Demo".into(),
                    bold: true,
                    color: Some(Color::Cyan),
                    ..Default::default()
                },
                vec![],
            ),
            alert(
                "Information",
                "This is an informational message.\nIt can span multiple lines.",
            ),
            confirm_modal(
                "Confirm Action",
                "Are you sure you want to proceed?\nThis action cannot be undone.",
            ),
            error_modal(
                "Error Occurred",
                "Failed to connect to the server.\nPlease check your network.",
            ),
            success_modal("Success!", "Your changes have been saved."),
            Element::node::<Modal>(
                ModalProps::new("Custom Dialog")
                    .body("This is a custom modal with\nmultiple buttons and styling.")
                    .style(ModalStyle::Default)
                    .border_style(BorderStyle::Double)
                    .buttons(vec![
                        ModalButton::new("Help").color(Color::Blue),
                        ModalButton::cancel(),
                        ModalButton::new("Save").color(Color::Green).primary(),
                    ])
                    .min_width(40)
                    .center_title(true),
                vec![],
            ),
        ],
    )
}