@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
163 lines (135 loc) • 3.88 kB
Markdown
---
title: 'Flex Stack'
description: '`Flex.Stack` is an outer block element that wraps content to ensure proper layout and spacing between form elements, larger regions and headings. It stretches its content horizontally (100%).'
version: 10.104.0
generatedAt: 2026-04-17T18:46:12.770Z
checksum: 090b7d977ba4be5e2c4c04d199a30a4048416c59f443a56985df2f80629d9c40
---
# Flex Stack
## Import
```tsx
import { Flex } from '@dnb/eufemia'
render(<Flex.Stack />)
```
## Description
`Flex.Stack` is an outer block element that wraps content to ensure proper layout and spacing between form elements, larger regions and headings.
It stretches its content horizontally (100%).
It uses [Flex.Container](/uilib/layout/flex/container) under the hood.
## Relevant links
- [Source code](https://github.com/dnbexperience/eufemia/tree/main/packages/dnb-eufemia/src/components/flex/Stack.tsx)
- [Docs code](https://github.com/dnbexperience/eufemia/tree/main/packages/dnb-design-system-portal/src/docs/uilib/layout/flex/stack/)
## Accessibility
It uses a `section` element. Which allows you to add an `aria-label` or `aria-labelledby` to provide screen readers with landmarks.
```tsx
render(
<Flex.Stack aria-labelledby="unique-id">
<Form.SubHeading id="unique-id">Heading</Form.SubHeading>
<Card>
<P>Content inside a landmark ...</P>
</Card>
</Flex.Stack>
)
```
## Demos
### With input fields
```tsx
render(
<Flex.Stack>
<Field.String label="Label" value="Foo" />
<Field.String label="Label" value="Foo" />
<Form.SubmitButton />
</Flex.Stack>
)
```
### With paragraphs
```tsx
render(
<Flex.Stack>
<P>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi cursus
pharetra elit in bibendum.
</P>
<P>
Praesent nunc ipsum, convallis eget convallis gravida, vehicula vitae
metus.
</P>
</Flex.Stack>
)
```
### With main heading
```tsx
render(
<Flex.Stack>
<Form.MainHeading>Heading</Form.MainHeading>
<P>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</P>
<P>Aliquam at felis rutrum, luctus dui at, bibendum ipsum.</P>
</Flex.Stack>
)
```
### With Card
```tsx
render(
<Flex.Stack>
<Card gap="medium">
<P>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</P>
<P>Aliquam at felis rutrum, luctus dui at, bibendum ipsum.</P>
</Card>
<Card gap="medium">
<P>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</P>
<P>Aliquam at felis rutrum, luctus dui at, bibendum ipsum.</P>
</Card>
</Flex.Stack>
)
```
### With Card and heading
```tsx
render(
<Flex.Stack>
<Form.MainHeading>Main heading</Form.MainHeading>
<Card gap="medium">
<P>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</P>
<P>Aliquam at felis rutrum, luctus dui at, bibendum ipsum.</P>
</Card>
</Flex.Stack>
)
```
### With Card and headings
```tsx
render(
<Flex.Stack>
<Form.MainHeading>Main heading</Form.MainHeading>
<Form.SubHeading>Sub heading</Form.SubHeading>
<Card gap="medium">
<P>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</P>
<P>Aliquam at felis rutrum, luctus dui at, bibendum ipsum.</P>
</Card>
</Flex.Stack>
)
```
## Properties
```json
{
"props": {
"direction": {
"doc": "Defaults to `vertical`.",
"type": "string",
"status": "optional"
},
"align": {
"doc": "Defaults to `stretch`.",
"type": "string",
"status": "optional"
},
"[Flex.Container](/uilib/layout/flex/container/properties)": {
"doc": "Flex.Container properties.",
"type": "Various",
"status": "optional"
},
"[Space](/uilib/layout/space/properties)": {
"doc": "Spacing properties like `top` or `bottom` are supported.",
"type": ["string", "object"],
"status": "optional"
}
}
}
```