event.preventDefault()}
>
{#each [["local", "Local", "ph:hard-drives"], ["cloud", "Cloud", "ph:cloud"]] as [value, label, icon]}
{/each}
{#if app.scope === "local"}
{:else if app.account}
{/if}
{#if app.scope === "local"}
{#each trail as crumb, index}
{/each}
{:else}
{#if !app.account}
Connect a TypstDrive account to sync your projects across devices.
{:else}
{#if app.cloudLoading}
{/if}
{#if cloudTrail.length > 0}
{#each cloudTrail as folder, index}
{/each}
{/if}
{#if app.cloudFolders.length > 0}
{#each app.cloudFolders as folder (folder.id)}
{@render cloudMenu(
`folder:${folder.id}`,
() => openCloudFolder(folder.id),
() => {},
null,
null,
)}
{/each}
{/if}
{#if app.cloudDocuments.length > 0}
Documents
{#each app.cloudDocuments as entry (entry.id)}
{@const linked = linkedDocument(entry.id)}
{@render cloudCard(
`document:${entry.id}`,
"ph:file-text",
entry.title,
linked
? `Document · ${entry.role}`
: `${entry.role} · ${formatDate(entry.updated_at)}`,
linked,
linked ? () => openTarget(linked.path) : null,
() => ondownloaddocument(entry.id, entry.title),
linked ? () => onremovedownload(linked.path) : null,
() => ondeletedocument(entry.id),
)}
{/each}
{/if}
{#if app.cloudFiles.length > 0}
Images and fonts
{#each app.cloudFiles as file (file.id)}
openCloudContextMenu(event, `file:${file.id}`)}
>
{@render cloudMenu(
`file:${file.id}`,
null,
() => ondownloadfile(file.id, file.name),
null,
() => ondeletefile(file.id),
)}
{file.name}
{formatDate(file.created_at)}
{/each}
{/if}
{#if app.cloudProjects.length === 0 && app.cloudDocuments.length === 0 && app.cloudFolders.length === 0 && app.cloudFiles.length === 0}
Nothing here yet.
{#if app.cloudFolder !== "shared"}
{/if}
{/if}
{#if app.cloudProjects.length > 0}
Cloud projects
{/if}
{#each app.cloudProjects as project (project.id)}
{@const linked = linkedProject(project.id)}
{@render cloudCard(
`project:${project.id}`,
"ph:folder-star",
project.name,
linked
? `Project · ${project.role}`
: `${project.role} · ${formatDate(project.updated_at)}`,
linked,
linked ? () => openTarget(linked.path) : null,
() => oncloneproject(project.id, project.name),
null,
project.role === "owner" ? () => ondeleteproject(project.id) : null,
)}
{/each}
{/if}
{/if}