analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
81 lines (79 loc) • 2.02 kB
JavaScript
import {
Button_default
} from "./chunk-LAYB7IKW.mjs";
import {
cn
} from "./chunk-53ICLDGS.mjs";
// src/components/ToggleSwitch/ToggleSwitch.tsx
import { jsx } from "react/jsx-runtime";
var SIZE_CLASSES = {
small: {
track: "h-5 w-9",
thumb: "h-4 w-4",
translate: "translate-x-4"
},
medium: {
track: "h-6 w-11",
thumb: "h-5 w-5",
translate: "translate-x-5"
},
large: {
track: "h-7 w-14",
thumb: "h-6 w-6",
translate: "translate-x-7"
}
};
var ToggleSwitch = ({
checked = false,
onChange,
size = "small",
disabled = false,
className = "",
thumbClassName = "",
checkedColor = "bg-success-500",
uncheckedColor = "bg-border-300",
...props
}) => {
const sizeClasses = SIZE_CLASSES[size];
const trackClasses = cn(
"relative inline-flex shrink-0 cursor-pointer rounded-full border-2 border-transparent",
"transition-colors duration-200 ease-in-out",
"focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2",
sizeClasses.track,
checked ? checkedColor : uncheckedColor,
disabled && "cursor-not-allowed opacity-40",
className
);
const thumbClasses = cn(
"pointer-events-none inline-block transform rounded-full bg-white shadow ring-0",
"transition duration-200 ease-in-out",
sizeClasses.thumb,
checked ? sizeClasses.translate : "translate-x-0",
thumbClassName
);
return /* @__PURE__ */ jsx(
Button_default,
{
variant: "raw",
type: "button",
role: "switch",
"aria-checked": checked,
disabled,
className: trackClasses,
...props,
onClick: (e) => {
props.onClick?.(e);
if (!e.defaultPrevented) {
onChange?.();
}
},
children: /* @__PURE__ */ jsx("span", { className: thumbClasses })
}
);
};
ToggleSwitch.displayName = "ToggleSwitch";
var ToggleSwitch_default = ToggleSwitch;
export {
ToggleSwitch_default
};
//# sourceMappingURL=chunk-KVRGL75H.mjs.map