design-comuni-plone-theme
Version:
Volto Theme for Italia design guidelines
58 lines (50 loc) • 1.49 kB
JSX
import React from 'react';
import { useIntl, defineMessages } from 'react-intl';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { UniversalLink } from '@plone/volto/components';
import { Icon } from 'design-comuni-plone-theme/components/ItaliaTheme';
const propTypes = {
iconName: PropTypes.string,
date: PropTypes.any,
href: PropTypes.string,
};
const messages = defineMessages({
categoryIcon: {
id: 'category_icon',
defaultMessage: 'Icona categoria',
},
});
const CardCategory = (props) => {
const { iconName, date, href, children, ...rest } = props;
const intl = useIntl();
const classes = classNames({
'category-top': date || ' ',
'categoryicon-top': iconName,
});
// Simple category link
const categoryLink = href && (
<UniversalLink href={href} className="category">
{children}
</UniversalLink>
);
const categoryDate = date && (
<span className="data d-inline-flex">{date}</span>
);
// Category with icon
const categoryText = !href && children && (
<span className="text">{children}</span>
);
const iconTitle = rest.title || intl.formatMessage(messages.categoryIcon);
const categoryIcon = iconName && <Icon icon={iconName} title={iconTitle} />;
return (
<div className={classes} {...rest}>
{categoryLink}
{categoryIcon}
{categoryText}
{categoryDate}
</div>
);
};
CardCategory.propTypes = propTypes;
export default CardCategory;