/** * CapturePreview — shared full-screen image preview used for BOTH: * 1. Tap-to-preview from (existing thumbnails) * 2. Post-stitch confirmation (newly produced panorama) * * ┌──────────────────────────────────────────────────────────┐ * │ [✕ close] │ * │ ┌──────────────────────────────┐ │ * │ │ image (resizeMode= │ │ * │ │ contain) │ │ * │ └──────────────────────────────┘ │ * │ │ * │ [action 1] [action 2] [action 3] │ * └──────────────────────────────────────────────────────────┘ * * Actions are passed in by the host so a single component can * render the right buttons for each context: * - Thumbnail tap, unsubmitted capture → [Delete] [Recapture] * - Thumbnail tap, already-synced capture → [] (just close) * - Post-stitch → [Discard] [Retry] [Save] * * The component is presentational — it does not know about audit * state, sync state, or any host-domain concept beyond the URI + * dimensions to display and the action callbacks to fire. */ import React from 'react'; export type CapturePreviewActionVariant = 'primary' | 'neutral' | 'ghost' | 'destructive'; export interface CapturePreviewAction { /** Button label (visible text). */ label: string; /** Optional leading glyph — usually a unicode arrow / check / cross. */ icon?: string; /** Visual variant. Defaults to "neutral". */ variant?: CapturePreviewActionVariant; /** Disabled state — useful while an async action is in flight. */ disabled?: boolean; /** * Called when the user presses the button. Caller decides * whether the preview should close after — call `onClose` from * inside if that's the desired behaviour. */ onPress: () => void; } export interface CapturePreviewProps { /** Whether the modal is shown. Drive from host state. */ visible: boolean; /** file:// or http(s) URI to display. */ imageUri: string; /** Image width in px (for aspect-ratio rendering). */ imageWidth?: number; /** Image height in px. */ imageHeight?: number; /** * Action buttons rendered along the bottom. Empty array (or * undefined) renders no buttons — only the close affordance is * available. Up to 3 actions display cleanly across most * widths; more wraps on a typical phone. */ actions?: CapturePreviewAction[]; /** * Called when the user dismisses the preview without choosing an * action — tap on the close button, tap on the backdrop outside * the image, or hardware back on Android. */ onClose: () => void; /** Optional title shown at the top of the modal. */ title?: string; } export declare function CapturePreview({ visible, imageUri, imageWidth, imageHeight, actions, onClose, title, }: CapturePreviewProps): React.JSX.Element; //# sourceMappingURL=CapturePreview.d.ts.map