From 96fdf44f0e7d0b68b3234f6a1057c669e76a3ef0 Mon Sep 17 00:00:00 2001 From: rimar1337 <132627503+rimar1337@users.noreply.github.com> Date: Wed, 22 Oct 2025 13:19:15 +0700 Subject: [PATCH] clickable profile hover card --- src/components/UniversalPostRenderer.tsx | 1 + src/routes/profile.$did/index.tsx | 103 ++++++++++++++--------- 2 files changed, 62 insertions(+), 42 deletions(-) diff --git a/src/components/UniversalPostRenderer.tsx b/src/components/UniversalPostRenderer.tsx index e705570..90f04c2 100644 --- a/src/components/UniversalPostRenderer.tsx +++ b/src/components/UniversalPostRenderer.tsx @@ -1542,6 +1542,7 @@ function UniversalPostRenderer({ className="rounded-md p-4 w-72 bg-gray-50 dark:bg-gray-900 shadow-lg border border-gray-300 dark:border-gray-800 animate-slide-fade z-50" side={"bottom"} sideOffset={5} + onClick={onProfileClick} >
diff --git a/src/routes/profile.$did/index.tsx b/src/routes/profile.$did/index.tsx index e055404..c8757aa 100644 --- a/src/routes/profile.$did/index.tsx +++ b/src/routes/profile.$did/index.tsx @@ -2,13 +2,20 @@ import { RichText } from "@atproto/api"; import { useQueryClient } from "@tanstack/react-query"; import { createFileRoute, useNavigate } from "@tanstack/react-router"; import { useAtom } from "jotai"; -import React, { type ReactNode,useEffect, useState } from "react"; +import React, { type ReactNode, useEffect, useState } from "react"; import { Header } from "~/components/Header"; -import { renderTextWithFacets, UniversalPostRendererATURILoader } from "~/components/UniversalPostRenderer"; +import { + renderTextWithFacets, + UniversalPostRendererATURILoader, +} from "~/components/UniversalPostRenderer"; import { useAuth } from "~/providers/UnifiedAuthProvider"; import { imgCDNAtom } from "~/utils/atoms"; -import { toggleFollow, useGetFollowState, useGetOneToOneState } from "~/utils/followState"; +import { + toggleFollow, + useGetFollowState, + useGetOneToOneState, +} from "~/utils/followState"; import { useInfiniteQueryAuthorFeed, useQueryIdentity, @@ -172,13 +179,13 @@ function ProfileComponent() {
{displayName}
- + {handle}
{description && (
{/* {description} */} - +
)}
@@ -222,50 +229,50 @@ function ProfileComponent() { ); } -export function FollowButton({targetdidorhandle}:{targetdidorhandle: string}) { - const {agent} = useAuth() - const {data: identity} = useQueryIdentity(targetdidorhandle); +export function FollowButton({ + targetdidorhandle, +}: { + targetdidorhandle: string; +}) { + const { agent } = useAuth(); + const { data: identity } = useQueryIdentity(targetdidorhandle); const queryClient = useQueryClient(); const followRecords = useGetFollowState({ target: identity?.did ?? targetdidorhandle, user: agent?.did, }); - + return ( <> {identity?.did !== agent?.did ? ( <> {!(followRecords?.length && followRecords?.length > 0) ? ( ) : (