import React from 'react'; import type { StorageCleanerOptions } from '@/types/storage'; import type { StorageSizeInfo } from './useStorageCleaner'; import OptionItem from './OptionItem'; import { useI18n } from '@/utils/chromeI18n'; import { cn } from '@/lib/utils'; import { Checkbox } from '@/components/ui/checkbox'; import { Label } from '@/components/ui/label'; interface StorageOptionsGridProps extends React.HTMLAttributes { options: StorageCleanerOptions; sizes: Record; allSelected: boolean; someSelected: boolean; onOptionChange: (key: keyof StorageCleanerOptions) => void; onSelectAll: (checked: boolean) => void; } export default function StorageOptionsGrid({ options, sizes, allSelected, someSelected, onOptionChange, onSelectAll, className, ...props }: StorageOptionsGridProps) { const { t } = useI18n('storageCleaner'); const optionKeys: (keyof StorageCleanerOptions)[] = [ 'localStorage', 'sessionStorage', 'indexedDB', 'cookies', 'cacheStorage', 'serviceWorkers', ]; const handleToggleAll = () => { onSelectAll(!allSelected); }; return (
{optionKeys.map((key) => ( onOptionChange(key)} /> ))}
e.stopPropagation()} onCheckedChange={(checked) => onSelectAll(checked === true)} className="h-4 w-4 shrink-0 rounded border-input data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=indeterminate]:bg-muted-foreground/40" />
); }