diff --git a/vibn-frontend/components/vibn-chat/chat-panel.tsx b/vibn-frontend/components/vibn-chat/chat-panel.tsx index 6c9d484..5260661 100644 --- a/vibn-frontend/components/vibn-chat/chat-panel.tsx +++ b/vibn-frontend/components/vibn-chat/chat-panel.tsx @@ -302,7 +302,7 @@ function escapeHtmlAttr(s: string): string { } const LINK_STYLE = - "color:#4338ca;text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere;word-break:break-all"; + "color:#4f46e5;text-decoration:none;font-weight:500;border-bottom:1px solid #c7d2fe;transition:all 0.2s ease;overflow-wrap:anywhere;word-break:break-all"; /** [label](https://...) — href restricted to http(s) */ function markdownLinksToHtml(s: string): string { @@ -963,6 +963,31 @@ const suggestionChipStyle: React.CSSProperties = { transition: "all 0.1s ease", }; +import { + FileText, + Terminal, + Search, + Globe, + FolderTree, + Wrench, + CheckCircle2, + XCircle, + Database, + CloudUpload +} from "lucide-react"; + +function getToolIcon(name: string) { + const n = name.toLowerCase(); + if (n.includes("read") || n.includes("edit") || n.includes("write")) return ; + if (n.includes("shell") || n.includes("exec") || n.includes("command")) return ; + if (n.includes("search") || n.includes("grep") || n.includes("find")) return ; + if (n.includes("fetch") || n.includes("curl") || n.includes("browser")) return ; + if (n.includes("list") || n.includes("tree")) return ; + if (n.includes("deploy") || n.includes("ship")) return ; + if (n.includes("database") || n.includes("sql")) return ; + return ; +} + export function ChatPanel({ structural = false, artifactSlot,