import { useEffect, useRef, useState, type ReactNode } from 'react'; export interface OriginPost { title: string; url: string; imageUrl?: string | null; subreddit?: string; } export function OriginPostCard({ post }: { post: OriginPost }) { const [isImageRevealed, setIsImageRevealed] = useState(false); return (
{post.imageUrl ? (
{`Source
) : null} Started from {post.subreddit ? `r/${post.subreddit}` : 'Reddit'} {post.title} Open original post
); } export function OriginPostButton({ children, post }: { children: ReactNode; post: OriginPost }) { const [isOpen, setIsOpen] = useState(false); const triggerRef = useRef(null); const closeRef = useRef(null); useEffect(() => { if (!isOpen) return; closeRef.current?.focus(); const closeOnEscape = (event: KeyboardEvent) => { if (event.key === 'Escape') setIsOpen(false); }; document.addEventListener('keydown', closeOnEscape); return () => document.removeEventListener('keydown', closeOnEscape); }, [isOpen]); function close() { setIsOpen(false); queueMicrotask(() => triggerRef.current?.focus()); } return ( <> {isOpen ? (
{ if (event.target === event.currentTarget) close(); }} role="dialog" >
Conversation origin
{post.imageUrl ? {`Source : null}
{post.subreddit ? r/{post.subreddit} : null}

{post.title}

Open Reddit post
) : null} ); }