import { r as react, e as _extends, R as React } from "./index.f26d65f9.js";
function createContext(t2, n2) {
  const o2 = /* @__PURE__ */ react.exports.createContext(n2);
  function r(t3) {
    const { children: n3, ...r2 } = t3, c = react.exports.useMemo(() => r2, Object.values(r2));
    return react.exports.createElement(o2.Provider, { value: c }, n3);
  }
  return r.displayName = t2 + "Provider", [r, function(r2) {
    const c = react.exports.useContext(o2);
    if (c)
      return c;
    if (void 0 !== n2)
      return n2;
    throw new Error(`\`${r2}\` must be used within \`${t2}\``);
  }];
}
const [i, a] = createContext("Label", { id: void 0, controlRef: { current: null } });
const useLabelContext = (e) => {
  const t2 = a("LabelConsumer"), { controlRef: r } = t2;
  return react.exports.useEffect(() => {
    e && (r.current = e);
  }, [e, r]), t2.id;
};
function composeRefs(...o2) {
  return (e) => o2.forEach((o3) => function(o4, e2) {
    "function" == typeof o4 ? o4(e2) : null != o4 && (o4.current = e2);
  }(o3, e));
}
function useComposedRefs(...e) {
  return react.exports.useCallback(composeRefs(...e), e);
}
const Slot = /* @__PURE__ */ react.exports.forwardRef((e, o2) => {
  const { children: a2, ...s } = e;
  return react.exports.Children.toArray(a2).some(l$1) ? /* @__PURE__ */ react.exports.createElement(react.exports.Fragment, null, react.exports.Children.map(a2, (e2) => l$1(e2) ? /* @__PURE__ */ react.exports.createElement(n, _extends({}, s, { ref: o2 }), e2.props.children) : e2)) : /* @__PURE__ */ react.exports.createElement(n, _extends({}, s, { ref: o2 }), a2);
});
Slot.displayName = "Slot";
const n = /* @__PURE__ */ react.exports.forwardRef((r, n2) => {
  const { children: l2, ...a2 } = r;
  return react.exports.isValidElement(l2) ? /* @__PURE__ */ react.exports.cloneElement(l2, { ...o(a2, l2.props), ref: composeRefs(n2, l2.ref) }) : react.exports.Children.count(l2) > 1 ? react.exports.Children.only(null) : null;
});
n.displayName = "SlotClone";
const Slottable = ({ children: e }) => /* @__PURE__ */ react.exports.createElement(react.exports.Fragment, null, e);
function l$1(e) {
  return react.exports.isValidElement(e) && e.type === Slottable;
}
function o(e, t2) {
  const r = { ...t2 };
  for (const n2 in t2) {
    const l2 = e[n2], o2 = t2[n2];
    /^on[A-Z]/.test(n2) ? r[n2] = (...e2) => {
      null == o2 || o2(...e2), null == l2 || l2(...e2);
    } : "style" === n2 ? r[n2] = { ...l2, ...o2 } : "className" === n2 && (r[n2] = [l2, o2].filter(Boolean).join(" "));
  }
  return { ...e, ...r };
}
const Primitive = ["a", "button", "div", "h2", "h3", "img", "li", "nav", "ol", "p", "span", "svg", "ul"].reduce((o2, i2) => ({ ...o2, [i2]: /* @__PURE__ */ react.exports.forwardRef((o3, m2) => {
  const { asChild: a2, ...s } = o3, n2 = a2 ? Slot : i2;
  return react.exports.useEffect(() => {
    window[Symbol.for("radix-ui")] = true;
  }, []), /* @__PURE__ */ react.exports.createElement(n2, _extends({}, s, { ref: m2 }));
}) }), {});
function useSize(r) {
  const [i2, t2] = react.exports.useState(void 0);
  return react.exports.useEffect(() => {
    if (r) {
      const e = new ResizeObserver((e2) => {
        if (!Array.isArray(e2))
          return;
        if (!e2.length)
          return;
        const i3 = e2[0];
        let o2, n2;
        if ("borderBoxSize" in i3) {
          const e3 = i3.borderBoxSize, r2 = Array.isArray(e3) ? e3[0] : e3;
          o2 = r2.inlineSize, n2 = r2.blockSize;
        } else {
          const e3 = r.getBoundingClientRect();
          o2 = e3.width, n2 = e3.height;
        }
        t2({ width: o2, height: n2 });
      });
      return e.observe(r, { box: "border-box" }), () => e.unobserve(r);
    }
    t2(void 0);
  }, [r]), i2;
}
function usePrevious(r) {
  const u2 = react.exports.useRef({ value: r, previous: r });
  return react.exports.useMemo(() => (u2.current.value !== r && (u2.current.previous = u2.current.value, u2.current.value = r), u2.current.previous), [r]);
}
function useCallbackRef(r) {
  const t2 = react.exports.useRef(r);
  return react.exports.useEffect(() => {
    t2.current = r;
  }), react.exports.useMemo(() => (...e) => {
    var r2;
    return null === (r2 = t2.current) || void 0 === r2 ? void 0 : r2.call(t2, ...e);
  }, []);
}
function useControllableState({ prop: o2, defaultProp: r, onChange: n2 = () => {
} }) {
  const [a2, u2] = function({ defaultProp: o3, onChange: r2 }) {
    const n3 = react.exports.useState(o3), [a3] = n3, u3 = react.exports.useRef(a3), c2 = useCallbackRef(r2);
    return react.exports.useEffect(() => {
      u3.current !== a3 && (c2(a3), u3.current = a3);
    }, [a3, u3, c2]), n3;
  }({ defaultProp: r, onChange: n2 }), c = void 0 !== o2, f = c ? o2 : a2, l2 = useCallbackRef(n2);
  return [f, react.exports.useCallback((e) => {
    if (c) {
      const t2 = e, r2 = "function" == typeof e ? t2(o2) : e;
      r2 !== o2 && l2(r2);
    } else
      u2(e);
  }, [c, o2, u2, l2])];
}
function createContextScope(n2, o2 = []) {
  let r = [];
  const c = () => {
    const t2 = r.map((t3) => /* @__PURE__ */ react.exports.createContext(t3));
    return function(o3) {
      const r2 = (null == o3 ? void 0 : o3[n2]) || t2;
      return react.exports.useMemo(() => ({ [`__scope${n2}`]: { ...o3, [n2]: r2 } }), [o3, r2]);
    };
  };
  return c.scopeName = n2, [function(t2, o3) {
    const c2 = /* @__PURE__ */ react.exports.createContext(o3), u2 = r.length;
    function s(t3) {
      const { scope: o4, children: r2, ...s2 } = t3, i2 = (null == o4 ? void 0 : o4[n2][u2]) || c2, a2 = react.exports.useMemo(() => s2, Object.values(s2));
      return react.exports.createElement(i2.Provider, { value: a2 }, r2);
    }
    return r = [...r, o3], s.displayName = t2 + "Provider", [s, function(r2, s2) {
      const i2 = (null == s2 ? void 0 : s2[n2][u2]) || c2, a2 = react.exports.useContext(i2);
      if (a2)
        return a2;
      if (void 0 !== o3)
        return o3;
      throw new Error(`\`${r2}\` must be used within \`${t2}\``);
    }];
  }, t(c, ...o2)];
}
function t(...t2) {
  const n2 = t2[0];
  if (1 === t2.length)
    return n2;
  const o2 = () => {
    const o3 = t2.map((e) => ({ useScope: e(), scopeName: e.scopeName }));
    return function(t3) {
      const r = o3.reduce((e, { useScope: n3, scopeName: o4 }) => ({ ...e, ...n3(t3)[`__scope${o4}`] }), {});
      return react.exports.useMemo(() => ({ [`__scope${n2.scopeName}`]: r }), [r]);
    };
  };
  return o2.scopeName = n2.scopeName, o2;
}
function composeEventHandlers(e, n2, { checkForDefaultPrevented: t2 = true } = {}) {
  return function(r) {
    if (null == e || e(r), false === t2 || !r.defaultPrevented)
      return null == n2 ? void 0 : n2(r);
  };
}
const [l, u] = createContextScope("Switch");
const [p, m] = l("Switch");
const Switch = /* @__PURE__ */ react.exports.forwardRef((r, o2) => {
  const { __scopeSwitch: c, "aria-labelledby": l2, name: u2, checked: m2, defaultChecked: f, required: x, disabled: k, value: w = "on", onCheckedChange: v, ...S } = r, [y, E] = react.exports.useState(null), C = useComposedRefs(o2, (e) => E(e)), g = useLabelContext(y), R = l2 || g, T = react.exports.useRef(false), P = !y || Boolean(y.closest("form")), [_ = false, q] = useControllableState({ prop: m2, defaultProp: f, onChange: v });
  return react.exports.createElement(p, { scope: c, checked: _, disabled: k }, /* @__PURE__ */ react.exports.createElement(Primitive.button, _extends({ type: "button", role: "switch", "aria-checked": _, "aria-labelledby": R, "aria-required": x, "data-state": h(_), "data-disabled": k ? "" : void 0, disabled: k, value: w }, S, { ref: C, onClick: composeEventHandlers(r.onClick, (e) => {
    q((e2) => !e2), P && (T.current = e.isPropagationStopped(), T.current || e.stopPropagation());
  }) })), P && /* @__PURE__ */ react.exports.createElement(b, { control: y, bubbles: !T.current, name: u2, value: w, checked: _, required: x, disabled: k, style: { transform: "translateX(-100%)" } }));
});
const SwitchThumb = /* @__PURE__ */ react.exports.forwardRef((e, r) => {
  const { __scopeSwitch: o2, ...a2 } = e, c = m("SwitchThumb", o2);
  return react.exports.createElement(Primitive.span, _extends({ "data-state": h(c.checked), "data-disabled": c.disabled ? "" : void 0 }, a2, { ref: r }));
});
const b = (e) => {
  const { control: t2, checked: a2, bubbles: c = true, ...i2 } = e, n2 = react.exports.useRef(null), l2 = usePrevious(a2), u2 = useSize(t2);
  return react.exports.useEffect(() => {
    const e2 = n2.current, t3 = window.HTMLInputElement.prototype, r = Object.getOwnPropertyDescriptor(t3, "checked").set;
    if (l2 !== a2 && r) {
      const t4 = new Event("click", { bubbles: c });
      r.call(e2, a2), e2.dispatchEvent(t4);
    }
  }, [l2, a2, c]), /* @__PURE__ */ react.exports.createElement("input", _extends({ type: "checkbox", "aria-hidden": true, defaultChecked: a2 }, i2, { tabIndex: -1, ref: n2, style: { ...e.style, ...u2, position: "absolute", pointerEvents: "none", opacity: 0, margin: 0 } }));
};
function h(e) {
  return e ? "checked" : "unchecked";
}
const Root = Switch;
const Thumb = SwitchThumb;
const root = "_root_1ylzx_1";
const thumb = "_thumb_1ylzx_16";
var styles = {
  root,
  thumb
};
function SwitchSmall(props) {
  var _a, _b, _c, _d;
  const rootClasses = [styles.root, (_a = props.rootProps) == null ? void 0 : _a.className].filter(Boolean).join(" ");
  const thumbClasses = [styles.thumb, (_b = props.rootProps) == null ? void 0 : _b.className].filter(Boolean).join(" ");
  return /* @__PURE__ */ React.createElement(Root, {
    ...(_c = props.rootProps) != null ? _c : {},
    className: rootClasses
  }, /* @__PURE__ */ React.createElement(Thumb, {
    ...(_d = props.thumbProps) != null ? _d : {},
    className: thumbClasses
  }));
}
export { SwitchSmall as S };
//# sourceMappingURL=Switch.22b7f83f.js.map
