import React, { useState } from 'react'; import { Hash, Upload, Download } from 'lucide-react'; import ToolLayout from '../components/ToolLayout'; import CopyButton from '../components/CopyButton'; const Base64Tool = () => { const [input, setInput] = useState(''); const [output, setOutput] = useState(''); const [mode, setMode] = useState('encode'); // 'encode' or 'decode' const encodeBase64 = () => { try { const encoded = btoa(unescape(encodeURIComponent(input))); setOutput(encoded); } catch (err) { setOutput(`Error: ${err.message}`); } }; const decodeBase64 = () => { try { const decoded = decodeURIComponent(escape(atob(input))); setOutput(decoded); } catch (err) { setOutput(`Error: Invalid Base64 string`); } }; const handleProcess = () => { if (mode === 'encode') { encodeBase64(); } else { decodeBase64(); } }; const handleFileUpload = (event) => { const file = event.target.files[0]; if (file) { const reader = new FileReader(); reader.onload = (e) => { if (mode === 'encode') { setInput(e.target.result); } else { // For decode mode, read as text const textReader = new FileReader(); textReader.onload = (textEvent) => { setInput(textEvent.target.result); }; textReader.readAsText(file); } }; if (mode === 'encode') { reader.readAsText(file); } else { reader.readAsText(file); } } }; const clearAll = () => { setInput(''); setOutput(''); }; const loadSample = () => { if (mode === 'encode') { setInput('Hello, World! This is a sample text for Base64 encoding.'); } else { setInput('SGVsbG8sIFdvcmxkISBUaGlzIGlzIGEgc2FtcGxlIHRleHQgZm9yIEJhc2U2NCBlbmNvZGluZy4='); } }; return ( {/* Mode Toggle */}
{/* Controls */}
{/* Input/Output Grid */}
{/* Input */}