/** * SaveIndicator Component * * Displays the current save status. * Supports both direct props (legacy) and getter functions (preferred for performance). * Using getter functions avoids recreating parent components on status changes. */ import React from 'react'; import type { SaveStatus } from '../../core/types.js'; interface SaveIndicatorProps { /** * Getter function for current save status. * Using a getter instead of direct value allows parent components to remain stable. * Preferred over `status` prop for performance. */ getStatus?: () => SaveStatus; /** * Getter function for last successful save timestamp. * Preferred over `lastSaved` prop for performance. */ getLastSaved?: () => Date | null; /** * Getter function for last error (if status is 'error'). * Preferred over `error` prop for performance. */ getError?: () => Error | null; /** * Direct save status value (legacy API). * @deprecated Use getStatus getter for better performance. */ status?: SaveStatus; /** * Direct last saved timestamp (legacy API). * @deprecated Use getLastSaved getter for better performance. */ lastSaved?: Date | null; /** * Direct error value (legacy API). * @deprecated Use getError getter for better performance. */ error?: Error | null; /** * Callback to retry save on error. */ onRetry?: () => void; /** * Additional CSS class name. */ className?: string; } /** * Component that displays the current save status. * Supports both getter functions (preferred) and direct props (legacy). * When using getters, the component polls for updates allowing parent components to remain stable. * * @example * ```tsx * // Preferred: using getters (avoids parent re-renders) * saveStatusRef.current} * getLastSaved={() => lastSavedRef.current} * getError={() => saveErrorRef.current} * onRetry={saveNow} * /> * * // Legacy: using direct props * * ``` */ export declare function SaveIndicator({ getStatus, getLastSaved, getError, status: directStatus, lastSaved: directLastSaved, error: directError, onRetry, className, }: SaveIndicatorProps): React.ReactElement; export {};