'use client'; import { useState } from 'react'; import ImageInput from '../../components/ui/image-input'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../../components/ui/card'; import { Button } from '../../components/ui/button'; import { Label } from '../../components/ui/label'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '../../components/ui/tabs'; import { ImageValidationResult } from '../../lib/image-validation'; export default function DemoPage() { const [input1, setInput1] = useState(null); const [input2, setInput2] = useState(null); const [validation1, setValidation1] = useState(null); const [validation2, setValidation2] = useState(null); const handleValidation1 = (result: ImageValidationResult) => { setValidation1(result); console.log('Input 1 validation:', result); }; const handleValidation2 = (result: ImageValidationResult) => { setValidation2(result); console.log('Input 2 validation:', result); }; const clearAll = () => { setInput1(null); setInput2(null); setValidation1(null); setValidation2(null); }; return (

ImageInput Component Demo

Demonstration of the ImageInput component with both file upload and URL input modes

Demo API Reference Examples {/* First ImageInput - Default Configuration */} Image Input 1 - Default Configuration File upload and URL input with default 10MB size limit {validation1 && (
                      {JSON.stringify(validation1, null, 2)}
                    
)}
{/* Second ImageInput - Custom Configuration */} Image Input 2 - Custom Configuration Custom size limit (2MB) and without preview {validation2 && (
                      {JSON.stringify(validation2, null, 2)}
                    
)}
{/* Control Panel */} Current Values Shows the current state of both inputs
{input1 instanceof File ? `File: ${input1.name} (${(input1.size / 1024 / 1024).toFixed(2)} MB)` : input1 || 'null' }
{input2 instanceof File ? `File: ${input2.name} (${(input2.size / 1024 / 1024).toFixed(2)} MB)` : input2 || 'null' }
Props Available props for the ImageInput component
Prop Type Default Description
value File | string | null undefined Current value of the input
onChange (File | string | null) => void - Callback when value changes
onValidation (ImageValidationResult) => void - Callback for validation results
disabled boolean false Disable the input
maxSize number 10MB Maximum file size in bytes
accept string image/* Accepted file types
placeholder string - Placeholder for URL input
showPreview boolean true Show image preview
className string - Additional CSS classes
Usage Examples Common patterns for using the ImageInput component
{`import ImageInput from './components/ui/image-input';

const [image, setImage] = useState(null);

`}
                  
{`const [image, setImage] = useState(null);
const [validation, setValidation] = useState(null);

const handleValidation = (result: ImageValidationResult) => {
  setValidation(result);
  console.log('Is valid:', result.isValid);
  console.log('File name:', result.filename);
};

`}
                  
{``}
                  
{`const [isUploading, setIsUploading] = useState(false);

`}
                  
); }