diff --git a/examples/basic/src/main.rs b/examples/basic/src/main.rs index 54644ca..ffd0f6e 100644 --- a/examples/basic/src/main.rs +++ b/examples/basic/src/main.rs @@ -11,7 +11,7 @@ pub fn App(cx: Scope) -> impl IntoView { let (open, set_open) = create_signal(cx, true); let (button_type, set_button_type) = create_signal(cx, ButtonType::TEXT); view! { cx, -
+ {move || count.get()} @@ -19,7 +19,7 @@ pub fn App(cx: Scope) -> impl IntoView { "sd" {move || count.get()} -
+ } } diff --git a/src/lib.rs b/src/lib.rs index f5c3362..79897d8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,6 +2,7 @@ mod button; mod card; mod modal; mod progress; +mod space; mod table; mod teleport; mod theme; @@ -10,4 +11,5 @@ mod utils; pub use button::*; pub use modal::*; pub use progress::*; +pub use space::*; pub use table::*; diff --git a/src/space/mod.rs b/src/space/mod.rs new file mode 100644 index 0000000..9c4d143 --- /dev/null +++ b/src/space/mod.rs @@ -0,0 +1,41 @@ +use crate::utils::mount_style::mount_style; +use leptos::*; +use stylers::style_sheet_str; + +#[derive(Default)] +pub enum SpaceGap { + SMALL, + #[default] + MEDIUM, + LARGE, + NUMBER(u16), + TUPLE(u16, u16), +} + +#[component] +pub fn Space(cx: Scope, #[prop(optional)] gap: SpaceGap, children: Children) -> impl IntoView { + let class_name = mount_style("space", || style_sheet_str!("./src/space/space.css")); + let gap = match gap { + SpaceGap::SMALL => "gap: 4px 8px".into(), + SpaceGap::MEDIUM => "gap: 8px 12px".into(), + SpaceGap::LARGE => "gap: 12px 16px".into(), + SpaceGap::NUMBER(size) => format!("gap: {size}px {size}px"), + SpaceGap::TUPLE(x, y) => format!("gap: {x}px {y}px"), + }; + + view! { + cx, class=class_name, +
+ { + children(cx).nodes.into_iter().map(|node| { + view! { + cx, class=class_name, +
+ {node} +
+ } + }).collect::>() + } +
+ } +} diff --git a/src/space/space.css b/src/space/space.css new file mode 100644 index 0000000..9684a5f --- /dev/null +++ b/src/space/space.css @@ -0,0 +1,7 @@ +.melt-space { + display: flex; +} + +.melt-space__item { + max-width: 100%; +}