disable attachments and update sidebar

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

fixing package.json

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>

moving ui -> chat

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
This commit is contained in:
Francisco Javier Arceo 2025-07-21 00:08:56 -04:00
parent f672258dd5
commit 2e271f2524
48 changed files with 97 additions and 64 deletions

View file

@ -2,7 +2,7 @@
import { ChatMessage, ChatCompletion } from "@/lib/types";
import { ChatMessageItem } from "@/components/chat-completions/chat-messasge-item";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/chat/card";
import {
DetailLoadingView,
DetailErrorView,

View file

@ -7,7 +7,7 @@ import { extractTextFromContentPart } from "@/lib/format-message-content";
import {
MessageBlock,
ToolCallBlock,
} from "@/components/ui/message-components";
} from "@/components/chat/message-components";
interface ChatMessageItemProps {
message: ChatMessage;

View file

@ -10,9 +10,9 @@ import {
Collapsible,
CollapsibleContent,
CollapsibleTrigger,
} from "@/components/ui/collapsible"
import { FilePreview } from "@/components/ui/file-preview"
import { MarkdownRenderer } from "@/components/ui/markdown-renderer"
} from "@/components/chat/collapsible"
import { FilePreview } from "@/components/chat/file-preview"
import { MarkdownRenderer } from "@/components/chat/markdown-renderer"
const chatBubbleVariants = cva(
"group/message relative break-words rounded-lg p-3 text-sm sm:max-w-[70%]",

View file

@ -11,12 +11,12 @@ import { ArrowDown, ThumbsDown, ThumbsUp } from "lucide-react"
import { cn } from "@/lib/utils"
import { useAutoScroll } from "@/hooks/use-auto-scroll"
import { Button } from "@/components/ui/button"
import { type Message } from "@/components/ui/chat-message"
import { CopyButton } from "@/components/ui/copy-button"
import { MessageInput } from "@/components/ui/message-input"
import { MessageList } from "@/components/ui/message-list"
import { PromptSuggestions } from "@/components/ui/prompt-suggestions"
import { Button } from "@/components/chat/button"
import { type Message } from "@/components/chat/chat-message"
import { CopyButton } from "@/components/chat/copy-button"
import { MessageInput } from "@/components/chat/message-input"
import { MessageList } from "@/components/chat/message-list"
import { PromptSuggestions } from "@/components/chat/prompt-suggestions"
interface ChatPropsBase {
handleSubmit: (

View file

@ -4,7 +4,7 @@ import { Check, Copy } from "lucide-react"
import { cn } from "@/lib/utils"
import { useCopyToClipboard } from "@/hooks/use-copy-to-clipboard"
import { Button } from "@/components/ui/button"
import { Button } from "@/components/chat/button"
type CopyButtonProps = {
content: string

View file

@ -3,7 +3,7 @@ import Markdown from "react-markdown"
import remarkGfm from "remark-gfm"
import { cn } from "@/lib/utils"
import { CopyButton } from "@/components/ui/copy-button"
import { CopyButton } from "@/components/chat/copy-button"
interface MarkdownRendererProps {
children: string

View file

@ -8,10 +8,10 @@ import { omit } from "remeda"
import { cn } from "@/lib/utils"
import { useAudioRecording } from "@/hooks/use-audio-recording"
import { useAutosizeTextArea } from "@/hooks/use-autosize-textarea"
import { AudioVisualizer } from "@/components/ui/audio-visualizer"
import { Button } from "@/components/ui/button"
import { FilePreview } from "@/components/ui/file-preview"
import { InterruptPrompt } from "@/components/ui/interrupt-prompt"
import { AudioVisualizer } from "@/components/chat/audio-visualizer"
import { Button } from "@/components/chat/button"
import { FilePreview } from "@/components/chat/file-preview"
import { InterruptPrompt } from "@/components/chat/interrupt-prompt"
interface MessageInputBaseProps
extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
@ -254,6 +254,7 @@ export function MessageInput({
variant="outline"
className="h-8 w-8"
aria-label="Attach a file"
disabled={true}
onClick={async () => {
const files = await showFileUploadDialog()
addFiles(files)

View file

@ -2,8 +2,8 @@ import {
ChatMessage,
type ChatMessageProps,
type Message,
} from "@/components/ui/chat-message"
import { TypingIndicator } from "@/components/ui/typing-indicator"
} from "@/components/chat/chat-message"
import { TypingIndicator } from "@/components/chat/typing-indicator"
type AdditionalMessageOptions = Omit<ChatMessageProps, keyof Message>

View file

@ -4,13 +4,13 @@ import * as React from "react";
import { Moon, Sun } from "lucide-react";
import { useTheme } from "next-themes";
import { Button } from "@/components/ui/button";
import { Button } from "@/components/chat/button";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
} from "@/components/chat/dropdown-menu";
export function ModeToggle() {
const { setTheme } = useTheme();

View file

@ -7,23 +7,23 @@ import { PanelLeftIcon } from "lucide-react";
import { useIsMobile } from "@/hooks/use-mobile";
import { cn } from "@/lib/utils";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Separator } from "@/components/ui/separator";
import { Button } from "@/components/chat/button";
import { Input } from "@/components/chat/input";
import { Separator } from "@/components/chat/separator";
import {
Sheet,
SheetContent,
SheetDescription,
SheetHeader,
SheetTitle,
} from "@/components/ui/sheet";
import { Skeleton } from "@/components/ui/skeleton";
} from "@/components/chat/sheet";
import { Skeleton } from "@/components/chat/skeleton";
import {
Tooltip,
TooltipContent,
TooltipProvider,
TooltipTrigger,
} from "@/components/ui/tooltip";
} from "@/components/chat/tooltip";
const SIDEBAR_COOKIE_NAME = "sidebar_state";
const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;

View file

@ -21,14 +21,16 @@ import {
SidebarMenuButton,
SidebarMenuItem,
SidebarHeader,
} from "@/components/ui/sidebar";
} from "@/components/chat/sidebar";
// Extracted Chat Playground item
const chatPlaygroundItem = {
title: "Chat Playground",
url: "/chat-playground",
icon: MessageCircle,
};
// Removed Chat Playground from log items
const logItems = [
{
title: "Chat Playground",
url: "/chat-playground",
icon: MessageCircle,
},
{
title: "Chat Completions",
url: "/logs/chat-completions",
@ -60,6 +62,35 @@ export function AppSidebar() {
<Link href="/">Llama Stack</Link>
</SidebarHeader>
<SidebarContent>
{/* Chat Playground as its own section */}
<SidebarGroup>
<SidebarGroupContent>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton
asChild
className={cn(
"justify-start",
pathname.startsWith(chatPlaygroundItem.url) &&
"bg-gray-200 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-700 text-gray-900 dark:text-gray-100",
)}
>
<Link href={chatPlaygroundItem.url}>
<chatPlaygroundItem.icon
className={cn(
pathname.startsWith(chatPlaygroundItem.url) && "text-gray-900 dark:text-gray-100",
"mr-2 h-4 w-4",
)}
/>
<span>{chatPlaygroundItem.title}</span>
</Link>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroupContent>
</SidebarGroup>
{/* Logs section */}
<SidebarGroup>
<SidebarGroupLabel>Logs</SidebarGroupLabel>
<SidebarGroupContent>

View file

@ -1,6 +1,6 @@
import React from "react";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Skeleton } from "@/components/ui/skeleton";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/chat/card";
import { Skeleton } from "@/components/chat/skeleton";
export function DetailLoadingView({ title }: { title: string }) {
return (

View file

@ -9,7 +9,7 @@ import {
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@/components/ui/breadcrumb";
} from "@/components/chat/breadcrumb";
export interface BreadcrumbSegment {
label: string;

View file

@ -13,8 +13,8 @@ import {
TableHead,
TableHeader,
TableRow,
} from "@/components/ui/table";
import { Skeleton } from "@/components/ui/skeleton";
} from "@/components/chat/table";
import { Skeleton } from "@/components/chat/skeleton";
// Generic table row data interface
export interface LogTableRow {

View file

@ -1,7 +1,7 @@
import {
MessageBlock,
ToolCallBlock,
} from "@/components/ui/message-components";
} from "@/components/chat/message-components";
import { FunctionCallItem } from "../utils/item-types";
interface FunctionCallItemProps {

View file

@ -1,7 +1,7 @@
import {
MessageBlock,
ToolCallBlock,
} from "@/components/ui/message-components";
} from "@/components/chat/message-components";
import { BaseItem } from "../utils/item-types";
interface GenericItemProps {

View file

@ -1,7 +1,7 @@
import {
MessageBlock,
ToolCallBlock,
} from "@/components/ui/message-components";
} from "@/components/chat/message-components";
import { FunctionCallItem, FunctionCallOutputItem } from "../utils/item-types";
interface GroupedFunctionCallItemProps {

View file

@ -1,4 +1,4 @@
import { MessageBlock } from "@/components/ui/message-components";
import { MessageBlock } from "@/components/chat/message-components";
import { MessageItem } from "../utils/item-types";
interface MessageItemProps {

View file

@ -1,7 +1,7 @@
import {
MessageBlock,
ToolCallBlock,
} from "@/components/ui/message-components";
} from "@/components/chat/message-components";
import { WebSearchCallItem } from "../utils/item-types";
interface WebSearchItemProps {

View file

@ -1,8 +1,8 @@
"use client";
import { OpenAIResponse, InputItemListResponse } from "@/lib/types";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Skeleton } from "@/components/ui/skeleton";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/chat/card";
import { Skeleton } from "@/components/chat/skeleton";
import {
DetailLoadingView,
DetailErrorView,

View file

@ -2,8 +2,8 @@
import type { VectorStore } from "llama-stack-client/resources/vector-stores/vector-stores";
import type { VectorStoreFile } from "llama-stack-client/resources/vector-stores/files";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Skeleton } from "@/components/ui/skeleton";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/chat/card";
import { Skeleton } from "@/components/chat/skeleton";
import {
DetailLoadingView,
DetailErrorView,
@ -20,7 +20,7 @@ import {
TableHead,
TableHeader,
TableRow,
} from "@/components/ui/table";
} from "@/components/chat/table";
interface VectorStoreDetailViewProps {
store: VectorStore | null;