///|
/// Edge from which a [`sheet`] enters the viewport.
pub(all) enum SheetSide {
SheetTop
SheetRight
SheetBottom
SheetLeft
} derive(Debug, Eq)
///|
const SheetStyle : String = "min-width:0;min-height:0;max-height:100dvh;margin:0;border:0;border-radius:0;box-shadow:0 16px 48px rgb(0 0 0 / 0.2)"
///|
fn sheet_side_value(side : SheetSide) -> String {
match side {
SheetTop => "top"
SheetRight => "right"
SheetBottom => "bottom"
SheetLeft => "left"
}
}
///|
fn sheet_side_style(side : SheetSide) -> String {
match side {
SheetTop =>
"inset:0 0 auto;width:100%;max-height:85dvh;border-bottom:1px solid var(--rui-border,oklch(0.922 0 0))"
SheetRight =>
"inset:0 0 0 auto;width:min(85vw,24rem);height:100dvh;border-left:1px solid var(--rui-border,oklch(0.922 0 0))"
SheetBottom =>
"inset:auto 0 0;width:100%;max-height:85dvh;border-top:1px solid var(--rui-border,oklch(0.922 0 0))"
SheetLeft =>
"inset:0 auto 0 0;width:min(85vw,24rem);height:100dvh;border-right:1px solid var(--rui-border,oklch(0.922 0 0))"
}
}
///|
fn sheet_closed_transform(side : SheetSide) -> String {
match side {
SheetTop => "translate3d(0,-2.5rem,0)"
SheetRight => "translate3d(2.5rem,0,0)"
SheetBottom => "translate3d(0,2.5rem,0)"
SheetLeft => "translate3d(-2.5rem,0,0)"
}
}
///|
/// Render an edge-anchored native dialog without component state.
/// Open it with `@rabbita/dialog.show(id)` and close it with a
/// `