Type-safe CSS styling library for Respo framework with comprehensive property definitions, enumeration values, and functional style composition tools. Provides complete CSS support including layout, typography, colors, transforms, and grid systems with MoonBit type safety.
{
"deps": {
"tiye/respo_css": "*"
}
}moon add tiye/respo_css// Create basic styles
///|
let style : RespoStyle = respo_style(
color=CssColor::Red,
font_size=16,
margin=CssSize::Px(10.0),
display=CssDisplay::Flex,
)
// Convert to CSS string
///|
let _css_string : String = style.to_string()
// Output: "color:red; font-size:16px; margin:10px; display:flex; "// Create multiple styles
///|
let base_style : RespoStyle = respo_style(color=CssColor::Blue, font_size=14)
///|
let layout_style : RespoStyle = respo_style(
display=CssDisplay::Grid,
gap=CssSize::Px(20.0),
)
// Merge styles
///|
let combined : RespoStyle = base_style.merge(layout_style)
// Add custom properties
///|
let _extended : RespoStyle = combined.add("custom-property", "custom-value")# Clone the repository
git clone https://github.com/tiye/respo_css.git
cd respo_css
# Run tests
moon test
# Check code
moon check
# Build project
moon buildimpl Show for CssAnimationDirectionpub(all) enum CssBackgroundImage {
LinearGradient(CssGradient)
RadialGradient(CssGradient)
ConicGradient(CssGradient)
Url(String)
Multiple(Array[CssBackgroundImage])
None
Custom(String)
} derive(Eq)impl Show for CssBackgroundImageinspect(CssBackgroundSize::Cover, content="cover")
inspect(CssBackgroundSize::Contain, content="contain")
inspect(CssBackgroundSize::Wh(100, 200), content="100px 200px")impl Show for CssBackgroundSizefn CssBorderRadius::new(top_left? : CssSize, top_right? : CssSize, bottom_left? : CssSize, bottom_right? : CssSize) -> CssBorderRadiusinspect(CssBorderStyle::Solid, content="solid")
inspect(CssBorderStyle::Dashed, content="dashed")
inspect(CssBorderStyle::Dotted, content="dotted")impl Show for CssBorderStyleimpl Show for CssBoxShadowfn CssBoxShadow::new(x? : CssSize, y? : CssSize, blur? : CssSize, spread? : CssSize, color? : CssColor, shadow_type? : CssBoxShadowType) -> CssBoxShadowinspect(CssBoxSizing::BorderBox, content="border-box")
inspect(CssBoxSizing::ContentBox, content="content-box")impl Show for CssBoxSizingpub(all) enum CssColor {
Hsla(UInt, UInt, UInt, Float)
Hsl(UInt, UInt, UInt)
Hsluva(UInt, UInt, UInt, Float)
Hsluv(UInt, UInt, UInt)
Rgba(UInt, UInt, UInt, Float)
Rgb(UInt, UInt, UInt)
Hex(UInt, UInt, UInt)
Lch(Float, Float, Float)
Lcha(Float, Float, Float, Float)
Lab(Float, Float, Float)
Laba(Float, Float, Float, Float)
Oklch(Float, Float, Float)
Oklcha(Float, Float, Float, Float)
Oklab(Float, Float, Float)
Oklaba(Float, Float, Float, Float)
Red
Green
Blue
White
Black
Gray
Yellow
Purple
Cyan
Orange
Pink
RawString(String)
Transparent
Var(String)
VarWithFallback(String, String)
} derive(Eq)inspect(CssColor::Hex(255, 0, 0), content="#ff0000")
inspect(CssColor::Rgb(0, 255, 0), content="rgb(0, 255, 0)")
inspect(CssColor::Hsl(240, 100, 50), content="hsl(240, 100%, 50%)")
inspect(CssColor::Blue, content="blue")inspect(CssContentVisibility::Visible, content="visible")
inspect(CssContentVisibility::Hidden, content="hidden")
inspect(CssContentVisibility::Auto, content="auto")impl Show for CssContentVisibilitypub(all) enum CssCursor {
Auto
Default
None
Pointer
ContextMenu
Help
Progress
Wait
Cell
Crosshair
Text
VerticalText
Alias
Copy
Move
NoDrop
NotAllowed
Grab
Grabbing
AllScroll
ColResize
RowResize
NResize
EResize
SResize
WResize
NeResize
NwResize
SeResize
SwResize
EwResize
NsResize
NeswResize
NwseResize
ZoomIn
ZoomOut
} derive(Eq)inspect(CssCursor::Auto, content="auto")
inspect(CssCursor::Pointer, content="pointer")
inspect(CssCursor::Text, content="text")
inspect(CssCursor::Move, content="move")pub(all) enum CssDisplay {
Block
Inline
InlineBlock
Flex
InlineFlex
Grid
InlineGrid
None
} derive(Eq)inspect(CssDisplay::Block, content="block")
inspect(CssDisplay::Flex, content="flex")
inspect(CssDisplay::Grid, content="grid")
inspect(CssDisplay::None, content="none")impl Show for CssDisplaypub(all) enum CssDuration {
Ms(Int)
S(Float)
Var(String)
VarWithFallback(String, String)
}impl Show for CssDurationpub(all) enum CssFilter {
None
Blur(Float)
Brightness(Float)
Contrast(Float)
Grayscale(Float)
HueRotate(Float)
Invert(Float)
Opacity(Float)
Saturate(Float)
Sepia(Float)
DropShadow(Float, Float, Float, CssColor)
Url(String)
Revert
RevertLayer
}inspect(CssFilter::None, content="none")
inspect(CssFilter::Blur(5.0), content="blur(5px)")
inspect(CssFilter::Brightness(1.2), content="brightness(1.2000000476837158)")
inspect(CssFilter::DropShadow(2.0, 2.0, 4.0, CssColor::Black), content="drop-shadow(2px 2px 4px black)")pub(all) enum CssFlexAlignContent {
FlexStart
FlexEnd
Center
SpaceBetween
SpaceAround
Stretch
} derive(Eq)inspect(CssFlexAlignContent::FlexStart, content="flex-start")
inspect(CssFlexAlignContent::Center, content="center")
inspect(CssFlexAlignContent::SpaceBetween, content="space-between")impl Show for CssFlexAlignContentinspect(CssFlexAlignItems::FlexStart, content="flex-start")
inspect(CssFlexAlignItems::Center, content="center")
inspect(CssFlexAlignItems::Stretch, content="stretch")impl Show for CssFlexAlignItemsinspect(CssFlexDirection::Row, content="row")
inspect(CssFlexDirection::Column, content="column")
inspect(CssFlexDirection::RowReverse, content="row-reverse")
inspect(CssFlexDirection::ColumnReverse, content="column-reverse")impl Show for CssFlexDirectionpub(all) enum CssFlexJustifyContent {
FlexStart
FlexEnd
Center
SpaceBetween
SpaceAround
SpaceEvenly
} derive(Eq)inspect(CssFlexJustifyContent::FlexStart, content="flex-start")
inspect(CssFlexJustifyContent::Center, content="center")
inspect(CssFlexJustifyContent::SpaceBetween, content="space-between")impl Show for CssFlexJustifyContentinspect(CssFlexWrap::Wrap, content="wrap")
inspect(CssFlexWrap::Nowrap, content="nowrap")
inspect(CssFlexWrap::WrapReverse, content="wrap-reverse")impl Show for CssFlexWrappub(all) enum CssFontVariant {
Normal
SmallCaps
AllSmallCaps
PetiteCaps
AllPetiteCaps
Unicase
TitlingCaps
} derive(Eq)impl Show for CssFontVariantinspect(CssFontWeight::Normal, content="normal")
inspect(CssFontWeight::Bold, content="bold")
inspect(CssFontWeight::Weight(600), content="600")impl Show for CssFontWeightimpl Show for CssFunctionpub(all) enum CssGradient {
Linear(CssGradientAngle?, Array[CssGradientStop])
Radial(Array[CssGradientStop])
Conic(CssGradientAngle?, Array[CssGradientStop])
} derive(Eq)impl Show for CssGradientinspect(CssGridArea::Auto, content="auto")
inspect(CssGridArea::Span(2), content="span 2")
inspect(CssGridArea::Named("header"), content="header")impl Show for CssGridAreaimpl Show for CssGridTemplateColumnsinspect(CssGridTemplateRows::Auto, content="auto")
inspect(CssGridTemplateRows::Repeat(3, CssSize::Px(100)), content="repeat(3, 100px)")
inspect(CssGridTemplateRows::Fr([1.0, 2.0]), content="1fr 2fr")impl Show for CssGridTemplateRowsimpl Show for CssLetterSpacinginspect(CssObjectFit::Fill, content="fill")
inspect(CssObjectFit::Contain, content="contain")
inspect(CssObjectFit::Cover, content="cover")
inspect(CssObjectFit::ScaleDown, content="scale-down")impl Show for CssObjectFitinspect(CssOverflow::Visible, content="visible")
inspect(CssOverflow::Hidden, content="hidden")
inspect(CssOverflow::Scroll, content="scroll")
inspect(CssOverflow::Auto, content="auto")impl Show for CssOverflowpub(all) enum CssOverscrollBehavior {
Auto
Contain
None
}inspect(CssOverscrollBehavior::Auto, content="auto")
inspect(CssOverscrollBehavior::Contain, content="contain")
inspect(CssOverscrollBehavior::None, content="none")impl Show for CssOverscrollBehaviorinspect(CssPosition::Static, content="static")
inspect(CssPosition::Relative, content="relative")
inspect(CssPosition::Absolute, content="absolute")
inspect(CssPosition::Fixed, content="fixed")
inspect(CssPosition::Sticky, content="sticky")impl Show for CssPositionpub(all) enum CssSize {
Auto
Px(Float)
Percent(Float)
Em(Float)
Rem(Float)
Vw(Float)
Vh(Float)
Fr(Float)
Ch(Float)
Ex(Float)
Vmin(Float)
Vmax(Float)
Dvh(Float)
Dvw(Float)
Lvh(Float)
Lvw(Float)
Svh(Float)
Svw(Float)
Function(CssFunction)
Custom(String)
Var(String)
VarWithFallback(String, String)
} derive(Eq)inspect(CssSize::Px(100.0), content="100px")
inspect(CssSize::Percent(50.0), content="50%")
inspect(CssSize::Rem(1.5), content="1.5rem")
inspect(CssSize::Vw(80.0), content="80vw")inspect(CssTextAlign::Left, content="left")
inspect(CssTextAlign::Right, content="right")
inspect(CssTextAlign::Center, content="center")
inspect(CssTextAlign::Justify, content="justify")impl Show for CssTextAligninspect(CssTextDecoration::None, content="none")
inspect(CssTextDecoration::Underline, content="underline")
inspect(CssTextDecoration::Overline, content="overline")
inspect(CssTextDecoration::LineThrough, content="line-through")impl Show for CssTextDecorationinspect(CssTextOverflow::Clip, content="clip")
inspect(CssTextOverflow::Ellipsis, content="ellipsis")impl Show for CssTextOverflowimpl Show for CssTextShadowfn CssTextShadow::new(x? : CssSize, y? : CssSize, blur? : CssSize, color? : CssColor) -> CssTextShadowpub(all) enum CssTextTransform {
None
Capitalize
Uppercase
Lowercase
FullWidth
FullSizeKana
} derive(Eq)impl Show for CssTextTransformpub(all) enum CssTimingFunction {
Ease
Linear
EaseIn
EaseOut
EaseInOut
StepStart
StepEnd
Var(String)
VarWithFallback(String, String)
} derive(Eq)inspect(CssTimingFunction::Ease, content="ease")
inspect(CssTimingFunction::Linear, content="linear")
inspect(CssTimingFunction::EaseInOut, content="ease-in-out")impl Show for CssTimingFunctionpub(all) enum CssTransform {
Translate(Int, Int)
TranslateX(Int)
TranslateY(Int)
Scale(Float)
Rotate(Int)
Skew(Int, Int)
Matrix(Float, Float, Float, Float, Float, Float)
} derive(Eq)inspect(CssTransform::Translate(10, 20), content="translate(10px, 20px)")
inspect(CssTransform::Scale(1.5), content="scale(1.5)")
inspect(CssTransform::Rotate(45), content="rotate(45deg)")impl Show for CssTransformpub(all) struct CssTransitionProperty {
property : String
duration : CssDuration
timing_function : CssTimingFunction?
delay : CssDuration?
}impl Show for CssTransitionPropertyfn CssTransitionProperty::new(property : String, duration : CssDuration, timing_function? : CssTimingFunction, delay? : CssDuration) -> CssTransitionPropertypub(all) enum CssVerticalAlign {
Top
Middle
Bottom
}inspect(CssVerticalAlign::Top, content="top")
inspect(CssVerticalAlign::Middle, content="middle")
inspect(CssVerticalAlign::Bottom, content="bottom")impl Show for CssVerticalAlignpub(all) enum CssWordBreak {
Normal
BreakAll
KeepAll
BreakWord
}impl Show for CssWordBreak// Create a basic style
let style = respo_style(
color=CssColor::Red,
font_size=16,
margin=CssSize::Px(10.0)
)
// Add custom properties
inspect(style.add("custom-property", "custom-value"), content="color:red; font-size:16px; margin:10px; custom-property:custom-value; ")
// Merge with another style
let other = respo_style(background_color=CssColor::Blue)
inspect(style.merge(other), content="color:red; font-size:16px; margin:10px; custom-property:custom-value; background-color:blue; ")
// Convert to CSS string
inspect(style.to_string(), content="color:red; font-size:16px; margin:10px; custom-property:custom-value; background-color:blue; ")impl Show for RespoStylefn respo_style(color? : CssColor, background_color? : CssColor, font_size? : UInt, font_family? : String, font_weight? : String, text_align? : CssTextAlign, display? : CssDisplay, margin? : CssSize, padding? : CssSize, border? : CssBorder, width? : CssSize, height? : CssSize, position? : CssPosition, top? : CssSize, right? : CssSize, bottom? : CssSize, left? : CssSize, float? : String, clear? : String, overflow? : CssOverflow, z_index? : Int, flex? : Float, flex_direction? : CssFlexDirection, justify_content? : CssFlexJustifyContent, align_items? : CssFlexAlignItems, align_content? : CssFlexAlignContent, order? : Int, text_decoration? : CssTextDecoration, text_transform? : String, line_height? : CssLineHeight, letter_spacing? : String, white_space? : String, word_break? : CssWordBreak, opacity? : Float, visibility? : String, box_shadow? : String, transition? : String, box_sizing? : CssBoxSizing, border_radius? : Float, padding_top? : CssSize, padding_bottom? : CssSize, padding_left? : CssSize, padding_right? : CssSize, min_width? : CssSize, max_width? : CssSize, vertical_align? : CssVerticalAlign, border_style? : CssBorderStyle, border_color? : CssColor, border_width? : CssSize, border_top? : CssBorder, border_top_width? : CssSize, border_top_color? : CssColor, border_top_style? : CssBorderStyle, border_bottom? : CssBorder, border_bottom_width? : CssSize, border_bottom_color? : CssColor, border_bottom_style? : CssBorderStyle, border_left? : CssBorder, border_left_width? : CssSize, border_left_color? : CssColor, border_left_style? : CssBorderStyle, border_right? : CssBorder, border_right_width? : CssSize, border_right_color? : CssColor, border_right_style? : CssBorderStyle, cursor? : CssCursor, transition_duration? : CssDuration, transform? : CssTransform, outline? : CssOutline, user_select? : CssUserSelect, margin_top? : CssSize, margin_bottom? : CssSize, margin_left? : CssSize, margin_right? : CssSize, max_height? : CssSize, transform_property? : Array[String], gap? : CssSize, content? : String, content_visibility? : CssContentVisibility, filter? : CssFilter, object_fit? : CssObjectFit, overscroll_behavior_x? : CssOverscrollBehavior, overscroll_behavior_y? : CssOverscrollBehavior, grid_template_columns? : CssGridTemplateColumns, grid_template_rows? : CssGridTemplateRows, grid_column? : CssGridArea, grid_row? : CssGridArea, grid_area? : String, justify_items? : CssJustifyItems, align_items_grid? : CssAlignItems, animation_direction? : CssAnimationDirection, animation_fill_mode? : CssAnimationFillMode, animation_play_state? : CssAnimationPlayState, animation_name? : String, animation_duration? : CssDuration, animation_timing_function? : CssTimingFunction, animation_delay? : CssDuration, animation_iteration_count? : String, font_style? : CssFontStyle, font_variant? : CssFontVariant, text_transform_enhanced? : CssTextTransform, aspect_ratio? : CssAspectRatio, scroll_behavior? : CssScrollBehavior, resize? : CssResize, container_type? : CssContainerType, container_name? : String, width_extended? : CssSize, height_extended? : CssSize, margin_extended? : CssSize, padding_extended? : CssSize, border_radius_obj? : CssBorderRadius, box_shadow_obj? : CssBoxShadow, background_image? : CssBackgroundImage, clip_path? : CssClipPath, text_shadow? : CssTextShadow, letter_spacing_type? : CssLetterSpacing, pointer_events? : CssPointerEvents, transition_prop? : CssTransitionProperty) -> RespoStyleInstall
Download zipType-safe CSS styling library for Respo framework with comprehensive property definitions, enumeration values, and functional style composition tools. Provides complete CSS support including layout, typography, colors, transforms, and grid systems with MoonBit type safety.