/** * 内置 SVG 图标(源自 lucide,ISC License:https://lucide.dev) * 统一 24 网格 / currentColor 描边,尺寸由 size 控制。 */ import type { CSSProperties } from "react"; export type IconName = | "palette" | "network" | "flask-conical" | "wand-sparkles" | "database" | "monitor" | "external-link" | "sparkles" | "circle-check" | "circle-x" | "timer" | "list-checks" | "calendar-clock" | "bot" | "rotate-cw" | "file-down" | "plus" | "download" | "upload" | "globe" | "moon" | "sun" | "ellipsis" | "book-open" | "library" | "folder" | "folder-open" | "folder-plus" | "file-plus" | "file-text" | "pencil" | "chevron-right" | "chevron-down" | "zap" | "radio" | "plug-zap" | "mailbox" | "hexagon" | "x" | "trash" | "copy" | "play" | "unplug" | "eraser" | "code" | "clock" | "settings" | "arrow-left-right" | "shield-check" | "search" | "send" | "circle-slash" | "info"; const ICONS: Record = { "circle-check": " ", "circle-x": " ", "timer": " ", "list-checks": " ", "calendar-clock": " ", "bot": " ", "rotate-cw": " ", "file-down": " ", "palette": " ", "network": " ", "flask-conical": " ", "wand-sparkles": " ", "database": " ", "monitor": " ", "external-link": " ", "sparkles": " ", "plus": " ", "download": " ", "upload": " ", "globe": " ", "moon": "", "sun": " ", "ellipsis": " ", "book-open": " ", "library": " ", "folder": "", "folder-open": "", "folder-plus": " ", "file-plus": " ", "file-text": " ", "pencil": " ", "chevron-right": "", "chevron-down": "", "zap": "", "radio": " ", "plug-zap": " ", "mailbox": " ", "hexagon": "", "x": " ", "trash": " ", "copy": " ", "play": "", "unplug": " ", "eraser": " ", "code": " ", "clock": " ", "settings": " ", "arrow-left-right": " ", "info": " ", "circle-slash": " ", "send": " ", "shield-check": " ", "search": " ", }; export function Icon({ name, size = 16, strokeWidth = 2, className, style, title, }: { name: IconName; size?: number; strokeWidth?: number; className?: string; style?: CSSProperties; title?: string; }) { return ( ); }