/** * Copyright 2021 Design Barn Inc. */ import React, { Fragment } from 'react'; import { EmptyHamsterIcon, FolderBigIcon } from '../../../../../assets/Icons'; import { useWorkspace } from '../../../../../context/workspace-provider'; import { toHumanDate } from '../../../../../utils/helpers'; import './folder-card.css'; interface FolderCardProps { filesCount: number; id: string; meta: { modifiedAt: Date; modifiedBy: string; }; name: string; thumbnails: Thumbnail[]; } interface Thumbnail { thumbnails: { png: { small: { url: string; }; }; }; } export const FolderCard: React.FC = ({ filesCount, id, meta, name, thumbnails }: FolderCardProps) => { const { goTo } = useWorkspace(); const goToFolder = () => { goTo({ id, node: 'Folder' }); }; const renderThumbnails = () => { const previews = [...thumbnails, '', '', ''].slice(0, filesCount > 3 ? 3 : filesCount); let className = ''; if (filesCount >= 3) { className = 'thumbnail-grid'; } else if (filesCount === 2) { className = 'h-full grid grid-cols-2 grid-rows-1 gap-2'; } if (filesCount > 0) { return (
{previews.map((previewObj: Thumbnail, i: number) => { const preview = previewObj?.thumbnails?.png?.small?.url; if (filesCount > 3 && i === 2) { return (
{filesCount - 3 > 99 ? '99+' : `+${filesCount - 3}`}
); } return ( {preview ? ( ) : ( )} ); })}
); } return ; }; return (
{/* Without min-height: 0 content overshoots :/ */}
{renderThumbnails()}
{name}
Modified by {meta.modifiedBy} {toHumanDate(new Date(meta.modifiedAt)) as string}
); };