import { dynamic } from "@solidjs/web";
import { omit, onCleanup, untrack } from "solid-js";
import { useBaseUiId } from "../../internals/base-ui-id.jsx";
import { useFieldRootContext } from "../../internals/field-context.jsx";
import { fieldStateAttrs } from "../../internals/field-state-attrs.jsx";
import { mergeRootProps } from "../../internals/merge-root-props.jsx";
import { resolveClassStyle } from "../../internals/resolve-class-style.jsx";
import { useFieldMessagesContext } from "../field-messages-context.jsx";
/**
 * A paragraph with additional information about the field. Renders a `<p>`
 * element (or `as` override).
 */
export function FieldDescription(props) {
  const field = useFieldRootContext();
  const messages = useFieldMessagesContext();
  const id = useBaseUiId(untrack(() => typeof props.id === "string" ? props.id : undefined));
  const source = Symbol("field-description");
  messages.registerMessageId(source, id);
  onCleanup(() => {
    messages.registerMessageId(source, undefined);
  });
  const userStyling = resolveClassStyle(props, () => field.state());
  const userHtmlProps = omit(props, "class", "style", "attrs", "as", "id");
  const internalProps = mergeRootProps(fieldStateAttrs(field.state), {
    id,
    get "data-disabled"() {
      return field.state().disabled ? "" : undefined;
    }
  });
  const styledUserProps = mergeRootProps(userStyling, userHtmlProps);
  const merged = mergeRootProps(internalProps, styledUserProps);
  const Tag = dynamic(() => props.as ?? "p");
  return <Tag {...merged} />;
}
//# sourceMappingURL=field-description.jsx.map
