import React, { useState, useMemo } from 'react'; import { AppConfig, LayoutSplits, GeneratedPart } from './types'; // Убедись, что этот файл существует по этому пути import { calculateParts } from './services/geometryGenerator'; import { ConfigStep } from './components/ConfigStep'; import { LayoutStep } from './components/LayoutStep'; import { PreviewStep } from './components/PreviewStep'; import { ChevronRight, ChevronLeft, Box } from 'lucide-react'; const App = () => { const [step, setStep] = useState(1); // State const [config, setConfig] = useState({ drawer: { width: 300, depth: 400, height: 80 }, wallThickness: 1.2, printerTolerance: 0.5, }); const [splits, setSplits] = useState({ x: [], y: [] }); // Derived State: Parts (Мгновенный пересчет без API) const parts: GeneratedPart[] = useMemo(() => { return calculateParts(config, splits); }, [config, splits]); return (
{/* Header */}

PrintFit

Генератор без ИИ

{/* Progress Stepper */}
{[1, 2, 3].map((num) => (
{num} {num === 1 ? 'Настройки' : num === 2 ? 'Макет' : 'Экспорт'}
{num < 3 &&
} ))}
{/* Main Content */}
{step === 1 && (
)} {step === 2 && (
)} {step === 3 && (
)}
{/* Footer Navigation */}
); }; export default App;