diff --git a/src/components/EmbeddedNaddr.tsx b/src/components/EmbeddedNaddr.tsx index 7948c2ca..5630b873 100644 --- a/src/components/EmbeddedNaddr.tsx +++ b/src/components/EmbeddedNaddr.tsx @@ -12,6 +12,7 @@ import { useAuthor } from '@/hooks/useAuthor'; import { genUserName } from '@/lib/genUserName'; import { timeAgo } from '@/lib/timeAgo'; import { cn } from '@/lib/utils'; +import { EXTRA_KINDS, getKindIcon } from '@/lib/extraKinds'; import type { NostrEvent } from '@nostrify/nostrify'; interface EmbeddedNaddrProps { @@ -190,6 +191,16 @@ function EmbeddedNaddrCard({ event, className }: { event: NostrEvent; className? return description.slice(0, MAX_CONTENT_LENGTH).trimEnd() + '…'; }, [description]); + // Kind label for context (e.g. "development" with icon) + const kindMeta = useMemo(() => { + const kindDef = EXTRA_KINDS.find((def) => + def.subKinds?.some((sub) => sub.kind === event.kind) || def.kind === event.kind + || def.extraFeedKinds?.includes(event.kind), + ); + if (!kindDef) return undefined; + return { label: kindDef.label.toLowerCase(), Icon: getKindIcon(event.kind) }; + }, [event.kind]); + return (
)} + {/* Kind label for context */} + {kindMeta && ( +

+ {kindMeta.Icon && } + {kindMeta.label} +

+ )}
); diff --git a/src/components/EmbeddedNote.tsx b/src/components/EmbeddedNote.tsx index d46e6add..c14381cf 100644 --- a/src/components/EmbeddedNote.tsx +++ b/src/components/EmbeddedNote.tsx @@ -16,6 +16,7 @@ import { timeAgo } from '@/lib/timeAgo'; import { cn } from '@/lib/utils'; import { useAppContext } from '@/hooks/useAppContext'; import { IMAGE_URL_REGEX, IMETA_MEDIA_URL_REGEX, extractVideoUrls, extractAudioUrls } from '@/lib/mediaUrls'; +import { EXTRA_KINDS, getKindIcon } from '@/lib/extraKinds'; /** NIP-62 Request to Vanish. */ const VANISH_KIND = 62; @@ -105,7 +106,7 @@ function EmbeddedNoteCard({ className, disableHoverCards, }: { - event: { id: string; pubkey: string; content: string; created_at: number; tags: string[][] }; + event: { id: string; kind: number; pubkey: string; content: string; created_at: number; tags: string[][] }; className?: string; disableHoverCards?: boolean; }) { @@ -142,9 +143,18 @@ function EmbeddedNoteCard({ const getTag = (name: string) => event.tags.find(([n]) => n === name)?.[1]; const title = getTag('title') || getTag('name') || getTag('d'); const description = getTag('summary') || getTag('description'); - if (!title && !description) return undefined; - return { title, description }; - }, [truncatedContent, event.tags]); + + // Build a kind label line for context (e.g. "nsite · 31 files") + const kindDef = EXTRA_KINDS.find((def) => + def.subKinds?.some((sub) => sub.kind === event.kind) || def.kind === event.kind + || def.extraFeedKinds?.includes(event.kind), + ); + const kindLabel = kindDef?.label.toLowerCase(); + const KindIcon = getKindIcon(event.kind); + + if (!title && !description && !kindLabel) return undefined; + return { title, description, kindLabel, KindIcon }; + }, [truncatedContent, event.tags, event.kind]); // Extract first image for a small thumbnail const firstImage = useMemo(() => { @@ -267,6 +277,12 @@ function EmbeddedNoteCard({ {tagMeta.description && (

{tagMeta.description}

)} + {tagMeta.kindLabel && ( +

+ {tagMeta.KindIcon && } + {tagMeta.kindLabel} +

+ )} ) : null}