Widgets

/

layout

Row

Lays objects out left to right. Adapts deterministically when space runs out.

A toolbar

A Row lays its objects out left to right with a gap. xAlign distributes them along the row, yAlign aligns them across it, and align sets both at once.

LAYR
Row(
  .config(
    w: fill
    color: panel
    cornerRadius: 12
    gap: 12
    padding: all(14)
    xAlign: between
    yAlign: mid
  )
  Text(.config(size: 15, weight: semibold) .obj('Inbox'))
  Row(
    .config(gap: 8)
    Container(
      .config(color: sunken, cornerRadius: 999, padding: sym(x: 10, y: 4))
      .obj(Text(.config(size: 12, color: muted) .obj('12 new')))
    )
    Container(
      .config(color: accent, cornerRadius: 999, padding: sym(x: 10, y: 4))
      .obj(Text(.config(size: 12, color: onAccent) .obj('Compose')))
    )
  )
)

When space runs out

A row of fill objects stacks into a column when one of them would be squeezed below a comfortable width, and a row of fixed or hugging objects wraps. Nothing to write: switch the preview to m to see it.

LAYR
Row(
  .config(w: fill, gap: 12)
  Container(.config(w: fill, h: 64, minW: 220, color: violet, cornerRadius: 12))
  Container(.config(w: fill, h: 64, minW: 220, color: teal, cornerRadius: 12))
)

Config keys

KeyTypeDefaultMeaning
w (width)len | fill | hugWidth: a length, fill (share the remaining space) or hug (fit content, default).
h (height)len | fill | hugHeight: a length, fill or hug (default).
size (s)sizeWidth and height together: size: 200 or size: (200, 120).
minW (minWidth)lenMinimum width.
maxW (maxWidth)lenMaximum width.
minH (minHeight)lenMinimum height.
maxH (maxHeight)lenMaximum height.
aspect (aspectRatio)numAspect ratio (width / height), e.g. 16/9.
color (bg, background, colorBG)paintBackground paint: a colour or gradient.
padding (pad)insetsSpace inside the object.
cornerRadius (radius, borderRadius, corner)radiusCorner radius: one length or only(topLeft: 8, …).
borderWidthlenBorder width.
borderColorcolorBorder colour.
borderAlignin | mid | outinWhere the border sits relative to the edge: in, mid or out.
borderStylesolid | dashed | dottedsolidBorder line style.
borderSidesall | top | bottom | left | right | x | yallWhich sides draw the border (inside the box).
shadowshadowDrop shadow(s): shadow(y: 4, blur: 12, color: black.alpha(20%)).
clipboolClip children to the object's bounds (and corner radius).
zintStacking order among siblings.
margininsetsSpace outside the object: all(8), sym(x: 8, y: 4), only(top: 8).
opacitynumOpacity from 0 to 1.
hide (hidden)boolRemoves the object from layout and the accessibility tree.
shrinknum1Shrink priority when space runs out. Lower shrinks first; 0 never shrinks.
flexnum1Share of remaining space for fill sizes.
cursorauto | pointer | text | grab | grabbing | move | notAllowed | crosshair | nonePointer cursor.
className (class)txtExtra CSS class names: styling hooks for your own stylesheet (hover rules, third-party CSS).
align (alignment)alignBoth axes at once, e.g. align: mid or align: bottomRight; xAlign and yAlign override one axis.
xAlign (mainAxisAlignment)axisstartHorizontal distribution along the row.
yAlign (crossAxisAlignment)axisstartVertical alignment of children.
gap (spacing)lenSpace between children.
overflowauto | wrap | stack | scroll | clip | shrink | warn | errorautoWhat happens when content does not fit. auto adapts deterministically (see Layout & Adaptation).
stackAtlenRow only: the width below which the row stacks into a column (computed automatically when omitted).
reverseboolReverse the visual order.

Group .border(align, color, width, style, sides): Border settings grouped: .border(align: in, color: #0d0d0d, width: 2).

Slots

  • .objs: several objects, the default slot

Events

.on(...) accepts tap, press, hover, hoverEnd, focus, blur, key, drag, swipe, mount, unmount, visible.