Skip to main content

waterui_layout/containers/
divider.rs

1//! Divider layout primitive shared across `WaterUI` surfaces.
2
3use waterui_core::View;
4use waterui_graphics::color::Grey;
5
6use crate::{frame::Frame, stack};
7
8/// A thin line that separates content.
9///
10/// Divider adapts to its parent container: in `VStack` it spans horizontally,
11/// in `HStack` it spans vertically.
12#[derive(Debug, Clone, Copy)]
13#[must_use]
14pub struct Divider;
15
16impl View for Divider {
17    fn body(self, env: &waterui_core::Environment) -> impl View {
18        let vertical_divider = matches!(env.get::<stack::Axis>(), Some(stack::Axis::Horizontal));
19
20        if vertical_divider {
21            Frame::new(Grey).width(1.0)
22        } else {
23            Frame::new(Grey).height(1.0)
24        }
25    }
26}