UI Token Audit — Pass 2 (Full Sweep)
Date: 2026-04-24
Branch: edit/mobile-audit-ux-polish
Scope: Entire lib/ directory — all screens, widgets, features
What Was Done
Following Pass 1 (nav bar, profile hero card, search bento, auth screens), this pass
performed a systematic audit of every remaining .dart file for design token
violations, then fixed them all.
Zero-Tolerance Rules Applied
| Violation | Fix |
|---|---|
Colors.grey[50] / Colors.grey[100] | → AppTheme.warmCanvas |
Colors.grey[200] / Colors.grey[300] | → AppTheme.dividerLight |
Colors.grey[400] / [500] / [600] / [700] | → AppTheme.textSecondaryWarm |
Colors.grey[800] / Colors.black87 | → AppTheme.inkBlack |
Colors.grey (bare) | → AppTheme.textSecondaryWarm |
FontWeight.bold | → FontWeight.w700 (explicit numeric intent) |
Hardcoded borderRadius.circular(N) | → AppTheme.radius* constants |
CircularProgressIndicator() no color | → color: AppTheme.electricCoral |
Files Fixed by Module
Messaging
chat_details_screen.dart— bold→w700, grey→tokenchats_screen.dart— progress color, radius24, radiusFullmessage_requests_screen.dart— added AppTheme import, all grey→tokennew_chat_screen.dart— progress color, grey→textSecondaryWarm
Tickets
ticket_wallet_screen.dart— progress color, radius constants throughout
Profile
edit_profile_screen.dart— grey→warmCanvas/textSecondaryWarm, radius fixes (was missed in Pass 1)social_list_screen.dart— all grey→token, bold→w700verification_request_screen.dart— grey→token, bold→w700my_crews_screen.dart— bold→w700
Auth
login_screen.dart— grey→textSecondaryWarm, bold→w700
Events
create_event_screen.dart— bold→w700manage_event_types_screen.dart— bold→w700my_events_screen.dart— all grey→tokenwizard/wizard_step_location.dart— grey→token
Feed
advanced_filter_sheet.dart— all grey→tokenfeed_date_sheet.dart— grey→token, bold→w700feed_list_content.dart— all grey→token, bold→w700feed_location_sheet.dart— grey→token, bold→w700feed_map_toggle.dart— grey→tokenfeed_notification_bell.dart— grey→token
Notifications
notifications_screen.dart— bold→w700
Settings
about_screen.dart— grey→tokenprivacy_settings_screen.dart— all grey→token, bold→w700
Search
search_screen.dart— bold→w700
Onboarding
welcome_screen.dart— grey→token (already partially fixed in Pass 1)profile_setup_screen.dart— bold→w700
Social
friends_screen.dart— grey→token, bold→w700create_squad_sheet.dart— all grey→tokencreate_crew_screen.dart(no violations)crew_matchmaking_wizard.dart(no violations)
Gamification
leaderboard_screen.dart— grey→token, bold→w700
PR
pr_dashboard_screen.dart— all grey→token, bold→w700
Reviews
create_review_screen.dart— grey→token, bold→w700
Shared Widgets (second batch)
chat_tile.dart— bold→w700crew_feedback_sheet.dart— all grey→token, bold→w700crew_summary_card.dart— bold→w700error_reporter_overlay.dart— added AppTheme import, grey→tokenfeedback_survey_sheet.dart— all grey→tokenflow_date_wheel_picker.dart— grey→tokenflow_score_widget.dart—Colors.greyfallback→textSecondaryWarm, bold→w700guest_guard.dart— grey→dividerLight/textSecondaryWarm, bold→w800karma_badge.dart—Colors.greyfallback→textSecondaryWarm, bold→w700minimal_event_card.dart— 9× bold→w700product_checkout_sheet.dart— bold→w700squad_bento_section.dart— bold→w700squad_detail_sheet.dart— bold→w700temporal_header.dart— bold→w700vibe_filter_bar.dart— grey→token, bold→w700xp_progress_bar.dart— bold→w700feed_interruption_widgets.dart— grey→textSecondaryWarm
Why FontWeight.bold → Numeric Weights
FontWeight.bold is always 700 regardless of intent. Numeric weights communicate
design intent: w700 = secondary labels, w800 = primary labels/CTAs, w900 =
hero text/headings. Using bare bold made it impossible to visually audit weight
hierarchy in code review.
Result
dart analyze lib/
→ 1 issue found (pre-existing info in squad_detail_sheet.dart — not introduced by this pass)
Zero new warnings or errors. All Colors.grey and FontWeight.bold eliminated
from the entire codebase.