import { useTranslation } from 'react-i18next'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { SettingDefinition, adminSettingsApi } from '../../api/adminSettings'; import { QuickToggles } from './QuickToggles'; import { SettingsTableRow } from './SettingsTableRow'; interface CategoryGroup { key: string; label: string; settings: SettingDefinition[]; } interface SettingsTabProps { categories: CategoryGroup[]; searchQuery: string; filteredSettings: SettingDefinition[]; isFavorite: (key: string) => boolean; toggleFavorite: (key: string) => void; } export function SettingsTab({ categories, searchQuery, filteredSettings, isFavorite, toggleFavorite, }: SettingsTabProps) { const { t } = useTranslation(); const queryClient = useQueryClient(); const updateSettingMutation = useMutation({ mutationFn: ({ key, value }: { key: string; value: string }) => adminSettingsApi.updateSetting(key, value), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['admin-settings'] }); }, }); const resetSettingMutation = useMutation({ mutationFn: (key: string) => adminSettingsApi.resetSetting(key), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['admin-settings'] }); }, }); // Search mode: flat list of filtered results if (searchQuery) { if (filteredSettings.length === 0) { return (

{t('admin.settings.noSettings')}

); } return (
{filteredSettings.map((setting, idx) => ( toggleFavorite(setting.key)} onUpdate={(value) => updateSettingMutation.mutate({ key: setting.key, value })} onReset={() => resetSettingMutation.mutate(setting.key)} isUpdating={updateSettingMutation.isPending} isResetting={resetSettingMutation.isPending} isLast={idx === filteredSettings.length - 1} /> ))}
); } // Normal mode: QuickToggles + settings by category const allCategorySettings = categories.flatMap((c) => c.settings); if (allCategorySettings.length === 0) { return (

{t('admin.settings.noSettings')}

); } return (
updateSettingMutation.mutate({ key, value })} disabled={updateSettingMutation.isPending} /> {categories.map((category) => { if (category.settings.length === 0) return null; return (
{categories.length > 1 && (

{category.label}

{category.settings.length}
)}
{category.settings.map((setting, idx) => ( toggleFavorite(setting.key)} onUpdate={(value) => updateSettingMutation.mutate({ key: setting.key, value })} onReset={() => resetSettingMutation.mutate(setting.key)} isUpdating={updateSettingMutation.isPending} isResetting={resetSettingMutation.isPending} isLast={idx === category.settings.length - 1} /> ))}
); })}
); }