/** * @prettier * @flow */ import React from 'react'; import type { Element } from 'react'; import BugReport from '@material-ui/icons/BugReport'; import Grid from '@material-ui/core/Grid/index'; import HomeIcon from '@material-ui/icons/Home'; import ListItem from '@material-ui/core/ListItem/index'; import Tooltip from '@material-ui/core/Tooltip/index'; import Tag from '../Tag'; import fileSizeSI from '../../utils/file-size'; import { formatDate, formatDateDistance } from '../../utils/package'; import { IProps } from './types'; import { Author, Avatar, Description, Details, GridRightAligned, Icon, IconButton, OverviewItem, PackageList, PackageListItem, PackageListItemText, PackageTitle, Published, TagContainer, Text, WrapperLink, } from './styles'; import { isURL } from '../../utils/url'; const Package = ({ author: { name: authorName, avatar: authorAvatar }, bugs: { url } = {}, description, dist: { unpackedSize } = {}, homepage, keywords = [], license, name: packageName, time, version, }: IProps): Element => { // const renderVersionInfo = () => version && ( {`v${version}`} ); const renderAuthorInfo = () => authorName && (
); const renderFileSize = () => unpackedSize && ( {fileSizeSI(unpackedSize)} ); const renderLicenseInfo = () => license && ( {license} ); const renderPublishedInfo = () => time && ( {`Published on ${formatDate(time)} •`} {`${formatDateDistance(time)} ago`} ); const renderHomePageLink = () => homepage && isURL(homepage) && ( {/* eslint-disable-next-line react/jsx-max-depth */} ); const renderBugsLink = () => url && isURL(url) && ( {/* eslint-disable-next-line react/jsx-max-depth */} ); const renderPrimaryComponent = () => { return ( {/* eslint-disable-next-line react/jsx-max-depth */} {packageName} {renderHomePageLink()} {renderBugsLink()} ); }; const renderSecondaryComponent = () => { const tags = keywords.sort().map((keyword, index) => {keyword}); return ( <> {description} {tags.length > 0 && {tags}} ); }; return ( {renderAuthorInfo()} {renderVersionInfo()} {renderPublishedInfo()} {renderFileSize()} {renderLicenseInfo()} ); }; export default Package;