"""Inline SVG icons for Alembic UI. All icons are hand-crafted SVG paths — no emojis, no external dependencies. Use as: ICONS["name"] returns an SVG string ready for HTML injection. Designed at 24x24 viewBox, stroke-based, 1.5px stroke weight. """ ICONS = { # Brand "alembic": ''' ''', # Services "sheets": ''' ''', "notion": ''' ''', "slack": ''' ''', "gmail": ''' ''', "github": ''' ''', # Gallery app types "mail": ''' ''', "git-pr": ''' ''', "invoice": ''' ''', "bot": ''' ''', "chart": ''' ''', # UI elements "plus": ''' ''', "link": ''' ''', "viewport": ''' ''', "spinner": ''' ''', "dot": ''' ''', } def icon(name: str, cls: str = "") -> str: """Return SVG icon HTML with optional CSS class wrapper.""" svg = ICONS.get(name, "") if not svg: return "" if cls: return f'{svg}' return svg