diff --git a/web/app/globals.css b/web/app/globals.css index 210cfed..815ab51 100644 --- a/web/app/globals.css +++ b/web/app/globals.css @@ -7,7 +7,7 @@ --card-foreground: 222 47% 11%; --popover: 0 0% 100%; --popover-foreground: 222 47% 11%; - --primary: 221 83% 53%; + --primary: 38 39% 55%; --primary-foreground: 210 40% 98%; --secondary: 210 40% 96%; --secondary-foreground: 222 47% 11%; @@ -19,7 +19,7 @@ --destructive-foreground: 210 40% 98%; --border: 214 32% 91%; --input: 214 32% 91%; - --ring: 221 83% 53%; + --ring: 38 39% 55%; --radius: 0.5rem; --sidebar-width: 16rem; --success: 142 76% 36%; @@ -27,25 +27,25 @@ } .dark { - --background: 222 47% 6%; + --background: 0 0% 10%; --foreground: 210 40% 98%; - --card: 222 47% 9%; + --card: 0 0% 13%; --card-foreground: 210 40% 98%; - --popover: 222 47% 9%; + --popover: 0 0% 13%; --popover-foreground: 210 40% 98%; - --primary: 217 91% 60%; - --primary-foreground: 222 47% 6%; - --secondary: 217 33% 17%; + --primary: 38 39% 73%; + --primary-foreground: 0 0% 10%; + --secondary: 0 0% 17%; --secondary-foreground: 210 40% 98%; - --muted: 217 33% 17%; - --muted-foreground: 215 20% 65%; - --accent: 217 33% 17%; + --muted: 0 0% 17%; + --muted-foreground: 0 0% 65%; + --accent: 0 0% 17%; --accent-foreground: 210 40% 98%; --destructive: 0 63% 50%; --destructive-foreground: 210 40% 98%; - --border: 217 33% 17%; - --input: 217 33% 17%; - --ring: 217 91% 60%; + --border: 0 0% 20%; + --input: 0 0% 20%; + --ring: 38 39% 73%; --success: 142 71% 45%; --warning: 38 92% 50%; } @@ -58,4 +58,4 @@ body { background: hsl(var(--background)); color: hsl(var(--foreground)); font-family: var(--font-geist-sans), system-ui, sans-serif; -} +} \ No newline at end of file diff --git a/web/app/layout.tsx b/web/app/layout.tsx index 89b50f5..38da982 100644 --- a/web/app/layout.tsx +++ b/web/app/layout.tsx @@ -3,7 +3,7 @@ import { Geist, Geist_Mono } from "next/font/google"; import "./globals.css"; import { ThemeProvider } from "@/components/theme-provider"; import { AuthProvider } from "@/lib/auth-context"; -import { Sidebar } from "@/components/sidebar"; +import { AppShell } from "@/components/app-shell"; const geistSans = Geist({ variable: "--font-geist-sans", @@ -18,7 +18,7 @@ const geistMono = Geist_Mono({ export const metadata: Metadata = { title: "Birck Digital Twin Platform", description: - "Centralized platform for smart digital twins — Purdue Birck Nanotechnology Center & SMART USA Partners", + "Multi-domain platform for intelligent digital twins — nanoHUB · Purdue University", }; export default function RootLayout({ @@ -33,16 +33,10 @@ export default function RootLayout({ > -
- -
-
{children}
-
-
+ {children}
); } - diff --git a/web/app/login/page.tsx b/web/app/login/page.tsx index 2e4ea91..83b459a 100644 --- a/web/app/login/page.tsx +++ b/web/app/login/page.tsx @@ -11,32 +11,39 @@ export default function LoginPage() { return (
{/* Left Panel — Branding */} -
+
+ {/* Subtle gold accent line at top */} +
+
-
- +
+
- Birck Digital Twin - SMART USA Platform + Multi-Domain Digital Twin Platform + nanoHUB · Purdue University
-

- Centralized Smart
Digital Twin Platform +

+ Accelerate Discovery with
Intelligent Digital Twins

-

- AI-driven optimization for semiconductor manufacturing, materials science, and bioengineering equipment across Purdue and SMART USA partners. +

+ An open, domain-agnostic platform for AI-driven equipment optimization. Whether your work spans semiconductor manufacturing, materials science, bioengineering, or beyond — bring your data and build your digital twin.

-
- Purdue University - - Birck Nanotechnology Center - - SMART USA +
+ Purdue University + nanoHUB
@@ -69,8 +76,8 @@ export default function LoginPage() { key={u.id} onClick={() => setSelectedUser(u)} className={`p-2 rounded-md text-left text-xs transition-all ${selectedUser.id === u.id - ? "bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] ring-2 ring-[hsl(var(--primary))]" - : "bg-[hsl(var(--muted))] text-[hsl(var(--muted-foreground))] hover:bg-[hsl(var(--accent))]" + ? "bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] ring-2 ring-[hsl(var(--primary))]" + : "bg-[hsl(var(--muted))] text-[hsl(var(--muted-foreground))] hover:bg-[hsl(var(--accent))]" }`} > {u.name.split(" ").slice(-1)[0]} diff --git a/web/components/app-shell.tsx b/web/components/app-shell.tsx new file mode 100644 index 0000000..08c1682 --- /dev/null +++ b/web/components/app-shell.tsx @@ -0,0 +1,24 @@ +"use client"; + +import { usePathname } from "next/navigation"; +import { Sidebar } from "@/components/sidebar"; + +const NO_SHELL_ROUTES = ["/login"]; + +export function AppShell({ children }: { children: React.ReactNode }) { + const pathname = usePathname(); + const isFullScreen = NO_SHELL_ROUTES.some((r) => pathname.startsWith(r)); + + if (isFullScreen) { + return <>{children}; + } + + return ( +
+ +
+
{children}
+
+
+ ); +} diff --git a/web/public/nanohub-logo-clean.svg b/web/public/nanohub-logo-clean.svg new file mode 100644 index 0000000..33c0766 --- /dev/null +++ b/web/public/nanohub-logo-clean.svg @@ -0,0 +1,21 @@ + + + + n + + + + + + + + + + + + + + + + nanoHUB + diff --git a/web/public/nanohub.png b/web/public/nanohub.png new file mode 100644 index 0000000..5dc9936 Binary files /dev/null and b/web/public/nanohub.png differ diff --git a/web/public/purdue-logo-clean.svg b/web/public/purdue-logo-clean.svg new file mode 100644 index 0000000..376e4eb --- /dev/null +++ b/web/public/purdue-logo-clean.svg @@ -0,0 +1,4 @@ + + PURDUE + UNIVERSITY + diff --git a/web/public/purdue-logo.svg b/web/public/purdue-logo.svg new file mode 100644 index 0000000..b7891cb --- /dev/null +++ b/web/public/purdue-logo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/web/public/purdue.png b/web/public/purdue.png new file mode 100644 index 0000000..625fe36 Binary files /dev/null and b/web/public/purdue.png differ