Avijit Ghosh commited on
Commit
a328136
·
1 Parent(s): 1e918e0

added better design and nav flow

Browse files
app/about/page.tsx CHANGED
@@ -16,7 +16,7 @@ export default function AboutPage() {
16
  <Navigation />
17
 
18
  <PageHeader
19
- title="About Eval Cards"
20
  description="Building a shared infrastructure for informative, transparent, and comparable AI evaluations."
21
  />
22
 
 
16
  <Navigation />
17
 
18
  <PageHeader
19
+ title="About"
20
  description="Building a shared infrastructure for informative, transparent, and comparable AI evaluations."
21
  />
22
 
app/globals.css CHANGED
@@ -4,76 +4,76 @@
4
  @custom-variant dark (&:is(.dark *));
5
 
6
  :root {
7
- --background: oklch(1 0 0); /* #ffffff - Clean white background */
8
- --foreground: oklch(0.205 0 0); /* #1f2937 - Dark gray for main text */
9
- --card: oklch(0.97 0 0); /* #f1f5f9 - Light gray for cards */
10
- --card-foreground: oklch(0.439 0 0); /* #6b7280 - Mid-tone gray for card text */
11
- --popover: oklch(1 0 0); /* #ffffff - White for popovers */
12
- --popover-foreground: oklch(0.205 0 0); /* #1f2937 - Dark gray for popover text */
13
- --primary: oklch(0.205 0 0); /* #1f2937 - Primary dark gray */
14
- --primary-foreground: oklch(1 0 0); /* #ffffff - White text on primary */
15
- --secondary: oklch(0.646 0.222 280.116); /* #8b5cf6 - Purple accent */
16
- --secondary-foreground: oklch(1 0 0); /* #ffffff - White text on accent */
17
- --muted: oklch(0.97 0 0); /* #f1f5f9 - Muted light gray */
18
- --muted-foreground: oklch(0.439 0 0); /* #6b7280 - Muted text color */
19
- --accent: oklch(0.646 0.222 280.116); /* #8b5cf6 - Purple for interactive elements */
20
- --accent-foreground: oklch(1 0 0); /* #ffffff - White text on accent */
21
- --destructive: oklch(0.577 0.245 27.325); /* #dc2626 - Red for errors */
22
- --destructive-foreground: oklch(1 0 0); /* #ffffff - White text on destructive */
23
- --border: oklch(0.922 0 0); /* #e5e7eb - Light gray borders */
24
- --input: oklch(0.985 0 0); /* #f9fafb - Very light gray for inputs */
25
- --ring: oklch(0.646 0.222 280.116 / 0.5); /* Purple focus ring with opacity */
26
- --chart-1: oklch(0.488 0.243 264.376); /* #4f46e5 - Indigo for charts */
27
- --chart-2: oklch(0.6 0.118 184.704); /* #3b82f6 - Blue for charts */
28
- --chart-3: oklch(0.696 0.17 162.48); /* #22c55e - Green for charts */
29
- --chart-4: oklch(0.828 0.189 84.429); /* #fbbf24 - Yellow for charts */
30
- --chart-5: oklch(0.627 0.265 303.9); /* #ef4444 - Red for charts */
31
- --radius: 0.5rem; /* Consistent border radius */
32
- --sidebar: oklch(0.97 0 0); /* #f1f5f9 - Light gray sidebar */
33
- --sidebar-foreground: oklch(0.205 0 0); /* #1f2937 - Dark gray sidebar text */
34
- --sidebar-primary: oklch(0.205 0 0); /* #1f2937 - Primary sidebar color */
35
- --sidebar-primary-foreground: oklch(1 0 0); /* #ffffff - White text on sidebar primary */
36
- --sidebar-accent: oklch(0.646 0.222 280.116); /* #8b5cf6 - Purple sidebar accent */
37
- --sidebar-accent-foreground: oklch(1 0 0); /* #ffffff - White text on sidebar accent */
38
- --sidebar-border: oklch(0.922 0 0); /* #e5e7eb - Light gray sidebar borders */
39
- --sidebar-ring: oklch(0.646 0.222 280.116 / 0.5); /* Purple sidebar focus ring */
40
- --font-heading: var(--font-space-grotesk);
41
- --font-sans: var(--font-dm-sans);
42
  }
43
 
44
  .dark {
45
- --background: oklch(0.145 0 0);
46
- --foreground: oklch(0.985 0 0);
47
- --card: oklch(0.145 0 0);
48
- --card-foreground: oklch(0.985 0 0);
49
- --popover: oklch(0.145 0 0);
50
- --popover-foreground: oklch(0.985 0 0);
51
- --primary: oklch(0.985 0 0);
52
- --primary-foreground: oklch(0.205 0 0);
53
- --secondary: oklch(0.269 0 0);
54
- --secondary-foreground: oklch(0.985 0 0);
55
- --muted: oklch(0.269 0 0);
56
- --muted-foreground: oklch(0.708 0 0);
57
- --accent: oklch(0.269 0 0);
58
- --accent-foreground: oklch(0.985 0 0);
59
- --destructive: oklch(0.396 0.141 25.723);
60
- --destructive-foreground: oklch(0.637 0.237 25.331);
61
- --border: oklch(0.269 0 0);
62
- --input: oklch(0.269 0 0);
63
- --ring: oklch(0.439 0 0);
64
- --chart-1: oklch(0.488 0.243 264.376);
65
- --chart-2: oklch(0.696 0.17 162.48);
66
- --chart-3: oklch(0.769 0.188 70.08);
67
- --chart-4: oklch(0.627 0.265 303.9);
68
- --chart-5: oklch(0.645 0.246 16.439);
69
- --sidebar: oklch(0.205 0 0);
70
- --sidebar-foreground: oklch(0.985 0 0);
71
- --sidebar-primary: oklch(0.488 0.243 264.376);
72
- --sidebar-primary-foreground: oklch(0.985 0 0);
73
- --sidebar-accent: oklch(0.269 0 0);
74
- --sidebar-accent-foreground: oklch(0.985 0 0);
75
- --sidebar-border: oklch(0.269 0 0);
76
- --sidebar-ring: oklch(0.439 0 0);
77
  }
78
 
79
  @theme inline {
 
4
  @custom-variant dark (&:is(.dark *));
5
 
6
  :root {
7
+ --background: #ffffff;
8
+ --foreground: #0a0a0a;
9
+ --card: #ffffff;
10
+ --card-foreground: #0a0a0a;
11
+ --popover: #ffffff;
12
+ --popover-foreground: #0a0a0a;
13
+ --primary: #0a0a0a;
14
+ --primary-foreground: #ffffff;
15
+ --secondary: #f5f5f5;
16
+ --secondary-foreground: #0a0a0a;
17
+ --muted: #f5f5f5;
18
+ --muted-foreground: #737373;
19
+ --accent: #f5f5f5;
20
+ --accent-foreground: #0a0a0a;
21
+ --destructive: #ef4444;
22
+ --destructive-foreground: #ffffff;
23
+ --border: #e5e5e5;
24
+ --input: #e5e5e5;
25
+ --ring: #3b82f6;
26
+ --chart-1: #3b82f6;
27
+ --chart-2: #22c55e;
28
+ --chart-3: #eab308;
29
+ --chart-4: #f97316;
30
+ --chart-5: #ef4444;
31
+ --radius: 0.5rem;
32
+ --sidebar: #f5f5f5;
33
+ --sidebar-foreground: #0a0a0a;
34
+ --sidebar-primary: #0a0a0a;
35
+ --sidebar-primary-foreground: #ffffff;
36
+ --sidebar-accent: #e5e5e5;
37
+ --sidebar-accent-foreground: #0a0a0a;
38
+ --sidebar-border: #e5e5e5;
39
+ --sidebar-ring: #3b82f6;
40
+ --font-heading: ui-sans-serif, system-ui, sans-serif;
41
+ --font-sans: ui-sans-serif, system-ui, sans-serif;
42
  }
43
 
44
  .dark {
45
+ --background: #0a0a0a;
46
+ --foreground: #ffffff;
47
+ --card: #1a1a1a;
48
+ --card-foreground: #ffffff;
49
+ --popover: #0a0a0a;
50
+ --popover-foreground: #ffffff;
51
+ --primary: #ffffff;
52
+ --primary-foreground: #0a0a0a;
53
+ --secondary: #2a2a2a;
54
+ --secondary-foreground: #ffffff;
55
+ --muted: #2a2a2a;
56
+ --muted-foreground: #a3a3a3;
57
+ --accent: #2a2a2a;
58
+ --accent-foreground: #ffffff;
59
+ --destructive: #7f1d1d;
60
+ --destructive-foreground: #ffffff;
61
+ --border: #2a2a2a;
62
+ --input: #2a2a2a;
63
+ --ring: #3b82f6;
64
+ --chart-1: #3b82f6;
65
+ --chart-2: #22c55e;
66
+ --chart-3: #eab308;
67
+ --chart-4: #f97316;
68
+ --chart-5: #ef4444;
69
+ --sidebar: #0a0a0a;
70
+ --sidebar-foreground: #ffffff;
71
+ --sidebar-primary: #3b82f6;
72
+ --sidebar-primary-foreground: #ffffff;
73
+ --sidebar-accent: #2a2a2a;
74
+ --sidebar-accent-foreground: #ffffff;
75
+ --sidebar-border: #2a2a2a;
76
+ --sidebar-ring: #3b82f6;
77
  }
78
 
79
  @theme inline {
app/layout.tsx CHANGED
@@ -1,23 +1,10 @@
1
  import type React from "react"
2
  import type { Metadata } from "next"
3
- import { Space_Grotesk, DM_Sans } from "next/font/google"
4
  import "./globals.css"
5
  import { ThemeProvider } from "@/components/theme-provider"
6
 
7
- const spaceGrotesk = Space_Grotesk({
8
- subsets: ["latin"],
9
- display: "swap",
10
- variable: "--font-space-grotesk",
11
- })
12
-
13
- const dmSans = DM_Sans({
14
- subsets: ["latin"],
15
- display: "swap",
16
- variable: "--font-dm-sans",
17
- })
18
-
19
  export const metadata: Metadata = {
20
- title: "AI Evaluation Dashboard",
21
  description: "Professional AI system evaluation and assessment tool",
22
  generator: "v0.app",
23
  }
@@ -28,7 +15,7 @@ export default function RootLayout({
28
  children: React.ReactNode
29
  }>) {
30
  return (
31
- <html lang="en" className={`${spaceGrotesk.variable} ${dmSans.variable} antialiased`} suppressHydrationWarning>
32
  <body className="font-sans">
33
  <ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange>
34
  {children}
 
1
  import type React from "react"
2
  import type { Metadata } from "next"
 
3
  import "./globals.css"
4
  import { ThemeProvider } from "@/components/theme-provider"
5
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  export const metadata: Metadata = {
7
+ title: "Eval Cards",
8
  description: "Professional AI system evaluation and assessment tool",
9
  generator: "v0.app",
10
  }
 
15
  children: React.ReactNode
16
  }>) {
17
  return (
18
+ <html lang="en" className="antialiased" suppressHydrationWarning>
19
  <body className="font-sans">
20
  <ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange>
21
  {children}
app/page.tsx CHANGED
@@ -103,12 +103,11 @@ export default function HomePage() {
103
  return (
104
  <div className="min-h-screen bg-background">
105
  <Navigation />
 
 
 
 
106
  <main className="container mx-auto px-4 py-8">
107
- <PageHeader
108
- title="Eval Cards Platform"
109
- description="A central platform for informative, transparent, and comparable AI evaluations. Explore standardized reports across models and benchmarks."
110
- />
111
-
112
  <Alert className="mb-8 border-amber-200 bg-amber-50 text-amber-900 dark:border-amber-900/50 dark:bg-amber-900/20 dark:text-amber-200">
113
  <Info className="h-4 w-4 text-amber-600 dark:text-amber-400" />
114
  <AlertTitle>Demo Environment</AlertTitle>
 
103
  return (
104
  <div className="min-h-screen bg-background">
105
  <Navigation />
106
+ <PageHeader
107
+ title="Explore Models"
108
+ description="Explore standardized reports across models and benchmarks. Transparent, comparable, and informative."
109
+ />
110
  <main className="container mx-auto px-4 py-8">
 
 
 
 
 
111
  <Alert className="mb-8 border-amber-200 bg-amber-50 text-amber-900 dark:border-amber-900/50 dark:bg-amber-900/20 dark:text-amber-200">
112
  <Info className="h-4 w-4 text-amber-600 dark:text-amber-400" />
113
  <AlertTitle>Demo Environment</AlertTitle>
components/navigation.tsx CHANGED
@@ -31,27 +31,20 @@ export function Navigation() {
31
  <div className="container mx-auto px-4 sm:px-6 py-4">
32
  <div className="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3">
33
  {/* Logo and branding */}
34
- <div className="flex items-center gap-4">
35
  {/* Logo */}
36
  <Link href="/" className="flex-shrink-0">
37
  <img
38
  src="https://evalevalai.com/assets/img/logo-square.png"
39
  alt="EvalEval Logo"
40
- className="w-10 h-10 rounded-lg hover:scale-105 transition-transform"
41
  />
42
  </Link>
43
 
44
- {/* App title and description */}
45
- <div>
46
- <Link href="/" className="block group">
47
- <h1 className="text-xl sm:text-2xl font-bold font-heading text-foreground group-hover:text-primary transition-colors">
48
- AI Eval Dashboard
49
- </h1>
50
- </Link>
51
- <p className="text-sm text-muted-foreground">
52
- AI evaluation documentation platform
53
- </p>
54
- </div>
55
  </div>
56
 
57
  {/* Navigation and actions */}
 
31
  <div className="container mx-auto px-4 sm:px-6 py-4">
32
  <div className="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3">
33
  {/* Logo and branding */}
34
+ <div className="flex items-center gap-3">
35
  {/* Logo */}
36
  <Link href="/" className="flex-shrink-0">
37
  <img
38
  src="https://evalevalai.com/assets/img/logo-square.png"
39
  alt="EvalEval Logo"
40
+ className="w-8 h-8 rounded-md hover:opacity-80 transition-opacity"
41
  />
42
  </Link>
43
 
44
+ {/* App title */}
45
+ <Link href="/" className="font-bold text-lg tracking-tight hover:text-primary/80 transition-colors">
46
+ Eval Cards
47
+ </Link>
 
 
 
 
 
 
 
48
  </div>
49
 
50
  {/* Navigation and actions */}
components/page-header.tsx CHANGED
@@ -6,23 +6,25 @@ interface PageHeaderProps {
6
 
7
  export function PageHeader({ title, description, children }: PageHeaderProps) {
8
  return (
9
- <div className="container mx-auto px-4 sm:px-6 py-6 border-b bg-muted/30">
10
- <div className="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4">
11
- <div>
12
- <h2 className="text-2xl sm:text-3xl font-bold font-heading text-foreground">
13
- {title}
14
- </h2>
15
- {description && (
16
- <p className="text-base text-muted-foreground mt-1">
17
- {description}
18
- </p>
 
 
 
 
 
 
 
19
  )}
20
  </div>
21
- {children && (
22
- <div className="flex items-center gap-2">
23
- {children}
24
- </div>
25
- )}
26
  </div>
27
  </div>
28
  )
 
6
 
7
  export function PageHeader({ title, description, children }: PageHeaderProps) {
8
  return (
9
+ <div className="border-b bg-muted/30">
10
+ <div className="container mx-auto px-4 sm:px-6 py-6">
11
+ <div className="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4">
12
+ <div>
13
+ <h2 className="text-2xl sm:text-3xl font-bold font-heading text-foreground">
14
+ {title}
15
+ </h2>
16
+ {description && (
17
+ <p className="text-base text-muted-foreground mt-1">
18
+ {description}
19
+ </p>
20
+ )}
21
+ </div>
22
+ {children && (
23
+ <div className="flex items-center gap-2">
24
+ {children}
25
+ </div>
26
  )}
27
  </div>
 
 
 
 
 
28
  </div>
29
  </div>
30
  )
styles/globals.css CHANGED
@@ -4,74 +4,76 @@
4
  @custom-variant dark (&:is(.dark *));
5
 
6
  :root {
7
- --background: oklch(1 0 0);
8
- --foreground: oklch(0.145 0 0);
9
- --card: oklch(1 0 0);
10
- --card-foreground: oklch(0.145 0 0);
11
- --popover: oklch(1 0 0);
12
- --popover-foreground: oklch(0.145 0 0);
13
- --primary: oklch(0.205 0 0);
14
- --primary-foreground: oklch(0.985 0 0);
15
- --secondary: oklch(0.97 0 0);
16
- --secondary-foreground: oklch(0.205 0 0);
17
- --muted: oklch(0.97 0 0);
18
- --muted-foreground: oklch(0.556 0 0);
19
- --accent: oklch(0.97 0 0);
20
- --accent-foreground: oklch(0.205 0 0);
21
- --destructive: oklch(0.577 0.245 27.325);
22
- --destructive-foreground: oklch(0.577 0.245 27.325);
23
- --border: oklch(0.922 0 0);
24
- --input: oklch(0.922 0 0);
25
- --ring: oklch(0.708 0 0);
26
- --chart-1: oklch(0.646 0.222 41.116);
27
- --chart-2: oklch(0.6 0.118 184.704);
28
- --chart-3: oklch(0.398 0.07 227.392);
29
- --chart-4: oklch(0.828 0.189 84.429);
30
- --chart-5: oklch(0.769 0.188 70.08);
31
- --radius: 0.625rem;
32
- --sidebar: oklch(0.985 0 0);
33
- --sidebar-foreground: oklch(0.145 0 0);
34
- --sidebar-primary: oklch(0.205 0 0);
35
- --sidebar-primary-foreground: oklch(0.985 0 0);
36
- --sidebar-accent: oklch(0.97 0 0);
37
- --sidebar-accent-foreground: oklch(0.205 0 0);
38
- --sidebar-border: oklch(0.922 0 0);
39
- --sidebar-ring: oklch(0.708 0 0);
 
 
40
  }
41
 
42
  .dark {
43
- --background: oklch(0.145 0 0);
44
- --foreground: oklch(0.985 0 0);
45
- --card: oklch(0.145 0 0);
46
- --card-foreground: oklch(0.985 0 0);
47
- --popover: oklch(0.145 0 0);
48
- --popover-foreground: oklch(0.985 0 0);
49
- --primary: oklch(0.985 0 0);
50
- --primary-foreground: oklch(0.205 0 0);
51
- --secondary: oklch(0.269 0 0);
52
- --secondary-foreground: oklch(0.985 0 0);
53
- --muted: oklch(0.269 0 0);
54
- --muted-foreground: oklch(0.708 0 0);
55
- --accent: oklch(0.269 0 0);
56
- --accent-foreground: oklch(0.985 0 0);
57
- --destructive: oklch(0.396 0.141 25.723);
58
- --destructive-foreground: oklch(0.637 0.237 25.331);
59
- --border: oklch(0.269 0 0);
60
- --input: oklch(0.269 0 0);
61
- --ring: oklch(0.439 0 0);
62
- --chart-1: oklch(0.488 0.243 264.376);
63
- --chart-2: oklch(0.696 0.17 162.48);
64
- --chart-3: oklch(0.769 0.188 70.08);
65
- --chart-4: oklch(0.627 0.265 303.9);
66
- --chart-5: oklch(0.645 0.246 16.439);
67
- --sidebar: oklch(0.205 0 0);
68
- --sidebar-foreground: oklch(0.985 0 0);
69
- --sidebar-primary: oklch(0.488 0.243 264.376);
70
- --sidebar-primary-foreground: oklch(0.985 0 0);
71
- --sidebar-accent: oklch(0.269 0 0);
72
- --sidebar-accent-foreground: oklch(0.985 0 0);
73
- --sidebar-border: oklch(0.269 0 0);
74
- --sidebar-ring: oklch(0.439 0 0);
75
  }
76
 
77
  @theme inline {
 
4
  @custom-variant dark (&:is(.dark *));
5
 
6
  :root {
7
+ --background: #ffffff;
8
+ --foreground: #0a0a0a;
9
+ --card: #ffffff;
10
+ --card-foreground: #0a0a0a;
11
+ --popover: #ffffff;
12
+ --popover-foreground: #0a0a0a;
13
+ --primary: #0a0a0a;
14
+ --primary-foreground: #ffffff;
15
+ --secondary: #f5f5f5;
16
+ --secondary-foreground: #0a0a0a;
17
+ --muted: #f5f5f5;
18
+ --muted-foreground: #737373;
19
+ --accent: #f5f5f5;
20
+ --accent-foreground: #0a0a0a;
21
+ --destructive: #ef4444;
22
+ --destructive-foreground: #ffffff;
23
+ --border: #e5e5e5;
24
+ --input: #e5e5e5;
25
+ --ring: #3b82f6;
26
+ --chart-1: #3b82f6;
27
+ --chart-2: #22c55e;
28
+ --chart-3: #eab308;
29
+ --chart-4: #f97316;
30
+ --chart-5: #ef4444;
31
+ --radius: 0.5rem;
32
+ --sidebar: #f5f5f5;
33
+ --sidebar-foreground: #0a0a0a;
34
+ --sidebar-primary: #0a0a0a;
35
+ --sidebar-primary-foreground: #ffffff;
36
+ --sidebar-accent: #e5e5e5;
37
+ --sidebar-accent-foreground: #0a0a0a;
38
+ --sidebar-border: #e5e5e5;
39
+ --sidebar-ring: #3b82f6;
40
+ --font-heading: ui-sans-serif, system-ui, sans-serif;
41
+ --font-sans: ui-sans-serif, system-ui, sans-serif;
42
  }
43
 
44
  .dark {
45
+ --background: #0a0a0a;
46
+ --foreground: #ffffff;
47
+ --card: #1a1a1a;
48
+ --card-foreground: #ffffff;
49
+ --popover: #0a0a0a;
50
+ --popover-foreground: #ffffff;
51
+ --primary: #ffffff;
52
+ --primary-foreground: #0a0a0a;
53
+ --secondary: #2a2a2a;
54
+ --secondary-foreground: #ffffff;
55
+ --muted: #2a2a2a;
56
+ --muted-foreground: #a3a3a3;
57
+ --accent: #2a2a2a;
58
+ --accent-foreground: #ffffff;
59
+ --destructive: #7f1d1d;
60
+ --destructive-foreground: #ffffff;
61
+ --border: #2a2a2a;
62
+ --input: #2a2a2a;
63
+ --ring: #3b82f6;
64
+ --chart-1: #3b82f6;
65
+ --chart-2: #22c55e;
66
+ --chart-3: #eab308;
67
+ --chart-4: #f97316;
68
+ --chart-5: #ef4444;
69
+ --sidebar: #0a0a0a;
70
+ --sidebar-foreground: #ffffff;
71
+ --sidebar-primary: #3b82f6;
72
+ --sidebar-primary-foreground: #ffffff;
73
+ --sidebar-accent: #2a2a2a;
74
+ --sidebar-accent-foreground: #ffffff;
75
+ --sidebar-border: #2a2a2a;
76
+ --sidebar-ring: #3b82f6;
77
  }
78
 
79
  @theme inline {