import { useState } from 'react'; import { Button, Text, NumberInput, Group } from '@mantine/core'; import classes from './BulkSelectionPanel.module.css'; interface SelectPagesProps { title: string; placeholder: string; onApply: (value: number) => void; maxPages: number; validationFn?: (value: number) => string | null; isRange?: boolean; rangeEndValue?: number | ''; onRangeEndChange?: (value: string | number) => void; rangeEndPlaceholder?: string; } const SelectPages = ({ title, placeholder, onApply, validationFn, isRange = false, rangeEndValue, onRangeEndChange, rangeEndPlaceholder, }: SelectPagesProps) => { const [value, setValue] = useState(''); const [error, setError] = useState(null); const handleValueChange = (val: string | number) => { const next = typeof val === 'number' ? val : ''; setValue(next); if (validationFn && typeof next === 'number') { setError(validationFn(next)); } else { setError(null); } }; const handleApply = () => { if (value === '' || typeof value !== 'number') return; onApply(value); setValue(''); setError(null); }; const isDisabled = Boolean(error) || value === ''; return (
{title} {error && ({error})}
{isRange ? ( <>
) : ( )}
); }; export default SelectPages;