))}
)}
);
}
function ClearDraftDialog({ disabled }: { disabled: boolean }) {
return (
Clear every staged image?
This removes the current batch from Pi memory.
);
}
function ClearHistoryDialog() {
return (
Clear sent image history?
This releases every retained image from this Pi session. Images already sent to Pi or
a model provider are unaffected.
);
}
export function ImagePreviewDialog({
onOpenChange,
open,
revision,
selection,
}: {
onOpenChange: (open: boolean) => void;
open: boolean;
revision: number;
selection?: PreviewSelection;
}) {
const item = selection?.item;
return (
{item?.name ?? "Image preview"}
{selection && item && (
)}
);
}
export function PrivacyNotice() {
return (
Draft and previously sent images stay in this Pi process until removed, evicted at the
retention limit, or the session ends. Sending a Pi message sends its staged images to your
configured model provider; deleting local history does not retract images already sent.
);
}
export function ConnectionBlocker({ failure }: { failure?: ConnectionFailure }) {
return (
event.preventDefault()}
onPointerDownOutside={(event) => event.preventDefault()}
>
{failure?.title ?? "Connection lost"}
{failure?.message ?? "Run /image-drop in Pi for a new link."}
);
}
export function MetadataNotice() {
return (
Sensitive image metadata removed from processed images.
);
}