UNPKG

@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.

60 lines (59 loc) 3.97 kB
"use strict"; "use client"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; exports.__esModule = true; exports.default = exports.FakeRadio = void 0; var _clsx = _interopRequireDefault(require("clsx")); var _react = _interopRequireDefault(require("react")); var _getFieldDataState = _interopRequireDefault(require("../common/getFieldDataState")); var _FakeRadio = _interopRequireDefault(require("./FakeRadio")); exports.FakeRadio = _FakeRadio.default; const Radio = props => { const { label, value, hasError = false, disabled = false, checked, defaultChecked, onChange, name, info, id, tabIndex = 0, dataTest, ariaLabelledby, ref } = props; const Component = label ? "label" : "div"; return /*#__PURE__*/_react.default.createElement(Component, { htmlFor: label ? id : undefined, className: (0, _clsx.default)("font-base text-form-element-label-foreground relative flex w-full [align-items:self-start]", "[&_.orbit-radio-icon-container]:has-[:checked]:border-2 [&_.orbit-radio-icon-container_span]:has-[:checked]:visible", "[&_.orbit-radio-icon-container]:has-[:focus]:outline-blue-normal [&_.orbit-radio-icon-container]:has-[:focus]:outline [&_.orbit-radio-icon-container]:has-[:focus]:outline-2", disabled ? ["cursor-not-allowed", "[&_.orbit-radio-icon-container]:bg-cloud-light [&_.orbit-radio-icon-container]:border-cloud-dark"] : ["cursor-pointer", "[&_.orbit-radio-icon-container]:has-[:checked]:border-form-element-focus [&_.orbit-radio-icon-container]:has-[:checked]:active:border-form-element-focus [&_.orbit-radio-icon-container]:has-[:checked]:bg-white-normal [&_.orbit-radio-icon-container]:bg-form-element-background", !checked && hasError && "[&_.orbit-radio-icon-container]:border-form-element-error [&_.orbit-radio-icon-container]:hover:border-form-element-error-hover [&_.orbit-radio-icon-container]:active:border-form-element-error", !hasError && "[&_.orbit-radio-icon-container]:border-form-element [&_.orbit-radio-icon-container]:hover:border-form-element-hover [&_.orbit-radio-icon-container]:active:border-form-element-active", checked && !hasError && "[&_.orbit-radio-icon-container]:border-form-element-focus active:border-form-element-focus [&_.orbit-radio-icon-container]:bg-white-normal"]) }, /*#__PURE__*/_react.default.createElement("input", { "data-test": dataTest, "data-state": (0, _getFieldDataState.default)(hasError), className: "absolute opacity-0", value: value, type: "radio", disabled: disabled, checked: checked, defaultChecked: defaultChecked, id: id, onChange: onChange, name: name, tabIndex: Number(tabIndex), ref: ref, "aria-labelledby": ariaLabelledby }), /*#__PURE__*/_react.default.createElement("div", { className: (0, _clsx.default)("orbit-radio-icon-container", "relative box-border", "flex flex-none items-center justify-center", "size-icon-medium rounded-full", "duration-fast scale-100 transition-all ease-in-out", "border-solid", checked ? "border-2" : "border", !disabled && "active:scale-95") }, /*#__PURE__*/_react.default.createElement("span", { className: (0, _clsx.default)("size-[10px] rounded-full", disabled ? "bg-cloud-dark" : "bg-blue-normal", checked ? "visible" : "invisible") })), (label || info) && /*#__PURE__*/_react.default.createElement("div", { className: (0, _clsx.default)("ms-200 flex flex-1 flex-col font-medium", disabled ? "opacity-50" : "opacity-100") }, label && /*#__PURE__*/_react.default.createElement("span", { className: "text-normal text-primary-foreground [&_.orbit-text]:text-normal font-medium leading-normal [&_.orbit-text]:font-medium [&_.orbit-text]:leading-normal" }, label), info && /*#__PURE__*/_react.default.createElement("span", { className: "text-small leading-small text-form-element-label-filled-foreground" }, info))); }; var _default = exports.default = Radio;