Skip to main content

ferrox_front_ui/
layout.rs

1//! # Responsive Layout Submodule (`ferrox-front-ui::layout`)
2//!
3//! `layout` provides a 12-column responsive layout grid (`container`, `row`, `col`).
4//!
5//! ## Functions
6//! - `container()`: Centered container element (`.fx-container`).
7//! - `row()`: Flexbox row container (`.fx-row`).
8//! - `col(spans)`: Responsive column wrapper (`col("12 md-6 lg-4")`).
9
10use ferrox_front_core::dom::{div, DomBuilder};
11
12pub fn container() -> DomBuilder {
13    div().attr("class", "fx-container")
14}
15
16pub fn row() -> DomBuilder {
17    div().attr("class", "fx-row")
18}
19
20/// Creates a column with specific breakpoint spans, e.g., "12 md-6 lg-4"
21pub fn col(spans: &str) -> DomBuilder {
22    let mut class_str = String::from("fx-col");
23    for span in spans.split_whitespace() {
24        if span.contains('-') {
25            class_str.push_str(&format!(" fx-col-{}", span));
26        } else {
27            class_str.push_str(&format!(" fx-col-{}", span));
28        }
29    }
30    div().attr("class", &class_str)
31}