Packages

A shadcn/ui-inspired UI library for Gleam and Lustre

Current section

Files

Jump to
glizzy src ui layout css box.gleam
Raw

src/ui/layout/css/box.gleam

// MIT License
// Copyright (c) 2026 Koncreate
// See LICENSE for details.
import lustre/attribute.{type Attribute}
import lustre/element.{type Element}
import lustre/element/html
import ui/layout/css_utils
pub fn box(
attributes: List(Attribute(a)),
children: List(Element(a)),
) -> Element(a) {
html.div(
[css_utils.css_style([#("padding", "1rem")]), ..attributes],
children,
)
}
pub fn padding(value: String) -> Attribute(a) {
css_utils.css_style([#("padding", value)])
}
pub fn padding_x(value: String) -> Attribute(a) {
css_utils.css_style([#("padding-left", value), #("padding-right", value)])
}
pub fn padding_y(value: String) -> Attribute(a) {
css_utils.css_style([#("padding-top", value), #("padding-bottom", value)])
}
pub fn margin(value: String) -> Attribute(a) {
css_utils.css_style([#("margin", value)])
}
pub fn margin_x(value: String) -> Attribute(a) {
css_utils.css_style([#("margin-left", value), #("margin-right", value)])
}
pub fn margin_y(value: String) -> Attribute(a) {
css_utils.css_style([#("margin-top", value), #("margin-bottom", value)])
}
pub fn border() -> Attribute(a) {
css_utils.css_style([
#("border", "1px solid #e5e7eb"),
#("border-radius", "0.5rem"),
])
}
pub fn shadow() -> Attribute(a) {
css_utils.css_style([#("box-shadow", "0 4px 6px -1px rgb(0 0 0 / 0.1)")])
}
pub fn background(value: String) -> Attribute(a) {
css_utils.css_style([#("background-color", value)])
}