Skip to content

Commit e65c9d0

Browse files
Update UI with new design system, fonts, and interactive platform pills
1 parent 29e0603 commit e65c9d0

7 files changed

Lines changed: 314 additions & 71 deletions

File tree

src/app/globals.css

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
@import "tailwindcss";
22

33
:root {
4-
--background: #ffffff;
4+
--background: #fafafa;
55
--foreground: #222222;
66
--card: #ffffff;
77
--card-foreground: #222222;
@@ -20,7 +20,9 @@
2020
--border: #e5e5e5;
2121
--input: #e5e5e5;
2222
--ring: #222222;
23-
--radius: 0.5rem;
23+
--radius: 0.75rem;
24+
--accent-brand: #0d9488;
25+
--accent-brand-foreground: #ffffff;
2426
}
2527

2628
@theme inline {
@@ -43,18 +45,32 @@
4345
--color-border: var(--border);
4446
--color-input: var(--input);
4547
--color-ring: var(--ring);
46-
--font-sans: var(--font-geist-sans);
47-
--font-mono: var(--font-geist-mono);
48+
--color-accent-brand: var(--accent-brand);
49+
--color-accent-brand-foreground: var(--accent-brand-foreground);
50+
--font-sans: var(--font-inter);
51+
--font-mono: var(--font-jetbrains-mono);
4852
--radius-sm: calc(var(--radius) - 4px);
4953
--radius-md: calc(var(--radius) - 2px);
5054
--radius-lg: var(--radius);
5155
--radius-xl: calc(var(--radius) + 4px);
5256
}
5357

58+
@keyframes pulse-dot {
59+
0%,
60+
100% {
61+
opacity: 1;
62+
transform: scale(1);
63+
}
64+
50% {
65+
opacity: 0.6;
66+
transform: scale(1.3);
67+
}
68+
}
69+
5470
body {
5571
background: var(--background);
5672
color: var(--foreground);
57-
font-family: Arial, Helvetica, sans-serif;
73+
font-family: var(--font-inter), "Inter", ui-sans-serif, system-ui, sans-serif;
5874
}
5975

6076
* {

src/app/layout.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import type { Metadata } from "next";
2-
import { Geist, Geist_Mono } from "next/font/google";
2+
import { Inter, JetBrains_Mono } from "next/font/google";
33
import "./globals.css";
44

5-
const geistSans = Geist({
6-
variable: "--font-geist-sans",
5+
const inter = Inter({
6+
variable: "--font-inter",
77
subsets: ["latin"],
88
});
99

10-
const geistMono = Geist_Mono({
11-
variable: "--font-geist-mono",
10+
const jetbrainsMono = JetBrains_Mono({
11+
variable: "--font-jetbrains-mono",
1212
subsets: ["latin"],
1313
});
1414

@@ -25,7 +25,7 @@ export default function RootLayout({
2525
return (
2626
<html lang="en">
2727
<body
28-
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
28+
className={`${inter.variable} ${jetbrainsMono.variable} antialiased`}
2929
>
3030
{children}
3131
</body>

src/components/comparison-panel.tsx

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
ComparisonResult,
99
SchemaComparisonResult,
1010
} from "@/hooks/use-comparison";
11+
import { Database, Layers, BarChart3 } from "lucide-react";
1112

1213
interface ComparisonPanelProps {
1314
schemaResult: SchemaComparisonResult | null;
@@ -34,15 +35,23 @@ export function ComparisonPanel({
3435
{dataResult ? (
3536
<DataDiff result={dataResult} />
3637
) : (
37-
<EmptyState message="Run a query to compare data between platforms" />
38+
<EmptyState
39+
icon={<Database className="h-10 w-10 text-muted-foreground/40" />}
40+
message="Run a query to compare data between platforms"
41+
hint="Select two platforms above and execute a preset or custom SQL query"
42+
/>
3843
)}
3944
</TabsContent>
4045

4146
<TabsContent value="schema">
4247
{schemaResult ? (
4348
<SchemaDiff result={schemaResult} />
4449
) : (
45-
<EmptyState message="Select two platforms to compare schemas" />
50+
<EmptyState
51+
icon={<Layers className="h-10 w-10 text-muted-foreground/40" />}
52+
message="Select two platforms to compare schemas"
53+
hint='Click "Compare Schemas" to see structural differences'
54+
/>
4655
)}
4756
</TabsContent>
4857

@@ -53,17 +62,31 @@ export function ComparisonPanel({
5362
queryNames={queryNames}
5463
/>
5564
) : (
56-
<EmptyState message="Run queries to see performance comparison" />
65+
<EmptyState
66+
icon={<BarChart3 className="h-10 w-10 text-muted-foreground/40" />}
67+
message="Run queries to see performance comparison"
68+
hint="Each query you run will be added to the performance chart"
69+
/>
5770
)}
5871
</TabsContent>
5972
</Tabs>
6073
);
6174
}
6275

63-
function EmptyState({ message }: { message: string }) {
76+
function EmptyState({
77+
icon,
78+
message,
79+
hint,
80+
}: {
81+
icon: React.ReactNode;
82+
message: string;
83+
hint: string;
84+
}) {
6485
return (
65-
<div className="flex items-center justify-center py-16 text-sm text-muted-foreground">
66-
{message}
86+
<div className="flex flex-col items-center justify-center py-16 gap-3">
87+
{icon}
88+
<p className="text-sm text-muted-foreground">{message}</p>
89+
<p className="text-xs text-muted-foreground/60">{hint}</p>
6790
</div>
6891
);
6992
}

0 commit comments

Comments
 (0)