53 lines
1.0 KiB
JavaScript
53 lines
1.0 KiB
JavaScript
import React from 'react'
|
|
import { dateFormat } from '../lib/date'
|
|
import { Share } from './Share'
|
|
|
|
const Tag = ({ children }) => (
|
|
<li className="ArticleTags-Item">
|
|
{children}
|
|
</li>
|
|
)
|
|
|
|
const TagList = ({ tags }) => (
|
|
<ul className="ArticleTags">
|
|
{tags.map((x, i) => (
|
|
<Tag key={i}># {x.name}</Tag>
|
|
))}
|
|
</ul>
|
|
)
|
|
|
|
const Head = ({ date, tags = [], children }) => (
|
|
<header className="Article-Head">
|
|
<h1>{children}</h1>
|
|
|
|
{!date ? null : (
|
|
<p className="date">{dateFormat(date)}</p>
|
|
)}
|
|
|
|
{!(tags.length) ? null : (
|
|
<TagList tags={tags} />
|
|
)}
|
|
</header>
|
|
)
|
|
|
|
const Article = ({ children, date, tags, title, shareable }) => (
|
|
<article className="Article">
|
|
<Head
|
|
date={date}
|
|
tags={tags}
|
|
>
|
|
{title}
|
|
</Head>
|
|
|
|
<div className="Article-Body">
|
|
{children}
|
|
</div>
|
|
|
|
{!shareable ? null : (
|
|
<Share />
|
|
)}
|
|
</article>
|
|
)
|
|
|
|
export default Article
|