diff --git a/web/src/lib/components/timeline/NotificationsPreview.stories.svelte b/web/src/lib/components/timeline/NotificationsPreview.stories.svelte
new file mode 100644
index 00000000..047e321a
--- /dev/null
+++ b/web/src/lib/components/timeline/NotificationsPreview.stories.svelte
@@ -0,0 +1,16 @@
+
+
+
+
+
+
diff --git a/web/src/lib/components/timeline/NotificationsPreview.svelte b/web/src/lib/components/timeline/NotificationsPreview.svelte
new file mode 100644
index 00000000..866cb352
--- /dev/null
+++ b/web/src/lib/components/timeline/NotificationsPreview.svelte
@@ -0,0 +1,37 @@
+
+
+
+ {#snippet action()}
+
+ View all
+
+
+ {/snippet}
+
+ {#if signedIn}
+
+ All caught up!
+
+ {:else}
+
+ Log in to view your inbox
+
+ {/if}
+
diff --git a/web/src/lib/components/timeline/PreviewEmpty.svelte b/web/src/lib/components/timeline/PreviewEmpty.svelte
new file mode 100644
index 00000000..10e6a433
--- /dev/null
+++ b/web/src/lib/components/timeline/PreviewEmpty.svelte
@@ -0,0 +1,16 @@
+
+
+
+
+ {@render children()}
+
diff --git a/web/src/routes/timeline/+page.svelte b/web/src/routes/timeline/+page.svelte
index 0b978193..4600cb4a 100644
--- a/web/src/routes/timeline/+page.svelte
+++ b/web/src/routes/timeline/+page.svelte
@@ -3,6 +3,7 @@
import GalleryVertical from "$icon/gallery-vertical";
import Button from "$lib/components/ui/Button.svelte";
import ButtonGroup from "$lib/components/ui/ButtonGroup.svelte";
+ import NotificationsPreview from "$lib/components/timeline/NotificationsPreview.svelte";
import Timeline from "$lib/components/timeline/Timeline.svelte";
import TrendingRepos from "$lib/components/timeline/TrendingRepos.svelte";
import type { PageData } from "./$types";
@@ -15,9 +16,16 @@