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;