//! el-layout — Responsive layout engine for el-ui. //! //! **Responsive by default.** VStack and HStack wrap automatically. //! Grid uses auto columns. You don't write breakpoints for basic layouts. //! //! ## Layout primitives //! //! - [`VStack`] — vertical stack, wraps by default //! - [`HStack`] — horizontal stack, wraps by default, RTL-aware //! - [`ZStack`] — depth stack, children overlap //! - [`GridLayout`] — responsive grid, auto or fixed columns //! - [`ScrollView`] — scrollable container //! //! ## Responsive values //! //! For the rare case where you need a value to change at a specific breakpoint: //! ``` //! use el_layout::prelude::*; //! //! // Most specific value that applies cascades down to less specific //! let cols: Responsive = Responsive::fixed(1).md(2).lg(3); //! assert_eq!(*cols.resolve(Breakpoint::Sm), 1); //! assert_eq!(*cols.resolve(Breakpoint::Md), 2); //! assert_eq!(*cols.resolve(Breakpoint::Lg), 3); //! assert_eq!(*cols.resolve(Breakpoint::Xl), 3); // cascades from lg //! ``` #![deny(warnings)] pub mod breakpoint; pub mod constraints; pub mod flex; pub mod grid; pub mod platform; pub mod responsive; pub mod scroll; pub mod stack; pub mod prelude { pub use crate::breakpoint::Breakpoint; pub use crate::constraints::{LayoutConstraints, Size}; pub use crate::flex::{CrossAxisAlignment, FlexDirection, FlexLayout, HAlign, MainAxisAlignment, MainAxisSize, VAlign}; pub use crate::grid::{GridColumns, GridLayout, GridRows}; pub use crate::platform::{PlatformFamily, PlatformSizing, SafeAreaInsets}; pub use crate::responsive::Responsive; pub use crate::scroll::{ScrollAxis, ScrollIndicator, ScrollView}; pub use crate::stack::{HStack, Spacer, VStack, ZStack}; } pub use prelude::*;