'use client'; import { queryDocumentDetail } from '@/services/user/document'; import { Markdown } from '@repo/ui/markdown'; import { formatDate } from '@repo/ui/utils'; import { Avatar, AvatarFallback } from '@shadcn/ui/avatar'; import { buttonVariants } from '@shadcn/ui/button'; import { useOutsideClick } from '@shadcn/ui/hooks/use-outside-click'; import { cn } from '@shadcn/ui/lib/utils'; import { useQuery } from '@tanstack/react-query'; import { AnimatePresence, motion } from 'framer-motion'; import { useTranslations } from 'next-intl'; import { useEffect, useId, useRef, useState } from 'react'; export function DocumentButton({ items }: { items: API.Document[] }) { const t = useTranslations('document'); const [active, setActive] = useState(null); const id = useId(); const ref = useRef(null); const { data } = useQuery({ enabled: !!(active as API.Document)?.id, queryKey: ['queryDocumentDetail', (active as API.Document)?.id], queryFn: async () => { const { data } = await queryDocumentDetail({ id: (active as API.Document)?.id, }); return data.data?.content; }, }); useEffect(() => { function onKeyDown(event: KeyboardEvent) { if (event.key === 'Escape') { setActive(false); } } if (active && typeof active === 'object') { document.body.style.overflow = 'hidden'; } else { document.body.style.overflow = 'auto'; } window.addEventListener('keydown', onKeyDown); return () => window.removeEventListener('keydown', onKeyDown); }, [active]); useOutsideClick(ref, () => setActive(null)); return ( <> {active && typeof active === 'object' && ( )} {active && typeof active === 'object' ? (
setActive(null)} > {data || ''}
) : null}
); } export const CloseIcon = () => { return ( ); };