'use client'; import { useState, useEffect } from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { Button } from '@/components/ui/button'; import { getAllMeasures, getUnitsForMeasure, convertToAll, formatMeasureName, getCategoryColor, type Measure, type ConversionResult, } from '@/lib/units'; import { parseNumberInput, formatNumber } from '@/lib/utils'; export default function MainConverter() { const [selectedMeasure, setSelectedMeasure] = useState('length'); const [selectedUnit, setSelectedUnit] = useState('m'); const [inputValue, setInputValue] = useState('1'); const [conversions, setConversions] = useState([]); const measures = getAllMeasures(); const units = getUnitsForMeasure(selectedMeasure); // Update conversions when input changes useEffect(() => { const numValue = parseNumberInput(inputValue); if (numValue !== null && selectedUnit) { const results = convertToAll(numValue, selectedUnit); setConversions(results); } else { setConversions([]); } }, [inputValue, selectedUnit]); // Update selected unit when measure changes useEffect(() => { const availableUnits = getUnitsForMeasure(selectedMeasure); if (availableUnits.length > 0) { setSelectedUnit(availableUnits[0]); } }, [selectedMeasure]); return (
{/* Category Selection */} Select Category
{measures.map((measure) => ( ))}
{/* Input Section */} Convert {formatMeasureName(selectedMeasure)}
setInputValue(e.target.value)} placeholder="Enter value" className="text-lg" />
{/* Results */} Conversions
{conversions.map((conversion) => (
{conversion.unitInfo.plural}
{formatNumber(conversion.value)}
{conversion.unit}
))}
); }