> ## Documentation Index
> Fetch the complete documentation index at: https://bkey.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Typography widgets

> DisplayText, HeadingText, BodyText, LabelText, AmountText, StatusText, and ReadMoreText.

These widgets wrap `Text` with the BMONI type scale. They accept a string plus `level` and `weight` enums instead of raw `TextStyle` values.

***

## Scale widgets

```dart theme={null}
// Display — large hero text
DisplayText('Welcome', level: 1, weight: DisplayWeight.bold)
DisplayText('Sub-hero', level: 2, weight: DisplayWeight.semibold)

// Heading — section and card titles
HeadingText('Page title', level: 1, weight: HeadingWeight.bold)
HeadingText('Card title', level: 4, weight: HeadingWeight.semibold)
HeadingText('Small label', level: 6, weight: HeadingWeight.medium)

// Body — paragraph text
BodyText('Long-form copy', size: BodySize.large, weight: BodyWeight.regular)
BodyText('Body text',      size: BodySize.medium, weight: BodyWeight.regular)
BodyText('Fine print',     size: BodySize.small, weight: BodyWeight.regular)

// Label — captions and tags
LabelText('Caption', size: LabelSize.large,  weight: LabelWeight.medium)
LabelText('Tag',     size: LabelSize.small,  weight: LabelWeight.regular)
```

All four widgets accept the standard `Text` styling props as overrides (`color`, `textAlign`, `maxLines`, `overflow`, etc.).

***

## Domain-specific widgets

### AmountText

Renders a monetary amount with a currency prefix and a configurable number of decimal places.

```dart theme={null}
AmountText(
  1234.56,
  currency: r'$',
  decimalPlaces: 2,
)
// Renders: $1,234.56
```

| Prop            | Type     | Default | Description                                         |
| --------------- | -------- | ------- | --------------------------------------------------- |
| `amount`        | `double` | —       | The numeric value to display.                       |
| `currency`      | `String` | `''`    | Currency prefix string (e.g. `r'$'`, `'€'`, `'₦'`). |
| `decimalPlaces` | `int`    | `2`     | Number of decimal digits shown.                     |

### StatusText

Renders a coloured status badge string.

```dart theme={null}
StatusText('Pending',  status: StatusType.warning)
StatusText('Active',   status: StatusType.success)
StatusText('Failed',   status: StatusType.error)
StatusText('Archived', status: StatusType.neutral)
```

***

## ReadMoreText

Collapsible text with `length`- or `line`-based trimming, custom toggle labels, RegExp annotations, and full rich-text support.

```dart theme={null}
ReadMoreText(
  'A very long description that should be collapsed by default...',
  trimMode: TrimMode.line,   // line | length
  trimLines: 3,
  trimCollapsedText: 'read more',
  trimExpandedText: 'show less',
  onExpandChanged: (bool isExpanded) {
    print('Expanded: $isExpanded');
  },
)
```

### Props

| Prop                | Type                  | Default           | Description                                                         |
| ------------------- | --------------------- | ----------------- | ------------------------------------------------------------------- |
| `trimMode`          | `TrimMode`            | `TrimMode.length` | Whether to trim at a character length or a line count.              |
| `trimLines`         | `int`                 | `2`               | Lines shown when collapsed (only used with `TrimMode.line`).        |
| `trimLength`        | `int`                 | `240`             | Characters shown when collapsed (only used with `TrimMode.length`). |
| `trimCollapsedText` | `String`              | `'show more'`     | Toggle label when text is collapsed.                                |
| `trimExpandedText`  | `String`              | `'show less'`     | Toggle label when text is expanded.                                 |
| `onExpandChanged`   | `ValueChanged<bool>?` | `null`            | Callback when the expand state changes.                             |
