UNPKG

@storybook/design-system

Version:
144 lines (126 loc) 6.46 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.Radio = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireDefault(require("react")); var _theming = require("@storybook/theming"); var _polished = require("polished"); var _styles = require("./shared/styles"); var _excluded = ["id", "appearance", "label", "description", "error", "hideLabel", "value", "className"]; function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } var Label = (0, _theming.styled)("label", process.env.NODE_ENV === "production" ? { target: "evn1gft6" } : { target: "evn1gft6", label: "Label" })("cursor:pointer;font-size:", _styles.typography.size.s2, "px;font-weight:", _styles.typography.weight.bold, ";position:relative;height:1em;display:flex;align-items:center;"); var _ref = process.env.NODE_ENV === "production" ? { name: "1ed4kgp", styles: "border:0px!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(100%)!important;clip-path:inset(100%)!important;height:1px!important;overflow:hidden!important;padding:0px!important;position:absolute!important;white-space:nowrap!important;width:1px!important" } : { name: "1ya2p99-OptionalText", styles: "border:0px!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(100%)!important;clip-path:inset(100%)!important;height:1px!important;overflow:hidden!important;padding:0px!important;position:absolute!important;white-space:nowrap!important;width:1px!important;label:OptionalText;", toString: _EMOTION_STRINGIFIED_CSS_ERROR__ }; var OptionalText = (0, _theming.styled)("span", process.env.NODE_ENV === "production" ? { target: "evn1gft5" } : { target: "evn1gft5", label: "OptionalText" })(function (props) { return props.hideLabel && _ref; }, ";"); var Error = (0, _theming.styled)("span", process.env.NODE_ENV === "production" ? { target: "evn1gft4" } : { target: "evn1gft4", label: "Error" })("font-weight:", _styles.typography.weight.regular, ";font-size:", _styles.typography.size.s2, "px;color:", _styles.color.negative, ";margin-left:6px;height:1em;display:flex;align-items:center;"); var LabelText = (0, _theming.styled)("span", process.env.NODE_ENV === "production" ? { target: "evn1gft3" } : { target: "evn1gft3", label: "LabelText" })(); var Description = (0, _theming.styled)("div", process.env.NODE_ENV === "production" ? { target: "evn1gft2" } : { target: "evn1gft2", label: "Description" })("font-size:", _styles.typography.size.s1, "px;font-weight:", _styles.typography.weight.regular, ";color:", _styles.color.mediumdark, ";margin-top:4px;margin-left:calc(", _styles.typography.size.s2, "px + 0.4em);width:100%;"); var Input = (0, _theming.styled)("input", process.env.NODE_ENV === "production" ? { target: "evn1gft1" } : { target: "evn1gft1", label: "Input" })("margin:0 0.4em 0 0;font-size:initial;opacity:0;&+", LabelText, "{&:before,&:after{position:absolute;top:0;left:0;height:1em;width:1em;content:'';display:block;border-radius:3em;}}&+", LabelText, ":before{box-shadow:", _styles.color.mediumdark, " 0 0 0 1px inset;}&:focus+", LabelText, ":before{box-shadow:", function (props) { return props.radioColor; }, " 0 0 0 1px inset;}&:checked+", LabelText, ":before{box-shadow:", function (props) { return props.radioColor; }, " 0 0 0 1px inset;}&:checked:focus+", LabelText, ":before{box-shadow:", function (props) { return props.radioColor; }, " 0 0 0 1px inset,", function (props) { return (0, _polished.rgba)(props.radioColor, 0.3); }, " 0 0 5px 2px;}&+", LabelText, ":after{transition:all 150ms ease-out;transform:scale3d(0, 0, 1);height:10px;margin-left:2px;margin-top:2px;width:10px;opacity:0;}&:checked+", LabelText, ":after{transform:scale3d(1, 1, 1);background:", function (props) { return props.radioColor; }, ";opacity:1;}"); var RadioWrapper = (0, _theming.styled)("div", process.env.NODE_ENV === "production" ? { target: "evn1gft0" } : { target: "evn1gft0", label: "RadioWrapper" })(process.env.NODE_ENV === "production" ? { name: "1o7d3sk", styles: "display:flex;align-items:center;flex-wrap:wrap" } : { name: "1o7d3sk", styles: "display:flex;align-items:center;flex-wrap:wrap", toString: _EMOTION_STRINGIFIED_CSS_ERROR__ }); var Radio = function Radio(_ref2) { var id = _ref2.id, _ref2$appearance = _ref2.appearance, appearance = _ref2$appearance === void 0 ? 'primary' : _ref2$appearance, label = _ref2.label, description = _ref2.description, error = _ref2.error, _ref2$hideLabel = _ref2.hideLabel, hideLabel = _ref2$hideLabel === void 0 ? false : _ref2$hideLabel, _ref2$value = _ref2.value, value = _ref2$value === void 0 ? '' : _ref2$value, className = _ref2.className, props = (0, _objectWithoutProperties2["default"])(_ref2, _excluded); var radioColor = _styles.color[appearance]; var errorId; var descriptionId; var ariaDescribedBy; if (error) { errorId = "".concat(id, "-error"); ariaDescribedBy = errorId; } if (description) { descriptionId = "".concat(id, "-description"); ariaDescribedBy = "".concat(ariaDescribedBy, " ").concat(descriptionId); } return /*#__PURE__*/_react["default"].createElement(RadioWrapper, null, /*#__PURE__*/_react["default"].createElement(Label, { className: className }, /*#__PURE__*/_react["default"].createElement(Input, (0, _extends2["default"])({}, props, { id: id, "aria-describedby": ariaDescribedBy, "aria-invalid": !!error, radioColor: radioColor, type: "radio", value: value })), /*#__PURE__*/_react["default"].createElement(LabelText, null, /*#__PURE__*/_react["default"].createElement(OptionalText, { hideLabel: hideLabel }, label))), error && /*#__PURE__*/_react["default"].createElement(Error, { id: errorId }, error), description && /*#__PURE__*/_react["default"].createElement(Description, { id: descriptionId }, description)); }; exports.Radio = Radio;