---
## FormField
Layout wrapper for composite form fields that need a label,
helper text, and error message but cannot rely on the built-in slots of
primitives like or . Examples:
a custom file picker, a slider/number-input pair, a media uploader.
The `id` is auto-generated and forwarded to the slot via the `for`
snippet parameter so the rendered control can wire `aria-describedby`
and `aria-invalid` correctly.
**Import:** `import { FormField } from '@urbicon-ui/blocks';`
### Examples
```svelte
{#snippet children({ id, describedBy, invalid })}
{/snippet}
```
### Api
| Prop | Type | Required | Default | Description |
| --- | --- | :---: | --- | --- |
| children | `Snippet<[FormFieldSlotContext]>` | yes | | Snippet receiving wiring metadata (`id`, `describedBy`, `invalid`, `required`, `disabled`). The wrapped control should spread or apply these to itself for accessibility. |
| ...HTMLAttributes | `HTMLAttributes` | no | | HTML attributes (excluding: 'children') |
| class | `string` | no | | Extra classes merged onto the wrapper element. |
| disabled | `boolean` | no | false | Disables visual emphasis. Pass through to the slot's control as needed. |
| error | `string` | no | | Error message shown below the control. Replaces the helper text and propagates `invalid: true` to the slot for ARIA wiring. |
| hint | `string` | no | | Helper text shown below the control. Hidden when `error` is present. |
| id | `string` | no | | Explicit HTML `id` for the control. Auto-generated when omitted, then forwarded to the slot. Caller may use it to attach external `