- Implemented UiShimmer as a core shimmer wrapper for animated gradient effects. - Created shimmer presets for list items, stats cards, section headers, and more. - Developed specific skeletons for billing, invoices, coverage, hubs, reports, payments, shifts, and home pages. - Enhanced user experience by providing visual placeholders during data loading.
1.5 KiB
1.5 KiB
Mobile Architecture Reviewer Memory
Project Structure
- Features:
apps/mobile/packages/features/{client,staff}/<feature>/ - Design System:
apps/mobile/packages/design_system/ - Shimmer primitives:
design_system/lib/src/widgets/shimmer/(UiShimmer, UiShimmerBox, UiShimmerCircle, UiShimmerLine, presets) - UiConstants spacing: space0=0, space1=4, space2=8, space3=12, space4=16, space5=20, space6=24, space8=32, space10=40, space12=48
Design System Conventions
UiConstants.radiusLg,radiusMd,radiusSm,radiusFullarestatic final(not const) - cannot useconstat call sites- Shimmer placeholder dimensions (width/height of boxes/lines/circles) are visual content sizes, not spacing - the design system presets use UiConstants for these too
Divider(height: 1, thickness: 0.5)is a common pattern in the codebase for thin dividers
Common Pre-Existing Issues (Do Not Flag as New)
- Report detail pages use hardcoded
top: 60for AppBar clearance (all 6 report pages) - Payments page and billing page have hardcoded strings (pre-existing, not part of shimmer changes)
shift_details_page.darthas hardcoded strings and Navigator.of usage (pre-existing)
Review Patterns
- Skeleton files are pure presentation widgets (StatelessWidget) - no BLoC, no business logic, no navigation
- Skeleton files only import
design_systemandflutter/material.dart- clean dependency - Barrel file
index.dartinreports_page/widgets dir is an internal barrel, not public API