feat: use structured output, import CSV, bugfixes

This commit is contained in:
Vasily Zubarev
2025-03-21 18:42:14 +01:00
parent 33727a431e
commit f6dc617eae
35 changed files with 735 additions and 195 deletions

View File

@@ -17,7 +17,7 @@ import {
SidebarTrigger,
useSidebar,
} from "@/components/ui/sidebar"
import { ClockArrowUp, FileText, LayoutDashboard, Settings, Sparkles, Upload } from "lucide-react"
import { ClockArrowUp, FileText, Import, LayoutDashboard, Settings, Sparkles, Upload } from "lucide-react"
import Link from "next/link"
import { usePathname } from "next/navigation"
import { useEffect } from "react"
@@ -31,7 +31,7 @@ export function AppSidebar({
settings: Record<string, string>
unsortedFilesCount: number
}) {
const { setOpenMobile } = useSidebar()
const { open, setOpenMobile } = useSidebar()
const pathname = usePathname()
const { notification } = useNotification()
@@ -44,23 +44,31 @@ export function AppSidebar({
<>
<Sidebar variant="inset" collapsible="icon">
<SidebarHeader>
<Link href="/" className="flex items-center gap-2 p-2">
<Avatar className="h-12 w-12 rounded-lg">
<AvatarImage src="/logo/256.png" />
<AvatarFallback className="rounded-lg">AI</AvatarFallback>
</Avatar>
<div className="grid flex-1 text-left leading-tight">
<span className="truncate font-semibold">{settings.app_title}</span>
<span className="truncate text-xs">Beta</span>
</div>
<SidebarTrigger className="md:hidden" />
</Link>
{open ? (
<Link href="/" className="flex items-center gap-2 p-2">
<Avatar className="h-12 w-12 rounded-lg">
<AvatarImage src="/logo/256.png" />
<AvatarFallback className="rounded-lg">AI</AvatarFallback>
</Avatar>
<div className="grid flex-1 text-left leading-tight">
<span className="truncate font-semibold">{settings.app_title}</span>
<span className="truncate text-xs">Beta</span>
</div>
</Link>
) : (
<Link href="/">
<Avatar className="h-10 w-10 rounded-lg">
<AvatarImage src="/logo/256.png" />
<AvatarFallback className="rounded-lg">AI</AvatarFallback>
</Avatar>
</Link>
)}
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<UploadButton className="w-full mt-4 mb-2">
<Upload className="mr-2 h-4 w-4" />
<span>Upload</span>
<Upload className="h-4 w-4" />
{open ? <span>Upload</span> : ""}
</UploadButton>
</SidebarGroup>
<SidebarGroup>
@@ -121,6 +129,14 @@ export function AppSidebar({
<SidebarGroup>
<SidebarGroupContent>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton asChild>
<Link href="/import/csv">
<Import />
Import from CSV
</Link>
</SidebarMenuButton>
</SidebarMenuItem>
<SidebarMenuItem>
<SidebarMenuButton asChild>
<Link href="https://vas3k.com/donate/" target="_blank">
@@ -129,6 +145,11 @@ export function AppSidebar({
</Link>
</SidebarMenuButton>
</SidebarMenuItem>
{!open && (
<SidebarMenuItem>
<SidebarTrigger />
</SidebarMenuItem>
)}
</SidebarMenu>
</SidebarGroupContent>
</SidebarGroup>