import React, { useState } from 'react'; import { useGridStore } from '../../store/gridStore'; import { Card, CardContent, CardHeader, CardTitle } from '../ui/card'; import { Button } from '../ui/button'; import { Settings, Shuffle } from 'lucide-react'; import type { GridConfig } from '../../types'; export const GridGenerator: React.FC = () => { const { generateNewGrid, isLoading } = useGridStore(); const [config, setConfig] = useState({ width: 8, height: 8, numStores: 2, numDestinations: 3, numTunnels: 2, obstacleDensity: 0.1, }); const handleGenerate = () => { generateNewGrid(config); }; return ( Configuration
setConfig({ ...config, width: parseInt(e.target.value) })} className="w-full px-2.5 py-1.5 bg-zinc-800 border border-zinc-700 rounded text-zinc-200 text-sm font-mono focus:outline-none focus:border-zinc-600" />
setConfig({ ...config, height: parseInt(e.target.value) })} className="w-full px-2.5 py-1.5 bg-zinc-800 border border-zinc-700 rounded text-zinc-200 text-sm font-mono focus:outline-none focus:border-zinc-600" />
setConfig({ ...config, numStores: parseInt(e.target.value) })} className="w-full px-2.5 py-1.5 bg-zinc-800 border border-zinc-700 rounded text-zinc-200 text-sm font-mono focus:outline-none focus:border-zinc-600" />
setConfig({ ...config, numDestinations: parseInt(e.target.value) })} className="w-full px-2.5 py-1.5 bg-zinc-800 border border-zinc-700 rounded text-zinc-200 text-sm font-mono focus:outline-none focus:border-zinc-600" />
setConfig({ ...config, numTunnels: parseInt(e.target.value) })} className="w-full px-2.5 py-1.5 bg-zinc-800 border border-zinc-700 rounded text-zinc-200 text-sm font-mono focus:outline-none focus:border-zinc-600" />
setConfig({ ...config, obstacleDensity: parseFloat(e.target.value) })} className="w-full px-2.5 py-1.5 bg-zinc-800 border border-zinc-700 rounded text-zinc-200 text-sm font-mono focus:outline-none focus:border-zinc-600" />
); }; export default GridGenerator;