diff --git a/src/lib/components/backup/SnapshotHeader.svelte b/src/lib/components/backup/SnapshotHeader.svelte
new file mode 100644
index 0000000..7c1b9b7
--- /dev/null
+++ b/src/lib/components/backup/SnapshotHeader.svelte
@@ -0,0 +1,62 @@
+
+
+
+
+ {verb}
+ {#if nameType === 'stack'}{:else}{/if}
+ {name}
+ {#if destinationName}
+ {@const RepoIcon = getRepoTypeIcon(destinationRepository ?? '')}
+ from
+ {destinationName}
+ {/if}
+
+ {@render trailing?.()}
+ {#if snapshotId}{snapshotId.slice(0, 8)}{/if}
+ {#if snapshotTime}
+
+
+ taken{#if sourceEnvName} on {sourceEnvName}{/if}
+ {formatDateTime(snapshotTime)}
+ ({formatRelativeTime(snapshotTime)})
+
+ {/if}
+
diff --git a/src/lib/components/ui/field-label/field-label.svelte b/src/lib/components/ui/field-label/field-label.svelte
new file mode 100644
index 0000000..b831ebe
--- /dev/null
+++ b/src/lib/components/ui/field-label/field-label.svelte
@@ -0,0 +1,20 @@
+
+
+
diff --git a/src/lib/components/ui/field-label/index.ts b/src/lib/components/ui/field-label/index.ts
new file mode 100644
index 0000000..97a1a45
--- /dev/null
+++ b/src/lib/components/ui/field-label/index.ts
@@ -0,0 +1,7 @@
+import Root from "./field-label.svelte";
+
+export {
+ Root,
+ //
+ Root as FieldLabel,
+};
diff --git a/src/lib/components/ui/snapshot-load-progress/index.ts b/src/lib/components/ui/snapshot-load-progress/index.ts
new file mode 100644
index 0000000..5438035
--- /dev/null
+++ b/src/lib/components/ui/snapshot-load-progress/index.ts
@@ -0,0 +1,7 @@
+import Root from "./snapshot-load-progress.svelte";
+
+export {
+ Root,
+ //
+ Root as SnapshotLoadProgress,
+};
diff --git a/src/lib/components/ui/snapshot-load-progress/snapshot-load-progress.svelte b/src/lib/components/ui/snapshot-load-progress/snapshot-load-progress.svelte
new file mode 100644
index 0000000..e89daa0
--- /dev/null
+++ b/src/lib/components/ui/snapshot-load-progress/snapshot-load-progress.svelte
@@ -0,0 +1,23 @@
+
+
+
+
+
+ Loading snapshots…{#if total > 1} {done} of {total} repos{/if}
+