UNPKG

@age/quantum

Version:
139 lines (123 loc) 7.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _shared = require("../shared"); var _theme = require("../shared/theme"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var radioSize = '24px'; var RadioMark = _styledComponents.default.span.withConfig({ displayName: "Radio__RadioMark", componentId: "sc-194tp21-0" })(["border-radius:50%;box-sizing:border-box;display:inline-block;height:", ";position:relative;top:6px;width:", ";", ":after{border-radius:50%;content:'';display:none;height:60%;left:20%;position:absolute;top:20%;width:60%;background-color:", ";}"], radioSize, radioSize, function (_ref) { var _ref$theme = _ref.theme, _ref$theme$colors$neu = _ref$theme.colors.neutral, white = _ref$theme$colors$neu[0], gray = _ref$theme$colors$neu[500], xsmall = _ref$theme.spacing.xsmall; return "\n background-color: ".concat(white, ";\n border: 2px solid ").concat(gray, ";\n margin-right: ").concat(xsmall, "px;\n "); }, function (_ref2) { var primary = _ref2.theme.colors.primary[700]; return primary; }); var RadioLabel = (0, _styledComponents.default)(_shared.Label).withConfig({ displayName: "Radio__RadioLabel", componentId: "sc-194tp21-1" })(["cursor:pointer;user-select:none;", "{:checked{~ ", "{", "}}:focus{~ ", "{", "}}}:hover,:focus{", "{", "}}", " ", " ", ":checked:disabled ~ ", "{", "}"], _shared.HiddenInput, RadioMark, function (_ref3) { var primary = _ref3.theme.colors.primary[700]; return "\n border-color: ".concat(primary, ";\n :after {\n background-color: ").concat(primary, ";\n display: block;\n }\n "); }, RadioMark, function (_ref4) { var theme = _ref4.theme; var primary = theme.colors.primary[700]; return "\n border-color: ".concat(primary, ";\n ").concat((0, _shared.shadow)(5, primary)({ theme: theme }), "\n "); }, RadioMark, function (_ref5) { var theme = _ref5.theme; var primary = theme.colors.primary[700]; return "\n border-color: ".concat(primary, ";\n ").concat((0, _shared.shadow)(5, primary)({ theme: theme }), "\n "); }, function (_ref6) { var theme = _ref6.theme, error = _ref6.error; var errorColor = theme.colors.error[700]; return error && "\n ".concat(_shared.HiddenInput, " {\n :checked {\n ~ ").concat(RadioMark, " {\n border-color: ").concat(errorColor, ";\n :after {\n background-color: ").concat(errorColor, ";\n display: block;\n }\n }\n }\n :focus {\n ~ ").concat(RadioMark, " {\n border-color: ").concat(errorColor, ";\n ").concat((0, _shared.shadow)(5, errorColor)({ theme: theme }), "\n }\n }\n }\n\n ").concat(RadioMark, " {\n border-color: ").concat(errorColor, ";\n }\n\n :hover,\n :focus {\n ").concat(RadioMark, " {\n border-color: ").concat(errorColor, ";\n ").concat((0, _shared.shadow)(5, errorColor)({ theme: theme }), "\n }\n }\n "); }, function (_ref7) { var disabled = _ref7.disabled, _ref7$theme$colors = _ref7.theme.colors, _ref7$theme$colors$ne = _ref7$theme$colors.neutral, neutral500 = _ref7$theme$colors$ne[500], neutral300 = _ref7$theme$colors$ne[300], errorColor = _ref7$theme$colors.error[500]; return disabled && "\n color: ".concat(neutral500, ";\n\n :hover {\n cursor: not-allowed;\n }\n\n ").concat(_shared.HiddenInput, " {\n :disabled {\n ~ ").concat(RadioMark, " {\n background-color: ").concat(neutral300, ";\n }\n }\n\n :checked {\n ~ ").concat(RadioMark, " {\n border-color: ").concat(errorColor, ";\n :after {\n background-color: ").concat(errorColor, ";\n display: block;\n }\n }\n }\n\n :checked:disabled {\n background-color: ").concat(neutral500, ";\n border-color: ").concat(neutral500, ";\n ~ ").concat(RadioMark, ":after {\n background-color: ").concat(neutral500, ";\n }\n }\n\n :focus {\n ~ ").concat(RadioMark, " {\n border-color: ").concat(neutral500, ";\n box-shadow: none;\n }\n }\n }\n\n :hover, :focus {\n ").concat(RadioMark, " {\n border-color: ").concat(neutral500, ";\n box-shadow: none;\n }\n }\n "); }, _shared.HiddenInput, RadioMark, function (_ref8) { var _ref8$theme$colors$ne = _ref8.theme.colors.neutral, white = _ref8$theme$colors$ne[0], black = _ref8$theme$colors$ne[500]; return "\n background-color: ".concat(black, ";\n border-color: ").concat(black, ";\n box-shadow: inset 0 0 0 3.5px ").concat(white, ";\n "); }); var Radio = function Radio(_ref9) { var children = _ref9.children, label = _ref9.label, error = _ref9.error, disabled = _ref9.disabled, _onChange = _ref9.onChange, value = _ref9.value, theme = _ref9.theme, rest = _objectWithoutProperties(_ref9, ["children", "label", "error", "disabled", "onChange", "value", "theme"]); return _react.default.createElement(RadioLabel, { error: error, disabled: disabled, theme: theme }, _react.default.createElement(_shared.HiddenInput, _extends({ type: "radio", disabled: disabled, onChange: function onChange(e) { return _onChange({ value: value, label: label }, e); }, value: value }, rest)), _react.default.createElement(RadioMark, { theme: theme }), children || label); }; Radio.displayName = 'RadioGroup.Radio'; Radio.propTypes = { disabled: _propTypes.default.bool, error: _propTypes.default.bool, children: _propTypes.default.string, label: _propTypes.default.string, value: _propTypes.default.string.isRequired, onChange: _propTypes.default.func, theme: _propTypes.default.shape({ colors: _propTypes.default.object, spacing: _propTypes.default.object }) }; Radio.defaultProps = { disabled: false, error: false, children: undefined, label: undefined, onChange: function onChange() {}, theme: { colors: _theme.colors, spacing: _theme.spacing } }; var _default = Radio; exports.default = _default;