42 lines
726 B
TypeScript
42 lines
726 B
TypeScript
import type { MattrixwvButtonSwitchProps } from "$/types/InputTypes";
|
|
import { Switch } from "@headlessui/react";
|
|
import { forwardRef } from "react";
|
|
|
|
|
|
const ButtonSwitch = forwardRef<HTMLButtonElement, MattrixwvButtonSwitchProps>(({
|
|
id,
|
|
className,
|
|
name,
|
|
value,
|
|
defaultChecked,
|
|
checked,
|
|
onChange,
|
|
disabled,
|
|
onNode,
|
|
offNode
|
|
}, ref ) => {
|
|
return (
|
|
<Switch
|
|
id={id}
|
|
className={className}
|
|
name={name}
|
|
value={value}
|
|
defaultChecked={defaultChecked}
|
|
checked={checked}
|
|
onChange={onChange}
|
|
disabled={disabled}
|
|
ref={ref}
|
|
>
|
|
{({ checked }) => (
|
|
<>
|
|
{checked ? onNode : offNode}
|
|
</>
|
|
)}
|
|
</Switch>
|
|
);
|
|
});
|
|
|
|
ButtonSwitch.displayName = "ButtonSwitch";
|
|
|
|
export default ButtonSwitch;
|