import { FormEvent, useState } from 'react' import { type ProjectWithEntryPointMetadata, paths } from '../Router' import { Link } from 'react-router-dom' import { ActionButton } from './ActionButton' import { faCheck, faPenAlt, faTrashAlt, faX, } from '@fortawesome/free-solid-svg-icons' import { FILE_EXT } from '../lib/tauriFS' import { Dialog } from '@headlessui/react' import { useHotkeys } from 'react-hotkeys-hook' function ProjectCard({ project, handleRenameProject, handleDeleteProject, ...props }: { project: ProjectWithEntryPointMetadata handleRenameProject: ( e: FormEvent, f: ProjectWithEntryPointMetadata ) => Promise handleDeleteProject: (f: ProjectWithEntryPointMetadata) => Promise }) { useHotkeys('esc', () => setIsEditing(false)) const [isEditing, setIsEditing] = useState(false) const [isConfirmingDelete, setIsConfirmingDelete] = useState(false) function handleSave(e: FormEvent) { e.preventDefault() handleRenameProject(e, project).then(() => setIsEditing(false)) } function getDisplayedTime(date: Date) { const startOfToday = new Date() startOfToday.setHours(0, 0, 0, 0) return date.getTime() < startOfToday.getTime() ? date.toLocaleDateString() : date.toLocaleTimeString() } return (
  • {isEditing ? (
    setIsEditing(false)} />
    ) : ( <>
    {project.name?.replace(FILE_EXT, '')} Edited {getDisplayedTime(project.entrypoint_metadata.modifiedAt)}
    setIsEditing(true)} className="!p-0" /> setIsConfirmingDelete(true)} />
    setIsConfirmingDelete(false)} className="relative z-50" >
    Delete File This will permanently delete "{project.name || 'this file'}".

    Are you sure you want to delete "{project.name || 'this file'} "? This action cannot be undone.

    { await handleDeleteProject(project) setIsConfirmingDelete(false) }} icon={{ icon: faTrashAlt, bgClassName: 'bg-destroy-80', iconClassName: 'text-destroy-20 group-hover:text-destroy-10 hover:text-destroy-10 dark:text-destroy-20 dark:group-hover:text-destroy-10 dark:hover:text-destroy-10', }} className="hover:border-destroy-40 dark:hover:border-destroy-40" > Delete setIsConfirmingDelete(false)} > Cancel
    )}
  • ) } export default ProjectCard