Icon
ImplementedIcon system with five atoms per ADR-022: PhosphorIcon (Admin-UI, 242 canonical names incl. 9 ADR-022-amend-01 EXTRAS + 25 Figma aliases, provenance in PHOSPHOR_ICON_SOURCES), VuesaxIcon (Storefront, 660 names, DS-ICONO-004), BrandIcon (~50 brands, DS-ICONO-005), FlagIcon (13 province flags, google/region-flags Public Domain), AlertIcon (variant-driven Phosphor wrapper — error/warning/info/success — for role=alert slots, ADR-026 + DS-ICONO-006b). ADR-021 size convention (7 sizes + stroke/LARGE_GRAPHIC/brand exceptions). Always aria-hidden unless the sole label. ICONO-ADOPT run (2026-08-17) migrated all dashboard/admin SVG to PhosphorIcon, all storefront public SVG to VuesaxIcon, Footer social letters to BrandIcon, and province flags to google/region-flags.
patterns/atoms/icon.htmlProps
Icon
icon (PhosphorIcon)PhosphorComponent—Per-icon import from @phosphor-icons/react/dist/ssr (Admin-UI surfaces)
name + src (VuesaxIcon)VuesaxIconName | string, string—Figma/canonical name + per-icon SVG import from vuesax-icons/linear/<name>.svg (storefront public)
name (BrandIcon)BrandName—Registry brand name (google, apple, facebook, instagram, twitter, youtube, …) or custom icon component
country (FlagIcon)ISO 3166 code | CA province code—fi-xx classes incl. 13 vendored CA provinces (google/region-flags)
<Icon />Accessibility
Type
1 ruleARIA
1 ruleUsage
Import
import { Icon } from "@epasslive/design-system"Example 1
<Icon />Example 2
<Icon variant="default" />Anti-patterns
— Do not compose atoms directly — use molecules instead
— Avoid inline styles on atoms