import React, { useState } from 'react'; import axios from 'axios'; import styles from '@styles/QRForm.module.scss'; const QRForm: React.FC = () => { const [text, setText] = useState(''); const [size, setSize] = useState<'150' | '300' | '600'>('300'); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [imageUrl, setImageUrl] = useState(null); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(null); setImageUrl(null); if (!text.trim()) { setError('Please enter a URL or text to encode.'); return; } setLoading(true); try { // Call a mock API to simulate server-side generation step. // Using jsonplaceholder as a harmless mock endpoint. await axios.post('https://jsonplaceholder.typicode.com/posts', { payload: text, size, }); // Build a QR image URL using a public QR generator for preview purposes. // In a real implementation the server would return the final image URL or binary data. const generatedUrl = `https://api.qrserver.com/v1/create-qr-code/?size=${size}x${size}&data=${encodeURIComponent( text )}`; setImageUrl(generatedUrl); } catch (err) { setError('Failed to generate QR code. Please try again.'); } finally { setLoading(false); } }; return (
setText(e.target.value)} placeholder="https://example.com or some text" className={styles.qrFormInput} /> {error &&
{error}
}
); }; export default QRForm;