use gpui::RenderOnce; use crate::prelude::*; enum DividerDirection { Horizontal, Vertical, } // #[derive(RenderOnce)] pub struct Divider { direction: DividerDirection, inset: bool, } impl Divider { pub fn horizontal() -> Self { Self { direction: DividerDirection::Horizontal, inset: false, } } pub fn vertical() -> Self { Self { direction: DividerDirection::Vertical, inset: false, } } pub fn inset(mut self) -> Self { self.inset = true; self } fn render(self, _view: &mut V, cx: &mut ViewContext) -> impl Element { div() .map(|this| match self.direction { DividerDirection::Horizontal => { this.h_px().w_full().when(self.inset, |this| this.mx_1p5()) } DividerDirection::Vertical => { this.w_px().h_full().when(self.inset, |this| this.my_1p5()) } }) .bg(cx.theme().colors().border_variant) } }