diff --git a/frontend/src/routes/conversations/+page.svelte b/frontend/src/routes/conversations/+page.svelte
index 4ba259af..25665cdb 100644
--- a/frontend/src/routes/conversations/+page.svelte
+++ b/frontend/src/routes/conversations/+page.svelte
@@ -1,10 +1,10 @@
@@ -74,124 +55,18 @@ const enrichedDocuments = $derived(
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- applyFilters()}
- class="block w-full border-line py-2.5 text-sm shadow-sm focus:border-ink focus:ring-ink"
- />
-
-
-
-
-
- applyFilters()}
- class="block w-full border-line py-2.5 text-sm shadow-sm focus:border-ink focus:ring-ink"
- />
-
-
-
-
-
-
-
-
+
{#if !senderId || !receiverId}
@@ -219,127 +94,11 @@ const enrichedDocuments = $derived(
{m.conv_no_results_text()}
{:else}
-
-
- {#if yearFrom !== null && yearTo !== null}
-
- {m.conv_summary({ count: data.documents.length, yearFrom, yearTo })}
-
- {:else}
-
- {data.documents.length}
-
- {/if}
- {#if data.canWrite}
-
-
- {m.conv_new_doc_link()}
-
- {/if}
-
-
-
-
-
-
-
-
-
- {#each enrichedDocuments as { doc, year, showYearDivider } (doc.id)}
- {#if showYearDivider}
-
- {/if}
- {@const isRight = doc.sender?.id === senderId}
-
-
-
- {/each}
-
-
-
+
{/if}
diff --git a/frontend/src/routes/conversations/ConversationFilterBar.svelte b/frontend/src/routes/conversations/ConversationFilterBar.svelte
new file mode 100644
index 00000000..1dfdd1f4
--- /dev/null
+++ b/frontend/src/routes/conversations/ConversationFilterBar.svelte
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
onapplyFilters()}
+ />
+
+
+
+
+
+
+
+
+
+
onapplyFilters()}
+ />
+
+
+
+
+
+
+
+ onapplyFilters()}
+ class="block w-full border-line py-2.5 text-sm shadow-sm focus:border-ink focus:ring-ink"
+ />
+
+
+
+
+
+ onapplyFilters()}
+ class="block w-full border-line py-2.5 text-sm shadow-sm focus:border-ink focus:ring-ink"
+ />
+
+
+
+
+
+
+
+
diff --git a/frontend/src/routes/conversations/ConversationTimeline.svelte b/frontend/src/routes/conversations/ConversationTimeline.svelte
new file mode 100644
index 00000000..c1cac55f
--- /dev/null
+++ b/frontend/src/routes/conversations/ConversationTimeline.svelte
@@ -0,0 +1,164 @@
+
+
+
+
+ {#if yearFrom !== null && yearTo !== null}
+
+ {m.conv_summary({ count: documents.length, yearFrom, yearTo })}
+
+ {:else}
+
+ {documents.length}
+
+ {/if}
+ {#if canWrite}
+
+
+ {m.conv_new_doc_link()}
+
+ {/if}
+
+
+
+
+
+
+
+
+
+ {#each enrichedDocuments as { doc, year, showYearDivider } (doc.id)}
+ {#if showYearDivider}
+
+ {/if}
+ {@const isRight = doc.sender?.id === senderId}
+
+
+
+ {/each}
+
+
+