at main 1.5 kB view raw
1import React from 'react'; 2import { Heading } from '../Heading/Heading'; 3import { Paragraph } from '../Paragraph/Paragraph'; 4import * as styles from './CardNote.styles'; 5import { META_SEPARATOR } from './CardNote.constants'; 6import { BaseCardNoteProps } from './CardNote.types'; 7 8export const CardNote: React.FC<BaseCardNoteProps> = ({ className, coverImage, badge, meta, title, description, onClick }) => { 9 const CardWrapper = onClick ? 'button' : 'div'; 10 11 return ( 12 <CardWrapper className={styles.getCardWrapperStyles(onClick, className)} onClick={onClick}> 13 {/* Cover Image */} 14 {coverImage && ( 15 <div className={styles.coverImageContainer}> 16 <img src={coverImage} alt="" className={styles.coverImage} /> 17 </div> 18 )} 19 20 {/* Content */} 21 <div className={styles.contentContainer}> 22 {/* Badge + Meta */} 23 <div className={styles.badgeMetaContainer}> 24 {badge && <span className={styles.getBadgeStyles(badge.variant)}>{badge.label}</span>} 25 {meta && ( 26 <div className={styles.metaContainer}> 27 {meta.company && <span>{meta.company}</span>} 28 {meta.company && meta.date && <span>{META_SEPARATOR}</span>} 29 {meta.date && <span>{meta.date}</span>} 30 </div> 31 )} 32 </div> 33 34 {/* Title */} 35 <Heading level={3} size="lg">{title}</Heading> 36 {/* Description */} 37 {description && <Paragraph>{description}</Paragraph>} 38 </div> 39 </CardWrapper> 40 ); 41};