41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
"use client";
|
|
|
|
// packages/react/toggle/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 = false, onPressedChange, ...buttonProps } = props;
|
|
const [pressed = false, setPressed] = useControllableState({
|
|
prop: pressedProp,
|
|
onChange: onPressedChange,
|
|
defaultProp: defaultPressed
|
|
});
|
|
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
|