UNPKG

@nestbotics/nct_frontend_common_components

Version:

A collection of reusable React components with theme management and styling utilities

82 lines (81 loc) 4.56 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = CustomButton; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireDefault(require("react")); var _styles = require("@mui/material/styles"); var _Button = _interopRequireDefault(require("@mui/material/Button")); var _Theme = require("../../theme/Theme"); var _jsxRuntime = require("react/jsx-runtime"); var _excluded = ["theme", "buttonvariant", "mode"], _excluded2 = ["variant", "icon", "children", "onClick"]; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var StyledButton = (0, _styles.styled)(_Button.default)(function (_ref) { var theme = _ref.theme, buttonvariant = _ref.buttonvariant, mode = _ref.mode, props = (0, _objectWithoutProperties2.default)(_ref, _excluded); var colors = (0, _Theme.tokens)(mode); return _objectSpread({ fontFamily: 'var(--font-sans)', fontSize: '0.875rem', fontWeight: 500, lineHeight: '1.25rem', borderRadius: '0.375rem', height: '2.25rem', padding: '0.5rem 1rem', display: 'inline-flex', alignItems: 'center', justifyContent: 'center', whiteSpace: 'nowrap', transition: 'all 150ms cubic-bezier(0.4, 0, 0.2, 1)', textTransform: 'none', boxShadow: 'none', backgroundColor: props.bgcolor || (buttonvariant === 'default' ? mode === 'dark' ? colors.purple[500] : colors.purple[400] : 'transparent'), color: props.color || (buttonvariant === 'default' ? mode === 'dark' ? colors.purple[100] : colors.purple[900] : colors.grey[100]), border: props.border || (buttonvariant === 'outline' ? "1px solid ".concat(mode === 'dark' ? colors.grey[400] : colors.grey[300]) : 'none'), '&:hover': { backgroundColor: props.hoverBgColor || (buttonvariant === 'default' ? mode === 'dark' ? 'rgba(128, 90, 213, 0.8)' : 'rgba(129, 140, 248, 0.8)' : 'rgba(0, 0, 0, 0.04)'), color: props.hoverColor || (buttonvariant === 'default' ? mode === 'dark' ? 'rgba(245, 245, 245, 0.8)' : 'rgba(48, 48, 48, 0.8)' : colors.grey[100]), boxShadow: 'none' }, '&:focus-visible': { outline: "2px solid ".concat(colors.grey[500]), outlineOffset: '2px' } }, buttonvariant === 'destructive' && { background: mode === 'dark' ? "linear-gradient(45deg, rgba(".concat(colors.redAccent[600], ", 0.9), rgba(").concat(colors.orangeAccent[600], ", 0.9))") : "linear-gradient(45deg, rgba(".concat(colors.redAccent[500], ", 0.9), rgba(").concat(colors.orangeAccent[500], ", 0.9))"), color: mode === 'dark' ? 'rgba(245, 245, 245, 0.8)' : 'rgba(48, 48, 48, 0.8)', '&:hover': { background: mode === 'dark' ? "linear-gradient(45deg, rgba(".concat(colors.redAccent[500], ", 0.8), rgba(").concat(colors.orangeAccent[500], ", 0.8))") : "linear-gradient(45deg, rgba(".concat(colors.redAccent[400], ", 0.8), rgba(").concat(colors.orangeAccent[400], ", 0.8))") } }); }); function CustomButton(_ref2) { var _ref2$variant = _ref2.variant, variant = _ref2$variant === void 0 ? 'default' : _ref2$variant, Icon = _ref2.icon, children = _ref2.children, onClick = _ref2.onClick, props = (0, _objectWithoutProperties2.default)(_ref2, _excluded2); var theme = (0, _styles.useTheme)(); var mode = theme.palette.mode; return /*#__PURE__*/(0, _jsxRuntime.jsxs)(StyledButton, _objectSpread(_objectSpread({ buttonvariant: variant, onClick: onClick, mode: mode }, props), {}, { children: [Icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(Icon, { style: { marginRight: '0.5rem', width: '1rem', height: '1rem' } }), children] })); }