import type { SVGProps } from 'react'; type IconName = | 'arrow-left' | 'arrow-up' | 'attach' | 'check' | 'chevron-down' | 'chevron-right' | 'close' | 'copy' | 'comment' | 'download' | 'draw' | 'edit' | 'eye' | 'file' | 'file-code' | 'folder' | 'grid' | 'history' | 'image' | 'import' | 'link' | 'mic' | 'minus' | 'music' | 'video' | 'pencil' | 'plus' | 'play' | 'present' | 'refresh' | 'reload' | 'search' | 'send' | 'settings' | 'share' | 'sliders' | 'spinner' | 'sparkles' | 'stop' | 'tweaks' | 'upload' | 'zoom-in' | 'zoom-out'; interface Props extends Omit, 'name'> { name: IconName; size?: number | string; } /** * Lightweight inline-SVG icon set tuned to the design system. Stroke-based * (Feather/Lucide style) so they pair cleanly with `currentColor` and adopt * the local text color. Use sparingly inside buttons that already have * accessible labels — set `aria-hidden` by default. */ export function Icon({ name, size = 14, strokeWidth = 1.6, ...rest }: Props) { const common = { width: size, height: size, viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth, strokeLinecap: 'round' as const, strokeLinejoin: 'round' as const, 'aria-hidden': true, focusable: 'false' as const, ...rest, }; switch (name) { case 'arrow-left': return ( ); case 'arrow-up': return ( ); case 'attach': return ( ); case 'check': return ( ); case 'chevron-down': return ( ); case 'chevron-right': return ( ); case 'close': return ( ); case 'copy': return ( ); case 'comment': return ( ); case 'download': return ( ); case 'draw': return ( ); case 'edit': return ( ); case 'eye': return ( ); case 'file': return ( ); case 'file-code': return ( ); case 'folder': return ( ); case 'grid': return ( ); case 'history': return ( ); case 'image': return ( ); case 'import': return ( ); case 'link': return ( ); case 'mic': return ( ); case 'minus': return ( ); case 'music': return ( ); case 'video': return ( ); case 'pencil': return ( ); case 'plus': return ( ); case 'play': return ( ); case 'present': return ( ); case 'refresh': return ( ); case 'reload': return ( ); case 'search': return ( ); case 'send': return ( ); case 'settings': return ( ); case 'share': return ( ); case 'sliders': return ( ); case 'spinner': return ( ); case 'sparkles': return ( ); case 'stop': return ( ); case 'tweaks': return ( ); case 'upload': return ( ); case 'zoom-in': return ( ); case 'zoom-out': return ( ); default: return null; } }