Files
2026-01-01 17:40:53 +01:00

42 lines
1.1 KiB
JavaScript

"use client";
// src/toggle.tsx
import * as React from "react";
import { composeEventHandlers } from "@radix-ui/primitive";
import { useControllableState } from "@radix-ui/react-use-controllable-state";
import { Primitive } from "@radix-ui/react-primitive";
import { jsx } from "react/jsx-runtime";
var NAME = "Toggle";
var Toggle = React.forwardRef((props, forwardedRef) => {
const { pressed: pressedProp, defaultPressed, onPressedChange, ...buttonProps } = props;
const [pressed, setPressed] = useControllableState({
prop: pressedProp,
onChange: onPressedChange,
defaultProp: defaultPressed ?? false,
caller: NAME
});
return /* @__PURE__ */ jsx(
Primitive.button,
{
type: "button",
"aria-pressed": pressed,
"data-state": pressed ? "on" : "off",
"data-disabled": props.disabled ? "" : void 0,
...buttonProps,
ref: forwardedRef,
onClick: composeEventHandlers(props.onClick, () => {
if (!props.disabled) {
setPressed(!pressed);
}
})
}
);
});
Toggle.displayName = NAME;
var Root = Toggle;
export {
Root,
Toggle
};
//# sourceMappingURL=index.mjs.map