Skip to content
Snippets Groups Projects
index.tsx 2.21 KiB
Newer Older
import React from "react";
import styles from "./style.module.scss";

import classNames from "classnames";

import applicationPDF from "assets/images/pdf-banner.png";
import applicationDocument from "assets/images/document-banner.png";
danieldeng2's avatar
danieldeng2 committed
import applicationLink from "assets/images/link-banner.png";
import applicationVideo from "assets/images/video-banner.png";

import Badge from "react-bootstrap/Badge";
import Card from "react-bootstrap/Card";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { IconDefinition } from "@fortawesome/free-solid-svg-icons";
export interface FileCardProps {
  title: string;
  type: string;
	icon: IconDefinition;
	thumbnail?: string;
  onIconClick: (event: React.MouseEvent) => void;
  onClick: (event: React.MouseEvent) => void;
  onMouseOver: (event: React.MouseEvent) => void;
  onMouseOut: (event: React.MouseEvent) => void;
}

const FileCard: React.FC<FileCardProps> = ({
  title,
  type,
	icon,
	thumbnail,
  onIconClick,
  onClick,
  onMouseOver,
}: FileCardProps) => {
  let banner: string;
  switch (type) {
    case "pdf":
      banner = applicationPDF;
      break;
    case "video":
			banner = applicationVideo;
danieldeng2's avatar
danieldeng2 committed
			break;
		case "link":
			banner = applicationLink;
			break;
    default:
      banner = applicationDocument;
      break;
  }
danieldeng2's avatar
danieldeng2 committed
      className={styles.fileCard}
      onClick={onClick}
      onMouseOver={onMouseOver}
      onMouseOut={onMouseOut}
    >
      <Card.Img variant="top"  src={thumbnail || banner} />
      <Card.Body>
        <Card.Title style={{ wordWrap: "break-word" }}>{title}</Card.Title>
          style={{
            marginLeft: "0.5rem",
            fontSize: "1.125rem",
            cursor: "default"
          }}
          icon={icon}
          onClick={onIconClick}
        />
      </Card.Body>
      <Card.Footer>
          <Badge
            pill
            key={tag}
            className={classNames(
danieldeng2's avatar
danieldeng2 committed
              styles.fileTag,
              tag === "new" ? styles.tagTeal : styles.tagBlue
            )}
          >
            {tag}
          </Badge>
        ))}
      </Card.Footer>
    </Card>
  );
};

export default FileCard;