<!-- source-hash: 8d0022286e01a2ce895c17613d9cae17 -->
Renders truncated text using ODS typography tokens, displaying a `FloatingTooltip` with the full content only when overflow is detected via `ResizeObserver`.

## Key Components

- **`TruncateText`** — Main export. Wraps a `<span>` with overflow detection and conditionally enables a tooltip.
- **`TruncateTextProps`** — Interface defining all configuration options.
- **`TruncateTextVariant`** — Union type (`'h1'`–`'h6'`) mapping to ODS typography utilities.
- **`TruncateTextTone`** — Union type (`'primary'` | `'secondary'`) mapping to ODS text colour utilities.
- **Overflow detection** — Uses `ResizeObserver` to re-check truncation on container resize; single-line uses `scrollWidth`, multi-line uses `scrollHeight`.

## Usage Example

```typescript
// Single-line truncation (default h4 / primary)
<TruncateText>{deviceName}</TruncateText>

// Secondary caption style with custom tooltip side
<TruncateText variant="h6" tone="secondary" side="bottom">
  {email}
</TruncateText>

// Multi-line clamp with custom tooltip content
<TruncateText lines={3} tooltip={<span>Full description here</span>}>
  {longDescription}
</TruncateText>

// Monospace heading font, forced secondary tone
<TruncateText variant="h5" tone="secondary" mono>
  {ticketId}
</TruncateText>
```

## Behaviour Notes

- Tooltip is **disabled** until actual overflow occurs — no tooltip shown for short strings.
- `lines={1}` applies Tailwind `truncate` (single-line ellipsis); `lines={2–6}` applies `line-clamp-N`.
- `tooltip` prop defaults to `children` when omitted.
- The `mono` prop swaps the font family to `--font-family-heading` while preserving the variant's size scale.