diff --git a/apps/web/src/app/tool/tool-search/page.tsx b/apps/web/src/app/tool/tool-search/page.tsx index 86efb70..f7613a0 100644 --- a/apps/web/src/app/tool/tool-search/page.tsx +++ b/apps/web/src/app/tool/tool-search/page.tsx @@ -13,6 +13,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; import { TableVirtuoso } from 'react-virtuoso'; import { AppHeader } from '~/components/AppHeader'; import { CopyButton } from '~/components/CopyButton'; +import { LikeButton } from '~/components/LikeButton'; import { PackageManagerSelector, getInstallCommand, @@ -220,10 +221,13 @@ export default function ToolSearchPage(): React.ReactElement { {formatDownloads(tool.package.npmDownloadsLastMonth)} - - - {tool.likeCount ?? 0} - + diff --git a/apps/web/src/components/LikeButton.tsx b/apps/web/src/components/LikeButton.tsx index b4cc06a..8ef845e 100644 --- a/apps/web/src/components/LikeButton.tsx +++ b/apps/web/src/components/LikeButton.tsx @@ -35,6 +35,7 @@ export function LikeButton({ const [count, setCount] = useState(initialCount); const [isLoading, setIsLoading] = useState(false); const [hasFetched, setHasFetched] = useState(false); + const [showTooltip, setShowTooltip] = useState(false); // Fetch initial like status when user is logged in useEffect(() => { @@ -68,8 +69,9 @@ export function LikeButton({ const handleClick = useCallback(async () => { if (!session) { - // Redirect to sign in - window.location.href = '/sign-in'; + // Show tooltip instead of redirecting + setShowTooltip(true); + setTimeout(() => setShowTooltip(false), 2000); return; } @@ -111,21 +113,34 @@ export function LikeButton({ }, [session, liked, count, isLoading, entityType, entityId, onLikeChange]); return ( - +
+ + {showTooltip && ( +
+ + Sign in + {' '} + to like +
+
+
+
+ )} +
); }