diff --git a/components/AtlasChat.tsx b/components/AtlasChat.tsx index 26c11c9..8345df1 100644 --- a/components/AtlasChat.tsx +++ b/components/AtlasChat.tsx @@ -8,7 +8,7 @@ import { } from "@assistant-ui/react"; import { Thread } from "@/components/assistant-ui/thread"; import { Button } from "@/components/ui/button"; -import { FileText, RotateCcw } from "lucide-react"; +import { RotateCcw } from "lucide-react"; // --------------------------------------------------------------------------- // Props @@ -91,29 +91,18 @@ function AtlasChatInner({ }; return ( -
- {/* Header */} -
-
-
- A -
-
-

Atlas

-

Product Requirements

-
-
-
- -
+
+ {/* Minimal header bar */} +
+
{/* Thread */} diff --git a/components/assistant-ui/thread.tsx b/components/assistant-ui/thread.tsx index 3b7504d..2b8bfdc 100644 --- a/components/assistant-ui/thread.tsx +++ b/components/assistant-ui/thread.tsx @@ -19,28 +19,44 @@ import { } from "lucide-react"; import type { FC } from "react"; import { MarkdownText } from "./markdown-text"; -import { cn } from "@/lib/utils"; // --------------------------------------------------------------------------- -// Thread root +// Thread root — Grok-style layout +// When empty: logo + composer centered. When not empty: viewport + composer bottom. // --------------------------------------------------------------------------- export const Thread: FC = () => ( - - - - - + + {/* Empty state: centered welcome + composer */} + +
+
+
+ A +
+

Atlas

+

+ Your product strategist. Let's define what you're building. +

+
+
+ +
+
+
+ + {/* Messages viewport */} + - + {/* Scroll to bottom */}
@@ -54,26 +70,43 @@ export const Thread: FC = () => ( const ThreadScrollToBottom: FC = () => ( - ); // --------------------------------------------------------------------------- -// Welcome screen (shown when thread is empty) +// Composer — Grok pill style with inverted send button // --------------------------------------------------------------------------- -const ThreadWelcome: FC = () => ( -
-
- A +const Composer: FC = () => ( + +
+ + {/* Send button (hidden while running) */} + + + + + + {/* Cancel button (shown while running) */} + + + + +
-

Atlas

-

- Your product requirements guide. Let's define what you're building. -

-
+ ); // --------------------------------------------------------------------------- @@ -82,58 +115,27 @@ const ThreadWelcome: FC = () => ( const FollowupSuggestion: FC<{ suggestion: { prompt: string } }> = ({ suggestion }) => ( - ); // --------------------------------------------------------------------------- -// Composer (input area) -// --------------------------------------------------------------------------- - -const Composer: FC = () => ( - - - - - - - - - - - - - -); - -// --------------------------------------------------------------------------- -// User message +// User message — subtle right-aligned bubble // --------------------------------------------------------------------------- const UserMessage: FC = () => ( - -
- + +
+
); const UserText: FC<{ text: string }> = ({ text }) => ( -
+
{text}
); @@ -145,7 +147,7 @@ const UserActionBar: FC = () => ( className="flex items-center gap-1 mt-1 justify-end opacity-0 group-hover:opacity-100 transition-opacity" > - @@ -153,16 +155,16 @@ const UserActionBar: FC = () => ( ); // --------------------------------------------------------------------------- -// Assistant message +// Assistant message — plain text, no bubble, small avatar // --------------------------------------------------------------------------- const AssistantMessage: FC = () => ( - -
+ +
A
-
-
+
+
@@ -171,16 +173,18 @@ const AssistantMessage: FC = () => ( ); -const AssistantText: FC = () => ; +const AssistantText: FC = () => ( + +); const AssistantActionBar: FC = () => ( - - @@ -201,7 +205,7 @@ const AssistantActionBar: FC = () => ( ); // --------------------------------------------------------------------------- -// Branch picker (for regenerated responses) +// Branch picker // --------------------------------------------------------------------------- const BranchPicker: FC = () => ( @@ -210,15 +214,15 @@ const BranchPicker: FC = () => ( className="flex items-center gap-1 mt-1 opacity-0 group-hover:opacity-100 transition-opacity" > - - + / -