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

# FieldLabel

> Divergences, open decisions, and undocumented gaps for FieldLabel.

See [FieldLabel](/invoca-design-system/components/forms/field-label) for the decided part of this page.

## Known issues

| Kind         | What                                                                                                                                                          |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Known defect | `form-label-font-weight`'s captured value carries an invalid `px` unit — see [Known defects](/invoca-design-system/foundations/open-decisions#known-defects). |

## Gaps in the current rules

* **No spacing token for label-to-field or field-to-helper-text gaps.** Both render at
  whatever the framework defaults to.
* **What the tooltip icon actually opens is unconfirmed** — a native tooltip, a popover, or
  something else, and whether its content is itself subject to any content rules.
* **Two independent disabled-opacity values exist across the Forms group** — see
  [TITAN-GAP-32](/invoca-design-system/foundations/open-decisions#titan-gap-32).

## Constraints Titan should enforce

These are real, currently-true rules. Nothing in code stops a builder from violating them today —
each is a placeholder for a guardrail Titan hasn't built, not a decision still being made.

| ID               | Constraint                                                                           | Would be enforced by                                                                                                   |
| ---------------- | ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| **TITAN-FLD-01** | Every field has a visible FieldLabel.                                                | A lint rule requiring a FieldLabel/`aria-label` alongside every input.                                                 |
| **TITAN-FLD-03** | Error text and helper text share one slot and never render together.                 | Replacing the two independent optional props with one discriminated `message: {type: 'error' \| 'helper', text}` prop. |
| **TITAN-FLD-05** | Field labels are sentence case with no terminal punctuation (Proposed).              | A lint/formatter for casing and trailing punctuation on label strings.                                                 |
| **TITAN-FLD-06** | The label is programmatically associated with its field, not just visually adjacent. | A `jsx-a11y/label-has-associated-control`-style lint rule.                                                             |
