design-system-govbr-rnp
Version:
## Padrão Digital de Governo - React Biblioteca de componentes React que implementa o [Padrão Visual digital do governo](https://www.gov.br/ds/). O objetivo da biblioteca é facilitar a implementação e promover a padronização das interfaces de sistemas do
51 lines (50 loc) • 7.15 kB
JavaScript
"use strict";
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.IconButton = exports.ButtonIcon = exports.ButtonContainer = void 0;
var _reactFontawesome = require("@fortawesome/react-fontawesome");
var _styledComponents = _interopRequireWildcard(require("styled-components"));
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
var rotacao = (0, _styledComponents.keyframes)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\nfrom {\n transform: rotate(0);\n}\n\nto {\n transform: rotate(360deg);\n}\n"])));
var variants = function variants(variant) {
return {
primary: (0, _styledComponents.css)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n background: var(--blue-warm-vivid-70);\n color: var(--pure-0);\n\n &:not(:disabled):hover {\n background: rgba(19, 81, 180, var(--surface-opacity-lg));\n }\n\n &:not(:disabled):active {\n background: rgba(19, 81, 180, var(--surface-opacity-sm));\n }\n svg path {\n fill: var(--pure-0);\n }\n\n &.inverted {\n background: var(--blue-warm-20);\n color: var(--blue-warm-vivid-90);\n &:not(:disabled):hover {\n background: rgba(var(--blue-warm-20-rgb), var(--surface-opacity-lg));\n }\n &:not(:disabled):active {\n background: rgba(var(--blue-warm-20-rgb), var(--surface-opacity-sm));\n }\n &.loading::after {\n border: 2px solid var(--blue-warm-vivid-90);\n border-bottom: 2px solid transparent;\n }\n }\n "]))),
secondary: (0, _styledComponents.css)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n border: 1px solid var(--blue-warm-vivid-70);\n &.inverted {\n border: 1px solid var(--blue-warm-20);\n color: var(--blue-warm-20);\n &:not(:disabled):hover {\n background: rgba(var(--blue-warm-20-rgb), var(--surface-opacity-md));\n }\n &:not(:disabled):active {\n background: rgba(var(--blue-warm-20-rgb), var(--surface-opacity-lg));\n }\n &.loading::after {\n border: 2px solid var(--blue-warm-20);\n border-bottom: 2px solid transparent;\n }\n }\n "])))
}[variant];
};
var ButtonContainer = _styledComponents.default.button(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n align-items: center;\n border: 0;\n border-radius: 100em;\n background-color: transparent;\n color: var(--blue-warm-vivid-70);\n cursor: pointer;\n display: inline-flex;\n font-size: var(--font-size-scale-up-01);\n font-weight: var(--font-weight-semi-bold);\n height: 40px;\n justify-content: center;\n overflow: hidden;\n padding: 0 var(--spacing-scale-3xh);\n position: relative;\n text-align: center;\n vertical-align: middle;\n white-space: nowrap;\n width: auto;\n\n &:not(:disabled):hover {\n background: rgba(19, 81, 180, var(--surface-opacity-xs));\n }\n\n &:not(:disabled):active {\n background: rgba(19, 81, 180, var(--surface-opacity-md));\n }\n &:disabled:focus {\n outline: \"none\";\n }\n\n &:not(:disabled):focus-visible {\n outline-color: var(--gold-vivid-40);\n outline-offset: var(--spacing-scale-half);\n outline-style: dashed;\n outline-width: var(--surface-width-lg);\n }\n\n &.inverted {\n color: var(--blue-warm-20);\n\n &:not(:disabled):hover {\n background: rgba(var(--blue-warm-20-rgb), var(--surface-opacity-xs));\n }\n &:not(:disabled):active {\n background: rgba(var(--blue-warm-20-rgb), var(--surface-opacity-sm));\n }\n\n &:not(:disabled):focus-visible {\n outline-color: var(--gold-vivid-20);\n }\n\n &.active {\n color: var(--blue-warm-vivid-90);\n background-color: var(--pure-0);\n }\n &.loading::after {\n border: 2px solid var(--blue-warm-20);\n border-bottom: 2px solid transparent;\n }\n }\n\n &.large {\n height: \"48px\";\n }\n\n &.small {\n height: \"32px\";\n }\n\n &:disabled {\n cursor: \"not-allowed\";\n opacity: 0.45;\n }\n\n &.active {\n color: var(--pure-0);\n background-color: var(--blue-warm-vivid-80);\n }\n\n &.loading {\n min-height: 44px;\n pointer-events: none;\n z-index: 4;\n text-align: center;\n color: transparent !important;\n }\n\n &.loading::after {\n content: '\"\"';\n position: absolute;\n background: transparent;\n border: 2px solid var(--blue-warm-vivid-70);\n border-bottom: 2px solid transparent;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n animation: ", " 2s linear infinite;\n }\n\n &.block {\n width: 100%;\n }\n ", "\n"])), rotacao, function (_ref) {
var variant = _ref.variant;
return variants(variant);
});
exports.ButtonContainer = ButtonContainer;
var ButtonIcon = (0, _styledComponents.default)(_reactFontawesome.FontAwesomeIcon)(function (props) {
return {
marginRight: props.circle ? "0px" : "var(--spacing-scale-base) !important",
textAlign: "center",
ariaHidden: true
};
});
exports.ButtonIcon = ButtonIcon;
var IconButton = (0, _styledComponents.default)(ButtonContainer)({
borderRadius: "50%",
padding: 0,
width: "40px",
height: "40px",
"&.large": {
width: "48px",
height: "48px"
},
"&.small": {
width: "32px",
height: "32px"
},
"&.loading": {
minHeight: "unset"
}
});
exports.IconButton = IconButton;