AshIcons — custom SVGs
21 brand-specific icons (personas, activities, third-party brand marks) rendered by the
AshIcon widget from assets/icons/*.svg.Symbols — Material Symbols Rounded
The full Material Symbols Rounded set as icon fonts, in outlined and filled variants, exposed as
IconData constants.AshIcons (custom SVG)
Defined incomponents/ash_icon.dart. Each enum value maps to assets/icons/{value}.svg:
IconTheme → context.colorTheme.contrastStrong. Unless useOriginalColor: true, the SVG is tinted via ColorFilter.mode(color, BlendMode.srcIn).
Adding an icon: drop the SVG into
assets/icons/ and register it in the AshIcons enum — unregistered files can’t be used. See Contributing.Accessibility convention
semanticLabel defaults to null, which hides the icon from screen readers (decorative). Icon-only buttons should label at the button layer (e.g. IconButton.tooltip) instead of the icon, to avoid double announcements.
Symbols (Material Symbols Rounded)
symbols.dart is a generated glyph map (~600 KB — don’t edit by hand) exposing the complete Material Symbols Rounded set as IconData:
pubspec.yaml: MaterialSymbolsRounded (outlined) and MaterialSymbolsRoundedFilled (filled).
Use Symbols.* for general UI iconography; reserve AshIcons for brand-specific artwork that doesn’t exist in Material Symbols.