From d523c3195382749aedd31ac989dd90a05bf4d108 Mon Sep 17 00:00:00 2001 From: Dave Gallant Date: Sat, 14 Feb 2026 22:45:34 -0500 Subject: [PATCH] Move all css to theme.cs --- src/App.vue | 294 +-------------------------------------------- src/theme.css | 321 ++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 288 insertions(+), 327 deletions(-) diff --git a/src/App.vue b/src/App.vue index 5b4b59a..f135d09 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,9 +2,9 @@ import axios from "axios"; import dayjs from "dayjs"; import utc from "dayjs/plugin/utc"; -import { ref } from "vue"; import "vue-loading-overlay/dist/css/index.css"; +import "./theme.css"; // Configure day.js with UTC support dayjs.extend(utc); @@ -191,10 +191,6 @@ export default { }; - - - diff --git a/src/theme.css b/src/theme.css index 0cc766f..edefbe7 100644 --- a/src/theme.css +++ b/src/theme.css @@ -21,8 +21,6 @@ --text-secondary: #6c757d; --border-color: #d0d0d0; --link-color: #212529; - --footer-bg: #f8f9fa; - --footer-text: #212529; } /* Dark theme */ @@ -34,8 +32,6 @@ --text-secondary: #a0a0a0; --border-color: #3a3a3a; --link-color: #212529; - --footer-bg: #1a1a1a; - --footer-text: #e0e0e0; } } @@ -47,8 +43,6 @@ html[data-bs-theme="dark"] { --text-secondary: #a0a0a0; --border-color: #3a3a3a; --link-color: ##e0e0e0; - --footer-bg: #1a1a1a; - --footer-text: #e0e0e0; } html[data-bs-theme="light"], @@ -59,8 +53,6 @@ html.light-theme { --text-secondary: #6c757d; --border-color: #d0d0d0; --link-color: #212529; - --footer-bg: #f8f9fa; - --footer-text: #212529; } html { @@ -81,23 +73,6 @@ body { padding: 0; } -footer { - background: var(--footer-bg); - color: var(--footer-text); - padding: 3px; - padding-right: 10px; - padding-left: 10px; - border-top: 1px solid var(--border-color); -} - -.footer-left { - float: left; -} - -.footer-right { - float: right; -} - .green-score { color: rgb(34, 139, 34) !important; } @@ -125,9 +100,8 @@ a:visited { @media (min-width: 769px) { .v-data-table-header th, - .v-data-table__td, - .v-data-footer { - font-size: 1.2rem; + .v-data-table__td { + border-color: #888888 !important; } } @@ -158,12 +132,6 @@ html.dark-theme .v-data-table-header th { border-color: #888888 !important; } -html.dark-theme .v-data-footer { - background-color: #2a2a2a !important; - color: #e0e0e0 !important; - border-color: #888888 !important; -} - html.dark-theme .v-data-table__divider { border-color: #888888 !important; } @@ -198,3 +166,288 @@ html.light-theme .v-data-table-header th { color: #212529 !important; border-color: #dee2e6 !important; } + +/* App.vue scoped styles */ + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 20px; + background-color: var(--bg-primary); + color: var(--text-primary); + min-height: 100vh; +} + +.header { + margin-bottom: 30px; +} + +.search-input { + width: 100%; + max-width: 500px; +} + +.cards-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(350px, 1fr)); + gap: 20px; + margin-top: 20px; +} + +.deal-card { + background-color: var(--bg-secondary); + border: 1.5px solid #aaaaaa; + border-radius: 12px; + padding: 16px; + display: flex; + flex-direction: column; + transition: all 0.2s ease; + min-height: auto; +} + +.deal-card:hover { + background-color: #15151515; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + border-color: #999999; +} + +.card-header { + display: flex; + gap: 12px; + align-items: flex-start; + margin-bottom: 12px; + justify-content: space-between; +} + +.title-with-link { + display: flex; + align-items: flex-start; + gap: 6px; + flex: 1; +} + +.deal-title { + color: var(--link-color); + text-decoration: none; + font-weight: 500; + font-size: 15px; + line-height: 1.4; + flex: 1; + transition: color 0.2s ease; +} + +.deal-title:visited { + color: var(--link-visited); +} + +.deal-title:hover { + text-decoration: underline; +} + +.card-meta { + display: flex; + flex-direction: column; + gap: 6px; + font-size: 13px; + margin-bottom: 12px; +} + +.dealer-name { + color: var(--text-secondary); + font-weight: 500; + font-size: 13px; +} + +.card-timestamp { + color: var(--text-secondary); + font-size: 12px; + 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 { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 50px; + height: 40px; + border-radius: 6px; + font-weight: 700; + font-size: 12px; + flex-shrink: 0; + transition: all 0.2s ease; + padding: 0 8px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08); + border: none; +} + +.score-bubble.positive { + background-color: rgb(34, 139, 34); + color: white; + box-shadow: 0 1px 3px rgba(34, 139, 34, 0.2); +} + +html.light-theme .score-bubble.positive { + background-color: rgb(34, 139, 34); + color: white; + box-shadow: 0 1px 3px rgba(34, 139, 34, 0.2); +} + +html.dark-theme .score-bubble.positive { + background-color: rgb(158, 206, 106); + color: #1a1a1a; + box-shadow: 0 1px 3px rgba(158, 206, 106, 0.2); +} + +.score-bubble.negative { + background-color: rgb(247, 118, 142); + color: white; + box-shadow: 0 1px 3px rgba(247, 118, 142, 0.2); +} + +.score-bubble.neutral { + background-color: var(--text-secondary); + color: var(--bg-primary); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08); +} + +.card-details { + margin-top: 12px; + padding-top: 12px; + border-top: 1px solid var(--border-color); +} + +.details-stats { + display: flex; + gap: 16px; + margin-bottom: 12px; +} + +.stat { + display: flex; + align-items: center; + gap: 6px; + font-size: 13px; + color: var(--text-secondary); +} + +.stat .material-symbols-outlined { + font-size: 18px; +} + +.stat-value { + font-weight: 500; +} + +.details-section { + margin-bottom: 12px; +} + +.details-section strong { + display: block; + color: var(--text-primary); + margin-bottom: 4px; + font-size: 13px; +} + +.details-section p { + margin: 0; + color: var(--text-secondary); + font-size: 12px; + line-height: 1.4; + word-wrap: break-word; +} + +/* Mobile responsive */ +@media (max-width: 768px) { + .cards-grid { + grid-template-columns: 1fr; + } + + .container { + padding: 12px; + } + + .search-input { + max-width: 100%; + } +} + +/* Mark highlighting */ +mark { + background-color: rgba(255, 193, 7, 0.3); + color: inherit; + font-weight: 600; + border-radius: 2px; +} + +html.dark-theme mark { + background-color: rgba(255, 193, 7, 0.4); + color: inherit; + font-weight: 600; + border-radius: 2px; +} + +/* Vuetify overrides */ +.v-text-field { + --v-field-border-color: #cccccc; +} + +html[data-bs-theme="light"] .v-text-field { + --v-field-border-color: #e8e8e8; +} + +html[data-bs-theme="light"] .v-field__input { + background-color: #d0d0d0 !important; +} + +html[data-bs-theme="light"] .v-field--focused .v-field__input { + background-color: #e8e8e8 !important; +} + +html[data-bs-theme="dark"] .v-text-field { + --v-field-border-color: #555555; +} + +html.light-theme .v-text-field { + --v-field-border-color: #cccccc; +} + +html.light-theme .v-field__input { + background-color: #d0d0d0 !important; +} + +html.light-theme .v-field--focused .v-field__input { + background-color: #e8e8e8 !important; +} + +html.dark-theme .v-text-field { + --v-field-border-color: #555555; +} + +/* Ensure v-app and v-main use theme colors */ +.v-app { + background-color: var(--bg-primary) !important; + color: var(--text-primary) !important; +} + +.v-main { + background-color: var(--bg-primary) !important; +} \ No newline at end of file