import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Badge } from '@/components/ui/badge'; import { AlertTriangle } from 'lucide-react'; import type { StorageCleanerOptions } from '@/types/storage'; import { useI18n } from '@/utils/chromeI18n'; import { cn } from '@/lib/utils'; export interface StorageCleanerConfirmProps { open: boolean; onClose: () => void; onConfirm: () => void; options: StorageCleanerOptions; } export function StorageCleanerConfirm({ open, onClose, onConfirm, options, }: StorageCleanerConfirmProps) { const { t } = useI18n('storageCleaner'); const selectedOptions = Object.entries(options) .filter(([_, value]) => value) .map(([key, _]) => t(`storageCleaner:options.${key as keyof StorageCleanerOptions}`)); return ( !isOpen && onClose()}> {/* 💡 终极修复秘诀: - 移除原来的 sm:max-w-[360px],改用 max-w-[calc(100%-32px)] 或者是 w-[88%]。 - 这样无论插件弹窗多窄,它的左右两侧都必然会被强制挤出至少 16px 的完美空白护边! - 将 p-5 转换为明确的 p-6,增大弹窗内部的呼吸感。 */} {/* 头部标题区域 */} {t('storageCleaner:confirmTitle')} {/* 内容主体:限制最大宽度,防止内部元素在大分辨率下被横向拉得太松散 */}
{t('storageCleaner:confirmDesc')} {/* 待清理项目徽章群 */}
{selectedOptions.map((label) => ( {label} ))}
{/* 风险警告横幅 */}
{t('storageCleaner:irreversible')}
{/* 底部操作按钮区: 💡 修复要点: - 增加 pt-2 隔开上方危险条。 - 显式通过 w-full 配合 flex-col 铺满,在移动端/窄插件下垂直堆叠,最符合小屏直觉。 */}
); } export default StorageCleanerConfirm;