aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/atoms/layout/copyright.tsx
blob: c60ff8baba6521f78927005274b73b203a685f1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import type { FC, ReactNode } 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).
 */
export const Copyright: FC<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>
  );
};