From c842a4b75b714686e21482464734f97f2136f887 Mon Sep 17 00:00:00 2001 From: Mark Henderson Date: Sun, 1 Mar 2026 20:21:39 -0800 Subject: [PATCH] fix: clean up chat UI layout and align theme to neutral white - Replace beige background with clean neutral white (matches Grok aesthetic) - Remove hardcoded hex colors in thread.tsx - use CSS variables throughout - Remove scroll-to-bottom button that showed incorrectly after auto-send - Chat container now integrates visually with the page instead of floating Made-with: Cursor --- app/globals.css | 68 ++++++++++++++---------------- components/AtlasChat.tsx | 6 +-- components/assistant-ui/thread.tsx | 51 +++++++--------------- 3 files changed, 50 insertions(+), 75 deletions(-) diff --git a/app/globals.css b/app/globals.css index e746dc7..c1f503a 100644 --- a/app/globals.css +++ b/app/globals.css @@ -44,44 +44,38 @@ } :root { - --radius: 0.625rem; - /* Vib'n warm beige background from logo */ - --background: oklch(0.96 0.015 80); - --foreground: oklch(0.25 0.02 230); - /* Slightly warmer white for cards */ - --card: oklch(0.99 0.01 80); - --card-foreground: oklch(0.25 0.02 230); - --popover: oklch(0.99 0.01 80); - --popover-foreground: oklch(0.25 0.02 230); - /* Vib'n dark blue from logo text */ - --primary: oklch(0.35 0.08 230); - --primary-foreground: oklch(0.99 0 0); - --secondary: oklch(0.92 0.015 80); - --secondary-foreground: oklch(0.35 0.08 230); - --muted: oklch(0.92 0.015 80); - --muted-foreground: oklch(0.50 0.02 230); - --accent: oklch(0.92 0.015 80); - --accent-foreground: oklch(0.35 0.08 230); + --radius: 0.5rem; + --background: oklch(0.985 0 0); + --foreground: oklch(0.09 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.09 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.09 0 0); + --primary: oklch(0.09 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.94 0 0); + --secondary-foreground: oklch(0.09 0 0); + --muted: oklch(0.94 0 0); + --muted-foreground: oklch(0.50 0 0); + --accent: oklch(0.94 0 0); + --accent-foreground: oklch(0.09 0 0); --destructive: oklch(0.577 0.245 27.325); - /* Softer borders on warm background */ - --border: oklch(0.88 0.015 80); - --input: oklch(0.88 0.015 80); - --ring: oklch(0.60 0.08 230); - /* Vib'n brand colors for charts */ - --chart-1: oklch(0.70 0.15 60); /* Orange */ - --chart-2: oklch(0.70 0.12 210); /* Light blue */ - --chart-3: oklch(0.55 0.10 220); /* Medium blue */ - --chart-4: oklch(0.40 0.08 230); /* Dark blue */ - --chart-5: oklch(0.75 0.15 70); /* Yellow */ - /* Sidebar with warm tint */ - --sidebar: oklch(0.98 0.01 80); - --sidebar-foreground: oklch(0.30 0.02 230); - --sidebar-primary: oklch(0.35 0.08 230); - --sidebar-primary-foreground: oklch(0.99 0 0); - --sidebar-accent: oklch(0.92 0.015 80); - --sidebar-accent-foreground: oklch(0.35 0.08 230); - --sidebar-border: oklch(0.88 0.015 80); - --sidebar-ring: oklch(0.60 0.08 230); + --border: oklch(0.88 0 0); + --input: oklch(0.88 0 0); + --ring: oklch(0.70 0 0); + --chart-1: oklch(0.70 0.15 60); + --chart-2: oklch(0.70 0.12 210); + --chart-3: oklch(0.55 0.10 220); + --chart-4: oklch(0.40 0.08 230); + --chart-5: oklch(0.75 0.15 70); + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.09 0 0); + --sidebar-primary: oklch(0.09 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.94 0 0); + --sidebar-accent-foreground: oklch(0.09 0 0); + --sidebar-border: oklch(0.88 0 0); + --sidebar-ring: oklch(0.70 0 0); } .dark { diff --git a/components/AtlasChat.tsx b/components/AtlasChat.tsx index 8345df1..7acc6fb 100644 --- a/components/AtlasChat.tsx +++ b/components/AtlasChat.tsx @@ -91,14 +91,14 @@ function AtlasChatInner({ }; return ( -
+
{/* Minimal header bar */} -
+
@@ -56,51 +55,33 @@ export const Thread: FC = () => ( /> - {/* Scroll to bottom */} -
- - -
+ ); -// --------------------------------------------------------------------------- -// Scroll to bottom -// --------------------------------------------------------------------------- - -const ThreadScrollToBottom: FC = () => ( - - - -); - // --------------------------------------------------------------------------- // Composer — Grok pill style with inverted send button // --------------------------------------------------------------------------- const Composer: FC = () => ( -
+
- {/* Send button (hidden while running) */} - - {/* Cancel button (shown while running) */} - @@ -115,7 +96,7 @@ const Composer: FC = () => ( const FollowupSuggestion: FC<{ suggestion: { prompt: string } }> = ({ suggestion }) => ( - @@ -135,7 +116,7 @@ const UserMessage: FC = () => ( ); const UserText: FC<{ text: string }> = ({ text }) => ( -
+
{text}
); @@ -147,7 +128,7 @@ const UserActionBar: FC = () => ( className="flex items-center gap-1 mt-1 justify-end opacity-0 group-hover:opacity-100 transition-opacity" > - @@ -184,7 +165,7 @@ const AssistantActionBar: FC = () => ( className="flex items-center gap-2 mt-1.5 opacity-0 group-hover:opacity-100 transition-opacity" > - - @@ -214,15 +195,15 @@ const BranchPicker: FC = () => ( className="flex items-center gap-1 mt-1 opacity-0 group-hover:opacity-100 transition-opacity" > - - + / -