mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-12 21:48:29 +09:00
54 lines
1.2 KiB
Rust
54 lines
1.2 KiB
Rust
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
use maud::{Markup, html};
|
|
|
|
#[derive(Clone, Copy)]
|
|
pub enum StackGap {
|
|
Sm,
|
|
Md,
|
|
Lg,
|
|
}
|
|
|
|
#[derive(Clone, Copy)]
|
|
pub enum StackAlign {
|
|
Start,
|
|
Center,
|
|
End,
|
|
Stretch,
|
|
}
|
|
|
|
fn gap_class(gap: StackGap) -> &'static str {
|
|
match gap {
|
|
StackGap::Sm => "gap-2",
|
|
StackGap::Md => "gap-4",
|
|
StackGap::Lg => "gap-6",
|
|
}
|
|
}
|
|
|
|
fn align_class(align: StackAlign) -> &'static str {
|
|
match align {
|
|
StackAlign::Start => "items-start",
|
|
StackAlign::Center => "items-center",
|
|
StackAlign::End => "items-end",
|
|
StackAlign::Stretch => "items-stretch",
|
|
}
|
|
}
|
|
|
|
pub fn vstack(gap: StackGap, align: StackAlign, content: Markup) -> Markup {
|
|
let classes = format!("flex flex-col {} {}", gap_class(gap), align_class(align),);
|
|
html! {
|
|
div class=(classes) { (content) }
|
|
}
|
|
}
|
|
|
|
pub fn hstack(gap: StackGap, align: StackAlign, content: Markup) -> Markup {
|
|
let classes = format!("flex flex-row {} {}", gap_class(gap), align_class(align),);
|
|
html! {
|
|
div class=(classes) { (content) }
|
|
}
|
|
}
|
|
|
|
pub fn stack(content: Markup) -> Markup {
|
|
vstack(StackGap::Md, StackAlign::Stretch, content)
|
|
}
|