import { SettingsInput } from "@client/pages/settings/components/SettingsInput"; import type { NumericSettingValues } from "@client/pages/settings/types"; import type { UpdateSettingsInput } from "@shared/settings-schema"; import type React from "react"; import { Controller, useFormContext } from "react-hook-form"; import { AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; type GradcrackerSectionProps = { values: NumericSettingValues; isLoading: boolean; isSaving: boolean; }; export const GradcrackerSection: React.FC = ({ values, isLoading, isSaving, }) => { const { effective: effectiveGradcrackerMaxJobsPerTerm, default: defaultGradcrackerMaxJobsPerTerm, } = values; const { control, formState: { errors }, } = useFormContext(); return ( Gradcracker Extractor
( { const value = parseInt(event.target.value, 10); if (Number.isNaN(value)) { field.onChange(null); } else { field.onChange(Math.min(1000, Math.max(1, value))); } }, }} disabled={isLoading || isSaving} error={ errors.gradcrackerMaxJobsPerTerm?.message as | string | undefined } helper={`Maximum number of jobs to fetch for EACH search term from Gradcracker. Default: ${defaultGradcrackerMaxJobsPerTerm}. Range: 1-1000.`} current={String(effectiveGradcrackerMaxJobsPerTerm)} /> )} />
); };