From 48c8181fca8201f09e7c033a448d23d1d4d61b78 Mon Sep 17 00:00:00 2001 From: Kaiwen Gong <1724916415@qq.com> Date: Fri, 26 Jul 2024 17:51:58 +0800 Subject: [PATCH] feat: align the NewsDetail page style with the related contents on the Search page --- ui/app/news/[id]/page.tsx | 2 +- .../{ => NewsDetailPage}/ContextItem.tsx | 35 +++++++----- .../{ => NewsDetailPage}/ExpandableItems.tsx | 0 .../{ => NewsDetailPage}/NewsDetail.tsx | 0 .../NewsDetailPage/PreviewNewsDetail.tsx | 53 +++++++++++++++++++ 5 files changed, 75 insertions(+), 15 deletions(-) rename ui/components/{ => NewsDetailPage}/ContextItem.tsx (67%) rename ui/components/{ => NewsDetailPage}/ExpandableItems.tsx (100%) rename ui/components/{ => NewsDetailPage}/NewsDetail.tsx (100%) create mode 100644 ui/components/NewsDetailPage/PreviewNewsDetail.tsx diff --git a/ui/app/news/[id]/page.tsx b/ui/app/news/[id]/page.tsx index a2fbfcc..4a0f76f 100644 --- a/ui/app/news/[id]/page.tsx +++ b/ui/app/news/[id]/page.tsx @@ -1,4 +1,4 @@ -import NewsDetail from "../../../components/NewsDetail"; +import NewsDetail from "../../../components/NewsDetailPage/NewsDetail"; import { VALIDATED_ENV } from "../../../lib/constants"; async function getNewsData(id: string) { diff --git a/ui/components/ContextItem.tsx b/ui/components/NewsDetailPage/ContextItem.tsx similarity index 67% rename from ui/components/ContextItem.tsx rename to ui/components/NewsDetailPage/ContextItem.tsx index 8b85d43..a3b6beb 100644 --- a/ui/components/ContextItem.tsx +++ b/ui/components/NewsDetailPage/ContextItem.tsx @@ -1,6 +1,8 @@ -import React from "react"; +import React, { useState, useEffect } from "react"; import Image from "next/image"; import { ReactMarkdown } from "@/components/Markdown"; +import PreviewNewsDetail from "./PreviewNewsDetail"; + interface ContextItemProperties { item: { name: string; @@ -19,12 +21,14 @@ interface ContextItemProperties { contentUrl: string; thumbnail: { contentUrl: string; width: number; height: number }; }; + article?: string; + score?: number; }; } const ProviderInfo: React.FC<{ name: string; date: string }> = ({ name, date }) => ( -
-
+
+
{name} {date}
@@ -32,16 +36,17 @@ const ProviderInfo: React.FC<{ name: string; date: string }> = ({ name, date }) ); const ContextItem: React.FC = ({ item }) => { + const [isPreviewVisible, setIsPreviewVisible] = useState(false); + + const togglePreview = () => { + setIsPreviewVisible(!isPreviewVisible); + }; + return ( - + <>
{item.image ? ( @@ -64,15 +69,17 @@ const ContextItem: React.FC = ({ item }) => {
-

{item.name}

+

{item.name}

- +
-
+ + {isPreviewVisible && } + ); }; diff --git a/ui/components/ExpandableItems.tsx b/ui/components/NewsDetailPage/ExpandableItems.tsx similarity index 100% rename from ui/components/ExpandableItems.tsx rename to ui/components/NewsDetailPage/ExpandableItems.tsx diff --git a/ui/components/NewsDetail.tsx b/ui/components/NewsDetailPage/NewsDetail.tsx similarity index 100% rename from ui/components/NewsDetail.tsx rename to ui/components/NewsDetailPage/NewsDetail.tsx diff --git a/ui/components/NewsDetailPage/PreviewNewsDetail.tsx b/ui/components/NewsDetailPage/PreviewNewsDetail.tsx new file mode 100644 index 0000000..c51fd43 --- /dev/null +++ b/ui/components/NewsDetailPage/PreviewNewsDetail.tsx @@ -0,0 +1,53 @@ +import React from "react"; +import Image from "next/image"; +import { ReactMarkdown } from "@/components/Markdown"; + +interface ContextItemProperties { + item: { + name: string; + url: string; + description: string; + provider: { + name: string; + image?: { + thumbnail: { + contentUrl: string; + }; + }; + }[]; + datePublished: string; + image?: { + contentUrl: string; + thumbnail: { contentUrl: string; width: number; height: number }; + }; + article?: string; + score?: number; + }; + togglePreview: () => void; // Add togglePreview prop +} + +const PreviewNewsDetail: React.FC = ({ item, togglePreview = () => {} }) => { + return ( +
+
+
+

{item.name}

+ +
+ + + Visit + +
+
+ ); +}; + +export default PreviewNewsDetail;