import { dynamic } from "@solidjs/web";
import { omit, Show } from "solid-js";
import { mergeRootProps } from "../../internals/merge-root-props.jsx";
import { resolveClassStyle } from "../../internals/resolve-class-style.jsx";
import { useCheckboxRootContext } from "../checkbox-root-context.jsx";
/**
 * Indicates whether the checkbox is ticked. Renders a `<span>` (or `as`
 * override) by default.
 *
 * Solid 2.0-native rewire (§1 wave 1): replaces `renderElement` with
 * `dynamic(() => props.as ?? "span")` and emits the same `data-*`
 * projection (`data-checked`/`data-unchecked`/`data-indeterminate` plus
 * the field-state attrs) inline as getters reading from the root
 * context's state accessor. The conditional mount via `<Show>` is
 * preserved.
 */
export function CheckboxIndicator(props) {
  const context = useCheckboxRootContext();
  const state = context.state;
  const keepMounted = () => props.keepMounted ?? false;
  const shouldRender = () => keepMounted() || context.checked() || context.indeterminate();
  const stateAttrs = {
    // `data-checked` / `data-unchecked` are suppressed when indeterminate
    // (matches the root projection — `data-indeterminate` owns that state).
    get "data-checked"() {
      if (state().indeterminate) return undefined;
      return state().checked ? "" : undefined;
    },
    get "data-unchecked"() {
      if (state().indeterminate) return undefined;
      return state().checked ? undefined : "";
    },
    get "data-indeterminate"() {
      return state().indeterminate ? "" : undefined;
    },
    get "data-disabled"() {
      return state().disabled ? "" : undefined;
    },
    get "data-readonly"() {
      return state().readOnly ? "" : undefined;
    },
    get "data-required"() {
      return state().required ? "" : undefined;
    },
    get "data-valid"() {
      return state().valid === true ? "" : undefined;
    },
    get "data-invalid"() {
      return state().valid === false ? "" : undefined;
    },
    get "data-touched"() {
      return state().touched ? "" : undefined;
    },
    get "data-dirty"() {
      return state().dirty ? "" : undefined;
    },
    get "data-filled"() {
      return state().filled ? "" : undefined;
    },
    get "data-focused"() {
      return state().focused ? "" : undefined;
    }
  };
  const userStyling = resolveClassStyle(props, () => state());
  const userProps = omit(props, "class", "style", "attrs", "as", "keepMounted");
  const styledUserProps = mergeRootProps(userStyling, userProps);
  const merged = mergeRootProps(stateAttrs, styledUserProps);
  const Tag = dynamic(() => props.as ?? "span");
  return <Show when={shouldRender()}>
			<Tag {...merged} />
		</Show>;
}
//# sourceMappingURL=checkbox-indicator.jsx.map
