UNPKG

@pantheon-systems/design-toolkit-react

Version:
128 lines (124 loc) 4.09 kB
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