Skip to main content

pepl_ui/
lib.rs

1//! PEPL UI Component Model
2//!
3//! 10 Phase 0 components: platform-abstract, accessibility-first, deterministic rendering.
4//! Components produce [`Surface`] trees — the host's View Layer renders them.
5//!
6//! # Architecture
7//!
8//! ```text
9//! PEPL view function → evaluator builds SurfaceNode tree → Surface → JSON → host renders
10//! ```
11//!
12//! # Phase 0 Components
13//!
14//! | Category | Components |
15//! |----------|-----------|
16//! | Layout | Column, Row, Scroll |
17//! | Content | Text, ProgressBar |
18//! | Interactive | Button, TextInput |
19//! | List & Data | ScrollList |
20//! | Feedback | Modal, Toast |
21
22pub mod accessibility;
23pub mod components;
24mod prop_value;
25mod registry;
26mod surface;
27mod types;
28
29pub use components::content::{
30    validate_content_node, ProgressBarBuilder, TextAlign, TextBuilder, TextOverflow, TextSize,
31    TextWeight,
32};
33pub use components::feedback::{validate_feedback_node, ModalBuilder, ToastBuilder, ToastType};
34pub use components::interactive::{
35    validate_interactive_node, ButtonBuilder, ButtonVariant, KeyboardType, TextInputBuilder,
36};
37pub use components::layout::{
38    validate_layout_node, ColumnBuilder, RowBuilder, ScrollBuilder, ScrollDirection,
39};
40pub use components::list::{validate_list_node, ScrollListBuilder};
41pub use prop_value::PropValue;
42pub use registry::{ComponentDef, ComponentRegistry, PropDef, PropRequirement};
43pub use surface::{Surface, SurfaceNode};
44pub use types::{Alignment, BorderStyle, ColorValue, Dimension, Edges, ShadowStyle};
45
46// Accessibility
47pub use accessibility::{
48    auto_accessible, default_role, ensure_accessible, validate_accessible_prop, AccessibilityInfo,
49    LiveRegion, SemanticRole,
50};