mirror of
https://github.com/oceanprotocol/market.git
synced 2024-12-02 05:57:29 +01:00
59 lines
1.4 KiB
TypeScript
59 lines
1.4 KiB
TypeScript
import React from 'react'
|
|
import { Link } from 'gatsby'
|
|
import Dotdotdot from 'react-dotdotdot'
|
|
import { MetaDataMarket } from '../../@types/MetaData'
|
|
import Tags from '../atoms/Tags'
|
|
import Price from '../atoms/Price'
|
|
import styles from './AssetTeaser.module.css'
|
|
import Rating from '../atoms/Rating'
|
|
|
|
declare type AssetTeaserProps = {
|
|
did: string
|
|
metadata: MetaDataMarket
|
|
}
|
|
|
|
const AssetTeaser: React.FC<AssetTeaserProps> = ({
|
|
did,
|
|
metadata
|
|
}: AssetTeaserProps) => {
|
|
const { name, price } = metadata.main
|
|
|
|
const {
|
|
description,
|
|
copyrightHolder,
|
|
tags,
|
|
categories,
|
|
access
|
|
} = metadata.additionalInformation
|
|
|
|
const { curation } = metadata
|
|
|
|
return (
|
|
<article className={styles.teaser}>
|
|
<Link to={`/asset/${did}`} className={styles.link}>
|
|
<h1 className={styles.title}>{name}</h1>
|
|
{access === 'Compute' && (
|
|
<div className={styles.accessLabel}>{access}</div>
|
|
)}
|
|
<Rating curation={curation} readonly />
|
|
|
|
<div className={styles.content}>
|
|
<Dotdotdot tagName="p" clamp={3}>
|
|
{description || ''}
|
|
</Dotdotdot>
|
|
|
|
{tags && (
|
|
<Tags className={styles.tags} items={tags} max={3} noLinks />
|
|
)}
|
|
</div>
|
|
|
|
<footer className={styles.foot}>
|
|
<Price price={price} small />
|
|
</footer>
|
|
</Link>
|
|
</article>
|
|
)
|
|
}
|
|
|
|
export default AssetTeaser
|