@selfcommunity/react-ui
Version:
React UI Components to integrate a Community created with SelfCommunity Platform.
70 lines (69 loc) • 3.41 kB
JavaScript
import { __rest } from "tslib";
import { jsx as _jsx } from "react/jsx-runtime";
import { styled } from '@mui/material/styles';
import { useThemeProps } from '@mui/system';
import { FormattedMessage } from 'react-intl';
import { SCPreferences, useSCPreferences } from '@selfcommunity/react-core';
import { Chip, Tooltip } from '@mui/material';
import { useMemo } from 'react';
import { SCCommunitySubscriptionTier } from '@selfcommunity/types';
import classNames from 'classnames';
const PREFIX = 'SCUpScalingTierBadge';
const classes = {
root: `${PREFIX}-root`,
badge: `${PREFIX}-badge`
};
const Root = styled(Tooltip, {
name: PREFIX,
slot: 'Root',
overridesResolver: (props, styles) => [styles.root]
})(() => ({}));
const Badge = styled(Chip, {
name: PREFIX,
slot: 'badgeRoot'
})(({ theme }) => ({}));
export default function UpScalingTierBadge(inProps) {
// PROPS
const props = useThemeProps({
props: inProps,
name: PREFIX
});
const { className, desiredTier = SCCommunitySubscriptionTier.GO } = props, rest = __rest(props, ["className", "desiredTier"]);
const { preferences } = useSCPreferences();
const isEnterpriseTier = useMemo(() => preferences &&
SCPreferences.CONFIGURATIONS_SUBSCRIPTION_TIER in preferences &&
preferences[SCPreferences.CONFIGURATIONS_SUBSCRIPTION_TIER].value &&
preferences[SCPreferences.CONFIGURATIONS_SUBSCRIPTION_TIER].value === SCCommunitySubscriptionTier.ENTERPRISE, [preferences]);
const tooltipMsg = useMemo(() => {
let _msg = _jsx(FormattedMessage, { id: "ui.upScalingTierBadge.goFeature", defaultMessage: "ui.upScalingTierBadge.goFeature" });
switch (desiredTier) {
case SCCommunitySubscriptionTier.PROFESSIONAL:
_msg = _jsx(FormattedMessage, { id: "ui.upScalingTierBadge.professionalFeature", defaultMessage: "ui.upScalingTierBadge.professionalFeature" });
break;
case SCCommunitySubscriptionTier.ENTERPRISE:
_msg = _jsx(FormattedMessage, { id: "ui.upScalingTierBadge.enterpriseFeature", defaultMessage: "ui.upScalingTierBadge.enterpriseFeature" });
break;
default:
break;
}
return _msg;
}, [desiredTier]);
const badgeLabel = useMemo(() => {
let _label = _jsx(FormattedMessage, { id: "ui.upScalingTierBadge.go", defaultMessage: "ui.upScalingTierBadge.go" });
switch (desiredTier) {
case SCCommunitySubscriptionTier.PROFESSIONAL:
_label = _jsx(FormattedMessage, { id: "ui.upScalingTierBadge.professional", defaultMessage: "ui.upscalingBadge.professional" });
break;
case SCCommunitySubscriptionTier.ENTERPRISE:
_label = _jsx(FormattedMessage, { id: "ui.upScalingTierBadge.enterprise", defaultMessage: "ui.upScalingTierBadge.enterprise" });
break;
default:
break;
}
return _label;
}, [desiredTier]);
if (desiredTier === SCCommunitySubscriptionTier.ENTERPRISE && isEnterpriseTier) {
return null;
}
return (_jsx(Root, Object.assign({ classes: { root: classNames(className, classes.root) }, title: tooltipMsg, placement: "top" }, rest, { children: _jsx(Badge, { color: "secondary", size: "small", label: badgeLabel, className: classes.badge }) })));
}