--- // Icon component with SVG icons // Icons are either fill-based (from GitHub Primer) or stroke-based (custom) // GitHub Primer icons are sourced from https://primer.style/foundations/icons/ export interface Props { name: 'agents' | 'instructions' | 'skills' | 'hooks' | 'workflows' | 'plugins' | 'tools' | 'learning' | 'close' | 'copy' | 'download' | 'share' | 'external' | 'plus' | 'search' | 'chevron-down' | 'document' | 'lightning' | 'hook' | 'workflow' | 'plug' | 'wrench' | 'book' | 'robot' | 'sync'; size?: number; class?: string; } const { name, size = 24, class: className = '' } = Astro.props; // Icon definitions: { path: SVG path(s), fill: true for fill-based icons } const icons: Record = { // Resource type icons - using GitHub Primer icons where available // Agent icon - using GitHub Primer's agent-24 (sparkle over workflow) // Source: https://primer.style/foundations/icons/agent-24 'robot': { fill: true, path: `` }, // Document icon - custom stroke-based 'document': { path: `` }, // Lightning icon - custom stroke-based (for skills) 'lightning': { path: `` }, // Hook icon - using GitHub Primer's sync-24 (represents hooks/iterations) // Source: https://primer.style/foundations/icons/sync-24 'hook': { fill: true, path: `` }, // Workflow icon - using GitHub Primer's workflow-24 // Source: https://primer.style/foundations/icons/workflow-24 // Also used by https://github.github.com/gh-aw/ 'workflow': { fill: true, path: `` }, // Plug icon - using GitHub Primer's plug-24 // Source: https://primer.style/foundations/icons/plug-24 'plug': { fill: true, path: `` }, // Wrench icon - custom stroke-based (for tools) 'wrench': { path: `` }, // Book icon - custom stroke-based (for learning) 'book': { path: `` }, // Action icons - all custom stroke-based 'close': { path: `` }, 'copy': { path: `` }, 'download': { path: `` }, 'share': { path: `` }, 'external': { path: `` }, 'plus': { path: `` }, 'search': { path: `` }, 'chevron-down': { path: `` }, // Alias for hook - same as 'hook' 'sync': { fill: true, path: `` }, }; const iconData = icons[name] || { path: '' }; const isFill = iconData.fill ?? false; const iconPath = iconData.path; ---