import React, { useState } from 'react'; import { FileUp } from 'lucide-react'; import { cn } from '~/utils/'; type FileUploadProps = { onFileSelected: (event: React.ChangeEvent) => void; className?: string; successText?: string; invalidText?: string; validator?: ((data: any) => boolean) | null; text?: string; id?: string; }; const FileUpload: React.FC = ({ onFileSelected, className = '', successText = null, invalidText = null, validator = null, text = null, id = '1', }) => { const [statusColor, setStatusColor] = useState('text-gray-600'); const [status, setStatus] = useState(null); const handleFileChange = (event: React.ChangeEvent): void => { const file = event.target.files?.[0]; if (!file) { return; } const reader = new FileReader(); reader.onload = (e) => { const jsonData = JSON.parse(e.target?.result as string); if (validator && !validator(jsonData)) { setStatus('invalid'); setStatusColor('text-red-600'); return; } if (validator) { setStatus('success'); setStatusColor('text-green-500 dark:text-green-500'); } onFileSelected(jsonData); }; reader.readAsText(file); }; return ( ); }; export default FileUpload;