diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-04-11 18:50:20 +0200 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-04-11 18:50:20 +0200 |
| commit | a7adae1a2376082841053c91508b1c23dc951b74 (patch) | |
| tree | 07ef9ae47b00f2ce2cf9432f3300974171071bb3 /src/components/atoms/layout/copyright.tsx | |
| parent | 6a898c510f5c9b5469f639472970d1fefe9766ca (diff) | |
chore: add a Copyright component
Diffstat (limited to 'src/components/atoms/layout/copyright.tsx')
| -rw-r--r-- | src/components/atoms/layout/copyright.tsx | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/components/atoms/layout/copyright.tsx b/src/components/atoms/layout/copyright.tsx new file mode 100644 index 0000000..76252ee --- /dev/null +++ b/src/components/atoms/layout/copyright.tsx @@ -0,0 +1,59 @@ +import { ReactNode, VFC } from 'react'; +import styles from './copyright.module.scss'; + +export type CopyrightDates = { + /** + * The copyright start year. + */ + start: string; + /** + * The copyright end year. + */ + end?: string; +}; + +export type CopyrightProps = { + /** + * The copyright owner. + */ + owner: string; + /** + * The copyright dates. + */ + dates: CopyrightDates; + /** + * The copyright icon. + */ + icon: ReactNode; +}; + +/** + * Copyright component + * + * Renders a copyright information (owner, dates, license icon). + */ +const Copyright: VFC<CopyrightProps> = ({ owner, dates, icon }) => { + const getFormattedDate = (date: string) => { + const datetime = new Date(date).toISOString(); + + return <time dateTime={datetime}>{date}</time>; + }; + + return ( + <div className={styles.wrapper}> + <span className={styles.owner}>{owner}</span> + {icon} + {getFormattedDate(dates.start)} + {dates.end ? ( + <> + <span>-</span> + {getFormattedDate(dates.end)} + </> + ) : ( + '' + )} + </div> + ); +}; + +export default Copyright; |
