import { AlertCircle, CheckCircle2, Loader2, XCircle, } from 'lucide-react'; import type { ReactNode } from 'react'; import { PlatformActionButton } from './PlatformActionButton'; import type { PlatformActionButtonSize, PlatformActionButtonSurface, PlatformActionButtonTone, } from './platformActionButtonModel'; import { PlatformIconBadge } from './PlatformIconBadge'; import { UnifiedModal } from './UnifiedModal'; export type PlatformStatusDialogStatus = | 'success' | 'cancel' | 'error' | 'loading' | 'confirming'; type PlatformStatusDialogAction = { label: string; onClick: () => void; disabled?: boolean; tone?: PlatformActionButtonTone; surface?: PlatformActionButtonSurface; size?: PlatformActionButtonSize; fullWidth?: boolean; className?: string; }; type PlatformStatusDialogProps = { open?: boolean; status: PlatformStatusDialogStatus; title: string; description?: ReactNode; children?: ReactNode; onClose: () => void; action?: PlatformStatusDialogAction; showHeader?: boolean; showBodyTitle?: boolean; showCloseButton?: boolean; closeOnBackdrop?: boolean; closeOnEscape?: boolean; closeLabel?: string; closeDisabled?: boolean; zIndexClassName?: string; overlayClassName?: string; panelClassName?: string; bodyClassName?: string; iconClassName?: string; icon?: ReactNode; iconLabel?: string; }; type PlatformStatusVisualConfig = { icon: ReactNode; iconClassName: string; }; const DEFAULT_OVERLAY_CLASS = 'platform-theme platform-theme--light platform-profile-modal-overlay bg-slate-950/72 backdrop-blur-xl'; const DEFAULT_PANEL_CLASS = 'platform-remap-surface !max-w-sm rounded-[1.4rem]'; const DEFAULT_BODY_CLASS = 'px-5 pb-5 pt-6 text-center'; function joinClassNames(...classNames: Array) { return classNames.filter(Boolean).join(' '); } function getStatusVisualConfig( status: PlatformStatusDialogStatus, ): PlatformStatusVisualConfig { switch (status) { case 'success': return { icon: