Maps the Biometric module onto the shared design system (00-shared/02 tokens,
00-shared/03 components, 00-shared/04 mapping). Module adds no new global tokens ;
it only introduces semantic mappings for biometric states.
Token group Where
Color: primary, primaryContainer active states, CTA, "matched" verdict
Color: error, errorContainer offline, failed sync, mismatch, destructive confirms
Color: tertiaryContainer processed-punch indicator
Color: surfaceVariant inactive devices, unprocessed punch
Type: headlineMedium / bodyMedium / bodySmall screen titles, rows, metadata (06 layouts)
Spacing: Sp-16 phone / Sp-24 tablet screen padding
Radius R-md cards, fields, badges
Elevation El-1 cards; El-2 bottom sheet
Motion Mo.m-fast / Mo.m-base micro-interactions, screen transitions
Shared component Module use
AppCardstatus summary, device header, config viewer
AppListTiledevice rows, punch rows
AppButton / AppFABCTAs, "Register device" FAB
AppMenurow actions
AppDialogdisable/overwrite-enrollment confirms
AppSnackbarsync result, register success
AppBannerfailed sync, mismatch verdict
AppSkeleton / AppEmptyState / AppErrorStateloading / empty / error
AppOfflineBannerconnectivity
AppRefreshIndicatorlist refresh
AppBadge / AppChipsstatus badge, filter chips, device status
AppBottomSheetlog detail
AppAvatarstudent/device leading icons
DeviceStatusBadge, SyncStatusTile, PunchRow, PunchTimeline, EnrollStepBar,
StatusSummaryCard, QueueHealthChip, ConfigJsonViewer — all compose shared
primitives; none introduce tokens.
State Color Icon
active device primaryContainersensors
inactive device surfaceVariantsensors_off
offline device errorContainercloud_off
sync running primaryspinner
sync failed errorContainererror_outline
punch processed tertiaryContainercheck_circle
punch unprocessed surfaceVariantcircle
verdict matched primaryContainerverified
verdict mismatch errorContainerwarning_amber
All mappings token-based → automatic dark parity; QA pass required on badge contrast
(errorContainer on dark) — 14 §9 .
Monospace rawData uses bodySmall + monospace family on both themes.
Timestamps always bodySmall relative + absolute (locale-aware, 00-shared/02 §2 ).
Never uppercase device names or punch data.