import React from 'react'; import { cn } from '@/lib/utils'; import { useI18n } from '@/lib/i18n'; interface PermissionToastActionsProps { sessionTitle: string; permissionBody: string; disabled?: boolean; onOnce: () => Promise | void; onAlways: () => Promise | void; onDeny: () => Promise | void; } const truncateToastText = (value: string, maxLength: number): string => { const normalized = value.trim(); if (normalized.length <= maxLength) { return normalized; } return `${normalized.slice(0, Math.max(0, maxLength - 3))}...`; }; export const PermissionToastActions: React.FC = ({ sessionTitle, permissionBody, disabled = false, onOnce, onAlways, onDeny, }) => { const { t } = useI18n(); const [isBusy, setIsBusy] = React.useState(false); const hasSessionTitle = sessionTitle.trim().length > 0; const sessionPreview = truncateToastText(sessionTitle, 64) || t('chat.permissionToast.sessionFallback'); const permissionPreview = truncateToastText(permissionBody, 120) || t('chat.permissionToast.permissionFallback'); const handleAction = async (action: () => Promise | void) => { if (isBusy || disabled) return; setIsBusy(true); try { await action(); } finally { setIsBusy(false); } }; return (

{t('chat.permissionToast.labels.session')}{' '} {sessionPreview}

{t('chat.permissionToast.labels.permission')}{' '} {permissionPreview}

); };