Commit Graph

11 Commits

Author SHA1 Message Date
Jean-Philippe Brule
bbcd6d9bf7 Enable iOS navigation UI and simulator support
Adds NavigationUIEnabledPreference.automatic to GoogleMapsNavigationView
for proper turn-by-turn navigation display on iOS. Enables navigation
header, footer, and trip progress bar. Adds simulation mode for iOS
Simulator testing with location updates along the route.

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-23 14:53:40 -05:00
Jean-Philippe Brule
44500835d7 Add Android OAuth support and fix map camera crash
- Add appAuthRedirectScheme manifest placeholder for flutter_appauth on Android
- Fix Google Maps camera animation crash on Android ("No valid view found")
- Add safety checks and retry mechanism for camera initialization
- Make action buttons always visible regardless of delivery selection

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-23 12:39:23 -05:00
Jean-Philippe Brule
b2be3ec4ae Redesign bottom action bar with 4 equal-width responsive buttons
Replaces complex conditional button layout with 4 uniform buttons:
Start, Photo, Note, and Completed. Uses Svrnty color system for
consistency - crimsonRed for primary/danger actions and slateGray
matching the delivery list badges. Increases button height, font
size (18px), and icon size (24px) for better readability.

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-23 11:45:24 -05:00
Jean-Philippe Brule
c58da58f1f Remove floating navigation buttons from map
Remove the floating "Navigate" and "Stop" buttons positioned on the right side
of the map. These actions are already available in the bottom button bar, so
the floating buttons were redundant.

Updated dark_mode_map.dart:
- Removed Positioned floating button column (right: 16, bottom: 120)
- Removed floating "Navigate" button (shown when delivery selected)
- Removed floating "Stop" button (shown when navigating)

The bottom action bar now contains all necessary navigation controls.

Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 08:57:05 -05:00
Jean-Philippe Brule
dc9282e2c7 Improve map navigation UI and add collapsible deliveries sidebar
Changes:
- Remove zoom controls (+ and - buttons) from map navigation
- Remove duplicate delivery info from top of delivery page
- Add collapsible sidebar to map layout with smooth animations
- Sidebar collapses to 64px width when not expanded
- Expanded sidebar shows 280px width with delivery list
- Added "Deliveries" header with animated chevron toggle button
- Updated dark mode styling for collapsible header
- Frees up more space for map navigation window

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-16 12:20:40 -05:00
Jean-Philippe Brule
57b81d1e95 Fix linting issues and code quality improvements
Resolve 62 linting issues identified by flutter analyze, reducing
total issues from 79 to 17. All critical warnings addressed.

Changes:
- Replace deprecated withOpacity() with withValues(alpha:) (25 instances)
- Remove unused imports from 9 files
- Remove unused variables and fields (6 instances)
- Fix Riverpod 3.0 state access violations in settings_page
- Remove unnecessary null-aware operators in navigation_page (6 instances)
- Fix unnecessary type casts in providers (4 instances)
- Remove unused methods: _getDarkMapStyle, _showPermissionDialog
- Simplify hover state management by removing unused _isHovered fields

Remaining 17 issues are info-level style suggestions and defensive
programming patterns that don't impact functionality.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-16 01:39:35 -05:00
Jean-Philippe Brule
96c9e59cf0 Implement system theme support and dark mode infrastructure
Add comprehensive theme management system with iOS system integration:

- System theme detection: App follows iOS dark/light mode preferences via ThemeMode.system
- Theme provider: Centralized theme state management with Riverpod (defaults to dark mode)
- Settings toggle: Segmented button UI for Light/Dark/Auto theme selection
- iOS system UI: Status bar and navigation bar adapt to current theme brightness

Dark mode map styling (Android-ready):
- DarkModeMapComponent: Reactive theme change detection with didChangeDependencies
- Map style application: Custom dark JSON style for navigation maps
- Theme-aware styling: Automatically applies/resets map style on theme changes
- Note: Map styling currently Android-only due to iOS SDK limitations

Updates:
- main.dart: System UI overlay styling for iOS, theme provider integration
- settings_page.dart: SegmentedButton theme toggle with icons
- providers.dart: themeModeProvider for app-wide theme state
- dark_mode_map.dart: Theme reactivity and style application logic
- navigation_page.dart: Theme detection infrastructure (prepared for future use)

