import type { NevoProps, NevoPropsAdapted } from "../types";
import { capitalize } from "./capitalize.js";
/**
* Adapts the provided `props` to the specified `propertyName`.
*
* @example
* ```tsx
*
* ```
*
* @param props Properties according to the Nevo pattern.
* @param propertyName Name of the value property.
* @returns
*/
export function adapt(
props: NevoProps,
propertyName: K,
): NevoPropsAdapted {
const capitalizedPropertyName = capitalize(propertyName);
return {
[`${propertyName}Name`]: props.name,
[`${propertyName}Error`]: props.error,
[propertyName]: props.value,
[`onChange${capitalizedPropertyName}`]: props.onChange,
[`onChangeError${capitalizedPropertyName}`]: props.onChangeError,
} as NevoPropsAdapted;
}