@pantheon-systems/design-toolkit-react
Version:
Pantheon's React Design Toolkit
128 lines (124 loc) • 4.09 kB
JavaScript
import _defineProperty from '@babel/runtime/helpers/defineProperty';
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
import PropTypes from 'prop-types';
import TagCloseButton from './TagCloseButton.js';
import { jsx, jsxs } from 'react/jsx-runtime';
var _excluded = ["children", "onClose", "palette", "type"];
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
var defaultPalette = {
"default": {
button: 'text-white',
tag: 'bg-gray-5 text-white'
},
info: {
button: 'text-white',
tag: 'bg-blue-3 text-white'
},
success: {
button: 'text-white',
tag: 'bg-green-3 text-white'
},
warning: {
button: 'text-orange-5',
tag: 'bg-orange-3 text-orange-5'
},
danger: {
button: 'text-white',
tag: 'bg-red-4 text-white'
},
secondary: {
button: 'text-white',
tag: 'bg-cyan-4 text-white'
},
pantheor: {
button: 'text-white',
tag: 'bg-purple-3 text-white'
}
};
var subtlePalette = {
"default": {
button: 'text-gray-5',
tag: 'bg-gray-2 text-gray-5'
},
info: {
button: 'text-blue-4',
tag: 'bg-blue-1 text-blue-4'
},
success: {
button: 'color-green-4',
tag: 'bg-green-1 color-green-4'
},
warning: {
button: 'text-orange-5',
tag: 'bg-orange-1 text-orange-5'
},
danger: {
button: 'text-red-4',
tag: 'bg-red-1 text-red-4'
},
secondary: {
button: 'text-cyan-5',
tag: 'bg-cyan-1 text-cyan-5'
},
pantheor: {
button: 'text-purple-4',
tag: 'bg-purple-1 text-purple-4'
}
};
var palettes = {
"default": defaultPalette,
subtle: subtlePalette
};
// Use keys from default palette for props validation
var TAG_TYPES = Object.keys(palettes["default"]);
var TagBase = function TagBase(_ref) {
var children = _ref.children,
onClose = _ref.onClose,
palette = _ref.palette,
type = _ref.type,
props = _objectWithoutProperties(_ref, _excluded);
return /*#__PURE__*/jsxs("span", _objectSpread(_objectSpread({}, props), {}, {
className: "tag inline-flex flex-row items-center justify-center rounded ".concat(palettes[palette][type].tag),
children: [/*#__PURE__*/jsx("span", {
className: "tag-truncated text-ellipsis overflow-hidden whitespace-nowrap",
title: children,
children: children
}), onClose && /*#__PURE__*/jsx(TagCloseButton, {
callback: onClose,
className: palettes[palette][type].button
})]
}));
};
TagBase.defaultProps = {
onClose: null
};
TagBase.propTypes = {
children: PropTypes.node.isRequired,
onClose: PropTypes.func,
palette: PropTypes.oneOf(Object.keys(palettes)).isRequired,
type: PropTypes.oneOf(TAG_TYPES).isRequired
};
var Tag = function Tag(props) {
return /*#__PURE__*/jsx(TagBase, _objectSpread({
palette: "default"
}, props));
};
var TagSubtle = function TagSubtle(props) {
return /*#__PURE__*/jsx(TagBase, _objectSpread({
palette: "subtle"
}, props));
};
var defaultProps = {
type: 'default'
};
var propTypes = {
children: PropTypes.node.isRequired,
type: PropTypes.oneOf(TAG_TYPES)
};
Tag.defaultProps = defaultProps;
Tag.propTypes = propTypes;
TagSubtle.defaultProps = defaultProps;
TagSubtle.propTypes = propTypes;
export { TAG_TYPES, Tag, TagSubtle };
//# sourceMappingURL=Tag.js.map