UI::VStack | P0 | VStack | UIStackView (axis=.vertical) | NSStackView (orientation=vertical, 1) | Column() | LinearLayout (orientation=VERTICAL) | <div style="display:flex;flex-direction:column"> | Done. Spacing and alignment supported. |
UI::HStack | P0 | HStack | UIStackView (axis=.horizontal) | NSStackView (orientation=horizontal, 0) | Row() | LinearLayout (orientation=HORIZONTAL) | <div style="display:flex;flex-direction:row"> | Done. |
UI::ZStack | P0 | ZStack | UIView + Auto Layout constraints (or manual frames) | NSView + addSubview + autoresizing mask | Box() | FrameLayout | <div style="position:relative"> with children position:absolute | Done. Children stack back-to-front in document order. |
UI::ScrollView | P0 | ScrollView | UIScrollView | NSScrollView | LazyColumn() / LazyRow() / ScrollableColumn() | ScrollView (vertical only) / HorizontalScrollView | <div style="overflow:auto"> | Done. scroll_horizontal + scroll_vertical properties. Android ScrollView only scrolls one axis; HorizontalScrollView for horizontal. |
UI::Spacer | P0 | Spacer | UILayoutGuide (flexible space) or UIView with low compression | NSView with low hugging priority inside NSStackView | Spacer() | Space with layout_weight=1 | <div style="flex:1 1 0%"> | Done. min_length property sets minimum size. |
UI::Grid | P0 | LazyVGrid / LazyHGrid | UICollectionView with UICollectionViewFlowLayout | NSCollectionView with NSCollectionViewGridLayout | LazyVerticalGrid() / LazyHorizontalGrid() | RecyclerView with GridLayoutManager | CSS Grid: <div style="display:grid;grid-template-columns:..."> | Column records with alignment + minimum_width. add_row() builder. row_count/column_count helpers. |
UI::ListView | P0 | List | UITableView or UICollectionView (iOS 14+ list) | NSTableView or NSOutlineView | LazyColumn { items(...) } | RecyclerView with LinearLayoutManager | <ul> or <div> with repeated child elements | Section records with header/footer. ListView.flat() convenience constructor. on_item_tap : Proc(Int32, Int32, Nil). |