--- ## 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 `