From fe7974a665d925d54bc9d2631eecb7cefc8a7e5c Mon Sep 17 00:00:00 2001
From: v4rgas <66626747+v4rgas@users.noreply.github.com>
Date: Wed, 24 Dec 2025 18:54:25 -0300
Subject: [PATCH] feat(ui): make entire post cards clickable
- Wrap PostCard and PostHeader in anchor tags for full card clickability
- Convert internal links to buttons with event propagation prevention
- Update UpvoteButton onclick handler to accept MouseEvent
- Remove unused escapeHtml function from OG image route
---
web/src/lib/components/PostCard.svelte | 43 +++++++++++-----------
web/src/lib/components/PostHeader.svelte | 39 +++++++++++---------
web/src/lib/components/UpvoteButton.svelte | 2 +-
web/src/routes/og/post/[id]/+server.ts | 13 +------
4 files changed, 47 insertions(+), 50 deletions(-)
diff --git a/web/src/lib/components/PostCard.svelte b/web/src/lib/components/PostCard.svelte
index b40e92c..39cfc60 100644
--- a/web/src/lib/components/PostCard.svelte
+++ b/web/src/lib/components/PostCard.svelte
@@ -93,46 +93,47 @@
}
-
-
-
+
+
diff --git a/web/src/lib/components/PostHeader.svelte b/web/src/lib/components/PostHeader.svelte
index 68dc53c..97058be 100644
--- a/web/src/lib/components/PostHeader.svelte
+++ b/web/src/lib/components/PostHeader.svelte
@@ -87,37 +87,42 @@
}
-
-
-
+
+
+
diff --git a/web/src/lib/components/UpvoteButton.svelte b/web/src/lib/components/UpvoteButton.svelte
index d10a5ae..a348933 100644
--- a/web/src/lib/components/UpvoteButton.svelte
+++ b/web/src/lib/components/UpvoteButton.svelte
@@ -8,7 +8,7 @@
}: {
count?: number;
active?: boolean;
- onclick?: () => void;
+ onclick?: (e: MouseEvent) => void;
disabled?: boolean;
loading?: boolean;
} = $props();
diff --git a/web/src/routes/og/post/[id]/+server.ts b/web/src/routes/og/post/[id]/+server.ts
index 6589e48..2234af1 100644
--- a/web/src/routes/og/post/[id]/+server.ts
+++ b/web/src/routes/og/post/[id]/+server.ts
@@ -22,8 +22,8 @@ export const GET: RequestHandler = async ({ params }) => {
the stack
- ${escapeHtml(title)}
- ${escapeHtml(subtitle)}
+ ${title}
+ ${subtitle}
`;
return new ImageResponse(html, {
@@ -31,12 +31,3 @@ export const GET: RequestHandler = async ({ params }) => {
height: 630
});
};
-
-function escapeHtml(str: string): string {
- return str
- .replace(/&/g, '&')
- .replace(//g, '>')
- .replace(/"/g, '"')
- .replace(/'/g, ''');
-}