+
+
+
+
+
+
+
+
+ {user.displayName || user.username}
+
+
+ @{user.username}
+
+
+
+ {/* Render the FollowButton if it's not the user's own profile */}
+ {!isOwnProfile && token && (
+
+ )}
- {/* Render the FollowButton if it's not the user's own profile */}
- {!isOwnProfile && token && (
- {user.bio}
+
+
+ Joined {new Date(user.joinedAt).toLocaleDateString()}
+
+
+
+ {/* Thoughts Feed */}
+
+ {thoughts.map((thought) => (
+
+ ))}
+ {thoughts.length === 0 && (
+
+ This user hasn't posted any thoughts yet.
+
)}
-
-
{user.bio}
-
-
- Joined {new Date(user.joinedAt).toLocaleDateString()}
-
-
-
- {/* Thoughts Feed */}
-
- {thoughts.map((thought) => (
-
- ))}
- {thoughts.length === 0 && (
-
- This user hasn't posted any thoughts yet.
-
- )}
diff --git a/thoughts-frontend/components/popular-tags.tsx b/thoughts-frontend/components/popular-tags.tsx
new file mode 100644
index 0000000..9464f68
--- /dev/null
+++ b/thoughts-frontend/components/popular-tags.tsx
@@ -0,0 +1,45 @@
+import Link from "next/link";
+import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
+import { Badge } from "@/components/ui/badge";
+import { getPopularTags } from "@/lib/api";
+import { Hash } from "lucide-react";
+
+export async function PopularTags() {
+ const tags = await getPopularTags().catch(() => []);
+
+ if (tags.length === 0) {
+ return (
+