import React, { useState } from 'react'; import { HardDrive, Network, UserCheck, CheckCircle2, ArrowRight, ArrowLeft, Database, ShieldCheck, Server, } from 'lucide-react'; export const WizardView: React.FC = () => { const [step, setStep] = useState(1); const [storageMode, setStorageMode] = useState<'create' | 'import'>('import'); const [poolName, setPoolName] = useState('tank'); const [hostname, setHostname] = useState('naxos'); const [adminUser, setAdminUser] = useState('admin'); const [adminPassword, setAdminPassword] = useState(''); const [gitopsUrl, setGitopsUrl] = useState('ssh://git@git.lholz.de:2222/naxos/naxos-config.git'); const [isDone, setIsDone] = useState(false); const handleFinish = () => { setIsDone(true); }; return (

NaxOS Appliance Setup Wizard

Step-by-step guided configuration for storage layout, network, and security

{/* Progress Steps */}
{[ { num: 1, title: 'Storage & Pools' }, { num: 2, title: 'Network' }, { num: 3, title: 'Credentials' }, { num: 4, title: 'GitOps & Finish' }, ].map((s) => (
s.num ? 'bg-emerald-500/20 text-emerald-400' : 'bg-slate-800 text-slate-500' }`} > {step > s.num ? : s.num}
))}
{/* Form Container */}
{step === 1 && (

Storage Architecture & ZFS Pool

setPoolName(e.target.value)} className="w-full px-3 py-2 bg-slate-950 border border-slate-800 rounded-xl text-white font-mono text-xs focus:outline-none focus:border-emerald-500" />
)} {step === 2 && (

Network Configuration

setHostname(e.target.value)} className="w-full px-3 py-2 bg-slate-950 border border-slate-800 rounded-xl text-white font-mono text-xs focus:outline-none focus:border-emerald-500" />
DHCP will automatically request an IP address and advertise mDNS name {hostname}.local via Avahi.
)} {step === 3 && (

Administrator Credentials

setAdminUser(e.target.value)} className="w-full px-3 py-2 bg-slate-950 border border-slate-800 rounded-xl text-white font-mono text-xs focus:outline-none focus:border-emerald-500" />
setAdminPassword(e.target.value)} placeholder="••••••••••••" className="w-full px-3 py-2 bg-slate-950 border border-slate-800 rounded-xl text-white font-mono text-xs focus:outline-none focus:border-emerald-500" />
)} {step === 4 && (

GitOps Remote & Final Validation

setGitopsUrl(e.target.value)} className="w-full px-3 py-2 bg-slate-950 border border-slate-800 rounded-xl text-white font-mono text-xs focus:outline-none focus:border-emerald-500" />

All future web dashboard configuration adjustments will be committed here.

{isDone && (
NaxOS Appliance successfully initialized and ready for production!
)}
)} {/* Buttons */}
{step < 4 ? ( ) : ( )}
); };