| recordName* | ReactNode | - | Name of the record this mapping belongs to, e.g. a pipeline name. |
| isMapped | boolean | undefined | false | |
| savedCaption | ReactNode | - | Pre-formatted "Last saved …" caption; omit to hide. |
| backHref* | string | - | |
| backLabel | ReactNode | - | |
| LinkComponent | ComponentType<SorConfig01LinkProps> | undefined | - | Router link renderer for the back link; a plain `<a>` by default. |
| connections* | ConnectionLike[] | - | |
| connectionId* | string | - | |
| onConnectionChange* | (id: string) => void | - | |
| isConnectionMissing | boolean | undefined | false | |
| connectionSearchPlaceholder | string | undefined | - | |
| onPropose* | () => void | - | |
| isProposing | boolean | undefined | false | |
| canPropose | boolean | undefined | false | |
| proposeError | SorConfig01ApiError | null | undefined | - | |
| isProposalWrongConnection | boolean | undefined | - | True once a proposal exists but points at a different connection than the form. |
| onClearFields | (() => void) | undefined | - | |
| proposalSummary | ReactNode | - | |
| isProposalUnverified | boolean | undefined | false | |
| proposalUnverifiedDetail | ReactNode | - | |
| isProposalBlocked | boolean | undefined | false | |
| proposalBlockedReason | ReactNode | - | |
| proposalDiff | SorConfig01Diff[] | undefined | - | |
| onUseProposal | (() => void) | undefined | - | |
| fields* | SorConfig01FieldSpec<TFieldKey>[] | - | |
| fieldValues* | Record<TFieldKey, string> | - | |
| onFieldChange* | (key: TFieldKey, value: string) => void | - | |
| fieldErrors | Partial<Record<TFieldKey, ReactNode>> | undefined | - | |
| fieldSuggestions | Partial<Record<TFieldKey, string[]>> | undefined | - | Catalog-derived value suggestions per field, keyed by field key. |
| multiValueFieldKeys | TFieldKey[] | undefined | - | Field keys whose value is a comma-separated list, e.g. free-text search fields. |
| categories* | SorConfig01CategorySpec<TCategoryKey>[] | - | |
| categoryValues* | Record<TCategoryKey, string> | - | |
| onCategoryChange* | (key: TCategoryKey, value: string) => void | - | |
| inFlightValuesByCategory | Partial<Record<TCategoryKey, string[]>> | undefined | - | Values that look like they mean "in progress", shown as a warning per category. |
| observedValues | string[] | undefined | - | Every value actually observed in a sample of source records. |
| observedValuesCaption | ReactNode | - | |
| blockingChecks | SorConfig01Check[] | undefined | - | Local, blocking checks - shown once `onSave` has been attempted. |
| verifyBlockingChecks | SorConfig01Check[] | undefined | - | Checks a verification pass ran against real records refused. |
| isVerifyUnverified | boolean | undefined | false | |
| verifyUnverifiedDetail | ReactNode | - | |
| warningChecks | SorConfig01Check[] | undefined | - | |
| warningsCaption | ReactNode | - | |
| unsavedFieldLabels | string[] | undefined | - | Coordinates the draft has changed but not yet saved. |
| onSave* | () => void | - | |
| isSaving | boolean | undefined | false | |
| isVerifying | boolean | undefined | false | |
| canSave | boolean | undefined | true | |
| saveError | SorConfig01ApiError | null | undefined | - | |
| verifyError | SorConfig01ApiError | null | undefined | - | |
| saveOutcome | SorConfig01SaveOutcome | null | undefined | - | |
| savedDetectorCount | number | undefined | - | |
| onReset* | () => void | - | |
| canReset | boolean | undefined | false | |
| resetLabel | ReactNode | - | |
| onRemove | (() => void) | undefined | - | |
| isRemoving | boolean | undefined | false | |
| removeError | SorConfig01ApiError | null | undefined | - | |
| removeConfirmDescription | ReactNode | - | |
| removeConfirmLabel | ReactNode | - | |
| isLoading | boolean | undefined | false | |
| loadError | SorConfig01ApiError | null | undefined | - | |
| className | string | undefined | - | |
| data-testid | string | undefined | - | Test identifier rendered as `data-testid` on the root element. |