import { type HTMLAttributes, type ReactElement, type Ref } from "react";
import { type PropsWithRef } from "../types.js";
import { FormMessage } from "./FormMessage.js";
import {
type FormMessageContainerClassNameOptions,
formMessageContainer,
} from "./formMessageContainerStyles.js";
import { type ConfigurableFormMessageProps } from "./types.js";
/**
* @since 2.5.0
*/
export interface FormMessageContainerProps
extends HTMLAttributes, FormMessageContainerClassNameOptions {
ref?: Ref;
/**
* If the extension doesn't actually want to render the `FormMessage`
* component, these props are optional. It kind of eliminates the whole
* purpose of this component though.
*/
messageProps?: PropsWithRef;
}
/**
* Conditionally wraps the `children` in a `.rmd-form-message-container` wrapper
* and renders the {@link FormMessage} component.
*
* @see {@link https://react-md.dev/components/form-message | FormMessage Demos}
* @since 2.5.0
*/
export function FormMessageContainer(
props: FormMessageContainerProps
): ReactElement {
const { ref, className, children, inline, messageProps, ...remaining } =
props;
if (!messageProps) {
return <>{children}>;
}
return (
{children}
);
}