Maps every Reports surface to the shared design system. Tokens:
00-shared/02 (Material 3, proposed defaults); components: 00-shared/03;
motion: 00-shared/08; a11y: 00-shared/09. Module components 07_Component_Library.md.
| Surface | Color | Type scale | Spacing | Shape |
| S1 catalog | surface bg; primary icons | titleLarge (list titles), bodyMedium (descriptions) | list item 16-8-16; section gap 24 | shapeMedium tiles |
| S2 form | surface; primary CTA; error inline | headlineSmall (title), bodyLarge (fields), labelMedium (chips) | field gap 16; bottom padding 24 | shapeMedium inputs, shapeSmall chips |
| S3 job list | surface; status colors (C2) | titleMedium rows, bodySmall meta | row 12; chip gap 8 | shapeSmall badges |
| S4 detail | surfaceContainerLow cards on surface | headlineSmall type label, bodyMedium meta | card padding 16; card gap 12 | shapeLarge status card |
| S5 result | surface; secondaryContainer metric cards; error failed | displaySmall metrics (fee), titleMedium labels, bodyMedium table | metric grid gap 12; table cell 8 | shapeMedium cards; grade badge shapeSmall |
| Status palette | queued: surfaceVariant; processing: tertiary; completed: primary; failed: error | — | — | — |
| Screen | Shared (00-shared/03) | Module (07) |
| S1 | AppListTile, AppBadge | ReportTypeTile |
| S2 | AppTextField, AppDatePicker, AppButton, AppSnackbar, AppChips | (none) |
| S3 | AppListTile, AppSkeleton, AppEmptyState, RefreshIndicator, AppMenu | ReportStatusBadge, JobListRow |
| S4 | AppCard, AppButton, AppSnackbar, AppOfflineBanner | JobProgressCard, JobParamChips, PollingRetryButton |
| S5 | AppCard | MetricCard/Grid, ReportCardResult |
schedule (queued), hourglass_top (processing), check_circle (completed),
error_circle (failed) — outlined set; 20 dp grid, onSurfaceVariant.
- Numbers (fee metrics) use tabular figures (
fontFeatures: tabularFigures)
— alignment-critical.
- Mobile density 4, tablet 0 (00-shared/02).
- All tokens dark-adaptive; status palette keeps hue, lightens
on- colors.
- Indeterminate progress:
tertiaryContainer track.
| Surface | Requirement |
| all | 4.5:1 text contrast; touch targets ≥ 48 dp |
| S4 | status change announced via live region (badge swap must not re-announce whole card) |
| S5 | result table: proper Semantics header mapping; grade badge label includes band |
| S2 | errors linked to fields (errorText semantics) |
| all | ReduceMotion: poll unaffected; replace slide/fade with instant swap |
- No brand illustration; report icons are the only imagery — matches shared
baseline.
- Progress: indeterminate only (server constraint) — do not restyle into a
fake percentage (07 C3).