@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
131 lines (110 loc) • 3.57 kB
Markdown
---
title: 'FormLabel'
description: 'The FormLabel component represents a caption for all sorts of HTML elements in a user interface.'
version: 11.0.0
generatedAt: 2026-04-21T13:57:51.395Z
checksum: a3e2d63a21c9bff5a2c312d26f4d4ee69485b847669f8c9599a421d01406725f
---
```tsx
import { FormLabel } from '@dnb/eufemia'
```
The FormLabel component represents a caption for all sorts of HTML elements in a user interface. By default, the label is displayed vertically (above the element). Use `vertical={false}` or `labelDirection="horizontal"` for inline labels.
- [Figma](https://www.figma.com/design/cdtwQD8IJ7pTeE45U148r1/%F0%9F%92%BB-Eufemia---Web?node-id=44978-544)
- [Source code](https://github.com/dnbexperience/eufemia/tree/main/packages/dnb-eufemia/src/components/form-label)
- [Docs code](https://github.com/dnbexperience/eufemia/tree/main/packages/dnb-design-system-portal/src/docs/uilib/components/form-label)
DNB UX has chosen to not use colon on the end of form element labels. For consistency throughout our websites, please avoid using them.
```tsx
<FormLabel forId="alone-1">Default vertical FormLabel</FormLabel>
<Checkbox id="alone-1" label="Checkbox" />
```
```tsx
<FormLabel forId="alone-2" vertical={false}>
Horizontal FormLabel
</FormLabel>
<Checkbox id="alone-2" label="Checkbox" />
```
```tsx
<FormLabel>Without forId (select me)</FormLabel>
<Checkbox label="Checkbox" />
```
```tsx
render(
<form>
<div>
<div>
<FormLabel forId="switch-1" text="Form Label (click me):" />
</div>
<div>
<Switch id="switch-1" value="Value of switch" />
</div>
</div>
</form>
)
```
## Properties
```json
{
"props": {
"forId": {
"doc": "The same unique `id` like the linked HTML element has.",
"type": "string",
"status": "optional"
},
"text": {
"doc": "The `text` of the label. You can use `children` as well.",
"type": "React.ReactNode",
"status": "optional"
},
"srOnly": {
"doc": "When `true`, the label will be invisible and only accessible for screen readers.",
"type": "boolean",
"status": "optional"
},
"vertical": {
"doc": "Defaults to `true`. If set to `false`, the label will be displayed horizontally (inline).",
"type": "boolean",
"status": "optional"
},
"size": {
"doc": "Define one of the following [heading sizes](/uilib/elements/heading/): `basis`, `medium` or `large`.",
"type": ["\"basis\"", "\"medium\"", "\"large\""],
"status": "optional"
},
"skeleton": {
"doc": "If set to `true`, an overlaying skeleton with animation will be shown.",
"type": "boolean",
"status": "optional"
},
"disabled": {
"doc": "If set to `true`, the label will behave as not interactive.",
"type": "boolean",
"status": "optional"
},
"element": {
"doc": "Defines the HTML element used. Defaults to `label`.",
"type": "React.Element",
"status": "optional"
},
"ref": {
"doc": "Attach a `React.Ref` to the inner label `element`.",
"type": "React.Ref",
"status": "optional"
},
"[Space](/uilib/layout/space/properties)": {
"doc": "Spacing properties like `top` or `bottom` are supported.",
"type": ["string", "object"],
"status": "optional"
}
}
}
```