@easy-shadcn/react
Version:
Use shadcn/ui easy&enhance like component library
81 lines (75 loc) • 2.71 kB
JavaScript
;
var chunk4RFGFQC6_js = require('./chunk-4RFGFQC6.js');
var React = require('react');
var utils = require('@easy-shadcn/utils');
var SwitchPrimitives = require('@radix-ui/react-switch');
var jsxRuntime = require('react/jsx-runtime');
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n.default = e;
return Object.freeze(n);
}
var React__namespace = /*#__PURE__*/_interopNamespace(React);
var SwitchPrimitives__namespace = /*#__PURE__*/_interopNamespace(SwitchPrimitives);
var Switch = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
SwitchPrimitives__namespace.Root,
{
className: utils.cn(
"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
className
),
...props,
ref,
children: /* @__PURE__ */ jsxRuntime.jsx(
SwitchPrimitives__namespace.Thumb,
{
className: utils.cn(
"pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
)
}
)
}
));
Switch.displayName = SwitchPrimitives__namespace.Root.displayName;
var Switch2 = ({
label,
labelProps,
wrapperClassName,
checked,
defaultChecked,
onCheckedChange,
...restProps
}) => {
const [internalChecked, setInternalChecked] = React.useState(defaultChecked);
const isChecked = checked ?? internalChecked;
const handleChange = (checked2) => {
onCheckedChange?.(checked2);
setInternalChecked(checked2);
};
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("flex items-center space-x-2", wrapperClassName), children: [
/* @__PURE__ */ jsxRuntime.jsx(Switch, { checked: isChecked, onCheckedChange: handleChange, ...restProps }),
label && /* @__PURE__ */ jsxRuntime.jsx(
chunk4RFGFQC6_js.Label,
{
onClick: () => {
handleChange(!isChecked);
},
...labelProps,
children: label
}
)
] });
};
exports.Switch = Switch2;