@kiwicom/orbit-components
Version:
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com's products.
50 lines (49 loc) • 2.26 kB
JavaScript
;
"use client";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
exports.__esModule = true;
exports.default = void 0;
var React = _interopRequireWildcard(require("react"));
var _clsx = _interopRequireDefault(require("clsx"));
var _handleKeyDown = _interopRequireDefault(require("../utils/handleKeyDown"));
const Switch = ({
onChange,
checked,
dataTest,
id,
icon,
onBlur,
onFocus,
disabled,
ariaControls,
ariaLabel,
ariaLabelledby,
ref
}) => {
return /*#__PURE__*/React.createElement("label", {
className: "inline-block"
}, /*#__PURE__*/React.createElement("div", {
className: (0, _clsx.default)("duration-fast h-600 w-form-box-normal relative flex items-center justify-between rounded-full transition-colors", disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer", checked ? "bg-blue-normal" : "bg-cloud-dark")
}, /*#__PURE__*/React.createElement("input", {
className: (0, _clsx.default)("peer absolute inset-0 m-0 size-full p-0 opacity-0", !disabled && "cursor-pointer"),
ref: ref,
checked: checked,
disabled: disabled,
"aria-checked": checked,
role: "switch",
onKeyDown: !disabled ? (0, _handleKeyDown.default)(undefined, onChange) : undefined,
onBlur: !disabled ? onBlur : undefined,
onChange: !disabled ? onChange : undefined,
onFocus: !disabled ? onFocus : undefined,
type: "checkbox",
"data-test": dataTest,
id: id,
"aria-controls": ariaControls,
"aria-label": ariaLabel,
"aria-labelledby": ariaLabelledby
}), /*#__PURE__*/React.createElement("div", {
className: (0, _clsx.default)("bg-white-normal duration-fast shadow-switch size-500 absolute box-border inline-flex items-center justify-center rounded-full", "peer-focus:outline-blue-normal peer-focus:outline peer-focus:outline-2", "[&_svg]:size-300", !disabled && "active:shadow-level2", !checked && (icon ? "[&_svg]:text-ink-normal" : "[&_svg]:text-cloud-dark"), checked ? "[&_svg]:text-blue-normal rtl:-translate-x-50 ltr:translate-x-[calc(100%+2px)]" : "left-50")
}, icon || null)));
};
var _default = exports.default = Switch;