From adb9e15b6ce3ea30b0949e98a572af67f0836ffc Mon Sep 17 00:00:00 2001 From: James Magahern Date: Sat, 2 May 2026 15:44:31 -0700 Subject: [PATCH] new look --- web/src/App.tsx | 201 ++++++++++++------ web/src/components/auth/auth-screen.tsx | 15 +- .../components/chat/chat-messages-panel.tsx | 18 +- .../search/search-results-panel.tsx | 20 +- web/src/components/ui/button.tsx | 12 +- web/src/components/ui/input.tsx | 2 +- web/src/components/ui/textarea.tsx | 2 +- web/src/index.css | 76 +++++-- 8 files changed, 235 insertions(+), 111 deletions(-) diff --git a/web/src/App.tsx b/web/src/App.tsx index 863c20f..f7871f8 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -248,7 +248,7 @@ function ModelCombobox({ options, value, onChange, disabled = false }: ModelComb return (
-
+
{open ? ( -
+
{normalizedDraftValue && !hasExactOption ? ( - +
+ + setSidebarQuery(event.currentTarget.value)} + placeholder="Search chats" + className="h-10 w-full rounded-lg border border-violet-300/18 bg-background/66 pl-9 pr-3 text-sm text-violet-50 outline-none shadow-[inset_0_1px_0_hsl(255_100%_92%_/_0.05)] placeholder:text-muted-foreground focus:border-violet-300/45 focus:ring-1 focus:ring-ring/70" + /> +
- -
+ +
{isLoadingCollections && sidebarItems.length === 0 ?

Loading conversations...

: null} {!isLoadingCollections && sidebarItems.length === 0 ? (
@@ -1207,45 +1260,60 @@ export default function App() { Start a chat or run your first search.
) : null} - {sidebarItems.map((item) => { - const active = selectedItem?.kind === item.kind && selectedItem.id === item.id; - const initiatedLabel = item.kind === "chat" && item.initiatedModel - ? `${getProviderLabel(item.initiatedProvider)}${item.initiatedProvider ? " · " : ""}${item.initiatedModel}` - : null; - return ( - - ); - })} + {!isLoadingCollections && sidebarItems.length > 0 && filteredSidebarItems.length === 0 ? ( +

No chats found.

+ ) : null} + {sidebarSections.map((section) => ( +
+

{section.label}

+ {section.items.map((item) => { + const active = selectedItem?.kind === item.kind && selectedItem.id === item.id; + const initiatedLabel = item.kind === "chat" && item.initiatedModel + ? `${getProviderLabel(item.initiatedProvider)}${item.initiatedProvider ? " · " : ""}${item.initiatedModel}` + : null; + return ( + + ); + })} +
+ ))}
-
-
+
+
{!isSearchMode ? ( <>