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; | 
