/** * PanoramaConfirmModal — post-stitch review screen. * * ┌──────────────────────────────────────────────────────────┐ * │ │ * │ ┌──────────────────────────────┐ │ * │ │ stitched panorama │ │ * │ │ (resizeMode=contain) │ │ * │ └──────────────────────────────┘ │ * │ │ * │ [✕ Discard] [↺ Retry] [✓ Save] │ * └──────────────────────────────────────────────────────────┘ * * Why this exists * Without it, a panorama lands directly into the audit's * thumbnail strip — operator only finds out it's bad once they * tap the thumbnail, or worse, never. The confirm step is the * safety net iOS' native panorama UX gives by default. * * Three actions, three callbacks * - Save: host persists the panorama (writes Capture row, etc). * - Retry: host throws away the panorama and re-enters the * capture flow. Good UX is to keep the camera * ready so the operator can immediately re-pan. * - Discard: host throws away the panorama and returns to the * capture flow without re-entering. Same as Retry * minus the "ready to record" hint. * * The modal is purely presentational — it doesn't know about * WatermelonDB, file paths, or any host-domain concept beyond the * panorama URI + dimensions to display. */ import React from 'react'; export interface PanoramaConfirmModalProps { /** * Modal visibility. When true, the modal animates in over the * current screen. Drive this from the host's "stitch result is * pending review" state. */ visible: boolean; /** file:// URI of the stitched panorama to preview. */ panoramaUri: string; /** Pixel width of the panorama (for the preview's aspect ratio). */ width: number; /** Pixel height of the panorama. */ height: number; /** User confirmed — host should persist the panorama. */ onSave: () => void; /** User wants to re-record — host should drop and reopen camera. */ onRetry: () => void; /** User wants to discard without re-recording. */ onDiscard: () => void; /** Optional override for the title (defaults to "Review panorama"). */ title?: string; } export declare function PanoramaConfirmModal({ visible, panoramaUri, width, height, onSave, onRetry, onDiscard, title, }: PanoramaConfirmModalProps): React.JSX.Element; //# sourceMappingURL=PanoramaConfirmModal.d.ts.map