@age/quantum
Version:
Catho react components
139 lines (123 loc) • 7.83 kB
JavaScript
"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;