'use client'; import { ProList } from '@/components/pro-list'; import { queryDocumentDetail, queryDocumentList } from '@/services/user/document'; import { Markdown } from '@repo/ui/markdown'; import { formatDate } from '@repo/ui/utils'; import { Button } from '@shadcn/ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@shadcn/ui/card'; import { useQuery } from '@tanstack/react-query'; import { ChevronLeft } from 'lucide-react'; import { useTranslations } from 'next-intl'; import { Fragment, useState } from 'react'; export default function Page() { const t = useTranslations('document'); const [tags, setTags] = useState([]); const [selected, setSelected] = useState(); const { data } = useQuery({ enabled: !!selected, queryKey: ['queryDocumentDetail', selected], queryFn: async () => { const { data } = await queryDocumentDetail({ id: selected!, }); return data.data; }, }); return ( {selected ? (
{data?.title} {formatDate(data?.updated_at)}
{data?.content || ''}
) : ( params={[ { key: 'tag', placeholder: t('category'), options: tags.map((item) => ({ label: item, value: item, })), }, ]} request={async (_, filter) => { const response = await queryDocumentList(); const list = response.data.data?.list || []; setTags( Array.from(new Set(list.reduce((acc: string[], item) => acc.concat(item.tags), []))), ); const filterList = list.filter((item) => filter.tag ? item.tags.includes(filter.tag) : true, ); return { list: filterList, total: filterList.length || 0, }; }} renderItem={(item) => { return ( {item.title}
  • {t('tags')} {item.tags.join(', ')}
  • {t('updatedAt')}
); }} /> )}
); }