'use client' import type { FC } from 'react' import React from 'react' import { useTranslation } from 'react-i18next' import { RiDeleteBinLine, RiEditLine } from '@remixicon/react' import type { AnnotationItem } from './type' import RemoveAnnotationConfirmModal from './remove-annotation-confirm-modal' import ActionButton from '@/app/components/base/action-button' import useTimestamp from '@/hooks/use-timestamp' import cn from '@/utils/classnames' type Props = { list: AnnotationItem[] onRemove: (id: string) => void onView: (item: AnnotationItem) => void } const List: FC = ({ list, onView, onRemove, }) => { const { t } = useTranslation() const { formatTime } = useTimestamp() const [currId, setCurrId] = React.useState(null) const [showConfirmDelete, setShowConfirmDelete] = React.useState(false) return (
{list.map(item => ( { onView(item) } } > ))}
{t('appAnnotation.table.header.question')} {t('appAnnotation.table.header.answer')} {t('appAnnotation.table.header.createdAt')} {t('appAnnotation.table.header.hits')} {t('appAnnotation.table.header.actions')}
{item.question} {item.answer} {formatTime(item.created_at, t('appLog.dateTimeFormat') as string)} {item.hit_count} e.stopPropagation()}> {/* Actions */}
onView(item)}> { setCurrId(item.id) setShowConfirmDelete(true) }} >
setShowConfirmDelete(false)} onRemove={() => { onRemove(currId as string) setShowConfirmDelete(false) }} />
) } export default React.memo(List)