import { useState } from "react"; import { ArticleData, QAData, TagItem } from "./article"; import { useRouter } from "next/navigation"; import { Portal } from '@radix-ui/react-portal'; import Image from 'next/image'; import aImage from '../../components/images/a.png' import qImage from '../../components/images/q.png'; import userImage from '../../components/images/user.png'; import React from "react"; import { FadeIn, FadeInStagger } from "../landing/fade-in"; import { useTranslation } from "react-i18next"; import { truncateString } from "@/lib/utils"; interface CardProps { image: string; title: string; time: string; summary: string; } export const Card: React.FC = (articleData) => { const [open, setOpen] = useState(false); const router = useRouter(); const handleToggle = () => { setOpen(!open); }; const defaultImage = "https://gimg3.baidu.com/search/src=http%3A%2F%2Fpics3.baidu.com%2Ffeed%2F4ec2d5628535e5dd7c7cdc23847e08e2cc1b62c4.jpeg%40f_auto%3Ftoken%3D38327d5cbefb2cd45af58f8d47c0a0b5&refer=http%3A%2F%2Fwww.baidu.com&app=2021&size=f360,240&n=0&g=0n&q=75&fmt=auto?sec=1710435600&t=eafc0a27ff3295bb5b0b9065fc33a523" return (
{ router.push(`/details/${articleData.id}`, { scroll: false }) }} className="cursor-pointer rounded border border-[#243c5a] overflow-hidden" >
{articleData.main_title} {/* 🔥 根据 model_parameter 来决定是否显示感叹号 */} {(!articleData.model_parameter) && (
!
)}

{truncateString(articleData.main_title)}

{articleData.updated_time}

{truncateString(articleData.sub_title || articleData.summary)}

{/* */}
{open && (
{/* 内容详情 */} {/* */}
)}
); }; interface QACardProps { question: string; questionAvatar: string; answer: string; answerAvatar: string; timestamp: string; author: string; } export const QACard: React.FC = (item) => { const [open, setOpen] = useState(false); const router = useRouter(); const handleToggle = () => { setOpen(!open); }; return ( // bg-secondary
{ router.push(`/qa/${item.id}`) }} >
{/* Questioner Avatar */}
Questioner Avatar

{truncateString(item.question)}

{/* Answerer Avatar */}
Answer Avatar

{truncateString(item.answer)}

admin Author
{item.id}
{item.updated_time}
); }; export interface TagsViewsProps { isQA: boolean selectedCategory: string categoriesRef: React.MutableRefObject onChange: (category: string) => any onClickQA: () => any } export const TagsViews: React.FC = React.memo(({ isQA, selectedCategory, categoriesRef, onChange, onClickQA }) => { // console.log('ChildComponent 渲染'); const activeColor = '#1A1A1A' const activeStyle = { } const defStyle = { } const { t } = useTranslation(); return (
{categoriesRef.current .map((item, index) => ( ))}
); });