import React from 'react'; import { Checkbox, Input, Modal, Typography } from 'antd'; import { useI18n } from '../i18n/provider'; const { Text } = Typography; type ConnectionPackagePasswordModalMode = 'import' | 'export'; export interface ConnectionPackagePasswordModalProps { open: boolean; title: string; mode?: ConnectionPackagePasswordModalMode; includeSecrets?: boolean; useFilePassword?: boolean; password: string; error?: string; confirmLoading?: boolean; confirmText?: string; cancelText?: string; onIncludeSecretsChange?: (value: boolean) => void; onUseFilePasswordChange?: (value: boolean) => void; onPasswordChange: (value: string) => void; onConfirm: () => void; onCancel: () => void; } export default function ConnectionPackagePasswordModal({ open, title, mode = 'import', includeSecrets = true, useFilePassword = false, password, error, confirmLoading, confirmText, cancelText, onIncludeSecretsChange, onUseFilePasswordChange, onPasswordChange, onConfirm, onCancel, }: ConnectionPackagePasswordModalProps) { const { t } = useI18n(); const isExportMode = mode === 'export'; const showFilePasswordInput = isExportMode ? useFilePassword : true; const resolvedConfirmText = confirmText ?? t('common.confirm'); const resolvedCancelText = cancelText ?? t('common.cancel'); const placeholder = isExportMode ? t('app.connection_package.dialog.file_password_placeholder') : t('app.connection_package.dialog.restore_password_placeholder'); const helperText = !includeSecrets ? t('app.connection_package.dialog.help.exclude_passwords') : (useFilePassword ? t('app.connection_package.dialog.help.share_file_password_separately') : t('app.connection_package.dialog.help.encrypted_passwords_recommend_file_password')); return ( {isExportMode ? (
onIncludeSecretsChange?.(event.target.checked)} > {t('app.connection_package.dialog.option.include_passwords')} onUseFilePasswordChange?.(event.target.checked)} > {t('app.connection_package.dialog.option.use_file_password')}
) : null} {showFilePasswordInput ? ( onPasswordChange(event.target.value)} /> ) : null} {isExportMode ? ( {helperText} ) : null} {error ? ( {error} ) : null}
); }