/** * The paper snapshots panel: the selected project's compile snapshots as a * newest-first list (relative time, file count, total size), each row * expandable to a line diff against the current source (long unchanged runs * folded into gap markers, so a large paper never mounts one row per line) * and revertible under a two-step inline confirm. The panel replaces the * paper view's PDF preview while open; the revert rides the host's * optimistic-concurrency write, so a file the agent touched mid-review * rejects with a conflict instead of silently overwriting. * @module dsh-client-ui-mimir/client/SnapshotsPanel */ import type { PaperSnapshotView } from 'dsh-mimir/types'; import type { ResearchFailureView, ResearchProjectSlice, ResearchSnapshotDetailView, ResearchSourceView } from './controller.ts'; import { type ResearchT } from './view-common.ts'; /** * @param props - the snapshot list and detail slices, the current source (the * diff's other side and the revert's concurrency base), the verbs, and copy. * @returns the snapshots panel. */ export declare function SnapshotsPanel({ snapshots, snapshotDetail, source, projectId, loadSnapshots, loadSnapshotDetail, closeSnapshotDetail, revertSnapshot, onClose, t, }: { readonly snapshots: ResearchProjectSlice | null; readonly snapshotDetail: ResearchSnapshotDetailView | null; readonly source: ResearchSourceView | null; readonly projectId: string; readonly loadSnapshots: (projectId: string, force?: boolean) => void; readonly loadSnapshotDetail: (projectId: string, id: string) => void; readonly closeSnapshotDetail: () => void; readonly revertSnapshot: (projectId: string, id: string) => Promise; readonly onClose: () => void; readonly t: ResearchT; }): import("react").JSX.Element; //# sourceMappingURL=SnapshotsPanel.d.ts.map