Files
lms-sb/src/components/tools/ToolCard.tsx
T

28 lines
1017 B
TypeScript

import Link from "next/link";
import { MessageSquareQuote, FileCode2, Palette, SlidersHorizontal, Table2, Database, FileText, Wrench, type LucideIcon } from "lucide-react";
import type { ToolMeta } from "@/lib/tools/_shared/types";
// Явная карта (не `import * as Icons`) — иначе весь набор lucide попадает в бандл.
const ICONS: Record<string, LucideIcon> = {
MessageSquareQuote,
FileCode2,
Palette,
SlidersHorizontal,
Table2,
Database,
FileText,
};
export function ToolCard({ tool }: { tool: ToolMeta }) {
const Icon = ICONS[tool.icon] ?? Wrench;
return (
<Link href={`/tools/${tool.id}`} className="card-aubade p-4 flex flex-col gap-2 no-underline">
<div className="flex items-center gap-2" style={{ color: "var(--foreground)" }}>
<Icon size={20} />
<span className="font-bold">{tool.title}</span>
</div>
<p className="text-sm" style={{ color: "var(--muted-foreground)" }}>{tool.description}</p>
</Link>
);
}