Replace individual provider SDKs (@ai-sdk/openai, @ai-sdk/google, @ai-sdk/anthropic) with the Vercel AI Gateway. Cloud models are now accessed via a single AI_GATEWAY_API_KEY with provider/model strings (e.g. openai/gpt-4o-mini, google/gemini-2.5-flash). Ollama remains available as a local fallback via @ai-sdk/openai-compatible. Made-with: Cursor
61 lines
1.8 KiB
TypeScript
61 lines
1.8 KiB
TypeScript
"use client";
|
|
|
|
import Link from "next/link";
|
|
import { Upload, FileDown, Clock, Settings } from "lucide-react";
|
|
import { cn } from "@/lib/utils";
|
|
|
|
const actions = [
|
|
{
|
|
label: "Upload Documents",
|
|
description: "PDF, JPG, PNG formats",
|
|
href: "/upload",
|
|
icon: Upload,
|
|
accent: "text-primary bg-primary/10",
|
|
},
|
|
{
|
|
label: "Export Results",
|
|
description: "TXT, DOCX, CSV formats",
|
|
href: "/#",
|
|
icon: FileDown,
|
|
accent: "text-emerald-600 bg-emerald-500/10 dark:text-emerald-400",
|
|
},
|
|
{
|
|
label: "Recent Files",
|
|
description: "View processing history",
|
|
href: "/",
|
|
icon: Clock,
|
|
accent: "text-amber-600 bg-amber-500/10 dark:text-amber-400",
|
|
},
|
|
{
|
|
label: "Settings",
|
|
description: "Customize your experience",
|
|
href: "/settings",
|
|
icon: Settings,
|
|
accent: "text-violet-600 bg-violet-500/10 dark:text-violet-400",
|
|
},
|
|
];
|
|
|
|
export function QuickActions() {
|
|
return (
|
|
<div className="grid grid-cols-2 gap-3 sm:gap-4 lg:grid-cols-4">
|
|
{actions.map((action) => {
|
|
const Icon = action.icon;
|
|
return (
|
|
<Link
|
|
key={action.label}
|
|
href={action.href}
|
|
className="glass-card group flex items-center gap-3 rounded-2xl p-4 transition-all hover:scale-[1.02] hover:shadow-lg sm:p-5"
|
|
>
|
|
<div className={cn("flex size-10 shrink-0 items-center justify-center rounded-xl transition-transform group-hover:scale-110", action.accent)}>
|
|
<Icon className="size-5" />
|
|
</div>
|
|
<div className="min-w-0">
|
|
<p className="text-sm font-semibold truncate">{action.label}</p>
|
|
<p className="text-xs text-muted-foreground hidden sm:block">{action.description}</p>
|
|
</div>
|
|
</Link>
|
|
);
|
|
})}
|
|
</div>
|
|
);
|
|
}
|