-
public final class ThreeZoneLayoutKt
-
-
Method Summary
Modifier and Type Method Description final static UnitThreeZoneLayout(List<ContentBlock> blocks, Function1<ContentBlock, Unit> renderBlock, Modifier modifier, Alignment.Horizontal topAlignment, Alignment.Horizontal centerAlignment, Alignment.Horizontal bottomAlignment)SPEC-070-A I. -
-
Method Detail
-
ThreeZoneLayout
@Composable() final static Unit ThreeZoneLayout(List<ContentBlock> blocks, Function1<ContentBlock, Unit> renderBlock, Modifier modifier, Alignment.Horizontal topAlignment, Alignment.Horizontal centerAlignment, Alignment.Horizontal bottomAlignment)
SPEC-070-A I.17 —
ThreeZoneLayoutpartitions a step's ContentBlock list into three vertical zones — top, center, bottom — and spaces them with weighted spacers so each zone retains its visual region as the screen height changes.Mirrors iOS
Onboarding/ThreeZoneStepLayout.swift:109-122. Empty zones collapse so the renderer doesn't introduce phantom whitespace; non-empty zones each carry a weight of 1 by default, matching iOS Layout's "GeometryReader { proxy in VStack { … } }" partition.The zone for each block is decided by:
block.zone(explicit "top" / "center" / "bottom"),else
block.vertical_align(legacy field, same vocabulary),else default to "center".
Hosts use this when
step.layout == "three_zone"(or whatever flag the outer renderer chooses). For non-three_zone steps the existingBlockBasedStepViewcontinues to render inline.- Parameters:
blocks- All step blocks (already filtered for visibility).renderBlock- Callback the layout invokes for each block — keeps rendering decisions in the host (style, action wiring) while this layout owns only the zoning.topAlignment- Alignment within the top zone (default = TopCenter).centerAlignment- Alignment within the center zone (default = Center).bottomAlignment- Alignment within the bottom zone (default = BottomCenter).
-
-
-
-