import React from 'react'; import { AppConfig } from '../types'; import { Ruler, Box, Layers, Minimize2 } from 'lucide-react'; interface Props { config: AppConfig; onChange: (newConfig: AppConfig) => void; } const InputGroup: React.FC<{ label: string; children: React.ReactNode }> = ({ label, children }) => (
{children}
); const NumberInput = ({ label, value, onChange, max }: { label: string; value: number; onChange: (val: number) => void; max?: number }) => (
{label} onChange(parseFloat(e.target.value) || 0)} className="w-full bg-slate-800 border border-slate-700 rounded p-2 pl-8 text-white focus:ring-2 focus:ring-primary outline-none" /> мм
); export const ConfigStep: React.FC = ({ config, onChange }) => { const updateDrawer = (key: keyof AppConfig['drawer'], val: number) => { onChange({ ...config, drawer: { ...config.drawer, [key]: val } }); }; return (

1. Размеры

{/* Drawer Dimensions */}

Внутренние размеры ящика

updateDrawer('width', v)} /> updateDrawer('depth', v)} /> updateDrawer('height', v)} />
{/* Settings */}

Параметры печати

{config.wallThickness.toFixed(1)} мм
0.4 onChange({...config, wallThickness: parseFloat(e.target.value)})} className="w-full h-2 bg-slate-700 rounded-lg appearance-none cursor-pointer accent-primary hover:accent-blue-400 transition-all" /> 3.2
{config.printerTolerance.toFixed(1)} мм
0.0 onChange({...config, printerTolerance: parseFloat(e.target.value)})} className="w-full h-2 bg-slate-700 rounded-lg appearance-none cursor-pointer accent-accent hover:accent-amber-400 transition-all" /> 2.0

Зазор уменьшает размер каждой ячейки, чтобы они легко вставлялись в ящик и друг в друга. Рекомендуется 0.5 мм.

); };