Add back raw link to deal

This commit is contained in:
2026-02-14 22:10:30 -05:00
parent ca58af6a57
commit 928ee46b9d
2 changed files with 53 additions and 13 deletions

View File

@@ -219,13 +219,24 @@ const sortBy = ref([{ key: "score", order: "desc" }]);
class="deal-card" class="deal-card"
> >
<div class="card-header"> <div class="card-header">
<a <div class="title-with-link">
:href="`https://forums.redflagdeals.com${topic.web_path}`" <a
target="_blank" :href="`https://forums.redflagdeals.com${topic.web_path}`"
class="deal-title" target="_blank"
@click.stop class="deal-title"
v-html="highlightMatches(topic.title)" @click.stop
></a> v-html="highlightMatches(topic.title)"
></a>
<a
v-if="topic.Offer.url"
:href="topic.Offer.url"
target="_blank"
class="card-link"
title="Open deal"
>
<span class="material-symbols-outlined">open_in_new</span>
</a>
</div>
<div class="score-bubble" :class="{ positive: topic.score > 0, negative: topic.score < 0, neutral: topic.score === 0 }"> <div class="score-bubble" :class="{ positive: topic.score > 0, negative: topic.score < 0, neutral: topic.score === 0 }">
<span v-if="topic.score > 0">+{{ topic.score }}</span> <span v-if="topic.score > 0">+{{ topic.score }}</span>
<span v-else>{{ topic.score }}</span> <span v-else>{{ topic.score }}</span>
@@ -295,14 +306,17 @@ const sortBy = ref([{ key: "score", order: "desc" }]);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
transition: all 0.2s ease; transition: all 0.2s ease;
cursor: pointer;
min-height: auto; min-height: auto;
} }
.deal-card:hover { .deal-card:hover {
transform: translateY(-4px); background-color: rgba(0, 0, 0, 0.03);
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
border-color: #888888; border-color: #999999;
}
html.dark-theme .deal-card:hover {
background-color: rgba(255, 255, 255, 0.03);
} }
.card-header { .card-header {
@@ -310,6 +324,14 @@ const sortBy = ref([{ key: "score", order: "desc" }]);
gap: 12px; gap: 12px;
align-items: flex-start; align-items: flex-start;
margin-bottom: 12px; margin-bottom: 12px;
justify-content: space-between;
}
.title-with-link {
display: flex;
align-items: flex-start;
gap: 6px;
flex: 1;
} }
.deal-title { .deal-title {
@@ -350,6 +372,24 @@ const sortBy = ref([{ key: "score", order: "desc" }]);
margin-top: 8px; margin-top: 8px;
} }
.card-link {
display: inline-flex;
align-items: center;
justify-content: center;
color: var(--link-color);
text-decoration: none;
transition: all 0.2s ease;
flex-shrink: 0;
}
.card-link:hover {
opacity: 0.7;
}
.card-link .material-symbols-outlined {
font-size: 18px;
}
.score-bubble { .score-bubble {
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;

View File

@@ -16,7 +16,7 @@
:root { :root {
/* Light theme (default) */ /* Light theme (default) */
--bg-primary: #dddddd; --bg-primary: #dddddd;
--bg-secondary: #eeeeee; --bg-secondary: #e8e8e8;
--text-primary: #212529; --text-primary: #212529;
--text-secondary: #6c757d; --text-secondary: #6c757d;
--border-color: #d0d0d0; --border-color: #d0d0d0;
@@ -54,7 +54,7 @@ html[data-bs-theme="dark"] {
html[data-bs-theme="light"], html[data-bs-theme="light"],
html.light-theme { html.light-theme {
--bg-primary: #dddddd; --bg-primary: #dddddd;
--bg-secondary: #eeeeee; --bg-secondary: #e8e8e8;
--text-primary: #212529; --text-primary: #212529;
--text-secondary: #6c757d; --text-secondary: #6c757d;
--border-color: #d0d0d0; --border-color: #d0d0d0;