Maps the module onto 00-shared/02 (Design Tokens) and 00-shared/04
(Design System Mapping). No new tokens.
| Usage | Token (from 00-shared/02) | Note |
| Unread dot / badge | color.primary (or accent per brand) | only non-text indicator; must pair with weight change (06 §1.7) |
| Unread tile surface | surfaceVariant tint / color.primary at low alpha | subtle, not a full card fill |
| Title (unread) | textPrimary bold; (read) textPrimary regular | — |
| Body | textSecondary | both states |
| Badge count | onPrimary on primary | ≥ 3:1 contrast (00-shared/09) |
| Empty state / error panel | textSecondary + surface | standard shared patterns |
| Element | Token |
| AppBar title | titleLarge |
| Tile title | titleMedium (weight varies by read state) |
| Tile body | bodyMedium (2-line clamp) |
| Timestamp | labelSmall (textSecondary) |
| Badge count | labelSmall bold |
type (server enum) | Icon | Fallback |
welcome | celebration/star | — |
email_verified | verified badge/check | — |
verification_resent | mail-send | — |
password_reset | lock/rotate | — |
| unknown | info/bell | generic system icon — client must handle future enum values (04 §3) |
Mapping lives in one client file (see 15_Flutter_Implementation_Guide §7).
- Tile padding:
space-16; icon 40 dp rounded radius-m; gap 12.
- List max width 640 dp centered; bottom inset respects system nav bar.
- Badge: 18 dp min height pill,
radius-full.
- All module motion via 00-shared/08 tokens:
m-fast (read flip, badge),
m-base (list fade, page swap). No custom curves.
| Module component (07) | Shared primitive |
| C1 NotificationListTile | ListTile + Text + Icon from 00-shared/03 |
| C3 NotificationBadge | Badge + IconButton (shared) |
| C4 InboxEmptyState | EmptyState (shared) |
| C7 InboxErrorPanel | ErrorPanel (shared) |
This module introduces no brand assets; notification icons reuse the shared
icon set. Future push-channel icons/illustrations go through 00-shared/02.