Drag-and-drop zone accepts JPEG/PNG/HEIC images up to 10MB
Click-to-browse works on the upload area
"Take Photo" button is visually distinct as secondary option
Both options shown on all devices (mobile and desktop)
44px minimum touch targets on all interactive elements
Close/cancel button in header
Relates to #182
## Summary
Create a new `AddReceiptDialog` component that presents two receipt input options in a full-screen dialog:
1. **Drag-and-drop image upload** (primary/default option)
2. **Take Photo of Receipt** button (secondary option, opens existing CameraCapture)
## Scope
- New file: `frontend/src/features/maintenance/components/AddReceiptDialog.tsx`
- Full-screen MUI Dialog with header (title + close button)
- Inline drag-and-drop zone with file validation (JPEG, PNG, HEIC; 10MB max)
- "Take Photo" card/button with camera icon
- Responsive: stacked layout on all viewports, 44px touch targets
- Props: `open`, `onClose`, `onFileSelect(file: File)`, `onStartCamera()`
## Acceptance Criteria
- Dialog opens full-screen on all devices
- Drag-and-drop zone accepts JPEG/PNG/HEIC images up to 10MB
- Click-to-browse works on the upload area
- "Take Photo" button is visually distinct as secondary option
- Both options shown on all devices (mobile and desktop)
- 44px minimum touch targets on all interactive elements
- Close/cancel button in header
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Relates to #182
Summary
Create a new
AddReceiptDialogcomponent that presents two receipt input options in a full-screen dialog:Scope
frontend/src/features/maintenance/components/AddReceiptDialog.tsxopen,onClose,onFileSelect(file: File),onStartCamera()Acceptance Criteria