My personal website
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};