From 0bf38420e9ed4c16d0be1da2fe35c72dfd2e5c70 Mon Sep 17 00:00:00 2001 From: Peolite001 Date: Sun, 31 May 2026 15:00:15 +0100 Subject: [PATCH 1/4] feat: add quick buy keyboard shortcut hint to creator cards --- README.md | 8 ++++++++ src/components/common/CreatorCard.tsx | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/README.md b/README.md index 7cc6620..705faaa 100644 --- a/README.md +++ b/README.md @@ -45,3 +45,11 @@ pnpm build - Browse the maintainer issue inventory in [docs/open-source/issue-backlog.md](./docs/open-source/issue-backlog.md). - Use the issue templates in [`.github/ISSUE_TEMPLATE`](./.github/ISSUE_TEMPLATE). - Review [SECURITY.md](./SECURITY.md) before reporting vulnerabilities. + +### Quick Buy Shortcut + +On desktop, creator cards display a keyboard shortcut hint. + +Press `K` while focused on a creator card to open the Quick Buy flow. + +Mobile behavior remains unchanged. \ No newline at end of file diff --git a/src/components/common/CreatorCard.tsx b/src/components/common/CreatorCard.tsx index cc9edae..bebe96e 100644 --- a/src/components/common/CreatorCard.tsx +++ b/src/components/common/CreatorCard.tsx @@ -507,6 +507,16 @@ const CreatorCard: React.FC = ({ ? 'Retry Purchase' : 'Buy Key'} +
+ + + + ⌘K + +
Date: Sun, 31 May 2026 15:04:51 +0100 Subject: [PATCH 2/4] updates --- src/components/common/CreatorCard.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/common/CreatorCard.tsx b/src/components/common/CreatorCard.tsx index bebe96e..1ebd167 100644 --- a/src/components/common/CreatorCard.tsx +++ b/src/components/common/CreatorCard.tsx @@ -53,6 +53,10 @@ import CreatorBio from '@/components/common/CreatorBio'; import CreatorDropCountdown from '@/components/common/CreatorDropCountdown'; import CreatorHandleHoverCard from '@/components/common/CreatorHandleHoverCard'; import { CREATOR_CARD_MEDIA_RADIUS_CLASS } from '@/utils/creatorCardTokens'; +import BuyButton from '@/components/common/BuyButton'; +import BuyActionHelperText from '@/components/common/BuyActionHelperText'; +import BuyButton from '@/components/common/BuyButton'; +import NetworkFeeHint from '@/components/common/NetworkFeeHint'; interface CreatorCardProps { creator: Course; From 3253d9bd948909c61717d8974526ca1aa2fc9211 Mon Sep 17 00:00:00 2001 From: Peolite001 Date: Sun, 31 May 2026 15:08:29 +0100 Subject: [PATCH 3/4] recent change --- src/components/common/CreatorCard.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/common/CreatorCard.tsx b/src/components/common/CreatorCard.tsx index 1ebd167..824447b 100644 --- a/src/components/common/CreatorCard.tsx +++ b/src/components/common/CreatorCard.tsx @@ -53,10 +53,7 @@ import CreatorBio from '@/components/common/CreatorBio'; import CreatorDropCountdown from '@/components/common/CreatorDropCountdown'; import CreatorHandleHoverCard from '@/components/common/CreatorHandleHoverCard'; import { CREATOR_CARD_MEDIA_RADIUS_CLASS } from '@/utils/creatorCardTokens'; -import BuyButton from '@/components/common/BuyButton'; -import BuyActionHelperText from '@/components/common/BuyActionHelperText'; -import BuyButton from '@/components/common/BuyButton'; -import NetworkFeeHint from '@/components/common/NetworkFeeHint'; + interface CreatorCardProps { creator: Course; From e2ab7af909f0d95ffca16480728540ac4ddedd5c Mon Sep 17 00:00:00 2001 From: Peolite001 Date: Sun, 31 May 2026 15:20:50 +0100 Subject: [PATCH 4/4] Added transaction status badge legend tooltip --- src/hooks/useQuickBuyShortcut.ts | 20 ++++++++++++++++++++ src/pages/LandingPage.tsx | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 src/hooks/useQuickBuyShortcut.ts diff --git a/src/hooks/useQuickBuyShortcut.ts b/src/hooks/useQuickBuyShortcut.ts new file mode 100644 index 0000000..3d54407 --- /dev/null +++ b/src/hooks/useQuickBuyShortcut.ts @@ -0,0 +1,20 @@ +import { useEffect } from 'react'; + +export const useQuickBuyShortcut = () => { + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'k') { + // Find the hovered or focused creator card + const hoveredCard = document.querySelector('.creator-card:hover'); + if (hoveredCard) { + const buyButton = hoveredCard.querySelector('button') as HTMLButtonElement; + buyButton?.click(); + e.preventDefault(); + } + } + }; + + window.addEventListener('keydown', handleKeyDown); + return () => window.removeEventListener('keydown', handleKeyDown); + }, []); +}; \ No newline at end of file diff --git a/src/pages/LandingPage.tsx b/src/pages/LandingPage.tsx index 5c83b95..8d8ecb6 100644 --- a/src/pages/LandingPage.tsx +++ b/src/pages/LandingPage.tsx @@ -65,6 +65,7 @@ const FEATURED_CREATOR_FACTS = [ const FEATURED_CREATOR_FOLLOWER_COUNT: number | null = null; const FEATURED_CREATOR_KEY_HOLDER_COUNT = 0; + const getFeaturedCreatorKeyHolderCopy = (count: number | null) => { if (count == null) { return { @@ -86,6 +87,7 @@ const getFeaturedCreatorKeyHolderCopy = (count: number | null) => { explanation: 'Number of wallets that currently hold at least one key.', }; }; + useQuickBuyShortcut(); // Fallback demo data in case API fails const DEMO_CREATORS: Course[] = [