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 ? ( <>