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 buildpub(all) enum CssAlignItems {
Start
End
Center
Stretch
Baseline
}pub(all) enum CssAnimationDirection {
Normal
Reverse
Alternate
AlternateReverse
}impl Eq for CssAnimationDirectionimpl Show for CssAnimationDirectionpub(all) enum CssAnimationFillMode {
None
Forwards
Backwards
Both
}impl Eq for CssAnimationFillModeimpl Show for CssAnimationFillModepub(all) enum CssAnimationPlayState {
Running
Paused
}impl Eq for CssAnimationPlayStateimpl Show for CssAnimationPlayStatepub(all) enum CssAspectRatio {
Auto
Ratio(Float, Float)
Value(Float)
}impl Eq for CssAspectRatioimpl Show for CssAspectRatiopub(all) enum CssBackgroundSize {
Cover
Contain
Wh(UInt, UInt)
}inspect(CssBackgroundSize::Cover, content="cover")
inspect(CssBackgroundSize::Contain, content="contain")
inspect(CssBackgroundSize::Wh(100, 200), content="100px 200px")impl Eq for CssBackgroundSizeimpl Show for CssBackgroundSizepub(all) enum CssBorderStyle {
Solid
Dashed
Dotted
}inspect(CssBorderStyle::Solid, content="solid")
inspect(CssBorderStyle::Dashed, content="dashed")
inspect(CssBorderStyle::Dotted, content="dotted")impl Eq for CssBorderStyleimpl Show for CssBorderStylepub(all) enum CssBoxSizing {
BorderBox
ContentBox
}inspect(CssBoxSizing::BorderBox, content="border-box")
inspect(CssBoxSizing::ContentBox, content="content-box")impl Eq for CssBoxSizingimpl 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
}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")pub(all) enum CssContainerType {
Normal
Size
InlineSize
BlockSize
}impl Eq for CssContainerTypeimpl Show for CssContainerTypepub(all) enum CssContentVisibility {
Visible
Hidden
Auto
}inspect(CssContentVisibility::Visible, content="visible")
inspect(CssContentVisibility::Hidden, content="hidden")
inspect(CssContentVisibility::Auto, content="auto")impl Eq for CssContentVisibilityimpl 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
}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
}inspect(CssDisplay::Block, content="block")
inspect(CssDisplay::Flex, content="flex")
inspect(CssDisplay::Grid, content="grid")
inspect(CssDisplay::None, content="none")impl Eq for CssDisplayimpl Show for CssDisplaypub(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
}inspect(CssFlexAlignContent::FlexStart, content="flex-start")
inspect(CssFlexAlignContent::Center, content="center")
inspect(CssFlexAlignContent::SpaceBetween, content="space-between")impl Eq for CssFlexAlignContentimpl Show for CssFlexAlignContentpub(all) enum CssFlexAlignItems {
FlexStart
FlexEnd
Center
Baseline
Stretch
}inspect(CssFlexAlignItems::FlexStart, content="flex-start")
inspect(CssFlexAlignItems::Center, content="center")
inspect(CssFlexAlignItems::Stretch, content="stretch")impl Eq for CssFlexAlignItemsimpl Show for CssFlexAlignItemspub(all) enum CssFlexDirection {
Row
RowReverse
Column
ColumnReverse
}inspect(CssFlexDirection::Row, content="row")
inspect(CssFlexDirection::Column, content="column")
inspect(CssFlexDirection::RowReverse, content="row-reverse")
inspect(CssFlexDirection::ColumnReverse, content="column-reverse")impl Eq for CssFlexDirectionimpl Show for CssFlexDirectionpub(all) enum CssFlexJustifyContent {
FlexStart
FlexEnd
Center
SpaceBetween
SpaceAround
SpaceEvenly
}inspect(CssFlexJustifyContent::FlexStart, content="flex-start")
inspect(CssFlexJustifyContent::Center, content="center")
inspect(CssFlexJustifyContent::SpaceBetween, content="space-between")impl Eq for CssFlexJustifyContentimpl Show for CssFlexJustifyContentpub(all) enum CssFlexWrap {
Wrap
Nowrap
WrapReverse
}inspect(CssFlexWrap::Wrap, content="wrap")
inspect(CssFlexWrap::Nowrap, content="nowrap")
inspect(CssFlexWrap::WrapReverse, content="wrap-reverse")impl Eq for CssFlexWrapimpl Show for CssFlexWrappub(all) enum CssFontStyle {
Normal
Italic
Oblique(Float?)
}impl Eq for CssFontStyleimpl Show for CssFontStylepub(all) enum CssFontVariant {
Normal
SmallCaps
AllSmallCaps
PetiteCaps
AllPetiteCaps
Unicase
TitlingCaps
}pub(all) enum CssFontWeight {
Normal
Bold
Bolder
Lighter
Weight(Int)
}inspect(CssFontWeight::Normal, content="normal")
inspect(CssFontWeight::Bold, content="bold")
inspect(CssFontWeight::Weight(600), content="600")impl Eq for CssFontWeightimpl Show for CssFontWeightimpl Eq for CssFunctionimpl Show for CssFunctionpub(all) enum CssGridArea {
Auto
Span(Int)
Line(Int)
Named(String)
Custom(String)
}inspect(CssGridArea::Auto, content="auto")
inspect(CssGridArea::Span(2), content="span 2")
inspect(CssGridArea::Named("header"), content="header")impl Eq for CssGridAreaimpl Show for CssGridAreaimpl Eq for CssGridTemplateColumnsimpl 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 Eq for CssGridTemplateRowsimpl Show for CssGridTemplateRowspub(all) enum CssJustifyItems {
Start
End
Center
Stretch
Baseline
}pub(all) enum CssLineHeight {
Em(Float)
Px(Float)
Percent(Float)
Normal
}pub(all) enum CssLogicalProperty {
InlineStart
InlineEnd
BlockStart
BlockEnd
}impl Eq for CssLogicalPropertyimpl Show for CssLogicalPropertypub(all) enum CssObjectFit {
Fill
Contain
Cover
None
ScaleDown
}inspect(CssObjectFit::Fill, content="fill")
inspect(CssObjectFit::Contain, content="contain")
inspect(CssObjectFit::Cover, content="cover")
inspect(CssObjectFit::ScaleDown, content="scale-down")impl Eq for CssObjectFitimpl Show for CssObjectFitpub(all) enum CssOverflow {
Visible
Hidden
Scroll
Auto
}inspect(CssOverflow::Visible, content="visible")
inspect(CssOverflow::Hidden, content="hidden")
inspect(CssOverflow::Scroll, content="scroll")
inspect(CssOverflow::Auto, content="auto")impl Eq for CssOverflowimpl 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 CssOverscrollBehaviorpub(all) enum CssPosition {
Static
Relative
Absolute
Fixed
Sticky
}inspect(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 Eq for CssPositionimpl Show for CssPositionpub(all) enum CssResize {
None
Both
Horizontal
Vertical
Block
Inline
}pub(all) enum CssScrollBehavior {
Auto
Smooth
}impl Eq for CssScrollBehaviorimpl Show for CssScrollBehaviorpub(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)
}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")pub(all) enum CssTextAlign {
Left
Right
Center
Justify
}inspect(CssTextAlign::Left, content="left")
inspect(CssTextAlign::Right, content="right")
inspect(CssTextAlign::Center, content="center")
inspect(CssTextAlign::Justify, content="justify")impl Eq for CssTextAlignimpl Show for CssTextAlignpub(all) enum CssTextDecoration {
None
Underline
Overline
LineThrough
}inspect(CssTextDecoration::None, content="none")
inspect(CssTextDecoration::Underline, content="underline")
inspect(CssTextDecoration::Overline, content="overline")
inspect(CssTextDecoration::LineThrough, content="line-through")impl Eq for CssTextDecorationimpl Show for CssTextDecorationpub(all) enum CssTextOverflow {
Clip
Ellipsis
}inspect(CssTextOverflow::Clip, content="clip")
inspect(CssTextOverflow::Ellipsis, content="ellipsis")impl Eq for CssTextOverflowimpl Show for CssTextOverflowpub(all) enum CssTextTransform {
None
Capitalize
Uppercase
Lowercase
FullWidth
FullSizeKana
}impl Eq for CssTextTransformimpl Show for CssTextTransformpub(all) enum CssTimingFunction {
Ease
Linear
EaseIn
EaseOut
EaseInOut
StepStart
StepEnd
}inspect(CssTimingFunction::Ease, content="ease")
inspect(CssTimingFunction::Linear, content="linear")
inspect(CssTimingFunction::EaseInOut, content="ease-in-out")impl Eq for CssTimingFunctionimpl 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)
}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 Eq for CssTransformimpl Show for CssTransformpub(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 Default for RespoStyleimpl Eq for RespoStyleimpl Show for RespoStyle#deprecated("Use `struct T(A)` to declare a newtype and use `.0` access the underlying type instead.")
fn RespoStyle::inner(self : RespoStyle) -> Array[(String, String)]fn 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, 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) -> 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.