feat: add file icons

This commit is contained in:
Henry Li
2026-02-02 10:02:31 +08:00
parent 8bb4c35416
commit c587460dbc
5 changed files with 23 additions and 6 deletions

View File

@@ -229,7 +229,7 @@ export default function ChatPage() {
)}
</div>
</header>
<main className="flex min-h-0 grow flex-col">
<main className="flex min-h-0 max-w-full grow flex-col">
<div className="flex size-full justify-center">
<MessageList
className={cn("size-full", !isNewThread && "pt-10")}

View File

@@ -167,7 +167,10 @@ export type ChainOfThoughtSearchResultsProps = ComponentProps<"div">;
export const ChainOfThoughtSearchResults = memo(
({ className, ...props }: ChainOfThoughtSearchResultsProps) => (
<div
className={cn("flex flex-wrap items-center gap-2", className)}
className={cn(
"flex flex-wrap items-center gap-2 overflow-x-hidden",
className,
)}
{...props}
/>
),

View File

@@ -83,7 +83,7 @@ export function ArtifactFileList({
<CardTitle className="relative pl-8">
<div>{getFileName(file)}</div>
<div className="absolute top-2 -left-0.5">
{getFileIcon(file)}
{getFileIcon(file, "size-6")}
</div>
</CardTitle>
<CardDescription className="pl-8 text-xs">

View File

@@ -37,7 +37,9 @@ export function ArtifactsProvider({ children }: ArtifactsProviderProps) {
const select = (artifact: string, autoSelect = false) => {
setSelectedArtifact(artifact);
setSidebarOpen(false);
if (env.NEXT_PUBLIC_STATIC_WEBSITE_ONLY !== "true") {
setSidebarOpen(false);
}
if (!autoSelect) {
setAutoSelect(false);
}

View File

@@ -5,6 +5,7 @@ import {
FileCogIcon,
FilePlayIcon,
FileTextIcon,
ImageIcon,
} from "lucide-react";
const extensionMap: Record<string, string> = {
@@ -191,17 +192,28 @@ export function getFileExtensionDisplayName(filepath: string) {
}
}
export function getFileIcon(filepath: string) {
export function getFileIcon(filepath: string, className?: string) {
const extension = getFileExtension(filepath);
const { isCodeFile } = checkCodeFile(filepath);
const className = "size-6";
switch (extension) {
case "skill":
return <FileCogIcon className={className} />;
case "html":
return <CompassIcon className={className} />;
case "txt":
case "md":
return <BookOpenTextIcon className={className} />;
case "jpg":
case "jpeg":
case "png":
case "gif":
case "bmp":
case "tiff":
case "ico":
case "webp":
case "svg":
case "heic":
return <ImageIcon className={className} />;
case "mp3":
case "wav":
case "ogg":