// ── FormSteps.jsx ────────────────────────────────────────────── // All 7 step components for the CIQ form with premium aesthetic // ── Shared field components ───────────────────────────────────── function Field({ label, required, hint, children }) { return (
{hint &&

{hint}

} {children}
); } function Input({ value, onChange, placeholder, type = 'text', disabled }) { return ( onChange(e.target.value)} placeholder={placeholder} disabled={disabled} className="form-control" /> ); } function Select({ value, onChange, options, placeholder }) { return ( ); } function PortInput({ value, onChange, options, placeholder, listId }) { return ( <> onChange(e.target.value)} placeholder={placeholder} className="form-control" /> {options.map(o => ); } function Row({ children }) { return (
{children}
); } function SectionTitle({ children }) { return (

{children}

); } function defaultCrewLegs(legs = {}) { const hasKoreaToJapan = typeof legs.koreaToJapan === 'boolean'; const hasJapanToKorea = typeof legs.japanToKorea === 'boolean'; return { koreaToJapan: hasKoreaToJapan ? legs.koreaToJapan : true, japanToKorea: hasJapanToKorea ? legs.japanToKorea : true, }; } function createCrewMember() { return { legs: defaultCrewLegs() }; } // ── Step 1: 신청자 정보 ───────────────────────────────────────── function Step1({ data, set }) { const f = (k) => (v) => set({ ...data, [k]: v }); return (