---
title: Stack
description: A single layout component for horizontal and vertical stacks.
---

## Installation

```kotlin
implementation("com.composables:composeunstyled-stack:2.10.0")
```

## Anatomy

```kotlin
Stack {
}
```

## Concepts

- `Stack` renders children in one horizontal or vertical layout.
- The `weight()` modifier distributes remaining space in the current stack orientation.

## Code Examples

### Creating a vertical stack

Use the `orientation` parameter to arrange content vertically:

```kotlin expandable
Stack(orientation = StackOrientation.Vertical) {
  BasicText("One")
  BasicText("Two")
}
```

### Adding space between items

Use the `spacing` parameter to add equal space between children:

```kotlin expandable
Stack(spacing = 12.dp) {
  BasicText("One")
  BasicText("Two")
}
```

### Aligning stack content

Use the `mainAxisArrangement` and `crossAxisAlignment` parameters to align children:

```kotlin expandable
Stack(
  mainAxisArrangement = MainAxisArrangement.Center,
  crossAxisAlignment = CrossAxisAlignment.Center,
) {
  BasicText("One")
  BasicText("Two")
}
```

### Weighting stack children

Use the `weight()` modifier inside `Stack` content to distribute remaining space:

```kotlin expandable
Stack {
  BasicText(
    text = "Primary",
    modifier = Modifier.weight(1f),
  )
  BasicText("Secondary")
}
```

## API Reference

### Stack

| Parameter | Type | Description |
|-----------|------|-------------|
| `modifier` | `Modifier` | Modifier to be applied to the Stack |
| `orientation` | `StackOrientation` | Controls whether children are laid out horizontally or vertically. Defaults to `StackOrientation.Horizontal` |
| `mainAxisArrangement` | `MainAxisArrangement` | Controls the arrangement of children along the main axis (horizontal for horizontal orientation, vertical for vertical orientation). Defaults to `MainAxisArrangement.Start` |
| `crossAxisAlignment` | `CrossAxisAlignment` | Controls the alignment of children on the cross axis (vertical for horizontal orientation, horizontal for vertical orientation). Defaults to `CrossAxisAlignment.Start` |
| `spacing` | `Dp` | Space between children. Ignored when using `SpaceEvenly`, `SpaceBetween`, or `SpaceAround` arrangements. Defaults to `0.dp` |
| `content` | `StackScope.() -> Unit` | The composable content to be laid out within the Stack |
