1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//! Extensible zone and plugin rendering system for [ratatui](https://ratatui.rs).
//!
//! `ratatui-zonekit` lets plugins **own** UI zones in a ratatui application.
//! Plugins declare what they need (tabs, panels, overlays), and the host
//! application decides where and how to render them.
//!
//! # Design Principles
//!
//! - **Request, don't mutate**: plugins request zones, the host approves.
//! - **Safe delegation**: plugin renders are wrapped in `catch_unwind`.
//! - **Theme-agnostic**: works with any styling system (themekit, raw Style, custom).
//! - **Model B**: plugins declare intent, host renders. Plugins never touch `Frame`.
//!
//! # Quick Start
//!
//! ```rust
//! use ratatui_zonekit::{ZonePlugin, ZoneId, RenderContext};
//! use ratatui::buffer::Buffer;
//! use ratatui::layout::Rect;
//!
//! struct MyPlugin;
//!
//! impl ZonePlugin for MyPlugin {
//! fn id(&self) -> &str { "my-plugin" }
//! fn render(&self, _zone_id: ZoneId, _ctx: &RenderContext, area: Rect, buf: &mut Buffer) -> bool {
//! use ratatui::widgets::{Paragraph, Widget};
//! Paragraph::new("Hello from plugin!").render(area, buf);
//! true
//! }
//! }
//! ```
pub use ;
pub use ;
pub use SafeRenderer;
pub use ;