'use client'; import { useState, useCallback } from 'react'; import { toast } from 'sonner'; import { Loader2 } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { FormField } from '@/components/molecules/FormField'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, } from '@/components/ui/dialog'; import type { BarobillSignupFormData } from './types'; import { registerBarobillSignup } from './actions'; interface SignupModalProps { open: boolean; onOpenChange: (open: boolean) => void; onSuccess: () => void; } const initialFormData: BarobillSignupFormData = { businessNumber: '', companyName: '', ceoName: '', businessType: '', businessCategory: '', address: '', barobillId: '', password: '', managerName: '', managerPhone: '', managerEmail: '', }; export function SignupModal({ open, onOpenChange, onSuccess }: SignupModalProps) { const [formData, setFormData] = useState(initialFormData); const [isSubmitting, setIsSubmitting] = useState(false); const handleOpenChange = useCallback((isOpen: boolean) => { if (isOpen) setFormData(initialFormData); onOpenChange(isOpen); }, [onOpenChange]); const handleChange = useCallback((key: keyof BarobillSignupFormData, value: string) => { setFormData(prev => ({ ...prev, [key]: value })); }, []); const handleSubmit = useCallback(async () => { if (!formData.businessNumber) { toast.error('사업자등록번호를 입력해주세요.'); return; } if (!formData.companyName) { toast.error('상호명을 입력해주세요.'); return; } if (!formData.ceoName) { toast.error('대표자명을 입력해주세요.'); return; } if (!formData.barobillId) { toast.error('바로빌 아이디를 입력해주세요.'); return; } if (!formData.password) { toast.error('비밀번호를 입력해주세요.'); return; } setIsSubmitting(true); try { const result = await registerBarobillSignup(formData); if (result.success) { toast.success('바로빌 회원가입 정보가 등록되었습니다.'); onOpenChange(false); onSuccess(); } else { toast.error(result.error || '등록에 실패했습니다.'); } } catch { toast.error('등록 중 오류가 발생했습니다.'); } finally { setIsSubmitting(false); } }, [formData, onOpenChange, onSuccess]); return ( 바로빌 회원가입 정보 등록
{/* 사업자등록번호 + 상호명 */}
handleChange('businessNumber', v)} placeholder="123-12-12345" /> handleChange('companyName', v)} placeholder="(주)회사명" />
{/* 대표자명 + 업태 + 업종 */}
handleChange('ceoName', v)} placeholder="홍길동" /> handleChange('businessType', v)} placeholder="업태" /> handleChange('businessCategory', v)} placeholder="업종" />
{/* 주소 */} handleChange('address', v)} placeholder="서울특별시 강남구" /> {/* 바로빌 아이디 + 비밀번호 */}
handleChange('barobillId', v)} placeholder="Barobill_id" /> handleChange('password', v)} />
{/* 담당자명 + 담당자 연락처 */}
handleChange('managerName', v)} placeholder="홍길동" /> handleChange('managerPhone', v)} placeholder="010-1234-1234" />
{/* 담당자 이메일 */} handleChange('managerEmail', v)} placeholder="manager@email.com" />
); }