mirror of
https://github.com/kmc7468/arkvault.git
synced 2025-12-16 23:18:48 +00:00
46 lines
1.5 KiB
Svelte
46 lines
1.5 KiB
Svelte
<script lang="ts">
|
|
import type { FileCacheIndex } from "$lib/indexedDB";
|
|
import type { FileInfoStore } from "$lib/modules/filesystem2";
|
|
import { formatDate, formatFileSize } from "$lib/modules/util";
|
|
|
|
import IconDraft from "~icons/material-symbols/draft";
|
|
import IconScanDelete from "~icons/material-symbols/scan-delete";
|
|
import IconDelete from "~icons/material-symbols/delete";
|
|
|
|
interface Props {
|
|
index: FileCacheIndex;
|
|
info: FileInfoStore;
|
|
onDeleteClick: (fileId: number) => void;
|
|
}
|
|
|
|
let { index, info, onDeleteClick }: Props = $props();
|
|
</script>
|
|
|
|
<div class="flex h-14 items-center gap-x-4 p-2">
|
|
{#if $info}
|
|
<div class="flex-shrink-0 rounded-full bg-blue-100 p-1 text-xl">
|
|
<IconDraft class="text-blue-400" />
|
|
</div>
|
|
{:else}
|
|
<div class="flex-shrink-0 rounded-full bg-red-100 p-1 text-xl">
|
|
<IconScanDelete class="text-red-400" />
|
|
</div>
|
|
{/if}
|
|
<div class="flex-grow overflow-hidden">
|
|
{#if $info.status === "success"}
|
|
<p title={$info.data.name} class="truncate font-medium">{$info.data.name}</p>
|
|
{:else}
|
|
<p class="font-medium">삭제된 파일</p>
|
|
{/if}
|
|
<p class="text-xs text-gray-800">
|
|
읽음 {formatDate(index.lastRetrievedAt)} · {formatFileSize(index.size)}
|
|
</p>
|
|
</div>
|
|
<button
|
|
onclick={() => setTimeout(() => onDeleteClick(index.fileId), 100)}
|
|
class="flex-shrink-0 rounded-full p-1 active:bg-gray-100"
|
|
>
|
|
<IconDelete class="text-lg text-gray-600" />
|
|
</button>
|
|
</div>
|