* wip - <PodcastArticle /> component.
* Added filler user avatar for other article types.
* Added <LoadingArticle /> component.
* wip
* wip on <Article /> component.
* Added <Article /> component to barrel file.
* Deleted assets from dummy storybook assets folder.
* Updated podcast article story avatar.
* More work on <Article /> component.
* Refactoring Storybook stories.
* Refactored so main component is just the <Article /> component.
* Added a missing video article property.
* Some refactoring of <Article /> component.
* Added Storybook knobs addon.
* Now <Article /> component supports an isBookmarked prop.
* Fixed podcast Storybook story.
* Made the knobs Storybook addon the first tab
* Added more <Article /> Storybook stories.
* More <Article /> component tweaks.
* Added publish time to <Article /> component stories.
* Made the timeAgo function compatible with Preact.
* Added loading="lazy" attribute to <img /> in <Article /> component.
* Added <Article /> Storybook story for past published date.
* Fixed publish date for <Article /> story data.
* Scrapped random avatars.
* Added snapshots for <Article /> component.
* Added snapshots for <LoadingArticle /> component.
* Now test article entities are shared.
* Fixed some wording of Storybook stories.
* Breaking up Article.jsx to make codeclimate happy.
* Now <Article /> component receives icon props.
* Added knobs for <Article /> icon props.
* Added *.stories.jsx to codeclimate exclusion list.
* Added **/*.stories.jsx to codeclimate exclusion list.
* Alright now we have the good glob for excluding Storybook from codeclimate 😆
* Added org headline changes from low hanging fruit PR.
* Updated <Article /> snapshot for org headline.
43 lines
1 KiB
JavaScript
43 lines
1 KiB
JavaScript
import { h } from 'preact';
|
|
import PropTypes from 'prop-types';
|
|
|
|
import { articlePropTypes } from '../../src/components/common-prop-types';
|
|
|
|
export const ContentTitle = ({ article, currentTag }) => (
|
|
<h3>
|
|
{article.flare_tag && currentTag !== article.flare_tag.name && (
|
|
<span
|
|
className="tag-identifier"
|
|
style={{
|
|
background: article.flare_tag.bg_color_hex,
|
|
color: article.flare_tag.text_color_hex,
|
|
}}
|
|
>
|
|
{`#${article.flare_tag.name}`}
|
|
</span>
|
|
)}
|
|
{article.class_name === 'PodcastEpisode' && (
|
|
<span className="tag-identifier">podcast</span>
|
|
)}
|
|
{article.class_name === 'User' && (
|
|
<span
|
|
className="tag-identifier"
|
|
style={{ background: '#5874d9', color: 'white' }}
|
|
>
|
|
person
|
|
</span>
|
|
)}
|
|
{filterXSS(article.title)}
|
|
</h3>
|
|
);
|
|
|
|
ContentTitle.defaultProps = {
|
|
currentTag: null,
|
|
};
|
|
|
|
ContentTitle.propTypes = {
|
|
article: articlePropTypes.isRequired,
|
|
currentTag: PropTypes.string,
|
|
};
|
|
|
|
ContentTitle.displayName = 'ContentTitle';
|