diff --git a/package-lock.json b/package-lock.json index 673d8b9..4627f46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -775,6 +775,7 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -2376,6 +2377,7 @@ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.6.tgz", "integrity": "sha512-kIU8SLQkYWGp3pVKiYzA5OSaNF5EE03P/R8zEmmrG6XwOg5oBjXyQVVIauQ0dgau4zYhpZEhJrvIYt6oM+zZZA==", "license": "MIT", + "peer": true, "dependencies": { "@octokit/auth-token": "^5.0.0", "@octokit/graphql": "^8.2.2", @@ -3400,6 +3402,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.15.tgz", "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -3420,6 +3423,7 @@ "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -4167,6 +4171,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -5793,6 +5798,7 @@ "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "30.3.0", "@jest/types": "30.3.0", @@ -6511,6 +6517,7 @@ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "license": "MIT", + "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -7403,6 +7410,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -7669,6 +7677,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -7678,6 +7687,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -8546,6 +8556,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -8658,6 +8669,7 @@ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -8750,6 +8762,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/src/app/chat-panel.tsx b/src/app/chat-panel.tsx index 3e1e8b7..1729eb5 100644 --- a/src/app/chat-panel.tsx +++ b/src/app/chat-panel.tsx @@ -84,8 +84,8 @@ export default function ChatPanel({ org }: { org: string }) { {open && (
{/* Header */}
diff --git a/src/app/globals.css b/src/app/globals.css index 58b5438..28e7135 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -38,6 +38,88 @@ .focus\:border-accent:focus { border-color: var(--accent); } .focus\:border-accent-dark:focus { border-color: var(--accent-dark); } +/* ── Tremor dark-mode palette remapping ── */ +/* Remap Tailwind grays to navy-tinted Tremor palette */ +:root { + --tremor-page-bg: #111827; + --tremor-card-bg: #090E1A; + --tremor-input-bg: #1a2332; + --tremor-hover-bg: #1f2937; + --tremor-border: #1e293b; + --tremor-border-light: #334155; +} + +/* Page / body background */ +.bg-gray-950, +.bg-\[\#0F0F0F\], +.bg-\[\#0A0A0A\], +.bg-\[\#09090B\], +.bg-\[\#0C0A14\], +.bg-\[\#030712\] { + background-color: var(--tremor-page-bg) !important; +} + +/* Card backgrounds — deep navy */ +:root:not([data-theme-mode="light"]) .bg-gray-900 { + background-color: var(--tremor-card-bg) !important; + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.05); +} + +/* Input / hover backgrounds */ +:root:not([data-theme-mode="light"]) .bg-gray-800 { + background-color: var(--tremor-input-bg) !important; +} +:root:not([data-theme-mode="light"]) .bg-gray-800\/50 { + background-color: rgba(26, 35, 50, 0.5) !important; +} +:root:not([data-theme-mode="light"]) .bg-gray-700 { + background-color: var(--tremor-hover-bg) !important; +} + +/* Hover backgrounds (dark mode) */ +:root:not([data-theme-mode="light"]) .hover\:bg-gray-800:hover { + background-color: var(--tremor-input-bg) !important; +} +:root:not([data-theme-mode="light"]) .hover\:bg-gray-700:hover { + background-color: var(--tremor-hover-bg) !important; +} +:root:not([data-theme-mode="light"]) .hover\:bg-gray-800\/50:hover { + background-color: rgba(26, 35, 50, 0.5) !important; +} +:root:not([data-theme-mode="light"]) .hover\:bg-gray-800\/30:hover, +:root:not([data-theme-mode="light"]) .hover\:bg-gray-800\/30 { + background-color: rgba(26, 35, 50, 0.3) !important; +} + +/* Borders — slate-tinted */ +:root:not([data-theme-mode="light"]) .border-gray-800 { + border-color: var(--tremor-border) !important; +} +:root:not([data-theme-mode="light"]) .border-gray-800\/50 { + border-color: rgba(30, 41, 59, 0.5) !important; +} +:root:not([data-theme-mode="light"]) .border-gray-700 { + border-color: var(--tremor-border-light) !important; +} +:root:not([data-theme-mode="light"]) .border-gray-700\/50 { + border-color: rgba(51, 65, 85, 0.5) !important; +} + +/* Dividers */ +:root:not([data-theme-mode="light"]) .divide-gray-800 > :not([hidden]) ~ :not([hidden]) { + border-color: var(--tremor-border) !important; +} + +/* Progress bars — use accent color instead of blue-500 */ +:root:not([data-theme-mode="light"]) .bg-blue-500.h-full.rounded-full { + background-color: var(--accent) !important; +} + +/* Table containers — less rounded for Tremor feel */ +:root:not([data-theme-mode="light"]) .bg-gray-900.rounded-xl { + border-radius: 0.5rem; +} + /* ── Light theme overrides ── */ /* Remap dark-mode Tailwind classes to light equivalents */ [data-theme-mode="light"] { @@ -52,7 +134,8 @@ /* Backgrounds: dark → light */ [data-theme-mode="light"] .bg-\[\#0F0F0F\], [data-theme-mode="light"] .bg-\[\#0A0A0A\], -[data-theme-mode="light"] .bg-\[\#030712\] { +[data-theme-mode="light"] .bg-\[\#030712\], +[data-theme-mode="light"] .bg-\[\#111827\] { background-color: var(--body-bg) !important; } [data-theme-mode="light"] .bg-gray-950 { @@ -200,7 +283,12 @@ /* Shadow adjustments — dark mode uses no/subtle shadows; light needs them */ [data-theme-mode="light"] .bg-gray-900 { - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08) !important; +} + +/* Reset Tremor card rounding in light mode */ +[data-theme-mode="light"] .bg-gray-900.rounded-xl { + border-radius: 0.75rem; } @media print { @@ -262,7 +350,8 @@ } /* Page breaks */ - .bg-gray-900.rounded-xl { break-inside: avoid; } + .bg-gray-900.rounded-xl, + .bg-gray-900.rounded-lg { break-inside: avoid; } tr { break-inside: avoid; } /* Remove max-height/overflow on tables for full print */ diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 8524c8a..2f4dfb9 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -11,7 +11,7 @@ export const metadata: Metadata = { export default function RootLayout({ children }: { children: React.ReactNode }) { return ( - + {children} diff --git a/src/app/llm-findings.tsx b/src/app/llm-findings.tsx index 55f8bc7..085747b 100644 --- a/src/app/llm-findings.tsx +++ b/src/app/llm-findings.tsx @@ -98,7 +98,7 @@ export default function LlmFindings() {
{/* Highlights */} {highlightsLoading && ( -
+
📊 Highlights @@ -113,7 +113,7 @@ export default function LlmFindings() {
)} {!highlightsLoading && highlights && highlightsMeta && ( -
+
📊 @@ -136,7 +136,7 @@ export default function LlmFindings() { {/* Project Insights */} {projectsLoading && ( -
+
🏗️ Top Projects @@ -151,7 +151,7 @@ export default function LlmFindings() {
)} {!projectsLoading && projects.length > 0 && projectsMeta && ( -
+
🏗️ @@ -212,7 +212,7 @@ export default function LlmFindings() { {/* Release Notes */} {releaseNotes && !releaseNotesDismissed && ( -
+
🚀 What's New in Glooker @@ -237,7 +237,7 @@ export default function LlmFindings() { )} {/* How Impact Score Works */} -
+
📊 How Impact Score Works diff --git a/src/app/page.tsx b/src/app/page.tsx index 0211d66..d7d77f2 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -44,13 +44,13 @@ interface Report { } const TYPE_COLORS: Record = { - feature: 'bg-blue-500', - bug: 'bg-red-500', - refactor: 'bg-purple-500', - infra: 'bg-yellow-500', - docs: 'bg-gray-500', - test: 'bg-green-500', - other: 'bg-gray-600', + feature: 'bg-blue-500/10 text-blue-400 ring-1 ring-inset ring-blue-500/20', + bug: 'bg-red-500/10 text-red-400 ring-1 ring-inset ring-red-500/20', + refactor: 'bg-purple-500/10 text-purple-400 ring-1 ring-inset ring-purple-500/20', + infra: 'bg-yellow-500/10 text-yellow-400 ring-1 ring-inset ring-yellow-500/20', + docs: 'bg-gray-500/10 text-gray-400 ring-1 ring-inset ring-gray-500/20', + test: 'bg-green-500/10 text-green-400 ring-1 ring-inset ring-green-500/20', + other: 'bg-gray-500/10 text-gray-500 ring-1 ring-inset ring-gray-500/20', }; @@ -637,7 +637,7 @@ export default function Home() { {showReportForm && (
setShowReportForm(false)} /> -
+

New Report