Design philosophy:
- Follow system preferences by default for native iOS experience
- Manual override available for user preference
- Clean separation between Flutter UI theming and native map styling

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-16 00:52:14 -05:00
Jean-Philippe Brule
611e9eb2dd Implement iOS permissions, navigation improvements, and UI fixes
Add comprehensive iOS permission handling and enhance navigation UX:

iOS Permissions Setup:
- Configure Podfile with permission macros (PERMISSION_LOCATION, PERMISSION_CAMERA, PERMISSION_PHOTOS)
- Add camera and photo library usage descriptions to Info.plist
- Enable location, camera, and photos permissions for permission_handler plugin
- Clean rebuild of iOS dependencies with updated configuration

Navigation Enhancements:
- Implement Google Navigation dark mode with custom map styling
- Add loading overlay during navigation initialization with progress messages
- Fix navigation flow with proper session initialization and error handling
- Enable followMyLocation API for continuous driver location tracking
- Auto-recenter camera on driver location when navigation starts
- Add mounted checks to prevent unmounted widget errors

UI/UX Improvements:
- Fix layout overlapping issues between map, header, and footer
- Add dynamic padding (110px top/bottom) to accommodate navigation UI elements
- Reposition navigation buttons to prevent overlap with turn-by-turn instructions
- Wrap DeliveriesPage body with SafeArea for proper system UI handling
- Add loading states and disabled button behavior during navigation start

Technical Details:
- Enhanced error logging with debug messages for troubleshooting
- Implement retry logic for navigation session initialization (30 retries @ 100ms)
- Apply dark mode style with 500ms delay for proper map rendering
- Use CameraPerspective.tilted for optimal driving view
- Remove manual camera positioning in favor of native follow mode

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 23:56:20 -05:00
Jean-Philippe Brule
9cb5b51f6d Fix Google Navigation initialization timing issues
Restructures navigation session initialization to occur after the view is
created, eliminating race conditions. Session initialization now happens in
onViewCreated callback with proper delay before setting destination.

Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 20:49:20 -05:00
Jean-Philippe Brule
6e6d279d77 Implement optimized SVRNTY status color system using Frontend Design principles
Core Changes:
- Updated delivery status colors with semantic meaning and visual hierarchy
- Changed in-transit from red to teal blue (#506576) for professional active process indication
- Added comprehensive light background colors for all status badges
- Created StatusColorScheme utility with methods for easy color/icon/label access

Status Color Mapping:
- Pending: Amber (#F59E0B) - caution, action needed
- In Transit: Teal Blue (#506576) - active, professional, balanced
- Completed: Green (#22C55E) - success, positive
- Failed: Error Red (#EF4444) - problem requiring intervention
- Cancelled: Cool Gray (#AEB8BE) - inactive, neutral
- On Hold: Slate Blue (#3A4958) - paused, informational

Component Updates:
- Refactored premium_route_card.dart to use theme colors instead of hardcoded
- Refactored delivery_list_item.dart to use optimized status colors
- Refactored dark_mode_map.dart to use theme surface colors
- Updated deliveries_page.dart and login_page.dart with theme colors

Design System:
- Fixed 35+ missing 0xff alpha prefixes in color definitions
- All colors WCAG AA compliant (4.5:1+ contrast minimum)
- 60-30-10 color balance maintained
- Dark mode ready with defined light/dark variants
- Zero compiler errors, production ready

🎨 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 15:41:22 -05:00
Jean-Philippe Brule
3f31a509e0 Implement premium UI/UX refinements for Apple-like polish
Add three major UI components with animations and dark mode support:

- PremiumRouteCard: Enhanced route cards with left accent bar, delivery count badge, animated hover effects (1.02x scale), and dynamic shadow elevation
- DarkModeMapComponent: Google Maps integration with dark theme styling, custom info panels, navigation buttons, and delivery status indicators
- DeliveryListItem: Animated list items with staggered entrance animations, status badges with icons, contact indicators, and hover states

Updates:
- RoutesPage: Now uses PremiumRouteCard with improved visual hierarchy
- DeliveriesPage: Integrated DarkModeMapComponent and DeliveryListItem with proper theme awareness
- Animation system: Leverages existing AppAnimations constants for 200ms fast interactions and easeOut curves

Design philosophy:
- Element separation through left accent bars (status-coded)
- Elevation and shadow for depth (0.1-0.3 opacity)
- Staggered animations for list items (50ms delays)
- Dark mode optimized for evening use (reduced brightness)
- Responsive hover states with tactile feedback

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 14:41:32 -05:00