▾ modified web/src/lib/components/ArticleCard.svelte +7 -1 Viewed
@@ -12,6 +12,7 @@ 12 12 navSuffix?: string; 13 13 dismissible?: boolean; 14 14 onDismiss?: () => void; 15 + linkToOriginal?: boolean; 15 16 } 16 17 let { 17 18 article , @@ -19,6 +20,7 @@ 19 20 navSuffix = "" , 20 21 dismissible = false , 21 22 onDismiss , 23 + linkToOriginal = false , 22 24 } : Props = $props(); 23 25 24 26 { @@ -83,7 +85,11 @@ 83 85 < div class = "flex items-start justify-between gap-4" > 84 86 < div class = "min-w-0 flex-1" > 85 87 < a 86 - href = "/ articles / { article . id }{ navSuffix } " 88 + href={linkToOriginal 89 + ? article.url 90 + : `/articles/${article.id}${navSuffix}`} 91 + target={linkToOriginal ? " _blank " : undefined } 92 + rel={ linkToOriginal ? "noopener noreferrer" : undefined } 87 93 class="block { read 88 94 ? 'text-[var(--muted)]' 89 95 : 'text-[var(--fg)]' } hover:text-[var(--accent)]"
@@ -12,6 +12,7 @@ 12 navSuffix?: string; 12 navSuffix?: string; 13 dismissible?: boolean; 13 dismissible?: boolean; 14 onDismiss?: () => void; 14 onDismiss?: () => void; 15 + linkToOriginal?: boolean; 15 } 16 } 16 let { 17 let { 17 article , 18 article , @@ -19,6 +20,7 @@ 19 navSuffix = "" , 20 navSuffix = "" , 20 dismissible = false , 21 dismissible = false , 21 onDismiss , 22 onDismiss , 23 + linkToOriginal = false , 22 } : Props = $props(); 24 } : Props = $props(); 23 25 24 { 26 { @@ -83,7 +85,11 @@ 83 < div class = "flex items-start justify-between gap-4" > 85 < div class = "flex items-start justify-between gap-4" > 84 < div class = "min-w-0 flex-1" > 86 < div class = "min-w-0 flex-1" > 85 < a 87 < a 86 - href = "/ articles / { article . id }{ navSuffix } " 88 + href={linkToOriginal 89 + ? article.url 90 + : `/articles/${article.id}${navSuffix}`} 91 + target={linkToOriginal ? " _blank " : undefined } 92 + rel={ linkToOriginal ? "noopener noreferrer" : undefined } 87 class="block { read 93 class="block { read 88 ? 'text-[var(--muted)]' 94 ? 'text-[var(--muted)]' 89 : 'text-[var(--fg)]' } hover:text-[var(--accent)]" 95 : 'text-[var(--fg)]' } hover:text-[var(--accent)]"
▾ modified web/src/routes/dashboard/+page.svelte +4 -2 Viewed
@@ -147,6 +147,7 @@ 147 147 article={ a } 148 148 dismissible 149 149 onDismiss={() => dismissArticle ( a . url )} 150 + linkToOriginal 150 151 /> 151 152 { /each } 152 153 </ div > @@ -228,7 +229,7 @@ 228 229 </ div > 229 230 < div class = "space-y-3" > 230 231 { #each unreadArticles as a ( a . id )} 231 - < ArticleCard article = { a } / > 232 + < ArticleCard article = { a } linkToOriginal /> 232 233 { /each } 233 234 </ div > 234 235 { #if data . unread_count > 5 } @@ -255,6 +256,7 @@ 255 256 article={ a } 256 257 dismissible 257 258 onDismiss={() => dismissArticle ( a . url )} 259 + linkToOriginal 258 260 /> 259 261 { /each } 260 262 </ div > @@ -295,7 +297,7 @@ 295 297 </ div > 296 298 < div class = "grid grid-cols-1 gap-3 md:grid-cols-2 lg:grid-cols-3" > 297 299 { #each trending as t ( t . article_id )} 298 - < TrendingCard item = { t } / > 300 + < TrendingCard item = { t } linkToOriginal /> 299 301 { /each } 300 302 </ div > 301 303 </ section >
@@ -147,6 +147,7 @@ 147 article={ a } 147 article={ a } 148 dismissible 148 dismissible 149 onDismiss={() => dismissArticle ( a . url )} 149 onDismiss={() => dismissArticle ( a . url )} 150 + linkToOriginal 150 /> 151 /> 151 { /each } 152 { /each } 152 </ div > 153 </ div > @@ -228,7 +229,7 @@ 228 </ div > 229 </ div > 229 < div class = "space-y-3" > 230 < div class = "space-y-3" > 230 { #each unreadArticles as a ( a . id )} 231 { #each unreadArticles as a ( a . id )} 231 - < ArticleCard article = { a } / > 232 + < ArticleCard article = { a } linkToOriginal /> 232 { /each } 233 { /each } 233 </ div > 234 </ div > 234 { #if data . unread_count > 5 } 235 { #if data . unread_count > 5 } @@ -255,6 +256,7 @@ 255 article={ a } 256 article={ a } 256 dismissible 257 dismissible 257 onDismiss={() => dismissArticle ( a . url )} 258 onDismiss={() => dismissArticle ( a . url )} 259 + linkToOriginal 258 /> 260 /> 259 { /each } 261 { /each } 260 </ div > 262 </ div > @@ -295,7 +297,7 @@ 295 </ div > 297 </ div > 296 < div class = "grid grid-cols-1 gap-3 md:grid-cols-2 lg:grid-cols-3" > 298 < div class = "grid grid-cols-1 gap-3 md:grid-cols-2 lg:grid-cols-3" > 297 { #each trending as t ( t . article_id )} 299 { #each trending as t ( t . article_id )} 298 - < TrendingCard item = { t } / > 300 + < TrendingCard item = { t } linkToOriginal /> 299 { /each } 301 { /each } 300 </ div > 302 </ div > 301 </ section > 303 </ section >