import { useCallback, type ReactNode } from "react"; import { Box, Text } from "../../ui"; import { colors } from "../../theme/colors"; import { t, tf } from "../../i18n"; import { type PromptContext, useDialogKeyboard } from "../../ui/dialog"; import { Button, type ButtonVariant } from "./button"; import { DialogFrame } from "./frame"; export interface ConfirmDialogProps extends PromptContext { title: string; body: ReactNode | string | string[]; confirmLabel: string; cancelLabel?: string; confirmVariant?: ButtonVariant; width?: number; footer?: string; } export function ConfirmDialog({ resolve, title, body, confirmLabel, cancelLabel = "Cancel", confirmVariant = "danger", width = 52, footer, }: ConfirmDialogProps) { const confirm = useCallback(() => resolve(true), [resolve]); const cancel = useCallback(() => resolve(false), [resolve]); useDialogKeyboard((event) => { event.stopPropagation(); if (event.name === "enter" || event.name === "return") { confirm(); return; } if (event.name === "escape") { cancel(); } }); return ( {renderBody(body)}