/** * guidanceGraphics — code-drawn replacements for the two authored guidance * GIFs (rotate-to-landscape, pan-capture). Built from pure React-Native * core `View` + `Animated` primitives — NO `react-native-svg`, NO bundled * image assets — so the library keeps its "zero extra native deps for * guidance" contract (see `RectCropPreview`) AND no longer needs the host * to add Fresco's `animated-gif` module on Android just to make the * coach-marks move. * * Why not GIFs: the authored GIFs were 280 px sources shown at 240 dp; * on a ~2.6×-density phone that 240 dp is ~630 physical px, so the 280 px * source was up-scaled ~2.25× → visibly pixelated. A 256-colour GIF also * bands. These vector-ish primitives are resolution-independent (they're * just borders + transforms the GPU rasterises at native density) and fully * themeable via `GUIDANCE_TOKENS`. * * Both graphics: * • run a single `Animated.loop` on the NATIVE driver (transform/opacity * only) so the loop is off the JS thread; * • take a `playing` flag — the host renders them only while `visible`, * but we still gate the loop so a mounted-but-paused graphic costs * nothing; * • scale every dimension off a single `size` (defaults to the shared * `GUIDANCE_TOKENS.graphicSize`) so callers can resize without restyle. */ import React from 'react'; import { type StyleProp, type ViewStyle } from 'react-native'; /** Pan direction the pan-graphic should animate (mirrors PanHowToOverlay). */ export type PanGraphicDirection = 'down' | 'right'; export interface GuidanceGraphicProps { /** Canvas square size in px. Defaults to `GUIDANCE_TOKENS.graphicSize`. */ size?: number; /** Run the animation loop. `false` parks the value at rest. */ playing?: boolean; /** Outer style passthrough. */ style?: StyleProp; } /** * RotatePhoneGraphic — a portrait phone outline that rotates 0°→90°→0° * (portrait → landscape → portrait) on a loop, riding a faint amber guide * ring with a clockwise arrowhead, demonstrating the "rotate to landscape" * gesture. Replaces `rotate-to-landscape.gif`. */ export declare function RotatePhoneGraphic({ size, playing, style, target, }: GuidanceGraphicProps & { /** Orientation to rotate TO: 'landscape' (default) or 'portrait'. */ target?: 'landscape' | 'portrait'; }): React.JSX.Element; /** * PanPhoneGraphic — a phone outline (landscape for Mode-A `down`, portrait * for Mode-B `right`) with an amber sweep band that travels across the pan * axis on a loop, demonstrating the camera sweep. The band fades in/out at * the travel ends so the loop reset is invisible. Replaces * `pan-capture.gif`. The bouncing direction arrow stays in PanHowToOverlay. */ export declare function PanPhoneGraphic({ direction, size, playing, style, }: GuidanceGraphicProps & { direction: PanGraphicDirection; }): React.JSX.Element; //# sourceMappingURL=guidanceGraphics.d.ts.map