From 8a1309536b76ba86872ca2e78aa695d9fd80c8cc Mon Sep 17 00:00:00 2001
From: MohamedBassem <me@mbassem.com>
Date: Sat, 5 Oct 2024 20:08:50 +0000
Subject: feature: Allow attaching custom banners to notes. Fixes: #106

---
 apps/web/components/dashboard/bookmarks/TextCard.tsx | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

(limited to 'apps/web/components/dashboard/bookmarks/TextCard.tsx')

diff --git a/apps/web/components/dashboard/bookmarks/TextCard.tsx b/apps/web/components/dashboard/bookmarks/TextCard.tsx
index 9d6c1df1..14a4f905 100644
--- a/apps/web/components/dashboard/bookmarks/TextCard.tsx
+++ b/apps/web/components/dashboard/bookmarks/TextCard.tsx
@@ -1,10 +1,13 @@
 "use client";
 
+import Image from "next/image";
+import Link from "next/link";
 import { MarkdownComponent } from "@/components/ui/markdown-component";
 import { bookmarkLayoutSwitch } from "@/lib/userLocalSettings/bookmarksLayout";
 import { cn } from "@/lib/utils";
 
 import type { ZBookmarkTypeText } from "@hoarder/shared/types/bookmarks";
+import { getAssetUrl } from "@hoarder/shared-react/utils/assetUtils";
 import { getSourceUrl } from "@hoarder/shared-react/utils/bookmarkUtils";
 
 import { BookmarkLayoutAdaptingCard } from "./BookmarkLayoutAdaptingCard";
@@ -19,6 +22,8 @@ export default function TextCard({
 }) {
   const bookmarkedText = bookmark.content;
 
+  const banner = bookmark.assets.find((a) => a.assetType == "bannerImage");
+
   return (
     <>
       <BookmarkLayoutAdaptingCard
@@ -38,7 +43,18 @@ export default function TextCard({
             grid: null,
             masonry: null,
             compact: null,
-            list: (
+            list: banner ? (
+              <div className="relative size-full flex-1">
+                <Link href={`/dashboard/preview/${bookmark.id}`}>
+                  <Image
+                    alt="card banner"
+                    fill={true}
+                    className={cn("flex-1", className)}
+                    src={getAssetUrl(banner.id)}
+                  />
+                </Link>
+              </div>
+            ) : (
               <div
                 className={cn(
                   "flex size-full items-center justify-center bg-accent text-center",
-- 
cgit v1.2.3-70-g09d2

